金鑰類型、演算法和作業

金鑰保存庫 支援兩種資源類型:保存庫和受控 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 - ECDSA for SHA-256 摘要和使用曲線 P-256 建立的索引鍵。 此演算法描述於 RFC7518
  • ES256K - ECDSA for SHA-256 摘要和使用曲線 P-256K 建立的索引鍵。 此演算法暫止標準化。
  • ES384 - ECDSA for SHA-384 摘要和使用曲線 P-384 建立的索引鍵。 此演算法描述於 RFC7518
  • ES512 - ECDSA for SHA-512 摘要和使用曲線 P-521 建立的索引鍵。 此演算法描述於 RFC7518

RSA 演算法

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

WRAPKEY/UNWRAPKEY、ENCRYPT/DECRYPT

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

SIGN/VERIFY

  • PS256 - 使用 SHA-256 和 MGF1 搭配 SHA-256 的 RSASSA-PSS,如RFC7518中所述
  • PS384 - 使用 SHA-384 和 MGF1 搭配 SHA-384 的 RSASSA-PSS,如RFC7518中所述
  • PS512 - 使用 SHA-512 和 MGF1 搭配 SHA-512 的 RSASSA-PSS,如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 - 請參閱 RFC2437,這是啟用特定 TLS 案例的特殊使用案例。

注意

DigestInfo 是針對演算法 RS256、RS384 和 RS512 產生的 Sign 作業,建構在伺服器端。

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

  • AES-KW - AES 金鑰包裝(RFC3394)。
  • AES-GCM - Galois 計數器模式中的 AES 加密 (NIST SP 800-38d
  • AES-CBC - 加密區塊鏈結模式中的 AES 加密 (NIST SP 800-38a

注意

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

金鑰操作

金鑰保存庫,包括 Managed HSM,支援下列密鑰物件的作業:

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

如需詳細資訊,請參閱 金鑰保存庫 REST API 參考中的密鑰作業。

一旦在 金鑰保存庫 中建立金鑰之後,就可以使用金鑰執行下列密碼編譯作業:

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

雖然使用非對稱密鑰的 WRAPKEY/UNWRAPKEY 似乎多餘的(因為作業相當於 ENCRYPT/DECRYPT),但使用不同的作業很重要。 差別提供這些作業的語意和授權區隔,以及服務支援其他密鑰類型時的一致性。

金鑰保存庫 不支援EXPORT作業。 在系統中佈建金鑰之後,就無法擷取密鑰或其金鑰數據修改。 不過,金鑰保存庫的使用者可能會要求其密鑰用於其他使用案例,例如刪除之後。 在此情況下,他們可以使用BACKUP和 RESTORE 作業,以受保護的形式匯出/匯入密鑰。 BACKUP 作業所建立的金鑰無法在 金鑰保存庫 外部使用。 或者,IMPORT 作業可用於多個 金鑰保存庫 實例。

使用者可以使用 JWK 物件的 key_ops 屬性,限制 金鑰保存庫 支援的任何密碼編譯作業。

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

金鑰輪替原則作業

您可以藉由設定金鑰自動輪替原則來設定金鑰保存庫金鑰自動輪替。 它僅適用於 金鑰保存庫 資源。

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

索引鍵屬性

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

  • enabled:選擇性的布林值,預設值是 true。 指定金鑰是否已啟用且可用於密碼編譯作業。 enabled 屬性會與nbfexp搭配使用。當nbf與exp之間發生作業時,只有在 enabled 設定為 true,才會允許此作業。 除了解密、發行、解除包裝和驗證之外,也會自動不允許在nbf / exp 視窗以外的作業。
  • nbf:IntDate,選擇性,預設值現在是。 nbf (不是之前)屬性會識別密鑰不得用於密碼編譯作業的時間,但解密、發行、解除包裝和驗證除外。 nbf 屬性的處理要求目前的日期/時間必須晚於或等於 nbf 屬性中列出的非之前日期/時間。 金鑰保存庫 可能提供一些小的迴旋餘地,通常不超過幾分鐘,以考慮時鐘扭曲。 其值「必須」是包含 IntDate 值的數字。
  • exp:IntDate,選擇性,預設值為 “ever”。 exp (到期時間) 屬性會識別金鑰不得用於密碼編譯作業的到期時間,但解密、發行、解除包裝和驗證除外。 exp 屬性的處理要求目前的日期/時間必須在 exp 屬性所列的到期日/時間之前。 金鑰保存庫 可能會提供一些小路,通常不超過幾分鐘,以考慮時鐘扭曲。 其值「必須」是包含 IntDate 值的數字。

在包含索引鍵屬性的任何回應中包含更多唯讀屬性:

  • created:選擇性的 IntDate。 建立的屬性會指出建立此版本的金鑰的時間。 在加入這個屬性之前所建立的索引鍵,此值為 null。 其值「必須」是包含 IntDate 值的數字。
  • updated:選擇性的 IntDate。 更新的屬性會指出這個版本的密鑰何時更新。 在新增此屬性之前,上次更新的索引鍵值為 null。 其值「必須」是包含 IntDate 值的數字。
  • hsmPlatform:string,選擇性。 保護金鑰的基礎 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、禁止)。 使用尚未有效狀態的理由是允許在生產環境使用之前測試金鑰。 使用過期狀態的理由是允許在密鑰有效時所建立數據的復原作業。 此外,您可以使用 金鑰保存庫 原則,或將啟用的金鑰屬性更新為 false,來停用對密鑰的存取。

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

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

索引鍵標記

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

注意

如果標籤標具有 清單取得 該金鑰的許可權,則呼叫端可以讀取標記。

金鑰存取控制

金鑰保存庫 所管理的密鑰訪問控制是在做為金鑰容器的 金鑰保存庫 層級提供。 您可以使用 金鑰保存庫 角色型存取控制或舊儲存庫存取原則許可權模型來控制密鑰的存取。 角色型許可權模型有三個預先定義的角色來管理密鑰:「金鑰保存庫 密碼編譯使用者 金鑰保存庫」、「金鑰保存庫 服務加密使用者」,且可限定為訂用帳戶、資源群組或保存庫層級。

儲存庫存取原則許可權模型許可權:

  • 金鑰管理作業的許可權

    • get:讀取金鑰的公用部分,加上其屬性
    • list:列出金鑰保存庫中儲存的金鑰或版本
    • update:更新金鑰的屬性
    • create:建立新的密鑰
    • import:將金鑰匯入金鑰保存庫
    • delete:刪除索引鍵物件
    • 復原:復原已刪除的密鑰
    • 備份:備份金鑰保存庫中的金鑰
    • restore:將備份的金鑰還原至金鑰保存庫
  • 密碼編譯作業的許可權

    • decrypt:使用密鑰解除保護位元組序列
    • encrypt:使用密鑰來保護任意序列的位元組
    • unwrapKey:使用密鑰解除保護包裝的對稱密鑰
    • wrapKey:使用密鑰來保護對稱金鑰
    • verify:使用密鑰來驗證摘要
    • sign:使用金鑰簽署摘要
  • 特殊權限作業的權限

    • 清除:清除 (永久刪除) 已刪除的金鑰
    • release:將密鑰發行至機密計算環境,其符合密鑰release_policy
  • 輪替原則作業的許可權

    • rotate:藉由產生新版金鑰來輪替現有的金鑰(僅限 金鑰保存庫)
    • 取得輪替原則:擷取輪替原則設定
    • 設定輪替原則:設定輪替原則設定

如需使用金鑰的詳細資訊,請參閱 金鑰保存庫 REST API 參考中的金鑰作業。

下一步