Re: [RFD] Direct support for the x86 RDRAND instruction

From: Jeff Garzik
Date: Fri Jul 29 2011 - 17:05:46 EST


On 07/29/2011 04:37 PM, H. Peter Anvin wrote:
From: "H. Peter Anvin"<hpa@xxxxxxxxxxxxxxx>

This is a proposed patchset to enable the new x86 RDRAND instruction,
labelled "Bull Mountain Technology" by Intel. It is a different beast
than any other hardware random number generator that I have personally
encountered: it is not just a random number source, but contains a
high bandwidth random number generator, an AES cryptographic whitener,
and integrity monitoring all in hardware.

For technical documentation see:

http://software.intel.com/en-us/articles/download-the-latest-bull-mountain-software-implementation-guide/

This proposed patchset enables RDRAND bypass for current users of the
nonblocking random pool (that is, for /dev/urandom and its equvalent
in-kernel users) but not for the blocking pool (/dev/random). This is
because RDRAND, although reseeded way more frequently than what is
practical to do in software, is technically a nonblocking source that
can behave as a PRNG. It can be used as a source for randomness for
/dev/random, but that is not addressed by this patchset.

This does not cover the one question I [predictably] have: why not do this in rngd, rather than the kernel?

Since many (all?) TPM chips include a random number generator, Dell has made sure that most distros have a useful copy of the rng-tools userspace pkg I've been maintaining.

It would seem straightforward to add this to rngd, and enable RDRAND on older distros and kernels, as well as current distros / kernels. This also gets useful entropy to /dev/random as part of normal operation, rather than only merely speeding up /dev/urandom.

Though for the record, I do agree that this is a nice, small and clean kernel implementation.

Jeff




--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/