一、安全放在哪一层

同一套密码学原语,可以部署在协议栈的任何一层。选择哪一层,决定了保护什么、不保护什么。

代表 保护范围 特点
应用层 PGP、Signal 端到端,连服务器都看不到 最强,但每个应用要自己实现
传输层 TLS 进程到进程的数据 最成功,应用改动小
网络层 IPsec 所有 IP 流量(含 UDP、ICMP) 对应用完全透明,配置复杂
链路层 WPA2/3、MACsec 仅一跳 只保护本地无线/有线段

关键判断

层次越高 → 保护范围越"端到端",但需要每个应用配合
层次越低 → 对应用越透明,但保护范围越有限

⭐ TLS 处在最佳平衡点:它保护完整的端到端应用数据,
   同时应用只需换一个 socket 库

⚠️ 一个重要区分

HTTPS(TLS):  保护你与【服务器】之间的通道
              ⭐ 服务器本身能看到全部明文

Signal(应用层端到端加密): 连服务器都看不到内容
              ⭐ 这是两个完全不同的威胁模型

二、TLS

2.1 位置

   ┌────────────────┐
   │   应用(HTTP)   │
   ├────────────────┤
   │   ⭐ TLS        │   ← 位于应用层与传输层之间
   ├────────────────┤
   │      TCP       │
   └────────────────┘

TLS 向上提供的接口几乎与 socket 相同,这是它能被广泛采用的关键——应用几乎不用改。

2.2 TLS 1.2 握手(4 次往返中的 2 个 RTT)

客户端                                          服务器
   │                                              │
   │─① ClientHello ──────────────────────────────▶│
   │    支持的 TLS 版本、密码套件列表、⭐ 客户端随机数  │
   │                                              │
   │◀─② ServerHello ──────────────────────────────│
   │    选定的版本与密码套件、⭐ 服务器随机数          │
   │◀─③ Certificate(服务器证书链)─────────────────│
   │◀─④ ServerKeyExchange(DH 参数,用于前向保密)───│
   │◀─⑤ ServerHelloDone ──────────────────────────│
   │                                              │
   │  ⭐ 验证证书(见 2.5 节)                       │
   │                                              │
   │─⑥ ClientKeyExchange ────────────────────────▶│
   │─⑦ ChangeCipherSpec ─────────────────────────▶│
   │─⑧ Finished(⭐ 前面所有握手消息的 MAC)─────────▶│
   │                                              │
   │◀─⑨ ChangeCipherSpec ─────────────────────────│
   │◀─⑩ Finished ─────────────────────────────────│
   │                                              │
   │◀══════ 加密的应用数据 ═══════════════════════▶│

Finished 消息的作用(重要考点):它包含此前所有握手消息的 MAC

若中间人篡改了任何一条握手消息(例如把密码套件列表改成只有弱算法)
→ 双方计算出的 Finished 值不一致
→ ⭐ 握手失败
→ 这就是【降级攻击】的防御

2.3 密钥派生

客户端随机数 + 服务器随机数 + 预主密钥
        ↓ ⭐ 密钥派生函数(KDF)
主密钥(Master Secret)
        ↓
四个密钥:
   ⭐ 客户端→服务器 的【加密】密钥
   ⭐ 客户端→服务器 的【MAC】密钥
   ⭐ 服务器→客户端 的【加密】密钥
   ⭐ 服务器→客户端 的【MAC】密钥

为什么要四个不同的密钥?

① 两个方向用不同密钥 → ⭐ 防止把 A→B 的报文【反射】回 A 冒充 B→A
② 加密和 MAC 用不同密钥 → ⭐ 密码学原则:【一个密钥只用于一个目的】

📌 随机数的作用:让每次会话的密钥都不同 → 防重放(第 27 讲的 nonce 思想)。

2.4 TLS 1.3 的三项关键改进 ⭐

TLS 1.2 握手:  ⭐ 2 个 RTT
TLS 1.3 握手:  ⭐ 1 个 RTT(会话恢复时 0 RTT)

