网络层安全 网络层安全为啥要有网络层安全IPSecTLS 很强但它不是万能的TLS 主要保护的是传输层以上的数据比如 HTTP 内容。但它通常不隐藏 IP 地址所以别人还是能知道你在和哪个服务器通信通信双方是谁一些流量模式信息而IPSec 是在网络层干活所以它更“底层”覆盖范围更大。网络层机密性发送方对IP datagram 的 payload加密这个 payload 里可以是 TCP、UDP、ICMP 等实现位置在传输层下面所以对更高层透明因此它能对“所有上层数据”提供一种blanket coverage不管上面跑的是网页、邮件、P2P、还是 TCP SYN到了 IP 层统统都能一起保护。这就是它和 TLS 的最大思维差别TLS保护某个应用连接IPSec保护一整类 IP 通信VPNVPN 的动机是机构想要私有网络但专线、路由器、链路、DNS 基础设施都很贵于是把办公点之间的流量放到公共互联网传但在进入公网前先加密使其逻辑上和其他流量隔离。VPN本质是在公网传输但让数据看起来像走自己家的私网通道。IPSec 提供哪些安全服务机密性别人看不懂内容完整性别人改了你能发现源认证确认数据确实来自预期对端抗重放旧包不能反复拿来骗你两种模式Transport Mode保护 IP payload原始 IP header 不加密Tunnel Mode整个原始 IP 包都被封装外面再加一个新的 IP headerTransport mode只保护负载不保护原 IP 头。原包大概是[原IP头][TCP/UDP头数据]用了 transport mode 后大概变成[原IP头][IPSec头][被保护的TCP/UDP头数据]别人仍然能看到源 IP和目的 IP但看不到里面的传输层数据内容。Tunnel mode把整个原始 IP 包塞进一个新包里。原包[原IP头][原payload]隧道模式后[新IP头][IPSec头][原IP头][原payload][一些尾巴]这样公网只看到外层新 IP 头看不到里面真正通信双方的原始 IP 头两种格式 AH 和 ESPESP支持 confidentiality、integrity、source authenticationAH支持 integrity、source authenticationAH :Authentication Header它干的主要是验证完整性验证来源但不负责加密内容。所以它不能提供机密性。ESP : Encapsulating Security Payload它是现在更主流的那个因为它能加密做完整性保护做来源认证AH 提供完整性、源认证。ESP 还额外提供加密Transport Mode上半部分数据从上往下走到IPSec层时ESP直接插在原始IP头后面orig IP hdr | ESP hdr | TCP hdr | Data | ESP trlr | ESP auth关键点IP头不动ESP只加密/保护IP头后面的payloadTCP头数据。蓝色箭头标的就是被ESP加密的范围。适用场景两台主机之间直接通信比如你的电脑直连服务器。Tunnel Mode下半部分ESP把整个原始IP包包括orig IP hdr都包进去加密然后外面再套一个全新的IP头new IP hdr | ESP hdr | orig IP hdr | TCP hdr | Data | ESP trlr | ESP auth关键点原始IP头也被加密了外面的new IP hdr是网关的地址。蓝色箭头范围更大连原始IP头都在加密区内。SA :Security AssociatioSA 不是“协议本身”它更像是一条已经谈好的安全规则记录。比如“从 R1 发到 R2 的流量应该用 AES 加密、用某个 HMAC 算法校验、用哪个 key、SPI 是多少……”为什么 SA 是单向的这点很多人第一次都会懵。A → B是一条 SAB → A还得再来一条 SA因为序列号各管各的密钥也可能不同参数也可能不同所以双向通信通常至少要两条 SA。SAD :Security Association Database它就是存 SA 的数据库。发送时发送端去 SAD 里查这个包该怎么处理接收时接收端看包里的SPI用 SPI 去索引 SAD找到对应 SA按这条 SA 的规则解密/验完整性/验认证Tunnel ESP 的包ESP header有两个关键字段SPI告诉接收方该去 SAD 里找哪条 SASequence number防重放攻击ESP trailerpadding给分组密码对齐用next header告诉里面原始上层是什么比如原来是 IP / TCP / UDP 之类ESP auth这是认证值课件说 MAC 用共享密钥创建典型就是HMAC。发送端怎么把普通包变成 IPSec 包在原 datagram 后面加ESP trailer按 SA 指定算法和 key 对结果加密在前面再加ESP header对整个 enchilada 计算认证 MAC把 MAC 加到后面最外面再加一个全新的 IP headerSPD :Security Policy Database这个不是“怎么做”而是“要不要做”。SPD决定what to doSAD决定how to do it