LINUX.ORG.RU

Вопрос по Secure Boot

 


2

2

привет, ЛОР.
вопрос к знатокам, а то я чёт туплю.

вот допустим я включил секурбут, подписал ядро+initrd своим ключиком, который добавил в UEFI.
таким образом, по идее, защищаются от несанкционированной загрузки другой ОС?

но ведь злоумышленник может в том же UEFI отключить secure boot и загрузить что угодно.
пароль на биос? он разве не сбрасывается перемычкой/обесточиванием на ноуте?

как это вообще должно работать и от чего защищать? требуется пояснительная бригада.
ненужнист фирфокс @firkax не нужен.

таким образом, по идее, защищаются от несанкционированной загрузки другой ОС?

Таким образом защищаются от загрузки недоверенного загрузчика/операционки. Не только другой, но и модифицированной твоей.

но ведь злоумышленник может в том же UEFI отключить secure boot и загрузить что угодно.

Пароль на BIOS, датчик вскрытия корпуса, зашифрованный диск, TPM. Secureboot - один из компонентов защиты. От всего не убережет.

undef ★★★
()

Сначала надо свои ключи в биос добавить. Ну а безопасность это когда микросхема не перезаписываемая, а то сейчас уже и уефи ломать научились. Тогда придется аппаратные ключи шифрования использовать, чтобы что-то в биосе поменять в отдельной памяти куда параметры должны бы записываться. Причем опять же нужны микросхемы одноразовой записи, чтобы один раз задать откуда грузить систему. Перезаписываемое по определению небезопасно. Проблема в том что главным сделали чипсет и потому пришлось создавать монструозную уефи, чтобы все анальные зонды туда запихать. Это типа технологии так развиваются, если это можно назвать развитием когда компы даже загрузиться не в состоянии.

anonymous
()

пароль на биос? он разве не сбрасывается перемычкой/обесточиванием на ноуте?

Про физический доступ уже написали выше, это от норкомана Себастиана, который сдаст в ломбард за 1/100 стоимости нового ноута, а там просто спишут как нерабочий.

В более-менее нормальных ноутах пароль на биос НЯЗ хранится в отдельной области EC, которая перезаписывается только на программаторе. Если интересно, призови @shalom_, он лучше скажет, у него опыта вагон с тележкой по этому вопросу.

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

SecureBoot защищает исполняемый файл, которому передаёт управление UEFI. Как правило это shim. Но может быть загрузчик (например grub или systemd-boot), или сразу ядро в формате UKI. Это всё, что он делает. Нужно тебе это или не нужно - тебе видней.

Например на моём компьютере SecureBoot это тот компонент, который обеспечивает расшифровку корневой файловой системы без ввода пароля. Т.е. в выключенном состоянии у меня файловая система зашифрована. Расшировать можно, зная пароль, или получив доступ к ключу в TPM. TPM отдаёт ключ, только если включен SecureBoot. С включенным SecureBoot можно загрузить только подписанное моим ключом ядро. Получается простая и защищённая от интересующих меня угроз система.

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

С включенным SecureBoot можно загрузить только подписанное моим ключом ядро.

Тогда выходит так, что при обновлении ядра «Линукса» ты заново пересоздаёшь ключи и зашиваешь их в ТПМ? Это делается вручную в «Терминале»?

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

Тогда выходит так, что при обновлении ядра «Линукса» ты заново пересоздаёшь ключи и зашиваешь их в ТПМ?

Нет. Ключ создан один раз и установлен в UEFI. Это делается в его настройках. При обновлении ядра оно подписывается тем же ключом, что и старое.

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

Нет. Ключ создан один раз. При обновлении ядра оно подписывается заново тем же ключом.

Тобой в «Терминале» или в УЕФИ? Указать-то файл нового ядра для переподписывания всё равно кто-то должен же.

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

Я сохраняю ключ в TPM так (один раз при установке ОС):

systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=7 /dev/nvme0n1p2

PCR7: Secure Boot state; changes when UEFI SecureBoot mode is enabled/disabled, or firmware certificates (PK, KEK, db, dbx, …) changes.

Т.е. ключ отдаётся, если не поменялось состояние SecureBoot и не поменялись сертификаты. Это при обновлении ядра не меняется, поэтому ничего обновлять не надо. У тебя, вероятно, указан другой набор PCR, которые меняются при обновлении самого ядра. Это с одной точки зрения более безопасно (например с моей схемой можно сохранить старое подписанное ядро и в будущем загрузиться с него, если есть доступ к диску), с другой стороны, конечно, требует обновлять ключ при обновлении ядра.

vbr ★★★★★
()
Последнее исправление: vbr (всего исправлений: 2)
Ответ на: комментарий от yars068