改进 1:把密钥交换提前

客户端在 ⭐ 第一条消息 里就【猜测】服务器会选哪个密钥交换算法,
直接把自己的 DH 公开值一起发过去

→ 服务器第一次回复就能完成密钥协商
→ ⭐ 省掉一个完整的 RTT

改进 2:大幅删减密码套件

TLS 1.3 移除了:

❌ RSA 密钥交换(⭐ 因为它没有前向保密)
❌ 静态 Diffie-Hellman
❌ CBC 模式(⭐ 一系列填充攻击的来源:BEAST、Lucky13、POODLE)
❌ RC4、3DES、MD5、SHA-1
❌ 压缩(⭐ CRIME 攻击的来源)
❌ 重协商

⭐ 只保留 AEAD(AES-GCM、ChaCha20-Poly1305)
⭐ 密钥交换只保留【临时】DH(ECDHE)

🎯 TLS 1.3 的设计哲学:不是"增加更多选项",而是"删掉所有不安全的选项"。 历史上大量 TLS 漏洞的根源,是协议提供了太多可选项,而实现和配置总会选错减少选择本身就是一种安全机制。

改进 3:加密更多握手内容

TLS 1.3 从 ServerHello 之后就开始加密,证书本身也被加密——中间设备无法看到你在访问哪个站点的证书。

⚠️ 例外:SNI(Server Name Indication)在标准 TLS 1.3 中仍是明文(因为服务器需要它来选择证书)。ECH(Encrypted Client Hello) 正在解决这个最后的泄露点。

2.5 ⭐ 前向保密(Forward Secrecy)

问题

若用【RSA 密钥交换】:
   客户端用服务器的 RSA 公钥加密预主密钥并发送
   
⚠️ 攻击者可以【今天录下全部加密流量】,
   ⭐ 若干年后拿到服务器的私钥(入侵、法律强制、算法被破)
   → 解密预主密钥 → ⭐ 解密【历史上所有】的会话

解法:临时 Diffie-Hellman(ECDHE)

⭐ 每次会话生成【全新的、临时的】DH 密钥对
⭐ 会话结束后【立即销毁】私钥值

→ 服务器的长期私钥只用于【签名】(证明身份),不用于加密密钥
→ ⭐ 即使长期私钥泄露,也无法解密任何历史会话

前向保密的精确含义长期密钥的泄露,不会危及此前已完成的会话。

📌 TLS 1.3 强制要求前向保密——这正是它删除 RSA 密钥交换的原因。

2.6 证书验证的六个步骤 ⭐

客户端收到服务器证书后必须依次检查:

① ⭐ 签名验证:用颁发者的公钥验证证书上的签名
② ⭐ 信任链:沿链一直验证到一个【预置在系统中的根 CA】
③ ⭐ 有效期:当前时间在 notBefore 与 notAfter 之间
④ ⭐ 域名匹配:证书的 SAN(主体备用名)中包含你要访问的域名
⑤ ⭐ 吊销状态:通过 CRL 或 OCSP 检查证书是否已被吊销
⑥ ⭐ 用途与约束:扩展字段允许该证书用于服务器认证

⚠️ 常见的实现错误

只验证了①②而忘了④ → ⭐ 攻击者用自己合法域名的有效证书就能冒充你的银行
   (这是移动 App 中最常见的 TLS 实现漏洞)

跳过⑤(因为 OCSP 查询慢) → ⭐ 已吊销的证书仍被接受
   缓解方案:OCSP Stapling(服务器主动附上 CA 签名的状态凭据)

📌 证书吊销是 PKI 至今没有完美解决的问题:CRL 太大,OCSP 增加时延且泄露隐私(CA 知道你访问了哪个网站),OCSP Stapling 依赖服务器配合。实践中的妥协是签发短有效期证书(Let’s Encrypt 的 90 天),用"很快过期"代替"及时吊销"

