ECDLP

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) будем считать:

 

Записи [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.

Алгоритм

править
  1.  
  2.  
  3. if  , then   — решение
  4. else  ; перейти к [2].

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

Описание

править

Пусть G — подгруппа E(Fp),   (то есть предполагается, что число N может быть факторизовано),   и  .

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

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

 

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

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

 

Следовательно,   в  .

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

Пусть   и  .

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

 

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

 

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

 

Тогда  .

Пусть   и  , тогда  

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

  и  

Получили ECDLP в поле   в виде  .

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

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

Пример

править

 

 

 

 

 

Шаг 1. Найти  

  • Находим проекции точек на  :
 
 
  • Решаем  
 

Шаг 2. Найти  

  • Находим проекции точек на  :
 
 
  • Решаем  
Заметим, что  , тогда  

Шаг 3. Найти  

  • Находим проекции точек на  :
 
 
  • Решаем  
 

Шаг 4. Найти  

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

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

править

Описание

править

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

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

 

Так как  , то  .

Вычисляем список «маленьких шагов»  ,   и сохраняем пары  .

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

Теперь вычисляем «большие шаги». Пусть  , найдём  ,  .

Во время поиска   пробуем найти среди сохранённых пар   такую, что  . Если удалось найти такую пару, то  .

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

 
 .

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

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

Алгоритм

править
  1.  
  2.  
     
    сохранить  
  3.  
     
    проверить   в списке [2]
  4.  
     
     

Описание

править

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

Основная идея метода — найти различные пары   и   по модулю   такие, что  .

Тогда   или  . Следовательно,  .

Чтобы реализовать эту идею, выберем случайную функцию для итераций  , и случайную точку   для начала обхода. Следующая точка вычисляется как  .

Так как   — конечная, то найдутся такие индексы  , что  .

Тогда  .

На самом деле  , для  .

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

Так как f случайная функция, то, согласно парадоксу дней рождения, совпадение случится примерно через   итераций. Для ускорения поиска коллизий используется метод, придуманный Флойдом для поиска длины цикла: вычисляется сразу пара значений   для  , пока не найдется совпадение.

Алгоритм

править
  1. Инициализация.
    Выбрать число ветвей L (обычно берётся 16)
    Выбрать функцию  
  2. Вычисление  .
     
    Взять случайные  
     
  3. Вычисление  .
    Взять случайные  
     
  4. Подготовка к циклу.
     
  5. Цикл.
     
     
     
     
     
     
     
     
     
     
     
  6. Выход.
     
     
      ОШИБКА или запустить алгоритм ещё раз.

Сложность алгоритма:  .

Пример

править

 

 

 

 

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

  •  
  •  
  •  
  •  
  •  
  •  

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

 

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

  • При  :  
  • Получаем, что  

Литература

править

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