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

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 позволяет двум сторонам (например, Алисе и Бобу) выработать общий секретный ключ без его прямой передачи. Алгоритм состоит из следующих шагов:

  1. Выбор общих параметров. Обе стороны заранее согласовывают эллиптическую кривую (например, из стандарта NIST P-256) и базовую точку \( G \) на ней. Параметры могут быть открытыми.
  2. Генерация ключевых пар. Каждая сторона генерирует свой закрытый ключ — случайное целое число \( d_A \) (для Алисы) и \( d_B \) (для Боба). Затем вычисляет открытый ключ как точку на кривой: \( Q_A = d_A \cdot G \) и \( Q_B = d_B \cdot G \).
  3. Обмен открытыми ключами. Алиса отправляет Бобу \( Q_A \), Боб отправляет Алисе \( Q_B \). Передача может вестись по незащищённому каналу.
  4. Вычисление общего секрета. Алиса вычисляет \( S = d_A \cdot Q_B \), Боб вычисляет \( S = d_B \cdot Q_A \). В силу ассоциативности скалярного умножения обе стороны получают одну и ту же точку \( S = d_A d_B \cdot G \).
  5. Получение ключа. Из координат точки \( S \) (обычно берётся \( x \)-координата) с помощью хеш-функции (например, SHA-256) формируется итоговый симметричный ключ для шифрования данных.

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

Существует несколько вариантов ECDH, различающихся способом согласования параметров и дополнительными шагами:

Применение

ECDH широко используется в современных криптографических системах:

Безопасность

Стойкость ECDH зависит от размера используемой эллиптической кривой. По состоянию на 2025 год кривые с длиной ключа 256 бит (например, P-256) считаются безопасными для большинства приложений, обеспечивая уровень стойкости, эквивалентный 3072-битному RSA. Кривые с длиной 384 и 521 бит рекомендуются для систем с повышенными требованиями к безопасности (например, государственные системы).

Основные угрозы для ECDH:

Стандартизация

ECDH регламентируется рядом международных и национальных стандартов:

Сравнение с другими протоколами

ПротоколДлина ключа (бит)Вычислительная сложностьСтойкость (эквивалент RSA)Совершенная прямая секретность
DH (классический)2048Высокая (модульное возведение в степень)2048Да (при эфемерных ключах)
ECDH256Низкая (скалярное умножение на кривой)3072Да (при эфемерных ключах)
RSA (обмен ключами)2048Средняя (шифрование/расшифровка)2048Нет
X3DH256 + 3072Средняя (комбинация ECDH и DH)3072Да

ECDH превосходит классический DH по соотношению стойкости к длине ключа и вычислительной эффективности, но уступает X3DH в асинхронных сценариях (например, в мессенджерах).

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

Источники

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

На главную BFOmetr →