【问题标题】:Is Apache Digest authentication more secure or than Basic or not?Apache Digest 身份验证是否比 Basic 更安全?
【发布时间】:2014-01-21 12:14:24
【问题描述】:

Authorization intro 页面上,Apache 告诉我们:

Apache 支持另一种身份验证方法:AuthType Digest。这 方法由 mod_auth_digest 实现,更安全

mod_auth_digest 页面上,Apache 告诉我们:

这个模块实现了 HTTP Digest Authentication (RFC2617),并且 提供了 mod_auth_basic 的替代方案,其中没有密码 以明文形式传输。然而,这并不会导致显着 安全性优于基本身份验证。另一方面, 服务器上的密码存储安全性要低得多摘要 身份验证而不是基本身份验证。

有人可以为我澄清这些看似矛盾的陈述吗?我了解两种处理密码的方式都容易受到重放攻击(除非您还使用 SSL),但这似乎是一个单独的问题。

【问题讨论】:

  • mod_auth_digest 也说However, this does not lead to a significant security advantage over basic authentication。你得到的所有摘要都是网络上没有明文密码,但除此之外,服务器端的安全性不会比普通的多(也不会少)。基本上,主要的身份验证页面已经过时了。
  • 两者的密码存储安全性不同吗?
  • 不确定摘要如何将密码存储在 AuthUserFile 中,但对于常规的普通身份验证,所使用的哈希值已经过时了,并且提供的安全性与谷物盒解码器环差不多。

标签: apache security authentication basic-authentication digest-authentication


【解决方案1】:

使用基本身份验证,密码几乎是纯格式(base64 编码)发送到服务器,并在服务器端进行哈希处理并与哈希密码(存储在 htpasswd 文件或类似文件中)进行比较。通过摘要身份验证,散列密码被发送到服务器(添加了一些服务器定义的数据,因此重放攻击将不起作用)。但是要验证密码,您需要在服务器端拥有纯密码(或接近纯密码的密码)。这意味着,如果攻击者可以访问 htpasswd 文件,则需要破解所有密码才能用于基本身份验证,而如果攻击者可以访问 htdigest 文件,则可以直接将其用于摘要身份验证。

总而言之:基本身份验证在网络上不太安全,但存储在服务器上更安全。因此,两者的最佳选择是将基本身份验证与 SSL 一起使用。但是,这两种身份验证技术都有缺点,即无法实现会话超时或显式注销,例如浏览器将保持登录状态,直到它关闭。这使得像 CSRF 这样的攻击更容易。

【讨论】:

  • en.wikipedia.org/wiki/Digest_access_authentication 似乎说可以在服务器上存储加密的摘要密码,但我猜Apache没有?
  • 您可以存储加密的密码,但您需要在验证摘要之前对其进行解密。并且它不受 apache 支持。来自基本和摘要身份验证的 RFC tools.ietf.org/html/rfc2617#section-4.13:“这样的安全含义是,如果这个密码文件被泄露,那么攻击者可以立即访问使用这个领域的服务器上的文档。不像标准的 UNIX 密码文件,则无需解密此信息即可访问与此文件关联的服务器领域中的文档。”
  • 是的,我也找到了那个页面,但它已经快 15 年了!我不知道如何评估文档(或 stackoverflow 答案!)是否是最新的。
  • 两种身份验证协议的安全问题都没有改变,这也是当今身份验证通常在 Web 应用程序本身内完成的原因之一(支持注销、超时......)
  • @rpilkey:你说得对,你可以像你一样存储 HA1(见Wikipedia 的含义)而不是密码。但是,HA1 的泄露与密码的泄露相当,因为攻击者成功进行身份验证交换所需的全部是 HA1。因此问题类似于存储纯密码。
猜你喜欢
  • 2017-02-23
  • 2013-01-20
  • 2016-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多