2.7 会话恢复与 0-RTT

完整握手代价高(公钥运算 + RTT)
⭐ 会话恢复:用上次协商出的密钥材料(PSK),跳过公钥运算

TLS 1.3 的 0-RTT:⭐ 客户端在【第一个】分组里就带上应用数据

⚠️ 0-RTT 的安全代价

⭐ 0-RTT 数据【没有重放保护】
攻击者可以录下并重放它

→ 因此【只能用于幂等请求】(第 5 讲的幂等性在这里成为安全约束)
→ 绝不能用于"转账"、"下单"这类操作

📌 这是一个漂亮的呼应:第 5 讲讲 HTTP 方法的幂等性时,它只是一个"能否安全重试"的工程属性;到了这里,它变成了一条硬性的安全边界


三、IPsec 与 VPN

3.1 两个协议

AH(认证首部) ESP(封装安全载荷)
认证与完整性
机密性(加密)
实际使用 极少 几乎全部

⚠️ AH 还有一个致命问题:它对 IP 头部的部分字段做认证,因此无法穿越 NAT(NAT 会改写这些字段,第 18 讲的分层污染)。这是它被淘汰的主要原因。

3.2 两种模式 ⭐

传输模式(Transport Mode)

┌────────┬─────────┬──────┬──────┐
│ 原IP头  │ ESP 头  │ 载荷  │ ESP尾│
└────────┴─────────┴──────┴──────┘
             ⭐ 只加密载荷,原 IP 头暴露

用于:主机到主机的直接安全通信

隧道模式(Tunnel Mode) ⭐:

┌────────┬─────────┬──────────────────┬──────┐
│ 新IP头  │ ESP 头  │ ⭐ 整个原始 IP 数据报│ ESP尾│
└────────┴─────────┴──────────────────┴──────┘
                    ⭐ 连原 IP 头一起加密

用于:⭐ 网关到网关的 VPN(这是 VPN 的实现方式)

隧道模式的关键价值它隐藏了真实的源和目的地址,观察者只能看到两个 VPN 网关在通信,看不到内部的通信关系。

3.3 VPN 的工作方式

分支机构                    公网                     总部
   │                                                  │
[主机]──▶[VPN 网关]═══⭐加密隧道═══▶[VPN 网关]──▶[服务器]
         用新 IP 头封装                 解封装还原

IKE(Internet Key Exchange) 负责自动协商密钥与安全关联(SA)——相当于 IPsec 的"握手"。

3.4 IPsec vs TLS

IPsec TLS
层次 网络层 传输层之上
保护范围 所有 IP 流量(含 UDP、ICMP) 仅该条 TCP 连接
对应用透明 完全透明 需要应用使用 TLS 库
部署 需要修改操作系统/网关配置 应用自己就能启用
典型用途 站点到站点 VPN、远程接入 HTTPS、几乎所有互联网应用

📌 为什么 TLS 赢得了互联网:**因为它不需要网络管理员配合。**一个网站开发者今天就能给自己的站点加上 HTTPS,而部署 IPsec 需要两端的网络管理员协调。这又是"可部署性压倒理论优势"的一个例子。


四、防火墙

防火墙:隔离内部网络与公网,选择性地放行分组。

4.1 三类防火墙

1️⃣ 无状态分组过滤器(Stateless Packet Filter)

逐个分组独立判断,依据:
   源/目的 IP、协议号、源/目的端口、TCP 标志位

例:拒绝所有目的端口 23(Telnet)的入站分组

⚠️ 致命局限:它不记得任何上下文。

要允许内部主机访问外部 Web,必须放行【所有】源端口 80 的入站分组
→ ⭐ 攻击者只要把源端口设成 80,就能扫描内网

2️⃣ 有状态分组过滤器(Stateful)

⭐ 维护一张【连接跟踪表】,记录每条 TCP 连接的状态

规则变成:「只允许属于【内部发起的、已建立的】连接的入站分组」

