RDRAND
(previously known as Bull Mountain) is an instruction for returning random numbers from an Intel on-chip hardware random number generator which has been seeded by an on-chip entropy source.RDRAND
is available in Ivy Bridge processors and is part of the Intel 64 and IA-32 instruction set architectures. AMD added support for the instruction in June 2015.
The random number generator is compliant with security and cryptographic standards such as NIST SP 800-90A,FIPS 140-2, and ANSI X9.82. Intel also requested Cryptography Research Inc. to review the random number generator in 1999 and 2012, which resulted in two published papers: The Intel Random Number Generator in 1999, and Analysis of Intel's Ivy Bridge Digital Random Number Generator in 2012.
RDSEED
is similar to RDRAND
and provides higher level access to the entropy hardware. The RDSEED
generator and processor instruction rdseed
are available with Intel Broadwell CPUs and AMD Zen CPUs.
The CPUID
instruction can be used to check whether the central processing unit (CPU) supports the RDRAND
instruction on both AMD and Intel CPUs. If supported, bit 30 of the ECX register is set after calling CPUID standard function 01H
. AMD processors are checked for the feature using the same test.RDSEED
availability can be checked on Intel CPUs in a similar manner. If RDSEED
is supported, the bit 18 of the EBX register is set after calling CPUID standard function 07H
.
.
The opcode for RDRAND
is 0x0F 0xC7
, followed by a ModRM byte that specifies the destination register and optionally combined with a REX prefix in 64 bit mode.