本帖最后由 小乔 于 2011-8-6 11:21 编辑
刚刚学习完OSPF MD5的验证过程,对其验证过程很不明白,希望高手给予解惑,我在网上搜索到一篇文章如下:
MD5认证。认证类型为2,OSPF采用的一种加密的身份认证机制。在OSPF报文头中,用于身份验证的域包括:key ID、MD5加密后认证信息长度(规定16字节)、加密序列号。实际16字节加密后的信息在整个IP报文的最后,CRC校验码之前。key ID标识了共享密钥的散列函数,建立邻居关系的两个设备来说key ID必需相同。加密序列号是一个递增整数,递增的幅度不固定,只要后一个协议包的序列号肯定不能比前一个小就行了,一般以设备启动时间秒数为序列号值。16字节的加密信息产生过程如下: 第一步、在OSPF分组报文的最后(IP报文CRC之前)写入16字节的共享密钥。 第二步、MD5散列函数的构造,将第一步生成的消息,将其规范为比512字节小8个字节的信息(如果不够可以填充),然后添加八个字节(内容为填充前实际报文长度),这样第二步构成的散列函数刚好是512字节的整数倍。 第三步、用MD5算法对第二步中的散列函数计算其散列值,产生16字节的消息摘要。 第四步、用第三步中产生的16字节散列值替换第一步已经写入到OSPF分组报文中的公共密钥,完成加密过程。 从第一步到第四步过程中没有计算该16字节信息的OSPF校验和。 以上文章我看了好些遍还是没有弄明白它的实现过程,我主要关心它的实现过程,debug信息好像看不到,希望高手针对上面的过程给予简单易明的讲解,或者请提供相关更好的资料,以便参考。谢谢!! |