「金鑰包裝」就是為了要能夠安全地儲存金鑰,或是透過不受信任的管道傳送金鑰,因而利用另一個金鑰來為該金鑰加密的程序。取決於金鑰的類型,金鑰包裝可能會使用對稱或非對稱的密碼編譯功能來進行。
在 Cloud Key Management Service 中,密鑰包裝是用於安全地匯入使用者提供的加密編譯金鑰。如要匯入金鑰,就必須要有「匯入工作」,而每個匯入工作都有「匯入方法」,用來指定要使用的金鑰包裝通訊協定。
Cloud KMS 預期已匯入的金鑰內容會有特定的格式。因此在您包裝要匯入的金鑰內容之前,您可能必須將金鑰內容轉換成 Cloud KMS 預期的格式。將金鑰格式化以便匯入一文包含所需格式的詳細資料,還提供如何在必要時將金鑰轉換成所需格式的操作說明。
當金鑰內容已正確格式化之後,Google Cloud CLI 就能先自動包裝金鑰內容,再把該金鑰內容安全地傳送到 Cloud KMS。詳情請參閱「匯入金鑰」。您也可以使用適當的加密編譯通訊協定來手動包裝金鑰。在 Linux 上使用 OpenSSL 包裝金鑰一文提供了如何進行的範例。
匯入方法
Cloud KMS 提供下列的匯入方法:
匯入方法 | 匯入工作金鑰類型 | 金鑰包裝演算法 |
---|---|---|
RSA_OAEP_3072_SHA1_AES_256 | 3072 位元 RSA | 採用 SHA-1 + AES-KWP 的 RSAES-OAEP |
RSA_OAEP_4096_SHA1_AES_256 | 4096 位元 RSA | 採用 SHA-1 + AES-KWP 的 RSAES-OAEP |
RSA_OAEP_3072_SHA256_AES_256 (建議) | 3072 位元 RSA | 採用 SHA-256 + AES-KWP 的 RSAES-OAEP |
RSA_OAEP_4096_SHA256_AES_256 | 4096 位元 RSA | 採用 SHA-256 + AES-KWP 的 RSAES-OAEP |
RSA_OAEP_3072_SHA256 | 3072 位元 RSA | 採用 SHA-256 的 RSAES-OAEP |
RSA_OAEP_4096_SHA256 | 4096 位元 RSA | 採用 SHA-256 的 RSAES-OAEP |
金鑰包裝演算法
Cloud KMS 提供的匯入方法會對應到下列的金鑰包裝演算法:
採用 SHA-1/SHA-256 + AES-KWP 的 RSAES-OAEP
這種金鑰包裝演算法是混合式的加密配置,是由不對稱金鑰包裝作業與對稱金鑰包裝作業組成的:
- 匯入工作的公開金鑰會用於加密限單次使用的 AES-256 金鑰。系統會使用 RSAES-OAEP 和 MGF-1 進行加密,並搭配匯入方法指定的摘要演算法。而限單次使用的 AES-256 金鑰是在包裝作業執行時產生的。
- 步驟 1 的限單次使用 AES-256 金鑰會用於利用搭配填補的 AES 金鑰包裝為金鑰內容加密。
要匯入的已包裝金鑰內容是單一位元組的陣列,是由步驟 1 的結果加上步驟 2 的結果而成的。換句話說,只要將步驟 1 和 2 的結果串連在一起,就能形成已包裝的金鑰內容。
這個演算法與 PKCS #11 金鑰包裝演算法 CKM_RSA_AES_KEY_WRAP 相同。如果您是從 HSM 匯入金鑰,且該演算法受到 HSM 的支援,您就可以直接使用這個演算法。或者,上述的步驟 1 和 2 也可以分別搭配 PKCS #11 機制 CKM_RSA_PKCS_OAEP 和 CKM_AES_KEY_WRAP_PAD 來執行。
如果來源 HSM (或是其他金鑰供應商,如果您沒有使用 HSM 的話) 不支援 RSA AES 金鑰包裝機制,您必須利用匯入工作的公開金鑰來手動包裝金鑰內容。如需如何使用 OpenSSL 來這麼做的範例,請參閱在 Linux 上使用 OpenSSL 包裝金鑰。
採用 SHA-256 的 RSAES-OAEP
這是非對稱金鑰包裝作業,會使用匯入工作的公開金鑰搭配 RSAES-OAEP,並使用 MGF-1 和 SHA-256 摘要演算法,直接為目標金鑰內容加密。這個機制以 PKCS #11 RSA OAEP 機制 CKM_RSA_PKCS_OAEP 為基礎。由於此匯入方法的大小限制,因此不適合用於匯入 RSA 私密金鑰。