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-CC2652R7:安全启动

Guru**** 2589300 points
Other Parts Discussed in Thread: CC2652R7, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1170756/lp-cc2652r7-secure-boot

器件型号:LP-CC2652R7
主题中讨论的其他器件:CC2652R7SysConfig

大家好、

此开发板和 Project Zero 按预期工作;板载 LED 和按钮服务正常工作。(默认:不安全的构建配置)

要求是我要将当前 BIM 更改为 Secure_BIM。 为启用安全引导,进行了以下更改:

  1. 导入了 CCS bim_onchip_LP_CC2652R7_nortos_ticlang 工程并将编译配置更改为"发布"。
  2. 使用 key_generate.py 脚本、我生成了一个新的密钥对、并编辑了 bim_onchip_main.c 文件以更改公共密钥和签名者信息。
  3. 导入了 PROJECT_ZERO LP_CC2652R7_tirtos7_TIRANG 工程(版本:活动)、并更改了 SYS_Config 以启用 OAD BLE 安全。 已使用 TI 私钥生成签名。

当我加载此 bim 并将零应用程序投影到 launchpad 时、它运行良好。 我所期望的是、projectzero 应用程序将被拒绝、因为用于生成应用程序签名的私钥是 TI 提供的私钥、而 bim 中使用的公钥是新生成的密钥。

启用安全引导的步骤是否正确?

还有一个问题是、为什么每个编译的签名值不同(project_zero_lp_CC2652R7 tirtos_tronicang (Active-Release))、即使私钥对和应用程序是相同的?

请帮帮我。

