Криптография

Обмен ключами

Каждый раз при открытии HTTPS-сайта браузер и сервер создают общий секретный ключ за 1-2 RTT - никогда не встречаясь раньше, через публичный интернет, где каждый пакет может перехватить провайдер или спецслужба. Это Diffie-Hellman - идея, изменившая крипография в 1976 году.

  • **TLS 1.3**: ECDHE (Ephemeral Elliptic Curve DH) - обязательный обмен ключами. X25519 и P-256 - две стандартные группы. Ephemeral ключи дают perfect forward secrecy.
  • **Signal X3DH**: расширенный triple DH для установки первого сеанса с незнакомым контактом без предварительного общения. Используется в WhatsApp (>2 млрд пользователей).
  • **Logjam (2015)**: NSA использовала 1024-битные DH-группы для пассивной прослушки. Уязвимость затронула ~8% HTTPS-серверов. После Logjam индустрия мигрировала на ECDH.
  • **WireGuard**: только X25519 для обмена ключами - никаких переговоров о cipher suite. Простота протокола = меньше поверхность атаки.

Проблема распределения ключей

До 1976 года казалось, что для безопасного общения двух сторон нужен предварительный секретный канал для передачи ключа. Это порочный круг: для защиты ключа нужен ключ. Симметричные системы масштабировались плохо: для n участников нужно n(n-1)/2 пар ключей.

Whitfield Diffie и Martin Hellman опубликовали 'New Directions in Cryptography' в 1976 году. Это была революция: возможность обмена ключами по открытому каналу. GCHQ (британская разведка) разработала аналогичную идею раньше, но засекретила её. Патент Diffie-Hellman истёк в 1997 году.

Почему распределение симметричных ключей не масштабируется на интернет-уровне?

Diffie-Hellman: публичный обмен ключами

Аналогия: Alice и Bob публично договариваются о базовом цвете краски (публичные параметры). Каждый добавляет свой секретный цвет и обменивается смесями. Затем каждый добавляет свой секрет к смеси партнёра - получают одинаковый цвет, который никто не видел в процессе.

Что именно Alice и Bob НЕ передают через публичный канал в DH-обмене?

Задача дискретного логарифма

Безопасность DH основана на задаче дискретного логарифма (DLP): зная g, p и y=g^x mod p, найти x. Для конкретных значений это просто (p=23, g=5, y=8 -> x=6). Для больших p (2048+ бит) - вычислительно неосуществимо при правильном выборе параметров.

Logjam (2015): атака показала, что многие TLS-серверы использовали 512-битные DH-группы ('export grade'), которые взламываются за секунды, и 1024-битные группы, взломанные спецслужбами. Минимум сегодня - 2048 бит для classical DH, но лучше ECDH на Curve25519 или P-256.

Почему ECDH с 256-битным ключом безопаснее classical DH с 2048-битным ключом?

MITM-атака на DH

Базовый DH не аутентифицирует стороны. Man-in-the-Middle атака: Eve перехватывает сообщения и устанавливает отдельные DH-сессии с Alice и Bob. Обе стороны думают, что общаются напрямую, а Eve читает всё.

TLS решает MITM через сертификаты: сервер подписывает DH-параметры своим приватным RSA или EC ключом, а сертификат удостоверяет CA. Клиент проверяет подпись и сертификат - Eve не может создать подпись без приватного ключа сервера.

Signal Protocol использует X3DH (Extended Triple Diffie-Hellman) для начального обмена ключами с аутентификацией через Identity Keys. Даже при компрометации одного сессионного ключа прошлые и будущие сессии защищены (forward secrecy + break-in recovery).

Что обеспечивает TLS-сертификат в контексте DH-обмена ключами?

Ключевые идеи

  • **Проблема ключей**: для n участников симметричной криптографии нужно O(n^2) ключей, доставляемых по защищённому каналу. DH решает эту задачу.
  • **DH-обмен**: два участника создают общий секрет через публичный канал, не передавая сам секрет. Безопасность - на задаче дискретного логарифма.
  • **ECDH vs classical DH**: 256-битная кривая ~ 3072-битному классическому DH. X25519 - рекомендованная группа в 2024 году.
  • **MITM без аутентификации**: базовый DH уязвим к MITM. TLS-сертификаты аутентифицируют DH-параметры через подписи CA.

Связанные темы

DH - фундамент асимметричной криптографии и протоколов:

  • Эллиптические кривые — ECDH использует группу точек на эллиптической кривой вместо Z/pZ. Задача ECDLP значительно сложнее DLP при том же размере ключа.
  • TLS 1.3 — TLS 1.3 использует ECDHE для forward secrecy. Server подписывает DH-параметры для защиты от MITM.
  • Signal Protocol — X3DH (Extended Triple DH) решает задачу аутентифицированного обмена ключами с незнакомым контактом.

Вопросы для размышления

  • DH ephemeral: в TLS 1.3 каждая сессия использует новую DH-пару. Почему это важнее долгосрочного DH-ключа сервера?
  • Если Eve записала весь DH-трафик сегодня, а завтра взломает квантовым компьютером DLP - расшифрует ли она прошлые сессии?
  • X25519 использует специально выбранную кривую Бернштейна. Почему выбор кривой критичен для безопасности ECDH?

Связанные уроки

  • net-23-https-tls
  • net-34-ipsec
Обмен ключами

0

1

Войти