Generador de números aleatorios de hardware

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 4 de diciembre de 2021; la verificación requiere 1 edición .

Un generador de números aleatorios de hardware ( generador de números aleatorios verdaderos ) es un dispositivo que genera una secuencia de números aleatorios basados ​​en parámetros medidos y caóticamente cambiantes de un proceso físico en curso. El funcionamiento de este tipo de dispositivos se basa a menudo en el uso de fuentes fiables de entropía , como el ruido térmico, el ruido de disparo , el efecto fotoeléctrico , los fenómenos cuánticos , etc. Estos procesos son absolutamente impredecibles en teoría, pero en la práctica los números aleatorios que se obtienen de ellos se comprueban mediante pruebas estadísticas especiales .

Los generadores de números aleatorios de hardware se utilizan principalmente para pruebas estadísticas y en criptografía , donde se utilizan para generar claves criptográficas para la transmisión de datos cifrados. Además, este tipo de dispositivos son muy utilizados en los casinos online para simular, por ejemplo, la ruleta . Pero debido a la complejidad de la implementación y la relativa lentitud, el uso de dichos generadores depende de las necesidades de un área temática en particular y del diseño del generador en sí.

Breve historia del desarrollo

El dado simple , ampliamente utilizado en los juegos de azar en el pasado y en los juegos de mesa en la actualidad, es el verdadero generador de números aleatorios más simple. En 1890, el investigador inglés Francis Galton describió un método de usar dados para generar números aleatorios con fines científicos [1] .

Un desarrollo posterior de generadores de números aleatorios de hardware puede considerarse dispositivos especiales: máquinas de lotería , que se utilizan para generar números en lotería y keno . Consisten principalmente en un tambor que remueve las bolas con números, y un dispositivo que las va sacando una a una. Sin embargo, este método de generación es muy lento e inadecuado para la generación automática de grandes conjuntos de datos [2] .

Para tareas aplicadas, se necesitaban grandes cantidades de datos. En 1939 , M. J. Kendall y B. Babington-Smith construyeron la primera máquina generadora de números aleatorios para construir una tabla 100 000 números aleatorios. Y después de 16 años, la corporación RAND , utilizando dispositivos especiales, construyó una tabla de un millón de números aleatorios. A pesar del renacimiento del método tabular en 1996 por J. Marsaglia , quien construyó 650 MB de números aleatorios, el rango de aplicabilidad de tales tablas es muy estrecho [3] .

Mucho más extendidos están los generadores de números aleatorios que los generan en tiempo real. En 1951, se incluyó un programa en la computadora Ferranti Mark 1 que generaba números aleatorios usando ruido de resistencia . La idea de crear este programa perteneció a A. Turing [4] . Y en 1957, se inventó la máquina ERNIE (Equipo indicador electrónico de números aleatorios) , cuya cuarta versión se introdujo en 2004. Este dispositivo fue diseñado originalmente para generar números de bonos ganadores en la lotería británica [5] .

Dispositivo

Los generadores de números aleatorios de hardware pueden basarse en procesos aleatorios macroscópicos que utilizan objetos como una moneda, un dado o una rueda de ruleta. La presencia de imprevisibilidad en los datos se explica por la teoría de los sistemas dinámicos inestables y la teoría del caos . Incluso los sistemas macroscópicos completamente definidos por las ecuaciones de Newton en la práctica tienen un resultado impredecible, ya que depende de los detalles microscópicos de las condiciones iniciales [6] .

Generadores que utilizan procesos físicos aleatorios

Los dispositivos basados ​​en procesos aleatorios macroscópicos no pueden proporcionar la velocidad de obtención de números aleatorios suficientes para problemas aplicados. Por lo tanto, los AGNG modernos se basan en una fuente de ruido de la que se extraen bits aleatorios . Las fuentes de ruido se dividen en dos tipos: que tienen una naturaleza cuántica y que no utilizan fenómenos cuánticos [7] [8] .

Una consecuencia de las leyes de la física cuántica es el hecho de que algunos fenómenos naturales (por ejemplo, la desintegración radiactiva de los átomos) son absolutamente aleatorios y no pueden predecirse en principio (uno de los primeros experimentos que prueban la naturaleza probabilística de algunos fenómenos puede considerarse el experimento de Davisson-Germer ). También se deduce de la mecánica estadística que a una temperatura que no es igual al cero absoluto , cada sistema tiene fluctuaciones aleatorias en sus parámetros.

Dado que algunos procesos mecánicos cuánticos son completamente aleatorios, son el "estándar de oro" para AGNG. Los fenómenos utilizados en los generadores incluyen:

Los fenómenos no cuánticos son más fáciles de detectar, pero los AGNG basados ​​en ellos dependerán en gran medida de la temperatura (por ejemplo, la cantidad de ruido térmico es proporcional a la temperatura ambiente). Entre los procesos utilizados en AGNG, se pueden señalar:

Existen varios enfoques para obtener una secuencia de bits aleatorios a partir de un proceso aleatorio físico . Una de ellas es que la relación señal-ruido recibida se amplifica, se filtra y se alimenta a la entrada de un comparador de voltaje de alta velocidad para obtener una señal lógica . Las duraciones de los estados del comparador serán aleatorias, lo que le permite crear una secuencia de números aleatorios midiendo las duraciones de estos estados. En este tipo de sistemas hay que tener en cuenta que, además del generador de ruido utilizado, éste puede ser introducido por otros componentes del sistema (por ejemplo, la línea de campo ), lo que puede afectar en gran medida a los parámetros estadísticos del bit generado. secuencia [11] [8] .

