IPSec结构及其应用*

发布时间:2003-11-26 作者:毛剑 Mao Jian 杨波 Yang Bo 阅读量:

文章编号:1009-6868(2001)05-0026-05 文献标识码:A 中图分类号:TN918.91

*国家自然科学基金资助项目(批准号:19931010)

  1 IPSec的作用

  1997年,CERT(Computer Emergency Response Team)在其年度报告中列举了150 000个站点的2 500多个安全事故,其中最为严重的有两类:第1类是IP欺骗,即入侵者以虚假IP地址建立数据包,以欺骗基于IP认证的应用程序;第2类是各种类型的窃听和数据包嗅探,以获取合法用户的登录信息和其他数据。因此安全的IP协议应有必要的认证和加密功能。

  IPSec通过在IP层对所有业务流加密和认证,保证了所有分布应用程序(包括远程登录、客户机/服务器、电子邮件系统、文件传输、Web访问等)的安全性,因此可提供网络内(包括局域网、广域网等)或网际间的安全通信。例如:

  (1)公司可在因特网或公用广域网上建立自己的安全虚拟专用网,从而可节省建立和管理自己专用网的支出。

  (2)配备有IPSec系统的终端用户,可在本地呼叫因特网服务提供商(ISP)以获取对某一公司网络的安全访问。

  (3)IPSec不仅能用于建立内部网中的连接,而且也能用于建立与外部网的安全连接。

  (4)某些Web应用程序和电子商务应用程序即使已有自己的安全协议,但使用IPSec可增加它们的安全性。

  图1是IPSec应用示例,图中有一个用户系统和两个LAN。LAN内的通信未考虑安全性,然而从用户系统和LAN发出通信业务流时,都需在网际设备中使用IPSec协议。网际设备指路由器或防火墙等设备,用于将LAN连接到外部网中。网际设备对发往WAN的业务流进行加密和压缩,对来自WAN的业务流进行解密和解压缩。以上运算对LAN上的工作站和服务器来说都是透明的。


图1 IPSec应用示例

  IPSec的使用场合和作用为:

  • IPSec用于防火墙和路由器等网际设备,可为通过网际设备的业务流提供强安全业务,且在LAN内(比如一个公司的LAN)的业务无需进行安全性处理。
  • IPSec用于防火墙,可防止使用IP的业务流绕过防火墙。
  • IPSec位于传输层(TCP、UDP)之下,所以它对应用程序来说是透明的。且当IPSec用于防火墙或路由器时,无需修改用户或服务器所使用的软件。即使IPSec用于端系统时,上层软件(包括应用程序)也不受影响。
  • IPSec对终端用户来说是透明的,因此无需对用户进行安全培训,同时也无需对用户发放或撤销密钥材料。

  IPSec除了支持终端用户、保护系统和网络外,还在网络互联所需的路由结构中起着重要的作用。IPSec能保证:路由通告(新路由器用于向外界通告自己)来自一个被授权的路由器;邻居通告(路由器用于建立或维护与其他路由域中路由器的邻居关系)来自一个授权的路由器;重新定向的消息来自于数据包上次到达的路由器;路由的更新不被伪造。

  2 IPSec的结构

  IPSec在IP层提供安全业务的方式是让系统选择所要求的安全协议、决定所需的算法和密钥。安全协议有两个:一是由协议的报头,即认证报头(AH)指定的认证协议;二是由协议数据包格式,即封装的安全负载(ESP)指定的将加密和认证结合起来的协议。安全业务有访问控制、无连接的完整性、数据源的认证性、对重放数据包的拒绝、保密性、受限的业务流保密性。

  表1显示AH指定的协议(简称AH协议)和ESP指定的协议(简称ESP协议)所能提供的安全业务,其中ESP又分为仅加密和加密认证结合两种情况。

  表1 IPSec的安全业务

AH

ESP(有加密)

ESP(有加密和认证)

访问控制

无连接的完整性

 

数据来源的认证

 

对重放数据的拒绝

保密名性

 

受限业务流的保密性

 

  本节介绍IPSec结构中的两个主要概念:安全关联和模式。

  2.1 安全关联

  安全关联(SA)是指由IPSec提供安全服务的业务流的发方到收方的一个单向逻辑关系,用来表示IPSec为SA所承载的数据通信提供安全服务。其方式是使用AH或ESP之一,一个SA不能同时使用AH和ESP保护。因为SA是单向的,所以两个系统之间的双向通信需要两个SA,每个方向一个。

  一个SA可由3个参数惟一地表示为:

  <安全参数索引,目标IP地址,安全协议标识符>

  3个参数的含义分别为:

  • 安全参数索引(SPI):赋值给该SA的比特串。其位置在AH和ESP报头中,作用是使接收系统对收到的数据包能够选择在哪个SA下进行处理,所以SPI只有本地意义。
  • 目标IP地址:即SA中接收方的IP地址。该地址可以是终端用户系统或防火墙、路由器等网际设备的地址。目前的SA管理机制只支持单目传送地址(即只指定一个用户或网际设备的地址)。
  • 安全协议标识符:该标识符表示SA使用的协议是AH协议还是ESP协议。

  所以对任何IP数据包,通过IPv4或IPv6报头中的目标地址以及封装扩展报头(AH或ESP)中的SPI,对SA惟一地识别。

  2.2 AH和ESP的两种使用模式

  AH和ESP的两种使用模式分别是传输模式和隧道模式,这里先介绍两种模式的一般概念,具体使用方式在下节。

  (1)传输模式

  传输模式主要用于对上层协议的保护,即将其保护推广到IP数据包的负载,如TCP数据段、UDP数据段或ICMP(Internet Control Message Protocol)数据包。传输模式典型地用于两个主机的端?端通信。在IPv4中,负载指位于IP报头之后的数据。在IPv6中,负载指IP报头和扩展报头(除目标地址选项)之后的数据,而目标地址选项也和负载一起受到保护。

  (2)隧道模式

  隧道模式用于对整个IP数据包的保护,它是将一个数据包用一个新的数据包包装,即给原数据包加一个新的报头,称为外部报头,这样原数据包就成为新数据包的负载。因此原数据包在整个传送过程中就像在隧道中一样,传送路径上的路由器都无法看到原数据包的报头。由于封装了原数据包,新数据包的源地址和目标地址都与原数据包不同,从而增加了安全性。

  隧道模式用于SA关系中至少一方是安全的网关,如实现IPSec的防火墙或路由器。通过网关进入局域网中的通信则无需使用IPSec予以保护,而从局域网通过网关发出的数据包则由网关中的IPSec软件建立起隧道模式的安全关联,并以隧道模式发送。

  3 认证报头

  认证报头(AH)用于保证IP数据包的数据完整性、认证性,并用于防地址欺骗攻击、消息重放攻击等。其认证性由消息认证码(MAC)实现,因此要求通信双方有共享的密钥。

  认证报头有以下数据字段(如图2所示):


图2 认证报头格式

  • 下一报头:字段长为8bit,用来标识下一数据包的报头。
  • 负载长度:字段长也为8bit,其值(即负载长度)为以32bit字为单位的AH长度减2(单位为字)。例如:“认证数据”字段的默认长度为96bit,即3个字,此时AH总长为6个字,所以负载长度为4(单位为字)。
  • 保留:字段长为16bit,留待将来可能出现的新用途使用。
  • 安全参数索引(SPI):字段长32bit,其用途在前面已解释过。
  • 序列号:字段长32bit,为单调递增的计数器。
  • 认证数据:为可变长字段,但长必须为32bit的整数倍。字段的值为本数据包所用的完整性检验值(ICV),即MAC。

  所以,AH总长为96bit固定部分加上认证数据的可变长部分。AH报头中的“序列号”字段用于防止敌手截获已经过认证的数据包后实施重放攻击。认证报头(AH)中,字段“认证数据”的值称为完整性校验值。ICV是由MAC算法产生的消息认证码或截短的消息认证码。当前规定的算法为HMAC-MD5-96或HMAC-SHA-1-96,表示MAC算法为HMAC,所用杂凑算法分别为MD5和SHA,96表示“认证数据”的默认字段长,因此由HMAC产生出的消息认证码还需被截短,截短方式为取前96bit。

  AH有两种使用模式:传输模式和隧道模式。

  • 传输模式
      前面已说过传输模式典型地用于两个主机之间的端?端通信,而网关可以不支持传输模式。这种模式中,将认证报头(AH)插到原始IP数据包的报头后面,其作用是对IP报文除可变字段外的其它字段提供认证功能。传输模式的优点是额外开销较小,缺点是无法对可变字段进行保护。

  • 隧道模式
      隧道模式下,将需保护的原数据包用一个新数据包包装,即将原数据包作为新数据包的负载,称新数据包为隧道数据包。然后再对隧道数据包使用传输模式的AH,即将AH插到隧道数据包中新IP报头的后面。
      隧道模式的主要优点是可对被封装的数据包进行完全的保护,缺点是有额外的处理开销。

  4 封装安全负载

  封装安全负载(ESP)用于提供保密性业务,包括对消息内容的保密和有限的通信流量的保密。ESP也提供作为可选项的认证业务。

  (1)ESP数据包格式

  如图3所示,ESP数据包包括以下字段:


图3 ESP数据包格式

  • 安全参数索引(SPI):字段长32bit,用于标识SA关联。
  • 序列号:字段长32bit,为一个单调递增的计数器,用于防止重放攻击。
  • 负载数据:字段长可变,为经加密保护的传输层数据段(传输模式时)或IP数据包(隧道模式时)。
  • 填充:字段长范围为0到255字节,其作用下面介绍。
  • 填充长度:字段长8bit,表示前一字段以字节为单位长度。
  • 下一报头:字段长为8bit,通过表示负载数据的第一个报头(如IPv6的一个扩展报头或TCP等上层协议),来表示负载数据的数据类型。
  • 认证数据:字段长可变(然而必须是32的整数倍),为前面各字段计算出的完整性校验值(ICV)。

  (2)ESP所用的加密算法和认证算法

  ESP保密业务为负载数据、填充、填充长度、下一报头4个字段提供加密。如果加密算法需要初始向量,则将初始向量以明文形式放在负载数据头部。ESP要求支持CBC模式的DES,同时支持的加密算法还有:3个密钥的三重DES、RC5、IDEA、CAST、Blowfish等。

  和AH一样,ESP支持的消息认证码默认长度为96bit,支持的算法为HMAC-MD5-96和HMAC-SHA-1-96。

  (3)填充

  填充的作用有:

  • 如果加密算法要求明文长为某一字节的倍数(如分组加密算法明文长为分组长的倍数),则通过填充可将明文(包括负载数据、填充、填充长度、下一报头)扩展为所需的长度。
  • ESP的格式要求“填充长度”字段和“下一报头”字段在一个32bit的字中是右对齐的,填充用于保证这种对齐。
  • 通过填充可隐藏负载数据的实际长度,因此还能对业务流提供部分保密性。

  (4) ESP的使用模式

  与AH一样,ESP的两种使用模式也为传输模式和隧道模式。

  • 传输模式
      与AH一样,传输模式的ESP也用于两个主机之间的端?端通信。这种模式中将ESP报头插入到原始IP数据包的报头后面,而ESP报尾和认证数据则放在原始数据包的负载之后。传输模式下的ESP未对原始IP报头提供加密和认证,这是它的一个缺点,因为误传的数据包也会交给ESP处理,且敌手有可能对所传的数据包进行业务流量分析。它的优点是对原始IP数据包的长度增加很少,因此处理开销增加不多。

  • 隧道模式
      和AH一样,隧道模式也用于在SA关系中至少有一方是安全的网关。这时将需保护的数据包用一个新数据包包装,即将原数据包作为新数据包的负载,称新数据包为隧道IP数据包,然后再对隧道IP 数据包实施传输模式的ESP。
      由于原始数据包成了新数据包的负载,因此原始数据包得到了完全的安全性保护。不过新IP报头仍是未加保护的。隧道模式下,外层报头(即新IP报头)中的IP地址可以和内部报头(即原始报头)的IP地址不一样。例如,两个网关可以通过ESP隧道对它们之间的全部流量进行安全保护。

  5 SA的组合

  一个SA能够实现AH协议或ESP协议,但却不能同时实现这两种协议。然而有些业务流可能要求同时实现两种协议,即要求在主机间和网关间都实现IPSec业务。这时就要求建立起多个SA以实现所需的IPSec业务,称这种多个SA序列为SA束,同一束上的SA的端点可以相同也可不同。

  创建SA束的方式有以下两种:

  • 传输相邻:指对同一IP数据包多次应用非隧道模式的AH和ESP两种协议。在这种方式下,只允许将AH和ESP组合为一层,这是因为只有数据包的目标方才对其进行处理,嵌套方式不会增加任何好处。
  • 重复隧道方式:指对同一IP数据包在隧道模式下多次使用两种协议,即每使用一次协议,都生成一个新的IP数据包,下一协议再对数据包封装。由于各个隧道的起点和终点可以不同,所以这种方法允许使用多层嵌套。

  以上两种方式可以结合起来使用,例如两个网关之间的SA使用重复隧道方式,而在网关之间的部分路段上的主机之间的SA使用传输相邻方式。

  6 密钥管理

  IPSec的密钥管理包括密钥的确定和密钥的分布,分为手工密钥管理和自动密钥管理:手工方式指系统管理员以手工方式为每一系统配置该系统自己的密钥和其它系统的密钥,该方式仅在相对稳定的小环境中才有实际价值;自动方式是指系统能够自动地按要求为SA产生密钥,该方式对分布式、大系统的密钥管理极为方便。

  IPSec默认的自动密钥管理协议称为ISAKMP/Oakley。该协议包括两部分:

  • Oakley密钥确定协议:Oakley是基于Diffie-Hellman算法的密钥交换协议,但与Diffie-Hellman算法相比,Oakley又提供了额外的安全性。
  • 因特网安全关联和密钥管理协议(Internet Security Association and Key Management Protocol):ISAKMP提供了一个因特网密钥管理框架,并为安全属性的协商提供了特定的协议支持。

  ISAKMP本身并未指定密钥交换算法,而是由一些消息类型构成,这些消息类型分别指定了不同的密钥交换算法。Oakley是初版ISAKMP使用的指定密钥交换算法。

  7 IPSec的研究前景

  今天,很难预料IPSec技术以什么样的形式在网上得到广泛的应用。市场驱动着技术的使用;同样,已使用的IPSec技术又改变着市场在选择下一个应用范围时的意向。要使IPSec更好地工作,系统集成或者分离的IPSec产品(或者两者)的下列研究领域将很重要:

  • 当为网络环境实现安全策略管理时,IPSec的抽象定义;
  • 作为网络安全子系统的IPSec管理模型的定义;
  • 在IPSec范围下可以实现和提供的函数以及服务的净化;
  • 功能块的净化,使其可以在IPSec和通用安全框架的其他组件之间共享。

  参考文献
1 RFC2401: Security Architecture for the Internet Protocol
2 RFC2402:IP Authentication Header
3 RFC2406:IP Encapsulating Security Payload (ESP)
4 RFC2408:Internet Security Association and Key Management Protocol (ISAKMP)

[摘要] IPSec提供IP层的安全服务,通常是通过让系统选择所需的安全协议,确定服务所需算法,加载密钥以提供所需服务来实现这一目的。IPSec可用于保护主机间、安全网关间或安全网关?主机间的一条或多条路径。文章介绍了IPSec的作用与结构,并对其基本构件进行了详细的阐述。

[关键词] IPSec 安全关联 认证报头 封装安全负载 密钥管理

[Abstract] IPSec provides security services at the IP layer by enabling a system to select required protocols, determine the algorithms to use for the services, and put in place any cryptographic keys required to provide the requested services. IPSec can be used to protect one or more “paths” between a pair of hosts, between a pair of security gateways, or between a security gateway and a host.
  The structure and the application of IPSec are discussed and the fundamental components of the IPSec architecture are introduced in this paper.

[Keywords] IPSec Security association Authentication header Encapsulating security payload Key management