Moscow, Russia

Постквантовые алгоритмы обмена ключами

Все началось с того, что при коннекте по SSH с одного очень нового сервера на один очень старый, SSH-клиент выдал вот такую фразу:

** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.
** The server may need to be upgraded. See https://openssh.com/pq.html
** ВНИМАНИЕ: соединение не использует постквантовый алгоритм обмена ключами.
** Эта сессия может быть уязвима для атак типа «сохранить сейчас, расшифровать позже».
** Возможно, потребуется обновление сервера.

Что же это за постквантовые алгоритмы и о каких уязвимостях перед квантовыми компьютерами будущего предупреждает нас SSH-клиент?

Этот варнинг появляется потому, что клиентский компьютер использует современный OpenSSH (версии 10.1 или новее), а сервер работает на старой ОС (Ubuntu 16.04 или даже 20.04) со старой версией OpenSSH (ниже 9.0). Постквантовая защита (алгоритмы шифрования sntrup761 или mlkem) появляются только в Ubuntu 24.04+ (OpenSSH 9.6+).

sntrup761 (Streamlined NTRU Prime 761)

Это постквантовый алгоритм обмена ключами (KEX), основанный на математике криптографии на решетках (lattice-based cryptography). Его главная задача — защитить данные от расшифровки в будущем с помощью мощных квантовых компьютеров. В OpenSSH этот алгоритм используется не самостоятельно, а в виде гибрида sntrup761x25519-sha512.

Как это работает и зачем нужно?

  • Гибридный подход: Алгоритм объединяет классический протокол x25519 (эллиптические кривые) и постквантовый sntrup761. Если в будущем x25519 будет взломан квантовым компьютером, сессия останется защищенной благодаря sntrup761. Если же в самом sntrup761 найдут уязвимость, надежность соединения будет не хуже, чем у классического проверенного x25519.
  • Защита от атаки «Перехвати сейчас, расшифруй потом»: Злоумышленники могут записывать ваш зашифрованный SSH-трафик сегодня, чтобы расшифровать его через 10–15 лет, когда появятся криптографически релевантные квантовые компьютеры. Использование sntrup761 делает такую дешифровку невозможной, потому что он основан на криптографии на решётках (lattice-based cryptography). Этот математический подход неуязвим для известных квантовых алгоритмов, в отличие от классического шифрования.

Принцип защиты строится на фундаментальной разнице в математических задачах:

В чем слабость классического шифрования?

Обычные алгоритмы (RSA, Diffie-Hellman, ECDH) основаны на задачах факторизации больших чисел или дискретного логарифмирования. Обычный компьютер решает такие задачи миллионы лет.

Квантовый компьютер использует алгоритм Шора (Shor’s algorithm). Этот алгоритм позволяет квантовым кубитам находить секретные ключи за считанные минуты. Если трафик был перехвачен и записан, квантовый компьютер легко его вскроет.

Как sntrup761 защищает от квантового компьютера?

Алгоритм sntrup761 (модификация системы NTRU) полностью меняет математическую парадигму:

  • Многомерные геометрические решётки: Вместо деления чисел алгоритм работает с геометрическими объектами в пространствах с сотнями измерений (векторами на решётках).
  • Задача поиска кратчайшего вектора (SVP): Секретный ключ — это точка в этой многомерной решётке, находящаяся максимально близко к началу координат.
  • Бессилие алгоритма Шора: Алгоритм Шора абсолютно бесполезен против геометрии решёток. Для квантового компьютера поиск правильной точки в 761-мерном пространстве (отсюда число 761 в названии) остается задачей экспоненциальной сложности — ему всё так же потребуются миллиарды лет перебора.

Дополнительная защита: гибридный метод

Разработчики OpenSSH учитывают, что sntrup761 — относительно новый алгоритм. Чтобы исключить скрытые уязвимости, его объединили с классическим x25519 в связку sntrup761x25519-sha512.

Данные шифруются дважды. Чтобы взломать сессию, хакеру будущего потребуется одновременно взломать и эллиптические кривые (что сможет квантовый ПК), и многомерные решётки (что не под силу даже ему).

На сколько применение данного алгоритма нагружает процессор

Использование гибридного алгоритма sntrup761x25519-sha512 практически не создает заметной нагрузки на современный процессор. Потребление ресурсов увеличивается незначительно, и обычный пользователь этого не замечает.