Otro enfoque es que una señal aleatoria se alimenta a la entrada de un convertidor de analógico a digital (se pueden usar tanto dispositivos especiales como la entrada de audio de la computadora), como resultado, la señal digitalizada será una secuencia de números aleatorios que pueden ser procesada programáticamente . También existen métodos para combinar un generador de números pseudoaleatorios rápido con un generador de hardware lento [11] [8] .

Generadores que utilizan otros fenómenos

Los generadores de números aleatorios que utilizan procesos físicos aleatorios producen buenos números aleatorios, pero su producción es relativamente difícil y costosa (especialmente para los AGNG basados ​​en la desintegración radiactiva ), pero existen fuentes de aleatoriedad más accesibles [12] :

Los generadores más inusuales incluyen trabajos que utilizan cámaras de video digitales que registran fenómenos macroscópicos . Por ejemplo, el equipo de Silicon Graphics usó imágenes de una lámpara de lava para generar números aleatorios, ya que la cera de la lámpara cambia de forma al azar. Además, las burbujas en un acuario o las cintas en el flujo de aire de un ventilador se pueden usar como sujetos para fotografiar [13] .

Problemas

El principal problema de los generadores de números aleatorios de hardware es su funcionamiento relativamente lento en comparación con los generadores de secuencias pseudoaleatorias . Además, muchos de ellos se degradan gradualmente (por ejemplo, debido a la disminución de la radiactividad de la sustancia con el tiempo), por lo que deben someterse a pruebas de aleatoriedad estadística antes de cada uso (muchos de ellos se prueban en tiempo real ) [8] .

Otro problema asociado con los generadores de números aleatorios de hardware es el desplazamiento de la expectativa matemática de la secuencia de bits de salida (cuando hay más números en la secuencia que otros, por ejemplo, hay más unos que ceros en el sistema binario ). Está causado por las peculiaridades de los procesos físicos utilizados en los generadores de ruido. Este problema se resuelve con la ayuda de algoritmos especiales que le permiten igualar el número de ceros y unos en promedio en una muestra de números suficientemente larga [14] [8] .

J. Neumann fue uno de los primeros en proponer un algoritmo simple para corregir la expectativa sesgada en una secuencia. El algoritmo es que los bits se consideran en pares: si hay dos valores idénticos en el par, entonces el par se descarta; si los bits son diferentes, solo se escribe el primer bit de este par en lugar del par. La desventaja de este algoritmo es que alrededor del 75% de los bits se descartan y, como resultado, la tasa de generación aleatoria de bits cae significativamente [14] .

Otro método consiste en utilizar funciones hash criptográficas (p. ej. , SHA-1 ), ya que cumplen los estrictos requisitos de solidez criptográfica . Pero, a pesar de la relativa velocidad de este método, son difíciles de reproducir en hardware debido a la no linealidad de las funciones hash y a la fuerte dependencia de dicho generador de la calidad de la propia función hash [14] .

Además, para reducir el sesgo de la expectativa matemática, se utilizan generadores de secuencias pseudoaleatorias criptográficamente fuertes , cuyo flujo de bits, utilizando la operación XOR , se agrega al flujo de bits del generador de hardware. La principal ventaja de este método es que puede implementarse completamente en hardware, por ejemplo, en un FPGA [14] .

El profesor de biofísica Shnol Simon Elievich descubrió en los estudios de 1985-2002 un cambio regular en la estructura fina de las distribuciones estadísticas, lo que refleja los resultados de las mediciones obtenidas en el estudio de procesos de diversa naturaleza. Demostró que es muy probable que la forma de los histogramas correspondientes a la misma hora local sea similar cuando se miden procesos de diferente naturaleza en diferentes ubicaciones geográficas y que cambia con un período igual a un día sidéreo (23 horas 56 minutos), de del cual concluyó que la naturaleza cosmofísica fundamental de este fenómeno.

Véase también

Notas

  1. Galton F. "Dados para experimentos estadísticos" Revista Nature . - 1890. - S. 13-14. — 43 s.
  2. "Patente "Generador de números aleatorios""
  3. Knut D. E. El arte de la programación. Volumen 2. Algoritmos derivados. - 2011. - S. 12-14. — 832 pág. - ISBN 978-5-8459-0081-4 .
  4. 1 2 Turing A. Manual de programadores para Manchester Electronic Computer Mark II. - 1952. - S. 25. - 110 p.
  5. "Historia de ERNIE"  (enlace inaccesible)
  6. Pankratov S. Las leyes son impredecibles "Journal" Science and Life. - M. : Pravda, 1988. - S. 75-77. — 172 págs.
  7. 1 2 3 Bobnev, 1966 , pág. 7-14.
  8. 1 2 3 4 5 Henk, 2005 .
  9. Marandi A., Leindecker NC, Vodopyanov KL, Byer. Generación de bits aleatorios cuánticos totalmente ópticos a partir de la fase intrínsecamente binaria de los osciladores paramétricos . - 2012. - vol. 20. - doi : 10.1364/OE.20.019322 .
  10. Velichko S. El generador de números aleatorios prefiere relojes imperfectos . — 1996.
  11. 1 2 Shcindler, 2001 , pág. 103.
  12. Callas J. Uso y creación de números aleatorios de calidad criptográfica (inglés) (enlace no disponible) (3 de junio de 1996). Consultado el 9 de octubre de 2014. Archivado desde el original el 14 de marzo de 2015.   
  13. "Patente "Método para sembrar un generador de números pseudoaleatorios con un hash criptográfico de una digitalización de un sistema caótico""
  14. 1 2 3 4 Claudio A. Ardagna, Jianying Zhou, 2011 .

Literatura