→ 攻击者伪造的源端口 80 的分组,因为找不到对应的连接表项,被丢弃 ✅

📌 今天所有实用的防火墙都是有状态的。(NAT 天然具有类似的效果,这是第 18 讲说的"副作用式安全"。)

3️⃣ 应用网关(Application Gateway / 代理)

在【应用层】做决策,能理解协议语义

例:只允许特定用户使用 Telnet;扫描 HTTP 请求中的 SQL 注入
  • ✅ 能力最强(能看懂内容)
  • ❌ ⭐ 每个应用要一个网关;性能开销大;⭐ 对加密流量无能为力(除非做 TLS 中间人解密)

4.2 防火墙的局限 ⭐

① ⭐ IP 欺骗:无法确认分组真的来自它声称的地址
② ⭐ 加密流量:HTTPS 内部的内容对防火墙不可见
③ ⭐ 内部威胁:对已经在内网里的攻击者无效
④ 隧道绕过:把任意流量封装进 HTTPS 或 DNS 就能穿过
⑤ 权衡:规则越严格,误伤合法业务越多

📌 ⭐ 一个重要的现代认识“内网可信、外网不可信"的边界模型已经不成立了(云、移动办公、供应链攻击)。取而代之的是零信任(Zero Trust)不因为一个请求来自内网就信任它,每一次访问都要认证和授权。


五、入侵检测系统(IDS/IPS)

IDS:检测到异常 → ⭐ 【告警】
IPS:检测到异常 → ⭐ 【阻断】

两条技术路线

基于特征(Signature-based) 基于异常(Anomaly-based)
原理 匹配已知攻击的特征库 学习正常流量基线,检测偏离
优点 误报率低,可解释 可能发现未知攻击(0-day)
缺点 对未知攻击完全无效;特征库要不断更新 误报率高;“正常"难以定义

⚠️ 基于异常的方法在实践中的困难:网络流量本身高度不规则(新应用上线、业务高峰、软件更新),区分"异常"与"新的正常"极其困难。误报过多会导致运维人员忽略告警——这本身就成了一个安全问题(告警疲劳)。


六、DDoS 防御

6.1 攻击规模的现实

现代 DDoS 攻击流量可达 数 Tbps(利用僵尸网络与反射放大,第 4、7 讲)。

⚠️ 一个诚实的结论:**没有任何单一组织能靠自己的接入带宽扛住这种规模的攻击。**如果攻击流量超过你的接入链路容量,你在自己机房里做什么都没用——链路已经被填满了

6.2 防御手段

手段 说明
上游清洗(Scrubbing) 把流量牵引到有巨大容量的清洗中心,过滤后回注干净流量
Anycast 分散 用任播(第 19 讲)把攻击流量分散到全球多个节点,各自消化
速率限制 对单 IP、单连接的请求速率设限
SYN Cookie 抵抗 SYN 洪泛(第 14 讲)
BCP 38 入口过滤 从源头阻止 IP 欺骗——最根本,但需要全球 ISP 协同
CDN 吸收 内容分发网络天然具有巨大的分布式容量(第 6 讲)

📌 ⭐ 注意 BCP 38 的性质:它是最有效的根本解法,但部署它的 ISP 自己不直接受益(受益的是别人),这是典型的激励错配——与 IPv6、BGPsec 是同一类问题(第 19、21 讲)。

🎯 本课程反复出现的一个主题互联网上最重要的一些安全改进,技术上早已就绪,卡住它们的是协同与激励问题,不是技术问题。


七、例题(Worked Example)

题目:某公司要保护分支机构与总部之间的全部通信,同时也要保护员工用浏览器访问总部 Web 应用。

(a) 这两个需求分别更适合用 IPsec 还是 TLS?为什么? (b) 若使用 IPsec,应该用传输模式还是隧道模式? (c) 公司的 Web 应用配置了 TLS 1.2 并使用 TLS_RSA_WITH_AES_128_CBC_SHA 密码套件。指出三个问题。 (d) 安全团队要求防火墙检查所有出站 HTTPS 流量中是否包含敏感数据外泄。这在技术上如何实现?有什么代价?

