
|
OPAKE: Protocol Client Server Send random value a as discrete logarithm in subgroup of order D Pick random e from {0,…,NDR2k} a = e mod D y = x ^ e mod N Send random value b as Rth root Pick random b’ b = (b’) ^ D mod N z = b ^ R mod N v=Hash(1, pw, trans, a, b) Server stores (N,x) such that D | F(N), but gcd(R,F(N))=1 x of order divisible by D Retrieve a x’ = x ^ {F(N)/D} mod N y’ = y ^ {F(N)/D} mod N a = logx’ y’ mod D Retrieve b b = z ^ {1/R} mod N Verify v key=Hash(2, pw, trans, a, b) key=Hash(2, pw, trans, a, b) Retrieval of a,b is possible only if N was chosen as described (with D,R) |