• H
    x86, random: Architectural inlines to get random integers with RDRAND · 628c6246
    H. Peter Anvin 提交于
    Architectural inlines to get random ints and longs using the RDRAND
    instruction.
    
    Intel has introduced a new RDRAND instruction, a Digital Random Number
    Generator (DRNG), which is functionally an high bandwidth entropy
    source, cryptographic whitener, and integrity monitor all built into
    hardware.  This enables RDRAND to be used directly, bypassing the
    kernel random number pool.
    
    For technical documentation, see:
    
    http://software.intel.com/en-us/articles/download-the-latest-bull-mountain-software-implementation-guide/
    
    In this patch, this is *only* used for the nonblocking random number
    pool.  RDRAND is a nonblocking source, similar to our /dev/urandom,
    and is therefore not a direct replacement for /dev/random.  The
    architectural hooks presented in the previous patch only feed the
    kernel internal users, which only use the nonblocking pool, and so
    this is not a problem.
    
    Since this instruction is available in userspace, there is no reason
    to have a /dev/hw_rng device driver for the purpose of feeding rngd.
    This is especially so since RDRAND is a nonblocking source, and needs
    additional whitening and reduction (see the above technical
    documentation for details) in order to be of "pure entropy source"
    quality.
    
    The CONFIG_EXPERT compile-time option can be used to disable this use
    of RDRAND.
    Signed-off-by: NH. Peter Anvin <hpa@linux.intel.com>
    Originally-by: NFenghua Yu <fenghua.yu@intel.com>
    Cc: Matt Mackall <mpm@selenic.com>
    Cc: Herbert Xu <herbert@gondor.apana.org.au>
    Cc: "Theodore Ts'o" <tytso@mit.edu>
    628c6246
Kconfig 69.1 KB