split key subkey cryptofunction asymmetric cryptography cryptosystem keyspace variable cryptomathematics kerckhoffs's principle public key cryptography