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

Diffie-Hellman

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

История

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

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

Публикация и признание

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

Патент и коммерциализация

В 1977 году Диффи и Хеллман получили патент США на протокол (US Patent 4,200,770), который был выдан в 1980 году. Патент истёк в 1997 году, что способствовало широкому внедрению протокола в открытые стандарты, такие как SSL/TLS, SSH и IPsec.

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

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

Безопасность протокола основана на вычислительной сложности задачи дискретного логарифмирования в конечных полях. Для простого числа \( p \) и первообразного корня \( g \) (генератора мультипликативной группы \( \mathbb{Z}_p^* \)) задача состоит в нахождении целого числа \( a \) по известным \( g^a \mod p \). Для больших \( p \) (например, 2048 бит) эта задача считается практически неразрешимой при современном уровне вычислительной техники.

Односторонняя функция

Протокол использует одностороннюю функцию: возведение в степень по модулю легко выполняется, но обратная операция (дискретное логарифмирование) крайне трудоёмка. Это позволяет сторонам публично передавать промежуточные значения, не раскрывая секретные ключи.

Алгоритм работы

Базовый протокол (две стороны)

  1. Выбор общих параметров: стороны договариваются о большом простом числе \( p \) и генераторе \( g \) (обычно \( g = 2 \) или \( g = 5 \)). Эти параметры могут быть открытыми.
  2. Генерация секретных ключей: каждая сторона (Алиса и Боб) выбирает случайное секретное число:
  1. Вычисление открытых ключей:
  1. Вычисление общего секрета:

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

Для демонстрации (не для практического использования) выбираются малые числа:

Многосторонний протокол

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

Виды и модификации

Статический Diffie-Hellman

Одна из сторон использует фиксированный секретный ключ (например, сертифицированный в инфраструктуре открытых ключей). Это позволяет проверять подлинность стороны, но снижает стойкость к компрометации ключа.

Эфемерный Diffie-Hellman (DHE)

Каждая сторона генерирует новый секретный ключ для каждого сеанса связи. Это обеспечивает свойство совершенной прямой секретности (PFS): даже если долговременный ключ будет скомпрометирован, прошлые сеансы остаются защищёнными. Используется в протоколах TLS (DHE-RSA, DHE-DSS).

Elliptic-curve Diffie–Hellman (ECDH)

Вариант протокола, использующий эллиптические кривые вместо конечных полей. Обеспечивает аналогичную безопасность при меньших размерах ключей (например, 256-битная эллиптическая кривая эквивалентна 3072-битному модулю). Широко применяется в современных протоколах (TLS 1.3, SSH, Signal).

Анонимный Diffie-Hellman

Протокол без аутентификации сторон. Уязвим для атак «человек посередине» (MITM), так как злоумышленник может подменить открытые ключи. На практике всегда используется в сочетании с аутентификацией (цифровые подписи, сертификаты).

Применение

Защищённые протоколы передачи данных

Шифрование сообщений

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

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

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

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

Атаки на малые подгруппы

Если \( p \) выбрано неудачно, злоумышленник может манипулировать значениями так, чтобы общий секрет оказался в малой подгруппе, что упрощает его вычисление. Для защиты используются безопасные простые числа (safe primes) или проверки принадлежности к группе.

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

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

Уязвимости реализации

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

Источники

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

На главную BFOmetr →