<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 27, 2015 at 6:38 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"><span class="">On Thu, Feb 26, 2015 at 1:36 PM, Nadim Kobeissi <nadim@nadim.computer> wrote:<br>
><br>
> I think storing the private key in the user's brain, in the form of a<br>
> passphrase, is more secure than having it lying around on every computer<br>
> they use for crypto in the form of a PGP key file.<br>
<br>
</span>I don't see that.  With respect to offline passphrase cracking, the<br>
peerio approach seems less secure than the PGP approach:<br>
<br>
Having a passphrase-encrypted private key "lying around on every<br>
computer they use" - like PGP - means offline-cracking can only be<br>
attempted by attackers who steal that file.<br>
<br>
Having a passphrase-generated private key - like peerio - means<br>
offline-cracking can be attempted by anyone who sees your public key.<br>
<br>
So the peerio approach has the same security as if you were<br>
transmitting your private-key file alongside your public key, which<br>
exposes it *much* more widely.<br>
<span class=""><br>
<br>
<br>
> Deriving private keys<br>
> from a strong passphrase offers an ephemeral portability, where I can carry<br>
> my key identity with me in my head, use it on any computer, without<br>
> permanently any private key information on said computer (that is, unlike<br>
> PGP.) When I'm using a trusted friend's computer, or when I buy a new one, I<br>
> can be all set just by entering my passphrase and logging in like I'd log<br>
> into Gmail or Facebook. I think this is very important for people to be able<br>
> to do.<br>
<br>
</span>OK, so you want anyone to be able to login to the peerio service, from<br>
a new computer, with just their user-chosen passphrase.  That can be<br>
easily done *without* a passphrase-generated private key:<br>
 - private keys are generated at random<br>
 - the service stores a passphrase-encrypted private key<br>
 - after login, the passphrase-encrypted private key is fetched by the user<br>
<br>
This has the same useability as your solution, but doesn't enable your<br>
correspondents to attempt offline password-cracking.  So<br>
passphrase-generated private keys in peerio still seem strictly<br>
inferior to the traditional approach (generating keys from a strong<br>
RNG).<br>
<br>
What am I missing?<br></blockquote><div><br></div><div>This is by no means a bad idea. But considering the server as part of the adversarial model, this proposition doesn't seem to help much, since:</div><div><br></div><div>Anyone with access to the server can simply hoover up all the passphrase-encrypted private keys, and then try to crack them in the same way by searching through the space of possible passphrases. This is why it's better, I think, to focus on ensuring that the passphrase space search *itself* is exceedingly expensive in the first place, hence the strict passphrase requirements and the strong scrypt derivation rounds.</div><div><br></div><div>That being said, I'm not opposed to switching to that model of storing an encrypted copy on the server; I just see the two solutions as (more or less) equivalent, since we consider (as much as we realistically can) that servers are part of the adversary.</div><div><br></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>
<br>
Trevor<br>
</font></span></blockquote></div><br></div></div>