共用方式為


受控硬體安全模組 (HSM) 中的金鑰主權、可用性、效能和可擴縮性

密碼編譯金鑰是對內部部署或雲端中的新式電腦系統所進行之保護的信任根源。 因此,控制有哪些人對那些金鑰具備授權,對於建置安全且符合規範的應用程式來說至關重要。

在 Azure 中,我們對於在雲端中進行金鑰管理之方式的願景是「金鑰主權」。 金鑰主權是指客戶的組織在有哪些人員可以存取金鑰及變更金鑰管理原則,以及有哪些 Azure 服務可以取用這些金鑰上,具備完整且獨佔的控制。 在客戶做出這些決策之後,將會以技術手段防止 Microsoft 人員變更這些決策。 金鑰管理服務程式碼會持續執行客戶的決策,直到客戶要求該程式碼執行其他動作為止,且 Microsoft 人員將無法介入。

同時,我們認為雲端中的每一個服務都應該是完全受控的。 該服務必須提供必要的可用性、復原性、安全性與雲端基本承諾,並由服務等級協定 (SLA) 所支援。 為提供受控服務,Microsoft 需要修補金鑰管理伺服器、升級硬體安全模組 (HSM) 韌體、修復失敗的硬體、執行容錯移轉,以及進行其他高權限作業。 相信大多數的安全性專業人員都知道,若某個人員對於系統具備高權限或實體存取權,則拒絕他存取該系統內的資料將會是一件相當困難的事。

本文說明我們如何在 Azure Key Vault 受控硬體安全模組 (HSM) 服務中解決此問題,並搭配硬體安全模組 (HSM) 使用機密運算技術,同時為客戶提供完整的金鑰主權和完全受控服務 SLA。

受控硬體安全模組 (HSM) 硬體環境

客戶位於任何 Azure 區域的受控硬體安全模組 (HSM) 集區都是位於安全的 Azure 資料中心 (部分機器翻譯) 之中。 三個執行個體會分散在數部伺服器上。 每一個執行個體都會部署到不同的機架中,以確保備援性。 每部伺服器都具備通過 FIPS 140-2 層級 3 (英文) 驗證且具備多個密碼編譯核心的 Marvell LiquidSecurity HSM 介面卡。 系統會使用這些核心來建立完全隔離的硬體安全模組 (HSM) 分割區,包括完全隔離的認證、資料儲存體與存取控制。

資料中心內對執行個體進行的實體區隔,對於確保失去單一元件 (例如機架頂端交換器或機架中的電源管理單元) 的情況不會影響到集區中的所有執行個體來說至關重要。 這些伺服器為 Azure 安全性硬體安全模組 (HSM) 小組專用。 這些伺服器不會與其他 Azure 小組共用,且不會在這些伺服器上部署任何客戶工作負載。 會使用實體存取控制 (包括鎖住的機架) 來防止對伺服器進行未經授權的存取。 這些控制符合 FedRAMP-High、PCI、SOC 1/2/3、ISO 270x 與其他安全性和隱私權標準,且會作為 Azure 合規性計畫的一部分進行定期的獨立驗證。 硬體安全模組 (HSM) 具有強化的實體安全性,且經過驗證以符合 FIPS 140-2 等級 3 需求。 整個受控硬體安全模組 (HSM) 服務是以標準的安全 Azure 平台 (部分機器翻譯) 為基礎所建置,其中包括能防範進階持續性威脅的可信啟動

硬體安全模組 (HSM) 介面卡能支援數十個隔離的硬體安全模組 (HSM) 分割區。 稱為「節點服務」的控制處理序會在每一部伺服器上執行。 節點服務會取得每張介面卡的擁有權,並安裝介面卡擁有者 (在此情況下為 Microsoft) 的認證。 硬體安全模組 (HSM) 的設計可確保對介面卡的擁有權並無法讓 Microsoft 存取儲存在客戶分割區中的資料。 其僅可讓 Microsoft 建立客戶分割區、調整其大小,以及加以刪除。 其支援對客戶的任何分割區進行盲性備份。 在「盲性備份」中,會使用客戶提供的金鑰來包裝備份,此類備份只能在客戶擁有的受控硬體安全模組 (HSM) 執行個體中由服務程式碼還原,且 Microsoft 無法讀取其中的內容。

受控硬體安全模組 (HSM) 集區的結構

