#计算机网络学习笔记7
网络安全概述
网络安全要解决的问题不是单一的“加密”,而是在不可信环境中实现通信和系统使用的安全目标。
常见目标:
- 机密性(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 密钥生成
生成密钥:
- 选择两个大素数 \(p,q\)
- 计算 \(n=pq\)
- 计算 \(z=(p-1)(q-1)\)
- 选择 \(e\),使 \(e\) 与 \(z\) 互素
- 选择 \(d\),使 \(ed \equiv 1 \pmod z\)
- 公钥为 \((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 加密大量数据,因为公钥运算慢。常见做法:
- 用 RSA 或 Diffie-Hellman 类机制协商一个对称会话密钥
- 用 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 等协议都会把序列号或记录编号纳入认证计算,防止重放和重排攻击。
数字签名
数字签名使用私钥对报文摘要签名,接收方用公钥验证。
签名过程:
- 计算报文摘要 \(H(m)\)
- 用发送方私钥签名摘要
- 发送报文和签名
验证过程:
- 接收方计算收到报文的摘要
- 用发送方公钥验证签名
- 比较摘要是否一致
数字签名提供:
- 完整性
- 发送方认证
- 不可否认性
实际系统通常对报文摘要签名,而不是对整个报文签名,因为摘要长度固定,效率更高。
公钥证书和 CA
公钥密码还需要解决一个问题:
我拿到的公钥,真的是 Bob 的公钥吗?
如果攻击者把自己的公钥伪装成 Bob 的公钥,Alice 用这个公钥加密或验证签名,就会遭受中间人攻击。
证书
证书把一个身份和一个公钥绑定在一起,并由证书颁发机构 CA(Certification Authority)签名。
证书中通常包含:
- 主体身份,如域名
- 主体公钥
- 证书颁发者
- 有效期
- 签名算法
- CA 对证书内容的数字签名
浏览器或操作系统内置一组受信任根 CA。验证证书时,客户端沿证书链检查签名,直到可信根 CA。
CA 的作用
CA 的核心职责:
- 验证申请者是否拥有某个域名或身份
- 为身份和公钥签发证书
- 维护撤销机制
- 保护自己的私钥
如果 CA 被攻破或错误签发证书,攻击者可能伪造合法网站证书。因此 CA 体系是互联网信任基础的一部分,也是高价值攻击目标。
安全电子邮件
安全电子邮件可以组合使用对称加密、公钥加密、散列和数字签名。
机密性
Alice 给 Bob 发送机密邮件:
- Alice 生成随机会话密钥 \(K_S\)
- 用 \(K_S\) 对邮件正文加密
- 用 Bob 的公钥加密 \(K_S\)
- 把加密邮件和加密后的会话密钥一起发送给 Bob
- Bob 用私钥解出 \(K_S\)
- Bob 用 \(K_S\) 解密邮件
这样既利用公钥密码解决密钥分发,也利用对称密码高效加密正文。
完整性和认证
Alice 给邮件签名:
- 对邮件计算散列 \(H(m)\)
- 用 Alice 私钥签名摘要
- Bob 用 Alice 公钥验证签名
如果还要同时保证机密性和认证,可以先签名再加密,或按具体协议规定组合。
TLS
TLS(Transport Layer Security)是互联网上使用最广泛的安全协议之一。HTTPS 就是在 HTTP 和 TCP 之间加入 TLS,默认端口 443。
TLS 提供:
- 机密性:通过对称加密
- 完整性:通过 MAC 或认证加密
- 服务器认证:通过证书和公钥密码
- 可选客户端认证:客户端证书或上层认证机制
TLS 在协议栈中的位置
典型 HTTPS:
1 | HTTP |
HTTP/3 中,QUIC 运行在 UDP 之上,并集成 TLS 1.3 的握手机制:
1 | HTTP/3 |
TLS 握手目标
TLS 握手要完成:
- 协商协议版本和密码套件
- 服务器向客户端证明身份
- 双方协商共享密钥材料
- 派生后续加密和完整性保护密钥
- 防止中间人攻击和重放攻击
一个简化的 TLS 思路:
- 客户端发起 TCP 连接
- 客户端发送 TLS hello,列出支持的密码套件和参数
- 服务器选择密码套件,发送证书和密钥交换参数
- 客户端验证证书
- 双方根据密钥交换结果生成主密钥
- 使用 KDF 派生多个方向的加密密钥和认证密钥
- 后续应用数据被分成 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 安全流程大致包括:
- 设备发现 AP 的安全能力
- 移动设备和认证服务器相互认证
- 双方派生会话密钥
- 认证服务器把密钥材料安全分发给 AP
- 移动设备和 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 负责检测可疑行为
- 信息隐藏和水印是加密之外的重要安全技术思路