Secure Boot/ru: Difference between revisions

From NixOS Wiki
Unabomberlive (talk | contribs)
Created page with "<syntaxHighlight lang=console> $ bootctl status System: Firmware: UEFI 2.70 (Lenovo 0.4720) Secure Boot: disabled (disabled) TPM2 Support: yes Boot into FW: supported"
Unabomberlive (talk | contribs)
Created page with "При использовании `systemd-stub', ядро и initrd приходится дублировать для '''каждого поколения''', а при использовании заглушки Lanzaboote ядро и initrd можно '''дедуплицировать''' без ущерба для безопасности."
 
(7 intermediate revisions by the same user not shown)
Line 18: Line 18:
== Требования ==
== Требования ==


<div lang="en" dir="ltr" class="mw-content-ltr">
Для реализации Secure Boot в Lanzaboote требуется система, установленная в режиме UEFI с включенной загрузкой systemd-boot. Это можно проверить, выполнив команду <code>bootctl status</code>:
The Secure Boot implementation of Lanzaboote requires a system installed in UEFI mode together with systemd-boot enabled. This can be checked by running <code>bootctl status</code>:
</div>


<syntaxHighlight lang=console>
<syntaxHighlight lang=console>
Line 35: Line 33:
</syntaxHighlight>
</syntaxHighlight>


<div lang="en" dir="ltr" class="mw-content-ltr">
Рекомендуется включить пароль BIOS и полное шифрование диска, чтобы предотвратить атаки на UEFI и Secure Boot.
It is recommended to enable a BIOS password and full disc encryption to prevent attacks against UEFI and Secure Boot.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<span id="Setup"></span>
== Setup ==
== Настройка ==
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
<div lang="en" dir="ltr" class="mw-content-ltr">
Line 47: Line 42:
</div>
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
== Управление ключами ==
== Key management ==
На момент написания статьи Lanzaboote предлагает только локальное хранение связки ключей, иначе невозможно перестроить систему и подписать новые результирующие файлы.
At the time of writing, Lanzaboote offers only local storage of the keyring, otherwise, it is not possible to rebuild the system and sign the new resulting files.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
В будущем Lanzaboote предложит два новых варианта подписи: удаленная подпись (HTTP-сервер, который получает запросы на подпись и отвечает подписями) и подпись на основе PKCS#11 (то есть с использованием HSM-подобного устройства, например, YubiKey, NitroKey и т.д.).
In the future, Lanzaboote will offer two new signature backends: remote signing (an HTTP server which receives signature requests and answers with signatures) and PKCS#11-based signing (that is, bringing an HSM-like device, e.g. YubiKey, NitroKey, etc.).
</div>


{{Warning|Управление ключами - сложная проблема, которая выходит за рамки проекта Lanzaboote, существует множество решений, но не существует единого идеального. Потратьте время на то, чтобы научиться управлять ключами и определить правильный уровень защиты от угроз - это очень важно для эффективной защиты загрузки}}.
{{Warning|Управление ключами - сложная проблема, которая выходит за рамки проекта Lanzaboote, существует множество решений, но не существует единого идеального. Потратьте время на то, чтобы научиться управлять ключами и определить правильный уровень защиты от угроз - это очень важно для эффективной защиты загрузки}}.


<div lang="en" dir="ltr" class="mw-content-ltr">
== Различия с `systemd-stub` ==
== Differences with `systemd-stub` ==
У systemd и upstream дистрибутивов есть существующее решение под названием `systemd-stub`, но оно не подходит для NixOS, так как в системе слишком много поколений.
systemd and distribution upstream have an existing solution called `systemd-stub` but this is not a realistic solution for NixOS as there's too many generations on a system.
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
При использовании `systemd-stub', ядро и initrd приходится дублировать для '''каждого поколения''', а при использовании заглушки Lanzaboote ядро и initrd можно '''дедуплицировать''' без ущерба для безопасности.
Using `systemd-stub`, a kernel and an initrd has to be duplicated for '''each generation''', using Lanzaboote's stub, a kernel and initrd can be '''deduplicated''' without compromising on the security.
</div>


<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, смотрите ниже, чтобы увидеть точные различия.

Warning: Lanzaboote все еще находится в разработке и требует некоторых предварительных условий и мер предосторожности. В настоящее время он доступен только для nixos-unstable. Для получения дополнительной информации, пожалуйста, обратитесь к репозиторию GitHub или руководству по Quick Start

.

Требования

Для реализации 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 и т.д.).

Warning: Управление ключами - сложная проблема, которая выходит за рамки проекта Lanzaboote, существует множество решений, но не существует единого идеального. Потратьте время на то, чтобы научиться управлять ключами и определить правильный уровень защиты от угроз - это очень важно для эффективной защиты загрузки

.

Различия с `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.