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).

Multiparty non-interactive key exchange

An -party NIKE lets each of parties publish one message, after which each party derives, from its own secret, the other published values and any public parameters, a key that all parties share and that is pseudorandom to an eavesdropper. Two-party NIKE is the case ; iO and one-way functions give it for any polynomial fixed in advance, without trusted setup — BZ14.

Three-party NIKE

The case of multiparty NIKE, with each of three parties publishing one message.

Other results

Participates in

Builds on Key exchange

Produces Key exchange

Barriers