PPP协议:关于在点到点链路上进行多协议包传送的建议( 三 )


代码
2 Authenticate-Ack;
3 Authenticate-Nak
标识符
标识符域是一个字节,用于匹配请求和回应 。此域必须从引起这次回应的
Authenticate-Request包标识符域复制过来的 。
Msg-Length
Msg-Length域是一个字节,代表Message域的长度 。
Message
Message域是零个或者多个字节,并且它的内容依靠于实现者 。它是可读的,不得影响
协议的操作 。建议在Message中包含可显示的ASCII字符(32-126) 。扩展字符集的机
制是进一步研究的主题 。
3Challenge-HandshakeAuthenticationProtocol
CHAP用于使用3次握手周期性的验证对端 。在链路建立初始化时这样做,也可以在链
路建立后任何时间重复验证 。
在链路建立完成后,验证者向对端发送一个“challenge”信息 。对端使用一个
“one-way-hash”函数计算出的值响应这个信息 。验证者使用自己计算的hash值校验响应值 。
假如两个值匹配,则验证是承认得,否则连接应该终止 。
CHAP通过使用递增的标识符和可变得挑战值提供了防止回送攻击的保护 。使用重复挑
战目的是任一个攻击的暴露时间 。验证者控制着挑战的频率和时间 。这种验证方法依靠只有
验证者和对端知道的秘密(secret) 。这个秘密(secret)不在链路上传播 。这种方法最可能用
的地方是相同的秘密轻易访问链路的两端 。
实现注重:CHAP要求秘密是明文形式的 。为了避免在网络的其他链路上发送秘密,建
议在中心服务器上检查challenge和respone值,而不是在每一个网络访问服务器上检查 。另
外,秘密应该以可逆转的加密形式发送到服务器上 。
CHAP算法要求秘密的长度必须至少一个字节 。秘密至少应该和选择好的密码一样大小
和不可猜 。比较好的是秘密应该至少是选择的哈希算法的哈希值的长度(对于MD5是16个
字节) 。这样保证了足够大的范围使得秘密提供了防止穷尽搜索攻击的保护措施 。
选择one-way哈希算法使得要想从已知的challenge和response值得出秘密的计算是不可
行的 。
Challenge值应该符合两个标准:唯一性和不可猜测性 。每一个challenge值应该是唯一
的,因为使用与相同秘密联系的challenge执的副本可以让攻击者利用前一个截获得响应包响
应 。由于希望可以使用相同的秘密在不同区域中验证服务器,challenge应该具有全局和暂时
的唯一性 。每一个challenge值也应该是不可猜测的,否则攻击者欺骗对端响应一个可猜测的
未来challenge,然后用这个响应伪装成对端欺骗验证者 。尽管象CHAP这样的协议不能够防
止实时的窃听攻击,但是使用唯一的和不可猜测的challenge可以防止一定范围的能动攻击 。
关于唯一性来源和产生分歧概率的讨论包含在Magic-Number配置选项中 。
3.1配置选项格式
下面是Challenge-Handshake验证协议使用的Authentication-Protocol配置选项格式的总
结 。各个域由左到右传输 。
0123
01234567890123456789012345678901
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeLengthAuthentication-Protocol
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Algorithm
- - - - - - - -
类型
3
长度
5
Authentication-Protocol
c223Challenge-ProtocolAuthenticationProtocol
算法
算法域是一个字节,代表所使用的one-way哈希算法 。CHAP算法域的最新值在最近的
“AssignedNumbers”RFC[2]中有具体说明 。当前的值分配如下:
0-4 unused(保留)
5 MD5[3]
3.2包格式

推荐阅读