[devel] rngd vs haveged vs crng (khwrngd)

Alexey V. Vissarionov gremlin на altlinux.org
Вт Сен 3 08:58:55 MSK 2019


On 2019-09-03 01:25:00 +0300, Paul Wolneykien wrote:

 >>> Он при всем желании не может стартануть раньше, чем ядро
 >>> скажет run_init_process("/sbin/init");
 > Означает ли это, что в ядре есть код, который сперва ждёт
 > накопления N байт хорошей энтропии, и только после этого
 > выполняет run_init_process("/sbin/init") ?

В ядре такой проверки нет. И вероятность ее появления лично я
оцениваю как пренебрежимо малую.

 >>> 2. к моменту начала использования недоверенного RNG пул
 >>> должен быть заполнен данными из других источников.
 > Когда читаешь "должен быть заполнен" как отдельное условие,
 > то кажется, что тут есть элемент желательности. Мол, должен
 > быть заполнен, если всё идёт по плану.

Именно так. Потому что если он не будет заполнен - недоверенный
источник может выдать детерминированную последовательность и тем
самым ослабить криптозащиту.

 > А если не заполнен, то значит вы это не обеспечили, должным
 > образом не настроили и т.д.

Разумеется.

 > Если это так, то мне стало интересно, почему это сделано так
 > сложно, что изначально содержит в себе потенциальную возможность
 > race и deadlock?

Строго наоборот: очень долгое время (много лет) проблемы просто не
возникали, так как ядро успевало набрать энтропию всеми четырьмя
возможными способами - add_device_randomness(), add_disk_randomness(),
add_input_randomness() и add_interrupt_randomness(). Сейчас компутеры
стали производительнее и загружаются быстрее, да еще и люди мешают:
источники энтропии инициализируют поздно, а данные из ГСЧ хотят рано.

 > По описываемым симптомам, проблема явно в том, что PID 1 стартует
 > раньше, чем заполнен пул энтропии (необходимым и достаточным её
 > количеством). Но поскольку за запуск PID 1 и за энтропию отвечает
 > одно и то же ядро, то непонятно, почему нельзя сначала накопить
 > энтропию (послушать диски, сеть и т.п.), и только потом уже
 > запустить PID 1?

Почему нельзя-то? Можно. Но, похоже, никому не нужно.


-- 
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net


Подробная информация о списке рассылки Devel