IPsec 简介

    IPsec( IP Security)是 IETF 制定的三层隧道加密协议,它为 Internet 上数据的传输提供了高质量的、 可互操作的、 基于密码学的安全保证。 特定的通信方之间在 IP 层通过加密与数据源认证等方式,提供了以下的安全服务:

   · 数据机密性( Confidentiality): IPsec 发送方在通过网络传输包前对包进行加密。

   · 数据完整性( Data Integrity): IPsec 接收方对发送方发送来的包进行认证,以确保数据在传输过程中没有被篡改。

   · 数据来源认证( Data Authentication): IPsec 在接收方可以认证发送 IPsec 报文的发送方是否合法。

   · 防重放( Anti-Replay): IPsec 接收方可检测并拒绝接收过时或重复的报文。

    IPsec 具有以下优点:

   · 支持 IKE( Internet Key Exchange,因特网密钥交换),可实现密钥的自动协商功能,减少了密钥协商的开销。可以通过 IKE 建立和维护 SA 的服务,简化了 IPsec 的使用和管理。

   · 所有使用 IP 协议进行数据传输的应用系统和服务都可以使用 IPsec,而不必对这些应用系统和服务本身做任何修改。

   · 对数据的加密是以数据包为单位的,而不是以整个数据流为单位,这不仅灵活而且有助于进一步提高 IP 数据包的安全性,可以有效防范网络攻击。


IPsec 的协议实现

    IPsec协议不是一个单独的协议,它给出了应用于IP层上网络数据安全的一整套体系结构,包括网络认证协议AH( Authentication Header,认证头)、 ESP( Encapsulating Security Payload,封装安全载荷)、 IKE( Internet Key Exchange,因特网密钥交换)和用于网络认证及加密的一些算法等。其中, AH协议和ESP协议用于提供安全服务, IKE协议用于密钥交换。关于IKE的详细介绍请参见“1.2 IKE简介”。

    IPsec 提供了两种安全机制:认证和加密。认证机制使 IP 通信的数据接收方能够确认数据发送方的真实身份以及数据在传输过程中是否遭篡改。加密机制通过对数据进行加密运算来保证数据的机密性,以防数据在传输过程中被窃听。

    IPsec 协议中的 AH 协议定义了认证的应用方法,提供数据源认证和完整性保证; ESP 协议定义了加密和可选认证的应用方法,提供数据可靠性保证。

   · AH 协议( IP 协议号为 51 )提供数据源认证、数据完整性校验和防报文重放功能,它能保护通信免受篡改,但不能防止窃听,适合用于传输非机密数据。 AH 的工作原理是在每一个数据包上添加一个身份验证报文头,此报文头插在标准 IP 包头后面,对数据提供完整性保护。可选择的认证算法有 MD5( Message Digest)、 SHA-1 ( Secure Hash Algorithm)等。

   · ESP 协议( IP 协议号为 50) 提供加密、 数据源认证、 数据完整性校验和防报文重放功能。 ESP的工作原理是在每一个数据包的标准 IP 包头后面添加一个 ESP 报文头, 并在数据包后面追加一个 ESP 尾。 与 AH 协议不同的是, ESP 将需要保护的用户数据进行加密后再封装到 IP 包中,以保证数据的机密性。常见的加密算法有 DES、 3DES、 AES 等。同时,作为可选项,用户可以选择 MD5、 SHA-1 算法保证报文的完整性和真实性。

    在实际进行 IP 通信时,可以根据实际安全需求同时使用这两种协议或选择使用其中的一种。 AH 和ESP 都可以提供认证服务,不过, AH 提供的认证服务要强于 ESP。同时使用 AH 和 ESP 时,设备支持的 AH 和 ESP 联合使用的方式为:先对报文进行 ESP 封装,再对报文进行 AH 封装,封装之后的报文从内到外依次是原始 IP 报文、 ESP 头、 AH 头和外部 IP 头。


