移动IP技术 (2)

发布时间:2008-10-10

[编者按] 随着无线通信技术和便携式终端技术的快速发展,面向固定网络环境的传统IP技术迫切需要更新,以支持主机在网络中的漫游和移动。为此提出了移动IP技术,它是下一代通信网络(NGN)和下一代因特网(NGI)的重要基础技术。本讲座分3期介绍该项技术。第1期介绍移动IPv4和移动IPv6的基本原理和关键技术,第2期介绍移动IP的路由优化技术和安全技术,第3期介绍移动IP切换技术,并简述移动IP技术的未来发展。

4 移动IP路由优化技术

4.1 MIPv6路由优化实现
    上一讲已述及,所谓路由优化指的是移动节点(MN)利用配置的转交地址(CoA)直接和对端节点(CN)通信,不再经由至家乡代理的隧道转发数据,其优点是显而易见的。首先是避免了所有来往于MN的数据都要经由家乡代理的单点故障问题,提高了组网安全性;其次是缩短了数据传输路径,降低了网络带宽的消耗;与此相应,必将提高MN和对端实时通信的服务质量。

    路由优化的协议原理很简单,和家乡代理(HA)登记过程类似,只要MN和CN交互绑定更新(BU)和绑定更新确认(BA)报文,在CN上建立起MN的家乡地址(HoA)和CoA的绑定,以后CN就可以使用CoA作为目的地址和MN直接通信了,当然还需要有下文所述的安全机制的保障。从理论上说,由于路由优化有一定的协议开销,只有对于持续时间较长的数据通信采用路由优化才是经济的,MN应该根据会话性质作出是否采用路由优化的决策。可是实际上,会话持续时间往往难以估计,因此一种简单的方法是通过配置规定MN是否采用路由优化。
为了

    使路由优化对于上层完全透明,以便上层应用不受影响,例如已建的TCP连接不会因此而中断,应该使上层协议看到的CN-->MN分组的目的地址以及MN-->CN分组的源地址仍然是HoA,而并非CoA。为此协议规定,在CN-->MN分组中,基本报头的目的地地址置为CoA,同时新定义一个第二类路由扩展报头,置入HoA,如图5(a)所示。当分组到达MN后,MN从路由扩展报头中找回其HoA,替换基本报头中的目的地址,作为该分组的最终目的地址,实际上就是通过节点内部将分组传递至上层。于是对于上层来说,分组目的地地址仍然是HoA。


    与此类似,在MN-->CN分组中,基本报头的源地址置为CoA,使得分组能够顺利通过外地链路上的接入路由器,同时将目的地选项扩展报头中新定义的家乡地址选项置为HoA,如图5(b)所示。当分组到达CN后,CN从目的地扩展报头中找出HoA,替换基本报头中的源地址,然后将分组传递至上层。于是对于上层来说,分组源地址仍然是HoA。

4.2 路由优化下的数据传送
    路由优化具体实现时需要考虑两点。

    首先,CN可能也是一个移动节点,且正位于外地链路中,如果它们都和对方建立了路由优化绑定,则在向对方发送的分组中将既包含第二类路由扩展报头,又包含含有家乡地址选项的目的地选项扩展报头,排列次序是路由报头在前。

    其次,MN和CN之间根据应用需要可以建立IPSec安全关联,通常安全关联都是对应两者的HoA建立的,使其不会随节点移动而变化,此时,发送分组的头部构建过程将由3个步骤组成:

    (1)基本报头的源地址和目的地址分别置为本端和对端的HoA;

    (2)加上第二类路由扩展报头,其中置入对端的CoA;再加上目的地选项扩展报头,其中家乡地址选项置为本端的CoA;

    (3)根据基本报头信息(即两端的HoA)建立和对端的安全关联(形成IPSec头部)后,再将第二类路由扩展报头的地址内容和分组目的地址字段的内容交换,将目的地选项扩展报头中的家乡地址选项内容和分组源地址字段的内容交换。

5 移动IP安全威胁分析

