À quelle fréquence / dev / urandom échantillonne-t-il les semences de / dev / random?


15

À moins que je ne sois totalement confus et que cela ne le fasse pas.

Je veux savoir si / dev / urandom gagnera une entropie accrue si je prends un RNG matériel et que je branche son entropie dans / dev / random.

Donc, pour reformuler, si je devais augmenter l'entropie de / dev / random de X bits / sec (c'est-à-dire, / dev / random après l'injection vous permet d'échantillonner X bits / sec), cette entropie accrue sera-t-elle transférée vers urandom?


2
Bien qu'ils ne soient pas très pertinents, 2uo.de/myths-about-urandom et blog.cloudflare.com/… (en particulier le graphique à blog.cloudflare.com/content/images/image01.png ) pourraient être une lecture utile.
user1686

Si vous aviez un vrai RNG matériel, vous pouvez simplement l'utiliser directement.
Michael Hampton

Réponses:


25

Il n'est pas vraiment exact de dire que les /dev/urandoméchantillons proviennent de /dev/random. Au lieu de cela, les deux pools sont soutenus par la même source d'entropie. Lorsque le nombre d'entropie des pools atteint zéro, ils réamorcent à partir du pool d'entrée partagé. Donc, si vous donnez l'entropie d'entrée du noyau d'une manière ou d'une autre, il peut l'utiliser pour l'un /dev/randomou l' autre /dev/urandom, selon celui qui est lu.

Cependant, le /dev/urandom taux de fréquence de demande de réensemencement est également limité . Par défaut, il ne peut être réamorcé qu'une fois toutes les 60 secondes.

Rien de tout cela n'a vraiment d'importance dans la pratique, car tant que le pool est initialement ensemencé avec au moins 128 bits ou plus d'entropie, la prédiction de n'importe quelle sortie nécessiterait non seulement de voir les sorties précédentes, mais également de casser les algorithmes utilisés, y compris au moins la résistance de pré-image de SHA-1 ( qui reste intact ).


7

Cela dépend de l'implémentation. Mais généralement, /dev/randomet /dev/urandomtirez l'entropie de la même piscine, ce sera le cas.

Diagramme de https://blog.cloudflare.com/ensuring-randomness-with-linuxs-random-number-generator/


4

Sous Linux, toutes les données écrites dans / dev / random ou / dev / urandom sont copiées à la fois dans le pool de blocage (source d'aléatoire pour / dev / random) et dans le pool non bloquant (source d'aléatoire pour / dev / urandom).

Regardez simplement la fonction random_write .

Mais les données écrites dans / dev / random ne sont pas comptées par l'estimateur d'entropie interne (après tout, certains adversaires locaux peuvent essayer de simplement rediriger / dev / zero ou une autre source très aléatoire vers / dev / random), donc si vous avez des problèmes avec le blocage / dev / random, l'écriture dans / dev / random n'aide pas.

Sous Linux, écrivez dans / dev / random (ou / dev / urandom, pas de différence), mais lisez toujours dans / dev / urandom (une fois qu'il est amorcé - en fait, la meilleure façon est d'utiliser le nouvel appel système getrandom ).

Je ne sais pas comment cela fonctionne dans d'autres Unices.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.