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_SHA
对 TLSv1.0
和 TLSv1.1
是强制性的,但由于安全原因不再被所有服务器支持,
- Mozilla 建议(而且它不是唯一的)支持
AES128
而不是 AES256
、
- DHE 或 ECDHE 允许的完美前向保密 (PFS) 现在是必备功能。
所以如果我可以为您提供 4 个密码套件(与您拥有的数量相同),我会说这些从最强到最弱:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
我会说这 4 个密码套件带来了足够的安全性和与 TLSv1.2
服务器的兼容性。
现在只支持TLSv1.2
的问题是另一个问题,但是如果你有足够的space,我建议你也添加TLSv1.0
(TLSv1.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?"
是的,有很多实施失败了。
最常见:
- 仍然发送 SSL2.0 Client Hello 的客户端
- Clients/Servers 仅支持 PFS 密码套件
- 仍然不支持 TLS 1.2 的服务器
- 不再支持 TLS 1.2 的服务器 - 因为那些只支持 TLS 1.3
我的建议是:
- 还支持 TLS 1.3(实现起来并不难,我做到了)
- 也支持 DHE
或者使用像 https://www.ssllabs.com/ssltest/index.html 这样的 tool/site 并测试你的服务器的 compatibility/security 直到它对你来说足够了。
我正在将嵌入式 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_SHA
对TLSv1.0
和TLSv1.1
是强制性的,但由于安全原因不再被所有服务器支持,- Mozilla 建议(而且它不是唯一的)支持
AES128
而不是AES256
、 - DHE 或 ECDHE 允许的完美前向保密 (PFS) 现在是必备功能。
所以如果我可以为您提供 4 个密码套件(与您拥有的数量相同),我会说这些从最强到最弱:
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_RSA_WITH_AES_128_GCM_SHA256
TLS_RSA_WITH_AES_128_CBC_SHA
我会说这 4 个密码套件带来了足够的安全性和与 TLSv1.2
服务器的兼容性。
现在只支持TLSv1.2
的问题是另一个问题,但是如果你有足够的space,我建议你也添加TLSv1.0
(TLSv1.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?"
是的,有很多实施失败了。
最常见:
- 仍然发送 SSL2.0 Client Hello 的客户端
- Clients/Servers 仅支持 PFS 密码套件
- 仍然不支持 TLS 1.2 的服务器
- 不再支持 TLS 1.2 的服务器 - 因为那些只支持 TLS 1.3
我的建议是:
- 还支持 TLS 1.3(实现起来并不难,我做到了)
- 也支持 DHE
或者使用像 https://www.ssllabs.com/ssltest/index.html 这样的 tool/site 并测试你的服务器的 compatibility/security 直到它对你来说足够了。