IPv6邻居发现协议的安全性研究

IPv6邻居发现协议的安全性研究

宋浪

湖南理工学院计算机学院,岳阳 414000

Email: [email protected]

【摘要】邻居发现协议(Neighbor Discovery Protocol,NDP)作为IPv6协议的重要组成部分,取代了IPv4中的ARP协议、ICMP路由发现和ICMP重定向功能。文章分析了NDP存在的安全问题,尤其是伪造IP地址攻击,并在此基础上提出采用加密生成地址和签名技术等来解决这些安全威胁。

【关键词】IPV6 邻居发现 安全 加密生成地址

【中图分类号】TP393

【文献标识码】G434

Analysis on IPv6 Neighbor Discovery Protocol Security

Song Lang

(School of Computer Science,Hunan Institute Science and Technology, Yueyang 414000)

【Abstract】NDP(Neighbor Discovery Protocol, NDP) is an important part of IPv6 protocol, which corresponds to acombination of ARP protocol, ICMP router discovery and ICMP redirect function in IPv4. This paper analyses security problem that may be subjected to NDP, especially IP address spoofing attack. At last, this paper puts forward CGA(Cryptographically Generated Addresses, CGA) and signature to solve the threats of IPv6 NDP.

【keywords】IPV6 neighbor discovery security CGA

1 引言

随着网络规模迅速发展,IPv4网络暴露出越来越多的问题,IETF于1992年在IPv4的基础上定义了下一代的Internet协议,被称之为“IPng”或“IPv6”。 IPv6[1]的一个显著特点是它的地址自动配置功能,它由IPv6协议中的邻居发现协议实现,主机不需要任何人工操作即可自动获得一个合法的IPv6地址进行通信。邻居发现协议[2]解决了连接在同一条链路上的所有节点之间的互连问题,它主要完成路由器发现、重定向功能、地址自动配置、重复地址检测、地址解析和邻居不可达探测的功能。然而,地址自动配置也带来了一些安全问题,使得邻居发现协议可能遭受到各种网络攻击。了解并发现各种攻击手段,提出有效的防御措施是目前亟待解决的。

2 邻居发现协议的伪造IP地址进行攻击

IPv6节点为每一个网络接口维护邻居缓存、目的缓存、前缀列表、默认路由器列表等信息。我们来看一下该攻击方法[3]:

(1) 攻击者伪造被攻击节点的IP地址,发送携带虚假的源链路层地址的邻居请求消息或虚假的目的链路层地址的邻居宣告消息,使接收者更新邻居缓存,存储错误的链路层地址,导致发送给被攻击节点的合法报文无法达到。

(2) 攻击者伪造路由器的IP地址,发送一个携带路由器生命期为0的路由器宣告消息,使得本地主机错误地认为没有默认路由器,与外网的节点无法进行正常通信。

(3) 当节点发送邻居不可达检测的邻居请求消息判断一个目的节点是否可到达时。攻击者在确定该目的节点不可 到达时能伪造成它的IP地址来回复邻居不可达检测的邻居请求消息,使节点错误地认为该目的地可达,仍继续使用邻居缓存中已经无效的该目的节点的信息。

(4) 主机进入网络,能够自动配置获得IP地址,在重复地址检测过程中,攻击节点可以重复声称该申请的IP地址已被占有,使主机永远也不能获得一个IP地址。

3 CGA技术

图1

针对邻居发现协议的伪IP地址攻击,我们在邻居发现消息中添加新的选项来解决它的安全威胁 [5] 。我们可以采用CGA技术 (Cryptographically Generated Addresses,以下简称CGA)和签名来防止伪IP地址攻击。CGA技术是防止攻击者伪造IPv6地址,它是基于公私密钥对的非对称加密体系,在每次产生CGA前,主机会首先产生一对公共/私有密钥对。 对公共密钥和辅助参数进行两次Hash加密算法计算产生IPv6地址的接口标志符,在此接口标志符前面加上本地网络前缀得到的IPv6地址就是CGA。私有密钥用来对来自这个地址的消息进行签名认证。公共密钥和辅助参数构成了一个CGA参数数据结构,它的格式如图1所示。

