сообщение syslog при загрузке: неинициализированное чтение urandom

сообщение syslog при загрузке: неинициализированное чтение urandom

ЦП - этоAMD GX-412TC SOC:

GX-412TC GE412TIYJ44JB 4 6 Вт 2 МБ 1,0 ГГц/ 1,4 ГГц N/AN/A DDR-1333 0-90°C

который не имеет rdrand:

grep rdrand /proc/cpuinfo
# nothing

После загрузки компьютера я вижу следующие сообщения syslog:

kernel: random: dd: uninitialized urandom read (512 bytes read)
kernel: random: cryptsetup: uninitialized urandom read (32 bytes read)

Что именно означают эти сообщения и что я могу с этим сделать?

Означает ли это , ddчто и cryptsetupпопытаться прочитать из /dev/urandom, но энтропии недостаточно?

Я использую havegedдемон, но он запускается поздно в процессе загрузки, после появления этого сообщения.

Вот последовательность запуска моего загрузочного скрипта:

/etc/rcS.d/S01hostname.sh
/etc/rcS.d/S01mountkernfs.sh
/etc/rcS.d/S02mountdevsubfs.sh
/etc/rcS.d/S03checkroot.sh
/etc/rcS.d/S04checkfs.sh
/etc/rcS.d/S05mountall.sh
/etc/rcS.d/S06bootmisc.sh
/etc/rcS.d/S06procps
/etc/rcS.d/S06urandom
/etc/rcS.d/S07crypto-swap
/etc/rc2.d/S01haveged
/etc/rc2.d/S01networking
/etc/rc2.d/S04rsyslog
/etc/rc2.d/S05cron
/etc/rc2.d/S05ssh

Сообщения в системном журнале поступают из этих двух скриптов:

/etc/rcS.d/S06urandom  -> dd
/etc/rcS.d/S07crypto-swap -> cryptsetup

Следует ли havegedначинать раньше urandom?

Я использую Debian 10.

Также я должен добавить, что эта машина — голая плата, без клавиатуры. Единственный интерфейс — последовательная консоль. Я думаю, что это влияет на доступную энтропию, и это причина, по которой я установил ее havegedв первую очередь. Без havegedдемон sshdне запустился бы в течение нескольких минут, потому что у него недостаточно энтропии.

решение1

Ваш диагноз верен: была предпринята попытка чтения пустого пула энтропии. Это "время загрузки энтропийное голодание".

Вы можете использовать systemd-boot, если у вас система EFI,проигнорируйте предупреждение(вы используете предсказуемую криптовалюту, но вбольшинствоиспользуйте варианты, которые все равно лучше, чем полное отсутствие криптографии), или попробуйте кредитовать энтропию из альтернативных источников -если доступно- добавление этого в командную строку ядра

rng_core.default_quality=X

(начните с X=1000 и идите вниз).

Существуют и другие методы сбора энтропии; SOC может иметь некоторые доступные пины, и есть модули аппаратных драйверов, которые позволяют собирать энтропию с них. Затем остается только подключить подходящую транзисторно-резисторную установку (или, в некоторых случаях, электретный микрофон) для сбора некоторого теплового шума.

С другой стороны, ядра серии 5.4+ имеют более эффективный сбор энтропии, которого может быть достаточно.

решение2

Для работы haveged он должен быть совместим с вашим ядром — есть проблема, когда haveged ничего не делает в версиях ядра >=5.x, см.hasged все еще полезен/актуален? #57на GitHub.

Разработчик был настолько любезен, что заново представил функционал, но эти исправления должны быть выпущены и затем сначала добавлены в различные дистрибутивы... старая версия либо вообще не запустится, либо не будет ничего делать, даже если она запущена (проверьте с помощью strace), поскольку пул энтропии ядра, похоже, больше не испытывает недостатка — но crng init по какой-то причине все еще занимает время.

Он также должен запускаться очень рано, поэтому если вы используете initramfs, то вам также нужно запустить haveged в initramfs, за некоторое время до использования случайного устройства. В традиционной системе init haveged должен запускаться как можно скорее /proc /sys /dev.

Я не уверен, сколько времени требуется haveged, чтобы отправить энтропию ядру... он должен сначала собрать случайность самостоятельно и запустить несколько качественных тестов. В моем последнем тесте (с пропатченным haveged) была задержка примерно в полсекунды между запуском haveged и отчетом ядра random: crng init done.

В дополнение к haveged вы также можете рассмотреть возможность сохранения/восстановления случайного начального числа, и если у вас есть сеть, небольшой трафик также может помочь ядру собрать некоторую энтропию.

Связанный контент