密码学
密码学不是一组算法,而是一套在不可信环境中建立“可计算信任”的系统工程。
一、密码学要解决的根本问题(第一性原理)
在开放网络中,通信双方默认彼此不可信,通信介质也不可信。密码学的本质目标不是“加密数据”,而是:
在敌对环境中,用可验证的计算成本,约束攻击者的能力边界。
因此,密码学关注的不是“是否能破解”,而是:
- 破解需要付出多大的 **计算代价**
- 是否在 **可接受时间内不可行**
- 是否存在 **系统性绕过路径**
二、密码学的能力目标(Why)
所有密码学机制,最终都服务于四类稳定的安全目标:
| 安全目标 | 本质含义 |
|---|---|
| 机密性 | 未授权者无法获知信息内容 |
| 完整性 | 信息在传输与存储过程中不可被篡改 |
| 认证性 | 确认通信实体或消息来源的真实性 |
| 不可否认性 | 行为发生后无法被否认 |
重要结论:任何单一密码机制都无法同时满足全部目标。
三、密码学的分层认知结构(How)
这是理解密码学的核心认知模型。
1️⃣ 原语层(Primitive)
不可再分的数学或计算构件
- 单向散列函数
- 对称分组密码
- 公钥数学难题(大整数分解、离散对数、椭圆曲线)
特点:
- 只解决局部问题
- 本身不可直接使用
2️⃣ 构造层(Construction)
将原语组合成可用安全能力
- MAC(消息认证码)
- 数字签名
- AEAD(认证加密)
- 密钥派生函数(PBKDF、HKDF)
特点:
- 开始具备安全语义
- 安全性依赖组合方式,而非单一算法
3️⃣ 协议层(Protocol)
多方在时间维度上的安全交互规则
- TLS / HTTPS
- Kerberos
- Diffie-Hellman 密钥交换
- PGP 信任模型
特点:
- 引入状态、时序、角色
- 攻击面显著扩大
4️⃣ 系统层(System)
密码学在真实系统中的落地
- 密钥生命周期管理
- 随机数治理
- 错误处理与边信道防护
- 算法弃用与迁移
结论:
密码学失败,几乎总发生在系统层。
四、攻击者模型与安全边界(Against What)
现代密码学不是“防君子”,而是假设最坏情况。
攻击能力分级
| 攻击模型 | 含义 |
|---|---|
| 唯密文攻击 | 只能看到密文 |
| 已知明文攻击 | 知道部分明文与密文 |
| 选择明文攻击 | 可构造明文并观察密文 |
| 选择密文攻击 | 可诱导系统解密 |
现代安全算法必须至少抵御选择明文攻击。
安全类型
- **无条件安全**:不依赖计算能力(理论存在)
- **计算安全**:破解成本超出可行范围(工程现实)
五、安全强度与时间维度(When)
安全不是绝对概念,而是与时间和算力相关的经济问题。
- N 位安全强度 ≈ 需要 2ⁿ 次运算
- 算力增长 + 密码分析进展 ⇒ **安全强度持续衰减**
算法设计必须面向未来,而非当前。
六、对称密码:效率与规模的基础设施
本质定位
对称密码解决的是“高效、大规模数据保护”问题。
核心特性
- 同一密钥用于加解密
- 速度快,适合海量数据
- 最大挑战在于:**密钥管理**
分组密码的设计哲学
- **混淆(Confusion)**:隐藏密钥与密文关系
- **扩散(Diffusion)**:明文变化影响整体密文
- **雪崩效应**:一位变化导致整体变化
工作模式的工程意义
- ECB:无状态,但泄露结构(原则上禁用)
- CBC:引入状态,但易遭填充攻击
- AEAD:同时解决机密性 + 完整性(现代首选)
工程结论:没有认证的加密 = 不安全的加密
七、公钥密码:信任建立的基础设施
本质定位
公钥密码不是用来加密数据,而是用来建立信任关系。
典型能力
- 密钥交换
- 身份认证
- 数字签名
代价
- 算法复杂
- 性能较低
- 通常只用于“协商阶段”
八、哈希与认证:完整性的核心机制
哈希函数的角色
- 数据指纹
- 完整性检测
- 构造更高级机制的基础
典型风险
- 碰撞攻击
- 长度延展攻击
设计原则:哈希 ≠ 认证,必须引入密钥(HMAC)
九、认证加密(AEAD):现代密码工程的收敛点
AEAD 统一解决:
- 机密性
- 完整性
- 认证
典型算法:
- AES-GCM
- ChaCha20-Poly1305
核心风险:
- Nonce / IV 重复 ⇒ 灾难性失败
十、随机数:密码系统的生命线
随机数质量,直接决定整个系统的安全上限。
- 真随机:昂贵
- 伪随机:依赖种子与构造安全性
工程要求:
- 不可预测
- 不可重复
- 可审计来源
十一、密码学的工程哲学(稳定结论)
黄金法则
- 不要自己设计密码算法
- 不要只加密而不认证
- 不要重复使用随机数
- 不要暴露错误细节
- 不要忽视系统边界
结语:密码学的真正价值
密码学不是为了“绝对安全”,而是为了让攻击的成本,高到不值得。
它是一门:
- 数学支撑
- 工程实现
- 经济博弈
- 人类信任
交汇而成的学科。