ECDLP

Материал из testwiki
Перейти к навигации Перейти к поиску

Шаблон:Нет ссылок

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

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

Определения

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

E:Y2=X3+aX+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+...+Pn

Записи [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=1tpiei (то есть предполагается, что число N может быть факторизовано), P,QG и k:Q=[k]P.

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

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

ϕ:GCp1e1...Cptet

где Cpiei — циклическая подгруппа G, |Cpiei|=piei

Тогда проекция ϕ на Cpe:

ϕp={GCpeR[Npe]R

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

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

Пусть P,QCpe и k:Q=[k]P.

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

k=k0+k1p+...+ke1pe1

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

k=k0+...+kt1pt1

Теперь хотим определить kt и таким образом вычислить k mod pt+1:

k=k+ptk

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

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

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

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

Получили ECDLP в поле Cp в виде Q=[kt]P.

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

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

Пример

Q=[k]P (mod 1009)

E:y2x3+71x+602 (mod 1009)

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

N=1060=22*5*53

|P|=530=2*5*53

Шаг 1. Найти k mod 2

  • Находим проекции точек на C2:
P2=265P=(50,0)
Q2=265Q=(50,0)
  • Решаем Q2=[k]P2
k1 (mod 2)

Шаг 2. Найти k mod 5

  • Находим проекции точек на C5:
P5=106P=(639,160)
Q5=106Q=(639,849)
  • Решаем Q5=[k]P5
Заметим, что Q5=P5, тогда k4 (mod 5)

Шаг 3. Найти k mod 53

  • Находим проекции точек на C53:
P53=10P=(32,737)
Q53=10Q=(592,97)
  • Решаем Q53=[k]P53
k48 (mod 53)

Шаг 4. Найти k mod 530

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

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

Описание

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

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

k=k0+k1l

Так как kl, то 0k0,k1<l.

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

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

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

Во время поиска Qj пробуем найти среди сохранённых пар (Pi,i) такую, что Pi=Qj. Если удалось найти такую пару, то k0=i,k1=j.

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

[i]P=Q[jl]P,
[i+jl]P=Q.

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

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

Алгоритм

  1. m:=l
  2. 𝐟𝐨𝐫 i:=1 𝐭𝐨 m 𝐝𝐨
    R:=[i]P
    сохранить (R,i)
  3. 𝐟𝐨𝐫 j:=1 𝐭𝐨 m 𝐝𝐨
    T:=Q[jl]P
    проверить T в списке [2]
  4. 𝐢𝐟 T=R 𝐭𝐡𝐞𝐧
    k:=i+jl (mod l)
    𝐫𝐞𝐭𝐮𝐫𝐧 k

Описание

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

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

Тогда [cc]P=[dd]Q или Q=ccddP (mod r). Следовательно, kccdd (mod r).

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

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

Тогда Pi+1=f(Pi)=f(Pj)=Pj+1.

На самом деле Pi+l=Pj+l, для l0.

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

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

Алгоритм

  1. Инициализация.
    Выбрать число ветвей L (обычно берётся 16)
    Выбрать функцию H:P1,2,...,L
  2. Вычисление [ai]P+[bi]Q.
    𝐟𝐨𝐫 i:=1 𝐭𝐨 L 𝐝𝐨
    Взять случайные ai,bi[0,r1]
    Ri:=[ai]P+[bi]Q
  3. Вычисление [c]P+[d]Q.
    Взять случайные c,d[0,r1]
    X:=[c]P+[d]Q
  4. Подготовка к циклу.
    X:=X,c:=c,d:=d
  5. Цикл.
    𝐫𝐞𝐩𝐞𝐚𝐭
    j:=H(X)
    X:=X+Rj
    c:=c+aj (mod r)
    d:=d+bj (mod r)
    𝐟𝐨𝐫 i:=1 𝐭𝐨 2 𝐝𝐨
    j:=H(X)
    X:=X+Rj
    c:=c+aj (mod r)
    d:=d+bj (mod r)
    𝐮𝐧𝐭𝐢𝐥 X=X
  6. Выход.
    𝐢𝐟dd 𝐭𝐡𝐞𝐧
    kccdd (mod r)
    𝐞𝐥𝐬𝐞 ОШИБКА или запустить алгоритм ещё раз.

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

Пример

Q=[k]P (mod 229)

E:y2x3+x+44 (mod 229)

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

|P|=239

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

  • H:P1,2,3,4
  • H(x,y)=(x mod 4)+1
  • (a1,b1,R1)=(79,163,(135,117))
  • (a2,b2,R2)=(206,19,(96,97))
  • (a3,b3,R3)=(87,109,(84,62))
  • (a4,b4,R4)=(219,68,(72,134))

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

Iterationcd[c]P+[d]Qcd[c]P+[d]Q054175(39,159)54175(39,159)1344(160,9)113167(130,182)2113167(130,182)180105(36,97)320037(27,17)097(108,89)4180105(36,97)4640(223,153)52029(119,180)232127(167,57)6097(108,89)19224(57,105)77921(81,168)139111(185,227)84640(223,153)1930(197,92)926108(9,18)14087(194,145)10232127(167,57)67120(223,153)11212195(75,136)14207(167,57)1219224(𝟓𝟕,𝟏𝟎𝟓)213104(𝟓𝟕,𝟏𝟎𝟓)

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

  • При i=12: [192]P+[24]Q=[213]P+[104]Q=(57,105)
  • Получаем, что k19221310424176 (mod 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