解答

(a)

⭐ 分支到总部的【全部通信】 → IPsec
   理由:需要保护【所有 IP 流量】,包括那些不使用 TLS 的老旧内部协议、
        文件共享、数据库连接、打印服务、ICMP 等。
        IPsec 在网络层工作,⭐ 对所有应用完全透明,无需逐个改造。

⭐ 员工浏览器访问 Web 应用 → TLS
   理由:浏览器原生支持,无需在员工设备上安装和配置 VPN 客户端;
        保护范围恰好是需要保护的那条 HTTP 会话;
        ⭐ 部署成本极低(配一张证书即可)。

(b)隧道模式。

因为这是网关到网关的场景:两端各有一个 VPN 网关,中间是公网。

隧道模式把【整个原始 IP 数据报】封装并加密,加上新的外层 IP 头(网关地址)
⭐ 收益:① 内部主机无需任何配置或改造
        ② ⭐ 隐藏了内部网络的真实拓扑与地址
           (观察者只看到两个网关在通信)

传输模式只加密载荷、保留原 IP 头,适用于两台主机直接通信,不适合网关场景(原 IP 头是内网私有地址,无法在公网路由)。

(c) 三个问题

① ⭐ RSA 密钥交换 → 【没有前向保密】
   一旦服务器私钥泄露,攻击者可以解密所有被录下的历史流量。
   应改为 ECDHE(TLS_ECDHE_RSA_WITH_...)。

② ⭐ CBC 模式 + SHA(MAC-then-Encrypt)
   这是 BEAST、Lucky13、POODLE 等一系列填充预言攻击的来源。
   应改为 AEAD 模式(AES-GCM 或 ChaCha20-Poly1305)。

③ ⭐ SHA-1 作为 MAC 算法,且整体停留在 TLS 1.2
   SHA-1 已被证明可构造碰撞。应升级到 ⭐ TLS 1.3,
   它只保留 AEAD + ECDHE,从协议层面消除了以上全部问题。

📌 推荐配置TLS 1.3,或至少 TLS 1.2 + TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

(d) 技术实现:TLS 中间人解密(TLS Interception / SSL Inspection)

① 在所有员工设备上安装公司自己的【根 CA 证书】
② 防火墙作为中间人:
   - 对外:以员工的身份与真实网站建立 TLS 连接
   - 对内:⭐ 用公司根 CA 【现场签发】一张该网站的证书,与员工浏览器建立连接
③ 防火墙因而能看到明文,执行 DLP(数据防泄漏)检查

代价(每一条都很严重)

代价 说明
它就是一次合法化的中间人攻击 公司现在能看到员工的所有 HTTPS 内容,包括个人银行、医疗、私人邮件
削弱了安全性 防火墙的 TLS 实现往往弱于浏览器(不做完整的证书校验、支持过时套件),⭐ 反而扩大了攻击面
单点风险 该根 CA 私钥一旦泄露,攻击者可冒充任何网站欺骗全公司设备
技术上被主动对抗 证书固定(certificate pinning)的应用会直接拒绝连接;QUIC/HTTP3 更难拦截
法律与伦理问题 多数司法辖区要求明确告知并取得同意;部分类别的通信(医疗、法律)可能禁止拦截

📌 一个应当给出的专业建议在解密全部流量之前,先考虑侵入性更低的替代方案——基于端点的 DLP(在设备上检查,不破坏传输安全)、只对特定高风险类别做拦截并明确豁免银行/医疗类站点、以及基于元数据(域名、流量模式)的检测。“技术上做得到"不等于"应当这么做”(第 17 讲讨论网络中立性时也是同一个判断)。


