[make-initrd] q: фича для зарыбливания RNG
Michael Shigorin
mike at altlinux.org
Mon Jul 5 14:11:30 MSK 2021
Здравствуйте.
Коллеги, в связи с очередной невменяемостью апстрима systemd
(по совместительству udevd), в v240 выразившейся в повышении
требований к качеству псевдослучайных чисел на ранней стадии
загрузки[1,2], и возникающих вследствие этого залипаний этой
самой ранней стадии загрузки в ожидании каких-либо событий
-- бывает достаточно нажать Shift или вставить USB-флэшку --
предлагаю реализовать фичу, которая бы обеспечивала начальную
инициализацию ядерного RNG с опорой на то, что при старте
может "дребезжать" (особенно при наличии хоть какого-то RTC).
У нас тут образовался хак на скору руку, но он прямо по
rc.sysinit и заведомо неоптимален, вследствие чего далее
был предложен такой вид кусочка на шелле:
---
{
# Initialize bash random seed using current time nanoseconds
# to avoid possible kernel pool usage
RANDOM=$((10#$(date "+%N") % 32768))
seed=$( { dmesg; ls -l /var/log /proc; } | md5_bin | od -h )
for ((i=0; i<64; i++)); do
echo $seed $RANDOM $(date "+%s%N") | md5_bin
done > /dev/random
unset i seed
} &
---
или даже такой (но это ещё 128 форков):
---
{
export \
RANDOM=$((10#$(date "+%N") % 32768)) \
seed=$( { dmesg; ls -l /var/log /proc; } | md5_bin | od -h )
for ((i=0; i<64; i++)); do
( echo $seed $RANDOM $(date "+%s%N"); ls -l /proc ) | md5_bin
done > /dev/random
unset i seed
} &
---
Прилагаю хак и md5_bin.c, прошу совета:
* стоит ли так делать;
* как лучше собирать md5_bin имени ilyakurdyukov@;
* куда лучше поместить скрипт.
[1] http://systemd.io/RANDOM_SEEDS
[2] http://github.com/systemd/systemd/blob/v240/NEWS#L200
--
---- WBR, Michael Shigorin / http://altlinux.org
------ http://opennet.ru / http://anna-news.info
More information about the Make-initrd
mailing list