LINUX.ORG.RU

Ответ на: комментарий от mandala

Вроде, текущие механизмы secureboot в связки с поддерживаемыми бутлоадерами - проверяют подпись только у ведра. Потому-что предполагается что Initrd может быть пересобран на машине пользователя а ключей для подписи у него нет.

DawnCaster ()
Последнее исправление: DawnCaster (всего исправлений: 1)
Ответ на: комментарий от mandala

Ну, это-то понятно. Но применять такое слишком сложно: современный initramfs давно уже делает намного больше чем просто загружает в ведро дополнительные модули (тот-же популярный dracut - по-сути уже мини-ОС является). В современных дистрах применять такое ведро будет весьма затруднительно. Хотя-бы просто потому что будет весьма сложно организовать элементарный ввод пароля для разблокировки корневого раздела.

DawnCaster ()
Ответ на: комментарий от DawnCaster

Но применять такое слишком сложно

Если такой тип атаки рассматривается пользователем как вероятный, то уж извините.

Тогда вообще нужно использовать кастомный ro-образ для загрузки с аппаратно не изменяемого устройства (например, компакт-диск) и там уже монтировать зашифрованное устройство, справить всё это виртуализацией по вкусу. Например, примерно так реализован TAILS – уже на пользовательском уровне. Whonix юзает виртуализацию, но там упор на защиту от удаленного проникновения. Если комбинировать эти подходы вполне можно обычному пользователю защититься от сабжевой атаки.

mandala ★★★★ ()
Последнее исправление: mandala (всего исправлений: 1)
Ответ на: комментарий от DawnCaster

Вот, кстати, попалась тут ссылка:

https://casualhacking.io/blog/2015/10/31/booting-linux-securely

Присобачиваем initramfs к самому ядру в одно efi-приложение. (попалась тут https://habr.com/ru/post/308032/ – для общего понимания тем кто далек от всего этого полезно будет как отправная точка погружения в тему).

mandala ★★★★ ()
Последнее исправление: mandala (всего исправлений: 2)

а может ли помочь новая фишка в Debian 10 - APPARMOR ? ведь можно запретить запуск «dmsetup table --showkeys», да и вообще запретить запуск всего чего угодно не разрешённого явно. ?

mxn2019 ()

Для фул диск шифрования очень хорошо подходить Гента, со своим встроеным механизмом сборки ядра. Просто нужно сделать свой init скрипт и собрать нужные утилиты и сложить в соответствующюю директорию. Ядро собирается одним файлом с initramfs. Если у тебя uefi, то ложишь его на флешку(ef00 раздел) с именем bootx64.efi и все...

QIQuJIunn ★★ ()

По ссылке не ходил, но ответ дам.

GNU/GRUB умеет проверять подписи RSA и не грузить если подпись не подошла.

Все файлы в /boot должны иметь «отдельную подпись».

Опция check_signatures=enforce

В grub-install можно как параметры указать публичный ключ, и необходимые модули криптографии.

Если секретный ключ удалить, а публичный запомнить, то криптография даёт гарантию неизменности initramfs.

anonymous ()
Ответ на: комментарий от DawnCaster

Вроде, текущие механизмы secureboot в связки с поддерживаемыми бутлоадерами - проверяют подпись только у ведра.

Нет. Секуребут, тбут проверяют подпись только загрузчика.

Если загрузчик grub, то он может проверить ВСЕ что грузит, включая инитрд с помощью публичного ключа RSA.

Далее в initramfs должна происходить инициализация IMA/EVM и подружка их ключей, для верификации init и всего остального, настроенного политикой.

anonymous ()
Ответ на: комментарий от anonymous

Если загрузчик grub, то он может проверить ВСЕ что грузит, включая инитрд с помощью публичного ключа RSA.

А как вы планируете подписывать initrd который создаётся динамически, приватным ключём от сборщика дистрибутива который собрал и подписал ядро ? У вас-же нет этого ключа. В этом-то и смысл безопасной загрузки. Или RSA ключ ваш собтвенный ?

Можете пример конфига показать, в котором граб проверяет подписи для всего, а не только для ядра ? А то я что-то с ходу не нашел.

DawnCaster ()
Ответ на: комментарий от DawnCaster

Все согласно info grub

Вы создаете пару RSA ключей.

Подписываете ею все файлы в /boot как detuched signature, создаются файлы с расширением sig.

Устанавливаеш

grub-install --pubkey=/...... --modules='gcry_rsa gcry_sha512' /dev/sda

Надо указать публичный ключ и необходимые модули криптографии.

Проверка будет если установлена переменная:

check_signatures=enforce

Распечатай публичный ключ и уничтож секретный. Так получил криптографическая гарантию неизменности всего что в /boot включая initrd.

Твой секуребут или тбут должен подписать именно загрущик grub с публичным ключом и модулями криптографии. Они находятся в MBR и не шифруются как /boot

anonymous ()
Ответ на: комментарий от DawnCaster

У тебя все кроется как подписать твой уникальный core.img с твоим публичным ключом и модулями криптографии. Кажись это возможно только в coreboot. На счёт tboot, secureboot не знаю как ими уникальный, личный core.img подписать.

anonymous ()