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:TLS 1.2默认密码器和 x509密钥使用

Guru**** 2482225 points
Other Parts Discussed in Thread: CC3220SF

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1301583/cc3220sf-tls-1-2-default-ciphers-and-x509-key-usage

器件型号:CC3220SF

您好!

我们提供的器件中、cc3220SF 在配置过程中托管安全的 HTTP 服务器、这样移动应用就可以连接到该服务器并交换信息。

Android 最近包括了 对 BoringSSL 的更新、该更新强制执行 "X509v3密钥使用"部分。

我们使用默认 AWS IoT CA 生成的证书  对我们的设备进行编程。密钥对是 RSA、证书的密钥使用部分仅包含 digitalSignature 

在握手期间、cc3220服务器决定 使用密码套件 TLS_RSA_WITH_AES_256_CBC_SHAAndroid 移动应用程序失败、并显示 BoringSSL 错误:  KEY_USAGE_BIT_INCORRECT。   发生这种情况是因为 keyEnchipherment使用 RSA 密钥交换时、现在必须设置位。

由于我们无法更新设备上的证书,因此我们尝试只强制 ECDHE_RSA方法是TLS_RSA_*从 Android 客户端 hello 消息中删除所有密码套件。   下面是 Android 的 TLS1.2默认密码套件,其中已注释掉了 TLS_RSA_*选项:

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
//TLS_RSA_WITH_AES_128_GCM_SHA256
//TLS_RSA_WITH_AES_256_GCM_SHA384
//TLS_RSA_WITH_AES_128_CBC_SHA
//TLS_RSA_WITH_AES_256_CBC_SHA

电话发送带有上述密码列表(减去 TLS_RSA_*)的 Client Hello 消息后,cc3220会立即关闭连接。 根据 https://www.ti.com/lit/an/swra509c/swra509c.pdf?ECDHE=1701965027847 的第2.2节、cc3220应该能够支持 ts  密码。  

 在使用启动 cc3220服务器之前、我们不会更改其默认协议或密码套件  sl_NetAppStart(SL_NETAPP_HTTP_SERVER_ID);  

Question:

  1. CC3220上的安全 HTTP 服务器有哪些默认协议和密码套件?
  2. 如果 客户端 Hello 中的密码受支持、为什么 CC3220会 关闭连接?  取消注释 TLS_RSA_*选项后,会继续握手并选择  TLS_RSA_WITH_AES_256_CBC_SHA 连接、但手机会自接入点起 keyEnchipherment未在证书中设置位。
  3. cc3220现在是否强制执行"x509 Key Usage"(x509密钥使用)部分?    如果安装的证书中没有要使用的 TLS_RSA_*密码,则似乎没有该密码,因为它不应该选择要使用的 TLS_RSA_*密码。 keyEnchipherment已设置。  如果没有、TI 是否计划在未来实施该计划?

谢谢你。

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

    我们需要先检查代码、然后才能得到答案。

    如果您可以收集  空气监听器日志或 NWP 日志(请参阅 https://www.ti.com/lit/pdf/swru455中的第20章)、它 会加快响应速度。

    请注意、由于 CC3220中的资源限制、我们可能无法修复此类问题(使用服务包)。

    在 SDK7.10中,我们在主机 MCU 上添加了对 mbedTLS 协议栈的支持(请参见 mqtt_client_over_TLS_1_3示例) 。此目的是启用 TLS1.3 (客户端)支持,但您可以将此作为在主机上实施 HTTPS 服务器的基础。 (该 SDK 还包含 HTTP 服务器的实现-请参阅 source/ti/net/http 下的内容)。

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

    似乎内部 http 服务器仅配置了 TLS_RSA*:

        SECURE_MASK_TLS_RSA_WITH_AES_256_CBC_SHA  |
        SECURE_MASK_TLS_RSA_WITH_AES_128_CBC_SHA256 |
        SECURE_MASK_TLS_RSA_WITH_AES_256_CBC_SHA256 |
        SECURE_MASK_TLS_RSA_带_AES_128_GCM_SHA256
    无法从主机重新配置它。
    因此、您可以改用 HTTP 服务器的主机实现。 似乎你 将 能够通过内部 TLS 堆栈来处理该问题、而目前无需切换到 mbedTLS 堆栈。