Есть ли способ узнать, примет ли мой загрузчик EFI подпись двоичного файла без перезагрузки?

Есть ли способ узнать, примет ли мой загрузчик EFI подпись двоичного файла без перезагрузки?

Предположим, что я только что установил подписанный загрузчик EFI (например, grub2из Ubuntu 14.10 amd64 на Lenovo IdeaPad U410, который может загружаться только в защищенном режиме загрузки EFI или в режиме legacy) на машину из системы Linux или (более конкретно) на базе Debian. Есть ли способ узнать, будет ли машина загружаться из работающей системы без перезагрузки?

решение1

Да, но вы должны иметь ключи Secure Boot на руках. Во-первых, имейте в виду, что есть по крайней мере три формы, которые могут принимать открытые ключи Secure Boot:

  • .cer/ .derfiles — эти файлы используются большинством реализаций UEFI, а также инструментом MokManager, который работает в паре с Shim.
  • .crt-- Эти файлы изначально используются большинством инструментов безопасности Linux, таких как sbsigntoolи sbverify.
  • .esl-- Эти файлы объединяют несколько ключей в один файл. (Остальные файлы содержат по одному ключу.) Если вы используете пользовательский интерфейс прошивки или KeyTool для сохранения ключей, полученные файлы будут в этом формате.

Если вы установили свой собственный ключ владельца машины (MOK) с помощью MokManager, у вас должен быть файл в .cer/ .der-форме. Если вы хотите проверить, будет ли работать двоичный файл при загрузке с другим ключом (например, ключами, используемыми для подписи версии GRUB в Ubuntu или Fedora), вам придется получить его. Для удобства я собрал несколько с помощью rEFInd; вы можете скачать их по частямздесь.Если у вас естьвзяли под полный контроль безопасную загрузку в вашей системе,у вас также уже должны быть созданные вами ключи.

Для проверки двоичного файла у вас должен быть ключ в .crtформе. Если у вас есть ключ в .derили .cerформе, вы можете преобразовать его:

openssl x509 -in mykey.cer -inform der -out mykey.crt

Затем вы можете проверить, что двоичный файл правильно подписан:

sbverify --cert mykey.crt binary.efi

Результатом должно быть сообщение вида Signature verification OKили Signature verification failed.

Обратите внимание, что некоторые UEFI не могут запустить даже правильно подписанные двоичные файлы. Похоже, это происходит случайно; двоичный файл A запустится нормально, тогда как двоичный файл B, подписанный тем же ключом, не запустится. Я считаю, что это ошибка в затронутых UEFI, но я не исследовал ее подробно. AFAIK, это не влияет на двоичные файлы, проверенные через Shim, но это может повлиять на сам Shim или двоичные файлы, запущенные без помощи Shim.

Связанный контент