Протокол Диффи — Хеллмана на эллиптических кривых
Протокол Ди́ффи-Хе́ллмана на эллиптических кривых (англ. Elliptic curve Diffie–Hellman, ECDH) — криптографический протокол, позволяющий двум сторонам, имеющим пары открытый/закрытый ключ на эллиптических кривых, получить общий секретный ключ, используя не защищённый от прослушивания канал связи[1] [2]. Этот секретный ключ может быть использован как для шифрования дальнейшего обмена, так и для формирования нового ключа, который затем может использоваться для последующего обмена информацией с помощью алгоритмов симметричного шифрования. Это вариация протокола Диффи-Хеллмана с использованием эллиптической криптографии[3].
Описание алгоритма
[править | править код]Пусть существуют два абонента: Алиса и Боб. Предположим, Алиса хочет создать общий секретный ключ с Бобом, но единственный доступный между ними канал может быть подслушан третьей стороной. Изначально должен быть согласован набор параметров ( для общего случая и для поля характеристики ). Так же у каждой стороны должна иметься пара ключей, состоящая из закрытого ключа (случайно выбранное целое число из интервала ) и открытого ключа (где — это результат проделывания раз операции суммирования элемента ). Пусть тогда пара ключей Алисы будет , а пара Боба . Перед исполнением протокола стороны должны обменяться открытыми ключами.
Алиса вычисляет . Боб вычисляет . Общий секрет[англ.] — (x-координата получившейся точки). Большинство стандартных протоколов, базирующихся на ECDH, используют функции формирования ключа для получения симметричного ключа из значения [4][5].
Вычисленные участниками значения равны, так как . Из всей информации, связанной со своим закрытым ключом, Алиса сообщает только свой открытый ключ. Таким образом никто, кроме Алисы, не может определить её закрытый ключ, кроме участника, способного решить задачу дискретного логарифмирования на эллиптической кривой. Закрытый ключ Боба аналогично защищён. Никто, кроме Алисы или Боба, не может вычислить их общий секрет, кроме участника, способного разрешить проблему Диффи — Хеллмана[6].
Открытые ключи бывают либо статичными (и подтверждённые сертификатом) либо эфемерные (сокращённо ECDHE). Эфемерные ключи используются временно и не обязательно аутентифицируют отправителя, таким образом, если требуется аутентификация, подтверждение подлинности должно быть получено иным способом[3]. Аутентификация необходима для исключения возможности атаки посредника. Если Алиса либо Боб используют статичный ключ, опасность атаки посредника исключается, но не может быть обеспечена ни прямая секретность, ни устойчивость к подмене при компрометации ключа, как и некоторые другие свойства устойчивости к атакам. Пользователи статических закрытых ключей вынуждены проверять чужой открытый ключ и использовать функцию формирования ключа на общий секрет, чтобы предотвратить утечку информации о статично закрытом ключе[7]. Для шифрования с другими свойствами часто используется протокол MQV.
При использовании общего секрета в качестве ключа зачастую желательно хешировать секрет, чтобы избавиться от уязвимостей, возникших после применения протокола[7].
Пример[8]
[править | править код]Эллиптическая кривая E над полем имеет порядок , где P49 — простое число, состоящее из 49 цифр в десятичной записи.
Выберем неприводимый многочлен
И возьмём точку эллиптической кривой
- .
Проверим, что её порядок не равен 2
- .
Значит, её порядок равен порядку группы , а именно числу , и её можно использовать для построения ключа. Пусть , . Тогда открытые ключи участников протокола вычисляются как
- .
- .
А общий секрет будет равен:
- .
В качестве ключа симметричной системы используется значение (или его часть) .
Программное обеспечение
[править | править код]- Curve25519 — набор эллиптических параметров и ссылок, реализованный Daniel J. Bernstein на языке Си.
См. также
[править | править код]Примечания
[править | править код]- ↑ An Efficient Protocol for Authenticated Key Agreement, 2003, p. 119.
- ↑ Barker et al., 2013, p. 11.
- ↑ 1 2 Suite B Implementer’s Guide to NIST SP 800-56A, 2009, p. 8.
- ↑ SEC 1: Elliptic Curve Cryptography, 2009, p. 63.
- ↑ Barker et al., 2013, p. 40.
- ↑ Barker et al., 2013, p. 20.
- ↑ 1 2 SEC 1: Elliptic Curve Cryptography, 2009, p. 30.
- ↑ Элементарное введение в эллиптическую криптографию. Протоколы криптографии на эллиптических кривых, 2006, p. 85.
Литература
[править | править код]- Elaine Barker, Lily Chen, Allen Roginsky, Miles Smid. Recommendation for Pair-Wise Key Establishment Schemes Using Discrete Logarithm Cryptography (англ.) // http://nvlpubs.nist.gov/. — National Institute of Standards and Technology, 2013. — ISBN 1495447502.
- Standards for Efficient Cryptography Group (SECG). SEC 1: Elliptic Curve Cryptography : [англ.]. — http://www.secg.org. — Certicom Corp, 2009. — P. 15—28, 56—58.
- National Institute of Standards and Technology (NIST). Suite B Implementer’s Guide to NIST SP 800-56A : [англ.]. — https://www.nsa.gov. — 2009.
- Laurie Law. An Efficient Protocol for Authenticated Key Agreement : [англ.] / Laurie Law, Alfred Menezes, Minghua Qu … [et al.]. — Designs, Codes and Cryptography. — Kluwer Academic Publishers, 2003. — Vol. 28, no. 2. — P. 119–134. — ISSN 0925-1022. — doi:10.1023/A:1022595222606.
- Болотов А. А., Гашков С. Б., Фролов А. Б. Глава 2. Протоколы на эллиптических кривых // Элементарное введение в эллиптическую криптографию. Протоколы криптографии на эллиптических кривых. — М.: КомКнига, 2006. — С. 83—86. — ISBN 5-484-00444-6, ББК 32.81, УДК 512.8.