非对称加密引擎

概述

非对称加密引擎(Asymmetric Crypto Engine,简称 PKE)是 SoC 芯片内专门用于处理公钥密码学运算的硬件加速单元。相比软件实现,硬件加速引擎能够显著提升非对称加密算法的执行效率,同时通过物理隔离机制保护密钥安全,在物联网安全系统中具有重要作用。

应用背景

在物联网设备的安全场景中,非对称加密算法被广泛应用于数字签名、密钥交换和身份认证等关键安全流程。然而,这类算法涉及大量复杂数学运算(如大数模幂运算、椭圆曲线点乘运算等),若完全由软件实现,会消耗大量 CPU 资源且执行效率较低。非对称加密引擎通过专用硬件电路实现这些核心运算,可在保证安全性的前提下大幅提升运算速度。

工作原理

非对称加密引擎通过 APB 总线与 CPU 连接,内部包含专门的运算单元和存储单元。当应用层需要执行非对称加密运算时,CPU 将运算参数写入引擎的寄存器和存储区,配置控制寄存器启动运算,引擎硬件自动完成核心密码学运算并返回结果。整个过程对上层应用透明,用户通过 API 即可完成操作。

安全特性

非对称加密引擎在架构设计上充分考虑了安全防护需求:

  • 物理隔离:引擎内部存储单元与系统总线隔离,防止密钥被总线嗅探攻击窃取

  • OTP 密钥支持:支持将私钥预烧录到 OTP(One Time Programmable)区域,OTP 密钥与引擎直连,无法被外部读取或篡改

  • 侧信道攻击防护:部分芯片型号支持 DPA(差分功耗分析)、SPA(简单功耗分析)和 Timing Attack(时序攻击)防护

  • TrustZone 支持:部分芯片型号支持 ARM TrustZone 技术,可自动识别 CPU 的安全/非安全访问状态

方案优点

相比纯软件实现,非对称加密引擎具有以下优势:

  • 高性能:硬件加速可大幅缩短运算时间,减少 CPU 占用

  • 低功耗:专用硬件电路比通用 CPU 运行软件算法功耗更低

  • 高安全性:物理隔离机制和 OTP 密钥存储有效防止密钥泄露

  • 易用性:提供封装良好的 API 接口,用户无需关注底层硬件细节

功能架构

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

RTL8721Dx:

不支持。

OTP 密钥支持

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

RTL8721Dx:

不支持。

工作原理

非对称加密引擎通过 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 中已预置常用曲线参数,无需用户额外提供:

RTL8721Dx:

不支持。