Key exchange
A key exchange (or key agreement) protocol allows two parties communicating over a public, authenticated channel to establish a shared secret key that is computationally indistinguishable from uniformly random to any eavesdropper. Unlike PKE, key exchange does not require a pre-established public key infrastructure.
Syntax
A two-party key exchange protocol is a pair of interactive algorithms run between parties and over a shared transcript. Following execution, both parties output a key . In the non-interactive setting:
- where and each party publishes , then computes .
Properties
Correctness
Both parties output the same key with probability 1 (over their randomness).
Security (indistinguishability from random)
A key exchange protocol is secure if for all efficient adversaries that observe the full transcript, the session key is computationally indistinguishable from a uniformly random key .
Variations
Non-interactive key exchange (NIKE)
A NIKE allows any two parties to derive the same shared key from each other’s public keys alone, with no interaction at all. Diffie-Hellman over a cyclic group is the canonical example: given public keys and .
Authenticated key exchange (AKE)
An AKE additionally guarantees that the parties authenticate each other’s identities during the protocol, preventing man-in-the-middle attacks.
Multi-party key exchange
Generalizes two-party KE to parties. Requires additional rounds or structure (e.g., Burmester-Desmedt, pairing-based constructions).
Other results
- Diffie-Hellman key exchange from DDH — DH76
- KE implies PKE (the session key can be used with a symmetric cipher) — DH76
- No black-box construction of KE from one-way permutations — standard separation (no KE from symmetric primitives)
- Any KE protocol from a random oracle requires queries; Merkle puzzles achieve security and are optimal — BM09
- KE from LWE: follows as a special case of PKE from LWE — Reg05
- Communication complexity lower bounds for information-theoretic key agreement — HMO+19