> !try_to_run_init_process("/bin/sh")А теперь внимательнее почитай эту функцию. Там выше запускается /init из initramfs, который расшифровывает диск. Вот он должен быть максимально тупым, и никаких шеллов не запускать без предварительной блокировки (и проверки её успешности) ключа.
Если хочешь делать систему безопасной, снижай число переменных (уменьшай trusted computing base), а те, что остались, измеряй в PCR. Прежде, чем использовать TPM, стоит почитать рекомендации TCG.
Trusted computing base можно сделать даже меньше ядра Linux, если использовать TXT и late launch.
> доступ к железке (хотя бы удаленный доступ к вводу на этапе загрузки) - это уже больше, чем "рут"
Нет, если правильно настроены механизмы integrity. В Linux для этого есть kernel_lockdown(7) и IMA.
> TPM - надежным местом для паролей не является by design
By design TPM позволяет изолировать ключи и пароли от небезопасного состояния Host OS. То есть это альтернатива не сохранению ключа на флешку, пароля в мозг или носимый с собой криптотокен, а альтернатива записи его в конфиг на диске, находящимся под постоянным контролем Host OS.
> Глупо полагаться, что в процессе загрузки ядра ничего не случится.
Поэтому есть DRTM, SINIT ACM и TXT, позволяющие отменить всё то потенциально нехорошее, что случилось в процессе загрузки прошивки/загрузчика/ядра. Пристукнет даже ту малварь, которая в SMI handler смогла влезть.