Требования UEFI для выпусков Windows на платформах SoC

В этой статье описываются требования UEFI, применимые к Windows 10 для классических выпусков (Home, Pro, Enterprise и Education).

Сводка требований

В следующей таблице перечислены все текущие требования к соответствию UEFI, как определено в спецификации UEFI (раздел 2.6 спецификации UEFI 2.3.1). В этой таблице термин явное требование Windows определяет любой протокол или службу, непосредственно вызываемую компонентом Windows. Хотя только эти службы явно используются Windows, другие перечисленные службы и протоколы могут быть неявно или явно необходимы для реализации основного встроенного ПО, драйверов устройств EFI или цепочек средств разработки и развертывания.

Корпорация Майкрософт приветствует отзывы и комментарии от разработчиков по этому набору требований. Для любых требований к соответствию UEFI, которые определены как не требующиеся ни операционной системе, ни встроенному ПО, мы намерены работать с UEFI.org, чтобы эти требования были ослаблены для этого класса устройства.

Дополнительные сведения о конкретных требованиях см. в разделах после таблицы.

Требование Раздел спецификации UEFI Примечания
таблица системы EFI 4.3 Явное требование к Windows
службы загрузки EFI 6.0
Службы событий, таймера и задач 6.1
Службы памяти 6.2 Явное требование для Windows
Службы обработчика протоколов 6.3 Явное требование к Windows
Услуги изображений 6.4 Явное требование к Windows
Другие службы 6.5 Явное требование к Windows
службы среды выполнения EFI 7.0
Службы времени 7.3 Явное требование к Windows
Изменяемые службы 7.2 Явное требование к Windows
Другие службы 7.5 Явное требование к Windows
обязательные протоколы UEFI
Протокол загруженного образа EFI 8.1
Протокол загрузки образа EFI для пути к устройству 8.2
Протокол пути устройства EFI 9.2 Явное требование к Windows
Протокол утилит для путей устройств EFI 9.5
Протокол распаковки EFI 18.5
Протокол интерпретатора EBC 20.11
Условно обязательные протоколы UEFI
Простой протокол ввода текста EFI 11.3 Явное требование к Windows
Протокол простого текстового ввода EX EFI 11.2
Простой протокол вывода текста EFI 11.4
Протокол вывода графики EFI 11.9 Явное требование к Windows
Протокол EFI EDID обнаружен. 11.9.1
Активный протокол EFI EDID 11.9.1
Протокол ввода-вывода блока EFI 12.8 Явное требование к Windows
Протокол ввода-вывода диска EFI 12.7
Простой протокол файловой системы EFI 12.4
Протокол сортировки EFI Юникода 12.10
Простой сетевой протокол EFI 21.1
Протокол базового кода EFI PXE 21.3
Протокол сервисов целостности загрузки EFI 21.5
Протокол последовательного ввода-вывода EFI 11.8
Привязка ARM UEFI 2.3.5 Явное требование к Windows
требования к безопасности
Безопасная загрузка 27.0 Явное требование к Windows
Требования к диспетчеру загрузки 3.1, 3.3 Явное требование к Windows

Требования к системной таблице EFI

Системная таблица EFI должна соответствовать стандартному определению на уровне редакции, реализованной. Таблица конфигурации, указанная в EFI System Table, должна включать два GUID и связанные указатели, описанные в следующей таблице.

GUID Описание
Таблица EFI_ACPI GUID Этот GUID должен указывать на корневой системный дескриптор ACPI (RSDP) для платформы.
SMBIOS_Table GUID Этот GUID должен указывать на структуру точки входа SMBIOS.

Для Windows требуется спецификация SMBIOS на уровне версии 2.4 или более поздней версии. Требуются разделы 3.2, "Обязательные структуры и данные", а также 4, "Рекомендации по соответствию". Доступен тест совместимости с Windows SMBIOS.

Требования к службам загрузки EFI

В следующей таблице перечислены требования к службам загрузки EFI для Windows.

Служба загрузки EFI Требование
Службы памяти Для Windows требуются все службы памяти.
Службы обработчика протоколов Для Windows требуются следующие службы обработчика протоколов:

OpenProtocol()
CloseProtocol()
LocateDevicePath()
LocateHandle()
Услуги изображений Для Windows требуются следующие службы образов:

ExitBootServices()
Прочие службы загрузки Для Windows требуются следующие службы загрузки:

Стойл()

Примечание. Реализация Stall() должна содержать детерминированную (повторяемую) ошибку, чтобы можно было надежно корректировать или отменять ошибки.

