Les deux /dev/randomet /dev/urandomutilisent une «piscine entropique». Lorsque le pool est épuisé, /dev/randomattend qu'il se remplisse, ce qui nécessite de surveiller le comportement du système (saisie au clavier, mouvement de la souris, etc.), alors /dev/urandomqu'il continuera à vous fournir des données pseudo-aléatoires.  /dev/randomest théoriquement de meilleure qualité, mais /dev/urandomest presque certainement assez bonne pour vos besoins. (Mais même /dev/urandomest probablement plus lent que certaines autres méthodes. Un générateur plus rapide mais de qualité inférieure est probablement assez bon pour effacer les disques durs. Il n'est pas clair qu'un attaquant gagnerait à connaître la séquence qui va être générée, ou que les nombres aléatoires sont meilleurs à cet effet qu'une séquence comme 0, 1, 2, 3, 4, ....)
Citant la random(4)page de manuel:
  Si vous ne savez pas si vous devez utiliser /dev/randomou
   /dev/urandom, alors vous voudrez probablement utiliser ce dernier. En règle générale, /dev/urandomdoit être utilisé pour tout sauf les clés GPG / SSL / SSH à longue durée de vie.
MISE À JOUR : La page de manuel `random (4) a été mise à jour depuis que j'ai écrit cela. Il dit maintenant:
  L' /dev/randominterface est considérée comme une interface héritée, et
   /dev/urandomest préférée et suffisante dans tous les cas d'utilisation, à l'exception des applications qui nécessitent un caractère aléatoire au début du démarrage; pour ces applications, getrandom(2)doit être utilisé à la place, car il se bloquera jusqu'à ce que le pool d'entropie soit initialisé.
Voir aussi " Mythes sur / dev / urandom " par Thomas Hühn.
Mais /dev/urandom, même s'il ne se bloque pas, il est probable qu'il soit trop lent si vous souhaitez générer d'énormes quantités de données. Prenez quelques mesures sur votre système avant de l'essayer.
EDIT: Ce qui suit est une digression sur les «vrais» nombres aléatoires par rapport aux nombres pseudo-aléatoires. Si tout ce qui vous intéresse est une réponse pratique à la question, vous pouvez arrêter de lire maintenant.
Il me semble que les revendications (y compris dans d'autres réponses ici) /dev/randomimplémentent un "vrai" générateur de nombres aléatoires, par opposition à un générateur de nombres pseudo-aléatoires (PRNG). Par exemple, l'article Wikipedia fait une telle affirmation. Je ne pense pas que ce soit correct. Il y a une discussion à ce sujet ici qui se réfère aux générateurs de nombres aléatoires matériels, mais je ne vois aucune preuve qui /dev/randomutilise généralement un tel appareil, ou que les ordinateurs typiques ont même un tel appareil. Ils diffèrent des PRNG comme la rand()fonction C en ce qu'ils ne sont pas déterministes, car ils récoltent l'entropie à partir de sources pratiquement imprévisibles.
Je dirais qu'il existe trois classes de générateurs de nombres "aléatoires":
Des PRNG déterministes, comme la rand()fonction de C , qui utilisent un algorithme pour générer des séquences répétables qui ont (plus ou moins) les propriétés statistiques d'une séquence vraiment aléatoire. Ceux-ci peuvent être assez bons pour les jeux (étant donné un bon moyen de les semer), et sont nécessaires pour les applications qui nécessitent une répétabilité, mais ils ne conviennent pas à la cryptographie.
 
Les générateurs aiment /dev/randomet /dev/urandomqui récoltent l'entropie d'une source pratiquement imprévisible comme l'activité d'E / S (c'est pourquoi frapper sur le clavier ou déplacer la souris peut entraîner la /dev/randomproduction de plus de données). Il n'est pas clair (pour moi) si ceux-ci répondent à la définition d'un PRNG (j'ai vu des définitions qui disent qu'un PRNG est déterministe), mais ce ne sont pas non plus de véritables générateurs de nombres aléatoires.
 
Générateurs de nombres aléatoires matériels qui sont physiquement imprévisibles même avec une connaissance complète de leur état initial, et qui utilisent en outre des techniques mathématiques pour garantir les bonnes propriétés statistiques.