man 4 random
имеет очень расплывчатое описание источников энтропии ядра Linux:
Генератор случайных чисел собирает шум окружающей среды от драйверов устройств и других источников в пул энтропии.
Бумажные переносы энтропии в генераторе случайных чисел в Linux тоже не намного конкретнее. В нем перечислены:
add_disk_randomness()
,add_input_randomness()
, иadd_interrupt_randomness()
,
Эти functinos от random.c
, который включает в себя следующий комментарий:
Источники случайности из окружения включают в себя временные интервалы между клавиатурами, временные интервалы между некоторыми прерываниями и другие события, которые являются (а) недетерминированными и (б) трудными для измерения внешним наблюдателем.
Далее есть функция, add_hwgenerator_randomness(...)
указывающая на поддержку аппаратных генераторов случайных чисел.
Вся эта информация довольно расплывчата (или, в случае исходного кода, требует глубокого знания ядра Linux для понимания). Какие фактические источники энтропии используются, и поддерживает ли ядро Linux какие-либо аппаратные генераторы случайных чисел из коробки?
источник
cat /sys/devices/virtual/misc/hw_random/rng_available
.Да, он поддерживает аппаратные генераторы энтропии из коробки. Это необходимо для высоконагруженных серверов SSL с большим количеством одновременных подключений, инициируемых в секунду (Gmail, Facebook, Microsoft и т. Д.). Это действительно не нужно для домашних серверов или небольших серверов организации. Имейте в виду, что генераторы аппаратной энтропии обычно используют интерфейсы PCI, ничего особенного, поэтому его легко поддерживать. Не уверен, что существуют современные аппаратные генераторы энтропии, которые требуют драйверов с закрытым исходным кодом, вероятно, нет, так как это не очень сложно и не очень прибыльная отрасль (в отличие от видеокарт в противном случае).
http://en.wikipedia.org/wiki/Hardware_random_number_generator
источник