單片機的內置硬件加速器是為了提高特定任務的處理速度和效率而設計的專用硬件模塊。這些加速器可以顯著減輕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:工業傳感器網絡
·傳感器節點通過硬件加速實時加密采集數據,確保傳輸到云端的機密性。