Зачем включать постквантовый обмен ключами уже сейчас
Потому что трафик можно записать сегодня и расшифровать позже, когда появится достаточно мощный квантовый компьютер. Это называют «store now, decrypt later». Защищает от такого сценария только обмен ключами, устойчивый к квантовым атакам, и включить его на сервере можно уже сейчас — и для TLS, и для SSH.
Угроза названа прямо в заметках к OpenSSH 10.1: предупреждение о не постквантовом обмене добавлено из-за риска атак «store now, decrypt later». Подписи и сертификаты — отдельная тема, здесь о них не говорим.
Что такое X25519MLKEM768 и что определяет RFC 10024
X25519MLKEM768 — гибридный обмен ключами для TLS 1.3: он объединяет классический X25519 с постквантовым ML-KEM. Описан в RFC 10024 (Standards Track, август 2026). Сессию защищают оба механизма сразу.
Важная деталь: RFC 10024 определяет три гибрида, а не один — X25519MLKEM768, SecP256r1MLKEM768 и SecP384r1MLKEM1024. Каждый сочетает ML-KEM с обменом ECDHE. Название пишите точно: по нему группа задаётся в настройках. Старое черновое имя X25519Kyber768Draft00 устарело и несовместимо с нынешним.
Что нужно для TLS: версии и проверка
Для TLS нужно одно: чтобы веб-сервер был собран с OpenSSL 3.5.0 или новее. У nginx своей минимальной версии для постквантового обмена нет — всё определяет версия OpenSSL, с которой он собран. Браузеры, судя по их публикациям, предлагают гибрид сами, поэтому ждать нужно только от сервера.
| Компонент | Что требуется | Как проверить |
|---|---|---|
| OpenSSL | версия 3.5.0 или новее: в ней появились ML-KEM и гибридные группы TLS, а по умолчанию предлагаются X25519MLKEM768 и X25519 | openssl version |
| nginx | своей минимальной версии нет, важно, с каким OpenSSL он собран | nginx -V |
openssl version
nginx -V 2>&1 | grep -i "built with"Первая команда показывает версию OpenSSL в системе, вторая — с какой версией собран nginx. Если версия ниже 3.5.0, постквантовые группы недоступны, и нужна другая сборка. Как читать сам сертификат — в статье про проверку SSL-сертификата.
Как включить постквантовый TLS в nginx
Если nginx собран с OpenSSL 3.5.0 или новее, чаще всего ничего менять не нужно: директива ssl_ecdh_curve по умолчанию равна auto, то есть берётся список OpenSSL, а он предпочитает гибридные группы. Если нужен явный список, он задаётся одной строкой.
Оговорка: вывод про auto — следствие из заметок OpenSSL и документации nginx, прямой фразы там нет. Проверяйте на своей сборке.
- Убедитесь, что nginx собран с OpenSSL 3.5.0 или новее.
- Оставьте директиву по умолчанию либо добавьте строку из примера в блок
httpилиserver. - Проверьте конфигурацию через
nginx -t— она покажет, принял ли OpenSSL имя группы — и перезагрузите службу. - Проверьте с клиента, что согласована гибридная группа.
# nginx.conf, блок http или server
ssl_ecdh_curve X25519MLKEM768:X25519:prime256v1;
# в терминале
nginx -t && systemctl reload nginx
openssl s_client -connect example.com:443 -groups X25519MLKEM768 </dev/nullВ списке оставлены классические X25519 и prime256v1: клиенты без постквантовой поддержки согласуют их. Если сервер не поддерживает гибридную группу, рукопожатие с такой командой завершится ошибкой — это и есть проверка. В выводе ищите строку Negotiated TLS1.3 group или Server Temp Key. Остальные директивы — в статье про настройку SSL/TLS в nginx.
SSH: с какой версии OpenSSH что работает
Постквантовый обмен появлялся в OpenSSH в два этапа, и их нельзя смешивать. В 9.9 алгоритм mlkem768x25519-sha256 стал доступным по умолчанию, а использоваться по умолчанию начал только в 10.0. Если у вас версия 10.0 или новее, ничего включать не нужно.
| Версия OpenSSH | Что изменилось |
|---|---|
| 9.0 | обменом по умолчанию стал sntrup761x25519-sha512@openssh.com |
| 9.9 | добавлен гибрид mlkem768x25519-sha256 (ML-KEM по FIPS 203 и X25519), он доступен по умолчанию |
| 10.0 | mlkem768x25519-sha256 используется по умолчанию |
| 10.1 | ssh предупреждает, если согласован не постквантовый обмен; опция WarnWeakCrypto, по умолчанию включена |
Если сервер не предлагает ни одного постквантового алгоритма, предупреждение увидят все клиенты 10.1 и новее. По сведениям на странице openssh.com/pq.html, правильное решение — обновить сервер до реализации SSH, где есть хотя бы один такой алгоритм.
Как включить и проверить постквантовый обмен в SSH
Проверка — несколько команд: версия клиента, список поддерживаемых обменов и выбранный обмен в подробном выводе; на сервере итог показывает sshd -T. На версии 10.0 и новее включать ничего не нужно, если вы не переопределили список вручную.
ssh -V
ssh -Q kex | grep -E "mlkem|sntrup"
sshd -T | grep -i kexalgorithms
ssh -v user@server.example 2>&1 | grep -i "kex: algorithm"Явный порядок в sshd_config задают строкой KexAlgorithms mlkem768x25519-sha256,sntrup761x25519-sha512@openssh.com,curve25519-sha256. Перед перезагрузкой проверьте конфигурацию через sshd -t и держите вторую сессию открытой. Остальные настройки демона — в статье про защиту SSH-сервера.
Оговорки: что может пойти не так
Главная ловушка — оставить в настройке только постквантовые алгоритмы. Тогда клиенты, которые их не знают, перестанут подключаться. Это следствие того, как согласуются алгоритмы, а не цитата из документации. Поэтому классический запасной вариант из списка не убирают, пока не убедились, что все ваши клиенты свежие.
Если перед сервером стоит прокси, балансировщик или CDN, группу согласует тот узел, который завершает TLS.
Частые вопросы
Нужно ли менять сертификат ради постквантового TLS?
Нет. Обмен ключами и сертификат — разные части рукопожатия. Гибрид X25519MLKEM768 меняет первое, а сертификат остаётся прежним.
Почему ssh пишет, что соединение не постквантовое?
Так ведёт себя OpenSSH с версии 10.1, когда согласован не постквантовый обмен; опция WarnWeakCrypto включена по умолчанию. Причину ищите в сервере: обновите его, а не глушите предупреждение.
Что делать клиентам ZevsHost?
На общем хостинге версию OpenSSL и настройки TLS задаёт сервер провайдера, и постквантовый обмен там включить нельзя — это не в руках клиента. Своё решение вы принимаете на VPS и выделенном сервере, где версии OpenSSL, nginx и OpenSSH ваши: с них и начните проверку.