摘要认证

2018-05-03  本文已影响0人  lazy_boy_coder

摘要认证的改进

摘要认证流程

用随机数防止重放攻击

为防止此类重放攻击的发生,服务器可以向客户端发送一个称为随机数的特殊令牌,这个数会经常发生变化(可能是每毫秒,或者是每次认证都变化)。客户端在计算摘要之前要先将这个随机数令牌附加到密码上去。
在密码中加入随机数就会使摘要随着随机数的每一次变化而变化。记录下的密码摘要只对特定的随机值有效,而没有密码的话,攻击者就无法计算出正确的摘要,这样就可以防止重放攻击的发生。
摘要认证要求使用随机数,因为这个小小的重放弱点会使胃随机化的摘要认证变得和基本认证一样脆弱。随机数是在 www-Authenticate 质询中从服务器传送给客户端的。

摘要认证的握手机制

如下图:

摘要计算

摘要认证会话

客户端响应对保护空间的 WWW-Authenticate 质询时,会启动一个此保护空间的认证会话(与受访问服务器的标准根结合在一起的域就定义了一个"保护空间")。
在客户端收到另一条来自保护空间的任意一台服务器的 www-Authenticate 质询之前,认证会话会一直持续。客户端应该记住用户名,密码,随机数,随机数计数以及一些与认证会话有关的隐晦值,以便将来在此保护空间中构建请求的 Authorization 首部时使用。
随机数过期时,即便老的Authorization 首部所包含的随机数不再新鲜了,服务器也可以选择接受其中的信息。服务器也可以返回一个带有新随机数的 401 响应,让那个客户端重试这条请求;指定这个响应为 stale = true,表示服务器在告知客户端用新的随机数来重试,而不再重新提示输入新的用户名和密码了。

摘要认证首部

基本认证和摘要认证协议都包含了 www-Authenticate 首部承载的授权质询,Authenticate首部承载的授权响应。摘要认证还添加了可选的 Authorization-Info 首部,这个首部是在成功认证之后发送的,用于实现三步握手机制,并传送下一个随机数。

应该考虑的实际问题

多重质询

服务器可以对某个资源发起多重质询。比如,如果服务器步了解客户端的能力,就可以既提供基本认证质询,又提供摘要认证质询。客户端面对多重质询时,必须以它所支持的最强的质询机制来应答。
质询自身可能会包含由逗号分隔的认证参数列表。如果 www-Authenticate 或 Proxy-Authenticate 首部包含了多个质询,或者提供了多个 www-Authenticate 首部,用户 Agent代理在解析 www-Authenticate或 Proxy-Authenticate首部字段值时就要特别小心。注意,很多浏览器只支持基本认证,要求这是提交给它的第一种认证机制。
在提供了认证选项范围的情况下,安全问题上就会存在明显的"最薄弱环节"。只有当基本认证时最低可接受认证方式时服务器才应该包含它,而且管理员还应该警告用户,即使运行了不同层次安全措施,系统间使用相同密码也存在一定危险性。

安全性考虑

首部篡改

为了提供一个简单明了防首部篡改系统,要么就得进行端到端的加密,要么就得对首部进行数字签名---最好是两者的结合!摘要认证的重点在于提供一种防篡改认证机制,但并不一定要将这种保护扩展到数据上去。具有一定保护级别的首部只有 www-Authenticate 和 Authorization。

上一篇 下一篇

猜你喜欢

热点阅读