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.

[参考译文] CC2745R10-Q1:调试身份验证

Guru**** 2769425 points

Other Parts Discussed in Thread: UNIFLASH, CC2745R10-Q1, SYSCONFIG

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1589416/cc2745r10-q1-debug-authentication

器件型号: CC2745R10-Q1
主题中讨论的其他部分: UNIFLASHSYSCONFIG

您好、
我正在通过 SWD 和我的主机设备来开发 CC2745R10-Q
我们希望实现调试身份验证。 根据 TRM、以下命令用于调试身份验证。
image.png
在 CCS(V20.3.1.5__1.9.1 ) 中,调试配置完成,并生成 SCFG.bin 文件,如下所示
image.png
image.pngimage.png
但在 UniFlash (v9.3.0.5401) 中、调试身份验证功能看起来像
image.png
 以下是我的查询:
1. UniFlash 似乎尚未更新 CC2745R10-Q 的调试身份验证功能 此功能何时可用?
如果器件需要调试身份验证、请明确说明如何使用 Uniflash /CCS 或任何其他工具进行身份验证。  
谢谢。
此致、
Surender。



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

    您好 Surender、

    是的、您是正确的。UniFlash 没有用于 CC2745R10-Q1 的调试身份验证功能、因此可以支持我们的传统产品。 我们不计划添加该功能、因此建议直接使用 CCS 对调试进行身份验证。 我已经概述了以下步骤:


    1.在已安装的 CCS 目录中、导航至  /ccs/ccs_base/DebugServer/bin/sdm  关断速度。 确保有 SecureDebugManagerCC27.dll 添加到工程。

    2.如需执行上述操作、请转到 SysConfig 的“Debug Configuration“部分并设置所需的参数

    3.使用 CCS 或 UniFlash 重新编译工程并将其刷写到器件上

    4.重新打开 CCS 并启动调试会话、此时应该会出现一个弹出窗口、要求您选择授权级别

    5.将挑战引导保存为 challenge.bin  在设备上的某个位置、确保文件已保存  实际为 A  .bin

    6.输入您生成和存储的公钥的文件路径、该文件路径应位于中  .der  添加到工程

    7.使用 OpenSSL 签署从设备收到的质询向量:  openssl dgst -SHA256 -sign private_key.der -keyform der -out sig .bin challenge.bin

    8.输入到的文件路径 sig.bin  脚本文件中

    9.如果成功,调试将在此步骤后打开

    谢谢、

    Eshaan

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

    尊敬的 Eshaan
    感谢您的响应、我已经按照相同的程序调试身份验证、但无法解锁调试身份验证。
    案例 1:通过 CCS 配置调试配置和加载
    1. SecureDebugManagerCC27.dll 提供了  /ccs/ccs_base/DebugServer/bin/sdm  关断速度
    按如下所示配置调试配置、通过 public_key.der ( certutil -hashfile public_key.der SHA256)

    3.刷新项目时、将显示一个弹出窗口以选择授权级别、
         选择 安全 并得到 challenge.bin
         
    使用 OpenSSL 签名了质询矢量 : openssl dgst -SHA256 -sign private_key.der -keyform der -out sig.bin challenge.bin
          

    4.
    已输入 public_key.de sig.bin  但是  【不满足限制以继续解锁器件】、 请查看下面的日志详细信息。
        


    即使通过选择授权级别来尝试 非安全 和提供了 scfg 调试配置中的非安全公钥哈希值、如下所示、但是  【不满足限制以继续解锁器件】、


    案例 2:通过 CCS 配置调试配置并通过 UniFlash 加载
    我已经完成了测试 芯片擦除 并加载默认的 CCFG、SCFG 值
    在 CCS 中的步骤 3(重建)之后、生成 CCFG、SCFG Bins 文件(启用了调试身份验证)并尝试从 Uniflash 加载、它会挂起、如日志详细信息下面所示。

    我的观察结果如下:尝试从 CCS 刷写时、它成功加载所有配置并进入调试模式以进行身份验证。
    以下是我的问题:
    我有以下问题:
    1.使用命令 (certutil -hashfile public_key.der SHA256) 从 public_key.der 生成的 32 个字节的公钥哈希值是否正确?


    2.在 CCS 中执行上述程序后、哪些限制仍未实现、从而阻止解锁器件?  
    3.如果选择调试授权“非安全授权“或“非侵入式授权“,有何区别,您能解释一下吗?
    请告知我在解锁器件过程中可能出现的任何错误。
    谢谢、
    Surender。



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

    Surender、

    您能为我提供您的 SysConfig 版本、SDK 以及您正在使用的工程示例吗? 我正在尝试在我这边重现这个问题、以便能够看到您看到的内容。 谢谢

    Eshaan

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

    您好、Eshaan、
               IM、使用 CCS 版本:20.3.1.5__1.9.1、SysConfig 版本:1.23.2、SDK 版本:9.14.0.35
               
               示例工程:空 (empty_LP_EM_CC2745R10-Q1_freertos_ticlang)
    UniFlash 版本: 9.3.0.5401

    请核实并通知我解锁的正确方法、同时回答我之前的所有问题。
    谢谢、
    Surender。

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

    您好 Surender、

    感谢您分享这些信息、我能够重现您的环境并在我这边成功测试调试身份验证 以下是我执行的确切步骤。 但是、我使用了稍新的 SDK、即 9.14.00.39 因为这是我们最近使用的公共 SDK。 不过、CCS 和 SysConfig 版本完全相同、因此其工作原理相同:

    1. 使用 OpenSSL 以 DER 格式生成公钥/私钥。  您可以从要保存密钥的任何目录调用这些命令。

    2.生成哈希后,您将直接将其复制/粘贴到 sysconfg 的调试配置部分。 我提供了我的 sysconfg 图片、其中包含我从 OpenSSL 生成的密钥




    3.重新编译并刷写工程(我使用 Uniflash 而不是 CCS 刷写)。 您可能会看到有关调试权限的错误或一些消息、但它应在底部显示加载成功、以便您可以忽略这些错误消息、因为它仍然有效。 我们仍在更新 CCS 和 Sysconfg 以处理调试身份验证、这就是可能出现调试身份验证的原因。

    4.在 CCS 中启动调试会话、此时应该会显示询问授权的弹出窗口(我选择了安全的测试目的)

    5.将挑战引导保存到您的 计算机上

    6.提供在步骤 1 中生成的 public_key.der 的路径

    7.在您可以从这个页面继续之前,您需要使用以下方法签署挑战引导:  openssl dgst -SHA256 -sign private_key.der -keyform der -out sig。bin challenge.bin、  生成后、您可以插入新生成的 sig .bin 的路径并继续

    8.如果一切正常,你应该在下面看到这个消息




    谢谢、

    Eshaan

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

    尊敬的 Eshaan:
            感谢您快速且清晰的响应、但我在刷写到器件时遇到了问题。
    案例:1:已使用 CCS 进行刷写
    1.遵循步骤 1
    2.遵循步骤 2.
    3、重新编译并尝试刷写(我使用的是 CCS) 、同时显示询问授权的刷写弹出窗口(我选择了安全的用于测试目的)
    4.将挑战矢量保存到我的计算机作为挑战.bin(40 字节)
    5.provided the public_key.der
    6.为 challenge.bin 生成 sig.bin 并提供
    7.我可以看到以下弹出窗口 【不满足继续解锁器件的限制】 配置和日志、如下所示



    案例 2:为闪存使用了 UniFlash(版本:9.3.0.5401)
    注意:在通过 UniFlash 进行刷写之前、使用我的主机器件执行芯片擦除

    1.遵循步骤 1
    2.遵循第 2 步
    3.重新编译并尝试使用 UniFlash 进行闪存,它及其日志如下所示挂起,但我看不到  底部的加载成功。  
    观察到复位后 LED 示例代码正在执行
     
    4. 显示了 CCS 中已启动的调试会话弹出窗口、要求授权(我为测试目的选择了安全操作)
    5.将挑战矢量保存到我的计算机上
    6.提供了我在步骤 1 中生成的 public_key.der 的路径
    7.Generated sig.bin、使用 (openssl dgst -SHA256 -sign private_key.der -keyform der -out sig.bin challenge.bin) 插入到新生成的 sig.bin 的路径
    8.下面的消息 appread 弹出窗口  【不满足继续解锁器件的限制】  配置和日志、如下所示


    我使用了 UniFlash 版本 9.3.0.5401。 您能告诉我您使用哪个版本的 UniFlash 进行测试吗? 我想做同样的事情。
    此致、
    Surender。

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

    尊敬的 Eshaan:
            感谢您的答复。 我使用了 SDK 版本 9.14.0.41 和 SysConfig 版本 1.26.0。 我已经成功生成了 sig 公钥/私钥和 RSA.bin、验证完成后没有出现问题。 然而,当我试图使用 ECC 键代替 RSA 密钥、调试身份验证结果指示【无法正确解析公钥】、如下所示。

    对于 ECC 密钥、 签名生成、使用了以下命令。

    以下是我的问题:
    CCS 是否在调试身份验证中支持 ECC 密钥? 如果是、上述问题的原因是什么、请分享正确的程序。
    CC2745R10 器件是否能够使用 ECC 密钥调试身份验证?
      例如:i) 在 SCG 配置中提供 ECC 公共 key.der 哈希 32 字节[ debugAuthCfg.secureKey.publicKeyHash ]位于偏移处 (0x28 - 0x47)
         ii)   SACI_CMD_DEBUG_KEY_ID:检索 ID。
         iii) SACI_CMD_DEBUG_REQUIENT:获取 40 字节的安全质询矢量。
         iv) SACI_CMD_DEBUG_SUBLE_CHRQUIENT_RESP:提交 ECC 公钥 DER 以及生成的签名。  
    3.除 RSA 3072 密钥外、CCS 和器件还支持哪些其他类型的密钥进行调试身份验证? 如果支持任何密钥、请提供相关程序。

    谢谢、
    Surender。

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

    您好 Surender、

    我过去几周没上班、错过了您的答复。 我看到您已将该主题标记为已解决、但还有一些问题、那么您能向我更新状态吗? 谢谢你。

    Eshaan

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

    您好、Eshaan、
               按照您提到的使用 RSA 密钥成功调试身份验证的步骤操作、解决了我的问题、更新了状态、 但是、当我尝试使用时  ECC  键代替  RSA  密钥、调试身份验证结果指示【无法正确解析公钥】、如下所示。

    对于 ECC 密钥、 签名 生成、使用了以下命令。

    以下是我的问题:
    CCS 是否在调试身份验证中支持 ECC 密钥? 如果是、上述问题的原因是什么、请分享正确的程序。
    CC2745R10 器件是否能够使用 ECC 密钥调试身份验证?
      例如:i) 在 SCG 配置中提供 ECC 公共 key.der 哈希 32 字节[ debugAuthCfg.secureKey.publicKeyHash ]位于偏移处 (0x28 - 0x47)
         ii)   SACI_CMD_DEBUG_KEY_ID: 检索 ID。
         iii)  SACI_CMD_DEBUG_REQUIENT: 获取 40 字节的安全质询矢量。
         iv)  SACI_CMD_DEBUG_SUBLE_CHRQUIENT_RESP: 提交 ECC 公钥 DER 以及生成的签名。  
    3.除 RSA 3072 密钥外、CCS 和器件还支持哪些其他类型的密钥进行调试身份验证? 如果支持任何密钥、请提供相关程序。

    谢谢、
    Surender。

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

    您好 Surender、

    我们尚未使用专门用于安全调试管理器的 ECC 密钥进行测试。 根据我们的 HSM 数据表、HSM 支持各种加密算法进行验证、包括 RSA 和 ECDSA(ECC 算法)、因此我们可以使用 ECC 密钥进行中的身份验证  HSM  方波时钟。

    但是、对于安全调试管理器、我们主要只是使用 RSA-3072 位密钥大小、尚未通过其他算法进行验证。 我使用您提供的命令测试了 ECC 密钥、并能够重新创建您在本地看到的错误消息。 我将研究 ECC 问题、并在几天后回复您。

    谢谢、

    Eshaan

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

    您好 Surender、

    就在 Debug Configuration 下拉列表下、还有另一个名为 Security Configuration 的下拉字段。 请尝试为验证算法选择“签名“、然后选择要进行验证的 ECDSA 算法。 这应该允许将 ECC 用于安全调试管理器。 选择 ECDSA 后、请返回到 Debug Configuration 下拉列表、然后按照与之前相同的步骤生成 ECC 密钥以进行安全调试身份验证。  

    谢谢