А вот это интересно. Только это не решает проблему. Проблема в запаивании биоса вместо организации съемной микросхемы. А флешка нужна разве что на чокнутых ноутбуках где не весь биос помещается в микросхему. Это все жесть лютая, так что нельзя просто так отключить защиту и легко восстановить комп в случае взлома биос откуда вирусню не выковырять без программатора, а программатор может не сработать без выпаивания микросхемы. Мы же можем выбирать нужна нам шокотерапия процессора на постоянной основе со сбросом кеша или ненужна, выключая через mitigations=off этот расколбас во имя пресвятой безопасности. Я столько раз переставлял систему что отчетливо вижу что обновление практически от установки не отличается. Занимает мало времени, настройки все через файлы кидаются. Проблема только в биосе может быть с созданными проблемами для его воскрешения. А флешка, ну сойдет для загрузки, но опять же неудобно это. С кнопкой включающей записть еще куда ни шло. Можно с лайв системы грузиться в настроенную систему сразу, чтобы она только в памяти крутилась. Ну поломают, ну и что? Перезагрузка спасет, кроме подставы в биосе.

anonymous
()

пароль на биос? он разве не сбрасывается перемычкой/обесточиванием на ноуте?

Уже видел даже десктоп мать, где есть настройка, сбрасывать ли пароль перемычкой.

GAMer ★★★★★
()

От чего защитит? - НИ ОТ ЧЕГО. Без Secure Boot TPM работать не будет.

На современных материнках процесс сей довольно прост:

  • Включаем обратно секуре бут во вкладке Boot. Для этого CSM Support должен быть переведен в Disabled.
  • Открываем пункт Secure Boot.
  • Меняем Secure Boot Mode на Custom.
  • Далее заходим в Expert Key Management.
  • Находим Enroll Efi Image. Теперь нужно два раза подписать сл. файлы: vmlinuz-linux (ядро) и EFI/BOOT/BOOTX64.EFI. Так ты добавляешь хеши этих файлов в хранилище криптографического сопроцессора TPM.
  • Опционально можно поставить пароль на BIOS, если в дальнейшем планируешь тот же Luks расшифровывать через TMP.
  • Сохраняем настройки, перегружаемся.

Ну а после загрузки системы ставим sbctl, в Arch Linux он содержит хук, который автоматически подписывает ядро и загрузчики после обновления. Это наипростейшая инструкция из моря дрисни, которую ты найдешь в Интернете. И даже нейродебил тебе проще не объяснит. Он портянку бреда как обычно высирает, потому что это тема нишевая никому нахрен неинтересная.

С загрузочными флешками тоже самое проделывается: Enroll Efi Image, EFI/BOOT/BOOTX64.EFI. А далее в случае с Ventoy появится меню, где нужно выбрать Enroll key from disk и добавить ключ, валяющийся в корне загрузочного раздела флешки с именем ENROLL_THIS_KEY_IN_MOKMANAGER.cer.

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

Для полностью доверенной загрузки через UEFI нужно иметь подписанное ядро, его модули и загрузчик, либо использовать подписанный же UKI и загружаться через UEFI непосредственно. Но это лишает возможности в случае чего передать ядру какие-нибудь параметры. Так, или не так?

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

ничего тебя не лишает. для uki параметры ядра прописываются в отдельном конфиге. я не знаю нахрен он кому-то нужен… ну кроме как с ним вроде сервис systemd уже его подписывает, а не через хуки

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

Ну, отдельный конфиг – ладно. Но на ходу уже что-то не поправишь. Надо грузиться, вносить правки в конфиг и обновлять подписи. То есть, потенциальное устранение проблем несколько усложняется :)

yars068 ★★★★★
()
Ответ на: комментарий от Wapieth

да. так и было… но все пошло не по плану… и евросовки пробили возможность выключать секуре бут и даже генерировать свои ключи… но это лишнее там привязка к железу. зашифрованный диск виндой или линуксом с применением tpm можно расшифровать только на твоем проце и материнке… это я точно не помню. сами ключи в проце лежат, но там вроде связка проц-мать-диск, замена чего-либо делает расшифровку невозможной. tpm - это в целом хорошо в мире… ну не в мирес а в отдельно-взятой стране…

rtxtxtrx ★★★
()

Лучшее что можно с секьюрбутом сделать - его выключить. Бесполезное говно. Единсвтенная его функция - заставить вас грущить виндоуз и только виндоуз, но пока благодяря антимонопольному законодательству и давлению общественности его не сделали обязательным и неотключаемым. Примерно также как эппловсий чип т2 потенциально может вам запретить поменять батарейку в макбуке но пока не запрещает.

Для того чтобы сохранить данные - шифруйте фс. А то что ваш ноут с секьюрбутом нельзя будет переформатировать и использовать как железку без пайки - не побудит цыгана укравшего ноут вам его вернуть.

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

на своих карбонах я вот такое использую:

--tpm2-pcrs=0+2+5+7+12

0 — BIOS/UEFI firmware (замена или апдейт биоса)
2 — настройки BIOS/UEFI
5 — загрузочный путь (EFI) (загрузка с другого носителя)
7 — Secure Boot 
12 — вскрытие корпуса
kixx09
()