This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] LP-EM-CC2340R53:使用 PKI 密钥(公钥、私钥和根密钥)进行固件签名

Guru**** 2322270 points
Other Parts Discussed in Thread: SYSCONFIG
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1514453/lp-em-cc2340r53-firmware-signing-using-our-pki-keys-public-private-and-root-keys

器件型号:LP-EM-CC2340R53
主题:SysConfig 中讨论的其他器件

工具/软件:

尊敬的团队:  

我正在探索如何使用我们公司的 PKS 服务器对我们的固件进行签名、然后在 MCUBOOT imgtool 中使用它进行签名。  

我在 SDK 公钥中看到、私钥和根密钥可用、但未找到有关如何创建这些文件的文档。  

请告知我们这方面的一些信息。 这对我们有很大帮助。  

方面

Ilan T  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你好、 Ilan T、

    在我们的 SDK 中、我们提供了有关此方面的文档:

    OAD 存储和安全性—SimpleLinkTm 低功耗 F3 SDK BLE5-Stack 用户指南9.10.00文档

    而在我们的培训中:

    低功耗蓝牙无线下载(OAD)基础知识得到增强

    正如 MCUBoot 本身所记录的、由于我们在这里使用 imgtool、因此我建议阅读以下内容:

    映像工具| mcuboot 

    谢谢、
    Alex F

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Alex F:

    我们的目标是使用我们公司的密钥生成服务器来生成密钥对。
    此外、我们希望在我们的产品中使用硬件安全存储元件来保护密钥、然后是 MCU 启动
    是否应该从硬件安全存储元素中读取密钥以便执行映像签名验证?


    是否必须使用 imgtool 来生成用于固件签名的密钥对?

    是, imgtool 命令"./scripts/imgtool.py keygen -k filename.pem -t ecdsa-p256 "是需要生成 keyfile
    或者应该使用任何其他外部密钥生成程序(比如我们公司的安全服务器生成密钥)?

    -如果使用外部密钥生成器工具,其中一个输入可以是签名算法,
    您是否看到外部密钥生成器工具需要任何其他输入?


    我已阅读 docs.mcuboot.com/imgtool.html 、其中提到了3个步骤、

    1.用于生成私钥:
    /scripts/imgtool.py keygen -k filename.pem -t ecdsa-p256
    -这里提到了这个密钥文件[ ]是用于对图像进行签名的内容。
    -所以这应该是私人密钥文件,是我的理解正确

    2.下一个步骤是如何从 keyfile 中提取公钥。
    /scripts/imgtool.py getpub -k filename.pem
    -是[ ]、与使用命令生成的相同
    /scripts/imgtool.py keygen -k filename.pem -t ecdsa-p256


    3.签署映像:

    ${COM_TI_SIMPLELINK_LOWPOWER_F3_SDK_INSTALL_DIR}/tools/common/mcuboot/imgtool 符号--header-size 0x100 --align 4
    --插槽尺寸0x3B000 --版本1.0.0 --垫-接头-垫
    --- key ${COM_TI_SIMPLELINK_LOWPOWER_F3_SDK_INSTALL_DIR}/source/third_party/mcuboot/root-ec-p256.pem
    ${BuildArtifactFileBaseName}_noheader.bin
    ${BuildArtifactFileBaseName}_v1.bin

    在上述步骤中、用于对固件"basic_ble_oad_dual_image_LP_EM_CC2340R53_freertos_ticlang"签名
    输入"root-ec-p256.pem"密钥、  


    是使用命令[./scripts/imgtool.py keygen -k 生成的密钥文件 root-EC-P256.pem -t ecdsa-p256]、
    您能否确认?

    是"root-EC-P256.pem"是 MCU 引导在他们的文档中提到的密钥文件,如
    "开发密钥分布式 MCUboot、可用于测试"??

    另外在 SDK 中也可以看到"C:\ti\simplelink_lowpower_f3_SDK_8_40_00_61\source\third_party\mcuboot"

    以下密钥可用、请详细说明这些密钥用于 MCU 引导的用途
    安全启动过程。

    enc-ec256-priv.pem
    enc-ec256-pub.pem
    root-EC-P256.pem

    方面
    Ilan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好: Ilan、

    要评论您的帖子:

    是的、您需要执行上面列出的步骤。

    1.我们需要使用 imgtool 脚本使用您的特定目标密钥为您的映像签名

    2.我们需要再次使用 imgtool 脚本生成公钥

    3.最后在项目的编译后步骤中,您需要将"通用"密钥更改为目标密钥。  

    -在编译后步骤主题上,应该可以只"覆盖" SDK 中的原始密钥。

    "注意:密钥 root-EC-P256.pem 仅用于示例。 为您的应用程序提供您自己的密钥。"

    另请注意、在 MCUBoot 工程本身中、我们有一些关键相关的文件:

    进入安全启动:
    "

    启用为次级安全引导加载程序

    MCUboot 也可以作为安全启动的次级安全引导加载程序启用。

    打开项目的 *.syscfg 文件。 安全启动配置可在"TI Devices"->"Device Configuration"-> Security Configuration"下找到。 If  次级安全引导加载程序已启用  这会在 SysConfig 和中选中  SSB  定义插槽后、安全启动可以验证 MCUboot、验证完成后、将控制权转移给它。 然后、MCUboot 可以验证每个槽位中的映像。 启动加载程序的基础和大小由安全启动确定、这意味着 MCUboot SysConfig 中的那些选项将被安全启动覆盖。 在本例中、MCUboot 仍然能够控制插槽定义。

    请注意、MCUboot 不支持安全启动支持的相同身份验证算法。 这意味着由 imgtool 签名的应用程序将无法用于安全启动。 同样、由 sbtool 签名的应用程序也不能用于 MCUboot。

     secure_boot 有关如何启用安全启动并对安全启动映像签名的更多详细信息、请参阅 SDK 示例。"

    谢谢、
    Alex F