Windows安全開機金鑰建立和管理指引 - Microsoft Docs

文章推薦指數: 80 %
投票人數:10人

平臺擁有者稍後可以使用PKpriv) (金鑰的私用半部:. 若要變更平臺擁有權,您必須將韌體放入UEFI 定義的安裝模式,以停用安全開機。

只有在 ... 跳到主要內容 已不再支援此瀏覽器。

請升級至MicrosoftEdge,以利用最新功能、安全性更新和技術支援。

下載MicrosoftEdge 其他資訊 目錄 結束焦點模式 閱讀英文 儲存 目錄 閱讀英文 儲存 Twitter LinkedIn Facebook 電子郵件 WeChat 目錄 Windows安全開機金鑰建立和管理指引 發行項 05/30/2022 2位參與者 此頁面有所助益嗎? Yes No 還有其他意見反應嗎? 系統會將意見反應傳送給Microsoft:按下[提交]按鈕,您的意見反應將用來改善Microsoft產品和服務。

隱私權原則。

送出 謝謝。

本文內容 本檔有助於引導OEM和ODM在製造環境中建立和管理安全開機金鑰和憑證。

其解決了建立、儲存和擷取平臺金鑰(PK)、安全韌體更新金鑰,以及協力廠商金鑰Exchange(KEK)的相關問題。

注意 這些步驟並非電腦OEM專屬。

企業和客戶也可以使用這些步驟來設定其伺服器以支援安全開機。

WindowsUEFI和安全開機的需求,請參閱Windows硬體認證需求。

本檔不會介紹新的需求,或代表官方Windows計畫。

其旨在作為認證需求以外的指引,以協助建立和管理安全開機金鑰的有效率且安全的程式。

這很重要,因為UEFI安全開機是以公開金鑰基礎結構的使用方式為基礎,以在允許執行之前驗證程式代碼。

讀者應該知道UEFI的基本概念、(對UEFI規格第27章)和PKI安全性模型的基本瞭解。

目前可透過Windows硬體認證套件(HCK),在Windows上驗證安全開機的需求、測試和工具。

不過,這些HCK資源無法解決Windows部署的金鑰建立和管理。

本檔將金鑰管理當作資源,協助引導合作夥伴部署韌體所使用的金鑰。

它不是作為規範性指引,而且不包含任何新的需求。

在此頁面上: 1.安全開機、Windows和金鑰管理包含開機安全性和PKI架構的相關資訊,因為它適用于Windows和安全開機。

2.金鑰管理解決方案旨在協助合作夥伴設計符合其需求的金鑰管理和設計解決方案。

3.摘要和資源包含附加專案、檢查清單、API和其他參考。

本檔可作為開發客戶就緒電腦、工廠部署工具和重要安全性最佳做法的起點。

1.安全開機、Windows和金鑰管理 UEFI(整合可擴展韌體介面)規格會定義稱為安全開機的韌體執行驗證程式。

作為業界標準,安全開機會定義平臺韌體如何管理憑證、驗證韌體,以及作業系統如何與此程式進行介面。

安全開機是以公開金鑰基礎結構(PKI)程式為基礎,以在允許模組執行之前進行驗證。

這些模組可以包含韌體驅動程式、選項ROM、磁片上的UEFI驅動程式、UEFI應用程式或UEFI開機載入器。

透過執行前的映射驗證,安全開機可降低開機前惡意程式碼攻擊的風險,例如rootkit。

Microsoft依賴Windows8和更新版本的UEFI安全開機作為其信任開機安全性架構的一部分,以改善客戶的平臺安全性。

Windows8和更新版用戶端電腦都需要安全開機,以及Windows硬體相容性需求中所定義的WindowsServer2016。

安全開機程式的運作方式如下,如圖1所示: 韌體開機元件:韌體會驗證OS載入器是否受信任(Windows或其他受信任的作業系統。

) Windows開機元件:BootMgr、WinLoad、Windows核心啟動。

Windows開機元件驗證每個元件的簽章。

不會載入任何非信任的元件,而是會觸發安全開機補救。

防毒軟體和反惡意程式碼軟體初始化:此軟體會檢查Microsoft核發的特殊簽章,並確認它是受信任的開機關鍵驅動程式,並在開機程式初期啟動。

開機關鍵驅動程式初始化:所有開機關鍵驅動程式上的簽章都會在WinLoad中檢查為安全開機驗證的一部分。

其他OS初始化 Windows登入畫面 圖1:Windows信任的開機架構 UEFI安全開機的實作是Microsoft信任開機架構的一部分,在Windows8.1中引進。

惡意程式碼惡意探索演進的不斷成長趨勢,是以開機路徑作為慣用的攻擊媒介為目標。

這種攻擊類別很難防範,因為惡意程式碼產品可以由防止它們完全載入的惡意軟體停用。

透過Windows信任開機架構及其建立安全開機的根信任,客戶會藉由確保只有經過簽署、認證的「已知良好」程式碼和開機載入器才能載入作業系統,來保護客戶免于在開機路徑中執行的惡意程式碼。

1.1Public-Key基礎結構(PKI)和安全開機 PKI會在系統中建立真實性和信任。

安全開機會利用PKI進行兩個高階用途: 在開機期間,判斷是否信任早期開機模組來執行。

若要驗證對服務要求的要求,包括修改安全開機資料庫和平臺韌體更新。

PKI包含: 發行數位憑證的憑證授權單位單位(CA)。

註冊授權單位,驗證從CA要求憑證的使用者身分識別。

要在其中儲存和索引鍵的中央目錄。

憑證管理系統。

1.2公開金鑰密碼編譯 公開金鑰密碼編譯會使用一對數學相關的密碼編譯金鑰,稱為公用和私密金鑰。

如果您知道其中一個索引鍵,則無法輕易計算另一個金鑰是什麼。

如果使用一個金鑰來加密資訊,則只有對應的金鑰可以解密該資訊。

針對安全開機,私密金鑰是用來數位簽署程式碼,而公開金鑰則是用來驗證該程式碼上的簽章,以證明其真實性。

如果私密金鑰遭到入侵,則具有對應公開金鑰的系統將不再安全。

這可能會導致開機套件攻擊,並損害負責確保私密金鑰安全性的實體信譽。

在安全開機公開金鑰系統中,您有下列專案: 1.2.1RSA2048加密 RSA-2048是非對稱密碼編譯演算法。

儲存原始格式RSA-2048模數所需的空間為2048位。

1.2.2自我簽署憑證 私密金鑰所簽署且符合憑證公開金鑰的憑證稱為自我簽署憑證。

(CA)憑證的根憑證授權單位屬於此類別。

1.2.3憑證授權單位單位 憑證授權單位單位(CA)簽發已簽署的憑證,確認憑證主體的身分識別,並將該身分識別系結至憑證中包含的公開金鑰。

CA會使用其私密金鑰簽署憑證。

它會對自我簽署根CA憑證中的所有相關物件發出對應的公開金鑰。

在安全開機中,憑證授權單位單位(CA)包括OEM(或其委派)和Microsoft。

CA會產生構成根信任目錄的金鑰組,然後使用私密金鑰簽署合法的作業,例如允許的早期開機EFI模組和韌體服務要求。

對應的公開金鑰會內嵌在已啟用安全開機的電腦上的UEFI韌體中,並用來驗證這些作業。

(與安全開機模型相關的網際網路上已準備好使用CA和金鑰交換的詳細資訊。

) 1.2.4公開金鑰 公用平臺金鑰會隨附在電腦上,且可供存取或「公用」。

在本檔中,我們將使用尾碼「pub」來表示公開金鑰。

例如,PKpub代表PK的公用半部。

1.2.5私密金鑰 若要讓PKI能夠運作,必須安全地管理私密金鑰。

組織內的少數高度信任個人應該可以存取,且位於實體安全的位置,且具有強式存取原則限制。

在本檔中,我們將使用尾碼「priv」來表示私密金鑰。

例如,PKpriv表示PK的私人一半。

1.2.6憑證 數位憑證的主要用途是驗證已簽署資料的來源,例如二進位檔等。

憑證的常見用法是使用傳輸層安全性(TLS)或安全通訊端層(SSL)的網際網路訊息安全性。

使用憑證驗證已簽署的資料可讓收件者知道資料的原點,以及是否已在傳輸中變更。

一般數位憑證包含高階的辨別名稱(DN)、公開金鑰和簽章。

DN會識別實體--公司,例如--保存符合憑證公開金鑰的私密金鑰。

使用私密金鑰簽署憑證,並將簽章放在憑證中,會將私密金鑰系結至公開金鑰。

憑證可以包含一些其他類型的資料。

例如,X.509憑證包含憑證格式、憑證序號、用來簽署憑證的演算法、發行憑證的CA名稱、要求憑證的實體名稱與其公開金鑰,以及CA的簽章。

1.2.7鏈結憑證 來源:憑證鏈結: 圖2:三個憑證鏈結 使用者憑證通常會由不同的私密金鑰簽署,例如CA的私密金鑰。

這構成兩個憑證鏈結。

確認使用者憑證是否正版牽涉到從其憑證驗證其簽章,這需要CA的公開金鑰。

但在可以使用CA的公開金鑰之前,必須驗證封入CA憑證。

因為CA憑證是自我簽署的,所以會使用CA公開金鑰來驗證憑證。

使用者憑證不需要由根CA的私密金鑰簽署。

此憑證可由CA私密金鑰所簽署之媒介的私密金鑰簽署。

這是三個憑證鏈結的實例:使用者憑證、中繼憑證和CA憑證。

但多個媒介可以是鏈結的一部分,因此憑證鏈結可以是任何長度。

1.3安全開機PKI需求 UEFI定義的根信任目錄包含平臺金鑰,以及OEM或ODM包含在韌體核心中的任何金鑰。

UEFI安全性與根信任目錄不會由UEFI安全開機程式解決,而是由國家標準與技術(NIST),以及信任運算群組(TCG)發行集所參考。

1.3.1安全開機需求 您必須考慮下列參數來實作安全開機: 客戶需求 Windows硬體相容性需求 金鑰產生和管理需求。

您必須挑選硬體以進行安全開機金鑰管理的硬體,例如硬體安全性模組(HSM)、考慮電腦寄送給政府和其他機構的特殊需求,最後是建立、填入和管理各種安全開機金鑰的生命週期程式。

1.3.2安全開機相關金鑰 用於安全開機的金鑰如下: 圖3:與安全開機相關的金鑰 上圖3代表具有安全開機的電腦中的簽章和金鑰。

平臺是透過OEM在製造期間安裝在韌體中的平臺金鑰來保護。

安全開機會使用其他金鑰來保護存取儲存金鑰的資料庫,以允許或不允許執行韌體。

授權的資料庫(db)包含代表受信任韌體元件和作業系統載入器的公開金鑰和憑證。

禁止簽章資料庫(dbx)包含惡意和易受攻擊元件的雜湊,以及遭入侵的金鑰和憑證,以及封鎖執行這些惡意元件。

這些原則的強度是以使用Authenticode和公開金鑰基礎結構的簽署韌體為基礎,(PKI)。

PKI是建立、管理及撤銷在資訊交換期間建立信任的憑證的妥善程式。

PKI是安全開機安全性模型的核心。

以下是這些金鑰的詳細資料。

1.3.3平臺金鑰(PK) 根據UEFI2.3.1ErrataC的第27.5.1節,平臺金鑰會建立平臺擁有者和平臺韌體之間的信任關係。

平臺擁有者會在UEFI2.3.1ErrataC的第7.2.1節中指定,將PKpub)的(公開金鑰註冊到平臺韌體中。

此步驟會將平臺從安裝模式移至使用者模式。

Microsoft建議平臺金鑰的類型EFI_CERT_X509_GUID為公開金鑰演算法RSA、公開金鑰長度為2048位,以及簽章演算法sha256RSA。

如果儲存空間是考慮的,平臺擁有者可能會使用類型EFI_CERT_RSA2048_GUID。

公開金鑰是用來檢查簽章,如本檔稍早所述。

平臺擁有者稍後可以使用PKpriv)(金鑰的私用半部: 若要變更平臺擁有權,您必須將韌體放入UEFI定義的安裝模式,以停用安全開機。

只有在製造期間需要執行這項操作時,才還原為設定模式。

針對桌上型電腦,OEM會管理PK及其相關聯的必要PKI。

針對伺服器,OEM預設會管理PK和必要的PKI。

Enterprise客戶或伺服器客戶也可以自訂PK,將OEM信任的PK取代為自訂專屬PK,以鎖定UEFI安全開機韌體本身的信任。

1.3.3.1註冊或更新金鑰Exchange金鑰(KEK)註冊平臺金鑰 平臺擁有者會呼叫UEFISpec2.3.1errataC1的第7.2.1節中所指定的UEFI開機服務SetVariable()來註冊PKpub)的公用(半部平臺金鑰,然後重設平臺。

如果平臺處於安裝模式,則新的PKpub應該使用其PKpriv對應專案簽署。

如果平臺處於使用者模式,則必須使用目前的PKpriv簽署新的PKpub。

如果PK的類型EFI_CERT_X509_GUID為,則必須由立即的PKpriv簽署,而不是PK下簽發之任何憑證的私密金鑰。

1.3.3.2清除平臺金鑰 平臺擁有者會呼叫UEFI開機Ser/viceSetVariable(),並重設平臺,以清除PKpub)平臺(的公用一半。

如果平臺處於安裝模式,則不需要驗證空白變數。

如果平臺處於使用者模式,則必須使用目前的PKpriv簽署空白變數;如需詳細資訊,請參閱UEFI規格2.3.1ErrataC下第7.2節(變數服務)。

強烈建議生產PKpriv永遠不會用來簽署套件來重設平臺,因為這可讓安全開機以程式設計方式停用。

這主要是生產前測試案例。

您也可以使用安全的平臺特定方法來清除平臺金鑰。

在此情況下,全域變數安裝程式模式也必須更新為1。

圖4:平臺金鑰狀態圖表 1.3.3.3PK產生 根據UEFI建議,公開金鑰必須儲存在防竄改和刪除電腦上的非變動性儲存體中。

私密金鑰會在合作夥伴或OEM的安全性Office中保持安全,而且只會將公開金鑰載入平臺。

2.2.1和2.3節下有更多詳細資料。

產生的PK數目取決於平臺擁有者(OEM)。

這些金鑰可以是: 每部電腦一部。

每個裝置都有一個唯一金鑰。

對於具有高安全性需求的政府機關、金融機構或其他伺服器客戶,可能需要這樣做。

它可能需要額外的儲存體和密碼編譯處理能力,才能為大量電腦產生私人和公開金鑰。

這會在未來將韌體更新推送至裝置時,新增對應裝置與其對應PK的複雜性。

有一些不同的HSM解決方案可用來根據HSM廠商管理大量金鑰。

如需詳細資訊,請參閱使用HSM保護開機金鑰產生。

每個模型一個。

每個電腦模型都有一個金鑰。

此處的取捨是,如果金鑰遭入侵相同模型內的所有機器都會易受攻擊。

Microsoft針對桌上型電腦建議這麼做。

每個生產線一個。

如果金鑰遭到入侵,整個生產線就會容易受到攻擊。

每個OEM一個。

雖然這可能是最簡單的設定方式,但如果金鑰遭到入侵,您製造的每個電腦都會容易受到攻擊。

若要加速處理月臺上的作業,PK和其他金鑰可能會預先產生並儲存在安全的位置。

稍後可以在元件行中擷取及使用這些專案。

第2章和第3章有更多詳細資料。

1.3.3.4重新設定PK的索引鍵 如果PK遭到入侵,或客戶基於安全性理由而要求註冊自己的PK,則可能需要此專案。

您可以根據選取何種方法來建立PK,為模型或電腦完成重設金鑰。

所有較新的電腦都會使用新建立的PK簽署。

更新生產電腦上的PK需要以取代PK或韌體更新套件的現有PK簽署的變數更新。

OEM也可以建立SetVariable()套件,並使用簡單的應用程式散發套件,例如只變更PK的PowerShell。

韌體更新套件會由安全韌體更新金鑰簽署,並由韌體驗證。

如果執行韌體更新來更新PK,請小心確保保留KEK、db和dbx。

在所有電腦上,建議不要使用PK作為安全韌體更新金鑰。

如果PKpriv遭到入侵,則安全韌體更新金鑰(,因為它們是相同的)。

在此情況下,註冊新PKpub的更新可能無法進行,因為更新程式也遭到入侵。

在SOCs電腦上,有另一個理由不要使用PK作為安全韌體更新金鑰。

這是因為安全韌體更新金鑰會在符合Windows硬體認證需求的電腦上永久損毀成融合。

1.3.4金鑰Exchange金鑰(KEK)金鑰交換金鑰會建立作業系統與平臺韌體之間的信任關係。

每個作業系統(且可能,每個需要與平臺韌體通訊的協力廠商應用程式,)向平臺韌體註冊公開金鑰(KEKpub)。

1.3.4.1註冊金鑰Exchange金鑰 金鑰交換金鑰會儲存在簽章資料庫中,如1.4簽章資料庫(Db和Dbx))中所述。

