综合密码协议学习

最近准备学一下(初步了解)各种协议,因此写了这篇博客,如有出错的地方请轻点喷 XD

基础知识

密码协议,也称安全协议、加密协议

按安全协议定义:
密钥交换协议、认证协议、认证和密钥交换协议。

按安全协议实现的功能:
认证协议、最小泄密协议、不可否认协议、公平性协议、身份识别协议、密钥管理协议。

下面的知识是有关计算机网络的

OSI模型

OSI七层模型是最经典的模型,将通信系统中的数据流分为七层
每一个中间层为其上一层提供功能,其自身功能则由其下一层提供

  1. 物理层
  2. 数据链路层:Ethernet、MAC等
  3. 网络层:IP(IPv4/IPv6)、ICMP等
  4. 传输层:TCP、UDP等
  5. 会话层:RPC、NetBIOS等
  6. 表示层:SSL/TLS、JPEG、UTF-8等
  7. 应用层:HTTP、HTTPS、FTP、DNS等

TCP/IP模型

TCP/IP四层模型是实际互联网中比较常用的模型

  1. 网络接口层:对应OSI中的物理层+数据链路层
  2. 网络层:对应OSI中的网络层
  3. 传输层:对应OSI中的传输层
  4. 应用层:对应OSI中的应用层+表示层+会话层

IPSec协议族

注:本文只是对IPSec协议族做初步的了解,更深入的部分请移步该部分的参考资料:D
注:工作在OSI模型的第三层(网络层)

IPSec协议不是具体的一个协议,它指的是一组基于网络层的安全通信协议族(应用密码学)
设计思想:将基于密码技术的安全机制引入IP协议(IPv4、IPv6),实现网络层的通信安全

IPSec协议主要分为

  1. 认证头(AH)协议,为IP数据报提供无连接数据完整性、消息认证以及防重放攻击保护
  2. 封装安全载荷(ESP)协议,提供机密性、数据源认证、无连接完整性、防重放和有限的传输流(traffic-flow)机密性;
  3. 因特网密钥交换(称IKE或IKEv2)协议,为AH、ESP操作所需的安全关联SA(Security Association,安全联盟,博客后面会说))提供算法、数据包和密钥参数

IPSec协议的俩个环节:
第一环节:使用IKE完成通信双方的身份鉴别,确定通信时使用的IPSec安全策略和密钥;
第二环节:使用上一环节中协商确定的安全策略和密钥,执行ESP协议,开始通信数据的安全传输。

