邻居发现协议的NDP?ESP安全增强方案
   来源:现代电子技术     2021年01月14日 19:13

申普兵等

摘 要: 基于可信网络提出的NDP协议在现实中受到多种安全威胁,为了保护NDP协议的安全,提出了一种NDP?ESP模型安全增强方案,不仅可有效保护NDP协议的安全,还可以实现节点之间的保密通信,增强了下一代网络的安全性。

关键字: 邻居发现协议; NDP?ESP模型; 安全增强方案; 组播密钥管理

中图分类号: TN915.08?34; TP3 文献标识码: A 文章编号: 1004?373X(2014)11?0076?04

Abstract: NDP (neighbor discovery protocol) created for trustworthy networks is threatened by a variety of attacks in network. A scheme of NDP?ESP model to enhance the security of NDP is proposed, which not only enhance the security of NDP, but also realize the privacy communication between nodes. Anyway, it enhanced the security of next generation networks

Keywords: neighbor discovery protocol; NDP?ESP model; scheme of security enhancement; multicast key management

0 引 言

邻居发现协议(Neighbor Discovery Protocol, NDP)是IPV6协议中的一个基础协议,它整合了IPV4协议中的ARP、ICMP和路由广播RA等协议,可以实现节点的地址解析、路由发现、重定向、无状态地址自动配置、邻居不可达地址检测及重复地址检测等功能[1]。由于NDP协议是基于可信网络提出的,没有对NDP报文采取保护措施,在现实的网络中面临很多安全威胁,如欺骗攻击、中间人攻击,重放攻击等。为解决这个问题,IETF(Internet Engineering Task Force)正式提出的方案是SEND方案。由于SEND协议采用CGA[2]加密和公钥密码技术,发送和接收SEND报文需要大量的计算,给网络和节点造成很大负担,容易形成拒绝服务攻击,并且SEND方案存在不能防御假冒MAC攻击等缺陷,不利于方案的推广。也可以采用PKI证书方案[3],但难以在网络中确定一个CA,这些都不利于方案的推广。本文提出了一种在NDP报文选项中增加源MAC地址选项和IP地址选项,利用ESP协议来保护,并根据实际网络中的拓扑结构灵活采用组播密钥管理协议的解决方案,极大提高了NDP协议的安全性和网络信息传输的安全性。

1 NDP协议及漏洞的分析

1.1 NDP协议

1.1.1 NDP报文

NDP协议是通过NDP报文的交互来实现功能的。NDP报文是ICMPV6报文的一部分,目前共定义了5种ICMPV6报文,分别是:RS(代码133)/RA(代码134)报文、NS(代码135)/NA(代码136)报文、重定向报文(代码137)。

RS/RA报文功能:路由器周期性地发送组播路由器宣告(RA)报文,宣告它的存在以及配置的链路和网络参数,或者对路由器请求(RS)报文做出响应。路由器发现可以用来定位信任的路由器,也可以用来获得与地址自动配置相关的前缀和参数。NS/NA报文功能:通过交互邻居请求(NS)报文和邻居宣告(NA)报文来解析IPV6地址为链路层地址(MAC地址),可以实现邻居不可达检测和重复地址检测功能;重定向报文功能:将主机重定向到一个更好的下一跳路由器,或向主机通告目的节点实际上就是邻居节点。

1.1.2 NDP协议的数据结构

数据结构就是IPv6节点需要为每一个接口维护的各种信息表格。一般主机需要维护邻居缓存表、目的地缓存表、前缀列表、默认路由器列表等4个缓存表。NDP报文交互的目的就是改变节点缓存表的信息,从而实现NDP协议功能。

邻居缓存表:邻居缓存表与IPV4中的ARP缓存表类似,负责维护最近流量所送往邻居的信息列表。缓存表中包含了IPV6单播地址及其相对应的数据链路层地址(MAC),设备通过收到的邻居宣告报文来维护该缓存表。

目的地缓存表:与邻居缓存表相似,目的缓存表维护的是流量最近被发送的目的地列表,包括其他链路或其他网络上的目的地。此时的表项是下一跳路由器的链路层地址,目的地缓存表可以是邻居缓存表的子集[4]。

