Necesito un verdadero servicio web generador de números aleatorios [cerrado]

10

Random.org proporciona 200k bits aleatorios gratuitos (¡solo 6250 enteros de 32 bits!) Del mundo analógico ( cf. ) por IP por día.

¿Alguien sabe de un servicio web alternativo que proporcione más bits aleatorios a pedido por día?

(pagar está bien siempre que el precio esté "dentro de las expectativas" de 1000 × 1024bits por usd ciento) (el servicio pagado de random.org cobra 100 × este precio)

Pacerier
fuente
99
La pregunta más importante es "¿por qué" necesita un generador de números aleatorios "verdaderamente"?
Darknight
55
No existe un verdadero generador aleatorio en software puro. Puedes acercarte, al final del día, no será verdaderamente aleatorio.
Ramhound
10
¿Para qué lo necesitas? Si se trata de un juego o algo así, pseudoaleatorio suele ser lo suficientemente bueno. Si se trata de criptografía, no deberían usar un servicio web. Debe explicar para qué sirve antes de que podamos indicarle soluciones viables.
Michael Kohne
44
¡Aqui tienes! [webservice] public int GetRandomNumber() { return 4; // rfc 1149.5 }. Crédito: xkcd.com/221
Homde
3
Disculpe señor, ¿le gustaría comprar algunos enteros? Solo almacenamos los mejores números enteros de rango libre.
Rein Henrichs

Respuestas:

25

Quizás este.

http://qrng.physik.hu-berlin.de/

Desde el sitio:

Proporcionamos un nuevo generador de números aleatorios cuánticos (QRNG) basado en la aleatoriedad cuántica de los tiempos de llegada de fotones. Promete calidad estadística comprobable ya largo plazo, velocidad y asequibilidad. Nuestro diseño crea una nueva calidad en el sentido de que ofrece velocidades de bits sustancialmente más altas que las soluciones anteriores disponibles para el público. Esto ha sido posible al explotar la instrumentación de temporización de fotones más reciente y el procesamiento de datos de última generación en hardware.

Además de proporcionar alta velocidad (hasta 150 Mbits / s a ​​través de USB), el algoritmo de procesamiento posterior aplicado a los datos sin procesar se basa en predicciones sólidas de la teoría de la información que garantizan la conservación de la aleatoriedad. Esto permite el uso de los números aleatorios entregados en esquemas de encriptación incondicionalmente seguros.
[...]
Políticas de acceso
Ninguno de los datos servidos se entrega más de una vez, ni a un solo usuario ni a> usuarios independientes. El uso del servicio es gratuito, pero requiere registro.

ba__friend
fuente
1
(0.o)?! egad! Pensé que era una broma, pero no, realmente existe :) (+1) gran descubrimiento
Darknight
44
-1 por respuesta de baja calidad. Esta podría ser una excelente solución, pero no ha proporcionado detalles sobre el enlace / servicio, y no me interesa leer el enlace completo para obtener un resumen. Cuando una respuesta en P.SE requiere un enlace, proporcione un resumen de la solución a la que se está vinculando. Consideraré eliminar mi voto negativo si revisa su respuesta.
Craige
44
@NimChimpsky - ¿Por qué? Porque así es como se escribe una respuesta de calidad en P.SE. ba__friend debería haber publicado una breve descripción del servicio para quienes lean esta pregunta. Tal vez una explicación / cita rápida sobre cómo el servicio genera sus números aleatorios.
Craige
2
@Craige Actualicé la publicación con un extracto del sitio.
Adam Lear
55
@NimChimpsky: Porque ocurre linkrot.
Jon Purdy
31

Lo que está pidiendo es agua bendita, y está rechazando la sugerencia de que use agua normal. La única razón para preferir el agua bendita sobre el agua es religiosa. Existen PRNG simples, aleatoriamente sembrados, que no pueden distinguirse de la aleatoriedad física verdadera por ningún proceso conocido. Y estos sistemas no son deterministas.

Una computadora del mundo real tiene varias fuentes de aleatoriedad física verdadera. Por ejemplo, una CPU moderna x86 tiene un 'TSC' que mide el recuento del ciclo de instrucción (y, por lo tanto, indirectamente, el tiempo hasta una resolución de una billonésima de segundo más o menos).

Puede capturar el TSC cuando llega un paquete de red. Los bits bajos del TSC dependerán del desplazamiento preciso entre el oscilador de cristal que multiplica la interfaz de red y el oscilador de cristal que ejecuta la CPU. Esto depende de las variaciones de temperatura de la zona microscópica en los dos cristales de cuarzo que se cree que son verdaderamente aleatorios.

