RDRAND
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]Referències
[modifica]- ↑ «What is Intel® Secure Key Technology?» (en anglès). Intel. [Consulta: 23 setembre 2020].
- ↑ Hofemeier, Gael. «Find out about Intel's new RDRAND Instruction.» (en anglès). Intel Developer Zone Blogs, 22-06-2011. [Consulta: 30 desembre 2013].
- ↑ «Intel Digital Random Number Generator (DRNG): Software Implementation Guide, Revision 1.1» (en anglès). Intel Corporation, 07-08-2012. [Consulta: 25 novembre 2012].
- ↑ Desktop 3rd Generation Intel Core Processor Family, Specification Update. Intel Corporation, gener 2013.
- ↑ «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].
- ↑ 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].
- ↑ «Intel Digital Random Number Generator (DRNG): Software Implementation Guide, Revision 1.1» (en anglès). Intel Corporation, 07-08-2012. [Consulta: 25 novembre 2012].
- ↑ 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].
- ↑ 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].
- ↑ «AMD Starts Linux Enablement On Next-Gen "Zen" Architecture - Phoronix» (en anglès). www.phoronix.com. [Consulta: 25 octubre 2015].
- ↑ «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].
- ↑ «AMD64 Architecture Programmer's Manual Volume 3: General-Purpose and System Instructions» (en anglès). AMD, juny 2015. [Consulta: 15 octubre 2015].
- ↑ «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].
- ↑ «Intel® Digital Random Number Generator (DRNG) Software Implementation Guide» (en anglès). Software.intel.com. [Consulta: 30 gener 2014].
- ↑ 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,0 16,1 Taylor, Greg; Cox, George IEEE Spectrum, setembre 2011.
- ↑ John Mechalas. «The Difference Between RDRAND and RDSEED» (en anglès). software.intel.com. Intel Corporation, novembre 2012. [Consulta: 1r gener 2014].
- ↑ 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].
- ↑ Route, Matthew American Astronomical Society Meeting Abstracts #234, 234, 2019. Bibcode: 2019AAS...23420701R.
- ↑ 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].