前缀列表:由路由器通告报文携带,定义了可以直接到达的邻居的一个IP地址范围。

默认路由器列表:包含链路上相对应的路由器的IP地址,而且只有那些已知可达的路由器才有可能被选作默认路由器。

1.2 NDP协议漏洞的分析

节点在通信过程中,首先通过查询邻居缓存、目的地缓存、前缀列表、默认路由器列表等缓存表来进行具体的操作,如下一跳确定、地址解析、邻居不可达检测和地址重复检测等,因此,缓存中的信息对节点间的相互通信具有重要的作用。由于NDP功能发挥是通过节点之间的ICMPV6报文交互来完成的,接收节点在收到NDP报文后,提取信息参数,立即对相关缓存进行更新,如更新缓存中的邻居信息,配置所在网络中的网络参数等[5]。

ICMPV6报文要通过网络传递到相应的节点,如果报文通过的网络是可信的,就不会产生安全问题,如果所在网络不可信,就可能产生很多危害。如果NDP报文受到截获,可能造成节点信息泄漏或产生中间人攻击;如果NDP报文在传输中受到非法篡改,可能使接收节点更新错误的网络参数,配置错误的邻居信息,造成拒绝服务攻击或欺骗攻击;攻击者伪造非法的NDP报文发给节点,导致接收节点更新非法的缓存参数和邻居信息,也可造成欺骗攻击或拒绝服务攻击,这些都是由于NDP协议没有保护造成的。

2 NDP协议安全增强方案

2.1 安全增强方案

在IPV6网络中,根据节点的邻居缓存更新机制,之所以存在NDP协议漏洞的攻击,主要原因是NDP报文没有进行认证以及源IP地址和MAC地址没有绑定。解决的方法是对数据包源进行认证且对IP地址和MAC地址进行绑定认证,使之不能被修改。

2.1.1 ESP的保护机制

IETF规定,在IPV6协议中必须支持IPSEC协议。利用IPSEC?ESP对数据包进行加密保护,安全关联中的SPI可以实现数据源的认证;如果在NDP报文中加入IP地址和MAC地址,可以实现IP地址和MAC地址同时加密及认证;利用散列函数计算的认证数据可以检验数据完整性;它的序列号计数器可以防止重放攻击;在保护NDP协议的同时,还可对网络通信数据进行加密保护。

2.1.2 IP和MAC地址的绑定

由于ESP加密头只保护数据包负载,不保护IP头和各种扩展头,这就给攻击者提供了可乘之机。根据NDP协议工作机制,对其有影响的是源IP地址和源MAC地址,如果能对源IP地址和MAC地址进行保护,则能避免针对IP地址和MAC地址的各种攻击。

通过观察已经定义的5种NDP报文,共同点之一是都具有选项功能。如果在NDP数据包的选项中增加源MAC地址选项和源IP地址选项,再利用ESP进行加密和认证处理,就可以实现对IP地址和MAC地址的有效保护。在接收端,先进行ESP解密处理,然后用负载中的IP地址、MAC地址和数据包头地址比对,相同则进行缓存更新,不同则丢弃。

2.1.3 组播密钥管理

由于RS/RA报文、NS报文是组播报文,所以在进行安全关联协商时,点对点的IKE已经不能满足邻居发现协议中组播报文加密时组安全关联协商的需要。需对IKE协议进行改进,形成针对多点的组播密钥协商协议GIKE,实现组播密钥分发及管理。

2.2 NDP?ESP方案模型

由于ESP协议在加密时,只对数据包内容进行保护,ICMPV6报文数据作为IPV6数据包的负载,可受到ESP加密保护。只要把IP地址和MAC地址放入NDP数据中,就可以实现IP地址和MAC地址的绑定及保护。

2.2.1 定义2种新选项

根据IETF的定义,所有NDP的ICMPV6消息都有相同的选项值格式,即采用(Type?Length?Value,TLV)格式[6],如图1所示。

类型(Type):表示NDP协议选项的类型;长度(Length):表示整个选项的长度,不能为0,必须是8位组的整数倍,节点必须丢弃长度为0的NDP报文;值(Value):可变长度,表示选项的内容。

目前,IETF已定义的NDP报文选项有8种[7]。为了达到IP地址和MAC地址同时认证的目的,定义另外2种选项MAC地址选项和IP地址选项,如图2,图3所示。

