TLS 1.2 server/client 可以只用 TLS_RSA_WITH_AES_128_CBC_SHA 吗?

Can a TLS 1.2 server/client get by with just TLS_RSA_WITH_AES_128_CBC_SHA?

我正在将嵌入式 TLS 1.0 实施更新为 TLS 1.2(代码为 1MB space 或更少且没有 OS 的设备)。在这一点上,我有 AES-128 和 AES-256 CBC 密码与 SHA-1 和 SHA-256 摘要一起工作以实现最小的实现。库无法协商 SSLv2、SSLv3、TLS 1.0 或 TLS 1.1 连接。

我觉得这就足够了,因为 RFC 5246 指出,"TLS_RSA_WITH_AES_128_CBC_SHA is now the mandatory to implement cipher suite."

然而,当我阅读安全博客上的各种帖子时,我看到了让用户禁用该套件的建议,并且(例如)只允许 ECDHE_RSA 或 DHE_RSA 变体。

所以我的问题是使用我们库的设备是否可以与现代网络浏览器(作为服务器)和现代 https/smtps/pop 服务器(作为客户端)互操作。 是否有无法协商 TLS_RSA_WITH_AES_128_CBC_SHA 连接的 TLS 1.2 clients/servers?

我不确定目前有多少支持 TLS 的服务器无法与 TLSv1.2 协商 TLS_RSA_WITH_AES_128_CBC_SHA,因为它是 TLSv1.2 的强制性密码套件。

不过有几点需要注意:

  • TLS_RSA_WITH_3DES_EDE_CBC_SHATLSv1.0TLSv1.1 是强制性的,但由于安全原因不再被所有服务器支持,
  • Mozilla 建议(而且它不是唯一的)支持 AES128 而不是 AES256
  • DHE 或 ECDHE 允许的完美前向保密 (PFS) 现在是必备功能。

所以如果我可以为您提供 4 个密码套件(与您拥有的数量相同),我会说这些从最强到最弱:

  1. TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
  2. TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
  3. TLS_RSA_WITH_AES_128_GCM_SHA256
  4. TLS_RSA_WITH_AES_128_CBC_SHA

我会说这 4 个密码套件带来了足够的安全性和与 TLSv1.2 服务器的兼容性。

现在只支持TLSv1.2的问题是另一个问题,但是如果你有足够的space,我建议你也添加TLSv1.0TLSv1.1不提供额外的兼容性)。

PS:AES128而不是AES256受到青睐的原因是有些人认为AES256增加的额外安全性(目前)毫无价值并且AES128 似乎更能抵抗定时攻击。

"So my question is whether devices using our library will interoperate with modern web browsers (as a server) and modern https/smtps/pop servers (as a client). Are there TLS 1.2 clients/servers that fail to negotiate a TLS_RSA_WITH_AES_128_CBC_SHA connection?"

是的,有很多实施失败了。

最常见:

  1. 仍然发送 SSL2.0 Client Hello 的客户端
  2. Clients/Servers 仅支持 PFS 密码套件
  3. 仍然不支持 TLS 1.2 的服务器
  4. 不再支持 TLS 1.2 的服务器 - 因为那些只支持 TLS 1.3

我的建议是:

  • 还支持 TLS 1.3(实现起来并不难,我做到了)
  • 也支持 DHE

或者使用像 https://www.ssllabs.com/ssltest/index.html 这样的 tool/site 并测试你的服务器的 compatibility/security 直到它对你来说足够了。