IPSec VPN
基本工作原理
概述
-
IPSec:为端到端的IP报文交互提供了安全保障机制
-
利用IPSec建立的VPN
-
功能:实现访问控制、机密性、完整性校验、数据源认证、抗重播报文攻击
-
特点:配置复杂、消耗资源多、增加延迟、不支持组播
IPSec的安全机制
IPSec不是一个单独的协议,是一个框架性架构,是一系列为IP网络提供安全性的协议和服务的集合
安全联盟SA
IPSec隧道建立原理:
-
IPSec隧道的建立,其实就是在隧道两端的设备上建立好SA
-
IPSec用于在协商发起方和响应方这两个端点之间提供安全的IP通信
-
IPSec为对等体间建立IPSec隧道来提供对数据流的安全保护。
-
一对IPSec对等体间可以存在多条IPSec隧道可以针对不同的数据流各选择一条隧道对其进行保护
-
SA是IPSec对等体间对某些要素的约定(即安全策略),SA是出于安全目的而创建的一个单向逻辑连接,所有经过同一SA的数据流都会得到相同的安全服务
-
由3元组来做唯一标识
-
SPI
-
目的IP地址
-
使用的安全协议
-
-
SA建立
-
手工--直接在两端的IPSec设备配置好具体的安全参数
-
IKE协商
-
首先在隧道两端建立IKE SA
这个过程会生成认证密钥和加密密钥,无需手工配置
-
然后再此基础上协商建立IPSec SA
此阶段还可生成新的直接用于用户数据加密的加密密钥,最终建立IPSec隧道。
-
-
-
分类
-
IKE SA
-
用于保护控制流量
-
同一对等体只有一对
-
-
IPSec SA
-
用于保护业务流量
-
单向
-
同一对等体间可能存在多对IPSec SA
-
-
两种模式
隧道(Tunnel)模式
-
隧道模式下的安全协议用于保护整个IP数据包
-
用户的整个IP数据包都被用来计算安全协议头,生成的安全协议头以及加密的用户数据(仅针对ESP封装)被封装在一个新的IP数据包中。
-
新添加的IP报头中的源IP地址是本端IPSec设备应用IPSec安全策略的接口的IP地址,目的IP地址是对端IPSec设备应用IPSec安全策略的接口的IP地址,
-
-
在原始IP头部的前面插入IPSec头,并且会额外封装新的IP头
-
应用在两个站点之间互联的场景
传输(Transport)模式
-
传输模式下的安全协议主要用于保护上层协议(如传输层协议)报文,仅传输层数据被用来计算安全协议头
-
生成的安全协议头以及加密的用户数据(仅针对ESP封装)被放置在原IP报头后面。即在传输模式下,不对原IP报文进行重封装,只是把新添加的认证头当成原始IP报文的数据部分进行传输。
-
-
在原始IP头部的后面插入IPSec头
-
应用在原始IP头部本身就可以实现路由可达的场景
比较
-
传输模式应用比较少
-
隧道模式比传输模式安全
-
隧道模式可以完全对原始IP进行认证和加密,隐藏客户机私网IP地址
-
传输模式数据加密不包括原始IP报头
-
-
传输模式的传输效率更高 隧道模式有一个额外的IP头,占用更多带宽
-
使用传输模式的充要条件: 要保护的数据流必须完全在发起方、响应方IP地址范围内
两种协议
AH
-
特点
-
AH协议提供数据源认证,数据完整性校验,抗重播攻击
-
保护数据免受篡改,但是不能防止被窃听(不会对数据进行加密)
-
不支持NAT穿越
-
适用于传输非机密数据
-
-
工作原理:
-
在原始数据包中添加一个身份认证报文头,为数据提供完整性保
护。
-
-
认证算法:MD5,SHA-1,SM3..
-
报头格式:
-
网络层,IP协议号51,在IP协议之上
-
-
下一个头部:8位,标识AH报头之后第一个上层协议头的类型
-
载荷长度:8位,以4个字节为单位表示接受保护的整个数据的长度。
-
保留:16位,预留以后使用。
-
安全参数索引spi:32位,用于唯一标识IPSec安全联盟。
-
序列号:32位,是一个从1开始,并以1进行递增的计数器值,表示通过安全联盟所发送的数据包序号,用于抗重放攻击。
-
认证数据:长度可变,但必须是32位的整数倍,否则要进行填充。
-
-
ESP
-
特点:提供数据加密、数据源认证、数据完整性校验和防报文重放功能
-
支持NAT穿越
-
工作原理:在原始数据包中添加一个ESP报文头,并在数据包后面追加一个ESP尾和可选的ESP认证数据。
-
认证算法:DES,3DES,AES,SM1
-
报头格式:
-
网络层,IP协议号50,IP协议之上
-
-
安全参数索引:32位,用于唯一标识IPSec安全联盟。
-
序列号:32位,是一个从1开始,并以1进行递增的计数器值,表示通过通信的安全联盟所发送的数据包数,用于抗重放攻击
-
负载数据:包含由下一头部字段所包括整个的可变长数据。
-
填充:0~255个字节,确保所加密的数据块长度达到加密算法所需的字节要求
-
填充长度:表示“填充”字段的长度(以字节为单位)。
-
下一个头部:8位,标识ESP报文头后面的下一个负载协议类型。
-
认证数据:长度为32比特的整数倍,通常为96比特。
-
-
比较
-
在实际的应用中,更多的是选择ESP协议
-
一是因为AH无法提供数据加密,所以数据传输的安全性较差,而ESP提供数据加密;
-
二是因为AH协议的认证范围包括整个IP数据包
-
IPSec设备间存在NAT设备会导致数据包的IP报头中的IP地址
发生改变,从而最终导致认证失败,无法实现NAT穿越
-
ESP协议的认证范围是不包括最外层的IP报头的,所以即使IP报头部分的地址信息发生改变,也不会导致最终的认证失败,即可以实现NAT穿越,应用范围更广。
-
-
IKE密钥交换原理
IKE动态协商综述
密钥交换,基于UDP500,降低手工部署的复杂度
为IPSec自动协商密钥,更新密钥,建立安全联盟
好处
-
降低配置复杂度 SPI、认证密钥和加密密钥等参数将自动生成,不需要分别指定
-
提供抗重放功能:
-
使用AH或ESP报头中的序列号实现抗重放(不接受序列号相同的数据包)
-
当AH或ESP报头中的序列号溢出(要进行重新编号),为实现抗重放,SA需要重新建立,这个过程需要IKE协议的配合,所以手工方式下不支持抗重放功能。
-
-
支持协商发起方地址动态情况下的身份验证
手工方式不支持,只能适用于在两端都采用专线连接方式接入Internet情形。
-
支持认证中心CA:在线对对等体身份的认证和集中管理,有利于IPSec的大规模部署,手工方式不支持在线认证方式。
-
通过IKE协商的SA有生存周期 可以实时更新,降低了SA被破解的风险,提高了安全性。
IKE和IPSec的关系
-
IKE 协议建立在 ISAKMP定义的框架上,基于UDP的应用层协议(端口号500)
-
它为IPSec提供了自动协商交换密钥、建立SA的服务,能够简化IPSec的使用和管理。
-
IKE包括三大协议
-
ISAKMP: 主要定义了IKE对等体(IKE Peer)之间合作关系,建立IKE SA。
-
Oakley:是一个产生和交换IPSec密钥材料并协调IPSec参数的框架
-
SKEME:决定了IKE密钥交换的方式,主要采用DH算法。
-
-
-
IKE是IPSec的信令协议;IKE为IPSec协商建立SA,并把建立的参数及生成的密钥交给IPSec;IPSec使用IKE建立的SA对IP报文加密或认证处理。
-
对等体之间建立一个IKE SA后,在IKE SA保护了IPSec隧道的情况下,再根据配置的AH、ESP安全协议等参数协商出一对IPSec SA,用于对等体间的数据在IPSec隧道中的安全数据传输。
-
IKE的安全机制
身份认证机制
IKE在对等体间进行信息交换时,首先要识别对方的合法性
-
1.预共享密钥认证
-
2.数字证书认证
-
3.数字信封认证
数据加密机制
-
数据加密用在两个方面
-
ike协商阶段,保护所传输的用于身份认证的数据信息(共享密钥,证书,认证密钥等)
-
IPSec隧道建立后保护在隧道传输中的用户数据.
-
-
支持的算法
-
DES、3DES、AES-128、AES-192、AES-256、SM1和SM4等
-
加密算法的安全级别由高到低的顺序是:SM4 > SM1 > AES-256 > AES-192 > AES-128 > 3DES > DES
-
DH密钥交换算法
-
DH是一种非对称密钥算法--基于单向函数A=g^a mod p
mod就是求余数 这个函数有一个特点,在g和p都很大的情况下,已知a求A会很快得到结果,但是已知A求a无法完成
-
DH主要用于IKE动态协商时重新生成新的IPSec SA所用的密钥,因为它可以通过一系列数据的交换,最终计算出双方共享的密钥,而不依赖于在前期生成的密钥生成材料。
-
但DH没有提供双方身份的任何信息,所以IKE还需要身份认证来对对等体身份进行认证。
PFS机制
PFS(Perfect Forward Secrecy,完善的前向安全性)
-
指一个密钥被破解后并不影响其他密钥的安全性,因为这些密钥间没有派生关系。
IKE密钥交换和协商:第一阶段(IKE SA)
IKEv1的第一阶段的最终目的是在对等体之间创建了一条安全通道,建立对等体的IKESA。
主模式
-
第一个步骤(1.2包)
-
消息①和②用于IKE策略交换,是一个协商确认双方IKE安全策略的过程
-
交换过程的框架由isakmp定义,为sa的属性和协商,修改,删除sa的方法提供一个通用框架,并没有定义具体SA格式
-
为后面能在一个安全的环境之下协商IPSec SA打下基础,因为这些IKE
策略会直接提供对第二阶段的IPSec SA协商的加密保护。
-
-
第二个步骤(3.4包)
-
消息③和④用于密钥信息交换,是一个产生各种所需密钥的过程。
-
对等体间通过DH算法交换彼此的密钥生成所需的参数信息,建立两端相同的一系列共享密钥,认证密钥用于在IKE第二阶段协商中为信道中传输的协商数据(非用户数据)进行认证;加密密钥用于在IKE第二阶段协商中为信道中传输的协商数据进行加密
-
-
第三个 步骤(5.6包)
-
消息⑤和⑥用于对等体间的身份信息(如对等体的IP地址或名称)和验证数据(所采用的身份认证方式中的密钥,或证书数据等),双方进行身份认证。
-
用前面已创建好的加密密钥彼此相互发送各自的身份(如对等体的IP地址或名称)和验证数据(所采用的身份认证方式中的密钥,或证书数据
等)最终完成IKE SA的建立。
-
-
身份信息被加密
野蛮模式
-
华为华三中:地址不固定且使用预共享密钥做身份验证场景
-
主模式3-4包交互,需要用预共享密钥做密钥计算,固定地址站点在3-4包就需要确认与对端站点用哪个预共享密钥,但标识对应预共享密钥的主机名在5-6包才交互,导致无法确认用哪个预共享密钥和对端做密钥计算,协商失败
-
野蛮模式,地址不固定站点在第一个包直接将他的主机名明文传递给固定站点,固定站点收到对端的主机名之后,就可以确认用哪个预共享密钥做计算
-
预共享密钥配置对端IP全0的情况下,对端地址不固定也可以使用主模式
-
消息1-2
-
消息①和②用于在对等体间协商IKE安全策略,交换DH公钥、必需的辅助信息和身份信息(通常不以IP地址进行标识,而是以主机名进行标识的)。
-
-
消息③是发起方根据已确定的IKE策略,把自己的验证数据(包括所采用的身份认证机制中的密钥、证书等)发给响应方,让响应方最终完成对发起方的身份验证。
-
身份信息明文传递
对比
-
主模式和野蛮模式在确定预共享密钥的方式不同。主模式只能基于IP地址来确定预共享密钥。而野蛮模式是基于ID信息(主机名或IP地址)来确定预共享密钥。
-
当两端都是以主机名标识的时候一定要用野蛮模式
-
主模式交换完第3-4包后需要使用预共享密钥来计算密钥,双方的身份信息在5-6包才会发送
-
野蛮模式1-2包就已经发送了,对方可以根据id信息查找对应的预共享密钥
-
-
-
与主模式相比,野蛮模式减少了交换信息的数目,提高了协商的速度,但是没有对身份信息和验证数据进行加密保护(野蛮模式1-2包不加密的,对应主模式5-6包是加密的)
-
虽然野蛮模式不提供身份保护,但是仍然可以满足某些特点的网络环境需求
-
NAT穿越-改变对等体IP地址,野蛮模式不依赖于IP地址标识身份
-
发起方IP地址不固定或无法预知
-
如果发起方已知响应方的策略采用野蛮模式更快建立ike sa
-
IKE密钥交换和协商:第二阶段
在第一 阶段的基础上建立一对IPSec SA
快速模式
协商是受IKE SA保护的
-
在IKE SA的保护下完成的
-
快速模式的协商主要完成的IPSec SA安全策略的确定
-
使用哪种IPSec安全协议:AH或ESP。
-
使用哪种HASH算法(认证算法):MD5或SHA。
-
使用哪种IPSec工作模式:隧道模式或传输模式
-
是否要求加密,若是,选择加密算法:3DES或DES。
-
可选支持PFS(Perfect Forward Secrecy,完善的前向安全性)。
-
-
在几方面达成一致后,将建立起两个IPSec SA,分别用于入站和出站通信。