Générateurs Vraiment Aléatoires

Utilisation de l'Horloge Système

Lorsque l'on a besoin de quelques bits aléatoires, on peut utiliser le bit le moins significatif de n'importe quel registre d'horloge.

Il faut néanmoins éviter d'obtenir trop de bits de cette façon: utiliser la même routine plusieurs fois de suite peut facilement biaiser le résultats; Par exemple, si chaque exécution de la routine de génération utilise un nombre pair de clics d'horloge, on obtient une suite infinie de bits identiques.

 

Frappe au Clavier

Les rythmes de frappe au clavier des individus sont aléatoires et en même temps ne le sont pas: ils possèdent (en théorie) assez d'informations pour permettre l'identification, mais sont aussi assez imprévisibles pour générer des données aléatoires.

Principe: On mesure les intervalles de temps entre la frappe de 2 touches, puis on prend le bit le moins significatif de la mesure. Cette méthode, en partie utilisée dans les logiciels de chiffrement personnel (PGP), est simple d'emploi lorsqu'il s'agit de générer une clef de chiffrement, mais est beaucoup trop lente la plus part du temps ; ceci étant vrai  pour toute méthode réclamant l'intervention humaine, le cas extrême étant le lancer d'une pièce de monnaie.

 

Le Système LavaRand

Les lampes à lave sont des dispositifs contenant deux fluides appelés eau et lave (la nature exacte de ces fluides est protégé par un brevet déposé par Haggerty Enterprises). Lorsque ces fluides sont chauffés par une source de 40W incorporé à la base, la lave s'élève vers le haut de la lampe à la manière des bulles dans une coupe de Champagne. Un tel phénomène étant trop complexe pour être décrit, il permet la génération de données aléatoires:

Grossièrement, les deux fluides étant de couleurs très distinctes laissées au choix de l'utilisateur, on est amené à filmer le dispositif et à affecter un 1 et un 0 selon la couleur du pixel obtenu.

En pratique, il faut néanmoins éliminer les pixels de couleurs intermédiaires (ceux qui reflètent une frontière entre une bulle et le fluide), sans oublier que la présence des bulles en bas de la lampe aura une influence quelques instants plus tard sur le haut de la lampe; il faut donc épurer les données; pour cela on fait fonctionner plusieurs lampes simultanément, en sélectionnant les parties de l'image qui engendrent les données.

Les inconvénients de ce dispositif sont le faible débit de génération et son coût de 20000$; néanmoins ce dispositif constitue une source de données vraiment aléatoire.

http://lavarand.com/

 

Utilisation du Bruit Thermique des Circuits Intégrés

Depuis les Pentium III et 4, Intel intègre à tous les chipsets de la famille i8xx (i815, i820, i840, i845, i860...) un générateur de nombres aléatoires basé sur le bruit thermique des circuits intégrés. Le principe repose sur le comportement de tout composant électrique traversé par un courant: les électrons s'agitent aléatoirement, produisant un "bruit thermique" (thermal noise, ou Johnson noise en anglais) qui fait fluctuer la tension mesurée à ses bornes.

L'intérêt de ce système repose dans son coût, et surtout dans sa vitesse d'environ 75 kbits/sec.

http://www.intel.com/design/security/rng/rng.htm

Ce système a été testé par le Cryptography Research qui déclare qu'il est de loin le plus sûr dispositif générant des données aléatoires disponibles sur un Ordinateur Personnel.

 

Conclusion

Dans un cadre statistique, ludique ou à des fins de simulations, l'utilisation d'un générateur algorithmique, qui ne peut être alors que pseudo-aléatoire, ne pose aucun problème particulier. Soit on utilise un générateur reconnu comme bon, soit on en fabrique un en s'appuyant sur les théorèmes de Knuth, puis on lui fait passer un maximum de tests afin de s'assurer qu'il satisfait aux obligations qu'on lui impose. Lorsque le générateur est destiné à tester un programme, un générateur seulement pseudo-aléatoire est un avantage. En effet, si  le programme en question a eu un comportement anormal sur les données fournies par le générateur, une fois que l'on pense avoir corrigé le bug, on peut redonner les mêmes valeurs aléatoires en fournissant seulement le germe (initialisation) au générateur, et vérifier ainsi que le problème est corrigé!

Par contre, utiliser un tel générateur à des fins cryptographiques, est déconseillé si la sécurité du chiffrement repose sur le seul secret des constantes utilisées dans le générateur; c'est pourquoi il est d'une importance capitale d'utiliser un générateur s'approchant le plus possible d'un générateur vraiment  aléatoire.