🎯 课程摘要:本课介绍网络层安全实例——IPsec(IP 安全协议)族。内容包括 IPsec 的两种工作方式(传输模式与隧道模式)、安全关联(SA)、IP 安全数据报格式与 ESP 协议要点,以及安全关联数据库(SAD)、安全策略数据库(SPD)和因特网密钥交换协议(IKE)等辅助机制。
- 概念定义:IPsec(IP Security,IP 安全协议)是为因特网的网际层提供安全服务的协议族。
- 算法灵活性:IPsec 不限定用户使用何种特定的加密和鉴别算法,通信双方可选择合适的算法和参数(如密钥长度)。为保证互操作性,IPsec 包含一套所有 IPsec 实现都必须实现的加密算法。
- 支持范围:IPsec 既支持 IPv4 也支持 IPv6;在 IPv6 中,AH 协议和 ESP 协议都是扩展首部的一部分。
| 对比项 | 传输模式(Transport Mode) | 隧道模式(Tunnel Mode) |
|---|
| 封装方式 | IPsec 将运输层报文作为 IPsec 数据载荷,添加 IPsec 首部和尾部,再添加新 IP 首部 | 网际层给运输层报文添加 IP 首部构成 IP 数据报,IPsec 将整个 IP 数据报作为 IPsec 数据载荷,添加 IPsec 首部和尾部,再添加新 IP 首部 |
| 保护范围 | 仅保护 IP 载荷(运输层报文) | 保护整个原始 IP 数据报(含原始首部) |
| 使用情况 | 较少 | 目前使用最多 |
- ⚠️ 重点/考点:无论哪种方式,IP 安全数据报的新 IP 首部都不加密,以便因特网中各路由器能识别首部信息,将 IP 安全数据报从不安全的因特网中从源点安全转发到终点。所谓"IP 安全数据报"是指数据报的数据载荷是经过加密并能够被鉴别的。
- 概念定义:在使用隧道模式传送 IP 安全数据报前,应为通信双方建立一条网际层的逻辑连接,称为安全关联(SA,Security Association),也称安全隧道。这使得传统无连接的网际层变为具有逻辑连接的层。
- 单向性:SA 是从源点到终点的单向连接;若需双向安全通信,两个方向都需要建立 SA。
- 应用场景举例:
- 路由器之间建立 SA:公司总部与分公司之间,SA 建立在总部路由器 R1 和分公司路由器 R2 之间。主机 A 发送的 IP 数据报(源地址为 A,目的地址为 B)经 R1 进行 IPsec 加密并添加新 IP 首部(源地址为 R1,目的地址为 R2),成为 IP 安全数据报,经因特网转发到 R2 后解密还原,再交付给主机 B。
- 路由器与主机之间建立 SA:公司总部主机 A 与外地出差员工主机 B 安全通信,SA 建立在 R1 与主机 B 之间。R1 加密后添加新 IP 首部(源地址为 R1,目的地址为 B),主机 B 中 IPsec 进行鉴别和解密。
- 内部通信无需 SA:公司内部主机之间通信不经过不安全的因特网,无需建立 SA。
建立 SA 的路由器或主机需维护以下状态信息:
| 状态信息 | 说明 |
|---|
| 安全参数索引(SPI) | 32 位连接标识符,用于标识该 SA |
| SA 源点和终点的 IP 地址 | 如路由器 R1 和主机 B 的 IP 地址 |
| 加密类型 | 如 DES 或 AES |
| 加密的密钥 | 用于数据加密 |
| 完整性检查的类型 | 如使用 MD5 或 SHA-1 的报文鉴别码 |
| 鉴别使用的密钥 | 用于报文鉴别 |
IPsec 协议族中有两个主要协议:
| 对比项 | AH(鉴别首部) | ESP(封装安全有效载荷) |
|---|
| 功能 | 提供鉴别功能 | 提供加密和鉴别功能 |
| 复杂度 | 较简单 | 复杂得多 |
| 加密支持 | 不提供加密 | 提供加密 |
| 功能包含关系 | AH 的功能已包含在 ESP 中 | 使用 ESP 则无需使用 AH |
| 本课重点 | 不再详述 | 重点介绍 |
| 部分 | 字段 | 说明 |
|---|
| ESP 首部 | 安全参数索引(SPI) | 32 比特,同一 SA 中传送的 IP 安全数据报使用同样的 SPI 值 |
| 序号 | 32 比特,用于鉴别时防止重放攻击;分组重传时序号不重复 |
| ESP 有效载荷 | 原始 IP 数据报(隧道模式) | 作为 ESP 的有效载荷 |
| ESP 尾部 | 填充字段 | 全零字节填充,使数据块长度为若干字节整数倍(如 4 字节) |
| 填充长度 | 8 比特,指出填充字段长度(字节为单位),最大值 255 |
| 下一首部 | 指明接收端应将 ESP 有效载荷交给什么协议处理;隧道模式取值为 4(原始 IP 数据报首部),传输模式取值相应改变 |
| 报文鉴别码(MAC) | MAC | 对需要鉴别的部分(ESP 首部 + 加密部分)生成,添加在 ESP 尾部后面 |
- 原始 IP 数据报作为 ESP 有效载荷;
- 添加 ESP 尾部(填充字段 + 填充长度 + 下一首部);
- 按 SA 指明的加密算法和密钥,对 ESP 有效载荷 + ESP 尾部进行加密;
- 在加密部分前添加 ESP 首部(SPI + 序号),构成需要鉴别的部分;
- 按 SA 指明的算法和密钥,对需要鉴别的部分生成报文鉴别码 MAC,添加在 ESP 尾部后面;
- 添加新 IP 首部(协议字段取值为 50,表明接收端应将数据载荷交给 ESP 协议处理),构成 IP 安全数据报。
- 根据 IP 安全数据报首部中协议字段取值 50,将数据载荷交由 ESP 协议处理;
- 检查 ESP 首部中 SPI 字段值,确定该数据报属于哪个 SA;
- 对鉴别部分计算报文鉴别码并与尾部的 MAC 比较,验证数据来源真实性;
- 根据 ESP 首部中序号判断是否遭受重放攻击;
- 用 SA 指明的加密算法和密钥对加密部分进行解密;
- 根据填充长度删除填充的全零字节,还原 ESP 有效载荷(原始 IP 数据报);
- 根据解密后 ESP 尾部中下一首部字段取值 4,将 ESP 有效载荷交付给 IP 处理。
- 保密性:攻击者截获 IP 安全数据报后,仅能知道首部信息(源/目的 IP 地址),无法看懂数据载荷含义。
- 完整性:攻击者若故意删除数据载荷中的字节,接收端能进行完整性验证,不会接受含有差错的数据报。
- 防重放攻击:IP 安全数据报使用有效的序号,使重放攻击不能成功。
| 机制 | 全称 | 功能 |
|---|
| SAD | 安全关联数据库(Security Association Database) | 存储可能要用到的多条 SA;发送/接收 IP 安全数据报时在 SAD 中查找相应 SA,获取安全保护或检查安全性的必要信息 |
| SPD | 安全策略数据库(Security Policy Database) | 指明什么样的 IP 数据报需要 IPsec 处理(取决于源地址、源端口、目的地址、目的端口、协议类型等);指出是否需要 IP 安全数据报,若需要则由 SAD 指出使用哪个 SA |
| IKE | 因特网密钥交换协议(Internet Key Exchange) | 为 IP 安全数据报自动创建 SA 而无需人工配置;适用于大型地理位置分散的系统 |
- ⚠️ 重点/考点:小型系统可用人工配置建立 SAD;大型系统必须使用 IKE 自动生成 SA。并非所有 IP 数据报都需 IPsec 处理,很多信息用明文普通 IP 数据报发送即可。
- IPsec 在网际层提供安全服务,有传输模式和隧道模式两种,隧道模式使用最多。
- 安全关联(SA) 是网际层的单向逻辑连接,维护 SPI、地址、加密/鉴别类型及密钥等状态信息。
- ESP 协议提供加密和鉴别,构建 IP 安全数据报时对有效载荷和尾部加密、对首部和加密部分生成 MAC,新 IP 首部协议字段取值为 50。
- 辅助机制:SAD 存储 SA、SPD 决定处理策略、IKE 自动创建 SA。
- 比较 IPsec 传输模式与隧道模式的区别,为什么隧道模式使用最多?
- 什么是安全关联(SA)?它包含哪些状态信息?为什么 SA 是单向的?
- 详细描述隧道模式下 ESP IP 安全数据报的构建过程和接收方处理过程。
- 比较 AH 协议与 ESP 协议的功能差异。
- 简述 SAD、SPD 和 IKE 的作用及其相互关系。
- IP 安全数据报如何实现保密性、完整性和防重放攻击?