摘要认证
Posted 空方块
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了摘要认证相关的知识,希望对你有一定的参考价值。
1.摘要认证的改进
1.1.用摘要保护密码
摘要认证遵循“绝不通过网络发送密码”。客户端发送一个“指纹”或者密码的“摘要”,是密码的不可逆扰码。
1.2.单向摘要
z还要是对信息主体的浓缩。摘要是一个单向函数,主要是将无线个输入值转换为有限的浓缩输出值。
常见的摘要函数MD5,会将任意长度的字节序列转换为一个128位二级制的摘要。2^128种输出值。通常会被写成32位十六进制的字符。
1.3.用随机数防止重放攻击
摘要前加入随机数,会使数字摘要每次都不一样,防止重放。
随机可以通过WWW-Authenticate质询中从服务器传送给客户端。
1.4.摘要认证的握手机制
2.摘要的计算
2.1.摘要算法的输入数据
摘要使用3个组件计算出来:
#1:单向三列函数H(d)和摘要KD(s,d)组成一对函数,其中s表示密码,d表示数据;
#2:一个包含安全信息的数据块,包括密码,称A1;
#3:一个包含了请求报文中非保密属性的数据块,称A2。
H、KD处理A1,A2,产生摘要。
2.2.算法H(d)和KD(s,d)
摘要认证支持各种摘要算法的选择。RFC 2617建议MD5和MD5-sess(“sess”表示会话),如果没有指定其他算法,默认MD5。
2.3.与安全性相关的数据A1
A1的数据块是密码和受保护信息的产物,包含有用户名、密码、保护域和随机数等内容。
2.4.与报文相关的数据A2
A2表示与报文自身有关的信息,如URL、请求方法和报文实体的主体部分,有助于防止方法、资源或报文被篡改。
2.5.预授权
一旦用户与某站点进行了认证,浏览器通常会为后继对那个URL的请求发送正确的Authorization首部。
通过以下方式,客户端无需等待新的WWW-Authenticate质询,就可以获得正确的随机数:
#1:服务器预先在Authentication-Info成功首部中发送下一个随机数;
#2:服务器允许在小一段时间内使用同一个随机数;
#3:客户端和服务器使用同步的、可预测的随机数生成算法。
2.6.随机数的选择
RFC 2617建议采用这个遐想的随机数公式:
BASE64(time-stamp H(time-stamp ":" ETag ":" private-key))
3.安全性考虑
3.1.首部篡改
摘要认证的重点在于提供防篡改的认证机制,但并不一定要将这种保护扩展到数据上去。
具有一定保护级别的首部只有WWW-Authenticate和Authorization。
3.2.重放攻击
在当前上下文中,重放攻击指有人将从某个事务中窃取的认证证书用于另一个事务。
解决方法:使用随机数
3.3.词典攻击
典型的密码猜测型攻击方式。恶意用户对某个事务进行窃听,并对随机数/响应对使用标准的密码猜测程序。所以密码最好有一个过期策略。
3.4.恶意代理攻击和中间人攻击
随着重定向技术和拦截代理的出现,用户设置都意识不到他的请求穿过了某个代理。如果这些代理被恶意或容易被入侵了,就会使客户端置于中间人攻击之下。
解决:SSL。
3.5.选择明文攻击
使用摘要认证的客户端会用服务器提供的随机数来生成响应。
#1:预先计算的词典攻击
#2:批量暴力型攻击
3.6.存储密码
如果摘要认证密码文件被入侵了,攻击者马上就能使用域中所有文件,不需要再进行解码了。
以上是关于摘要认证的主要内容,如果未能解决你的问题,请参考以下文章