《物联网数据加密技术实战》
第3章 对称加密算法(AES)

3、对称加密算法(AES)

3.1 AES 原理概述

AES(Advanced Encryption Standard,高级加密标准)是美国联邦政府采用的一种区块加密标准,用于替代原先的 DES。AES 属于对称加密算法,即加密和解密使用相同的密钥。其核心原理基于 代换-置换网络(SPN),通过多轮重复的“字节代换”、“行移位”、“列混合”和“轮密钥加”操作,将明文数据彻底打乱,从而保证数据机密性。

📌 AES 加密流程(128位数据块)

明文 轮密钥加 (初始轮) 密钥 K 9轮主循环 字节代换 行移位 列混合 轮密钥加 最终轮 (无列混合) 密文 AES-128 加密流程:10轮迭代(初始轮+9轮主循环+最终轮)

3.2 密钥长度与轮数

AES 支持三种密钥长度,对应不同的安全强度和加密轮数:

AES 变体 密钥长度 轮数 分组大小
AES-128 128 位 (16 字节) 10 轮 128 位
AES-192 192 位 (24 字节) 12 轮 128 位
AES-256 256 位 (32 字节) 14 轮 128 位

🔑 密钥长度与安全强度对比

AES-128 10轮 · 安全 AES-192 12轮 · 更安全 AES-256 14轮 · 最安全 安全强度 ★★★ 安全强度 ★★★★ 安全强度 ★★★★★

3.3 工作模式详解

AES 作为分组密码,需要配合工作模式来处理超过 128 位的数据。以下是五种常见模式:

📊 五种工作模式对比

模式 全称 特点 适用场景
ECB电子密码本简单、可并行,但相同明文块产生相同密文❌ 不推荐用于加密数据
CBC密码分组链接每个明文块与前一个密文块异或,需 IV✅ 文件加密、数据传输
CFB密码反馈将分组密码转为流密码,可处理任意长度✅ 实时数据流
OFB输出反馈生成密钥流,错误不传播✅ 噪声信道传输
CTR计数器使用计数器生成密钥流,可并行加密✅ 高性能场景、磁盘加密

🔄 CBC 模式加密流程示意图

IV P1 ⊕ AES C1 P2 ⊕ AES C2 CBC 模式:每个明文块与前一个密文块异或后再加密

3.4 填充方式

由于 AES 是分组密码(每组 16 字节),当明文长度不是 16 的倍数时,需要进行填充。常见的填充方式如下:

  • 🔹 PKCS7 / PKCS5:最常用,缺几个字节就填充几个值为该数量的字节。例如缺 3 字节,则填充 0x03 0x03 0x03。
  • 🔹 Zero Padding:用 0x00 填充剩余字节。缺点是无法区分数据末尾的 0 与填充的 0。
  • 🔹 ISO 10126:最后一个字节为填充字节数,其余填充随机字节(已废弃)。
  • 🔹 ANSI X.923:填充 0x00,最后一个字节为填充字节数。
  • 🔹 No Padding:要求明文长度必须是 16 的倍数,否则报错。

📦 PKCS7 填充示例(明文 10 字节,需填充 6 字节)

明文数据 (10B) 明文数据 (10B) 填充 6B 0x06 × 6 总长度 = 16 字节(16 的倍数)

3.5 Python 代码示例(AES-CBC 加密与解密)

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
import os

# 生成随机密钥和 IV
key = os.urandom(16)   # AES-128
iv  = os.urandom(16)

# 待加密数据
plaintext = b"Hello, IoT Security! AES-CBC Mode."

# 加密
cipher = AES.new(key, AES.MODE_CBC, iv)
ciphertext = cipher.encrypt(pad(plaintext, AES.block_size))

print("密文 (hex):", ciphertext.hex())

# 解密
cipher_dec = AES.new(key, AES.MODE_CBC, iv)
decrypted = unpad(cipher_dec.decrypt(ciphertext), AES.block_size)

print("解密结果:", decrypted.decode())

💡 安全提示

  • ❌ ECB 模式:相同明文块产生相同密文块,存在模式泄露风险,禁止用于加密敏感数据。
  • ✅ 推荐使用 CBC 或 CTR 模式,并配合随机 IV(初始化向量)。
  • 🔑 AES-256 提供最高安全等级,适用于物联网网关、云端数据存储等场景。
  • 📦 填充方式建议使用 PKCS7,兼容性最好。

专注课程资料整理