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.

[参考译文] CC1352R:使用压缩(仅限 x 坐标)公共密钥的 ECDH NISTP256

Guru**** 2551570 points
Other Parts Discussed in Thread: CC1352R

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1046781/cc1352r-ecdh-nistp256-using-compressed-x-coordinate-only-public-key

器件型号:CC1352R

您好!

对于关键协议方案、我需要能够使用具有 Nistp256曲线的 ECDH 计算共享机密。

我现在面临的 TI ECDH 驱动程序问题是、它需要一整套(x、y)的公钥、但密钥交换协议仅为我提供压缩的公钥。

我尝试向驱动器提供压缩密钥、但它会生成错误-9 "ECDH_STATUS_INVALID_KEY_SIZE "。

通过查看代码(如下所示)、我看到它专门检查第一个字节是否为4、表示完整密钥。 但我 的公钥有2或3、表示已压缩的密钥。

    else /* Validate key sizes to make sure octet string format is used for short Weierstrass curves */
    {
        if (operation->myPrivateKey->u.plaintext.keyLength != operation->curve->length ||
            operation->theirPublicKey->u.plaintext.keyLength != 2 * operation->curve->length + OCTET_STRING_OFFSET ||
            operation->theirPublicKey->u.plaintext.keyMaterial[0] != 0x04 ||
            operation->sharedSecret->u.plaintext.keyLength != 2 * operation->curve->length + OCTET_STRING_OFFSET)
        {
            return ECDH_STATUS_INVALID_KEY_SIZE;
        }
    }

如何让 ECDH 驱动程序使用压缩密钥生成共享机密?

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

    您好、Marijin、

    似乎有一个主题对此进行了讨论。 更新 SDK 是否未解决您的问题?  

    https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/942685/cc1352r-ecdh-ecdsa-with-compressed-public-key-or-how-to-decompress

    此致、

    Siddanth

     

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

    您好 Siddanth、

    感谢您的回复。

    实际上、该线程也是我的。 但这 主要是关于经济、生活和生活津贴的问题,事实上,这是在 SDK4.30中确定的。

    因此、我现在可以使用压缩密钥使用 ECDSA 签署消息。

    但我还必须使用 ECDH 创建一个共享机密、这就是我遇到的问题、因为我似乎无法使用压缩密钥。

    BTW 我现在位于 SDK5.20上。

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

    您好 、Marijn、

    我们目前不支持使用带有 短微带曲线的压缩密钥。

    此致、
    Siddanth

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

    这将很快开发出来吗? 我真的需要这样做、因为除了从另一方获得压缩的公钥之外、我无法获得任何其他东西(对此没有控制权)。

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

    您好、Marijn、

    我将与 Rnd 联系、并告知您是否有任何此方面的发展计划、或者是否有任何工作需要完成此项工作。  

    此致、
    Siddanth

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

    您好、Marijn、

    目前、我们 没有任何计划在 不久的将来支持驱动程序使用压缩公钥。

    此致、

    Siddanth

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

    您好 Siddanth、

    这是非常不幸的、因为我无法从另一个器件获取未压缩的密钥(协议规定公钥未压缩)。

    有什么其他方法可以让 CC1352R 从压缩键中解压缩(计算 Y 坐标)?

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

    您好、Marijn、  

    遗憾的是、驱动程序中没有用于此目的的 API、但必要时需要由用户实施。

    此致、

    Siddanth  

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

    您好 Siddanth、

     真是个好消息。 您是否有任何 有关如何解决此问题的示例/文档? 我知道它基本上是"只"解出公式  Y2 = X3 + Ax + b。但这需要在大数字模块(PKA)中完成、 在使用此驱动程序方面没有经验、也看不到如何实现 sqrt 和 pow3。

    您能在这里提供一些建议吗?

    Ciao、

    Marijn

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

    您好、Marijn、  

    也许用于访问 PKA 的驱动程序库文档是一个很好的资源。  

    https://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_5_20_00_52/docs/driverlib_cc13xx_cc26xx/cc13x2_cc26x2/driverlib/group__pka__api.html

    它提供了 用于使用 PKA 的 API。  

    此致、

    Siddanth

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

    您好 Siddanth、

    谢谢、我在此 API 中看不到 mod sqrt 函数。

    因为用于计算 y 坐标的函数是  Y2 = X3 + Ax + b

    我们需要执行 sqrt 函数。 如何在 PKA 中实现这一点?

    Ciao、

    Marijn

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

    对此进行了任何更新?

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

    您好、Marijn、

    由于您使用 driverlib 函数访问模块以获取 TI ECDH 驱动程序不支持的功能、因此我们不支持此功能。 但我会尝试研究它、并为您提供一些反馈。  

    此致、
    Siddanth