$ cat ~ / posts /web /web7 4.8k Words ~ 17 Mins
cover.png
计算机网络学习笔记7

#计算机网络学习笔记7

exdoubled Lv5

网络安全概述

网络安全要解决的问题不是单一的“加密”,而是在不可信环境中实现通信和系统使用的安全目标。

常见目标:

  • 机密性(confidentiality):只有发送方和预期接收方能够理解报文内容
  • 认证/鉴别(authentication):通信双方能够确认对方身份
  • 报文完整性(message integrity):接收方能够确认报文传输过程中没有被篡改
  • 访问控制(access control):只有被授权主体可以访问资源
  • 可用性(availability):服务能够被合法用户访问和使用

课堂补充:安全的基本目标常被概括为 CIA:机密性、完整性、可用性。课程里还特别强调身份认证,因为如果不知道对方是谁,后续加密和授权都可能建立在错误对象之上。

攻击者模型

教材常用 Alice、Bob 和 Trudy 描述安全通信:

  • Alice 和 Bob 想安全通信
  • Trudy 是攻击者,可能窃听、修改、插入、删除、伪造报文

攻击者可能做的事:

  • 窃听:读取链路上传输的报文
  • 插入:向连接或协议交互中插入报文
  • 伪装:伪造源地址或身份,冒充其他实体
  • 劫持:接管已建立连接
  • 重放:重新发送过去截获的合法报文
  • 拒绝服务:阻止合法用户使用服务

互联网早期设计更多假设参与方相对可信,许多协议默认没有内建强安全机制。随着互联网从科研网络扩展到全球公共基础设施,缺失的安全假设需要通过 TLS、IPsec、防火墙、IDS、认证系统等机制补上。

课堂补充:网络安全是多层次问题。操作系统漏洞、应用漏洞、协议设计缺陷、网络配置错误都可能导致安全事件。网络分层让每层都能独立演进,也意味着每层都有自己的安全问题。


密码学基础

密码学是网络安全的重要基础,但不是安全的全部。加密可以保护机密性,哈希、MAC、数字签名可以支持完整性和认证,证书体系可以帮助绑定身份和公钥。

加密语言

基本术语:

  • 明文(plaintext):原始报文 \(m\)
  • 密文(ciphertext):加密后的报文
  • 加密算法:把明文和密钥转换成密文
  • 解密算法:把密文和密钥转换回明文
  • 密钥(key):控制加密和解密过程的秘密参数

可写为:

\[ c = K_A(m) \]

\[ m = K_B(c) \]

其中 \(K_A\)\(K_B\) 可以相同,也可以不同,取决于密码体制。

破解密码的攻击模型

攻击者能力不同,破解难度也不同:

  • 密文攻击:攻击者只有密文
  • 已知明文攻击:攻击者知道部分明文和对应密文
  • 选择明文攻击:攻击者可以选择明文并获得对应密文
  • 选择密文攻击:攻击者可以选择密文并获得解密结果

现代密码算法设计要考虑比“只看到密文”更强的攻击模型。

对称密钥密码

对称密钥密码中,发送方和接收方共享同一个秘密密钥 \(K_S\)

\[ c = K_S(m) \]

\[ m = K_S(c) \]

优点:

  • 速度快
  • 适合大量数据加密
  • 实现成熟

难点:

  • 双方如何安全地协商共享密钥
  • 多个通信对象之间密钥数量可能迅速增长
  • 密钥泄露后通信历史可能受影响

经典和现代对称加密:

  • DES:56 bit 密钥,已不安全
  • 3DES:对 DES 做三重加密,历史过渡方案
  • AES:现代主流分组密码,支持 128/192/256 bit 密钥

课堂补充:主流密码算法通常公开,安全性主要依赖密钥保密,而不是依赖算法保密。公开算法能接受更多研究和攻击检验,有助于尽早发现缺陷;算法保密可能隐藏漏洞,也可能让少数知道漏洞的人长期利用。某些特殊场景会采用保密算法,但需要清楚其管理和验证成本。

