SPEKE is an acronym for the simple password exponential key exchange scheme, a cryptographic method for password-authenticated key agreement.
The protocol consists of little more than a Diffie-Hellman key exchange where the Diffie-Hellman generator g is created from a hash of the password. SPEKE was first described by David Jablon in 1996 (1), and refined and enhanced in 1997 (2) with additional variations, including an augmented form called B-SPEKE.
Contents |
Here is one simple form of SPEKE:
Both Alice and Bob will arrived at the same value for K if and only if they use the same value for π. Once Alice and Bob compute the shared secret K they can use it in a key confirmation protocol to prove to each other that they know the same password π, and to derive a shared secret encryption key for sending secure and authenticated messages to each other.
More generally, Alice and Bob can agree to use any prime order subgroup of a finite cyclic group G where it is easy to create a password-based generator of the subgroup.
Unlike unauthenticated Diffie-Hellman, SPEKE prevents man in the middle attack by the incorporation of the password. An attacker who is able to read and modify all messages between Alice and Bob cannot learn the shared key K and cannot make more than one guess for the password in each interaction with a party that knows it.
The protocol is one of the older and well-known in the relatively new field of password-authenticated key exchange, and no flaws have been published for it since 1997 (2). A proof was published by MacKenzie in 2001 (3) that reduces the security of the scheme to a variation of the Decision Diffie-Hellman problem, in a somewhat relaxed security model.
U.S. patent 6,226,383 describes several variations of the method.
Standards that describe SPEKE include IEEE P1363.2 and ISO/IEC Draft 11770-4.