Ответ 1
Java (JCE/JSSE) использует параметры DH из некоторых известных групп DSA. Генератор параметров 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
, которое может определять параметры конечного поля.