Это не официальный сайт wikipedia.org 01.01.2023

ECDLP — Википедия

ECDLP

ECDLP (Elliptic Curve Discrete Logarithm Problem) — задача дискретного логарифмирования в группе точек эллиптической кривой.

Пусть даны эллиптическая кривая E, конечно поле Fp и точки P, Q ∈ E(Fp). Задача ECDLP: найти такое k, если оно существует, что Q = [k]P.

ОпределенияПравить

Эллиптической кривой E над конечным полем Fp называется кривая вида (форма Вейерштрасса):

E : Y 2 = X 3 + a X + b  , где a, b ∈ Fp.

Набор точек на эллиптической кривой в поле Fp, включающий точку «бесконечность» (обозначается как Ο), образует конечную абелеву группу и обозначается как E(Fp).

Точка Q ∈E (Fp) называется обратной точкой к P ∈ E(Fp), если P + Q = Ο и обозначается как Q = -P.

Для натурального числа n и P ∈ E(Fp) будем считать:

[ n ] P = P + P + . . . + P n  

Записи [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 = { [ k ] P : k = 1 , s ¯ }   и точка P называется генератором P  .

Алгоритмы решенияПравить

Полный переборПравить

Является самой просто атакой в реализации. Необходимо только уметь делать операцию R = [k]P.

АлгоритмПравить

  1. k := 1  
  2. R := [ k ] P  
  3. if R = Q  , then k   — решение
  4. else k := k + 1  ; перейти к [2].

Сложность алгоритма: Ο(N).

Алгоритм Полига — ХеллманаПравить

ОписаниеПравить

Пусть G — подгруппа E(Fp), N = | G | = i = 1 t p i e i   (то есть предполагается, что число N может быть факторизовано), P , Q G   и k : Q = [ k ] P  .

Будем решать задачу о поиске k по модулю p i e i  , затем, используя китайскую теорему об остатках, найдем решение k по модулю N.

Из теории групп известно, что существует изоморфизм групп:

ϕ : G C p 1 e 1 . . . C p t e t  

где C p i e i   — циклическая подгруппа G, | C p i e i | = p i e i  

Тогда проекция ϕ   на C p e  :

ϕ p = { G C p e R [ N p e ] R  

Следовательно, ϕ p ( Q ) = [ k ] ϕ p ( P )   в C p e  .

Покажем, как решить задачу в C p e  , сведя её к решению ECDLP в C p  .

Пусть P , Q C p e   и k : Q = [ k ] P  .

Число k   определено по модулю p e  . Тогда можно записать k в следующем виде:

k = k 0 + k 1 p + . . . + k e 1 p e 1  

Найдем значения k 0 , k 1 , . . .   по индукции. Предположим, известно k   — значение k   m o d   p t  , то есть

k = k 0 + . . . + k t 1 p t 1  

Теперь хотим определить k t   и таким образом вычислить k   m o d   p t + 1  :

k = k + p t k  

Тогда Q = [ k ] P + [ k ] ( [ p t ] P )  .

Пусть Q = Q [ k ] P   и P = [ p t ] P  , тогда Q = [ k ] P  

Теперь P   — элемент порядка p e t  , чтобы получить элемент порядка p   и, следовательно, свести задачу в C p   необходимо умножить предыдущее выражение на s = p e t 1  . Т.о.

Q = [ s ] Q   и P = [ s ] P  

Получили ECDLP в поле C p   в виде Q = [ k t ] P  .

Предполагая, что можно решить эту задачу в C p  , находим решение k   в C p e  . Используя китайскую теорему об остатках, получаем решение ECDLP в E ( F p )  .

Как говорилось выше, на практике берутся эллиптические кривые такие, что N = h l  , где l   — очень большое простое число, что делает данный метод малоэффективным.

ПримерПравить

Q = [ k ] P   ( m o d   1009 )  

E : y 2 x 3 + 71 x + 602   ( m o d   1009 )  

P = ( 1 , 237 ) , Q = ( 190 , 271 )  

N = 1060 = 2 2 5 53  

| P | = 530 = 2 5 53  

Шаг 1. Найти k   m o d   2  

  • Находим проекции точек на C 2  :
P 2 = 265 P = ( 50 , 0 )  
Q 2 = 265 Q = ( 50 , 0 )  
  • Решаем Q 2 = [ k ] P 2  
k 1   ( m o d   2 )  

Шаг 2. Найти k   m o d   5  

  • Находим проекции точек на C 5  :
P 5 = 106 P = ( 639 , 160 )  
Q 5 = 106 Q = ( 639 , 849 )  
  • Решаем Q 5 = [ k ] P 5  
Заметим, что Q 5 = P 5  , тогда k 4   ( m o d   5 )  

Шаг 3. Найти k   m o d   53  

  • Находим проекции точек на C 53  :
P 53 = 10 P = ( 32 , 737 )  
Q 53 = 10 Q = ( 592 , 97 )  
  • Решаем Q 53 = [ k ] P 53  
k 48   ( m o d   53 )  

Шаг 4. Найти k   m o d   530  

  • Из китайской теоремы об остатках для значений, полученных на предыдущих шагах 1-3, имеем, что
k 419   ( m o d   530 )  

Алгоритм Шенкса (Baby-Step/Giant-Step method)Править

ОписаниеПравить

Пусть G = P   — циклическая подгруппа E ( F p ) ; | P | = l ; Q G  .

Представим k   в виде:

k = k 0 + k 1 l  

Так как k l  , то 0 k 0 , k 1 < l  .

Вычисляем список «маленьких шагов» P i = [ i ] P  , 0 i < l   и сохраняем пары ( P i , i )  .

Сложность вычислений: O ( l )  .

Теперь вычисляем «большие шаги». Пусть P = [ l ] P  , найдём Q j = Q [ j ] P  , 0 j < l  .

Во время поиска Q j   пробуем найти среди сохранённых пар ( P i , i )   такую, что P i = Q j  . Если удалось найти такую пару, то k 0 = i , k 1 = j  .

Или, что то же самое:

[ i ] P = Q [ j l ] P ,  
[ i + j l ] P = Q  .

Сложность вычислений «больших шагов»: O ( l )  .

В таком случае общая сложность метода O ( l )  , но также требуется S ( l )   памяти для хранения, что является существенным минусом алгоритма.

АлгоритмПравить

  1. m := l  
  2. f o r   i := 1   t o   m   d o  
    R := [ i ] P  
    сохранить ( R , i )  
  3. f o r   j := 1   t o   m   d o  
    T := Q [ j l ] P  
    проверить T   в списке [2]
  4. i f   T = R   t h e n  
    k := i + j l   ( m o d   l )  
    r e t u r n   k  

ρ-метод ПоллардаПравить

ОписаниеПравить

Пусть G = P   — циклическая подгруппа E ( F p ) ; | G | = r ; Q G  .

Основная идея метода — найти различные пары ( c , d )   и ( c , d )   по модулю r   такие, что [ c ] P + [ d ] Q = [ c ] P + [ d ] Q  .

Тогда [ c c ] P = [ d d ] Q   или Q = c c d d P   ( m o d   r )  . Следовательно, k c c d d   ( m o d   r )  .

Чтобы реализовать эту идею, выберем случайную функцию для итераций f : G G  , и случайную точку P 0   для начала обхода. Следующая точка вычисляется как P i + 1 = f ( P i )  .

Так как G   — конечная, то найдутся такие индексы i < j  , что P i = P j  .

Тогда P i + 1 = f ( P i ) = f ( P j ) = P j + 1  .

На самом деле P i + l = P j + l  , для l 0  .

Тогда последовательность { P i }   — периодична с периодом j i   (см. рис).

Так как f случайная функция, то, согласно парадоксу дней рождения, совпадение случится примерно через π r 2   итераций. Для ускорения поиска коллизий используется метод, придуманный Флойдом для поиска длины цикла: вычисляется сразу пара значений ( P i , P 2 i )   для i = 1 , 2 , . . .  , пока не найдется совпадение.

АлгоритмПравить

  1. Инициализация.
    Выбрать число ветвей L (обычно берётся 16)
    Выбрать функцию H : P 1 , 2 , . . . , L  
  2. Вычисление [ a i ] P + [ b i ] Q  .
    f o r   i := 1   t o   L   d o  
    Взять случайные a i , b i [ 0 , r 1 ]  
    R i := [ a i ] P + [ b i ] Q  
  3. Вычисление [ c ] P + [ d ] Q  .
    Взять случайные c , d [ 0 , r 1 ]  
    X := [ c ] P + [ d ] Q  
  4. Подготовка к циклу.
    X := X , c := c , d := d  
  5. Цикл.
    r e p e a t  
    j := H ( X )  
    X := X + R j  
    c := c + a j   ( m o d   r )  
    d := d + b j   ( m o d   r )  
    f o r   i := 1   t o   2   d o  
    j := H ( X )  
    X := X + R j  
    c := c + a j   ( m o d   r )  
    d := d + b j   ( m o d   r )  
    u n t i l   X = X  
  6. Выход.
    i f d d   t h e n  
    k c c d d   ( m o d   r )  
    e l s e   ОШИБКА или запустить алгоритм ещё раз.

Сложность алгоритма: O ( r )  .

ПримерПравить

Q = [ k ] P   ( m o d   229 )  

E : y 2 x 3 + x + 44   ( m o d   229 )  

P = ( 5 , 116 ) , Q = ( 155 , 166 )  

| P | = 239  

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

  • H : P 1 , 2 , 3 , 4  
  • H ( x , y ) = ( x   m o d   4 ) + 1  
  • ( a 1 , b 1 , R 1 ) = ( 79 , 163 , ( 135 , 117 ) )  
  • ( a 2 , b 2 , R 2 ) = ( 206 , 19 , ( 96 , 97 ) )  
  • ( a 3 , b 3 , R 3 ) = ( 87 , 109 , ( 84 , 62 ) )  
  • ( a 4 , b 4 , R 4 ) = ( 219 , 68 , ( 72 , 134 ) )  

Шаг 2. Итерации.

I t e r a t i o n c d [ c ] P + [ d ] Q c d [ c ] P + [ d ] Q 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 ( 57 , 105 ) 213 104 ( 57 , 105 )  

Шаг 3. Обнаружение коллизии.

  • При i = 12  : [ 192 ] P + [ 24 ] Q = [ 213 ] P + [ 104 ] Q = ( 57 , 105 )  
  • Получаем, что k 192 213 104 24 176   ( m o d   229 )  

ЛитератураПравить

Болотов, А. А., Гашков, С. Б., Фролов, А. Б., Часовских, А. А. Элементарное введение в эллиптическую криптографию: Алгебраические и алгоритмические основы. — М. : КомКнига, 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