公钥密码

公钥密码中,每个实体有一对密钥:

  • 公钥 \(K_B^+\):公开给所有人
  • 私钥 \(K_B^-\):只有自己知道

用 Bob 公钥加密,只有 Bob 私钥能解密:

\[ m = K_B^-(K_B^+(m)) \]

公钥密码解决了“第一次见面如何共享密钥”的问题,但计算开销通常远大于对称加密。因此实际系统常用公钥密码协商会话密钥,再用对称密钥加密大量数据。


RSA

RSA 是经典公钥密码算法,基于大整数分解困难性。

RSA 密钥生成

生成密钥:

  1. 选择两个大素数 \(p,q\)
  2. 计算 \(n=pq\)
  3. 计算 \(z=(p-1)(q-1)\)
  4. 选择 \(e\),使 \(e\)\(z\) 互素
  5. 选择 \(d\),使 \(ed \equiv 1 \pmod z\)
  6. 公钥为 \((n,e)\),私钥为 \((n,d)\)

RSA 加密和解密

把明文看成小于 \(n\) 的整数 \(m\)

加密:

\[ c = m^e \bmod n \]

解密:

\[ m = c^d \bmod n \]

RSA 正确性来自模运算性质:

\[ (m^e)^d \bmod n = m^{ed} \bmod n = m \]

在适当条件下成立。

RSA 的安全性和实践

攻击者知道公钥 \((n,e)\)。如果能把 \(n\) 分解为 \(p\)\(q\),就能计算 \(z\) 并求出私钥 \(d\)。因此 RSA 安全性依赖大整数分解困难。

实践中不会直接用 RSA 加密大量数据,因为公钥运算慢。常见做法:

  1. 用 RSA 或 Diffie-Hellman 类机制协商一个对称会话密钥
  2. 用 AES 等对称算法加密后续数据

课堂补充:未来量子计算可能威胁现有公钥密码体系,因此有后量子密码研究。即使实用量子计算机尚未普及,也存在“先存后解”风险:攻击者今天保存密文,等未来有更强能力后再解密历史通信。


报文完整性和认证

加密不等于完整性。攻击者即使看不懂密文,也可能删除、重放、替换或篡改报文,使接收方得到错误结果。

密码散列函数

散列函数 \(H(m)\) 把任意长度报文映射为固定长度摘要。

密码散列函数应满足:

  • 给定 \(m\),容易计算 \(H(m)\)
  • 给定摘要,难以反推出 \(m\)
  • 难以找到两个不同报文 \(x,y\) 使 \(H(x)=H(y)\)
  • 报文微小变化会导致摘要大幅变化

Internet 校验和和 CRC 可以检测偶然差错,但不是密码散列函数。它们不抗恶意构造,攻击者可以有意修改报文并调整校验值。

常见密码散列算法包括 SHA-256、SHA-3 等。MD5、SHA-1 已因碰撞攻击不再适合安全场景。

消息认证码 MAC

消息认证码(Message Authentication Code, MAC)使用共享密钥生成认证标签:

\[ MAC = H(K \| m) \]

或更规范地使用 HMAC。

发送方发送:

\[ m, MAC_K(m) \]

接收方用共享密钥重新计算 MAC。如果一致,则说明:

  • 报文没有被未持有密钥者篡改
  • 报文来自持有共享密钥的一方

MAC 同时提供完整性和对称密钥意义下的认证,但不能提供不可否认性,因为双方都知道同一个密钥。

防重放

仅有 MAC 不足以防止重放攻击。攻击者可以录制一个合法的“转账 100 元”报文和 MAC,以后重复发送。

常用防重放机制:

  • nonce:一次性随机数
  • 时间戳:限制报文有效时间
  • 序列号:每个报文单调递增
  • 会话标识:绑定到特定连接

