Disons que je veux un gigaoctet ou plus de données aléatoires de / dev / random, adaptées à un tampon à usage unique (donc / dev / urandom est sorti.) Comment puis-je amorcer mon / dev / random avec suffisamment d'entropie pour ce faire? Je recherche des commandes et des programmes spécifiques pour cela. Je ne veux rien acheter. J'utilise Arch Linux, si cela fait une différence.
arch-linux
random
PyRulez
la source
la source
Here — type something:
, puis mesure les deltas de temps entre les frappes avec une précision supérieure à ce qu'un humain peut contrôler?Réponses:
Les deux programmes qui peuvent augmenter le pool d'entropie sans nécessiter de matériel supplémentaire sont
rng-tools
ethaveged
.rng-tools
utilise les RNG disponibles dans les processeurs et chipsetshaveged
modernes , utilise l'aléatoire du processeur moderne (comportement du cache, etc.). Les deux sont disponibles dans Arch, et le wiki Arch a une page intéressante pour en discuter. Je n'ai pas essayé de les utiliser pour générer un gigaoctet de données, mais cela devrait être possible dans un laps de temps raisonnable.Vous excluez explicitement l'achat de quoi que ce soit, mais juste pour être complet, il y a un article intéressant dans LWN à propos de l' entropie avec NeuG , qui comprend des discussions
haveged
et diverses autres approches. Vous pouvez acheter une carte STM8S capable d'exécuter NeuG pour moins de 10 $, ou une FST-01 pour 35 $.la source
Malheureusement / dev / random n'est pas non plus adapté à une utilisation dans un bloc à usage unique, du moins pas le type de bloc à usage unique (avec des garanties de sécurité prouvées) que la plupart des gens imaginent lorsqu'ils pensent ou mettent en œuvre des blocs à usage unique. La plupart des informations ci-dessous sont résumées dans l'article (très long) sur http://www.2uo.de/myths-about-urandom/
Le problème est que / dev / random n'est pas vraiment aléatoire; il utilise un CSPRNG pour générer sa sortie. En fait, / dev / random utilise exactement le même CSPRNG que / dev / urandom. La seule différence est que / dev / random bloque si son estimation interne d'entropie est insuffisante.
Le mot «estimation» dans la phrase précédente est essentiel. La plupart des gens pensent que cette estimation est toujours exacte et parfaite, mais en réalité elle n'est pas du tout exacte. À l'instant où l'estimation est fausse, vous perdez toutes les garanties de sécurité prouvables du pavé unique, et il ne vous reste plus que la sécurité informatique - pas mieux que si vous aviez utilisé / dev / urandom!
Obtenir l'estimation de l'entropie juste un peu mal ne rend pas votre tampon ponctuel juste un peu incertain. La garantie de sécurité prouvable d'un tampon unique est tout ou rien.
La prémisse de cette question est que les problèmes avec / dev / random peuvent être "corrigés" en ajoutant plus d'entropie. Malheureusement, cette prémisse est fausse. Une source d'entropie malveillante est bien pire qu'une absence d'entropie, car les sources d'entropie ont souvent accès aux données internes et peuvent exporter ces données secrètement à l'aide de la sortie RNG - voir http://blog.cr.yp.to/20140205-entropy .html pour une discussion complète (trop longue pour résumer ici). En particulier, une source matérielle d'entropie (comme recommandé par plusieurs autres réponses) est un très mauvais choix du point de vue de la sécurité, car ce matériel est en position privilégiée pour faire des choses malveillantes et il est essentiellement inauditable.
la source
Il semble qu'un composant matériel soit la meilleure idée. Il existe des circuits intégrés de générateur HW, mais vous devez leur faire confiance à mesure qu'ils arrivent.
Deux solutions probablement bonnes consistent à inciter les composants à créer du bruit; deux solutions majeures semblent être le biais de température et le bruit d'avanche créé avec une diode (voir http://web.archive.org/web/20061117145903/http://willware.net:8080/hw-rng.html )
Comme les composants comme le gyroscope et l'accéléromètre sont devenus plus sensibles, les faire fonctionner à la sensibilité la plus élevée et utiliser leur valeur LSB peuvent également être une bonne solution, mais AFAIK personne ne l'a audité.
C'est drôle car il y a beaucoup de papier sur NE PAS faire de RNG, mais pas une implémentation matérielle ouverte et vérifiée
la source
Vous pouvez utiliser pycsprng.py . Cryptographiquement sécurisé? Je ne suis pas sûr, mais j'aimerais un examen par les pairs.
python pycsprng.py | pv | dd of=data.file bs=1024 count=1000
Le canal vers
pv
est facultatif et vous aidera simplement à savoir combien de données ont été transférées.Vous pouvez constater que des blocs plus grands (bs) augmentent les performances. Vous devrez ajuster le nombre pour ne pas générer un fichier trop volumineux si vous augmentez la taille du bloc.
la source
/dev/urandom
...pycsprng.py
est littéralement un script 10 SLOC qui obtient un caractère aléatoireos.urandom
. Les documents indiquent que "les données renvoyées devraient être suffisamment imprévisibles pour les applications cryptographiques [...] Sur un système de type UNIX, cela demandera/dev/urandom
" . En fait, c'est (c'est une source obsolète) et Security.SE dit que c'est correct pour la crypto .Ce que vous obtenez d'un canal de microphone analogique lorsque vous ne branchez pas de microphone est généralement simplement statique. Canalisez cela via bzip2, par exemple, pour le blanchiment, mélangez-le avec une autre source d'aléatoire (urandom ou autre prise microphone), peut-être canalisez le résultat via openssl pour faire bonne mesure et ce que vous obtenez devrait être assez aléatoire.
Il serait cependant difficile de prouver des propriétés de sécurité dures et rapides sur le caractère aléatoire du résultat.
la source
Si vous utilisez le noyau Linux 2.6.9 ou plus récent sur un processeur amd64 / x86_64, un environnement virtuel ou physique, vous pouvez essayer ncomputers.org/pandom un véritable générateur de nombres aléatoires, qui offre une entropie de 8 Ko / s de 64 ubits / 64 bits via
/dev/random
la source
Pour générer 100 Mo de données aléatoires générées par le matériel, vous pouvez:
Enregistrez 20 minutes d'audio (mono 96 kHz 16 bits) avec le microphone intégré de votre ordinateur (disponible sur un ordinateur portable). Vous obtiendrez un fichier WAV de ~ 220 Mo.
Jetez les bits non utiles et mélangez les bits de données binaires (de nombreuses façons de le faire) avec quelques calculs
Exportez les bits mélangés en tant que fichier binaire de ~ 100 Mo
Voici un article à ce sujet: Une tentative de générer une véritable entropie et des données aléatoires avec l'audio (et le microphone intégré de votre ordinateur) .
la source