圖 1 顯示硬體安全模組 (HSM) 集區的結構,其是由三部 Linux VM 所組成,每部 VM 都是在獨立資料中心的 HSM 伺服器上執行以支援可用性。 重要元件包括:

  • 硬體安全模組 (HSM) 網狀架構控制器 (HFC) 是服務的控制平面。 HFC 能驅動集區的自動化修補及修復。
  • 專屬於每個客戶、符合 FIPS 140-2 等級 3 規範的密碼編譯界限,包括三個 Intel Secure Guard Extensions (Intel SGX) 機密記憶體保護區,每個保護區都連線到一個硬體安全模組 (HSM) 執行個體。 此界限的根索引鍵是在三個硬體安全模組 (HSM) 中產生及儲存。 如我們即將於本文稍後描述,沒有任何與 Microsoft 相關的人員能夠存取此界限內的資料。 只有位於 Intel SGX 記憶體保護區中且代表客戶的服務程式碼 (包括節點服務代理程式) 具有存取權。

受控 HSM 集區的圖表,其中顯示客戶密碼編譯界限內的 TEE,以及界限外的健全狀況維護作業。

受信任執行環境 (TEE)

受控硬體安全模組 (HSM) 集區是由三個服務執行個體所組成。 每個服務執行個體都實作為使用 Intel SGX 功能和 Open Enclave SDK (英文) 的受信任執行環境 (TEE)。 透過在 TEE 內執行,能確保在裝載該服務的虛擬機器 (VM) 或該 VM 的主機伺服器上沒有任何人員能夠存取客戶祕密、資料或硬體安全模組 (HSM) 分割區。 每個 TEE 都是由特定客戶所專用,且其會針對硬體安全模組 (HSM) 分割區執行 TLS 管理、要求處理及存取控制。 在此 TEE 之外,不會有任何認證或客戶特定資料加密金鑰會以純文字的形式存在,除非是作為安全性網域套件的一部分。 該套件會根據客戶提供的金鑰進行加密,且會在其集區首次建立時下載。

TEE 會使用證明 TLS (英文) 彼此進行通訊。 證明 TLS 將 Intel SGX 平台的遠端證明功能與 TLS 1.2 結合。 這可讓 TEE 中的受控硬體安全模組 (HSM) 程式碼將其通訊對象限制為由相同的受控硬體安全模組 (HSM) 服務程式碼簽署金鑰所簽署的其他程式碼,以避免中間人攻擊。 受控硬體安全模組 (HSM) 服務的程式碼簽署金鑰是儲存在 Microsoft 產品發佈和安全性服務之中 (其也用於儲存 Windows 程式碼簽署金鑰之類的內容)。 該金鑰是由受控硬體安全模組 (HSM) 小組控制。 作為我們對於變更管理的法規和合規性義務的一部分,此金鑰無法由任何其他 Microsoft 小組用來簽署其程式碼。

用於 TEE 對 TEE 通訊的 TLS 憑證是由服務程式碼在 TEE 內自我簽發。 該憑證包含由伺服器上的 Intel SGX 記憶體保護區所產生的「平台報告」。 平台報告是使用製造 CPU 時由 Intel 融合至該 CPU 中的金鑰所衍生的金鑰來加以簽署。 該報告會根據載入 Intel SGX 記憶體保護區之程式碼的程式碼簽署金鑰和二進位雜湊來識別該程式碼。 根據這份平台報告,服務執行個體可以判斷某個對等項目也是由該受控硬體安全模組 (HSM) 服務程式碼簽署金鑰所簽署,且透過平台報告進行一些密碼編譯糾纏,服務執行個體也可以判斷那個自我簽發的憑證簽署金鑰一定也是在 TEE 內產生,以防止外部模擬。

提供具備完整客戶自控金鑰控制的可用性 SLA

為了確保高可用性,HFC 服務會在客戶選取的 Azure 區域中建立三個 HSM 實例。

受控硬體安全模組 (HSM) 集區建立

受控硬體安全模組 (HSM) 集區的高可用性特色是源自一律會保持同步的自動受控三重備援硬體安全模組 (HSM) 執行個體 (或者,如果您是使用多重區域複寫 (部分機器翻譯) 的話,則是源自使全部六個執行個體都保持同步)。 集區建立是由 HFC 服務所控制,其會在客戶選擇的 Azure 區域中的可用硬體上對集區進行配置。

