网络层安全协议
郭高旭 ggx21@mails.tsinghua.edu.cn 2023/12/6
TCP/IP协议栈与对应的安全协议
-
应用层
- S/MIME
- Kerberos
- SET
-
传输层(TCP/UDP)
- SSL
- TLS
- SOCKS
-
网络层(IP)
- IPsec(AH,ESP)
- Packet FIltering
-
数据链路层
- L2TP
- PPTP
- L2F
IPsec
提供IP级安全性(ip security)
-
认证
- 拓展报头:AH,authentication Header
-
加密
- 封装安全载荷ESP:Encapsulating Security Payload
-
密钥管理
"IP 协议是无状态、无连接的"指的是传输层的 Internet Protocol(IP)协议的特性。在这个上下文中,"无状态"意味着每个数据包在传输时都是独立的,系统不会保留关于先前数据包的任何信息。而"无连接"表示在传输数据之前不需要在发送和接收系统之间建立持久的连接。
IPsec的应用
在公网上建立安全的虚拟专用网VPN
IPSec 提供 IP 级的安全性的关键点包括:
-
独立于传输层协议: IPSec 在 IP 层实施安全性,因此可以在不考虑传输层协议(如TCP或UDP)的情况下提供安全性。这使得它能够适用于各种传输层协议。
-
端到端安全性: IPSec 提供端到端的安全性,
端到端安全性是一种安全模型,强调在通信的两端(即通信的源和目标)之间实施安全措施,以确保在整个通信路径上的数据保持机密性和完整性。这意味着只有通信的两个端点能够解密和验证数据,中间的任何节点都无法直接访问或修改数据。
-
透明性: 因为它在 IP 层运行,所以对应用程序而言是透明的。
透明性:应用程序感知不到
-
无状态: 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:
-
如果查找到一个匹配的SA条目,比较其余参数与AH或ESP头中相关域是否匹配
-
没有找到匹配的SA条目:
- 输入包丢弃
- 输出包新建SADB条目
安全策略数据库SPDB
IP流量与特定SA相关是通过安全策略数据库SPDB定义的
-
定义IP流量子集的入口,指向SA的指针(选择子)
-
可以一对多也可以多对一
-
策略
- discard
- bypass IPsec
- apply IPsec
认证头AH
提供完整性和认证,不提供机密性
认证确保末端系统或者网络设备对用户或者应用程序进行认证,并提供相应的流量过滤功能,同时还能防止地址欺诈攻击和重放攻击
认证基于消息认证码MAC,双方必须共享一个公钥
AH对Inbound的处理
-
从端口收到输入的数据包,解析出其SA三元组,查找SADB
-
检查序列号(可选,针对重放攻击)
-
计算数据包的ICV,将其和数据包中的值进行比较:
- 选择哈希算法: AH支持多种哈希算法,例如MD5(Message Digest 5)和SHA-1(Secure Hash Algorithm 1)。在建立IPsec安全关联时,通信双方协商选择要使用的哈希算法。
- 构建完整性保护字段: 计算ICV时,将AH头中的部分字段与要进行完整性保护的数据(包括IP头部和上层协议数据)一起构建一个整体的数据块。这个数据块称为"整体字段"。
- 计算哈希值: 使用协商好的哈希算法对整体字段进行哈希计算,生成ICV。这个哈希值将作为认证头中的ICV字段的值。
- 填充 ICV 字段: 将计算得到的ICV填充到AH头的ICV字段中。
- 传输: 发送方将携带ICV的AH头附加到IP数据报上,并将整个IP数据报传输到接收方。
- 验证: 接收方收到数据后,使用相同的算法和密钥计算接收到的数据的ICV,并与AH头中的ICV字段进行比较。
认证头的组成
1. AH 头部格式:
1 | 0 1 2 3 |
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 | 0 1 2 3 |
互联网密钥交换协议-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的两个阶段
-
协商IKE SA
-
协商IPsec SA
第一步为第二步建立了一个安全的通道
第一阶段:IKE SA
主模式提供了对通信双方的身份保护,当身份保护不必要时,可以采取积极模式减少交互次数
-
主模式(6次,三来回)
-
SA交换
交换sa参数
-
密钥交换
DH算法
-
身份和交换验证
-
报文头相同,但是载荷不同。
-
快速/积极模式
第二阶段:IPsec SA
一个第一阶段可以为多个第二阶段服务
-
crypt
-
hash
-
auth
-
DH组
-
TTL
-
length
-
etc.
IKE的不足
-
标准复杂
-
消息交互次数过多
-
设计缺陷,易受攻击