![为什么在有 AES 可用的情况下 Android / IE 却使用 3DES?](https://linux22.com/image/653671/%E4%B8%BA%E4%BB%80%E4%B9%88%E5%9C%A8%E6%9C%89%20AES%20%E5%8F%AF%E7%94%A8%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%20Android%20%2F%20IE%20%E5%8D%B4%E4%BD%BF%E7%94%A8%203DES%EF%BC%9F.png)
我安装了 Zimbra,想强化密码套件。我禁用了一些,剩下的还算可以。
现在的问题是Qualys SSL 测试t 表明很多客户端将使用 3DES,这只是我最后的后备选择。
如果我查看 Android 5 和我的服务器支持的密码(例如),会发现有更多的重叠,并且两者都可以使用相同的 AES 密码套件。
为什么不使用 AES 密码?
以下是整个测试的输出:
答案1
通常,每个客户端对于所支持的密码都有自己的偏好。
继续你的例子:Android 5.0.0支持合理的数量,但有一些奇怪的偏好,一些客观上较弱的密码比一些更强的密码更受青睐。
根据 SSL 实验室的扫描结果(“密码套件(按强度排序;服务器没有偏好)”部分)您的服务器将仅支持有限数量的密码,并且不显示首选项,将密码协商主要留给客户端,这导致TLS_RSA_WITH_3DES_EDE_CBC_SHA (0xa)
答案2
此行为由从客户端传递到服务器的密码列表决定,其中客户端告诉服务器它支持哪些密码,以及每个密码的优先级。 尤其是 Android,它在密码套件的优先顺序方面做出了一些不安全的选择,它更喜欢使用非常不安全的密码而不是它支持的安全密码,但没有给出任何原因的解释。
我怀疑这是设计选择。通过选择计算量较小的密码,你可以使用更少的电量,从而延长电池寿命,这是消费者在智能手机中注意到并关心的事情,相比之下,在安全性方面,只要最终用户看到锁定图标,就表示“它是安全的”,这就是他们唯一关心的(如果他们真的那么关心的话)。
因此,他们使用 3DES 是因为他们更喜欢这种较弱的密码,而您允许使用它。阻止偏好可疑的客户端选择它的唯一方法是将其删除。
答案3
要修复 @HBrujin 和 @HopelessN00b 已经解释过的问题,您可以为 Web 服务器设置首选列表密码,Web 服务器也可以有偏好设置,而不仅仅是客户端。我建议使用Bettercrypto.org项目应用加密强化。
例如对于 Apache,您可以使用
SSLCipherSuite 'EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA'
在您的 SSL/TLS 设置中。要支持 3DES,请3DES
从字符串中删除,但前提是确实有必要并且您需要支持上个世纪的软件。此密码字符串可用于使用旧软件的商业环境(也不推荐,但你知道商业......)。