要求新集區時,HFC 會在硬體安全模組 (HSM) 介面卡尚有可用空間的數個機架上選取三部伺服器,然後就會開始建立集區:

  1. HFC 會指示這三個 TEE 上的節點服務代理程式使用一組參數來啟動服務程式碼的新執行個體。 這些參數會識別客戶的 Microsoft Entra 租用戶、全部三個執行個體的內部虛擬網路 IP,以及一些其他的服務設定。 系統會隨機將其中一個分割區指派為主要分割區。

  2. 三個執行個體會啟動。 每個執行個體都會連線到其本機硬體安全模組 (HSM) 介面卡上的某個分割區,然後其會使用隨機產生的使用者名稱和認證將該分割區零化並初始化 (以確保該分割區無法由人類操作員或另一個 TEE 執行個體存取)。

  3. 主要執行個體會使用在硬體安全模組 (HSM) 中產生的私密金鑰建立分割區擁有者根憑證。 其會使用此根憑證簽署硬體安全模組 (HSM) 分割區的分割區等級憑證,來建立集區的擁有權。 主要分割區也會產生資料加密金鑰,其會用來保護服務內所有待用的客戶資料。 針對金鑰材質會使用雙重包裝,因為硬體安全模組 (HSM) 也會保護金鑰材質本身。

  4. 接著,此擁有權資料會同步至兩個次要執行個體。 每個次要執行個體都會使用證明 TLS 來連絡主要執行個體。 主要執行個體會共用具有私密金鑰和資料加密金鑰的分割區擁有者根憑證。 次要執行個體現在會使用分割區根憑證來向其自己的硬體安全模組 (HSM) 分割區簽發分割區憑證。 完成此動作之後,便能在三部不同的伺服器上具備由相同的分割區根憑證所擁有的硬體安全模組 (HSM) 分割區。

  5. 透過證明 TLS 連結,主要執行個體的硬體安全模組 (HSM) 分割區會使用由硬體安全模組 (HSM) 廠商提供的安全 API 與次要執行個體共用其產生的資料包裝金鑰 (用來將三個硬體安全模組 (HSM) 之間的訊息加密)。 在此交換期間,硬體安全模組 (HSM) 會確認它們具有相同的分割區擁有者憑證,然後其會使用 Diffie-Hellman 配置將訊息加密,使 Microsoft 服務程式碼無法加以讀取。 服務程式碼唯一能做的,就是在硬體安全模組 (HSM) 之間傳輸不透明的 Blob。

    此時,全部三個執行個體都已經準備好以集區的形式在客戶的虛擬網路上公開。 其共用相同的分割區擁有者憑證和私密金鑰、相同的資料加密金鑰,以及同樣的資料包裝金鑰。 不過,每個執行個體都具備適用於其硬體安全模組 (HSM) 分割區的唯一認證。 現在最後的步驟已經完成了。

  6. 每個執行個體都會為其公開的 TLS 憑證產生 RSA 金鑰組和憑證簽署要求 (CSR)。 CSR 是由 Microsoft 公開金鑰基礎結構 (PKI) 系統使用 Microsoft 公用根目錄所簽署,並會將產生的 TLS 憑證傳回執行個體。

  7. 全部三個執行個體都會從其本機 CPU 取得其自己的 Intel SGX 密封金鑰。 該金鑰是使用 CPU 自己的唯一金鑰和 TEE 的程式碼簽署金鑰產生。

  8. 集區會從 Intel SGX 密封金鑰衍生出唯一的集區金鑰,使用此集區金鑰將其所有祕密加密,然後將加密的 Blob 寫入磁碟。 這些 Blob 只能透過在相同的實體 CPU 上執行的相同 Intel SGX 密封金鑰進行程式碼簽署來解密。 祕密會繫結至那個特定的執行個體。

安全的啟動程序處理序現在已經完成。 此處理序同時允許建立三重備援硬體安全模組 (HSM) 集區,以及建立客戶資料主權的密碼編譯保證。

使用機密服務修復來維持執行階段的可用性 SLA

