Secure Digital
- 1 year ago
- 0
- 0
Secure Boot (с англ. — «безопасная загрузка») — протокол, являющийся частью спецификации UEFI . Заключается в проверке электронной цифровой подписи выполняемых EFI-приложений, используя асимметричную криптографию относительно ключей, хранящихся в ключевом хранилище системы.
В 2011 году Microsoft включила в требования для сертификации компьютеров под управлением Windows 8 условие поставки таких систем с включённым Secure Boot с использованием ключа Microsoft. Более того, для ARM-систем (смартфоны и некоторые ноутбуки) требовалась невозможность отключения Secure Boot. Это вызвало большой общественный резонанс и критику в сторону Microsoft, поскольку такие требования значительно затрудняли, а в случае ARM-систем делали невозможной установку операционных систем, отличных от Microsoft Windows .
Аутентифицированные переменные (Authenticated Variable) — переменные, для изменения которых требуется аутентификация. Secure Boot подразумевает хранение публичных ключей, подписей и хешей приложений в аутентифицированных переменных, хранящихся в энергонезависимой памяти. Такие переменные могут быть перезаписаны двумя способами :
Переход в этот режим возможен из пользовательского режима очисткой PK.
В этом режиме не требуется аутентификация для записи PK, KEK, db, dbx.
Запись PK переводит систему в пользовательский режим. Запись единицы в специальную переменную AuditMode (доступна для записи только в режиме настройки и пользовательском режиме) переводит систему в режим аудита.
Переход в этот режим возможен из режима настройки или пользовательского режима записью единицы в переменную AuditMode. При смене режима на режим аудита очищается PK.
В этом режиме не требуется аутентификация для записи PK, KEK, db, dbx. В режиме аудита могут быть запущены не прошедшие проверку образы, а информация о всех этапах валидации образов будет записана в специальную таблицу, доступную из операционной системы, что позволяет тестировать комбинации сохраненных ключей и подписей, не опасаясь потери работоспособности системы .
Запись PK переводит систему в развернутый режим.
Переход в этот режим возможен из режима настройки записью PK, или из развёрнутого режима платформозависимым методом (не оговаривается в спецификации).
В этом режиме требуется аутентификация для изменения ключевых хранилищ, а также выполняется валидация запускаемых образов.
Удаление PK переводит систему в режим настройки. Запись единицы в переменную AuditMode переводит систему в режим аудита. Запись единицы в переменную DeployedMode (доступную для записи только в пользовательском режиме) переводит систему в развёрнутый режим.
Переход в этот режим возможен из режима аудита записью PK, или из пользовательского режима записью единицы в переменную DeployedMode.
Самый безопасный режим . Отличается от пользовательского режима переводом всех переменных режима (AuditMode, DeployedMode, SetupMode) в режим только для чтения.
Переход в другие режимы (пользовательский или режим настройки) возможен только через платформозависимые методы или аутентифицированную очистку PK .
Перед запуском неизвестного UEFI-образа он должен пройти процесс авторизации.
Обновление базы данных доверенных приложений также доступно из операционной системы .
Пользователь может самостоятельно сгенерировать и установить собственные ключи. Самостоятельно сгенерировать их, подписать и установить на компьютер. «Полный цикл» генерации ключей реализован и для ОС Linux, и для Windows.
Как правило в процессе генерации ключей применяется следующая цепочка преобразований:
PEM => DER => ESL => AUTH
Для Windows есть специальные инструменты от Майкрософт, а на Linux используется OpenSSL и набор утилит EfiTools. Cуществует проблема, связанная с отсутствием интерфейса для установки пользовательских ключей в BIOS некоторых производителей. Для этого также иногда требуется отдельная утилита.
Дополнительную сложность создает необходимость обеспечения совместимости с оборудованием от Майкрософт в ряде случаев. Проверка работает в обе стороны и без ключей Майкрософт их ПО и аппаратура (к примеру, GOP-драйверы внешних видеокарт и PXE-драйверы внешних сетевых карт, а значит и сами карты) работать не будут. То есть на определенном уровне довериться МС придется в любом случае.
Пользователю придется добавить ключ от Майкрософт в db или КЕК, что создает дополнительные риски для безопасности.
На одном компьютере может быть несколько КЕК и db. Таким образом может образоваться несколько ветвей доверия. Или же наоборот, одна db может быть подписана несколькими КЕК (хотя это и не требуется)
HP Sure Start — решение от компании Hewlett-Packard, фактически является встроенным аппаратно-программным СДЗ. Реализует функцию защиты ключей Secure Boot. Secure Boot в его текущем виде предлагается Microsoft как некий минимальный стандарт безопасности при защите от руткитов. Некоторые производители при этом разрабатывают свои решения, обеспечивающие доверенную загрузку в связке с решением от Microsoft, примером такого решения является HP Sure Start .
При вмешательстве руткитов в критические компоненты операционной системы подписи соответствующих компонентов становятся невалидными. Такая операционная система попросту не будет загружена .
При необходимости ограничить список возможных для запуска операционных систем это можно сделать внесением соответствующих подписей в базы данных подписей .
Драйверы устройств, поддержка которых необходима на стадии загрузки системы, должны иметь подпись, которая бы корректно проходила проверку на всех платформах, где такие устройства могут использоваться. Для этого всем производителям такого оборудования придётся согласовываться со всеми производителями платформ для добавления их ключей в хранилища систем. Или такие драйверы придётся подписывать ключом, который уже содержится в большинстве платформ, но тогда производителям придётся целиком полагаться на владельца такого ключа (например, Microsoft подписывает загрузчик shim ). Также можно создавать подписи по цепочке, заканчивающейся ключом, содержащимся в большинстве платформ, но даже этот подход имеет недостаток — при удалении соответствующего ключа из ключевого хранилища (например, для запрета загрузки определённой операционной системы) подписи драйверов также становятся невалидными .
Поставщики систем не обязаны реализовывать возможность отключения Secure Boot. Процедура добавления сторонних ключей в хранилище должна быть недоступна для вредоносного программного обеспечения, следствием чего является усложнение этой процедуры для пользователей. Два этих фактора в совокупности значительно затрудняют использование неподписанных операционных систем, а также подписанных неизвестным для платформы ключом .
Конкретные реализации прошивок устройств различных производителей могут содержать уязвимости, эксплуатирование которых может привести к обходу механизма Secure boot или его нивелированию .
Механизм Secure Boot может препятствовать работе средств доверенной загрузки. Поскольку СДЗ подменяют загрузчик ОС собственным загрузчиком, в общем случае не имеющим подписи, Secure Boot может заблокировать загрузчик СДЗ и следовательно помешать работе СДЗ в целом.
Существуют два решения этой проблемы.
Первое — отключение Secure Boot на компьютерах с установленным СДЗ. Примером такого подхода может служить СДЗ SafeNode System Loader .
Второе — поставка вместе с СДЗ комплекта аутентифицированные переменных, удостоверяющих валидность подписи загрузчика. После установки переменных работа СДЗ будет производиться без ограничений со стороны Secure Boot. Примером такого подхода может служить СДЗ Dallas Lock. Вместе с ключами в таком случае поставляется и утилита keytool.efi .