[转帖]IPSec介绍

时间秒杀一切 提交于 2020-01-23 23:34:50
https://blog.csdn.net/NEUChords/article/details/92968314

 

1.IPSEC协议簇安全框架
a.IPSec简介
IPSec(Internet Protocol Security):是一组基于网络层的,应用密码学的安全通信协议族。IPSec不是具体指哪个协议,而是一个开放的协议族。
IPSec协议的设计目标:是在IPV4和IPV6环境中为网络层流量提供灵活的安全服务。
IPSec VPN:是基于IPSec协议族构建的在IP层实现的安全虚拟专用网。通过在数据包中插入一个预定义头部的方式,来保障OSI上层协议数据的安全,主要用于保护TCP、UDP、ICMP和隧道的IP数据包。

b.IPSec协议族

IPSec VPN体系结构主要由AH、ESP和IKE协议套件组成。
IPSec通过ESP来保障IP数据传输过程的机密性,使用AH/ESP提供数据完整性、数据源验证和抗报文重放功能。
ESP和AH定义了协议和载荷头的格式及所提供的服务,但却没有定义实现以上能力所需具体转码方式,转码方式包括对数据转换方式,如算法、密钥长度等。
为简化IPSec的使用和管理,IPSec还可以通过IKE进行自动协商交换密钥、建立和维护安全联盟的服务。具体如下:
1.AH协议:AH是报文头验证协议,主要提供的功能有数据源验证、数据完整性校验和防报文重放功能。然而,AH并不加密所保护的数据报。
2.ESP协议:ESP是封装安全载荷协议。它除提供AH协议的所有功能外(但其数据完整性校验不包括IP头),还可提供对IP报文的加密功能。
3.IKE协议:IKE协议用于自动协商AH和ESP所使用的密码算法。
IKE定义了安全参数如何协商,以及共享密钥如何建立,但它没有定义的是协商内容。这方面的定义是由"解释域(doi)"文档来进行。
IPSec协议族:

1.IPSec协议定义了两种通信保护机制:
封装安全载荷(ESP,Encapsulating Security Payload):ESP机制为通信提供机密性和完整性;
鉴别头(AH,Authentication Header):AH机制为通信提供完整性保护。
ESP机制和AH机制都能为通信提供抗重放(Anti-replay)攻击。
2.IPSec协议可以设置成在两种工作模式下运行:一种是隧道(tunnel)模式,另一种是传输(transport)模式。
3.IPSec协议使用IKE协议实现安全协议的自动安全参数协商。IKE协商的安全参数包括加密与鉴别算法、
加密与鉴别密钥、通信的保护模式(传输或隧道模式)、密钥的生存期等。IKE将这些安全参数构成的集合称为安全关联(SA,security Association),还负责这些安全参数的刷新。
4.两个数据库:安全策略数据库SPD,安全关联数据库SAD。
5.DOI将所有的IPSec小组的文献捆绑在一起。它可以被认为是所有IPSec安全参数的主数据库。

2.IPSEC工作模式
a.传输模式(Transport mode)
在传输模式下,IPSec协议处理模块会在IP报头和高层协议报头之间插入一个IPSec报头。
IP报头与原始IP分组中的IP报头是一致的,只是IP报文中的协议字段会被改成IPSec协议的协议号(50或者51) ,并重新计算IP报头校验和。传输模式保护数据包的有效载荷、高层协议,IPSec源端点不会修改IP报头中目的IP地址,原来的IP地址也会保持明文。
传输模式只为高层协议提供安全服务。
主要应用场景:经常用于主机和主机之间端到端通信的数据保护。
封装方式:不改变原有的IP包头,在原数据包头后面插入IPSec包头,将原来的数据封装成被保护的数据。


b.隧道模式(Tunnel mode)
传输模式不同,在隧道模式下,原始IP分组被封装成一个新的IP报文,在内部报头以及外部报头之间插入一个IPSec报头,原IP地址被当作有效载荷的一部分受到IPSec的保护。
通过对数据加密,还可以隐藏原数据包中的IP地址,这样更有利于保护端到端通信中数据的安全性。
封装方式:增加新的IP(外网IP)头,其后是ipsec包头,之后再将原来的整个数据包封装。

主要应用场景:经常用于私网与私网之间通过公网进行通信,建立安全VPN通道。


