<br><br><div class="gmail_quote">On Mon, Feb 14, 2011 at 3:49 PM, Bill Frantz <span dir="ltr">&lt;<a href="mailto:frantz@pwpconsult.com">frantz@pwpconsult.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div class="im">On 2/14/11 at 2:46 PM, <a href="mailto:shabsi@google.com" target="_blank">shabsi@google.com</a> (Shabsi Walfish) wrote:<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
This depends on what you consider to be the basic use case. Generating<br>
long-lived cryptographic keys absolutely requires high quality entropy... if<br>
you are only generating short-lived authenticators (that are not used for<br>
encryption) then you could get away with weaker entropy. You will get the<br>
most mileage out of this feature if it can be used to generate encryption<br>
keys, or long-lived signing keys.<br>
</blockquote>
<br></div>
[Greetings to old friends and new. And I hope I&#39;ve properly subscribed to all the right lists...]<br>
<br>
I have a big problem with concepts such as &quot;using up entropy&quot;, and &quot;high quality entropy is needed.&quot; I belong to the school that says, &quot;If I have 160 unguessable bits and can keep them secret, I can stretch them and remain secure for ever.&quot; Now there are some issues with this statement:<br>

</blockquote><div><br></div><div>I don&#39;t disagree with this -- however, I would say the problem is that urandom may not return 160 &quot;unguessable&quot; bits to start with. Unguessable, of course, actually means &quot;extremely difficult to predict with better than probability 1/2, conditioned on all previously observable information (such as approximate system time, process ids, etc.)&quot;. In any case, I was simply suggesting it would be nice to make available information about the quality of the entropy being returned by /dev/urandom, which is either going to be good (because the entropy pool was full) or _possibly_ not good (perhaps because the entropy pool hasn&#39;t ever filled up yet).</div>

<div><br>Shabsi</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<br>
  * I don&#39;t really trust my stretching algorithms, based on<br>
    secure hashes, to not leak some tiny fraction of the<br>
    unguessable bits.<br>
<br>
  * Keeping any secret is difficult.<br>
<br>
  * Getting unguessable bits is a hard problem.<br>
<br>
  * 160 may be too small.<br>
<br>
Because of these issues, modern secure random number generators add batches of new unguessable bits from time to time.<br>
<br>
This line of thinking leads me to say that /dev/urandom, and its Windows cousin, is good enough for any practical use. Ensuring that the seed for /dev/urandom is indeed unguessable is a problem for the OS, not the language run-time.<br>


<br>
For ECMAscript/Javascript or whatever this group calls the language, I suggest:<br>
<br>
  (1) Build a routine that returns /dev/urandom data to the<br>
  caller. Implement this routine fairly quickly.<br>
<br>
  (2) At a more leisurely pace, build a crypto API and implement<br>
  it in the language. After the usability bugs are worked out of<br>
  the API, standardize it. If more performance is needed, perhaps<br>
  a platform dependent issue, build higher speed implementations<br>
  of the standard.<br>
<br>
[Historically, a number of crypto-based APIs have failed because developers could not figure out how to use them. Getting the usability right is probably the hardest part of designing the API.<br>
<br>
Cheers - Bill<br>
<br>
-----------------------------------------------------------------------<br><font color="#888888">
Bill Frantz        |The nice thing about standards| Periwinkle<br>
<a href="tel:%28408%29356-8506" target="_blank"></a><a href="tel:%28408%29356-8506" target="_blank">(408)356-8506</a>      |is there are so many to choose| 16345 Englewood Ave<br>
<a href="http://www.pwpconsult.com" target="_blank">www.pwpconsult.com</a> |from.   - Andrew Tannenbaum   | Los Gatos, CA 95032<br>
<br>
</font></blockquote></div><br>