【问题标题】:Encrypting Amazon S3 URL over the network to secure data access通过网络加密 Amazon S3 URL 以保护数据访问
【发布时间】:2013-01-12 22:48:09
【问题描述】:

我想在 Amazon S3 存储桶上托管受版权保护的数据(以提供比我的服务器可以处理的更大的可用带宽)并为大量授权客户提供对这些受版权保护数据的访问。

我的问题是:

  • 我在服务器端为这些资源创建签名过期 HTTPS URL
  • 这些 URL 通过 HTTPS 连接发送给客户端
  • 当客户端使用这些 URL 下载内容时,任何中间人都可以清楚地看到该 URL

详细地说,URL 是通过 Ruby On Rails 服务器使用雾 gem 创建的。 我所说的移动客户端是 iOS 设备。 我用于测试的代理是 mitmproxy。

我生成的 URL 如下所示:

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

我不是网络或安全专家,但我发现资源表明通过 HTTPS 连接没有任何问题(例如,参见Are HTTPS headers encrypted?)。是不是我的测试配置错误导致了这个清晰的 URL?关于这里可能出了什么问题的任何提示?我真的有可能阻止 S3 URL 通过网络清除吗?

【问题讨论】:

    标签: security encryption https amazon-s3 man-in-the-middle


    【解决方案1】:

    首先,当通过 SSL 发送请求时,所有参数都被加密。如果您要查看通过普通代理的流量,您将无法读取它们。

    但是,许多代理允许通过创建虚拟证书来拦截 SSL 数据。这正是 mitmproxy 所做的。您很可能已启用此功能但没有意识到(尽管您必须安装客户端证书才能执行此操作)。

    最重要的是,您的 AWS URL 很容易被想要对您的应用程序进行逆向工程的人截获,无论是通过代理还是通过利用二进制文件本身。然而,这本身并不是一件“坏事”:亚马逊自己知道会发生这种情况,这就是为什么他们不直接在 URL 本身中发送密钥,而是使用签名。

    我认为这对你来说不是什么大问题:毕竟,你创建的 URL 会过期,所以即使有人可以通过代理获取它们,他们也只会只要 URL 有效,就可以访问它。要在到期后访问您的资源,需要直接访问您的密钥。现在,事实证明这不是不可能(因为你可能已经将它硬编码到你的二进制文件中),但它的难度足以让大多数用户不会为它而烦恼。

    我鼓励您在安全和版权保护方面保持现实:当您拥有客户端本机代码时,如果它会被破坏,但何时。

    【讨论】:

    • 事实上,我记得一年前为 mitmproxy 安装了一个虚拟证书。谢谢你的回答。
    猜你喜欢
    • 2011-10-21
    • 2010-10-15
    • 2011-08-24
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    相关资源
    最近更新 更多