TLS、IPsec 等协议都会把序列号或记录编号纳入认证计算,防止重放和重排攻击。

数字签名

数字签名使用私钥对报文摘要签名,接收方用公钥验证。

签名过程:

  1. 计算报文摘要 \(H(m)\)
  2. 用发送方私钥签名摘要
  3. 发送报文和签名

验证过程:

  1. 接收方计算收到报文的摘要
  2. 用发送方公钥验证签名
  3. 比较摘要是否一致

数字签名提供:

  • 完整性
  • 发送方认证
  • 不可否认性

实际系统通常对报文摘要签名,而不是对整个报文签名,因为摘要长度固定,效率更高。


公钥证书和 CA

公钥密码还需要解决一个问题:

我拿到的公钥,真的是 Bob 的公钥吗?

如果攻击者把自己的公钥伪装成 Bob 的公钥,Alice 用这个公钥加密或验证签名,就会遭受中间人攻击。

证书

证书把一个身份和一个公钥绑定在一起,并由证书颁发机构 CA(Certification Authority)签名。

证书中通常包含:

  • 主体身份,如域名
  • 主体公钥
  • 证书颁发者
  • 有效期
  • 签名算法
  • CA 对证书内容的数字签名

浏览器或操作系统内置一组受信任根 CA。验证证书时,客户端沿证书链检查签名,直到可信根 CA。

CA 的作用

CA 的核心职责:

  • 验证申请者是否拥有某个域名或身份
  • 为身份和公钥签发证书
  • 维护撤销机制
  • 保护自己的私钥

如果 CA 被攻破或错误签发证书,攻击者可能伪造合法网站证书。因此 CA 体系是互联网信任基础的一部分,也是高价值攻击目标。


安全电子邮件

安全电子邮件可以组合使用对称加密、公钥加密、散列和数字签名。

机密性

Alice 给 Bob 发送机密邮件:

  1. Alice 生成随机会话密钥 \(K_S\)
  2. \(K_S\) 对邮件正文加密
  3. 用 Bob 的公钥加密 \(K_S\)
  4. 把加密邮件和加密后的会话密钥一起发送给 Bob
  5. Bob 用私钥解出 \(K_S\)
  6. Bob 用 \(K_S\) 解密邮件

这样既利用公钥密码解决密钥分发,也利用对称密码高效加密正文。

完整性和认证

Alice 给邮件签名:

  1. 对邮件计算散列 \(H(m)\)
  2. 用 Alice 私钥签名摘要
  3. Bob 用 Alice 公钥验证签名

如果还要同时保证机密性和认证,可以先签名再加密,或按具体协议规定组合。


TLS

TLS(Transport Layer Security)是互联网上使用最广泛的安全协议之一。HTTPS 就是在 HTTP 和 TCP 之间加入 TLS,默认端口 443。

TLS 提供:

  • 机密性:通过对称加密
  • 完整性:通过 MAC 或认证加密
  • 服务器认证:通过证书和公钥密码
  • 可选客户端认证:客户端证书或上层认证机制

TLS 在协议栈中的位置

典型 HTTPS:

1
2
3
4
HTTP
TLS
TCP
IP

HTTP/3 中,QUIC 运行在 UDP 之上,并集成 TLS 1.3 的握手机制:

1
2
3
4
HTTP/3
QUIC + TLS
UDP
IP

TLS 握手目标

TLS 握手要完成:

  • 协商协议版本和密码套件
  • 服务器向客户端证明身份
  • 双方协商共享密钥材料
  • 派生后续加密和完整性保护密钥
  • 防止中间人攻击和重放攻击

一个简化的 TLS 思路:

  1. 客户端发起 TCP 连接
  2. 客户端发送 TLS hello,列出支持的密码套件和参数
  3. 服务器选择密码套件,发送证书和密钥交换参数
  4. 客户端验证证书
  5. 双方根据密钥交换结果生成主密钥
  6. 使用 KDF 派生多个方向的加密密钥和认证密钥
  7. 后续应用数据被分成 TLS record 加密和认证

