[devel] kernel: отключить random.trust* из коробки
Alexey V. Vissarionov
gremlin на altlinux.org
Ср Фев 12 01:27:00 MSK 2025
Good ${greeting_time}!
On 2025-02-11 21:41:12 +0300, Andrey Savchenko wrote:
> Начиная с ядра 6.10 опции CONFIG_RANDOM_TRUST_CPU больше нет
Да и пусть с ней.
> Теперь доверие к RDRAND и энтропии от загрузчика включено
> по-умолчанию
Вполне себе источники энтропии. Если не использовать их как
единственные - ничуть не хуже остальных.
> И можно выключить только по: random.trust_cpu=off
> random.trust_bootloader=off
> Поэтому и пишу сюда, а не в devel-kernel, потому что изменения
> нужны на уровне параметров ядра со стороны загрузчика.
CONFIG_CMDLINE
> сложно рассматривать включенный из коробки random.trust_cpu
> иначе, чем бэкдор. У Intel дела не сильно лучше вспоминаем
> материалы Сноудена.
> И с random.trust_bootloader не лучше вспоминаем качество кода
> вендорских реализаций UEFI и количество проблем в них.
Повторю, так бывает в единственном случае - когда нет никаких
других источников.
Ой, а у нас их действительно нет... И что же это за вредители
такие их все массово поотключали, да еще и не дают ядру набрать
энтропию? :-)
> Поэтому предлагаю: во всех загрузчиках (grub, efi, lilo, extlinux,
> что там ещё у нас используется) добавить в kernel cmdline:
> random.trust_cpu=off random.trust_bootloader=off
Отказать, отменить и запретить.
Если по каким-то причинам (религиозным, наверное) совсем уж претит
использовать дополнительно от двух до десятка источников энтропии,
такой костыль действительно можно применить, но в CONFIG_CMDLINE:
это обеспечит его использование только в уязвимых ядрах (6.12 моей
сборки данная проблема не затрагивает, если что).
И если уж туда лезть, то сразу написать ro panic=30 rootdelay=10
> Да, у пользователей систем с сотнями контейнеров, где systemd
> выедает всю энтропию на старте системы, могут быть задержки
> в загрузке.
Запустил в одном терминале dd bs=1M if=/dev/random of=/dev/null ,
а в другом watch cat /proc/sys/kernel/random/entropy_avail
Устойчиво выдает 256, не шелохнется. Даже если аппаратный ГСЧ из
УПШ выдернуть.
Вопрос со звездочкой^{\tm}: как я этого добился и откуда берется
нужное количество случайных битов для подпитки ядерного генератора?
Подсказка: наполнение пула энтропии у меня происходит на шестой
секунде загрузки ядра.
> На таких системах пользователи могут убрать эти параметры ценой
> безопасности своих систем, что печально, т.к. обычно это хостинг.
Достаточно, чтобы в момент запуска init ядерный пул энтропии был
(1) наполнен (2) с использованием хотя бы одного доверенного
источника (а лучше трех-пяти). Дальше работает гаммирование с
подмешиванием случайных битов через add_hwgenerator_randomness(),
add_device_randomness(), add_interrupt_randomness() итд.
> Правильным лечением будет исправлять systemd, но ввиду острой
> нехватки галоперидола у его ключевых разработчиков это
> представляется затруднительным.
А еще это веский аргумент продолжать поддерживать sysVinit.
--
Alexey V. Vissarionov
gremlin ПРИ altlinux ТЧК org; +vii-cmiii-ccxxix-lxxix-xlii
GPG: 0D92F19E1C0DC36E27F61A29CD17E2B43D879005 @ hkp://keys.gnupg.net
Подробная информация о списке рассылки Devel