Windows NT used a point-to-point protocol where a client can communicate securely with a server by using a stream cipher to encrypt an array of messages with some key $k$. The server also encrypts its response with the same key $k$. But how is it aware of this key?More general: if Alice and Bob use some encryption/decryption algorithm that operates on the same private key $k$, what is a secure way of exchanging this key? (without using a different key ofcourse) This is something that I've always asked myself whilest studying private key cryptography.
How is the key in a private key encryption protocol exchanged?
cryptography;encryption
Most private key algorithms rely on infeasibility of certain computations like factorisation of a number into its prime factors given the current computing infrastructure.At the same time, most of them are also computationally intensive when used for encryption and decryption and therefore the entire message stream is not encrypted using the private keys. Rather, the message is encrypted using some other (less intensive) algorithm and the key used for that encryption is encrypted using the Private Key.Of course, as you point out, secure exchange of keys remains an issue which can be to a certain extent be addressed by:Diffie-Hellman Key Exchange: Uses modular arthimetic to securely exchange keys.Single/Multiple Key Distribution Center (KDC): Uses trusted third party based ticketing system.Kerberos Authentication Protocol: A relatively complex protocol based on KDC.