5.1 绑定更新攻击
    移动IP技术的核心内容是MN通过向家乡代理或CN发送BU消息,通知它们以CoA取代HoA将分组发往MN的当前位置,实现分组传送的重定向。因此,BU消息自然是移动IP受攻击的主要对象,安全威胁主要是由于攻击者以假冒身份、篡改消息、伪造消息等手段使MN分组被转送至错误的地点,从而导致用户通信中断、数据被窃听、遭受拒绝服务攻击等后果。典型攻击情况包括:

    (1) 阻断通信:由于MN的HoA是公开的,因此攻击者可以假冒移动节点向其家乡代理发送BU消息,内置虚假的CoA,从而使MN再也收不到其他节点发来的分组。攻击者也可能位于MN和家乡代理或CN之间,截获并篡改BU消息中的CoA参数,实施所谓的中间人攻击,使其他节点或CN发出的分组再也到达不了MN。

    (2) 窃听数据:使用上述同样的手法,攻击者将CoA设置或篡改为自身的地址,将至MN的所有分组都重定向至攻击者,从而窃听至MN的所有通信数据。

    (3) 洪泛攻击:攻击者首先和某一节点建立会话连接,然后向该节点发送BU消息,将CoA设置为被攻击者的地址,从而将该节点发出的数据都转发给被攻击者。攻击者可以故意从该节点下载一个很大的文件,或者该节点根本就是一个播放视频流的服务器,于是被攻击者将会收到大量的无用数据,造成其设备和链路的过载甚至瘫痪。

    (4) DoS攻击:攻击者可以向家乡代理发送大量伪造的BU消息,每个消息的HoA都不相同,从而使家乡代理建立大量的绑定数据缓存,耗尽所有的存储空间,最终使家乡代理无法工作。同样的攻击也可以针对非家乡代理的其他节点。

5.2 扩展头部攻击
    这里指的就是路由优化中用到的两个扩展头部。当攻击者是一个MN时,他本应该在目的地选项扩展报头的家乡地址选项中置入他的HoA,但是实际上他置入的是另外一个节点的地址,于是当CN收到攻击者发来的分组后,将会把该节点的地址作为分组的源地址,并将回复数据分组发至该节点,攻击者藉此对该节点实施洪泛攻击。

    当攻击者是一个和MN通信的对端节点时,他本应该在第二类路由扩展报头中置入MN的家乡地址,但是实际上他置入的是另外一个节点的地址,于是MN将把收到的分组中继转发至该节点,而不是发给自身的上层协议。也许攻击者并没有对于该节点的访问权,但是通过这样的手段借助MN作为代理可以实现对该节点的访问。

5.3 移动前缀发现攻击
    上一讲述及,MN可以通过域名系统(DNS)的方法获取其家乡链路前缀,另一种方法是通过MN和HA之间交互移动前缀请求(MPS)和移动前缀通告(MPA)消息获取。攻击者可能截获MN发送的MPS消息,然后假冒HA回复MPA,将其自身的链路前缀作为MN的家乡链路前缀告知MN,这样MN将把BU消息发送给攻击者,以后所有发往MN的分组都将发给攻击者,后者将可对所有分组进行复制、任意转发甚至丢弃。

6 移动IP安全技术
    根据以上分析,移动IP制订了以下的安全保护措施。