八、随堂自测

  1. 在应用层、传输层、网络层、链路层实现安全,各自保护什么范围?
  2. HTTPS 和 Signal 的端到端加密有什么本质区别?
  3. TLS 的 Finished 消息防的是什么攻击?原理是什么?
  4. 为什么 TLS 要派生四个密钥?
  5. ⭐ TLS 1.3 相比 1.2 的三项关键改进是什么?它的设计哲学是什么?
  6. ⭐ 什么是前向保密?为什么 RSA 密钥交换没有前向保密?
  7. 证书验证的六个步骤是什么?哪一步最常被实现者遗漏?
  8. 0-RTT 数据为什么只能用于幂等请求?
  9. AH 为什么被淘汰?隧道模式相比传输模式的关键价值是什么?
  10. 无状态与有状态防火墙的关键区别是什么?举一个无状态防火墙失效的例子。
  11. 为什么说 BCP 38 是 DDoS 的根本解法却难以部署?

九、本讲要点回顾

  • 安全层次的取舍:层越高越端到端但要应用配合;层越低越透明但保护范围越窄TLS 在平衡点上
  • TLS 1.2 需 2 RTT,TLS 1.3 只需 1 RTT(恢复时 0 RTT)
  • Finished 消息覆盖所有握手消息的 MAC → 防降级攻击
  • TLS 1.3 的哲学是"删掉所有不安全的选项”:只留 AEAD 与 ECDHE。
  • 前向保密 = 长期私钥泄露也无法解密历史会话,靠临时 DH 实现。
  • 证书验证六步,⭐ 最常被遗漏的是"域名匹配”
  • 0-RTT 无重放保护 → 只能用于幂等请求(幂等性从工程属性变成安全边界)。
  • IPsec:ESP 常用,AH 因无法穿 NAT 被淘汰;⭐ 隧道模式隐藏内部地址,是 VPN 的实现方式
  • 防火墙:无状态 → 有状态 → 应用网关;⭐ 都无法应对加密流量、IP 欺骗与内部威胁 → 零信任。
  • IDS:特征法误报少但看不见 0-day;异常法可能发现 0-day 但误报高。
  • DDoS 的根本解法(BCP 38)卡在激励错配而非技术——与 IPv6、BGPsec 同类。

十、自测答案

1. 应用层(PGP、Signal):保护应用数据本身,端到端,连服务器都无法读取,但每个应用必须自己实现。传输层(TLS):保护一条传输连接上的全部数据,端到端覆盖应用负载,但服务器能看到明文;应用只需换用 TLS 库。网络层(IPsec):保护所有 IP 流量(包括 UDP、ICMP 和不支持加密的老协议),对应用完全透明,但需要修改操作系统或网关配置。链路层(WPA、MACsec):只保护一跳,出了本地网段就是明文。

2. HTTPS 保护的是"你到服务器"的通道,服务器本身能看到全部明文——它防的是路径上的窃听者,不防服务器运营方。Signal 式的端到端加密在应用层加密,连服务器都只能看到密文,它防的威胁包括服务器本身被入侵、被强制交出数据或作恶。两者是不同的威胁模型,不能互相替代(Signal 也同时使用 TLS 传输)。

3. 防的是⭐ 降级攻击Finished 消息包含此前所有握手消息的 MAC(用刚协商出的密钥计算)。如果中间人篡改了任何一条握手消息——例如把 ClientHello 中的密码套件列表删减为只剩弱算法——那么客户端和服务器各自看到的握手记录不同,计算出的 Finished 值就不一致,握手立即失败

4. 四个密钥是:两个方向各自的加密密钥MAC 密钥。① 两个方向用不同密钥,防止攻击者把 A→B 方向的报文反射回 A 冒充 B→A 的合法报文;② 加密与 MAC 用不同密钥,遵循密码学基本原则「一个密钥只用于一个目的」——不同算法共用密钥可能产生难以预料的交叉攻击。