本文中描述的集區建立案例能夠說明受控硬體安全模組 (HSM) 服務是如何透過安全地管理提供服務的基礎伺服器來提供其高可用性 SLA。 假設有一部伺服器、一張硬體安全模組 (HSM) 介面卡,甚至是機架的電源供應器發生失敗。 受控硬體安全模組 (HSM) 服務的目標,在於能在無需任何客戶介入,同時能確保祕密不可能以純文字的形式在 TEE 之外公開的情況下,使集區能夠修復並回到三個狀態良好的執行個體。 這是透過機密服務修復來達成。

一開始,HFC 會偵測出哪一個集區具有位於失敗伺服器上的執行個體。 HFC 會在該集區的區域內尋找狀態良好的新伺服器,以作為取代執行個體的部署目標。 其會啟動新執行個體,接著系統會以和初始佈建步驟期間處理次要執行個體相同的方式處理這些新的執行個體:將硬體安全模組 (HSM) 初始化,尋找其主要執行個體,透過證明 TLS 安全地交換祕密,將硬體安全模組 (HSM) 簽署至擁有權階層,然後將其服務資料密封至其新的 CPU。 服務現已透過完全自動且完全機密的方式完成修復。

使用安全性網域從災害中復原

安全性網域是包含從頭重建硬體安全模組 (HSM) 分割區所需之所有認證的受保護 Blob:分割區擁有者金鑰、分割區認證、資料包裝金鑰,再加上硬體安全模組 (HSM) 的初始備份。 在服務上線之前,客戶必須提供一組用於保護安全性網域的 RSA 加密金鑰,以下載安全性網域。 安全性網域資料是源自 TEE,且受到所產生的對稱金鑰和 Shamir 的祕密共用演算法 (英文) 的實作所保護,其會根據客戶選取的仲裁參數,將金鑰共用分割到客戶提供的 RSA 公用金鑰上。 在此流程期間,不會有任何服務金鑰或認證會以純文字的形式在 TEE 中執行的服務程式碼以外的位置公開。 只有客戶能在復原案例期間透過向 TEE 提供其 RSA 金鑰的仲裁來將安全性網域解密。

只有在因為發生某些災難而導致整個 Azure 區域遺失,且 Microsoft 同時失去集區全部三個執行個體時,才會需要安全性網域。 如果僅失去一個,甚至兩個執行個體,則機密服務修復會在無需客戶介入的情況下於背景復原為三個狀態良好的執行個體。 如果整個區域皆遺失,由於 Intel SGX 密封金鑰對於每個 CPU 都是唯一的,因此 Microsoft 將無法復原硬體安全模組 (HSM) 認證和分割區擁有者金鑰。 其僅存在於執行個體的內容之內。

在發生這個極不可能發生之災害的情況下,客戶可以透過建立新的空白集區,將其插入安全性網域,然後提供其 RSA 金鑰仲裁來證明對該安全性網域的擁有權,以復原其先前的集區狀態和資料。 如果客戶已啟用多重區域複寫,則必須出現兩個區域同時發生全面性失敗這種機率更低的情況,客戶才需要介入以從安全性網域復原集區。

控制對服務的存取權

如先前所描述,我們位於 TEE 中的服務程式碼是對硬體安全模組 (HSM) 本身具有存取權的唯一實體,因為並不會將必要的認證交給客戶或任何其他人。 相反地,客戶的集區會繫結至其 Microsoft Entra 執行個體,並且會使用這個執行個體來進行驗證和授權。 在初始佈建階段,客戶可以選擇一組初始的員工,以為其指派集區管理員角色。 這些個人,以及具備客戶 Microsoft Entra 租用戶全域管理員角色的員工,都可以設定集區內的存取控制原則。 所有存取控制原則都會由服務儲存在和遮罩金鑰相同的資料庫中,其也會進行加密。 只有 TEE 中的服務程式碼能夠存取這些存取控制原則。

摘要

受控硬體安全模組 (HSM) 能透過使用尖端的硬體支援機密記憶體保護區技術,免除客戶在可用性和對密碼編譯金鑰的控制之間取捨的需求。 如本文中所述,在此實作中,不會有任何 Microsoft 人員或代表能夠存取客戶自控金鑰材質或相關祕密,即使他們能夠實體存取受控硬體安全模組 (HSM) 主機電腦和硬體安全模組 (HSM) 也一樣。 此安全性使我們位於金融服務、製造業、公共部門、國防和其他垂直產業的客戶,能夠以完全的信心加快移轉至雲端的腳步。