IPSec基本概念
2013-12-09 17:32:02 阿炯

IPSec VPN

IPSec Virtual Private Network(VPN)是一种在公有网络上提供安全可靠的私有通信的服务。企业的分支办公室和移动办公用户在公有Internet上使用IPSec VPN技术与企业总部建立连接。IPSec VPN与传统的使用专线或帧中继连接的网络相比,其最大的好处就是降低了成本,增强了灵活性。其大致上可以分为两种应用模式:
1.远程访问IPSec VPN
2.站点到站点IPSec VPN

IPsec基本概念,包括安全联盟、安全联盟的协商方式/封装模式、验证算法与加密算法。

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

IPSec能够允许系统、网络的用户或管理员控制对等体间安全服务的粒度。例如,某个组织的安全策略可能规定来自特定子网的数据流应同时使用AH和ESP进行保护,并使用3DES(Triple Data Encryption Standard)进行加密;另一方面,策略可能规定来自另一个站点的数据流只使用ESP保护,并仅使用DES加密。通过SA(Security Association),IPSec能够对不同的数据流提供不同级别的安全保护。

安全联盟是IPSec的基础,也是IPSec的本质。SA是通信对等体间对某些要素的约定,例如,使用哪种协议(AH、ESP还是两者结合使用)、协议的封装模式(传输模式和隧道模式)、加密算法(DES和3DES)、特定流中保护数据的共享密钥以及密钥的生存周期等。

安全联盟是单向的,在两个对等体之间的双向通信,每个对等体最少需要两个安全联盟来分别对两个方向的数据流进行安全保护。如果希望同时使用AH和ESP来保护对等体间的数据流,则分别需要两个SA,一个用于AH,另一个用于ESP。

安全联盟由一个三元组来唯一标识,这个三元组包括SPI(Security Parameter Index)、目的IP地址、安全协议号(AH或ESP)。SPI是为唯一标识SA而生成的一个32比特的数值,它在AH和ESP报文头中传输。

安全联盟具有生存周期。生存周期的计算包括两种方式:

以时间为限制,每隔指定长度的时间就进行更新。

以流量为限制,每传输指定的数据量(字节)就进行更新。

安全联盟的协商方式

安全联盟的协商方式有两种:

手工方式(manual)

手工协商方式配置比较复杂,创建安全联盟所需的全部信息都必须手工配置,并且不支持IPSec的一些高级特性(例如定时更新密钥)。

优点是可以不依赖IKE而单独实现IPSec功能。

IKE自动协商方式(isakmp)

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

IPSec协议的封装模式

IPSec协议的封装模式有两种:

传输模式
在传输模式下,AH或ESP被插入到IP报文头之后但在所有传输层协议之前,或所有其他IPSec协议之前。以TCP为例。

隧道模式
在隧道模式下,AH或ESP插在原始IP报文头之前,另外生成一个新的报文头放到AH或ESP之前。以TCP为例。

选择隧道模式还是传输模式可以从以下方面考虑:

从安全性来讲,隧道模式优于传输模式。它可以完全地对原始IP数据报进行验证和加密,而且,可以使用IPSec对等体的IP地址来隐藏客户机的IP地址。

从性能来讲,隧道模式因为有一个额外的IP头,所以它将比传输模式占用更多带宽。

验证算法与加密算法

下面分别介绍验证算法和加密算法:

验证算法
AH和ESP都能够对IP报文的完整性进行验证,以判别报文在传输过程中是否被篡改。验证算法的实现主要是通过杂凑函数。杂凑函数是一种能够接受任意长的消息输入,并产生固定长度输出的算法,该输出称为消息摘要。IPSec对等体计算摘要,如果两个摘要是相同的,则表示报文是完整未经篡改的。

一般来说IPSec使用两种验证算法:

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

SHA-1
SHA-1通过输入长度小于2的64次方比特的消息,产生160bit的消息摘要。SHA-1的摘要长于MD5,因而是更安全的。

