一、全章架构总览

第8章以"从密码学基础到各层安全协议,再到运行安全"的递进逻辑,系统构建了计算机网络安全的知识体系。全章以 Alice、Bob 和 Trudy(入侵者)三位虚拟角色贯穿始终,生动演绎安全需求、攻击手段和防御机制。

                              ┌─────────────────────────────────────────────┐
                              │             8.9 运行安全性                   │
                              │      防火墙 + IDS/IPS(Snort)               │
                              │      "机构网络的出入安检"                     │
                              └─────────────────────────────────────────────┘
                                              ↑ 保护整个机构网络

╔═══════════════════════════════════════════════════════════════════════════════════╗
║                          自顶向下的各层安全协议                                     ║
╠═══════════════════════════════════════════════════════════════════════════════════╣
║                                                                                   ║
║  ┌─────────────────────────────────────────────────────────────┐ 应用层          ║
║  │  8.5 安全电子邮件 (PGP)                                       │                 ║
║  │  机密性 + 发送方鉴别 + 报文完整性                              │                 ║
║  │  会话密钥K_S + RSA + 数字签名 + 散列函数                       │                 ║
║  └─────────────────────────────────────────────────────────────┘                 ║
║                                      ↓                                            ║
║  ┌─────────────────────────────────────────────────────────────┐ 运输层          ║
║  │  8.6 TLS (使TCP连接安全)                                      │                 ║
║  │  握手 → 密钥导出 → 数据传输(记录+HMAC+加密)                   │                 ║
║  │  不重数防御连接重放,序号防御报文段重放                         │                 ║
║  └─────────────────────────────────────────────────────────────┘                 ║
║                                      ↓                                            ║
║  ┌─────────────────────────────────────────────────────────────┐ 网络层          ║
║  │  8.7 IPsec 和 VPN                                            │                 ║
║  │  ESP协议:机密性+源鉴别+数据完整性+防重放攻击                   │                 ║
║  │  隧道模式: 整个初始IP数据报→加密→新IP首部→"enchilada"          │                 ║
║  │  IKE两阶段密钥管理                                            │                 ║
║  └─────────────────────────────────────────────────────────────┘                 ║
║                                      ↓                                            ║
║  ┌─────────────────────────────────────────────────────────────┐ 链路层          ║
║  │  8.8 无线安全                                                 │                 ║
║  │  WPA2四次握手: 相互鉴别+会话密钥推导                           │                 ║
║  │  4G/5G AKA: MME/HSS协作鉴别                                  │                 ║
║  │  EAP + RADIUS 协议栈                                         │                 ║
║  └─────────────────────────────────────────────────────────────┘                 ║
║                                                                                   ║
╚═══════════════════════════════════════════════════════════════════════════════════╝
                                              ↑
                              ┌─────────────────────────────────────────────┐
                              │           8.1 网络安全四大属性                │
                              │  机密性 | 报文完整性 | 端点鉴别 | 运行安全性   │
                              └─────────────────────────────────────────────┘
                                              ↑
          ┌───────────────────────────────────────────────────────────────────┐
          │                        8.2-8.4 密码学基础                          │
          │                                                                   │
          │  8.2 密码学原理         8.3 报文完整性和数字签名     8.4 端点鉴别   │
          │  ┌──────────────┐     ┌───────────────────┐     ┌──────────┐     │
          │  │ 对称密钥密码  │     │ 密码散列函数(H)    │     │ ap1.0    │     │
          │  │ DES/AES/CBC │     │ MD5 → SHA-1      │     │  ↓ 身份声明│     │
          │  ├──────────────┤     ├───────────────────┤     │ ap2.0    │     │
          │  │ 公开密钥密码  │     │ 报文鉴别码(MAC)    │     │  ↓ IP地址 │     │
          │  │ RSA/DH      │     │ HMAC = H(m+s)    │     │ ap3.0    │     │
          │  │ 会话密钥K_S   │     ├───────────────────┤     │  ↓ 口令   │     │
          │  └──────────────┘     │ 数字签名           │     │ ap3.1    │     │
          │                       │ K_B^-(H(m))      │     │  ↓ 加密口令│    │
          │                       ├───────────────────┤     │ ap4.0    │     │
          │                       │ 公钥认证(CA/X.509) │     │  ↓ 不重数 │     │
          │                       └───────────────────┘     └──────────┘     │
          └───────────────────────────────────────────────────────────────────┘

核心洞察:网络安全 = 密码学基础(机密性工具)支撑报文完整性鉴别和端点鉴别,这三者再逐层应用到协议栈各层的安全协议中(PGP→TLS→IPsec→WPA2),最后辅以防火墙和IDS/IPS保护机构网络运行安全。对称密钥密码在整个体系结构中处于绝对的核心地位。


二、8.1 什么是网络安全

2.1 人物设定与叙事逻辑

全章以三位角色贯穿:

角色身份作用
Alice发送方发起安全通信的一方
Bob接收方接收安全通信的一方
Trudy入侵者(intruder)企图破坏安全通信的第三方

Alice 和 Bob 希望"安全地"通信,Trudy 则能够:

  • 窃听:监听并记录信道上传输的控制报文和数据报文
  • 修改、插入或删除报文或报文内容

2.2 安全通信的四大属性

   ┌──────────────────────────────────────────────────────────────┐
   │                    安全通信的四大属性                          │
   ├───────────────┬──────────────────────────────────────────────┤
   │ ① 机密性      │ 仅有发送方和接收方能够理解传输报文的内容        │
   │ Confidentiality│ 需要加密(encryption)                       │
   │               │ → 8.2节 密码学原理                            │
   ├───────────────┼──────────────────────────────────────────────┤
   │ ② 报文完整性   │ 通信内容在传输过程中未被篡改                  │
   │ Message       │ 扩展检验和/散列技术                           │
   │ Integrity     │ → 8.3节 报文完整性和数字签名                   │
   ├───────────────┼──────────────────────────────────────────────┤
   │ ③ 端点鉴别     │ 通信双方证实对方确实具有其所声称的身份         │
   │ End-Point     │ 人类靠视觉/声纹;网络靠报文和数据交换           │
   │ Authentication│ → 8.4节 端点鉴别                              │
   ├───────────────┼──────────────────────────────────────────────┤
   │ ④ 运行安全性   │ 保护机构网络免受攻击(防火墙、IDS等)          │
   │ Operational   │ 反制蠕虫、秘密窃取、DoS等威胁                  │
   │ Security      │ → 8.9节 运行安全性                            │
   └───────────────┴──────────────────────────────────────────────┘

2.3 攻击者的能力(Trudy 能做什么)

基于图8-1的模型:

  • 窃听:被动监听并记录控制和数据报文
  • 篡改:修改报文内容、插入新报文、删除报文
  • 假冒:冒充另一个实体
  • 会话劫持:"劫持"一个正在进行的会话
  • 拒绝服务:通过使系统资源过载拒绝合法用户的网络服务

2.4 需要安全通信的实体

不仅仅是人类用户之间的通信需要安全:

  • DNS服务器之间(防DNS欺骗)
  • 路由器之间交换路由选择信息(防OSPF/BGP攻击)
  • 网络管理功能(防SNMP攻击)
  • 电子商务(信用卡号传输)
  • 在线银行交互

三、8.2 密码学原理

3.1 密码学基本术语

                   加密密钥 K_A                解密密钥 K_B
                        ↓                           ↓
  明文 m ──────────→ [加密算法] ──────────→ [解密算法] ──────────→ 明文 m
  (plaintext)          │       密文 c        │              (recovered)
                       │    (ciphertext)      │
                       └──────────────────────┘
                          K_A(m) = c         K_B(c) = m
术语英文定义
明文plaintext / cleartext报文的初始形式,可理解的内容
密文ciphertext加密后的报文,对入侵者不可理解
加密算法encryption algorithm以明文和密钥为输入,产生密文
解密算法decryption algorithm以密文和密钥为输入,恢复明文
密钥key一串数字或字符,作为加密/解密算法的输入
对称密钥系统symmetric key systemAlice 和 Bob 的密钥相同且秘密
公开密钥系统public key system一对密钥:公钥公开,私钥保密

3.2 三种攻击模型

根据入侵者拥有的信息分为三种:

攻击类型英文入侵者拥有的信息
唯密文攻击ciphertext-only attack只能得到截取的密文,不了解明文内容
已知明文攻击known-plaintext attack知道某些(明文,密文)的匹配关系
选择明文攻击chosen-plaintext attack能够选择某一明文报文并得到其密文形式

3.3 古典密码(通向现代密码的阶梯)

