[STM32U3] 【STM32U385RG 测评】06+AES加密和解密测试

[复制链接]
 楼主| 聪聪哥哥 发表于 2025-8-6 21:37 | 显示全部楼层 |阅读模式
一: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 软件配置如下所示: 1.png
三:软件代码如下所示:
3.1 初始化 AES
  1. <blockquote>void MX_AES_Init(void)
3.2 AES 加密和解密过程
  1.   if (HAL_CRYP_Encrypt(&hcryp, Plaintext, PLAINTEXT_SIZE, EncryptedText, TIMEOUT_VALUE) != HAL_OK)
  2.   {
  3.     /* Processing Error */
  4.     Error_Handler();
  5.   }
  6.   /*Compare results with expected buffer*/
  7.   if(memcmp(EncryptedText, Ciphertext, 16) != 0)
  8.   {
  9.     /* Processing Error */
  10.     Error_Handler();
  11.   }
  1.   if(memcmp(DecryptedText, Plaintext, 16) != 0)
  2.   {
  3.     /* Processing Error */
  4.     Error_Handler();
  5.   }
  6.   else
  7.   {
  8.     /* Right Encryption : Turn LD2 on */
  9.     BSP_LED_On(LD2);
  10.   }
四:实物验证:
验证正常,LED灯闪烁
WeChat_20250806213021 00_00_00-00_00_30.gif
您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

222

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部