Протокол Диффи — Хеллмана на эллиптических кривых

Протокол Ди́ффи-Хе́ллмана на эллиптических кривых (англ. Elliptic curve Diffie–Hellman, ECDH) — криптографический протокол, позволяющий двум сторонам, имеющим пары открытый/закрытый ключ на эллиптических кривых, получить общий секретный ключ, используя незащищённый от прослушивания канал связи[1] [2]. Этот секретный ключ может быть использован как для шифрования дальнейшего обмена, так и для формирования нового ключа, который затем может использоваться для последующего обмена информацией с помощью алгоритмов симметричного шифрования. Это вариация протокола Диффи-Хеллмана с использованием эллиптической криптографии[3].

Описание алгоритма

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

Алиса вычисляет . Боб вычисляет . Общий секрет — (x-координата получившейся точки). Большинство стандартных протоколов, базирующихся на ECDH, используют функции формирования ключа для получения симметричного ключа из значения [4][5].

Вычисленные участниками значения равны, так как . Из всей информации, связанной со своим закрытым ключом, Алиса сообщает только свой открытый ключ. Таким образом никто, кроме Алисы, не может определить её закрытый ключ, кроме участника, способного решить задачу дискретного логарифмирования на эллиптической кривой. Закрытый ключ Боба аналогично защищён. Никто, кроме Алисы или Боба, не может вычислить их общий секрет, кроме участника, способного разрешить проблему Диффи — Хеллмана[6].

Открытые ключи бывают либо статичными (и подтверждённые сертификатом) либо эфемерные (сокращённо ECDHE). Эфемерные ключи используются временно и не обязательно аутентифицируют отправителя, таким образом, если требуется аутентификация, подтверждение подлинности должно быть получено иным способом[3]. Аутентификация необходима для исключения возможности атаки посредника. Если Алиса либо Боб используют статичный ключ, опасность атаки посредника исключается, но не может быть обеспечена ни прямая секретность, ни устойчивость к подмене при компрометации ключа, как и некоторые другие свойства устойчивости к атакам. Пользователи статических закрытых ключей вынуждены проверять чужой открытый ключ и использовать функцию формирования ключа на общий секрет, чтобы предотвратить утечку информации о статично закрытом ключе[7]. Для шифрования с другими свойствами часто используется протокол MQV.

При использовании общего секрета в качестве ключа зачастую желательно хешировать секрет, чтобы избавиться от уязвимостей, возникших после применения протокола[7].

Пример[8]

Эллиптическая кривая E над полем имеет порядок , где P49 — простое число, состоящее из 49 цифр в десятичной записи.

Выберем неприводимый многочлен

И возьмём точку эллиптической кривой

.

Проверим, что её порядок не равен 2

.

Значит, её порядок равен порядку группы , а именно числу , и её можно использовать для построения ключа. Пусть , . Тогда открытые ключи участников протокола вычисляются как

.
.

А общий секрет будет равен:

.

В качестве ключа симметричной системы используется значение (или его часть) .

Программное обеспечение

См. также

Примечания

Литература

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.