Проблемы на пути реализации режима безопасной загрузки UEFI в Linux

18.01.2012 08:47

Мэтью Гаррет (Matthew Garrett), один из разработчиков ядра Linux из компании Red Hat, опубликовал заметку о возможных проблемах с поддержкой технологии безопасной загрузки UEFI в Linux. Несмотря на то, что с позиции создания кода реализация поддержки режима безопасной загрузки для ядра Linux практически готова, сложности возникают в сопутствующих областях, таких как обеспечение работы сторонних драйверов, несовместимость с лицензией GPLv3, под которой распространяется загрузчик Grub, и обеспечение функционирования инфраструктуры для распространения ключей.

Режим безопасной загрузки подразумевает, что все компоненты, взаимодействующие с оборудованием и обеспечивающие загрузку ОС, должны иметь цифровую подпись, в том числе загрузчик, ядро ОС, загружаемые ядром драйверы и все модули ядра. Для формирования цифровой подписи, кроме использования ключей компании-разработчика предустановленной ОС или производителя оборудования, рекомендации по реализации режима безопасной загрузки предусматривают возможность генерации пользователем собственных ключей, механизм управления которыми пока никак не определён. Именно такие ключи планируется использовать для обеспечения работы Linux при активном режиме безопасной загрузки, так как иначе придётся заверять у производителя компоненты используемого дистрибутива.

При использовании собственных ключей возникает проблема с заметным усложнением процесса установки операционной системы: появляются дополнительные шаги по генерации ключей, созданию цифровых подписей и загрузке ключей в прошивку. При этом пока отсутствует единый унифицированный пользовательский интерфейс загрузки ключей, каждый производитель может сформировать его на свой вкус. Также пока не определён единый формат ключей, требования к которому также могут меняться в зависимости от типа прошивки. Кроме того, интерфейс загрузки ключей подразумевает физическое участие пользователя, что вызывает вопросы в организации развёртывания большого числа машин, например, сводит на нет автоматизацию установки ОС в парке из тысяч ПК.

В случае использования не созданных пользователем ключей возникает проблема с обеспечением работы сторонних драйверов - по умолчанию будут работать только штатные драйверы, заверенные владельцем ключа. Сторонние драйверы также должны быть заверены цифровой подписью или используемый ключ поставщика должен быть включен в список поддерживаемых ключей. Иными словами, пользователи могут столкнуться с невозможностью локальной сборки модулей ядра, а также с проблемами использования таких широко распространённых драйверов, как AMD Catalyst, NVIDIA и Virtualbox, так как ядро будет блокировать загрузку не подписанных нужным ключом модулей.

Итоговый вывод звучит следующим образом: Для написания кода, необходимого для обеспечения поддержки режима безопасной загрузки в Linux, потребуется минимальное время - большая часть кода уже готова. Но значительные практические проблемы пока остаются нерешёнными; более того, в настоящее время нет ни одного реального решения хотя бы для одной из этих проблем.