/dev/random vs. /dev/urandom and the krb5 test suite

Don Davis dodavis at redhat.com
Thu Jun 18 08:37:04 EDT 2009

hi, greg --

      have you tried just adding entropy to the pool
during your tests, so that /dev/random won't stall?
running "find / -name foo" on a spare disk ought to
suffice for this.

                                             - don davis, red hat

On 06/18/2009 12:48 AM, ghudson at MIT.EDU wrote:
> The krb5 test suite generates a lot of random keying material.  Under
> the assumption that cryptographic keys require "strong" randomness,
> most of that material comes from /dev/random.  This can create stalls
> in some environments; for instance, my Linux box spends a few extra
> minutes per testing run if I don't use a local hack to make lib/crypto
> use /dev/urandom instead.
> Some other developers have run into this recently as well, so we may
> do something about it.  An obvious choice is to add a context flag and
> krb5.conf setting to always use /dev/urandom in favor of /dev/random.
> My question is whether to put big red flashing lights around the
> option name or not.  It's possible that some high-load production
> environments are seeing /dev/random stalls as well, although I have no
> particular reason to believe this is so.  If we use a relatively
> innocuous name, people might legitimately find the option useful for
> such cases--or people might set it out of ignorance when it's not
> needed and could cause harm.
> If the system PRNG is weak, or if it has been seeded with very little
> true random data (say, 64 bits or less), then using /dev/urandom would
> be disastrous for a system's security.  However, both cases are a bit
> far-fetched today in my opinion.  What I'd like input on is whether
> there are practical risks in the expected cases of using /dev/urandom
> for keys.  For example, say you generate a hundred 128-bit keys with
> your system's /dev/urandom when there are 600 bits of true randomness
> in your system's pool, instead of using 12800 bits of "true"
> randomness from /dev/random as one might like.  An attacker can
> compromise all 12800 bits of keying material with a 2^600 workload, at
> least in theory, but this is not a very interesting attack, especially
> since one of those 128-bit keys is probably of higher value (like your
> TGS long-term key) and would be more interesting to break in
> isolation.  Are there other attacks of interest in this scenario?
> Sorry if this is a little long-winded; I'm just trying to choose
> between a judgemental name like "insecure_random" or something more
> bland like "always_use_urandom" for the override.  The default will
> certainly remain the way it is.
> _______________________________________________
> krbdev mailing list             krbdev at mit.edu
> https://mailman.mit.edu/mailman/listinfo/krbdev

More information about the krbdev mailing list