对称加密(Symmetric Encryption)

对称加密是使用相同密钥进行加密和解密的密码学技术,特点是速度快、效率高


什么是对称加密

对称加密是一种加密方法,其中发送方和接收方使用相同的密钥(或可以轻松相互推导的密钥)来加密和解密数据。

对称加密的基本流程

原始数据
    │
    ▼
[加密算法 + 密钥]
    │
    ▼
加密数据 → [传输] → [解密算法 + 密钥] → 解密数据

对称加密的特点

  1. 单一密钥:加密和解密使用相同的密钥
  2. 速度快:加密解密效率高,适合大数据量
  3. 密钥分发问题:如何安全地共享密钥是主要挑战
  4. 适合批量数据:适合加密大量数据或流数据

对称加密算法分类

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加密过程

  1. 初始置换(IP):64位明文进行初始置换
  2. 16轮迭代:每轮使用子密钥进行加密
    • 扩展置换(E):将32位扩展为48位
    • 与子密钥异或:48位数据与48位子密钥异或
    • S盒替换:8个S盒将48位转换为32位
    • P盒置换:对32位进行置换
  3. 最终置换(FP):16轮后的结果进行最终置换

DES的弱点

  • 密钥长度短:56位密钥容易遭受暴力破解
  • 半弱密钥:某些密钥组合会产生较弱的安全性
  • 互补特性:DES有特定的数学特性可能被利用

3DES(Triple DES)

3DES通过执行三次DES操作来解决DES的安全性问题。

3DES实现方式

  1. 三重DES-EEE3:加密-加密-加密,使用三个不同密钥

    C = EK3(EK2(EK1(P)))
    
  2. 三重DES-EDE3:加密-解密-加密,使用三个不同密钥

    C = EK3(DK2(EK1(P)))
    
  3. 三重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加密过程

  1. 初始轮密钥加:明文与初始轮密钥异或
  2. 多轮迭代(除最后一轮):
    • 字节替换(SubBytes):使用S盒进行非线性替换
    • 行移位(ShiftRows):循环移位操作
    • 列混合(MixColumns):线性变换,提供扩散性
    • 轮密钥加(AddRoundKey):与轮密钥异或
  3. 最终轮:不包含列混合操作
    • 字节替换
    • 行移位
    • 轮密钥加

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协议,高性能需求场景


密钥管理

对称加密最大的挑战是密钥的安全分发和管理。

密钥生成

  1. 随机生成:使用安全的随机数生成器
  2. 密钥派生:从口令或主密钥派生
  3. 密钥交换:通过非对称加密安全交换

密钥分发方法

  1. 预共享密钥:物理方式提前分发
  2. 密钥交换协议:使用Diffie-Hellman等协议
  3. 密钥分发中心:集中式密钥管理

密钥生命周期

  1. 生成:安全生成密钥
  2. 分发:安全分发给授权方
  3. 使用:正确使用密钥
  4. 更新:定期更新密钥
  5. 销毁:安全销毁不再使用的密钥

对称加密应用场景

1. 数据存储加密

  • 全盘加密:BitLocker、FileVault等
  • 文件加密:7-Zip、WinRAR等
  • 数据库加密:列加密、透明数据加密

2. 网络通信加密

  • VPN:IPSec使用AES等算法
  • TLS:HTTPS、FTPS等安全协议
  • SSH:安全远程连接

3. 实时通信

  • 视频会议:视频流加密
  • VoIP:语音通话加密
  • 即时消息:端到端加密

对称加密算法比较

特性DES3DESAESBlowfish
密钥长度56位112/168位128/192/256位32-448位
块大小64位64位128位64位
轮数164810/12/1416
安全性中高
速度
应用已淘汰过渡期广泛有限

安全注意事项

1. 选择合适的算法

  • 避免使用:DES、RC4等已知不安全算法
  • 推荐使用:AES(特别是AES-256)
  • 考虑因素:安全性、性能、标准化程度

2. 正确使用工作模式

  • 避免ECB模式:用于结构化数据不安全
  • 推荐CBC或CTR模式:通用应用
  • GCM模式:需要认证加密的场景

3. 密钥管理

  • 强随机密钥:使用CSPRNG生成
  • 定期更新:定期更换密钥
  • 安全存储:密钥必须安全存储

4. 实现安全

  • 使用成熟库:避免自己实现加密算法
  • 防范侧信道攻击:考虑时序攻击等
  • 正确处理错误:避免信息泄露

🔗 相关链接


最后更新:2025-01-26 维护规范:详见 笔记规范文档

对称加密 AES DES 工作模式 密钥管理