Key exchange protocols allow two parties to produce a secret session key over a public channel.

Key exchange protocols allow two entities to produce a secret session key over a public channel.

There is generally two types: key agreement means both entities contribute to the session key (e.g., Diffie-Hellman) while key transport means one entity generates the key and sends it to the other.

For key exchange to be (mutually) authenticated, each entity must possess a genuine copy of the other entity's public key, or they must share a secret fixed before.