Del mismo modo, puede capturar el TSC cuando los datos llegan desde el disco duro. Los bits bajos dependen del cizallamiento del flujo de aire turbulento entre la superficie del disco duro y la carcasa. Esto también se cree que es verdaderamente aleatorio.

Algoritmos bien conocidos, como el que usa el kernel de Linux (desarrollado por Theodore Ts'o basado en el trabajo de M. Matsumoto e Y. Kurita) usan el efecto de avalancha para convertir algunos bits impredecibles en un número mucho mayor. Las únicas diferencias entre las salidas de estos algoritmos (suponiendo que estén correctamente sembradas por datos TSC) y la salida de la aleatoriedad física verdadera es religiosa: ningún método conocido puede distinguir estas salidas. No hay prueba de que uno pasará y el otro fallará.

He desarrollado generadores de números aleatorios para el uso del casino en línea que han logrado una certificación independiente. Estos métodos son los que se usan en el mundo real.

David Schwartz
fuente
66
¡+1 para el sentido común, los ejemplos interesantes y la bonita metáfora del agua bendita!
mikera
@David, hola, ¿te gustaría elaborar la historia "He desarrollado generadores de números aleatorios para el uso del casino en línea" ...?
Pacerier
No es tan interesante. Un casino en línea me contrató para desarrollar un RNG para ellos, lo hice, y fue certificado por TST, una firma de certificación australiana.
David Schwartz el
13

Todavía no entiendo por qué un PRNG criptográfico no es lo suficientemente bueno para su problema. Una propiedad definitoria de un crypto-PRNG es que no es posible (con cantidades razonables de hardware) distinguir su salida de un RNG verdadero.

Esto significa que es lo suficientemente bueno para cualquier tipo de simulación o aplicación que se me ocurra, aparte de generar claves criptográficas o inicializar la propia criptografía PRNG (obviamente necesita unos cientos de bits de entropía verdadera para comenzar).

Por otro lado, los RNG de servicio web tampoco pueden usarse para criptografía ya que

  1. No puede probar que en realidad son un PRNG verdadero ya que no puede distinguir su salida de un PRNG
  2. Debe confiar en el operador del servicio.
  3. Los datos aleatorios se le transmiten por un canal de seguridad inferior. Un atacante que puede romper un PRNG también puede romper SSL.

Por lo tanto, no puedo pensar en un solo uso donde uno preferiría un RNG de servicio web en lugar de un buen PRNG. Si realmente necesita números aleatorios reales y seguros, no veo otra alternativa que construir hardware usted mismo.

CodesInChaos
fuente
Sí, no puedo demostrar que la salida sea realmente aleatoria. pero no es tan difícil confiar en random.org/statistics . Parece asumir que la seguridad es uno de mis requisitos, pero no lo es. Necesito un número aleatorio completo. No es un número aleatorio y seguro. (Si un atacante quiere espiar, siéntete libre, no dolería)
Pacerier
1
No es difícil confiar en un PRNG para el que se ha demostrado matemáticamente que distinguirlo de un verdadero RNG requiere resolver problemas matemáticos muy difíciles.
CodesInChaos
@CodeInChaos es un casino en línea un problema matemático muy difícil? No lo es, pero requiere ese tipo de aleatoriedad verdadera, ¿no crees?
Pacerier
2
No veo razones técnicas por las cuales un buen PRNG ocasionalmente recibió cien bits de verdadera entropía no debería ser suficiente incluso para un casino en línea. Puede haber razones legales , pero supongo que en ese caso necesita generar su verdadera aleatoriedad localmente, ya que esto le brinda mejores posibilidades de demostrar que está usando números aleatorios verdaderos.
CodesInChaos
8
+1 Estoy totalmente de acuerdo contigo. Si está creando un juego que necesita generar datos aleatorios realistas, entonces es mejor con un PRNG que un generador de números verdaderamente aleatorio. En primer lugar, hay una prueba matemática de que produce datos estadísticamente aleatorios ajustados a una distribución de probabilidad. En segundo lugar, puede elegir esa distribución de probabilidad. En tercer lugar, puede probar su aplicación de manera determinista. En cuarto lugar, puede elegir la semilla al inicio para que nunca se comporte de la misma manera dos veces. Personalmente, creo que el OP en realidad no entiende lo que significa la aleatoriedad, o por qué lo necesita.
5

Hace varios años, se podía llamar al lavarand de SGI que generaba números aleatorios usando la forma de burbuja actual y la posición de una lámpara de lava que estaba siendo vista por una cámara web.

Aunque ya no existe, puede crear fácilmente su propio generador con una cámara web y el código fuente abierto de la gente de LavaRnd (EDITAR: inactivo desde hace un tiempo. Proyecto Wayback Machine Sourceforge ). Resulta que no necesitas la lámpara de lava: el ruido captado por el CCD mientras la cámara web está sellada en un contenedor a prueba de luz es una gran fuente para generar números aleatorios criptográficamente sonoros.

(Sé que este no es un servicio que puedes usar ahora, pero porque solía serlo, porque era genial y porque puedes crear uno casi gratis muy fácilmente, pensé que valía la pena ser una respuesta).

Matthew Frederick
fuente
pero seguramente con el tiempo el ruido "aleatorio" generado por la cámara web se ajustaría a una distribución normal. No sé, ¿me gustaría aclararlo?
Darknight
44
@Darknight: ¿Qué tiene que ver la distribución con la aleatoriedad? Es posible generar secuencias deterministas para que coincida con cualquier distribución, y es posible que los números aleatorios se ajusten a cualquier distribución.
David Thornley
2
@Darknight Como David señala, si los números finalmente se ajustan a una distribución normal no afecta la aleatoriedad. Si está interesado en lo que se necesita para hacer que un generador de números aleatorios suene criptográficamente (o cripto fuerte), los chicos de LavaRnd tienen una tonelada de información y enlaces "stat nerd" en su sitio, junto con cómo se relacionan con LavaRnd.
Matthew Frederick
En serio, no hay forma de crear uno fácilmente Matthew. ¿Cómo exactamente define fácil?
Pacerier
2
@Pacerier Tienes razón en que "fácil" es una cuestión de perspectiva. Este método es fácil si tiene acceso a su servidor y la búsqueda de una cámara web adecuada no lleva mucho tiempo: digamos, un "cómpralo ahora" de $ 10 en eBay. Eso deja adjuntando la cámara; descargar, compilar y ejecutar el software gratuito; y agregando una llamada al servicio en su código. No es trivial, pero es bastante fácil, extremadamente económico y proporciona un número ilimitado de solicitudes.
Matthew Frederick
1

Abra una conexión TCP a cualquier host / puerto y cuente la cantidad de nanosegundos que toma. Ahí está tu número aleatorio.

R .. GitHub DEJA DE AYUDAR AL HIELO
fuente
Espero que no sea así como estás generando números aleatorios.
Craige
99
El punto de mi respuesta (ligeramente sarcástica) es que la entropía en el tiempo que tardan en viajar los paquetes vale mucho más que un número "aleatorio" en cuya entropía confías a un servidor de terceros.
R .. GitHub DEJA DE AYUDAR A ICE
55
@Pacerier: Nadie inteligente escribe su propia criptografía, a menos que sean expertos. Eso es diferente de enviar su texto sin formato a un servicio web y recuperar el texto cifrado. Del mismo modo, probablemente no desee intentar diseñar su propio sistema de aleatoriedad cuántica, pero recibir números aleatorios que se le envían a través de HTTP no es confiable.
David Thornley
1
@Pacerier Pero todavía no ha demostrado por qué la alternativa de usar un PRNG local con inyección ocasional de entropía (de fuentes locales de entropía) no es posible.
CodesInChaos
1
@Pacerier: confía en mí en esto: no necesitas números aleatorios genuinos para simulaciones económicas. Un buen generador aleatorio de pseudo- (o cuasi, si te importa la distribución uniforme) será suficiente. Los problemas se encuentran en otra parte (por ejemplo: desea que los números no estén correlacionados en muchas dimensiones, ¿cómo sabe que el servicio web que usa incluso se molesta para verificar cómo sus números llenan un espacio de 20 dimensiones?).
quant_dev
1

Aquí hay otro generador basado en Quantum, con una API de descanso no menos:

http://photonics.anu.edu.au/qoptics/Research/qrng.php

Los investigadores de la ANU están generando verdaderos números aleatorios de una fuente cuántica física. Hacemos esto dividiendo un haz de luz en dos haces y luego midiendo la potencia en cada haz. Debido a que la luz está cuantizada, la intensidad de la luz en cada haz fluctúa alrededor de la media. Esas fluctuaciones, debido en última instancia al vacío cuántico, se pueden convertir en una fuente de números aleatorios.

NimChimpsky
fuente