5.握手压缩到 1 RTT(客户端在第一条消息中就猜测并附上 DH 公开值),会话恢复时可 0-RTT。② ⭐ 大幅删减密码套件:移除 RSA 密钥交换(无前向保密)、CBC 模式(填充攻击)、RC4/3DES/MD5/SHA-1、压缩(CRIME)、重协商,只保留 AEAD 与临时 DH。③ 加密更多握手内容(包括证书)。设计哲学是⭐ “不是增加更多选项,而是删掉所有不安全的选项”——因为历史上大量 TLS 漏洞的根源正是"协议提供了太多可选项,而实现和配置总会选错",减少选择本身就是一种安全机制

6. 前向保密指:长期密钥(服务器私钥)的泄露,不会危及此前已经完成的会话。RSA 密钥交换没有前向保密,是因为客户端用服务器的长期 RSA 公钥加密预主密钥并发送——攻击者只要今天录下全部流量,将来某天取得服务器私钥(入侵、法律强制、算法被破),就能解密预主密钥,进而解密全部历史会话。临时 DH(ECDHE)为每次会话生成全新的密钥对并在会话结束后销毁,长期私钥仅用于签名(证明身份)而不参与密钥加密,因而历史会话无法被回溯解密。

7. ① 用颁发者公钥验证签名;② 沿信任链追溯到预置的根 CA;③ 检查有效期;④ ⭐ 检查域名匹配(SAN 包含目标域名);⑤ 检查吊销状态(CRL/OCSP);⑥ 检查用途与约束扩展。⭐ 最常被遗漏的是第 ④ 步域名匹配——这是移动 App 中最常见的 TLS 实现漏洞:只验证了"这是一张由可信 CA 签发的有效证书",却没验证"这张证书是签给我要访问的那个域名的",于是攻击者用自己任意域名的合法证书就能冒充银行。

8. 因为 ⭐ 0-RTT 数据没有重放保护。它在完整握手完成之前就被发出,服务器此时还无法确认这是一次新鲜的、非重放的请求。攻击者可以录下这个分组并任意重放,服务器会重复处理它。对于幂等请求(GET 一个页面),重复执行不改变状态,无害;对于非幂等请求(转账、下单),重放意味着重复扣款。第 5 讲讲 HTTP 幂等性时它只是"能否安全自动重试"的工程属性,在这里它成为一条硬性的安全边界。

9. AH 被淘汰有两个原因:① 它不提供加密(只有认证与完整性),而实际需求几乎总是包含机密性;② ⭐ 它对 IP 头部的部分字段做认证,因此无法穿越 NAT(NAT 改写这些字段会导致认证失败)——在 NAT 无处不在的现实中这是致命的。隧道模式的关键价值是它把整个原始 IP 数据报(连同其头部)一起加密并封装进新的外层 IP 头,因此 ⭐ 隐藏了通信双方的真实内部地址与网络拓扑,观察者只能看到两个 VPN 网关在通信;同时内部主机无需任何改造。

10. 无状态过滤器逐个分组独立判断,不记录任何上下文;有状态过滤器⭐ 维护连接跟踪表,能判断一个入站分组是否属于"内部主动发起的、已建立的连接"。失效例子:为了让内部主机能访问外部网站,无状态防火墙必须放行所有源端口为 80 的入站 TCP 分组;攻击者只要把自己扫描分组的源端口设为 80,就能穿过防火墙探测内网。有状态防火墙会发现该分组不属于任何已建立的连接,直接丢弃。

11. BCP 38(入口过滤)要求每个 ISP 丢弃源地址不属于自己客户地址块的出站分组,从源头消除 IP 欺骗——而 IP 欺骗是反射放大攻击(DNS/NTP 放大)的必要前提。它之所以是根本解法,是因为它切断的是攻击能力本身而非攻击后果。难以部署的原因是⭐ 激励错配:部署过滤的 ISP 需要承担配置与维护成本,但受益的是被攻击的第三方,而不是自己——自己的网络并不因此更安全。这与 IPv6 部署(第 19 讲)、BGPsec 部署(第 21 讲)是完全相同的结构性问题:技术早已就绪,卡住的是协同与激励