网际层的安全协议——IPSec

一、IPSec(Internet Protocol Security)

1. IPSec概述

  • 旨在网际层实现IP分组端到端的安全传输

  • 实际是一个协议包,由一组安全协议组成(包括AH、ESP、SA和IKE等)

序号 协议 功能
1 SA(Security Association) 用于描述双方如何安全地通信
2 AH(Authentication Header) 实现数据完整性检测
3 ESP(Encapsulating Security Payload) 实现数据加密和数据完整性检测
4 IKE(Internet Key Exchange protocol) 实现安全关联两端之间的双向身份鉴别,及安全关联相关参数的协商

2. 传输模式和隧道模式

为保证传输的安全,发送方和接收方应当是安全关联的两端。(关于安全关联,会在后文继续讨论)。

IPSec有以下两种工作模式,因为AH和ESP的工作模式略有差异,所以此处仅介绍概念,具体过程在"二、IPSec的组成"中有关AHESP的部分讨论。

  • 传输模式

    • 用于保证数据从端到端的安全传输,并对源端进行鉴别。

    • 此时:

      • IPSec保护的数据是作为IP分组净荷的上层协议数据。

      • IP分组中源IP地址为发送端的IP地址,目的IP地址为接收端的IP地址。

  • 隧道模式

    • 源端和目的端各自的内部网络被一个公共网络分隔,在两个内部网络和公共网络之间各设置一个路由器(边界路由器),
    • 此时:
      • 发送端发出的IP分组被视为净荷封装在边界路由器R1中,此时整个。
      • 在公共网络中传输的IP分组中源IP地址是R1的IP地址,目的IP地址是R2的IP地址。

请添加图片描述

源端 安全关联的发送端 安全关联的接收端 目的端
PC1 R1 R2 PC2

二、IPSec的组成(SA、AH、ESP和IKE)

1. 安全关联(SA——Security Association)

什么是安全关联?

  • 安全关联是建立于发送者与接收者之间的关联,以期实现端源鉴别、数据加密和数据完整性

  • 安全关联是单向的(发送者至接收者传输方向)

  • 安全关联由三个信息来唯一确定:

    (①安全参数索引SPI——Security Parameters Index;②目的IP地址;③安全协议标识符)

    • SPI:接收者相同的安全关联之间需要分配不同的SPI(同目的IP地址的安全关联,其SPI不能相同)
    • 目的IP地址:接收端的IP地址
    • 安全协议标识符:指定安全协议是AH还是ESP

需要传输的数据需要先与安全关联绑定

  • 发送者建立安全策略数据库(SPD——Security Policy Database)来实现数据与安全关联的绑定:
    根据SPD中的策略,来将数据分类地施加不同的安全策略(包括丢弃、使用IPSec和不使用IPSec)。

  • 安全关联数据库(SAD——Security Association Database):
    SAD保存了已经建立的可用的安全关联SA条目。

安全关联有一些相关的参数

序号 参数名 功能
1 序号 防重放攻击
2 防重放攻击窗口 区分收到的报文是否是重放报文
3 AH信息 AH协议的参数
4 ESP信息 ESP协议的参数
5 安全关联的寿命 确定安全关联存在的时间(可以是时间,也可以是允许发送的字节数)
6 IPSec的协议模式 有①传输模式和②隧道模式
7 路径最大传输单元(MTU) 不切片的情况下,最大允许传输的分组长度

2.鉴别首部( AH——Authentication Header)

  • 报文封装
    ①传输模式:直接在IP分组中的"IP首部"后插入AH首部。

在这里插入图片描述

②隧道模式:将源端发来的整个IP分组看作是一个"新净荷",并在其和"新IP首部"(源IP地址是安全关联的发送端|目的IP地址是安全关联的接收端)之间插入AH首部。
在这里插入图片描述

  • 源端鉴别和完整性检验,鉴别算法一般有:HMAC-MD5-96和HMAC-SHA-1-96

    以下选择HMAC-MD5-96算法(鉴别数据存放在AH首部)

    • 发送端进行如下操作:
      在这里插入图片描述

    • 接收端进行如下操作:

在这里插入图片描述

3. 封装安全净荷(ESP——Encapsulating Security Payload)

  • 报文封装

    ①传输模式:直接在IP首部和净荷之后分别插入ESP首部和尾部,并在末尾附上鉴别数据

在这里插入图片描述

②隧道模式:在"新IP首部"(源IP地址是安全关联的发送端|目的IP地址是安全关联的接收端)和"新净荷"后分别插入ESP首部和尾部,并在末尾附上鉴别数据。

在这里插入图片描述

  • 源端鉴别和完整性检测:原理和AH相同,但不同的是,ESP的鉴别范围只覆盖ESP头部净荷ESP尾部

4. Internet密钥交换协议(IKE——Internet Key Exchange protocol)

IKE用来干嘛?

  • AH和ESP能实现其安全功能的前提是,安全关联SA已经建立。

    而静态地建立安全关联不够灵活,所以利用IKE来动态地建立安全关联协商相关参数

    • 不是每种情况都会启动IKE,只有在:

      • IP分组在SPD(安全策略数据库)中被设定为使用IPSec
      • 且在SAD(安全关联数据库)中没有找到一条合适的安全关联时

      才会启动IKE,试图动态地建立一条新的安全关联(可以将这个过程类比于路由的过程:先查看路由表内是否有合适的路由线路,若没有再尝试另辟蹊径)

在这里插入图片描述

IKE是如何完成动态建立安全管理的?

分两个阶段:

  • 阶段一:
    ①主模式:建立安全传输通道(可以理解为建立IKE安全关联),六次发包包含了三轮双向信息交互。

在这里插入图片描述

②积极模式(通常不使用):该模式只有三次发包,多数的信息都被包含在了IKE的策略中,速度快,但不安全。

  • 阶段二:
    快速模式:建立安全关联(此处的安全关联指IPSec安全关联),过程可类比于"TCP的三次握手"。

在这里插入图片描述

IPSec是一种在TCP/IP中的网际层实现IP分组端到端安全传输的机制,由一组安全协议组成(SAAHESPIKE等)。
SA描述双方如何安全通信、AH实现数据完整性检测、ESP实现数据加密和完整性检测,而IKE实现两端之间安全关联的建立及相应参数的协商。