J'ai besoin d'un véritable service Web de générateur de nombres aléatoires [fermé]

10

Random.org fournit 200k bits aléatoires gratuits (seulement 6250 entiers 32 bits!) Du monde analogique ( cf. ) par IP par jour.

Quelqu'un connaît-il un service Web alternatif qui fournit plus de bits aléatoires à la demande par jour?

(le paiement est OK tant que le prix est "dans les limites des attentes" de 1000 × 1024 bits par cent USD) (les frais de service payés par random.org sont 100 × ce prix)

Pacerier
la source
9
La plus grande question est "pourquoi" avez-vous besoin d'un "vrai" générateur de nombres aléatoires?
Darknight
5
Il n'existe pas de véritable générateur aléatoire dans le logiciel pur. Vous pouvez vous approcher, à la fin de la journée, ce ne sera pas vraiment aléatoire.
Ramhound
10
Pourquoi en avez-vous besoin? Si c'est un jeu ou quelque chose, le pseudo-aléatoire est normalement suffisant. S'il s'agit de cryptographie, vous ne devriez pas utiliser de service Web. Vous devez expliquer à quoi cela sert avant que nous puissions vous indiquer des solutions viables.
Michael Kohne
4
Voilà! [webservice] public int GetRandomNumber() { return 4; // rfc 1149.5 }. Crédit: xkcd.com/221
Homde
3
Excusez-moi monsieur, voulez-vous acheter des entiers? Nous ne stockons que les meilleurs entiers artificiels en libre parcours.
Rein Henrichs

Réponses:

25

Peut-être celui-ci.

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

Depuis le site:

Nous fournissons un nouveau générateur de nombres aléatoires quantiques (QRNG) basé sur le caractère aléatoire quantique des temps d'arrivée des photons. Il promet une qualité statistique prouvable et à long terme, une rapidité et un prix abordable. Notre conception crée une nouvelle qualité dans le sens où elle offre des débits sensiblement plus élevés que les solutions précédentes disponibles au public. Cela est devenu possible en exploitant l'instrumentation de synchronisation des photons la plus récente et le traitement de données de pointe dans le matériel.

En plus de fournir une vitesse élevée (jusqu'à 150 Mbits / s sur USB), l'algorithme de post-traitement appliqué aux données brutes est basé sur des prédictions solides de la théorie de l'information qui garantissent la conservation de l'aléatoire. Cela permet l'utilisation des nombres aléatoires fournis dans des schémas de chiffrement sécurisés sans condition.
[...]
Politiques d'accès
Aucune des données servies n'est livrée plus d'une fois, ni à un seul utilisateur ni à travers> des utilisateurs indépendants. L'utilisation du service est gratuite, mais nécessite une inscription.

ba__friend
la source
1
(0.o)?! egad! Je pensais que c'était une blague, mais non, elle existe vraiment :) (+1) super trouvaille
Darknight
4
-1 pour une réponse de mauvaise qualité. Cela pourrait très bien être une excellente solution, mais vous n'avez fourni aucun détail sur le lien / service, et je me fiche de lire l'intégralité du lien pour un résumé. Lorsqu'une réponse sur P.SE nécessite un lien, veuillez fournir un résumé de la solution vers laquelle vous créez un lien. J'envisagerai de supprimer mon downvote si vous révisez votre réponse.
Craige
4
@NimChimpsky - Pourquoi? Parce que c'est ainsi que vous écrivez une réponse de qualité sur P.SE. ba__friend aurait dû publier une brève description du service pour ceux qui liraient cette question. Peut-être une explication / citation rapide sur la façon dont le service génère ses nombres aléatoires.
Craige
2
@Craige J'ai mis à jour le message avec un extrait du site.
Adam Lear
5
@NimChimpsky: Parce que Linkrot se produit.
Jon Purdy
31

Ce que vous demandez, c'est de l'eau bénite, et vous rejetez la suggestion d'utiliser de l'eau ordinaire. La seule raison de préférer l'eau bénite à l'eau est d'ordre religieux. Il existe des PRNG simples et semés aléatoirement qui ne peuvent être distingués du véritable aléa physique par aucun processus connu. Et ces systèmes ne sont pas déterministes.

Un ordinateur du monde réel a plusieurs sources de véritable aléa physique. Par exemple, un processeur x86 moderne a un «TSC» qui mesure le nombre de cycles d'instructions (et donc, indirectement, le temps jusqu'à une résolution d'un milliardième de seconde environ).

Vous pouvez capturer le TSC lorsqu'un paquet réseau arrive. Les bits bas du TSC dépendront du décalage précis entre l'oscillateur à cristal qui synchronise l'interface réseau et l'oscillateur à cristal qui exécute le CPU. Cela dépend des variations de température de la zone microscopique dans les deux cristaux de quartz qui sont vraisemblablement aléatoires.

De même, vous pouvez capturer le TSC lorsque des données arrivent du disque dur. Les bits bas dépendent du cisaillement du flux d'air turbulent entre la surface du disque dur et le boîtier. On pense également que cela est vraiment aléatoire.

Des algorithmes bien connus, tels que celui utilisé par le noyau Linux (développé par Theodore Ts'o sur la base des travaux de M. Matsumoto et Y. Kurita) utilisent l'effet d'avalanche pour convertir quelques bits imprévisibles en un nombre beaucoup plus grand. Les seules différences entre les sorties de ces algorithmes (en supposant qu'elles sont correctement définies par les données TSC) et la sortie du véritable aléa physique sont religieuses - aucune méthode connue ne peut distinguer ces sorties. Il n'y a aucun test que l'un passera et l'autre échouera.

J'ai développé des générateurs de nombres aléatoires pour les casinos en ligne qui ont obtenu une certification indépendante. Ces méthodes sont celles utilisées dans le monde réel.

David Schwartz
la source
6
+1 pour le bon sens, les exemples intéressants et la belle métaphore de l'eau bénite!
mikera
@David, Salut, l'esprit de développer l'histoire "J'ai développé des générateurs de nombres aléatoires pour les casinos en ligne" ..?
Pacerier
Ce n'est pas si intéressant. Un casino en ligne m'a engagé pour développer un RNG pour eux, je l'ai fait, et il a été certifié par TST, une société de certification australienne.
David Schwartz
13

Je ne comprends toujours pas pourquoi un PRNG cryptographique n'est pas assez bon pour votre problème. Une propriété déterminante d'un crypto-PRNG est qu'il n'est pas possible (avec des quantités raisonnables de matériel) de distinguer sa sortie d'un vrai RNG.

Cela signifie qu'il est assez bon pour tout type de simulation ou d'application auquel je peux penser, à part la génération de clés cryptographiques ou l'initialisation du crypto PRNG lui-même (il faut évidemment quelques centaines de bits de véritable entropie pour commencer).

D'un autre côté, les RNG de service Web ne peuvent pas non plus être utilisés pour la cryptographie, car

  1. Vous ne pouvez pas prouver qu'ils sont en fait un vrai PRNG car vous ne pouvez pas distinguer leur sortie d'un PRNG
  2. Vous devez faire confiance à l'opérateur du service
  3. Les données aléatoires vous sont transmises via un canal de sécurité inférieur. Un attaquant qui peut casser un PRNG peut aussi casser SSL.

Je ne peux donc pas penser à une seule utilisation où l'on préférerait un RNG de service Web à un bon PRNG. Si vous avez vraiment besoin de nombres aléatoires réels et sécurisés, je ne vois aucune alternative à la construction de matériel vous-même.

CodesInChaos
la source
Oui, je ne peux pas prouver que la sortie est vraiment aléatoire. mais ce n'est pas si difficile de lui faire confiance random.org/statistics . Vous semblez supposer que la sécurité est l'une de mes exigences, mais ce n'est pas le cas. J'ai besoin d'un nombre aléatoire complet. Pas un numéro aléatoire et sécurisé. (Si un attaquant veut espionner se sentir libre, cela ne ferait pas de mal)
Pacerier
1
Il n'est pas difficile de faire confiance à un PRNG pour lequel il a été prouvé mathématiquement que le distinguer d'un vrai RNG nécessite de résoudre des problèmes mathématiques très difficiles.
CodesInChaos
@CodeInChaos est un casino en ligne un problème mathématique très difficile? Ce n'est pas le cas, mais cela nécessite ce genre de véritable hasard, vous ne pensez pas?
Pacerier
2
Je ne vois aucune raison technique pour laquelle un bon PRNG a parfois reçu cent bits de véritable entropie ne devrait pas suffire, même pour un casino en ligne. Il peut y avoir des raisons légales , mais je suppose que dans ce cas, vous devez générer votre véritable aléatoire localement, car cela vous donne de meilleures chances de prouver que vous utilisez de vrais nombres aléatoires.
CodesInChaos
8
+1 Je suis totalement d'accord avec vous. Si vous créez un jeu qui doit générer des données aléatoires réalistes, il vaut mieux utiliser un PRNG qu'un générateur de nombres vraiment aléatoires. Premièrement, il existe une preuve mathématique qu'il produit des données statistiquement aléatoires adaptées à une distribution de probabilité. Deuxièmement, vous pouvez choisir cette distribution de probabilité. Troisièmement, vous pouvez tester votre application de manière déterministe. Quatrièmement, vous pouvez choisir la graine au démarrage afin qu'elle ne se comporte jamais deux fois de la même manière. Personnellement, je pense que le PO ne comprend pas vraiment ce que signifie le hasard, ni pourquoi il en a besoin.
5

Il y a plusieurs années, vous pouviez appeler le lavarand de SGI qui générait des nombres aléatoires en utilisant la forme et la position de la goutte actuelle d'une lampe à lave surveillée par une webcam.

Bien qu'il soit parti maintenant, vous pouvez facilement créer votre propre générateur avec une webcam et le code open source des gens fins de LavaRnd (EDIT: en panne depuis un certain temps maintenant. Wayback Machine Sourceforge Project ). Il s'avère que vous n'avez pas du tout besoin de la lampe à lave: le bruit capté par le CCD tandis que la webcam est scellée dans un récipient étanche à la lumière est une excellente source pour générer des nombres aléatoires cryptographiquement sains.

(Je sais que ce n'est pas un service que vous pouvez utiliser maintenant, mais parce qu'il l'était, parce qu'il était tellement cool, et parce que vous pouvez en créer un presque gratuitement très facilement, j'ai pensé qu'il valait la peine d'être une réponse.)

Matthew Frederick
la source
mais avec le temps, le bruit "aléatoire" généré par la webcam correspondrait-il à une distribution normale? Je ne sais pas aimerait-il que ce soit clarifié?
Darknight
4
@Darknight: Qu'est-ce que la distribution a à voir avec le hasard? Il est possible de générer des séquences déterministes pour correspondre à n'importe quelle distribution, et il est possible que des nombres aléatoires correspondent à n'importe quelle distribution.
David Thornley
2
@Darknight Comme le note David, le fait que les nombres correspondent ou non à une distribution normale n'affecte pas le caractère aléatoire. Si vous êtes intéressé par ce qui est nécessaire pour rendre un générateur de nombres aléatoires cryptographiquement solide (ou crypto fort), les gars de LavaRnd ont une tonne d'informations et de liens "nerd stat" sur leur site, ainsi que la façon dont ils se rapportent à LavaRnd.
Matthew Frederick
Sérieusement, il n'y a aucun moyen d'en créer un facilement Matthew. Comment définissez-vous exactement facile?
Pacerier
2
@Pacerier Vous avez raison: "facile" est une question de perspective. Cette méthode est facile si vous avez accès à votre serveur et que la recherche d'une webcam appropriée ne prend pas longtemps - 10 $ "achetez-le maintenant" sur ebay, par exemple. Cela laisse attacher la caméra; télécharger, compiler et exécuter le logiciel gratuit; et en ajoutant un appel au service dans votre code. Pas banale, mais assez facile, extrêmement peu coûteuse et fournit un nombre illimité de demandes.
Matthew Frederick
1

Ouvrez une connexion TCP vers n'importe quel hôte / port et comptez le nombre de nanosecondes qu'il faut. Voilà votre numéro aléatoire.

R .. GitHub ARRÊTEZ D'AIDER LA GLACE
la source
J'espère que ce n'est pas ainsi que vous générez des nombres aléatoires.
Craige
9
Le point de ma réponse (légèrement sarcastique) est que l'entropie dans le temps qu'il faut aux paquets pour voyager vaut beaucoup plus qu'un nombre "aléatoire" dont l'entropie vous faites confiance à un serveur tiers.
R .. GitHub ARRÊTE D'AIDER LA GLACE
5
@Pacerier: Personne intelligent n'écrit sa propre crypto, sauf s'il est un expert. C'est différent d'envoyer votre texte en clair à un service Web et de récupérer du texte chiffré. De même, vous ne voulez probablement pas essayer de concevoir votre propre système d'aléa quantique, mais recevoir des nombres aléatoires qui vous sont expédiés via HTTP n'est pas fiable.
David Thornley
1
@Pacerier Mais vous n'avez toujours pas montré pourquoi l'alternative d'utiliser un PRNG local avec une injection entropique occasionnelle (à partir de sources d'entropie locales) n'est pas possible.
CodesInChaos
1
@Pacerier: faites-moi confiance: vous n'avez pas besoin de véritables nombres aléatoires pour les simulations économiques. Un bon générateur aléatoire pseudo- (ou quasi-, si vous vous souciez de la distribution uniforme) suffira. Les problèmes se trouvent ailleurs (par exemple: vous voulez que les nombres ne soient pas corrélés dans de nombreuses dimensions - comment savez-vous que le service Web que vous utilisez gêne même pour vérifier comment leurs nombres remplissent un espace à 20 dimensions?).
quant_dev
1

voici un autre générateur basé sur le quantum, avec un api de repos non moins:

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

Les chercheurs de l'ANU génèrent de vrais nombres aléatoires à partir d'une source physique quantique. Pour ce faire, nous divisons un faisceau de lumière en deux faisceaux, puis mesurons la puissance de chaque faisceau. La lumière étant quantifiée, l'intensité lumineuse de chaque faisceau oscille autour de la moyenne. Ces fluctuations, dues finalement au vide quantique, peuvent être converties en une source de nombres aléatoires.

NimChimpsky
la source