En informática , un generador de números aleatorios de hardware ( HRNG ), generador de números aleatorios verdaderos ( TRNG ), generador de bits aleatorios no determinista ( NRBG ), [1] o generador físico de números aleatorios [2] [3] es un dispositivo que genera números aleatorios a partir 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 de bits aleatorios determinista", DRBG) que utiliza un algoritmo determinista [2] y los generadores de bits aleatorios no deterministas no físicos 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 de bajo nivel , incluyendo el ruido térmico y de disparo , la fluctuación 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] [9] e incluso la desintegración nuclear (debido a consideraciones prácticas, este último, 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 calificadores "verdadero" y "físico" se utilizan indistintamente. [10]
Se espera que un generador de números aleatorios de hardware genere números aleatorios casi perfectos (" entropía total "). [1] Un proceso físico normalmente no tiene esta propiedad, y un TRNG práctico normalmente incluye algunos bloques: [11]
Los generadores de números aleatorios de hardware generalmente producen sólo una cantidad limitada de bits aleatorios por segundo. Para aumentar la tasa de datos de salida disponibles, 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 . [12]
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 coste adicional y la complejidad de un TRNG (en comparación con los generadores de números pseudoaleatorios) no aportan beneficios significativos. Los TRNG tienen desventajas adicionales para la ciencia de datos y las aplicaciones estadísticas: la 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 el fallo de la fuente. Por tanto, los TRNG se utilizan principalmente en las aplicaciones en las que 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. [13]
El uso principal de los generadores de números aleatorios de hardware se encuentra 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: [14]
Una forma típica de cumplir estos requisitos es utilizar un TRNG para generar un generador de números pseudoaleatorios criptográficamente seguro . [15]
Durante miles de años se han utilizado dispositivos físicos para generar números aleatorios, principalmente para los juegos de azar . Los dados , en particular, se conocen desde hace más de 5000 años (se han encontrado en lugares de los actuales Irak e Irán), y el lanzamiento de una moneda (que produce un bit aleatorio) data al menos de la época de la antigua Roma . [16]
El primer uso documentado de un generador físico de números aleatorios con fines científicos fue obra de Francis Galton (1890). [17] Galton 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 de un dado más cercana a él, creando así 6*4 = 24 resultados (aproximadamente 4,6 bits de aleatoriedad). [16]
Kendall y Babington-Smith (1938) [18] utilizaron un disco de 10 sectores que giraba rápidamente y que se iluminaba con ráfagas periódicas de luz. El muestreo lo hacía una persona que escribía el número bajo el haz de luz en una libreta. El dispositivo se utilizó para producir una tabla de números aleatorios de 100.000 dígitos (en aquella época, dichas tablas se utilizaban para experimentos estadísticos, como el PRNG actual). [16]
El 29 de abril de 1947, la Corporación RAND 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, controlada una vez por segundo con un pulso de frecuencia constante y alimentada a un contador binario de cinco bits. Douglas Aircraft construyó el equipo, implementando la sugerencia de Cecil Hasting (RAND P-113) [19] para una fuente de ruido (muy probablemente el comportamiento bien conocido del tubo de gas tiratrón en miniatura 6D4 , cuando se coloca en un campo magnético [20] ). 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. [21] Los resultados de una larga ejecución 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 [16] ( Un millón de dígitos aleatorios con 100.000 desviaciones normales ). La tabla RAND fue un avance significativo en la entrega 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 las constantes arbitrarias en algoritmos criptográficos para demostrar que las constantes no habían sido seleccionadas maliciosamente (" números de nada bajo la manga "). [22]
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 otorgadas en 2017. [16]
A lo largo del tiempo se han propuesto muchos diseños de TRNG diferentes con una gran variedad de fuentes de ruido y técnicas de digitalización ("recolección"). Sin embargo, las consideraciones prácticas (tamaño, potencia, costo, rendimiento, robustez) dictan las siguientes características deseables: [23]
Stipčević y Koç en 2014 clasificaron los fenómenos físicos utilizados para implementar TRNG en cuatro grupos: [3]
Los generadores de números aleatorios basados en ruido generalmente siguen el mismo esquema: la fuente de un generador de ruido se introduce en 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 bloquea mediante un flip-flop. Las fuentes de ruido varían e incluyen: [24]
Las desventajas de utilizar fuentes de ruido para un diseño RNG son: [25]
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 pueden ponerse en modo caos (indeseable en otras aplicaciones) con potencia que fluctúa caóticamente, con potencia detectada utilizando un fotodiodo y muestreada por un comparador. El diseño puede ser bastante pequeño, ya que todos los elementos fotónicos pueden integrarse 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 ninguna aleatoriedad nueva, por lo que existe la posibilidad de que el TRNG basado en el caos produzca un subconjunto limitado de posibles cadenas de salida. [27]
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. Dado que los inversores que forman el RO pueden considerarse amplificadores con una ganancia muy grande, la salida de un FRO exhibe oscilaciones muy rápidas en fase 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. [27]
La tecnología de generación de números aleatorios cuánticos está bien establecida con 8 productos generadores de números aleatorios cuánticos ( QRNG ) comerciales ofrecidos antes de 2017. [28]
Herrero-Collantes y García-Escartin enumeran los siguientes procesos estocásticos como "cuánticos":
Para reducir costos y aumentar la robustez de los generadores de números aleatorios cuánticos, [39] se han implementado servicios en línea. [28]
Una pluralidad de diseños de generadores de números aleatorios cuánticos [40] son inherentemente imposibles de probar y, por lo tanto, pueden ser manipulados por adversarios. Mannalath et al. denominan a estos diseños "confiables" en el sentido de que solo pueden funcionar en un entorno totalmente controlado y confiable. [41]
La falla de un TRNG puede ser bastante compleja y sutil, y requiere la validación no solo de los resultados (el flujo de bits de salida), sino también de la imprevisibilidad de la fuente de entropía. [10] Los generadores de números aleatorios de hardware deben ser monitoreados constantemente para garantizar su correcto funcionamiento y protegerse 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 [42] 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, el NIST en SP 800-90B requiere solo dos pruebas de salud continuas : [43]
Es muy fácil que los dispositivos de hardware o software que intentan generar números aleatorios se construyan de forma incorrecta. Además, la mayoría de ellos se "rompen" silenciosamente y, a menudo, producen números cada vez menos aleatorios a medida que se degradan. Los modos de fallo en estos dispositivos son abundantes y son complicados, lentos y difíciles de detectar. Los métodos que combinan múltiples fuentes de entropía son más robustos.
Dado que muchas fuentes de entropía suelen ser bastante frágiles y fallan silenciosamente, se deben realizar pruebas estadísticas de sus resultados de forma continua. Muchos de estos dispositivos (pero no todos) incorporan algunas de estas pruebas en el software que los lee.
Al igual que otros componentes de un sistema criptográfico, un generador de números aleatorios criptográficos debe estar diseñado para resistir ciertos ataques . Defenderse de estos ataques es difícil sin una fuente de entropía de hardware. [ cita requerida ]
Los procesos físicos en HRNG introducen nuevas superficies de ataque. Por ejemplo, un TRNG basado en un oscilador de funcionamiento libre puede ser atacado mediante una inyección de frecuencia. [44]
Existen técnicas matemáticas para estimar la entropía de una secuencia de símbolos. Ninguna es tan fiable como para que sus estimaciones sean totalmente fiables; siempre hay suposiciones que pueden ser muy difíciles de confirmar. Estas son útiles para determinar si hay suficiente entropía en un grupo de semillas, por ejemplo, pero no pueden, en general, distinguir entre una fuente verdaderamente aleatoria y un generador pseudoaleatorio. Este problema se evita mediante el uso conservador de fuentes de entropía de hardware.
{{cite conference}}
: CS1 maint: bot: estado de URL original desconocido ( enlace ){{citation}}
: CS1 maint: nombres numéricos: lista de autores ( enlace ) Mejor práctica común. Obsoleto RFC 1750.