Требования к службам среды выполнения EFI

В следующей таблице перечислены требования к службам среды выполнения EFI для Windows.

Служба среды выполнения EFI Требование
Службы времени Для Windows требуются следующие службы времени:

GetTime()
SetTime()

Примечание. Службы времени будут вызываться только во время загрузки (до ExitBootServices()) для доступа к аппаратному обеспечению платформы, отвечающему за время суток.
Изменяемые службы Для управления несколькими загрузочными устройствами и переменными безопасности в целевом классе систем требуются все службы переменных UEFI.
Прочие службы среды выполнения Для Windows требуются следующие службы среды выполнения:

ResetSystem()

Примечание. реализация ResetSystem() должна поддерживать функции сброса и завершения работы.

Требования к протоколу

В следующей таблице описаны протоколы UEFI, необходимые Windows для выполнения определенных функций во время загрузки.

Протокол Требование
Протокол вывода графики Для Windows требуется протокол вывода графики (GOP). Конкретные требования к буферу кадров:

Для интегрированных дисплеев HorizontalResolution и VerticalResolution должны быть собственным разрешением панели.

Для внешних отображения HorizontalResolution и VerticalResolution должно быть собственным разрешением дисплея или, если это не поддерживается, то самые высокие значения, поддерживаемые как адаптером видео, так и подключенным дисплеем.

Пикселей на линии сканирования должно быть равно Горизонтальное разрешение.

PixelFormat должен быть PixelBlueGreenRedReserved8BitPerColor. Требуется буфер физического кадра; PixelBltOnly не поддерживается.

Когда выполнение передается в загрузочное приложение UEFI, диспетчер загрузки встроенного ПО и само встроенное ПО не должны использовать буфер кадров для любых целей. Буфер кадра должен продолжать проверяться после завершения работы служб загрузки.
Альтернативный выход видеосигнала Встроенное ПО UEFI должно поддерживать загрузку с помощью любого соединителя дисплея, поддерживаемого оборудованием. Если внутренняя панель подключена и видна, то необходимо использовать внутреннюю панель. Все выходы, к которым физически подключены экраны, должны отображать загрузочный экран. Для подключенных дисплеев встроенное ПО UEFI должно:

Инициализировать выходные данные с помощью собственного режима отображения, если можно определить собственное разрешение.

Если собственный режим недоступен, он должен инициализироваться до максимально совместимого режима.

Если возможности отображения не могут быть определены, то подключенный дисплей должен быть инициализирован в режиме, который, как известно, совместим с максимально возможным количеством мониторов (обычно 640x480 или 1024x768 в 60 Гц).
Входные данные во время загрузки Протокол простого ввода текста EFI необходим для выбора параметров загрузки или других вариантов меню в системах с встроенными или внешними клавиатурами. Для систем без клавиатуры в среде загрузки рекомендуется использовать три кнопки:

Кнопка "Пуск"
Кнопка "Увеличение громкости"
Кнопка "Уменьшить громкость"

Нажатия кнопки следует сообщать через протокол простого текстового ввода EFI, сопоставляя их со следующими клавишами клавиатуры соответственно:

Ключ Windows
Клавиша стрелка вверх
Клавиша Стрелка вниз
Загрузка локального хранилища Для Windows требуется поддержка протокола блокового ввода-вывода (Block I/O) и протокола пути к устройству (Device Path) для системного решения хранения, содержащего раздел EFI и раздел ОС Windows. Для загрузки из хранилища флэш-памяти, требующего выравнивания на уровне износа или другого управления флэш-памятью, это необходимо реализовать в встроенном ПО (не в приложении UEFI).

Требования к безопасности

Windows имеет требования к безопасности в областях безопасной загрузки, измеренной загрузки, шифрования и защиты данных. Эти требования подробно описаны в следующей таблице. Кроме того, для тех областей, в которых оборудование SoC предотвращает соответствие существующему стандарту (TPM, RTC и т. д.), разрабатываются дополнительные требования. Они описаны в конце таблицы.

Площадь Требование
Общее
  • Требование 1. ОБЯЗАТЕЛЬНО. Платформа должна соответствовать всем требованиям, указанным в этом разделе.

  • Требование 2. ОБЯЗАТЕЛЬНО. Платформы должны быть класса UEFI три без установленного или устанавливаемого модуля поддержки совместимости. Эмуляция BIOS и устаревшая загрузка ПК/AT должны быть отключены.

