加密 Amazon S3 URL 以保障数据访问的安全性。

4
我希望将受版权保护的数据托管在Amazon S3存储桶上(以获得比我的服务器处理能力更大的带宽),并为大量授权客户提供访问这些受版权保护的数据的权限。
我的问题是:
- 我在服务器端创建了签名过期的HTTPS URL - 这些URL通过HTTPS连接发送到客户端 - 当客户端使用这些URL下载内容时,URL可以被中间人明文查看
详细来说,这些URL是通过Ruby On Rails服务器使用fog gem创建的。我所说的移动客户端是iOS设备。我用于测试的代理是mitmproxy。
我生成的URL看起来像这样:

https://mybucket.s3.amazonaws.com/myFileKey?AWSAccessKeyId=AAA&Signature=BBB&Expires=CCC

我不是网络或安全专家,但我找到的资源表明HTTPS连接上没有清晰传输(例如,参见HTTPS头是否加密?)。这是否是我的测试配置错误导致此URL未加密?您对此可能出错的任何提示有什么建议吗?我是否真的有机会防止S3 URL在网络上以明文形式传输?

1个回答

4
首先,使用SSL发送请求时所有参数都是加密的。如果您查看正常代理中的流量,您将无法阅读它们。
然而,许多代理允许通过创建虚拟证书截取SSL数据。这正是mitmproxy所做的。您可能已经启用了此功能但没有意识到(尽管您必须安装客户端证书才能执行此操作)。
底线是,你的AWS URL可以被倒推你的应用程序,无论是通过代理还是通过截取二进制本身。但总的来说,这不是一件坏事:Amazon自己知道这种情况发生了,这就是为什么他们不直接在URL本身发送秘密密钥,而是使用签名的原因。
我认为这对你来说不是个大问题:毕竟,你正在创建过期的URL,所以即使有人通过代理可以获得它们,他们只能在URL有效期内访问。要在过期后访问您的资源,需要直接访问您的秘密密钥。现在,事实证明这并非不可能(因为您可能已经将其硬编码到您的二进制文件中),但对大多数用户来说这很困难。
我建议您对您的安全性和版权保护保持现实态度:当您拥有客户端本地代码时,这不是“它是否被破解”的问题,而是“何时被破解”的问题。

事实上,我记得一年前为mitmproxy安装了一个虚拟证书。谢谢你的回答。 - Dirty Henry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接