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.

[参考译文] CC3220SF-LAUNCHXL:CC3220SF:Google IoT 的 RSASSA 签名

Guru**** 2595805 points
Other Parts Discussed in Thread: SHA-256, CC3220SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/758683/cc3220sf-launchxl-cc3220sf-rsassa-signing-for-google-iot

器件型号:CC3220SF-LAUNCHXL
主题中讨论的其他器件:SHA-256CC3220SF

我正在尝试连接 google 物联网内核。

我阅读 google 文档 

我按照 JWT 令牌生成的所有步骤进行了操作。

使用 RSASSA 签名时遇到问题(使用{"ALG":"RS256"、"典型值":"JWT"}的页眉)

如何 使用 crypto utils 生成 RSA 散列?  

(或)

还有其他方法吗?

谢谢你  

  瓦苏

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

    请访问 :e2e.ti.com/.../729885

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

    我已经看到这个线程。

    用于执行 RSA 部分的加密实用程序(我需要使用哪个加密 API 进行 RSA 签名)?

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

    请改正我的问题。
    由于硬件限制,无法使用加密实用程序来执行 RSA 部分( e2e.ti.com/.../2576350)
    现在我计划再使用一种方法(使用 P-256和 SHA-256的 ECDSA)。
    但 TI 支持 ECDSAwithSHA 签名和验证支持 ECDSAwithSHA 或 ECDSAwithSHA256。

    1)如何使用 P-256和 SHA-256对 ECDSA 进行签名(首先,我需要使用 SHA-256 TI 加密实用程序在使用 P-256的 ECDSA 之后进行签名)?
    2)如何签名(使用 P-256的 ECDSA) P-256内部支持,或者我需要再使用一种算法?

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

    请给我一些时间来了解这一点。

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

    您好、Jesu、

    感谢您的回复、

    好的、我会等待  

    我还有一个问题

    我研究了是否需要 ECDSA 签署两个参数   

       1) 1)签署消息  

       2) 2)私钥  

    signAttrib.Flags = 0;
    signAttrib.Objid = 3;
    signAttrib.SigType = SL_NETUTIL_Crypto_SIG_SHAwECDSA;//这是唯一支持的类型*/
    CONFIGLen = 255;
    状态= sl_NetUtilCmd (sl_NETUTIL_crype_CMD_sign_MSG、(_u8 *)&signAttrib、
    sizeof (slNetUtilCryptoCmdSignAttrib_t)、
    messageBuf、sizeof (messageBuf)、buff、configLen);
    
    UART_PRINT ("签名 SHAwECDSA -%s\r\n、buff);
    for (count=0;<configLen;count++)
    {
    UART_PRINT ("%02x "、*(buff + count));
    }
    UART_PRINT ("\n\n"r); 

    1)标志的用途是什么,如何使用?

    2) 2)为什么使用标志值3?

    3)请参阅 SL_NetUtilCmd 此处的 API 如何传递签名消息和用于签名的私钥(但此处仅提及一个参数  

    messageBuf 不提供私钥,这是如何签名的? 


     

     

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

    如前所述、目前唯一支持的方法是采用 EC 的 SHA-1。
    如果这足够好、您可以参考 out_for_the_box 示例(ota_archive.c)并遵循 sl_NETUTIL_crypto_CMD_verify_MSG 用法。 这一个使用密钥来验证消息、但签名非常相似。 您需要首先使用"sl_NetUtilCmd (sl_NETUTIL_crype_CMD_INSTALL_OP...)"安装私钥 然后在使用 SL_NETUTIL_crypto_CMD_sign_MSG 时使用相同的 Objid (替换"signAttrib.Objid = 3")。 该标志应为0。


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

    您好、Kobi、

    SlNetUtilCryptoPubKeyInfo_t *spInfoKey;
    slNetUtilCryptoCmdKeyMgnt_t skeyAttrib;
    slNetUtilCryptoCmdVerifyAttrib_t sverAttrib;
    uint16_t sresultLen = 0;
    uint8_t sbuf[sl_NETUTIL_CMD_buffer_size];
    uint8_t sname;
    uint8_t *sverifyBuf;
    int16_t sStatus;
    int32_t sverifyResult;
    
    skeyAttrib.Objid = 3;
    skeyAttrib.SubCmd = sl_NETUTIL_crype_install_sub_CMD;
    spInfoKey =(SlNetUtilCryptoPubKeyInfo_t *) sbuf;
    spInfoKey->KeyAlgo = sl_NETUTIL_crypto_pub_key_算法;
    spInfoKey->KeyParams.EcParams.CurveType =
    SL_NETUTIL_Crypto_EC_curve_type_named;
    spInfoKey->KeyParams.EcParams.CurveParams.NamedCurveParams =
    SL_NETUTIL_crype_EC_named_curve_SECP256R1;
    
    spInfoKey->CertFileNameLen = 0;
    sname =((_u8 *) spInfoKey)+ sizeof (SlNetUtilCryptoPubKeyInfo_t);
    sname += spInfoKey->CertFileNameLen;
    strcpy ((char *) sname、"ec_private.der");
    spInfoKey->KeyFileNameLen = strlen (ec_private.der")+ 1;
    
    状态= sl_NetUtilCmd (
    SL_NETUTIL_crype_CMD_INSTALL_OP、(_u8 *)和 skeyAtrib、
    sizeof (slNetUtilCryptoCmdKeyMgnt_t)、
    (_u8 *) spInfoKey、
    sizeof (slNetUtilCryptoPubKeyInfo_t)+ spInfoKeyKey->KeyFileNameLen、NULL、
    sresultLen (&S);
    
    _u8 buff [256];
    _u8 verifyBuf[1400];
    slNetUtilCryptoCmdSignAttrib_t signAttrib;
    
    signAttrib.Flags = 0;
    signAttrib.Objid = 3;
    signAttrib.SigType = SL_NETUTIL_Crypto_SIG_SHAwECDSA;/*(TI 提到)这是唯一支持的类型*/
    CONFIGLen = 255;
    状态= sl_NetUtilCmd (sl_NETUTIL_crype_CMD_sign_MSG、(_u8 *)&signAttrib、
    sizeof (slNetUtilCryptoCmdSignAttrib_t)、
    (const _u8 *) in、h话题 长度、buff、configLen);
    
    UART_PRINT ("签名 SHAwECDSA -%s\r\n、buff);
    for (count=0;<configLen;count++)
    {
    UART_PRINT ("%02x "、*(buff + count));
    }
    UART_PRINT ("\n\n"r); 
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    1)在签名(sl_NETUTIL_crypto_CMD_sign_MSG)时,我正在获取 SL_ERROR_NETUTIL_crypto_General (-12289L),为什么会出现错误?

    2)私钥格式仅支持 DER 不支持 PEM 格式?

    3) SHAwECDSA 这意味着只有 ECDSA 签名或 SHA1 ECDSA 签名(这是我怀疑 SHA1是类似 SHA256的签名类型)?

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    cc3220sf 能够连接到 google 物联网内核(密码字段除外、密码字段除外)我正在手动输入 JWT 令牌(使用 JWT.IO 站点我正在生成手动输入的 JWT 令牌、我可以连接)

    在 cc3220sf 中、生成签名之前执行的所有操作、如标头和有效载荷。

    生成签名我需要使用 RSA (或) ECDSA。

    RSA 签名在 cc3220sf only 选项 ECDSA 签名中不可能。


    4) Google 支持(ECDSA 使用 P-256和 SHA-256)这种类型的签名可以使用 cc3220sf 中的加密实用程序吗?

    5) 5)如果可能、这意味着如何做到这一点?

    6) 6)如果不可能,我需要使用任何 c 算法进行 RSA (或) ECDSA 签名?


    谢谢你

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

    您好、Vasu、

     1) 1)我不确定问题是什么。 请尝试收集 NWP 日志 (processors.wiki.ti.com/.../CC3120_&_CC3220_Capture_NWP_Logs) 、以便获取更多详细信息。

    2) 2)仅支持 DER 格式

    3) 3) SHA-1是 SHA 算法的第一个版本、后来引入了 SHA-256。

    4) 4)当前堆栈仅支持 SHA-1。  

    5) 5) 您可以集成外部 TLS 堆栈(例如 wolfsl 或 mbedtls)以支持此类签名。 您是否确实需要在器件上签名? (如果它仅用于密码 JWT,则可以脱机准备它)。

    BR、

    Kobi

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

    即将推出的堆栈可以使用 P-256和 SHA-256支持 ECDSA?

    5) 5)仅 Google IoT (JWT)密码字段需要签名。

    再次使用 SHA-256转移到 RSA PKCS1-v1_5。

    我已经使用 SHA-256实现了 PKCS1-v1_5。

    TI 支持任何 RSA 算法源代码?

    谢谢你

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

    您好!

    没有立即计划添加 SHA256 w P256支持。

    NWP 内部支持 RSA (用于 TLS/SSL 或代码签名)、但 没有用于(MCU)应用的直接接口(用于对消息进行签名/验证)。

    BR、

    Kobi

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

    感谢您的所有简要说明、

    我尝试找到第三方 RSA (或) ECDSA 签名算法。

    谢谢你
    瓦苏
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    最后、ECDSA 第三方算法工作正常。
    现在、我可以连接 google 物联网内核。

    谢谢你
    瓦苏