2411077_zh-CN

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

2411077_zh-CN

2411077_zh-CN

ECDA签名验证与CASPER
剧透
 

你好,
我成功地自行构建了 mbedTLS,以便使用 ECDSA 验证签名(MBEDTLS_ECP_DP_SECP256R1)。
如果没有替代实现(所有计算均由 CPU 完成),在 LPC55S06 上进行签名验证最多需要 4 秒才能完成计算。

我现在正在尝试将 mbedTLS ecdsa_verify() 函数与 CASPER fsl 驱动程序链接起来。但我并不清楚,因为ECDSA的核查似乎并非单一操作。
如何将 CAPSER 的基本原语(SECP256R1_Mul 和 SECP256R1_MulAdd)与 mbedTLS 函数 ECDSA_verify() 连接起来?

感谢您的回复。

LPC55xxRe: ECDA signature verification with CASPER

你好 peter89jean,

感谢你的回复。您提到的方法正是我所想的,但是 mbedTLS 配置文件中似乎没有简单直接的 SECP256R1_MULADD _ALT或 SECP256R1_MUL _ALT定义。或许我应该去专门讨论mbdedTLS的论坛问问这个问题。

再次感谢。

问候。

Re: ECDA signature verification with CASPER

通常情况下,您不需要替换 mbedtls_ecdsa_verify() 本身;CASPER 加速应该集成到 mbedTLS 内部使用的椭圆曲线/乘法层中。ECDSA 验证需要计算标量乘法及其和,因此 SECP256R1_Mul() 可以处理单个标量点乘法,而 SECP256R1_MulAdd() 可以加速组合运算。具体集成取决于您的 mbedTLS 版本和 NXP CASPER 驱动程序 API,但通常的做法是为 P-256 标量乘法原语提供 mbedTLS 替代/优化实现,而不是直接从 ecdsa_verify() 调用 CASPER。

回复: ECDA signature verification with CASPER

@s_hdl

ECDSA 验证包含多个算术和椭圆曲线运算,因此它无法映射到单个 CASPER 原语。

在 MCUXpresso SDK 中,CASPER PSA Crypto 端口已经实现了集成。casper_mbedtls_ecdsa_verify() 函数执行标准的 ECDSA 验证流程,包括计算 u1 和 u2。然后它调用:

casper_mbedtls_ecp_muladd(grp, &R, u1, &grp->G, u2, Q);
计算方法:
R = u1 × G + u2 × Q

ECP 适配层将 mbedTLS MPI 值和椭圆曲线点转换为 CASPER 所需的 格式 , 并将 操作 映射CASPER_ECC_SECP256R1_MulAdd()

类似地,casper_mbedtls_ecp_mul() 单个 量 乘法 映射CASPER_ECC_SECP256R1_Mul()

因此, 我们 建议 不要 直接 修改 而是mbedtls_ecdsa_verify() 重复使用 SDK 提供 完整 CASPER 集成, 具体 如下 :

component/psa_crypto_driver/casper_driver
具体 请 参阅
mcux_psa_casper_ecdsa_port.c
mcux_psa_casper_ecp_port.c

由于您是单独构建的 mbedTLS,请确保您的 mbedTLS 版本与 MCUXpresso SDK CASPER 端口兼容。

您可以参考lpcxpresso55s06_psa_crypto_examples。

Harry_Zhang_0-1788493275769.pngHarry_Zhang_0-1788493275769.pngHarry_Zhang_0-1788493275769.pngHarry_Zhang_0-1788493275769.png

BR

哈里

回复: ECDA signature verification with CASPER

你好,哈利,

您的回答对我的帮助很大,谢谢。现在使用 CASPER 实现一切正常。


此致问候

标记 (1)
无评分
版本历史
最后更新:
2 周之前
更新人: