RDRAND

De la Viquipèdia, l'enciclopèdia lliure

RDRAND (per "llegir aleatòriament"; conegut com Intel Secure Key Technology,[1] nom en clau Bull Mountain [2]) é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.[3] 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 [note 1] i forma part de les arquitectures de conjunt d'instruccions Intel 64 i IA-32).[5]

El generador de números aleatoris compleix amb els estàndards de seguretat i criptogràfics com NIST SP 800-90A,[6] FIPS 140-2 i ANSI X9.82.[7] 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.[8]

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 [9] i les CPU AMD Zen.[10]

Visió general[modifica]

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.[11] Els processadors AMD es comprova la funció mitjançant la mateixa prova.[12] 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.[13]

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.[14]

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,[15] que va rebre el nom en clau "Bull Mountain" durant el desenvolupament.[16] 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.[15] [16] 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,[17] 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,[18] 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 es requereix seguretat criptogràfica, un programari PRNG com Xorshift sol ser més ràpid.

Aplicacions[modifica]

É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.[19][20]

Notes[modifica]

  1. En algunes versions d'Ivy Bridge, a causa d'un error, la instrucció RDRAND provoca una excepció d'instrucció il·legal.[4]

Referències[modifica]

  1. «What is Intel® Secure Key Technology?» (en anglès). Intel. [Consulta: 23 setembre 2020].
  2. Hofemeier, Gael. «Find out about Intel's new RDRAND Instruction.» (en anglès). Intel Developer Zone Blogs, 22-06-2011. [Consulta: 30 desembre 2013].
  3. «Intel Digital Random Number Generator (DRNG): Software Implementation Guide, Revision 1.1» (en anglès). Intel Corporation, 07-08-2012. [Consulta: 25 novembre 2012].
  4. Desktop 3rd Generation Intel Core Processor Family, Specification Update. Intel Corporation, gener 2013. 
  5. «AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions» (en anglès). AMD Developer Guides, Manuals & ISA Documents, juny 2015. [Consulta: 16 octubre 2015].
  6. Barker, Elaine; Kelsey, John "Recommendation for Random Number Generation Using Deterministic Random Bit Generators", gener 2012. DOI: 10.6028/NIST.SP.800-90A [Consulta: 16 setembre 2013].
  7. «Intel Digital Random Number Generator (DRNG): Software Implementation Guide, Revision 1.1» (en anglès). Intel Corporation, 07-08-2012. [Consulta: 25 novembre 2012].
  8. Hamburg, Mike. «Analysis of Intel's Ivy Bridge Digital Random Number Generator» (en anglès). Cryptography Research, Inc., 12-03-2012. Arxivat de l'original el 2014-12-30. [Consulta: 21 agost 2015].
  9. Hofemeier, Gael. «Introduction to Intel AES-NI and Intel SecureKey Instructions» (en anglès). Intel Developer Zone. Intel, 26-07-2012. [Consulta: 24 octubre 2015].
  10. «AMD Starts Linux Enablement On Next-Gen "Zen" Architecture - Phoronix» (en anglès). www.phoronix.com. [Consulta: 25 octubre 2015].
  11. «Volume 1, Section 7.3.17, 'Random Number Generator Instruction'» (en anglès). Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B and 3C. Intel Corporation, juny 2013. [Consulta: 24 juny 2013].
  12. «AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions» (en anglès). AMD, juny 2015. [Consulta: 15 octubre 2015].
  13. «Volume 1, Section 7.3.17, 'Random Number Generator Instruction'» (en anglès). Intel® 64 and IA-32 Architectures Software Developer’s Manual Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B and 3C. Intel Corporation, juny 2013. [Consulta: 25 octubre 2015].
  14. «Intel® Digital Random Number Generator (DRNG) Software Implementation Guide» (en anglès). Software.intel.com. [Consulta: 30 gener 2014].
  15. 15,0 15,1 «Intel Digital Random Number Generator (DRNG): Software Implementation Guide, Revision 1.1» (en anglès). Intel Corporation, 07-08-2012. [Consulta: 25 novembre 2012].
  16. 16,0 16,1 Taylor, Greg; Cox, George IEEE Spectrum, setembre 2011.
  17. John Mechalas. «The Difference Between RDRAND and RDSEED» (en anglès). software.intel.com. Intel Corporation, novembre 2012. [Consulta: 1r gener 2014].
  18. Mechalas, John. «Intel Digital Random Number Generator (DRNG) Software Implementation Guide, Section 3.2.1 Entropy Source (ES)» (en anglès). Intel Software. Intel. [Consulta: 18 febrer 2015].
  19. Route, Matthew American Astronomical Society Meeting Abstracts #234, 234, 2019. Bibcode: 2019AAS...23420701R.
  20. Route, Matthew The Astrophysical Journal, 845, 1, 10-08-2017, pàg. 66. arXiv: 1707.02212. Bibcode: 2017ApJ...845...66R. DOI: 10.3847/1538-4357/aa7ede [Consulta: lliure].