3.IPSEC通信协议
a.AH协议
AH分配到的协议号是51。即使用AH协议进行安全保护的IPv4数据报文的IP头部中协议字段将是51,表明IP头之后是一个AH头。AH头比ESP头简单得多,因为它没有提供机密性。由于不需要填充和一个填充长度指示器,因此也不存在尾部字段。另外,也不需要一个初始化向量。
AH提供的安全服务:
1.无连接数据完整性:通过哈希函数产生的校验来保证。
2.数据源认证:通过在计算验证码时加入一个共享秘钥来实现。
3.抗重放服务:AH报头中的序列号可以防止重放攻击。
AH不提供任何保密性服务:它不加密所保护的数据包。
不论是传输模式还是隧道模式下,AH提供对数据包的保护时,它保护的是整个IP数据包(易变的字段除外,如IP头中的TTL和TOS字段)。
AH头:

AH在传输模式下封装:

AH在隧道模式下封装:


b.ESP协议
ESP同样被当作一种IP协议对待,紧贴在ESP头前的IP头,以协议号50标志ESP头,ESP之前的IP头中的协议字段将是50,以表明IP头之后是一个ESP头,ESP不仅具备ESP头,还有一个包含有用信息的ESP尾。
在隧道模式中,ESP保护整个IP包,整个原始IP包将会以ESP载荷的方式加入新建的数据包,同时,系统根据隧道起点和终点等参数,建立一个隧道IP头,作为这个数据包的新IP头,ESP头夹在隧道IP头和原始IP包之间,并点缀ESP尾。
ESP提供加密服务,所以原始IP包和ESP尾以密文的形式出现。
ESP在验证过程中,只对ESP头部、原始数据包IP包头、原始数据包数据进行验证;只对原始的整个数据包进行加密,而不加密验证数据。
ESP提供的安全服务:
1.无连接数据完整性。
2.数据源认证。
3.抗重放服务。
4.数据保密。
5.有限的数据流保护
保密服务通过使用密码算法加密IP数据包的相关部分来实现。
数据流保密由隧道模式下的保密服务提供。
ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
ESP头:

ESP在传输模式下封装:


ESP通常使用DES、3DES、AES等加密算法实现数据加密,使用MD5或SHA1来实现数据完整性认证。
ESP同样被当作一种IP协议对待,紧贴在ESP头前的IP头,以协议号50标志ESP头,并且,ESP不仅具备ESP头,还有一个包含有用信息的ESP尾。
在隧道模式中,ESP保护整个IP包,整个原始IP包将会以ESP载荷的方式加入新建的数据包,同时,系统根据隧道起点和终点等参数,建立一个隧道IP头,作为这个数据包的新IP头,ESP头夹在隧道IP头和原始IP包之间,并点缀ESP尾。
ESP提供加密服务,所以原始IP包和ESP尾以密文的形式出现。
ESP在验证过程中,只对ESP头部、原始数据包IP包头、原始数据包数据进行验证;只对原始的整个数据包进行加密,而不加密验证数据。

c.AH和ESP对比

ESP在隧道模式不验证外部IP头,因此ESP在隧道模式下可以在NAT环境中运行。
ESP在传输模式下会验证外部IP头部,将导致校验失败。
AH因为提供数据来源确认(源IP地址一旦改变,AH校验失败),所以无法穿越NAT。

4.IPSEC建立阶段
a.IKE协商阶段
1.安全联盟SA(Security Association):是两个IPSec通信实体之间经协商建立起来的一种共同协定,它规定了通信双方使用哪种IPSec协议保护数据安全、应用的算法标识、加密和验证的密钥取值以及密钥的生存周期等等安全属性值。通过使用安全关联(SA) , IPSec能够区分对不同的数据流提供的安全服务。
2.IPSec是在两个端点之间提供安全通信,端点被称为IPSec对等体。IPSec能够允许系统、网络的用户或管理员控制对等体间安全服务的粒度。通过SA(Security Association),IPSec能够对不同的数据流提供不同级别的安全保护。
3.安全联盟是IPSec的基础,也是IPSec的本质。SA是通信对等体间对某些要素的约定,例如,使用哪种安全协议、协议的操作模式(传输模式和隧道模式)、加密算法(DES和3DES)、特定流中保护数据的共享密钥以及密钥的生存周期等。
4.安全联盟是单向的,在两个对等体之间的双向通信,最少需要两个安全联盟来分别对两个方向的数据流进行安全保护。入站数据流和出站数据流分别由入站SA和出站SA进行处理。同时,如果希望同时使用AH和ESP来保护对等体间的数据流,则分别需要两个SA,一个用于AH,另一个用于ESP。
5.安全联盟由一个三元组来唯一标识,这个三元组包括安全参数索引(SPI, Security Parameter Index)、目的IP地址、安全协议号(AH 或ESP)。SPI 是为唯一标识SA而生成的一个32比特的数值,它在IPSec头中传输。
5.IPSec设备会把SA的相关参数放入**SPD(Security Policy Database)**里面,SPD里面存放着“什么数据应该进行怎样的处理”这样的消息,在IPSec数据包出站和入站的时候会首先从SPD数据库中查找相关信息并做下一步处理。

