Безопасная загрузка UEFI - это функция, определенная в Спецификации UEFI. Она гарантирует, что только действительный код прошивки стороннего производителя может быть запущен в среде прошивок Производителя Оригинального Оборудования (ПОО). Безопасная загрузка UEFI предполагает, что микропрограммное обеспечение системы является доверенной организацией. Любой микропрограммный код стороннего производителя не является доверенным, включая системный загрузчик, установленный Поставщиком Операционной Системы (ПОС), и периферийные устройства, предоставляемые Независимым Поставщиком Оборудования (НПО). Конечный пользователь может выбрать регистрацию и отзыв записей в базе данных UEFI Secure Boot в рамках управления политикой проверки.
UEFI Secure Boot включает в себя две части - проверку загрузочного образа и проверку обновлений базы данных безопасности образа. На Рисунке 2-1 показан процесс проверки безопасной загрузки UEFI. Таблица 2-1 показывает базу данных по безопасности ключей/изображений, используемую в UEFI "Безопасная загрузка".
Рисунок 2-1: Безопасная загрузка UEFI
Table 2-1: Key Usage in UEFI Secure Boot
Безопасная проверка загрузочного изображения UEFI
Таблица 2-2: Безопасная проверка изображения загрузки UEFI
В Таблице 2-2 показаны компоненты, участвующие в UEFI безопасной проверке загрузочных изображений.
Подпись
В UEFI Secure Boot, UDI - это любой программный код прошивки 3-й части, включая загрузчик ОС, ПЗУ PCI опции или инструмент оболочки UEFI. Поставщик компонентов должен подписать эти компоненты закрытым ключом и опубликовать открытый ключ.
Хранилище с открытым ключом
OEM-производитель или конечный пользователь может зарегистрировать открытый ключ в качестве CDI (UEFI Secure Boot Image Security Database). База данных находится в аутентифицированной переменной UEFI. База данных также может обновляться во время выполнения. Она может быть прочитана любым человеком, но может быть записана только после аутентификации данных. См. таблицу 2 ниже.
Проверка
Во время загрузки TP (Процедура проверки образа) проверяет UDI (код прошивки стороннего производителя), в соответствии с CDI (UEFI Secure Boot Image Security Database) в соответствии с политикой. Если проверка проходит, UDI преобразуется в CDI и выполняется код прошивки стороннего производителя. Если верификация не проходит, код прошивки стороннего производителя отбрасывается.
На рисунке 2-2 показан поток верификации с использованием db/dbx.
Рисунок 2-2: Поток проверки изображения
На рисунке 2-3 показан верификационный поток, вводящий dbt. Требуется дополнительная проверка на основе подписи dbx.
Рисунок 2-3: Проверка изображения с базой данных подписей временных меток Аутентифицированная переменная проверка UEFI (обновление политики)
Таблица 2-3: Аутентифицированная переменная проверка UEFI
В таблице 2-2, CDI (UEFI Secure Boot Image Security Database) обновляется. Сама база данных находится в области UEFI Authenticated Variable (Аутентифицированная переменная). В таблице 2-3 показан компонент, участвующий в аутентифицированной переменной UEFI.
Подпись
Чтобы обновить существующую базу данных безопасности образов новая база данных безопасности образов должна быть подписана, если включена функция безопасной загрузки UEFI.
Хранение с открытым ключом
Открытый ключ подписанта должен быть занесен в прошивку системы. Это то же самое, что и открытый ключ, используемый для UEFI Secure Boot Image Verification. База данных хранится в аутентифицированной переменной UEFI.
Верификация
Во время обновления и во время выполнения, TP (Authenticated Variable Verification Procedure) проверяет UDI (новую базу данных безопасности образа), в соответствии с CDI (UEFI Secure Boot Image Security Database) в соответствии с политикой. Если проверка пройдена, то UDI преобразуется в CDI, и новая база данных безопасности образа вступит в силу при следующей загрузке. Если проверка не проходит, новые данные безопасности образа отбрасываются.
Для подробной информации о потоке аутентифицированных переменных смотрите раздел "Реализация
Аутентифицированные переменные в SMM с белой бумагой EDK II".
UEFI Secure Boot включает в себя две части - проверку загрузочного образа и проверку обновлений базы данных безопасности образа. На Рисунке 2-1 показан процесс проверки безопасной загрузки UEFI. Таблица 2-1 показывает базу данных по безопасности ключей/изображений, используемую в UEFI "Безопасная загрузка".
Рисунок 2-1: Безопасная загрузка UEFI
Table 2-1: Key Usage in UEFI Secure Boot
Безопасная проверка загрузочного изображения UEFI
Таблица 2-2: Безопасная проверка изображения загрузки UEFI
В Таблице 2-2 показаны компоненты, участвующие в UEFI безопасной проверке загрузочных изображений.
Подпись
В UEFI Secure Boot, UDI - это любой программный код прошивки 3-й части, включая загрузчик ОС, ПЗУ PCI опции или инструмент оболочки UEFI. Поставщик компонентов должен подписать эти компоненты закрытым ключом и опубликовать открытый ключ.
Хранилище с открытым ключом
OEM-производитель или конечный пользователь может зарегистрировать открытый ключ в качестве CDI (UEFI Secure Boot Image Security Database). База данных находится в аутентифицированной переменной UEFI. База данных также может обновляться во время выполнения. Она может быть прочитана любым человеком, но может быть записана только после аутентификации данных. См. таблицу 2 ниже.
Проверка
Во время загрузки TP (Процедура проверки образа) проверяет UDI (код прошивки стороннего производителя), в соответствии с CDI (UEFI Secure Boot Image Security Database) в соответствии с политикой. Если проверка проходит, UDI преобразуется в CDI и выполняется код прошивки стороннего производителя. Если верификация не проходит, код прошивки стороннего производителя отбрасывается.
На рисунке 2-2 показан поток верификации с использованием db/dbx.
Рисунок 2-2: Поток проверки изображения
На рисунке 2-3 показан верификационный поток, вводящий dbt. Требуется дополнительная проверка на основе подписи dbx.
Рисунок 2-3: Проверка изображения с базой данных подписей временных меток Аутентифицированная переменная проверка UEFI (обновление политики)
Таблица 2-3: Аутентифицированная переменная проверка UEFI
В таблице 2-2, CDI (UEFI Secure Boot Image Security Database) обновляется. Сама база данных находится в области UEFI Authenticated Variable (Аутентифицированная переменная). В таблице 2-3 показан компонент, участвующий в аутентифицированной переменной UEFI.
Подпись
Чтобы обновить существующую базу данных безопасности образов новая база данных безопасности образов должна быть подписана, если включена функция безопасной загрузки UEFI.
Хранение с открытым ключом
Открытый ключ подписанта должен быть занесен в прошивку системы. Это то же самое, что и открытый ключ, используемый для UEFI Secure Boot Image Verification. База данных хранится в аутентифицированной переменной UEFI.
Верификация
Во время обновления и во время выполнения, TP (Authenticated Variable Verification Procedure) проверяет UDI (новую базу данных безопасности образа), в соответствии с CDI (UEFI Secure Boot Image Security Database) в соответствии с политикой. Если проверка пройдена, то UDI преобразуется в CDI, и новая база данных безопасности образа вступит в силу при следующей загрузке. Если проверка не проходит, новые данные безопасности образа отбрасываются.
Для подробной информации о потоке аутентифицированных переменных смотрите раздел "Реализация
Аутентифицированные переменные в SMM с белой бумагой EDK II".