<div dir="ltr">Re. Trevor and dkg,<div>I easily concede that further study is required. If it turns out our current passphrase model is not expensive enough, I'll hold myself to updating the Peerio client to have more stringent parameters on how generation is handled. I'm also open to improving derived-key storage in the near future. Again, I think this is overwhelmingly a threat-model issue. But the questions you raise are reasonable and I think it would be fruitful to work on improving the current model, preferably while Peerio is still in public beta.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Feb 28, 2015 at 8:46 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 Fri, Feb 27, 2015 at 7:26 AM, Daniel Kahn Gillmor<br>
<span class=""><<a href="mailto:dkg@fifthhorseman.net">dkg@fifthhorseman.net</a>> wrote:<br>
> On Fri 2015-02-27 04:50:19 -0500, Nadim Kobeissi wrote:<br>
>> On Thu, Feb 26, 2015 at 11:55 PM, Daniel Kahn Gillmor <<a href="mailto:dkg@fifthhorseman.net">dkg@fifthhorseman.net</a>> wrote:<br>
>><br>
>>> I agree that this part of the peerio/minilock approach is pretty<br>
>>> disconcerting, and not just because it goes against years of practice<br>
>>> and convention.  it opens an obvious hole (offline dictionary attacks<br>
>>> for high-value key material) and i'd love to see some more analysis of<br>
>>> the underlying tradeoffs involved.<br>
>><br>
>> My understanding is that any search would be currently simply too expensive.<br>
><br>
> I'm glad to hear that.  Do you have pointers to details of your<br>
> analysis?  I'd love to read those thoughts.<br>
<br>
<br>
</span>I echo dkg - I'd really like to see more analysis, it's not obvious<br>
the attack cost is that high.<br>
<br>
Back of envelope:<br>
<br>
The peerio scrypt parameters (N=2^14, r=8) have been estimated to take<br>
< 100 milliseconds on a single core of a 2009 Intel processor [1].<br>
Assuming I can rent cores at ~$0.04/hr [2] = $1/day, that means:<br>
 - about $1 per 2^20 (~1 million) guesses<br>
 - about $1K per 2^30 guesses<br>
 - about $1M per 2^40 guesses<br>
<br>
How much entropy is in peerio passphrases?  The tutorial video [3]<br>
suggests choosing a sentence "that is unique to you, like moments<br>
shared with friends, or childhood memories", and gives a couple<br>
examples:<br>
 "My mother makes the best cheesecake." (36 chars)<br>
 "Waffles the cat had blue eyes" (29 chars)<br>
<br>
You'll find various estimates for entropy-per-English character, but 1<br>
to 1.5 bits per character seems common [4].  This is very crude, but<br>
that would put sentences like above in the 30-50 bit range.  So it<br>
seems plausible that a million-dollar 2^40 attacker might have a good<br>
chance of success targeting a single account.<br>
<br>
(I guess the zxcvbn password-strength-checker is estimating these as<br>
>100 bits entropy?  That seems high.  Maybe zxcvbn is tuned for<br>
passwords, not sentences?).<br>
<br>
If the attacker spread his bets he'd do better.  For example, the<br>
milllion-dollar attacker could try a billion common phrases against a<br>
thousand accounts.  Specialized hardware would be even more efficient.<br>
<br>
Note also that this is a powerful attack - if it succeeds, the<br>
attacker can log in as you and read your old messages, without needing<br>
server compromise or traffic interception.<br>
<br>
Anyways, these numbers are so rough there's huge uncertainty - maybe<br>
people will do a good job choosing weird, high-entropy sentences.  Or<br>
maybe they'll just choose song lyrics, or simple facts about their<br>
life well known to their estranged spouse / family members.  I don't<br>
know what data exists for this, it would be a great M-Turk study.<br>
<br>
<br>
Trevor<br>
<br>
<br>
[1] <a href="http://www.tarsnap.com/scrypt/scrypt.pdf" target="_blank">http://www.tarsnap.com/scrypt/scrypt.pdf</a><br>
[2] <a href="https://cloud.google.com/compute/#pricing" target="_blank">https://cloud.google.com/compute/#pricing</a><br>
[3] <a href="https://www.youtube.com/watch?v=1jrtAnwHU14" target="_blank">https://www.youtube.com/watch?v=1jrtAnwHU14</a><br>
[4] <a href="http://en.wikipedia.org/wiki/Entropy_(information_theory)" target="_blank">http://en.wikipedia.org/wiki/Entropy_(information_theory)</a><br>
</blockquote></div><br></div>