¿Qué es un generador de números aleatorios?

  Generador de números aleatorios (en inglés random number generator, RNG) — es un sistema diseñado para generar una secuencia de números o símbolos cuyo significado no se puede predecir de antemano. Una secuencia específica de resultados generados puede contener una cierta patrón que se trazará después del proceso de generación, pero que no se pudo prever de antemano.

  Generador de números aleatorios de hardware

  Para generar números aleatorios verdaderos, un generador de números aleatorios de hardware (en inglés hardware random number generator, HRNG) se usa o también se llama verdadero generador de números aleatorios (en inglés true random number generator, TRNG)Verdadero generador de números aleatorios es un dispositivo que genera números aleatorios a partir de un proceso físico que cambia constantemente de una manera que es prácticamente imposible de modelar. Dichos generadores pueden basarse en el uso de procesos aleatorios macroscópicos, es decir en una escala que permita mediciones y observaciones a simple vista, por ejemplo, al lanzar una moneda, dados o ruedas de ruleta Aunque un proceso macroscópico se puede determinar completamente de acuerdo con la mecánica newtoniana, un mecanismo bien diseñado, como una rueda de ruleta, producirá un resultado impredecible, que puede explicarse por la teoría del caos y la inestabilidad de los sistemas dinámicos debido a la diferencia en las condiciones iniciales de cada uno nuevo intento de hacer girar la rueda de la ruleta. La principal desventaja de los generadores que utilizan procesos macroscópicos siempre ha sido la velocidad lenta y, como resultado, la incapacidad de generar una gran cantidad de valores en un corto período de tiempo.
  Hoy en día, los generadores de números aleatorios de hardware tienden a utilizar dispositivos basados en fenómenos microscópicos. Generador de números aleatorios de hardware que generan señales de "ruido" estadísticamente aleatorias de bajo nivel, como varios ruidos (disparo, térmico, atmosférico), el efecto fotoeléctrico, que implica un divisor de haz, y otros fenómenos cuánticos. Tales procesos son buenas fuentes de entropía porque su resultado es absolutamente imposible de predecir en teoría, pero debido a la complejidad de implementación y relativa lentitud del trabajo, el alcance del uso de dichos generadores se limita a áreas temáticas con ciertos requisitos para los valores generados.
  Básicamente, los generadores de números aleatorios de hardware electrónico se utilizan en criptografía para generar criptográficamente aleatoriamente claves para garantizar la transferencia segura de datos, por ejemplo, en protocolos de cifrado de Internet como el protocolo de seguridad de la capa de transporte (en inglés Transport Layer Security, TLS).

Generador de números pseudoaleatorios

Generador de números pseudoaleatorios   Una alternativa a los generadores de hardware (físicos) son los generadores basados en algoritmos — (en inglés pseudorandom number generators, PRNG), que crean una secuencia de números que parece aleatoria, pero en realidad no lo es. Los números generados por el PRNG no pueden considerarse verdaderamente aleatorios ya que están completamente determinados por un valor inicial, llamado semilla de PRNG. A pesar de que la secuencia de números generados por generadores de números aleatorios de hardware está más cerca de ser verdaderamente aleatorio, pseudoaleatorio Los generadores de números se utilizan a menudo en la práctica en muchas áreas debido a su velocidad en la generación de números, facilidad de implementación y relativo bajo costo. Hay muchos métodos para crear secuencias pseudoaleatorias de números, entre ellos el Mersenne Twister, un generador lineal congruente (en inglés linear congruential generator, LCG), generadores de números aleatorios Xorshift, también llamados generadores de registro de desplazamiento, Well equidistributed long-period linear (WELL) que es una forma de registro de desplazamiento de retroalimentación lineal optimizado para la implementación de software y otros métodos basados en algoritmos.

Mersenne Twister

  El Mersenne Twister es uno de los generadores de números pseudoaleatorios más populares desarrollado en 1997 por Makoto Matsumoto (松本 眞) y Takuji Nishimura (西村 拓士). Su nombre proviene del hecho de que su la duración del período se elige como un primo de Mersenne, es un número primo de la forma Mersenne Twister para algún entero n. Este PRNG fue diseñado específicamente para resolver la mayoría de las deficiencias encontradas en los PRNG anteriores. Las principales ventajas del Mersenne Twister:
  • Un período muy largo de 219937 — 1
  • Pasa muchas pruebas estadísticas de aleatoriedad, incluidas las pruebas Diehard y la mayoría, pero no todas, las pruebas TestU01
  • Tiene una licencia de software libre permisiva y libre de patentes para todas las variantes excepto CryptMT
  • k-distribuida con una precisión de 32 bits para cada 1 ≤ k ≤ 623
  • Las implementaciones generalmente generan números aleatorios más rápido que los métodos de generación verdaderos (hardware)
  El Mersenne Twister se utiliza como PRNG predeterminado en muchos lenguajes de programación, software y recursos en línea, como nuestro generador de números aleatorios en línea, pero este método no es criptográficamente fuerte, lo que no permite su uso en criptografía.

PRNG con fuente de entropía

  Junto con la necesidad de generar rápidamente secuencias fácilmente reproducibles de números aleatorios, también existe la necesidad para generar números completamente impredecibles o simplemente completamente aleatorios. Para satisfacer ambas condiciones, Las combinaciones de un PRNG criptorresistente y una fuente externa de entropía se usan con mayor frecuencia y son estas combinaciones de generadores que ahora se denominan comúnmente generadores de números aleatorios (RNG). Estos generadores son los más a menudo se usa para generar claves simétricas y asimétricas únicas para el cifrado, la industria del juego y otras áreas. Un ejemplo del funcionamiento de un generador combinado es el siguiente: un dispositivo físico, utilizando una fuente confiable de entropía (como el ruido térmico), genera la "semilla" para una criptografía segura más rápida generador de números pseudoaleatorios, que luego genera una secuencia de salida pseudoaleatoria a una velocidad de datos mucho más alta.