凯撒密码 ──→ 单码代替密码 ──→ 多码代替密码 ──→ 现代块密码
(Caesar)     (Monoalphabetic)   (Polyalphabetic)  (DES/AES)

k=3偏移      26! ≈ 10^26种      多个凯撒密码     函数模拟
25种可能      统计可破           循环使用         随机排列表
                              C₁,C₂,C₂,C₁,C₂   密钥决定映射

凯撒密码:每个字母用字母表中后 k 个字母替换

  • 密钥:k 的值
  • 弱点:仅 25 种可能密钥

单码代替密码:每个字母有唯一替换字母,但映射方式任意

  • 可能映射:26! 种(约 10^26)
  • 弱点:统计分析——英语中 ‘e’ 出现频率 13%,‘t’ 出现频率 9%,常见字母组合 “in”, “it”, “the”, “ion”, “ing”

多码代替密码:使用多个单码代替密码,不同位置的相同字母可能以不同方式编码

  • 密钥:各凯撒密码的 k 值 + 使用次序模式

3.4 对称密钥密码体制(8.2.1节)

块密码(Block Cipher)基本原理
  • 报文被处理为 k 比特的块,每块独立加密
  • 本质:将 k 比特块的明文 一对一映射 为 k 比特块的密文
  • 可能的映射数量:2^k! 种(对于 k=64 是天文数字)
  • 实际实现:使用函数模拟随机排列表,通过多轮循环使每个输入比特影响多数输出比特
三大对称密钥块密码标准
标准全称块大小密钥长度备注
DESData Encryption Standard64 比特56 比特已可被蛮力破解(1秒内尝试所有2^56个密钥)
3DESTriple DES64 比特168 比特(三个56比特密钥)DES的增强版
AESAdvanced Encryption Standard128 比特128/192/256 比特NIST标准;破解128比特AES需约149万亿年
密码块链接(CBC — Cipher Block Chaining)

问题:直接独立加密每块 → 相同明文块产生相同密文块 → 攻击者可推断明文信息

解决方案:CBC 在密文中混合随机性

CBC 过程:

  发送方首先生成随机初始向量 IV = c(0),以明文发送

  第1块: c(1) = K_S( m(1) ⊕ c(0) )
  第2块: c(2) = K_S( m(2) ⊕ c(1) )
  第i块: c(i) = K_S( m(i) ⊕ c(i-1) )

  解密: m(i) = K_S^{-1}(c(i)) ⊕ c(i-1)
        (接收方已知 c(i-1))

CBC 的关键性质:

  1. 相同明文块产生(几乎)总是不同的密文块
  2. 入侵者不知密钥 K_S,即使知道 IV 也无法解密密文
  3. 仅增加一个初始块(IV),带宽开销可忽略
  4. 设计安全协议时需提供从发送方向接收方分发 IV 的机制
替代方案:随机数法
c(i) = K_S( m(i) ⊕ r(i) )    → 发送 c(1), r(1), c(2), r(2), ...
  • 每块随机生成 r(i)
  • 缺点:传输量翻倍
  • CBC 通过复用前一密文块代替随机数解决了这个问题

3.5 公开密钥加密(8.2.2节)

核心思想
                        Bob的公钥 K_B^+ (全世界可见)
                              ↓
  Alice:  明文 m ──→ 加密 K_B^+(m) = c  ──→  密文 c  ──→  Bob

                        Bob的私钥 K_B^- (仅Bob知道)
                              ↓
  Bob:    密文 c ──→ 解密 K_B^-(c) = m   ──→  明文 m 恢复

关键性质:K_B-(K_B+(m)) = K_B+(K_B-(m)) = m

RSA 算法

密钥生成(Bob 执行):

1. 选择两个大素数 p 和 q(乘积 1024 比特量级)
2. n = p × q
3. z = (p - 1) × (q - 1)
4. 选择 e < n,且 e 与 z 互素(无公因数)
5. 求 d 使得 ed mod z = 1
6. 公钥 K_B^+ = (n, e)     私钥 K_B^- = (n, d)

RSA 加密/解密流程:

┌─────────────────────────────────────────────────────────┐
│                     RSA 加密/解密流程                      │
│                                                         │
│  加密 (Alice):                                          │
│    将报文表示为整数 m (m < n)                              │
│    c = m^e mod n                                        │
│    发送 c 给 Bob                                        │
│                                                         │
│  解密 (Bob):                                            │
│    m = c^d mod n                                        │
│    恢复初始报文 m                                         │
│                                                         │
│  ┌──────────┐     ┌──────────────┐     ┌──────────┐     │
│  │ Alice    │────→│  公开信道     │────→│ Bob      │     │
│  │ m → c    │     │  (可能被窃听)  │     │ c → m    │     │
│  │ 用公钥(n,e)│    │              │     │ 用私钥(n,d)│    │
│  └──────────┘     └──────────────┘     └──────────┘     │
│                                                         │
└─────────────────────────────────────────────────────────┘

RSA 数值示例(p=5, q=7):

  • n = 35, z = 24, e = 5, d = 29
  • 加密 “l” (m=12): c = 12^5 mod 35 = 17
  • 解密 c=17: m = 17^29 mod 35 = 12

RSA 的安全性基础:

  • 依赖因数分解的困难性:给定 n=pq,目前没有已知的快速算法分解出 p 和 q
  • 若已知 p 和 q,则由 e 可很容易计算出 d
  • 安全性不是确保的(不确定是否存在快速因数分解算法)
会话密钥(Session Key)

问题:RSA 指数运算非常耗时,不适合加密大量数据

解决方案:RSA + 对称密钥密码结合

Alice 选择随机会话密钥 K_S
    │
    ├─→ 用 K_S 对称加密大量数据
    └─→ 用 Bob 的公钥 K_B^+ RSA加密 K_S → c = K_S^e mod n

Bob 收到 c 后用私钥解密:K_S = c^d mod n
然后用 K_S 对称解密数据

这就是实际中所有安全协议的核心模式:非对称加密分发对称密钥,对称密钥加密数据。

Diffie-Hellman 密钥交换
  • 允许两个实体在不共享预先商定密钥的情况下,通过公开信道协商出一个共享的对称密钥
  • 不能用于加密任意长度的报文
  • 用于创建对称会话密钥,该密钥再用于加密长报文
  • 在 IPsec 的 IKE 协议中被使用

四、8.3 报文完整性和数字签名

4.1 报文完整性问题的定义

Bob 接收到声称来自 Alice 的报文,需要证实:

  1. 该报文的确源自 Alice(源鉴别)
  2. 该报文在传输途中未被篡改

典型应用场景:OSPF 链路状态路由选择 — 路由器需确认接收的链路状态报文来自声称的路由器且未被动过手脚。

4.2 密码散列函数(8.3.1节)

  任意长度报文 m ──→ [散列函数 H] ──→ 固定长度散列值 H(m)
                                       (报文的"指纹")

密码散列函数的附加性质:

  • 找到任意两个不同的报文 x 和 y 使得 H(x) = H(y),在计算上是不可能的
  • 这意味着入侵者无法用其他报文替换由散列函数保护的报文

为什么简单检验和不够:

  • 如图8-8所示,“IOU100.99BOB” 和 “IOU900.19BOB” 具有相同的检验和
  • 给定初始数据,很容易找到具有相同检验和的其他数据

两大主要散列算法:

算法输出长度设计者备注
MD5128 比特Ron Rivest4步过程:填充→添加长度→初始化→4轮循环处理16字块
SHA-1160 比特NIST(美国联邦标准)更安全(输出更长);联邦政府应用强制使用

4.3 报文鉴别码 MAC(8.3.2节)

