一:STM32U385 芯片手册中有关AES的介绍
这些设备嵌入了两个AES加速器:SAES和AES。带有硬件独特密钥的SAES能够抵御差分功率分析(DPA)和相关旁路攻击。SAES可以通过专用的硬件总线与速度更快的AES共享其当前的密钥寄存器信息。
SAES和AES均可用于使用AES算法对数据进行加密和解密。它是根据联邦信息处理标准出版物(FIPSPUB197,Nov2001)定义的高级加密标准(AES)的完全合规实现。
支持多种链模式,密钥长度为128位或256位。
SAES嵌入了对差分功率分析(DPA)和相关侧信道攻击的保护。
为了提升其所处理的密钥的保密性,SAES 可以生成硬件秘密密钥,这些密钥可以被应用使用,但应用***无法直接读取其明文。这些密钥可以采用一种设备非易失且唯一的总密钥(256位)或由应用定义的、存储在备份寄存器中的总密钥(同样为256位),这些密钥在启动时被写入并锁定。在发生安全漏洞的情况下,这些硬件秘密密钥还可以被立即禁用。
SAES外设通过硬件连接到真正的随机数发生器RNG(用于侧信道电阻)。它还与更快的AES硬件加速器相连,以便在SAES外围设备允许的情况下共享硬件密钥。
二:STM32 cube MX 软件配置如下所示:
三:软件代码如下所示:
3.1 初始化 AES
- <blockquote>void MX_AES_Init(void)
3.2 AES 加密和解密过程
- if (HAL_CRYP_Encrypt(&hcryp, Plaintext, PLAINTEXT_SIZE, EncryptedText, TIMEOUT_VALUE) != HAL_OK)
- {
- /* Processing Error */
- Error_Handler();
- }
- /*Compare results with expected buffer*/
- if(memcmp(EncryptedText, Ciphertext, 16) != 0)
- {
- /* Processing Error */
- Error_Handler();
- }
- if(memcmp(DecryptedText, Plaintext, 16) != 0)
- {
- /* Processing Error */
- Error_Handler();
- }
- else
- {
- /* Right Encryption : Turn LD2 on */
- BSP_LED_On(LD2);
- }
四:实物验证:
验证正常,LED灯闪烁
|