建立 KMS 金鑰 - AWS Key Management Service

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

建立 KMS 金鑰

您可以在 AWS KMS keys 中 AWS Management Console或使用 CreateKey 操作或 AWS::KMS::Key AWS CloudFormation 資源來建立 。在此過程中,您可以設定 KMS 金鑰的金鑰政策,您可以隨時變更。您也可以選取下列值來定義您建立的 KMS 金鑰類型。建立 KMS 金鑰之後即無法變更這些屬性。

KMS 金鑰類型

金鑰類型是一種屬性,可決定建立哪種類型的密碼編譯金鑰。 AWS KMS 提供三種金鑰類型來保護資料:

  • 進階加密標準 (AES) 對稱金鑰

    在 AES 的 Galois 計數器模式 (GCM) 模式下使用的 256 位元金鑰,可提供大小小於 4KB 的資料經過驗證的加密/解密。這是最常見的金鑰類型,用於保護應用程式中使用的其他資料加密金鑰 AWS 服務 ,以及代表您加密資料的方式。

  • RSA、橢圓曲線或 SM2 (僅限中國區域) 非對稱金鑰

    這些金鑰有多種大小,並支援許多演算法。它們可用於加密和解密、簽署和驗證,或根據演算法選擇衍生共用秘密操作。

  • 用於執行雜湊型訊息驗證碼 (HMAC) 操作的對稱金鑰

    這些金鑰是用於簽署和驗證操作的 256 位元金鑰。

    KMS 金鑰無法以純文字從服務匯出。它們是由 產生,且只能在 服務所使用的硬體安全模組 HSMs) 內使用。這是 的基本安全屬性 AWS KMS ,以確保金鑰不會遭到入侵。

金鑰用量

金鑰用途是決定該金鑰支援之密碼編譯操作的屬性。KMS 金鑰的金鑰用量可以是 ENCRYPT_DECRYPTGENERATE_VERIFY_MACSIGN_VERIFYKEY_AGREEMENT。每個 KMS 金鑰都僅有一種金鑰用途。使用 KMS 金鑰執行多種類型的操作,會使得兩種操作的產品更容易受到攻擊。

金鑰規格

金鑰規格是一種代表金鑰密碼編譯組態的屬性。金鑰規格的含義與金鑰類型不同。

對於 KMS 金鑰,金鑰規格會決定 KMS 金鑰是對稱或非對稱。其也會決定其金鑰材料的類型,及其支援的演算法。

預設金鑰規格 SYMMETRIC_DEFAULT 表示 256 位元對稱加密金鑰。如需所有支援金鑰規格的詳細說明,請參閱 金鑰規格參考

金鑰材料來源

金鑰材料來源 是 KMS 金鑰屬性,用於識別 KMS 金鑰中金鑰材料的來源。您可以在建立 KMS 金鑰時選擇金鑰材料來源,之後便無法進行變更。金鑰材料的來源會影響 KMS 金鑰的安全性、耐久性、可用性、延遲和輸送量特性。

每個 KMS 金鑰在中繼資料中都包含對其金鑰資料的引用。對稱加密 KMS 金鑰的金鑰資料來源可能會有所不同。您可以使用 AWS KMS 產生的金鑰材料、在自訂金鑰存放區中產生的金鑰材料,或匯入您自己的金鑰材料

根據預設,每個 KMS 金鑰都有唯一的金鑰材料。不過,您可以建立一組具有相同金鑰材料的多區域金鑰

KMS 金鑰可以具有下列其中一個金鑰材料來源值:AWS_KMSEXTERNAL(匯入的金鑰材料)、 AWS_CLOUDHSM (AWS CloudHSM 金鑰存放區中的 KMS 金鑰) 或 EXTERNAL_KEY_STORE(外部金鑰存放區中的 KMS 金鑰)。外部金鑰存放區

建立 KMS 金鑰的許可

若要在主控台或使用 API 建立 KMS 金鑰,您必須在 IAM 政策中具有下列許可。盡可能使用條件金鑰以限制許可。例如,您可使用 IAM 政策中的 kms:KeySpec 條件金鑰,以僅允許主體建立對稱加密 KMS 金鑰。

如需建立金鑰之主體的 IAM 政策範例,請參閱 允許使用者建立 KMS 金鑰

注意

授予主體管理標籤和別名的許可時,請務必謹慎。變更標記或別名可允許或拒絕客戶受管金鑰的許可。如需詳細資訊,請參閱 ABAC for AWS KMS

建立 KMS 金鑰時,不需要 kms:PutKeyPolicy 許可。kms:CreateKey 許可包含設定初始金鑰政策的許可。但是,您必須在建立 KMS 金鑰時將此許可新增至金鑰政策,以確保您可以控制對 KMS 金鑰的存取。另一種方法是使用 BypassLockoutSafetyCheck 參數,但不建議使用。

KMS 金鑰屬於建立金鑰 AWS 的帳戶。建立 KMS 金鑰的 IAM 使用者不會被視為金鑰擁有者,而且他們不會自動擁有使用或管理他們建立之 KMS 金鑰的許可。與任何其他主體一樣,金鑰建立者必須透過金鑰政策、IAM 政策或授予取得許可。不過,擁有 kms:CreateKey 許可的主體可以設定初始金鑰政策,並授予自己使用或管理金鑰的許可。

選擇要建立的 KMS 金鑰類型

您建立的 KMS 金鑰類型,主要取決於您計劃如何使用 KMS 金鑰、您的安全需求,以及您的授權需求。KMS 金鑰的金鑰類型和金鑰用量決定金鑰可執行哪些密碼編譯操作。每個 KMS 金鑰僅有一個金鑰用途。使用 KMS 金鑰執行多種類型的操作,會使得所有操作的產品更容易受到攻擊。

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

使用非對稱金鑰對加密

若要使用非對稱金鑰對加密資料,您必須使用非對稱 KMS 金鑰搭配 RSA 金鑰規格SM2 金鑰規格 (僅限中國區域)。若要使用 KMS 金鑰的公有金鑰加密 AWS KMS 的資料,請使用 Encrypt 操作。您也可以下載公有金鑰,並與需要在外部加密資料的各方共用 AWS KMS。

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

若要解密使用外部公有金鑰加密的資料 AWS KMS,請呼叫解密操作。如果資料是在公有金鑰下加密,且 KMS 金鑰的金鑰使用量為 ,Decrypt則操作會失敗SIGN_VERIFY。如果使用 AWS KMS 不支援您所選金鑰規格的演算法加密,也會失敗。如需金鑰規格和支援演算法的詳細資訊,請參閱金鑰規格參考

為了避免這些錯誤,在 外部使用公有金鑰的任何人 AWS KMS 都必須存放金鑰組態。 AWS KMS 主控台和 GetPublicKey 回應提供您在共用公有金鑰時必須包含的資訊。

衍生共用秘密

若要衍生共用秘密,請使用 KMS 金鑰搭配 NIST 建議的橢圓曲線SM2 (僅限中國區域) 金鑰材料。 AWS KMS 會使用橢圓曲線密碼編譯 Cofactor Diffie-Hellman 基本 (ECDH),透過從橢圓曲線公有私有金鑰對衍生共用秘密,在兩個對之間建立金鑰協議。您可以使用 DeriveSharedSecret 操作傳回的原始共用秘密,來衍生對稱金鑰,以加密和解密在兩方之間傳送的資料,或產生和驗證 HMACs。 AWS KMS 當您使用原始共用秘密衍生對稱金鑰時,建議您遵循金鑰衍生的 NIST 建議

產生和驗證 HMAC 代碼

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

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

搭配 AWS 服務使用

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

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