MAC  vs  简单散列
简单散列(有缺陷):
  Alice: 发送 (m, H(m))
  Trudy: 生成 m',计算 H(m'),发送 (m', H(m'))
  Bob:   H(m') 匹配 → 被骗!
  → 问题:任何人都能计算 H(m')

MAC(正确方案):
  Alice 和 Bob 共享秘密鉴别密钥 s
  Alice: 发送 (m, H(m + s))      ← MAC = H(m + s)
  Bob:   用共享 s 计算 H(m + s),与收到的 MAC 比较
  Trudy: 不知 s,无法伪造 MAC
  → 正确!因为 Trudy 不知道 s
MAC 的优良特点
  • 不要求加密算法:仅使用散列函数和共享秘密
  • 许多应用(如 OSPF 链路状态路由)仅关心报文完整性,不关心机密性
  • 最流行标准:HMAC(使用 MD5 或 SHA-1),将数据和鉴别密钥通过散列函数运行两次
鉴别密钥分发问题

因特网中如何向通信双方分发共享的鉴别密钥 s?

  1. 人工方式:网络管理员物理访问每台路由器手动配置
  2. 公钥加密方式:用路由器的公钥加密鉴别密钥后通过网络发送

4.4 数字签名(8.3.3节)

数字签名的需求

如同手工签名,数字签名应当:

  • 可鉴别(verifiable):必须能证明某个人确实签署了该文件
  • 不可伪造(non-forgable):只有这个人能够签署该文件
数字签名方案
┌──────────────────────────────────────────────────────────────┐
│  发送方 Bob 生成数字签名:                                      │
│                                                              │
│    报文 m ──→ [散列函数 H] ──→ H(m) ──→ [Bob的私钥 K_B^-]     │
│                                        ──→ 数字签名 K_B^-(H(m))│
│                                                              │
│    发送:(原始报文 m, 数字签名 K_B^-(H(m)))                     │
│                                                              │
├──────────────────────────────────────────────────────────────┤
│  接收方 Alice 验证数字签名:                                    │
│                                                              │
│    收到的 m ──→ [散列函数 H] ──→ H(m)                          │
│    收到的数字签名 ──→ [Bob的公钥 K_B^+] ──→ K_B^+(K_B^-(H(m))) │
│                                            = H(m)             │
│                                                              │
│    比较两个 H(m):若相等 → ✓ 签名有效                           │
│                          → ✓ 报文未被篡改                       │
│                          → ✓ 发送方确实是 Bob                   │
└──────────────────────────────────────────────────────────────┘

为什么先散列再签名(而不是直接签名报文)?

  • 散列值 H(m) 远小于报文 m,加密/解密开销大幅降低
  • 对报文散列签名比对整个报文加密签名更高效
数字签名的法律/逻辑基础

Alice 能够在法庭上证明 Bob 签署了文档,因为:

  1. 生成签名必须使用私钥 K_B^-(使得 K_B+(K_B-(m)) = m)
  2. 只有 Bob 知道 K_B^-(假设未泄露/未失窃)
  3. 公钥 K_B^+ 无助于得知私钥
MAC vs 数字签名
维度MAC数字签名
生成方式H(m + s),s 为共享鉴别密钥K_B^-(H(m)),使用私钥
涉及加密不涉及任何加密使用公开密钥加密
所需基础设施共享秘密 s公钥基础设施 PKI(CA支持)
技术复杂度较低较高
典型应用OSPF路由协议、TLS、IPsecPGP安全电子邮件
可否抵赖双方共享密钥,发送方可抵赖不可抵赖(仅发送方拥有私钥)

4.5 公钥认证和证书(CA)

比萨恶作剧问题
正常场景:Bob 下订单 + Bob的数字签名 → Alice 用 Bob 的公钥验证 ✓

攻击场景:
  Trudy 发送 "我是 Bob" + Trudy的公钥(冒充Bob的) + Trudy的签名
  → Alice 用 "这把公钥" 验证通过
  → Alice 认为订单来自 Bob
  → 比萨送到了 Bob 家,但是 Trudy 下的单!

问题本质:Alice 无法确定她拿到的公钥确实属于 Bob。

认证中心 CA(Certification Authority)

CA 的职责:

  1. 验证实体身份:CA 证实一个人的真实身份(验证方法无强制规定,信任取决于 CA 的信誉)
  2. 签发证书:生成将身份和公钥绑定的证书(certificate),并对证书进行数字签名
  ┌────────────────────────────────────────────────────────┐
  │                   CA 证书签发流程                        │
  │                                                        │
  │  Bob的身份信息 + Bob的公钥 K_B^+                         │
  │        ↓                                               │
  │  CA 验证 Bob 的真实身份                                  │
  │        ↓                                               │
  │  CA 用自己的私钥 K_CA^- 对证书签名                        │
  │        ↓                                               │
  │  证书 = (Bob的身份, K_B^+, CA的数字签名)                  │
  │                                                        │
  │  任何人可用 CA 的公钥 K_CA^+ 验证证书真伪                   │
  └────────────────────────────────────────────────────────┘
X.509 证书字段
字段名描述
版本X.509 规范的版本号
序列号CA 颁发的证书的唯一标识符
签名规定 CA 使用的签名算法
颁发者名称发行该证书的 CA 的标识(DN 格式)
有效期证书合法性开始和结束的时间范围
主题名公钥与该证书相联系的实体标识(DN 格式)
主题公钥该主题的公钥及其使用的公钥算法

五、8.4 端点鉴别

5.1 核心问题

端点鉴别:一个实体经计算机网络向另一个实体证明其身份的过程。

与 8.3 节报文完整性的区别:端点鉴别关注当前活跃的实体,而不是过去某点发送的报文。

鉴别协议在通信实体运行其他协议之前运行,先建立相互满意的各方标识。

5.2 鉴别协议的递进式设计:ap1.0 → ap4.0

  ap1.0           ap2.0           ap3.0           ap3.1           ap4.0
  身份声明   →    IP地址验证  →    口令      →    加密口令    →    不重数
  ┌────┐        ┌────────┐      ┌────┐         ┌───────┐      ┌───────────┐
  │"我是│        │检查源IP │      │口令 │         │加密口令│      │不重数R     │
  │Alice"│       │地址     │      │明文 │         │K_A-B   │      │+K_A-B(R)   │
  └────┘        └────────┘      └────┘         └───────┘      └───────────┘
     │               │              │               │               │
     ▼               ▼              ▼               ▼               ▼
  任何人都       IP哄骗可       嗅探可         回放攻击         ✓ 安全
  可以声称       绕过           窃取口令        可绕过           防重放+活性证明
各版本的详细分析
协议机制安全缺陷Trudy 的攻击方式
ap1.0Alice 发送"我是 Alice"无任何验证Trudy 直接发送"我是 Alice"即可冒充
ap2.0Bob 验证源 IP 地址是否为 Alice 的已知地址IP 哄骗Trudy 构造具有 Alice 源 IP 地址的数据报(可修改操作系统内核实现)
ap3.0Alice 发送秘密口令嗅探窃取口令Trudy 嗅探明文传输的口令;现实中 Telnet/FTP 登录口令即以明文传输
ap3.1Alice 用共享对称密钥 K_A-B 加密口令回放攻击(playback attack)Trudy 记录加密的口令,然后向 Bob 重放该加密版本以冒充 Alice
ap4.0使用不重数(nonce)安全(给定共享对称密钥安全的前提下)Trudy 无法通过回放攻击,因为不重数每个会话只使用一次

5.3 不重数(Nonce)与 ap4.0

不重数(nonce):在一个协议的生存期中只使用一次的数。一旦使用,永不重用。

  ap4.0 协议流程:

    Alice                           Bob
      │                               │
      │  (1) "我是 Alice"              │
      │──────────────────────────────→│
      │                               │
      │  (2) 不重数 R                   │  Bob 选择不重数 R
      │←──────────────────────────────│
      │                               │
      │  (3) K_A-B(R)                  │  Alice 用共享密钥加密不重数
      │──────────────────────────────→│
      │                               │
      │                          Bob 解密:若解密结果 = R
      │                          则鉴别 Alice 成功:
      │                          ① Alice 知道密钥 K_A-B(验证身份)
      │                          ② Alice 刚加密了新生成的不重数(验证活性)
      │                               │

ap4.0 建立了两点验证:

  1. 身份:Alice 知道加密 R 所需的秘密密钥 K_A-B
  2. 活性:Alice 加密的是 Bob 刚刚产生的新不重数 R(非重放旧报文)

类比:TCP 三次握手使用初始序号解决类似问题 — 服务器选择初始序号发给客户,等待客户以该序号响应来确认客户"活跃且真实"。


六、8.5 安全电子邮件

6.1 为什么需要多层安全?

         应用层 ──── PGP (安全电子邮件)
           ↓
         运输层 ──── TLS (使 TCP 连接安全)
           ↓
         网络层 ──── IPsec (网络层"地毯式覆盖"安全)
           ↓
         链路层 ──── WPA2/4G-AKA (无线链路安全)

为什么不在仅一层(如网络层)提供安全?

  1. 网络层安全不能提供用户级安全(例如商业站点不能仅依赖 IP 层安全来鉴别购买顾客)
  2. 在较高层部署新服务更容易(只需要修改客户/服务器代码,无需等待全网部署)
  3. PGP 是第一个在因特网上得到广泛部署的安全技术,仅因为只需客户和服务器代码

6.2 安全电子邮件的渐进式设计

阶段一:仅提供机密性
  Alice 侧:
  ① 选择随机对称会话密钥 K_S
  ② 用 K_S 加密报文 m → K_S(m)
  ③ 用 Bob 的公钥 K_B^+ 加密 K_S → K_B^+(K_S)
  ④ 发送:"包" = K_B^+(K_S) + K_S(m)

  Bob 侧:
  ① 用私钥 K_B^- 解密 → 得到 K_S
  ② 用 K_S 解密 K_S(m) → 得到 m
阶段二:仅提供发送方鉴别和报文完整性
  Alice 侧:
  ① 对报文 m 应用散列函数 H → H(m)
  ② 用私钥 K_A^- 对散列签名 → K_A^-(H(m))
  ③ 发送:(m, K_A^-(H(m)))

  Bob 侧:
  ① 用 Alice 的公钥 K_A^+ 验证签名 → 得到 H(m)
  ② 自己对 m 计算散列 → H'(m)
  ③ 比较 H(m) 与 H'(m):相等即验证通过
阶段三:完整的安全电子邮件(机密性 + 发送方鉴别 + 报文完整性)
┌──────────────────────────────────────────────────────────────────┐
│          完整安全电子邮件:将阶段一和阶段二组合                      │
│                                                                  │
│  Alice 侧:                                                       │
│                                                                  │
│   报文 m ──→ [散列 H] ──→ H(m)                                    │
│                             │                                    │
│                             ↓ K_A^-                               │
│                        数字签名 K_A^-(H(m))                        │
│                             │                                    │
│                             ↓                                    │
│                   "预备包" = (m, 数字签名)                          │
│                             │                                    │
│                ← 将此预备包作为"新报文"对待 ←                       │
│                             │                                    │
│        ① 选 K_S      ② 用 K_S 加密预备包                           │
│        ③ 用 K_B^+ 加密 K_S                                        │
│                             │                                    │
│         发送:"最终包" = K_B^+(K_S) + K_S(预备包)                   │
│                                                                  │
│  Bob 侧:                                                         │
│    ① K_B^-(K_B^+(K_S)) → K_S                                      │
│    ② K_S^{-1}(K_S(预备包)) → 预备包                                │
│    ③ K_A^+(K_A^-(H(m))) = H(m)                                   │
│    ④ 自己计算 H(m),比较 → 验证                                    │
│                                                                  │
│  Alice 使用两次公钥密码:自己的私钥 + Bob 的公钥                      │
│  Bob 使用两次公钥密码:自己的私钥 + Alice 的公钥                      │
└──────────────────────────────────────────────────────────────────┘

6.3 PGP(Pretty Good Privacy)

特性说明
设计者Phil Zimmermann,1991年
大致设计基本上与图8-21的完整设计相同
散列算法MD5 或 SHA
对称加密CAST、三重DES 或 IDEA
公钥加密RSA
密钥生成安装时为用户生成公钥对;公钥可发布到网站或公钥服务器
私钥保护使用用户口令保护,每次访问私钥需输入口令
操作选项可选择仅签名、仅加密、或同时签名和加密
公钥认证可信Web(Web of Trust)—— 用户互相签署彼此的密钥(非传统CA模型);通过密钥签署方(key-signing party)互相验证

七、8.6 使 TCP 连接安全:TLS

7.1 TLS 概述

属性说明
全称Transport Layer Security
前身SSL(Secure Sockets Layer)版本 3,由 Netscape 设计
标准化IETF [RFC 4346]
层次定位技术上位于应用层,但从开发者角度看是一个增强 TCP 安全性的运输层协议
保护对象TCP 连接,因此能应用于运行在 TCP 之上的任何应用程序
部署范围所有流行浏览器和 Web 服务器;Gmail;Amazon、eBay、淘宝等电子商务
API提供类似于 TCP 套接字的简单 API

7.2 电子商务场景中的安全需求

  Bob 在 Alice 的香水网站下单:

  ┌────────────────────────────────────────────────────────┐
  │  无机密性 → Trudy 截获信用卡号 → 盗刷                    │
  │  无完整性 → Trudy 修改订单量 → Bob 买了 10 倍的香水       │
  │  无服务器鉴别 → Trudy 冒充 Alice 的站点 → 骗钱/身份盗贼  │
  └────────────────────────────────────────────────────────┘

  TLS 通过提供:机密性 + 数据完整性 + 服务器鉴别 + 客户鉴别
  → 解决以上所有问题

7.3 TLS 的三个阶段(简化版——类TLS)

┌────────────────────────────────────────────────────────────────┐
│                    TLS 的三个阶段                                │
│                                                                │
│  第一阶段:握手 (Handshake)                                     │
│  ┌──────────────────────────────────────────────────────────┐ │
│  │ ① 创建 TCP 连接                                          │ │
│  │ ② Bob → hello → Alice                                   │ │
│  │ ③ Alice → 证书(含公钥) → Bob                              │ │
│  │ ④ Bob 验证证书,生成主密钥 MS                             │ │
│  │ ⑤ Bob → EMS = K_A^+(MS) → Alice                         │ │
│  │ ⑥ Alice 用私钥解密得到 MS                                 │ │
│  │ 此时仅 Bob 和 Alice 知道 MS                               │ │
│  └──────────────────────────────────────────────────────────┘ │
│                           ↓                                    │
│  第二阶段:密钥导出 (Key Derivation)                             │
│  ┌──────────────────────────────────────────────────────────┐ │
│  │ 从 MS 生成 4 个密钥:                                     │ │
│  │   E_B: Bob→Alice 的会话加密密钥                           │ │
│  │   M_B: Bob→Alice 的会话 HMAC 密钥                        │ │
│  │   E_A: Alice→Bob 的会话加密密钥                           │ │
│  │   M_A: Alice→Bob 的会话 HMAC 密钥                        │ │
│  └──────────────────────────────────────────────────────────┘ │
│                           ↓                                    │
│  第三阶段:数据传输 (Data Transfer)                              │
│  ┌──────────────────────────────────────────────────────────┐ │
│  │ 将 TCP 字节流分割为"记录"                                 │ │
│  │ 每条记录 = 数据 + HMAC(数据+M_B+序号) → 用 E_B 加密      │ │
│  │ 序号计数器防御重排序、重放、删除攻击                        │ │
│  └──────────────────────────────────────────────────────────┘ │
└────────────────────────────────────────────────────────────────┘

7.4 TLS 记录格式

  ┌──────────┬──────────┬──────────┬─────────────┬──────────┐
  │  类型     │  版本    │  长度    │    数据      │  HMAC    │
  │ (1字节)   │ (2字节)  │ (2字节)  │  (可变)      │          │
  ├──────────┴──────────┴──────────┴─────────────┴──────────┤
  │  ← 明文(不加密) →   │  ← 用 E_B 加密 →                 │
  └────────────────────────────────────────────────────────┘
  • 类型:握手报文 / 应用数据 / 关闭 TLS 连接
  • 版本:自解释
  • 长度:用于从 TCP 字节流中提取 TLS 记录
  • 数据 + HMAC:加密传输

7.5 序号防御中间人攻击

问题:Trudy 作为中间人,可颠倒 TCP 报文段次序、删除或重放报文段。TCP 序号未被加密,Trudy 可调整它们。

TLS 序号防御:

  • Bob 维护序号计数器,从 0 开始,每发一条 TLS 记录递增 1
  • 序号不实际包含在记录中,但包含在 HMAC 的计算中
  • HMAC = Hash(数据 + M_B + 序号)
  • Alice 跟踪 Bob 的序号,验证 HMAC 时使用正确的序号
  • 如果序号不匹配 → HMAC 验证失败 → 检测到篡改

7.6 TLS 1.3 完整握手协议(8.6.2节)

┌──────────────────────────────────────────────────────────────────┐
│                    TLS 完整握手协议                                │
│                                                                  │
│  Client (Bob)                            Server (Alice)          │
│     │                                        │                   │
│     │ (1) 支持的密码算法列表 + 客户不重数        │                   │
│     │─────────────────────────────────────→│                   │
│     │                                        │                   │
│     │ (2) 选择的算法 + 证书 + 服务器不重数      │                   │
│     │←─────────────────────────────────────│                   │
│     │                                        │                   │
│     │ (3) 验证证书,提取公钥                   │                   │
│     │   生成 PMS (Pre-Master Secret)         │                   │
│     │   发送: K_A^+(PMS)                      │                   │
│     │─────────────────────────────────────→│                   │
│     │                                        │                   │
│     │ (4) 双方独立计算:                        │                   │
│     │   MS = 密钥导出函数(PMS, 两个不重数)      │                   │
│     │   然后从 MS 切片生成:                    │                   │
│     │   E_B, M_B, E_A, M_A, IV_B, IV_A      │                   │
│     │                                        │                   │
│     │ (5) 所有握手报文的 HMAC                 │                   │
│     │─────────────────────────────────────→│                   │
│     │                                        │                   │
│     │ (6) 所有握手报文的 HMAC                 │                   │
│     │←─────────────────────────────────────│                   │
│     │                                        │                   │
│     │ 此后:所有报文均加密和鉴别(使用 HMAC)     │                   │
│                                                                  │
└──────────────────────────────────────────────────────────────────┘

步骤 5-6 的意义:防御握手篡改攻击

  • 步骤 1 中算法列表以明文发送(因为加密算法尚未协商)
  • Trudy 作为中间人可删除强算法,迫使客户选择弱算法
  • 步骤 5 中客户发送所有已收发握手报文的 HMAC,服务器可检测不一致
  • 步骤 6 同理,客户可检测服务器侧的不一致

不重数的双重防御作用:

防御目标防御机制
连接重放攻击(Trudy 第二天重放整个序列)不重数:每个 TCP 会话不同的不重数 → 加密密钥不同 → 重放无法通过完整性检查
会话内个别分组重放(重排序/删除/重放)TLS 序号计数器:序号包含在 HMAC 中 → 不匹配则检测

7.7 连接关闭与截断攻击防御

截断攻击(truncation attack):Trudy 在 TLS 会话中途发送 TCP FIN,使 Alice 误以为收到了全部数据。

防御:TLS 记录的类型字段指示"关闭 TLS 会话"。如果 Alice 在收到关闭 TLS 记录之前收到 TCP FIN,她知道有异常发生。


八、8.7 网络层安全性:IPsec 和虚拟专用网

8.1 IPsec 提供的安全服务

  ┌───────────────────────────────────────────────────────────────┐
  │                IPsec 的网络层"地毯式覆盖"                        │
  │                                                               │
  │  网络实体对之间(路由器-路由器、主机-主机、路由器-主机)           │
  │  所有数据报的载荷均被加密,包括:                                 │
  │    TCP 报文段、UDP 报文段、ICMP 报文、管理报文(SNMP等)            │
  │                                                               │
  │  IPsec 服务的四大支柱:                                         │
  │  ① 机密性 (Confidentiality)     → 载荷加密                     │
  │  ② 源鉴别 (Source Authentication)→ 验证安全数据报源              │
  │  ③ 数据完整性 (Data Integrity)  → HMAC 验证                    │
  │  ④ 防重放攻击 (Anti-Replay)     → 序号字段                      │
  └───────────────────────────────────────────────────────────────┘

8.2 VPN(虚拟专用网)

                         公共因特网
  ┌──────────┐        ╔══════════════╗        ┌──────────┐
  │  总部     │        ║  IPsec隧道   ║        │ 分支机构  │
  │ 172.16.1/24│  ═════╣══════════════╣══════  │ 172.16.2/24│
  │          │  加密进入  ║  加密的数据报  ║  解密出  │          │
  └──────────┘        ╚══════════════╝        └──────────┘
         ↑                                        ↑
    网关路由器                                网关路由器
  200.168.1.100                            193.68.2.23
                            ↕
                    销售员便携机
  • 专用网络:与公共因特网完全分离的物理网络(昂贵)
  • VPN:在公共因特网上通过 IPsec 加密创建的逻辑上的专用网络
  • 机构内部流量使用经典 IPv4,跨越公共因特网的流量经 IPsec 加密

8.3 AH 和 ESP 协议

协议全称提供的服务
AHAuthentication Header(鉴别首部)源鉴别 + 数据完整性,不提供机密性
ESPEncapsulation Security Payload(封装安全性载荷)源鉴别 + 数据完整性 + 机密性

ESP 使用更广泛,因为机密性对 VPN 至关重要。

8.4 安全关联 SA(Security Association)

SA 是网络层的一个单工(单向)逻辑连接。

  安全关联 SA 的状态信息:

  ┌─────────────────────────────────────────┐
  │  SPI(安全参数索引):32比特SA标识符       │
  │  源接口 IP 地址                          │
  │  目的接口 IP 地址                        │
  │  加密类型(如具有CBC的3DES)              │
  │  加密密钥                               │
  │  完整性检查类型(如具有MD5的HMAC)         │
  │  鉴别密钥                               │
  └─────────────────────────────────────────┘

SA 存储位置:安全关联数据库 SAD(Security Association Database)

安全策略库 SPD(Security Policy Database):指示哪些数据报需要 IPsec 处理(“做什么”),以及应使用哪个 SA(SAD 指示"怎么做")。

SA 计数示例:总部(1) + 分支机构(1) + n 个销售员 = 需要 (2 + 2n) 个 SA(每个双向通信需要 2 个单工 SA)。

8.5 IPsec 数据报结构(ESP 隧道模式)

┌─────────────────────────────────────────────────────────────────────┐
│                    IPsec 数据报构造(隧道模式)                         │
│                                                                     │
│  初始 IPv4 数据报:                                                   │
│  ┌──────────────────────────────────────┐                           │
│  │ 初始IP首部 │      载荷数据            │  源: 172.16.1.17          │
│  │(20字节)   │                          │  目的: 172.16.2.48        │
│  └───────────┴──────────────────────────┘                           │
│       │                                                             │
│       ▼ 附加 ESP 尾部                                                │
│  ┌──────────────────────────────────────┬──────────┐               │
│  │ 初始IP首部 │      载荷数据            │ ESP尾部   │  ESP尾部:      │
│  │            │                        │填充/长度/ │  填充+填充长度  │
│  │            │                        │下一首部   │  +下一首部      │
│  └──────────────────────────────────────┴──────────┘               │
│       │                                                             │
│       ▼ 加密(用 SA 规定的算法和密钥)                                  │
│  ┌────────────────────────────────────────────────────────────────┐ │
│  │                  加密的单元(ciphertext)                        │ │
│  └────────────────────────────────────────────────────────────────┘ │
│       │                                                             │
│       ▼ 附加 ESP 首部(明文)                                         │
│  ┌───────────────┬────────────────────────────────────────────────┐ │
│  │   ESP首部      │              加密的单元                         │ │
│  │ SPI + 序号    │                                                │ │
│  └───────────────┴────────────────────────────────────────────────┘ │
│       │                                                             │
│       ▼ 计算 MAC(跨整个 enchilada)→ 附加 ESP MAC                    │
│  ┌───────────────┬────────────────────────────────┬──────────────┐ │
│  │   ESP首部      │           加密的单元            │   ESP MAC    │ │
│  │ (SPI+序号)    │                                 │ (鉴别)       │ │
│  └───────────────┴────────────────────────────────┴──────────────┘ │
│       │                                                             │
│       ▼ 附加新 IP 首部                                               │
│  ┌────────────────────────────────────────────────────────────────┐ │
│  │ 新IP首部(20B)│ ESP首部 │    加密的单元      │ ESP MAC │         │ │
│  │ 源:200.168.1.100                           │         │         │ │
│  │ 目的:193.68.2.23                           │         │         │ │
│  │ 协议号:50(=ESP)                            │         │         │ │
│  └────────────────────────────────────────────────────────────────┘ │
│                                                                     │
│  "enchilada" = ESP首部 + 初始IP数据报(加密) + ESP尾部(加密)          │
└─────────────────────────────────────────────────────────────────────┘

关键字段说明:

字段作用
新 IP 首部源/目的 = 隧道端点路由器接口地址;协议号 = 50 (ESP)
ESP 首部 - SPI告知接收方该数据报属于哪个 SA
ESP 首部 - 序号防御重放攻击
初始 IP 数据报被加密,包含真正的源/目的 IP 地址和上层协议数据
ESP 尾部 - 填充使加密单元为块长度的整数倍
ESP 尾部 - 填充长度指示填充量
ESP 尾部 - 下一首部指示载荷数据类型
ESP MAC覆盖整个 enchilada 的完整性验证码

8.6 IPsec 安全服务总结(从 Trudy 视角)

Trudy 的企图结果原因
查看初始数据报内容失败加密;连协议号、源/目的 IP 也隐藏了
篡改数据报比特失败完整性检查(HMAC)失败
假冒 R1 发送 IPsec 数据报失败HMAC 验证失败(不知鉴别密钥)
重放攻击失败序号机制防御

8.7 IKE(Internet Key Exchange)

定位:IPsec 的自动密钥管理协议 [RFC 5996]

大型 VPN 的需求:成百上千台 IPsec 路由器/主机,人工键入 SA 信息不切实际

IKE 两阶段:

  阶段一(创建双向 IKE SA):
  ┌────────────────────────────────────────────────┐
  │  第一次交换: 使用 Diffie-Hellman 生成:           │
  │    - 双向 IKE SA(鉴别的+加密的信道)             │
  │    - IKE SA 的加密/鉴别密钥                      │
  │    - 主密钥(用于阶段二)                        │
  │    注意: 此阶段不使用 RSA 公钥/私钥               │
  │                                                │
  │  第二次交换: 通过安全 IKE SA 信道:               │
  │    - 对报文签名以透露身份(但嗅探者看不到)        │
  │    - 协商 IPsec SA 使用的加密/鉴别算法           │
  └────────────────────────────────────────────────┘
           ↓
  阶段二(为每个方向创建 SA):
  ┌────────────────────────────────────────────────┐
  │  生成每个方向的 SA 的加密/鉴别会话密钥            │
  │  不涉及任何公钥密码 → 计算成本低                  │
  │  可以生成大量 SA                                │
  └────────────────────────────────────────────────┘

两个阶段的动机:计算成本 — 阶段二不涉及公钥密码,可低成本生成大量 SA。


九、8.8 实现安全的无线局域网和 4G/5G 蜂窝网络

9.1 无线安全的两个核心问题

问题说明
相互鉴别网络鉴别移动设备 + 移动设备鉴别网络(防流氓基站)
加密对称密钥加密无线链路上的帧数据(高速要求)

WEP → WPA1 → WPA2 → WPA3 的演进:

标准年份关键特性
WEP最初有线等效隐私;严重安全缺陷(公开软件可破解)
WPA12003报文完整性检查;避免密钥推断攻击
WPA2后续强制使用 AES 对称密钥加密
WPA32018.6防止四次握手中不重数重用攻击;更长密钥

9.2 802.11 安全的四个阶段

┌─────────────────────────────────────────────────────────────────────┐
│              802.11 安全(WPA2)的四个阶段                             │
│                                                                     │
│  移动设备(M)              接入点(AP)               鉴别服务器(AS)     │
│     │                        │                        │            │
│     │  ① 发现 (Discovery)     │                        │            │
│     │  AP 宣布支持的鉴别/加密形式│                       │            │
│     │←──────────────────────→│                        │            │
│     │                        │                        │            │
│     │  ② 相互鉴别 + 共享对称会话密钥推导(四次握手核心)  │            │
│     │←──────────────────────────────────────────────→│            │
│     │        (AP 作为直通设备中继EAP报文)               │            │
│     │                        │                        │            │
│     │  ③ 对称会话密钥分发     │                        │            │
│     │                        │← K_M-AP ──────────────│            │
│     │                        │                        │            │
│     │  ④ 加密通信              │                        │            │
│     │←── AES 加密的帧 ──────→│                        │            │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

9.3 WPA2 四次握手

┌─────────────────────────────────────────────────────────────────┐
│                 WPA2 四次握手(简化版)                           │
│                                                                 │
│  移动设备(M)                         鉴别服务器(AS)              │
│  已知: K_AS-M (共享密钥)              已知: K_AS-M              │
│     │                                    │                     │
│     │  (a) Nonce_AS                       │                     │
│     │←───────────────────────────────────│                     │
│     │                                    │                     │
│     │  (b) Nonce_M + HMAC(Nonce_AS, K_AS-M)                    │
│     │───────────────────────────────────→│                     │
│     │                                    │                     │
│     │  双方各自计算:                       │                     │
│     │  K_M-AP = f(Nonce_AS, Nonce_M,     │                     │
│     │             K_AS-M, MAC_M, MAC_AS) │                     │
│     │                                    │                     │
│     │  (c)(d) 用于群体通信的第二个密钥推导  │                     │
│     │←─────────── ... ─────────────────→│                     │
│                                                                 │
│  关键点:                                                        │
│  - 步骤 a-b 完成相互鉴别和对称会话密钥推导                        │
│  - AS 通过验证 HMAC 签名确认 M 知道 K_AS-M(M 被鉴别)            │
│  - M 看到 Nonce_AS 的 HMAC 签名版知道 AS 是活的(AS 被鉴别)       │
│  - K_M-AP 用于之后 M 和 AP 之间的 AES 加密/解密                  │
└─────────────────────────────────────────────────────────────────┘

9.4 EAP 和 RADIUS 协议栈

  ┌──────────┐                                   ┌──────────┐
  │ 移动设备  │                                   │ 鉴别服务器 │
  │   (M)    │                                   │   (AS)   │
  └────┬─────┘                                   └────┬─────┘
       │                                              │
       │  EAP (端到端协议)                              │
       │  ┌──────────────────────────────────────────┐ │
       │  │           EAP over LAN (EAPoL)            │ │
       │  │  802.11无线链路                           │ │
       │  └──────────────┬───────────────────────────┘ │
       │                 │                              │
       │            ┌────┴─────┐                        │
       │            │  接入点AP │                        │
       │            │(解封装后 │                        │
       │            │ 重新封装)│                        │
       │            └────┬─────┘                        │
       │                 │                              │
       │                 │  RADIUS over UDP/IP           │
       │                 └──────────────────────────────┤
       │                                                │
  EAP: 定义端到端请求/响应报文格式
  EAPoL: EAP over LAN — 在无线链路上封装EAP
  RADIUS: 在AP和AS之间通过UDP/IP传输鉴别报文
  DIAMETER: RADIUS的预期继任者

9.5 4G/5G 蜂窝网络的鉴别和密钥协商(AKA)

架构组件
组件全称作用
MMobile Device移动设备
BSBase Station基站
MMEMobility Management Entity移动性管理实体(在被访网络中)
HSSHome Subscriber Server归属用户服务器(在归属网络中)
4G AKA 协议
┌─────────────────────────────────────────────────────────────────────┐
│                    4G AKA 鉴别和密钥协商                              │
│                                                                     │
│  M                              MME                      HSS        │
│  (已知K_HSS-M)                  (被访网络)               (归属网络,   │
│   │                              │                      已知K_HSS-M) │
│   │  (a) 连接请求(含IMSI)         │                      │           │
│   │─────────────────────────────→│  请求(IMSI+VN信息)    │           │
│   │                              │─────────────────────→│           │
│   │                              │                      │           │
│   │                              │  (b) 鉴别响应          │           │
│   │                              │  auth_token + xres_HSS│          │
│   │                              │←─────────────────────│           │
│   │                              │                      │           │
│   │  (b) auth_token              │  MME 保留 xres_HSS   │           │
│   │←─────────────────────────────│  供后续比较使用        │           │
│   │                              │                      │           │
│   │  M 解密 auth_token:          │                      │           │
│   │  K_HSS-M(K_HSS-M(IMSI))=IMSI │                      │           │
│   │  → 验证 HSS 知道密钥 → HSS被鉴别                      │           │
│   │                              │                      │           │
│   │  (c) res_M                   │                      │           │
│   │─────────────────────────────→│                      │           │
│   │                              │                      │           │
│   │                    (d) MME 比较 res_M 与 xres_HSS    │           │
│   │                        若相等 → M 被鉴别             │           │
│   │                              │                      │           │
│   │  (e) 密钥推导                 │                      │           │
│   │  K_BS-M 用于加密无线帧        │                      │           │
│   │  (数据平面和控制平面不同密钥)   │                      │           │
│   │←─────────────────────────────→│                      │           │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘
5G 安全的关键变化
变化说明
鉴别决策权归属网络接受鉴别(而非被访网络的 MME);被访网络可拒绝但不可接受
新协议支持 AKA’(类似4G AKA但采用 EAP 报文流)和面向物联网的新协议(无需预共享密钥)
IMSI 保护使用公钥加密技术加密设备的永久身份(IMSI),永不以明文传输

十、8.9 运行安全性:防火墙和入侵检测系统

10.1 防火墙的三个目标

┌──────────────────────────────────────────────────────────────────┐
│                    防火墙(Firewall)                              │
│                                                                  │
│  硬件 + 软件,将机构内部网络与整个因特网隔离开                         │
│                                                                  │
│  ┌────────────────────────────────────────────────────────────┐  │
│  │ 目标1: 所有进出流量都通过防火墙(单一接入点便于管理)         │  │
│  │ 目标2: 仅被授权的流量允许通过(由本地安全策略定义)            │  │
│  │ 目标3: 防火墙自身免于渗透(自身不安全 = 提供安全假象)        │  │
│  └────────────────────────────────────────────────────────────┘  │
│                                                                  │
│  主流厂商: Cisco、Check Point                                      │
│  开源实现: Linux iptables                                         │
│  现代趋势: 在路由器中实现 + SDN 远程控制                            │
└──────────────────────────────────────────────────────────────────┘

10.2 三种防火墙对比

维度传统分组过滤器状态分组过滤器应用程序网关
检查层级IP/TCP/UDP 首部IP/TCP/UDP 首部 + 连接状态首部 + 应用层数据
决策依据地址、端口、协议、标志位首部字段 + 连接表首部字段 + 用户身份 + 应用内容
每分组独立是,孤立检查每个数据报否,跟踪TCP连接状态否,理解应用协议
核心数据结构访问控制列表(ACL)ACL + 连接表应用程序特定逻辑
粒度粗粒度中等粒度细粒度(用户级)
典型过滤规则阻挡外部发起的TCP连接(ACK=0的入分组)允许已建立连接的相关分组通过要求用户先鉴别,再中继到外部主机
优点简单、快速防御异常分组攻击用户级鉴别、深度检查
缺点无法关联连接状态不能检查应用内容每个应用需独立网关;性能负担重;客户需知道如何联系网关
可防御基本访问控制非连接中的异常分组应用层攻击
传统分组过滤器的过滤因素
  • IP 源/目的地址
  • IP 协议类型字段(TCP/UDP/ICMP/OSPF)
  • TCP/UDP 源和目的端口
  • TCP 标志比特(SYN、ACK 等)
  • ICMP 报文类型
  • 进出方向的不同规则
  • 不同路由器接口的不同规则
状态过滤器的连接表
  连接表跟踪所有进行中的 TCP 连接:

  ┌──────────────┬──────────────┬────────┬────────┐
  │  源地址       │  目的地址     │ 源端口  │ 目的端口│
  ├──────────────┼──────────────┼────────┼────────┤
  │ 222.22.1.7   │ 37.96.87.123 │ 12699  │ 80     │
  │ 222.22.93.2  │ 199.1.205.23 │ 37654  │ 80     │
  │ 222.22.65.143│ 203.77.240.43│ 48712  │ 80     │
  └──────────────┴──────────────┴────────┴────────┘

  连接跟踪方式:
  - 观察三次握手(SYN→SYNACK→ACK)识别新连接
  - 观察 FIN 分组识别连接结束
  - 约60秒无活动后保守假设连接已结束

10.3 IDS/IPS 系统

系统全称行为
IDSIntrusion Detection System(入侵检测系统)检测可疑流量 → 产生告警
IPSIntrusion Prevention System(入侵防止系统)检测可疑流量 → 滤除分组

核心能力:深度分组检查(Deep Packet Inspection)— 不仅检查首部,而且深入检查分组携带的实际应用数据。

检测的攻击类型:网络映射(nmap)、端口扫描、TCP栈扫描、DoS带宽洪泛攻击、蠕虫和病毒、操作系统脆弱性攻击、应用程序脆弱性攻击。

基于特征 vs 基于异常的 IDS
维度基于特征的 IDS基于异常的 IDS
工作原理维护攻击特征数据库,匹配过往分组与特征建立正常流量概况文件,寻找统计异常的流量
特征来源安全工程师研究已知攻击生成自动学习
优点对已知攻击检测准确不依赖已有攻击知识,可检测新攻击
缺点1无法检测新攻击(无特征则无检测)区分正常和统计异常极具挑战
缺点2可能产生虚假告警(匹配非攻击)准确度难以保证
缺点3大特征集 → 处理过载—
部署现状大多数部署的 IDS 主要基于特征某些 IDS 包含部分基于异常的特性
Snort
属性说明
类型公共域开源 IDS
部署量数十万
平台Linux、UNIX、Windows
嗅探接口libpcap(与 Wireshark 相同)
性能100Mbps 轻松处理;Gbps 需多传感器

Snort 特征示例:

alert icmp $EXTERNAL_NET any -> $HOME_NET any
(msg:"ICMP PING NMAP"; dsize: 0; itype: 8;)
  • 匹配:从外部进入机构网络的 ICMP 分组
  • 条件:类型=8(ICMP ping) 且 空负载(dsize=0)
  • 用途:检测 nmap 的 ping 扫描
  • 特征语法允许网络管理员定制和创建新特征

最大优势:庞大的用户社区和安全专家群体。新攻击出现后几小时内即可编写并分发攻击特征,供全球数十万部署下载。

10.4 网络部署架构(DMZ)

                        公共因特网
                            │
                     ┌──────┴──────┐
                     │  分组过滤器  │
                     └──────┬──────┘
                            │
              ┌─────────────┼─────────────┐
              │             │             │
         ┌────┴────┐   ┌───┴────┐   ┌────┴────┐
         │ DMZ     │   │应用程序  │   │ 高度安全 │
         │ (非军事区)│   │ 网关    │   │  区域   │
         ├─────────┤   └───┬────┘   └────┬────┘
         │ Web服务器│       │            │
         │ DNS服务器│       └────────────┘
         └─────────┘
              │
         IDS传感器      IDS传感器      IDS传感器
                             ↘↓↙
                      中心 IDS 处理器
                             ↓
                       网络管理员告警

十一、核心公式速查

公式含义位置
K_B-(K_B+(m)) = m公钥加密后私钥解密恢复明文8.2.2节
K_B+(K_B-(m)) = m私钥签名后公钥验证恢复明文(数字签名基础)8.2.2节
c = m^e mod nRSA 加密8.2.2节
m = c^d mod nRSA 解密8.2.2节
n = p × qRSA 模数8.2.2节
z = (p-1)(q-1)RSA 欧拉函数值8.2.2节
ed mod z = 1RSA 公私钥数学关系8.2.2节
K_B^+ = (n, e)RSA 公钥8.2.2节
K_B^- = (n, d)RSA 私钥8.2.2节
c(i) = K_S(m(i) ⊕ c(i-1))CBC 加密(c(0) = IV)8.2.1节
m(i) = K_S^{-1}(c(i)) ⊕ c(i-1)CBC 解密8.2.1节
MAC = H(m + s)报文鉴别码(s 为共享鉴别密钥)8.3.2节
数字签名 = K_B^-(H(m))数字签名(对散列签名而非对报文)8.3.3节
(a mod n)^d mod n = a^d mod n模算术恒等式(RSA 原理的基础)8.2.2节
m^ed mod n = mRSA 加密再解密恢复原报文8.2.2节

十二、核心概念词汇表

术语英文定义
明文plaintext / cleartext报文的最初形式,可被理解
密文ciphertext加密后的报文,对入侵者不可理解
加密encryption使用密钥和算法将明文转换为密文
解密decryption使用密钥和算法将密文恢复为明文
对称密钥密码symmetric key cryptography通信双方共享同一个秘密密钥
公开密钥密码public key cryptography使用公钥/私钥对;公钥公开,私钥保密
块密码block cipher将报文分为 k 比特块独立加密
DESData Encryption Standard64比特块,56比特密钥的对称块密码
AESAdvanced Encryption Standard128比特块,128/192/256比特密钥
CBCCipher Block Chaining密码块链接;使用 IV 和前一块密文异或
IVInitialization Vector初始向量;CBC 中第一个随机 k 比特串
RSARSA algorithm (Rivest-Shamir-Adleman)基于大数因数分解困难性的公钥密码算法
会话密钥session key用于一次会话的对称密钥
Diffie-HellmanDiffie-Hellman key exchange允许双方通过公开信道协商共享密钥
密码散列函数cryptographic hash function生成报文固定长度"指纹",且碰撞在计算上不可行
MD5Message Digest 5128 比特散列算法(Ron Rivest)
SHA-1Secure Hash Algorithm 1160 比特散列算法(美国联邦标准)
报文鉴别码MAC (Message Authentication Code)H(m+s);使用共享秘密 s 保证报文完整性
HMACHash-based MAC基于散列的 MAC 标准(数据+密钥经散列两次)
数字签名digital signature用私钥对报文散列加密,提供可鉴别性和不可伪造性
公钥认证public key certification由 CA 证明公钥属于特定实体
认证中心CA (Certification Authority)验证身份并签发证书的机构
证书certificateCA 签名的将身份与公钥绑定的文档
X.509X.509ITU 的认证服务标准
端点鉴别end-point authentication一个实体经网络向另一个实体证明其身份
不重数nonce在协议生存期中只使用一次的数(防重放)
回放攻击playback attack记录并重放合法报文以冒充某实体
PGPPretty Good Privacy安全电子邮件加密方案(Phil Zimmermann, 1991)
可信WebWeb of TrustPGP 的公钥认证机制(用户互相签署密钥)
TLSTransport Layer Security运输层安全协议(前身 SSL)
SSLSecure Sockets LayerTLS 的前身(Netscape 设计)
主密钥MS (Master Secret)TLS 握手中生成的共享密钥,用于导出会话密钥
前主密钥PMS (Pre-Master Secret)TLS 握手过程中生成主密钥之前的密钥材料
截断攻击truncation attack过早终止 TLS 会话的中间人攻击
连接重放攻击connection replay attack第二天重放整个 TLS 报文序列
IPsecIP Security网络层安全协议族
AHAuthentication HeaderIPsec 协议之一:提供源鉴别+完整性(不提供机密性)
ESPEncapsulation Security PayloadIPsec 协议之一:提供机密性+源鉴别+完整性(使用更广)
SASecurity Association安全关联;网络层单工逻辑连接
SPISecurity Parameter Index安全参数索引;32 比特 SA 标识符
SADSecurity Association Database安全关联数据库;存储所有 SA 状态信息
SPDSecurity Policy Database安全策略库;指示哪些数据报需 IPsec 处理
VPNVirtual Private Network虚拟专用网;通过 IPsec 在公共因特网上创建
IKEInternet Key Exchange因特网密钥交换协议;IPsec 自动密钥管理
enchiladaenchiladaESP 的加密/鉴别单元(首部+加密数据+尾部)
WEPWired Equivalent Privacy最初的 802.11 安全规范(已废弃,存在严重缺陷)
WPA/WPA2/WPA3WiFi Protected AccessWiFi 联盟的安全标准演进
EAPExtensible Authentication Protocol可扩展鉴别协议;端到端请求/响应模式
EAPoLEAP over LAN无线链路上封装 EAP 报文
RADIUSRemote Authentication Dial-In User ServiceAP 和鉴别服务器之间的鉴别传输协议
4G/5G AKAAuthentication and Key Agreement4G/5G 网络中的鉴别和密钥协商协议
HSSHome Subscriber Server归属用户服务器(存储用户密钥和鉴别数据)
MMEMobility Management Entity移动性管理实体
IMSIInternational Mobile Subscriber Identity国际移动用户身份标识
防火墙firewall隔离机构内网与因特网的硬件/软件结合体
传统分组过滤器traditional packet filter基于首部字段孤立检查每个数据报
状态分组过滤器stateful packet filter跟踪 TCP 连接的防火墙
应用程序网关application gateway基于应用数据做策略决定的防火墙
ACLAccess Control List访问控制列表
DMZDeMilitarized Zone非军事区;较低安全区域(放置公共服务器)
IDSIntrusion Detection System入侵检测系统(告警但不阻断)
IPSIntrusion Prevention System入侵防止系统(检测并阻断)
深度分组检查deep packet inspection不仅检查首部,还深入检查应用数据
基于特征的 IDSsignature-based IDS匹配攻击特征数据库
基于异常的 IDSanomaly-based IDS寻找统计上不寻常的分组流
SnortSnort最流行的公共域开源 IDS
唯密文攻击ciphertext-only attack仅知密文的攻击方式
已知明文攻击known-plaintext attack已知部分(明文,密文)匹配的攻击
选择明文攻击chosen-plaintext attack可选择明文并获得其密文的攻击

十三、对比表格汇总

13.1 对称密钥 vs 公开密钥密码

维度对称密钥密码公开密钥密码
密钥数量1 个共享秘密密钥2 个(公钥 + 私钥)
密钥分发困难:需预先安全地共享密钥容易:公钥可公开发布
加密速度快(块密码操作)慢(大数指数运算)
核心算法DES、AES、3DESRSA、Diffie-Hellman
主要用途加密大量数据分发会话密钥、数字签名、鉴别
需对称密钥参与?—是(通常用于分发对称会话密钥)
典型应用PGP中的数据加密、TLS记录加密、IPsec载荷加密、WPA2帧加密PGP中K_S的加密分发、TLS中PMS的加密、数字签名

13.2 MAC vs 数字签名

维度MAC(报文鉴别码)数字签名
生成方式H(m + s);s 为共享鉴别密钥K_B^-(H(m));使用发方私钥
是否涉及加密不涉及涉及公钥密码
基础设施需求共享秘密 sPKI(CA 支撑)
可否抵赖可抵赖(双方共享密钥)不可抵赖
计算成本低(仅散列)高(公钥加密运算)
典型应用OSPF、TLS(HMAC)、IPsecPGP、CA证书签名

13.3 鉴别协议演进:ap1.0 → ap4.0

协议鉴别方式致命缺陷Trudy 的攻击安全性
ap1.0声明"我是Alice"无任何验证直接声明"我是Alice"无
ap2.0验证源IP地址IP哄骗构造具有Alice源IP的数据报极低
ap3.0秘密口令(明文)嗅探嗅探明文传输的口令低
ap3.1加密口令回放攻击记录加密口令并重放低(不防回放)
ap4.0不重数 + 对称密钥无(前提:密钥安全)无法突破安全

13.4 AH vs ESP(IPsec)

维度AH(鉴别首部)ESP(封装安全性载荷)
机密性不提供提供
源鉴别提供提供
数据完整性提供提供
防重放提供提供
使用广度较少广泛(机密性对VPN至关重要)

13.5 三种防火墙对比

维度传统分组过滤器状态过滤器应用程序网关
检查的数据IP/TCP/UDP 首部字段首部字段 + 连接状态首部 + 应用层数据
是否独立检查每个分组是否(关联连接状态)否(理解应用协议)
核心机制访问控制列表 ACLACL + 连接表应用程序特定逻辑
粒度粗中细(用户级)
性能高中低(应用数据检查+中继)
主要限制无法关联连接不能检查应用内容每应用需独立网关;客户需知如何联系网关

13.6 基于特征 vs 基于异常的 IDS

维度基于特征的 IDS基于异常的 IDS
检测原理匹配已知攻击特征数据库对比正常流量概况,寻找统计异常
特征来源安全工程师研究已知攻击后编写系统自动学习正常流量
对新攻击的检测不能能(理论上的最大优势)
误报率可能有虚假告警区分正常和统计异常极具挑战
处理负载较大(每条分组与大量特征比较)依算法而定
当前部署占主导部分包含

十四、对称密钥在所有安全协议中的核心地位

                        对称密钥密码(DES / AES / 3DES)

  ┌──────────────┬──────────────┬──────────────┬──────────────┐
  │    PGP       │     TLS      │    IPsec     │  WPA2 / 4G   │
  │  (安全电子邮件) │ (使TCP安全)  │  (网络层安全) │  (无线安全)   │
  ├──────────────┼──────────────┼──────────────┼──────────────┤
  │ K_S 加密邮件  │ E_B/E_A 加密 │ SA会话密钥   │ K_M-AP 加密  │
  │ 报文内容      │ TLS记录      │ 加密载荷     │ 无线帧       │
  │              │              │              │              │
  │ RSA 加密 K_S │ RSA/DH 分发  │ IKE 分发     │ 四次握手推导  │
  │ (公钥分发会话 │ PMS/MS       │ 会话密钥     │ K_M-AP       │
  │  密钥)       │              │              │              │
  └──────────────┴──────────────┴──────────────┴──────────────┘

  共同模式:
  ① 用对称密钥密码加密大量数据(DES/AES,快速)
  ② 用公钥密码或带外方式安全分发/推导该对称密钥(解决密钥分发问题)
  ③ 用 HMAC/MAC 保证数据完整性(基于散列,不依赖加密)
  ④ 用不重数和序号防御重放攻击

十五、全书知识点在安全协议中的体现

密码学基础概念PGPTLSIPsecWPA2/4G AKA
对称密钥加密 (AES/DES)加密邮件内容加密TLS记录加密载荷加密无线帧
公开密钥加密 (RSA)加密会话密钥K_S加密PMSIKE 阶段5G中加密IMSI
Diffie-Hellman—可选IKE 阶段一—
密码散列函数 (MD5/SHA)报文摘要HMACHMACHMAC
数字签名发送方签名———
MAC/HMAC—记录完整性enchilada的MAC四次握手签名
CA/证书Web of Trust (可信Web)服务器证书IKE证书—
会话密钥 K_S加密邮件MS→4个密钥ESP会话密钥K_M-AP / K_BS-M
不重数 (nonce)—防连接重放序号防重放相互鉴别
CBC—可选(含IV)指定加密模式—

更多推荐