En informática , un generador de números aleatorios de hardware ( HRNG ), un generador de números aleatorios verdadero ( TRNG ), un generador de bits aleatorios no determinista ( NRBG ), [1] o un generador físico de números aleatorios [2] [3] es un dispositivo que genera números aleatorios. números de un proceso físico capaz de producir entropía (en otras palabras, el dispositivo siempre tiene acceso a una fuente de entropía física [1] ), a diferencia del generador de números pseudoaleatorios (PRNG, también conocido como "generador determinista de bits aleatorios", DRBG) que utiliza un algoritmo determinista [2] y generadores de bits aleatorios no físicos y no deterministas que no incluyen hardware dedicado a la generación de entropía. [1]
Muchos fenómenos naturales generan señales de " ruido " estadísticamente aleatorias y de bajo nivel , incluido el ruido térmico y de disparo , la inquietud y la metaestabilidad de los circuitos electrónicos, el movimiento browniano y el ruido atmosférico . [4] Los investigadores también utilizaron el efecto fotoeléctrico , que implica un divisor de haz , otros fenómenos cuánticos , [5] [6] [7] [8] e incluso la desintegración nuclear (debido a consideraciones prácticas, esta última, así como el ruido atmosférico). , no es viable). [4] Si bien los fenómenos "clásicos" (no cuánticos) no son verdaderamente aleatorios, un sistema físico impredecible suele ser aceptable como fuente de aleatoriedad, por lo que los calificativos "verdadero" y "físico" se usan indistintamente. [9]
Se espera que un generador de números aleatorios de hardware genere números aleatorios casi perfectos (" entropía completa "). [1] Un proceso físico generalmente no tiene esta propiedad, y un TRNG práctico generalmente incluye algunos bloques: [10]
Los generadores de números aleatorios de hardware generalmente producen sólo un número limitado de bits aleatorios por segundo. Para aumentar la velocidad de datos de salida disponible, a menudo se utilizan para generar la " semilla " para un PRNG más rápido. DRBG también ayuda con la "anonimización" de la fuente de ruido (blanqueando las características de identificación de la fuente de ruido) y la extracción de entropía . Con un algoritmo DRBG adecuado seleccionado ( generador de números pseudoaleatorios criptográficamente seguro , CSPRNG), la combinación puede satisfacer los requisitos de los Estándares Federales de Procesamiento de Información y los estándares de Criterios Comunes . [11]
Los generadores de números aleatorios de hardware se pueden utilizar en cualquier aplicación que necesite aleatoriedad. Sin embargo, en muchas aplicaciones científicas, el costo adicional y la complejidad de un TRNG (en comparación con los generadores de números pseudoaleatorios) no proporcionan beneficios significativos. Los TRNG tienen inconvenientes adicionales para las aplicaciones estadísticas y de ciencia de datos: imposibilidad de volver a ejecutar una serie de números a menos que estén almacenados, la dependencia de una entidad física analógica puede ocultar la falla de la fuente. Por lo tanto, los TRNG se utilizan principalmente en aplicaciones donde su imprevisibilidad y la imposibilidad de volver a ejecutar la secuencia de números son cruciales para el éxito de la implementación: en criptografía y máquinas de juego. [12]
El uso principal de los generadores de números aleatorios de hardware es en el campo del cifrado de datos , por ejemplo, para crear claves criptográficas aleatorias y nonces necesarios para cifrar y firmar datos. Además de la aleatoriedad, existen al menos dos requisitos adicionales impuestos por las aplicaciones criptográficas: [13]
Una forma típica de cumplir con estos requisitos es utilizar un TRNG para generar un generador de números pseudoaleatorios criptográficamente seguro . [14]
Se utilizaron dispositivos físicos para generar números aleatorios durante miles de años, principalmente para los juegos de azar . Los dados en particular se conocen desde hace más de 5000 años (se encuentran en lugares del actual Irak e Irán), y lanzar una moneda (produciendo así una pieza aleatoria) data al menos de la época de la antigua Roma . [15]
El primer uso documentado de un generador físico de números aleatorios con fines científicos fue el de Francis Galton (1890). [16] Ideó una forma de muestrear una distribución de probabilidad utilizando un dado de juego común. Además del dígito superior, Galton también miró la cara del dado más cercano a él, creando así 6*4 = 24 resultados (aproximadamente 4,6 bits de aleatoriedad). [15]
Kendall y Babington-Smith (1938) [17] utilizaron un disco de 10 sectores de rotación rápida que estaba iluminado por ráfagas periódicas de luz. El muestreo fue realizado por un humano que escribió el número debajo del haz de luz en una libreta. El dispositivo se utilizó para producir una tabla de números aleatorios de 100.000 dígitos (en ese momento, dichas tablas se usaban para experimentos estadísticos, como el PRNG en la actualidad). [15]
El 29 de abril de 1947, RAND Corporation comenzó a generar dígitos aleatorios con una "ruleta electrónica", que consistía en una fuente de pulsos de frecuencia aleatoria de aproximadamente 100.000 pulsos por segundo activados una vez por segundo con un pulso de frecuencia constante y alimentados a un binario de cinco bits. encimera. Douglas Aircraft construyó el equipo, implementando la sugerencia de Cecil Hasting (RAND P-113) [18] para una fuente de ruido (muy probablemente el conocido comportamiento del tubo tiratrón de gas en miniatura 6D4 , cuando se coloca en un campo magnético [19] ). Veinte de los 32 valores de contador posibles se asignaron a los 10 dígitos decimales y los otros 12 valores de contador se descartaron. [20] Los resultados de una larga tirada de la máquina RAND, filtrados y probados, se convirtieron en una tabla, que originalmente existía solo como una baraja de tarjetas perforadas , pero que luego se publicó en 1955 como un libro, 50 filas de 50 dígitos. en cada página [15] ( Un millón de dígitos aleatorios con 100.000 desviaciones normales ). La tabla RAND fue un avance significativo en la generación de números aleatorios porque nunca antes había estado disponible una tabla tan grande y cuidadosamente preparada. Ha sido una fuente útil para simulaciones, modelado y para derivar constantes arbitrarias en algoritmos criptográficos para demostrar que las constantes no habían sido seleccionadas maliciosamente (" números sin nada bajo la manga "). [21]
Desde principios de la década de 1950, la investigación sobre TRNG ha sido muy activa, con miles de trabajos de investigación publicados y alrededor de 2000 patentes concedidas en 2017. [15]
A lo largo del tiempo se propusieron muchos diseños diferentes de TRNG con una gran variedad de fuentes de ruido y técnicas de digitalización ("cosecha"). Sin embargo, consideraciones prácticas (tamaño, potencia, costo, rendimiento, robustez) dictan los siguientes rasgos deseables: [22]
Stipčević & Koç en 2014 clasificaron los fenómenos físicos utilizados para implementar TRNG en cuatro grupos: [3]
Los RNG basados en ruido generalmente siguen el mismo esquema: la fuente de un generador de ruido se alimenta a un comparador . Si el voltaje está por encima del umbral, la salida del comparador es 1; de lo contrario, 0. El valor del bit aleatorio se retiene mediante un flip-flop. Las fuentes de ruido varían e incluyen: [23]
Los inconvenientes de utilizar fuentes de ruido para un diseño de RNG son: [24]
La idea del ruido basado en el caos surge del uso de un sistema complejo que es difícil de caracterizar observando su comportamiento a lo largo del tiempo. Por ejemplo, los láseres se pueden poner en modo caos (indeseable en otras aplicaciones) con potencia fluctuante caóticamente, con potencia detectada mediante un fotodiodo y muestreada por un comparador. El diseño puede ser bastante pequeño, ya que todos los elementos fotónicos se pueden integrar en el chip. Stipčević y Koç caracterizan esta técnica como "muy objetable", principalmente debido al hecho de que el comportamiento caótico suele estar controlado por una ecuación diferencial y no se introduce nueva aleatoriedad, por lo que existe la posibilidad de que el TRNG basado en el caos produzca un subconjunto limitado de posibles cadenas de salida. [26]
Los TRNG basados en un oscilador de funcionamiento libre (FRO) suelen utilizar uno o más osciladores en anillo (RO), cuyas salidas se muestrean utilizando otro oscilador más. Dado que los inversores que forman el RO pueden considerarse amplificadores con una ganancia muy grande, una salida FRO exhibe oscilaciones de fase muy rápidas en los dominios de frecuencia. Los TRNG basados en FRO son muy populares debido a su uso de la lógica digital estándar a pesar de los problemas con las pruebas de aleatoriedad y la variabilidad de chip a chip. [26]
La tecnología de generación de números aleatorios cuánticos está bien establecida con 8 productos comerciales de generadores de números aleatorios cuánticos ( QRNG ) ofrecidos antes de 2017. [27]
Herrero-Collantes y García-Escartin enumeran los siguientes procesos estocásticos como "cuánticos":
Para reducir costos y aumentar la solidez de los generadores de números aleatorios cuánticos, [38] se han implementado servicios en línea. [27]
El fallo de un TRNG puede ser bastante complejo y sutil, y requiere la validación no sólo de los resultados (el flujo de bits de salida), sino también de la imprevisibilidad de la fuente de entropía. [9] Los generadores de números aleatorios de hardware deben monitorearse constantemente para verificar su funcionamiento adecuado y protegerlos contra la degradación de la fuente de entropía debido a causas naturales y ataques deliberados. FIPS Pub 140-2 y NIST Special Publication 800-90B [39] definen pruebas que se pueden utilizar para esto.
El conjunto mínimo de pruebas en tiempo real exigidas por los organismos de certificación no es grande; por ejemplo, NIST en SP 800-90B requiere solo dos pruebas de salud continuas : [40]
Es muy fácil construir mal dispositivos de hardware o software que intenten generar números aleatorios. Además, la mayoría se "rompe" silenciosamente, produciendo a menudo números cada vez menos aleatorios a medida que se degradan. Los modos de falla en tales dispositivos son abundantes y complicados, lentos y difíciles de detectar. Los métodos que combinan múltiples fuentes de entropía son más sólidos.
Debido a que muchas fuentes de entropía suelen ser bastante frágiles y fallan silenciosamente, se deben realizar pruebas estadísticas sobre su producción continuamente. Muchos de estos dispositivos, pero no todos, incorporan algunas de estas pruebas en el software que lee el dispositivo.
Al igual que con otros componentes de un sistema criptográfico, un generador criptográfico de números aleatorios debe diseñarse para resistir ciertos ataques . Defenderse de estos ataques es difícil sin una fuente de entropía de hardware. [ cita necesaria ]
Los procesos físicos en HRNG introducen nuevas superficies de ataque. Por ejemplo, un TRNG basado en un oscilador de funcionamiento libre puede atacarse mediante una inyección de frecuencia. [41]
Existen técnicas matemáticas para estimar la entropía de una secuencia de símbolos. Ninguno es tan confiable como para que se pueda confiar plenamente en sus estimaciones; Siempre hay suposiciones que pueden ser muy difíciles de confirmar. Estos son útiles para determinar si hay suficiente entropía en un conjunto de semillas, por ejemplo, pero, en general, no pueden distinguir entre una fuente aleatoria verdadera y un generador pseudoaleatorio. Este problema se evita mediante el uso conservador de fuentes de entropía de hardware.
{{citation}}
: Mantenimiento CS1: nombres numéricos: lista de autores ( enlace ) Mejores prácticas comunes. Obsoleto RFC 1750.