Математические вычисления выполняются только в момент установки SSH-соединения (фаза рукопожатия / handshake). Как только связь установлена, алгоритм отключается, а сам трафик шифруется стандартными быстрыми алгоритмами вроде AES или ChaCha20.

Нагрузку можно разделить на две категории в зависимости от устройства:

1. На обычном компьютере или сервере

  • Процессорное время: На вычисление ключей уходит мизерная доля секунды. Даже если вы будете открывать десятки SSH-сессий в секунду, загрузка CPU мощного сервера едва ли превысит 0.01%.
  • Сетевой оверхед (трафик): Размер постквантовых ключей больше традиционных. Вместо скромных 32 байт для классического x25519, гибридный пакет sntrup761 весит около 1 КБ. Для современных сетей этот лишний килобайт при подключении абсолютно неощутим.

2. Специфика для мини-компьютеров

Для мини-компьютера с относительно слабым процессором ARM Cortex-A53 (1.2 ГГц) разница есть, но она также незначительна:

  • Задержка при входе: При подключении, например, к Raspberry Pi по SSH вы можете заметить, что от момента ввода команды до появления строки приветствия (логина) проходит на 20–50 миллисекунд дольше, чем при использовании старого «чистого» x25519.
  • Нагрузка на CPU: В момент генерации ключа (микросекундный всплеск) одно ядро процессора нагрузится сильнее обычного, но как только сессия откроется, нагрузка мгновенно упадет до 0%.

Стоит ли его отключать ради экономии ресурсов?

Однозначно нет. Экономия нескольких миллисекунд процессорного времени при авторизации не стоит того, чтобы лишать систему долгосрочной защиты от квантового взлома в будущем. В процессе удержания уже открытой сессии этот алгоритм процессор вообще не использует.

Применяется ли подобные алгоритмы в туннелях ВПН

Эти алгоритмы применяются для защиты VPN-туннелей, но их использование имеет свою специфику и зависит от конкретного провайдера и технологии.

Как и в случае с SSH, в VPN-туннелях sntrup761 отвечает исключительно за фазу обмена ключами (Handshake), защищая сессию от атак класса «перехвати сейчас, расшифруй потом». Сам же интернет-трафик внутри туннеля шифруется быстрыми симметричными алгоритмами (например, AES-256 или ChaCha20).

OpenSSH

Если вы поднимаете свой собственный VPN-туннель средствами самого OpenSSH (например, через команду ssh -w или туннелирование трафика ssh -D), то sntrup761 используется там по умолчанию (начиная с OpenSSH 9.0), защищая весь проходящий трафик.

Хотя sntrup761 очень надежен, он не стал главным мировым стандартом. В 2024 году американский институт NIST официально финализировал стандарты постквантовой криптографии. Победителем стал другой алгоритм на решетках — ML-KEM (ранее известный как Kyber).

StrongSwan

Что касается используемых алгоритмов, strongSwan имеет модульную архитектуру плагинов. Набор алгоритмов зависит от того, какие библиотеки подключены (например, openssl, gcrypt или wolfssl).

В strongSwan v6 реализована поддержка множественного обмена ключами (Multiple Key Exchanges, RFC 9370). Это позволяет строить гибридные туннели, устойчивые к квантовым компьютерам.

В отличие от OpenSSH, выбравшего sntrup761, экосистема strongSwan и стандарты IPsec пошли по пути рекомендаций NIST:

  • ML-KEM (бывший Kyber): Главный постквантовый алгоритм обмена ключами в современных сборках strongSwan. Настраивается через дополнительные параметры ke1_ … ke7_ в предложениях swanctl.
  • ML-DSA (бывший Dilithium): Используется для квантово-устойчивой аутентификации по сертификатам.
  • Другие альтернативы: В зависимости от плагинов могут поддерживаться алгоритмы BIKE или HQC.

Пример настройки гибридного (квантово-защищенного) туннеля в swanctl.conf

# Сначала выполняется классический обмен (curve25519), 
# а следом — постквантовый (mlkem768)
proposals = aes256gcm16-curve25519-prfsha384
ke1_proposals = mlkem768

Как узнать, что доступно именно у вас?