谢谢、此致、

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

    您好!

    我已将您的主题分配给了一位相关专家。 同时、您能否共享您正在使用的 SDK 版本? 是否对项目零应用程序代码以及您提到的修改进行了修改?

    此致、

    1月

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

    您好!

    SDK 版本- 6.30.01.03

    上述改动已作出。 对应用程序代码没有进行任何更改。  

    此致

    Gayathri

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

    嗨、Gayathri、

    这些操作的执行顺序是什么? PROJECT_ZERO 包含一个编译后处理步骤、该步骤会使用存储的 private.pem 文件自动调用 OAD_IMAGE_TOOL。 如果首先生成了新的 private.pem 文件、然后重建了 PROJECT_ZERO、则密钥将匹配、它的工作方式应与您所观察到的相同。

    [引用 userid="542164" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1170756/lp-cc2652r7-secure-boot "]还有一个查询是为什么每个编译的签名值不同(project_zero_lp_CC2652R7 tirtos_tronicang (Active-Release))、即使私有公共密钥对和应用程序是相同的?

    我不太熟悉这一点、我建议查看 SDK (tools/common/oad)中的 OAD_image_tool、因为该工具的源代码可用。 答案很可能就是这样。

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

    尊敬的 Ammar:

    是的、我同意在编译后处理步骤中、它会自动使用存储的 private.pem 文件调用 oad_image_tool。

    现在、我将路径 C:\ti\simplelink_cc13xx_cc26xx_sdk_6_30_01_03\tools\common\oad\private.pem 中的 private.pem 文件替换为新生成的私钥、同时将 public.pem 文件保留在路径  C:\ti\simplelink_cc13xx_26xx_sdk_common.pem 文件中、同时将 public.pem 文件保留为 ccsm\03_m_c03_m_c03_m_6_c03_tools\common_

    我的怀疑是,在建立形象时,我不会在任何地方设置新的公共钥匙:

    然后是该签名验证如何传递以及应用程序如何运行。 如何获得新生成的公钥?

    我不太熟悉这一点、我建议查看 SDK (tools/common/oad)中的 OAD_image_tool、因为该工具的源代码可用。 答案很可能就是这样。

    如果我在 SDK (tools/common/oad)内的 oad_image_tool.py 文件中进行一些更改、它们是否会反映在构建过程中? 如果没有、您能否告诉我应用程序代码的哪个部分正在调用 oad_image_tool.py 文件、以及如何从源代码执行应用程序?

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

    您好!

    在上面的屏幕截图中、您将显示在配对过程中使用的 eccKey.pubX/Y。 用于为 OAD 对映像进行签名的密钥是单独的。 如果我误解了你在这里的意思,我很抱歉,我认为我会澄清。

    [引用 userid="542164" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1170756/lp-cc2652r7-secure-boot/4408935 #4408935)]如果我在 SDK (tools/common/oad)中的 oad_image_tool.py 文件中进行一些更改,它们是否会反映在构建过程中? 如果没有、您能否告诉我应用程序代码的哪一部分正在调用 oad_image_tool.py 文件、以及如何从源代码执行应用程序?

    OAD 映像工具将某些参数作为输入、因此如果您不更改此结构、则会自动调用该工具、因此您无需修改工程属性。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    安全启动有两个阶段
    1) 1)签名生成
    生成应用程序的签名;此处使用的是私钥、该私钥未嵌入器件中。
    2) 2)签名验证
    验证签名;此处使用公钥、公钥存储在闪存中、具有完整性保护。 上面显示的公共密钥是存储在闪存中用于执行期间签名验证的公共密钥。
    安全启动是此器件的一项功能。 我想在开发应用之前评估它的安全启动功能。 为此、我将使用 启用了安全功能的示例 Project Zero 应用程序。 我所期望的是、由于密钥对不匹配、Project Zero 应用程序将被拒绝(使用德克萨斯州的私钥生成签名、使用客户的公钥进行签名验证)。
    您能否解释一下在 Project Zero 应用中启用安全启动的过程?  上述启用安全启动的过程是否正确?
    使用的参考:
     
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    嗨、Gayathri、

    很抱歉耽误你的时间。 上述步骤应该起作用。 我发现的一个关键区别是您使用了 bim_onchip、而 project_zero 是一个片外 OAD 示例项目。 我已经使用 bim_offchip 测试了指令、并验证了在更改键后器件不会如您所述引导到映像中。

    我要做的其他一些说明:安全引导不需要在 SysConfig 中定义 OAD_BLE_SECURITY 的步骤。 这样做的是在蓝牙 LE 配置文件上启用加密权限(与引导过程没有太多关系、而是需要加密连接才能启动 OAD)。 已通过启用安全预定义符号为安全配置了工程。

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

    你(们)好、Ammar

    如何确保在更改密钥后设备不会引导至映像? 我将 bim_offchip 和 project_zero 加载到电路板上、现在 SimpleLink Starter 应用程序还显示了 Project Zero 应用、并且可以切换板载 LED。 为什么会这样?

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

    嗨、Gayathri、

    下面是我执行的步骤:

    1. 导入 bim_off 芯片并构建发布配置。
    2. 导入 PROJECT_ZERO 并编译工程。
    3. 将 bim 和 project_zero 的_oad.bin 刷写到电路板上。  
      1. 此时、预计 PROJECT_ZERO 的这个构建将正确引导并按预期运行。
    4. 复制 project_zero 的_oad.bin 文件并重命名它。
    5. 导航至 OAD_IMAGE_TOOL 目录、保存现有 prival/public.pem 文件的副本、然后重新运行 key_generate.py 脚本。
      1. 此时、您有新的密钥。
    6. 将新密钥复制到 bim_offchip_main.c、以便 BIM 可以对照新密钥进行验证。
    7. 重新生成 bim_offchip 示例。
    8. 刷写新编译的 bim_offchip 示例和原始(保存在步骤4中) project_zero 二进制文件。
      1. 此时、bim offchip 密钥与用于编译 project_zero 二进制文件的密钥不匹配、因此我不希望 project_zero 正确引导。
    [引用 userid="542164" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1170756/lp-cc2652r7-secure-boot/4414529 #4414529]I 将 bim_offchip 和 project_zero 加载到板上、现在 SimpleLink Starter 应用程序还显示了 Project Zero 应用程序、我可以切换板载 LED。 为什么会这样?

    如果 BIM 项目引导至 PROJECT_ZERO、我怀疑密钥在 BIM 检查时匹配。 如果 BIM 未引导至映像、您甚至无法使用手机发现 PROJECT_ZERO (或在终端窗口中观察 UART 显示)。

    请确保您正在刷写由 OAD_IMAGE_TOOL 生成的_oad.bin 文件。

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

    尊敬的 Ammar:

    非常感谢您的支持;它很有效。

    在这里、我使用了 TI 提供的用于生成签名的私钥和客户生成的用于验证的公钥、因此启动被中止。

    Ammar、我能否使用客户生成的私钥来生成签名、并使用 TI 提供的公钥进行验证、只需更改此路径中的现有 prival/public.pem 文件:"TI\simplelink_cc13xx_cc26xx_sdk_6_30_01_03\tools\common\oad"。  我现在已经尝试过这种方法。 它正在启动、而不是拒绝;我是否需要进行任何其他更改、而不 是更改此路径中的密钥。

    此致

    Gayathri G P

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

    嗨、Gayathri、

    [引用 userid="542164" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1170756/lp-cc2652r7-secure-boot/4416872 #4416872"] Ammar、我能否使用客户生成的私钥来生成签名以及 TI 提供的公钥进行验证、只需更改此路径中的现有私钥/public.pem 文件:"TI\simplelink_cc13xx_cc26xx_sdk_6_30_01_oad\common\tools\coad\oad\common.03]]。

    我不确定我是否遵循您在这里所说的内容。 公钥/私钥配对在一起、不能互换。 也就是说、首先生成私钥、然后公钥本质上是私钥的派生品。 如果您将提供的 TI 公共密钥与不正确的私钥不匹配、则密钥将不匹配、并且签名检查将失败。

    key_generate.py 生成必须同时使用的私有公共密钥对。  您可以使用自己的方法自由修改密钥文件。 private.pem 对于传递到工程的编译后步骤至关重要(不用担心、默认示例已为您调用它)。 应在 bim_offchip_main.c 文件中修改公钥(即 public.pem 文件 主要作为包含公钥信息的记录存在、不会在任何地方调用)。

    希望这能澄清问题。

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

    尊敬的 Ammar:

    让我澄清一下。 我的查询是:

    案例1:我遵循了您发布的步骤。

    1) 1)生成的特定于客户的密钥、并将公钥粘贴到 bim_offchip_main.c 中

    2) 2)构建项目。

    a)此时、bim offchip 密钥与用于编译 project_zero 二进制文件(TI 私钥)的密钥不匹配、因此 project_zero 无法启动。

    它按预期工作、引导中止(客户公钥和 TI 私钥)

    情况2.

    1) 1)使用之前生成的新客户私钥重新编译 PROJECT_ZERO、使 bim_offchip 与情况1相同:未进行更改。

    a)这是通过使用 路径"ti\si mplelink_cc13xx_cc26xx_sdk_6_30_01_03\tools\common\oad"中新生成的私钥覆盖"ti\si mplelink_cc13xx_cc26xx_sdk_6_30_01_03\tools\common\generatic"中的私有.pem 文件来完成的。

    它也按预期工作、引导继续  

    情况3.

    1) 1)仅使用 TI 私钥对重建 PROJECT_ZERO、使 bim_offchip 与案例1相同:未进行更改(客户公钥和 TI 私钥)。

    与预期的不同、引导继续:预期的引导中止。  为什么?

    (当我重新编译 project_zero 和 bim_offchip 时、它将按预期工作)

    希望这能澄清问题。

    key_generate.py 生成必须同时使用的私有公共密钥对。  您可以使用自己的方法自由修改密钥文件。 private.pem 对于传递到工程的编译后步骤至关重要(不用担心、默认示例已为您调用它)。 应在 bim_offchip_main.c 文件中修改公钥(即 public.pem 文件 主要作为包含公钥信息的记录存在、不会在任何地方调用)。

    如何在工程的编译后处理步骤中生成应用程序映像的签名 (此处自动调用工具)? 请详细说明使用 OAD_image 工具生成签名的步骤。

    为什么每个编译的签名值不同(project_zero_lp_CC2652R7 tirtos_ticlang (Active-Release))、即使私有公钥对和应用程序是相同的? 理论上、如果我们不做任何更改、则特征值应该相同。

    构建1

    构建2.

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

    您好!

    遗憾的是、我无法重现案例3中的行为。 我将确保使用正确的 private.pem 文件来生成 project_zero 二进制文件。 为此,您可以转至 CCS>"Build">"Steps">"Post-build steps:

    [引用 userid="542164" URL"~/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1170756/lp-cc2652r7-secure-boot/4418623 #4418623)]为什么每个编译的签名值不同(project_zero_lp_CC2652R7 tirtos_tronicang (Active-Release))、即使私有公钥对和应用程序是相同的也是如此? 从理论上讲、如果我们不做任何更改、则签名值应该相同。

    签名是 ECDSA 算法的一部分。 每次运行签名算法时、签名都会更改、因为它需要随机数和散列值来计算签名。 如果密钥和图像相同、则不能正确假设签名保持不变。

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

    感谢 Ammar 的支持。 它发挥了作用。