簽章資料庫會儲存為已驗證的UEFI變數。

平臺擁有者會在UEFI規格2.3.1ErrataC中呼叫7.2(變數服務)中指定的SetVariable()來註冊金鑰交換金鑰。

使用EFI_VARIABLE_APPEND_WRITE屬性集和包含新索引鍵的Data參數(),或使用GetVariable()讀取資料庫,將新的金鑰交換金鑰附加至現有的金鑰,然後使用SetVariable()寫入資料庫,如中所指定7.2(變數服務)UEFI規格2.3.1ErrataC下沒有EFI_VARIABLE_APPEND_WRITE屬性集。

如果平臺處於安裝模式,則簽章資料庫變數不需要簽署,但SetVariable()呼叫的參數仍應備妥為第7.2.1節中已驗證的變數所指定。

如果平臺處於使用者模式,則必須使用目前的PKpriv簽署簽章資料庫 1.3.4.2清除KEK )KEK刪除(可以「清除」。

請注意,如果未在平臺上安裝PK,則不需要簽署「清除」要求。

如果已簽署,則若要清除KEK需要PK簽署的套件,而且清除db或dbx需要由KEK中任何實體簽署的套件。

1.3.4.3MicrosoftKEK 需要MicrosoftKEK,才能藉由更新dbx,並可能更新db來準備較新Windows簽署的映射,以啟用不良映射的撤銷。

在KEK資料庫中包含MicrosoftCorporationKEKCA2011,其中包含下列值: SHA-1憑證雜湊:31590bfd89c9d74ed087dfac66334b3931254b30。

SignatureOwnerGUID:{77fa9abd-0359-4d32-bd60-28f4e78f784b}。

Microsoft會將憑證提供給合作夥伴,並可新增為EFI_CERT_X509_GUID或EFI_CERT_RSA2048_GUID類型簽章。

您可以從下列位置下載MicrosoftKEK憑證:https://go.microsoft.com/fwlink/?LinkId=321185。

1.3.4.4KEKDefault平臺廠商可能會在KEKDefault變數中提供一組預設的金鑰Exchange金鑰。

如需詳細資訊,請參閱UEFI規格第27.3.3節。

1.3.4.5OEM/協力廠商KEK-新增多個KEK 客戶和平臺擁有者不需要有自己的KEK。

在非WindowsRT電腦上,OEM可能會有額外的KEK,以允許其他OEM或dbx的協力廠商控制。

1.3.5安全開機韌體更新金鑰安全韌體更新金鑰是用來簽署需要更新的韌體。

此金鑰的最小金鑰強度為RSA-2048。

所有韌體更新都必須由OEM安全地簽署、其信任的委派,例如ODM或IBV(獨立BIOS廠商),或由安全簽署服務簽署。

根據NIST發行集800-147欄位韌體更新,必須支援指導方針的所有元素: 任何韌體快快閃記憶體放區的更新都必須由建立者簽署。

韌體必須檢查更新的簽章。

1.3.6建立安全韌體更新的金鑰 相同的金鑰將用來簽署所有韌體更新,因為公用半部會位於電腦上。

您也可以使用鏈結至安全韌體更新金鑰的金鑰來簽署韌體更新。

每部電腦可能有一個金鑰,例如PK或每一個型號或每一個生產線一個。

如果每部電腦有一個金鑰,這表示需要產生數百萬個唯一的更新套件。

請考慮根據資源可用性來考慮哪種方法可為您運作。

每個模型或生產線都有金鑰是很好的入侵。

安全韌體更新公開金鑰(或其雜湊,以節省空間)會儲存在平臺上的一些受保護儲存體中–通常是受保護的快閃(電腦)或一次性可程式化融合(SOC)。

如果只儲存此金鑰的雜湊(以節省空間),則韌體更新會包含金鑰,而更新程式的第一個階段將會確認更新中的公開金鑰符合儲存在平臺上的雜湊。

封裝是作業系統可以在重新開機時將資料傳遞至UEFI環境的方法。

Windows呼叫UEFIUpdateCapsule()來傳遞系統和電腦韌體更新。

在呼叫ExitBootServices()之前,Windows會在WindowsDriverMicrosoftStore中找到的任何新韌體更新傳入UpdateCapsule()。

UEFI系統韌體可以使用此程式來更新系統和電腦韌體。

利用此Windows韌體支援,OEM可以依賴相同的通用格式和程式來更新系統和電腦韌體的韌體。

韌體必須實作ACPIESRT資料表,才能支援Windows的UEFIUpdateCapsule()。

如需實作WindowsUEFI韌體更新平臺支援的詳細資訊,請參閱下列檔:WindowsUEFI韌體更新平臺。

更新封裝可以位於記憶體或磁片上。

Windows支援記憶體更新。

1.3.6.1擷取(記憶體中) 以下是記憶體內部更新擷取器運作的事件流程。

作業系統中的應用程式會放入記憶體中 信箱事件已設定為通知BIOS擱置中的更新 電腦重新開機,確認BIOS會執行擷取映射和更新 1.3.7一般韌體更新的工作流程 下載並安裝韌體驅動程式。

重新開機。

OS載入器會偵測並驗證韌體。

OS載入器會將二進位Blob傳遞至UEFI。

UEFI會執行韌體更新(此程式是由晶片廠商)所擁有。

作業系統載入器偵測成功完成。

OS完成開機。

1.4Db和Dbx(簽章資料庫) 1.4.1允許的簽章資料庫(db) EFI_IMAGE_SECURITY_DATABASEdb的內容可控制在驗證載入的映射時信任的影像。

資料庫可能包含多個憑證、金鑰和雜湊,以識別允許的影像。

必須包含具有SHA-1憑證雜湊的580a6f4cc4e4b669b9ebdc1b2b3e087b80d0678dMicrosoftWindowsProductionPCA2011,才能讓WindowsOS載入器載入。

您可以從這裡下載WindowsCA:https://go.microsoft.com/fwlink/p/?linkid=321192。

在非WindowsRT電腦上,OEM應考慮包含MicrosoftCorporationUEFICA2011與SHA-1憑證雜湊。

46def63b5ce61cf8ba0de2e6639c1019d0ed14f3使用此憑證簽署UEFI驅動程式和應用程式,可讓協力廠商的UEFI驅動程式和應用程式在電腦上執行,而不需要使用者執行其他步驟。

您可以從這裡下載UEFICA:https://go.microsoft.com/fwlink/p/?linkid=321194。

在非WindowsRT電腦上,OEM可能也會有其他專案,以允許其他作業系統或OEM核准的UEFI驅動程式或應用程式,但這些映射不得以任何方式危害電腦的安全性。

1.4.2DbDefault:平臺廠商可能會為dbDefault變數中的SignatureDatabase提供一組預設專案。

如需詳細資訊,請參閱UEFI規格中的第27.5.3節。

1.4.3禁止簽章資料庫(dbx) 在檢查db之前驗證影像時,必須先檢查dbx的內容EFI_IMAGE_SIGNATURE_DATABASE1,而且任何相符專案都必須防止映射執行。

資料庫可能包含多個憑證、金鑰和雜湊,以識別禁止的影像。

Windows硬體認證需求指出dbx必須存在,因此任何虛擬值,例如的SHA-256雜湊0,都可以當做安全預留位置使用,直到Microsoft開始傳遞dbx更新為止。

按一下[這裡]以從Microsoft下載最新的UEFI撤銷清單。

1.4.4DbxDefault:平臺廠商可能會為dbxDefault變數中的SignatureDatabase提供一組預設專案。

如需詳細資訊,請參閱UEFI規格中的第27.5.3節。

1.5所有電腦上安全開機所需的金鑰 PKpub PK OEM PK–僅限1。

必須是RSA2048或更新版本。

MicrosoftCorporationKEKCA2011 KEK Microsoft 允許db和dbx的更新: https://go.microsoft.com/fwlink/p/?linkid=321185. MicrosoftWindowsProductionCA2011 db Microsoft 簽章資料庫中的這個CA(db)允許Windows開機:https://go.microsoft.com/fwlink/?LinkId=321192。

禁止簽章資料庫 Dbx Microsoft 來自Microsoft的已知錯誤金鑰、CA或影像清單 保護韌體更新金鑰 OEM 建議讓此金鑰與PK不同 表1:安全開機所需的金鑰/資料庫 2.金鑰管理解決方案 以下是我們用來比較的一些計量。

2.1已使用的計量 下列計量可協助您根據UEFI規格2.3.1ErrataC的需求和需求來選取HSM電腦。

與PKI相關的公開金鑰基礎結構)( 它是否支援RSA2048或更高版本?-UEFI規格2.3.1ErrataC建議金鑰為RSA-2048或更高版本。

它是否能夠產生金鑰和簽署? 可以儲存多少個金鑰?它會將金鑰儲存在HSM或連結伺服器上嗎? 金鑰擷取的驗證方法。

有些電腦支援多個驗證實體,以供金鑰擷取使用。

定價 什麼是價格點?HSM的價格範圍可以從$1,500到$70,000,視可用的功能而定。

製造環境 工廠樓層的作業速度。

密碼編譯處理器可以加速金鑰建立和存取。

輕鬆設定、部署、維護。

需要技能集和訓練嗎? 備份和高可用性的網路存取 標準和合規性 FIPS合規性有哪些層級?是否防竄改? 支援其他標準,例如MScryptoAPI。

是否符合政府和其他機構需求? 可靠性和災害復原 它是否允許金鑰備份? 備份可以同時儲存在與CA電腦和HSM和/或位於異地位置不同的安全位置。

它是否允許高可用性進行災害復原? 2.2金鑰管理選項 2.2.1硬體安全性模組(HSM) 根據上述準則,這可能是最適合且最安全的解決方案。

大部分HSM都有FIPS140-2層級3合規性。

FIPS140-2層級3合規性對驗證嚴格,而且要求金鑰不會從HSM匯出或匯入。

它們支援多種金鑰儲存方式。

它們可以儲存在HSM本身的本機,或儲存在附加至HSM的伺服器上。

在伺服器上,金鑰會加密並儲存,而且最好用於需要儲存大量金鑰的解決方案。

密碼編譯模組安全性原則應指定實體安全性原則,包括密碼編譯模組中實作的實體安全性機制,例如防竄改密封、鎖定、竄改回應和零化參數,以及警示。

它也允許指定操作員()所需的動作,以確保會維護實體安全性,例如定期檢查防竄改密封或測試竄改回應和零化參數。

2.2.1.1網路HSM 此解決方案是其類別中最佳的安全性、遵循標準、金鑰產生、儲存體和擷取。

其中大部分的電腦都支援高可用性,而且能夠備份金鑰。

這些產品的成本可以根據所提供的額外服務,以數千美元為單位。

2.2.1.2獨立HSM 這些適用于獨立伺服器。

其中一個可以使用MicrosoftCAPI和CNG或任何其他HSM支援的安全API。

這些HSM隨附各種支援USB、PCIe和PCMCIA匯流排的規格。

它們可以選擇性地支援金鑰備份和高可用性。

2.2.2自訂解決方案提供者 公開金鑰密碼編譯可能很困難,而且需要瞭解可能新的密碼編譯概念。

有自訂解決方案提供者可協助讓安全開機在製造環境中運作。

BIOS廠商、HSM公司及PKI諮詢服務提供的各種自訂解決方案,可讓安全開機PKI在製造環境中運作。

以下列出部分提供者: 2.2.2.1BIOS廠商 有一些BIOS廠商可以提供自訂解決方案。

2.2.2.2HSM廠商 某些HSM廠商可能可以提供自訂諮詢。

如需詳細資訊,請參閱使用HSM保護開機金鑰產生和簽署(範例)。

2.2.3信任平臺模組(TPM) 信任的平臺模組(TPM)是主機板上的硬體晶片,可儲存用於加密的密碼編譯金鑰。

許多電腦都包含TPM,但如果電腦不包含TPM,則無法新增一部電腦。

啟用之後,信賴平臺模組可協助保護完整的磁片加密產品,例如MicrosoftBitLocker功能。

它會讓硬碟保持鎖定或密封,直到電腦完成系統驗證或驗證程式為止。

TPM可以產生、儲存和保護加密和解密程式中所使用的金鑰。

TPM的缺點是它可能沒有快速的加密處理器,以加速製造環境中的處理。

它們也不適合儲存大量的金鑰。

FIPS140-2層級3的備份和高可用性和標準合規性可能無法使用。

2.2.4智慧卡 智慧卡可以產生及儲存金鑰。

他們確實會共用一些HSM支援的功能,例如驗證和竄改,但不包含大量金鑰儲存體或備份。

它們需要手動介入,而且可能不適合在生產環境中使用,因為效能可能很低。

智慧卡的缺點類似于TPM。

它們可能沒有快速的加密處理器,可在製造環境中加速處理。

它們也不適合儲存大量的金鑰。

FIPS140-2層級3的備份和高可用性和標準合規性可能無法使用。

2.2.5擴充驗證憑證 EV憑證是高保證憑證,其私密金鑰會儲存在硬體權杖中。

這有助於建立更強大的金鑰管理做法。

EV憑證的缺點與智慧卡相同。

2.2.6以軟體為中心的方法(不建議) 使用密碼編譯API進行金鑰管理。

這可能牽涉到將金鑰儲存在加密硬碟上的金鑰容器中,並可使用虛擬機器進行額外的沙箱化和安全性。

這些解決方案不像使用HSM一樣安全,而且會公開較高的攻擊媒介。

不建議使用2.2.6.1Makecert)( Makecert是Microsoft工具,可用於產生金鑰。

若要確定受攻擊面最小化,您可能需要「空距」電腦。

已開啟PKpriv的電腦不應連線到網路。

它應該位於安全的位置,在理想情況下,如果不是真正的HSM,則至少應該使用智慧卡閱讀機。

makecert-pe-ssMY-$individual-n"CN=yournamehere"-len2048-r 如需詳細資訊,請參閱憑證建立工具(Makecert.exe)。

不建議使用此解決方案。

2.3適用于安全開機金鑰的HSM金鑰產生和儲存體 2.3.1儲存私密金鑰 每個RSA-2048金鑰的空間需求是2048位。

金鑰儲存的實際位置取決於所選擇的解決方案。

HSM是儲存金鑰的好方法。

工廠樓層電腦的實體位置必須是受保護的區域,且使用者存取有限,例如安全主機殼。

視您的需求而定,這些金鑰也可以儲存在不同的地理位置,或備份在不同的位置。

這些金鑰的重設金鑰需求可能會因客戶而有所不同(請參閱美國聯邦橋接器憑證授權單位單位的附錄A重新金鑰指導方針)。

這些作業每年可以完成一次。

根據重設金鑰的需求等,您可能需要存取這些金鑰最多30年()。

2.3.2擷取私密金鑰 基於許多原因,可能需要擷取金鑰。

PK可能需要擷取,才能發出已更新的PK,因為其遭到入侵或遵守政府/其他機構法規。

KEKpri將用來更新db和dbx。

安全韌體更新金鑰–pri將用來簽署較新的更新。

2.3.3驗證 根據FIPS140-2驗證,會以存取層級為基礎。

層級2 安全性層級2至少需要以角色為基礎的驗證,其中密碼編譯模組會驗證操作員的授權,以擔任特定角色並執行一組對應的服務。

層級3 安全性層級3需要以身分識別為基礎的驗證機制,強化為安全性層級2所指定角色型驗證機制所提供的安全性。

密碼編譯模組會驗證操作員的身分識別,並確認已識別的操作員有權擔任特定角色並執行一組對應的服務。

HSM等電腦支援安全性層級3,這需要以身分識別為基礎的「kofm驗證」。

這表示k實體會以權杖授與HSM的存取權,但在指定的時間點至少必須有k的m權杖,驗證才能從HSM取得私密金鑰的存取權。

例如,您應該驗證5個權杖中的3個權杖來存取HSM。

這些成員可以是主管、交易授權者和/或主管管理的成員。

HSM權杖 您可以在HSM上擁有需要權杖存在的原則: 本地 遠端 設定為自動化 最佳做法是使用權杖和每個權杖密碼的組合。

2.4安全開機和協力廠商封緘 2.4.1UEFI驅動程式簽署 UEFI驅動程式必須由資料庫中的CA或金鑰簽署,如檔中其他地方所述,或具有db中包含的驅動程式映射雜湊。

Microsoft將使用MicrosoftCorporationUEFICA2011提供UEFI驅動程式簽署服務,類似于WHQL驅動程式簽署服務。

任何由此簽署的驅動程式都會在包含MicrosoftUEFICA的任何電腦上順暢地執行。

OEM也可以簽署信任的驅動程式,並在資料庫中包含OEMCA,或包含db中驅動程式的雜湊。

在所有情況下,UEFI驅動程式(選項ROM)如果db中不受信任,則不得執行。

系統韌體映射中包含的任何驅動程式不需要重新驗證。

屬於整體系統映射的一部分,可提供足夠的保證,讓驅動程式在電腦上受到信任。

Microsoft已向任何想要簽署UEFI驅動程式的人員提供此功能。

此憑證是WindowsHCK安全開機測試的一部分。

請遵循[此部落格]((https://blogs.msdn.microsoft.com/windows_hardware_certification/2013/12/03/microsoft-uefi-ca-signing-policy-updates/)深入瞭解UEFICA簽署原則和更新。

2.4.2開機載入器 MicrosoftUEFI驅動程式簽署憑證可用於簽署其他OS。

例如,Fedora的Linux開機載入器將會由它簽署。

此解決方案不需要再將憑證新增至金鑰資料庫。

除了符合成本效益之外,還可以用於任何Linux散發套件。

此解決方案適用于支援Windows的任何硬體,因此適用于各種硬體。

您可以從這裡下載UEFI-CA:https://go.microsoft.com/fwlink/p/?LinkID=321194。

下列連結提供有關WindowsHCKUEFI簽署和提交的詳細資訊: Windows開發人員中心硬體儀表板 Windows認證儀表板管理 UEFI韌體簽署 Windows硬體認證部落格:UEFI簽署CA更新 3.摘要和資源 本節旨在摘要說明上述各節,並逐步示範方法: 建立安全的CA或識別合作夥伴,以安全地產生和儲存金鑰 如果您未使用協力廠商解決方案: 在HSM伺服器上安裝及設定HSM軟體。

請檢查您的HSM參考手冊以取得安裝指示。

伺服器將會連線到獨立或網路HSM。

如需HSM設定的相關資訊,請參閱第2.2.1節、2.3和附錄C。

大部分HSM都提供FIPS140-2層級2和3合規性。

針對層級2或層級3合規性設定HSM。

層級3合規性對於驗證和金鑰存取有更嚴格的需求,因此更安全。

建議使用層級3。

設定HSM以取得高可用性、備份和驗證。

檢查您的HSM參考手冊。

遵循HSM提供者設定高可用性和備份的HSM指導方針。

此外,網路HSM通常有多個網路埠來隔離流量;允許伺服器與網路上的網路HSM通訊,與一般生產網路分開。

一旦已識別屬於安全性小組的小組成員,並為其指派權杖。

您必須設定HSM硬體以進行k-of-m驗證。

安全開機金鑰和憑證預先產生。

請參閱1.3到1.5節 使用HSMAPI預先產生(預先產生)PK和韌體更新金鑰和憑證。

必要-PK(建議每個模型1)、韌體更新金鑰(建議每個模型1)、MicrosoftKEK、Db、DbxNOTE:MicrosoftKEK、db和dbx不需要由OEM產生,並提及完整性。

選用-OEM/協力廠商KEKdb、dbx和任何其他會進入OEMDb的金鑰。

將Windows映射套用至電腦。

安裝Microsoftdb和dbx。

請參閱第1.3.6節和附錄B–安全開機API。

將MicrosoftWindowsProductionPCA2011安裝至db。

如果Microsoft未提供空白dbx,請安裝。

Windows會在第一次重新開機時,透過WindowsUpdate自動更新DBX到最新的DBX。

注意 使用屬於WINDOWSHCK測試的PowerShellCmdlet,或使用BIOS廠商所提供的方法。

安裝MicrosoftKEK。

請參閱第1.3.3節。

將MicrosoftKEK安裝到UEFIKEK資料庫 警告 使用屬於WINDOWSHCK測試的PowerShellCmdlet,或使用BIOS廠商所提供的方法。

選擇性步驟-OEM/協力廠商安全開機元件。

請參閱1.3.4和1.4節。

識別您是否需要建立OEM/協力廠商KEK、db和dbx。

使用HSMAPI在先前)產生的OEM/協力廠商KEK(簽署OEM/協力廠商db和dbx。

安裝OEM/協力廠商KEK、db和dbx。

UEFI驅動程式簽署–請參閱第2.4節。

如果支援增益集卡片或其他UEFI驅動程式/應用程式/開機載入器,請將MicrosoftCorporationUEFICA2011安裝到UEFIdb。

安全開機韌體更新金鑰-請參閱1.3.5節。

僅限非WindowsRT電腦:安裝安全韌體更新公開金鑰或其雜湊以節省空間。

僅限SoC上,您可能需要執行不同的動作,例如,使用安全韌體更新金鑰:public或其雜湊。

啟用安全開機。

請參閱附錄B–安全開機API。

建議安裝OEM/ODMPKpub(憑證,但金鑰)UEFIPK。

使用安全開機API註冊PK。

電腦現在應該已啟用安全開機。

注意 如果您在結尾安裝PK,MSKEK、db、dbx不需要簽署,則不需要簽署任何SignerInfo。

這是快捷方式。

測試安全開機:依照指示執行任何專屬測試和WindowsHCK測試。

請參閱附錄B–安全開機API。

寄送平臺:PKpriv可能永遠不會再次使用,使其安全無虞。

服務:未來的韌體更新會使用簽署服務的安全韌體更新「私密金鑰」安全地簽署。

3.1資源 安全性策略白皮書-https://go.microsoft.com/fwlink/p/?linkid=321288 WindowsHCK提交-https://go.microsoft.com/fwlink/p/?linkid=321287 附錄A–製造的安全開機PKI檢查清單 以下是高階檢查清單,摘要說明在非WindowsRT電腦上啟用安全開機所需的步驟。

設定安全開機 定義安全性策略(識別威脅、根據第4節中的白皮書定義主動式和反應式策略)。

根據第4節中的白皮書識別安全性小組。

建立安全的CA,或識別合作夥伴(建議的解決方案)安全地產生和儲存金鑰。

識別您要重新編制索引鍵的頻率原則。

如果您有任何特殊的客戶需求,例如政府或其他機構,則可能取決於此情況。

如果安全開機金鑰遭到入侵,請制定應變計劃。

根據1.3.3和1.5節,識別您將產生多少PK和其他金鑰。

這會以客戶基礎、金鑰儲存解決方案和安全性電腦為基礎。

如果您使用使用協力廠商進行金鑰管理的建議解決方案,則可以略過步驟7-8。

採購伺服器和硬體以進行金鑰管理。

–每節2.2.1的網路或獨立HSM。

請考慮您是否需要一或多個HSM才能取得高可用性,以及金鑰備份策略。

識別至少3-4個小組成員,這些成員將具有驗證權杖以在HSM上進行驗證。

使用HSM或協力廠商預先產生安全開機相關金鑰和憑證。

金鑰將取決於電腦類型:SoC、WindowsRT或非WindowsRT。

如需詳細資訊,請參閱第1.3節到1.5節。

使用適當的金鑰填入韌體。

註冊安全開機平臺金鑰以啟用安全開機。

如需詳細資訊,請參閱附錄B。

依照指示執行任何專屬測試和HCK安全開機測試。

如需詳細資訊,請參閱附錄B。

寄送電腦。

PKpriv可能永遠不會再次使用,保持安全。

維護(更新韌體) 您可能需要基於數個原因來更新韌體,例如更新UEFI元件,或修正安全開機金鑰入侵或定期重新設定安全開機金鑰。

如需詳細資訊,請參閱第1.3.5節和第1.3.6節。

附錄B–安全開機API 安全開機API 下列API與UEFI/安全開機有關: GetFirmwareEnvironmentVariableEx:擷取指定韌體環境變數的值。

SetFirmwareEnvironmentVariableEx:設定指定韌體環境變數的值。

GetFirmwareType:擷取韌體類型。

設定PK 使用Set-SecureBootUEFICmdlet來開啟安全開機。

在程式碼設定PK之後,在下次重新開機之前,安全開機的系統強制執行不會生效。

在重新開機之前,您的程式碼可以呼叫GetFirmwareEnvironmentVariableEx()或PowerShellCmdlet:Get-SecureBootUEFI以確認安全開機資料庫的內容。

驗證 您可以使用Msinfo32.exe或PowerShellCmdlet來檢查安全開機變數狀態。

沒有WMI介面。

您也可以從WindowsHCK安全開機手動標誌測試),並確認它無法開機,藉此測試有人插入未正確簽署的USB磁片磁碟機(。

安全開機PowershellCmdlet Confirm-SecureBootUEFI:UEFI安全開機是否為「ON」、True或False? SetupMode==0&&SecureBoot==1 Set-SecureBootUEFI:設定或附加已驗證的SecureBootUEFI變數 Get-SecureBootUEFI:取得已驗證的SecureBootUEFI變數值 Format-SecureBootUEFI:建立EFI_SIGNATURE_LISTs&EFI_VARIABLE_AUTHENTICATION_2序列化 WindowsHCK和安全開機指示 下列步驟適用于系統測試和非類別驅動程式電腦測試。

停用安全開機保護。

輸入您的BIOS設定並停用安全開機。

安裝HCK用戶端軟體。

執行所有WindowsHCK測試,但下列專案除外: BitLockerTPM和使用PCR修復密碼測試[7] 使用安全開機的Arm電腦進行BitLockerTPM和修復密碼測試 安全開機標誌測試 安全開機手動標誌測試 輸入您的BIOS設定、啟用安全開機,並將安全開機還原至預設設定。

執行下列BitLocker和安全開機測試: BitLockerTPM和使用PCR修復密碼測試[7] 使用安全開機的Arm電腦進行BitLockerTPM和修復密碼測試 安全開機標誌測試(自動化) 輸入BIOS設定,並清除安全開機設定。

這會藉由刪除PK和其他金鑰,將電腦還原到設定模式。

注意 x86/x64電腦需要清除支援。

執行安全開機手動標誌測試。

注意 安全開機需要在非WindowsRT電腦上WindowsHCK簽署或VeriSign驅動程式 WindowsHCK安全開機標誌測試(自動化) 此測試會檢查適當的現用安全開機設定。

這包括: 安全開機已啟用。

PK不是已知的測試PK。

KEK包含生產MicrosoftKEK。

db包含生產WindowsCA。

dbx存在。

建立/刪除許多1kB變數。

已建立/刪除32kB變數。

WindowsHCK安全開機手動測試資料夾配置 WindowsHCK安全開機手動標誌測試檔案夾配置如下: "\Test"資料夾具有下列專案: 製造與服務測試 以程式設計方式在測試組態中啟用安全開機 服務測試 將憑證附加至db,驗證函式 將雜湊附加至dbx,驗證函式 將憑證附加至dbx,驗證函式 將600個以上的雜湊附加至dbx,確認大小 以程式設計方式變更PK "\Generate"資料夾有顯示下列專案的腳本: 如何建立測試憑證 包含測試憑證和私密金鑰 如何建立所有測試 將憑證和雜湊轉換成已簽署的套件 您可以自行執行此動作,取代您自己的憑證 "\certs"folder具有您需要開機的所有憑證Windows: 注意 請勿使用中"ManualTests\generate\TestCerts"用來產生金鑰和憑證的方法。

這僅適用于WindowsHCK測試用途。

它會使用儲存在磁片上且非常不安全且不建議使用的金鑰。

這不適用於生產環境。

"ManualTests\example\OutOfBox"資料夾有腳本,您可以利用這些腳本在生產電腦上安裝安全開機。

示範"ManualTests\generate\tests\subcreate_outofbox_example.ps1"當合作夥伴可以替代PK和其他中繼資料時,如何產生這些範例,並具有「TODO」區段。

WindowsHCKUEFI簽署和提交 下列連結具有詳細資訊: 硬體開發人員中心儀表板 UEFI韌體簽署 Windows認證儀表板管理 Windows硬體認證部落格:MicrosoftUEFICA簽署原則更新 附錄C–聯邦橋接器憑證授權單位單位憑證原則保證對應 基本 此層級提供個人身分識別的最低保證程度。

此層級的主要功能之一是提供所簽署資訊的資料完整性。

此層級與惡意活動風險視為低的環境相關。

它不適用於需要驗證的交易,而且通常不足以用於需要機密性的交易,但可能用於具有較高保證層級的憑證無法使用的後者。

基本 此層級提供與有資料入侵風險和結果的環境相關的基本保證層級,但不會被視為重大重要性。

這可能包括存取惡意存取的可能性不高的私人資訊。

此安全性層級假設使用者不太可能是惡意的。

中 此層級與資料洩露風險和結果中等的環境相關。

這可能包括具有大量貨幣價值或詐騙風險的交易,或涉及存取惡意存取的可能性很大的私人資訊。

高 此層級適合用於資料威脅偏高的位置,或安全性服務失敗的結果很高。

這可能包括高價值交易或高等級的詐騙風險。

相關主題 使用HSM保護開機金鑰產生和簽署(範例) UEFI驗證選項ROM驗證指引 安全開機概觀 本文內容



請為這篇文章評分?