版权归原作者所有,如有侵权,请联系我们

[科普中国]-HTTP摘要认证

科学百科
原创
科学百科为用户提供权威科普内容,打造知识科普阵地
收藏

HTTP摘要认证是一种协议规定的Web服务器用来同网页浏览器进行认证信息协商的方法。它在密码发出前,先对其应用哈希函数,这相对于HTTP基本认证发送明文而言,更安全。

从技术上讲,摘要认证是使用随机数来阻止进行密码分析的MD5加密哈希函数应用。它使用HTTP协议。

概述摘要访问认证最初由RFC 2069中被定义。RFC 2069大致定义了一个传统的由服务器生成随机数来维护安全性的摘要认证架构。认证响应由下列组成(HA1、HA2、A1、及A2为字符串变量的名称):

RFC 2069随后被RFC 2617(HTTP 认证:基本及摘要访问认证)。RFC 2617引入了一系列安全增强的选项;“保护质量”(qop)、随机数计数器由客户端增加、以及客户生成的随机数。这些增强为了防止如选择明文攻击的密码分析。

如果 qop 值为“auth”或未指定,那么 HA2 为

如果 qop 值为“auth-int”,那么 HA2 为

如果 qop 值为“auth”或“auth-int”,那么如下计算 response:

如果 qop 未指定,那么如下计算 response:

上面所述的这种当 qop 未指定的情况,也就是遵循简化的RFC 2069标准。1

MD5 安全问题对摘要认证的影响在 HTTP 摘要认证中使用 MD5 加密是为了达成"不可逆的",也就是说,当输出已知的时候,确定原始的输入应该是相当困难的。如果密码本身太过简单,也许可以通过尝试所有可能的输入来找到对应的输出(穷举攻击),甚至可以通过字典或者适当的查找表加快查找速度。

HTTP 构架由Phillip Hallam-Baker于1993年在CERN设计成的,并且没有吸收后续认证系统的改进,如基于密钥的杂凑讯息验证码HMAC的发展。虽然所使用的密码结构是基于MD5杂凑函数的,在2004年,通常认为冲突攻击不会影响明文(如密码)未被得知的应用。但是,在2006年的声明 (Kim, Biryukov2, Preneel, Hong,"On the Security of HMAC and NMAC Based on HAVAL MD4 MD5 SHA-0 and SHA-1") 导致了一些包括关于 MD5 应用的疑虑。不过,至今为止,MD5 冲突攻击没有被视为对摘要认证的威胁,并且RFC 2617允许服务器实现一些机制来检测冲突以及重放攻击。1

HTTP摘要认证优势和劣势优势HTTP摘要认证目的在于比传统摘要认证构架更安全;例如,“明显强于(如)CRAM-MD5……”。 (RFC 2617)

一些HTTP摘要认证的安全性增强如下:

密码并非直接在摘要中使用,而是 HA1 = MD5(username:realm:password)。这就允许一些实现(如,JBossDIGESTAuth)仅存储 HA1 而不是明文密码。

在RFC 2617中引入了客户端随机数nonce(cnonce),这将使客户端能够防止选择明文攻击,否则像彩虹表(Rainbow table)这类东西就会成为摘要认证构架的威胁。

服务器随机数 nonce 允许包含时间戳。因此服务器可以检查客户端提交的随机数 nonce,以防止重放攻击。

服务器也可以维护一个最近发出或使用过的服务器随机数nonce的列表以防止重用。2

劣势摘要访问认证有意成为一个安全性的折衷。它意图代替非加密的HTTP基本认证。但是,它没有被设计为替换强认证协议,例如公钥密码学或Kerberos认证。

在安全性方面,摘要访问认证有几个缺点:

RFC 2617中的许多安全选项都是可选的。如果服务器没有指定保护质量(qop),客户端将以降低安全性的早期的RFC 2069的模式操作。

摘要访问认证容易受到中间人攻击。举例而言,一个中间人攻击者可以告知客户端使用基本访问认证或早期的RFC 2069摘要访问认证模式。进一步而言,摘要访问认证没有提供任何机制帮助客户端验证服务器的身份。

一些服务器要求密码以可逆加密算法存储。但是,仅存储用户名、realm、和密码的摘要是可能的。

它阻止了使用强密码哈希函数(如bcrypt)保存密码(因为无论是密码、或者用户名、realm、密码的摘要都要求是可恢复的)。2

可替代的认证协议一些可以用于Web应用程序的强认证协议包括:

公钥密码学认证(通常随HTTPS/SSL客户端整数一起实现)。

Kerberos或SPNEGO认证,主要是在配置为Integrated Windows Authentication(IWA)的微软的IIS使用。

Secure Remote Password protocol(适用于HTTPS/TLS层)。

常用的弱明文协议:

HTTP基本认证构架

HTTP+HTML表单认证

使用HTTPS网络加密同时使用这些弱明文协议解决了许多摘要访问认证试图要防止的许多威胁。2

本词条内容贡献者为:

宋春霖 - 副教授 - 江南大学