IPSEC协议簇
IPSEC协议簇 --- 基于网络层的,应用密码学的安全通信协议组
IPV6中,IPSEC是要求强制使用的,但是,IPV4中作为可选项使用
IPSEC可以提供的安全服务
机密性 --- 数据加密
完整性 --- 防篡改可用性
数据源鉴别 -- 身份认证数字证书
PSK -- 预共享密钥
不可否认性 --- 数据源鉴别重传攻击保护 --- 通过添加序列号 --- 一个一次性的数字 --- 用来防重放攻击
有限的流量保密 --- 在IPSEC中可以抓取感兴趣流,即可以设定哪些流量需要进入IPSEC隧道,继续保密传输,哪些流量不需要进入到通道中。
IPSEC 协议簇
安全协议
两种工作模式
传输模式
传输模式封装方式:不改变原有的IP包头,在原始的数据包头后面添加IPSEC包头,将原来的数据封装成被保护的数据
因为没有添加新的IP头部,所以,无法跨越公网建立隧道,适合在私网内部,数据传输时进行安全保障。
隧道模式
封装方式:需要增加新的IP头部,其后面是IPSEC的包头,之后,将原来的整个数据包进行分装保护。
适用于需要跨越公网的环境。
两个安全协议
AH --- 鉴别头协议
AH --- 鉴别头协议 --- 属于网络层协议,但是,封装在IP协议之上 --- 协议号:51
可以提供的安全服务
1,数据的完整性保证 --- 其最主要的工作是保证数据传输的完整性,所以,没有办法对数据进行加密保护。
2,数据源认证 --- 身份认证
3,抗重放攻击
AH的包头
安全参数索引(SPI) --- 用来唯一的标识SA --- 安全联盟、
SA -- 安全联盟 --- IPSEC在建立通道之前,双方需要协商安全参数,安全参数协商完成后,则建立对应的SA --- IPSEC SA
注意:IPSEC SA是分方向的,要想构建一个双向的安全通道,则需要建立两条方
向相反的SA,则不同的SA需要使用不同的SPI来进行标识,相当于是SA的一个
ID。
序列号 --- 用来防重放攻击
AH的保护范围传输模式
隧道模式
因为AH在进行完整性校验时会包含IP头部的内容,所以,在IP头部中,有一些在传输过程中就会发生变化的数据,比如TTL,TOS这样的数据将不做校验。
因为会校验IP地址,所以,AH无法应用在NAT环境下。
ESP --- 封装安全载荷协议
ESP --- 封装安全载荷协议 --- 属于网络层协议,但是,封装在IP协议之上 --- 协议号:50
可以提供的安全服务
1,数据的完整性校验
2,数据源认证
3,抗重放的保护
4,数据保密 --- 注意,这个是AH所不具备的一个安全服务 --- 可以进行选择性加密
ESP的头部
保护范围 --- 加密的范围是除了最外层的IP头部,ESP的头部以及最后ESP的认证数据部分不进行加密,其他内容都需要进行加密;
完整性校验的范围是加密的内容再增加ESP的头部内容传输模式
隧道模式
AH和ESP也可以同时使用
AH+ESP传输模式
AH+ESP隧道模式
注意:只要有AH参与的封装,就会导致IP头部的信息被校验,就无法应对NAT环境。
IKE--互联网密钥交换
IPSEC SA是可以手工创建的
IKE -- 互联网密钥交换 --- 动态建立IPSEC SA --- IKEV1,IKEV2
IKE协议中包含三个协议
SKEME
OAKLEY
ISAKMP --- 互联网安全联盟密钥管理协议 --- UDP 500 --- 要求源和目标端口都必须是UDP的500
阶段1
阶段1 --- 协商构建IKE SA(ISAKMP SA)--- 不区分源和目标 --- 其主要目的是获得建立IPSEC SA时参数协商过程中的安全通道,对协商参数进行安全保护。 --- 做身份认证
主模式
主模式 --- 默认使用IP地址作为身份标识,需要经过6个数据包交互来完成IKE SA 的建立,安全性较高
第一,二个数据包:SA的交换
1,Ci,Cr --- cookie --- 这个是IKEV1版本中的做法,到了V2版本,这里使用的是SPI,在V1版本中,其作用是相似
2,Sai,Sar --- 进行安全参数协商 --- “五元组”
加密算法,哈希算法,身份认证,DH组,SA存活时间
DES MD5 PSK DH2 86400S
注意:这里协商的所有参数,是为了构建IKE SA使用参数
注意:如果是手工建立的SA,则将永久有效,但是,如果使用IKE建立的SA,则将存在老化时间,默认是86400S,如果时间到了,则将拆除通道,重新建立。
注意:DH算法分组,常用分组为DH1,DH2,DH5,DH14,组号越大,则安全性越高
注意:这里的身份认证是在协商身份认证的方式
如果对方在回复时,发现里面的参数本地不支持,则将回复一个负载拒绝报文,则中断SA的构建。但是,其中的SA存活时间可以不同,如果不同,则按照较小的来执行
第三,四个数据包
Ni,Nr --- 是两端发送时携带的一个随机数
X,Y --- DH算法中需要交换的两个参数
SKEYID 种子密钥 ---- 计算时里面包含了预共享密钥所有其他密钥在计算时,都需要加入种子密钥
SKEYID_e --- 加密密钥 --- 用于第5.6个数据包以及第二阶段IPSEC SA协商过程中的数据加密 --- g^ir --- DH算法中计算出的Z
CKY_I,CKY_R --- 前面过程中传递的cookie值
SKEYID_a --- 验证密钥 --- 在第一阶段5,6个数据包以及第二个阶段中进行 HASH算法时使用的密钥 ---- 哈希算法也可以结合密钥一起使用,其技术叫做HMAC,这样做安全性更高
SKEYID_d --- 推导密钥 --- 用来计算最终密钥(用来加密数据的密钥)的一个参数
第五,六个数据包 --- 用来进行身份认证以及数据验证 --- 这两个数据包是进行加密的
Idi/Idr --- 身份标识
Hashi/Hashr --- 使用哈希算法来校验之前传递的安全参数 --- 通过HMAC来进行运算,使用之前计算的验证密钥
野蛮模式
野蛮模式 --- 可以自定义身份标识,并且,速度较快,仅需使用3个数据包就可以完成IKE SA的建立
注意:野蛮模式前两个数据包中的参数用来协商密钥信息,则第三个数据包可以进行加密传输,因为,身份信息是通过明文传递的,所以,安全性较低
阶段2
阶段2 --- 通过阶段一构建的安全通道,传递需要建立IPSEC SA使用的安全参数,用来协商最终的密钥。 --- 快速模式 -- quick mode --- UDP 500
第二阶段需要协商的安全参数
1,加密算法 --- 最终进行数据加密使用的算法(协商完加密算法之后,需要计算
出最终使用的加密密钥,需要根据第一阶段计算出来的推导密钥计算得出)
2,Hash算法 --- 最终进行数据传输时使用的hash算法
3,安全协议 --- AH/ESP
4,封装模式 --- 隧道/传输
5,存活时间
PFS --- 密钥完美向前保密
PFS --- 密钥完美向前保密 --- 正常情况下,第二阶段计算的加密密钥是通过第一阶段计算出的推导密钥衍生出来的,但这样,可能导致第一阶段密钥泄露影响第二阶段密钥,所以,可以开启PFS的功能,之后,将不再使用之前的推导密钥,将重新使用DH算法计算出一个新的密钥
注意:PFS功能需要两边同时开启,方可生效
数据传输阶段通过AH或者ESP来传输数据
VPN黑洞
VPN黑洞 --- 隧道建立之后,如果其中一台设备出现异常,另一端还在SA的有效期内,则数据将出现有去无回的情况,形成VPN黑洞
解决方案 --- DPD死亡对等体检测类似于心跳检测机制
利用的是空闲计时器原理 --- 两边同时开启一个计时器,有数据包通过时,直接刷新计时器,如果计时器归0,则会开始发送DPD的探测报文,对方收到后,将回复应答,正常回复则刷新计时器,如果没有应答,则连续发送5次,都没有应答,则将拆掉通道;