I'm reading through the development of PAKE protocols, starting with EKE and SPEKE, their potential pitfalls, and what motivates their protocol choices. And I've been wondering, what is wrong with the following (very simple) modification to classic DH to make that PAKE:
Let Alice and Bob have a shared secret s = hash(password)
. Alice and Bob pick private keys a
, b
. Starting with DH, Alice and Bob compute their public keys as
$A = g^{as}\mod p$
$B = g^{bs}\mod p$
After they exchange public keys, they can calculate their shared key as $K = g^{abs}\mod p$
What is wrong with this simple scheme? I'm guessing it somehow allows an offline dictionary attack on s
. I know s
has no low entropy, but I'm still not seeing how.