Диффи — Хеллман
Диффи — Хеллман (протокол Диффи — Хеллмана, англ. Diffie — Hellman key exchange, DH) — это криптографический протокол, позволяющий двум или более сторонам получить общий секретный ключ, используя незащищённый от прослушивания канал связи. Относится к классу протоколов открытого распределения ключей. Основное свойство протокола заключается в том, что для его успешного выполнения не требуется предварительно договариваться о секретном ключе, а перехват всех передаваемых по каналу данных не позволяет злоумышленнику вычислить итоговый общий секрет (при условии вычислительной сложности задачи дискретного логарифмирования).
История
Протокол был впервые опубликован в 1976 году американскими криптографами Уитфилдом Диффи и Мартином Хеллманом в работе «New Directions in Cryptography». Эта публикация стала поворотным моментом в криптографии, так как впервые предложила практический метод обмена ключами без использования предварительно распределённых секретов. Идея основывалась на концепции односторонних функций с потайным входом (trapdoor functions), предложенной Ральфом Мерклом, который также внёс вклад в развитие этой области. В 1977 году протокол был запатентован в США (патент US 4200770 A). В 2015 году Диффи и Хеллман получили премию Тьюринга за вклад в криптографию.
Математические основы
Работа протокола основана на сложности задачи дискретного логарифмирования в конечном поле. Используется односторонняя функция — возведение в степень по модулю простого числа.
Основные параметры
Для работы протокола выбираются два общеизвестных параметра:
- p — большое простое число (например, 2048 бит);
- g — первообразный корень (генератор) по модулю p, то есть число, степени которого по модулю p порождают все ненулевые элементы поля.
Порядок выполнения
- Генерация секретных ключей: Сторона А генерирует случайное секретное число a, сторона Б — число b.
- Вычисление открытых ключей: Сторона А вычисляет значение A = g^a mod p, сторона Б — B = g^b mod p.
- Обмен открытыми ключами: Стороны обмениваются значениями A и B по открытому каналу.
- Вычисление общего секрета: Сторона А, получив 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 →