Генератор случайных чисел собирает окружающий шум с драйверов устройств и из других источников в пул энтропии. Генератор также постоянно оценивает количество бит шума в пуле энтропии. Именно с помощью этого пула создаются случайные числа.
При чтении устройство /dev/random возвращает единичные случайные байты, количество битов шума в которых равно количеству бит шума в пуле энтропии. /dev/random следует использовать, если требуется высокий коэффициент случайности, например, при использовании одноразовой шифровки (one-time pad) или при генерации ключа. Если пул энтропии пуст, попытка чтения /dev/random приведёт к задержке, пока не будет собран дополнительный окружающий шум.
При чтении устройство /dev/urandom возвратит столько байтов, сколько было запрошено. Как результат, если в пуле недостаточная энтропия, то возвращённые значения теоретически нестойки к криптографической атаке на алгоритмы, используемые драйвером. О том, как это сделать, не сказано в современной несекретной литературе, но теоретически возможно, что такая атака может существовать. Если это важно для вашего приложения, используйте лучше /dev/random.
mknod -m 644 /dev/random c 1 8 mknod -m 644 /dev/urandom c 1 9 chown root:root /dev/random /dev/urandom
echo "Initializing kernel random number generator..." # Инициализировать генератор случайных чисел ядра значениями # последнего выключения (или запуска системы). Загрузить и # затем сохранить 512 байт, которые составляют пул энтропии. if [ -f /var/random-seed ]; then cat /var/random-seed >/dev/urandom fi dd if=/dev/urandom of=/var/random-seed count=1
Также добавьте следующие строки в скрипт, который выполняется при
завершении работы Linux системы:
# Сохранить источник случайности для генератора случайных чисел # при завершении работы. Сохранить 512 байт, которые составляют # пул энтропии для генератора случайных чисел. echo "Saving random seed..." dd if=/dev/urandom of=/var/random-seed count=1
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |