2411151_zh-CN

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2411151_zh-CN

2411151_zh-CN

i.MX8DXL CAAM COVER 对 P-384 私钥/黑斑用例的限制

您好,NXP团队:

我们正在评估 i.MX8DXL CAAM 对 ECDSA P-384 黑键/blob 的支持情况。

观察到的结果

P-256

从外部提供的明文 P-256 私钥开始:

  • 明文密钥 → 封面 → 黑键斑点
  • 从黑斑中恢复黑键
  • ECDSA 签名/核实

结果:通过


P-384(CAAM 生成的黑键)

  • 生成 ECDSA 私钥,颜色为 KEY_COLOR_BLACK
  • 无需 COVER 操作即可从私钥生成黑块
  • 从黑斑中恢复黑键
  • ECDSA 签名/核实

结果:通过


P-384(外部明文私钥)

从外部提供的明文 P-384 私钥(48 字节)开始:

  • 明文密钥 → 封面 → 黑键斑点
  • 从黑斑中恢复黑键
  • ECDSA 签名/核实

结果:失败

补充观察

我们在NXP的补丁中注意到以下注释:

https://github.com/nxp-imx-support/imx_sec_apps/blob/master/caam-ecdsa-blackkey/patch/0002-caam-blac...

/*
* KEY 命令似乎限制为 32 字节,因此我们应该使用加载方式。
* 改为使用最多可加载 64 字节的命令。
*
* TODO:KEY 命令表明它应该能够加载更大的密钥。
* 小于 32 字节,但实际上行不通
*
* TODO:LOAD 命令表明它应该能够加载最多 96 个文件
* 字节键在实践中不起作用,并且限制为 64 字节。
*/

我们观察到了类似的行为。

使用 LOAD 命令而不是 KEY 命令,我们可以处理大于 32 字节的密钥,包括 48 字节的 P-384 私钥。

然而,这并不能解决上述问题。虽然可以将密钥覆盖并存储在一个块状物中,但恢复后的黑密钥不能成功用于 ECDSA 签名/验证。
 

我们的疑问:

  1. CAAM COVER 操作对于大于 32 字节的 ECC 私钥是否存在任何已知限制?
  2. 通过 COVER 导入外部 P-384 明文私钥,然后将其用作 ECDSA 黑密钥,这是否是支持的用例?
  3. 观察到的这种现象是否是由于 CAAM 硬件限制造成的?
  4. 是否有推荐的 CAAM 方法可以导入外部生成的 P-384 明文私钥并将其用作 ECDSA 操作的黑密钥?

任何指导都将不胜感激。


谢谢,并致以最诚挚的问候!

霍詹姆斯。

Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case
补充说明:
 
我们关注的重点不仅限于 ECDSA 用例。
 
即使通过 COVER 导入外部 P-384 私钥不是 ECDSA 支持的工作流程,我们仍然想了解 COVER 操作本身的局限性。
 

在我们的应用中,COVER 操作不仅可以用于保护 ECDSA 私钥,还可以用于保护一般敏感数据。因此,支持大于 32 字节的有效载荷大小是一个重要的考虑因素。

根据我们的测试,使用 LOAD 命令变通方法可以处理大于 32 字节的有效载荷。小于约 80 字节的有效载荷似乎可以正常工作,而更大的有效载荷则表现出不稳定的行为。我们想了解这些观察结果反映的是 CAAM 的实际局限性还是实施问题。

NXP能否也澄清一下,COVER 操作本身是否存在任何已记录的大小限制,而与 ECDSA 用例无关?
 

谢谢!

Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case

我们需要搭建测试CAAM功能的环境。一旦有了结果,我们会立即通知您。

Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case

王一平您好,

谢谢回复。

>>对于这一部分,您观察到了什么CAAM错误?
>>请提供错误代码?

我们对所有与 ECDSA 相关的操作都使用以下代码补丁:
" https://github.com/nxp-imx-support/imx_sec_apps/blob/master/caam-ecdsa-blackkey/patch/0001-linux-imx... "

当调用 caam_ecdsa_verify() 进行签名验证时,
它返回“ECDSA_VERIFY_FAIL (0)”。

仅当使用“P-384(外部明文私钥)”时才会出现错误。


>> 应用笔记“AN12838-使用 CAAM 安全密钥加强公钥密码学”描述了使用黑密钥的 ECDSA 签名演示,您是否正在使用类似的实现进行测试?

对于我们成功的案例,是的,它们很相似。
但对于我们失败的案例“P-384(外部明文私钥)”,
情况略有不同:密钥来自外部。

顺祝商祺!

Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case

“明文密钥 → 封面 → 黑键斑点
从黑斑中恢复黑键
ECDSA 签名/核实
结果:失败

在这一部分,你观察到了什么CAAM错误?能否提供错误代码?应用笔记“AN12838-使用 CAAM 安全密钥加强公钥密码学”描述了使用黑密钥的 ECDSA 签名演示,您是否正在使用类似的实现进行测试?谢谢。

关于KEY命令的限制,目前仍在调查中。

Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case

对于失败的案例,您是否使用“KEY”命令和“FIFO STORE”命令根据明文私钥生成黑密钥?您能否提供故障案例中使用的 CAAM 描述符(十六进制单词)?检查命令和参数会更容易些。谢谢。

Re: i.MX8DXL CAAM COVER limitation for P-384 private key / black blob use case

王一平您好,

>>对于失败的案例,
>>您是否使用了“KEY”命令和“FIFO STORE”命令?
>>如何根据明文私钥生成黑密钥?

不,我们使用的是 LOAD 命令而不是 KEY 命令。
在这种情况下,密钥为 48 字节 (P384)。

如 < https://github.com/nxp-imx-support/imx_sec_apps/blob/master/caam-ecdsa-blackkey/patch/0002-caam-blac... > 中所述
“KEY 命令似乎限制为 32 字节,因此我们应该使用加载
* 改为使用最多可加载 64 字节的命令。

如果使用 KEY 命令输入 48 字节的密钥,则会报告 DECO 错误:
作业环状态:0x40000106
DECO,06h - 无效的 KEY 命令

因此,我们修改了代码,使其使用与上述补丁代码相同的 LOAD 命令。

谢谢,并致以最诚挚的问候!

Tags (1)
No ratings
Version history
Last update:
Thursday
Updated by: