Ваша система собирает некоторые «реальные» случайные числа, отслеживая различные события: сетевую активность, аппаратный генератор случайных чисел (если имеется; например, процессоры VIA обычно имеют «настоящий» генератор случайных чисел) и так далее. If передает их в пул энтропии ядра, который используется / dev / random. Приложения, которые нуждаются в особой защите, обычно используют / dev / random в качестве источника энтропии или, другими словами, в качестве источника случайности.
Если / dev / random исчерпает имеющуюся энтропию, он не сможет выдавать больше случайности, и приложение ожидает случайности, пока не появится больше случайных вещей. Пример, который я видел за свою карьеру, это то, что демон Cyrus IMAP хотел использовать / dev / random для случайности, а его сеансы POP хотели генерировать случайные строки в соединениях APOP из / dev / random. В загруженной среде было больше попыток входа в систему, чем трафика для подачи / dev / random -> все застопорилось. В этом случае я установил rng-tools и активировал имеющийся у него rngd - который сдвигал полуслучайные числа из / dev / urandom в / dev / random, если в / dev / random закончилась «реальная» энтропия.
Янне Пиккарайнен
источник
Энтропия - это технический термин для «Случайности». Компьютеры на самом деле не генерируют энтропию, а собирают ее, рассматривая такие вещи, как вариации скорости вращения жесткого диска (физические явления, которые очень трудно предсказать из-за трения и т. Д.) Когда компьютер хочет генерировать псевдослучайные данные, он будет Заполнить математическую формулу с истинной энтропией, которую она нашла, измеряя щелчки мыши, вариации вращения жесткого диска и т. д. Грубо говоря,
entropy_avail
это мера битов, доступных в настоящее время для чтения из/dev/random
Компьютеру требуется время для считывания энтропии из окружающей среды, если у него нет классного оборудования, такого как шумный диод или что-то в этом роде.
Если у вас есть 4096 битов энтропии, и вы
/dev/random
можете рассчитывать, что сможете прочитать 512 байт энтропии (4096 битов) до того, как файл блокируется, пока он ожидает большей энтропии.Например, если вы «
cat /dev/random
», ваша энтропия сократится до нуля. Сначала вы получите 512 байт случайного мусора, но он остановится, и постепенно вы увидите больше случайных данных.Это не то, как люди должны работать,
/dev/random
хотя. Обычно разработчики читают небольшой объем данных, например 128 бит, и используют его для заполнения какого-то алгоритма PRNG. Вежливо не читать больше энтропии,/dev/random
чем нужно, так как это занимает много времени и считается ценным. Таким образом, если вы истощите его, небрежноcat
отметив файл, как описано выше, вы заставите другие приложения, которые должны читать,/dev/random
заблокировать. В одной из работающих систем мы заметили, что многие криптографические функции перестали работать. Мы обнаружили, что задание cron вызывает скрипт Python, который продолжал инициализироватьсяramdom.random()
на каждом запуске, который запускался каждые несколько секунд. Чтобы это исправить, мы переписали скрипт python, чтобы он работал как демон, который инициализировался только один раз, и задание cron считывало данные через XMLRPC, чтобы при запуске не прекращать чтение/dev/random
.источник
Вы можете прочитать больше на: http://linux.die.net/man/4/random
источник