基于反向检测的IPv6邻居缓存保护方法及其装置与流程

文档序号:12729817阅读:248来源:国知局
基于反向检测的IPv6邻居缓存保护方法及其装置与流程

本发明涉及IPv6网络安全通信技术领域,特别涉及一种基于反向检测的IPv6邻居缓存保护方法及其装置。



背景技术:

邻居发现协议(Neighbor Discovery Protocol,NDP)是IPv6的一个关键协议,它组合了IPv4中的ARP、ICMP路由器发现和ICMP重定向等协议,并对它们作了改进,解决了同一链路上不同节点之间的信息交互问题。由于其并没有针对链路内的安全威胁给出任何的安全机制,攻击者利用NDP存在的安全漏洞,可以对IPv6子网实施拒绝服务攻击和重定向攻击。IETF标准规定由IPSec AH来保证NDP中数据包的可靠性和完整性,但是并未给出使用方案。安全邻居发现协议(SEcure Neighbor Discovery,SEND)通过引入加密生成地址(Cryptographically Generated Address,CGA)和签名机制来保证NDP的安全,但其产生的计算开销过大,并没有得到广泛使用。

邻居缓存是一组有关单个邻居的信息,它包括的信息有:邻居IP地址与邻居链路层地址映射、邻居可达性状态等。邻居缓存的更新是通过ND报文的交互实现的,而ND协议在设计时并未对报文进行有效保护,因此邻居缓存易遭受欺骗攻击和DoS攻击等。反向检测方法,虽然其一定程度上降低了邻居缓存受攻击的可能,由于反向探测报文没有任何保护机制,攻击者仍然可以发送大量的虚假应答报文,进而轻易绕过反向检测机制,因此,需要一种新的IPv6邻居缓存保护方法,以提高IPv6内网安全性。



技术实现要素:

本发明提供一种基于反向检测的IPv6邻居缓存保护方法及其装置,确保邻居缓存的正确更新,有效抵抗邻居缓存欺骗攻击和拒绝服务攻击等,且资源消耗少,兼容性强。

按照本发明所提供的设计方案,一种基于反向检测的IPv6邻居缓存保护方法,包含如下内容:

目标节点接收到ND报文,在存储队列中创建存储ND报文信息的表项记录,其中,每个节点建立有一个用于ND报文信息存储的存储队列,表项记录中包含源节点的IP地址,源节点的MAC地址,向源节点发送IRD请求报文时间的Timestamp字段,向源节点发送IRD请求报文序号的Sequence字段,及标识是否已向源节点发送IRD请求报文状态的Status字段;

等待时间t后,从存储队列头部选取一个记录,向源节点发送IRD邻居请求报文,其中,0<t<τ,IRD邻居请求报文的IRD选项包含:用于表示IRD报文的选项类型值的Type字段,整个选项长度的Length字段,用于显示报文匹配的IRD报文序号的Sequence字段,保留Reserved字段,及用于限制报文响应时长的时间戳的Timestamp字段;通过选取的记录中的Sequence字段和Timestamp字段对IRD邻居请求报文的IRD选项进行相应的数据填充,并将表项记录的Status字段置位;

源节点发送IRD通告报文,在IRD选项中填充相同的Sequence字段及发送通告报文时的时间戳;

目标节点针对收到的IRD通告报文,通过Sequence字段、Status字段及超时时间阈值进行检查,根据检查结果对邻居缓存和存储队列中的相应记录进行处理。

上述的,通过Sequence字段、Status字段及超时时间阈值进行检查,并根据检查结果对邻居缓存和存储队列中的相应记录进行处理,包含内容如下:首先查询存储队列中是否存在相同Sequence字段的记录,如果不存在,则不更新邻居缓存,删除该记录并结束;若存在,则检查存储队列中Status字段是否置位,若未置位,则不更新邻居缓存,删除该记录并结束,若置位,则检验IRD通告报文是否在超时时间阈值内到达,若是,则更新邻居缓存并结束,否则,不更新邻居缓存,删除该记录并结束。

上述的,还包含:通过基于时间戳的RED方法对节点存储队列进行管理,删除存储队列中的表项记录。

优选的,通过基于时间戳的RED方法对节点存储队列进行管理,包含内容如下:对存储队列中每个Timestamp字段非零的表项启动定时器,根据定时器删除存储队列中的表项记录;并根据存储队列平均长度计算节点丢包概率,并根据节点丢包概率丢弃存储队列中的表项记录。