Безопасная загрузка UEFI
  • Требование 3. ОБЯЗАТЕЛЬНО. Безопасная загрузка, определённая в разделе 27 спецификации UEFI версии 2.3.1, должна быть включена и с предварительно настроенной базой данных подписей (EFI_IMAGE_SECURITY_DATABASE), необходимой для безопасной загрузки компьютера. Начальное содержимое базы данных подписей определяется изготовителем оборудования на основе необходимых 3-х сторонних драйверов UEFI, потребностей восстановления и загрузчика операционной системы, установленного на компьютере, но также должна быть включена подпись EFI_CERT_X509, предоставляемая корпорацией Майкрософт. Никаких дополнительных подписей не должно быть.

  • Требование 4. ОБЯЗАТЕЛЬНО. Требуется наличие базы данных UEFI с "запрещёнными" подписями (EFI_IMAGE_SECURITY_DATABASE1).

  • Требование 5. ОБЯЗАТЕЛЬНО. Предоставленный корпорацией Майкрософт UEFI KEK должен быть включен в базу данных UEFI KEK. Никаких дополнительных KEK не должно быть. Корпорация Майкрософт предоставляет KEK в виде подписи EFI_CERT_X509.

  • Требование 6. ОБЯЗАТЕЛЬНЫЙ. PKпаб ключ должен присутствовать и храниться в флэш-памяти встроенного ПО. Примечание. Поскольку PKpriv (закрытый ключ, соответствующий PKpub) управляет политикой безопасной загрузки на всех устройствах, оснащённых PKpub, его защита и использование должны быть строго контролируемы.

  • Требование 7. ОБЯЗАТЕЛЬНО. Исходные базы данных сигнатур должны храниться в флэш-памяти встроенного ПО и могут обновляться только с помощью обновления встроенного ПО, подписанного OEM, или с помощью записи с проверкой подлинности UEFI.

  • Требование 8. ОБЯЗАТЕЛЬНЫЙ. Образы в пути загрузки, не прошедшие проверку подписи, не должны выполняться, а причина сбоя должна быть добавлена в EFI_IMAGE_EXECUTION_TABLE. Кроме того, рекомендуемый подход в этих ситуациях заключается в том, что диспетчер загрузки UEFI инициирует восстановление в соответствии с стратегией, определенной изготовителем оборудования.

  • Требование 9. ОБЯЗАТЕЛЬНЫЙ. Физически присутствующий пользователь не должен иметь возможность переопределения для образов UEFI, не прошедших проверку подписи.

  • Требование 10. Необязательно. Изготовитель оборудования может реализовать возможность для физически присутствующего пользователя отключить безопасную загрузку либо с доступом к PKpriv, либо с физическим присутствием через настройку прошивки. Доступ к настройке встроенного ПО может быть защищен определенными средствами платформы (пароль администратора, смарт-карта, статическую конфигурацию и т. д.)

  • Требование 11. ОБЯЗАТЕЛЬНО, если реализовано требование 10. Если безопасная загрузка отключена, все существующие переменные UEFI не будут доступны.

  • Требование 12. НЕОБЯЗАТЕЛЬНО. Изготовитель оборудования может реализовать возможность физического пользователя выбрать два режима безопасной загрузки в настройке встроенного ПО: "Custom" и "Standard". Настраиваемый режим обеспечивает большую гибкость, как указано в следующем примере.

  • Требование 13. ОБЯЗАТЕЛЬНО, если реализовано требование 12. Можно повторно включить отключенную безопасную загрузку в пользовательском режиме, установив для владельца конкретный PK. Администрирование будет осуществляться, как указано в разделе 27.5 спецификации UEFI версии 2.3.1: Обмен ключами между встроенным ПО и ОС. В пользовательском режиме владелец устройства может задать их выбор подписей в базах данных подписей.

  • Требование 14. ОБЯЗАТЕЛЬНО, если реализовано требование 12. Программа установки встроенного ПО должна указывать, включена ли безопасная загрузка, и если она работает в стандартном или пользовательском режиме. Программа установки встроенного ПО предоставляет возможность возврата из пользовательского в стандартный режим.

  • Требование 15. ОБЯЗАТЕЛЬНЫЙ. Если параметры встроенного ПО сбрасываются до заводских значений по умолчанию, все настроенные защищенные переменные будут удалены, а исходный PKpub необходимо повторно установить вместе с исходными базами данных подписей, предоставленными производителем.

  • Требование 16. ОБЯЗАТЕЛЬНО. Подписывание драйвера должно использовать опцию Authenticode (WIN_CERT_TYPE_PKCS_SIGNED_DATA).

  • Требование 17. ОБЯЗАТЕЛЬНО. Поддержка EFI_IMAGE_EXECUTION_INFO_TABLE (т. е. создание и хранение сведений об изображениях, запущенных или не запущенных во время загрузки).

  • Требование 18. ОБЯЗАТЕЛЬНЫЙ. Поддержка функции GetVariable() для EFI_IMAGE_SECURITY_DATABASE, что касается как авторизованной, так и запрещенной базы данных подписей.

  • Требование 19. ОБЯЗАТЕЛЬНО. Поддержка SetVariable() для EFI_IMAGE_SECURITY_DATABASE (как авторизованной, так и запрещённой базы данных подписи), используя Microsoft KEK для аутентификации.

  • Требование 20: ОБЯЗАТЕЛЬНО. EFI_HASH_SERVICE_BINDING_PROTOCOL: Поддержка службы: CreateChild(), DestroyChild().

  • Требование 21. ОБЯЗАТЕЛЬНЫЙ. EFI_HASH_PROTOCOL. Поддержка служб: Hash(). Поддержка алгоритмов хэша SHA_1 и SHA-256. Должна поддерживать передачу сообщения не менее 10 Мбайт.

