ST意法半导体
直播中

陆军航空兵

9年用户 895经验值
私信 关注
[问答]

如何使用ECDSA进行固件真实性验证?

我使用带有 KMS 的 X-CUBE-SBSFU 包在我的 ST MCU 上执行固件更新。
为了验证固件的真实性,我使用了 ECDSA。但是,我不明白为什么我只需要提供私钥而不需要提供公钥。如果我理解正确,应该使用 ECDSA 来签署固件更新,这是由构建后脚本完成的,但为了验证签名,引导加载程序应该使用与私钥关联的公钥。但是,KMS 仅包含私有 ECDSA 密钥。为什么我们使用私钥而不是公钥验证固件?







回帖(1)

李凯生

2022-12-15 14:21:12
没错,引导加载程序正在使用与作为输入提供的 ECC 私钥关联的公钥。
公钥的计算由使用 prepareimage 工具的预构建完成。
所有关键的设置过程都隐藏在预构建和后构建的使用之后。
私钥用于对固件的标头进行签名,公钥在 se_key.x 中提供给 SBSFU 以在启动时检查签名。
公钥在 se_key.s 中不明确,但是如果您使用 openssl 从 ECC 密钥中提取公钥,您将在 SE_ReadKey_Pub 部分的该文件中找到它的编码。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分