IPsec 协议族

VPN中传送的信息是加密的,提供这种加密服务的是IPsec

IPsec(IP security)是能够在IP层提供互联网通信安全的协议族。

它允许通信双方选择合适的算法和参数,为保证互操作性,IPsec还包含了一套加密算法,所有IPsec的实现都必须使用。

IPsec协议族中的协议可划分为:

  • IP安全数据包格式的两个协议
    • 鉴别首部AH协议:提供源点鉴别和数据完整性,但不能保密
    • 封装安全有效载荷ESP协议:提供源点鉴别、数据完整性和保密
  • 有关加密算法的三个协议
  • 互联网密钥交换IKE协议

(AH协议的功能都已包含在ESP协议中)

所谓“安全数据报”是指数据报的数据部分是经过加密的,并能够被鉴别的。

使用ESP或者AH协议的IP数据报称为IP安全数据报(或IPsec数据报),工作方式有两种:

  • 运输方式(transport mode)。运输方式实在整个运输层报文前后分别添加若干控制信息,再加上IP首部,构成IP安全数据报。
  • 隧道方式(tunnel mode)。隧道方式实在原始的IP数据报前后分别添加若干控制信息,再加上新的IP首部,构成IP安全数据报。

目前使用最多的就是隧道方式。

通常把数据报的数据部分称为数据报的有效载荷(payload)。

安全关联

安全关联SA(Security Association):在发送IP安全数据报之前,在源实体和目的实体之间建立的一条网络层的逻辑链接

建立安全关联后,传统的无连接的网络层就变成了一个具有逻辑链接的一个层。

安全关联是源点到终点的单向连接

image-20210319165315549.png

建立安全关联SA的路由器或者主机,必须维护这条SA的状态信息:

  1. 一个32位的连接标识符,称为安全参数索引SPI(Decurity Parameter Index)
  2. 安全关联SA的源点和终点的IP地址
  3. 所使用的加密类型(例如,DES或者AES)
  4. 加密的密钥
  5. 完整性检查的类型(例如:使用MD5或者SHA-1的报文鉴别码MAC)
  6. 鉴别使用的密钥

IP安全数据包的格式

image-20210319165839134.png

  1. ESP尾部。用0填充,填充原因:数据加密时一般要求数据块长度是若干字节的整数倍。“下一个首部”字段的值表明在接收端,ESP的有效载荷应该交给什么样的协议来处理。
  2. 加密的部分。按照SA声明的加密算法和密钥,对ESP的有效载荷和ESP尾部进行加密。
  3. ESP首部。ESP首部有两个32位字段:
    • 第一个字段存放安全参数索引SPI,通过同一个SA的所有IP安全数据报都使用同样的SPI值。
    • 第二个字段是序号,鉴别要用到这个序号,它用来防止重放攻击。
  4. 鉴别的部分。按照SA声明的算法和密钥,对ESP首部和加密的部分生成报文鉴别码MAC。
  5. 报文鉴别码MAC。所生成的报文鉴别码MAC添加在ESP尾部的后面,和ESP首部、ESP的有效载荷、ESP尾部一起,构成IP安全数据报的有效载荷。
  6. 新的IP首部。通常为20字节长,和普通的IP数据报的首部的格式是一样的。需要注意的是,首部中的协议字段的值是50,表明在接收端,首部后面的有效载荷应交给ESP协议来处理。

收到IP安全数据报后,先检查首部中的目的地址。发现目的地址正确,继续处理这个IP安全数据报:

  1. 找到IP首部的协议字段值(现在是50),把IP首部后面的所有字段(即IP安全数据报的有效载荷)都用ESP协议进行处理。先检查ESP首部中的安全参数索引SPI,以确定收到的数据报属于哪一个安全关联SA (因为可能有多个安全关联)。
  2. 接着计算报文鉴别码MAC,看是否和ESP尾部后面添加的报文鉴别码MAC相符。
  3. 再检验ESP首部中的序号,以证实有无被入侵者重放。
  4. 接着用这个安全关联SA对应的加密算法和密钥,对已加密的部分进行解密。
  5. 再根据ESP尾部中的填充长度,去除发送端填充的所有0,还原出加密前的ESP有效载荷,也就是发送的原始IP数据报。

IPsec的其他构件

安全关联数据库SAD(Security Association Database)

  • 存放安全关联SA

安全策略数据库SPD(Security Policy Database)

  • 指明什么样的数据报需要进行IPsec处理

互联网密钥交换IKE (Internet Key Exchange)协议

  • 用于大型的、地理位置分散的系统
  • 是为IP安全数据报创建安全关联SA
  • IKEv2以另外三个协议为基础
    • Oakley— 是个密钥生成协议[RFC 2412]。
    • 安全密钥交换机制SKEME (Secure Key Exchange Mechanism)是用于密钥交换的协议。它利用公钥加密来实现密钥交换协议中的实体鉴别。
    • 互联网安全关联和密钥管理协议ISAKMP (Internet Secure Association and KeyManagement Protocol) — 用于实现IK E中定义的密钥交换,使IKE的交换能够以标准化、格式化的报文创建安全关联SA。