On Thursday, November 03, 2011 12:44 AM, "Jonathan Nieder" <jrnie...@gmail.com> 
wrote:
> Hi,
> 
> In December, 2004, Alex Jacques reported[1]:
> 
> > If there is little entropy available then svnserve can hang for up to 
> > several minutes waiting on /dev/random. This is similiar to the problem 
> > listed here:
> >
> > http://svnbook.red-bean.com/en/1.1/apb.html#svn-ap-b-sect-1.2.14
> 
> As a result, since November, 2005, svnserve on Debian has been patched
> to avoid calling apr_generate_random_bytes() and just use the current
> time as a nonce.  That's ugly.  So I'd like your advice.
> 
> The random number is used by the CRAM-MD5 auth mechanism in svnserve
> (and could be used by other programs calling svn_ra_svn_cram_server
> from libsvn_ra_svn-1, though I doubt anyone does that).  One
> possibility would be to have an internal random number source
> initialized from a strong random source at startup, to avoid drawing
> on the entropy pool so much.  Another possibility would be to enhance
> apr's random number source API to allow requesting random bytes
> without so much entropy (erandom/frandom) or without blocking on lack
> of entropy (urandom).
> 

Fixing this by extending APR's API sounds good.  Would the change be
backportable to APR 1.4.x too?

> What do you think?  Is forcing !APR_HAS_RANDOM and just using
> apr_time_now() as Debian currently does safe, or does it expose users
> to a security risk?

Something tells me that when a cryptographic protocol calls for random
numbers then a quasiconstant or known value wouldn't do instead.  It might
still provide some security guarantees but I wouldn't assume it would provide
all guarantees of the correctly-executed protocol.

> Would some other simple fix (e.g., calling
> "lrand48") make sense and be generally useful?
> 

No objection here, but doesn't APR already use lrand48() if it's available?

> [1] http://bugs.debian.org/285708
> 

Reply via email to