From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 5 Jul 2021 13:45:11 +0200 From: Alexey Gladkov To: make-initrd@lists.altlinux.org Message-ID: <20210705114511.goynngedmfptyric@example.org> References: <20210705111130.GX2168@imap.altlinux.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <20210705111130.GX2168@imap.altlinux.org> Subject: Re: [make-initrd] =?utf-8?b?cTog0YTQuNGH0LAg0LTQu9GPINC30LDRgNGL0LE=?= =?utf-8?b?0LvQuNCy0LDQvdC40Y8gUk5H?= X-BeenThere: make-initrd@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: make-initrd@lists.altlinux.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 05 Jul 2021 11:45:12 -0000 Archived-At: List-Archive: 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