特殊用途金鑰 - AWS Key Management Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

特殊用途金鑰

AWS Key Management Service (AWS KMS)支持幾種不同類型的鍵,用於不同的用途。

根據預設 AWS KMS key,建立 KMS 金鑰時,您會取得對稱加密金鑰。在中 AWS KMS,對稱加密 KMS 金鑰代表用於加密和解密的 256 位元 AES-GCM 金鑰,但中國區域除外,其代表對稱式使用 SM4 加密的 128 位元對稱金鑰。對稱金鑰材料永遠不會保留 AWS KMS 未加密的狀態。除非您的工作明確需要非對稱加密或 HMAC 金鑰,否則絕對不會保留 AWS KMS 未加密的對稱加密 KMS 金鑰是不錯的選擇。另外,與 AWS KMS整合的AWS 服務僅會使用對稱加密 KMS 金鑰來加密您的資料。這些服務不支援使用非對稱 KMS 金鑰進行加密。

您可以在中使用對稱加密 KMS 金鑰 AWS KMS 來加密、解密和重新加密資料、產生資料金鑰和資料金鑰配對,以及產生隨機位元組字串。您可以將自己的金鑰資料匯入對稱加密 KMS 金鑰,並在自訂金鑰存放區中建立對稱加密 KMS 金鑰。如需對稱和非對稱 KMS 金鑰執行之操作的比較表,請參閱金鑰類型參考

AWS KMS 也支援下列特殊用途的 KMS 金鑰類型:

選擇一個 KMS 金鑰類型

AWS KMS 支援數種類型的 KMS 金鑰:對稱加密金鑰、對稱 HMAC 金鑰、非對稱加密金鑰和非對稱簽章金鑰。

KMS 金鑰內含不同的密碼編譯金鑰資料,因此各不相同。

  • 對稱加密 KMS 金鑰:代表一個 256 位元 AES-GCM 加密金鑰,但中國區域除外,在該處代表 128 位元 SM4 加密金鑰。對稱金鑰材料永遠不會保留 AWS KMS 未加密的狀態。若要使用對稱加密 KMS 金鑰,您必須撥打電話 AWS KMS。

    對稱加密金鑰 (此為預設 KMS 金鑰) 是多數用途的理想選擇。如果您需要 KMS 金鑰來保護資料 AWS 服務,請使用對稱加密金鑰,除非系統指示您使用其他類型的金鑰。

  • 非對稱 KMS 金鑰:代表與數學相關的公開金鑰和私密 key pair,可用於加密和解密、簽署和驗證或衍生共用密鑰 (您必須選擇一種金鑰使用類型)。私密金鑰永遠不會離開 AWS KMS 未加密。您可以 AWS KMS 透過呼叫 AWS KMS API 作業來使用中的公開金鑰,或下載公開金鑰並在其他地方使用 AWS KMS。

  • HMAC KMS 金鑰 (對稱):是指長度可變的對稱金鑰,用於產生和驗證雜湊訊息驗證碼。HMAC KMS 金鑰中的金鑰資料絕不會讓 AWS KMS 出現未加密的情況。若要使用您的 HMAC KMS 金鑰,您必須撥打電話 AWS KMS。

您建立的 KMS 金鑰類型,在很大程度上取決於您計劃如何使用 KMS 金鑰、安全需求,以及授權需求。建立 KMS 金鑰時,請記住,KMS 金鑰的加密編譯組態,包括其金鑰規格和金鑰用途,都是在您建立 KMS 金鑰時所建立,且無法變更。

根據您的使用案例,使用下列指導判斷您需要的 KMS 金鑰類型。

加密和解密資料

請使用對稱 KMS 金鑰處理對於大多數需要加密和解密資料的使用案例。 AWS KMS 使用的對稱加密演算法快速又有效率,並可確保資料的機密性和真實性。其支援經定義為加密內容之額外的驗證資料 (AAD) 所驗證的加密。這種類型的 KMS 金鑰要求加密資料的寄件者和收件者都必須具有有效的 AWS 認證才能呼叫 AWS KMS。

如果您的使用案例需要在無法呼叫 AWS 的使用者以外進行加密 AWS KMS,則非對稱 KMS 金鑰是不錯的選擇。您可以分配非對稱 KMS 金鑰的公有金鑰,讓這些使用者加密資料。而需要解密該資料的應用程式,則可以使用 AWS KMS內的非對稱 KMS 金鑰私有金鑰。

簽署訊息及驗證簽章

若要簽署訊息及驗證簽章,您必須使用非對稱 KMS 金鑰。您可以使用 KMS 金鑰搭配代表 RSA 金鑰對或橢圓曲線 (ECC) 金鑰對,或 SM2 金鑰對 (僅限中國區域) 的金鑰規格。您選擇的金鑰規格取決於您要使用的簽署演算法。ECC 金鑰對支援的 ECDSA 簽章演算法優於 RSA 簽章演算法。但是,您可能需要使用特定的金鑰規格和簽章演算法來支援在以外驗證簽名的使用者 AWS。

