摘要认证

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.存储密码

如果摘要认证密码文件被入侵了,攻击者马上就能使用域中所有文件,不需要再进行解码了。


以上是关于摘要认证的主要内容,如果未能解决你的问题,请参考以下文章

图解HTTP第六章:HTTP首部

简述 HTTP 首部字段.

HTTP基础知识

HTTP首部都有哪些字段?

实体和编码

HTTP 报文