<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Sun, Mar 1, 2015 at 5:50 PM, Trevor Perrin <span dir="ltr"><<a href="mailto:trevp@trevp.net" target="_blank">trevp@trevp.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Sat, Feb 28, 2015 at 11:24 PM, 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>
<br>
The server can still attempt offline cracking of the user's password<br>
though.  So I don't think this is better than just storing a<br>
passphrase-encrypted private key on the user's server, and delivering<br>
that to the user once they log in with the passphrase (using PAKE or<br>
some challenge-response protocol).<br>
<br>
So my claims are:<br>
 a) If you want passphrase-based mobility between devices, in a<br>
protocol where the user has a home server, just storing the<br>
passphrase-encrypted private key on the home server is the best<br>
approach.<br></blockquote><div><br></div><div>Yup, I've already said this isn't a bad idea, and I think by this point it seems to be the most reasonable way to move forward. This is the best time to tighten the treat model/security guarantees.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
 b) It's unclear in what use cases this is a good idea - I think<br>
multidevice or new device cases are better handled by device pairing<br>
(e.g. short-auth strings between two devices).  Maybe passphrase-based<br>
mobility is desirable for users who roam between Internet cafes<br>
without a flash drive, or for backup purposes, but at best this seems<br>
like an optional, opt-in feature for unusual users, not something that<br>
should be a default for a widely-used system.<br></blockquote><div><br></div><div>This becomes a substantially more subjective discussion on user-friendliness, subjective to the degree where I'm not sure it can lead to a fruitful discussion here. Based on my experience making software, I strongly believe that relying on a passphrase model will allow people portability that's meaningful enough to stand on its own. I think there's something to be said for the fact that you can lose all your devices (which in the majority of cases is just one device) and still be able to access your data.</div><div><br></div><div>If the tradeoff is a simple improvement like the one Trevor is suggesting, then that's something we can do and push to spec in a week. It'll certainly be worth it.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<span class="HOEnZb"><font color="#888888"><br>
Trevor<br>
</font></span></blockquote></div><br></div></div>