2-1网络层安全协议

网络层安全协议

郭高旭 ggx21@mails.tsinghua.edu.cn 2023/12/6

TCP/IP协议栈与对应的安全协议

  1. 应用层

    • S/MIME
    • Kerberos
    • SET
  2. 传输层(TCP/UDP)

    • SSL
    • TLS
    • SOCKS
  3. 网络层(IP)

    • IPsec(AH,ESP)
    • Packet FIltering
  4. 数据链路层

    • L2TP
    • PPTP
    • L2F

IPsec

提供IP级安全性(ip security)

  • 认证

    • 拓展报头:AH,authentication Header
  • 加密

    • 封装安全载荷ESP:Encapsulating Security Payload
  • 密钥管理

"IP 协议是无状态、无连接的"指的是传输层的 Internet Protocol(IP)协议的特性。在这个上下文中,"无状态"意味着每个数据包在传输时都是独立的,系统不会保留关于先前数据包的任何信息。而"无连接"表示在传输数据之前不需要在发送和接收系统之间建立持久的连接。

IPsec的应用

在公网上建立安全的虚拟专用网VPN

IPSec 提供 IP 级的安全性的关键点包括:

  1. 独立于传输层协议: IPSec 在 IP 层实施安全性,因此可以在不考虑传输层协议(如TCP或UDP)的情况下提供安全性。这使得它能够适用于各种传输层协议。

  2. 端到端安全性: IPSec 提供端到端的安全性,

    端到端安全性是一种安全模型,强调在通信的两端(即通信的源和目标)之间实施安全措施,以确保在整个通信路径上的数据保持机密性和完整性。这意味着只有通信的两个端点能够解密和验证数据,中间的任何节点都无法直接访问或修改数据。

  3. 透明性: 因为它在 IP 层运行,所以对应用程序而言是透明的。

    透明性:应用程序感知不到

  4. 无状态: IPSec 在提供安全性的同时保持了 IP 协议的无状态性。每个数据包都可以独立处理,而不需要维护连接状态。

ipsec文档

todo:DOI?

IPsec服务

  • 访问控制

  • 无连接完整性

  • 数据源发认证

  • 拒绝重放数据包

  • 保密性(加密)

  • 有限的信息流保密性

安全关联

安全关联SA是IPsec通信双方之间对某些要素的一种协商

要素:协议、操作模式、密码算法、认证算法、密钥、密钥生存期等

关联是发送方和接收方之间的单向关系,如果需要双方的安全交换,那么需要建立两个安全关联(考虑地下情报网的接头方式)

  • 如果需要双方安全交换,则建立两个安全关联

  • 安全服务可由AH或者ESP提供, 但不能两者都提供,why?

一个安全关联SA由三个参数唯一确定:

注意,并不是只有下面的三个参数,下面三个参数只是Primary key group

  • 安全参数索引SPI(Security Parameters Index)

  • IP 目的地址IPDA

    primary key in ip packet

  • 安全协议标识

其他参数

  • 序列号计数器

  • 序列号溢出标志

    发送方不允许循环计数,溢出后SA必须终止,用新的密钥协商声称新的SA

  • 反重放窗口

    IP是无连接的,故不能保证包的顺序传输,接收方必须实现一个大小为W的窗口,

  • AH信息组/ESP信息组

  • SA的生存期

  • IPsec协议模式

    • 传输模式
    • 隧道模式
  • Path MTU

安全关联数据库SADB

有一个安全关联数据库SADB,定义了SA相关联的参数

对于收到的数据包,解析出三元组【SPI、目的地址、 AH /ESP】 ,并据此查找SADB:

  1. 如果查找到一个匹配的SA条目,比较其余参数与AH或ESP头中相关域是否匹配

  2. 没有找到匹配的SA条目:

    1. 输入包丢弃
    2. 输出包新建SADB条目

安全策略数据库SPDB

IP流量与特定SA相关是通过安全策略数据库SPDB定义的

  • 定义IP流量子集的入口,指向SA的指针(选择子)

  • 可以一对多也可以多对一

  • 策略

    • discard
    • bypass IPsec
    • apply IPsec

认证头AH

提供完整性和认证,不提供机密性

认证确保末端系统或者网络设备对用户或者应用程序进行认证,并提供相应的流量过滤功能,同时还能防止地址欺诈攻击和重放攻击

认证基于消息认证码MAC,双方必须共享一个公钥