TLS 记录

TLS 不直接把整个 TCP 字节流一次性加密,而是把数据切成记录(record)。每条记录带有类型、长度、序列号相关认证信息,并进行加密和完整性保护。

为什么需要记录?

  • TCP 是字节流,没有消息边界
  • 接收方需要逐段验证完整性
  • 序列号可以防止重放和重排
  • 关闭连接也需要被认证,避免攻击者伪造连接结束

TLS 1.3

TLS 1.3 简化了密码套件,删除许多旧算法和不安全选项,强调:

  • 只保留更安全的密钥交换和认证加密组合
  • 使用 Diffie-Hellman 类密钥交换实现前向安全
  • 常规握手可在 1 RTT 完成
  • 支持 0-RTT 早期数据,但早期数据可能被重放,只适合幂等请求

TLS 是按分层方式给 TCP 上的应用提供安全能力,但安全不只有“某一层协议”。安全可以从密码学、系统、身份、访问控制、运行监测等不同角度组织。


IPsec

IPsec 在网络层为 IP 数据报提供安全服务,可用于 VPN、站点间加密、主机间安全通信等。

IPsec 可提供:

  • 数据报机密性
  • 源认证
  • 数据完整性
  • 防重放

传输模式和隧道模式

传输模式:保护 IP 数据报的载荷,原 IP 首部基本保留。常用于主机到主机。

隧道模式:把整个原始 IP 数据报作为载荷封装到新的 IP 数据报中。常用于网关到网关 VPN。

隧道模式中,外层 IP 首部用于把加密后的数据报从一个安全网关送到另一个安全网关;内层原始 IP 首部被加密保护。

AH 和 ESP

IPsec 包含两个主要协议:

  • AH(Authentication Header):提供源认证和完整性,不提供机密性
  • ESP(Encapsulation Security Payload):提供源认证、完整性和机密性,是更常用的协议

ESP 数据报包含:

  • ESP header
  • 加密后的原始数据/载荷
  • ESP trailer
  • ESP authentication 字段

ESP header 中包含 SPI 和序列号:

  • SPI(Security Parameter Index):标识使用哪个安全关联
  • 序列号:防止重放攻击

安全关联 SA

IPsec 在两个安全实体之间建立逻辑连接,称为安全关联(Security Association, SA)。SA 是单向的;双向通信通常需要两个 SA。

SA 中保存:

  • SPI
  • 源/目的安全实体地址
  • 加密算法
  • 加密密钥
  • 完整性算法
  • 认证密钥
  • 序列号状态

IPsec 实体维护 SAD(Security Association Database)保存 SA 状态。

SPD 和 SAD

IPsec 使用两个重要数据库:

  • SPD(Security Policy Database):决定哪些流量需要 IPsec、丢弃或绕过
  • SAD(Security Association Database):保存具体 SA 的算法、密钥、SPI 等状态

可理解为:

  • SPD 决定 “what to do”
  • SAD 决定 “how to do it”

IKE

手工配置 IPsec SA 不现实,尤其是大型 VPN。IKE(Internet Key Exchange)用于自动完成:

  • 双方认证
  • 协商加密和完整性算法
  • 建立 IKE SA
  • 派生 IPsec SA 密钥

IKE 可基于:

  • 预共享密钥 PSK
  • 公钥证书 PKI

它和 TLS 类似,都需要认证对方身份并协商后续会话密钥。


无线和移动网络安全

无线链路更容易被监听,因此必须做链路认证和加密。

802.11 安全

802.11 安全流程大致包括:

  1. 设备发现 AP 的安全能力
  2. 移动设备和认证服务器相互认证
  3. 双方派生会话密钥
  4. 认证服务器把密钥材料安全分发给 AP
  5. 移动设备和 AP 用会话密钥保护无线链路

