第3章 IPSecVPN IPSec技术能够保障局域网、各种类型的广域网以及Internet环境中各种类型的信 息在网络传输过程中的安全。IPSec技术应用于IP 层,以数据包为处理对象,实现了高 强度的安全性保障,具体表现为对数据源进行全面验证、对处于无连接状态的数据进行完 整性检验、对数据开展机密性和抗重放的检查,以及对有限的业务流所具有的机密性实施 检验等各种安全性作用。而运行在系统中的各种类型的应用程序都可以得到在IP 层建 立的密钥以及其他安全机制提供的保障,而不需要独立设计和执行各自的安全保护机制, 这就使得系统中的密钥协商所需的系统资源大大减少,同时在统一的安全保证下,能够明 显降低安全漏洞的出现概率。因此,IPSecVPN 是目前比较流行的VPN 实现方案。本 章将对IPSecVPN 的原理与实现进行详细讲解,通过对本章的学习,应了解IPSec协议 族,掌握IPSec技术的原理及实现过程。 3.1 IPSec概述 3.1 IPSc协议族 1.e IPSeItre是ItreIETF) 以保 c(nent协议安全性) nent工程任务组(制定的一系列协议, 证在Internet上传送数据的安全保密性。特定的通信方之间在IP 层通过加密与数据源 验证来保证数据包在Internet上传输时的私有性、完整性和真实性。 IPSec通过两个安全协议来实现对IP 数据包或上层协议的保护,在实现过程中不会 对用户、主机或其他Internet组件造成影响。IPSec主要依赖密码技术提供认证和加密 机制,它是现代密码技术在通信领域的应用范例。 IPSec作为网络安全的一个重要协议族,定义了在网络层使用的安全服务,其功能体 现了网络安全的大部分需求,包括数据加密、对网络单元的访问控制、数据源地址验证、数 据完整性检查和防止重放攻击。 3.2 IPSc的体系结构 1.e IPSec是一个关于开放标准的框架,它给出了应用于IP 层上的网络数据安全的体系 结构,包括AH(认证头)协议、ESP(封装有效载荷)协议、IKE(密钥管理协议)协议以及用 第3章IPSecVPN 于用户身份认证和数据加密的一系列算法。IPSec的体系结构可分为7个部分,如图3-1 所示。 图3-1IPSec体系结构 (1)AH协议。定义了认证头进行的身份认证、数据包格式及相关的服务。其主要 功能有数据源验证、数据完整性校验和防止重放。 (2)ESP协议。定义了有关数据包加密(可选身份认证)、数据包格式和相关的服务。 它除了提供AH协议的所有功能之外,还提供IP数据包加密功能。 (3)加密算法。描述如何将AES 、DES 、3DES等加密算法应用于ESP协议中。 (4)认证算法。描述如何将MAC2MD5 、HMAC2SHA21等各种身份认证算法应用 于AH协议和ESP协议中。 (5)IKE协议。用于管理两个通信实体之间密钥的生成、分发和更新等。例如, IKE 协议能够实现自动建立加密、认证的安全信道以及密钥的自动安全分发和更新。 (6)解释域(DomainofInterpretation,DOI )。用于存放密钥管理协议协商的参数, 如加密及认证算法的标识符、参数等。 (7)安全策略(SecurityPolicy,SP )。用于决定两个通信实体之间如何通信。其核心 由3个部分组成:SA(安全联盟)、SAD(SecurityAsociationDatabase,安全联盟数据库) 以及SPD(SecurityPolicyDatabase,安全策略数据库)。 在IPSec的体系结构中,AH协议和ESP协议是安全处理协议,这两个协议既可以单 独使用,又可以同时使用,前者提供数据完整性保护,后者提供数据保密性和数据完整性 保护。两个协议都是将一个可变长度的数据包结构插入IP头与上层协议之间。AH协 议首先使用协商好的算法和密钥计算整个数据包不变部分的摘要值,然后将此摘要值作 为数据包完整性的证据保存在身份认证头结构中。ESP协议则将原始数据包加密后作 为载荷携带在数据包中。此外,ESP协议也可以实现数据完整性验证,但是与AH协议 包含的字段不同。表3-2节 1给出了这两种协议的比较。这两种协议的实现原理将在3. 详细叙述。 53 VPN 技术与应用 表3- 1 AH 协议与ESP 协议的比较 安全特性AH ESP 网络层的IP 协议号51 50 提供数据完整性验证是是 提供数据源验证是是 提供数据加密否是 防止重放是是 与NAT 协议一起工作否是 保护IP 数据包是否 只保护数据否是 3.3 IPSc的关键概念 1.e 本节对IPSec的关键概念进行介绍。 (1)安全联盟(SA )。包括协议、算法、密钥等内容,具体确定了如何对IP 数据包进 行处理。安全联盟是单向的,在两个安全网关之间进行双向通信时,需要两个安全联盟来 分别对输入数据流和输出数据流进行安全保护。安全联盟由一个三元组来唯一地标识, 这个三元组包括安全参数索引、目的IP 地址和安全协议号(AH 或ESP )。 (2)安全联盟数据库(SAD )。用于存放安全联盟的所有状态数据的存储结构。 (3)安全参数索引是一个32b 的数值,在每一个IPSec包中都携带该数值。由安全 参数索引、目的IP 地址、安全协议号组成的三元组唯一地标识一个特定的安全联盟。手 工配置安全联盟时需要手工指定安全参数索引,为保证安全联盟的唯一性,必须使用不同 的安全参数索引来配置安全联盟。IKE 协议产生安全联盟时,使用随机数来生成安全参 数索引。 (4)安全策略,由用户手工配置,规定对什么样的数据流采用什么样的安全措施。一 条安全策略由名字和顺序号共同标识。 (5)安全策略数据库(SPD )。是所有具有相同名字的安全策略的集合,用来指明所 有IP 数据包文应使用何种安全服务以及如何获得这些服务的数据结构。当一个接口需 要对外建立多条安全隧道时,必须采用这种形式。使用SPD 时需要明确一个原则:任何 一个端口都只能应用一个安全策略库,任何一个安全策略库也只能应用于一个端口。 (6)数据封装。是指将AH 协议或ESP 协议相关的字段插入原始IP 数据包中,以 实现对数据包的身份认证和加密。 (7)安全隧道。是点对点的安全连接。通过在安全隧道的两端(本端和对端)配置 (或自动生成)对应的安全联盟,实现IP 数据包的本端加密和对端解密。安全隧道可以跨 越多台路由器和网络,只有安全隧道的两端共享了秘密;对于隧道中间的路由器和网络, 所有的加密数据包和普通数据包一样被透明地转发。 (8)安全网关。是指具有IPSec功能的网关设备(安全加密路由器)。安全网关之间 54 第3章 IPSecVPN 可以利用IPSec对数据进行安全保护,以保证数据不被偷窥或篡改。 3.1.4 IPSec的工作模式 IPSec在对数据进行封装时有两种模式,AH 协议和ESP协议都支持这两种封装模 式,即传输模式和隧道模式。前者在原始IP头与上层协议之间插入AH 协议头或ESP 协议头,后者则是增加新的IP头,将原始IP头和原始IP数据包本身都作为载荷。 1. 传输模式 传输(transport)模式下的安全协议主要用于保护上层协议数据包,仅传输层数据用 来计算安全协议头,生成的安全协议头以及加密的用户数据(仅针对ESP封装)被放置 在原IP头后面。即在传输模式下,不对原始数据包进行重封装,只是把新添加的认证 头当成原始IP数据包的数据部分进行传输。传输模式封装的IP数据包结构如图3-2 所示。 图3-2 传输模式封装的IP数据包结构 当要求端对端(end-to-end)的安全保障,即数据包进行安全传输的起点和终点为数 据包的实际起点和终点时才可以使用传输模式,因为此时不用对用户发送的IP数据包进 行重封装,只需要实现端对端的通信即可。IPSec的传输模式如图3-3所示。 图3-3 IPSec的传输模式 2. 隧道模式 隧道(tunnel)模式下的安全协议用于保护整个IP数据包,即用户的整个IP数据包 都被用来计算安全协议头,生成的安全协议头以及加密的用户数据被封装在一个新的IP 数据包中。也就是在隧道模式下,封装后的数据包有内、外两个IP头,其中的内部IP头 为原IP头(RawIPHeader),外部IP头(NewIPHeader)是新增加的IP头。隧道模式封 装的IP数据包结构如图3-4所示。 在隧道模式中,如果采用了AH 协议,就无法实现NAT 穿越。这是因为,如果有 55 VPN技术与应用 图3-4 隧道模式封装的IP数据包 NAT设备,最外层IP头的地址信息一定会发生变化。AH 协议的认证范围是整个新生 成的IP数据包,只要发生了数据变化则会导致认证失败。而如果单独采用ESP协议,认 证范围则不包括“新IP头”和“ESP认证数据”这两个字段,原始IP头信息不会发生变化, 所以单独采用ESP作为安全协议时是可以穿越NAT的。 隧道模式在两台主机点对点(site-to-site)连接的情况下,原始IP头放在了AH 或 ESP头之后,隐藏了内网主机的私网IP地址,可保护整个原始数据包传输的安全。隧道 模式通常用于保护两个安全网关之间的数据,实现点对点的安全连接。IPSec的隧道模 式如图3-5所示。 图3-5 IPSec的隧道模式 3. 两种模式的比较 从安全性来讲,隧道模式优于传输模式,因为隧道模式可以完全地对原始IP数据包 进行认证和加密,隐藏客户机的私网IP 地址,而传输模式中的数据加密不包括原始 IP头。 从性能来讲,因为隧道模式有一个额外的IP头,所以它将比传输模式占用更多带宽, 有效传输率较低。 从应用场景来讲,传输模式在AH 协议或ESP协议处理前后IP头保持不变,主要用 于端对端的应用场景,适用于主机到主机方式数据包的处理;隧道模式在AH 协议或 ESP协议处理之后再封装一个外网IP头,主要用于点对点的应用场景,适用于转发设备 上作为封装处理的场景。 此外,使用传输模式有以下充要条件:要保护的数据流必须完全在发起方和响应方 的IP地址范围内。因此,可以使用传输模式的情况受到较大的限制。 56 第3章 IPSecVPN 3.2 IPSecVPN 技术 3.2.1 IPSec加密传输 1. IPSec 对IP 数据包的处理 1)对发送数据包的处理流程 在操作系统的IP协议栈中,在数据包被从网络设备发送出去之前截取IP数据包,然 后从中提取选择符信息,据此搜索SPD可能会产生如下结果: (1)安全策略决定丢弃此数据包,则直接丢弃,或向源主机发送ICMP信息。 (2)安全策略决定放行,则直接将数据包投放到网络设备的发送队列。 (3)安全策略决定应用IPSec。此时安全策略指向一个SA,可以根据它进行安全处 理;如果需要的SA 不存在,则触发IKE模块协商建立SA,在协商周期内,数据包进入等 待队列,等待协商完成,若协商超时,也会丢弃该数据包。 2)对接收数据包的处理流程 系统收到IP数据包后,从IP头及TCP/UDP头中提取选择符信息,搜索SPD。如果 该IP数据包不是IPSec数据包,则直接进行网络转发处理或者交给上层协议处理;如果 它是IPSec数据包,则依照如下流程处理: (1)从IP数据包中提取出三元组(SPI、目的IP地址和安全协议号),并査找SAD,定 位SA。如果没有SA,则丢弃该IP数据包,并记录日志。 (2)由上一步获得的SA 进行IPSec处理。 (3)由SA 指向的SP 确定对IP 数据包的处理,决定交给上层协议处理还是继续 转发。其 中,第(1)、(2)步会循环处理,直到处理到上层协议(TCP/UDP),或者内部IP数 据包为非本地目的地址,需要转发该IP数据包。 2. IPSec 加密传输流程 一个IP数据包到达安全加密路由器的端口1后,路由器首先根据此数据包的源IP 地址和目的IP地址、端口号、协议号査询本端口引用的访问控制列表,以确定是否允许其 通过,然后查询路由表,最后将此数据包送到端口2。 数据包到达此加密路由器端口2后,将数据包的IP头提取出来与访问控制列表对 照,如果发现此数据包需要加密,便将其交给IPSec来处理。IPSec加密传输流程如图3-6 所示。 IPSec首先根据查询访问控制列表的结果,将对应的SA 的信息与IP头放到IPSec 队列中,逐一处理。然后,IPSec将根据该数据包指定的SA 的配置进行如下操作: (1)检査此SA 所用的封装模式。如果是隧道模式,则将原IP数据包整个当作数据 进行加密;如果是传输模式,则将IP头提取出来,只对数据段进行加密。 (2)不论是隧道模式还是传输模式,加密数据的方式都是一致的。此阶段有两种方 57 VPN技术与应用 图3-6 IPSec加密传输流程 式(由SA 引用的转换方式配置决定):一种是AH 协议方式,另一种是ESP协议方式。 (3)加密完成后,IPSec根据转换方式(隧道模式或传输模式)为新的数据加上新的 IP头。对于隧道模式,IPSec会将SA 配置中设置的隧道入口和出口的IP地址作为新的 源IP地址和目的IP地址,根据使用的协议产生一个新的IP头;对于传输模式,IPSec会 将原来的IP头直接放在数据的前面,但安全协议号已经修改成了AH 或者ESP。 至此发送端的工作完成。接收端的工作与之类似,只是处理的方式相反,后面将对此 进行详细讲述。 3.2.2 AH 协议的原理及运行方式 1. AH 协议 AH 协议主要提供3个安全功能:数据完整性服务、数据验证、防止数据重放攻击。 AH 的工作原理是在每一个数据包上添加一个身份认证头。这个身份认证头包含一 个带密钥的散列值(可以将其当作数字签名,但不使用证书),此散列值在整个数据包中计 算,因此对数据的任何更改都将导致散列值无效,因此该过程提供了完整性保护。 AH 头位置在IP头和传输层协议头之间。AH 协议由IP协议号51标识,该值包含 在AH 头之前的协议头(如IP头)中。AH 可以单独使用,也可以与ESP协议结合使用。 ESP协议也提供可选择的认证服务,AH 协议与ESP协议的认证服务的差别在于它们计 58 第3章 IPSecVPN 算时所覆盖的范围不同。 AH 头结构如图3-7所示。 图3-7 AH 头结构 在AH 头结构中,各个字段的含义如下。 (1)下一个头:指定被封装的数据的协议,协议号是由Internet数字分配机构(Internet AssignedNumbersAuthority,IANA)定义的。 (2)有效载荷长度:定义了AH 头的长度,不包括其外面的IP 头和封装的数据 长度。 (3)保留字段当前没有使用。 (4)安全参数索引:由接收端的设备为单向连接分配的一个数字,它可以区分从这 台设备的一个连接和另一个连接或是其他端对端设备出去的流量。这个字段长为4B。 (5)序列号:指定通过数据连接的每一个数据包的独立的号码,该字段可用于检测 重放攻击。 (6)验证数据:包含ICV(IntegrityCheckValue,完整性校验值)和其他数据,其中 ICV为数据包提供了验证信息,它是利用MD5 或SHA-1 HMAC 功能产生的数字 签名。 对于AH 协议的功能有以下两点需要注意: (1)AH 的保护服务中不包括数据加密,因此AH 通常使用在内部网络中。 (2)AH 不能与NAT联合工作的原因是:NAT改变了源IP地址与目的IP地址,但 是AH 在建立ICV 时需要使用这些字段。 2. 传输模式下AH 的封装 AH 用于传输模式时,提供基于主机到主机的安全通信。AH 头紧跟在IP头之后、 上层协议头(如TCP头)之前,对这个数据包进行保护。传输模式下AH 的封装结构的对 比如图3-8所示。 3. 隧道模式下AH 的封装 AH 用于隧道模式时,提供基于网关和主机的安全通信。在隧道模式下,AH 协议封 装整个IP数据包,并在AH 头外部再封装一个IP头,内部IP头的源IP地址和目的IP 地址是最终的通信两端的IP地址,而外部IP头的源IP地址和目的IP地址是隧道的起 止端点的IP地址。在隧道模式下,AH 协议保护了整个内层IP数据包。与传输模式类 59 VPN技术与应用 图3-8 传输模式下AH 的封装结构 似,AH 头的位置也是紧接在最外面的IP头之后。隧道模式下AH 的封装结构如图3-9 所示。 图3-9 隧道模式下AH 的封装结构 4. AH 处理流程 AH 的工作主要涵盖了对于数据包的发送处理和接收处理,在发送的时候主要添加 相应的AH 头,而在接收的时候主要进行相应的数据解码处理。 1)对发送数据包的处理流程 AH 的验证数据包产生一个完整性验证值(ICV)。在接收方,通过重新计算ICV 并 与收到的发送方计算的ICV 进行比较,判断AH 提供保护的数据是否遭到篡改。 AHICV 的计算数据包括IP头中的值(这些值必须满足的条件是传输中不变或在 AH 处理前的变化可预测)、AH 头中的数据、可能有的填充字节和高层协议数据。 按照AH 头中各字段的出现顺序,对各字段的构造、处理过程说明如下: (1)下一个头字段的取值来自跟在AH 头后的数据的协议号。有效载荷长度代表从 序列号字段开始的AH 头长度(以32b为单位)。安全参数索引的值来自AH SA 中 的SPI。 (2)创建一个外出SA 时,发送方的计数器被清零(初始化),每次利用这个SA 构造 一个AH 之前,发送方将计数器加1并将新值填入序列号字段,这样就能保证每个AH 头中的序列号是唯一的、单调递增的。根据是否提供防重放服务,发送方对序列号的溢出 处理不同。若接收方允许防重放功能(默认),则发送方在计数器溢出之前要创建新的 SA;若接收方禁止防重放功能,则发送方只需将计数器递增,在序列号等于最大值(232-1) 后,将计数器重新清零。 (3)在进行ICV 计算之前,AH 头中的验证数据字段必须被清零。因为与ESP相 60 第3章 IPSecVPN 比,AH 将验证服务覆盖范围扩展到之前的IP头,因此必须将IP头中取值不定的字段清 零,这样,在传输过程中,中间设备对这些字段的修改不会影响数据包中数据的完整性。 (4)在需要填充的情况下,填充可分为隐式和显式两种。根据验证算法的需要,在 ICV 计算之前,隐式填充数据被添加到数据包的尾部,填充长度由算法决定,内容必须清 零,并且不随数据包一起传输;而显式填充的长度取决于ICV 的长度和IP 协议版本 (IPv4或IPv6)。填充的内容可以任意选择,位于验证数据之后的这些填充包含在ICV 计算中,并且随数据包一起传送。 (5)计算好的ICV 被复制到AH 头中的验证数据字段。至此AH 处理结束,处理后 的数据包可以继续进行下一步处理。 2)对接收数据包的处理流程 在AH 处理之前,可能需要重组收到的IP数据包。对于接收方AH 而言,必须丢弃 需要处理的IP数据包的分片。根据AH 处理之前检索到的AH SA,具体的处理过程 如下: (1)若接收方指定这个SA 禁止防重放服务,则无须对序列号进行检查;反之,对接 收到的每个数据包,必须首先验证其序列号,确保在该SA 的作用时间内该序列号没有重 复出现。使用滑动接收串口和位掩码检查重复的数据包。若检查失败,则这个数据包被 丢弃。 (2)对通过序列号检查的数据包进行ICV 验证。第一步,将数据包中的验证数据字 段中的ICV 保存下来,然后将该字段清零。第二步,接收方根据AHSA 指定的验证算 法,选择与发送方一致的计算范围(可能需要隐式填充)进行ICV 计算,将计算的结果与 保存的ICV 值相比较。若两者不一致,则接收方丢弃这个无效的IP数据包;否则,表明 ICV 检查成功,接收方更新接收窗口。 (3)ICV 验证完成之后,应比较SA 对应的SPD条目所采用的安全策略和这一数据 包所采取的保护方式之间的异同,完成对两种安全方式的一致性检验。 3.2.3 ESP协议的原理及运行方式 1. ESP 协议 ESP协议提供了对数据的第3层保护。它提供了与AH 协议同类型的服务,但有以 下两点例外: (1)ESP提供对用户数据的加密服务。 (2)ESP的数据验证和完整性服务只包括ESP头和有效载荷,不包括外部的IP头。 因此,如果外部IP头被破坏,ESP无法检测到,而AH 可以检测到。 ESP协议包结构如图3-10所示。 (1)安全参数索引(SPI):标识一个安全连接,与AH 头中的SPI字段相同。需要指 出的是,SPI本身可以被验证,但不会被加密,否则无法处理。 (2)序列号:一个单调递增的计数器的值,同AH 头中的序列号字段相同,主要为了 抵抗重放攻击。同样,序列号也不会被加密。 61 VPN技术与应用 图3-10 ESP协议包结构 (3)有效载荷数据:长度可变,为加密的传输数据。 (4)填充字段:长度为0~255B,用于将明文扩充到规定的长度,以保证边界的正确, 同时隐藏有效载荷数据的实际长度。 (5)填充字段长度:表示填充字段填充的字节数。 (6)下一个头:标识下一个头的类型,从而表示有效载荷数据的类型。在传输模式 下,该字段是处于保护中的IP上层协议(如UDP或TCP)的协议类型值;在隧道模式下, 该字段的值为4。 (7)验证数据:与AH 头中的验证数据字段相同,ICV 的长度必须是32b的整数倍, 是在前面字段基础上计算的完整性校验值。 2. 传输模式下ESP 的封装 ESP用于传输模式时,只能用于基于主机到主机的IP网络安全通信,且此时只能保 护IP网络层之上的协议(如TCP)数据,而不包括IP头。传输模式下的ESP封装头紧接 在IP头之后、上层协议头之前(在协议嵌套模式下,则位于其他IPSec协议头之前)。传 输模式下ESP的封装结构如图3-11所示。 图3-11 传输模式下ESP的封装结构 3. 隧道模式下ESP 的封装 当ESP协议应用于网关时,必须使用隧道模式。此时,ESP封装整个IP数据包,并 62 第3章 IPSecVPN 在ESP头外部再封装一个IP头。内网IP头的源IP地址和目的IP地址是最终通信两端 的IP地址,而外网IP头的源IP地址和目的IP地址是隧道的起止端点的IP地址,内网 IP头和外网IP头中的IP地址可以是不同的。此时,ESP对内网的整个IP数据包进行 保护。隧道模式下ESP的封装结构如图3-12所示。 图3-12 隧道模式下ESP的封装结构 4. ESP 处理过程 ESP对发送的IP数据包主要进行加密处理,而对接收的IP数据包主要进行验证 处理。 1)对发送数据包的处理流程 ESP对发送数据包的处理可以分为3部分:序列号生成、数据包加密和ICV 计算。 若ESPSA 不提供加密服务,则可忽略加密处理。具体步骤如下。 (1)对于发送数据包中序列号的处理,ESP与AH 完全相同。 (2)加密处理前,发送方首先构造ESP数据包,将SA 中的SPI复制到SPI字段,将 ESPSA 中的计数器加1后的新值填入序列号字段。根据SA 工作模式的不同,封装在 ESP有效载荷数据字段中的数据也不同:传输模式下是原始的高层协议信息,下一个头 字段取自IP头中的协议字段;而隧道模式下是整个原始的IP数据包,下一个头的可能取 值为4(IPv4环境)或41(IPv6环境)。此外,隧道模式下,一个新的IP头插在ESP数据 包的前面,新IP头中各字段的取值遵照本地的IP协议版本的规定。对于IPv4头,源IP 地址和目的IP地址依赖于ESPSA。若数据包被转发,则取值遵照封装前后TTL协议 版本的规定。对于IPv4头,源IP地址和目的IP地址依赖于ESPSA。若数据包被转发, 封装前后TTL值需减1。 (3)根据需要,可能要添加填充数据。填充内容可以不同,但填充长度字段必须 赋值。 (4)加密处理则利用ESPSA 指定的加密密钥、加密算法、加密模式和可能的初始化 矢量加密上述操作后的结果,包括有效载荷数据、填充、填充长度、下一个头4个字段。若 ESPSA 同时提供验证服务,则先进行加密,后进行验证,验证数据没有被加密,这样的安 排便于接收方及时发现、拒绝重放或伪造的数据包。 63 VPN技术与应用 (5)发送方对ESP数据包中去除验证数据后剩下的部分进行ICV 计算,因此安全参 数索引、序列号和加密的有效载荷数据、可能出现的填充、填充长度、下一个头字段均包含 在ICV 计算中。ICV 被复制到ESP尾部的验证数据字段中。 2)对接收数据包的处理流程 ESP在处理之前可能需要对数据包的分片进行重组,对每个接收数据包的处理大致 可以分为3部分:序列号验证、ICV 验证和数据包解密。序列号要在ICV 提供的完整性 保护下工作,因此,对一个ESPSA 而言,如果不提供验证服务,那么提供防重放服务是没 有任何意义的。具体步骤如下: (1)若接收方禁止防重放服务,则无须对ESP数据包中的序列号进行检査,否则,需 要检査序列号是否重复,检査采用的方法与AH 协议相同。若ESP数据包中包含有效序 列号,则进行ICV 验证,若验证失败,接收方丢掉这个无效的IP数据包。 (2)若ESPSA 同时提供验证服务,则接收方利用SA 指定的验证算法,对不包含验 证数据的ESP数据包进行ICV 计算,并将结果和ESP数据包中包含的验证数据相比较。 若重新计算的ICV 和接收到的ICV 相同,则认为数据有效,可以接受;否则丢弃整个数 据包。 (3)直到此时,接收方才利用ESPSA 指定的密钥、加密算法、算法模式等对有效载 荷数据、填充、填充长度、下一个头字段进行解密,得到明文。然后处理加密算法规范可能 使用的填充数据。最后重构原始的IP数据包。在传输模式下,利用原始的IP头和ESP 有效载荷数据字段中的原始高层协议信息重构IP数据包;在隧道模式下,则利用ESP有 效载荷数据字段中的IP数据包和隧道外的IP头重构IP数据包。 (4)如果SA 同时提供解密和验证服务,解密和验证操作可以并行执行,此时验证操 作必须在解密数据包进入下一步处理之前完成。在某些情况下,解密操作不一定会成功, 此时后续协议负责处理解密后的数据包。判断解密的结果是否正确。 3.2.4 IKE协议 1. IKE 协议概述 IPSec的安全联盟(SA)可以通过手工配置的方式建立,但是当网络中的节点较多时, 手工配置将非常困难,而且难以保证安全性。这时就要使用IKE协议自动地进行安全联 盟建立与密钥交换的过程。 IKE协议是建立在由Internet安全联盟和密钥管理协议(InternetSecurityAssociationandKeyManagementProtocol, ISAKMP)定义的框架上,沿用Oakley的模式以及 SKEME的共享和密钥更新技术定义的秘密材料(包括验证材料和加密材料)生成技术和 密钥协商策略。作为混合协议,IKE协议的功能是在保护方式下协商SA,并为SA 提供 经验证的秘密材料。IKE协议不仅可用于协商VPN,而且可用于远程用户接入安全主机 和网络。IKE协议同样支持客户协商,在这种模式下,终端实体的身份信息是隐藏的。 IKE协议利用Diffie-Hellman密钥交换算法和各种身份认证方法(如数字签名)可以 在一条不保密的、不受信任的通信信道(如Internet)上为交换密钥的双方建立一个安全 64 第3章 IPSecVPN 的、共享秘密的会话,通过管理安全联盟来实现对密钥的管理。 Diffie-Hellman密钥交换算法是早期的密钥交换算法之一,它使得通信的双方能在 非安全的信道中安全地交换密钥,用于加密后续的通信消息。 2. IKE 与IPSec 的关系 IKE是IPSec协议族中的一种,IKE与IPSec的关系如图3-13所示。 图3-13 IKE与IPSec的关系 IKE是UDP上的一个应用层协议。IKE为IPSec协商建立SA,并将建立的参数及 生成的密钥交给IPSec。IPSec使用IKE建立的SA 对IP数据包进行加密或验证处理。 IKE在IPSec中的作用包括以下几点: ● 降低手工配置的复杂度。 ● 定时更新SA。 ● 定时更新密钥。 ● 允许IPSec提供反重放服务。 ● 允许在端与端之间进行动态认证。 3. IKE 的两个阶段 IKE使用了两个阶段的ISAKMP分别建立IKESA 和IPSecSA。其中,IPSecSA 受IKESA 的保护,IKESA 为IPSecSA 提供交换服务。整个协商过程分为两个阶段。 第一阶段的实施过程如图3-14所示。 在第一阶段,双方协商建立一个安全的、经过相互身份认证的数据通道,称之为IKE SA。IKESA 保存着双方继续协商IPSecSA 所需的加密算法、密钥等安全参数。在第一 阶段协商中可以采用两种模式:即主模式(mainmode)和激进模式(aggressivemode)。 主模式执行3步双向交换过程,总共6个数据包。3步双向交换是指:协商安全策略 用于管理连接、使用Diffie-Hellman算法对上一步中协商的加密算法和HMAC功能产生 密钥,使用预共享密钥、RSA 加密的随机数或者RSA 签名(数字证书)执行设备验证。 主模式有一个好处:设备验证的步骤发生在安全的管理连接中。因为这个连接是在 前两步中构建的,所以两个对等体发送给对方的任何实体信息都可以免受窃听攻击。 在激进模式中,发生两步交换。第一步交换含有一些用于保护管理连接的策略、 Diffie-Hellman算法建立的公钥/私钥对的公钥、实体信息及其验证(例如签名)。所有这 65 VPN技术与应用 图3-14 第一阶段的实施过程 些信息都放入一个数据包中。第二步交换是对收到的上述数据包进行确认,共享加密的 密钥(由Difie-Helman算法生成),并检査管理连接是否已成功地建立。 激进模式与主模式相比的一个主要的优点是建立管理连接的速度较快。激进模式的 缺点是任何发送的实体信息都是明文的,所以如果某人在正在传输过程中实施窃听攻击, 就会看见用于建立设备验证的签名的实体信息。 这两种模式主要的区别在于是否对用户的身份载荷(IDpayload)进行认证,它们需 要交换的数据包的数量也不同。密钥协商过程中一共可以采用4种身份认证方法,即数 字签名、公钥加密算法、改进的密钥算法和预共享密钥。 第一阶段的实施过程如图3-15所示。 图3-15 第二阶段的实施过程 66 第3章 IPSecVPN 在第二阶段,双方使用第一阶段产生的IKESA,协商产生用于上层应用的IPSec SA,使用快速模式(quickmode)来实现。 快速模式有两个主要功能: ● 协商安全参数来保护数据连接。 ● 周期性地对数据连接更新密钥信息。 第二阶段实际上是在两个对等体之间构建两个单向数据连接。例如,主机A 有一个 到主机B的单向数据连接,主机B有一个到主机A 的单向数据连接。由于两个数据连接 均是单向的,所以在两个对等体之间协商的安全参数可能是不同的。例如,主机A 到主 机B的数据连接可能使用3DES算法进行加密,而主机B到主机A 的数据连接可能使用 DES算法进行加密。 第二阶段构建数据连接的过程中可以使用一个或者两个安全协议来保护传输的数 据,即AH 协议和ESP协议。 安全协议的连接模式也有两种,即传输模式和隧道模式(若同时使用了AH 协议和 ESP协议,则需要对它们使用同一种连接模式)。 在传输模式中,用户数据的实际源IP地址和目的IP地址启用保护服务,当使用这种 连接模式添加的设备越来越多时,就会变得非常难以管理。这种模式通常用于在两台设 备之间保护特定的流量,例如TFTP传输配置文件或者系统日志传输日志消息。 在隧道模式中,中间设备通常执行用户数据的保护服务。这种连接模式用于点对点 和远程访问连接,因为原始的IP数据包被保护,嵌入AH/ESP中,外面添加了一个IP 头,内部的IP数据包可以包含私有的IP地址。如果使用ESP进行加密,那用户数据实 际的源IP地址和目的IP地址对于窃听者是隐藏的。 与传输模式相比,隧道模式的主要优点是保护服务的功能可以集中在少量设备上,减 少了配置和管理工作量。 3.2.5 IPSecSA 1. 安全联盟和密钥管理协议 ISAKMP协议定义了SA 建立过程中的协商、修改、删除的过程以及通信的消息结 构。ISAKMP为密钥的传输和数据的认证提供了统一的协议框架结构,而该框架独立于 具体的密钥产生算法、加密算法和认证机制。 一个ISAKMP消息由一个消息头和多个消息载荷构成。当一个ISAKMP消息有多 个消息载荷时,这些消息载荷利用ISAKMP消息头和各个消息载荷头的下一个载荷字段 (指针)构成一个消息载荷数据串。 2. IKE SA 的建立 IKESA 的建立是通过第一阶段的ISAKMP交换来实现的。ISAKMP第一阶段交 换的目的是建立一个保密的已验证的通信信道(IKESA),并生成密钥,为双方的IKE通 信提供机密性、消息的完整性以及消息源验证服务,IKESA 用于保护IKE阶段的消息交 换和第二阶段IPSecSA 的建立,IKESA 主要包括加密算法(如DES、3DES等)、散列算 67 VPN技术与应用 法(如MD5、SHA-1等)、认证方法和SA 的生命周期等安全属性。IKE第一阶段有两种 模式:主模式和激进模式。 在主模式下,IKESA 的建立需要在发起者和响应者之间交换6条消息。 (1)第1、2条消息用于协商安全联盟特性,以明文方式传输,不进行身份认证。 (2)第3、4条消息用于交换随机数和Diffie-Hellman的公开值,它们也以明文方式 传输。 (3)第5、6条消息用于交换通信双方相互认证所需要的信息,其内容由前4条消息 建立的加密算法和密钥来保护。 经上述6条消息的交换后,发起者和响应者就分别建立了各自的IKESA,并在各自 的IKESA 数据库中增加一条记录。 3. IPSec SA 的建立 IPSecSA 的建立阶段在已经建立的IKESA 保护下进行,通信双方协商拟定IPSec 的各项特征,包括IPSec协议类型(如AH、ESP)、加密算法(如DES、3DES)、散列算法(如 MD5、SHA-1)、加密模式和安全联盟生存周期等,并为它们生成密钥。 在IPSecSA 的建立阶段,通过使用来自IKESA 的SKEYID_a作为认证密钥,对快 速交换模式的整个消息进行验证,该验证除了提供数据完整性保护服务外,还提供数据源 身份认证服务;通过使用来自IKESA 的SKEYID_e对交换的消息进行加密,以保证消息 的机密性。 IPSecSA 的建立共交换3条消息。 (1)第1条消息用于发起者向响应者提交认证信息。 (2)第2条消息是响应者对第一条消息的响应。 (3)第3条消息用于发起者向响应者证明自己的活性。 3.3 IPSecVPN 系统 3.3.1 IPSecVPN 概述 IPSec协议族由ESP协议、AH 协议和IKE协议组成。 AH 协议提供验证和可选的防重放保护两种安全服务。若要提供AH 保护,需要在 原始内容前添加额外的载荷———AH 头。AH 头的格式比较简单,较适合在加密服务受 限的场合提供快速安全服务。 与AH 协议相比,ESP协议功能更为强大,提供加密服务、验证服务、抗重放保护服 务和有限的流量保密服务。采用ESP协议保护的数据需要添加更多的载荷,如ESP头、 ESP尾。 AH 协议和ESP协议提供的安全服务依靠IKE协议产生、更新会话密钥。基于公私 钥密码系统,IKE协议实际上是IPSec协议族中的信令协议,提供了自动化的安全密钥协 商手段。 68 第3章IPSecVPN c的作用实际上体现为对数据包的处理。按照处理流程的不同,c对数据包 的处理分为发送数据包的处理和接收数据包的处理。对发送数据包采用IPSec处理的目 的是添加对数据包的保护;处理接收数据包时则采用相反流程,去除数据包中的IPSec 载荷。 由于IPSec实施在IP 层,具有对应用完全透明的优点,所以很适合构建IPSecVPN 。 基于采用IPSec组建VPN 大致有3种模式:基本模式、嵌套模式和链式模式。3种模式 各有特点:基本模式是基础;嵌套模式提供多级安全保护;链式模式采用集中控制方式, 强化对隧道的管理。IPSecVPN 还可在远程拨号接入环境下对数据传输安全提供保护。 IPSeIPSe 3.2 IPScVPN 的基本模式 3.e IPSec保护的对象是IP 数据包本身,因此IPSec安全保护可连续或嵌套使用,并且支 持轴辐(hub-and-spoken)模式。 支持安全拨号接入的IPSecVPN 实例如图3-16 所示。在3个安全网关gwa、gwb、 gwc e安全网关同时具备将内部网络接入公共网络(nent)的 上安装IPSc的某种实现, Itre 功能。通过将位于不同安全网关之后的多个子网间的数据通信置于各网关提供的IPSec 保护之下,可以构建一个虚拟专用网。VPN 一般假设网关与公共网络的连接是不安全 的,与内部网络/主机间的连接是安全的。子网2和子网3之间的数据流到达各自的网关 设备后,通过隧道在公共网络中安全地传输。在隧道终点———远方安全网关,控制数据被 剥离,原始的数据通过网关后的内部网络抵达最终目的地。如果安全网关为受保护的对 象提供加密服务,则隧道中的数据是加密的,没有会话密钥的任何公共网络上的任何中间 设备均无法获知传输内容。若提供验证服务,则对IP 数据包的任何篡改都会因为无法通 过接收端对数据的完整性检査而被接收端发现。利用单调递增的序列号,还可以检测重 播的数据包,在一定程度上可抵御拒绝服务(DenialofService,DoS)攻击。 图3-16 支持安全拨号接入的IPSecVPN 实例 隧道正常工作的前提是:内部子网在设置路由时将默认网关指向本地安全网关,在 子网2和子网3中,默认网关分别被设为安全网关gwa、gwc。 在图3-16 所示的实例中,拨号主机C也可以安全远程接入安全网关gwb后的服务器 69 VPN 技术与应用 S,即支持漫游接入。这里的拨号主机必须是实现IPSec的主机,通过拨号等方式接入公 共网络。当需要访问服务器S上的资源时,拨号主机C与安全网关gwb 先协商建立隧 道,然后对服务器S的访问在协商好的SA 的保护下进行。与一般的端对端的IPSec应 用不同,安全网关gwb 代表服务器S对来自拨号主机C的数据包进行SA 处理,而在拨号 主机端,C负责本地发送数据包和接收数据包的IPSec处理。 在VPN 和漫游接入这两种应用中,一般需要创建隧道模式的SA 。根据需求的不 同,可使用SA 的不同组合;若只需要验证保护,则可使用AHSA 或只提供验证服务的 ESPSA;若还需要加密保护,可联合应用只提供机密服务的ESPSA 和AHSA 或应用同 时提供加密和验证两种服务的ESPSA 。 3.3 IPScVPN 的嵌套模式 3.e 在图316 的示例中,c协议提供的安全保护范围只限于公共网络。在某些情况 -IPSe 下,可能还需要对内部网络的保护,这样引入了多级网络安全保护的概念。图3-16 中,若 拨号主机C访问的服务器S在内部网络中属于某些关键部门,则通过隧道终点———网关 gwb后,访问数据包以明文形式在内部网络中传输,也面临严重的安全威胁———机密信息 泄露。 c提出的嵌套隧道(技术可很好地解决这个问题。嵌套隧道 IPSeiteratedtunneling) 是指同时应用多级安全协议,这些协议通过IP 隧道技术联系在一起而生效。根据两条隧 道端点之间的关系,典型的嵌套隧道可分为3种:两条隧道的两个端点完全一致;两条隧 道有一个共同的端点;两个隧道的端点完全不同。每条隧道可使用不同的安全协议(AH 或ESP )、不同的加密算法/验证算法。 应用嵌套隧道技术可以构建嵌套VPN 。以图3-16 中的网络为例,如果在服务器S 前放置一台安全网关gwb',则可保证在内部网络中拨号主机C对服务器S的安全访问。 拨号主机C在访问服务器S之前需要建立两条隧道:隧道1作用于拨号主机C和gwb'之 间的传输路径;隧道2跨过安全网关gwb',将对数据的保护扩展到gw。拨号主机C选用 这两条隧道保护的先后顺序不能颠倒:隧道2在前,隧道1在后。与之(c) 类似,子网2和子 网3中的主机间通信若需要端对端安全保护,也可利用嵌套隧道技术,在需要跨网通信的 主机上安装IPSec模块。在通信之前,首先建立两台主机间的隧道,然后在两台主机各自 的安全网关上分别建立另一条隧道。这两条隧道联合作用,为主机间的数据流提供灵活 的多级安全保护。 3.4 IPScVPN 的链式模式 3.e 基于IPSec构建的VPN 还可以采用轴辐模式,与链路级保护类似,这种模式下隧道 的建立是在中心安全网关的控制下进行的。除中心安全网关之外,其他任意两个安全网 关之间都不能直接建立隧道,必须分别与中心安全网关单独建立一条隧道,再由这两条隧 道搭建成目的隧道。 轴辐模式VPN 的应用示例如图3-17 所示。如果要通过安全网关gw、gw为子网2 和子网3建立隧道,必须采取如下步骤:在安全网关gwa 和gwb(中心控制(a) 网关)(c) 之间建 70 第3章IPSecVPN 立隧道1;在gwc 和gwb 之间建立隧道2。在中心安全网关gwb 的控制下,gwa、gwc 利用 隧道1和隧道2来保护子网2和子网3间的数据通信。 图3-17 轴辐模式VPN 的应用示例 如果子网2中某台主机想访问子网3中的服务器,则访问数据在经过安全网关gwa 时,被封装在隧道1中送往中心安全网关gwb;gwb 对其进行解密、验证后将原始请求包 从隧道1中剥离,因为请求包的目的地位于安全网关gwc后的子网3中,gwb利用隧道2 将请求包再一次封装,送往gwc;在隧道2的终点,封装的数据被验证、解密,然后从隧道2 中剥离,原始的请求包最终被安全网关gwc 送往目的地。对访问请求的响应包的传输路 径正好相反。 在轴辐模式下,拨号主机对VPN 内子网的访问也需通过中心安全网关进行。即拨 号主机先与中心安全网关建立一条隧道,然后中心安全网关与访问目标处的安全网关建 立另一条隧道,这样,远程接入就受到这两条隧道的保护。 与一般VPN 相比,轴辐模式系统性能欠佳,这是因为同一个数据包被多次加密、解 密,在繁忙的公共网络上的延迟时间可能很长。其优点在于易于管理,便于大规模部署。 中心安全网关是整个VPN 系统的核心,可为不同的链接定制灵活的安全策略并分发。 新增的IPSec设备对其他安全网关的影响很小,新增的设备只需与中心网关建立隧道,利 用这条隧道形成与其他所有安全网关间的隧道。 3.4 IPSecVPN 的应用 IPSecVPN 是IPSec的一种应用方式,其目的是为IP 远程通信提供高安全性特性。 cVPN 的应用场景分为以下3种。IPSe(1)点对点。例如,企业的多个机构分布在互联网的多个不同的地方,各使用一个应 用层网关相互建立VPN 隧道,企业各分机构内网用户之间的数据通过这些网关建立的 VPN 隧道实现安全传输。 (2)端对端。两个位于不同网络的PC 之间的通信由两个PC 之间的IPSec会话保 71