使用非對稱金鑰配對加密

若要使用非對稱 key pair 加密資料,您必須使用具有 RSA 金鑰規格或 SM2 金鑰規格的非對稱 KMS 金 (僅限中國地區)。若要使用 KMS key pair AWS KMS 的公開金鑰來加密中的資料,請使用「加密」作業。您也可以下載公有金鑰,與 AWS KMS外部需要加密資料的對象共用此金鑰。

當您下載非對稱 KMS 金鑰的公有金鑰時,您可以在 AWS KMS之外使用。但它不再受保護 KMS 金鑰的安全性控制的約束 AWS KMS。例如,您無法使用 AWS KMS 金鑰原則或授權來控制公開金鑰的使用。您也不能使用 AWS KMS 支持的加密算法控制密鑰是否僅用於加密和解密。如需詳細資訊,請參閱下載公有金鑰的特殊考量

若要解密以外的公開金鑰加密的資料 AWS KMS,請呼叫「解密」作業。如果使用 KMS 金鑰的公有金鑰搭配 SIGN_VERIFY金鑰用途加密資料,則 Decrypt 操作會失敗。如果使用不支援您選取的金鑰規格的 AWS KMS 演算法加密,它也會失敗。如需主要規格和支援演算法的詳細資訊,請參閱《非對稱金鑰規格》。

若要避免這些錯誤,使用公開金鑰以外的任何人都 AWS KMS 必須儲存金鑰組態。主 AWS KMS 控台和GetPublicKey回應會提供您共用公開金鑰時必須包含的資訊。

導出共用密碼

若要導出共用密碼,請使用 NIST 建議的橢圓曲線SM2 (僅限中國區域) 金鑰資料的 KMS 金鑰。 AWS KMS 使用橢圓曲線加密協定迪菲-赫爾曼原始元件 (ECDH),透過從其橢圓曲線的公開-私密金鑰對衍生共用密碼,在兩個對等之間建立金鑰協定。您可以使用 DeriveSharedSecret作業傳回的原始共用密碼來衍生對稱金鑰,該金鑰可以加密和解密雙方之間傳送的資料,或產生並驗證 HMAC。 AWS KMS 建議您在使用原始共用密鑰衍生對稱金鑰時,遵循 NIST 建議進行金鑰衍生。

產生和驗證 HMAC 代碼

若要產生和驗證雜湊訊息驗證碼,請使用 HMAC KMS 金鑰。當您在中建立 HMAC 金鑰時 AWS KMS, AWS KMS 會建立並保護金鑰材料,並確保您針對金鑰使用正確的 MAC 演算法。HMAC 代碼也可以用來作為虛擬亂數,並在特定情況下用於對稱簽署和字符化。

HMAC KMS 金鑰為對稱金鑰。在 AWS KMS 主控台中建立 HMAC KMS 金鑰時,請選擇 Symmetric 金鑰類型。

搭配 AWS 服務使用

若要建立與整合的AWS 服務搭配使用的 KMS 金鑰 AWS KMS,請參閱該服務的說明文件。 AWS 加密資料的服務需要對稱加密 KMS 金鑰

除了這些考量外,具有不同金鑰規格的 KMS 金鑰的密碼編譯操作也有不同的定價和不同的請求配額。如需 AWS KMS 定價的相關資訊,請參閱AWS Key Management Service 定價。如需請求配額的詳細資訊,請參閱 請求配額

選取金鑰用途

KMS 金鑰的金鑰用途決定 KMS 金鑰是用於加密和解密,還是簽署和驗證簽名,或是產生和驗證 HMAC 標籤。每個 KMS 金鑰僅有一個金鑰用途。使用 KMS 金鑰執行多種類型的操作,會使得所有操作的產品更容易受到攻擊。

每個 KMS 金鑰都僅有一種金鑰用途。如下表所示,對稱加密 KMS 金鑰僅能用於加密和解密。HMAC KMS 金鑰僅能用於產生和驗證 HMAC 代碼。您需要為非對稱 KMS 金鑰做出金鑰使用決策。具有 RSA 金鑰配對的非對稱 KMS 金鑰可用於加密或解密資料,或簽署和驗證訊息 (但不能同時使用兩者)。具有 NIST 建議的橢圓曲線金鑰配對的非對稱 KMS 金鑰可用於簽署和驗證訊息或衍生共用密碼 (但不能同時使用兩者)。具有金ECC_SECG_P256K1鑰配對的非對稱 KMS 金鑰只能用於簽署和驗證訊息。具有 SM2 (僅限中國區域) 金鑰配對的非對稱 KMS 金鑰可用於加密和解密資料、簽署和驗證訊息或衍生共用密碼 (您必須選擇一種金鑰使用類型)。

KMS 金鑰類型的有效金鑰用途
KMS 金鑰類型 加密和解密