6.1 家乡代理绑定安全保护
    其基本要求是:家乡代理能够确认绑定更新来自合法的MN、绑定消息未被篡改、绑定消息能够加密以防窃听,这些要求是通过IPSec实现的。IPSec是IETF制定的因特网网络层的安全标准,提供IP分组传送的认证(含报文完整性和抗重发攻击)、加密以及密钥与安全协定管理3项功能,它是IPv6的必备功能,也是移动IP安全技术的基础。

    IPSec加密功能仅对IP包的净荷部分施行,IP报头并不加密,因为中间路由器选路必须识别报头。加密后的净荷称为封装安全净荷(ESP),其前部字节为ESP头部。净荷加密一般采用秘密密钥算法,发送方和接收方共同商定一个共享密钥KAB,该密钥只有收发双方知晓。发送方使用该密钥加密:Y=E(X |KAB),其中,E表示加密算法,X 和Y分别表示明文和密文;接收方使用该密钥解密:X=D(Y |KAB),其中,D表示解密算法,接收方只有使用同样的密钥才能解密还原得到原来的明文。加密技术的关键是要设计出一种高强度的算法,使得攻击者拦截到大量的密文后仍然不能在实际可行的时间内推断出明文,另一个关键问题是必需确保密钥的秘密性。

    IPSec认证功能采用基于秘密密钥和消息摘要(MD)的算法,支持认证、报文完整性检验和抗重发攻击3项功能。首先,发送方随机生成一段数据Data,然后将Data附在秘密密钥之后形成组合数据,再生成组合数据的消息摘要MD{KAB|Data},并将Data和MD一起发送给接收方。接收方收到后,将Data附在自己保存的KAB之后,同样计算其摘要,然后将其和收到的MD比较。如果两者相同,就判定报文的发送方是合法的。

    所谓消息摘要就是根据一定的加密算法由一段任意长的数据计算得出的一个固定长度的较小的数据块。该算法的特点是由不同的消息生成相同摘要的概率十分微小,这样,即使攻击者知道用户发送的Data,由于不知道用户的密钥,也不可能生成组合数据的摘要。

    如果Data就是用户发出的报文,当攻击者中途拦截到该报文并作篡改时,接收方收到后会发现MD{KAB|报文}有误,从而拒绝该报文,这样就实现了报文完整性检验。

    如果Data是“报文+当前时戳”,当攻击者中途拦截到该消息,过一段时间再重发该报文,接收方根据时戳可以判断这是过时的老消息,将于丢弃。如果攻击者重发时试图修改时戳,则接收方将发现MD{KAB|报文|时戳}有误,同样将拒绝该消息。由此,可实现对重发攻击的保护。

    IPSec的认证信息形成认证头部(AH),AH认证的数据不但包括IP包的净荷,还包括IP报头中的固定部分。如果AH和ESP同时存在,则AH位于ESP的外部。ESP除了必备的加密功能外,也可以提供任选的认证功能,但是它只对ESP本身的数据进行认证,并不对外部的IP报头进行认证。

    IPSec密钥与安全协定管理功能引入安全关联(SA)和安全策略(SP)两个概念。SA由通信双方协商确定,它规定了保护数据包安全需用到的IPSec协议、协议算法及参数、密钥以及密钥的有效时间等。一个具体的IPSec实现建有一个SA数据库(SAD),数据库中包含各种安全处理的SA记录。SA是单向的,也就是说,每个通信方有一个处理发送数据包的SA(out),还有一个处理接收数据包的SA(in)。另外,SA是从属于安全协议的,也就是说,每种安全协议(如加密和认证)分别有其对应的SA。

    SP定义安全保护的策略。一个具体的IPSec实现建有一个SP数据库(SPD),它和SAD联合使用,提供灵活的安全保护功能。其基本过程是:根据数据包头中特定字段的组合形成检索SPD的“选择符”,检索结果包括一个SAD指针,指向SAD的一个记录,该记录规定了应如何对该数据包作安全性处理。

    对应上述3项功能,IPSec包含3个协议:加密协议、认证协议和密钥交换协议。其中,加密协议主要定义ESP头部结构、ESP安全模式及ESP的处理;认证协议定义了AH结构及其处理;密钥交换协议(IKE)是用来动态建立SA。

    图6示出ESP在IP数据包中的位置及其字段结构,它分配的协议号是50,即如图6没有AH保护的情况下,IP头中的“协议”字段应置为50。“安全参数索引”(SPI)供接收端唯一地标识应使用的SA。如前所述,发送方可根据选择符得到SAD数据库的一个记录(即SA),其中除已协商好的安全协议、算法及参数外,还包含一个对应的SPI。发送方就将此SPI置入ESP头部。“序列号”是一个单向递增的计算器,每发送一个数据包,序列号加1,以支持抗重发攻击保护。初始化向量是供加、解密算法使用的初值。这3个字段组成ESP头,它们是不被加密的,否则接收端将无从知道如何处理,也无法执行解密算法。被保护的数据是已被加密的密文数据。


 

    ESP尾部包括填充字段和验证数据。填充字段的作用是使ESP的边界和32比特字的边界对齐,某些加密算法要求输入数据是一定大小密码块长度的整数倍,如不能满足此要求,也要求加入填充字段。此外,填充还可以隐蔽净荷数据的真实长度,提高加密性能。“下一个头”字段的作用是指明被保护数据从属于什么协议。最后的“验证数据”是任选字段,就是认证算法生成的消息摘要,它只是对ESP本身的数据进行完整性保护,并不对其外部的IP头部进行保护。

    移动IP通常采用ESP对MN与HA之间的绑定更新过程进行保护。两者之间的安全策略(SP)和安全关联(SA)基于移动节点的家乡地址(MN-HoA)和家乡代理地址(HA-ADD)定义,所要保护的协议是携带BU/BA消息的移动扩展报头(MH)。SA可以人工配置,采用指定的加密和认证算法以及静态密钥;也可以通过IKE协议动态配置,由MN和HA协商确定算法,采用动态密钥,它需要设置证书中心,协议开销较大,但密钥管理及抗重发攻击的能力更强。

    针对MN向HA方向发送BU消息的保护,在MN中的SP和SA人工配置可为:
MN SPD OUT:
  - IF source = MN-HoA & destination = HA-ADD & proto = MH
   THEN USE SA SA1
MN SAD:
   - SA1(OUT, spi_a, HA-ADD, ESP, TRANSPORT):
    source = MN-HoA & destination = HA-ADD & proto = MH & encryp = 3DES“KE”& auth = hmac-shal“KA”

    上述配置表示MN侧的发送方向安全策略是:选择符为“源地址=MN-HoA且目的地址= HA-ADD且被保护协议=MH”,使用编号为SA1的安全关联。SA1安全关联的定义是:输出方向,SPI=spi_a,目的地地址=HA-ADD,采用ESP协议保护,保护模式是传送模式;处理规则是:源地址=MN-HoA,目的地址= HA-ADD,被保护协议=MH,加密算法是3DES,加密密钥是KE,认证算法是HMAC-SHAL,认证密钥是KA。

    在HA中的相应SP和SA配置如下所示,其含义不言自明:
  HA SPD IN:
   - IF source = MN-HoA & destination = HA-ADD & proto = MH
    THEN USE SA SA1
HA SAD:
    - SA1(IN, spi_a, HA-ADD, ESP, TRANSPORT):
     source = MN-HoA & destination = HA-ADD & proto = MH & encryp = 3DES “KE”& auth = hmac-shal“KA”

    图7是MN构建由ESP保护的BU消息的步骤。首先,构建IP基本报头,其源地址为MN-HoA,目的地址为HA-ADD,并构建移动扩展报头,内置BU消息;然后,插入目的地选项扩展报头,其家乡地址选项置为MN-CoA;接着,根据安全关联SA1,对移动报头作加密和认证处理,插入ESP头部;最后,将家乡地址选项地址和IP包的源地址互换。HA接收该IP包后,作相反处理,通过认证操作确认报文来自合法的MN,且报文未被篡改,通过解密操作得到原始的BU报文,由此确保BU传送的安全性。