Поскольку strongSwan собирается из плагинов, вы можете прямо в терминале своего сервера проверить, какие именно алгоритмы шифрования сейчас подгружены и доступны для swanctl:

swanctl --list-algs

Команда выведет весь список: от классического AES до доступных методов генерации ключей и постквантовых модулей.

ML-KEM-768 (ранее известный как Kyber768)

Это официальный глобальный стандарт постквантового обмена ключами, утвержденный американским институтом NIST (стандарт FIPS 203). Хотя и ML-KEM-768, и обсуждаемый ранее sntrup761 относятся к криптографии на многомерных решетках, между ними есть принципиальные различия, определившие их судьбу в ИТ-индустрии.

Основные отличия ML-KEM-768 от конкурентов и, в частности, от sntrup761:

1. Статус официального мирового стандарта

  • ML-KEM-768: Победитель многолетнего конкурса NIST. Именно его официально выбрали в качестве обязательного будущего стандарта для всей мировой индустрии. Он внедряется в TLS 1.3 (HTTPS), браузеры (Chrome, Firefox), продукты Google, AWS и Cloudflare.
  • sntrup761: Не является стандартом NIST. Это альтернативный «академический» алгоритм, созданный известным криптографом Дэниелом Бернштейном. Его интеграция в OpenSSH была временной подстраховкой разработчиков, пока NIST финализировал свои стандарты.

2. Математическая база и производительность

Оба алгоритма решают задачу на решетках, но используют разные типы модулей, что напрямую влияет на скорость их работы:

  • ML-KEM-768 работает значительно быстрее. Он оптимизирован для векторных процессорных инструкций (например, AVX-512). Скорость генерации и проверки ключей у него выше, чем у sntrup761.
  • ML-KEM-768 имеет меньший размер данных. При обмене ключами он передает по сети пакеты меньшего объема по сравнению со sntrup761, что критично для загруженных веб-серверов с миллионами запросов в секунду.

3. Уровень безопасности (Индекс «768»)

Цифра в названии указывает на уровень квантовой стойкости:

  • ML-KEM-768 обеспечивает Уровень 3 (NIST Security Level 3), что эквивалентно по стойкости симметричному шифрованию AES-192. Это оптимальный баланс между скоростью работы и криптостойкостью для большинства коммерческих систем.
  • sntrup761 имеет промежуточную стойкость. Однако сторонники sntrup761 утверждают, что его математическая модель имеет более «консервативные» и безопасные предположения, снижающие риск скрытых уязвимостей в самой теории алгоритма.

Сводное сравнение алгоритмов

Характеристика ML-KEM-768 (Kyber) sntrup761 (NTRU Prime)
Официальный статус Глобальный утвержденный стандарт NIST Альтернативный (не стандарт NIST)
Где применяется HTTPS (TLS 1.3), VPN (strongSwan) SSH (OpenSSH с версии 9.0), Mullvad VPN
Скорость вычислений Очень высокая (отлично оптимизирован) Средняя (медленнее, чем ML-KEM)
Размер ключей по сети Меньше (~1184 байт) Больше
Уровень стойкости Эквивалентен AES-192 Эквивалентен ~AES-128..192

Пример настройки mlkem768 в strongswan

Настройка ML-KEM-768 (ранее Kyber768) в strongSwan стала официально доступна начиная с версии strongSwan 6.0.0 (декабрь 2024 года). Для реализации постквантовой защиты используется современный синтаксис управления через утилиту swanctl и конфигурационный файл swanctl.conf.

Поскольку использовать «чистый» постквантовый алгоритм в продакшене рискованно из-за его новизны, индустриальным стандартом является гибридный метод (RFC 9370 + RFC 9242). В рамках одной сессии strongSwan сначала выполняет классический обмен ключами (например, эллиптические кривые x25519), а затем, на промежуточном этапе, подмешивает секрет от ML-KEM-768.

Ниже приведен готовый рабочий пример конфигурации защищенного гибридного туннеля между двумя офисами (Site-to-Site).

Шаг 1. Конфигурация swanctl.conf на стороне Сервера А (Инициатор)

Файл конфигурации обычно располагается по пути /etc/swanctl/swanctl.conf.

