Опубликован: 02.03.2017 | Доступ: свободный | Студентов: 2511 / 556 | Длительность: 21:50:00
Лекция 4:

Эллиптические кривые

< Лекция 3 || Лекция 4: 123 || Лекция 5 >

4.1.4 Эллиптические кривые над конечным полем

Рассмотрим эллиптические кривые над конечным полем GF(q), q=p^r, где p - простое число. В зависимости от характетистики поля уравнение кривой можно привести к одному из видов:

y^2+cy=x^3+ax+b\text{~или~}y^2+xy=x^3+ax^2+b\qquad \text{при}\ \ p=2,
y^2=x^3+ax^2+bx+c\qquad \text{при}\ p=3,

или к виду (4.2) при p>3.

Особый интерес для криптографии представляет объект, называемый эллиптический группой по модулю p, где p является простым числом.

Далее мы, говоря об эллиптической кривой, если не оговорено противное, будем иметь в виду именно группу точек кривой над полем GF(p) простого порядка p, заданной уравнением (4.2), причем 4a^3 + 27b^2 \neq 0 ~(\mod p). Эту группу мы будем обозначать E_p(a,b).

Пример 4.5 Пусть p = 23. Рассмотрим эллиптическую кривую y^2=x^3+x+1.

В этом случае a= b= 1 и мы имеем 4  \cdot {1}^{3} + 27 \cdot {1}^{2} ~(\mod 23) \neq 0, что удовлетворяет условиям эллиптической группы по модулю 23.

Нас интересуют только целые значения от (0, 0) до (p, p) в квадранте неотрицательных чисел, удовлетворяющих уравнению по модулю p. В нашем случае список точек можно создать по следующим правилам.

  1. Вычисляем значения y^2 ~(\mod 23) (табл. 4.1).
    Таблица 4.1. Значения f(y)=y^2 ~(\mod 23) для y от 0 до 22
    y 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
    f(y) 0 1 4 9 16 2 13 3 18 12 8 6 6 8 12 18 3 13 2 16 9 4 1
  2. Вычисляем значения {x}^{3}+x+1 ~(\mod 23) (табл. 4.2)
    Таблица 4.2. Значения f(x)=x^3+x+1 ~(\mod 23) для x от 0 до 22
    x 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
    f(x) 1 3 11 8 0 16 16 6 15 3 22 9 16 3 22 10 19 9 9 2 17 14 22

Теперь сравниваем числа в нижних строках табл. 4.1 и табл. 4.2. Число, попавшее в обе строки, определяет две точки кривой. Так, число 1 содержится и в нижней строке табл. 4.1, и в нижней строке табл. 4.2. Число 1 определяет точки (0,1) и (0,22); число 8 дает тоже две точки, находим по верхним строкам их координаты: это (3, 10) и (3, 13), и т. д. Таким образом, выбираем точки (отличные от \mathcal{O}), являющиеся элементами E_{23}(1,1). Получаем табл. 4.3. Пара чисел (x, y), для которой y^2\equiv x^3+ax+b ~(\mod p), включается в таблицу соответствий: это точка кривой.

Таблица 4.3. Точки кривой E_{23}(1,1)
(0, 1) (6, 4) (12, 19)
(0, 22) (6, 19) (13, 7)
(1, 7) (7, 11) (13, 16)
(1, 16) (7, 12) (17, 3)
(3, 10) (9, 7) (17,20)
(3, 13) (9, 16) (18,3)
(4, 0) (11, 3) (18,20)
(5, 4) (11, 20) (19,5)
(5, 19) (12, 4) (19,18)$

В криптографии применяются кривые, параметры которых являются большими (порядка 50 десятичных знаков) числами. В таких случаях перечисление всех точек кривой нереально за приемлемое время. Более того, даже определение количества точек кривой - весьма непростая задача.

Важной является

Теорема 4.1 (теорема Хассе) Пусть N - число точек на эллиптической кривой, определенной над \mathbb{F}_{q}. Тогда |N-(q+1)|\leq 2 \sqrt{q}.

4.1.5 Генерация точек эллиптической кривой

Для нахождения случайной точки эллиптической кривой {y}^{2}={x}^{3}+{ax}+b над полем простого порядка p можно использовать следующий алгоритм:

  1. Выбрать случайное x.
  2. Вычислить f={x}^{3}+{ax}+b.
  3. Вычислить символ Лежандра f по p.
  4. Если f - квадратичный невычет, перейти к пункту 1.
  5. Вычислить y - квадратный корень из f по модулю p (например, с помощью алгоритма Тонелли-Шенкса).

Пример 4.6 Найти случайную точку эллиптической кривой {E}_{29}\left(1,12\right).