IPsec 基本概念

    1. 安全联盟( Security Association, SA)

    IPsec 在两个端点之间提供安全通信,端点被称为 IPsec 对等体。

    SA 是 IPsec 的基础,也是 IPsec 的本质。 SA 是通信对等体间对某些要素的约定,例如,使用哪种协议( AH、 ESP 还是两者结合使用)、协议的封装模式(传输模式和隧道模式)、加密算法( DES、3DES 和 AES)、特定流中保护数据的共享密钥以及密钥的生存周期等。建立 SA 的方式有手工配置和 IKE 自动协商两种。

    SA 是单向的,在两个对等体之间的双向通信,最少需要两个 SA 来分别对两个方向的数据流进行安全保护。同时,如果两个对等体希望同时使用 AH 和 ESP 来进行安全通信,则每个对等体都会针对每一种协议来构建一个独立的 SA。

    SA 由一个三元组来唯一标识,这个三元组包括 SPI( Security Parameter Index,安全参数索引)、目的 IP 地址、安全协议号( AH 或 ESP)。

    SPI 是用于唯一标识 SA 的一个 32 比特数值,它在 AH 和 ESP 头中传输。在手工配置 SA 时,需要手工指定 SPI 的取值。使用 IKE 协商产生 SA 时, SPI 将随机生成。

    通过 IKE 协商建立的 SA 具有生存周期,手工方式建立的 SA 永不老化。 IKE 协商建立的 SA 的生存周期有两种定义方式:

   · 基于时间的生存周期,定义一个 SA 从建立到失效的时间。

   · 基于流量的生存周期,定义一个 SA 允许处理的最大流量。

    生存周期到达指定的时间或指定的流量, SA 就会失效。 SA 失效前, IKE 将为 IPsec 协商建立新的SA,这样,在旧的 SA 失效前新的 SA 就已经准备好。在新的 SA 开始协商而没有协商好之前,继续使用旧的 SA 保护通信。在新的 SA 协商好之后,则立即采用新的 SA 保护通信。


    2. 封装模式

    IPsec 有如下两种工作模式:

   · 隧道( tunnel) 模式: 用户的整个 IP 数据包被用来计算 AH 或 ESP 头, AH 或 ESP 头以及 ESP加密的用户数据被封装在一个新的 IP 数据包中。通常,隧道模式应用在两个安全网关之间的通讯。

   · 传输( transport)模式:只是传输层数据被用来计算 AH 或 ESP 头, AH 或 ESP 头以及 ESP加密的用户数据被放置在原 IP 包头后面。通常,传输模式应用在两台主机之间的通讯,或一台主机和一个安全网关之间的通讯。

    不同的安全协议在tunnel和transport模式下的数据封装形式如 图 1-1 所示, data为传输层数据。

H3C IPsec概述_ IPsec


3. 认证算法与加密算法

   (1) 认证算法

    认证算法的实现主要是通过杂凑函数。杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。 IPsec 对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。 IPsec 使用两种认证算法:

   · MD5: MD5 通过输入任意长度的消息,产生 128bit 的消息摘要。

   · SHA-1 : SHA-1 通过输入长度小于 2 的 64 次方 bit 的消息,产生 160bit 的消息摘要。MD5 算法的计算速度比 SHA-1 算法快,而 SHA-1 算法的安全强度比 MD5 算法高。

    (2) 加密算法

    加密算法实现主要通过对称密钥系统, 它使用相同的密钥对数据进行加密和解密。 目前设备的 IPsec实现三种加密算法:

   · DES( Data Encryption Standard):使用 56bit 的密钥对一个 64bit 的明文块进行加密。

   · 3DES( Triple DES):使用三个 56bit 的 DES 密钥(共 168bit 密钥)对明文进行加密。

   · AES( Advanced Encryption Standard):使用 128bit、 192bit 或 256bit 密钥长度的 AES 算法对明文进行加密。

    这三个加密算法的安全性由高到低依次是: AES、 3DES、 DES,安全性高的加密算法实现机制复杂,运算速度慢。对于普通的安全要求, DES 算法就可以满足需要。


    4. 协商方式

    有如下两种协商方式建立 SA:

   · 手工方式( manual)配置比较复杂,创建 SA 所需的全部信息都必须手工配置,而且不支持一些高级特性(例如定时更新密钥),但优点是可以不依赖 IKE 而单独实现 IPsec 功能。

   · IKE 自动协商( isakmp)方式相对比较简单,只需要配置好 IKE 协商安全策略的信息,由 IKE自动协商来创建和维护 SA。

    当与之进行通信的对等体设备数量较少时,或是在小型静态环境中,手工配置 SA 是可行的。对于中、大型的动态网络环境中,推荐使用 IKE 协商建立 SA。

    说明:Web 界面只支持配置 IKE 自动协商方式。



    5. 安全隧道

    安全隧道是建立在本端和对端之间可以互通的一个通道,它由一对或多对 SA 组成。


协议规范

    与 IPsec 相关的协议规范有:

   · RFC2401 : Security Architecture for the Internet Protocol

   · RFC2402: IP Authentication Header

   · RFC2406: IP Encapsulating Security Payload



IKE 简介

    在实施 IPsec( IP Security)的过程中,可以使用 IKE( Internet Key Exchange,因特网密钥交换)协议来建立 SA,该协议建立在由 ISAKMP( Internet Security Association and Key ManagementProtocol,互联网安全联盟和密钥管理协议)定义的框架上。 IKE 为 IPsec 提供了自动协商交换密钥、建立 SA 的服务,能够简化 IPsec 的使用和管理,大大简化 IPsec 的配置和维护工作。

    IKE 不是在网络上直接传输密钥,而是通过一系列数据的交换,最终计算出双方共享的密钥,并且即使第三者截获了双方用于计算密钥的所有交换数据,也不足以计算出真正的密钥。

