我将嵌入式TLS 1.0实现更新到TLS 1.2(代码空间不超过1MB且没有操作系统的设备)。此时,我使用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现在是强制实施密码套件。"
然而,当我阅读安全博客上的各种帖子时,我看到的建议会让用户禁用该套件,并且(例如)只允许使用ECDHE_RSA或DHE_RSA版本。
所以我的问题是使用我们的库的设备是否可以与现代Web浏览器(作为服务器)和现代https / smtps / pop服务器(作为客户端)进行互操作。 TLS 1.2客户端/服务器是否无法协商TLS_RSA_WITH_AES_128_CBC_SHA连接?
答案 0 :(得分:2)
我不确定目前有多台支持TLS的服务器无法与TLS_RSA_WITH_AES_128_CBC_SHA
协商TLSv1.2
,因为它是TLSv1.2
的强制密码套件。
然而,有些事情需要牢记:
TLS_RSA_WITH_3DES_EDE_CBC_SHA
对于TLSv1.0
和TLSv1.1
是强制性的,但由于安全原因,每个服务器都不再支持它,AES128
代替AES256
,因此,如果我能为您提供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
的问题是另一个问题,但如果您有足够的空间,我建议您也添加TLSv1.0
(TLSv1.1
不提供额外的兼容性。)< / p>
PS:AES128
取代AES256
而不是AES256
的原因是有些人认为AES128
添加的额外安全性(目前)毫无价值且app.UseStaticFiles("/Scripts");
似乎更能抵抗时间攻击。
答案 1 :(得分:1)
&#34;所以我的问题是使用我们的库的设备是否可以与现代Web浏览器(作为服务器)和现代https / smtps / pop服务器(作为客户端)进行互操作。 TLS 1.2客户端/服务器是否无法协商TLS_RSA_WITH_AES_128_CBC_SHA连接?&#34;
是的,有很多实施失败。
最常见的是:
我的建议是:
或者使用像https://www.ssllabs.com/ssltest/index.html这样的工具/网站,测试服务器的兼容性/安全性,直到它足够您。