Решение. Пусть выбрано случайное число x = 7. Находим: f={7}^{3}+7+12=14\mod29. Вычисляем символ Лежандра-Якоби:

\left(\frac{14}{29}\right)=\left(\frac{2}{29}\right) \cdot \left(\frac{7}{29}\right)={\left(-1\right)}^{\frac{{29}^{2}-1}{8}}{\left(-1\right)}^{\frac{\left(7-1\right)\left(29-1\right)}{4}}\left(\frac{29}{7}\right)=-\left(\frac{1}{7}\right)=-1.

Следовательно, f не является квадратичным вычетом по модулю p; выбираем другой x.

Пусть выбрано случайное число x = 4. Находим f={4}^{3}+4+12=22~(\mod 29). Вычисляем символ Лежандра-Якоби:

\left(\frac{22}{29}\right)=\left(\frac{2}{29}\right) \cdot \left(\frac{11}{29}\right)={\left(-1\right)}^{\frac{{29}^{2}-1}{8}}{\left(-1\right)}^{\frac{\left(11-1\right)\left(29-1\right)}{4}}\left(\frac{29}{11}\right)=-\left(\frac{7}{11}\right)=-{\left(-1\right)}^{\frac{\left(7-1\right)\left(11-1\right)}{4}}\left(\frac{11}{7}\right)=\left(\frac{4}{7}\right)=1.

Итак, f - квадратичный вычет. Найдём корень из f по модулю p.

Имеем: 29=4 \cdot 7+1. В алгоритме Тонелли-Шенкса получаем s = 2$, $q = 7. Мы уже знаем, что z = 14 является квадратичным невычетом; вычислим c={z}^{q}=12. Вычисляем {R}_{0}={f}^{\frac{q+1}{2}}={22}^{4}=23\mod29. При проверке видим, что {R}_{0}^{2}=7\mod29=-22~(\mod 29). Поэтому корнем из 22 будет число {R}_{0} \cdot c. В самом деле, {\left({R}_{0} \cdot c\right)}^{2}=-22 \cdot {c}^{2}=-22 \cdot {z}^{14}=-22 \cdot \left(\frac{z}{29}\right)~(\mod 29)=22.

Итак, найдена точка (4, 22) эллиптической кривой.

4.1.6 Сложение точек кривой над конечным полем

Проиллюстрируем примерами сложение точек кривой, построенной над конечным полем.

Пример 4.7 Выбрана кривая E_{751}(-1,1), т. е. y^2=x^3-x+1~(\mod 751). Найдем точку 3G=3\cdot(0, 1).

Для нахождения 3G используем правила сложения точек эллиптической кривой (4.2).

Вычисляем 2G:

\lambda = \frac{3(0^2)-1}{2\cdot1}=\frac{-1}{2}\equiv \frac{-1+751}{2}~(\mod 751) = 375,
x_3=375^2-0-0=140625\equiv188 ~(\mod 751),
y_3=375(0-188)-1=-70501\equiv93 ~(\mod 23).

Итак, мы нашли 2G= (188,93). Теперь находим 3G:

\lambda=\frac{188-0}{93-1}=\frac{188}{92}\equiv 368 ~(\mod 751),
x_3=368^2-0-188=135236\equiv56 ~(\mod 751),
y_3=368(0-56)-1=20607\equiv 419 ~(\mod 751).

Таким образом, мы нашли точку 3G=3\cdot(0,1)=(56,419).

4.1.7 Кратные точки

Данный алгоритм аналогичен алгоритму возведения в степень по модулю, см. параграф 1.2.2.

Рассмотрим алгоритм вычисления точки kP. Представим число k в двоичном виде:

k = {k}_{0} + {k}_{1} \cdot  2 + {k}_{2} \cdot {2}^{2} + {\dots} +  {k}_{r} \cdot {2}^{r},\ {k}_{i} \in 0,1.

Далее, положим {P}_{0} = P, {P}_{1} = 2 {P}_{0} = 2P, \dots$, ${P}_{r} =  {2P}_{r-1} =  {2}^{r}P.

Откуда

{kP}=\sum_{i=0}^r{k_i\cdot {P}_{i}}.

Таким образом, мы можем вычислить kP самое большее за {2\log }_{2}k шагов, каждый из которых представляет собой сложение точек на кривой.

Пример 4.8 Найти 100\cdot P.

Представляем 100 в виде 100 = {2}^{6}+{2}^{5}+{2}^{2}. Далее, {P}_{0}=P,{P}_{1}={2P}_{0}=2P, {P}_{2}={2P}_{1}={2}^{2} \cdot P, {P}_{3}=2 \cdot {P}_{2}={2}^{3} \cdot P, {P}_{4}=2 \cdot {P}_{3}={2}^{4} \cdot P, {P}_{5}=2 \cdot {P}_{4}={2}^{5} \cdot P, {P}_{6}=2{ \cdot P}_{5}={2}^{6} \cdot P.

