Які джерела ентропії використовує ядро ​​Linux?


14

man 4 random має дуже розпливчастий опис джерел ентропії ядра Linux:

Генератор випадкових чисел збирає екологічний шум від драйверів пристроїв та інших джерел в пул ентропії.

Папір " Ентропія" також передається в генераторі випадкових чисел Linux . У ньому перелічено:

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

Ці функтино з random.c, що включає наступний коментар:

Джерела випадковості з навколишнього середовища включають таймінги між клавіатурою, таймінги переривання через деякі переривання та інші події, які є одночасно а) недетермінованими та (б) важкими для вимірювання зовнішнім спостерігачем.

Далі вниз є функція, яка add_hwgenerator_randomness(...)вказує на підтримку апаратних генераторів випадкових чисел.

Вся ця інформація є досить невиразною (або, у випадку вихідного коду, для розуміння потрібні глибокі знання ядра Linux). Які фактичні використовувані джерела ентропії та чи підтримує ядро ​​Linux будь-які апаратні генератори випадкових чисел поза вікном?

Відповіді:


4

У більшості товарних апаратних засобів на сьогоднішній день є генератор випадкових чисел. VIA Semiconductor впродовж багатьох років укладає їх у свої процесори; ядро Linux має для цього драйвер via-rng. Я рахую 34 вихідних модуля в drivers/char/hw_random/каталозі в останньому дереві джерел, включаючи драйвери для апаратних засобів Intel та AMD, а також для систем, які мають пристрій TPM. Ви можете запустити демон-rng (rngd) для переміщення випадкових даних у пул ентропії ядра.


Це здається великою частиною відповіді, яку я шукав. Я поглиблюю детальніше те, що там міститься, як тільки я обійдуся цим. Разом з інформацією, яка вже міститься у запитанні, це виглядає як вичерпний перелік джерел ентропії.
Єнс Ерат

І щоб побачити, що доступно для певного запуску ПК cat /sys/devices/virtual/misc/hw_random/rng_available.
hlovdal

0

Так, він підтримує апаратні генератори ентропії поза коробкою. Це необхідно для SSL-серверів високого навантаження з безліччю одночасних з'єднань, ініційованих за секунду (Gmail, Facebook, Microsoft тощо). Це дійсно не потрібно для домашніх серверів або невеликих серверів організації. Майте на увазі генератори апаратної ентропії, як правило, використовують інтерфейси PCI, нічого фантазійного немає, тому це легко підтримується. Не впевнений, чи є пропетарні апаратні генератори ентропії, які потребують драйверів із закритим джерелом, мабуть, ні, оскільки це не дуже складно і не дуже прибуткова галузь (на відміну від графічних карт в іншому випадку).

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


2
Сервери з високим обсягом не вимагають апаратного RNG більше, ніж сервери з низьким обсягом. Після того, як машина засіяна достатньою ентропією, вона може продовжувати працювати на PRNG назавжди (або принаймні протягом мільярдів років, що те саме на практиці). Комп'ютери, яким дійсно потрібен апаратний RNG, - це вбудовані пристрої, які не можуть надійно зберегти поточний стан RNG при відключенні живлення.
Жил "ТАК - перестань бути злим"

@Gilles: чи справедливо це для інших систем, ніж Linux? Я знаю, що Linux це робить, але ніколи не чув про * BSD, включаючи OS X (ні Windwos).
Єнс Ерат

1
@JensErat Я не знаю. Це легко здійснити і дуже корисно, тому я здивуюсь, якби BSD цього не зробив.
Жиль "ТАК - перестань бути злим"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.