那是什么 AWS Encryption SDK? - AWS Encryption SDK

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

那是什么 AWS Encryption SDK?

AWS Encryption SDK 是一个客户端加密库,旨在让每个人都能轻松地使用行业标准和最佳实践对数据进行加密和解密。这样,您就可以专注于应用程序的核心功能,而不是如何以最佳方式加密和解密数据。在 AWS Encryption SDK Apache 2.0 许可证下免费提供。

这些 AWS Encryption SDK 答案将为你解答如下问题:

  • 我应该使用哪种加密算法?

  • 我应该如何使用该算法或在哪种模式下使用?

  • 我如何生成加密密钥?

  • 我如何保护加密密钥,以及将其存储在什么位置?

  • 我如何使加密的数据具有便携性?

  • 我如何确保目标接收者可以读取我的加密数据?

  • 我如何确保在写入和读取我的加密数据之间不会修改这些数据?

  • 如何使用 AWS KMS 返回的数据密钥?

使用 AWS Encryption SDK,您可以定义主密钥提供程序 (Python) 或密钥环 (C, C#/。 NET、Java 和 JavaScript),用于确定使用哪些包装密钥来保护数据。然后,您可以使用提供的简单方法对数据进行加密和解密。 AWS Encryption SDK剩下的 AWS Encryption SDK 就交给了。

如果没有 AWS Encryption SDK,您可能要花更多的精力来构建加密解决方案,而不是花在应用程序的核心功能上。他们通过提供以下内容来 AWS Encryption SDK 回答这些问题。

遵循加密最佳实践的默认实施

默认情况下,会为其加密的每个数据对象 AWS Encryption SDK 生成一个唯一的数据密钥。这遵循在每个加密操作中使用唯一数据密钥的加密最佳实践。

使用安全、经过身份验证的对称密钥算法对您的数据进行 AWS Encryption SDK 加密。有关更多信息,请参阅 AWS Encryption SDK中支持的算法套件

使用包装密钥保护数据密钥的框架

通过在一个或多个封装密钥下加密数据密钥来 AWS Encryption SDK 保护加密您的数据密钥。通过提供一个使用多个包装密钥加密数据密钥的框架, AWS Encryption SDK 这有助于使您的加密数据具有可移植性。

例如,对本地输入 AWS KMS 和密钥下的数据进行加密HSM。 AWS KMS key 为了避免其中一个密钥不可用或调用方无权使用这两个密钥,您可以使用其中一个包装密钥解密数据。

采用某种格式的消息,它存储加密的数据密钥以及加密的数据

将加密的数据和加密的数据密钥一起 AWS Encryption SDK 存储在使用定义数据格式的加密消息中。这意味着您无需跟踪或保护加密数据的数据密钥,因为这些密钥是为你 AWS Encryption SDK 做的。

的某些语言实现 AWS Encryption SDK 需要一个 AWS SDK,但 AWS Encryption SDK 不需要 AWS 账户 ,也不依赖于任何 AWS 服务。 AWS 账户 只有当您选择使用来保护您的数据时 AWS KMS keys,才需要一个。

在开源存储库中开发

AWS Encryption SDK 是在上的开源存储库中开发的 GitHub。您可以使用这些存储库查看代码、阅读和提交问题,并且查找特定于您的语言实施的信息。

与加密库和服务的兼容性

AWS Encryption SDK 有几种编程语言支持。所有语言实施都是可互操作的。您可以使用一种语言实施进行加密,并使用另一种语言实施进行解密。互操作性可能受到语言约束的限制。如果是这样,这些约束将在有关语言实施的主题中进行描述。此外,在加密和解密时,必须使用兼容的密钥环或主密钥和主密钥提供程序。有关详细信息,请参阅密钥环兼容性

但是, AWS Encryption SDK 无法与其他库互操作。由于每个库以不同的格式返回加密的数据,因此,您无法使用一个库进行加密并使用另一个库进行解密。

DynamoDB 加密客户端和 Amazon S3 客户端加密

AWS Encryption SDK 无法解密由 DynamoDB 加密客户端或 Amazon S3 客户端加密加密的数据。这些库无法解密返回的加密消息。 AWS Encryption SDK  

AWS Key Management Service (AWS KMS)

AWS Encryption SDK 可以使用的密钥AWS KMS keys数据密钥来保护您的数据,包括多区域KMS密钥。例如,您可以将配置 AWS Encryption SDK 为在 AWS KMS keys 中的一个或多个下加密您的数据 AWS 账户。但是,您必须使用 AWS Encryption SDK 来解密该数据。

AWS Encryption SDK 无法解密 Encrypt 或操作返回的 AWS KMS 文。ReEncrypt同样, AWS KMS 解密操作无法解密返回的加密消息。 AWS Encryption SDK

仅 AWS Encryption SDK 支持对称加密KMS密钥。您不能使用非对称KMS密钥进行加密或登录。 AWS Encryption SDK为ECDSA签名消息的算法套件 AWS Encryption SDK生成自己的签名密钥。

支持和维护

AWS Encryption SDK 使用与 AWS SDK和工具相同的维护策略,包括其版本控制和生命周期阶段。作为最佳实践,我们建议您使用 AWS Encryption SDK 适用于您的编程语言的最新可用版本,并在新版本发布时进行升级。当版本需要进行重大更改时,例如从 1.7 之前的 AWS Encryption SDK 版本升级。 x 到 2.0 版本。 x 及以后,我们会提供详细的说明来帮助您。

的每种编程语言实现都 AWS Encryption SDK 是在单独的开源 GitHub 存储库中开发的。每个版本的生命周期和支持阶段可能因存储库而异。例如,给定版本的在一种编程语言中 AWS Encryption SDK 可能处于正式发布(完全支持)阶段,但处于另一种编程语言的 end-of-support阶段。我们建议您尽可能使用全面支持的版本,避免使用不再受支持的版本。

要查找您的编程语言 AWS Encryption SDK 版本的生命周期阶段,请查看每个 AWS Encryption SDK 存储库中的SUPPORT_POLICY.rst文件。

有关更多信息,请参阅的版本 AWS Encryption SDKAWS SDKs和工具参考指南中的 AWS SDKs和和和工具维护政策

了解更多信息

有关 AWS Encryption SDK 和客户端加密的更多信息,请尝试以下来源。

有关 AWS Encryption SDK 在不同编程语言中实现的信息。

发送反馈

我们欢迎您提供反馈!如果您有任何疑问或意见或者要报告问题,请使用以下资源。

  • 如果您在中发现潜在的安全漏洞 AWS Encryption SDK,请通知 AWS 安全部门。不要创建公开 GitHub 问题。

  • 要提供相关反馈 AWS Encryption SDK,请在 GitHub 存储库中提交您正在使用的编程语言的问题。

  • 要提供有关本文档的反馈,请使用该页面上的反馈链接。您也可以提交问题或为aws-encryption-sdk-docs本文档的开源存储库做出贡献 GitHub。