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

Протокол Diffie-Hellman

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

История

Предпосылки создания

До середины 1970-х годов все системы шифрования были симметричными: для зашифрования и расшифрования использовался один и тот же секретный ключ. Основной проблемой являлась передача этого ключа между сторонами по надёжному каналу, что было дорого и часто неосуществимо. Необходимость решения «проблемы распределения ключей» была очевидна.

Публикация 1976 года

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

Роль Ральфа Меркла

Независимо от Диффи и Хеллмана, Ральф Меркл (Калифорнийский университет в Беркли) в 1974 году предложил концепцию «головоломки Меркла» — протокол распределения ключей, основанный на сложности перебора. Однако его работа была опубликована позже. Диффи и Хеллман признали вклад Меркла, и в некоторых источниках протокол называют «Диффи — Хеллмана — Меркла» (DHM). Тем не менее, исторически закрепилось название «протокол Диффи — Хеллмана».

Современное развитие

Протокол DH лёг в основу многих более сложных криптосистем, включая протоколы TLS (HTTPS), SSH, IPsec, а также алгоритм шифрования Эль-Гамаля. В 2010-х годах были разработаны варианты на основе эллиптических кривых (ECDH), которые обеспечивают ту же стойкость при меньших размерах ключей. В 2020-х годах протокол DH остаётся одним из ключевых элементов современной криптографии, хотя его классическая версия (на основе простых чисел) постепенно вытесняется ECDH из-за соображений производительности.

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

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

Определения

Сложность

Для злоумышленника, перехватившего p, g, A и B, задача нахождения a или b (дискретное логарифмирование) является вычислительно сложной для достаточно больших p (например, 2048 бит). Лучшие известные алгоритмы (например, решето числового поля) имеют субэкспоненциальную сложность, что делает атаку непрактичной для правильно выбранных параметров.

Описание протокола

Базовая версия (две стороны)

  1. Выбор параметров: Стороны A и B заранее согласовывают (или одна сторона генерирует и передаёт) два числа: большое простое число p и генератор g. Эти числа могут быть открытыми.
  2. Генерация секретов: Каждая сторона генерирует свой секретный случайный ключ: a (для A) и b (для B).
  3. Вычисление открытых ключей:
  1. Вычисление общего секрета:
  1. Результат: Обе стороны получили одинаковое число K, которое может быть использовано как ключ для симметричного шифрования (например, AES).

Многосторонний вариант (групповой DH)

Протокол может быть расширен на любое количество участников. Например, для трёх сторон (A, B, C):

  1. A, B, C выбирают p, g.
  2. A генерирует a, B — b, C — c.
  3. A отправляет B: g^a mod p.
  4. B отправляет C: (g^a)^b mod p = g^(ab) mod p.
  5. C отправляет A: (g^(ab))^c mod p = g^(abc) mod p.
  6. A, B, C вычисляют общий секрет K = g^(abc) mod p.

Однако для больших групп этот метод становится неэффективным из-за количества раундов. Существуют более сложные протоколы (например, протокол Бурмейстера — Десмедта).

Аутентифицированная версия (ECDH)

Базовая версия DH уязвима для атаки «человек посередине» (MITM), так как не аутентифицирует участников. Для защиты используется аутентифицированный вариант:

В аутентифицированном протоколе стороны обмениваются не только открытыми ключами DH, но и подписями к ним, подтверждающими их подлинность. Это предотвращает MITM-атаки.

Классификация и виды

По используемой математической группе

По способу аутентификации

По режиму использования

Применение

Протокол TLS (HTTPS)

Протокол DH (обычно ECDHE) используется в современных версиях TLS для установления общего сеансового ключа между клиентом (браузером) и сервером. Это обеспечивает конфиденциальность и целостность данных в интернете. Использование ECDHE обеспечивает совершенную прямую секретность.

Протокол SSH

Протокол Secure Shell (SSH) использует DH (или ECDH) для установления ключа шифрования при подключении к удалённому серверу. Это позволяет безопасно передавать пароли и команды.

IPsec

В протоколе IPsec (Internet Protocol Security) DH применяется для установления ключей для шифрования трафика между сетевыми устройствами (например, между VPN-концентраторами).

Криптовалюты

В некоторых криптовалютах (например, в протоколах на основе схемы Эль-Гамаля) DH используется для создания общих секретов между участниками транзакций.

Системы электронной почты

Протоколы шифрования электронной почты (например, OpenPGP) могут использовать DH для обмена ключами.

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

Атака «человек посередине» (MITM)

Базовая версия DH не защищена от MITM-атаки. Злоумышленник может перехватить открытые ключи A и B, подменить их на свои, и установить два отдельных сеанса с A и B. В результате злоумышленник будет знать оба общих секрета и сможет расшифровывать и модифицировать сообщения. Защита достигается аутентификацией сторон (сертификаты, подписи).

Атаки на параметры (Small subgroup attack)

Если p выбрано небезопасно (например, p-1 имеет малые простые делители), злоумышленник может провести атаку на малые подгруппы, заставив одну из сторон вычислить секрет в небольшой подгруппе. Для защиты используются безопасные простые числа (например, p = 2q + 1, где q — простое число, так называемые «безопасные простые»).

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

Атаки на дискретное логарифмирование

Для классического DH (DLP-DH) с ключами длиной 1024 бита и менее существуют эффективные алгоритмы дискретного логарифмирования (например, решето числового поля). Рекомендуемая длина ключа — не менее 2048 бит (для DLP-DH) или 256 бит (для ECDH).

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

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

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

Источники

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

На главную BFOmetr →