ENCRYPT_DECRYPT

簽署和驗證

SIGN_VERIFY

產生和驗證 MAC

GENERATE_VERIFY_MAC

導出共用密碼

密鑰協議

對稱加密 KMS 金鑰
HMAC KMS 金鑰 (對稱)
具有 RSA 金鑰對的非對稱 KMS 金鑰
具有 ECC 金鑰對的非對稱 KMS 金鑰

您必須將非對稱 KMS 金鑰與 NIST 建議的橢圓曲線金鑰材料搭配使用,才能導出共用密碼。

非對稱 KMS 金鑰搭配 SM2 金鑰對 (僅限中國區域)

在 AWS KMS 主控台中,您首先選擇金鑰類型 (對稱或非對稱),然後選擇金鑰使用方式。您選擇的金鑰類型會決定系統顯示的金鑰用途。您選擇的金鑰用途會決定系統顯示的金鑰規格 (如有)。

若要在 AWS KMS 主控台中選擇金鑰用法:

  • 如果是對稱加密 KMS 金鑰 (預設),請選擇 Encrypt and decrypt (加密和解密)。

  • 如果是 HMAC KMS 金鑰,請選擇 Generate and verify MAC (產生和驗證 MAC)。

  • 對於具有 NIST 建議橢圓曲線 (ECC) 金鑰材料的非對稱 KMS 金鑰,請選擇 [簽署並驗證] 或 [金鑰合約]。

  • 對於具ECC_SECG_P256K1有金鑰材料的非對稱 KMS 金鑰,請選擇簽署並驗證

  • 如果是含有 RSA 金鑰資料的非對稱 KMS 金鑰,請選擇 Encrypt and decrypt (加密和解密) 或 Sign and verify (簽署和驗證)。

  • 對於具有 SM2 金鑰材料的非對稱 KMS 金鑰,請選擇 [加密和解密]、[簽署並驗證] 或 [金鑰合約]。SM2 金鑰規格僅在中國區域提供。

若要允許主體僅針對特定金鑰用途建立 KMS 金鑰,請使用 kms: KeyUsage 條件金鑰。您也可以使用 kms:KeyUsage 條件索引鍵來允許委託人根據金鑰使用情形呼叫 KMS 金鑰的 API 操作。例如,您可以允許只有在金鑰使用情形為 SIGN_VERIFY 時,才能停用 KMS 金鑰的許可。

選取金鑰規格

在建立非對稱 KMS 金鑰或 HMAC KMS 金鑰時,需選取其 key spec (金鑰規格)。金鑰規格是每個的屬性 AWS KMS key,代表 KMS 金鑰的密碼編譯組態。您可以在建立 KMS 金鑰時選擇金鑰規格,之後便無法進行變更。如果選取了錯誤的金鑰規格,請刪除 KMS 金鑰,再建立新的金鑰規格。

注意

KMS 金鑰的金鑰規格稱為「客戶主要金鑰規格」。該CreateKey操作的CustomerMasterKeySpec參數已被棄用。請改用 KeySpec 參數。CreateKeyDescribeKey作業的回應包括具有相同值的KeySpecCustomerMasterKeySpec成員。

金鑰規格決定 KMS 金鑰是對稱或非對稱、KMS 金鑰中金鑰材料的類型,以及 AWS KMS 支援 KMS 金鑰的加密演算法、簽章演算法或訊息驗證碼 (MAC) 演算法。您選擇的金鑰規格通常會依您的使用案例和法規要求決定。不過,具有不同金鑰規格的 KMS 金鑰的密碼編譯操作定價也不同,而且有不同的配額。如需定價詳細資訊,請參閱 AWS Key Management Service 定價。如需請求配額的詳細資訊,請參閱 請求配額

若要判斷您帳戶中的主體可用於 KMS 金鑰的金鑰規格,請使用 kms: KeySpec 條件金鑰。

AWS KMS 支援下列 KMS 金鑰的金鑰規格:

對稱加密金鑰規格 (預設)
  • SYMMETRIC_DEFAULT

HMAC 金鑰規格
  • HMAC_224

  • HMAC_256

  • HMAC_384

  • HMAC_512

RSA 金鑰規格 (加密和解密或簽署和驗證)
  • RSA_2048

  • RSA_3072

  • RSA_4096

橢圓曲線金鑰規格
  • 非對稱 NIST 建議的橢圓曲線金鑰配對 (簽署與驗證-或衍生共用密碼)

    • ECC_NIST_P256 (secp256r1)

    • ECC_NIST_P384 (secp384r1)

    • ECC_NIST_P521 (secp521r1)

  • 其他非對稱橢圓曲線金鑰對 (簽署和驗證)

    • ECC_SECG_P256K1 (secp256k1),常用於加密貨幣。

SM2 密鑰規範(加密和解密-或-簽名和驗證-或-導出共享密鑰)
  • SM2 (僅限中國區域)