伪随机序列由计算机随机生成,在每次生成CGA的过程中使用,通过加入此随机数来加强抗攻击能力;子网前缀指的是本地子网前缀;冲突数为无符号整数,必须是0,1或2;公共密钥为存储自己的公共密钥;扩充区域将留待以后使用。

(1) CGA的产生过程。在CGA中,接口标志符的最左边三位被规定为CGA的安全参数SEC,是一个无符号整数,可以是0到7中的一个值,它是为了加强抵御暴力破解攻击而设立的。在CGA产生过程中,首先随机产生一个伪随机序列值,并将子网前缀和冲突数置0,接着对CGA参数数据结构执行Hash算法,如果得到的Hash值最左边的16*SEC位不全为0,则伪随机序列值加1,重复第一次Hash算法,直到Hash值最左边16*SEC位全是0为止,此时确定了本次CGA过程的伪随机序列值。然后对CGA参数数据结构的冲突数置0,将子网前缀字段值设置为本地网络子网前缀,对整个数据结构再执行Hash算法,得到一个新的Hash值,提取其最左边的64位Hash值,并将SEC的值写入到Hash值的最左边三位,得到接口标志符。将64位的子网前缀放在接口标志符前,形成128位的IPv6地址,对该地址执行邻居发现协议的重复地址检测,一旦发现地址冲突,冲突数加1,并再次执行第二次Hash算法。若冲突数大于2,则中止本次生成地址过程,否则我们得到的IPv6地址就是CGA,本次生成地址过程也确定了CGA参数数据结构的伪随机序列值和冲突数值。在主机与别的节点进行通信时,发送报文的源地址使用这个CGA,邻居发现消息选项中将携带对应的CGA参数数据结构。

(2) CGA的验证过程。接收者接收到报文后,提取报文中的CGA和CGA参数数据结构进行验 证。首先判断冲突数是否是0,1或2其中任意一个值,如果不是则验证失败;然后确认CGA参数数据结构中子网前缀与地址子网前缀是否一致,如果不一致则验证失败;最后对CGA参数数据结构进行两 次Hash算法(方法同上), 若第一次得到的Hash值与接口标志符不等则验证失败,第二次得到的Hash值最左边16*SEC位不全是0,则验证失败,丢弃报文,否则验证成功。

在CGA的产生过程中,我们使用了公共密钥,而对应的私有密钥,主机将用来对消息进行签名认证。主机用私有密钥和消息作为输入进行Hash算法和签名算法来产生签名。接受者首先进行CGA验证(上面已经介绍了验证的具体过程),验证成功后再对签名进行验证,用CGA参数数据结构中的公共密钥和消息作为输入进行同样的Hash算法和签名算法,得到的值与接收到的签名进行比较,如果不一致,则认为消息不是由该地址发送出来的,签名认证失败,丢弃该消息,否则接收消息。

攻击者如果试图用CGA技术来伪造其它节点的CGA时,在CGA的产生过程中,由于该地

址已经存在,因此在进行第二次Hash算法时会发生冲突,使冲突数增加,如果冲突数大于2,返回错误,并重新生成伪随机序列去再次计算CGA,所以它无法伪造成其它节点的CGA。若拥有该CGA的节点离线,攻击者可以成功伪造该CGA地址而不会产生冲突,但由于攻击者没有对应的私有密钥,在签名验证过程中仍将会失败而无法发起攻击。同样,当攻击者不使用CGA技术,直接伪造成其它节点的CGA以及携带对应的CGA参数数据结构,由于攻击者没有该节点的私有密钥,因此在签名验证过程中仍将失败,无法达到攻击的效果。所以CGA技术可以成功地防止攻击者伪造IP地址进行攻击。

4 结束语

相比IPv4,IPv6通过采用IPSec能够提供更高的安全性,但协议本身仍存在安全威胁。本文详细分析了伪造IP地址攻击的安全问题,并提出了针对这些攻击的防御措施。虽然在邻居发现协议的标准文本中指出可以使用IPSec来保护邻居发现协议,但是由于邻居发现协议实现地址自动配置功能,而IPSec却要求建立安全连接之前要进行繁琐的手工操作,从实用性角度来说存在着一定的问题,因此详细介绍如何使用IPSec来防御针对邻居发现协议的攻击本文并没有涉及,这可以做为进一步研究的内容。

参考文献

[1] Deering S,Hinden R. Internet protocol,Ver-sion 6 (IPv6) Specification. RFC 2460,1998

[2] Narten T,Nordmark E,Simpson W. Neigh-bor discovery for IP Version 6 (IPv6). RFC 2461,1998

[3] Nikander P,Kempf J,Nordmark E. IPv6Neighbor Discovery(ND) Trust Models and Threats.RFC 3756,2004

[4] Aura T. Cryptographically GeneratedAddresses(CGA). RFC 3972,2005

[5] Arkko J,Kempf J,Zill B. SEcure NeighborDiscovery(SEND). RFC3971,2005

IPv6邻居发现协议的安全性研究

宋浪

湖南理工学院计算机学院,岳阳 414000

Email: [email protected]

【摘要】邻居发现协议(Neighbor Discovery Protocol,NDP)作为IPv6协议的重要组成部分,取代了IPv4中的ARP协议、ICMP路由发现和ICMP重定向功能。文章分析了NDP存在的安全问题,尤其是伪造IP地址攻击,并在此基础上提出采用加密生成地址和签名技术等来解决这些安全威胁。

【关键词】IPV6 邻居发现 安全 加密生成地址

【中图分类号】TP393

【文献标识码】G434

Analysis on IPv6 Neighbor Discovery Protocol Security

Song Lang

(School of Computer Science,Hunan Institute Science and Technology, Yueyang 414000)

【Abstract】NDP(Neighbor Discovery Protocol, NDP) is an important part of IPv6 protocol, which corresponds to acombination of ARP protocol, ICMP router discovery and ICMP redirect function in IPv4. This paper analyses security problem that may be subjected to NDP, especially IP address spoofing attack. At last, this paper puts forward CGA(Cryptographically Generated Addresses, CGA) and signature to solve the threats of IPv6 NDP.

【keywords】IPV6 neighbor discovery security CGA

1 引言

随着网络规模迅速发展,IPv4网络暴露出越来越多的问题,IETF于1992年在IPv4的基础上定义了下一代的Internet协议,被称之为“IPng”或“IPv6”。 IPv6[1]的一个显著特点是它的地址自动配置功能,它由IPv6协议中的邻居发现协议实现,主机不需要任何人工操作即可自动获得一个合法的IPv6地址进行通信。邻居发现协议[2]解决了连接在同一条链路上的所有节点之间的互连问题,它主要完成路由器发现、重定向功能、地址自动配置、重复地址检测、地址解析和邻居不可达探测的功能。然而,地址自动配置也带来了一些安全问题,使得邻居发现协议可能遭受到各种网络攻击。了解并发现各种攻击手段,提出有效的防御措施是目前亟待解决的。

2 邻居发现协议的伪造IP地址进行攻击

IPv6节点为每一个网络接口维护邻居缓存、目的缓存、前缀列表、默认路由器列表等信息。我们来看一下该攻击方法[3]:

(1) 攻击者伪造被攻击节点的IP地址,发送携带虚假的源链路层地址的邻居请求消息或虚假的目的链路层地址的邻居宣告消息,使接收者更新邻居缓存,存储错误的链路层地址,导致发送给被攻击节点的合法报文无法达到。

(2) 攻击者伪造路由器的IP地址,发送一个携带路由器生命期为0的路由器宣告消息,使得本地主机错误地认为没有默认路由器,与外网的节点无法进行正常通信。

(3) 当节点发送邻居不可达检测的邻居请求消息判断一个目的节点是否可到达时。攻击者在确定该目的节点不可 到达时能伪造成它的IP地址来回复邻居不可达检测的邻居请求消息,使节点错误地认为该目的地可达,仍继续使用邻居缓存中已经无效的该目的节点的信息。

(4) 主机进入网络,能够自动配置获得IP地址,在重复地址检测过程中,攻击节点可以重复声称该申请的IP地址已被占有,使主机永远也不能获得一个IP地址。

3 CGA技术

图1

针对邻居发现协议的伪IP地址攻击,我们在邻居发现消息中添加新的选项来解决它的安全威胁 [5] 。我们可以采用CGA技术 (Cryptographically Generated Addresses,以下简称CGA)和签名来防止伪IP地址攻击。CGA技术是防止攻击者伪造IPv6地址,它是基于公私密钥对的非对称加密体系,在每次产生CGA前,主机会首先产生一对公共/私有密钥对。 对公共密钥和辅助参数进行两次Hash加密算法计算产生IPv6地址的接口标志符,在此接口标志符前面加上本地网络前缀得到的IPv6地址就是CGA。私有密钥用来对来自这个地址的消息进行签名认证。公共密钥和辅助参数构成了一个CGA参数数据结构,它的格式如图1所示。

伪随机序列由计算机随机生成,在每次生成CGA的过程中使用,通过加入此随机数来加强抗攻击能力;子网前缀指的是本地子网前缀;冲突数为无符号整数,必须是0,1或2;公共密钥为存储自己的公共密钥;扩充区域将留待以后使用。

(1) CGA的产生过程。在CGA中,接口标志符的最左边三位被规定为CGA的安全参数SEC,是一个无符号整数,可以是0到7中的一个值,它是为了加强抵御暴力破解攻击而设立的。在CGA产生过程中,首先随机产生一个伪随机序列值,并将子网前缀和冲突数置0,接着对CGA参数数据结构执行Hash算法,如果得到的Hash值最左边的16*SEC位不全为0,则伪随机序列值加1,重复第一次Hash算法,直到Hash值最左边16*SEC位全是0为止,此时确定了本次CGA过程的伪随机序列值。然后对CGA参数数据结构的冲突数置0,将子网前缀字段值设置为本地网络子网前缀,对整个数据结构再执行Hash算法,得到一个新的Hash值,提取其最左边的64位Hash值,并将SEC的值写入到Hash值的最左边三位,得到接口标志符。将64位的子网前缀放在接口标志符前,形成128位的IPv6地址,对该地址执行邻居发现协议的重复地址检测,一旦发现地址冲突,冲突数加1,并再次执行第二次Hash算法。若冲突数大于2,则中止本次生成地址过程,否则我们得到的IPv6地址就是CGA,本次生成地址过程也确定了CGA参数数据结构的伪随机序列值和冲突数值。在主机与别的节点进行通信时,发送报文的源地址使用这个CGA,邻居发现消息选项中将携带对应的CGA参数数据结构。

(2) CGA的验证过程。接收者接收到报文后,提取报文中的CGA和CGA参数数据结构进行验 证。首先判断冲突数是否是0,1或2其中任意一个值,如果不是则验证失败;然后确认CGA参数数据结构中子网前缀与地址子网前缀是否一致,如果不一致则验证失败;最后对CGA参数数据结构进行两 次Hash算法(方法同上), 若第一次得到的Hash值与接口标志符不等则验证失败,第二次得到的Hash值最左边16*SEC位不全是0,则验证失败,丢弃报文,否则验证成功。

在CGA的产生过程中,我们使用了公共密钥,而对应的私有密钥,主机将用来对消息进行签名认证。主机用私有密钥和消息作为输入进行Hash算法和签名算法来产生签名。接受者首先进行CGA验证(上面已经介绍了验证的具体过程),验证成功后再对签名进行验证,用CGA参数数据结构中的公共密钥和消息作为输入进行同样的Hash算法和签名算法,得到的值与接收到的签名进行比较,如果不一致,则认为消息不是由该地址发送出来的,签名认证失败,丢弃该消息,否则接收消息。

攻击者如果试图用CGA技术来伪造其它节点的CGA时,在CGA的产生过程中,由于该地

址已经存在,因此在进行第二次Hash算法时会发生冲突,使冲突数增加,如果冲突数大于2,返回错误,并重新生成伪随机序列去再次计算CGA,所以它无法伪造成其它节点的CGA。若拥有该CGA的节点离线,攻击者可以成功伪造该CGA地址而不会产生冲突,但由于攻击者没有对应的私有密钥,在签名验证过程中仍将会失败而无法发起攻击。同样,当攻击者不使用CGA技术,直接伪造成其它节点的CGA以及携带对应的CGA参数数据结构,由于攻击者没有该节点的私有密钥,因此在签名验证过程中仍将失败,无法达到攻击的效果。所以CGA技术可以成功地防止攻击者伪造IP地址进行攻击。

4 结束语

相比IPv4,IPv6通过采用IPSec能够提供更高的安全性,但协议本身仍存在安全威胁。本文详细分析了伪造IP地址攻击的安全问题,并提出了针对这些攻击的防御措施。虽然在邻居发现协议的标准文本中指出可以使用IPSec来保护邻居发现协议,但是由于邻居发现协议实现地址自动配置功能,而IPSec却要求建立安全连接之前要进行繁琐的手工操作,从实用性角度来说存在着一定的问题,因此详细介绍如何使用IPSec来防御针对邻居发现协议的攻击本文并没有涉及,这可以做为进一步研究的内容。

参考文献

[1] Deering S,Hinden R. Internet protocol,Ver-sion 6 (IPv6) Specification. RFC 2460,1998

[2] Narten T,Nordmark E,Simpson W. Neigh-bor discovery for IP Version 6 (IPv6). RFC 2461,1998

[3] Nikander P,Kempf J,Nordmark E. IPv6Neighbor Discovery(ND) Trust Models and Threats.RFC 3756,2004

[4] Aura T. Cryptographically GeneratedAddresses(CGA). RFC 3972,2005

[5] Arkko J,Kempf J,Zill B. SEcure NeighborDiscovery(SEND). RFC3971,2005


相关文章

  • 下一代互联网技术复习题及答案
  • 1. IPv6技术标准主要有下面哪个国际标准化组织制定的?(A ) A. IETF B. 3GPP C. ICANN D.ITU 2. 下列关于IPv6协议优点的描述中,准确的是 (D) . A.IPv6协议支持光纤通信 B .IPv6协议 ...查看


  • 网络前沿技术论文
  • Ipv6在移动通信领域的应用 摘要 简述了移动IP 的发展并分析了IPv6的技术优势,举例说明了移动IPv6的工作原理,最后详细阐述了如何确定移动节点的位置以及如何将转交地址告诉别的节点. 关键字 IPv6 移动IPv6 Mobile IP ...查看


  • 无线局域网接入设备技术介绍
  • 目 录 1 分册简介.............................................................................................................. ...查看


  • 网络技术知识点总结
  • 期末考试复习知识点 第一部分 网络技术基础 一.计算机网络的功能. 计算机网络是由两台或两台以上计算机通过网络设备连接起来所组成的一个系统. 计算机网络的主要功能:数据通信.资源共享.分布处理.提高计算机的可靠性和可用性. 二.分类 ● 按 ...查看


  • 移动互联网应用技术
  • 1. 简述IPv4到IPv6的过渡技术. (1)双协议栈技术 (2)隧道技术 (3)网络地址转换技术 2. 某A类网络10.0.0.0的子网掩码255.224.0.0,请确定可以划分的子网个数,写出每个子网的子网号及每个子网的主机范围. 由 ...查看


  • 毕业综合实践论文
  • 海南职业技术学院 毕业综合实践任务与总结报告书暨 毕业综合实践任务与总结报告书暨 毕业论文 综合实践题目 指导教师 实习时间 现代移动通信技术发展前景 刘冀萍 2011 年 3 月 21 日至 2011 年 6 月 20 日 系 专 班 姓 ...查看


  • IPv6地址的表示
  • IPv6地址的表示 IPv6地址的表示 用文本串表示的I P v 6 地址有三种规范形式: (1) 优先选用的形式为x : x : x : x : x : x : x : x :,其中x 是8 个1 6 位地址段的十六进制值. 例如: FE ...查看


  • 毕业论文之路由器的网络技术
  • 摘要: 当前基于IP协议的计算机网络用户数量剧增,网络流量每六个月翻一番,比计算机CPU速度每18个月提高一倍还要发展得快得多.为了使网络状况更加适应用户的需要,作为网络核心器件的路由器的不断升级换代也就成为大势所趋.下面就从路由器的基本概 ...查看


  • Internet的网络体系结构
  • 专题技术讲座 Int ernet 的网络体系结构 中国计算机学会开放系统专委会主任 陈炳从 * 摘要:本文评述作为现阶段信息高速公路雏型的I nternet 的网络体系结构及其进展, 包括T C P/I P 及其下一代基本通信协议I Pv ...查看


热门内容