其中,类型:9;填充长度:在MAC参数后面填充一定数目字节的长度,在发送时全部置0,在接收端不作处理;保留:一个8位字段留作将来使用;MAC参数:发送方的MAC地址,共6个字节。

其中,类型:10;填充长度:在IP参数后面填充一定数目字节的长度,在发送时全部置0,在接收端不作处理;保留:一个8位字段留作将来使用;IP地址参数:发送方的IP地址,16个字节。

由于IP选项和MAC选项都在IPV6数据包的负载中,所以可以利用ESP加密头对IP地址和MAC地址进行加密处理。接收节点在收到以后进行解密处理,然后与NDP数据包的源IP地址和MAC地址进行比对,相同则更新缓存内容,不同则直接舍弃。

2.2.2 NDP?ESP模型下的NDP报文

利用ESP加密头进行加密的NDP报文可分为普通模式和隧道模式,如图4,图5所示。

2.2.3 组播的密钥协商协议GIKE[8-9]

在5种NDP协议报文中,只有邻居宣告(RA)消息和重定向(Redirect)消息是单播信息,其他为组播消息。要进行ESP处理,首先进行安全密钥的协商。在建立组播报文的安全关联时,节点对节点的IKE协议不能用,要用组播密钥分发协议GIKE。此时建立的安全关联不是单个节点对节点的SA,而是一对多的GSA。GIKE结构如图6所示。

其中,GIKE模块主要对组播报文的密钥分发进行协商,GSPDB,GSADB中存放着组播报文的安全策略数据库和安全关联数据库。也可以根据网络拓扑的结构,灵活选择支持ESP加密头的组播密钥管理协议,再此不多作探究。

2.3 数据的处理过程[10]

根据NDP?ESP方案,ESP在加密过程中,对整个报文负载内容进行加密及认证,NDP选项中的 IP地址和MAC地址作为数据包的内容同样得到加密及认证,从而保证了IP地址和MAC地址的信任绑定。数据在处理过程中主要分为入包处理、出包处理及缓存更新等。

2.3.1 出包处理

第一步:节点在进行NDP报文分发时,如果是一对一的通信,则要查询SPD中的匹配记录,再到SADB中去查询适用的SA,如果有就进行下一步的操作,如果没有则利用IKE协议进行SA的协商;如果是一对多的组播,则要查询GSPD中的匹配信息,根据GSPD中的应用策略,到GSADB中去查询适用的GSA,如果有相关的GSA就进行下一步的操作,如果没有,则用GIKE组播密钥协商协议进行协商,建立合适的GSA;

第二步:IKE在进行SA的创建时计数器单元要置0,ESP头的SPI取对应SA或GSA的SPI,ESP加密时序列号依次递增;

第三步:根据SA或GSA相关参数加密数据包;

第四步:计算完整性校验值;最后,如需要分段,还要进行分段处理。

2.3.2 入包处理

在接收到一个ESP加密数据包后,有没有分段处理,先将这些分段进行重新组合后再进行ESP解密处理。

第一步:查看ESP加密头的目的地、IP地址和其附带的安全策略索引(SPI)到GSADB或SADB中去查询合适的GSA或SA,如果没有就丢掉此数据包,如果有就进行下一步;

第二步:使用包中的SPI在进入SPD中查找一条和包选择符匹配的策略,如果和第一步找到的安全关联不匹配,则舍弃,如果相匹配,则进行下一步;

第三步:查看ESP加密头中的序列号,如果此序列号与前面接收到的数据包序列号相同,则认为非法,直接丢弃,如果不同则进行下一步;

第四步:核对ICV(数据摘要),根据GIKE协商约定的算法,进行ICV计算,之后与接收到的ICV进行比对。不同则丢弃数据包,相同则进行下一步;

第五步:解密数据包内容,交给上一层处理。

2.3.3 更新缓存

接收节点在处理完NDP增强报文之后,提取出源IP地址和MAC地址,与NDP报文头的源IP地址和源MAC地址作比对,都相同则更新缓存,不同则不更新缓存。

3 模型安全性分析

采用ESP加密头的NDP报文增强方案可以对NDP协议进行如下安全增强。

3.1 源认证

在没有采用NDP邻居发现协议增强方案之前,节点在进行交互时,无需对接收到的NDP报文进行验证,直接接收并更新节点的邻居缓存、目标缓存及改变默认路由器信息和路由前缀参数等。如果有恶意节点向网络中发送虚假的NDP报文,就会让节点存储虚假的邻居信息和网络信息。如果采用ESP加密头增强方案,节点在接收NDP报文以后,通过验证SPI,先进行源验证,如果报文没有通过验证就舍弃报文,通过就进行下一步的处理。

3.2 IP地址和MAC地址同时认证

在NDP报文中增加MAC地址和IP地址选项,保证了IP地址和MAC地址一起加密与认证。从NDP?ESP报文中提取出IP地址和MAC地址后,与IP头中的IP地址和MAC地址相一致就更新节点的缓存,不一致就不进行邻居缓存更新。这样就避免了攻击者利用IP和MAC地址没绑定而发起的各种攻击。

3.3 抗重播攻击

由于ESP加密报文头中都有一个惟一的序列号,且随着处理的数据报文依次增加。接收节点对重复ESP报文都视作非法,直接舍弃处理,可以防止恶意节点的重放攻击。

3.4 可用于网络数据的加密保护

ESP安全模型不仅对保护NDP协议的安全起到重要作用,也可以在节点进行通信时,对通信报文进行加密保护。可进行点对点的保护,也可以对IPV6组播报文进行保护,最大限度的保护了网络数据传输的安全。

3.5 方案结果比对

NDP协议安全增强方案与IETF制定的SEND方案相对比,对网络中常见的攻击手段防范的效果见表1[11]。

由上表可见,针对IPV6网络中的常见攻击,IETF提出的SEND的方案可以解决,NDP?ESP方案可以解决,特别在对路由前缀欺骗攻击防范时,SEND方案不能解决,NDP?ESP方案也可以解决;并且NDP?ESP方案还可以对网络节点之间的数据传输进行加密保护。可见NDP?ESP方案具有一定的优越性。

4 结 语

本文在介绍NDP协议功能及深入分析协议漏洞产生原因的基础上,提出一种新的NDP协议保护方案,即NDP?ESP模型。详细介绍了NDP?ESP报文数据处理的过程,并对模型的安全性进行了分析。ESP加密头的使用,不公保护了NDP协议的安全,利用修改的支持组密钥分发管理的GIKE协议,可做到对网络传输数据进行加密,有力的维护了网络安全。事实上,针对组播密钥的管理,可以根据实际的网络拓扑结构灵活选用支持ESP加密头的组播密钥管理协议,因此,该模型在实际操作中可行性很强。

参考文献

[1] 杨志刚,张长河,祝跃飞.IPV6邻居发现协议安全机制研究[J].计算机应用,2006,26(4): 938?941.

[2] ARKKO J, KEMPF J, ZILL B, et al. RFC 3971: secure neighbor discovery (SEND) [S]. USA: Network Working Group, 2005.

[3] 张玉健,张月琳.基于PKI的IPv6安全邻居发现协议[J].计算机工程,2008,34(8):187?189.

[4] GRAZIANI Rick. IPV6 Fundamentals [M].北京:人民邮电出版社,2013.

[5] 徐宇杰.IPV6深入分析[M].北京:清华大学出版社,2009.

[6] LI Qing, JINMEI Tatuya, SHIMA Keiichi.IPV6详解[M].北京:人民邮电出版社,2009.

[7] 伍孝金.IPV6技术与应用[M].北京:清华大学出版社,2010.

[8] 费金龙,祝跃飞,刘雅辉.组播Internet密钥协商的研究与实现[J].微电子学与计算机,2006,23(2):185?188.

[9] 韩旭东,汤隽,郭玉东.新一代IPSec密钥交换规范IKEv2的研究[J].计算机工程与设计,2007,28(11):2549?2558.

[10] 冯登国,徐静.网络安全原理与技术[M].北京:科学出版社,2010.

[11] 刘华春,戴庆光,蒋志平.基于IPSec的IPv6安全邻居发现协议[J].计算机工程与设计,2011,32(2):513?515.

报文 地址 协议