RDRAND (per "llegir aleatòriament"; conegut com Intel Secure Key Technology, nom en clau Bull Mountain) és una instrucció per retornar números aleatoris des d'un generador de números aleatoris de maquinari Intel on-chip que ha estat sembrat per una font d'entropia en xip. Intel va introduir la funció al voltant de 2012 i AMD va afegir suport per a la instrucció el juny de 2015. (RDRAND està disponible en processadors Ivy Bridge i forma part de les arquitectures de conjunt d'instruccions Intel 64 i IA-32).

El generador de números aleatoris compleix amb els estàndards de seguretat i criptogràfics com NIST SP 800-90A, FIPS 140-2 i ANSI X9.82. Intel també va demanar a Cryptography Research Inc. que revisés el generador de números aleatoris el 2012, cosa que va donar lloc a l'article Analysis of Intel's Ivy Bridge Digital Random Number Generator.

RDSEED és similar a RDRAND i proporciona accés de nivell inferior al maquinari que genera entropia. El generador RDSEED i les instruccions del processador rdseed estan disponibles amb les CPU Intel Broadwell i les CPU AMD Zen.

Visió general La instrucció CPUID es pot utilitzar tant a CPU AMD com Intel per comprovar si la instrucció RDRAND és compatible. Si és així, el bit 30 del registre ECX s'estableix després de cridar la funció estàndard CPUID 01H. Els processadors AMD es comprova la funció mitjançant la mateixa prova. La disponibilitat RDSEED es pot comprovar a les CPU Intel d'una manera similar. Si s'admet RDSEED, el bit 18 del registre EBX s'estableix després de cridar la funció estàndard CPUID 07H.

El codi operatiu per RDRAND és 0x0F 0xC7, seguit d'un byte ModRM que especifica el registre de destinació i, opcionalment, combinat amb un prefix REX en mode de 64 bits.

Intel Secure Key és el nom d'Intel tant per a la instrucció RDRAND com per a la implementació de maquinari del generador de números aleatoris (RNG) subjacent, que va rebre el nom en clau "Bull Mountain" durant el desenvolupament. Intel anomena el seu RNG un "generador de números aleatoris digitals" o DRNG. El generador pren parells de mostres d'entropia en brut de 256 bits generades per la font d'entropia del maquinari i les aplica a un condicionador Advanced Encryption Standard (AES) (en mode CBC-MAC) que les redueix a una única mostra d'entropia condicionada de 256 bits. Un generador de bits aleatoris determinista anomenat CTR DRBG definit a NIST SP 800-90A és sembrat per la sortida del condicionador, proporcionant números aleatoris criptogràficament segurs a les aplicacions que els sol·liciten mitjançant la instrucció RDRAND. El maquinari emetrà un màxim de 511 mostres de 128 bits abans de canviar el valor inicial. L'ús de l'operació RDSEED proporciona accés a les mostres condicionades de 256 bits de l'AES-CBC-MAC.

La instrucció RDSEED es va afegir a Intel Secure Key per sembrar un altre generador de números pseudoaleatoris, disponible a les CPU Broadwell. La font d'entropia per a la instrucció RDSEED s'executa de manera asíncrona en un circuit autotemporal i utilitza soroll tèrmic dins del silici per produir un flux aleatori de bits a una velocitat de 3. GHz, més lent que el 6,4 efectiu Gbit/s que es poden obtenir des de RDRAND (ambdues taxes es comparteixen entre tots els nuclis i fils). La instrucció RDSEED està pensada per sembrar un programari PRNG d'amplada arbitrària, mentre que la RDRAND està pensada per a aplicacions que només requereixen números aleatoris d'alta qualitat. Si no cal seguretat criptogràfica, un programari PRNG com Xorshift sol ser més ràpid.

Aplicacions És una opció per generar números aleatoris criptogràficament segurs mitjançant RDRAND i RDSEED a OpenSSL, per ajudar a assegurar les comunicacions.

Es va avaluar l'aplicació científica de RDRAND en un simulador de Monte Carlo, centrant-se en el rendiment i la reproductibilitat, en comparació amb altres generadors de nombres aleatoris. Va conduir a la conclusió que l'ús RDRAND a diferència de Mersenne Twister no proporciona resultats diferents, sinó pitjor rendiment i reproductibilitat.

Notes

Referències

Categoria:Microprocessadors