La generación de números aleatorios es un proceso que, a menudo por medio de un generador de números aleatorios ( RNG ), genera una secuencia de números o símbolos que no se pueden predecir razonablemente mejor que mediante una probabilidad aleatoria . Los generadores de números aleatorios pueden ser generadores de números aleatorios de hardware verdaderamente aleatorios (HRNGS), que generan números aleatorios en función del valor actual de algún atributo del entorno físico que cambia constantemente de una manera que es prácticamente imposible de modelar, o generadores de números pseudoaleatorios ( PRNGS), que generan números que parecen aleatorios, pero en realidad son deterministas, y pueden reproducirse si se conoce el estado del PRNG.
Varias aplicaciones de la aleatoriedad han llevado al desarrollo de varios métodos diferentes para generar datos aleatorios , algunos de los cuales han existido desde la antigüedad, entre cuyas filas se encuentran ejemplos "clásicos" bien conocidos, como el lanzamiento de dados , el lanzamiento de monedas , el barajado de jugar a las cartas , el uso de tallos de milenrama (para la adivinación ) en el I Ching , así como innumerables otras técnicas. Debido a la naturaleza mecánica de estas técnicas, generar grandes cantidades de números suficientemente aleatorios (importantes en estadística) requirió mucho trabajo y tiempo. Por lo tanto, los resultados a veces se recopilarían y distribuirían como tablas de números aleatorios .
Existen varios métodos computacionales para la generación de números pseudoaleatorios. Todos no alcanzan el objetivo de la verdadera aleatoriedad, aunque pueden cumplir, con éxito variable, algunas de las pruebas estadísticas de aleatoriedad destinadas a medir cuán impredecibles son sus resultados (es decir, hasta qué punto sus patrones son discernibles). Por lo general, esto los hace inutilizables para aplicaciones como la criptografía . Sin embargo, también existen generadores de números pseudoaleatorios criptográficamente seguros (CSPRNGS) cuidadosamente diseñados , con características especiales diseñadas específicamente para su uso en criptografía.
Aplicaciones y usos prácticos
Los generadores de números aleatorios tienen aplicaciones en juegos de azar , muestreo estadístico , simulación por computadora , criptografía , diseño completamente aleatorio y otras áreas donde es deseable producir un resultado impredecible. Generalmente, en aplicaciones que tienen la imprevisibilidad como característica primordial, como en las aplicaciones de seguridad, los generadores de hardware se prefieren generalmente a los algoritmos pseudoaleatorios, cuando es factible.
Los generadores de números pseudoaleatorios son muy útiles en el desarrollo de simulaciones del método Monte Carlo , ya que la depuración se ve facilitada por la capacidad de ejecutar la misma secuencia de números aleatorios nuevamente partiendo de la misma semilla aleatoria . También se utilizan en criptografía, siempre que la semilla sea secreta. El remitente y el receptor pueden generar el mismo conjunto de números automáticamente para usarlos como claves.
La generación de números pseudoaleatorios es una tarea importante y común en la programación de computadoras. Si bien la criptografía y ciertos algoritmos numéricos requieren un grado muy alto de aleatoriedad aparente , muchas otras operaciones solo necesitan una cantidad modesta de imprevisibilidad. Algunos ejemplos simples podrían ser presentar a un usuario una "cita aleatoria del día" o determinar en qué dirección podría moverse un adversario controlado por computadora en un juego de computadora. Se utilizan formas más débiles de aleatoriedad en algoritmos hash y en la creación de algoritmos de búsqueda y clasificación amortizados .
Algunas aplicaciones que a primera vista parecen adecuadas para la aleatorización , de hecho, no son tan sencillas. Por ejemplo, un sistema que selecciona "aleatoriamente" pistas de música para un sistema de música de fondo solo debe aparecer al azar, e incluso puede tener formas de controlar la selección de música: un verdadero sistema aleatorio no tendría restricciones para que el mismo elemento aparezca dos o tres veces en sucesión.
Números "verdaderos" frente a números pseudoaleatorios
Hay dos métodos principales que se utilizan para generar números aleatorios. El primer método mide algún fenómeno físico que se espera que sea aleatorio y luego compensa los posibles sesgos en el proceso de medición. Las fuentes de ejemplo incluyen la medición de ruido atmosférico , ruido térmico y otros fenómenos electromagnéticos y cuánticos externos. Por ejemplo, la radiación de fondo cósmica o la desintegración radiactiva medida en escalas de tiempo cortas representan fuentes de entropía natural .
La velocidad a la que se puede obtener la entropía de fuentes naturales depende de los fenómenos físicos subyacentes que se midan. Por lo tanto, se dice que las fuentes de entropía "verdadera" de origen natural están bloqueando : tienen una velocidad limitada hasta que se recolecta suficiente entropía para satisfacer la demanda. En algunos sistemas similares a Unix, incluidas la mayoría de las distribuciones de Linux , el archivo de pseudodispositivo / dev / random se bloqueará hasta que se obtenga suficiente entropía del entorno. [1] Debido a este comportamiento de bloqueo, grandes cantidades de lecturas de / dev / random , como llenar una unidad de disco duro con bits aleatorios, a menudo puede ser lento en sistemas que utilizan este tipo de fuente de entropía.
El segundo método utiliza algoritmos computacionales que pueden producir largas secuencias de resultados aparentemente aleatorios, que de hecho están completamente determinados por un valor inicial más corto, conocido como valor semilla o clave . Como resultado, se puede reproducir toda la secuencia aparentemente aleatoria si se conoce el valor de la semilla. Este tipo de generador de números aleatorios a menudo se denomina generador de números pseudoaleatorios . Este tipo de generador normalmente no depende de fuentes de entropía natural, aunque puede ser sembrado periódicamente por fuentes naturales. Este tipo de generador no es bloqueante, por lo que no está limitado por un evento externo, lo que hace que sea posible realizar lecturas masivas de gran tamaño.
Algunos sistemas adoptan un enfoque híbrido, proporcionando aleatoriedad extraída de fuentes naturales cuando está disponible, y recurriendo a generadores de números pseudoaleatorios (CSPRNG) basados en software, criptográficamente seguros , que se vuelven a sembrar periódicamente . El retroceso ocurre cuando la velocidad de lectura deseada de aleatoriedad excede la capacidad del enfoque de recolección natural para mantenerse al día con la demanda. Este enfoque evita el comportamiento de bloqueo de velocidad limitada de los generadores de números aleatorios basados en métodos más lentos y puramente ambientales.
Si bien un generador de números pseudoaleatorios basado únicamente en la lógica determinista nunca puede considerarse como una fuente de números aleatorios "verdadera" en el sentido más puro de la palabra, en la práctica generalmente son suficientes incluso para aplicaciones críticas de seguridad exigentes. De hecho, los generadores de números pseudoaleatorios cuidadosamente diseñados e implementados pueden certificarse para fines criptográficos críticos para la seguridad, como es el caso del algoritmo milenrama y fortuna . El primero es la base del / dev / fuente aleatoria de entropía en FreeBSD , AIX , OS X , NetBSD y otros. OpenBSD usa un algoritmo de números pseudoaleatorios conocido como arc4random . [2]
En octubre de 2019, se observó que la introducción de generadores cuánticos de números aleatorios (QRNG) en los modelos de aprendizaje automático, incluidas las redes neuronales y las redes neuronales convolucionales para la distribución de peso inicial aleatoria y los bosques aleatorios para los procesos de división, tuvo un efecto profundo en su capacidad en comparación con el método clásico de los generadores de números pseudoaleatorios (PRNG). [3]
Métodos de generación
Métodos físicos
Los primeros métodos para generar números aleatorios, como los dados, el lanzamiento de monedas y las ruedas de la ruleta, todavía se utilizan hoy en día, principalmente en juegos y apuestas, ya que tienden a ser demasiado lentos para la mayoría de las aplicaciones en estadística y criptografía.
Un generador físico de números aleatorios puede basarse en un fenómeno físico atómico o subatómico esencialmente aleatorio cuya imprevisibilidad se remonta a las leyes de la mecánica cuántica . Las fuentes de entropía incluyen la desintegración radiactiva , el ruido térmico , el ruido de disparo , el ruido de avalancha en los diodos Zener , la desviación del reloj , la sincronización de los movimientos reales de un cabezal de lectura y escritura del disco duro y el ruido de radio . Sin embargo, los fenómenos físicos y las herramientas que se utilizan para medirlos generalmente presentan asimetrías y sesgos sistemáticos que hacen que sus resultados no sean uniformemente aleatorios. Se puede utilizar un extractor de aleatoriedad , como una función hash criptográfica , para abordar una distribución uniforme de bits de una fuente aleatoria no uniforme, aunque a una tasa de bits más baja.
La aparición de fuentes de entropía fotónica de banda ancha, como el caos óptico y el ruido de emisión espontánea amplificada , ayuda enormemente al desarrollo del generador físico de números aleatorios. Entre ellos, el caos óptico [4] [5] tiene un alto potencial para producir físicamente números aleatorios de alta velocidad debido a su gran ancho de banda y gran amplitud. En 2013 se construyó un prototipo de generador físico de bits aleatorios en tiempo real y alta velocidad basado en un láser caótico. [6]
Se han ideado varias formas imaginativas de recopilar esta información entrópica. Una técnica consiste en ejecutar una función hash en un fotograma de una secuencia de vídeo de una fuente impredecible. Lavarand utilizó esta técnica con imágenes de varias lámparas de lava . HotBits mide la desintegración radiactiva con tubos Geiger-Muller , [7] mientras que Random.org utiliza variaciones en la amplitud del ruido atmosférico registrado con una radio normal.
Otra fuente de entropía común es el comportamiento de los usuarios humanos del sistema. Si bien las personas no se consideran buenos generadores de aleatoriedad a pedido, generan un comportamiento aleatorio bastante bien en el contexto de los juegos de estrategia mixta . [8] Algunos programas informáticos relacionados con la seguridad requieren que el usuario realice una larga serie de movimientos del mouse o entradas del teclado para crear la entropía suficiente necesaria para generar claves aleatorias o para inicializar generadores de números pseudoaleatorios. [9]
Métodos computacionales
La mayoría de los números aleatorios generados por computadora usan PRNG, que son algoritmos que pueden crear automáticamente series largas de números con buenas propiedades aleatorias, pero finalmente la secuencia se repite (o el uso de la memoria crece sin límite). Estos números aleatorios están bien en muchas situaciones, pero no son tan aleatorios como los números generados a partir del ruido atmosférico electromagnético utilizado como fuente de entropía. [10] La serie de valores generados por tales algoritmos generalmente está determinada por un número fijo llamado semilla. Uno de los PRNG más comunes es el generador congruencial lineal , que utiliza la recurrencia
para generar números, donde un , b y m son números enteros grandes, yes el siguiente en X como una serie de números pseudoaleatorios. El número máximo de números que puede producir la fórmula es uno menos que el módulo , m -1. La relación de recurrencia se puede extender a matrices para tener períodos mucho más largos y mejores propiedades estadísticas. [11] Para evitar ciertas propiedades no aleatorias de un único generador congruencial lineal, varios de estos generadores de números aleatorios con valores ligeramente diferentes del coeficiente multiplicador, a , se pueden usar en paralelo, con un generador de números aleatorios "maestro" que selecciona de entre los diferentes generadores. [ cita requerida ]
Un método simple de lápiz y papel para generar números aleatorios es el llamado método del cuadrado medio sugerido por John von Neumann . Si bien es fácil de implementar, su producción es de mala calidad. Tiene un período muy corto y deficiencias graves, como que la secuencia de salida casi siempre converge a cero. Una innovación reciente es combinar el cuadrado del medio con una secuencia de Weyl . Este método produce resultados de alta calidad durante un período prolongado. Consulte la secuencia PRNG de Weyl del cuadrado medio .
La mayoría de los lenguajes de programación de computadoras incluyen funciones o rutinas de biblioteca que proporcionan generadores de números aleatorios. A menudo están diseñados para proporcionar un byte o una palabra aleatorios, o un número de coma flotante distribuido uniformemente entre 0 y 1.
La calidad, es decir, la aleatoriedad de tales funciones de biblioteca varía ampliamente desde una salida completamente predecible hasta criptográficamente segura. El generador de números aleatorios predeterminado en muchos idiomas, incluidos Python, Ruby, R, IDL y PHP, se basa en el algoritmo Mersenne Twister y no es suficiente para fines de criptografía, como se indica explícitamente en la documentación del idioma. Estas funciones de biblioteca a menudo tienen propiedades estadísticas deficientes y algunas repetirán patrones después de solo decenas de miles de intentos. A menudo se inicializan utilizando el reloj de tiempo real de una computadora como semilla, ya que dicho reloj generalmente mide en milisegundos, mucho más allá de la precisión de la persona . Estas funciones pueden proporcionar suficiente aleatoriedad para determinadas tareas (por ejemplo, videojuegos) pero no son adecuadas cuando se requiere aleatoriedad de alta calidad, como en aplicaciones de criptografía, estadísticas o análisis numérico. [ cita requerida ]
Las fuentes de números aleatorios de mucha mayor calidad están disponibles en la mayoría de los sistemas operativos; por ejemplo / dev / random en varios tipos de BSD, Linux, Mac OS X, IRIX y Solaris, o CryptGenRandom para Microsoft Windows. La mayoría de los lenguajes de programación, incluidos los mencionados anteriormente, proporcionan un medio para acceder a estas fuentes de mayor calidad.
Generación a partir de una distribución de probabilidad
Hay un par de métodos para generar un número aleatorio basado en una función de densidad de probabilidad . Estos métodos implican transformar un número aleatorio uniforme de alguna manera. Debido a esto, estos métodos funcionan igualmente bien para generar números pseudoaleatorios y verdaderos aleatorios. Un método, llamado método de inversión , implica integrar hasta un área mayor o igual que el número aleatorio (que debe generarse entre 0 y 1 para distribuciones adecuadas). Un segundo método, llamado método de aceptación-rechazo , implica elegir un valor de xey y probar si la función de x es mayor que el valor de y. Si es así, se acepta el valor x. De lo contrario, el valor de x se rechaza y el algoritmo vuelve a intentarlo. [12] [13]
Por humanos
La generación de números aleatorios también puede ser realizada por humanos, en forma de recopilación de diversas entradas de los usuarios finales y utilizándolas como fuente de aleatorización. Sin embargo, la mayoría de los estudios encuentran que los sujetos humanos tienen cierto grado de no aleatoriedad cuando intentan producir una secuencia aleatoria de, por ejemplo, dígitos o letras. Pueden alternar demasiado entre opciones en comparación con un buen generador aleatorio; [14] por lo tanto, este enfoque no se utiliza ampliamente.
Comprobaciones estadísticas y de posprocesamiento
Incluso dada una fuente de números aleatorios plausibles (tal vez de un generador de hardware basado en la mecánica cuántica), se necesita obtener números que sean completamente insesgados. Además, el comportamiento de estos generadores a menudo cambia con la temperatura, el voltaje de la fuente de alimentación, la antigüedad del dispositivo u otras interferencias externas. Y un error de software en una rutina de números pseudoaleatorios, o un error de hardware en el hardware en el que se ejecuta, puede ser igualmente difícil de detectar.
Los números aleatorios generados a veces se someten a pruebas estadísticas antes de su uso para garantizar que la fuente subyacente todavía esté funcionando y luego se procesan posteriormente para mejorar sus propiedades estadísticas. Un ejemplo sería el generador de números aleatorios de hardware TRNG9803 [15] , que utiliza una medición de entropía como prueba de hardware y luego postprocesa la secuencia aleatoria con un cifrado de flujo de registro de desplazamiento. Generalmente, es difícil utilizar pruebas estadísticas para validar los números aleatorios generados. Wang y Nicol [16] propusieron una técnica de prueba estadística basada en la distancia que se utiliza para identificar las debilidades de varios generadores aleatorios. Li y Wang [17] propusieron un método para probar números aleatorios basado en fuentes de entropía caótica láser utilizando propiedades de movimiento browniano.
Otras Consideraciones
Los números aleatorios distribuidos uniformemente entre 0 y 1 se pueden utilizar para generar números aleatorios de cualquier distribución deseada pasándolos a través de la función de distribución acumulativa inversa (CDF) de la distribución deseada (consulte Muestreo por transformada inversa ). Las CDF inversas también se denominan funciones cuantílicas . Para generar un par de números aleatorios estándar distribuidos normalmente estadísticamente independientes ( x , y ), primero se pueden generar las coordenadas polares ( r , θ ), donde r 2 ~ χ 2 2 y θ ~ UNIFORM (0,2π) (ver Cuadro –Transformada de Müller ).
Algunos RNG de 0 a 1 incluyen 0 pero excluyen 1, mientras que otros incluyen o excluyen a ambos.
Las salidas de múltiples RNG independientes se pueden combinar (por ejemplo, usando una operación XOR bit a bit ) para proporcionar un RNG combinado al menos tan bueno como el mejor RNG utilizado. Esto se conoce como blanqueamiento por software .
Los generadores de números aleatorios computacionales y de hardware a veces se combinan para reflejar los beneficios de ambos tipos. Los generadores computacionales de números aleatorios generalmente pueden generar números pseudoaleatorios mucho más rápido que los generadores físicos, mientras que los generadores físicos pueden generar "verdadera aleatoriedad".
Secuencias de baja discrepancia como alternativa
Algunos cálculos que utilizan un generador de números aleatorios se pueden resumir como el cálculo de un valor total o promedio, como el cálculo de integrales por el método de Monte Carlo . Para tales problemas, puede ser posible encontrar una solución más precisa mediante el uso de las llamadas secuencias de discrepancia baja , también llamadas números cuasialeatorios . Tales secuencias tienen un patrón definido que llena los vacíos de manera uniforme, cualitativamente hablando; una secuencia verdaderamente aleatoria puede dejar espacios más grandes, y por lo general lo hace.
Actividades y demostraciones
Los siguientes sitios ponen a disposición muestras de números aleatorios:
- Las páginas de recursos de SOCR contienen una serie de actividades interactivas prácticas y demostraciones de generación de números aleatorios utilizando subprogramas de Java.
- El Grupo de Óptica Cuántica de la ANU genera números aleatorios procedentes del vacío cuántico. Muestras de números aleatorios están disponibles en su página de investigación del generador de números aleatorios cuánticos.
- Random.org pone a disposición números aleatorios que se obtienen de la aleatoriedad del ruido atmosférico.
- El servicio Quantum Random Bit Generator del Instituto Ruđer Bošković extrae la aleatoriedad del proceso cuántico de emisión fotónica en semiconductores. Proporcionan una variedad de formas de obtener los datos, incluidas bibliotecas para varios lenguajes de programación.
- El grupo de la Universidad de Tecnología de Taiyuan genera números aleatorios procedentes de un láser caótico. Las muestras de números aleatorios están disponibles en su Servicio de generador de números aleatorios físicos.
Puertas traseras
Dado que gran parte de la criptografía depende de un generador de números aleatorios criptográficamente seguro para la generación de claves y nonce criptográficos , si un generador de números aleatorios puede hacerse predecible, un atacante puede utilizarlo como puerta trasera para romper el cifrado.
Se informa que la NSA ha insertado una puerta trasera en el generador de números pseudoaleatorios criptográficamente seguro certificado por NIST Dual EC DRBG . Si, por ejemplo, se crea una conexión SSL utilizando este generador de números aleatorios, según Matthew Green , permitiría a la NSA determinar el estado del generador de números aleatorios y, por lo tanto, eventualmente podría leer todos los datos enviados a través de la conexión SSL. [18] Aunque era evidente que Dual_EC_DRBG era un generador de números pseudoaleatorios muy deficiente y posiblemente con puerta trasera mucho antes de que se confirmara la puerta trasera de la NSA en 2013, había tenido un uso significativo en la práctica hasta 2013, por ejemplo, por parte de la destacada empresa de seguridad RSA Security . [19] Posteriormente ha habido acusaciones de que RSA Security insertó a sabiendas una puerta trasera de la NSA en sus productos, posiblemente como parte del programa Bullrun . RSA ha negado haber insertado a sabiendas una puerta trasera en sus productos. [20]
También se ha teorizado que los RNG de hardware podrían modificarse en secreto para tener menos entropía de la indicada, lo que haría que el cifrado que utiliza el RNG de hardware sea susceptible de ataque. Uno de esos métodos que se ha publicado funciona modificando la máscara dopante del chip, que sería indetectable para la ingeniería óptica inversa. [21] Por ejemplo, para la generación de números aleatorios en Linux, se considera inaceptable utilizar el RNG de hardware RDRAND de Intel sin mezclar la salida RDRAND con otras fuentes de entropía para contrarrestar las puertas traseras en el RNG de hardware, especialmente después de la revelación del Programa NSA Bullrun. [22] [23]
En 2010, el director de seguridad de la información de la Asociación de Loterías Multiestatales (MUSL) manipuló un sorteo de lotería de EE. UU., Quien instaló subrepticiamente malware de puerta trasera en la computadora segura RNG de MUSL durante el mantenimiento de rutina. [24] Durante los trucos, el hombre ganó una cantidad total de $ 16,500,000 al predecir los números correctamente unas cuantas veces al año.
La aleatorización del diseño del espacio de direcciones (ASLR), una mitigación contra el martillo de hilera y los ataques relacionados en el hardware físico de los chips de memoria, resultó ser inadecuada a principios de 2017 por VUSec. El algoritmo de números aleatorios, si se basa en un registro de desplazamiento implementado en el hardware, es predecible a valores suficientemente grandes de p y se puede realizar ingeniería inversa con suficiente potencia de procesamiento ( Brute Force Hack ). Esto también significa indirectamente que el malware que usa este método puede ejecutarse tanto en GPU como en CPU si está codificado para hacerlo, incluso usando GPU para romper ASLR en la propia CPU. [25]
Ver también
- Flipismo
- Lista de generadores de números aleatorios
- PP (complejidad)
- Generación procedimental
- Algoritmo aleatorizado
- Generador de contraseñas aleatorias
- Variable aleatoria , contiene un valor dependiente de la probabilidad
Referencias
- ^ - Manual del programador de Linux - Archivos especiales
- ^ - Manual de funciones de la biblioteca OpenBSD
- ↑ Bird, Jordan J .; Ekárt, Anikó; Faria, Diego R. (28 de octubre de 2019). "Sobre los efectos de los generadores de números pseudoaleatorios y cuánticos aleatorios en la computación blanda" . Computación blanda . Springer Science and Business Media LLC. 24 (12): 9243–9256. doi : 10.1007 / s00500-019-04450-0 . ISSN 1432-7643 .
- ^ Li, Pu; Wang, Yun-Cai; Zhang, Jian-Zhong (13 de septiembre de 2010). "Generador de números aleatorios rápido totalmente óptico" . Optics Express . 18 (19): 20360–20369. Código Bib : 2010OExpr..1820360L . doi : 10.1364 / OE.18.020360 . ISSN 1094-4087 . PMID 20940928 .
- ^ Li, Pu; Sun, Yuanyuan; Liu, Xianglian; Yi, Xiaogang; Zhang, Jianguo; Guo, Xiaomin; Guo, Yanqiang; Wang, Yuncai (15 de julio de 2016). "Generador de bits aleatorios físicos totalmente basado en fotónica". Letras de óptica . 41 (14): 3347–3350. Código Bib : 2016OptL ... 41.3347L . doi : 10.1364 / OL.41.003347 . ISSN 1539-4794 . PMID 27420532 .
- ^ Wang, Anbang; Li, Pu; Zhang, Jianguo; Zhang, Jianzhong; Li, Lei; Wang, Yuncai (26 de agosto de 2013). "Generador de bits aleatorios físicos en tiempo real de alta velocidad de 4,5 Gbps" (PDF) . Optics Express . 21 (17): 20452–20462. Código Bibliográfico : 2013OExpr..2120452W . doi : 10.1364 / OE.21.020452 . ISSN 1094-4087 . PMID 24105589 . S2CID 10397141 . Archivado desde el original (PDF) el 24 de octubre de 2020.
- ^ Walker, John. "HotBits: números aleatorios genuinos" . Consultado el 27 de junio de 2009 .
- ^ Halprin, Ran; Naor, Moni . "Juegos para extraer aleatoriedad" (PDF) . Departamento de Ciencias de la Computación y Matemática Aplicada, Instituto de Ciencias Weizmann . Consultado el 27 de junio de 2009 . Cite journal requiere
|journal=
( ayuda ) - ^ Fundación TrueCrypt. "Tutorial para principiantes de TrueCrypt, parte 3" . Consultado el 27 de junio de 2009 .
- ^ "RANDOM.ORG - Servicio de números aleatorios verdaderos" . www.random.org . Consultado el 14 de enero de 2016 .
- ^ "Generadores de números pseudo aleatorios de alta dimensionalidad" . Consultado el 21 de noviembre de 2018 .
- ^ El MathWorks. "Métodos comunes de generación" . Consultado el 13 de octubre de 2011 .
- ^ El grupo de algoritmos numéricos. "G05 - Generadores de números aleatorios" (PDF) . Manual de la biblioteca NAG, Mark 23 . Consultado el 9 de febrero de 2012 .
- ^ WA Wagenaar (1972). "Generación de secuencias aleatorias por sujetos humanos: un estudio crítico de la literatura". Boletín psicológico . 77 (1): 65–72. CiteSeerX 10.1.1.211.9085 . doi : 10.1037 / h0032060 .
- ^ Dömstedt, B. (2009). "TRNG9803 generador de números aleatorios verdaderos" . Fabricante: www.TRNG98.se.
- ^ Wang, Yongge (2014). "Propiedades estadísticas de secuencias pseudoaleatorias y experimentos con PHP y Debian OpenSSL". Seguridad informática - ESORICS 2014 . Apuntes de conferencias en informática. 8712 . Heidelberg: Springer LNCS. págs. 454–471. doi : 10.1007 / 978-3-319-11203-9_26 . ISBN 978-3-319-11202-2.
- ^ Li, Pu; Yi, Xiaogang; Liu, Xianglian; Wang, Yuncai; Wang, Yongge (11 de julio de 2016). "Propiedades de movimiento browniano de generadores de bits aleatorios optoelectrónicos basados en el caos láser" . Optics Express . 24 (14): 15822-15833. Código Bib : 2016OExpr..2415822L . doi : 10.1364 / OE.24.015822 . ISSN 1094-4087 . PMID 27410852 .
- ^ matthew Green (18 de septiembre de 2013). "Los muchos defectos de Dual_EC_DRBG" .
- ^ Matthew Green (20 de septiembre de 2013). "RSA advierte a los desarrolladores que no utilicen productos RSA" .
- ^ "No habilitamos puertas traseras en nuestros productos criptográficos, RSA les dice a los clientes" . Ars Technica . 2013-09-20.
- ^ "Los investigadores pueden introducir un troyano indetectable en las CPU Ivy Bridge de Intel" . Ars Technica . 2013-09-18.
- ^ Theodore Ts'o. "Estoy muy contento de haber resistido la presión de los ingenieros de Intel para permitir que / dev / random solo confíe en la instrucción RDRAND" . Google Mas.
- ^ Theodore Ts'o. "Re: [PATCH] / dev / random: Insuficiente entropía en muchas arquitecturas" . LWN.
- ^ Nestel, ML (7 de julio de 2015). "Dentro de la estafa de lotería más grande jamás" . La bestia diaria . Consultado el 10 de julio de 2015 .
- ^ "AnC - VUSec" . Consultado el 13 de julio de 2018 .
Otras lecturas
- Donald Knuth (1997). "Capítulo 3 - Números aleatorios". El arte de la programación informática . Vol. 2: Algoritmos seminuméricos (3 ed.).
|volume=
tiene texto extra ( ayuda ) - L'Ecuyer, Pierre (2017). "Historia de la generación de números aleatorios uniformes" (PDF) . Actas de la Conferencia de simulación de invierno de 2017 . Prensa IEEE. págs. 202–230.
- L'Ecuyer, Pierre (2012). "Generación de números aleatorios" (PDF) . En JE Gentle; W. Haerdle; Y. Mori (eds.). Manual de estadística computacional: conceptos y métodos . Manual de estadística computacional (segunda ed.). Springer-Verlag. págs. 35–71. doi : 10.1007 / 978-3-642-21551-3_3 . hdl : 10419/22195 . ISBN 978-3-642-21550-6.
- Kroese, DP ; Taimre, T .; Botev, ZI (2011). "Capítulo 1 - Generación de números aleatorios uniformes" . Manual de métodos de Monte Carlo . Nueva York: John Wiley & Sons. pag. 772. ISBN 978-0-470-17793-8.
- Presione, WH; Teukolsky, SA; Vetterling, WT; Flannery, BP (2007). "Capítulo 7. Números aleatorios" . Recetas numéricas: el arte de la informática científica (3ª ed.). Nueva York: Cambridge University Press. ISBN 978-0-521-88068-8.
- Serie NIST SP800-90A, B, C sobre generación de números aleatorios
- M. Tomassini, M. Sipper y M. Perrenoud (octubre de 2000). "Sobre la generación de números aleatorios de alta calidad por autómatas celulares bidimensionales". Transacciones IEEE en computadoras . 49 (10): 1146-1151. doi : 10.1109 / 12.888056 .Mantenimiento de CS1: utiliza el parámetro de autores ( enlace )
enlaces externos
- RANDOM.ORG Servicio de números aleatorios verdaderos
- Aleatorio y pseudoaleatorio en In Our Time en la BBC
- jRand un marco basado en Java para la generación de secuencias de simulación, incluidas secuencias pseudoaleatorias de números
- Generadores de números aleatorios en la biblioteca NAG Fortran
- Baliza de aleatoriedad en NIST , que transmite cadenas de bits de entropía completa en bloques de 512 bits cada 60 segundos. Diseñado para proporcionar imprevisibilidad, autonomía y coherencia.
- Una llamada al sistema para números aleatorios: getrandom () , un artículo de LWN.net que describe una llamada al sistema Linux dedicada
- Propiedades estadísticas de secuencias pseudoaleatorias y experimentos con PHP y Debian OpenSSL
- Generador de números de lotería pseudoaleatorios criptográficos ISAAC
- Generador de secuencia aleatoria basado en ruido de avalancha