Теперь 100P =  {P}_{6}+{P}_{5}+{P}_{2}.

Мы нашли точку 100P, произведя 6 удвоений и 2 сложения точек на кривой.

Пример 4.9 Найти точку nP, кривая: {E}_{751}\left(-1,1\right), n = 122, P = (49, 568).

Решение.


    \begin{align*}
    nP = 122  \cdot  (49, 568) = 2  \cdot  (49, 568) +  {2}^{3} \cdot  (49, 568) + {2}^{4} \cdot  (49, 568) +\\
    +  {2}^{5} \cdot  (49, 568) +  {2}^{6} \cdot  (49, 568) = (173, 132) + (327, 108) +\\
    + (519, 713) + (425, 663) + (377, 456) = (417, 614).
    \end{align*}

Пример 4.10 Найти порядок точки (3, 1) кривой {E}_{11}(2,1) порядка 16.

Решение. По теореме Лагранжа, порядок точки является делителем 16, то есть одним из чисел 2, 4, 8, 16. Пользуясь формулами (4.2), будем последовательно удваивать точку, пока не получим нейтральный элемент группы.

2 \cdot \left(3,1\right)=\left(9,0\right);\ 4 \cdot (3,1) = 2 \cdot \left(9,0\right)=\mathcal{O}.

Следовательно, порядок точки (3, 1) равен 4.

Пример 4.11 Найти порядок точки P=(30, 21) кривой {E}_{41}\left(3,1\right) порядка 48.

Решение. Порядок точки является делителем числа 48, то есть одним из чисел: 2, 4, 8, 16, 3, 6, 12, 24. Нужно попробовать умножить точку на каждое из них. Расположим делители в узлах ориентированного дерева, где каждый потомок получается из родителя выполнением одной операции сложения точек. Пример такого дерева приведён на рис. 4.2.

Дерево делителей числа 48

Рис. 4.2. Дерево делителей числа 48

Совершая обход этого дерева, будем получать кратные точки. Например, чтобы получить 24\cdot P, сначала удвоим точку четыре раза, получив 16\cdot P, затем от 16\cdot P придём по стрелке к 24\cdot P = 16\cdot P + 8\cdot P.

Заметим, что вариантов построения такого дерева может быть много. Число ребер в дереве с 10 вершинами - всегда 9, а операция удвоения точки всегда быстрее сложения произвольных двух точек. Поэтому оптимальным будет проводить вычисления по дереву на рисунке рис. 4.3, содержащему наибольшее число удвоений.

Более оптимальное дерево делителей числа 48

Рис. 4.3. Более оптимальное дерево делителей числа 48
1 \cdot \left(30,21\right)=\left(30,21\right)
2 \cdot \left(30,21\right)=(31,23)
3 \cdot \left(30,21\right)=\left(30,21\right)+\left(31,23\right) = \left(25,30\right)
6 \cdot \left(30,21\right)=2 \cdot 3 \cdot \left(30,21\right)=2 \cdot \left(25,30\right)=\left(24,30\right)
12 \cdot \left(30,21\right)=2 \cdot 6 \cdot \left(30,21\right)=2 \cdot \left(24,30\right)=\left(29,0\right)
24 \cdot \left(30,21\right)=2 \cdot 12 \cdot \left(30,21\right)=2 \cdot \left(29,0\right)=\left({\infty},{\infty}\right)

Теперь мы знаем, что порядок точки есть делитель числа 24, поэтому нам осталось пройти только те вершины дерева, в которых записаны делители числа 24. Например, вершину 16 мы рассматривать не будем.

4 \cdot \left(30,21\right)=2 \cdot \left(31,23\right)=\left(4,6\right)
8 \cdot \left(30,21\right)=2 \cdot \left(4,6\right)=\left(28,15\right).

Итак, 24 - наименьшее число, при умножении точки на которое мы получим нейтральный элемент. Поэтому порядок точки равен 24.

Еще раз отметим, что во многих случаях определение порядка кривой является самостоятельной и весьма не простой задачей.

Список литературы

  1. Болоток А. А., Гашков С.Б., Фролов А. Б., Часовских А. А. Элементарное введение в эллиптическую криптографию - М.: КомКнига, 2006. - 328 с.
  2. Коблиц Н. Курс теории чисел и криптографии - М.: ТВП, 2003.
< Лекция 3 || Лекция 4: 123 || Лекция 5 >
Евгений Шаров
Евгений Шаров

как начать заново проходить курс, если уже пройдено несколько лекций со сданными тестами?

Юлия Мышкина
Юлия Мышкина

Обучение с персональным тьютором осуществляется по Скайпу или посредством переписки?