目录
1、简介
IPsec是一组基于网络层的,应用密码学的安全通信协议族,它不是具体的哪个协议,而是一个开放的协议族。
作用:在IPv4和IPv6环境中为网络层流量提供灵活的安全服务。
IPsec 虚拟专用网:是基于IPsec协议族构建的在IP层实现的安全虚拟专用网。通过在数据包中插入头部来保证OSI上层协议数据的安全,主要用于保护TCP、UDP、ICMP和隧道的IP数据包。
虚拟专用网只是IPsec协议族的一种应用方式,虚拟专用网也不止IPsec一种实现方式,还有二层、四层虚拟专用网实现方式。
2、IPsec协议安全体系框架
IPsec 虚拟专用网体系结构主要由AH、ESP和IKE协议套件组成。
AH协议:AH是报文头验证协议,主要提供的功能数据的完整性的校验、数据源验证和抗报文重放功能。然而AH并不加密所保护的数据报。
ESP协议:ESP是封装安全载荷协议,它能提供AH协议所有的功能(但其数据的完整性校验不包括IP头),还可以提供对IP报文的加密功能。
IKE协议:IKE协议用来自动协商AH和ESP所使用的密码算法。
这里简单说一下重放攻击:
假设绿帽向蓝帽要求认证自己的身份。蓝帽要求绿帽提供密码作为身份的验证。此时,红帽窃听通讯,并记录下绿帽的密码。在通讯完成后,红帽联系蓝帽,并要求认证自己为绿帽的身份,在提供了正确的绿帽密码后,蓝帽接受红帽的验证,并认可其绿帽身份。
3、IPsec协议族
1、IPsec有两个通信保护机制:ESP机制为通信提供机密性和完整性;AH机制为通信提供完整性的保护。ESP机制和AH机制都能为通信提供抗重放攻击。
2、DOI将所有的IPsec小组的文献捆绑在一起。他可以被认为是所有IPsec安全参数的主数据库。IKE定义了安全参数如何协商,以及共享密钥如何建立,但他没有定义的是协商的内容,这方面的定义是由“”“解释域(DOI)”文档来进行的
4、工作模式
4.1 传输模式
主要应用于主机和主机之间端到端通信数据的保护。
封装方式
在传输模式下,IPsec协议处理模块会在IP报头和高层协议报头之间插入一个IPsec报头。这种模式下IP报头与原始IP分组中的IP报头一致,只是协议字段会被修改成IPsec协议的协议号(50或51)。传输模式只为高层协议提供安全服务。
4.2 隧道模式
经常用于私网和私网之间通过公网进行通信,建立安全虚拟专用网通道。在隧道模式下原始IP分组被封装成一个新的IP报文,在内部报头以及外部报头之间插入一个IPsec报头,原IP地址受到IPsec的保护。还可以对数据进行加密,隐藏数据包中的IP地址。
封装方式:增加新的IP(外网IP)头,其后是IPsec包头,最后将整个数据包封装。
5、IPsec通信协议
5.1 AH(认证报头)协议
AH分配到的协议号是51。也就是说,使用AH协议进行安全保护的IPv4数据报文的IP头部中协议字段将是51,表明IP头之后是一个AH头。
AH提供的安全服务:
1)无连接数据完整性;通过哈希函数产生的校验来保证
2)数据源认证;通过在计算验证码时加入一个共享密钥来实现。
3)抗重放服务;AH报头中的序列号可以防止重放攻击。
AH不提供任何保密性服务:它不加密所保护的数据包。
AH报头
AH在传输模式下的封装:
AH在隧道模式下的封装:
5.2 ESP(封装安全有效载荷)协议
ESP同样被当作一种IP协议对待,紧贴在ESP头前的IP头,以协议号50标志ESP头,ESP之前的IP头中的协议字段将是50,以表明IP头之后是一个ESP头。
ESP提供的安全服务:
1)无连接数据完整性
2)数据源认证
3)抗重放服务
4)数据保密
5)有限的数据流保护
ESP报头
ESP在传输模式下的封装:
ESP在隧道模式下的封装:
在隧道模式中,ESP保护整个IP包,整个原始IP包将会以ESP载荷的方式加入新建的数据包,同时,系统根据隧道起点和终点等参数,建立一个隧道IP头,作为这个数据包的新IP头,ESP头夹在隧道IP头和原始IP包之间,并点缀ESP尾。而ESP提供加密服务,所以原始IP包和ESP尾以密文的形式出现。
ESP在验证过程中,只对ESP头部、原始数据包IP包头和原始数据进行验证;只对原始的整个数据包进行加密,而不加密验证数据。
AH和ESP的比较
安全特性 | AH | ESP |
协议号 | 51 | 50 |
数据完整性校验 | 支持 | 支持(不验证IP头) |
数据源验证 | 支持 | 支持 |
数据加解密 | 不支持 | 支持 |
抗重放服务 | 支持 | 支持 |
NAT-T(NAT穿越) | 不支持 | 支持 |
ESP在隧道模式不验证外部IP头,因此ESP在隧道模式下可以在NAT环境中运行。
ESP在传输模式下,虽然不会验证外部IP头部,但是TCP/UDP的校验和包括源目IP地址,因为NAT地址已发生改变,所以TCP的校验和要更新,但是现在TCP/UDP已经被ESP加密,所以将导致校验失败。而AH因为提供数据来源确认(源IP地址一旦改变,AH校验失败),所以无法穿越NAT。
6、IPsec建立阶段
SA(安全联盟)
IPSec是在两个端点之间提供安全通信,端点被称为IPSec对等体。IPSec能够允许系统、网络的用户或管理员控制对等体间安全服务的粒度。例如,某个组织的安全策略可能规定来自特定子网的数据流应同时使用AH和ESP进行保护,并使用3DES(Triple Data Encryption Standard)进行加密;另一方面,策略可能规定来自另一个站点的数据流只使用ESP保护,并仅使用DES加密。通过SA(SecurityAssociation),IPSec能够对不同的数据流提供不同级别的安全保护。
安全联盟是IPSec的基础,也是IPSec的本质。SA是通信对等体间对某些要素的约定,例如,使用哪种安全协议、协议的操作模式(传输模式和隧道模式)、加密算法(DES和3DES)、特定流中保护数据的共享密钥以及密钥的生存周期等。
安全联盟是单向的,在两个对等体之间的双向通信,最少需要两个安全联盟来分别对两个方向的数据流进行安全保护。入站数据流和出站数据流分别由入站SA和出站SA进行处理。同时,如果希望同时使用AH和ESP来保护对等体间的数据流,则分别需要两个SA,一个用于AH,另一个用于ESP。
安全联盟由一个三元组来唯一标识,这个三元组包括安全参数索引(SPI, Security Parameter Index)、目的IP地址、安全协议号(AH 或ESP)。SPI 是为唯一标识SA而生成的一个32 比特的数值,它在IPSec头中传输。
IPSec设备会把SA的相关参数放入SPD(Security Policy Database)里面,SPD里面存放着“什么数据应该进行怎样的处理”这样的消息,在IPSec数据包出站和入站的时候会首先从SPD数据库中查找相关信息并做下一步处理。
安全联盟SA:通信的双方符合SA约定的内容就可以建立SA。
SA包括:安全参数索引、目的IP地址、安全协议号。
IKE的产生:
1.用IPsec保护一个IP包之前,必须先建立安全联盟(SA)
2.IKE可以自动进行安全联盟的建立与密钥交换。Intent密钥交换(IKE)就用于动态建立SA,代表IPsec对SA进行协商。
IKE的用途:
- IKE为IPsec协商生成密钥,供AH/ESP加密和验证使用。
- 在IPsec通信双方之间,动态的建立安全联盟(SA),对SA进行管理和维护。
- IKE是UDP之上的一个应用层协议。通过使用安全关联(SA),IPsec能够区分对不同的数据流提供的安全服务。
6.1 IKE工作工程
第一阶段:通信各方建立一个已经通过身份验证和安全保护的通道,此阶段的交换建立一个IKE SA。第一阶段交换有两种协商模式:主模式协商、野蛮模式协商
第二阶段:用已经建立的安全联盟(IKE SA)为IPsec协商安全服务,即为IPsec协商具体的安全联盟,建立IPsec SA,产生真正可以用来加密数据流的密钥,IPsec SA用于最终的IP数据安全传送。
IKE协商阶段
1)IKE阶段1:
一、主模式:默认使用IP地址作为身份标识;默认传递自己的出接口地址做身份标识,校验对端的公网IP做对端身份标识(自动生成双方身份ID)
第一次交换(消息1和2):策略协商
发送方发送一个包含cookie(记为Ci)和SA负载(记为SAi;携带IKE SA的各项参数,包括:HASH散列类型(HASH算法),加密算法、认证方式、DH组的强度、SA存活期)的数据包来协商参数。这里的cookie(Ci)可以认为它是一个表面身份的令牌,每次通信都需要它。
接收方查看IKE策略消息,寻找合适的IP地址匹配策略,找到后发回一条消息去响应,包括一个cookie(记为Cr)和SA负载(记为Sar,已经挑选好的参数),如果没有合适的参数,则返回一个拒绝。
第二次交换(消息3和4):D-H交换,通过交换通信双方可以生成密钥。通过DH算法来算出对称密钥。
IKE的精髓在于它永远不在不安全的网络上传送密钥,而是通过一些数据的交换,通信双方最终计算出共享的密钥,并且即使第三方截获了双方用于计算密钥的所有交换数据,也无法计算出真正的密钥。其中的核心技术就是DH(Diffie Hellman)交换技术。
第三次交换(消息5和6):对等体之间的验证。(此传输过程数据加密)。
总结:ISAKMP/IKE阶段1主要任务就是认证,第三阶段即在安全的环境下进行认证,前面两个步骤四个数据包的传输都是为了第三阶段第5和第6个数据包交换的认证做铺垫。1-2包为认证做准备好策略;3-4包生成密钥为下一步提供加密基础;5-6身份交换验证。
注:
1、X、Y是交互的公钥。Ni和Nr是随机数,用以保持活性,防重放攻击。
2、DH算法(交换密钥算法)可以让通信双方生成一个只有通信双方知道其他人却不认识的对称密钥。
(这里借用一下别人的图吧)Peer1当做是Bob,Peer2当做是Alice
首先Bob和Alice利用公钥分别与各自私钥做加密算法;得到一个加密产物,而Bob和Alice分别交换自己通过私钥加密的中间产物,这样Bob和Alice就拥有了对方的加密产物;最后Bob和Alice将自己和对方的加密产物再一起运算,这样双方得到了相同的密钥,而且这个东西最开始是由Bob和Alice的私钥加密的,所以其他人是不可能认识的。
二、野蛮模式:可以使用用户名或者IP等作为双方身份标识,即可以手动配置身份ID。
野蛮模式同样包含三个步骤,仅通过三个包进行传输。野蛮模式下标识为Aggressive。
三个交互包:
1、第一个交互包发起方建立SA,发起DH交换
2、第二个交互包接收方接受SA
3、第三个交互包发起方认证接受方(加密传输)
注:
1、X、Y是交互的公钥,Ni和Nr是随机数(用以保持活性)
IKE阶段1两种模式对比:
| 主模式 | 野蛮模式 |
消息交互 | 交互6个信息 | 交互3个信息 |
身份ID | 以IP地址作为身份ID,自动生成本端身份ID和对端身份ID | 可以以多种形式(IP地址、字符串)手动或自动生成本端和对端的身份ID |
域共享密钥 | 只能基于IP地址来确定预共享密钥。 | 基于ID信息(主机名和IP地址)来确定预共享密钥 |
安全性 | 较高;前4个消息以明文传输,最后2个消息加密,对对端身份进行了保护 | 较低;前两个消息以明文传输,最后一个消息进行加密,不保护对端身份 |
速度 | 较慢 | 较快 |
2)IKE阶段2协商过程:
1、协商IPsec安全参数
安全参数称为transform set,包括:加密算法、hash算法、安全协议、封装模式、存活时间
2、建立IPsec SA
阶段2使用快速模式交换,通过3条消息建立IPsec SA,用来协商加密用户数据的安全策略(认证和加密方法和对应算法)
前两条消息协商IPsec SA的各项参数值,并且生成IPsec使用的密钥。
其中第二条消息还提供响应方在场证明。
第三条消息为发起方提供在场证据。
IKE阶段2只有一种信息交互模式——快速模式。
第二阶段所有数据都经过了加密:
主要功能:
1.协商安全参数来保护数据连接。
2.周期性的对数据连接更新密钥信息。
第二阶段的效果为协商出IPsec单向SA,为保护IPsec数据流而创建。第二阶段整个协商过程受第一阶段IKE SA保护
当第二阶段协商完毕之后,第一阶段的策略将暂时不会被使用,直到有新的虚拟专用网连接建立时或IPSEC SA加密密钥超时时,才会用第一阶段的策略重新生成并传递新的加密数据和认证的密钥。
7、数据传输阶段
数据传输阶段是通过AH或者ESP通信协议进行数据传输;数据传输建立在网络层。
数据传输阶段问题:虚拟专用网黑洞,对端虚拟专用网连接已经断开而我方还处在SA的有效时间内,从而形成了虚拟专用网隧道的黑洞。我方不停的发送加密的虚拟专用网数据过去,但对方拒绝接收。
解决:DPD解决虚拟专用网隧道黑洞。
DPD:死亡对等体检测,检查对端的IKE SA是否存在,当虚拟专用网隧道异常的时候,能检测到并重新发起协商,来维持虚拟专用网隧道。DPD只对第一阶段生效,如果第一阶段本身已经超时断开,则不会再发DPD包。
DPD概述:DPD采用空闲计时器机制。
每当收到IPsec加密的包后就重置包对应的IKE SA的空闲计时器。如果计时器开始到结束过程都没有接受到该SA对应的加密包,那么下一次有IP包要被这个SA加密发送或接收到加密包之前就需要使用DPD来检测对方是否存活。默认是发出5次请求,在没有收到任何DPD应答就会删除SA。
DPD有两种模式:
1.周期模式:周期向对端发送DPD包检测对等体,收到回复则证明正常,如果收不到回复,则每隔2s发送一次DPD,如果发送7次仍没有回复,自动清除本地对应的IKE SA和IPsec SA。
2.按需模式:默认模式,当IPsec 虚拟专用网发出流量而收不到回程的数据,则发出DPD探测包。每隔2s发送一次,7次都没有回应则删除本地对应的IKE SA和IPsec SA。
8、NAT下IPsec虚拟专用网部署的问题
1、IKE协商问题
身份ID为IP地址类型,在NAT环境下,关键看双方的虚拟专用网使用的身份ID是否匹配(无论是自由配置 还是默认生成) 只要是匹配的,NAT环境协商也没有问题,但是如果是不匹配的,就会协商失败
野蛮模式:可以以多种形式(IP,字符串等)手动或自动的生成本端和对端的身份ID,两方从双方交互 在IKE数据包中的身份标识字段。不会从IP层的源IP标识对端身份。即使经过NAT,只会改变IP层的源IP,不会改变IKE数据包中的身份标识字段。所以说在有NAT的环境下,只能采用野蛮模式。若IPsec 虚拟专用网主模式身份ID若可以自由配置,那在NAT环境下则可以协商成功。
2、NAT数据传输问题
IPsec虚拟专用网的数据传输有2个通信模式和2个工作模式,也就是4种数据传输模式。
(1)AH的传输模式和隧道模式。
由于AH会认证源目IP地址,所以在经过NAT后,两端的AH头部认证不一致。AH会在进隧道的时候,将所有IP包进行完整性认证,形成AH校验摘要,一旦进入隧道,经过NAT,在接收方计算得到的AH头部就会和发送方的AH 认证头不一致。AH校验失败,数据被接收方丢弃。
AH协议是根据自己的完整性决定丢弃数据的。但是在网络协议栈的设计中,本身也存在校验机制来校验数据包是否正确。
(2)ESP的传输模式和隧道模式。
先引出一个TCP/UDP伪首部校验机制。
目的端根据伪首部和数据单元计算校验和来验证数据在传输过程中没有改变而且到达了正确的目的。
伪首部是为了增加校验和检错能力。是一个虚拟的数据结构,从IP分组头中提取出的,既不向下传送也不向上递交,仅仅为了计算校验和。通过伪首部的目的地址来检查TCP报文是否收错了,通过伪首部的传输层协议来检查传输层协议是否选对了。
在ESP的传输模式下,发送方和接收方的伪首部不一致,计算出来的校验值也不同。所以在经过NAT后,数据包会被丢弃。
在ESP到的隧道模式下,NAT只会改变新IP包头的源IP,原始的IP被加密后放在新数据包的数据部分。这时TCP的伪首部验证会通过。
总结:在NAT环境下,只能通过IKE的野蛮模式进行IEK阶段1的协商,在数据传输极端只能使用ESP的隧道模式进行数据传输。IPsec的IKE协商是通过应用层的协议进行协商,但是IPsec 虚拟专用网是三层虚拟专用网,所以数据传输是以三层的数据包形式传输,使用AH或者ESP协议传输数据。IPsec传输数据没有端口。
问题:三层传输导致只能同时建立一个虚拟专用网,否则经过NAT之后数据回包无法正常进行。因为无法标识是哪个虚拟专用网连接的回包。
多虚拟专用网 IKE的协商问题。
IKE协商规定源和目的的端口号必须为UDP 500,在多虚拟专用网场景下可能会在防火墙设备NAT后发生变化,从而导致IKE 协商失败。
数据传输过程中,由于ESP工作在网络层,没有传输层头部,从而无法进行NAPT端口复用,导致数据传输失败。
解决:NAT-T技术
使用NAT-T技术来解决标准IPsec 虚拟专用网只能同时进行一个虚拟专用网连接的问题。NAT-T允许多个IPsec 虚拟专用网同时连接。
(1)NAT-T协议运用在IPsec 虚拟专用网中,在IKE协商和虚拟专用网连接时,允许源端口为非UDP 500端口,使用目的端口是UDP 4500端口。
(2)NAT-T协议为ESP增加了UDP头部,从而解决了数据传输过程经过防火墙后无法进行端口复用的问题。