(如何)是否可以告诉 openssl 的s_client
工具对 3DES 使用密钥选项 2(意味着仅使用两个不同的密钥,从而产生 112 位的密钥大小;参见维基百科)?
目前我最接近的是
openssl s_client -connect example.com:443 -tls1 -cipher DES-CBC3-SHA \
-debug -msg -state -status -CApath /.../cacerts/ </dev/null
但是该命令使用了密钥选项 1(三个不同的密钥,168 位密钥长度)。
类似的工具http://ssllabs.com似乎能够“模拟”例如 Win XP 上的 IE8,它似乎使用带有密钥选项 2 的 3DES......
答案1
你不能。使用“3DES”的标准 SSL/TLS 协议使用 24 字节密钥作为密钥选项 1(实际上是 168 位密钥和 24 位过时的奇偶校验,将被忽略)。请参阅3DES_EDE_CBC
表格和后续图例标准附录C并Data Encryption Standard
进入词汇表。OpenSSL 实现了该标准因为它必须与其他实现进行互操作。
SSLLabs 的意思是,168 位密钥的 3DES 仅提供112 位强度由于中间相遇攻击(适用于任何迭代密码,而不仅仅是 3DES)。请参阅
https://crypto.stackexchange.com/questions/6345/why-is-triple-des-using-three-different-keys-vulnerable-to-a-meet-in-the-middle(attack)
https://crypto.stackexchange.com/questions/14659/find-out-which-keying-option-is-being-used-in-triple-des
https://crypto.stackexchange.com/questions/16073/why-is-triple-des-not-vulnerable-to-meet-in-the-middle-attacks
尤其是https://crypto.stackexchange.com/questions/22279/discrepancy-with-reported-key-size-for-ede-ciphers-in-qualys-ssl-labs这是从正确角度提出的同一个问题。