Que signifie la lettre "u" dans / dev / urandom?


88

Je comprends que les lectures /dev/randompeuvent bloquer, alors que la lecture /dev/urandomest garantie.

D'où vient la lettre uen cela? Que signifie-t-il?

Espace utilisateur? Déblocage? Micro?

Mise à jour:

Sur la base de la formulation initiale de la question, il y a eu un débat sur l'utilité de /dev/randomvs /dev/urandom. Le lien Mythes sur / dev / urandom a été posté trois fois ci-dessous et est résumé dans cette réponse à la question Quand utiliser / dev / random vs / dev / urandom .


13
Déblocage, par opposition à /dev/randomce qui bloque.
Satō Katsura

3
Chapitre et vers?
Tom Hale

11
L'idée qui /dev/randométait en quelque sorte meilleure que ce qui /dev/urandomest maintenant obsolète et pour la grande majorité des cas d'utilisation, /dev/urandom est maintenant préférée .
David Schwartz

Source @SatoKatsura? La réponse de Tom contredit votre réponse.
nozɐɹƆ

Voici un lien vers le site avec des détails pour sauvegarder le commentaire de @DavidSchwartz. 2uo.de/myths-about-urandom
Walter

Réponses:


87

Illimité.

Sous Linux, les fonctions de comparaison noyau nommé random_readet random_read_unlimited indique que l'étymologie de la lettre uen urandomest unlimited.

Ceci est confirmé par la ligne 114 :

Le périphérique / dev / urandom n'a pas cette limite [...]

Mise à jour:

En ce qui concerne ce qui est venu d' abord pour Linux, /dev/randomou /dev/urandom, @ Stéphane Chazelas a donné le poste avec le patch d' origine et @StephenKitt a montré qu'ils étaient tous deux introduits simultanément .


7
Alors pourquoi n'est pas /dev/randomnommé /dev/lrandom? :)
Satō Katsura

13
Historique. Au début, seule la version limitée / bloquante existait. Et la fonction analogue "non-un-limitée" s'appelle random_read:)
Tom Hale

10
J'ai trouvé l'un des liens via Wikipedia, mais je cite directement la source plutôt que de citer Wikipedia. Je considérerais comme analogue de trouver quelque chose sur Google, et de ne pas citer Google ... sauf si j'ai quelque chose à apprendre à propos de la citation sur StackExchange?
Tom Hale

5
@TomHale L'argument historique pour randomv. lrandomNe tient pas tout à fait bien puisque les deux randomet urandomont été introduites simultanément dans le noyau Linux.
Stephen Kitt

7
Voir aussi le patch sur usenet envoyé par l'auteur de la mise en oeuvre originale en 1995
Stéphane Chazelas

18

Cela dépend du système "Unix" dont vous parlez.

Sur FreeBSD, / dev / urandom et / dev / random sont le même périphérique. La lettre u est maintenant un héritage historique qui existe pour la compatibilité ascendante. Au démarrage, ils bloquent jusqu'à ce que suffisamment d'entropie ait été collectée, puis ne bloquent plus jamais. Voir Myths about urandom pour plus de détails.

Dans le monde Linux moderne (à partir du noyau 4.8), les deux périphériques sont extraits du même CSPRNG. La seule différence est que certaines personnes spéculent sur l’existence d’une attaque. Cette attaque est comme un déplacement FTL [Plus rapide que la lumière]. Facile à spéculer, plutôt difficile à concevoir.

TLDR est juste utiliser / dev / urandom.


2
De votre lien, il est intéressant de noter queFreeBSD does the right thing: they don't have the distinction between /dev/random and /dev/urandom, both are the same device. At startup /dev/random blocks once until enough starting entropy has been gathered. Then it won't block ever again.
Tom Hale

-5

Uniforme. Nombres aléatoires uniformément répartis entre 0 et 1. Une distribution plate ... par opposition à une distribution en pic comme Poisson ou Normal / Gaussienne.


3
Avez-vous une source pour celui-là?
GnP

7
Ce n'est vraiment pas correct - /dev/randomet les /dev/urandomdeux donnent la même distribution, et dans tous les sens ce n'est pas uniformément distribué entre 0 et 1.
Chris

Désolé ... probablement sur la base d'une autre langue que j'ai utilisée (R ou autre chose)
bbneo
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.