UEFI с «Secure Boot»: безопасная загрузка ПК

23.07.2013

На новых компьютерах Microsoft требует использования UEFI с функцией «Secure Boot». Это усложняет установку других операционных систем.

На новых компьютерах Microsoft требует использования UEFI с функцией «Secure Boot». Это усложняет установку других операционных систем.

Плата с блоком памяти NVRAm Популярность ОС Windows привела к тому, что к многочисленным проблемам добавилась еще одна: «черви», вирусное ПО и трояны заставляют нас испытывать недюжинный страх за безопасность операционной системы. По утверждению Microsoft, интерфейс UEFI с функцией «Secure Boot» — это попытка вернуть пользователям уверенность в безопасности. Если загрузка ПК осуществляется UEFI в данном режиме, то такие вредоносные программы, как руткиты, оказываются не в состоянии до старта системы проникнуть в оперативную память. Все дело в том, что в режиме «Secure Boot» менеджер загрузки UEFI выполняет только подписанный цифровым ключом код, который он сверяет с зашифрованной базой данных.

Столь решительную систему защиты Microsoft предписывает использовать на всех компьютерах, которые реализуются под логотипом «Certified for Windows 8». Иными словами, все новые ПК, начиная с десктопов и ноутбуков и заканчивая Windows-планшетами, поставляются с активированным режимом «Secure Boot».

Но помимо защиты от руткитов есть одно неприятное обстоятельство — невозможность выполнения кода, не имеющего цифровой подписи. Это противоречит принципу свободной компьютерной платформы и с особым негодованием было воспринято сообществом Linux. Если режим «Secure Boot» активирован, вы не сможете ни установить, ни тем более запустить старые системы, включая Windows XP и 7. Более подробное знакомство с технологией позволит ответить на вопрос «почему?».

Удобство и быстрый запуск благодаря UEFI

Unified Extensible Firmware Interface (унифицированный расширяемый интерфейс прошивки), или кратко UEFI, призван заменить на всех компьютерах уходящий в прошлое интерфейс BIOS, который связывает аппаратные средства с операционной системой и отвечает за запуск ПК. Разработчики UEFI прежде всего преследовали цель устранить некоторые ограничения, присущие  традиционной BIOS, которая появилась более 30 лет назад и перестала отвечать современным требованиям.

Отдельные этапы инициализации компонентов платформы в некоторой степени соответствуют BIOS, однако они выполняются намного быстрее. После этапа инициализации запускается менеджер загрузки UEFI. После проверки всех аппаратных компонентов он активирует встроенные в UEFI приложения и драйверы — например, оболочку для ввода команд или функцию поддержки сети. Приложения хранятся либо в NVRAM — запоминающем устройстве UEFI-совместимой материнской платы, либо на жестком диске. На последнем этапе менеджер загрузки UEFI запускает загрузчик ОС, который отвечает за старт операционных систем.

«Secure Boot» проверяет системные компоненты

Именно на этом этапе активируется «Secure Boot» и принимается решение о разрешении или запрете на загрузку операционной системы. Для защиты информации в «Secure Boot» используются три ключа шифрования: в самом верху находится ключ платформы (Platform Key), который создается производителем аппаратного обеспечения. Он требуется для обновления UEFI и загрузки новых ключей KEK (Key Enrollment Key). Согласно стандарту UEFI, ключи KEK должны предоставлять разработчики различных операционных систем, но все это чистая теория. На практике в каждом компьютере содержится лишь KEK от Microsoft для Windows 8, так как сегодня все машины с «Secure Boot» поставляются с данной операционной системой — исключением является только «хромобук» от Google. Ключ KEK занимает центральную позицию в «Secure Boot», так как он открывает доступ к базе данных с разрешенными подписями (Allow DB) и базе данных с запрещенными подписями (Disallow DB). В первой из них содержатся цифровые подписи приложений UEFI, а также подписи и/или хеши компонентов операционной системы — например, менеджера загрузки, ядра и драйверов. Только при их наличии загрузчик ОС запускает систему.

«Secure Boot» в сочетании с поставляемой Windows 8 работает безупречно, но для предыдущих версий операционных систем Microsoft не предоставляет подписей. В данном случае пользователю придется отключать «Secure Boot». Для операционных систем Linux доступны подписанный ключом загрузчик Shim и загрузчик от некоммерческой организации The Linux Foundation.

Справедливости ради стоит отметить, что разработчики Linux не отвергают идею «Secure Boot». Однако они усматривают в ней монополистские притязания Microsoft на аппаратное обеспечение, которые не проявлялись до появления «Secure Boot». С одной стороны, в стандартах по сертификации для Windows 8 компания Microsoft четко указывает, что пользователь имеет возможность отключения «Secure Boot». С другой — может произойти так, что в документации к следующей операционной системе данного примечания просто не окажется.

Последовательность загрузки ПК на основе UEFI Пришедший на смену BIOS интерфейс UEFI активирует аппаратное обеспечение, включая драйверы, и выполняет собственные приложения. Если задействуется режим «Secure Boot», UEFI проверяет наличие у драйверов и программ действительных цифровых подписей. В случае их отсутствия процесс запуска будет прерван. Ту же самую проверку проходят менеджер загрузки и ядра установленных операционных систем.

Активация аппаратных средств

На начальном этапе загрузки UEFI мало чем отличается от традиционной BIOS. После проверки того, подается ли на все аппаратные компоненты напряжение, выполняется запуск компонентов материнской платы, процессора и памяти, а затем загружается код UEFI.

Выполнение кода UEFI

Менеджер загрузки UEFI загружает носитель данных и дополнительный код UEFI из памяти NVRAM, а также из раздела UEFI на жестком диске. При этом драйверы и приложения выполняются только в том случае, если их цифровые подписи соответствуют данным, внесенным в базу Allow DB. В завершение выполняется запуск загрузчика ОС.

Загрузка операционной системы

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

Проверка «Secure Boot»

В «Secure Boot» все основные файлы операционной системы (ядро, драйверы) должны обладать цифровой подписью. В таблице сертификатов файла указан подходящий сертификат для «Secure Boot», созданный в соответствии со стандартом X.509, а также снабженные цифровой подписью хеш-значения свойств основных файлов. Они должны соответствовать данным, содержащимся в базе Allow DB.