Измеряемая загрузка UEFI

Следующие требования не подразумевают необходимость реализации доверенного платформенного модуля TCG; Однако они подразумевают необходимость в эквивалентных функциональных возможностях для затронутых областей.

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

  • Требование 22. ОБЯЗАТЕЛЬНО. Платформа должна соответствовать протоколу EFI, указанному в протоколе EFI доверенной среды выполнения UEFI.

  • Требование 23. ОБЯЗАТЕЛЬНЫЙ. Платформа должна соответствовать спецификации платформы EFI TCG со следующими дополнениями:

    • На платформах, поддерживающих интерфейс, определенный в протоколе EFI TrEE, дайджест PKpub должен быть расширен до TPM PCR[03] как событие EV_EFI_VARIABLE_CONFIG.

    • Дайджест содержимого базы данных авторизованных подписей (см. раздел 27.8 спецификации UEFI версии 2.3.1) необходимо добавить в процесс измеренной загрузки в качестве события EV_EFI_VARIABLE_CONFIG. Операция расширения должна производиться в TPM PCR[03].

    • Клиент UEFI может считывать и анализировать список сертификатов с помощью переменной EFI_IMAGE_SECURITY_DATABASE и проверять дайджест по расширенному значению.

    • TCG_PCR_EVENT значения дайджеста должны быть SHA-256, а не SHA-1.

  • Требование 24. ОБЯЗАТЕЛЬНЫЙ. Платформа должна реализовать MemoryOverwriteRequestControl, определенную в спецификации TCG Platform Reset Attack Mitigation Specification.

Криптография
  • Требование 25. ОБЯЗАТЕЛЬНО. Платформа должна предоставить EFI_HASH_PROTOCOL (UEFI v2.3.1, раздел 27.4) для офлоад криптографических хэш-операций. Необходимо поддерживать SHA-256.

  • Требование 26. ОБЯЗАТЕЛЬНЫЙ. Платформа должна поддерживать определённый Майкрософт протокол EFI_RNG_PROTOCOL для чтения энтропии до загрузки ОС.

Защита данных
  • Требование 27. ОБЯЗАТЕЛЬНЫЙ. Платформа должна поддерживать переменные EFI с любым сочетанием следующих атрибутов переменной UEFI:

    • EFI_VARIABLE_BOOTSERVICE_ACCESS

    • EFI_VARIABLE_NON_VOLATILE

    • EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS

Другие требования к безопасности

Следующие дополнительные требования требуются Windows на платформах SoC.

  • Корпорация Майкрософт определила протокол для сбора энтропии с платформы UEFI. Хотя это не требование UEFI, этот протокол требуется Windows на платформах SoC. Дополнительные сведения об этом протоколе см. в протоколе сбора энтропии UEFI.

  • Обновления базы данных подписи UEFI. Новый механизм обновления прошедших проверку подлинности переменных был принят в разделе 27 UEFI 2.3.1. Этот механизм требуется Windows.

  • Надежная среда выполнения. Корпорация Майкрософт разработала протокол EFI для взаимодействия с доверенной средой выполнения (TrEE), подобный по функциям к подмножеству возможностей доверенного платформенного модуля (TPM) группы Trusted Computing Group (TCG). Протокол EFI в значительной степени использует "TCG EFI Protocol", версия 1.2, редакция 1.00 от 9 июня 2006 года, разработанный группой Trusted Computing Group.

    Для получения дополнительных сведений обратитесь к протоколу EFI доверенной среды выполнения UEFI .

