Quelles sources d'entropie sont utilisées par le noyau Linux?


14

man 4 random a une description très vague des sources d'entropie du noyau Linux:

Le générateur de nombres aléatoires rassemble le bruit environnemental des pilotes de périphériques et d'autres sources dans un pool d'entropie.

Le papier Entropy transfère dans le générateur de nombres aléatoires Linux n'est pas beaucoup plus spécifique non plus. Il répertorie:

  • add_disk_randomness(),
  • add_input_randomness(), et
  • add_interrupt_randomness().

Ces functinos sont de random.c, qui comprend le commentaire suivant:

Les sources d'aléatoire de l'environnement comprennent les synchronisations entre les claviers, les synchronisations entre les interruptions de certaines interruptions et d'autres événements qui sont à la fois (a) non déterministes et (b) difficiles à mesurer pour un observateur extérieur.

Plus bas, une fonction add_hwgenerator_randomness(...)indique la prise en charge des générateurs de nombres aléatoires matériels.

Toutes ces informations sont assez vagues (ou, dans le cas du code source, nécessitent une connaissance approfondie du noyau Linux pour être comprises). Quelles sont les sources d'entropie réelles utilisées et le noyau Linux prend-il en charge des générateurs de nombres aléatoires matériels prêts à l'emploi?

Réponses:


4

De nos jours, la plupart du matériel informatique de base a un générateur de nombres aléatoires. VIA Semiconductor les a installés dans leurs processeurs pendant de nombreuses années; le noyau Linux a le pilote via-rng pour cela. Je compte 34 modules source dans le drivers/char/hw_random/répertoire de la dernière arborescence source, y compris les pilotes pour le matériel Intel et AMD, et pour les systèmes qui ont un périphérique TPM. Vous pouvez exécuter le démon rng (rngd) pour envoyer des données aléatoires au pool d'entropie du noyau.


Cela semble être une grande partie de la réponse que je cherchais. J'examinerai de plus près ce qui s'y trouve dès que je me déplacerai pour le faire. Avec les informations déjà contenues dans la question, cela ressemble à une liste complète des sources d'entropie.
Jens Erat

Et pour voir ce qui est disponible sur un PC spécifique cat /sys/devices/virtual/misc/hw_random/rng_available.
hlovdal

0

Oui, il prend en charge les générateurs d'entropie matériels prêts à l'emploi. Cela est nécessaire pour les serveurs SSL à forte charge avec de nombreuses connexions simultanées initiées par seconde (Gmail, Facebook, Microsoft, etc.). Ce n'est vraiment pas nécessaire pour les serveurs domestiques ou les serveurs de petite organisation. Gardez à l'esprit que les générateurs d'entropie matérielle utilisent généralement des interfaces PCI, rien de spécial là-bas, donc ils peuvent être pris en charge facilement. Je ne sais pas s'il existe des générateurs d'entropie matériels propriétaires qui nécessitent des pilotes de source fermée, probablement pas, car ce n'est pas très difficile et ce n'est pas une industrie très rentable (contrairement aux cartes graphiques autrement) de toute façon.

http://en.wikipedia.org/wiki/Hardware_random_number_generator


2
Les serveurs à volume élevé ne nécessitent pas plus de RNG matériel que les serveurs à faible volume. Une fois que la machine a été semée avec une entropie suffisante, elle peut continuer à fonctionner sur un PRNG pour toujours (ou au moins pendant des milliards d'années, ce qui est le même dans la pratique). Le genre d'ordinateurs qui ont vraiment besoin d'un RNG matériel sont des appareils intégrés qui ne peuvent pas sauvegarder leur état RNG actuel en toute sécurité lorsqu'ils s'éteignent.
Gilles 'SO- arrête d'être méchant'

@Gilles: est-ce valable pour d'autres systèmes que Linux? Je sais que Linux fait cela, mais je n'ai jamais entendu parler de * BSD, y compris OS X (ni Windwos).
Jens Erat

1
@JensErat je ne sais pas. Il est facile à mettre en œuvre et très utile, donc je serais surpris si le BSD ne le faisait pas.
Gilles 'SO- arrête d'être méchant'
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.