Перейти к содержанию

ECDLP

Материал из Мегавики — свободной энциклопедии

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

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

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

ϕ:G→Cp1e1⊗...⊗Cptet

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

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

ϕp={G→CpeR⟼[Npe]R

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

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

Пусть P,Q∈Cpe и ∃k:Q=[k]P.

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

k=k0+k1p+...+ke−1pe−1

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

k′=k0+...+kt−1pt−1

Теперь хотим определить 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′ — элемент порядка pe−t, чтобы получить элемент порядка p и, следовательно, свести задачу в Cp необходимо умножить предыдущее выражение на s=pe−t−1. Т.о.

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:y2≡x3+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
k≡1 (mod 2)

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

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

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

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

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

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

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

Описание[править]

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

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

k=k0+k1⌈l⌉

Так как k≤l, то 0≤k0,k1<⌈l⌉.

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

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

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

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

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

[i]P=Q−[j⌈l⌉]P,
[i+j⌈l⌉]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−[j⌈l⌉]P
    проверить T в списке [2]
  4. 𝐢𝐟 T=R 𝐭𝐡𝐞𝐧
    k:=i+j⌈l⌉ (mod l)
    𝐫𝐞𝐭𝐮𝐫𝐧 k

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

Описание[править]

Пусть G=⟨P⟩ — циклическая подгруппа E(Fp);|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 (mod r). Следовательно, k≡c′−c″d″−d′ (mod r).

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

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

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

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

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

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

Алгоритм[править]

  1. Инициализация.
    Выбрать число ветвей L (обычно берётся 16)
    Выбрать функцию H:⟨P⟩→1,2,...,L
  2. Вычисление [ai]P+[bi]Q.
    𝐟𝐨𝐫 i:=1 𝐭𝐨 L 𝐝𝐨
    Взять случайные ai,bi∈[0,r−1]
    Ri:=[ai]P+[bi]Q
  3. Вычисление [c′]P+[d′]Q.
    Взять случайные c′,d′∈[0,r−1]
    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. Выход.
    𝐢𝐟d′≠d″ 𝐭𝐡𝐞𝐧
    k≡c′−c″d″−d′ (mod r)
    𝐞𝐥𝐬𝐞 ОШИБКА или запустить алгоритм ещё раз.

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

Пример[править]

Q=[k]P (mod 229)

E:y2≡x3+x+44 (mod 229)

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

|⟨P⟩|=239

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

  • H:⟨P⟩→1,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. Итерации.

Iterationc′d′[c′]P+[d′]Qc″d″[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)
  • Получаем, что k≡192−213104−24≡176 (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

Источник — https://megawiki.ru/wiki/ECDLP