Требования к диспетчеру загрузки встроенного ПО

Диспетчер загрузки встроенного ПО должен поддерживать поведение загрузки по умолчанию, определенное в разделе 3.3 спецификации. Кроме того, требуются поддержка многозагрузки, глобально определенные переменные и требования раздела 3.1 спецификации к диспетчеру загрузки.

Требования к привязке UEFI для Arm

Требования для привязки UEFI Arm включают специфику платформы Arm, необходимую для соответствия спецификации UEFI. Для Windows требуется все в привязке Arm, применимое к ARMv7. Поскольку Windows не поддерживает ничего предшествующего ARMv7, требования в связывании, касающиеся ARMv6k и ниже, являются необязательными.

Привязка указывает, например, как следует настроить MMU и как следует сопоставить физическую память. Привязка также указывает, что вызовы протоколов и служб UEFI должны выполняться только в ISA Arm, что означает, что программное обеспечение, работающее в Thumb2 или Thumb, потребуется переключиться в режим Arm перед вызовом функций UEFI.

Требования к запуску мультипроцессора UEFI Arm

Корпорация Майкрософт разработала протокол для запуска нескольких ядер Arm на платформе UEFI с несколькими процессорами. Этот протокол требуется для Windows на платформах Arm, которые не поддерживают интерфейс координации состояния питания (PSCI) . Платформы, поддерживающие PSCI, не должны использовать этот протокол. Дополнительные сведения об этом протоколе см. в документе «Многопроцессорный запуск на платформах на основе UEFI Arm» на веб-сайте ACPI Component Architecture (ACPICA).

Требования к настройке платформы

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

Требование Описание
Путь загрузки Встроенное ПО должно инициализировать платформу до точки, когда Windows может получить доступ к загрузочному устройству через UEFI и загрузить ядро. Любое устройство, которое участвует в иерархии для чтения с загрузочного устройства, должно работать с тактовой частотой и питаться с разумной скоростью, учитывая требования к производительности и потреблению энергии. Ядро процессора также должно иметь разумные частоту и питание, чтобы система могла своевременно загружаться без значительного разряда батареи.
Основные системные ресурсы Основные системные ресурсы, предоставляемые ОС с помощью таблиц ACPI, должны быть включены и синхронизированы. Основные системные ресурсы включают контроллеры прерываний, таймеры и контроллеры DMA, которыми должна управлять ОС. Кроме того, прерывания должны быть маскированы вызовом ExitBootServices() до тех пор, пока связанный с устройством драйвер в ОС не размаскирует и повторно не включит прерывания на устройстве. Если прерывания включены во время загрузки служб, предполагается, что встроенное ПО управляет ими.
Отладка Windows поддерживает отладку через узел USB 3 (XHCI), узел USB 2 (EHCI), IEEE 1394, последовательные интерфейсы и интерфейсы USB функции (а также адаптеры ethernet PCI). По крайней мере один из них должен быть подключен к питанию, синхронизирован с тактовым сигналом и инициализирован встроенным ПО до передачи управления ОС. Какой бы вариант ни был предложен, он должен иметь открытый порт для отладки, а контроллер должен быть сопоставлен с областью памяти или подключен через выделенную (не общую) периферийную шину.
Другие требования к настройке платформы Все конфигурации пин-мультиплексирования и настройки пэдов должны быть завершены в встроенном ПО до передачи управления загрузчику ОС.

Требования к установке

Для Windows требуется, чтобы секция ОС была размещена в решении хранилища с секционированием GPT. Секционированного хранилища MBR можно использовать в качестве хранилища данных. Как определено в спецификации UEFI, для платформы UEFI требуется выделенная системная секция. Для Windows требуется этот выделенный системный раздел, называемый системным разделом EFI (ESP).

Требование к аппаратному интерфейсу тестирования безопасности (HSTI)

Платформа должна реализовать интерфейс тестирования аппаратной безопасности, и требуется совместно использовать документацию и инструменты, указанные в спецификации тестируемости аппаратной безопасности .

Минимальные требования UEFI для Windows на платформе SoC

требования UEFI для поддержки флэш-памяти USB