python-spake2 icon indicating copy to clipboard operation
python-spake2 copied to clipboard

implement SPAKE2+ (augmented PAKE)

Open warner opened this issue 8 years ago • 1 comments

I've started work on this in the "pake2+" branch. The algorithm is defined in the last section of "The Twin Diffie-Hellman Problem and Applications" (Cash, Kiltz, Shoup), available at http://www.research.rutgers.edu/~dc789/dh.pdf :

  • password (maybe after stretching) is split into two pieces, pw0 and pw1
  • setup: server stores pw0 and L=B*pw1
  • client: pick random scalar x, send element X = B*x + U*pw0
  • server: pick random scalar y, send element Y = B*y + V*pw0
  • server: compute element Z = (X-U*pw0)*y
  • server: compute element N = L*y
  • server: compute shared key as hash(pw0, X, Y, Z, N)
  • client: compute element Z = (Y-V*pw0)*x
  • client: compute element N = (Y-V*pw0)*pw1
  • client: compute shared key as hash(pw0, X, Y, Z, N)

A server compromise doesn't immediately reveal a password-equivalent, because the server stores B*pw1 instead of pw1, so the attacker must first run an offline dictionary attack to reverse the scalarmult.

Relative to (symmetric) SPAKE2, this just adds the N term and server-side storage for L.

warner avatar Jan 16 '16 20:01 warner

Hello, any news regarding spake2+ for this library?

dlq84 avatar Feb 14 '22 10:02 dlq84