日期:2023-01-24 阅读量:0次 所属栏目:计算机应用
0 引言
邻居发现协议(Neighbor Discovery Protocol,NDP)[1]是IPv6的一个关键协议,它组合了IPv4中的地址解析协议(Address Resolution Protocol,ARP)及Internet控制报文协议(Internet Control Message Protocol,ICMP)中的路由器发现和重定向等协议及功能,并对它们作了改进,解决了同一链路上不同节点之间的信息交互问题。由于其并没有针对链路内的安全威胁给出任何的安全机制,攻击者利用NDP存在的安全漏洞,可以对IPv6子网实施拒绝服务(Denial of Service,DoS)攻击和重定向攻击[2-3]。
IETF标准规定由IPSec AH来保证NDP中数据包的可靠性和完整性,但是并未给出使用方案。安全邻居发现协议[4]通过引入加密生成地址(Cryptographically Generated Address,CGA)[5]和签名机制来保证NDP的安全,但其产生的计算开销过大,并没有得到广泛使用。
邻居缓存(Neighbor Cache,NC)是一组有关单个邻居的信息,它包括的信息有邻居IP地址与邻居链路层地址映射、邻居可达性状态等。邻居缓存的更新是通过ND报文的交互实现的,而NDP在设计时并未对报文进行有效保护,因此邻居缓存易遭受欺骗攻击和DoS攻击等。文献[6]提出了启发式类型、显式类型和启发式与显式相结合类型三种邻居缓存保护方法,但其并没有给出具体的实施方案,且其工作流程过于复杂,协议修改较大;文献[7]则提出了一种反向检测方法,虽然其一定程度上降低了邻居缓存受攻击的可能,由于反向探测报文没有任何保护机制,攻击者仍然可以发送大量的虚假应答报文,进而轻易绕过反向检测机制;文献[8]描述了NDP存在的一些操作问题,并给出了部分管理员的操作规范以缓解存在的问题,但是并未从协议实现上对邻居缓存进行保护。本文提出一种改进的反向检测方法(Reversed Detection Plus,RD+),当节点收到NDP报文时,向源节点发送RD+探测报文,同时引入时间戳、报文序号和队列管理等保护机制,确保邻居缓存的正确更新。最后,将其与其他邻居缓存保护方法进行分析比较,结果表明该方法可以有效抵抗邻居缓存欺骗攻击和DoS攻击,并且资源消耗少、协议兼容性强。
1 IPv6邻居缓存安全威胁分析
邻居发现协议的模型最初是在基于完全可信网络的前提下提出的,节点用一系列Cache缓存了通过ND协议获取的邻节点的相关信息和网络的相关参数,其中邻居缓存存储了邻居IPMAC映射及可达性状态等关键信息。
1.1 邻居缓存欺骗攻击
邻居缓存欺骗攻击指的是攻击者向目标节点发送包含虚假信息或错误信息的报文,使目标节点邻居缓存存储虚假或错误信息,进而破坏目标节点的通信。
由于邻居缓存默认总是用新的信息来覆盖旧的,与IPv4网络中的ARP缓存攻击类似,攻击者通过发送包含虚假信息的报文,可以对目标节点实施缓存欺骗攻击等。RFC 2461规定,节点在收到发向自己的NS/NA包时,若缓存中没有对应源IP的记录或该记录中的MAC地址与NS/NA报文中的源MAC地址字段相异时,节点将根据NS/NA报文更新缓存中该IP和MAC的映射记录,并将其状态设置为stale。这样,攻击节点向目标节点发送使用伪造的链路层地址的NS/NA报文,以致改变目标节点数据报的发送路径,但是,这种攻击时间受限,攻击者必须一直对虚假的链路层地址作出响应以维持攻击效果。
类似地,攻击者也可以向目标节点发送包含虚假信息的RS/RA/Redirect报文,实现对目标节点邻居缓存的欺骗攻击。
1.2 邻居缓存DoS攻击
IPv6中节点在进行地址解析时,需要在NC中创建一个待解析邻居节点的缓存表项,并将其状态设置为incomplete。由于IPv6默认子网前缀长度为64位,即同一链路上可以有多达264个节点,而节点邻居缓存容量远小于264,那么,攻击者可以在短时间内发送大量包含虚假信息的NS或NA报文,使得目标节点的资源耗尽,邻居缓存充满虚假信息,从而对目标节点或目标网络实施DoS攻击。
2 改进反向探测的IPv6邻居缓存保护方法
邻居缓存作为存储IPMAC映射关系的关键载体,只有保证节点接收到ND报文时能够正确更新邻居缓存,才能确保数据传输的安全可靠。对此,本文提出了一种改进的反向探测邻居缓存保护方法。
2.2 基本结构
节点队列和RD+报文是该方法的核心内容,其中:节点队列结构存储了IPMAC映射及其他缓存更新条件;RD+报文在现有协议的基础上,添加了一个RD+ Option报文选项,可以很好地兼容现有协议。
2.2.1 节点队列结构
为了确保节点能够正确更新邻居缓存,每个节点建立一个ND报文信息存储队列(如图3所示)。
3 抗DoS攻击的队列管理算法
从2.1节可知,目标节点的队列是否安全直接影响RD+方法能否保护邻居缓存的安全更新,例如,攻击者不断发送大量虚假NS/NA报文,使目标节点一直处于满队列状态且队列中充满虚假信息,那么目标节点同样无法更新其邻居缓存,攻击者仍然可以达到对目标节点进行DoS攻击的目的,因此,队列管理是保证RD+方法稳定正确工作的关键之一。
3.1 队列管理技术分析
目前队列管理主要包括被动队列管理(Passive Queue Management, PQM)和主动队列管理(Active Queue Management, AQM)[9-11]。PQM在缓冲区溢出时才丢包,而AQM根据缓冲区队列长度等信息以一定的概率丢包。
目前应用最广泛的PQM是弃尾(Drop Tail)队列管理,即随着队列缓冲区的溢出而丢包,其丢包是被动的,如果队列缓冲区不满,不会主动丢弃数据包。弃尾队列管理往往会保持较高的队列占用,队列满时,后来的数据包被全部丢弃。除了弃尾机制,另外两种PQM机制是随机丢弃(Random Drop)和弃头(Drop Front)机制。当队列满时,前者从队列中随机找出一个包丢弃以让新来的包进入队列;后者从队列头部丢包,以便让新包进入队列。但这两种机制都存在满队列和链路利用率低等问题[12-13]。
5 结语
本文主要针对IPv6邻居发现协议中邻居缓存容易遭受欺骗攻击和DoS攻击的问题,提出一种基于改进反向探测的邻居缓存保护方法。同时,本文也完成了该方法的报文结构、数据结构及基于时间戳的队列管理算法设计,并对该方法的性能、功能及其优势进行了测试和对比分析。实验结果表明,该方法不仅能够有效保护邻居缓存,而且其资源消耗比HE方法和SEND协议都少。本文
方法尚存在一些不足之处:本文设计的REDT算法虽然能够有效提高邻居缓存更新准确率,但是尚不能保证准确率达到100%。在今后的工作中将致力于进一步研究队列管理算法,根据不同网络环境选择算法的合适参数,使得缓存更新准确率进一步提高。
参考文献:
.Geneva: IETF, 2007.
[2]HUANG M. The IPv6 technology research of the nextgeneration Internet [D]. Nanjing: Nanjing University of Posts and Telecommunications, 2013. (黄明超.下一代互联网IPv6技术的研究[D].南京:南京邮电大学,2013.)
[3]ZHAO Y. Research of security in IPv6 transition phase [D]. Beijing: Beijing Jiaotong University, 2013. (赵延. IPv6过渡阶段中的安全研究[D].北京:北京交通大学, 2013.)
[4]ARKKO J, ERICSSON ED, KEMPF J, et al. RFC 3971, Secure Neighbor Discovery (SEND) [S].Geneva: IETF, 2005.
[5]AURA T. RFC 3972, Cryptographically Generated Address (CGA) [S]. Geneva: IETF, 2005.
[6]KITAMURA H, ATA S, MURATA M. IPv6 neighbor cache update [EB/OL]. (2009-10-19) [2013-05-12]. http://.
[7]JIANG S, CHEN X, SONG X. Neighbor cache protection in neighbor discovery protocol [EB/OL]. (2010-03-02) [2013-04-15]. http://html/draftjiangv6opsncprotection01.
. Geneva: IETF, 2012.
.长春:吉林大学,2012.)
[10]LIU X. Active queue management algorithm research based on fuzzy model [D]. Nanjing: Nanjing University of Science and Technology, 2013. (刘雪梅.基于模糊控制理论的主动队列管理算法研究[D].南京:南京理工大学,2013.)
本文由第一论文网选自《计算机应用》2014年第4期,版权归原作者和期刊所有,如有异议请联系,本站将及时处理。(lunwen. 1kejian.C O M)
本文链接:http://www.qk112.com/lwfw/jsjlw/jisuanjiyingyong/243330.html