Есть ли альтернатива с открытым исходным кодом для безопасной загрузки UEFI?

Из того, что я знаю, UEFI и его безопасная загрузка очень проблематичны и, конечно, не способ продвижения вперед.

См .: https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#Criticism

Также здесь говорится:

В случае SecureBoot система UEFI, которая должна проверять подписи, не является открытым исходным кодом. И даже если это будет открытый исходный код, это не означает, что системы устанавливаются заранее с помощью ключа, который вы использовали для подписания.

Поэтому я спрашиваю, есть ли версия с открытым исходным кодом, с которой нацеливается защищенная загрузка UEFI?

3 Solutions collect form web for “Есть ли альтернатива с открытым исходным кодом для безопасной загрузки UEFI?”

Ближе всего к альтернативе UEFI – керноут .

Фактически, часть, которая проверяет подписи Secure Boot, открыта. Это часть Intel TianoCore. Проблема в том, что когда вы покупаете готовые аппаратные средства, нет возможности проверить, что на самом деле поставил поставщик оборудования. Но это общая проблема с прошивкой ПК, а не с безопасностью загрузки.

Системная часть Secure Boot в самих операционных системах с открытым исходным кодом – например, Linux или FreeBSD – также полностью открыта.

У Secure Boot есть свои проблемы – схема подписания просто ужасна, но «отсутствие открытости» не является одним из них.

Это не является прямой альтернативой и может быть не совсем то, что вы ищете, но аналогичное решение, требующее TPM (Trusted Platform Module), называется «Trusted Boot» или tboot. Он отличается некоторыми ключевыми способами, но его конечная цель – то же самое – установить уровень доверия к цепочке загрузки и состоянию вашей системы.

Сам TBoot представляет собой реализацию с открытым исходным кодом концепции MLE или среды измеренного запуска. Вкратце, это куча двоичного кода, который выполняет и использует Intel TXT, чтобы поставить машину в привилегированное и доверенное состояние, где он может затем выполнить измерения (хэши SHA-1 в TPM 1.2) ОС и связанных с ними компонентов и подтолкните их к TPM для надежного хранения. Например, в Linux tboot можно настроить для выполнения непосредственно перед загрузкой ядра, и он будет генерировать хэши ядра, параметры ядра и изображения initramfs и отправлять их каждому в TPM.

Кроме того, TPM и совместимая материнская плата / BIOS позволяют также проводить измерения с различными компонентами вашей системы намного раньше в процессе загрузки, например сами изображение BIOS, пользовательские настройки BIOS, прошивка PCI-карты (GPU, NIC и т. Д.) ), загрузчик (например, grub) и многое другое. Вам может быть интересно, что хорошего в этих измерениях? Ну, не так много. Вместо этого TPM можно использовать для выполнения ряда задач тогда и только тогда, когда эти измерения являются конкретным значением, таким как чтение / запись в TPM NVRAM или дешифрование ключа, который может расшифровать только TPM. Эти измерения также могут быть переданы безопасно (и анонимно, при желании) другой стороне, чтобы сторона могла установить доверительный контроль удаленно. Впоследствии система может быть разработана только для загрузки или выполнения некоторого программного обеспечения, если TPM имеет некоторые конкретные измерения в своих ПЦР, то есть загружает определенный набор программных средств, то есть обеспечивает целостность.

По сути, TPM и tboot в совокупности обеспечивают широкий спектр охвата системы и, по крайней мере, на бумаге из того, что я понимаю, могут быть расширены для измерения / хэша практически любого, что вы хотите, используя API для отправки хэшей в TPM для хранения. Важно отметить, что хеши не просто загружаются прямо в TPM. Вместо этого, когда хеш должен храниться во внутреннем регистре в TPM (PCR или Register Configuration Register), он объединяется с предыдущим значением регистра, а blob – хэшируется, а результат сохраняется в регистре. В результате каждый регистр накапливает состояние, и любая разница по пути приводит к изменению конечного значения. Это называется tpm 'extend'.

По сути, я думаю, что TPM и tboot предлагают гораздо больше возможностей, чем безопасная загрузка. TPM – это своего рода криптографический сопроцессор общего назначения, который может использоваться для безопасного хранения, RNG, отчетов о состоянии системы другим хостам (аттестация) и т. Д.

В отличие от Secure Boot, которая использует сигнатуры и останавливает процесс загрузки, если подпись не проверяет, TPM / tboot не использует подписи и не останавливает загрузку напрямую. Скорее, система должна быть спроектирована так, чтобы не запускать загрузку, требуя, чтобы TPM выполнял какое-то действие, которое оно будет делать, только если система находится в определенном состоянии, если это необходимо.

Что касается вашей заботы о битке с открытым исходным кодом и прозрачности всего этого, даже tboot / TPM проникает в страту неявного доверия, и действительно, это неизбежный скачок веры в мой разум, если буквально каждая часть программного обеспечения не была с открытым исходным кодом , а также аппаратное обеспечение, а также аппаратная схема. В случае tboot и TPM это неявное доверие распространяется вплоть до набора микросхем и самого процессора. Предположительно, контрольная сумма открытого ключа встроена в набор микросхем, который используется микрокодом процессора для запуска цепочки доверия. Эта контрольная сумма не полностью объясняется в текстах, которые у меня есть, но объясняется, что подпись проверяется микрокодом процессора на блоке кода, находящемся внутри образа BIOS, называемого BIOS ACM для SRTM, или SINIT ACM для DRTM. Для проверки подлинности, конечно, должен использоваться открытый ключ, и я предполагаю, что открытый ключ встроен в ACM по соображениям пространства и проверен против этой контрольной суммы резидентного оборудования, упомянутой ранее.

  • Как запросить подпись EFI
  • Проблема загрузки Ubuntu (или любой ОС) даже после выполнения чистой установки
  • Загрузка USB для установки Linux на новый ноутбук Lenovo
  • Влияние UEFI & SecureBoot, насколько серьезным?
  • Не удалось установить UEFI Fedora 21
  • Как проверить версию EFI?
  • Установленный GRUB в унаследованном режиме, как его переустановить в режиме EFI?
  • Прочтите Apple nvram
  • Определите, какая программа находится в моем MBR-коде
  • Загрузите файл iso через uEFI, вызвав исполняемый файл EFI внутри iso
  • Fedora 23 больше не загружается (GRUB: поддерживается минимальное редактирование строк в формате BASH).
  • Interesting Posts

    Несколько сетевых адаптеров и шлюза CentOS

    неизвестный открытый ключ 8F0871F202119294 на ArchLinux

    Флаг -X (пересылка X11) не работает в Windows

    Grub показывает Forcepae не найден, ОС зависает во время загрузки

    Это правильный способ проверить, имеет ли символическая ссылка / proc / directory

    Условно добавьте виртуальный рабочий стол в Openbox

    Как изменить сеанс по умолчанию?

    Citrix Receiver на Ubuntu падает, и я не могу его убить, придется жестко перезагрузить

    Как запустить несколько команд в одной строке и несколько команд в фоновом режиме одновременно?

    Как включить USB с помощью linux-socfpga?

    Минимизированный код JSON между двумя шаблонами с помощью регулярных выражений

    Выход команды командной консоли не отображается в состоянии tmux

    Centos: VSFTPD не запускается

    Насколько безопасно увеличить tmpfs до большей, чем физической памяти?

    Как обрабатывать удаленный txt-файл как поток?

    Linux и Unix - лучшая ОС в мире.