6.2 路由优化安全保护
    路由优化需要保护的是MN和CN之间交互的绑定更新过程,从理论上说,也可以利用IPSec技术实现,但是要求MN与众多的CN建立安全关联并不现实,因此,移动IPv6(MIPv6)专门为此定义了一个返回路由可达过程。其基本思路是使CN确认MN的同时拥有HoA和CoA两个地址,即这两个地址都指向同一个节点,因此请求在这两个地址之间进行分组重定向没有安全隐患。其实现方法是让MN以HoA和CoA作为源地址分别向CN发送一个报文,CN设法对这两个地址的报文进行身份认证,如果认证均成功,就表明MN拥有这两个地址。

    图8是返回路由可达过程的协议步骤。


    如图8所示,有以下几步:

    (1)MN向CN发送家乡地址测试启动(HOTI)消息,消息的源地址是HoA,因此必需经由家乡代理(HA)转送,消息中带有一个随机数Cookie1用以关联CN回送的响应。

    (2)NM向CN发送转交地址测试启动(COTI)消息,消息的源地址是CoA,消息中也带有一个随机数Cookie2。

    (3)CN收到COTI后,根据式(1)计算“CoA密钥生成令牌”:
CoA密钥生成令牌= First (64, HMAC_SHA1 (Kcn, (CoA | Nonce2| 1)))       (1)

    式(1)中,Kcn是CN系统初始化时生成的密钥,适用于所有MN;Nonce是CN周期生成的时变随机数,其长度为64 bit,每次生成的Nonce都存储在系统中,并赋予一个16 bit的索引,可供以后检索;Nonce2表示收到COTI时CN当时的时变随机数;将CoA与Nonce2串接后,使用密钥Kcn并采用HMAC_SHA1算法计算得到报文认证码,取其前64位即为所需的CoA令牌。

    CN向MN回送转交地址测试(COT)消息,消息的移动报头中携带下列参数:Cookie2、Nonce2索引和CoA令牌。

    (4)CN收到HOTI后,根据式(2)计算“HoA密钥生成令牌”:

    HoA密钥生成令牌= First (64, HMAC_SHA1 (Kcn, (HoA | Nonce1| 0)))    (2)
CN经由家乡代理向MN回送家乡地址测试(HOT)消息,消息的移动报头中携带下列参数:Cookie1、Nonce1索引、HoA令牌。

    (5)MN收到COT和HOT消息,核查消息中回送的Cookie,确认是CN发回的应答后,根据HoA令牌和CoA令牌生成一个绑定管理密钥Kbm,如式(3)所示。

    Kbm=SHA1(HoA令牌 | CoA令牌)   (3)

    然后构建移动头部,头部中包含以下参数:绑定更新报文、nonce1索引、nonce2索引、认证数据。其中,认证数据如式(4)所示,移动数据如式(5)所示。

    认证数据=First(96,MAC(Kbm,移动数据)               (4)

    移动数据=CoA|CN地址|移动头数据(除认证数据以外)        (5)

    最终形成绑定更新消息发往CN,消息的源地址是CoA。

    (6)CN收到绑定更新消息后,根据消息中携带的索引找回nonce1和nonce2,重新计算得出Kbm,进而算得认证数据,与绑定更新消息中携带的认证数据对比,如相等就表示HoA和CoA的确汇聚于同一节点,于是就接受该绑定更新请求,并向MN回送绑定确认消息,确认消息中也带有认证数据。

6.3 其他安全保护
    其他安全保护包括扩展头部和移动前缀发现的保护。

    考虑的扩展头部包括家乡地址选项和路由选择头部,这两个扩展只有在CN已经接受MN的绑定更新以后才能使用。因此,CN在收到一个包含家乡代理选项的报文时,应检查其绑定缓存区,核实是否存在家乡地址选项中的地址(HoA)和报文源地址(CoA)的绑定。如不存在,应丢弃该报文,并回送绑定错误报文。

    对于第二类路由扩展报头,规定其中只能包含一个地址,且必须是HoA,而且只有当某节点是MN时才会处理该扩展报头,这样它能判断报头中的地址是否就是其自身的地址,防止报文被中继到其他无关的节点。

    用于移动前缀发现的MPS和MPA消息的保护机制和家乡代理绑定更新的保护机制大体上相同,差别只在于安全策略和安全关联的设置中,被保护的协议应该是互联网控制报文协议(ICMP),而不是绑定更新时的移动头。(待续)

收稿日期:2008-07-21