Какие источники энтропии используются ядром Linux?


14

man 4 random имеет очень расплывчатое описание источников энтропии ядра Linux:

Генератор случайных чисел собирает шум окружающей среды от драйверов устройств и других источников в пул энтропии.

Бумажные переносы энтропии в генераторе случайных чисел в Linux тоже не намного конкретнее. В нем перечислены:

  • add_disk_randomness(),
  • add_input_randomness(), и
  • add_interrupt_randomness(),

Эти functinos от 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.
Хловдал

0

Да, он поддерживает аппаратные генераторы энтропии из коробки. Это необходимо для высоконагруженных серверов SSL с большим количеством одновременных подключений, инициируемых в секунду (Gmail, Facebook, Microsoft и т. Д.). Это действительно не нужно для домашних серверов или небольших серверов организации. Имейте в виду, что генераторы аппаратной энтропии обычно используют интерфейсы PCI, ничего особенного, поэтому его легко поддерживать. Не уверен, что существуют современные аппаратные генераторы энтропии, которые требуют драйверов с закрытым исходным кодом, вероятно, нет, так как это не очень сложно и не очень прибыльная отрасль (в отличие от видеокарт в противном случае).

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


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

@ Жиль: это действительно для других систем, кроме Linux? Я знаю, что Linux делает это, но никогда не слышал о * BSD, включая OS X (или Windwos), которые делают это.
Йенс Эрат

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