金鑰類型、演算法和作業
金鑰保存庫 支援兩種資源類型:保存庫和受控 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 金鑰支援下列演算法識別碼
曲線類型
- P-256 - NIST 曲線 P-256,定義於 DSS FIPS PUB 186-4。
- P-256K - SEC 曲線SECP256K1,定義於 SEC 2:建議的橢圓曲線定義域參數。
- P-384 - NIST 曲線 P-384,定義於 DSS FIPS PUB 186-4。
- P-521 - NIST 曲線 P-521,定義於 DSS FIPS PUB 186-4。
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 屬性會與nbf和exp搭配使用。當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 參考中的金鑰作業。