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.

[参考译文] BQ40Z50-R2:使用加密密钥进行电量监测计身份验证

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

https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1212267/bq40z50-r2-fuel-gauge-authentication-using-encryption-key

器件型号:BQ40Z50-R2
主题中讨论的其他器件:BQKEYPACKAGER、BQKEYPROGRAMMER BQSTUDIO、BQ40Z50

尊敬的团队:

我们使用  TI bqKey Packager 软件来生成加密密钥、但我们不知道应该在 SHA1身份验证密钥 F 和 SHA1 身份验证密钥 C 字段中输入128位加密密钥是什么。 我们注意到这些字段仅支持20个字节、我们的加密密钥只有16个字节。

我们注意到 之前有一个类似的问题、 但我们没有看到它的更新。 有没有针对我们的问题的最新解决方案? 谢谢!

此致、

埃里克

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

    Eric、您好!

    "FAQ"页面处于活动状态、概述了对密钥进行编程所需的步骤。

    https://e2e.ti.com/support/power-management-group/power-management/f/power-management-forum/1106884/faq-bq40z50-faqs

    此致、

    怀亚特·凯勒

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

    尊敬的 Wyatt:

    从对 SHA-1安全密钥进行编程的过程中、我用全零提出质疑、结果表明响应不是空白密钥、这是我更改了监测计身份验证密钥后的预期结果。 什么使我成为验证部分:我应该通过 cmd AuthWriteKeyF()写入哪个块 来获得响应?

    谢谢!

    埃里克

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

    Eric、您好!

    我不确定我是否理解您的问题,您不向 AuthWriteKeyF ()发送挑战,您需要将其发送给 AuthKeyChallenge  (),然后阅读响应。 常见问题解答底部的表提供了可用于发送质询和接收 响应的命令。

    此致、

    怀亚特·凯勒

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

    尊敬的 Wyatt:

    很抱歉、我是新手。 我试图通过 cmd AuthKeyChallenge ()挑战所有的零来检查我的回应,如下图,但有一个错误发生。
    我输入了错误的块吗?

    谢谢。
    埃里克

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

    尊敬的 Wyatt

    感谢上面的链接。 非常有帮助。 但是、我不了解 bqKey Packager 输入。

    假设我的密钥为(32char=128位):00112233445566778899AABBCCDDEEFF

    现在如何将此密钥馈送到 bqKey  Packager 中的 Key F 和 Key C 字段中:

    谢谢!

    此致 Daniel

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

    Daniel 和 Eric、您好!

    这些命令用于 ROM 模式、您必须通过发送命令0x000F 到0x44来进入 ROM 模式。

    您不能从密钥开始编程、而是按照常见问题解答中概述的步骤获得最后一个密钥。 你不可能轻易地反算它。

    此致、

    怀亚特·凯勒

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

    尊敬的 Wyatt:

    进入 ROM 模式后、我要求全为0、响应不是空白密钥响应、因此继续按照常见问题解答中的步骤验证密钥。 在示例中:如果通过 cmd AuthWriteKeyF()为 KeyF 发送2309BDC0A9F86B69111CA850B530339111000C47 (小端字节序)。  我们如何获取输入(2309...0C47)来查找 keyF 和 keyC? 为了使输入找到 keyF、这是不是全部为零的挑战响应?  

    对于所有0的质询(KeyF + KeyC + Challenge)的 SHA-1哈希输入、它超过20个字节、我们如何得到对此的响应?

    此外、在 bqKeyPackager 中、密钥 F 和密钥 C 字段是两个 KeyF + KeyC +质询响应吗? 或者 它们是用于查找 KeyF 和 KeyC 的 SHA-1哈希输出、 您用红色突出显示了哪些输出?

    非常感谢。

    此致、
    埃里克

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

    TI 美国公司今天放假安排、所以应将其答复推迟到星期一为止。

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

    Eric、您好!

    该电量监测计是否曾在测试之前进行过编程、或者您是否在测试之前修改过任何密钥? 这些密钥基本上是一次性可编程的、一旦您对它们进行编程并对器件进行下电上电、就无法更改它们。

    选择要用于 AuthKeyWriteF()的字节字符串,很可能只是随机生成的字符串。

    我不确定我是否理解您关于 SHA-1哈希的问题 (KeyF + KeyC + Challenge)、这是由您的主机来验证电量监测计计算是否正确、整个字符串绝不会发送到电量监测计、只有挑战会发送。 主机和测量仪表都执行哈希、然后主机读取测量仪表的响应以验证它们是否匹配。

    此致、

    怀亚特·凯勒

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

    尊敬的 Wyatt:

    我仅更改了 SHA 身份验证界面中的电量监测计身份验证密钥。 因此、如果我在 bqKeyProgrammer 中对密钥编程一次、那么不能更改 KeyF 和 KeyC、但电量监测计认证密钥始终是可变的?

    我仍然不确定应该在 bqKeyPackager 中输入20字节密钥的内容。

    这两个字段是我们在下图中输入的突出显示部分吗?


    谢谢你。

    此致、
    埃里克

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

    Eric、您好!

    我不确定您是否理解您所参考的内容、该电量监测计具有两种不同的 SHA-1身份验证方法、一种是看起来是您尝试执行的安全存储器、以及 BQKeyProgrammer 的作用。 还有一种对闪存中存储的密钥进行 SHA-1身份验证的方法、该密钥可以更改并且是 SREC 的一部分、非常适合测试、也可以在 SHA-1 BQStudio 选项卡中完成。

    一旦您对安全密钥进行编程并且电量监测计通过 POR、您将永远无法再次更改密钥、它们将被锁定。 如果您没有关闭电量监测计、则可以根据需要再次进行更换。

    您必须上载密钥 F 和密钥 C 的20个字节、最后一个密钥是哈希后每个字节的最后8个字节、然后附加这些字节、这在"验证"部分的常见问题解答中:

    NIST 数据库还有助于更好地了解 SHA-1哈希以及密钥、响应和挑战所需的大小: https://csrc.nist.gov/publications/detail/fips/180/4/final

    此致、

    怀亚特·凯勒

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

    尊敬的 Wyatt:

    如果我选择使用存储在闪存中的密钥进行 SHA-1身份验证、我是否也可以使用其他方法? 它是否会导致冲突?

    对于安全存储方法、您能否指出哪个步骤或数据不正确?
    对于 keyF 和 keyC 的哈希输入、我将使用 FAQ 中的示例。

    1. AuthWriteKeyF () 0x1b、输入为 470C0011913330B550A81C11696BF8A9C0BD0923
    2. 输入为 470C0011913330B550A81C11696BF8A9C0BD0923时的挑战0x1d
    3. 读取响应0x21: 0290A8E024851DA496C34DFF6E4167AD5A46202F   (6E4167AD5A46202F = KeyF)
    4. AuthWriteKeyC () 0x1c、输入: 1306BDC7A9F86B69101DA850B530359114000C33
    5. 输入为1306BDC7A9F86B69101DA850B530359114000C33时的难题0x1d
    6. 读取响应0x21:02907456915115ED85C9B20324ADCFB1AA4B1B08   (24ADCFB1AA4B1B08 = KeyC)
    7. 打开 bqKeyPackager
      1. 输入 SHA-1认证密钥 F:0290A8E024851DA496C34DFF6E4167AD5A46202F  
      2. 输入 SHA-1认证密钥 C: 02907456915115ED85C9B20324ADCFB1AA4B08
      3. 创建.bqk 文件
    8. 打开 bqKeyProgrammer
      1. 加载.bqk 文件并开始编程和验证密钥

    谢谢你。

    此致、
    埃里克

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

    Eric、您好!

    该常见问题解答提到您可以通过在 Auth Config 寄存器中切换选择位来选择每种方法。

    我没有遵循您概述的步骤、这些步骤与我们的示例中所示的步骤不同。 最后一个密钥是附加到另一个密钥 C 和密钥 F 的每个 SHA1哈希的最后8个字节、看起来您正在通过发送一个质询来获取哈希、但该质询不起作用。 您需要使用 SHA-1计算器对20字节的键 C 和键 F 输入执行哈希运算、以查找每个输入的最后8个字节。

    此致、

    怀亚特·凯勒

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

    尊敬的 Wyatt:

    感谢您帮助我完成该程序、我想我对它有更好的理解。 但我仍然不确定我应该在 bqKeyPackager 中输入的 keyF 和 keyC 的内容。 它们是 SHA-1计算后密钥的哈希输出、还是具有不同挑战的最终密钥的两个响应?

    谢谢你。

    此致、
    埃里克

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

    Eric、您好!

    打包程序和常见问题解答示例的密钥 F 和密钥 C 是相同的、您可以使用相同的过程来获取这两者的最终密钥。 您需要使用在线工具对密钥 F 和密钥 C 20字节输入进行 SHA-1哈希运算。 使用在线工具执行哈希运算后、按照常见问题解答中的说明一起附加最后8个字节以获取最终密钥。

    以下是一款可使用的工具示例: https://emn178.github.io/online-tools/sha1.html

    此致、

    怀亚特·凯勒

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

    尊敬的 Wyatt:

    我对密钥 F 和密钥 C 使用了相同的输入、在使用在线工具进行哈希运算后、我尝试在 bqKeyPackager 中创建.bqk 文件、并且尝试在 bqKeyProgrammer 中对密钥进行编程和验证。 但是、我一直未能收到错误消息。

    我以前没有对器件进行编程、因此我认为在打包程序中输入的输入一定是错误的。 你能指出我错了哪一步吗?

    1. AuthWriteKeyF () cmd、输入: 2309BDC0A9F86B69111CA850B530339111000C47 (小端字节序)
    2. 使用在线工具执行 SHA-1哈希:
      1. 输入: 470C0011913330B550A81C11696BF8A9C0BD0923 (大端字节序)
      2. 获取散列输出: F4EE025E15C06FB17521FF39CE0B198608D0916
      3. 最后8个字节是键 F (9CE0B198608D0916)
    3. 具有相同输入的 AuthWriteKeyC () cmd: 2309BDC0A9F86B69111CA850B530339111000C47 (小端字节序)
    4. 在 bqKeyPackager 中:
      1. 从散列输出输入 SHA 验证密钥 F 和密钥 C 相同输入: F4EE025E15C06FB17521FF39CE0B198608D0916
      2. 创建.bqk 文件
    5. 在 bqKeyProgrammer 中:
      1. 加载密钥并对其进行编程=>错误 消息

    非常感谢。

    此致、

    埃里克

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

    您好、Eric、

    获取散列输出:F4EE025E15C06FB17521FF39CE0B198608D0916
     

    这里有一个错误

    正确的散列输出为:F4EE025E15C06FB17521FF39CE0B1986085D0916

    正确的最后8个字节是关键字 F :  CE0B1986085D0916

    如果您遵循此示例,KeyC 的小端字节序应为: 330C0014913530B550A81D10696BF8A9C7BD0613

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

    尊敬的 Kipp:

    我已经更正了关键字 F 哈希输出的错误、并使用 bqKeyPackager 和 bqKeyProgrammer 再次进行了尝试。
    但是、我仍然收到错误消息、告诉我质询与响应不匹配。
    我正在使用示例中的数据、我执行了以下操作:

    在 bqStudio 中:

    • AuthWriteKeyF () 0x1b: 2309BDC0A9F86B69111CA850B530339111000C47
    • AuthWriteKeyC () 0x1c: 330C0014913530B550A81D10696BF8A9C7BD0613

    在 bqKeyPackager 中:

    • SHA1认证密钥 F: F4EE025E15C06FB17521FF39CE0B1986085D0916
    • SHA1认证密钥 C: EBE744F8B027943CB91DC300DB5A0A67084C16

    谢谢你。

    此致、
    埃里克

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

    您好、Eric、

    请遵循随附的这份草拟的应用手册中的说明

    e2e.ti.com/.../SLUAAQ0_3D00_1_3D00_TI-PDF_3D00_en_2D00_us-_2800_9_2900_.pdf

    KeyF 值:F4EE025E15C06FB17521FF39CE0B1986085D0916

    KeyC 值: EBE744F8B027943CB91DCBC300DB5A0A67084C16

    如果仍失败、请尽可能尝试使用新的 IC BQ40z50 EVM/EVM。