功能架构

以下按芯片系列列出非对称加密引擎的功能规格,包括基本功能等。

不支持。

OTP 密钥支持

除软件密钥外,引擎还支持将私钥预烧录到 OTP 区域。OTP 密钥与引擎通过物理隔离机制直连,无法被外部读取或篡改,是生产环境中保护核心私钥的推荐方案。

不支持。

工作原理

非对称加密引擎通过 APB 总线与 CPU 连接,采用 Slave 模式工作。引擎内部包含运算单元、存储单元和控制寄存器,CPU 通过读写这些寄存器完成运算参数配置和结果获取。

为保障多任务环境下的并发安全,引擎内置硬件互斥锁机制。当 Secure 状态的 CPU 持有锁时,所有 Non-secure 访问均会被阻止;若 Non-secure CPU 持有锁,Secure CPU 可通过专用抢占寄存器强制获取使用权,确保安全任务优先。

工作流程

引擎的标准操作流程如下:

  1. 获取互斥锁:CPU 获取引擎的硬件互斥锁

  2. 写入运算参数:将算法参数写入引擎的存储单元

  3. 配置运算模式:设置控制寄存器选择所需的运算模式

  4. 启动运算:使能引擎开始执行计算

  5. 监测运算进度:轮询状态寄存器监测运算进度

  6. 获取运算结果:检测到结束标志位后,从存储单元读取运算结果

  7. 释放互斥锁:释放互斥锁,使其他任务可以使用引擎

异常处理

引擎具备以下异常处理机制:

  • 错误识别:状态寄存器包含错误标志位,轮询时检测到错误可立即终止流程

  • 错误反馈:API 返回预定义错误码(非零值表示错误,0 表示正常完成)

使用方法

介绍了引擎的工作原理和流程后,以下介绍引擎的具体使用方法。引擎提供了两种使用方式:底层直接 API 和 MbedTLS 集成 API。

开发阶段

在开发阶段,用户通常使用软件密钥进行功能验证和调试:

  1. 选择 API 类型

    • 使用底层 API 直接控制引擎,功能更全面,但需要了解引擎工作原理

    • 使用 MbedTLS 集成 API,接口更通用,但仅支持软件密钥

  2. 配置 SDK

    • 在 SDK menuconfig 中启用非对称加密引擎相关选项

    • 根据需求选择支持的算法曲线

  3. 调用 API

    • 参考示例代码调用相应 API 完成密钥生成、签名或验签操作

生产阶段

在生产阶段,推荐使用 OTP 密钥以获得更高安全性:

  1. 生成密钥对

    • 开发阶段生成公私钥对

    • 保存公钥用于验签,私钥用于 OTP 烧录

  2. 烧录 OTP 密钥

    • 将私钥烧录到 OTP 指定地址(参见上文 OTP 密钥表)

    • 配置密钥读保护/写保护位

    警告

    OTP(One Time Programmable)区域只能写入一次,无法擦除或撤销。请在执行写入命令前,仔细核对地址和数据。

  3. 使用底层 API

    • 使用 OTP 密钥时必须调用底层 API

    • MbedTLS API 不支持 OTP 密钥

API 接口

无论使用软件密钥还是 OTP 密钥,Realtek 都提供了完善的 API 接口,用户无需关心底层寄存器操作细节。

底层 API

底层 API 提供对引擎的完整控制,支持软件密钥和 OTP 密钥:

  • 密钥生成 API:生成 ECC 或 RSA 密钥对

  • 签名 API:使用私钥对数据进行数字签名

  • 验签 API:使用公钥验证签名有效性

  • 密钥交换 API:执行 ECDH 密钥交换

  • OTP 密钥配置 API:配置 OTP 密钥的访问权限

MbedTLS 集成 API

为提高兼容性,Realtek 已将硬件加速引擎集成到 MbedTLS API 中。用户可以使用标准的 MbedTLS ECDSA/ECDH API,底层自动调用硬件加速。MbedTLS API 仅支持软件密钥,不支持 OTP 密钥。由于硬件限制,已关闭 MbedTLS 的 SECP521R1 曲线支持。

支持的算法与曲线

各芯片支持的算法曲线如下,ROM 中已预置常用曲线参数,无需用户额外提供:

不支持。