<p dir="ltr">On 01/03/2015 7:45 pm, "Ben Laurie" <<a href="mailto:ben@links.org">ben@links.org</a>> wrote:<br>
><br>
> On 1 March 2015 at 07:24, Michael Hamburg <<a href="mailto:mike@shiftleft.org">mike@shiftleft.org</a>> wrote:<br>
> > Perhaps you should use oblivious function evaluation with a user-specific<br>
> > secret at the server.  So for example, server has a per-user secret key e,<br>
> > and user has a (salted, scrypted) password p.  Let h = hash(p) on some<br>
> > curve.<br>
> ><br>
> > client chooses a uniformly random scalar r.<br>
> > client -> server: Q = h^r<br>
> > server -> client: P = Q^e = h^er<br>
> > client computers P^1/r = h^e, and uses the hash of that point as part of the<br>
> > secret key derivation.<br>
><br>
> I feel sure I'm missing something, but doesn't the server also need h^e?</p>
<p dir="ltr">The server receives Q from the client and multiplies the point Q by e. The client then removes the random blanking factor r to get h^e. The server doesn't know r so it can't remove the blanking.</p>
<p dir="ltr">I thought there was an attack on this discussed on this list though?</p>