概述

基本功能:

  1. 密钥生成:

    • 利用椭圆曲线的数学性质生成公钥和私钥。

  2. 数字签名:

    • 支持签名算法:ECDSA

    • ECC 运算曲线支持情况:

      • 素数域曲线(Prime field):192~256 位

      • 蒙哥马利曲线(Montgomery Curves):Curve25519

  3. 密钥交换:支持 ECDH。

  4. OTP 密钥端口(仅用于 ECDSA 公钥生成/签名)

    • 物理不可逆写入

    • 物理架构隔离(OTP 密钥与 ECC 引擎直连,防总线嗅探攻击)

驱动架构:

  • ECC 硬件加密引擎是专用于数字签名算法的安全芯片模块,通过硬件电路直接实现密码学运算。其采用物理防护机制保障密钥安全,相比软件方案可提升运算效率。

  • ECC 软件负责上层协议的解析和命令调度,硬件层通过专门设计的电路完成核心加密运算任务。软件层架构图如下图:

../../_images/crypto_lite_driver_arch.svg

ECDSA OTP 密钥

ECDSA 引擎可以通过以下两种方式下载私钥:

  • 用户将私钥传递给 API,由 API 将其写入 ECDSA 寄存器中。

  • ECDSA 自动下载 ECDSA OTP 密钥。

OTP 物理映射可存储两个供 ECDSA 使用的私钥,仅能通过 ECDSA 触发访问,且无法被篡改或读取。前提是私钥需预先烧录到 OTP 物理映射中。

OTP 密钥

地址

大小

默认值

描述

ECDSA_PRI_KEY1

物理映射 0x280

32 字节

每个字节为 0xFF

如果 OTPKEY=1,将此密钥加载至 ECDSA 引擎作为私钥

ECDSA_PRI_KEY2

物理映射 0x2A0

32 字节

每个字节为 0xFF

如果 OTPKEY=2,将此密钥加载至 ECDSA 引擎作为私钥

ECDSA_PRI_KEY1_Read_Protection

物理映射 0x366[2]

1 比特

1

0:启用 ECDSA Key1 读保护,禁止密钥被读出

1:禁用 ECDSA Key1 读保护

ECDSA_PRI_KEY1_Write_Protection

物理映射 0x366[3]

1 比特

1

0:启用 ECDSA Key1 写保护,禁止密钥被黑客写为全 0

1:禁用 ECDSA Key1 写保护

ECDSA_PRI_KEY2_Read_Protection

物理映射 0x366[4]

1 比特

1

0:启用 ECDSA Key2 读保护,禁止密钥被读出

1:禁用 ECDSA Key2 读保护

ECDSA_PRI_KEY2_Write_Protection

物理映射 0x366[5]

1 比特

1

0:启用 ECDSA Key2 写保护,禁止密钥被黑客写为全 0

1:禁用 ECDSA Key2 写保护

使用方法

  1. 硬件接口特性: 仅支持 Slave 模式, 通过 APB 总线与 CPU 连接。

  2. 操作流程:

    • CPU 首先获取互斥锁

    • 将算法参数写入引擎存储单元

    • 设置控制寄存器选择运算模式

    • 使能引擎开始计算

    • 轮询状态寄存器监测进度

    • 检测到结束标志位后

    • 从存储单元读取运算结果

    • 释放互斥锁

  3. 异常处理机制

    • 错误识别

      • 状态寄存器包含错误标志位

      • 轮询时检测到错误立即终止流程

    • 错误反馈

      • API 返回预定义错误码(非零值)

      • 正常完成返回状态码 0

API

Realtek 提供了底层 API,用户不需要关心具体的寄存器操作方法和流程。 另外为了更好的适用性,Realtek 已将硬件加速引擎集成到 MbedTLS API 中。MbedTLS ECDSA API 只支持 Software 密钥。使用 OTP 密钥时需要用底层 API。 由于硬件限制,Realtek 关闭了 MbedTLS 的 SECP521R1 曲线支持。ROM 中目前内置下列常用曲线参数:

  • SECP256R1

  • SECP224R1

  • SECP192R1

  • SECP256K1

  • SECP224K1

  • SECP192K1

  • BP256R1

  • CURVE25519