2009-03-18 8 views
9

Estoy buscando soluciones asequibles que generen verdaderos números aleatorios.Generadores de números verdaderos (no pseudo) aleatorios. ¿Qué hay afuera?

He encontrado LavaRnd, que es un generador de números aleatorios criptográficamente sano. ¿Alguien tiene experiencia en este campo y/o conoce otras soluciones?

PD: En mi humilde opinión la cuestión de forma True random number generator en realidad no cubre este


EDITAR:

Mi curiosidad es más de carácter académico. I no quiero saber acerca de los PRNG que son lo suficientemente buenos para aplicaciones prácticas. Sé que existen y que lo harán.

Por supuesto, la generación de verdaderos números aleatorios requerirá dispositivos de hardware. Es por eso que etiqueté esto con hardware.

+0

¿Está interesado solo en generar estos números en su computadora o necesita que se generen en otra parte, como una computadora cliente? Creo que recuerdo algo acerca de generar números aleatorios basados ​​en píxeles en un mapa de bits. – WakeUpScreaming

+0

relacionado: ["RNG de ruido de avalancha para uso de almohadilla de un solo uso"] (http://crypto.stackexchange.com/questions/4005/avalanche-noise-rng-for-one-time-pad-use) en la criptografía Stack Exchange. –

+0

Puedes probar [una buena taza de té caliente] (http://www.bbc.co.uk/cult/hitchhikers/guide/tea.shtml). –

Respuesta

0

True números aleatorios en la informática no existe y nunca lo hará. Las computadoras son deterministas, en el sentido de que si repites la misma experiencia en el mismo entorno, se obtendrá el mismo resultado.

Lo que se obtiene con las computadoras son números pseudo-aleatorios, sobre todo dependiendo de las circunstancias actuales: fecha, hora, otras variables como la memoria utilizada, el tráfico de red en el momento, etc.

Por ejemplo, algunos de póquer en línea los sitios, para garantizar hasta cierto punto la aleatoriedad de sus manos repartidas, tuvieron que instalar hardware específico que toma el ruido ambiente y genera números aleatorios basados ​​en eso (no solo eso, sino que es un factor importante).

Por lo tanto, para tener números pseudoaleatorios que se aproximen a la aleatoriedad real, deberá tener en cuenta los factores externos.

+1

Su primera declaración está bajo un fuerte debate en la mecánica cuántica. –

+1

La aleatoriedad es algo que crees que existe porque no sabes cómo sucede. Tan pronto como descubras la mecánica detrás del escenario, deja de ser aleatorio. Hablando de predecir los días lluviosos, por ejemplo. No se pudo hacer hace 1000 años y parecía un evento aleatorio; ya no. – Seb

+0

@Seb: Afortunadamente, las computadoras pueden hacer E/S, lo que significa que tienen acceso a la aleatoriedad en el mundo exterior: consulte la respuesta de slim. –

6

No especificó un entorno.

De la documentación de/dev de Linux/aleatoria

El generador de números aleatorios recoge ruido ambiental desde el dispositivo conductores y otras fuentes en una fuente de entropía . El generador también mantiene una estimación del número de bits de del ruido en el grupo de entropía. Desde este grupo aleatorio de entropía tiene números creados.

Así que esta es una fuente aleatoria segura mediante cifrado, basado en la entrada impredecible de cosas tales como los tiempos arbitrarios de los paquetes Ethernet, entrada de teclado y ratón, etc.

También hay Yarrow servidor PRNG de Bruce Schneier. No es realmente aleatorio, pero se considera criptográficamente seguro.

... y también EGD, el Entropy Gathering Daemon. Escrito en Perl y, por lo tanto, portátil en muchas plataformas.

+0

Apostaría a que esto es esencialmente lo que hace ese programa LavaRnd que menciona el OP: no creo que LavaRnd agregue nada que no esté disponible en la mayoría de los sistemas operativos, excepto tal vez la portabilidad multiplataforma. – rmeador

+1

Lava en Lavand es una lámpara de Lava real, los números aleatorios se calculan a partir de imágenes tomadas con una cámara web. Lo último que supe de esto no era una característica en la mayoría de los sistemas operativos. – starblue

+2

No veo ninguna referencia a una lámpara Lava en el sitio web de LavaRnd. Dice que su fuente caótica es un CCD en una caja oscura. – slim

1

Hay un artículo en c't 2/2009 sobre números verdaderos y pseudoaleatorios.Aparte de LavaRnd también se discuten RandCam y PadLock de VIA.

5

Siempre he querido comprar el PCI or USB Quantum Random Number Generator, pero no tengo idea de lo que cuestan, y francamente ¡podría ser mucho! Sin embargo, entregan asombrosos 16 Mibit/sy 4 Mibit/s de números aleatorios, utilizables tanto en cajas * NIX como en Windows. ¡Eso es más de lo que alguna vez necesitaría!

Aparte de eso, ¿qué tal un libro lleno de ellos? ¡A Million Random Digits with 100,000 Normal Deviates es quizás el libro más genial que venden en Amazon! Todavía tengo que comprarlo, pero es solo cuestión de tiempo. ¡Debe ser muy útil tener tal stock de verdaderos números aleatorios en su estante de libros!

+0

Si necesita números aleatorios fijos y poco confiables, puede usar random.org. Son aleatorios en la medida en que son generados por fenómenos físicos aleatorios, pero no deben utilizarse con fines de seguridad. Perfecto para Monte Carlo, pero no apto para la seguridad. – nomen

+0

Parece que los precios son bastante altos, alrededor de £ 1,000 para el USB y £ 1.600 para el PCI más lento. Sin embargo, un buen uso es limpiar un disco duro con algo como 'cat/dev/random>/dev/hdb1'. (suponiendo que su controlador reemplaza el predeterminado '/ dev/random' y agrega sus datos aleatorios a él.) –

2

Completamente abordar el problema es un tema amplio.

Existen generadores de números aleatorios de hardware. Estos usan ruido térmico o incluso efectos cuánticos (en los modelos más rápidos) para generar números aleatorios de alta calidad.

Existen algunas sospechas de que la generación de números aleatorios de ruido térmico puede tener "sesgos". Es decir, que algunos números se generan con mayor frecuencia que otros, en el extremo a largo plazo. Los números generados son todavía verdaderamente aleatorios.

Para ver cómo podría ser esto, considere una moneda injusta que da cara el 60% del tiempo. Voltear la moneda sigue siendo un proceso aleatorio, es solo que deberíamos esperar que el 60% de ellos sean cabezas, en el largo plazo. Actuar fuera del proceso aleatorio codifica información, o "entropía", ya que cualquier resultado definitivo es solo uno de muchos resultados posibles. ¡Por otro lado, una secuencia de Heads and Tails generada con una moneda injusta contendrá menos información que la misma secuencia generada con una moneda justa!

El resultado es que para la seguridad comprobable de nivel paranoico, no desea utilizar números de generador de números aleatorios de hardware directamente. Desea alimentarlos en un grupo de entropía, que los números aleatorios (pero posiblemente sesgados) pueden agitar.

De hecho, la mayoría de los generadores de números aleatorios de hardware están diseñados para alimentar/dev/random, a través del kernel (o el equivalente de Windows), para tratar este problema de sesgo/entropía.

Por otro lado, cualquier generador de números aleatorios decente será lo suficientemente uniforme como para hacer simulaciones de Monte Carlo, rápido.

Cuestiones relacionadas