加密算法索引
加密算法(Encryption Algorithm)是将明文数据转化为密文的数学函数,用于保护信息的机密性和完整性。加密算法是信息安全的基石,广泛应用于网络通信、数据存储、身份认证、数字签名等领域。本页是加密算法的系统索引,涵盖对称加密、非对称加密、流密码、分组模式、国密算法和后量子密码等主要类别。
简介
加密算法按密钥管理方式分为两大类:对称加密(加密和解密使用同一密钥)和非对称加密(使用公钥/私钥对)。对称加密速度快,适合大数据量加密;非对称加密解决了密钥分发问题,适合密钥交换和数字签名。实际系统通常将两者结合使用——用非对称加密交换会话密钥,再用对称加密处理数据。
评价加密算法的主要指标包括:安全强度(密钥长度与抗攻击能力)、速度(加解密吞吐量)、分组/流模式、硬件友好性以及标准化程度。
分类总览
| 类别 | 典型算法 | 主要用途 | 密钥特征 |
|---|---|---|---|
| 分组密码 | AES, DES/3DES, Blowfish, SM4 | 数据加密、文件加密 | 对称,固定分组 |
| 流密码 | ChaCha20, RC4, A5/1 | 实时通信、流式数据 | 对称,逐字节/字 |
| 公钥加密 | RSA, ElGamal, SM2 | 密钥交换、数字签名 | 非对称,公钥/私钥 |
| 椭圆曲线 | ECDH, ECDSA, Ed25519 | 高效密钥交换与签名 | 非对称,短密钥 |
| 密钥交换 | Diffie-Hellman, X25519 | 安全协商会话密钥 | 非对称/协议 |
| 后量子 | Kyber, Dilithium, SPHINCS+ | 抵抗量子计算攻击 | 格/哈希/编码 |
分组密码(对称加密)
AES
Advanced Encryption Standard / 高级加密标准
NIST 于 2001 年发布的分组密码标准,替代 DES。密钥长度 128/192/256 位,分组大小 128 位。使用 SPN 结构,10/12/14 轮。全球最广泛使用的对称加密算法。
DES / 3DES
Data Encryption Standard / Triple DES
IBM 设计、NBS 于 1977 年发布的分组密码标准。DES 使用 56 位密钥,因密钥过短已被弃用。3DES 通过三次 DES 加密增强安全性,但仍不建议新系统使用。
SM4
SM4 分组密码算法
中国国家密码管理局发布的分组密码标准(GM/T 0002-2012),128 位密钥和分组,32 轮非线性迭代。对标 AES-128,在中国金融和政务系统中广泛部署。
Blowfish / Twofish
Blowfish & Twofish Block Ciphers
Bruce Schneier 设计的分组密码。Blowfish(1993)使用 4-56 字节可变密钥;Twofish(1998)是 AES 竞赛决赛选手,支持 128/192/256 位密钥。两者均使用 Feistel 结构。
流密码
ChaCha20
ChaCha20-Poly1305 AEAD
Daniel J. Bernstein 设计的流密码,是 Salsa20 的改进版。256 位密钥,配合 Poly1305 MAC 构成 AEAD。被 TLS 1.3、WireGuard、SSH 等广泛采用,是现代流密码首选。
RC4
Rivest Cipher 4 / ARC4
Ron Rivest 于 1987 年设计的流密码,极其简洁(仅数行代码)。曾被广泛用于 SSL/TLS、WEP 等协议,但发现多种严重偏差攻击后已被弃用(RFC 7465)。
分组加密模式
分组密码本身只能加密固定长度的数据块,需要加密模式将其扩展为可处理任意长度数据的方案。以下是主要的分组加密模式:
| 模式 | 全称 | 并行加密 | 并行解密 | 随机访问 | 认证 | 推荐 |
|---|---|---|---|---|---|---|
| ECB | Electronic Codebook | 是 | 是 | 是 | 否 | 不推荐 |
| CBC | Cipher Block Chaining | 否 | 是 | 否 | 否 | 常见但需配合 HMAC |
| CTR | Counter | 是 | 是 | 是 | 否 | 良好(需配合 MAC) |
| GCM | Galois/Counter Mode | 是 | 是 | 是 | 是 | 推荐 (AEAD) |
| CCM | Counter with CBC-MAC | 否 | 是 | 否 | 是 | 推荐 (AEAD) |
| XTS | XEX-based Tweaked-codebook | 是 | 是 | 是 | 否 | 磁盘加密专用 |
AEAD(Authenticated Encryption with Associated Data)模式(如 GCM、CCM)同时提供加密和认证,是现代加密的最佳实践。TLS 1.3 仅支持 AEAD 模式。
公钥加密算法(非对称加密)
RSA
Rivest-Shamir-Adleman
1977年提出的首个实用公钥密码系统,基于大整数分解难题。广泛用于 TLS 证书、数字签名和密钥交换。推荐密钥长度 ≥ 2048 位,3072 位更安全。
Diffie-Hellman
Diffie-Hellman Key Exchange
1976年提出的密钥交换协议,允许双方在不安全信道上协商共享密钥。基于离散对数难题。经典 DH 使用有限域,ECDH 使用椭圆曲线。是 TLS 的核心协议。
ECC
Elliptic Curve Cryptography / 椭圆曲线密码学
基于椭圆曲线离散对数难题的密码学体系。256 位 ECC 密钥 ≈ 3072 位 RSA 的安全强度,密钥更短、速度更快。包括 ECDSA、ECDH、Ed25519、Ed448 等算法。
SM2
SM2 椭圆曲线公钥密码算法
中国国家密码管理局发布的椭圆曲线公钥密码标准(GM/T 0003-2012),涵盖数字签名、密钥交换和公钥加密。对标 ECDSA/ECDH,256 位密钥,已纳入 ISO/IEC 国际标准。
椭圆曲线算法对比
| 算法 | 曲线 | 功能 | 密钥长度 | 特点 |
|---|---|---|---|---|
| ECDSA | P-256, P-384, P-521 | 数字签名 | 256/384/521 bit | NIST 标准,广泛使用 |
| ECDH | P-256, P-384, X25519 | 密钥交换 | 256/384 bit | TLS 核心组件 |
| Ed25519 | Curve25519 | 签名 | 256 bit | Bernstein 设计,快速安全 |
| X25519 | Curve25519 | 密钥交换 | 256 bit | TLS 1.3 默认密钥交换 |
| Ed448 | Curve448 | 签名 | 448 bit | 更高安全裕度 |
| SM2 | SM2 P-256 | 签名/加密/交换 | 256 bit | 国密标准 |
国密算法体系
中国国家密码管理局发布的商用密码算法体系,覆盖加密、签名、哈希和密钥交换:
| 算法 | 类型 | 对标国际标准 | 标准号 |
|---|---|---|---|
| SM1 | 分组密码(硬件) | AES | 保密 |
| SM2 | 公钥密码(椭圆曲线) | ECDSA/ECDH | GM/T 0003 |
| SM3 | 密码杂凑 | SHA-256 | GM/T 0004 |
| SM4 | 分组密码(软件) | AES-128 | GM/T 0002 |
| SM7 | 分组密码(轻量级) | PRESENT | GM/T 0008 |
| SM9 | 标识密码(IBC) | 无直接对标 | GM/T 0007 |
密钥交换协议
| 协议 | 基础 | 前向保密 | 典型应用 |
|---|---|---|---|
| DH (经典) | 有限域离散对数 | 是(DHE) | 传统 TLS |
| ECDH | 椭圆曲线离散对数 | 是(ECDHE) | TLS 1.2/1.3 |
| X25519 | Curve25519 | 是 | TLS 1.3 默认,WireGuard |
| RSA 密钥交换 | 大整数分解 | 否 | 旧版 TLS(已弃用) |
| PSK | 预共享密钥 | 否 | TLS-PSK,IoT |
后量子密码学
量子计算机对现有密码体系构成威胁:Shor 算法可破解 RSA/ECC,Grover 算法可将对称密钥安全强度减半。后量子密码(PQC)使用抗量子计算攻击的数学难题。
ML-KEM (Kyber)
Module-Lattice Key Encapsulation
NIST PQC 标准化的密钥封装机制(FIPS 203),基于格(Module-LWE)难题。替代 RSA/ECDH 进行密钥交换。TLS 1.3 已开始支持。
ML-DSA (Dilithium)
Module-Lattice Digital Signature
NIST PQC 标准化的数字签名算法(FIPS 204),基于格难题。替代 RSA/ECDSA 签名。签名速度极快,但签名尺寸较大。
SLH-DSA (SPHINCS+)
Stateless Hash-Based Digital Signature
NIST PQC 标准化的无状态哈希签名算法(FIPS 205),基于哈希函数安全性。签名尺寸很大,但安全假设极简,适合高安全需求场景。
发展时间线
专题:模格密码学数学基础 — 从零讲清格、多项式环、LWE/SIS 等后量子密码核心数学概念
| 年份 | 事件 |
|---|---|
| 1976 | Diffie-Hellman 密钥交换协议发布,开创公钥密码学 |
| 1977 | RSA 公钥密码系统发布 |
| 1977 | DES 成为美国联邦加密标准 |
| 1985 | 椭圆曲线密码学(ECC)概念提出(Koblitz, Miller) |
| 1987 | RC4 流密码设计(Rivest) |
| 1991 | DSA 数字签名算法标准化(FIPS 186) |
| 1993 | Blowfish 发布(Schneier) |
| 1998 | Twofish 参加 AES 竞赛;DES 被 EFF 破解 |
| 2001 | AES (Rijndael) 成为新标准(FIPS 197) |
| 2004 | 3DES 逐渐淘汰,PCI DSS 要求迁移到 AES |
| 2006 | SM4 分组密码发布 |
| 2008 | ChaCha20-Poly1305 发布(Bernstein) |
| 2010 | SM2 椭圆曲线公钥密码标准发布 |
| 2013 | Curve25519 (X25519/Ed25519) 开始广泛部署 |
| 2015 | RC4 在 TLS 中被正式禁用(RFC 7465) |
| 2018 | NIST 启动后量子密码标准化进程 |
| 2023 | 3DES 在 PCI DSS 4.0 中被正式淘汰 |
| 2024 | NIST 发布 FIPS 203/204/205(ML-KEM, ML-DSA, SLH-DSA)后量子标准 |
参考文献
- NIST (2001). "Advanced Encryption Standard (AES)". FIPS PUB 197.
- NIST (1977). "Data Encryption Standard". FIPS PUB 46.
- Rivest, R., Shamir, A., Adleman, L. (1978). "A Method for Obtaining Digital Signatures and Public-Key Cryptosystems". Communications of the ACM. 21 (2): 120–126.
- Diffie, W., Hellman, M. (1976). "New Directions in Cryptography". IEEE Transactions on Information Theory. 22 (6): 644–654.
- Bernstein, D.J. (2008). "ChaCha, a variant of Salsa20". IACR ePrint 2008.
- Koblitz, N. (1987). "Elliptic Curve Cryptosystems". Mathematics of Computation. 48 (177): 203–209.
- 国家密码管理局. GM/T 0002-2012 "SM4 分组密码算法"; GM/T 0003-2012 "SM2 椭圆曲线公钥密码算法".
- NIST (2024). "Module-Lattice-Based Key-Encapsulation Mechanism". FIPS 203 (ML-KEM).
- NIST (2024). "Module-Lattice-Based Digital Signature Algorithm". FIPS 204 (ML-DSA).
参见