【问题标题】:Is it possible to have secure, restful authentication without SSL?是否可以在没有 SSL 的情况下进行安全、宁静的身份验证?
【发布时间】:2012-03-31 22:06:04
【问题描述】:

是否可以在不使用会话、cookie 和 SSL 的情况下进行安全身份验证?

我查看了其他协议,例如 SRP 和 Diffie Helman,但最终您必须通过网络发送密钥证明,这很容易受到“中间人”攻击...

【问题讨论】:

  • SRP 不易受 MITM 攻击。但是你有什么反对 SSL/TLS 的呢?
  • SSL/TLS 的一般问题是它需要一个“受信任的第三方”。一般而言,受信任的第三方没有任何问题,但现在我们的情况是,整个信任链都围绕着冷硬现金。

标签: security ssl


【解决方案1】:

只要在连接之前没有进行一些通信(私下交换密钥,以便您可以加密消息等),那么在网络上不使用 SSL 就没有什么是安全的。

【讨论】:

  • 即使使用 SSL,你也不是 100% 安全的。看看 SSL Strip。
  • @M.H:这不是对 SSL 的攻击。
  • @M.H 现在大多数浏览器都支持 STS。另外+1,需要ssl
  • SRP 协议除外? (例如在 TLS 中使用)
  • 这并不准确 - SSL 之所以有效,只是因为它具有预先交换的密钥 :-) 请参阅我的答案。
【解决方案2】:

如果没有一些预先共享的信息,没有什么可以免受中间人攻击。您总是需要一些预先共享的信息来防止中间人攻击。 如果您只是想避免被动窃听,则不需要预先共享的信息。

SSL 效果最好的主要原因是您拥有预先共享的安全信息 - 证书。 Web 浏览器已经与它捆绑在一起。例如,在 Firefox 中查看工具/选项/高级/加密/查看证书/授权,然后选择证书并单击查看。

您当然可以基于预先共享的信息使用不同的加密协议,因此原则上可以不使用 SSL。 但在当前实践中,与网络浏览器捆绑在一起的唯一预共享信息是 SSL 证书。

【讨论】:

  • 你的观点是正确的,但你应该避免使用“预共享密钥”的表达方式。在 SSL/TLS 上下文中,PSK 是关于预共享的对称(或秘密)密钥(并没有像基于 PKI 的 TLS 身份验证那样广泛使用),而不是关于公钥的分发通过 CA 证书。您说的是捆绑和预信任的 CA 证书(CA 不会像这样与您“共享”它们,而是将它们赠送给您以让您信任它们)。
  • @Bruno,我同意,我的术语并不准确,我只是在谈论原则。我编辑了我的帖子以反映这一点(删除了术语 PSK)。感谢您的评论!
  • 这是一个很好的解释,我一直很好奇为什么 SSL 从根本上更安全。谢谢。
【解决方案3】:

仅用于身份验证,任何基于公钥的加密都可以作为替代方案。您可以添加自定义 HTTP 请求标头,包括数字签名和对签名者证书的引用。这将是一种完全专有的方法,但它可能适合您的需求。

【讨论】:

    猜你喜欢
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多