

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 密钥环
<a name="keyrings"></a>


****  

|  | 
| --- |
| 我们的客户端加密库已重命名为 AWS 数据库加密 SDK。本开发人员指南仍提供有关 [DynamoDB 加密客户端](legacy-dynamodb-encryption-client.md)的信息。 | 

 AWS 数据库加密 SDK 使用*密钥环*来执行[信封加密](concepts.md#envelope-encryption)。密钥环生成、加密和解密数据密钥。密钥环确定保护每条加密记录的唯一数据密钥的来源，以及加密该数据密钥的[包装密钥](concepts.md#wrapping-key)。您在加密时指定一个密钥环，并在解密时指定相同或不同的密钥环。

您可以单独使用每个密钥环，也可以将多个密钥环合并为一个[多重密钥环](use-multi-keyring.md)。虽然大多数密钥环可以生成、加密和解密数据密钥，但您也可以创建只执行一项特定操作的密钥环，例如只生成数据密钥的密钥环，并将此密钥环与其他密钥环结合使用。

我们建议您使用可保护包装密钥并在安全边界内执行加密操作的密钥环，例如密 AWS KMS 钥环，它使用永不保密 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/)() AWS KMS keys AWS KMS的密钥环。您还可以编写一个使用封装密钥的密钥环，这些密钥存储在硬件安全模块 (HSMs) 中或受其他主密钥服务保护。

您的密钥环决定了哪些包装密钥保护您的数据密钥并最终保护您的数据。使用最安全且对您的任务实用的包装密钥。尽可能使用由硬件安全模块（HSM）或密钥管理基础设施保护的包装密钥，例如 [AWS Key Management Service](https://docs.aws.amazon.com/kms/latest/developerguide/)（AWS KMS）中的 KMS 密钥或 [AWS CloudHSM](https://docs.aws.amazon.com/cloudhsm/latest/userguide/) 中的加密密钥。

 AWS 数据库加密 SDK 提供了多种密钥环和密钥环配置，您可以创建自己的自定义密钥环。您也可以创建包含一个或多个相同或不同类型的密钥环的[多重密钥环](use-multi-keyring.md)。

**Topics**
+ [密钥环的工作方式](#using-keyrings)
+ [AWS KMS 钥匙圈](use-kms-keyring.md)
+ [AWS KMS 分层钥匙圈](use-hierarchical-keyring.md)
+ [AWS KMS ECDH 钥匙圈](use-kms-ecdh-keyring.md)
+ [原始 AES 密钥环](use-raw-aes-keyring.md)
+ [原始 RSA 密钥环](use-raw-rsa-keyring.md)
+ [未加工的 ECDH 钥匙圈](use-raw-ecdh-keyring.md)
+ [多重密钥环](use-multi-keyring.md)

## 密钥环的工作方式
<a name="using-keyrings"></a>


****  

|  | 
| --- |
| 我们的客户端加密库已重命名为 AWS 数据库加密 SDK。本开发人员指南仍提供有关 [DynamoDB 加密客户端](legacy-dynamodb-encryption-client.md)的信息。 | 

在对数据库中的字段进行加密和签名时， AWS 数据库加密 SDK 会要求密钥环提供加密材料。密钥环返回一个明文数据密钥、由密钥环中的每个包装密钥加密的数据密钥副本，以及与数据密钥关联的 MAC 密钥。 AWS 数据库加密 SDK 使用明文密钥对数据进行加密，然后尽快从内存中删除明文数据密钥。然后， AWS 数据库加密 SDK 会添加[材料描述](concepts.md#material-description)，其中包括加密的数据密钥和其他信息，例如加密和签名指令。 AWS 数据库加密 SDK 使用 MAC 密钥计算基于哈希的消息身份验证码 (HMACs)，而不是材料描述和所有标记为或的字段的规范化。`ENCRYPT_AND_SIGN` `SIGN_ONLY`

解密数据时，您可以使用加密数据所用的密钥环，也可以使用其他密钥环。要解密数据，解密密钥环必须有权访问加密密钥环中的至少一个包装密钥。

 AWS 数据库加密 SDK 将材料描述中的加密数据密钥传递到密钥环，并要求密钥环解密其中任何一个。密钥环使用其包装密钥以解密一个加密的数据密钥，并返回明文数据密钥。 AWS 数据库加密 SDK 使用明文数据密钥将对数据进行解密。如果密钥环中的所有包装密钥都无法解密任何加密的数据密钥，解密操作将失败。

您可以使用一个密钥环，也可以将相同类型或不同类型的密钥环组合到一个[多重密钥环](use-multi-keyring.md)中。当您加密数据时，多重密钥环返回数据密钥的副本，该数据密钥使用构成该多重密钥环的所有密钥环中的所有包装密钥和与数据密钥关联的 MAC 密钥加密。您可以使用包含多重密钥环中任一包装密钥的密钥环解密数据。