加密算法
ESP能够对IP报文内容进行加密保护,防止报文内容在传输过程中被窥探。加密算法实现主要通过对称密钥系统,它使用相同的密钥对数据进行加密和解密。

一般来说IPSec使用加密算法有以下几种:
DES
使用56bit的密钥对一个64bit的明文进行加密。

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

AES
使用AES(Advanced Encryption Standard)密钥对明文进行加密。密钥的长度分为128bit、192bit、256bit。
3DES具有更高的安全性,但其加密数据的速度要比DES慢得多。


实现机制

IPSec是一个公开标准的框架,工作于网络层,用于保护和鉴别IPSec对等体之间的数据包。IETF指定的IKE(Internet Key Exchange,因特网密钥交换协议)是IPSec处理过程中对安全策略进行协商、身份验证,以及处理会话密钥的交换协议。IKE有IKEv1和IKEv2两个版本。IKEv2版本保留了IKEv1版本的的基本功能,针对IKEv1版本存在的一些问题,兼顾简洁、高效、安全以及健壮性的要求,通过核心功能和默认算法的最小化规定,极大提高了IPSec系统的互操作性。其可以提供数据机密性、数据完整性、起源认证、防重放保护四大功能。

1.数据机密性:数据发送方使用数学方法对数据进行加密,使数据在传输过程中变得不可读;数据接收方对接收到的数据使用一定的算法对其进行解密,最后将数据还原成原来的样子。加密算法大致上可以分为两类:

1.1.对称式加密:对称式加密是指每个对等体使用相同的密钥来加密和解密数据。
对称式加密算法有:DES、3DES、AES。其中,DES使用56位密钥进行加密;3DES是DES算法的变种,使用三个独立的56位密钥对数据进行加密;AES是最新的加密标准,使用128/192/256位密钥进行加密。从加密的强壮程度上讲,3DES优于DES,AES优于3DES。

1.2.非对称式加密:非对称式加密是指分别使用不同的密钥来加密和解密数据。
非对称式加密算法有:RSA。非对称式加密的过程是每个对等体各自生成两个密钥:私钥和公钥,并且将公钥发送给对方(私钥自己保留)。发送方在发送数据时使用接收方的公钥进行加密,接收方使用私钥进行解密。由于只有使用私钥才能对消息进行解密,因此整个通信过程是安全的。

由于RSA算法的运行效率不高,所以IPSec不使用RSA进行数据加密。IKE(Internet密钥交换)仅在对等体认证阶段使用RSA进行数据加密。DH(Diffie-Hellman)密钥交换可以为对等体生成加密所需的密钥,密匙交换方式在6800系列中包括DH组1、2、5。

2.数据完整性:用于保证数据在传输过程中不被修改。

发送方在发送数据时,为消息附加了一个散列数,接收方在接收数据时重新计算消息的散列数。如果计算出的散列数和消息中附加的一样,则说明数据没有被篡改。

散列算法使用共享密钥将不同长度的消息转换成固定长度的字符串,其运算过程是不可逆的,也就是说散列是无法被还原成消息的。散列是附加在消息中发送的,如果消息在传输过程中被修改,接收方重新计算的散列和消息中原本附加的散列就无法匹配。

目前有两种通用的散列算法:HMAC-MD5和HMAC-SHA-1。其中HMAC-MD5使用128位共享密钥进行散列计算,HMAC-SHA-1使用160位共享密钥进行散列计算。

3.起源认证:对数据发送者的身份进行识别。

起源认证的过程是单向的,在另外一个方向上,也发生着同样的认证过程。

预共享密钥比较容易配置,但是扩展性很不好,仅使用于小型VPN网络。预共享密钥是指在IPSec对等体上预先设置好相同的密钥,当进行认证时,发送方将预共享密钥和身份信息进行散列计算,再将计算出的散列发送给接收方。接收方对收到的消息进行散列处理,如果能生成相同的散列,则发送方被验证。

PKI(Public Key Infrastructure,公钥基础设施)是通过使用公开密钥技术和数字证书来确保系统信息安全,并负责验证数字证书持有者身份的一种体系。PKI的功能是通过签发数字证书来绑定证书持有者的身份和相关的公开密钥,为用户获取证书、访问证书和宣告证书作废提供了方便的途径。同时利用数字证书和相关的各种服务(证书发布、黑名单发布等)实现通信过程中各实体的身份认证,保证了通信数据的机密性、完整性和不可否认性。

4.防重放保护:AH(Authentication Header)和ESP(Encapsulation Security Payload)都包含一个32位的序列数,IPSec通过比较目标主机上的滑动窗口和接收到的数据包中的序列数来辨别数据包是否是被复制的,这样就可以防止攻击者截取IPSec数据包后又将数据包重新插入会话。

IPSec的两种模式

IPSec可以使用两种模式来传输IP数据包:传输模式(Transport mode)和隧道模式(Tunnel Mode)。

1.传输模式主要用于主机到主机之间的端到端连接,使用原始IP包头中的地址进行寻址。

2.隧道模式主要用于两个安全网关(如路由器)之间的连接,通过将新的IP包头添加到原始IP包头之前来实现IP-in-IP的封装。原始IP包头在隧道中传输的时候被保留,直到隧道终端删除附加包头时才使用。

IPSec的两种主要框架协议

IPSec使用两种主要的框架协议如下:

1.认证头(Authentication Header,AH):AH可以确保数据完整性、提供起源认证和防重放保护,但是AH不提供数据机密性。AH对整个数据包进行验证,因此如果网络中存在NAT的话,应在AH封装之前使用NAT,否则AH验证将无法通过。AH支持HMAC-MD5和HMAC-SHA-1算法。

2.封装安全载荷(Encapsulation Security Payload,ESP):ESP可以保证数据完整性和机密性、提供起源认证和防重放保护。

ESP不对最前面的IP包头进行检查。因此即使在ESP封装之后对数据包进行NAT(Network Address Transport),也不会对ESP的认证造成影响。

应用场景

常见的IPSec组网模型如图所示。


思科IPSec建立连接的过程简介

一、对等体建立连接大体分为:
1、流量触发:IPSec建立连接是首先是由对等体直接的数据流触发的。我们通过配置这些IPSec保护的数据流,可以明确哪些数据流会触发IPSec建立连接

2、建立管理连接:IPSec使用ISAKMP/IKE阶段1来建立管理连接。管理连接不进行数据传输,只是数据传输前的准备工作。管理连接阶段需要明确对等体之间的哪种设备验证方式、加密算法、认证算法以及DH密钥组等

3、建立数据连接:基于阶段1建立的安全的管理连接之上,使用ISAKMP/IKE阶段2来完成。数据连接需要明确具体使用的安全协议的加密或者验证算法,以及数据的传输模式等

二、ISAKMP/IKE阶段1建立过程
1、交换ISAKMP/IKE传输集
ISAKMP/IKE传输集是一组用来保护管理连接的策略,包括
(1)加密算法:3des、des、aes
(2)HMAC:MD5、SHA-1
(3)设备验证类型:预共享密钥、RSA签名
(4)DH密钥组:一般思科路由支持1、2、5
(5)管理连接的生存周期

2、通过DH算法实现密钥转换

3、实现设备之间的验证

三、ISAKMP/IKE阶段2建立过程
1、安全关联(SA)
IPSec需要在对等体之间建立一条逻辑连接,这是使用了一个信令协议实现,也就是SA,因为IPSec需要无连接的IP在运行在就要成为面向连接的协议。SA由三要素定义:
(1)安全参数索引(SPI)
(2)安全协议的类型,包括AH和ESP协议
(3)目的地址

2、ISAKMP/IKE阶段2的传输集
(1)安全协议,AH和ESP协议
(2)连接模式,隧道模式、传输模式
(3)加密算法,3des,aes等
(4)验证方式:MD5、SHA-1


参考链接:
IPSec 基本概念