企业网络常使用:

  • EAP:移动设备与认证服务器之间的端到端认证框架
  • EAPoL:EAP over LAN,承载在 802.11/以太网上
  • RADIUS:AP 和认证服务器之间的后端认证协议

WPA3 使用更强的认证和密钥派生机制,改进传统预共享密码方式的弱点。

4G/LTE 安全

4G LTE 中:

  • SIM 卡保存用户身份和长期密钥
  • HSS 保存归属网络中的订阅和认证材料
  • MME 在接入时联系 HSS 完成认证
  • 移动设备和基站派生会话密钥保护无线链路

被访网络与归属网络之间的信任关系使漫游认证成为可能。


防火墙和 IDS

密码协议保护通信内容,但网络还需要运行安全机制来隔离、监测和响应攻击。

防火墙

防火墙位于内部网络和外部网络之间,根据策略允许或阻止流量。

防火墙可以过滤:

  • 源/目的 IP 地址
  • 源/目的端口
  • 协议类型
  • TCP 标志位
  • 连接状态
  • 应用层内容

典型类型:

  • 无状态包过滤器:逐包检查首部字段,不维护连接状态
  • 有状态防火墙:维护连接表,只允许属于合法连接的返回流量
  • 应用网关/代理:理解应用协议,代表内部主机与外部通信

课堂补充:防火墙是网络系统里的基础安全组件。如果内部系统直接暴露在互联网前,缺少边界过滤和访问控制,通常会被视为“裸奔”。

IDS

IDS(Intrusion Detection System,入侵检测系统)监测网络或主机行为,识别可能的攻击。

检测方式:

  • 特征检测:匹配已知攻击签名
  • 异常检测:发现偏离正常行为的流量或系统活动

IDS 可以发现:

  • 端口扫描
  • 漏洞探测
  • 恶意载荷
  • 暴力破解
  • 横向移动
  • 数据外传异常

IDS 通常不直接替代防火墙。防火墙负责执行访问控制,IDS 负责发现和告警,IPS 则可在检测后主动阻断。


信息隐藏补充

安全不只有加密。加密保护内容,使攻击者即使知道秘密存在也难以理解;信息隐藏则试图让攻击者不知道秘密存在。

典型信息隐藏:

  • 把信息嵌入图片、音频、视频的低有效位
  • 数字水印,用于版权声明或篡改检测
  • 把通信隐藏在背景流量中
  • 洋葱路由隐藏通信路径,使中间节点只知道上一跳和下一跳

信息隐藏可以和加密结合:先加密敏感内容,再把密文隐藏到载体中。这样即使隐藏被发现,仍需要破解密文。


小结

网络安全核心知识:

  • 安全目标包括机密性、完整性、认证、访问控制、可用性
  • 攻击者可以窃听、伪造、插入、删除、重放、劫持和拒绝服务
  • 对称密钥加密速度快,难点是密钥分发
  • 公钥密码解决密钥分发和签名问题,但开销较高
  • RSA 基于大整数分解困难性,实践中常用于协商会话密钥
  • 密码散列、HMAC、nonce、序列号用于完整性、认证和防重放
  • 数字签名用私钥签名摘要,用公钥验证,提供不可否认性
  • CA 和证书把身份与公钥绑定,是 TLS 认证的基础
  • TLS 在传输层之上提供 HTTPS 等应用的机密性、完整性和服务器认证
  • IPsec 在网络层保护 IP 数据报,核心概念包括 AH、ESP、SA、SPD、SAD、IKE
  • 802.11 和 4G/LTE 都需要认证、密钥派生和无线链路加密
  • 防火墙负责访问控制,IDS 负责检测可疑行为
  • 信息隐藏和水印是加密之外的重要安全技术思路
$ discussion
# Comments
waline