摘要:ospf是一种基于链路状态的内部网关路由协议。本文分析了 ospf 路由协议存在的漏洞以及防范措施,重点探讨了基于 lsu 的数字签名技术。
关键词:ospf;漏洞;数字签名
一 ospf 协议概述
ospf(open shortest path first)作为目前互联网络应用最为广泛的内部网关路由协议,主要提供自治系统(autonomous system,as)内的动态选择路由。它是一种典型的链路状态协议,不同于距离向量协议(如 rip 等)。ospf 主要有以下特性:
适应范围广——支持各种规模的网络,最大可支持数百台路由器。
快速收敛——网络拓扑结构发生变化后立刻发送更新报文,使这一变化在自治系统中同步。
无自环——由于 ospf 根据收集到的链路状态用 spf 算法计算路由,从算法本身保证了不会生成自环路由。
区域划分——允许将自治系统划分成区域,区域间传送的路由信息被进一步抽象,从而减少了占用的网络带宽。
等价路由——支持到同一目的地的多条等价路由。
二ospf 的漏洞分析
2.1 存在的漏洞
ospf 路由协议虽然采取了多种安全机制来保护其不受侵犯,但是这些安全机制并非能让 ospf 路由协议成为一个绝对安全的协议,它还存在相当多的漏洞。
1、空验证和简单口令验证的安全漏洞分析
当验证类型字段置为 0 时,即表示该报文为空验证。空验证时验证字段的值可为任意值,路由器在发送和接收该报文时不做任何额外的身份验证处理,接收方只要校验和无误便接收该 ospf 报文并将其中的 lsa 加入到链路状态数据库中。这一验证类型可以认为是没有任何的安全性的。当使用简单口令验证时,验证类型字段置为 1,64 位的验证字段中存放的是简单口令验证用的口令。简单口令验证的报文是以明文的形式传输的,这其中也包括口令。接收方只要确定校验和正确且验证字段的口令等于预先约定的值即可接收。这一方案对于在传输过程中的窃听者,没有任何的安全性可言。窃听者可以很轻松地监听到口令,然后伪造 ospf 报文并发送出去,扰乱正常的路由秩序。
2、加密验证的漏洞
加密验证可预防外部窃听、重播、修改路由消息及阻塞协议报文传输等攻击。但是外部的攻击者还可以通过发送恶意报文来耗尽路由器的资源,使得路由器由于一直应付这样的恶意攻击而陷入一种更加脆弱的境界。
3、协议中的其它威胁
(1)最大年龄攻击:
在 ospf 路由协议中,由于 lsa 的 age 字段在经过任何一个路由器的时候都需要修改其值,因此它一般不被验证字段的 md5 摘要所覆盖。攻击者可轻松利用该漏洞在lsa 的传播过程中将其截获并修改 lsa 的 age 为 maxage。一旦一个 lsa 的 age 字段被修改为 maxage,就可引起路由器链路状态数据库中 lsa 的早熟,lsdb 过早的将lsa 剔除导致 lsdb 中路由信息的缺失。
(2)针对序列号的攻击:
由于 ospf 的 lsa 是采用泛洪的方式传播的,因此在泛洪途中区域中的入侵者或错误路由器都可以对 lsa 信息发起攻击,篡改其内容。针对序列号的攻击有两种,序列号加一攻击和最大序列号攻击。
(3)分块网络攻击:
如果使虚假 lsa 不被泛洪给该 lsa 的合法生成者,则该 lsa 的合法生成者就不会启动其自反击机制来纠正该 lsa。假设有一个被入侵的路由器所处的位置可以将区域分为两个子区域,则攻击者就可以只向其中的一个子区域以另一个子区域中的某路由器的身份注入虚假 lsa,而不向另一个子区域注入 lsa,这显然就可以达到欺骗的效果。
2.2漏洞防范策略
1、针对空验证和简单口令验证漏洞的防范策略
采用密码验证类型来解决对 ospf 报文任意修改、甚至生成新报文的漏洞,并且验证类型时,每个 ospf 路由器发出的报文都包含 32 位无符号非递减加密序列号,在所有邻居路由器中都存放着当前该路由器的最新加密序列号,并要求接收到的 ospf 报文的加密序列号必须大于或等于存储在路由器中的加密序列号。
2、针对密码验证漏洞的防范策略
密码验证虽然是三种验证方案中最为安全的一种方案,但是它还远没有达到牢不可破的程度。密码验证方案中,lsu 报文的头部仍然是以明文的形式在网络中传播,这给恶意攻击者以很大的机会篡改 lsu 报文。另外,采用 md5 算法并非绝对安全,中国山东大学的科学家已经破解出 md5 算法。再者,维护、管理密钥的成本较高。本文建议在此验证类型的基础上,结合数字签名保护机制来确保 ospf 路由协议的安全。这样的防护可以有效的防备大部分的威胁。本文在后面将提出一种基于 lsu 的报文数字签名方案,可以实现上述功能。
三 基于 lsu 的数字签名 ospf
基于 lsu 的数字签名方案与 ospf 路由协议报文的加密验证机制的有机结合,有效防止了一系列的威胁、攻击。具体分析如下:
1.内部的恶意路由器篡改 lsa 链路状态信息。由于内部的恶意路由器掌握了加密验证所需的密钥,因此它可以毫不费力的修改 lsa 数据,然后重新生成一个 md5 摘要放入验证字段。但是采用上述的数字签名方案后,除生成该 lsu 的源路由器外,其它路由器一旦修改 lsu 的内容都将在接收方路由器被验证出来,这很好的保证了路由信息不被外来入侵者尤其是内部错误路由器的篡改。这主要得益于数字签名的不可否认性。这同样解决了困扰 ospf 路由协议安全的序列号攻击,包括序列号加一攻击和最大序列号攻击,原理与防止篡改内容是相同的。
2.最大程度的防止了最大年龄攻击:在标准 ospf 中,maxage 字段是 lsa 中最容易受到攻击的地方,这是由于 maxage 的特殊性而造成的。在签名的 lsu 中添加了 is maxage 字段用于判断该 lsu 中是否携带了最大年龄的 lsa。本文提出的这种方案有效地阻止了入侵者对年龄字段的修改,一旦年龄字段修改为 maxage,则路由器在接收该 lsu 报文后的验证过程中通过比对消息摘要时可发现篡改,从而抛弃该 lsu。这在一定程度上阻止了针对 lsa 的最大年龄攻击。但是,有些入侵者将 lsa 的 age 字段修改为一个很接近maxage 的值,这种情况本方案将很难对此进行判别并作出应对,目前来看也没有有效的应对措施。这种攻击方式从一定程度上加快了路由器更新 lsa 的速度,消耗了一定的资源,却无特别大的威胁,应该在可以容忍的范围之内。
基于 lsu 的数字签名 ospf 机制的效率可以从计算时间、网络带宽和存储三方面来分析。
时间:数字签名保护的 ospf 协议其核心内容就是对一定的内容进行数字签名。这一过程包括求不定长度的数据的 hash 序列、使用不对称密钥加解密数据。实验在一台amd duron 750mhz 256m memory 配置的 pc 仿真的路由器上进行,系统为 cygwin 仿真的 unix 操作系统。采用 rsaref2 库算法得到如下的结果:对于一个 16 比特的数据,使用 512-bit 的 key 产生和验证一个数字签名数据需要耗时 0.47 秒和 0.023 秒。事实上本文采用的 hash 函数计算出的散列值长度为 128 比特,也就是说系统在产生和验证该数字签名时需要耗费的时间可能还要多。
网络带宽:数字签名保护的 ospf 协议相对于标准 ospf,其多占用的网络带宽主要体现在以下几个方面:1、lsu 中数字签名保护数据使得 lsu 的长度增大,直接增大了网络中数据的传输量。2、数字签名体制中 key 的分发与管理,这包括 pklsa 的传播以及相应的应答等。这些额外的网络带宽负载与网络的容量相比都是极其微小的。
存储:数字签名的 ospf路由器都需要存放自身的私钥和区域中其它路由器的公钥,这一部分存储空间大小一定程度上决定于 area 的大小。而对于数字签名的 lsu 或 lsa,在接受 lsu 报文后通过验证后会将这些报文中的 lsa 存入链路状态数据库之中,这与普通的 ospf 路由器无异,不会将额外的签名信息保存下来占用空间。而对于那些不能通过验证的 lsa 则抛弃不用。
参考文献
[1]钟廷龙,李鑫,郭云飞. ospf 路由协议安全性分析[j]. 微计算机信息, 2005
[2] 杨静, ospf 路由协议的安全分析及其漏洞分析,山东大学学报,2003
[3] 谢蒂,杨静. 一种低代价、可靠的 ospf 验证机制[j] 计算机应用,2003
本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/245274.html