IKE 的安全机制

    IKE 具有一套自保护机制,可以在不安全的网络上安全地认证身份、分发密钥、建立 IPsec SA。

    1. 数据认证

    数据认证有如下两方面的概念:

   · 身份认证:身份认证确认通信双方的身份。支持两种认证方法:预共享密钥( pre-shared-key)认证和基于 PKI 的数字签名( rsa-signature)认证。

   · 身份保护:身份数据在密钥产生之后加密传送,实现了对身份数据的保护。

    2. DH

    DH( Diffie-Hellman,交换及密钥分发)算法是一种公共密钥算法。通信双方在不传输密钥的情况下通过交换一些数据,计算出共享的密钥。即使第三者(如黑客)截获了双方用于计算密钥的所有交换数据,由于其复杂度很高,不足以计算出真正的密钥。所以, DH 交换技术可以保证双方能够安全地获得公有信息。

    3. PFS

    PFS( Perfect Forward Secrecy,完善的前向安全性)特性是一种安全特性,指一个密钥被破解,并不影响其他密钥的安全性,因为这些密钥间没有派生关系。对于 IPsec,是通过在 IKE 阶段 2 协商中增加一次密钥交换来实现的。 PFS 特性是由 DH 算法保障的。


IKE 的交换过程

    IKE 使用了两个阶段为 IPsec 进行密钥协商并建立 SA:

    (1) 第一阶段,通信各方彼此间建立了一个已通过身份认证和安全保护的通道,即建立一个ISAKMP SA。第一阶段有主模式( Main Mode)和野蛮模式( Aggressive Mode)两种 IKE交换方法。

    (2) 第二阶段, 用在第一阶段建立的安全隧道为 IPsec 协商安全服务, 即为 IPsec 协商具体的 SA,建立用于最终的 IP 数据安全传输的 IPsec SA。

H3C IPsec概述_ IPsec_02

    如 图 1-2所示,第一阶段主模式的IKE协商过程中包含三对消息:

   · 第一对叫 SA 交换,是协商确认有关安全策略的过程;

   · 第二对消息叫密钥交换,交换 Diffie-Hellman 公共值和辅助数据(如:随机数),密钥材料在这个阶段产生;

   · 最后一对消息是 ID 信息和认证数据交换,进行身份认证和对整个第一阶段交换内容的认证。

野蛮模式交换与主模式交换的主要差别在于,野蛮模式不提供身份保护,只交换 3 条消息。在对身份保护要求不高的场合,使用交换报文较少的野蛮模式可以提高协商的速度;在对身份保护要求较高的场合,则应该使用主模式。


IKE 在 IPsec 中的作用

   · 因为有了 IKE, IPsec 很多参数(如:密钥)都可以自动建立,降低了手工配置的复杂度。

   · IKE 协议中的 DH 交换过程,每次的计算和产生的结果都是不相关的。每次 SA 的建立都运行DH 交换过程,保证了每个 SA 所使用的密钥互不相关。

   · IPsec 使用 AH 或 ESP 报文头中的序列号实现防重放。此序列号是一个 32 比特的值,此数溢出后,为实现防重放, SA 需要重新建立,这个过程需要 IKE 协议的配合。

   · 对安全通信的各方身份的认证和管理,将影响到 IPsec 的部署。 IPsec 的大规模使用,必须有CA( Certificate Authority,认证中心)或其他集中管理身份数据的机构的参与。

IPsec 与 IKE 的关系

H3C IPsec概述_ IPsec_03

    从 图 1-3中我们可以看出IKE和IPsec的关系:

   · IKE 是 UDP 之上的一个应用层协议,是 IPsec 的信令协议。

   · IKE 为 IPsec 协商建立 SA,并把建立的参数及生成的密钥交给 IPsec。

   · IPsec 使用 IKE 建立的 SA 对 IP 报文加密或认证处理。

   · IKE 提供端与端之间动态认证。


协议规范

    与 IKE 相关的协议规范有:

   · RFC2408: Internet Security Association and Key Management Protocol (ISAKMP)

   · RFC2409: The Internet Key Exchange (IKE)

   · RFC2412: The OAKLEY Key Determination Protocol



注意事项

    配置 IPsec 时需要注意如下事项:

    (1) 通常情况下,由于 IKE 协议采用 UDP 的 500 端口进行通信, IPsec 的 AH 和 ESP 协议分别使用 51 或 50 号协议来工作, 因此为保障 IKE 和 IPsec 的正常运行, 需要确保应用了 IKE 和 IPsec配置的接口上没有禁止掉属于以上端口和协议的流量。

    (2) 若在接口上同时使能 IPsec 和 QoS,同一个 IPsec 安全联盟的数据流如果被 QoS 分类进入不同队列,会导致部分报文发送乱序。由于 IPsec 具有防重放功能, IPsec 入方向上对于防重放窗口之外的报文会进行丢弃,从而导致丢包现象。因此当 IPsec 与 QoS 结合使用时,必须保证 IPsec 流量特征与 QoS 分类规则配置保持一致。