生成数据密钥
数据密钥是可用于加密数据的对称密钥,包括大量数据和其他数据加密密钥。与无法下载的对称 KMS 密钥不同的是,数据密钥可以返回给您在 AWS KMS 外部使用。
当 AWS KMS 生成数据密钥时,它会返回供立即使用的明文数据密钥(可选)和可以随数据安全存储的数据密钥的加密副本。准备好解密数据时,首先要求 AWS KMS 解密已加密的数据密钥。
AWS KMS 会生成、加密和解密数据密钥。但是,AWS KMS 不会存储、管理或跟踪您的数据密钥,也不会使用数据密钥执行加密操作。您必须在 AWS KMS 之外使用和管理数据密钥。有关安全使用数据密钥的帮助,请参阅 AWS Encryption SDK。
创建数据密钥
要创建数据密钥,请调用 GenerateDataKeyPair 操作。AWS KMS 生成数据密钥 然后,它会在您指定的对称加密 KMS 密钥下加密数据密钥的副本。此操作会返回数据密钥的明文副本以及由 KMS 密钥加密的数据密钥的副本。下图展示了此操作。
AWS KMS 还支持 GenerateDataKeyWithoutPlaintext 操作,此操作仅返回加密的数据密钥。当您需要使用数据密钥时,请要求 AWS KMS 解密它。
如何使用数据密钥进行加密操作
以下主题说明了由 GenerateDataKey 或 GenerateDataKeyWithoutPlaintext 生成的数据密钥的工作原理。
使用数据密钥加密数据
AWS KMS 无法使用数据密钥来加密数据。但您可以在 AWS KMS 之外使用数据密钥,例如使用 OpenSSL 或 AWS Encryption SDK 等加密库。
在使用明文数据密钥加密数据后,请尽快从内存中将其删除。您可以安全地存储加密数据密钥及加密数据,以便其可根据需要用于解密数据。
使用数据密钥解密数据
要解密数据,请将加密数据密钥传递至 Decrypt 操作。AWS KMS 使用您的 KMS 密钥解密数据密钥,然后再返回明文数据密钥。使用明文数据密钥解密数据,并尽快从内存中删除该明文数据密钥。
下图显示了如何使用 Decrypt 操作解密加密的数据密钥。