ECDLP (Elliptic Curve Discrete Logarithm Problem) — задача дискретного логарифмирования в группе точек эллиптической кривой.
Пусть даны эллиптическая кривая E, конечно поле Fp и точки P, Q ∈ E(Fp). Задача ECDLP: найти такое k, если оно существует, что Q = [k]P.
Определения
Эллиптической кривой E над конечным полем Fp называется кривая вида (форма Вейерштрасса):
, где a, b ∈ Fp.
Набор точек на эллиптической кривой в поле Fp, включающий точку «бесконечность» (обозначается как Ο), образует конечную абелеву группу и обозначается как E(Fp).
Точка Q ∈E (Fp) называется обратной точкой к P ∈ E(Fp), если P + Q = Ο и обозначается как Q = -P.
Для натурального числа n и P ∈ E(Fp) будем считать:
![{\displaystyle [n]P=\underbrace {P+P+...+P} _{n}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2c4dc02931a252e7af560096531c4bd73811236e)
Записи [n]P и nP эквиваленты. Определение можно расширить для любого целого числа n, если использовать -P.
Порядком группы точек называется число N равное мощности множества E(Fp) и обозначается как |E(Fp)| = N. Обычно в эллиптической криптографии берутся кривые такие, что N = h * l, где h = 1, 2 или 4, а l — большое простое число.
Порядком точки P ∈ E(Fp) называется минимальное число s такое, что [s]P = Ο. При этом образуется подгруппа
и точка P называется генератором
.
Алгоритмы решения
Полный перебор
Является самой просто атакой в реализации. Необходимо только уметь делать операцию R = [k]P.
Алгоритм

![{\displaystyle R:=[k]P}](https://wikimedia.org/api/rest_v1/media/math/render/svg/fece7aab267ef33e1982f5bde4368c74c9dcae8f)
- if
, then
— решение - else
; перейти к [2].
Сложность алгоритма: Ο(N).
Описание
Пусть G — подгруппа E(Fp),
(то есть предполагается, что число N может быть факторизовано),
и
.
Будем решать задачу о поиске k по модулю
, затем, используя китайскую теорему об остатках, найдем решение k по модулю N.
Из теории групп известно, что существует изоморфизм групп:

где
— циклическая подгруппа G, 
Тогда проекция
на
:
![{\displaystyle \phi _{p}={\begin{cases}G\rightarrow C_{p^{e}}\\R\longmapsto [{\frac {N}{p^{e}}}]R\end{cases}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/22990b1f87af4c880b2ffb1c120d092d63a9ec7e)
Следовательно,
в
.
Покажем, как решить задачу в
, сведя её к решению ECDLP в
.
Пусть
и
.
Число
определено по модулю
. Тогда можно записать k в следующем виде:

Найдем значения
по индукции. Предположим, известно
— значение
, то есть

Теперь хотим определить
и таким образом вычислить
:

Тогда
.
Пусть
и
, тогда ![{\displaystyle Q'=[k'']P'}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c4c5e98033771b358f2db09d71e06263e99fdb07)
Теперь
— элемент порядка
, чтобы получить элемент порядка
и, следовательно, свести задачу в
необходимо умножить предыдущее выражение на
. Т.о.
и ![{\displaystyle P''=[s]P'}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a9b1102147f30b131e846a68cfc7e9f96380f5a6)
Получили ECDLP в поле
в виде
.
Предполагая, что можно решить эту задачу в
, находим решение
в
. Используя китайскую теорему об остатках, получаем решение ECDLP в
.
Как говорилось выше, на практике берутся эллиптические кривые такие, что
, где
— очень большое простое число, что делает данный метод малоэффективным.
Пример
![{\displaystyle Q=[k]P\ (mod\ 1009)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c4e25f9806d4879996e8ae03c96b9528c4f69464)




Шаг 1. Найти 
- Находим проекции точек на
:


- Решаем
![{\displaystyle Q_{2}=[k]P_{2}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3c3dd0f467ae3a4a3e79f5878bf89a7100d99cb4)

Шаг 2. Найти 
- Находим проекции точек на
:


- Решаем
![{\displaystyle Q_{5}=[k]P_{5}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f1fbf50b8e3404d6f723797d77ea58fab62ddf6a)
- Заметим, что
, тогда 
Шаг 3. Найти 
- Находим проекции точек на
:


- Решаем
![{\displaystyle Q_{53}=[k]P_{53}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2357101e41011bfbca5e585500d41e033a052950)

Шаг 4. Найти 
- Из китайской теоремы об остатках для значений, полученных на предыдущих шагах 1-3, имеем, что

Описание
Пусть
— циклическая подгруппа
.
Представим
в виде:

Так как
, то
.
Вычисляем список «маленьких шагов»
,
и сохраняем пары
.
Сложность вычислений:
.
Теперь вычисляем «большие шаги». Пусть
, найдём
,
.
Во время поиска
пробуем найти среди сохранённых пар
такую, что
. Если удалось найти такую пару, то
.
Или, что то же самое:
![{\displaystyle [i]P=Q-[j\lceil {\sqrt {l}}\rceil ]P,}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2f488ccbe8f7705f236893abe7475357e39d3a1f)
.
Сложность вычислений «больших шагов»:
.
В таком случае общая сложность метода
, но также требуется
памяти для хранения, что является существенным минусом алгоритма.
Алгоритм


![{\displaystyle R:=[i]P}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f9641367721067f18d00d262c56a6042e19801dc)
- сохранить


![{\displaystyle T:=Q-[j\lceil {\sqrt {l}}\rceil ]P}](https://wikimedia.org/api/rest_v1/media/math/render/svg/e7318583a0bbe3b9efe03ed3f389fdbc4716e8b4)
- проверить
в списке [2]



Описание
Пусть
— циклическая подгруппа
.
Основная идея метода — найти различные пары
и
по модулю
такие, что
.
Тогда
или
. Следовательно,
.
Чтобы реализовать эту идею, выберем случайную функцию для итераций
, и случайную точку
для начала обхода. Следующая точка вычисляется как
.
Так как
— конечная, то найдутся такие индексы
, что
.
Тогда
.
На самом деле
, для
.
Тогда последовательность
— периодична с периодом
(см. рис).
Так как f случайная функция, то, согласно парадоксу дней рождения, совпадение случится примерно через
итераций. Для ускорения поиска коллизий используется метод, придуманный Флойдом для поиска длины цикла: вычисляется сразу пара значений
для
, пока не найдется совпадение.
Алгоритм
- Инициализация.
- Выбрать число ветвей L (обычно берётся 16)
- Выбрать функцию

- Вычисление
. 
- Взять случайные
![{\displaystyle a_{i},b_{i}\in [0,r-1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/36da5d7faf7fe288ab9e55e2259438f87cef3d9d)
![{\displaystyle R_{i}:=[a_{i}]P+[b_{i}]Q}](https://wikimedia.org/api/rest_v1/media/math/render/svg/65bb8992eba9c7dcabb6abc7ceed90791a8b149f)
- Вычисление
. - Взять случайные
![{\displaystyle c',d'\in [0,r-1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/adf0c8286f3967bcd111090b9b43675d6590d37f)
![{\displaystyle X':=[c']P+[d']Q}](https://wikimedia.org/api/rest_v1/media/math/render/svg/888a428d2b00e7d06ea8015075d96a2cbbfb23eb)
- Подготовка к циклу.

- Цикл.











- Выход.


ОШИБКА или запустить алгоритм ещё раз.
Сложность алгоритма:
.
Пример
![{\displaystyle Q=[k]P\ (mod\ 229)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/f1156303a5ce83c0e787637129534d213496bc05)



Шаг 1.Определить функцию.






Шаг 2. Итерации.
![{\displaystyle {\begin{array}{c|c c c|c c c}Iteration&c'&d'&[c']P+[d']Q&c''&d''&[c'']P+[d'']Q\\\hline 0&54&175&(39,159)&54&175&(39,159)\\1&34&4&(160,9)&113&167&(130,182)\\2&113&167&(130,182)&180&105&(36,97)\\3&200&37&(27,17)&0&97&(108,89)\\4&180&105&(36,97)&46&40&(223,153)\\5&20&29&(119,180)&232&127&(167,57)\\6&0&97&(108,89)&192&24&(57,105)\\7&79&21&(81,168)&139&111&(185,227)\\8&46&40&(223,153)&193&0&(197,92)\\9&26&108&(9,18)&140&87&(194,145)\\10&232&127&(167,57)&67&120&(223,153)\\11&212&195&(75,136)&14&207&(167,57)\\12&192&24&\mathbf {(57,105)} &213&104&\mathbf {(57,105)} \\\end{array}}}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c08505f4e1fe35e733b137e7704078d7307492c7)
Шаг 3. Обнаружение коллизии.
- При
: ![{\displaystyle [192]P+[24]Q=[213]P+[104]Q=(57,105)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b7e31b7310cc241817a48f4d70750fb098b333b4)
- Получаем, что

Литература
Болотов, А. А., Гашков, С. Б., Фролов, А. Б., Часовских, А. А. Элементарное введение в эллиптическую криптографию: Алгебраические и алгоритмические основы. — М. : КомКнига, 2006. — С. 328. — ISBN 5-484-00443-8.
Болотов, А. А., Гашков, С. Б., Фролов, А. Б., Часовских, А. А. Элементарное введение в эллиптическую криптографию: Протоколы криптографии на эллиптических кривых. — М. : КомКнига, 2006. — С. 280. — ISBN 5-484-00444-6.
Galbraith, S.D., Smart, N.P. EVALUATION REPORT FOR CRYPTREC: SECURITY LEVEL OF CRYPTOGRAPHY — ECDLP MATHEMATICAL PROBLEM.
Song Y. Yan Quantum Attacks on ECDLP-Based Cryptosystems. — Springer US, 2013 — ISBN 978-1-4419-7721-2