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

Diffie-Hellman обмен ключами

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

История

Протокол был впервые опубликован в 1976 году американскими криптографами Уитфилдом Диффи и Мартином Хеллманом в работе «New Directions in Cryptography». Эта публикация стала революционной, так как впервые продемонстрировала возможность безопасного обмена ключами без предварительного согласования секрета. Однако позднее стало известно, что аналогичная идея была независимо разработана в 1974 году британским криптографом Малкольмом Уильямсоном, работавшим в Центре правительственной связи (GCHQ), но оставалась засекреченной до 1997 года.

В 1977 году протокол был запатентован в США (патент № 4,200,770), срок действия которого истёк в 1997 году. С тех пор Diffie-Hellman стал широко использоваться в протоколах SSL/TLS, SSH, IPsec и других системах защиты данных.

Принцип работы

Протокол основан на сложности вычисления дискретного логарифма в конечном поле. Для работы используются следующие параметры:

Алгоритм состоит из нескольких шагов:

  1. Генерация закрытых ключей. Каждая сторона (например, Алиса и Боб) генерирует случайное секретное число:
  • Алиса: a
  • Боб: b
  1. Вычисление открытых ключей. Каждая сторона вычисляет своё открытое значение:
  • Алиса: A = g^a mod p
  • Боб: B = g^b mod p
  1. Обмен открытыми ключами. Стороны отправляют друг другу значения A и B по открытому каналу. Даже если злоумышленник перехватит эти числа, он не сможет вычислить a или b из-за сложности задачи дискретного логарифмирования.
  1. Вычисление общего секрета. Каждая сторона вычисляет общий секретный ключ, возводя полученное открытое значение в степень своего закрытого ключа:
  • Алиса: S = B^a mod p = (g^b)^a mod p = g^(ab) mod p
  • Боб: S = A^b mod p = (g^a)^b mod p = g^(ab) mod p

В результате обе стороны получают одинаковое значение S, которое может быть использовано как ключ для симметричного шифрования. Злоумышленник, знающий p, g, A и B, не может вычислить S без знания a или b.

Пример на малых числах

Для иллюстрации используется упрощённый пример с малыми числами (в реальных системах числа многократно больше):

  • p = 23, g = 5
  • Алиса выбирает a = 6: A = 5^6 mod 23 = 8
  • Боб выбирает b = 15: B = 5^15 mod 23 = 19
  • Алиса вычисляет: S = 19^6 mod 23 = 2
  • Боб вычисляет: S = 8^15 mod 23 = 2

Общий секрет равен 2.

Классификация

По типу используемой группы

  • Дискретно-логарифмический Diffie-Hellman (DLOG-DH) — классическая версия, работающая в мультипликативной группе конечного поля (целые числа по модулю простого числа).
  • Эллиптический Diffie-Hellman (ECDH) — вариант, использующий эллиптические кривые. Обеспечивает аналогичную стойкость при меньшей длине ключа (например, 256-битный ECDH эквивалентен 3072-битному DLOG-DH).

По режиму работы

  • Эфемерный Diffie-Hellman (DHE/ECDHE) — для каждого сеанса генерируются новые случайные ключи. Обеспечивает свойство Perfect Forward Secrecy (PFS): даже если долговременный закрытый ключ будет скомпрометирован, прошлые сеансы останутся защищёнными.
  • Статический Diffie-Hellman — используются фиксированные долговременные ключи. Не обеспечивает PFS.

Применение

Протокол TLS/SSL

В протоколе HTTPS (TLS) Diffie-Hellman используется для согласования сеансового ключа между клиентом и сервером. Наиболее распространён вариант ECDHE, который обеспечивает высокую производительность и Perfect Forward Secrecy.

SSH (Secure Shell)

Протокол SSH использует Diffie-Hellman для установления защищённого канала при удалённом доступе к серверам. В современных версиях применяется curve25519-sha256 (на основе эллиптической кривой Curve25519).

IPsec (Internet Protocol Security)

В наборе протоколов IPsec Diffie-Hellman применяется для обмена ключами в рамках протокола IKE (Internet Key Exchange). Поддерживаются различные группы DH, от 1 (768 бит) до 24 (2048 бит на эллиптической кривой).

VPN (Virtual Private Networks)

Многие реализации VPN, такие как OpenVPN и WireGuard, используют варианты Diffie-Hellman для установления безопасного соединения.

Мессенджеры и системы мгновенных сообщений

Протокол Signal, лежащий в основе многих современных мессенджеров (включая Signal, WhatsApp, Telegram), использует варианты Diffie-Hellman для реализации сквозного шифрования (end-to-end encryption) и обеспечения Forward Secrecy.

Безопасность и уязвимости

Теоретическая стойкость

Безопасность классического Diffie-Hellman основана на сложности задачи дискретного логарифмирования. При выборе достаточно больших параметров (p не менее 2048 бит) протокол считается вычислительно стойким против атак с использованием классических компьютеров.

Атака «человек посередине» (Man-in-the-Middle, MITM)

Базовый протокол Diffie-Hellman уязвим к атаке MITM: злоумышленник может перехватить открытые ключи сторон и подменить их своими. Для защиты требуется аутентификация сторон, обычно реализуемая с помощью цифровых подписей или сертификатов (например, в TLS).

Квантовая угроза

Квантовые компьютеры, использующие алгоритм Шора, могут эффективно решать задачу дискретного логарифмирования, что полностью скомпрометирует классический Diffie-Hellman. В ответ разрабатываются постквантовые криптосистемы, такие как криптография на решётках (например, протокол NewHope).

Атаки на реализацию

  • Атака по времени (timing attack) — злоумышленник может извлечь секретные значения, измеряя время выполнения операций.
  • Атака по энергопотреблению (power analysis) — в устройствах с ограниченными ресурсами (смарт-карты, IoT) возможно извлечение ключей через анализ потребляемой мощности.
  • Атака с использованием небезопасных параметров — использование слабых простых чисел или генераторов может снизить стойкость протокола.

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

  • В 2015 году исследователи из Университета Инсбрука и Массачусетского технологического института продемонстрировали квантовую версию протокола Diffie-Hellman, работающую на трёх фотонах.
  • Протокол лёг в основу концепции криптовалют: в системе Bitcoin используется ECDSA (эллиптическая цифровая подпись), тесно связанная с ECDH.
  • В 2022 году Национальный институт стандартов и технологий США (NIST) объявил о выборе постквантовых алгоритмов, которые заменят Diffie-Hellman в будущем.

Источники

  • Diffie, W., Hellman, M. E. (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. (2015). «Applied Cryptography: Protocols, Algorithms, and Source Code in C». John Wiley & Sons.
  • NIST Special Publication 800-56A Rev. 3 (2018). «Recommendation for Pair-Wise Key Establishment Using Discrete Logarithm Cryptography».
  • RFC 3526 (2003). «More Modular Exponential (MODP) Diffie-Hellman groups for Internet Key Exchange (IKE)».

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

На главную BFOmetr →