AH对Inbound的处理

  1. 从端口收到输入的数据包,解析出其SA三元组,查找SADB

  2. 检查序列号(可选,针对重放攻击)

  3. 计算数据包的ICV,将其和数据包中的值进行比较:

    1. 选择哈希算法: AH支持多种哈希算法,例如MD5(Message Digest 5)和SHA-1(Secure Hash Algorithm 1)。在建立IPsec安全关联时,通信双方协商选择要使用的哈希算法。
    2. 构建完整性保护字段: 计算ICV时,将AH头中的部分字段与要进行完整性保护的数据(包括IP头部和上层协议数据)一起构建一个整体的数据块。这个数据块称为"整体字段"。
    3. 计算哈希值: 使用协商好的哈希算法对整体字段进行哈希计算,生成ICV。这个哈希值将作为认证头中的ICV字段的值。
    4. 填充 ICV 字段: 将计算得到的ICV填充到AH头的ICV字段中。
    5. 传输: 发送方将携带ICV的AH头附加到IP数据报上,并将整个IP数据报传输到接收方。
    6. 验证: 接收方收到数据后,使用相同的算法和密钥计算接收到的数据的ICV,并与AH头中的ICV字段进行比较。

认证头的组成

1. AH 头部格式:

1
2
3
4
5
6
7
8
9
10
11
12
13
  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Next Header | Payload Len | RESERVED | Security Param |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Security Parameters Index (SPI) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number Field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ Integrity Check Value-ICV (variable) ~
| |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2. 各字段说明:

  • Next Header (8 bits): 表示下一层协议的标识符,指示在AH之后的数据报中的下一层协议类型。

  • Payload Length (8 bits): 指示在AH头部后面的AH数据的长度,以4字节为单位,不包括IP头和AH头的固定部分。

  • RESERVED (16 bits): 保留字段,必须设置为零。

  • Security Parameters Index (SPI) (32 bits): 安全参数索引,用于唯一标识一个安全关联。

  • Sequence Number (32 bits): 序列号字段,用于防止重放攻击。

  • Integrity Check Value (ICV) (variable): 完整性校验值,用于验证数据的完整性。

注意事项:

  • AH头部紧跟在IP头部之后。

  • AH提供对整个IP数据报的完整性保护,包括IP头部和上层协议数据。

  • AH不提供机密性,因此它主要用于数据完整性和源认证的需求。

封装安全载荷ESP

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  0                   1                   2                   3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Security Parameters Index (SPI) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Sequence Number Field |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |
~ payload data ~
| |
+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | padding |
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | pad length | next header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Autentication Data(MAC) |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

互联网密钥交换协议-IKE

IKE(Internet Key Exchange)协议为IPsec提供了自动协商交换密钥、建立安全关联SA的服务

IKE的精髓在于: 永远不在不安全的网络上直接传送密钥

  • 可以在不安全的网络环境中安全地建立或更新共享密钥

  • 通用协议,不止为了IPsec

  • 目前IKE协议只在IPsec协议中得到了应用

  • 前向安全性

    一个密钥被破解,并不影响其他密钥的安全性,这些密钥间没有派生关系

IKE不但可自动地为参与通信的实体协商安全关联SA,还可以维护安全关联数据库SADB

IKE 报文格式

IKE的报文格式继承自ISAKMP,所以也称为ISAKMP报文,(UPD,端口500)

  • 报头主要是用于标识身份的目的/源 cookie,和标记加密/认证/commit(是否需要ack)的flags

  • payload主要是沟通sa的各种参数

IKE的两个阶段

  1. 协商IKE SA

  2. 协商IPsec SA

第一步为第二步建立了一个安全的通道

第一阶段:IKE SA

主模式提供了对通信双方的身份保护,当身份保护不必要时,可以采取积极模式减少交互次数

  • 主模式(6次,三来回)

    1. SA交换

      交换sa参数

    2. 密钥交换

      DH算法

    3. 身份和交换验证

​ 报文头相同,但是载荷不同。

  • 快速/积极模式

    image-20231207102523722

第二阶段:IPsec SA

一个第一阶段可以为多个第二阶段服务

  • crypt

  • hash

  • auth

  • DH组

  • TTL

  • length

  • etc.

IKE的不足

  • 标准复杂

  • 消息交互次数过多

  • 设计缺陷,易受攻击




本文总阅读量