密码算法与安全通信协议分析 - 第1节
1.1 密码学发展史:从古典到量子
密码学并非现代计算机的产物,其历史可追溯至四千年前的古埃及。理解这段历史,有助于把握密码技术演进的底层逻辑——始终是“加密者”与“破译者”之间的对抗博弈。
| 时期 | 代表算法/事件 | 核心特征 | 典型弱点 |
|---|---|---|---|
| 古典密码(~1940s) | 凯撒密码、维吉尼亚密码、恩尼格玛机 | 基于字母替换或换位,依赖算法保密 | 频率分析可攻破;密钥空间有限 |
| 近代密码(1949–1975) | 香农《保密系统的通信理论》 | 引入信息论,奠定理论安全基础 | 仍以对称密码为主,密钥分发困难 |
| 现代密码(1976–至今) | DES、RSA、ECC、AES | 公钥密码革命;算法公开、密钥保密 | 量子计算威胁现有公钥体系 |
| 后量子密码(演进中) | 格密码、多变量密码、哈希签名 | 抗量子计算攻击;NIST 标准化进行中 | 性能开销较大,尚未广泛部署 |
里程碑事件:1976 年 Diffie 与 Hellman 发表《密码学的新方向》,首次提出公钥密码概念,彻底解决了对称密码中“密钥分发”这一千年难题。
1.2 密码学基本概念
无论算法多么复杂,密码系统始终围绕三个核心要素构建:明文、密文和密钥。加密过程将明文转换为密文,解密过程则逆向恢复。
- 明文(Plaintext):原始的可读消息,如 "HELLO" 或一段 JSON 数据。
- 密文(Ciphertext):加密后的乱码,对未授权方无意义,如 "XJQQZ"。
- 密钥(Key):控制加密/解密算法的秘密参数,是密码系统的安全核心。
- 加密算法(Encryption Algorithm):将明文与密钥结合生成密文的数学变换。
- 解密算法(Decryption Algorithm):使用密钥将密文还原为明文的逆变换。
柯克霍夫原则(Kerckhoffs's Principle):密码系统的安全性应仅依赖于密钥的保密性,而非算法的保密性。算法可以公开,只要密钥不泄露,系统就是安全的。这是现代密码设计的基石。
1.3 密码学分类
根据密钥的使用方式,密码算法分为三大类:对称密码、非对称密码和哈希函数。三者各有适用场景,现代安全协议通常组合使用。
| 类型 | 密钥数量 | 典型算法 | 主要用途 | 性能 |
|---|---|---|---|---|
| 对称密码 | 1 个(共享密钥) | AES, ChaCha20, SM4 | 数据加密、批量通信加密 | 快(硬件加速) |
| 非对称密码 | 2 个(公钥 + 私钥) | RSA, ECDSA, SM2 | 密钥交换、数字签名、身份认证 | 慢(数学运算复杂) |
| 哈希函数 | 无密钥 | SHA-256, SM3, BLAKE3 | 完整性校验、密码存储、数字签名辅助 | 快(单向不可逆) |
常见误区:哈希函数不是“加密算法”。加密是可逆的(有解密算法),而哈希是单向的,无法从摘要恢复原始输入。将哈希称为“加密”会导致安全设计上的严重错误。
1.4 安全目标:CIA + 不可否认性
密码学的最终目的是保障信息系统的四大安全目标。任何安全协议的设计,本质上都是在权衡这些目标的实现成本与风险。
- 机密性(Confidentiality):确保信息不被未授权方获取。通过加密实现,防止窃听。
- 完整性(Integrity):确保信息在传输或存储中未被篡改。通过哈希或消息认证码(MAC)实现。
- 可用性(Availability):确保授权用户能够正常访问信息和服务。密码学通过冗余、抗拒绝服务设计间接保障。
- 不可否认性(Non-repudiation):防止发送方或接收方事后否认行为。通过数字签名实现,提供法律级证据。
现实案例:HTTPS 协议同时实现了四大目标——TLS 握手使用非对称密码认证身份(不可否认性),会话使用对称密码加密数据(机密性),消息认证码校验数据是否被篡改(完整性),而 TLS 的重传机制和证书吊销检查保障了服务的可用性。