Являются ли / dev / random данные псевдослучайным шифром AES и откуда берется энтропия?


8

Мое текущее понимание энтропийного пула состоит в том, что он собирает действительно случайные биты данных с медленной скоростью. Я хотел бы знать, как Unix и Linux собирают энтропию и как эта энтропия используется / dev / random.

Я слышал (обычно) о методах сбора энтропии, таких как состояние процессора видеокарты, когда поступает «случайно» выбранный сетевой пакет, сопоставленный с коэффициентом шипения в цифро-аналоговом преобразователе, и другие, еще более тупые методы.

Я считаю, что энтропийный «пул» используется по мере необходимости и используется для создания генератора случайных чисел псевдо…

Я не после подробного ответа, но мне интересно знать, является ли это общий подход, используемый Unix / Linux? .. и, возможно, некоторые намеки о том, что на самом деле происходит на угольной шахте сбора энтропии. ... а потом, в какую энтропию поступает .. Это шифр AES Rijndael?

Справочная информация о моих комментах, приведенная выше, была получена от « Безопасности сейчас» Стива Гибсона ! подкаст: Эпизод # 301 Going Random, часть 2 из 2 ... Он говорил только обобщенно (но как и его стиль, с достаточной детализацией и ясностью, чтобы даже я мог его понять. Выслушать предыдущие 300 эпизодов помогает :), ... и я хотел бы знать, так ли это в Unix / Linux ...


Ответы:


14

В Linux есть два генератора случайных чисел, доступных для пользователей, /dev/randomи /dev/urandom.

/dev/randomявляется источником "истинной" случайности - т.е. она не генерируется генератором псевдослучайных чисел. Энтропия подается в это драйвером ввода и обработчиком прерываний через функции add_input_randomnessи add_interrupt_randomness. Процессы чтения этого устройства будут блокироваться, если энтропия иссякнет.

/dev/urandomгенератор псевдослучайных чисел Он питается тем же энтропийным пулом, что и /dev/random, но когда он заканчивается, он переключается на криптографически сильный генератор.

Приложения пользовательского пространства могут поступать в пул энтропии, записывая в /dev/{,u}random.

Прочтите справочную страницу random (4) и файл drivers/char/random.cв дереве исходного кода ядра. Это хорошо прокомментировано, и большая часть того, что вы спрашиваете, объясняется там.


FreeBSD /dev/randomпо умолчанию является генератором псевдослучайных чисел, использующим алгоритм Ярроу (но может указывать на аппаратный ГСЧ, если он подключен). Программный генератор получает энтропию от Ethernet и последовательных соединений и аппаратных прерываний (с возможностью изменения через sysctl kern.random). Считается, что алгоритм Ярроу является безопасным, пока его внутреннее состояние неизвестно, поэтому /dev/randomвсегда должен выводить высококачественные данные без блокировки. Смотрите случайным образом (4) .

В NetBSD /dev/randomпредоставляет случайные данные, основанные только на собранной энтропии (с дисков, сети, устройств ввода и / или накопителей на магнитной ленте; настраивается с помощью rndctl ), а /dev/urandomв случае пустого пула энтропии возвращается к PRNG, как в Linux. См. Random (4) , rndctl (8) , rnd (9) .

OpenBSD имеет четыре генератора: /dev/randomэто аппаратный генератор, /dev/srandomэто безопасный генератор случайных данных (использующий MD5 в пуле энтропии: «диск и сетевое устройство прерывается и т. Д.»), Но /dev/urandomон аналогичен PRNG, когда пул энтропии пуст. Четвертый, /dev/arandomтоже PRNG, но с использованием RC4 . Смотрите random (4) , arc4random (3) .

Mac OS X также использует алгоритм Ярроу для /dev/random, но имеет идентичную работу /dev/urandomдля совместимости. «Дополнительная энтропия регулярно подается на генератор демоном SecurityServer из измерений случайного джиттера ядра». Смотрите случайным образом (4) .


Спасибо. Хороший обзор, и из источника, я вижу, что мы в безопасности в руках Twisted Generalized Shift Register (страшные вещи :) ... Наряду с тупыми «случайными» входами в пул, кажется, что хеш SHA генерируется "по пулу, 16 слов (512 бит) за раз" и смешивается обратно в пул, а затем в пуле выполняется еще несколько вращений ... Стив Гибсон комментирует в своем подкасте: SHA-256 использует / это самый сильный современный хэш, который у нас есть. ... Я не обнаружил, что генерирует / dev / urandom, но процесс подготовки, безусловно, важен
Peter.O

+1, хороший ответ; Однажды я пытался сгенерировать данные случайных символов cat /dev/randomи всегда задавался вопросом, почему мой поток остановился после стольких символов
Майк Пеннингтон,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.