一、IPSec 安全基础
IPSec 是保障 IP 数据传输安全的核心协议,其核心围绕密钥管理和安全策略约定展开,具体包括以下关键内容:
1. 对称密钥的作用与要求
对称密钥是 IPSec 实现加密、验证的基础,主要用于三个场景:
加密 / 解密算法(KEY1):对 IP 数据进行加密,确保数据机密性;
HASH 算法(KEY2):用于数据完整性校验(如 HMAC),防止数据被篡改;
身份认证(KEY3):验证通信双方的合法性,防止身份伪造。
密钥要求:
横向一致:通信双方的同功能密钥必须相同(如 A 的 KEY1 与 B 的 KEY1 一致,否则无法解密);
纵向独立:同一设备的 KEY1、KEY2、KEY3 必须不同(避免一个密钥泄露导致所有安全机制失效)。
举例:类似两人通信,A 加密用的钥匙(KEY1)和 B 解密用的钥匙必须一样(横向一致),但 A 的加密钥匙(KEY1)不能和自己的校验钥匙(KEY2)相同(纵向独立),否则小偷拿到一把钥匙就能破解所有保护。
2. DH 算法:对称密钥的安全交换
Diffie-Hellman(DH)算法是在不安全信道上生成共享对称密钥的核心技术,其工作流程如下:
生成公私钥对:通信双方(PeerA、PeerB)各自生成私有密钥(不传输)和公开密钥(可传输);
交换公钥:双方将公开密钥发送给对方;
计算共享密钥:PeerA 用自己的私钥 + PeerB 的公钥计算,PeerB 用自己的私钥 + PeerA 的公钥计算,最终得到相同的共享密钥(Secret_Key_X);
加密对称密钥:用共享密钥加密实际使用的对称密钥(如 KEY1、KEY2、KEY3)并传输,对方用相同共享密钥解密。
举例:DH 算法类似两人约定用 “公开的配方”(DH 组)各自在家做 “面团”(私钥),然后交换 “面团样本”(公钥);双方用自己的面团和对方的样本混合,最终得到完全相同的 “共享面团”(共享密钥)。即使别人拿到样本,也无法还原出相同的混合面团。
DH 密钥组:不同组定义了密钥长度和算法,影响安全性和性能,例如:
组 5(1536 位,直算法):Cisco 支持的最安全组;
组 15(3072 位,直算法):理论最安全,但 Cisco 不支持;
组 3/4/7:基于椭圆曲线算法,密钥长度短但安全性高(如组 3 仅 155 位)。
3. 安全关联(SA):IPSec 的 “安全策略约定”
SA 是 IPSec 实体(主机、网关)之间的核心约定,决定了 “如何保护数据”,是 IPSec 的基础。
(1)SA 的核心内容
包含保护 IP 数据的所有参数:
协议选择(AH 或 ESP);
运行模式(传输模式或隧道模式);
加密算法(如 3DES、AES)、验证算法(如 MD5、SHA);
加密密钥、验证密钥;
密钥生存期、抗重放窗口等。
(2)SA 的单向性
一个VPN连接有一对SA,通信是双向的,所以A的出方向的的SA和B的入方向是一对SA(这一对是一样的),B的出方向和A的入方向是一对SA
SA 是单向的:
入方向(inbound)SA:处理接收的数据包;
出方向(outbound)SA:处理发送的数据包;
通信双方需各有一对 SA(入 + 出),构成 “SA 束”,且双方的 SA 参数必须一致。
举例:SA 类似两人约定的 “快递规则”:A 寄给 B(出方向 SA)和 B 收 A 的(入方向 SA)是两套规则,但内容必须一致(如都用 ESP 加密、传输模式、AES 算法),否则 B 无法正确接收 A 的包裹。
(3)SA 的产生方式
手工配置:管理员手动指定 SA 参数,无生命周期(永不过期),易出错且存在安全隐患(密钥长期不变),实际中几乎不用;使用时间越长就越不安全,且物理距离较远
IKE 自动管理:通过 IKE 协议动态协商、维护 SA,有生命周期(到期自动更新,会更安全),是主流方式。如果安全策略要求建立安全、保密的连接,但又不存在与该连接相应 的SA,IPSec会立刻启动IKE来协商SA。
二、IKE 工作过程:动态建立 SA 的核心协议
IKE(互联网密钥交换协议)是动态建立 SA 的协议,基于 ISAKMP 框架,融合了 Oakley 和 SKEME 的技术,实现 SA 的自动协商与管理。IKE不是一个单独协议,是一个协议簇,包含很多不同协议,都可以完成SA或密钥的协商,利用协议协商的都会有生命周期
1. IKE 的核心构成
ISAKMP:定义 SA 协商的框架(消息格式、状态转换),是 IKE 的基础;
Oakley:提供密钥交换的模式(如 DH 算法的应用方式),并没有 具体的定义交换什么样的信息;
SKEME:提供身份认证机制(如预共享密钥、证书)。
举例:IKE 像一个 “项目组”:ISAKMP 是 “项目管理流程”(规定如何沟通),Oakley 是 “技术方案模板”(规定如何生成密钥),SKEME 是 “成员身份验证方法”(确保参与方合法)。
ISKMP协议:(安全联盟密钥管理协议)
定义了协商、建立、修改和删除SA的过程和包格式。
ISAKMP只是为协商、修改、删除SA的方法提供了一个通用的框架,并没有定义具体的SA格式。这个通用的框架是与密钥交换独立的,可以被不同的密钥交换协议使用。
ISAKMP报文可以利用UDP,端口都是500(思科500,深信服5000),一般情况下常用 UDP协议。IKE使用ISAKMP消息来协商并建立SA。 如果不用这个,需要多个VPN隧道就需要多个公网地址。在IP头部后面加装了一个UDP头部
2. IKE 协商的两个阶段
IKE 通过两阶段协商建立 SA,确保通信安全:
第一阶段:建立 ISAKMP SA(IKE SA)
需要完成的任务:协商出一个双向的ISAKMP SA,用于保护阶段二
包含三个部分:
1.协商安全参数:加密算法、HASH算法、DH组、身份认证、生命周期,建立一个初始化的SA
2.交换计算密钥的材料:DH算法(交换公钥,随机数),计算出各种密钥
3.对对等体做身份认证,认证成功后进入阶段二
作用:生成一个 “安全信道”,保护第二阶段的协商过程。 有两种模式:
主模式(Main Mode):6 条 ISAKMP 消息交互,安全性高(身份信息加密);
野蛮模式(Aggressive Mode):3 条 ISAKMP 消息交互,速度快但安全性较低(身份信息可能明文传输)。
主模式详细流程:
第 1-2 条消息:交换 SA 载荷,协商安全参数(加密算法、HASH 算法、DH 组、认证方式、生存期等),双方需达成一致;
第 3-4 条消息:交换 DH 公钥(KE 载荷)和随机数(Nonce 载荷),双方基于 DH 算法计算共享密钥,并生成 SKEYID 系列密钥(用于后续加密和认证);
第 5-6 条消息:交换身份载荷(如 IP 地址)和 HASH 载荷(验证身份),确保对方拥有相同的预共享密钥(或证书),完成身份认证。
举例:主模式类似两人 “先悄悄商量见面规则”(1-2 条消息),再 “交换信物生成钥匙”(3-4 条消息),最后 “验证身份确认对方是自己人”(5-6 条消息),全程私密,不易被偷听。
第二阶段:建立 IPSec SA
主要完成任务:2个单向的IPSEC sa 用于保护数据
步骤:
1.协商安全参数(安全协议(ESP或AH),工作模式(传输模式或隧道模式),保护数据用的加密算法,保护数据用的HASH算法,保护数据用的密钥的生命周期)
2.交换计算密钥的材料,然后生成密钥
3.进行身份认证
作用:在第一阶段的安全信道中,协商用于保护实际 IP 数据的 SA。 仅有一种模式:快速模式(Quick Mode),3 条 ISAKMP 消息交互,所有消息均被第一阶段的 ISAKMP SA 加密保护。
快速模式流程:
第 1 条消息:发起方发送 SA 载荷(包含 IPSec 策略,如 ESP/AH、模式、算法)、KE 载荷(可选,用于 PFS 密钥交换)、Nonce 载荷和 HASH 载荷(验证消息完整性);
第 2 条消息:响应方验证消息后,返回匹配的 SA 载荷及相关参数;
第 3 条消息:发起方确认,完成 IPSec SA 协商。
举例:快速模式类似两人 “在已上锁的会议室里”(第一阶段的安全信道),商量 “具体的文件传输规则”(IPSec SA),确保规则只有双方知道。
可以用一个阶段一保护多个阶段二
3. ISAKMP 报文格式
IKE 消息基于 ISAKMP 报文格式,核心结构包括:
Cookie:
发起方Cookie(Initiator Cookie):64 bit – 常用的一个生成Cookie的方法是对下述信息进行HASH(MD5、 SHA1或其他HASH算法)之后,取结果的前64位:
源IP地址+目的IP地址+UDP源端口+UDP目的端口+随机数 +当前日期+当前时间
报头:例如:A发给B
含发起方 Cookie(64 位)
第一个报文中不知道应答方Cookie,置为0,在应答方收到后,发送第二个报文,发起方Cookie是A,应答方Cookie是B,在整个VPN协商中,只能由发起方发送第一个报文,所以发起方是固定的
应答方 Cookie(64 位,用于防止 DOS 攻击)
下一个载荷(指示后续内容类型,报文相当于一个火车头,下一个载荷代表第一节车厢后带的数据)
交换类型(主模式 / 野蛮模式等)标识阶段一,只有阶段一有两种模式
标志(如是否加密)只有后三位有用:加密位:置为1,代表头部后面的载荷都是加密的,置为0,表示是明文,没有加密;提交位:确保发送数据之前完成Sa协商;纯验证位:能够为恢复密钥机制的机构使用
报文 ID(第二阶段用于标识协商):在第一阶段全为0,在第二阶段是发起方的随机值,可以标识第二阶段的状态
长度(报文总字节数):头部加载荷的总长度
载荷:携带具体内容,如 SA 载荷(安全参数)、KE 载荷(DH 公钥)、身份载荷(IP 地址 / 域名)、HASH 载荷(身份验证)等,共 13 种类型。
举例:Cookie 类似 “验证码”,每次协商生成唯一值,收到与之前不同的 Cookie 就丢弃报文,避免攻击者发送大量假消息瘫痪系统。
工作过程
阶段一:主模式
三个部分:
1.协商安全参数:加密算法、HASH算法、DH组、身份认证、生命周期,建立一个初始化的SA
2.交换计算密钥的材料:DH算法(交换公钥,随机数),计算出各种密钥
3.对对等体做身份认证
计算密钥:
阶段二:快速模式