10

针对 TLS 的新 Logjam 攻击基于常见的 DH 组。此链接建议为每个服务器生成一个新的自定义 2048 位 DH 组。

如何在使用 SSLEngine 的 Java 服务器代码中设置自定义 DH 组?

ETA:如果我只使用临时 DH 密码套件,即带有 DHE 或 ECDHE 而不是 DH 或 ECDH 的名称,我会安全吗?还是这无关?

4

1 回答 1

7

Java (JCE/JSSE) 使用来自一些知名 DSA 组的 DH 参数。JCE 参数生成器只允许生成大小在 512 和 1024 位(或 2048 位)之间的组,但另一方面的 JSSE 实现只接受 1024 和 2048 之间的自定义大小。

这会影响您不能使用任何自定义大小,只有 1024 或 2048(使用 Java 8)。请记住,Java 7 仍然只使用 768 位作为服务器(或可导出加密模式下的 512)。

从版本 8 开始,Java 服务器默认使用 1024 位。您可以使用 .将服务器端增加到 2048 位jdk.tls.ephemeralDHKeySize=2048。请参阅自定义临时 DH 密钥的大小

Java 作为 TLS 客户端在旧版本中不那么严格,并且接受不安全的组。

更新:使用 OpenJDK 8U65 (JSSE) 有一个jdk.tls.server.defaultDHEParameters可以定义有限域参数的安全属性。

于 2015-05-22T22:02:57.747 回答