数据密钥
数据密钥 是可用于加密数据的加密密钥,包括大量数据和其他数据加密密钥。
您可以使用 AWS KMS 客户主密钥 (CMK) 生成、加密和解密数据密钥。但是,AWS KMS 不会存储、管理或跟踪您的数据密钥,也不会使用数据密钥执行加密操作。您必须在 AWS KMS 之外使用和管理数据密钥。
创建数据密钥
要创建数据密钥,请调用 GenerateDataKey 操作。AWS KMS 使用您指定的 CMK 来生成数据密钥。此操作会返回数据密钥的明文副本和借助 CMK 加密的数据密钥的副本,如下图所示。
AWS KMS 还支持 GenerateDataKeyWithoutPlaintext 操作,此操作仅返回加密的数据密钥。当您需要使用数据密钥时,请要求 AWS KMS 解密它。
使用数据密钥加密数据
AWS KMS 无法使用数据密钥加密数据,但您可以在 KMS 之外使用数据密钥,例如使用 OpenSSL 或 AWS 加密 SDK 等加密库。
在使用明文数据密钥加密数据后,请尽快从内存中将其删除。您可以安全地存储加密数据密钥及加密数据,以便其可根据需要用于解密数据。
使用数据密钥解密数据
要解密数据,请将加密数据密钥传递至 Decrypt 操作。AWS KMS 使用您的 CMK 解密数据密钥,然后该函数返回纯文本数据密钥。使用明文数据密钥解密数据,并尽快从内存中删除该明文数据密钥。
下图显示了如何使用 Decrypt 操作解密加密数据密钥。
信封加密
在您加密数据后,数据将受到保护,但您必须保护加密密钥。一种策略是对其进行加密。信封加密 是一种加密方法,它使用数据密钥对明文数据进行加密,然后使用其他密钥对数据密钥进行加密。
您甚至可以使用其他加密密钥对数据加密密钥进行加密,并且在另一个加密密钥下加密该加密密钥。但是,最后,一个密钥必须以明文形式保留,以便您可以解密密钥和数据。此顶层明文密钥加密密钥称为主密钥。
AWS KMS 可通过安全地存储和管理主密钥来帮助您保护它们。存储在 AWS KMS 中的主密钥(称为客户主密钥 (CMK))绝不会让 AWS KMS 经 FIPS 验证的硬件安全模块处于不加密状态。要使用 AWS KMS CMK,您必须调用 AWS KMS。
信封加密可提供以下多种优势:
- 保护数据密钥
加密数据密钥时,您无需担心存储加密数据密钥,因为数据密钥本身就受到加密的保护。您可以安全地将加密数据与加密数据密钥一起存储。
- 使用多个主密钥加密相同数据
加密操作可能非常耗时,特别是要加密的数据是大型对象时。您可以只重新加密保护原始数据的数据密钥,而无需使用不同的密钥多次重新加密原始数据。
- 结合多种算法的优势
一般而言,对称密钥算法比公有密钥算法速度更快,且生成的密文也较小,但公有密钥算法可提供固有的角色分离和更轻松的密钥管理。信封加密让您可以每种策略的优势结合起来。
原文地址:https://www.cnblogs.com/cloudrivers/p/11620915.html