密钥环 - AWS 数据库加密 SDK

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

密钥环

我们的客户端加密库已重命名为 AWS 数据库加密SDK。本开发人员指南仍提供有关 DynamoDB 加密客户端的信息。

AWS 数据库加密SDK使用密钥环来执行信封加密。密钥环生成、加密和解密数据密钥。密钥环确定保护每条加密记录的唯一数据密钥的来源,以及加密该数据密钥的包装密钥。您在加密时指定一个密钥环,并在解密时指定相同或不同的密钥环。

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

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

您的密钥环决定了哪些包装密钥保护您的数据密钥并最终保护您的数据。使用最安全且对您的任务实用的包装密钥。尽可能使用封装受硬件安全模块 (HSM) 或密钥管理基础架构保护的KMS密钥,例如 AWS Key Management Service(AWS KMS) 中的密钥或中的加密密钥AWS CloudHSM

AWS 数据库加密SDK提供了多种密钥环和密钥环配置,您可以创建自己的自定义密钥环。您也可以创建包含一个或多个相同或不同类型的密钥环的多重密钥环

密钥环的工作方式

我们的客户端加密库已重命名为 AWS 数据库加密SDK。本开发人员指南仍提供有关 DynamoDB 加密客户端的信息。

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

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

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

您可以使用一个密钥环,也可以将相同类型或不同类型的密钥环组合到一个多重密钥环中。加密数据时,多密钥环会返回由构成多密钥环的所有密钥环中的所有封装密钥加密的数据密钥副本以及与数据MAC密钥关联的密钥。您可以使用包含多重密钥环中任一包装密钥的密钥环解密数据。