使用通道加密 (https) 是否会使密钥散列变得多余



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

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

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

我设法想出的唯一原因是,一个不了解情况的开发人员将来可能会添加一个服务,而不是拒绝非HTTPS连接,所以散列密钥是一种针对企业软件开发现实的保险,如果你愿意的话,这是一道额外的防线。

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

  • 攻击者将伪造的受信任证书安装到浏览器中并劫持会话。
  • 将发送指向您站点的链接,但拦截到 SSL 的重定向,并开始非 SSL 会话。

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

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

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

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

最新更新