Открыть сервис

Диффи — Хеллман

Диффи — Хеллман (протокол Диффи — Хеллмана, англ. Diffie — Hellman key exchange, DH) — это криптографический протокол, позволяющий двум или более сторонам получить общий секретный ключ, используя незащищённый от прослушивания канал связи. Относится к классу протоколов открытого распределения ключей. Основное свойство протокола заключается в том, что для его успешного выполнения не требуется предварительно договариваться о секретном ключе, а перехват всех передаваемых по каналу данных не позволяет злоумышленнику вычислить итоговый общий секрет (при условии вычислительной сложности задачи дискретного логарифмирования).

История

Протокол был впервые опубликован в 1976 году американскими криптографами Уитфилдом Диффи и Мартином Хеллманом в работе «New Directions in Cryptography». Эта публикация стала поворотным моментом в криптографии, так как впервые предложила практический метод обмена ключами без использования предварительно распределённых секретов. Идея основывалась на концепции односторонних функций с потайным входом (trapdoor functions), предложенной Ральфом Мерклом, который также внёс вклад в развитие этой области. В 1977 году протокол был запатентован в США (патент US 4200770 A). В 2015 году Диффи и Хеллман получили премию Тьюринга за вклад в криптографию.

Математические основы

Работа протокола основана на сложности задачи дискретного логарифмирования в конечном поле. Используется односторонняя функция — возведение в степень по модулю простого числа.

Основные параметры

Для работы протокола выбираются два общеизвестных параметра:

Порядок выполнения

  1. Генерация секретных ключей: Сторона А генерирует случайное секретное число a, сторона Б — число b.
  2. Вычисление открытых ключей: Сторона А вычисляет значение A = g^a mod p, сторона Б — B = g^b mod p.
  3. Обмен открытыми ключами: Стороны обмениваются значениями A и B по открытому каналу.
  4. Вычисление общего секрета: Сторона А, получив B, вычисляет K = B^a mod p = (g^b)^a mod p = g^(ab) mod p. Сторона Б, получив A, вычисляет K = A^b mod p = (g^a)^b mod p = g^(ab) mod p.

Таким образом, обе стороны получают одно и то же число K, которое может быть использовано как сеансовый ключ для симметричного шифрования.

Криптостойкость

Безопасность протокола основана на вычислительной сложности задачи дискретного логарифмирования (DLP) и задачи Диффи — Хеллмана (CDH). Злоумышленник, перехвативший p, g, A и B, не может вычислить a или b за приемлемое время, если параметры выбраны корректно.

Атаки

  • Атака «человек посередине» (MITM): Протокол в базовом виде не аутентифицирует стороны. Злоумышленник может перехватить открытые ключи, подменить их своими и установить два отдельных сеанса с каждой стороной. Для защиты требуется аутентификация сторон (например, с помощью цифровых подписей или сертификатов).
  • Атака на основе малых подгрупп: Если g не является первообразным корнем, а порождает подгруппу малого размера, злоумышленник может получить информацию о секретном ключе. Для защиты используется проверка, что полученное значение B принадлежит большой подгруппе.
  • Квантовые атаки: Протокол уязвим для атак с использованием квантового компьютера, способного эффективно решать задачу дискретного логарифмирования (алгоритм Шора). В постквантовой криптографии разрабатываются альтернативные протоколы, например, на основе решёток.

Применение

Протокол Диффи — Хеллмана широко используется в современных криптографических системах для установления защищённых соединений.

Основные области применения

  • TLS/SSL: Используется в версиях протокола TLS 1.2 и 1.3 для установления сеансового ключа при защите веб-трафика (HTTPS). В TLS 1.3 применяется вариант ECDHE (Elliptic Curve Diffie — Hellman Ephemeral).
  • IPsec: Применяется для установления ключей в протоколах IKE (Internet Key Exchange) при построении VPN-соединений.
  • SSH: Используется в протоколе Secure Shell для аутентификации и установления ключа.
  • PGP и OpenPGP: Используется в некоторых режимах для обмена ключами.
  • Протоколы электронной почты: S/MIME, PGP/MIME.

Разновидности

Эллиптическая кривая (ECDH)

Вариант протокола, использующий операции на эллиптических кривых. Обеспечивает эквивалентную стойкость при меньшей длине ключа (например, 256-битная эллиптическая кривая даёт стойкость, сравнимую с 3072-битным протоколом Диффи — Хеллмана). Широко применяется в современных системах.

Эфемерный режим (DHE, ECDHE)

В этом режиме для каждого сеанса генерируются новые эфемерные ключи, которые не сохраняются после завершения соединения. Обеспечивает свойство Perfect Forward Secrecy (PFS) — даже если долговременный ключ сервера будет скомпрометирован, прошлые сеансы останутся защищёнными. Используется в TLS 1.3.

Статический режим

В статическом режиме стороны используют долговременные ключи, которые не меняются между сеансами. Не обеспечивает PFS. Используется реже, в основном в системах, где требуется аутентификация без обмена сертификатами.

Интересные факты

  • В 1997 году стало известно, что аналогичный протокол был разработан в 1974 году сотрудниками британской разведки GCHQ Джеймсом Эллисом и Клиффордом Коксом, но оставался засекреченным до 1997 года.
  • Протокол Диффи — Хеллмана является одним из немногих криптографических алгоритмов, чьё изобретение было отмечено премией Тьюринга.
  • В 2015 году в протоколе была обнаружена уязвимость Logjam, позволяющая понизить стойкость соединения до 512-битного ключа, что делает возможным его взлом.

Источники

  • Diffie, W., Hellman, M. (1976). New Directions in Cryptography. IEEE Transactions on Information Theory.
  • Menezes, A., van Oorschot, P., Vanstone, S. (1996). Handbook of Applied Cryptography. CRC Press.
  • Schneier, B. (1996). Applied Cryptography. John Wiley & Sons.
  • RFC 2631 — Diffie-Hellman Key Agreement Method.
  • RFC 8446 — The Transport Layer Security (TLS) Protocol Version 1.3.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →