Sdílet prostřednictvím


Požadavky rozhraní UEFI pro edice Windows na platformách SoC

Tento článek popisuje požadavky rozhraní UEFI, které platí pro Windows 10 pro desktopové edice (Home, Pro, Enterprise a Education).

Souhrn požadavků

V následující tabulce jsou uvedeny všechny aktuální požadavky na dodržování předpisů UEFI definované ve specifikaci rozhraní UEFI (oddíl 2.6 specifikace rozhraní UEFI 2.3.1). V této tabulce termín Explicitní požadavek na systém Windows identifikuje jakýkoli protokol nebo službu, které jsou přímo volány komponentou systému Windows. Přestože Windows explicitně používá pouze tyto služby, mohou být ostatní uvedené služby a protokoly implicitně nebo explicitně vyžadovány implementací základního firmwaru, ovladači zařízení EFI nebo nástroji pro vývoj a nasazení.

Microsoft vítá zpětnou vazbu a připomínky implementátorů k této sadě požadavků. Pro všechny požadavky na dodržování předpisů UEFI, které operační systém nebo firmware nevyžadují, je naším záměrem pracovat prostřednictvím UEFI.org, abychom tyto požadavky na dodržování předpisů uvolnili pro tuto třídu zařízení.

Další informace o konkrétních požadavcích najdete v částech za tabulkou.

Požadavek Oddíl specifikace UEFI Poznámky
systémová tabulka EFI 4.3 Explicitní požadavek na Windows
spouštěcí služby EFI 6.0
Služby událostí, časovače a úloh 6.1
Paměťové služby 6.2 Explicitní požadavek na Windows
Služby protokolového zpracovatele 6.3 Explicitní požadavek na Windows
Služby obrázků 6.4 Explicitní požadavek na Windows
Různé služby 6.5 Explicitní požadavek na Windows
služeb modulu runtime EFI 7.0
Časové služby 7.3 Explicitní požadavek na Windows
Proměnné služby 7.2 Explicitní požadavek na Windows
Různé služby 7.5 Explicitní požadavek na Windows
požadované protokoly UEFI
Protokol EFI pro načtené obrazy 8.1
Protokol cesty zařízení s načteným obrazem EFI 8.2
Protokol cesty zařízení EFI 9.2 Explicitní požadavek na Windows
Protokol nástrojů pro cesty zařízení EFI 9.5
Dekompresní protokol EFI 18.5
Protokol interpreta EBC 20.11
podmíněně vyžadované protokoly UEFI
Jednoduchý textový vstupní protokol EFI 11.3 Explicitní požadavek na Windows
Protokol EFI EX pro jednoduchý textový vstup 11.2
Textový protokol jednoduchého výstupu EFI 11.4
Grafický výstupní protokol EFI 11.9 Explicitní požadavek na Windows
Zjištěný protokol EFI EDID 11.9.1
Aktivní protokol EFI EDID 11.9.1
Protokol EFI Block IO 12.8 Explicitní požadavek na Windows
Protokol EFI disk IO 12.7
Jednoduchý protokol systému souborů EFI 12.4
Protokol kolace EFI Unicode 12.10
Jednoduchý síťový protokol EFI 21.1
Základní kódový protokol EFI PXE 21.3
Protokol služeb integrity spouštění EFI 21.5
Sériový vstupně-výstupní protokol EFI 11.8
UEFI Arm vazba 2.3.5 Explicitní požadavek na Windows
požadavky na zabezpečení
Zabezpečené spouštění 27.0 Explicitní požadavek na Windows
Požadavky na správce spouštění 3.1, 3.3 Explicitní požadavek na Windows

Požadavky na systémovou tabulku EFI

Systémová tabulka EFI musí odpovídat standardní definici na úrovni revize implementované. Konfigurační tabulka, na kterou odkazuje systémová tabulka EFI, musí obsahovat dvě identifikátory GUID a jejich přidružené ukazatele popsané v následující tabulce.

Identifikátor GUID Popis
Identifikátor GUID tabulky EFI_ACPI Tento identifikátor GUID musí odkazovat na ukazatel popisu kořenového systému ACPI (RSDP) pro platformu.
SMBIOS_Table GUID Tento GUID musí odkazovat na strukturu vstupního bodu SMBIOS.

Systém Windows vyžaduje specifikaci SMBIOS na úrovni revize 2.4 nebo vyšší. Jsou vyžadovány oddíly 3.2, Povinné struktury a data a 4, Pokyny pro shodu. Je k dispozici test kompatibility SMBIOS pro Windows.

Požadavky na spouštěcí služby EFI

Následující tabulka uvádí požadavky na spouštěcí služby EFI pro Windows.

Spouštěcí služba EFI Požadavek
Paměťové služby Systém Windows vyžaduje všechny paměťové služby.
Služby zpracování protokolu Systém Windows vyžaduje následující služby obslužné rutiny protokolu:

OpenProtocol()
CloseProtocol()
LocateDevicePath()
LocateHandle()
Služby obrázků Systém Windows vyžaduje následující služby imagí:

ExitBootServices()
Různé spouštěcí služby Systém Windows vyžaduje následující různé spouštěcí služby:

Stall()

Poznámka: Implementace Stall() musí mít deterministickou (opakovatelnou) chybu, aby mohla být oprava nebo zrušení chyby spolehlivě provedena.

Požadavky na běhové služby EFI

Následující tabulka uvádí požadavky na služby modulu runtime EFI pro Windows.

Služba runtime EFI Požadavek
Časové služby Systém Windows vyžaduje následující časové služby:

GetTime()
SetTime()

Poznámka: Časové služby budou volány pouze během spouštění (před exitBootServices()) pro přístup k hardwaru na platformě.
Proměnné služby Všechny služby proměnných rozhraní UEFI jsou vyžadovány pro správu více spouštěcích zařízení a proměnných zabezpečení v cílové třídě systémů.
Různé runtime služby Systém Windows vyžaduje následující různé služby modulu runtime:

ResetSystem()

Poznámka: implementace ResetSystem() musí podporovat možnosti resetování i vypnutí.

Požadavky na protokol

Následující tabulka popisuje protokoly UEFI, které systém Windows vyžaduje k provádění konkrétních funkcí během spouštění.

Protokol Požadavek
Grafický výstupní protokol Systém Windows vyžaduje grafický výstupní protokol (GOP). Konkrétní požadavky na vyrovnávací paměť rámce jsou:

U integrovaných displejů musí HorizontalResolution a VerticalResolution být nativním rozlišením panelu.

U externích displejů HorizontalResolution a VerticalResolution musí být nativní rozlišení displeje, nebo pokud to není podporované, musí být nejvyšší hodnoty podporované grafickým adaptérem i připojeným displejem.

PixelsPerScanLine musí být stejný jako HorizontalResolution.

PixelFormat musí být PixelBlueGreenRedReserved8BitPerColor. Vyžaduje se fyzický frame buffer; PixelBltOnly není podporován.

Při předání řízení spouštění spouštěcí aplikaci UEFI nesmí správce spouštění firmwaru a firmware používat frame buffer pro žádný účel. Vyrovnávací paměť rámce musí být po ukončení spouštěcích služeb dál prohledána.
Alternativní výstup zobrazení Firmware rozhraní UEFI musí podporovat spouštění pomocí libovolného konektoru zobrazení podporovaného hardwarem. Pokud je interní panel připojený a viditelný, musí být použit interní panel. Všechny výstupy, které mají fyzicky připojené displeje, musí zobrazit spouštěcí obrazovku. U připojených displejů musí firmware rozhraní UEFI:

Inicializace výstupu pomocí nativního režimu zobrazení, pokud je možné určit nativní rozlišení.

Pokud nativní režim není možný, musí se inicializovat do nejvyššího kompatibilního režimu.

Pokud není možné určit možnosti zobrazení, musí být připojený displej inicializován v režimu, o kterém je známo, že je kompatibilní s co největším počtem monitorů (obvykle 640x480 nebo 1024x768 při 60 Hz).
Vstup při spuštění Protokol EFI Simple Text Input Protocol se vyžaduje pro výběr spouštěcích možností nebo jiných výběrů nabídek v systémech s integrovanými klávesnicemi nebo připojenými klávesnicemi. Pro systémy bez klávesnice se ve spouštěcím prostředí doporučují tři tlačítka:

Tlačítko Start
Tlačítko Zvýšit hlasitost
Tlačítko Snížit hlasitost

Stisknutí tlačítek by se mělo hlásit prostřednictvím protokolu EFI Simple Text Input Protocol tak, že je namapuje na následující klávesové zkratky:

Klávesa Windows
Šipka nahoru
Šipka dolů
Spuštění místního úložiště Systém Windows vyžaduje podporu protokolu blokových vstupně-výstupních operací a protokolu cesty zařízení pro řešení úložiště, které obsahuje systémový oddíl EFI a oddíl operačního systému Windows. Pro spouštění z flashového úložiště, které vyžaduje vyrovnávání opotřebení nebo jinou správu paměti flash, musí být implementováno ve firmwaru (ne v aplikaci UEFI).

Požadavky na zabezpečení

Systém Windows má požadavky na zabezpečení v oblastech zabezpečeného spouštění, měřeného spouštění, kryptografie a ochrany dat. Tyto požadavky jsou podrobně popsané v následující tabulce. Kromě toho pro oblasti, ve kterých hardware SoC brání dodržování stávajících standardů (TPM, RTC atd.), se vyvíjejí další požadavky. Jsou popsány na konci tabulky.

Oblast Požadavek
Obecné
  • Požadavek 1: POVINNÉ. Platforma musí splňovat všechny požadavky uvedené v této části.

  • Požadavek 2: POVINNÉ. Platformy musí být třídy UEFI tři bez nainstalovaného nebo instalovatelného modulu podpory kompatibility. Emulace systému BIOS a spuštění staršího PC/AT musí být zakázány.

Zabezpečené spouštění UEFI
  • Požadavek 3: POVINNÉ. Zabezpečené spouštění, jak je definováno v oddílu 27 UEFI v2.3.1, musí být dodáno s povolením a s podpisovou databází (EFI_IMAGE_SECURITY_DATABASE), která je nezbytná pro bezpečné předpřipravené spuštění počítače. Počáteční obsah podpisové databáze je určen výrobcem OEM na základě požadovaných ovladačů UEFI třetích stran, potřeb obnovení a zavaděče spouštění operačního systému nainstalovaného na počítači, ale musí být zahrnut podpis EFI_CERT_X509 od Microsoftu. Nejsou přítomny žádné další podpisy.

  • Požadavek 4: POVINNÉ. Je vyžadována přítomnost zakázané podpisové databáze UEFI (EFI_IMAGE_SECURITY_DATABASE1).

  • Požadavek 5: POVINNÉ. Klíč UEFI poskytovaný Microsoftem musí být součástí databáze UEFI KEK. Žádné dodatečné šifrovací klíče (KEK) nesmí být přítomny. Microsoft poskytuje klíč KEK ve formě podpisu EFI_CERT_X509.

  • Požadavek 6: POVINNÉ. Klíč PKpub musí být k dispozici a uložen v flash firmwaru. Poznámka: Vzhledem k tomu, že pkpriv (protějšek privátního klíče k PKpub) řídí zásady zabezpečeného spouštění na všech zařízeních zřízených pomocí pkpub, jeho ochrana a použití musí být pečlivě chráněna.

  • Požadavek 7: POVINNÉ. Počáteční podpisové databáze se ukládají ve firmwaru flash a mohou být aktualizovány pouze aktualizací firmwaru podepsaného výrobcem OEM nebo zápisem ověřené proměnné UEFI.

  • Požadavek 8: POVINNÉ. Obrazy v zaváděcí cestě, které neprojdou ověřením podpisu, nesmějí být spuštěny a důvod selhání musí být přidán do EFI_IMAGE_EXECUTION_TABLE. Doporučeným přístupem v těchto situacích je také to, že správce spouštění UEFI zahájí obnovení podle strategie specifické pro OEM.

  • Požadavek 9: POVINNÉ. Fyzický zásah uživatele nesmí být povolen u UEFI obrazů, které selžou při ověření podpisu.

  • Požadavek 10: VOLITELNÉ. Výrobce OEM může implementovat možnost pro fyzicky přítomného uživatele vypnout zabezpečené spouštění buď pomocí přístupu k PKpriv, nebo prostřednictvím fyzické přítomnosti v nastavení firmwaru. Přístup k nastavení firmwaru může být chráněný specifickými prostředky platformy (heslo správce, čipová karta, statická konfigurace atd.).

  • Požadavek 11: POVINNÉ, pokud je implementovaný požadavek 10. Pokud je zabezpečené spouštění vypnuté, nebudou všechny existující proměnné UEFI přístupné.

  • Požadavek 12: NEPOVINNÝ. OEM může implementovat schopnost fyzicky přítomného uživatele vybrat mezi dvěma režimy zabezpečeného spouštění v nastavení firmwaru: Vlastní a Standard. Vlastní režim umožňuje větší flexibilitu, jak je uvedeno v následujícím příkladu.

  • Požadavek 13: POVINNÉ, pokud je implementovaný požadavek 12. Je možné znovu povolit zakázané funkce zabezpečeného spuštění v režimu vlastního nastavení nastavením specifického vlastníka PK. Správa musí pokračovat podle bodu 27.5 specifikace rozhraní UEFI v2.3.1: Výměna klíčů firmwaru/OS. Ve vlastním režimu může vlastník zařízení nastavit svoji volbu podpisů v podpisových databázích.

  • Požadavek 14: POVINNÉ, pokud je implementován požadavek 12. Nastavení firmwaru určuje, jestli je zapnuté zabezpečené spouštění a jestli je provozováno ve standardním nebo vlastním režimu. Nastavení firmwaru poskytne možnost vrátit se z vlastního do standardního režimu.

  • Požadavek 15: POVINNÉ. Pokud se nastavení firmwaru obnoví do výchozího továrního nastavení, vymažou se všechny vlastní chráněné proměnné a původní PKpub bude znovu vytvořen spolu s původními databázemi podpisů zřízenými výrobcem.

  • Požadavek 16: POVINNÉ. Podepisování řidiče musí používat možnost Authenticode (WIN_CERT_TYPE_PKCS_SIGNED_DATA).

  • Požadavek 17: POVINNÉ. Podpora EFI_IMAGE_EXECUTION_INFO_TABLE (tj. vytvoření a uložení informací o obrazech spuštěných nebo nespouštěných během spouštění).

  • Požadavek 18: POVINNÉ. Podpora getVariable() pro EFI_IMAGE_SECURITY_DATABASE (autorizovaná i zakázaná podpisová databáze).

  • Požadavek 19: POVINNÉ. Podpora setVariable() pro EFI_IMAGE_SECURITY_DATABASE (autorizovaná i zakázaná podpisová databáze) s použitím klíče Microsoft KEK pro ověřování.

  • Požadavek 20: POVINNÉ. EFI_HASH_SERVICE_BINDING_PROTOCOL: Podpora služeb: CreateChild(), DestroyChild().

  • Požadavek 21: POVINNÉ. EFI_HASH_PROTOCOL. Podpora služeb: Hash(). Podpora algoritmů hash SHA_1 a SHA-256 Musí podporovat předávání zprávy o délce nejméně 10 Mbytes.

Měřené spouštění UEFI

Následující požadavky nevyžadují implementaci TCG TPM; však naznačují potřebu ekvivalentních funkcí pro ovlivněné oblasti.

Podporu platformy může poskytovat implementace firmwaru čipu TPM, která se spouští v zabezpečeném spouštěcím prostředí, vrstvení nad kryptografickým akceleračním modulem a využití izolovaného úložiště. Microsoft může být schopen poskytnout referenční software pro takovou implementaci TPM pro použití dodavatelem. Toto téma je předmětem dalších diskuzí.

  • Požadavek 22: POVINNÉ. Platforma musí odpovídat protokolu EFI určenému v rozhraní UEFI Trusted Execution Environment EFI Protocol.

  • Požadavek 23: POVINNÉ. Platforma musí dodržovat specifikaci platformy EFI TCG s následujícími dodatky:

    • Na platformách, které podporují rozhraní definované v protokolu TrEE EFI, se hodnota hash PKpub rozšíří do TPM PCR[03] jako událost EV_EFI_VARIABLE_CONFIG.

    • Hodnota shrnutí obsahu autorizované databáze podpisů (viz bod 27.8 specifikace UEFI v2.3.1) musí být rozšířena v rámci měřeného spuštění jako událost EV_EFI_VARIABLE_CONFIG. Operace rozšíření bude provedena na TPM PCR[03].

    • Klient UEFI může číst a analyzovat seznam certifikátů pomocí proměnné EFI_IMAGE_SECURITY_DATABASE a ověřit hodnotu hash proti rozšířené hodnotě.

    • TCG_PCR_EVENT hodnoty hash musí být SHA-256, nikoli SHA-1.

  • Požadavek 24: POVINNÉ. Platforma musí implementovat MemoryOverwriteRequestControl definovaný v specifikaci zmírnění útoku na reset platformy TCG.

Kryptografie
  • Požadavek 25: POVINNÉ. Platforma poskytuje EFI_HASH_PROTOCOL (UEFI v2.3.1 oddíl 27.4) pro snižování zátěže kryptografických hash operací. Sha-256 se musí podporovat.

  • Požadavek 26: POVINNÉ. Platforma podporuje EFI_RNG_PROTOCOL definované Microsoftem pro čtení entropie před operačním systémem.

Ochrana dat
  • Požadavek 27: POVINNÉ. Platforma musí podporovat proměnné EFI s libovolnou kombinací následujících atributů proměnných UEFI:

    • EFI_VARIABLE_BOOTSERVICE_ACCESS

    • EFI_VARIABLE_NON_VOLATILE

    • EFI_VARIABLE_AUTHENTICATED_WRITE_ACCESS

Další požadavky na zabezpečení

Windows na platformách SoC vyžaduje následující další požadavky.

  • Společnost Microsoft definovala protokol pro shromažďování entropie z platformy UEFI. Tento protokol sice nevyžaduje rozhraní UEFI, ale Windows ho vyžaduje na platformách SoC. Další informace o protokolu pro shromažďování entropie UEFI naleznete v tématu .

  • Aktualizace databáze podpisů UEFI. V oddílu 27 rozhraní UEFI 2.3.1 byl přijat nový mechanismus aktualizace ověřených proměnných. Tento mechanismus vyžaduje Systém Windows.

  • Důvěryhodné prováděcí prostředí. Společnost Microsoft vyvinula protokol EFI pro interakci s důvěryhodným spouštěcím prostředím (TrEE), což je podobné podmnožině Důvěryhodné výpočetní skupiny (TCG) Trusted Platform Module (TPM). Protokol EFI ve velké míře využívá protokol TCG EFI, Verze 1.2, Revize 1.00, vydaný 9. června 2006 skupinou Trusted Computing Group.

    Podrobnosti najdete v protokolu UEFI Trusted Execution Environment EFI.

Požadavky správce spouštění firmwaru

Správce spouštění firmwaru musí podporovat výchozí chování spouštění definované v části 3.3 specifikace. Kromě toho je vyžadována podpora vícenásobného spouštění, globálně definovaných proměnných a požadavky Správce spouštění podle části 3.1 specifikace.

Požadavky na vazby UEFI Arm

UEFI Arm Binding zahrnuje požadavky specifické pro platformu Arm potřebné k tomu, aby byla v souladu se specifikací UEFI. Systém Windows vyžaduje vše v vazbě Arm, která se vztahuje na ARMv7. Vzhledem k tomu, že systém Windows nepodporuje nic staršího než ARMv7, jsou požadavky specifické pro ARMv6k a starší vázání volitelné.

