Secure Boot/ru: Difference between revisions

From NixOS Wiki
Unabomberlive (talk | contribs)
Created page with "{{Warning|Управление ключами - сложная проблема, которая выходит за рамки проекта Lanzaboote, существует множество решений, но не существует единого идеального. Потратьте время на то, чтобы научиться управлять ключами и определить правильный уровень защиты от угроз -..."
Tags: Mobile edit Mobile web edit
Unabomberlive (talk | contribs)
Created page with "При использовании `systemd-stub', ядро и initrd приходится дублировать для '''каждого поколения''', а при использовании заглушки Lanzaboote ядро и initrd можно '''дедуплицировать''' без ущерба для безопасности."
 
(10 intermediate revisions by the same user not shown)
Line 4: Line 4:
Secure Boot имеет несколько реализаций, наиболее известная - UEFI Secure Boot, которая опирается на прошивку платформы UEFI, но во встраиваемых системах могут существовать и другие реализации.  
Secure Boot имеет несколько реализаций, наиболее известная - UEFI Secure Boot, которая опирается на прошивку платформы UEFI, но во встраиваемых системах могут существовать и другие реализации.  


<div lang="en" dir="ltr" class="mw-content-ltr">
На NixOS, Secure Boot может быть включён с помощью проекта [Lanzaboote].  
On NixOS, Secure Boot can be enabled via the project [https://github.com/nix-community/lanzaboote Lanzaboote].
</div>


Lanzaboote состоит из двух компонентов:
Lanzaboote состоит из двух компонентов:
Line 20: 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>


<div lang="en" dir="ltr" class="mw-content-ltr">
<syntaxHighlight lang=console>
<syntaxHighlight lang=console>
$ bootctl status
$ bootctl status
Line 32: Line 27:
  TPM2 Support: yes
  TPM2 Support: yes
  Boot into FW: supported
  Boot into FW: supported
</div>


<div lang="en" dir="ltr" class="mw-content-ltr">
Current Boot Loader:
Current Boot Loader:
       Product: systemd-boot 251.7
       Product: systemd-boot 251.7
...
...
</syntaxHighlight>
</syntaxHighlight>
</div>


<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 53: 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.