上述的,对存储队列中每个Timestamp字段非零的表项启动定时器,根据定时器删除存储队列中的表项记录,内容如下:读取存储队列最小长度、最大长度,当前时间,存储队列表项记录集合,存储队列头部记录时间戳,超时时间阈值;根据存储队列表项记录集合中每个表项记录,判断其Timestamp字段是否大于零,若是,则通过超时时间阈值为对应表项记录设置定时器;若定时器超时还未收到相应的IRD通告报文,则删除对应的表项记录。

优选的,根据存储队列平均长度计算节点丢包概率,内容如下:若存储队列平均长度小于存储队列最小长度,则设定丢包率为零;若存储队列平均长度大于存储队列最小长度且小于存储队列最大长度,则根据公式:

,计算丢包率;否则,设定丢包率为1。

优选的,超时时间阈值根据网络延迟情况做修正。

一种基于反向检测的IPv6邻居缓存保护装置,包含:报文信息记录模块、记录选取模块及表项记录检测模块;其中,

报文信息记录模块,目标节点根据接收到的报文信息,在节点存储队列中创建该报文信息的表项记录;

记录选取模块,选取节点存储队列头部的记录,并向源节点发送IRD邻居请求报文,其中,IRD邻居请求报文及选取的记录填充相同的时间戳字段和报文序号字段,并将表项记录中标识是否已向源节点发送IRD请求报文状态的Status字段进行置位操作;

表项记录检测模块,目标节点根据收到的IRD通告报文,通过时间戳字段、报文序号字段经及超时时间阈值对邻居缓存和存储队列中的记录进行更新处理。

上述的装置,还包含队列管理模块,通过基于时间戳的RED方法对节点存储队列中的表项记录进行删除操作。

上述的装置,还包含有:用于根据网络延迟情况对超时时间阈值进行调整的时间阈值修正模块。

本发明的有益效果:

本发明针对IPv6邻居缓存易遭受的欺骗攻击和拒绝服务攻击等问题,从邻居缓存更新过程入手,引入时间戳、报文序号和队列管理等保护机制,确保邻居缓存的正确更新;并通过具体实例的数值结果表明,该方法可以有效抵抗邻居缓存欺骗攻击和拒绝服务攻击,具有资源消耗少、协议兼容性强等特点;能够较好地适应应用环境,有效保护IPv6邻居缓存,具有很高的实用价值。

附图说明:

图1为本发明的方法流程图;

图2为本发明的原理示意图;

图3为本发明的存储队列示意图;

图4为本发明的IRD选项示意图。

图5为本发明的工作流程图;

图6为本发明的装置框图;

图7为实例的网络拓扑示意图。

具体实施方式:

为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。

参见图1所示,本发明所提供的方法可以主要包括:目标节点接收到ND报文,在存储队列中创建存储ND报文信息的表项记录,其中,每个节点建立有一个用于ND报文信息存储的存储队列,表项记录中包含源节点的IP地址,源节点的MAC地址,向源节点发送IRD请求报文时间的Timestamp字段,向源节点发送IRD请求报文序号的Sequence字段,及标识是否已向源节点发送IRD请求报文状态的Status字段;等待时间t后,从存储队列头部选取一个记录,向源节点发送IRD邻居请求报文,其中,0<t<τ,IRD邻居请求报文的IRD选项包含:用于表示IRD报文的选项类型值的Type字段,整个选项长度的Length字段,用于显示报文匹配的IRD报文序号的Sequence字段,保留Reserved字段,及用于限制报文响应时长的时间戳的Timestamp字段;通过选取的记录中的Sequence字段和Timestamp字段对IRD邻居请求报文的IRD选项进行相应的数据填充,并将表项记录的Status字段置位;源节点发送IRD通告报文,在IRD选项中填充相同的Sequence字段及发送通告报文时的时间戳;目标节点针对收到的IRD通告报文,通过Sequence字段、Status字段及超时时间阈值进行检查,根据检查结果对邻居缓存和存储队列中的相应记录进行处理。

下面对本发明提供的上述方法进行详细描述,图2为本发明实施例提供的原理示意图,该方法可以包括以下步骤:

步骤21:当目标节点收到NS/NA等报文时,首先,在节点存储队列中创建一个表项记录,记录收到ND报文信息,如IP-MAC映射关系等。

在本实施例中,为了确保节点能够正确更新邻居缓存,每个节点建立一个ND报文信息的存储队列,如图3所示,各字段的含义是:

IP:源节点的IP地址;

MAC:源节点的MAC地址;

Timestamp:向源节点发送IRD NS报文时的时间,初始化为0;

Sequence:向源节点发送IRD NS报文时的序号;

Status:是否已向源节点发送IRD NS报文。

其中,Status字段的功能为:当攻击节点企图发送虚假IRD应答报文时,即使报文中的Timestamp字段和Sequence字段均合法,符合标准协议要求,但是接收者的队列中并没有将相应记录的Status字段置位,那么接收者仍然不更新邻居缓存且删除此队列表项。

步骤22:等待任意时间t,0<t<τ,从存储队列头部选取一个记录,向源节点发送IRD NS报文,该报文包含IRD Option选项,并将相应记录的Timestamp字段和Sequence字段进行数据填充,且Status字段置位。

本实施例中,为了具有更好的兼容性,提供一种IPD Option选项,具体如图4所示,各字段含义如下:

Type:选项类型值,用于标识IRD报文;

Length:整个选项的长度(包括Type和Length字段);

Sequence:IRD报文序号,用于响应报文的匹配;

Reserved:保留字段;

Timestamp:IRD报文时间戳,用于限制报文响应时长。

其中,Sequence字段和Timestamp字段结合使用以更好地抵抗欺骗攻击。

步骤23:当源节点发送IRD NA报文时,必须在选项中填充相同的Sequence字段及发送应答报文时的时间戳。

步骤24:目标节点对收到的IRD NA报文进行检查,查询存储队列中是否有Sequence字段相同的记录,如果有,转到步骤25,否则,不更新邻居缓存,删除该表项并结束。

步骤25:检查存储队列中Status字段是否置位,如果是,转到步骤26,否则,不更新邻居缓存,删除该表项并结束。

步骤26:检验该IRD NA报文是否在超时时间阈值内到达,如果是,则存储队列中该记录中各字段信息均合法且正确,将该记录的信息更新邻居缓存表并结束,否则,不更新邻居缓存,删除该表项并结束。

参见图5和7所示,主机节点B和C正在正常通信,攻击节点A试图对其实施中间人攻击。以主机节点B为例,当B收到来自A的IRD NA报文时,B在其队列中创建一个表项存储该IRD NA报文中的Timestamp、Sequence、IP-MAC映射关系等信息;等待任意时间t(0<t<τ),B向A发送IRD NS报文,该报文包含IRD Option选项,并将相应记录的Timestamp字段和Sequence字段进行数据填充,且Status字段置位;当A向B发送IRD NA报文时,必须在选项中填充的Sequence字段及发送应答报文时的时间戳;节点A对收到的IRD NA报文进行检查,查询队列中是否有Sequence字段相同的记录,如果有,转到步骤5,否则,不更新邻居缓存,删除该表项并结束;步骤5、节点A检查队列中Status字段是否置位,如果是,转到步骤6,否则,不更新邻居缓存,删除该表项并结束;步骤6、节点A检验该IRD NA报文是否在定义的时间阈值T内到达,如果是,更新邻居缓存并结束,否则,不更新邻居缓存,删除该表项并结束。从邻居缓存更新过程入手,通过引入时间戳、报文序号等保护机制,确保邻居缓存的正确更新;该方法可以有效抵抗邻居缓存欺骗攻击和拒绝服务攻击,并且具有资源消耗少、协议兼容性强。

更进一步地,目标节点的存储队列是否安全,直接影响邻居缓存的安全更新,例如,攻击者不断发送大量虚假NS/NA报文,使目标节点一直处于满队列状态且存储队列中充满虚假信息,目标节点无法更新其邻居缓存,攻击者仍然可以达到对目标节点进行DoS攻击的目的,因此,队列管理是保证邻居缓存的安全更新的关键之一。通过基于时间戳的RED方法对节点存储队列进行管理,通过引入报文时间戳对存储队列管理的影响,使得原始RED方法能够满足IRD邻居缓存保护方法的要求,存储队列管理的实现过程如下:

对存储队列中每个Timestamp字段非零的表项启动定时器,根据定时器删除存储队列中的表项记录;并根据存储队列平均长度计算节点丢包概率,并根据节点丢包概率丢弃存储队列中的表项记录,使得节点存储队列能够及时丢弃部分数据包,保证目标节点存储队列的健壮性。

通过上述方式完成存储队列的管理,可以具体为:读取存储队列最小长度、最大长度,当前时间,存储队列表项记录集合,存储队列头部记录时间戳,超时时间阈值;根据存储队列表项记录集合中每个表项记录,判断其Timestamp字段是否大于零,若是,则通过超时时间阈值为对应表项记录设置定时器;若定时器超时还未收到相应的IRD通告报文,则删除对应的表项记录。若存储队列平均长度小于存储队列最小长度,则设定丢包率为零;若存储队列平均长度大于存储队列最小长度且小于存储队列最大长度,则根据公式:

,计算丢包率;否则,设定丢包率为1。

上述的存储队列的管理过程可以通过如下程序进行实现:

上述的存储队列管理方法受Qavg、Tcurrent、Ttimestamp和T等因素的影响,同时,网络延时也会对目标节点接收报文产生影响,如果网络延时较大,超过时间阈值T,忽略节点处理IRD请求报文和发送IRD应答报文时间的情况下,那么目标节点将删除队列表项,就不能够正确更新邻居缓存,因此,为进一步保证邻居缓存更新,需要根据网络延迟情况对时间阈值T作相应调整修正,以确保邻居缓存更新的正确性。

以上是对本发明提供的方法进行的描述,下面对本发明所提供的装置进行详细介绍,如图6所示,该保护装置,包含:报文信息记录模块301、记录选取模块302及表项记录检测模块303;其中,

报文信息记录模块301,目标节点根据接收到的报文信息,在节点存储队列中创建该报文信息的表项记录。

每个节点建立有一个用于ND报文信息存储的存储队列,表项记录中包含源节点的IP地址,源节点的MAC地址,向源节点发送IRD请求报文时间的Timestamp字段,向源节点发送IRD请求报文序号的Sequence字段,及标识是否已向源节点发送IRD请求报文状态的Status字段。

记录选取模块302,选取节点存储队列头部的记录,并向源节点发送IRD邻居请求报文,其中,IRD邻居请求报文及选取的记录填充相同的时间戳字段和报文序号字段,并将表项记录中标识是否已向源节点发送IRD请求报文状态的Status字段进行置位操作。

等待任意时间t后,从存储队列头部选取一个记录,向源节点发送IRD邻居请求报文,表项记录的Status字段置位,其中,0<t<τ,IRD邻居请求报文的IRD选项包含:用于表示IRD报文的选项类型值的Type字段,整个选项长度的Length字段,用于显示报文匹配的IRD报文序号的Sequence字段,保留Reserved字段,及用于限制报文响应时长的时间戳的Timestamp字段,且选取的记录中填充相同的Sequence字段和Timestamp字段。

表项记录检测模块303,目标节点根据收到的IRD通告报文,通过时间戳字段、报文序号字段经及超时时间阈值对邻居缓存和存储队列中的记录进行更新处理。

首先,查询存储队列中是否有Sequence字段相同的记录;其次,检查存储队列中Status字段是否置位;再次,检验该IRD NA报文是否在定义的超时时间阈值T内到达。如果存储队列的该记录中各字段信息均合法且正确,那么将该记录的信息更新邻居缓存表并结束;否则,不更新邻居缓存表同时删除队列中相应记录并结束。

优选地,还包含队列管理模块,通过基于时间戳的RED方法对节点存储队列中的表项记录进行删除操作。对存储队列中每个Timestamp字段非零的表项启动定时器,根据定时器删除存储队列中的表项记录;并根据存储队列平均长度计算节点丢包概率,并根据节点丢包概率丢弃存储队列中的表项记录,使得节点存储队列能够及时丢弃部分数据包,保证目标节点存储队列的健壮性。

另外,因网络延时对目标节点接收报文产生的影响,需要对超时时间阈值进行调整;通过设定时间阈值修正模块,根据网络延迟情况对超时时间阈值进行修正调整,进一步确保邻居缓存的正确更新。

综上所述,通过本发明的上述实施例,提供了一种基于反向检测的IPv6邻居缓存保护方法、保护装置,针对IPv6邻居缓存易遭受欺骗攻击和拒绝服务攻击等的问题,从邻居缓存更新过程入手,通过引入时间戳、报文序号和队列管理等保护机制,确保邻居缓存的正确更新,有效抵抗邻居缓存欺骗攻击和拒绝服务攻击,具有资源消耗少、兼容性强等特点,能够较好地适应应用环境,有效保护IPv6通信安全。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1