Vazba určuje například způsob konfigurace MMU a namapování fyzické paměti. Vazba také určuje, že volání protokolů a služeb UEFI by měla být provedena pouze v Arm ISA, což znamená, že software spuštěný v Thumb2 nebo Thumb by před voláním funkcí UEFI potřeboval přepnout zpět do režimu Arm.

Požadavky na spuštění multiprocesoru UEFI Arm

Společnost Microsoft vyvinula protokol pro spouštění několika jader Arm na platformě UEFI s více procesory. Tento protokol vyžaduje Windows na platformách Arm, které nepodporují Power State Coordination Interface (PSCI). Platformy, které podporují PSCI, nesmí tento protokol používat. Další informace o tomto protokolu naleznete v dokumentu Multiprocesorové spuštění na platformách UEFI na bázi Arm na webových stránkách ACPI Component Architecture (ACPICA).

Požadavky na nastavení platformy

Firmware je zodpovědný za uvedení systémového hardwaru do dobře definovaného stavu před předáním zavaděči operačního systému. Následující tabulka definuje související požadavky na nastavení platformy.

Požadavek Popis
Spouštěcí cesta Firmware musí inicializovat platformu do bodu, kde má Systém Windows přístup ke spouštěcímu zařízení přes rozhraní UEFI a načíst jádro. Každé zařízení, které je součástí hierarchie a účastní se čtení ze spouštěcího zařízení, musí být taktované a napájené rozumnou rychlostí vzhledem k výkonu a spotřebě energie. Samotné jádro základního procesoru by také mělo být hodinováno a napájeno rozumnou rychlostí, aby se systém mohl spouštět včas bez vyprázdnění baterie.
Základní systémové prostředky Základní systémové prostředky, které jsou vystaveny operačnímu systému prostřednictvím tabulek ACPI, musí být zapnuté a hodinované. Mezi základní systémové prostředky patří kontrolery přerušení, časovače a řadiče DMA, které musí operační systém spravovat. Kromě toho musí být přerušení maskována voláním ExitBootServices(), dokud přidružený ovladač zařízení v operačním systému neodmaskuje a znovu povolí přerušení na zařízení. Pokud jsou během spouštěcích služeb povolené přerušení, předpokládá se, že je firmware spravuje.
Ladění Systém Windows podporuje ladění prostřednictvím rozhraní USB 3 Host (XHCI), USB 2 Host (EHCI)1, IEEE 1394, serial a USB Function interfaces (stejně jako adaptéry PCI ethernet). Alespoň jeden z nich musí být před předáním řízení operačnímu systému zapnutý, synchronizován a inicializován firmwarem. Bez ohledu na to, která možnost je k dispozici, musí mít otevřený port pro účely ladění a řadič musí být paměťově mapovaný nebo připojený přes vyhrazenou (nesdílenou) periferní sběrnici.
Další požadavky na nastavení platformy Před předáním řízení do zavaděče operačního systému musí být ve firmwaru dokončena jakákoli konfigurace pin-multiplexingu a nastavení padů.

Požadavky na instalaci

Systém Windows vyžaduje, aby byl oddíl operačního systému umístěn na úložném zařízení s GPT. Úložiště rozdělené do oddílů MBR se dá použít jako úložiště dat. Jak je definováno ve specifikaci rozhraní UEFI, platforma UEFI vyžaduje vyhrazený systémový oddíl. Systém Windows vyžaduje tento vyhrazený systémový oddíl, který se označuje jako systémový oddíl EFI (ESP).

Požadavek rozhraní HSTI (Hardware Security Test Interface)

Platforma musí implementovat rozhraní pro testování hardwarového zabezpečení a platforma je nutná ke sdílení dokumentace a nástrojů uvedených ve specifikaci Specifikace testability hardwarového zabezpečení.

minimální požadavky rozhraní UEFI pro Windows na platformách SoC

požadavky rozhraní UEFI na podporu usb flashingu