3

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

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

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

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

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

4

2 回答 2

2

通道可能是安全的,但这并不能告诉您有关端点的任何信息:根据所讨论的浏览器(及其插件/扩展/...),您的密钥很可能最终会出现在某个基于磁盘的缓存中用户的计算机,它可以一直坐在那里直到永远。

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

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

于 2011-05-17T14:01:51.840 回答
2
  • 攻击者将伪造的可信证书安装到浏览器中并劫持会话。
  • 发送到您的站点的链接,但是到 SSL 的重定向被截获并且非 SSL 会话开始。

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

于 2011-05-17T13:53:53.943 回答