共用方式為


金鑰類型、演算法和作業

Key Vault 支援兩種資源類型:保存庫和受控 HSM。 這兩種資源類型支援各種不同的加密金鑰。 若要查看支援的金鑰類型和每個資源類型的保護類型摘要,請參閱關於金鑰

下表顯示金鑰類型和支援的演算法摘要。

金鑰類型/大小/曲線 加密/解密
(包裝/解除包裝)
簽署/驗證
EC-P256, EC-P256K, EC-P384, EC-P521 NA ES256
ES256K
ES384
ES512
RSA 2K, 3K, 4K RSA1_5
RSA-OAEP
RSA-OAEP-256
PS256
PS384
PS512
RS256
RS384
RS512
RSNULL
AES 128 位元、256 位元
(僅限受控 HSM)
AES-KW
AES-GCM
AES-CBC
NA

EC 演算法

EC-HSM 金鑰支援下列演算法識別碼

曲線類型

SIGN/VERIFY

  • ES256 - 適用於 SHA-256 摘要的 ECDSA 與使用曲線 P-256 建立的金鑰。 此演算法說明於 RFC7518
  • ES256K - 適用於 SHA-256 摘要的 ECDSA 與使用曲線 P-256K 建立的金鑰。 此演算法尚待標準化。
  • ES384 - 適用於 SHA-384 摘要的 ECDSA 與使用曲線 P-384 建立的金鑰。 此演算法說明於 RFC7518
  • ES512 - 適用於 SHA-512 摘要的 ECDSA 與使用曲線 P-521 建立的金鑰。 此演算法說明於 RFC7518

RSA 演算法

RSA 與 RSA-HSM 金鑰支援下列演算法識別碼

包裝金鑰/解除包裝金鑰、加密/解密

  • RSA1_5 - RSAES-PKCS1-V1_5 [RFC3447] 金鑰加密
  • RSA-OAEP - RSAES 使用「最佳非對稱加密填補 (OAEP)」[RFC3447],並利用 A.2.1 節中 RFC 3447 所指定的預設參數。 這些預設參數會使用 SHA-1 的雜湊函數及搭配 SHA-1 的 MGF1 遮罩產生函數。
  • RSA-OAEP-256 – RSAES 使用最佳非對稱加密填補,具有 SHA-256 的雜湊函式及搭配 SHA-256 的 MGF1 遮罩產生函式

SIGN/VERIFY

  • PS256 - RSASSA-PSS 使用 SHA-256 及搭配 SHA-256 的 MGF1,如 RFC7518 中所述。
  • PS384 - RSASSA-PSS 使用 SHA-384 及搭配 SHA-384 的 MGF1,如 RFC7518 中所述。
  • PS512 - RSASSA-PSS 使用 SHA-512 及搭配 SHA-512 的 MGF1,如 RFC7518中所述。
  • RS256 - 使用 SHA-256 的 RSASSA-PKCS-v1_5。 提供摘要值的應用程式必須使用 SHA-256 計算,而且長度必須是 32 個位元組。
  • RS384 - 使用 SHA-384 的 RSASSA-PKCS-v1_5。 提供摘要值的應用程式必須使用 SHA-384 計算,而且長度必須是 48 個位元組。
  • RS512 - 使用 SHA-512 的 RSASSA-PKCS-v1_5。 提供摘要值的應用程式必須使用 SHA-512 計算,而且長度必須是 64 個位元組。
  • RSNULL - 請參閱啟用特定 TLS 案例的特殊使用案例 RFC2437

注意

建議 RSA-PSS 填補模式以提升效能。 DigestInfo 是在伺服器端上針對演算法 RS256、RS384 和 RS512 產生的簽署作業所建構的。

對稱金鑰演算法 (僅限受控 HSM)

注意

簽署和驗證作業演算法必須符合金鑰類型,否則服務會傳回「金鑰大小不正確」錯誤。

金鑰操作

Key Vault (包括受控 HSM) 支援下列金鑰物件作業:

  • 建立:可讓用戶端在 Key Vault 中建立金鑰。 金鑰的值是由 Key Vault 產生並儲存,而且不會對用戶端釋出。 非對稱金鑰可以在 Key Vault 中建立。
  • 匯入:可讓用戶端將現有金鑰匯入至 Key Vault。 非對稱金鑰可使用 JWK 概念中的多種不同封裝方法來匯入至 Key Vault。
  • 更新:可讓具有足夠權限的用戶端修改與先前儲存在 Key Vault 內的金鑰相關聯的中繼資料 (索引鍵屬性)。
  • 刪除:可讓具有足夠權限的用戶端從 Key Vault 中刪除金鑰。
  • 清單:可讓用戶端列出指定 Key Vault 中的所有金鑰。
  • 列出版本:可讓用戶端從指定的 Key Vault 中,列出指定金鑰的所有版本。
  • 取得:可讓用戶端擷取 Key Vault 中指定金鑰的公開部分。
  • 備份:以受保護的形式匯出金鑰。
  • 還原:匯入先前備份的金鑰。
  • 釋出:它會安全地將金鑰釋出給在機密計算環境中執行的授權程式碼。 它需要證明受信任的執行環境 (TEE) 符合金鑰的 release_policy 的需求。
  • 輪替:藉由產生新版本的金鑰來輪替現有的金鑰 (僅限 Key Vault)。

如需詳細資訊,請參閱 Key Vault REST API 參考中的金鑰作業

一旦在 Key Vault 中建立金鑰之後,即可使用該金鑰執行下列加密編譯作業:

  • 簽署與驗證:嚴格來說,這項作業是指「簽署雜湊」或「驗證雜湊」,因為 Key Vault 不支援在建立簽章時對內容進行雜湊處理。 應用程式應對要在本機上簽署的資料進行雜湊,然後要求 Key Vault 簽署此雜湊資料。 對於可能無法存取 [public] 金鑰資料的應用程式,支援已簽署雜湊的驗證是便利作業。 為達到最佳應用程式效能,驗證作業應在本機上執行。
  • 金鑰加密/包裝:儲存在 Key Vault 中的金鑰可用來保護其他金鑰,通常是對稱內容加密金鑰 (CEK)。 當 Key Vault 中的金鑰非對稱時,會使用金鑰加密。 例如 RSA-OAEP 和包裝金鑰/解除包裝金鑰作業等同於加密/解密。 當 Key Vault 中的金鑰對稱時,會使用金鑰包裝。 例如 AES-KW。 包裝金鑰作業是針對無法存取 [公開] 金鑰內容的應用程式而支援的便利機制。 為達到最佳應用程式效能,包裝金鑰作業應在本機上執行。
  • 加密和解密:儲存在 Key Vault 中的金鑰可用來加密或解密單一資料區塊。 區塊的大小取決於金鑰類型和選取的加密演算法。 加密作業是為了方便起見,針對可能無法存取 [公開] 金鑰資料的應用程式。 為達到最佳應用程式效能,加密作業應在本機上執行。

儘管使用非對稱金鑰的包裝金鑰/解除包裝金鑰顯得有點多餘 (因為此作業相當於加密/解密),但使用相異的作業是相當重要的。 這樣的差異性可讓這些作業的語意和授權有所區隔,並且在服務支援其他金鑰類型時帶來一致性。

Key Vault 不支援匯出作業。 在系統中佈建金鑰後,即無法加以擷取或修改其金鑰內容。 不過,Key Vault 的使用者在其他使用案例中有可能需要其金鑰,例如在金鑰遭刪除後。 在此情況下,他們可以使用備份和還原作業來匯出/匯入受保護的金鑰。 備份作業所建立的金鑰無法在 Key Vault 以外的地方使用。 但是,可以對多個 Key Vault 執行個體使用匯入作業。

使用者可以使用 JWK 物件的 key_ops 屬性,來對 Key Vault 支援的密碼編譯作業 (以每個金鑰為基礎) 設定限制。

如需 JWK 物件的詳細資訊,請參閱 JSON Web 金鑰 (JWK)

金鑰輪替原則作業

金鑰保存庫金鑰自動輪替可透過設定金鑰自動輪替原則來設定。 僅適用於 Key Vault 資源。

  • 取得輪替原則:擷取輪替原則組態。
  • 設定輪替原則:設定輪替原則組態。

金鑰屬性

除了金鑰內容,您還可以指定下列屬性。 在 JSON 要求中,屬性關鍵字和括弧「{」「}」是必要的,即使沒有指定任何屬性。

  • enabled:選擇性的布林值,預設值是 true。 指定金鑰是否已啟用,並可用於密碼編譯作業。 enabled 屬性會與 nbf 和 exp 一起使用。當作業發生於 nbf 和 exp 之間時,只有在 enabled 設定為 true 時,才能允許此作業。 發生於 nbf / exp 範圍外的作業將自動禁止,解密、釋出、解除包裝和驗證除外。
  • nbf:選擇性的 IntDate,預設值為現在 (now)。 nbf (不早於) 屬性會定義一個時間,而在此時間之前「絕不可」將金鑰用於密碼編譯作業,解密、釋出、解除包裝和驗證除外。 若要處理 nbf 屬性,目前的日期/時間「必須」晚於或等同 nbf 屬性中所列的「不早於」日期/時間。 考慮到時鐘誤差,Key Vault 可能會多提供一點時間 (通常都在幾分鐘內)。 其值「必須」是包含 IntDate 值的數字。
  • exp:選擇性的 IntDate,預設值為永久 (forever)。 exp (到期時間) 屬性會定義到期時間,而在此時間點或之後「絕不可」將金鑰用於密碼編譯作業,解密、釋出、解除包裝和驗證除外。 若要處理 exp 屬性,目前的日期/時間「必須」早於 exp 屬性中所列的到期日期/時間。 考慮到時鐘誤差,Key Vault 可能會多提供一點時間 (通常都在幾分鐘內)。 其值「必須」是包含 IntDate 值的數字。

任何包含金鑰屬性的回應中,都包含更多唯讀屬性:

  • created:選擇性的 IntDate。 created 屬性會指出建立此金鑰版本的時間。 若金鑰是在新增此屬性之前建立的,則此值為 Null。 其值「必須」是包含 IntDate 值的數字。
  • updated:選擇性的 IntDate。 updated 屬性會指出更新此金鑰版本的時間。 若金鑰是在新增此屬性之前進行最後一次更新,則此值為 Null。 其值「必須」是包含 IntDate 值的數字。
  • hsmPlatform:字串 (選擇性)。 保護金鑰的基礎 HSM 平台。
    • hsmPlatform 值為 2,表示金鑰受到我們最新的 FIPS 140 層級 3 驗證 HSM 平台保護。
    • hsmPlatform 值為 1,表示金鑰受到我們先前的 FIPS 140 層級 2 已驗證 HSM 平台保護。
    • hsmPlatform 值為 0,表示金鑰受到 FIPS 140 層級 1 HSM 軟體密碼編譯模組保護。
    • 如果受控 HSM 集區未設定此值,則金鑰受到我們最新的 FIPS 140 層級 3 驗證 HSM 平台保護。

請務必注意,金鑰會繫結至其建立所在的 HSM。 新金鑰會順暢地建立並儲存在新 HSM 中。 雖然無法移轉或傳輸金鑰,但新的金鑰版本會自動儲存在新 HSM 中。 如需如何移轉至新金鑰的詳細資訊,請參閱如何移轉金鑰工作負載

如需有關 IntDate 和其他資料類型的詳細資訊,請參閱 [關於金鑰、祕密與憑證:資料類型

日期時間控制作業

nbf / exp 範圍外尚未生效和過期的金鑰,將用於解密釋出解除包裝驗證作業 (不會傳回 403 禁止)。 使用尚未生效狀態的基本原理是,允許金鑰先經過測試,然後才在生產環境使用。 使用過期狀態的基本原理是,允許對在金鑰有效時建立的資料執行復原作業。 此外,您可以使用 Key Vault 原則,或藉由將 enabled 金鑰屬性更新為 false,來停用金鑰的存取權。

如需資料類型的詳細資訊,請參閱資料類型

如需其他可能屬性的詳細資訊,請參閱 JSON Web 金鑰 (JWK)

金鑰標記

您可以將更多應用程式專屬的中繼資料指定為標籤形式。 Key Vault 最多可支援 15 個標籤,每個標籤都可以有 256 個字元名稱和 256 個字元的值。

注意

如果呼叫者具有該金鑰的列出取得權限,其便可讀取標籤。

金鑰存取控制

對於由 Key Vault 管理的金鑰,其存取控制是在 Key Vault 層級上提供的,Key Vault 則是用來作為金鑰的容器。 您可以使用 Key Vault 角色型存取控制 (建議) 或舊保存庫存取原則權限模型來控制金鑰的存取。 角色型權限模型有三個用於管理金鑰的預先定義角色:「Key Vault 密碼編譯員」、「Key Vault 密碼編譯使用者」、「Key Vault 服務加密使用者」,並將範圍限定為訂用帳戶、資源群組或保存庫層級。

保存庫存取原則權限模型的權限:

  • 金鑰管理作業的權限

    • 取得:讀取金鑰的公開部分及其屬性
    • 列出:列出金鑰保存庫中儲存的金鑰或金鑰版本
    • 更新:更新金鑰屬性
    • 建立:建立新的金鑰
    • 匯入:將金鑰匯入金鑰保存庫
    • 刪除:刪除金鑰物件
    • 復原:復原已刪除的金鑰
    • 備份:備份金鑰保存庫中的金鑰
    • 還原:將備份的金鑰還原至金鑰保存庫
  • 密碼編譯作業的權限

    • 解密:使用金鑰來取消保護位元組序列
    • 加密:使用金鑰來保護任意位元組序列
    • 解除包裝金鑰:使用金鑰來取消保護已包裝的對稱金鑰
    • 包裝金鑰:使用金鑰來保護對稱金鑰
    • 驗證:使用金鑰來驗證摘要
    • 簽署:使用金鑰來簽署摘要
  • 特殊權限作業的權限

    • 清除:清除 (永久刪除) 已刪除的金鑰
    • 釋出:將金鑰釋出給符合金鑰 release_policy 的機密計算環境
  • 輪替原則作業的權限

    • 輪替:藉由產生新版本的金鑰來輪替現有的金鑰 (僅限 Key Vault)
    • 取得輪替原則:擷取輪替原則組態
    • 設定輪替原則:設定輪替原則組態

如需使用金鑰的詳細資訊,請參閱 Key Vault REST API 參考中的金鑰作業

下一步