Различие между vmlinuz *-generic и *-generic.efi.signed

В /boot, существуют два vmlinuz файлы ядра:

vmlinuz-4.8.0-37-generic
vmlinuz-4.8.0-37-generic.efi.signed

Каково различие между этими двумя файлами ядра? Кто подписывает второй (если бы он действительно подписывается, как имя предполагает), и как мой UEFI/BIOS знал бы, чтобы доверять и использовать *-generic.efi.signed вместо *-generic?

4
задан 16 February 2017 в 02:27

2 ответа

Ядро с именем файла, заканчивающимся .efi.signed, подписывается Каноническим для использования с Защищенной загрузкой. Большинство компьютеров имеет встроенное микропрограммное обеспечение, которое не доверяет подписи Canonical, хотя; это только с помощью программы Контейнера (shimx64.efi двоичный файл на ESP), что ядру со знаком доверяют.

Для разработки немного загружающийся путь для компонентов со знаком Ubuntu с включенной Защищенной загрузкой похож на это:

EFI -> Shim -> GRUB 2 -> Kernel -> Kernel modules
  • EFI доверяет Контейнеру, потому что он был подписан Microsoft, ключи которой встраиваются во встроенное микропрограммное обеспечение.
  • Контейнер исправляет подсистему Защищенной загрузки EFI и включает открытый ключ Canonical. Контейнер доверяет GRUB 2, потому что он был подписан с закрытым ключом Canonical.
  • GRUB 2 обращается к системе Защищенной загрузки EFI с просьбой (теперь исправленный Контейнером) проверить ядро, которое также подписывается с закрытым ключом Canonical.
  • ядро проверяет, что модули ядра подписываются закрытым ключом Canonical или некоторым другим ключом в цепочке Защищенной загрузки.

До, IIRC, Ubuntu 15.10, GRUB 2 Ubuntu не осуществлял политику Защищенной загрузки в отношении ядра, и ядро не осуществляло политику Защищенной загрузки в отношении модулей ядра. Это было недавно сжато, все же. AFAIK, нет никаких планов потребовать, чтобы были подписаны обычные системные двоичные файлы.

я не знаю бесцеремонно, почему существует неподписанный файл ядра в Ubuntu. Файл со знаком хорошо работает даже в системах, которые не поддерживают Защищенную загрузку (включая компьютеры чистого BIOS). Таким образом неподписанный файл довольно избыточен, AFAIK.

Примечание, что каждый из компонентов от Контейнера вперед может быть получен в неподписанной форме или их снятых подписях. Если Вы создаете, Шиммируют себя, можно заменить открытый ключ Canonical собственным, или любым другим открытым ключом Вам нравится. (Большинство основных дистрибутивов имеет свои собственные двоичные файлы Контейнера с их собственными ключами, встроенными в.) Создающий Контейнер из источника было бы бессмысленно, если Вы не заставляете Microsoft подписывать его, который стоил бы 100$ и взял бы партия из усилия. Если необходимо подписать вещи сами, добавив ключ, поскольку Владелец машины ключ (MOK) легче, чем восстановление Контейнера и получение подписанного Microsoft. Можно также настроить наборы ключей, поддерживаемые непосредственно EFI, который может устранить потребность в Контейнере. Таким образом, существует много, можно измениться о том, как все эти части совмещаются. См. моя основная страница на Защищенной загрузке и моя страница при том, чтобы брать на себя полное управление Защищенной загрузки для получения дополнительной информации о том, как управлять Защищенной загрузкой.

4
ответ дан 1 December 2019 в 09:32

Подписанная версия является для UEFI безопасной начальной загрузкой. Это было подписано с помощью асимметричного шифрования. Означание, что ключ для дешифрования его отличается, чем тот, раньше шифровало его. BIOS только имеет открытый ключ и может проверить, корректна ли подпись (не вмешался). Закрытый ключ для создания такой подписи является секретным, и для этого Вы не можете создать его сами. Именно поэтому BIOS доверяет ему и позволяет ему запускаться.

Для большего количества информации: https://wiki.ubuntu.com/SecurityTeam/SecureBoot

1
ответ дан 1 December 2019 в 09:32

Другие вопросы по тегам:

Похожие вопросы: