每個 Cloud Key Management Service 金鑰都有「用途」,可定義金鑰的加密編譯功能。這個用途也可決定金鑰版本支援的演算法。每個「演算法」都會定義各加密編譯作業必須使用的參數。每個金鑰還有一個「防護等級」,指示加密編譯作業會在軟體還是硬體安全性模組 (HSM) 中執行。
金鑰用途
Cloud KMS 為下列情境提供金鑰用途:
情境 | 金鑰用途 (SDK) | 金鑰用途 (API) | 支援的方法 |
---|---|---|---|
對稱式加密 | encryption |
ENCRYPT_DECRYPT |
cryptoKeys.encrypt、cryptoKeys.decrypt |
原始對稱式加密 | raw-encryption |
RAW_ENCRYPT_DECRYPT |
cryptoKeys.rawEncrypt、cryptoKeys.rawDecrypt |
非對稱式簽署 | asymmetric-signing |
ASYMMETRIC_SIGN |
cryptoKeyVersions.asymmetricSign、cryptoKeyVersions.getPublicKey |
非對稱式加密 | asymmetric-encryption |
ASYMMETRIC_DECRYPT |
cryptoKeyVersions.asymmetricDecrypt、cryptoKeyVersions.getPublicKey |
MAC 簽署 | mac |
MAC |
cryptoKeyVersions.macSign、cryptoKeyVersions.macVerify |
建立金鑰時,您可以定義該金鑰的用途與演算法。您可以在建立新金鑰版本時,根據其用途的範圍變更演算法。用途無法變更。
具有相同用途的兩個金鑰可使用不同的基礎演算法,但必須支援同一組加密編譯作業。
對稱式加密演算法
ENCRYPT_DECRYPT 金鑰用途可啟用對稱式加密。具有金鑰用途 ENCRYPT_DECRYPT 的所有金鑰都使用 GOOGLE_SYMMETRIC_ENCRYPTION 演算法。此演算法不使用任何參數。在 Galois 計數器模式 (GCM) 下,此演算法會使用 256 位元進階加密標準 (AES-256) 金鑰,且會填補 Cloud KMS 內部中繼資料。
非對稱式簽署演算法
ASYMMETRIC_SIGN 金鑰用途可啟用非對稱式簽署。具有金鑰用途 ASYMMETRIC_SIGN 的金鑰會使用不同的演算法,這取決於金鑰支援橢圓曲線簽署還是 RSA 簽署。
針對具有用途 ASYMMETRIC_SIGN 的金鑰,您可以透過演算法在不同大小的金鑰和不同簽名配置之間切換。
橢圓曲線簽署演算法
橢圓曲線簽署演算法的格式如下
EC_SIGN_[ELLIPTIC_CURVE]_[DIGEST_ALGORITHM]
其中
[ELLIPTIC_CURVE]
是橢圓曲線[DIGEST_ALGORITHM]
是摘要演算法
下表列出具有用途 ASYMMETRIC_SIGN 之橢圓曲線金鑰的可能演算法。使用 gcloud
指令時,請使用小寫的演算法名稱,使用 Cloud Key Management Service API 時,請使用大寫的演算法名稱。
演算法 (SDK) | 演算法 (API) | 說明 |
---|---|---|
ec-sign-ed25519 |
EC_SIGN_ED25519 |
在 PureEdDSA 模式中,以 Curve25519 為基礎的 EdDSA,會將原始資料做為輸入資料,而非雜湊資料 |
ec-sign-p256-sha256 **(建議)** |
EC_SIGN_P256_SHA256 |
具有 SHA-256 摘要之 P-256 曲線的 ECDSA |
ec-sign-p384-sha384 |
EC_SIGN_P384_SHA384 |
具有 SHA-384 摘要之 P-384 曲線的 ECDSA |
ec-sign-secp256k1-sha256 |
EC_SIGN_SECP256K1_SHA256 |
具有 SHA-256 摘要的 Secp256k1 曲線 ECDSA |
RSA 簽署演算法
RSA 簽署演算法的格式如下
RSA_SIGN_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]
其中
[PADDING_ALGORITHM]
是填充演��法[MODULUS_BIT_LENGTH]
是金鑰的位元長度[DIGEST_ALGORITHM]
是摘要演算法
請注意,部分演算法會以以下格式呈現:
RSA_SIGN_RAW_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]
並省略摘要演算法。這些演算法是 PKCS #1 簽署的變體,會省略編碼至 DigestInfo。在變化版本中:
- 系統會針對要簽署的訊息計算摘要
- 直接將 PKCS #1 填充字串套用至摘要
- 使用 RSA 私密金鑰計算填補摘要的簽名
下表列出具有用途 ASYMMETRIC_SIGN 之 RSA 金鑰的可能演算法。使用 gcloud
指令時,請使用小寫的演算法名稱;使用 Cloud Key Management Service API 時,請使用大寫的演算法名稱。
演算法 (SDK) | 演算法 (API) | 說明 |
---|---|---|
rsa-sign-pss-2048-sha256 |
RSA_SIGN_PSS_2048_SHA256 |
具有 SHA-256 摘要的 RSASSA-PSS 2048 位元金鑰 |
rsa-sign-pss-3072-sha256 (建議) |
RSA_SIGN_PSS_3072_SHA256 |
具有 SHA-256 摘要的 RSASSA-PSS 3072 位元金鑰 |
rsa-sign-pss-4096-sha256 |
RSA_SIGN_PSS_4096_SHA256 |
具有 SHA-256 摘要的 RSASSA-PSS 4096 位元金鑰 |
rsa-sign-pss-4096-sha512 |
RSA_SIGN_PSS_4096_SHA512 |
具有 SHA-512 摘要的 RSASSA-PSS 4096 位元金鑰 |
rsa-sign-pkcs1-2048-sha256 |
RSA_SIGN_PKCS1_2048_SHA256 |
具有 2048 位元金鑰和 SHA-256 摘要的 RSASSA-PKCS1 v1_5 |
rsa-sign-pkcs1-3072-sha256 |
RSA_SIGN_PKCS1_3072_SHA256 |
具有 3072 位元金鑰和 SHA-256 摘要的 RSASSA-PKCS1 v1_5 |
rsa-sign-pkcs1-4096-sha256 |
RSA_SIGN_PKCS1_4096_SHA256 |
具有 4096 位元金鑰和 SHA-256 摘要的 RSASSA-PKCS1 v1_5 |
rsa-sign-pkcs1-4096-sha512 |
RSA_SIGN_PKCS1_4096_SHA512 |
具有 4096 位元金鑰和 SHA-512 摘要的 RSASSA-PKCS1 v1_5 |
rsa-sign-raw-pkcs1-2048 |
RSA_SIGN_RAW_PKCS1_2048 |
使用 2048 位元金鑰,以不含編碼的 RSASSA-PKCS1-v1_5 簽名 |
rsa-sign-raw-pkcs1-3072 |
RSA_SIGN_RAW_PKCS1_3072 |
使用 3072 位元金鑰,以不含編碼的 RSASSA-PKCS1-v1_5 簽名 |
rsa-sign-raw-pkcs1-4096 |
RSA_SIGN_RAW_PKCS1_4096 |
使用 4096 位元金鑰,以不含編碼的 RSASSA-PKCS1-v1_5 簽名 |
針對概率簽名配置 (PSS),使用的 salt 長度與摘要演算法的長度相等。例如,RSA_SIGN_PSS_2048_SHA256 將使用 salt 長度為 256 位元的 PSS。此外,針對 PSS,演算法名稱中指定的摘要演算法也適用於遮罩產生函式 (MGF1)。例如,如果您使用 RSA_SIGN_PSS_2048_SHA256,將會提交要簽署之資料的 SHA-256 雜湊,當計算簽名時,Cloud KMS 會在內部使用 SHA-256 做為 MGF1 的雜湊演算法。
PQC 簽署演算法
後量子密碼編譯 (PQC) 簽署演算法開頭為 PQ_SIGN_
。下表列出 Cloud KMS 可用於用途 ASYMMETRIC_SIGN
的金鑰所使用的 PQC 演算法。這兩種演算法都會將原始資料做為輸入內容。
演算法 (SDK) | 演算法 (API) | 說明 |
---|---|---|
pq-sign-ml-dsa-65 |
PQ_SIGN_ML_DSA_65 |
以模組格狀結構為基礎的數位簽章演算法。 |
pq-sign-slh-dsa-sha2-128s |
PQ_SIGN_SLH_DSA_SHA2_128S |
無狀態雜湊數位簽章演算法。 |
非對稱式加密演算法
ASYMMETRIC_DECRYPT 金鑰用途可啟用 RSA 加密。ASYMMETRIC_DECRYPT 演算法的格式如下
RSA_DECRYPT_[PADDING_ALGORITHM]_[MODULUS_BIT_LENGTH]_[DIGEST_ALGORITHM]
其中
[PADDING_ALGORITHM]
是填充演算法[MODULUS_BIT_LENGTH]
是金鑰的位元長度[DIGEST_ALGORITHM]
是摘要演算法
下表列出具有用途 ASYMMETRIC_DECRYPT 之 RSA 金鑰的可能演算法。使用 gcloud
指令時,請使用小寫的演算法名稱,使用 Cloud Key Management Service API 時,請使用大寫的演算法名稱。
演算法 (SDK) | 演算法 (API) | 說明 |
---|---|---|
rsa-decrypt-oaep-2048-sha1 |
RSA_DECRYPT_OAEP_2048_SHA1 |
具有 SHA-1 摘要的 RSAES-OAEP 2048 位元金鑰 |
rsa-decrypt-oaep-2048-sha256 |
RSA_DECRYPT_OAEP_2048_SHA256 |
具有 SHA-256 摘要的 RSAES-OAEP 2048 位元金鑰 |
rsa-decrypt-oaep-3072-sha1 |
RSA_DECRYPT_OAEP_3072_SHA1 |
具有 SHA-1 摘要的 RSAES-OAEP 3072 位元金鑰 |
rsa-decrypt-oaep-3072-sha256 (建議) |
RSA_DECRYPT_OAEP_3072_SHA256 |
具有 SHA-256 摘要的 RSAES-OAEP 3072 位元金鑰 |
rsa-decrypt-oaep-4096-sha1 |
RSA_DECRYPT_OAEP_4096_SHA1 |
具有 SHA-1 摘要的 RSAES-OAEP 4096 位元金鑰 |
rsa-decrypt-oaep-4096-sha256 |
RSA_DECRYPT_OAEP_4096_SHA256 |
具有 SHA-256 摘要的 RSAES-OAEP 4096 位元金鑰 |
rsa-decrypt-oaep-4096-sha512 |
RSA_DECRYPT_OAEP_4096_SHA512 |
具有 SHA-512 摘要的 RSAES-OAEP 4096 位元金鑰 |
所有這些演算法都會將最佳非對稱加密填充演算法 (OAEP) 與遮罩產生函式 MGF1 搭配使用。MGF1 需要摘要演算法。在 Cloud KMS 中,會將要與 MGF1 搭配使用的摘要函式指定為金鑰演算法名稱的一部分。例如,如果您使用 RSA_DECRYPT_OAEP_3072_SHA256 演算法,加密資料時,應將 SHA-256 與 MGF1 搭配使用。
MAC 簽署演算法
MAC 金鑰用途可啟用對稱式 MAC 簽署。金鑰用途為 MAC 的金鑰目前僅支援HMAC 簽署。
HMAC 簽署演算法
HMAC 簽署演算法的格式如下
HMAC_[HASH_ALGORITHM]
其中
[HASH_ALGORITHM]
是雜湊演算法
下表列出目前可用於用途為 MAC 的金鑰的 HMAC 演算法。使用 gcloud
指令時,請使用小寫的演算法名稱,使用 Cloud Key Management Service API 時,請使用大寫的演算法名稱。
演算法 (SDK) | 演算法 (API) | 說明 |
---|---|---|
hmac-sha1 |
HMAC_SHA1 |
含 SHA-1 摘要的 HMAC |
hmac-sha224 |
HMAC_SHA224 |
使用 SHA-224 摘要的 HMAC |
hmac-sha256 (建議) |
HMAC_SHA256 |
含有 SHA-256 摘要的 HMAC |
hmac-sha384 |
HMAC_SHA384 |
使用 SHA-384 摘要的 HMAC |
hmac-sha512 |
HMAC_SHA512 |
使用 SHA-512 摘要的 HMAC |
演算法建議
針對數位簽署,建議使用橢圓曲線簽署演算法。對於橢圓曲線演算法,建議使用 EC_SIGN_P256_SHA256。如邀您要使用 RSA 簽署演算法,建議使用 RSA_SIGN_PSS_3072_SHA256。
針對非對稱式加密,建議使用 RSA_DECRYPT_OAEP_3072_SHA256 演算法。
針對 MAC 簽署,建議使用 HMAC_SHA256 演算法。
如需與 gcloud CLI 搭配使用的支援演算法值清單,請參閱 --default-algorithm。
防護等級
防護等級會指示執行加密編譯作業的方式。建立金鑰之後,就無法變更防護等級。
防護等級 | 說明 |
---|---|
SOFTWARE | 加密編譯作業會在軟體中執行。 |
HSM | 加密編譯作業會在 HSM 中執行。 |
EXTERNAL | 加密編譯作業會以儲存在外部金鑰管理工具中的金鑰執行,該工具會透過網際網路連線至 Google Cloud。僅限對稱式加密和非對稱式簽署。 |
EXTERNAL_VPC | 加密編譯作業會以儲存在外部金鑰管理工具中的金鑰執行,該金鑰是透過虛擬私有雲 (VPC) 連線至 Google Cloud。僅限對稱式加密和非對稱式簽署。 |
防護等級為 SOFTWARE
或 HSM
的金鑰支援���有金鑰用途。