你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【STM32H5 评测】Part3 STM32H5E5 密码学加速性能测试

[复制链接]
神经蛙2233 发布时间:2026-10-30 17:41

【STM32H5 评测】Part3 STM32H5E5 密码学加速性能测试

H5E5这个型号,虽然有H5全系标配的密码学硬件(RNG PKA HASH obkey等),但它不是主打安全的型号,缺少AES SAES等对称加密硬件。最容易令人迷惑的是,E5虽然有PKA(支持RSA 、ECDSA等非对称加密)硬件,但是却只有一半功能,E5的PKA只能验签,不能签名。虽然但是,E5也足够应对绝大多数安全场景的需求了,签名在云端服务器或工厂的计算机上做就可以,终端产品主要是验签。

1. 测试对象

  • 芯片:STM32H5E5ZJ(NUCLEO-H5E5ZJ 开发板)
  • 核心主频:HCLK = 250 MHz
  • 被测外设:RNG(硬件随机数)、HASH(SHA-256 硬件加速)、PKA(公钥加速器)

2. 测试目标

  1. 验证 RNG、HASH、PKA 三个密码学外设的功能正确性
  2. 测量各外设的运算耗时 / 吞吐速率

3. 测试步骤

3.1 CubeMX 配置外设生成代码框架

在 STM32CubeMX 中启用以下外设并生成代码:

外设 关键配置
RNG 时钟错误检测 CED 使能
HASH 算法 = SHA-256,数据格式 = All bytes reversed
PKA 默认(使能即可,无额外参数)

屏幕截图2026-10-29212726.png

3.2 从 STM32Cube 固件库移植参考代码

从以下路径提取测试所需的曲线参数和测试向量:

文件 来源 内容
prime256v1.c/h Projects/STM32H573I-DK/Examples/PKA/PKA_ECDSA_Sign NIST P-256 曲线参数(素数 p、系数 A/B、生成元 G、阶 n)
sig_vectors.c/h Projects/NUCLEO-H5E5ZJ/Examples/PKA/PKA_ECDSA_Verify NIST CAVP [P-256, SHA-256] 签名验证测试向量(消息、公钥、签名 R/S、预期 hash)

4. 关键代码

4.1 RNG 随机数生成

static HAL_StatusTypeDef rng_bytes(uint8_t *out, uint32_t len)
{
  uint32_t val, i = 0;
  while (i < len)
  {
    if (HAL_RNG_GenerateRandomNumber(&hrng, &val) != HAL_OK)
      return HAL_ERROR;
    uint8_t *p = (uint8_t *)&val;
    for (int b = 0; b < 4 && i < len; b++)
      out[i++] = p[3 - b];   /* big-endian */
  }
  return HAL_OK;
}

4.2 SHA-256 正确性 + 吞吐

/* correctness: 对比 NIST CAVP 预计算 hash */
HAL_HASH_Start(&hhash, (uint8_t *)SigVer_Msg, SigVer_Msg_len, hash_buf, 5000);
memcmp(hash_buf, SigVer_Hash_Msg, 32);

/* throughput: 8KB buffer 循环 40 次 */
for (int i = 0; i < 40; i++)
  HAL_HASH_Start(&hhash, big_msg, 8192, hash_buf, 5000);

4.3 ECDSA P-256 验签

PKA_ECDSAVerifInTypeDef v = {0};
v.primeOrderSize  = prime256v1_Order_len;
v.modulusSize     = prime256v1_Prime_len;
v.coefSign        = prime256v1_A_sign;
v.coef            = prime256v1_absA;
v.modulus         = prime256v1_Prime;
v.basePointX      = prime256v1_GeneratorX;
v.basePointY      = prime256v1_GeneratorY;
v.primeOrder      = prime256v1_Order;
v.pPubKeyCurvePtX = SigVer_Qx;      /* NIST 测试向量公钥 */
v.pPubKeyCurvePtY = SigVer_Qy;
v.RSign           = SigVer_R;
v.SSign           = SigVer_S;
v.hash            = SigVer_Hash_Msg;

HAL_PKA_ECDSAVerif(&hpka, &v, 10000);
HAL_PKA_ECDSAVerif_IsValidSignature(&hpka);

5. 测试结果

Release 版本(HCLK 250 MHz)实测数据:

# 测试项 指标 结果
1 RNG 256-bit 随机数 生成耗时 < 1 ms
2a SHA-256 正确性 与 NIST CAVP 预计算 hash 对比 匹配
2b SHA-256 吞吐 40 × 8KB = 320 KB 7 ms,44.6 MB/s
3 ECDSA P-256 验签(正向) NIST CAVP 测试向量 12 ms,VALID
4 ECDSA P-256 验签(负向) 篡改 hash 后重验 12 ms,INVALID(预期)

6. 结论

  1. RNG / HASH / PKA 硬件加速均工作正常,功能正确性与 NIST CAVP 参考向量一致。
  2. SHA-256 吞吐约 44.6 MB/s(250 MHz),为纯软件实现的数量级以上。
  3. ECDSA P-256 单次验签约 12 ms。
  4. STM32H5E5 的 PKA 处于 Limited Mode(状态寄存器 PKA_SR_LMF 恒为 1),硬件仅支持 ECDSA 签名验证,不支持密钥对生成(ECCMul)和签名生成(ECDSASign)。签名功能需要选用 STM32H573 等带 Full PKA 的型号。

测试环境:CubeMX 生成框架 + HAL 库 + ARM GNU Toolchain 14.3.1,Release 优化,ICACHE 开启

赞 收藏 评论0 发布时间:2026-10-30 17:41

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版