单片机的内置硬件加速器是为了提高特定任务的处理速度和效率而设计的专用硬件模块。这些加速器可以显著减轻CPU的负担,提高系统的整体性能。常见的硬件加速器包括DMA控制器、硬件乘法器、硬件除法器、加密/解密加速器、哈希算法加速器等。下面我们一起来看下加密/解密加速器。
1. AES的诞生与核心特点
取代DES的必然性
AES的前身是DES(Data Encryption Standard),但随着计算机算力的提升,DES的56位密钥长度已无法抵御暴力破解。1997年NIST发起公开竞赛,最终比利时密码学家设计的Rijndael算法胜出,成为AES标准。
核心优势
·密钥灵活:支持128、192、256位三种密钥长度,安全性递增。
·高效加解密:基于分组密码设计,适合硬件加速和并行计算。
·抗攻击性强:至今无已知的实用化数学漏洞攻击手段。
2. AES算法结构与加密流程
AES将明文划分为128位(16字节)的块进行加密,核心流程包含多轮迭代的替代和置换操作。以128位密钥为例,加密过程共10轮(不同密钥长度轮数不同)。
2.1 加密核心步骤
.初始轮密钥加(AddRoundKey)
将明文块与首轮密钥按字节异或(XOR),作为后续处理的输入。
.轮函数迭代(共10轮)
每轮包含四个关键操作:
·字节代换(SubBytes):通过S盒(非线性替换表)将每个字节映射为新值,提供混淆性。
·行移位(ShiftRows):将状态矩阵的每行循环左移不同位数(第0行不移,第1行移1位,依此类推),破坏数据局部性。
·列混淆(MixColumns):对每列进行矩阵乘法运算,扩散比特间的关联性。
·轮密钥加(AddRoundKey):将当前轮密钥与状态矩阵异或。
.最终轮(省略MixColumns)
第10轮仅执行SubBytes、ShiftRows和AddRoundKey,提升算法安全性。
2.2 密钥扩展(Key Expansion)
通过密钥扩展算法,将初始密钥生成多轮使用的子密钥:
·轮常量(Rcon):每轮使用不同的常数消除对称性。
·S盒替换与循环移位:确保子密钥不可预测。
3. AES的工作模式
为加密长于128位的数据,AES需结合工作模式,常见模式包括:
·ECB(电子密码本):每个块独立加密,简单但相同明文生成相同密文,易遭模式分析攻击。
·CBC(密码块链接):引入初始化向量(IV),前一块密文与当前明文异或后再加密,提升安全性。
·CTR(计数器模式):将计数器加密后与明文异或,支持并行计算,适合实时流数据。
·GCM(伽罗瓦/计数器模式):结合CTR加密和GHASH认证,实现加密与完整性校验(如TLS 1.3标准)。
4. AES-GCM算法与硬件加速原理
4.1 算法流程
·加密过程:明文通过AES-CTR模式加密,同时使用Galois域乘法生成认证标签(TAG)。
·认证机制:关联数据(AAD)和密文共同参与TAG计算,确保数据完整性。
4.2 硬件加速优势
·并行计算:硬件模块独立处理加解密与认证,减少CPU占用。
·时钟周期优化:专用电路实现AES轮函数,速度提升10倍以上(对比软件实现)。
5. STM32硬件加密模块解析
5.1 支持型号
·STM32H7/H5系列:集成AES-256硬件加速器,支持GCM模式。
·L4+/U5系列:部分型号支持AES-128/256,需结合DMA优化吞吐量。
5.2 关键寄存器与功能
·AES_CR:控制模式(如GCM)、密钥长度、加解密方向。
·AES_DIN/DOUT:数据输入/输出寄存器,支持DMA传输。
·AES_IVR:初始化向量(IV)配置,需确保唯一性。
6.典型应用案例
案例1:安全固件升级
·使用AES-GCM加密固件镜像,通过硬件加速实现快速解密与认证。
·密钥通过STM32的OTP(One-Time Programmable)区域保护。
案例2:工业传感器网络
·传感器节点通过硬件加速实时加密采集数据,确保传输到云端的机密性。