connections {
net-to-net-pqc {
version = 2
local_addrs = 192.168.1.10
remote_addrs = 192.168.2.10

# Гибридный обмен: классический (Curve25519) + PQC (ML-KEM-768)
proposals = aes256gcm16-curve25519-prfsha384
ke1_proposals = mlkem768 # RFC 9370 (дополнительный обмен)

local { auth = psk; id = office-a@company.com }
remote { auth = psk; id = office-b@company.com }

children {
tunnel-pqc {
local_ts = 10.10.1.0/24
remote_ts = 10.10.2.0/24
esp_proposals = chacha20poly1305
updown = _updown iptables
}
}
}
}

Шаг 2. Конфигурация swanctl.conf на стороне Сервера Б (Респондент)

Настройки зеркальны, параметры proposals и ke1_proposals должны совпадать.

connections {
net-to-net-pqc {
version = 2
local_addrs = 192.168.2.10
remote_addrs = 192.168.1.10
proposals = aes256gcm16-curve25519-prfsha384
ke1_proposals = mlkem768
local { auth = psk; id = office-b@company.com }
remote { auth = psk; id = office-a@company.com }
children {
tunnel-pqc {
local_ts = 10.10.2.0/24
remote_ts = 10.10.1.0/24
esp_proposals = chacha20poly1305
updown = _updown iptables
}
}
}
}
# Секреты аналогичны инициатору

Имеет ли постквантовую защиту шифрование по ГОСТ

Текущие государственные стандарты шифрования (ГОСТ) защищены от квантовых угроз лишь наполовину, а полноценные отечественные постквантовые стандарты находятся в процессе разработки и ожидаются в 2026–2027 годах. Ситуация кардинально различается для двух типов алгоритмов: симметричных и асимметричных.

Влияние квантовых компьютеров на российские ГОСТ-алгоритмы делится на две категории:

1. Симметричные шифры и хэш-функции — ИМЕЮТ защиту

Алгоритмы ГОСТ Р 34.12-2015 («Кузнечик» и «Магма»), а также хэш-функция ГОСТ Р 34.11-2012 («Стрибог») изначально обладают высокой устойчивостью к квантовым атакам.

  • Почему они защищены: Против симметричных шифров квантовый компьютер может применить только алгоритм Гровера. Этот алгоритм не взламывает шифр полностью, а лишь уменьшает эффективную длину ключа вдвое.
  • Поскольку длина ключа в «Кузнечике» и «Магме» составляет 256 бит, их квантовая стойкость снижается до 128 бит. Этого запаса прочности с избытком хватает, чтобы сделать полный перебор ключей невозможным для любого компьютера будущего.

2. Асимметричные шифры и ЭЦП — НЕ ИМЕЮТ защиты

Алгоритм электронной цифровой подписи ГОСТ Р 34.10-2012 (основанный на эллиптических кривых) полностью уязвим для квантового алгоритма Шора.

  • В чем опасность: Мощный квантовый компьютер сможет за несколько минут вычислить закрытый ключ подписи на основе открытого ключа или взломать процедуру выработки общего секретного ключа (VKO ГОСТ). Соответственно, трафик, защищенный классическим ГОСТ-TLS, подвержен атакам типа «перехвати сейчас, расшифруй потом».

Текущие разработки в России (2026 год)

Технический комитет по стандартизации «Криптографическая защита информации» (ТК 26) активно готовит замену уязвимым асимметричным алгоритмам:

  • Гибридный подход: Прямо сейчас в российских СКЗИ (средствах криптографической защиты информации) тестируется интеграция гибридных протоколов, где классический ГОСТ Р 34.10-2012 объединяется с новыми постквантовыми решёточными алгоритмами (похоже на то, как OpenSSH объединил x25519 и sntrup761).
  • Первые официальные шаги: В марте 2026 года Минцифры России впервые официально одобрило программные комплекты (SDK), такие как «Сириус-Q. КНАА-2-ЭЦП», реализующие отечественную квантово-устойчивую электронную подпись для блокчейн-платформ.
  • Официальные стандарты ГОСТ: Окончательное принятие новых, полностью независимых постквантовых стандартов ГОСТ для общих каналов связи запланировано регуляторами на период 2026–2027 годов.

 

Пора закладывать в архитектуру гибридные методы защиты, т. к. квантовое будущее уже не за горами.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *