ECDH
ECDH (Elliptic Curve Diffie–Hellman, эллиптическая кривая Диффи — Хеллмана) — это криптографический протокол, основанный на эллиптических кривых, предназначенный для безопасного обмена ключами между двумя сторонами по незащищённому каналу связи. Является разновидностью протокола Диффи — Хеллмана, в котором вместо вычислений в мультипликативной группе конечного поля используются операции на эллиптических кривых. Основное преимущество ECDH перед классическим DH заключается в более высокой криптостойкости при меньшей длине ключа, что позволяет снизить вычислительные затраты и требования к пропускной способности канала.
История
Протокол Диффи — Хеллмана был впервые опубликован Уитфилдом Диффи и Мартином Хеллманом в 1976 году в работе «New Directions in Cryptography». Идея использования эллиптических кривых в криптографии была независимо предложена Нилом Коблицем и Виктором Миллером в 1985 году. Первое практическое применение ECDH для обмена ключами было реализовано в конце 1980-х — начале 1990-х годов, когда начали разрабатываться стандарты на криптосистемы на эллиптических кривых (ECC). В 1999 году ECDH был включён в стандарт ANSI X9.63, а затем в ISO/IEC 15946-3 и NIST SP 800-56A.
Математические основы
ECDH опирается на свойства эллиптических кривых над конечными полями. Эллиптическая кривая задаётся уравнением вида:
\[ y^2 = x^3 + ax + b \mod p \]
где \( p \) — простое число (для поля \( \mathbb{F}_p \)) или степень двойки (для поля \( \mathbb{F}_{2^m} \)), а коэффициенты \( a \) и \( b \) удовлетворяют условию \( 4a^3 + 27b^2 \neq 0 \), обеспечивающему отсутствие особых точек.
На множестве точек кривой (включая бесконечно удалённую точку \( O \)) определена операция сложения, превращающая это множество в абелеву группу. Умножение точки на целое число \( k \) (скалярное умножение) выполняется многократным сложением точки самой с собой. Стойкость ECDH основана на сложности задачи дискретного логарифмирования на эллиптической кривой (ECDLP): зная точки \( P \) и \( Q = kP \), вычислить \( k \) практически невозможно при достаточно большом размере поля.
Алгоритм работы
Протокол ECDH позволяет двум сторонам (например, Алисе и Бобу) выработать общий секретный ключ без его прямой передачи. Алгоритм состоит из следующих шагов:
- Выбор общих параметров. Обе стороны заранее согласовывают эллиптическую кривую (например, из стандарта NIST P-256) и базовую точку \( G \) на ней. Параметры могут быть открытыми.
- Генерация ключевых пар. Каждая сторона генерирует свой закрытый ключ — случайное целое число \( d_A \) (для Алисы) и \( d_B \) (для Боба). Затем вычисляет открытый ключ как точку на кривой: \( Q_A = d_A \cdot G \) и \( Q_B = d_B \cdot G \).
- Обмен открытыми ключами. Алиса отправляет Бобу \( Q_A \), Боб отправляет Алисе \( Q_B \). Передача может вестись по незащищённому каналу.
- Вычисление общего секрета. Алиса вычисляет \( S = d_A \cdot Q_B \), Боб вычисляет \( S = d_B \cdot Q_A \). В силу ассоциативности скалярного умножения обе стороны получают одну и ту же точку \( S = d_A d_B \cdot G \).
- Получение ключа. Из координат точки \( S \) (обычно берётся \( x \)-координата) с помощью хеш-функции (например, SHA-256) формируется итоговый симметричный ключ для шифрования данных.
Виды и модификации
Существует несколько вариантов ECDH, различающихся способом согласования параметров и дополнительными шагами:
- ECDH с эфемерными ключами (ECDHE). В этом варианте каждая сторона генерирует новую ключевую пару для каждого сеанса связи. Эфемерные ключи не сохраняются после завершения сеанса, что обеспечивает свойство совершенной прямой секретности (PFS): компрометация долговременного ключа не позволяет расшифровать прошлые сеансы.
- Статический ECDH. Закрытые ключи являются долговременными и используются многократно. Этот вариант менее безопасен, так как не обеспечивает PFS.
- MQV (Menezes-Qu-Vanstone) и HMQV. Модификации ECDH, устойчивые к атакам типа «человек посередине» (MITM) и не требующие дополнительных сертификатов. HMQV (Hashed MQV) использует хеширование для повышения эффективности.
- CECPQ1 и CECPQ2. Экспериментальные гибридные протоколы, сочетающие ECDH с постквантовыми криптосистемами (например, NewHope или SIKE), для защиты от атак с использованием квантовых компьютеров.
Применение
ECDH широко используется в современных криптографических системах:
- TLS/SSL. В протоколах Transport Layer Security (TLS) 1.2 и 1.3 ECDHE является стандартным методом обмена ключами. Например, в наборе шифров TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384.
- SSH. В протоколе Secure Shell (SSH) для обмена ключами используются алгоритмы ecdh-sha2-nistp256, ecdh-sha2-nistp384 и ecdh-sha2-nistp521.
- IPsec. В протоколе Internet Key Exchange (IKEv2) ECDH применяется для создания сеансовых ключей.
- Мессенджеры. В протоколах сквозного шифрования, таких как Signal Protocol (используется в Signal, WhatsApp, Facebook Messenger, причём Meta — организация признана экстремистской и запрещена в РФ), ECDH комбинируется с алгоритмом X3DH (Extended Triple Diffie-Hellman) для асинхронного обмена.
- Криптовалюты. В Bitcoin, Ethereum и других блокчейн-системах ECDH не используется напрямую для транзакций (там применяется ECDSA для подписей), но может применяться в протоколах второго уровня (например, Lightning Network) для создания каналов.
- Смарт-карты и IoT. Благодаря малым вычислительным затратам ECDH применяется в устройствах с ограниченными ресурсами, таких как банковские карты, датчики и RFID-метки.
Безопасность
Стойкость ECDH зависит от размера используемой эллиптической кривой. По состоянию на 2025 год кривые с длиной ключа 256 бит (например, P-256) считаются безопасными для большинства приложений, обеспечивая уровень стойкости, эквивалентный 3072-битному RSA. Кривые с длиной 384 и 521 бит рекомендуются для систем с повышенными требованиями к безопасности (например, государственные системы).
Основные угрозы для ECDH:
- Атака «человек посередине» (MITM). Без аутентификации открытых ключей (например, с помощью сертификатов X.509) злоумышленник может перехватить и подменить открытые ключи. Для защиты используется ECDHE в сочетании с цифровыми подписями (например, ECDSA) или протоколы с аутентификацией (HMQV).
- Квантовые атаки. Алгоритм Шора теоретически позволяет решать ECDLP за полиномиальное время на квантовом компьютере. Для защиты разрабатываются постквантовые гибридные схемы (например, CECPQ2 с алгоритмом SIKE, хотя последний был взломан в 2022 году).
- Атаки по побочным каналам. Измерение времени выполнения операций, энергопотребления или электромагнитного излучения может позволить восстановить закрытый ключ. Для защиты применяются методы постоянного времени (constant-time) и маскирование.
- Слабые кривые. Использование нестандартных или ослабленных кривых (например, с малым порядком или аномальных) может сделать ECDLP тривиальной. Поэтому рекомендуется использовать только стандартизированные кривые (NIST P-256, P-384, P-521, Curve25519, Curve448).
Стандартизация
ECDH регламентируется рядом международных и национальных стандартов:
- ANSI X9.63 — стандарт на криптографию на эллиптических кривых для финансовых приложений.
- NIST SP 800-56A — рекомендации по обмену ключами с использованием ECC (включая ECDH и MQV).
- ISO/IEC 15946-3 — международный стандарт на криптографические механизмы на эллиптических кривых.
- RFC 6090 — описание фундаментальных алгоритмов ECC (включая ECDH) для IETF.
- ГОСТ Р 34.10-2012 и ГОСТ Р 34.11-2012 — российские стандарты на электронную подпись и хеширование, которые могут использоваться совместно с ECDH, хотя сам ECDH не входит в российские стандарты напрямую; вместо этого применяется протокол VKO (выработка ключа общего пользования) на основе ГОСТ Р 34.10-2012.
Сравнение с другими протоколами
| Протокол | Длина ключа (бит) | Вычислительная сложность | Стойкость (эквивалент RSA) | Совершенная прямая секретность |
|---|---|---|---|---|
| DH (классический) | 2048 | Высокая (модульное возведение в степень) | 2048 | Да (при эфемерных ключах) |
| ECDH | 256 | Низкая (скалярное умножение на кривой) | 3072 | Да (при эфемерных ключах) |
| RSA (обмен ключами) | 2048 | Средняя (шифрование/расшифровка) | 2048 | Нет |
| X3DH | 256 + 3072 | Средняя (комбинация ECDH и DH) | 3072 | Да |
ECDH превосходит классический DH по соотношению стойкости к длине ключа и вычислительной эффективности, но уступает X3DH в асинхронных сценариях (например, в мессенджерах).
Интересные факты
- В 2015 году исследователи из Университета Джонса Хопкинса продемонстрировали атаку на ECDH, использующую слабые эллиптические кривые в протоколе TLS, что привело к уязвимости Logjam.
- Алгоритм Curve25519, предложенный Дэниелом Бернштейном в 2006 году, является альтернативой стандартным кривым NIST и не защищён патентами. Он широко используется в проектах OpenSSH, Tor и Signal.
- В 2022 году Национальный институт стандартов и технологий США (NIST) объявил конкурс на постквантовые криптоалгоритмы, в котором гибридные схемы на основе ECDH (например, CRYSTALS-Kyber) стали финалистами.
- В России ECDH не входит в утверждённый перечень криптографических алгоритмов для государственных систем (используются алгоритмы на основе ГОСТ Р 34.10-2012), но применяется в коммерческих продуктах и международных протоколах.
Источники
- Diffie, W., Hellman, M. E. (1976). «New Directions in Cryptography». IEEE Transactions on Information Theory.
- Koblitz, N. (1987). «Elliptic Curve Cryptosystems». Mathematics of Computation.
- Miller, V. S. (1985). «Use of Elliptic Curves in Cryptography». CRYPTO.
- NIST Special Publication 800-56A Rev. 3 (2018). «Recommendation for Pair-Wise Key-Establishment Schemes Using Discrete Logarithm Cryptography».
- RFC 6090 (2011). «Fundamental Elliptic Curve Cryptography Algorithms».
- Bernstein, D. J. (2006). «Curve25519: New Diffie-Hellman Speed Records». Public Key Cryptography.
- Menezes, A., van Oorschot, P., Vanstone, S. (1996). «Handbook of Applied Cryptography». CRC Press.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →