(计算机系统结构专业论文)ipv6邻居发现协议的安全性分析.pdf_第1页
(计算机系统结构专业论文)ipv6邻居发现协议的安全性分析.pdf_第2页
(计算机系统结构专业论文)ipv6邻居发现协议的安全性分析.pdf_第3页
(计算机系统结构专业论文)ipv6邻居发现协议的安全性分析.pdf_第4页
(计算机系统结构专业论文)ipv6邻居发现协议的安全性分析.pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(计算机系统结构专业论文)ipv6邻居发现协议的安全性分析.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

i 摘摘 要要 邻居发现协议(neighbor discovery protocol)是 ipv6 协议的一个重要组成部分, 它取代了 ipv4 中的 arp 协议、icmp 路由发现和 icmp 重定向功能,解决连接在同 一条链路上的所有节点之间的互连问题。一般情况下,开放的网络环境中本地链路 上节点的加入是不需要通过任何认证,难免存在怀有恶意的节点。并且,随着 ipv6 的广泛使用,恶意节点会导致各种各样的攻击,因此邻居发现的安全性就变得至关 重要了。 根据 ipv6 邻居发现协议的主要功能,分析了该协议可能受到的各种攻击。针对 邻居发现协议的伪造 ip 地址攻击,在现有的加密产生地址技术(cryptographically generated addresses,以下简称 cga)基础上提出基于 mac 地址的 cga 技术 (mcga) 。mcga 地址是对 ipv6 地址的接口标志符(低 64 位)使用地址所有者的 公钥、本地子网前缀和 mac 地址等参数进行散列运算得到,并利用地址所有者的 私钥对发送消息进行签名;接收节点先对 mcga 地址验证有效性,并使用发送节点 的私钥来对消息中的签名进行验证。只有 mcga 地址和签名同时通过验证,才能证 明该地址和消息的有效性。对于 mcga 技术,阐述了 mcga 地址的产生与验证、 mcga 地址选项和 mcga 签名选项,以及 mcga 技术的优点。此外,还提出信任 锚模型、时间戳和临时数技术来保护邻居发现协议。 对邻居发现协议的地址解析功能进行了模拟攻击,并利用所提出的 mcga 地址 验证进行了防御实验,结果表明,mcga 方法是十分有效的。 关键字关键字:ipv6; 邻居发现协议; 安全; 加密产生地址(cga) ii abstract neighbor discovery protocol is an important part of ipv6 protocol, which corresponds to a combination of arp protocol, icmp router discovery and icmp redirect function in ipv4, and solves interconnection among all nodes on the same link. generally speaking, the nodes can enter a local link without authentication in an open network environment, and maybe there are malicious nodes on a local link. with the widely used of ipv6, malicious nodes will result in various kinds of attack. consequently the security of neighbor discovery becomes highly important. according to main function of ipv6 neighbor discovery, various kinds of attack that may be subjected to neighbor discovery protocol have been analysed. considering ip address spoofing attack, mcga which is a kind of cga (cryptographically generated addresses) based on mac address has been proposed. the mcga is a kind of ipv6 address of which the interface identifier is generated by a cryptographic one-way hash function using public key of the address owner, subnet prefix, mac address and auxiliary parameters. messages sent from a mcga address must be signed by using the private key of the address owner. the nodes that receive the messages need to validate the mcga and the signature of the messages by using the public key. the address is legal only if the validation of mcga and signature are both successful. the generation and verification of mcga, mcga option and mcga signature option are presented, and strongpoint of mcga is described. moreover, trust anchor model, timestamp and nonce to secure neighbor discovery protocol are also proposed. the simulation using mcga to denfend the attack of address resolution shows that mcga method is fully effective. key words:ipv6; neighbor discovery protocol; security; cryptographically generated addresses 独创性声明独创性声明 本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的 研究成果。尽我所知,除文中已经标明引用的内容外,本论文不包含任何其他个 人或集体已经发表或撰写过的研究成果。对本文的研究做出贡献的个人和集体, 均已在文中以明确方式标明。本人完全意识到,本声明的法律结果由本人承担。 学位论文作者签名:唐述科 日期:2006 年 4 月 28 日 学位论文版权使用授权书学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,即:学校有 权保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和 借阅。本人授权华中科技大学可以将本学位论文的全部或部分内容编入有关数据 库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 保密 ,在_年解密后适用本授权书。 不保密。 (请在以上方框内打“” ) 学位论文作者签名:唐述科 指导教师签名:李汉菊 日期:2006 年 4 月 28 日 日期:2006 年 4 月 30 日 本论文属于 1 1 绪论绪论 1.1 研究背景研究背景 ipv6 协议 1, 2 是“因特网协议第六版(internet protocol version 6)”的缩写,也称 为下一代网际协议(next generation internet protocol,ipng) 。它将逐渐取代现有的 基于 ipv4(internet protocol version 4,因特网协议第四版)协议的网络系统,成为 下一代互联网络的核心技术。ipv4 是在 1981 年由 rfc 791 标准化,经过 20 多年的 发展,获得了巨大的成功,但是也暴露了很多弊端,包括路由表膨胀、安全性等, 而最为严重的是地址空间匮乏问题。为了解决 ipv4 所存在的不足,ietf(互联网工 程任务组,internet engineering task force)于 1995 年发布 rfc 1883 指定了新的 ip 协议 ipv6,1998 年又发布了 rfc 2460 对其进行了优化。ipv6 保留了 ipv4 大部分优 秀特性的同时,在许多方面提出了改进,比如提供了 128 位的地址空间,它能够解 决 ipv4 的地址匮乏问题,满足其他网络设备对地址的需求。同时 ipv6 将 ipsec 协议 作为必备协议,增强了对安全的支持,使用 ipsec 实现认证和加密的安全功能。ipv6 还对 ipv4 的路由和网络自动配置等方面做了大量的改进。 ipv6 协议正处在不断发展和完善的过程中。 1996 年, 国际的 ipv6 试验网6bone 成立,现已经扩展到全球 50 多个国家和地区,成为 ipv6 研究者、开发者和实践者 的主要平台。国外发展迅速的下一代高速网络 internet2 也已经在 abilene 基础设施上 成功的建成 ipv6 网络,并且和其它大规模的 ipv6 网络连接成功。2003 年 10 月,美 国军方宣布,将采用 ipv6 逐步替换现在的 ipv4。在我国,对 ipv6 协议的技术和应 用研究领域方面一直保持着和世界先进水平的同步,并始终密切跟踪互联网的发展。 cernet(中国教育和科研计算机网)于 1998 年 6 月加入 6bone,在中国建立了第 一个 ipv6 试验床,试验床正式使用部分已经发展了地区级的试验网络。2001 年,以 cernet 为主承担建设了中国第一个下一代互联网北京地区试验网 nsfcnet。2004 年 1 月,世界 8 大下一代互联网在欧洲宣布同时开通并提供服务,cernet 代表中 国宣布开通服务。2004 年 3 月,中国第一个全国性下一代互联网 cernet2 试验网 2 开通。2004 年 12 月,cernet2 正式开通并提供服务。 但是,由于 ipv6 引入了一些新的特性,如邻居发现协议3, 4和地址自动配置5, 增强的移动 ip 技术6,组播和泛播地址等等,因此对于现行的网络安全体系提出了 新的要求和挑战。目前对 ipv6 的研究着重于技术和应用的完善、示范网络的建设等 方面,对 ipv6 本身的安全问题,以及 ipv6 可能对现有安全体系带来的挑战则较少 涉及,对安全问题估计不足、应对措施不完善,必将影响到 ipv6 的发展和应用。因 此,ipv6 要想真正走向大规模应用,必须首先解决好安全问题,对安全技术相关的 研究具有相当重要的意义。 1.2 国内外研究现状国内外研究现状 1.2.1 国外概况国外概况 目前,安全和信任已经成为国内外下一代互联网体系结构研究重点关注的领域 之一。美国 100 多所大学和企业于 1996 年底联合发起的 internet2 研究计划,主要是 为了利用现有的网络技术来探索高速信息网络环境下新一代网络的应用,在 internet2 所提出的下一代网络的体系结构中,中间件(middleware)是在网络和应用之间,为 各种应用系统提供的一组公共的服务,其中主要是安全服务。美国南加州大学信息 科学研究所,麻省理工学院计算机科学实验室等单位共同进行了新一代 internet 体系 结构研究项目newarch。在该项目最近的技术报告中提出了下一代互联网体系 结构设计的“信任调节的透明性”(trust-modulated transparency)原则。 ipv6 作为下一代互联网的核心技术,它的一个显著特点是地址自动配置功能, 节点可以在不需要任何人工操作的前提下可自动获得一个合法的 ipv6 地址进行通 信。地址自动配置包括无状态自动配置7和有状态地址配置8,通过无状态自动配置 ipv6 节点可以直接获得本地子网前缀与节点的接口标志符(interface identifier)得到 ipv6 地址,这主要是由邻居发现协议来实现的,而有状态自动配置必须配置相应的 dhcpv6 服务器。 ipv6 邻居发现协议和地址自动配置的安全增强的研究是 ipv6 下的主要安全问题 3 研究之一,这些工作由 ietf 成立的 send 工作小组负责。在 ipv6 邻居发现协议的 标准文本rfc 2461中指出可以使用ipsec9来保护邻居发现协议。 在ipv6中, ipsec 作 为必备协议,解决了网络层端到端数据传输的安全问题,它作为新一代互联网安全 标准,是 ietf 为提高 ip 协议的安全性而专门制定的,实际上,它是一种协议套件, 可以“无缝”地为 ip 提供安全特性,如提供访问控制、数据源的身份验证、数据完整 性检查、 机密性保证以及抗重播攻击等。 ipsec 通过所定义的一整套完善的安全机制, 在身份认证报头(ah)10和封装安全载荷报头(esp)11的支持下,可以为 ipv6 网 络环境下的网络层数据提供各种安全服务。虽然在邻居发现协议的标准文本中指出可 以使用 ipsec 来保护邻居发现协议,但由于邻居发现协议实现了地址自动配置的功能, 但是 ipsec 却要求建立安全连接之前要进行繁琐的手工操作,加上现有技术能力不 够、安全基础设施不足等因素,使用 ipsec 来解决 ipv6 邻居发现协议的安全问题面 临着许多困难。 在不使用 ipsec 的情况下,对 ipv6 邻居发现协议的安全研究表明,邻居发现协 议可能遭受到的安全威胁包括邻居请求/宣告消息伪造、邻居不可达检测失败、重复 地址检测 dos 攻击12、路由器信息伪造以及重放攻击等13, 14。对于路由器信息伪造 攻击, 可以使用地址基于密钥的技术15来保护 ipv6 的邻居发现协议, 该方法允许 ipv6 节点验证宣告本地子网前缀的节点是否被授权为路由器,但其局限性是这些验证需 要一些附加的安全措施。2005 年,send 为了解决上述邻居发现协议的安全威胁, 提出了几种新的邻居发现协议选项16:cga(加密产生地址)选项、时间戳和临时 数选项,以及授权委托发现(authorization delegation discovery)等来保护邻居发现 协议。新的邻居发现选项并不需要任何附加的安全措施就能够解决大部分邻居发现 协议所受到的攻击。其中,ietf 对于邻居发现协议的伪造 ip 地址攻击提出了 cga 技术17,cga 技术能够解决由于伪造 ip 地址而造成对邻居发现协议的安全威胁,但 无法解决邻居发现协议的地址解析中伪造 mac 地址的攻击。 1.2.2 国内概况国内概况 在国内, 对 ipv6 协议的技术与应用许多高校和设备厂商都给予很大的支持。 2004 年,锐捷网络推出了基于 np+asic 技术的新一代多业务万兆交换机 rg-s6800e, 4 rg-s6800e 通过高性能的 np 技术提供灵活的 ipv6 支持,锐捷网络也因此成为了国 内第一家提供支持 ipv6 技术高端交换机的厂商。2005 年 7 月,为便于研究和学习 ipv6,根据高校需要从小规模开始建设 ipv6 试验网的特点,锐捷网络率先在业界推 出了第一款硬件全面支持 ipv6 的双协议栈机架式多层交换机 rg-s3760 系列。 ipv6 邻居发现协议的功能之一是地址解析功能,在 tcp/ip 网络中,地址解析是 一个十分重要的问题。在 ipv4 中使用 arp18协议来完成的,而在 ipv6 中是由邻居 发现协议来解决的。由于从 ipv4 到 ipv6 的过渡是需要花费较长时间,对于 arp 已 经有了成熟的技术,但是 ipv6 的邻居发现协议开发与实现更多的是处在试验阶段, 因此对 ipv6 的地址解析问题进行了深入分析,并与 ipv4 的 arp 在功能技术上进行 比较19,能够更好的来指导从 ipv4 向 ipv6 过渡的有关技术问题20, 21。 目前,我国的 863 项目和 973 项目中都有对下一代互联网安全体系结构研究的 重要支持。在 ipv6 中,引入了大量的内部数据结构用于存储最近通信时获得的有关 网络状态、路由等相关信息,这些内部数据结构主要包括邻居缓存、目的缓存、前 缀列表、绑定缓存等。为了完成邻居发现协议的各项功能,ipv6 节点为每一个网络 接口维护邻居缓存、目的缓存、前缀列表、默认路由器列表等信息。当发送邻居发 现协议报文时,可以根据目的缓存、前缀列表、默认路由器列表来确定合适的邻居 ip 地址,然后查询邻居缓存确定链路层地址。ipv6 节点发送或接收邻居发现协议消息 后,会更新邻居缓存、目的缓存、前缀列表以及默认路由器列表等信息,并且使用 这些信息与邻居进行通信。分析 ipv6 节点内部数据结构的安全威胁22对保护邻居发 现协议的安全性有很大的帮助。 移动 ipv6 的工作过程中,当移动节点移动到外地网络时,可以通过地址自动配 置的无状态地址配置来获得新的转交地址,并且为了实现“动态家乡代理地址发现” 机制,定义了两种邻居发现协议选项:宣告消息间隔和家乡代理信息选项23。邻居 发现协议的安全威胁会阻碍移动ipv6的快速发展, 因此必须全面深入的分析移动ipv6 的安全问题和移动 ipv6 所提供的网络安全服务与实现原理24,以及研究邻居发现协 议对移动 ipv6 的安全影响。在移动 ipv6 的安全方面,有学者提出了针对移动 ipv6 中的重定向攻击的防御25。 5 随着 ipv6 协议的不断发展, 它将在越来越多的系统中配置和出现, 同时现有 ipv6 主干网也会迅速发展并加强与 ipv4 网络系统的互通,为了促进 ipv6 网络系统的健康 发展,解决目前引入 ipv6 系统中的安全问题,降低安全风险和保护网络系统的安全 运行,所以有必要对 ipv6 协议中的安全问题进行深入的研究。研究 ipv6 协议中的安 全问题,包括协议设计中的一些安全脆弱性,主要包括邻居发现协议的安全威胁等。 1.3 主要研究内容主要研究内容 1.3.1 研究内容及成果研究内容及成果 本文的主要研究内容为,首先对 ipv6 邻居发现协议的 5 种消息类型和主要功能 进行深入的研究。并介绍 ipv4 的 arp 协议,以及其安全漏洞与防御方法,在此基础 上提出了针对邻居发现协议的各种安全威胁,包括伪造 ip 地址攻击、伪造路由器信 息攻击、重放攻击和邻居发现 dos 攻击等。然后,在防止伪造 ip 地址的原有 cga 技术基础上提出了基于 mac 地址的 cga 技术(mcga) ,其目的是想在同一子网 内绑定 ipv6 地址和 mac 地址,来解决现有 cga 技术无法解决的伪造 mac 地址进 行的地址解析攻击。接着详细介绍 mcga 地址的产生与验证、mcga 签名的产生与 验证以及 mcga 地址选项和 mcga 签名选项,利用 mcga 技术来防御邻居发现协 议的伪造 ip 地址攻击和伪造 mac 地址的地址解析攻击。另外,提出一种简单的信 任锚模型来防御邻居发现协议的伪造路由器信息攻击,以及介绍时间戳和临时数技 术来解决邻居发现协议的重放攻击。最后,进行 ipv6 的地址解析功能的攻防模拟实 验,采用 mcga 技术来进行防御,验证 mcga 技术的可行性。 1.3.2 本文结构本文结构 本文共分为六章,各章的安排如下: 第一章:介绍 ipv6 协议的发展以及 ipv6 安全研究的国内外研究现状,给出了本 文的主要研究内容。 第二章:主要介绍 ipv6 协议以及邻居发现协议。首先简单介绍 ipv6 协议的包头 格式和地址类型,并介绍 ipv4 下的完成地址解析功能的 arp 协议。然后,详细介绍 6 邻居发现协议的 5 种消息类型,在此基础上分析邻居发现协议的主要功能。 第三章:主要研究邻居发现协议的安全威胁。首先分析 arp 协议的安全漏洞及 其防御,然后提出了针对 ipv6 邻居发现协议的各种攻击方法。 第四章:针对现有 cga 技术的不足,提出基于 mac 地址的 mcga 技术,利 用 mcga 技术来保护邻居发现协议。 主要详细介绍 mcga 的产生与验证以及 mcga 地址选项和 mcga 签名选项,并阐述 mcga 技术的优点。最后介绍信任锚模型、 时间戳和临时数技术来防御邻居发现协议的伪造路由器信息攻击和重放攻击。 第五章:对邻居发现协议的地址解析功能进行模拟攻击,并利用本文提出的 mcga 技术来保护邻居发现协议,验证 mcga 技术的可行性。 第六章:总结了整篇论文,指出邻居发现协议仍然存在的安全威胁,并对邻居 发现协议的安全研究工作做以展望。 7 2 ipv6 邻居发现协议邻居发现协议 2.1 ipv6 协议简介协议简介 现有的互联网主要是基于 ipv4 协议。这一协议的成功促成了互联网的迅速发展。 但是,随着互联网用户数量的急剧增长以及应用范围的扩大和应用层次的深入,ipv4 协议也暴露出了它的许多不足之处,其中最尖锐的问题就是不断增长的对互联网资 源的巨大需求与 ipv4 地址空间的严重不足,目前可用的 ipv4 地址还有近 30%的剩 余,其中 b 类地址已经耗尽。据 ietf 预测,ipv4 地址将在未来的几年内用完;另 外,由于 ipv4 地址方案不能很好地支持地址汇聚,现有的互联网正面临路由表不断 膨胀的压力,庞大的路由表不仅降低路由节点以及网络的效率,而且降低了 internet 服务的稳定性;同时,对 qos,移动性和安全性等方面的需求都迫切要求开发新一 代 ip 协议。 为了彻底解决互联网的地址危机,ietf 发布的 rfc 1883 制定了一种新型的 ip 协议 ipv6 协议,后来发布的 rfc 2460 对其进行了优化。除了对地址空间的扩展以 外,还对 ipv6 地址的结构重新做了定义,采用了与 ipv4 中使用的 cidr 类似的方法 分配地址。ipv6 还提供了地址自动配置以及对移动性和安全性的更好支持等新的特 性。目前,ipv6 的主要协议都已经成熟并形成了 rfc 文本,其作为 ipv4 的唯一取 代者的地位已经得到了世界的一致认可。国外各大通信设备厂商都在 ipv6 的应用与 研究方面投入了大量的资源,并开发出了相应的软硬件。 ipv6 的地址结构中把 32 位地址空间扩展到了 128 位,并且取消了广播地址而代 之以泛播地址。ipv4 中用于指定一个网络接口的单播地址和用于指定由一个或多个 节点侦听的组播地址基本不变。ipv6 简化了报文头,包括总长为 40 字节的 8 个字段 (其中两个是源地址和目的地址) 。 它与 ipv4 报文头的不同在于, ipv4 中包含至少 12 个不同字段,且长度是不固定的,最小为 20 字节,最大可达 60 字节。而 ipv6 使用 了固定格式的报文头,减少了路由器上所需的处理过程,从而提供了选路的效率。 图 2.1 中显示了 ipv6 报文头的格式。在 ipv4 中,所有报文头以 32 位为单位, 8 即基本的长度单位是 4 个字节。在 ipv6 中,报文头以 64 位为单位,且报文头的总 长度是 40 字节。 版本业务流类别流标签 净荷长度下一个头 源ip地址 目的ip地址 数据报的数据报文 跳极限 图 2.1 ipv6 报文头的格式 ipv6 协议对其报文头定义了以下字段: 版本:长度为 4 位,对于 ipv6,该字段必须为 6。 类别:长度为 8 位,指明为该报文提供了某种“区分服务”。rfc1883 中最初定 义该字段只有 4 位,并命名为“优先级字段”,后来该字段的名字改为“类别”,在最新 的 ipv6 internet 草案中,称之为“业务流类别”。该字段的定义独立于 ipv6,目前尚未 在任何 rfc 中定义。该字段的默认值是全 0。 流标签:长度为 20 位,用于标识属于同一业务流的报文。一个节点可以同时作 为多个业务流的发送源。流标签和源节点地址唯一标识了一个业务流。在 rfc 1883 中这个字段最初被设计为 24 位,但当类别字段的长度增加到 8 位后,流标签字段被 迫减小长度来作补偿。 净荷长度:长度为 16 位,这个字段指出了报文净荷的字节长度,即 ipv6 报文 头后的报文中包含的字节数。这意味着在计算净荷长度时包含了 ipv6 扩展头的长度。 下一个头:长度为 8 位。这个字段指出了 ipv6 头后所跟的头字段中的协议类型。 与 ipv6 协议字段类似,下一个头字段可以用来指出上层协议是 tcp 还是 udp,同 时它也可以用来指明 ipv6 扩展头的存在。 跳极限:长度为 8 位。每当一个节点对报文进行一次转发之后,这个字段就会 被减 1。如果该字段值等于 0,这个报文就将被丢弃。ipv4 中有一个具有类似功能的 生存期字段,但与 ipv4 不同,人们不愿意在 ipv6 中由协议定义一个关于报文生存时 9 间的上限。这意味着对过期报文进行超时判断的功能可以由上层协议完成。 源地址:长度为 128 位,指出了 ipv6 报文的发送方地址。 目的地址:长度为 128 位,指出了 ipv6 报文的接收方地址。这个地址可以是一 个单播、组播或泛播地址。如果使用了选路扩展头(其中定义了一个报文必须经过 的特殊路由) ,其目的地址可以是其中某一个中间节点的地址而不必是最终地址。 ipv6 地址是独立接口的标识符, 所有的 ipv6 地址都分配到接口而非节点。 ipv6 地 址从逻辑上划分为三种类型26: 单播地址27(unicast address) :一个单接口的标志符,递交给一个单播地址的 报文将被传送至用这个地址标识的接口上; 组播地址(multicast address) :一组接口(一般属于不同节点)的标志符,发送 给一个组播地址的报文实际上被递交给用组播地址标记的每个接口。ipv6 没有广播 地址,所有需要用广播来实现的功能由组播来取代; 泛播地址(anycast address) :一组接口(一般属于不同节点)的标识符,发送 给一个泛播地址的报文实际上被递交给用泛播地址标记的所有接口上。 ipv6 地址分类如图 2.2 所示。 ipv6编址 单播地址泛播地址组播地址 本地链路地址被请求节点地址分配的地址本地站点地址可聚合全球地址 未指定地址 和环回地址 本地链路地址可聚合全球地址本地站点地址兼容ipv4地址 ff00 : : /8ff02 : 1:ff00:0000 /104fe80 : /102001 : /16 2002 : /16 3ffe: /16 fec0 : /10 : /128 : 1 /128 fe80 : /102001 : /16 2002 : /16 3ffe : /16 fec0 : /100:0:0:0:0:0:0 : /96 图 2.2 ipv6 地址类型 10 在单播地址、组播地址和泛播地址中每种地址有一种或多种类型的地址。单播 地址有未指定地址和环回地址、 本地链路地址、 可聚合全球地址、 本地站点地址和 ipv4 兼容地址;组播地址有分配地址和被请求节点地址;泛播地址有本地链路地址、可 聚合全球地址和本地站点地址。本地链路地址和本地站点地址是受限制的单播地址。 本地链路地址只用于本地链路范围,不能在子网间路由。当一个节点启动 ipv6 协议 栈时,节点的每一个接口会自动配置一个本地链路地址。本地站点地址类似 ipv4 的 内网地址,仅在一个站点内使用,它不能自动配置,必须被指定。可聚合全球单播 地址类似于 ipv4 中用于通信的地址。 2.2 邻居发现协议邻居发现协议 2.2.1 arp 介绍介绍 在 ipv4 中使用 arp 协议来解决网络中的地址解析功能。而在 ipv6 中是由邻居 发现协议来完成相应的功能。在介绍 ipv6 邻居发现协议之前,先来简要介绍 ipv4 的 arp。 以太网卡一般都有固定的 mac 地址(以太网硬件地址) ,但一块网卡使用的 ip 地址却是不固定的, 这就引发了问题: 基于 ip 的网络如何获取发送数据报一端的 mac 地址。arp 就是用来解决这个问题,在 ip 地址与 mac 地址之间提供动态映射,其 功能就是提供 32 位的 ip 地址到 48 位的硬件地址的转换。尽管 arp 包括在 tcp/ip 的网络层,但实际上 arp 是一个低层协议,使网络层和数据链路层相隔离,数据链 路层直接使用 arp。arp 的实现是通过定义 arp 数据分组来实现的。arp 数据分 组没有固定的格式,以适应各种不同的网络技术和支持不同的网络及协议。 11 以太网 目的地址 以太网 源地址 帧 类型 硬件 类型 协议 类型 硬件地址长度 协议地址长度 发送端 以太网地址 op 发送端 ip地址 目的 以太网地址 目的 ip地址 662221126464 以太网首部28字节arp请求/应答 图 2.3 用于以太网的 arp 报文格式 图 2.3 显示了在以太网上解析 ip 地址时,arp 请求和应答报文的格式。 以太网报头中的前两个字段是以太网的源地址和目的地址。目的地址为全 1 的 特殊地址是广播地址。电缆上的所有以太网接口都要接收广播的数据帧; 以太网帧类型表示后面数据的类型。对于 arp 请求或应答报文来说,该字段的 值为 0 x0806; 硬件类型和协议类型用来描述 arp 分组中的各个字段; 硬件类型字段表示硬件地址的类型,以太网硬件地址用 1 表示; 协议类型字段表示要映射的协议地址类型,ip 地址用 0 x0800 表示; 硬件地址长度以字节为单位指出硬件地址的长度,对于以太网,这个数值为 6; 协议地址长度以字节为单位指出协议地址的长度,对于以太网上的 ip 地址,这 个数值为 4; 操作字段指出四种操作类型,它们是 arp 请求(值为 1) 、arp 应答(值为 2) 、 rarp 请求(值为 3)和 rarp 应答(值为 4) ,这个字段必需的,因为 arp 请求和 arp 应答的帧类型字段值是相同的; 发送端的硬件地址(以太网地址) 、发送端的协议地址(ip 地址) 、目的端的硬 件地址和目的端的协议地址。 对于一个 arp 请求来说,除目的端硬件地址外的所有其他的字段都有填充值。 当系统收到一份目的端为本机的 arp 请求报文后,它就把硬件地址填进去,然后用 两个目的端地址分别替换两个发送端地址,并把操作字段置为 2,最后把它发送回去。 当 ip 数据报准备发送时,由数据链路层将它封装入以太网数据帧,然后才能在 以太网中传送。然而在封装过程中,数据链路层并不知道以太网数据帧头中目的节 12 点的 mac 地址。唯一的信息是 ip 数据报头中的目的节点的 ip 地址。为了找到与目 的节点 ip 地址相对应的 mac 地址,根据 arp,源节点会发送一个称作 arp 请求的 以太网数据帧给以太网上的每一个节点。这个过程称作 arp 广播。arp 请求数据帧 中包含目的节点的 ip 地址,它向以太网上的每一个节点询问。只有具有此 ip 地址的 节点收到这份广播报文后,才会向源节点回送一个包含其 mac 地址的 arp 应答。 并且为了尽量减少广播 arp 请求的次数,每个节点都有一个 arp 缓存,这个缓存 存放了最近的 ip 地址与 mac 地址之间的映射记录。节点每隔一定时间或者当收到 arp 应答,都会用新的地址映射对更新 arp 缓存。因为 arp 是一个无状态的协议, 所以对于大多数操作系统,如果收到一个 arp 应答,它们不管自己是否在此之前曾 经发出 arp 请求,都会更新自己的 arp 缓存。这就为系统安全留下了隐患。 2.2.2 邻居发现协议消息邻居发现协议消息 邻居发现协议是 ipv6 协议的一个基本的组成部分,它实现了在 ipv4 中的地址解 析协议(arp) 、控制报文协议(icmp)中的路由器发现部分、重定向协议的所有 功能,并具有邻居不可达检测机制。 邻居发现消息由邻居发现消息头部和邻居发现消息选项组成,格式如图 2.4 所 示。它遵循了 icmpv628报文格式,包含一个邻居发现消息头部以及零个或多个邻居 发现消息选项。 ipv6头部 下一个头部58 (icmpv6) 邻居发现消息选项邻居发现消息头部 邻居发现消息 图 2.4 邻居发现消息格式 为了确保收到的邻居发现消息来自本地链路上的节点,发送方将其发出的所有 邻居发现消息中的跳限制的值设为 255。这样接收节点收到一个邻居发现消息时,首 先就检查 ipv6 包头的跳限制字段,已确认是本地链路上其它节点发送的消息。 邻居发现消息选项采用类型-长度-值格式,如图 2.5 所示。其中类型字段表示邻 居发现选项的类型,长度字段表示整个选项的长度,单位为 8 位,值字段包含了选 13 项的数据。 类型(8位)长度(8位)值(变长) 图 2.5 邻居发现消息选项格式 已有的邻居发现选项的类型如下表 2.1 所示。 表 2.1 邻居发现选项的类型 类型选项名称可用于的邻居发现消息 1源链路层选项邻居请求消息、路由请求消息、路由宣告消息 2目标链路层选项邻居宣告消息、重定向消息 3前缀信息路由宣告消息 4重定向消息重定向消息 5mtu路由宣告消息 7宣告间隔路由宣告消息 8本地代理信息路由宣告消息 9路由信息路由宣告消息 邻居发现协议使用了 5 种类型的 icmpv6 报文来实现邻居发现协议的各项功能。 这 5 种类型消息如下: (1)邻居请求消息(neighbor solicitation) 节点发送邻居请求消息来请求邻居的链路层地址,以验证它先前所获得并保存 在邻居缓存中的邻居链路层地址的可达性,或者验证它自己的地址在本地链路上是 否是唯一的。通常在进行地址解析时用组播的形式发送邻居请求消息,在检验邻居 可达性时用单播形式发送。邻居请求消息的格式如图 2.6 所示,其类型字段值为 135。 14 类型(8位)代码(8位)检验和(16位)保留(32位) 目标地址(128位) 选项(变长) 图 2.6 邻居请求消息的格式 (2)邻居宣告消息(neighbor advertisement) 节点对收到的邻居请求消息的回复,也可以是以某个间隔时间自发地发送邻居 宣告消息来宣告自身链路层地址的变化。邻居宣告消息的格式如图 2.7 所示,其类型 字段值为 136。 类型(8位)代码(8位)检验和(16位)保留(29位) 目标地址(128位) 选项(变长) 路由器标志(1位) 请求标志(1位) 覆盖标志(1位) 图 2.7 邻居宣告消息的格式 (3)路由器请求消息(router solicitation) ipv6 节点或路由器通过发送路由器请求消息来发现本地链路上是否有 ipv6 路由 器。节点发送组播路由器请求消息,要求路由器立即发送其路由器宣告消息,而不 必等到下一个预定传送时间。路由器请求消息的格式如图 2.8 所示,其类型字段值为 133。 15 类型(8位)代码(8位)检验和(16位)保留(32位) 选项(变长) 图 2.8 路由器请求消息的格式 (4)路由器宣告消息(router advertisement) 路由器周期性地发送组播路由器宣告消息,宣告它的存在以及配置的链路和网 络参数,或者对路由器请求消息作出响应。网络参数包括链路前缀、链路 mtu 等等。 路由器宣告消息的格式如图 2.9 所示,其类型字段值为 134。 (5)重定向消息(redirect) 路由器发送重定向消息通知始发节点,对于一个特定的目的地址有一个最佳下 一跳。路由器只为单播业务流发送重定向消息,并且只会被始发节点处理。重定向 消息的格式如图 2.10 所示,其类型字段值为 137。 类型 (8位) 代码 (8位) 检验和 (16位) 保留(3位) 路由器生存期 (16位) 选项(变长) 管理地址配置标志 (1位) 其它状态配置标志(1位) 本地代理标志(1位) 默认路由器优先级(2位) 可达到时间(32位)重发定时器(32位) 当前跳限制 (8位) 图 2.9 路由器宣告消息的格式 16 类型(8位)代码(8位)检验和(16位)保留(32位) 目标地址(128位) 选项(变长) 下一跳地址(128位) 图 2.10 重定向消息的格式 2.2.3 邻居发现协议功能邻居发现协议功能 邻居发现协议取代了 ipv4 中的 arp、icmp 路由器发现和 icmp 重定向,并提 供了一些其他的功能,解决了连接在同一条链路上的所有节点之间的互连问题。它 主要完成如下功能: (1)地址解析功能:将一个在线的邻居节点的 ipv6 地址与其链路层地址进行 动态映射。这个相当于 ipv4 下 arp 协议的功能。ipv6 节点通过邻居请求消息和邻 居宣告消息来完成将 ipv6 地址解析为链路层地址(或物理地址)的过程。地址解析 过程的方法是通过组播一个邻居请求消息来请求目标节点返回其链路层地址,邻居 请求消息的组播地址是从目标地址得到的请求节点的组播地址。邻居请求消息中选 项字段为源链路层地址选项,该选项的值为发送节点的链路层地址。 当目标节点收到邻居请求消息后,使用邻居请求消息中的源 ip 地址和源链路层 地址选项中的链路层地址更新自己的邻居缓存,然后目标节点向发送邻居请求消息 的节点单播邻居宣告消息返回它的链路层地址(链路层地址在邻居宣告报文的目标 链路层地址选项中) 。当接收到来自目标节点的邻居宣告消息后,发送节点会根据目 标链路层地址选项中的链路层地址数据在邻居缓存中创建一个关于目标节点的表 项。然后,发送节点和目标节点之间就可以互相通信。 (2)路由器发现:ipv6 网络的节点通过路由器发现功能找到愿意为自己转发报 文的本地路由器,并获得网络参数,包括子网前缀集、链路上的 mtu 以及跳数限制 17 等。 路由器在本地链路上周期性地发送路由器宣告消息,以宣告它们的存在。本地 链路上的节点接收到路由器宣告消息,并使用这些报文的内容来维护默认路由器列 表和前缀列表、自动配置地址、添加路由和配置其他参数。正在启动的节点会向链 路本地范围所有的路由器组播地址(ff02: : 2)发送路由器请求消息。如果正在启动 的节点已经配置了单播地址,则节点发送的路由器请求消息中会以此单播地址作为 源地址。否则,路由器请求消息中的源地址为未指定地址(:) 。当接收到路由器请 求消息后,本地链路上的所有路由器都会向该节点的单播地址(如果路由器请求消 息中的源地址是单播地址)发送路由器宣告消息,或者向链路本地范围内所有的节 点组播地址(ff02: : 1) (如果路由器请求消息中的源地址为未指定地址)发送路由 器宣告消息。节点接收路由器宣告消息,并用它们的内容来建立默认路由器列表、 前缀列表和设置其他的配置参数。在放弃路由器发现之前可以发送的路由器请求消 息的数目可以由变量来设定。 (3)重定向功能:当节点选择的路由器作为报文传送的下一跳并不是最好的下 一跳时,路由器通知节点重定向到一个最佳的下一跳路由器,或者通知节点目的地 实际上是一个邻居节点。重定向过程首先由发送节点向它的默认路由器转发单播数 据包,路由器处理数据包,并且注意到发送节点的地址是一个邻居节点,并且发送 节点的地址和下一跳地址都在同一链路上;然后路由器向发送节点发出重定向消息, 在重定向消息的目标地址字段的值是用作新的下一跳地址的节点的地址,发送节点 应该把后续的数据包首先发给该节点。 (4)地址自动配置:自动分配 ip 地址给节点的一个接口。在无状态地址自动 配置过程中,节点利用路由器发现功能得到的一个子网前缀去创建一个 ipv6 地址, 然后通过重复地址检测过程来确定该新地址的唯一性。 (5)重复地址检测:用来检测正在创建的地址是否已经被别的节点使用。在地 址自动配置过程中,一个节点试图分配一个新的地址给它的一个接口的时候,必须 先运行重复地址检测过程去确认没有其他的节点正在使用该地址。在 ipv6 重复地址 检测中,邻居请求报文中的目标地址字段被置为需要进行重复检测的 ipv6 地址。在 18 重复地址检测的邻居请求消息中,ipv6 包头中的源地址字段为未指定地址(:) 。正 在进行重复检测的地址只有在确定没有冲突后才可以使用。在对重复地址检测进行 响应的邻居宣告消息中,ipv6 包头中的目标地址字段的值为链路本地范围所有节点 的组播地址(ff02: : 1) ,邻居宣告消息中的请求标志为 0。由于发送重复地址检测 的邻居请求消息的节点不能使用正在被检测的地址,所以不能接收单播的邻居宣告 消息,因此,响应重复地址检测的邻居宣告消息是组播的。 如果收到组播的邻居宣告消息后,该节点就会放弃使用这个重复的 ip 地址;如 果没有接收到阻止使用这个 ip 地址的邻居宣告消息,该节点就会在自己的接口上初 始化这个地址。ipv6 节点对泛播地址不进行重复地址检测,因为泛播地址对于一个 节点来说是不唯一的。 (6)邻居不可达检测:ipv6 节点用来跟踪邻居节点的可到达性。一般情况,节 点依靠上层信息来确定对方节点是否可达。然而,如果上层通信产生足够长的延时 或者一个节点与和它对应的节点停止接收应答,邻居不可达检测过程就会被调用。 节点向对方发送单播的邻居请求消息,如果对方节点可达,它将回应一个邻居宣告 消息。然而,如果请求节点没有收到应答,它会进行重试,经过多次失败后就删除 邻居缓存中的项。如果需要的话,还会触发标准地址解析协议获取新的 mac 地址。 如果在确定(也可能是错误的)对应节点不可达后清空邻居缓存还将会使所有的上 层通信中断。验证邻居节点的不可达性,并不表示也必然验证了从发送节点到目标 节点的端到端的可达性。因为相邻节点可能是节点或路由器,所以相邻节点并不一 定是数据包的最终目标。邻居节点不可达性仅仅验证了到目标的第一跳的可达性。 2.3 本章小结本章小结 本章简要介绍了 ipv6 协议针对 ipv4 的在设计上的优势以及 ipv6 的报文头格式 和地址类型,并将 ipv4 下的 arp 协议与邻居发现协议的地址解析功能作比较。接着 详细介绍邻居发现协议的 5 种消息类型:邻居请求消息、邻居宣告消息,路由器请 求消息、路由器宣告消息和重定向消息,在此基础上重点说明利用邻居发现消息来 描述邻居发现协议的主要功能:地址解析功能、路由器发现、重定向功能、地址自 19 动配置、重复地址检测和邻居不可达检测。 20 3 邻居发现协议的安全威胁邻居发现协议的安全威胁 当前对邻居发现协议机制主要有三种安全威胁: (1)重定向攻击:恶意节点将报文从最后一跳路由器或者其他合法接收节点重 定向到链路上的其他节点。 (2)拒绝服务攻击:恶意节点破坏被攻击节点和其他所有节点间的通信。 (3)洪水式拒绝服务攻击:恶意节点重定向其他节点的通信到被攻击节点,从 而对被攻击节点产生大量的虚假通信攻击。 3.1 arp 的安全漏洞的安全漏洞 由于 arp 协议自身的约定,一般来说,网

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论