路由协议的加密方法 


目前常用的网络路由协议中唯 OSPF 使用最为广泛,但除了 OSPF 协议以外还有其他协议同样被使用。


本文将主要研究这些路由协议中的认证加密问题,在路由认证的过程中所配置的密码到底是否用来加密。在路由协议工作过程中这些报文是如何交互的。


首先,所有的路由协议中所谓的加密都不是真正意义上的加密,路由协议工作过程中交互的所有报文也都不是加密的,所有的路由协议都是这样。


那在命令行配置的密码到底有什么作用?


以最常见的路由协议 以 OSPF 为例,OSPF 的认证方式共分为三级,0 级是无认证;1 级最明文认证;2 级是 MD5 认证,也就是常说的“加密”认证。


0 级和 1 级咱先不研究,先看看 2级的 MD5 认证。MD5 其实并不是加密算法,它只是一种算法,一种散列函数,它本身没有加密功能。


先了解下 MD5:


MD5 算法可以把一个不管数据有多大的数,通过 MD5 算法计算可以得出一个散列值,这个散列值通常称为哈稀值。哈稀值的长度是固定为 128bit,以 16 进制数的方式显示。


这一串哈稀值可以说是全球唯一的,只有跟这个原始数据一模一样的数据才能得到一样的哈稀值,如果将这个原始数据做一点点改动,哪怕加一个空格或多一个字符,再次使用 MD5 计算后得出的哈稀值都会完全不一样。我们称这一特性为雪崩效应,其实路由协议就是利用了这一特性,通过雪崩效应来验证路由报文的合法性。


现在来看看两个路由器之间交互的报文是如何通过 MD5 来进行认证的:



如上图,路由信息的安全交互过程如下:


1、两台路由器配置密码 HELY。


2、当路由器发送数据给邻居时,拿报文与本地配置的密码一起做哈稀运算,得出哈稀值后将其与原始数据报文一起发送给对方路由器。注意,原始报文是没有做过任何改动的,也没有所谓的“加密”处理。


3、 对方路由器接收到报文后将原始报文拿出来与本地配置的 KEY 一起做哈稀运算得出哈稀值,然后将些哈稀值与接收到的哈稀值做对比,若两个值相同,则代表报文合法,将报文收下,否则丢弃。


路由协议的加密过程大致就是如此,中间并没有涉及到加密,因此应该称为是验证。


除OSPF协议外,其他的路由协议都是如此,只要是使用 MD5 验证的方法都一模一样,没有特别。


唯一不同的只是 MD5 较验后得出的哈稀值是否加入到原始的数据报文中,如 BGP 协议中,MD5 较验值是被放在 TCP 的选项值内的,其他协议的 MD5 较验值则是放在了数据部分。


——END——


 保offer班