Make-initrd development discussion
 help / color / mirror / Atom feed
From: Alexey Gladkov <gladkov.alexey@gmail.com>
To: make-initrd@lists.altlinux.org
Subject: Re: [make-initrd] q: фича для зарыбливания RNG
Date: Mon, 5 Jul 2021 13:45:11 +0200
Message-ID: <20210705114511.goynngedmfptyric@example.org> (raw)
In-Reply-To: <20210705111130.GX2168@imap.altlinux.org>

On Mon, Jul 05, 2021 at 02:11:30PM +0300, Michael Shigorin wrote:
> 	Здравствуйте.
> Коллеги, в связи с очередной невменяемостью апстрима 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

Насколько вижу это всё касается исключительно systemd. Насколько мне
известно udevd не требует наличия энтропии.

Разве не правильнее добавить код в systemd так как это будет на си и будет
оптимальнее ?

-- 
Rgrds, legion



  reply	other threads:[~2021-07-05 11:45 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-05 11:11 Michael Shigorin
2021-07-05 11:45 ` Alexey Gladkov [this message]
2021-07-05 15:49   ` Michael Shigorin
2021-07-05 16:21     ` Alexey Gladkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210705114511.goynngedmfptyric@example.org \
    --to=gladkov.alexey@gmail.com \
    --cc=make-initrd@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Make-initrd development discussion

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/make-initrd/0 make-initrd/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 make-initrd make-initrd/ http://lore.altlinux.org/make-initrd \
		make-initrd@lists.altlinux.org make-initrd@lists.altlinux.ru make-initrd@lists.altlinux.com
	public-inbox-index make-initrd

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.make-initrd


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git