• Jason A. Donenfeld's avatar
    x86/rdrand: Remove "nordrand" flag in favor of "random.trust_cpu" · 049f9ae9
    Jason A. Donenfeld authored
    The decision of whether or not to trust RDRAND is controlled by the
    "random.trust_cpu" boot time parameter or the CONFIG_RANDOM_TRUST_CPU
    compile time default. The "nordrand" flag was added during the early
    days of RDRAND, when there were worries that merely using its values
    could compromise the RNG. However, these days, RDRAND values are not
    used directly but always go through the RNG's hash function, making
    "nordrand" no longer useful.
    
    Rather, the correct switch is "random.trust_cpu", which not only handles
    the relevant trust issue directly, but also is general to multiple CPU
    types, not just x86.
    
    However, x86 RDRAND does have a history of being occasionally
    problematic. Prior, when the kernel would notice something strange, it'd
    warn in dmesg and suggest enabling "nordrand". We can improve on that by
    making the test a little bit better and then taking the step of
    automatically disabling RDRAND if we detect it's problematic.
    
    Also disable RDSEED if the RDRAND test fails.
    
    Cc: x86@kernel.org
    Cc: Theodore Ts'o <tytso@mit.edu>
    Suggested-by: default avatarH. Peter Anvin <hpa@zytor.com>
    Suggested-by: default avatarBorislav Petkov <bp@suse.de>
    Acked-by: default avatarBorislav Petkov <bp@suse.de>
    Signed-off-by: default avatarJason A. Donenfeld <Jason@zx2c4.com>
    049f9ae9
rdrand.c 1.19 KB