Secure Boot/ru: Difference between revisions
Created page with "<code>lzbt</code> - это программа командной строки, которая подписывает и устанавливает загрузочные файлы на ESP." |
Created page with "При использовании `systemd-stub', ядро и initrd приходится дублировать для '''каждого поколения''', а при использовании заглушки Lanzaboote ядро и initrd можно '''дедуплицировать''' без ущерба для безопасности." |
||
(13 intermediate revisions by the same user not shown) | |||
Line 4: | Line 4: | ||
Secure Boot имеет несколько реализаций, наиболее известная - UEFI Secure Boot, которая опирается на прошивку платформы UEFI, но во встраиваемых системах могут существовать и другие реализации. | Secure Boot имеет несколько реализаций, наиболее известная - UEFI Secure Boot, которая опирается на прошивку платформы UEFI, но во встраиваемых системах могут существовать и другие реализации. | ||
На NixOS, Secure Boot может быть включён с помощью проекта [Lanzaboote]. | |||
Lanzaboote состоит из двух компонентов: | Lanzaboote состоит из двух компонентов: | ||
Line 13: | Line 11: | ||
<code>lzbt</code> - это программа командной строки, которая подписывает и устанавливает загрузочные файлы на ESP. | <code>lzbt</code> - это программа командной строки, которая подписывает и устанавливает загрузочные файлы на ESP. | ||
<code>stub</code> - это UEFI-приложение, которое загружает ядро и initrd из ESP. Оно отличается от systemd-stub, смотрите ниже, чтобы увидеть точные различия. | |||
<code>stub</code> | |||
{{warning|Lanzaboote все еще находится в разработке и требует некоторых предварительных условий и мер предосторожности. В настоящее время он доступен только для nixos-unstable. Для получения дополнительной информации, пожалуйста, обратитесь к репозиторию GitHub или руководству по Quick Start}}. | |||
{{warning|Lanzaboote | |||
<span id="Requirements"></span> | <span id="Requirements"></span> | ||
== Требования == | == Требования == | ||
Для реализации Secure Boot в Lanzaboote требуется система, установленная в режиме UEFI с включенной загрузкой systemd-boot. Это можно проверить, выполнив команду <code>bootctl status</code>: | |||
<syntaxHighlight lang=console> | <syntaxHighlight lang=console> | ||
$ bootctl status | $ bootctl status | ||
Line 36: | Line 27: | ||
TPM2 Support: yes | TPM2 Support: yes | ||
Boot into FW: supported | Boot into FW: supported | ||
Current Boot Loader: | Current Boot Loader: | ||
Product: systemd-boot 251.7 | Product: systemd-boot 251.7 | ||
... | ... | ||
</syntaxHighlight> | </syntaxHighlight> | ||
Рекомендуется включить пароль BIOS и полное шифрование диска, чтобы предотвратить атаки на UEFI и Secure Boot. | |||
< | <span id="Setup"></span> | ||
== | == Настройка == | ||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> | ||
Line 57: | Line 42: | ||
</div> | </div> | ||
== Управление ключами == | |||
На момент написания статьи Lanzaboote предлагает только локальное хранение связки ключей, иначе невозможно перестроить систему и подписать новые результирующие файлы. | |||
В будущем Lanzaboote предложит два новых варианта подписи: удаленная подпись (HTTP-сервер, который получает запросы на подпись и отвечает подписями) и подпись на основе PKCS#11 (то есть с использованием HSM-подобного устройства, например, YubiKey, NitroKey и т.д.). | |||
{{Warning|Управление ключами - сложная проблема, которая выходит за рамки проекта Lanzaboote, существует множество решений, но не существует единого идеального. Потратьте время на то, чтобы научиться управлять ключами и определить правильный уровень защиты от угроз - это очень важно для эффективной защиты загрузки}}. | |||
{{Warning| | |||
== Различия с `systemd-stub` == | |||
У systemd и upstream дистрибутивов есть существующее решение под названием `systemd-stub`, но оно не подходит для NixOS, так как в системе слишком много поколений. | |||
systemd | |||
При использовании `systemd-stub', ядро и initrd приходится дублировать для '''каждого поколения''', а при использовании заглушки Lanzaboote ядро и initrd можно '''дедуплицировать''' без ущерба для безопасности. | |||
<div lang="en" dir="ltr" class="mw-content-ltr"> | <div lang="en" dir="ltr" class="mw-content-ltr"> |
Latest revision as of 15:34, 11 August 2024
Под безопасной загрузкой обычно подразумевается возможность встроенного программного обеспечения платформы проверять компоненты загрузки и гарантировать, что загрузится только ваша собственная операционная система.
Secure Boot имеет несколько реализаций, наиболее известная - UEFI Secure Boot, которая опирается на прошивку платформы UEFI, но во встраиваемых системах могут существовать и другие реализации.
На NixOS, Secure Boot может быть включён с помощью проекта [Lanzaboote].
Lanzaboote состоит из двух компонентов:
lzbt
and stub
.
lzbt
- это программа командной строки, которая подписывает и устанавливает загрузочные файлы на ESP.
stub
- это UEFI-приложение, которое загружает ядро и initrd из ESP. Оно отличается от systemd-stub, смотрите ниже, чтобы увидеть точные различия.
.
Требования
Для реализации Secure Boot в Lanzaboote требуется система, установленная в режиме UEFI с включенной загрузкой systemd-boot. Это можно проверить, выполнив команду bootctl status
:
$ bootctl status
System:
Firmware: UEFI 2.70 (Lenovo 0.4720)
Secure Boot: disabled (disabled)
TPM2 Support: yes
Boot into FW: supported
Current Boot Loader:
Product: systemd-boot 251.7
...
Рекомендуется включить пароль BIOS и полное шифрование диска, чтобы предотвратить атаки на UEFI и Secure Boot.
Настройка
Follow the instructions in the Quick Start guide.
Управление ключами
На момент написания статьи Lanzaboote предлагает только локальное хранение связки ключей, иначе невозможно перестроить систему и подписать новые результирующие файлы.
В будущем Lanzaboote предложит два новых варианта подписи: удаленная подпись (HTTP-сервер, который получает запросы на подпись и отвечает подписями) и подпись на основе PKCS#11 (то есть с использованием HSM-подобного устройства, например, YubiKey, NitroKey и т.д.).
.
Различия с `systemd-stub`
У systemd и upstream дистрибутивов есть существующее решение под названием `systemd-stub`, но оно не подходит для NixOS, так как в системе слишком много поколений.
При использовании `systemd-stub', ядро и initrd приходится дублировать для каждого поколения, а при использовании заглушки Lanzaboote ядро и initrd можно дедуплицировать без ущерба для безопасности.
Tracking the feature parity with `systemd-stub` can be done in this issue: https://github.com/nix-community/lanzaboote/issues/94.