一、IPSec介绍
1.为什么需要IPSec呢?简单的说就是当初在开发IP协议的时候没有考虑安全性。没有考虑安全性,那么数据在internet上传输可能会导致数据被窃取,篡改,伪造等。所以再开发出IPsec协议来保护和兼容IP协议。
2.IPSec定义:
IPSec(Internet Protocol Security,网络安全协议)是IETF(Internet Engineering Task Force)制定的一组开放的网络安全协议。
它并不是一个单独的协议,而是一系列为IP网络提供安全性的协议和服务的集合。
包括认证头AH(Authentication Header)和封装安全载荷ESP(Encapsulating Security Payload)两个安全协议、密钥交换和用于验证及加密的一些算法等。
通过这些协议,在两个设备之间建立一条IPSec隧道。数据通过IPSec隧道进行转发,实现保护数据的安全性。通过4个方面来保证用户业务数据的安全性。1.数据来源认证。2.数据加密。3.数据完整性。4.抗重放。
二、IPSec详解
IPSec协议要涉及到5个方面的内容,即安全联盟,安全协议,封装模式,加密和验证,密钥交换。
1.安全联盟(Security Association,SA):
(1)简单的说就是通信两边协商要怎么安全的通信,要用那些协议来保证我们俩之间的通信安全。比如要用什么安全协议,要对那些流量进行保护,用什么封装模式,用什么加密算法,用什么验证算法,数据安全转换,传输的密钥和SA的生存周期等。
(2)所以我们在建立IPSec VPN时,需要先建立IPSec安全联盟(IPSec SA)。IPSec SA由三元组来唯一标识,即安全参数索引(Security Parameter Index,SPI),目的IP地址,安全协议号(使用的是AH还是ESP)。其中SPI是用来唯一标识SA的,SPI是一个32位bit的数值,封装在安全协议号里面,即AH或ESP协议里。
(3)IPSec SA是单向的逻辑连接,而通信又是双向的,所以最少要建立来回两个方向的IPSec SA,即一对IPSec SA。(ps:上面说了,IPSec SA由三元组来唯一标识,所以你安全协议用AH或ESP就只用建立一对IPSec SA(即2个IPSec SA),如果AH和ESP两个安全协议都用,就要建立两对IPSec SA(即4个IPSec SA))
(4)建立IPSec SA的两个方式:手动和internet密钥交换(internet key Exchange,IKE)方式。IKE协商也要建立IKE SA,即IPSec VPN建立的第一阶段就是建立IKE SA,再通过IKE SA建立的安全通道建立IPSec SA。
2.安全协议
IPSec使用认证头(Authentication Header,AH)和封装安全载荷(Encapsulating Security payload,ESP)来提供认证或加密。其中AH仅支持认证,不支持加密,ESP支持认证和加密。AH和ESP可以联合使用。
(1)AH报文结构
(2)esp报文结构
3.封装模式
封装模式是指将AH或ESP相关的字段插入到原始IP报文中,以实现对报文的认证和加密,封装模式有传输模式和隧道模式两种。
(1)传输模式
传输模式是将AH或ESP插入IP头与传输层协议头之间(见下图,注意AH和ESP报文在传输模式下的报文封装格式是不同的)。
(2)隧道模式
在隧道模式下,AH头或ESP头被插到原始IP头之前,另外生成一个新的报文头放到AH头或ESP头之前,保护IP头和负载。见下图。传输模式没有新增IP头,隧道模式有新增IP头。
(3)区别
传输模式下,与AH协议相比,ESP协议的完整性验证范围不包括IP头,无法保证IP头的安全。
隧道模式下,与AH协议相比,ESP协议的完整性验证范围不包括新IP头,无法保证新IP头的安全。
两者结合可解决问题。一起使用是必须使用相同的封装模式。
从安全性来讲,隧道模式优于传输模式。它可以完全地对原始IP数据包进行验证和加密。隧道模式下可以隐藏内部IP地址,协议类型和端口。
从性能来讲,隧道模式因为有一个额外的IP头,所以它将比传输模式占用更多带宽。
从场景来讲,传输模式主要应用于两台主机或一台主机和一台VPN网关之间通信;隧道模式主要应用于两台VPN网关之间或一台主机与一台VPN网关之间的通信。
4.加密和验证
IPSec提供两个安全机制,即加密和验证。加密保证数据的机密性,防止数据在传输中被窃听。验证保证数据的真实可靠性,防止数据在传输中被仿冒和篡改。加解密和验证的密钥可以手工配置或由IKE协议自动协商生成。
(1)加密
IPSec采用的加密算法是对称加密算法。对称加密即接受方和发送方采用相同的密钥进行加解密。
对称加密有,数据加密标准(data encryption standard,DES),3DES,先进加密标准(Advanced Encryption Standard,AES),国密算法(SM1,SM4)。
(2)验证
IPSec采用HMAC功能,比较完整性校验值ICV进行数据包的完整性和真实性验证。加密和验证通常是一起的。验证算法有消息摘要(Message Digest 5,MD5),安全散列算法(Secret Hash Algorithm 1 ,SHA1),SHA2,国密算法SM3。
5.密钥交换
使用对称密钥进行加密和验证时,如何安全的共享密钥。有两种方式,一是带外共享密钥,就是通过私下协定的密钥,手动配置,我们在用的时候保持一致即可。二是使用安全的密钥分发协议(IKE协议)。
(1)因特网密钥交换(internet key exchange,IKE)协议。是基于UDP的应用层协议。为IPSec提供了自动协商的密钥,建立IPSec安全联盟的服务,简化IPSec的配置和维护工作。有IKEv1和IKEv2两个版本。
IKE协议是建立在internet安全联盟和密钥管理协议ISAKMP定义的框架上。
IKE SA是双向的逻辑连接,与IPSec SA不一样。对等体之间建立一个IKE SA完成身份验证和密钥信息交换后,在IKE SA的保护下,根据配置的AH/ESP安全协议等参数协商出一对IPSec SA。此后,对等体间的数据将在IPSec隧道中加密传输。
(2)IKE的安全机制,自我保护机制
①身份认证确认双方的身份(对等体的IP地址或名称)
预共享密钥认证(pre-shared key,PSK),数字证书认证(rsa-signature,RSA),数字信封认证。
②身份保护
身份数据在密钥产生之后加密传输,实现对身份数据的保护。
③DH
DH是一种公共密钥交换方法,它用于产生密钥材料,并通过ISAKMP消息在发送和接收设备之间进行密钥材料交换。然后,两端设备各自计算出完全相同的对称密钥。该对称密钥用于计算加密和验证的密钥。在任何时候,通信双方都不交换真正的密钥。DH密钥交换是IKE的精髓所在。
④PFS
完善的前向安全性PFS(Perfect Forward Secrecy)通过执行一次额外的DH交换,确保即使IKE SA中使用的密钥被泄露,IPSec SA中使用的密钥也不会受到损害。
三、IPSec基本原理
1.定义IPSec保护的数据流
IPSec是基于定义的感兴趣流触发对特定数据的保护,感兴趣流就是要保护的对象。有两种方式。一是ACL方式,二是路由方式。
①ACL方式就是通过规则筛选出要保护的流量。
②路由方式就是通过IPSec虚拟隧道接口建立IPSec隧道,将所有路由到IPSec虚拟隧道接口的报文都进行IPSec保护,根据该路由的目的地址确定哪些数据流需要IPSec保护。其中IPSec虚拟隧道接口是一种三层逻辑接口。支持动态路由协议。
2.IKEv1协商安全联盟
采用IKEv1协商安全联盟主要分为两个阶段:第一阶段,通信双方协商和建立IKE协议本身使用的安全通道,即建立一个IKE SA;第二阶段,利用第一阶段已通过认证和安全保护的安全通道,建立一对用于数据安全传输的IPSec安全联盟。
①IKEv1协商阶段1
支持主模式和野蛮模式。协商的目的是建立IKE SA。IKE SA建立后对等体间的所有ISAKMP消息都将通过加密和验证,这条安全通道可以保证IKEv1第二阶段的协商能够安全进行。ISAKMP(Internet Security Association and Key Management Protocol,互联网安全关联和密钥管理协议)是IPSec VPN中用于协商和管理安全联盟(SA)的核心协议。它定义了密钥交换和SA建立的框架,但本身不实现具体密钥交换,通常与IKE(Internet Key Exchange)协议配合使用。
主模式包含三次双向交换,用到了六条ISAKMP信息,协商过程如图1所示。这三次交换分别是:
消息①和②用于提议交换
发起方发送一个或多个IKE安全提议,响应方查找最先匹配的IKE安全提议,并将这个IKE安全提议回应给发起方。匹配的原则为协商双方具有相同的加密算法、认证算法、认证方法和Diffie-Hellman组标识。
消息③和④用于密钥信息交换
双方交换Diffie-Hellman公共值和nonce值(nonce值用于保证IKE SA存活和抗重放攻击。),用于IKE SA的认证和加密密钥在这个阶段产生。
消息⑤和⑥用于身份和认证信息交换(双方使用生成的密钥发送信息),双方进行身份认证和对整个主模式交换内容的认证。
野蛮模式只用到三条信息,前两条消息①和②用于协商IKE安全提议,交换Diffie-Hellman公共值、必需的辅助信息以及身份信息,并且消息②中还包括响应方发送身份信息供发起方认证,消息③用于响应方认证发起方。IKEv1协商阶段1的协商过程如图1所示。
②IKEv1协商阶段2
IKEv1协商阶段2的目的就是建立用来安全传输数据的IPSec SA,并为数据传输衍生出密钥。这一阶段采用快速模式(Quick Mode)。该模式使用IKEv1协商阶段1中生成的密钥对ISAKMP消息的完整性和身份进行验证,并对ISAKMP消息进行加密,故保证了交换的安全性。IKEv1协商阶段2的协商过程如图2所示。
IKEv1协商阶段2通过三条ISAKMP消息完成双方IPSec SA的建立:
协商发起方发送本端的安全参数和身份认证信息。
安全参数包括被保护的数据流和IPSec安全提议等需要协商的参数。身份认证信息包括第一阶段计算出的密钥和第二阶段产生的密钥材料等,可以再次认证对等体。
协商响应方发送确认的安全参数和身份认证信息并生成新的密钥。
IPSec SA数据传输需要的加密、验证密钥由第一阶段产生的密钥、SPI、协议等参数衍生得出,以保证每个IPSec SA都有自己独一无二的密钥。
如果启用PFS,则需要再次应用DH算法计算出一个共享密钥,然后参与上述计算,因此在参数协商时要为PFS协商DH密钥组。
发送方发送确认信息,确认与响应方可以通信,协商结束。
四、配置案例
待更新