针对TLS的新的Logjam攻击是基于常见的DH组。This link建议为每台服务器生成一个新的自定义2048位DH组。
如何在使用SSLEngine的Java server代码中设置自定义DH组?
ETA:如果我只使用短暂的DH密码套件,即在它们的名称中包含DHE或ECDHE而不是DH或ECDH,我会安全吗?或者这是不相关的?
发布于 2015-05-23 06:02:58
Java (JCE/JSSE)使用来自某些well known DSA groups的DH参数。JCE参数生成器只允许生成大小在512到1024位(或2048)之间的组,而另一端的JSSE实现只接受1024到2048之间的自定义大小。
这会影响您不能使用任何自定义大小,只能使用1024或2048 (使用Java 8)。请记住,Java7仍然只使用768位作为服务器(或在可导出加密模式下使用512 )。
从版本8开始,Java服务器默认使用1024位。您可以使用jdk.tls.ephemeralDHKeySize=2048将服务器端容量增加到2048位。参见Customizing Size of Ephemeral DH Keys。
Java作为TLS客户端在旧版本中不那么严格,并且接受不安全的组。
更新:在JSSE8U65( OpenJDK )中有一个安全属性jdk.tls.server.defaultDHEParameters,它可以定义有限字段参数。
https://stackoverflow.com/questions/30352105
复制相似问题