对称加密(Symmetric Encryption)
对称加密是使用相同密钥进行加密和解密的密码学技术,特点是速度快、效率高
什么是对称加密
对称加密是一种加密方法,其中发送方和接收方使用相同的密钥(或可以轻松相互推导的密钥)来加密和解密数据。
对称加密的基本流程
原始数据
│
▼
[加密算法 + 密钥]
│
▼
加密数据 → [传输] → [解密算法 + 密钥] → 解密数据
对称加密的特点
- 单一密钥:加密和解密使用相同的密钥
- 速度快:加密解密效率高,适合大数据量
- 密钥分发问题:如何安全地共享密钥是主要挑战
- 适合批量数据:适合加密大量数据或流数据
对称加密算法分类
1. 块密码(Block Cipher)
将明文分成固定长度的块(如64位、128位),逐块进行加密。
典型块密码算法
- DES:数据加密标准,使用56位密钥,64位块大小
- 3DES:三重DES,使用112/168位密钥,提高安全性
- AES:高级加密标准,支持128/192/256位密钥,128位块大小
- Blowfish:可变长度密钥(32-448位),64位块大小
- Twofish:Blowfish的继任者,支持256位密钥
2. 流密码(Stream Cipher)
将明文逐字节或逐位加密,通常用于实时通信和流媒体加密。
典型流密码算法
- RC4:广泛使用的流密码,但已发现安全漏洞
- Salsa20:现代安全的流密码
- ChaCha20:Salsa20的改进版本,被TLS广泛采用
DES(Data Encryption Standard)
DES是美国国家标准局在1977年发布的加密标准,是第一个广泛应用的公开加密算法。
DES算法特点
- 密钥长度:56位有效密钥(64位中有8位奇偶校验位)
- 块大小:64位
- 轮数:16轮Feistel网络
- 结构:Feistel网络结构
DES加密过程
- 初始置换(IP):64位明文进行初始置换
- 16轮迭代:每轮使用子密钥进行加密
- 扩展置换(E):将32位扩展为48位
- 与子密钥异或:48位数据与48位子密钥异或
- S盒替换:8个S盒将48位转换为32位
- P盒置换:对32位进行置换
- 最终置换(FP):16轮后的结果进行最终置换
DES的弱点
- 密钥长度短:56位密钥容易遭受暴力破解
- 半弱密钥:某些密钥组合会产生较弱的安全性
- 互补特性:DES有特定的数学特性可能被利用
3DES(Triple DES)
3DES通过执行三次DES操作来解决DES的安全性问题。
3DES实现方式
-
三重DES-EEE3:加密-加密-加密,使用三个不同密钥
C = EK3(EK2(EK1(P))) -
三重DES-EDE3:加密-解密-加密,使用三个不同密钥
C = EK3(DK2(EK1(P))) -
三重DES-EDE2:加密-解密-加密,使用两个不同密钥(K1=K3)
C = EK1(DK2(EK1(P)))
3DES安全性
- 密钥长度:112位(双密钥)或168位(三密钥)
- 安全性:显著提高,抗暴力破解能力强
- 缺点:速度慢,效率低
AES(Advanced Encryption Standard)
AES是美国国家标准与技术研究院(NIST)在2001年发布的加密标准,取代DES。
AES算法特点
- 密钥长度:128、192或256位
- 块大小:128位
- 轮数:10(128位密钥)、12(192位密钥)、14(256位密钥)
- 结构:替代-置换网络(SP网络)
AES加密过程
- 初始轮密钥加:明文与初始轮密钥异或
- 多轮迭代(除最后一轮):
- 字节替换(SubBytes):使用S盒进行非线性替换
- 行移位(ShiftRows):循环移位操作
- 列混合(MixColumns):线性变换,提供扩散性
- 轮密钥加(AddRoundKey):与轮密钥异或
- 最终轮:不包含列混合操作
- 字节替换
- 行移位
- 轮密钥加
AES的安全性
- 强安全性:至今未发现有效攻击方法
- 高效性:硬件和软件实现都高效
- 灵活性:支持多种密钥长度
- 广泛应用:被广泛采用和标准化
AES工作模式
块密码需要指定工作模式来处理超过块大小的数据。
1. 电子密码本模式(ECB)
最简单的模式,将明文分成块独立加密。
P1 P2 P3 ...
│ │ │
E E E
│ │ │
C1 C2 C3 ...
优点:简单、并行处理 缺点:相同明文块产生相同密文块,不安全 用途:不推荐用于加密,仅适用于加密随机数据
2. 密码块链接模式(CBC)
每个明文块先与前一个密文块异或再加密,第一个块使用初始化向量(IV)。
IV P1 P2 P3
│ │ │ │
⊕ ⊕ ⊕
│ │ │ │
E E E
│ │ │ │
C0 C1 C2 C3
优点:相同明文块产生不同密文块 缺点:串行处理,错误传播 用途:广泛使用,如TLS、文件加密
3. 计数器模式(CTR)
将计数器加密后与明文异或,计数器每块递增。
CTR CTR+1 CTR+2
│ │ │
E E E
│ │ │
C1 C2 C3
⊕ ⊕ ⊕
│ │ │
P1 P2 P3
优点:并行处理,随机访问 缺点:计数器不能重复使用 用途:流媒体加密,磁盘加密
4. 伽罗瓦计数器模式(GCM)
CTR模式结合认证机制,提供加密和完整性验证。
加密过程(同CTR)
│
├── 密文
└── 认证标签
优点:提供认证加密,性能好 缺点:实现复杂 用途:现代TLS协议,高性能需求场景
密钥管理
对称加密最大的挑战是密钥的安全分发和管理。
密钥生成
- 随机生成:使用安全的随机数生成器
- 密钥派生:从口令或主密钥派生
- 密钥交换:通过非对称加密安全交换
密钥分发方法
- 预共享密钥:物理方式提前分发
- 密钥交换协议:使用Diffie-Hellman等协议
- 密钥分发中心:集中式密钥管理
密钥生命周期
- 生成:安全生成密钥
- 分发:安全分发给授权方
- 使用:正确使用密钥
- 更新:定期更新密钥
- 销毁:安全销毁不再使用的密钥
对称加密应用场景
1. 数据存储加密
- 全盘加密:BitLocker、FileVault等
- 文件加密:7-Zip、WinRAR等
- 数据库加密:列加密、透明数据加密
2. 网络通信加密
- VPN:IPSec使用AES等算法
- TLS:HTTPS、FTPS等安全协议
- SSH:安全远程连接
3. 实时通信
- 视频会议:视频流加密
- VoIP:语音通话加密
- 即时消息:端到端加密
对称加密算法比较
| 特性 | DES | 3DES | AES | Blowfish |
|---|---|---|---|---|
| 密钥长度 | 56位 | 112/168位 | 128/192/256位 | 32-448位 |
| 块大小 | 64位 | 64位 | 128位 | 64位 |
| 轮数 | 16 | 48 | 10/12/14 | 16 |
| 安全性 | 低 | 中 | 高 | 中高 |
| 速度 | 中 | 慢 | 快 | 快 |
| 应用 | 已淘汰 | 过渡期 | 广泛 | 有限 |
安全注意事项
1. 选择合适的算法
- 避免使用:DES、RC4等已知不安全算法
- 推荐使用:AES(特别是AES-256)
- 考虑因素:安全性、性能、标准化程度
2. 正确使用工作模式
- 避免ECB模式:用于结构化数据不安全
- 推荐CBC或CTR模式:通用应用
- GCM模式:需要认证加密的场景
3. 密钥管理
- 强随机密钥:使用CSPRNG生成
- 定期更新:定期更换密钥
- 安全存储:密钥必须安全存储
4. 实现安全
- 使用成熟库:避免自己实现加密算法
- 防范侧信道攻击:考虑时序攻击等
- 正确处理错误:避免信息泄露
🔗 相关链接
最后更新:2025-01-26 维护规范:详见 笔记规范文档