1.IKE的产生背景
1.用IPSec保护一个IP包之前,必须先建立安全联盟(SA)。
2.IPSec的安全联盟可以通过手工配置的方式建立。但是当网络中节点较多时,手工配置将非常困难,而且难以保证安全性。这时就可以使用**IKE(Internet Key Exchange)**自动进行安全联盟建立与密钥交换的过程。Internet密钥交换(IKE)就用于动态建立SA,代表IPSec对SA进行协商。

2.IKE的用途
1.IKE为IPSec协商生成密钥,供AH/ESP加解密和验证使用。
2.在IPSec通信双方之间,动态地建立安全关联(SA:Security Association),对SA进行管理和维护。


3.IKE与AH/ESP之间关系
IKE是UDP之上的一个应用层协议,是IPSec的信令协议。IKE为IPSec协商生成密钥,供AH/ESP加解密和验证使用。AH协议和ESP协议有自己的协议号,分别是51和50。


4.IKE工作过程
IKE经过两个阶段为IPSec进行密钥协商并建立安全联盟:
第一阶段交换:通信各方彼此间建立了一个已通过身份验证和安全保护的通道,此阶段的交换建立了一个ISAKMP安全联盟,即ISAKMP SA(也可称为IKE SA)。第一阶段交换有两种协商模式:
主模式协商,一般情况下,IKE的主模式适用于两设备的公网IP固定、且要实现设备之间点对点的环境。
野蛮模式协商,对于例如ADSL拨号用户,其获得的公网IP不是固定的,且可能存在NAT设备的情况下,采用野蛮模式做NAT穿越,同时,由于IP不是固定的,用name作为id-type,总部采用模板的方式接收分支的IPSEC接入。
第二阶段交换:用已经建立的安全联盟(IKE SA)为IPSec协商安全服务,即为IPSec协商具体的安全联盟,建立IPSec SA,产生真正可以用来加密数据流的密钥,IPSec SA用于最终的IP数据安全传送。

5.IKE阶段1
IKE阶段1协商过程:

IKE阶段1–主模式协商:
第一次交换(消息1和2):策略协商。
在第1个数据包的传输过程中,发送方发起一个包含cookie (记为:Ci ) 和SA负载(记为:SAi,携带协商IKE SA的各项参数(5元组),包括IKE的散列类型如MD5;加密算法如DES、3DES等;认证方法如预共享、数字签名、加密临时值等;DH组;SA存活期)的数据包用来协商参数。
接收方查看IKE策略消息,在本地寻找与发送方IP地址匹配的策略,找到后发回一条消息去响应。响应者发送一个cookie (记为:Cr)和SA负载(记为:SAr,已经挑选的安全参数);如果没有可以挑选的参数,响应者会返回一个负载拒绝。
第二次交换(消息3和4):Diffie-Hellman交换。
执行DH交换,发起者和接收者交换伪随机数,如nonce。nonce是计算共享秘密(用来生成加密密钥和认证密钥)所必需的。该技术的优势在于,它允许参与者通过无担保媒体创建秘密值。
第三次交换(消息5和6):对等体验证。
ISAKMP/IKE阶段1主要任务就是认证,第三阶段即在安全的环境下进行认证,前面两个步骤四个数据包的传输都是为了第三阶段第5和第6个数据包交换的认证做铺垫。第1-2包交换为认证准备好策略(例如:认证策略、加密策略和散列函数等),第3-4包交换为保护5-6的安全算法提供密钥资源。

1.第1、2个包里重点在于ISAKMP策略的协商,这些策略直接提供对第二阶段的IPSEC SA策略协商的加密保护,这是为后面能在一个安全的环境下协商IPSEC SA策略打下基础。
2.在3、4个包里,重点在于通过DH算法产生和传递进行第一阶段认证的密钥材料,这些材料会让两端的VPN设备产生一对相同的密钥,这个密钥就是第一阶段相互间真实的认证密钥。
3.在5、6个包里,就用前面产生的认证密钥进行相互认证,当相互认证通过,那么为第二阶段协商IPSEC SA策略的安全通道立即打开,两端的VPN服务器会用第一阶段协商的安全策略对第二阶段协商的IPSEC SA策略进行安全加密和认证。

IKE阶段1–野蛮模式协商:
野蛮模式IKE交互过程:
野蛮模式同样包含三个步骤,仅通过三个包进行传输,野蛮模式标识为Aggressive。
野蛮模式下有三个交互包:
1.第一个交互包发起方建议SA,发起DH交换
2.第二个交互包接收方接受SA
3.第三个交互包发起方认证接受方
野蛮模式交互过程少,所以在传输过程中,其传输的数据比较多,并且前两个数据为明文传输,仅消息3为加密传输。

1.第一条消息:发起者发送5元组,DH公共值,辅助随机数nonce以及身份资料(IDi和IDr,在此处为设备上配置域名字符串或用户名字符串,也有可能是IP地址)。响应者可以选择接受或者拒绝该建议。Diffie-Hellman 公开值、需要的随机数据和身份信息也在第一条消息中传送。
2.第二条消息:如果响应者接受发起者的建议,则回应一个选定的5元组,DH公共值,辅助随机数nonce,身份材料以及一个“认证散列值”。
3.第三条消息:由发起者发送一个“认证散列值”,该消息被验证,让应答方能够确定其中的散列值是否与计算得到的散列值相同,进而确定消息是否有问题。实际上,这个消息认证发起者并且证明它是交换的参与者。这个消息使用前两个消息交换的密钥信息生成的密钥进行加密。
但是要注意: 包含身份信息的消息未被加密, 所以和主模式不同,野蛮模式不提供身份保护。

IKE阶段1两种模式对比:


6.IKE阶段2
IKE阶段2协商过程:

与第一阶段的过程类似,参与者交换建议,以确定在SA中采用哪些安全参数。
双方协商IPSec安全参数,称为变换集transform set,包括:加密算法、Hash算法、安全协议、封装模式、存活时间。
阶段2提案还包括安全协议-封装安全有效载荷(ESP)或认证头(AH)以及所选的加密和认证算法。

标准IPSec第二阶段:
阶段2使用“快速模式”交换。快速模式有两个主要的功能:
1.协商安全参数来保护数据连接。
2.周期性的对数据连接更新密钥信息。
第二阶段的效果为协商出IPSec 单向SA,为保护IPsec数据流而创建。第二阶段整个协商过程受第一阶段ISAKMP/IKE SA保护。
快速模式交换通过三条消息建立IPsec SA。
这3个包主要用来协商用于加密用户数据的安全策略(只有认证和加密方法和对应算法):
前两条消息协商IPsec SA的各项参数值,并生成IPsec使用的密钥;第二条消息还为响应方提供在场的证据;第三条消息为发起方提供在场的证据。
当第二阶段协商完毕之后,第一阶段的策略将暂时不会被使用,直到有新的VPN连接建立时或IPSEC SA加密密钥超时时,才会用第一阶段的策略重新生成并传递新的加密数据和认证的密钥。

b.数据传输阶段
1.概述
数据传输阶段是通过AH或者ESP通信协议进行数据的传输。
数据传输建立在网络层。

2.VPN隧道黑洞
可能情况:
对端的VPN连接已经断开而我方还处在SA的有效生存期时间内,从而形成了VPN隧道的黑洞。
另外一端如果之前SA没有释放,异常重启的对端又来连接,是不会接受新的连接协商的。

DPD解决VPN隧道黑洞:
DPD:死亡对等体检测(Dead Peer Detection),检查对端的ISAKMP SA是否存在。当VPN隧道异常的时候,能检测到并重新发起协商,来维持VPN隧道。
DPD 只对第一阶段生效,如果第一阶段本身已经超时断开,则不会再发DPD包。
DPD包并不是连续发送,而是采用空闲计时器机制。每接收到一个IPSec加密的包后就重置这个包对应IKE SA的空闲定时器;
如果空闲定时器计时开始到计时结束过程都没有接收到该SA对应的加密包,那么下一次有IP包要被这个SA加密发送或接收到加密包之前就需要使用DPD来检测对方是否存活。
DPD检测主要靠超时计时器,超时计时器用于判断是否再次发起请求,默认是发出5次请求(请求->超时->请求->超时->请求->超时)都没有收到任何DPD应答就会删除SA。

检查对端的ISAKMP SA是否存在两种工作模式:
1.周期模式:每隔一段时间,向对端发送DPD包探测对等体是否仍存在,如果收到回复则证明正常。如果收不到回复,则会每隔2秒发送一次DPD,如果发送七次仍收不到回复,则自动清除本地对应的ISAKMP SA和IPSEC SA。
2.按需模式:这是默认模式,当通过IPSEC VPN发送出流量而又收不到回程的数据时,则发出DPD探测包,每隔2秒发送一次,七次都收不到回应则清除本地对应的ISAKMP SA和IPSEC SA。注意,如果IPSEC通道上如果跑的只有单向的UDP流量,则慎用这个模式,尽管这种情况极少。
DPD很实用,应该开启。至于选择哪个模式,则根据实际需要,周期模式可以相对快地找出问题peer,但较消耗带宽;按需模式,较节约带宽,但只有当发出加密包后收不到解密包才会去探测。
————————————————
版权声明:本文为CSDN博主「NEUChords」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/NEUChords/article/details/92968314

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!