如何保护传输中的AWS S3上传/下载的数据?

Ioa*_*nna 4 encryption amazon-s3 amazon-web-services

当我们将数据上传到 S3 时,默认情况下它在传输过程中是否受到保护(可能通过 HTTPS)?

我发现这篇文章,如果我理解正确的话,指出 S3 不使用 HTTPS:

Amazon Simple Storage Service:您仍然可以将 HTTP 与 Amazon S3 结合使用并安全地发出经过身份验证的请求。该服务使用不同的安全签名协议。

在这种情况下,我们是否应该使用客户端加密来保护传输中的数据?

Adi*_*tya 5

引用S3 常见问题解答的安全部分:

您可以使用 HTTPS 协议通过 SSL 终端节点安全地将数据上传/下载到 Amazon S3。

如果您使用https://S3 端点,则传输中的数据应正确加密。您在问题中引用的引用意味着可以使用协议访问 S3 http://,在这种情况下,数据在传输过程中不会被加密。请参阅相关问题。

如果您具体询问 AWS CLI 是否对传输中的数据进行加密,那么答案是肯定的。看到这个问题。

另请注意,使用客户端加密的主要目的是加密静态数据,并使用您自己选择的加密算法。如果您使用客户端加密但仍然使用端点,从技术上讲http://,您通过线路的通信仍然是未加密的,因为攻击者可以提取通过线路传递的密文进行分析。

更新:

  1. 如果您具体询问有关AWS Java SDK的信息,默认协议又是https。引用AWS Java SDK的 javadocs :

默认情况下,所有区域的所有服务端点均使用https协议。要改用 http,请在构造时提供的 ClientConfiguration 中指定它。

来自ClientConfiguration.getProtocol的 javadocs :

默认配置是对所有请求使用 HTTPS 以提高安全性。

  1. 客户端/服务器端加密的主要目的是保护静态数据。如果有人以某种方式破解您的云提供商的数据中心并窃取包含您数据的磁盘,则通过在客户端/服务器端加密数据,他们将很难以明文形式获取您的数据。在客户端执行此操作可以让您对加密算法有更多的控制,但似乎会产生额外的副作用,即数据不通过网络以明文形式传输。然而,通信通道本身并未加密。例如,如果您使用弱加密算法,攻击者仍然可以通过网络嗅探加密数据并将其解密。另外,重要的是要知道使用 SSL 意味着
    • 作为客户,您可以确定您正在与 AWS 交谈
    • 您与 AWS 的通信已加密,因此其他人无法拦截
    • 您已验证收到的消息与发送的消息相同

本质上,无论您是否要使用客户端加密,您都肯定要使用 SSL。