Amazon 软件开发工具包支持 Amazon S3 客户端加密
下表列出了语言特定的 Amazon SDK 支持的加密算法和功能。有关如何使用特定 SDK 的功能的信息,请参阅该 SDK 的开发人员指南。
如果您是初次使用加密,请参阅《Amazon 加密服务和工具指南》了解术语和概念。
Amazon Encryption SDK 是独立于 Amazon SDK 的客户端加密库。您可以使用此加密库更轻松地实施加密最佳做法。与特定于语言的 Amazon SDK 中的 Amazon S3 加密客户端不同,Amazon Encryption SDK 将返回可移植加密文字,它不与 Amazon S3 绑定,不需要 Amazon Web Services 账户,并可用于加密或解密任何未格式化数据。
Amazon Encryption SDK 和 Amazon S3 加密客户端不兼容,因为它们生成具有不同数据格式的密文。有关 Amazon Encryption SDK 的更多信息,请参阅 Amazon Encryption SDK 开发人员指南。
用于 Amazon S3 客户端加密的 Amazon SDK 功能
要在上传到 Amazon S3 之前使用 Amazon S3 客户端加密库对数据进行加密,您必须向 Amazon S3 加密客户端提供根密钥。您可以提供客户端根密钥,或者使用来自 Amazon Key Management Service (Amazon KMS) 的 Amazon KMS 密钥。Amazon KMS 密钥可使安全地创建和管理加密密钥变得更加轻松。有关这些功能的更多信息,请选择功能列中提供的链接。
有关如何使用特定软件开发工具包的功能的详细信息,请参阅该软件开发工具包的开发人员指南。
在下表中,每一列指示特定语言的 Amazon Command Line Interface 或 SDK 是否支持客户端加密中使用的功能。
| 功能 | Java | .NET | Ruby v2 | Amazon CLI | Boto3 | PHP v3 | JavaScript | Go | C++ |
|---|---|---|---|---|---|---|---|---|---|
| Amazon S3 客户端加密 | 是 | 是 | 是 | 否 | 否 | 是 | 否 | 是 | 是 |
| Amazon KMS 密钥 | 是 | 是 | 是 | 否 | 否 | 是 | 否 | 是 | 是 |
有关支持客户端加密的 v2 Amazon S3 加密客户端的信息,请参阅我们的博客文章 Updates to the Amazon S3 Encryption Client
有关旧版 v1 Amazon S3 加密客户端的更多详细信息,请参阅以下博客文章。
Amazon S3 加密客户端加密算法
下表列出了使用 Amazon S3 加密客户端时,每个特定语言的 Amazon SDK 对加密密钥和数据支持的算法列表。
| 算法 | Java | .NET | Ruby v2 | Amazon CLI | Boto3 | PHP v3 | JavaScript | Go | C++ |
|---|---|---|---|---|---|---|---|---|---|
| 密钥包装:RSA-OAEP-SHA1 | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 否 |
| 密钥包装:AES/GCM | 是 | 是 | 是 | 否 | 否 | 否 | 否 | 否 | 是 |
| 密钥包装:KMS + 上下文 | 是 | 是 | 是 | 否 | 否 | 是 | 否 | 是 | 是 |
| 密钥包装:AES/ECB | 弃用 | 弃用 | 弃用 | 否 | 否 | 否 | 否 | 否 | 否 |
| 密钥包装:AESWrap | 弃用 | 弃用 | 弃用 | 否 | 否 | 否 | 否 | 否 | 弃用 |
| 密钥包装:RSA | 弃用 | 否 | 弃用 | 否 | 否 | 否 | 否 | 否 | 否 |
| 密钥包装:KMS | 弃用 | 弃用 | 弃用 | 否 | 否 | 弃用 | 否 | 弃用 | 弃用 |
| 内容加密:AES/GCM | 是 | 是 | 是 | 否 | 否 | 是 | 否 | 是 | 是 |
| 内容加密:AES/CBC | 弃用 | 否 | 弃用 | 否 | 否 | 否 | 否 | 弃用 | 弃用 |
有关经身份验证和仅加密模式的更多信息,请参阅博客文章 Amazon S3 Client-Side Authenticated Encryption