OpenSSL is not exactly a reliable source of cryptographic best practices. :) In any case, see here <a href="http://linux.die.net/man/4/urandom">http://linux.die.net/man/4/urandom</a> :<blockquote class="webkit-indent-blockquote" style="margin: 0 0 0 40px; border: none; padding: 0px;">

<div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; "><p>When read, the <i style="font-style: italic; ">/dev/random</i> device will only return random bytes within the estimated number of bits of noise in the entropy pool. <i style="font-style: italic; ">/dev/random</i> should be suitable for uses that need very high quality randomness such as one-time pad or key generation. When the entropy pool is empty, reads from <i style="font-style: italic; ">/dev/random</i> will block until additional environmental noise is gathered.</p>

</span></div><div><span class="Apple-style-span" style="font-family: arial, sans-serif; font-size: 13px; "><p>A read from the <i style="font-style: italic; ">/dev/urandom</i> device will not block waiting for more entropy. As a result, if there is not sufficient entropy in the entropy pool, the returned values are theoretically vulnerable to a cryptographic attack on the algorithms used by the driver. Knowledge of how to do this is not available in the current non-classified literature, but it is theoretically possible that such an attack may exist. If this is a concern in your application, use <i style="font-style: italic; ">/dev/random</i> instead.</p>

</span></div></blockquote><div>To be honest, I&#39;m surprised if even OpenSSL reads from /dev/urandom instead of /dev/random.</div><div><br></div><div>Shabsi<br><div><br><div class="gmail_quote">On Mon, Feb 14, 2011 at 3:36 PM, Glenn Maynard <span dir="ltr">&lt;<a href="mailto:glenn@zewt.org">glenn@zewt.org</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="gmail_quote"><div class="im">On Mon, Feb 14, 2011 at 5:46 PM, Shabsi Walfish <span dir="ltr">&lt;<a href="mailto:shabsi@google.com" target="_blank">shabsi@google.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204, 204, 204);padding-left:1ex">
This depends on what you consider to be the basic use case. Generating long-lived cryptographic keys absolutely requires high quality entropy... if you are only generating short-lived authenticators (that are not used for encryption) then you could get away with weaker entropy. You will get the most mileage out of this feature if it can be used to generate encryption keys, or long-lived signing keys.</blockquote>


</div><div><br>OpenSSL gets randomness for generating keys by reading /dev/urandom.  It doesn&#39;t seem to do any other tricks, like reading /proc/sys/kernel/random/entropy_avail.  That at least suggests it&#39;s sufficient for securely generating keys, without more complex APIs like exposing the amount of entropy that was available.<br>


</div></div><br>-- <br><font color="#888888">Glenn Maynard<br>
</font><br>_______________________________________________<br>
es-discuss mailing list<br>
<a href="mailto:es-discuss@mozilla.org">es-discuss@mozilla.org</a><br>
<a href="https://mail.mozilla.org/listinfo/es-discuss" target="_blank">https://mail.mozilla.org/listinfo/es-discuss</a><br>
<br></blockquote></div><br></div></div>