借用一下大佬的图(来自https://zhuanlan.zhihu.com/p/488141423):

IPSec协议的俩种模式:

  • 传输模式:用于端到端应用场景。不改动IP头,只保护IP载荷;
  • 隧道模式:经常用于私网与私网之间通过公网进行通信,建立安全VPN通道(Virtual Private Network,虚拟专用网)。对整个IP报文(包括原先的IP头、IP载荷)提供加密和认证,添加新的IP头。
1
2
3
4
5
6
7
8
原始 IP 包:
[ IP头 ][ Data ]

传输模式:
[ IP头 ][ IPSec ][ Data ]

隧道模式:
[ 新IP头 ][ IPSec ][ 旧IP头 ][ Data ]
  • IPSec:AH 或 ESP 安全头
  • Data:数据载荷

AH协议

知识点:

  1. AH协议提供数据源身份鉴别、完整性和抗重放攻击等安全功能;
  2. AH协议不提供保密性服务,即不执行加密操作;
  3. GM/T 0022-2014《IPSec VPN技术规范》中规定:AH应与ESP嵌套使用,不得单独使用;
  4. 作用:为整个IP数据报文(包括IP头和IP载荷)提供完整性校验,检测数据包是否被篡改;
  5. AH使用MAC(通常为HMAC)检测篡改,密钥来自IKE协定的用于完整性校验的会话密钥;
  6. AH分配到的协议号是51。即使用AH协议进行安全保护的IPv4数据报文的IP头部中协议字段将是51,表明IP头之后是一个AH头。
  7. AH 在传输模式和隧道模式下都提供完整性保护与数据源认证,但因封装位置不同,其具体保护范围并不完全相同,且均不包括 IP 头中的可变字段。
1
2
3
4
5
6
7
8
9
10
11
原始 IP 包:
[ IP头 ][ Data ]

传输模式:
[ IP头 ][ AH ][ Data ]
<--- 受保护 --->

隧道模式:
[ 新IP头 ][ AH ][ 原IP头 ][ Data ]
<------- 受保护 ------>

ESP协议

  1. ESP提供对数据报文加密功能;
  2. GM/T 0022-2014《IPSec VPN技术规范》中规定:ESP 可以被单独使用,也可以与AH结合使用;
  3. 当ESP被单独使用时,GM/T 0022-2014 中规定必须同时提供保密性和数据源身份鉴别服务。单独使用 ESP 时可以支持 NAT(网络地址转换);
  4. 当 ESP 与 AH 结合使用时,GM/T 0022-2014中规定 ESP 不提供数据源身份鉴别服务,而由 AH 提供数据源身份鉴别;
  5. ESP在传输模式和隧道模式中有不同的放置位置,保护的范围不同。
  6. ESP之前的IP头中的协议字段将是50,以表明IP头之后是一个ESP头,ESP不仅具备ESP头,还有一个包含有用信息的ESP尾。
1
2
3
4
5
6
7
8
9
10
11
12
13
ESP传输模式:

|<---------- 加密 ---------->|
[ 原IP头 ][ ESP头 ][ 上层协议头 ][ Data ][ ESP尾 ][ ESP认证数据 ]
|<-------------- 认证 ------------->|


ESP隧道模式:

|<-------------- 加密 --------------->|
[ 新IP头 ][ ESP头 ][ 原IP头 ][ 上层协议头 ][ Data ][ ESP尾 ][ ESP认证数据 ]
|<------------------ 认证 -------------------->|

传输模式:为ESP头后的载荷提供保密性,为原IP头后的内容提供认证保护。
隧道模式:为整个原IP报文提供保密性,为新建IP头后的内容提供认证保护。

AH + ESP模式图

1
2
3
4
5
6
7
8
9
10
11
AH + ESP 传输模式:
[ IP头 ][ AH ][ ESP头 ][ 上层协议头 ][ Data ][ ESP尾 ][ ESP认证数据 ]
AH认证: [ IP头中不可变字段 + AH后内容 ]
ESP认证: [ ESP头 + 上层协议头 + Data + ESP尾 ]
ESP加密: [ 上层协议头 + Data + ESP尾 ]

AH + ESP 隧道模式:
[ 新IP头 ][ AH ][ ESP头 ][ 原IP头 ][ 上层协议头 ][ Data ][ ESP尾 ][ ESP认证数据 ]
AH认证: [ 新外层IP头中不可变字段 + AH后内容 ]
ESP认证: [ ESP头 + 原IP头 + 上层协议头 + Data + ESP尾 ]
ESP加密: [ 原IP头 + 上层协议头 + Data + ESP尾 ]

SA(Security Association,安全联盟)

  1. SA 是通信双方经协商建立的一种约定,规定了双方如何使用 IPsec 保护数据,内容包括:数据封装格式、IPsec 工作模式(传输模式 / 隧道模式)、加密与认证算法、密钥、SA 生存周期等

  2. 单向性:AH 和 ESP 都使用 SA,且 SA 是单向的——一个 SA 只能为单一方向上传输的数据提供安全服务。因此:

  • 若双向通信只使用一种协议(如只用 ESP),至少需要建立 2 个 SA(入站 1 个 + 出站 1 个)
  • 若同时使用 AH 和 ESP 两种协议,则需要 4 个 SA(AH 入/出各 1 个,ESP 入/出各 1 个)
  1. 单一服务:每个 SA 只对应 一种 安全协议(AH 或 ESP,二者是相互独立的服务)。如果既要加密又要认证,就必须分别为 AH 和 ESP 各建一个 SA,不能用一个 SA 同时承载两种协议。

  2. 通过不同的 SA,IPsec 可以为不同的数据流提供不同的安全策略(比如不同流量使用不同的算法或密钥)

  3. 一个 SA 由三元组唯一确定:

要素 说明
SPI(Security Parameter Index,安全参数索引) 32 比特数值,用于在同一目的地址和协议下唯一区分不同的 SA,会随 IPsec 报文一起传输
目的 IP 地址 标识 SA 所属的通信目的端
安全协议号(AH 或 ESP) 标识该 SA 使用的安全协议

ISAKMP协议

在学习IKE协议前,我们要先了解一下ISAKMP协议(安全连接和密钥管理协议)。

  1. ISAKMP协议是一种用于安全密钥协商和管理的协议。它是IPSec协议套件中的一部分,用于确保网络通信的机密性、完整性和可用性。
  2. 虽然ISAKMP从名字的定义上看是协议,但从功能上看它更像一个框架。RFC 2408 中定义,它提供了一个架构来进行授权与密钥交换(如下个点要讲的IKE协议),主要被设计来作为密钥交换之用。
  3. 从宏观上来看,ISAKMP主要做了三件事情:
    • SA协商:为了在通信双方间协商出一组双方都认可的安全参数。比如两端采用相同的加密算法和完整性算法。
    • 密钥交换:为已经协商好的算法生成必要的密钥信息。
    • 身份认证:鉴别对方的身份,保证自己不是在跟一个伪造的对象通信。
  4. 一旦安全关联建立,ISAKMP协议还负责维护和管理已建立的安全关联。它确保关联的有效性和更新,以适应网络环境的变化。

IKE协议

参考资料

[1] 知乎. IPSec协议详解[EB/OL].
https://zhuanlan.zhihu.com/p/488141423.
[2] NEUChords. IPSec协议原理与分析[EB/OL].
https://blog.csdn.net/NEUChords/article/details/92968314.
[3] CSDN. IPSec与IKE协议相关介绍[EB/OL].
https://blog.csdn.net/qq_32044265/article/details/128106213.
[4] 聚合数据. 什么是ISAKMP协议 ISAKMP协议的作用 ISAKMP协商过程[EB/OL].
https://www.juhe.cn/news/index/id/8198.
[5] Wikipedia. IPsec[EB/OL].
https://zh.wikipedia.org/wiki/IPsec.
[6] Wikipedia. 互联网密钥交换(Internet Key Exchange, IKE)[EB/OL].
https://zh.wikipedia.org/wiki/%E7%B6%B2%E9%9A%9B%E7%B6%B2%E8%B7%AF%E9%87%91%E9%91%B0%E4%BA%A4%E6%8F%9B.
[7] Wikipedia. 网络安全关联与密钥管理协议(Security Association and Key Management Protocol)[EB/OL].
https://zh.wikipedia.org/wiki/%E7%B6%B2%E8%B7%AF%E5%AE%89%E5%85%A8%E9%97%9C%E8%81%AF%E8%88%87%E9%87%91%E9%91%B0%E7%AE%A1%E7%90%86%E5%8D%94%E5%AE%9A.

IPsec ISAKMP协议-CSDN博客

TLS

注:TLS 工作在传输层之上(OSI模型的表示层),为上层应用提供机密性、完整性与身份鉴别,是 HTTPS 的安全底座。本部分持续更新中,先从流量分析里最常用的 keylog 文件说起,握手与密钥调度以后慢慢补 XD

NSS Key Log Format

解密 TLS 流量的那把”钥匙”

NSS Key Log Format 最早由 Mozilla 的密码库 NSS 定义,如今是解密 TLS 流量的事实标准(de facto standard)——它并非任何 RFC 规定的官方协议,却几乎被整个生态采用。
格式本身非常简单:纯文本,每行三个空格分隔的字段 <标签> <ClientRandom> <密钥>。

  • 标签表明这是 TLS 密钥调度中派生出的哪一把 secret,如解密握手消息的 CLIENT/SERVER_HANDSHAKE_TRAFFIC_SECRET、解密应用数据的 CLIENT/SERVER_TRAFFIC_SECRET_0;
  • ClientRandom 是该会话 ClientHello 里的 32 字节随机数,相当于”会话身份证”,分析工具靠它把密钥匹配到 pcap 里的具体连接;
  • 最后一个字段才是真正的密钥材料(hex 编码的 HKDF 输出,TLS 1.3 下为 48 字节,对应 SHA-384)。
  • 一个文件里可以同时存在多场会话的密钥,全靠 ClientRandom 区分。

这个文件的珍贵之处在于:TLS 1.3 强制 (EC)DHE 前向保密,即使拿到服务器 RSA 私钥也推不出会话密钥,keylog 是解密流量的唯一入口。

示例:

1
2
CLIENT_HANDSHAKE_TRAFFIC_SECRET 210cb7af9f5d...42f663c6 f985875a9330...0a07f17
SERVER_HANDSHAKE_TRAFFIC_SECRET 210cb7af9f5d...42f663c6 654148cc554d...2887d7

参考资料

[1] IETF. RFC 8446: The Transport Layer Security (TLS) Protocol Version 1.3[EB/OL].
https://datatracker.ietf.org/doc/html/rfc8446.
[2] Mozilla. NSS Key Log Format[EB/OL].
https://developer.mozilla.org/en-US/docs/Mozilla/Projects/NSS/Key_Log_Format.
[3] Wireshark Wiki. TLS[EB/OL].
https://wiki.wireshark.org/TLS.


综合密码协议学习
https://baymax-fools.github.io/2026/07/16/crypto/密码协议学习/
Author
Baymax
Posted on
July 16, 2026
Updated on
September 14, 2026
Licensed under