【问题标题】:Does using channel encryption (https) make hashing the secret key redundant?使用通道加密 (https) 是否会使散列密钥变得多余?
【发布时间】:2011-05-17 13:42:43
【问题描述】:

我正在设计一个客户端连接到的 Web 服务,以便检索一些私人数据。每个客户端都有一个唯一的 ID 和一个密钥(由服务器生成),它们作为参数发送到 Web 服务,以验证自己的身份。此外,所有通信均通过 HTTPS 完成。

我还计划使用 HMAC-SHA256,以避免通过网络发送密钥。

但是,我想知道这是否是绝对必要的。既然 HTTPS 为我提供了客户端和服务器之间的安全通道,我为什么真的介意通过该通道发送密钥?

我设法想出的唯一原因是,不知情的开发人员将来可能会添加服务并且不会拒绝非 HTTPS 连接,因此散列密钥是对公司软件开发现实的一种保险,如果你愿意的话,一条额外的防线。

我错过了什么更重要的东西吗?这是一些攻击媒介可以利用的真正漏洞吗?

【问题讨论】:

    标签: security hmac


    【解决方案1】:
    • 攻击者将伪造的可信证书安装到浏览器中并劫持会话。
    • 发送到您网站的链接,但重定向到 SSL 被拦截,非 SSL 会话开始。

    还有其他的,但故事是这样的:SSL 很复杂,并且经常以创造性的方式受到攻击。如果您的连接是安全的,那么与人类代码的复杂性和 cpu 时间的成本相比,散列几乎没有价值。但是,如果 SSL 会话被破坏,那么您仍然保存了您的密钥。就像我们在数据库中对密码进行哈希处理一样,尽管没有不受欢迎的人应该有权访问,但对您的密钥进行哈希处理是明智的。

    【讨论】:

      【解决方案2】:

      channel 可能是安全的,但这并不能告诉您有关 endpoints 的任何信息:取决于相关浏览器(及其插件/扩展/... ),您的密钥很可能最终会存储在用户计算机上某个基于磁盘的缓存中,并且它可能会一直保存在那里直到永远结束。

      这不是一个非常有趣的漏洞......直到您意识到各种恶意软件已经在磁盘中搜寻任何有价值的东西 - 并且按照当前的速率,您的一些用户受感染(除非您的网站只有 20 个用户;))。

      所以:不要为了节省几个 CPU 周期而抛弃非常强大的加密机制;这是一个潜在危险的微优化 IMNSHO。

      【讨论】:

        猜你喜欢
        • 2019-01-14
        • 2011-12-04
        • 2016-11-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多