Опубликован: 28.11.2014 | Уровень: для всех | Доступ: свободно | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 4:

Алгоритмы асимметричного шифрования

Криптография с использованием эллиптических кривых

Математические понятия

Преимущество подхода на основе эллиптических кривых в сравнении с задачей факторизации числа, используемой в RSA, или задачей целочисленного логарифмирования, применяемой в алгоритме Диффи-Хеллмана и в DSS, заключается в том, что в данном случае обеспечивается эквивалент-ная защита при меньшей длине ключа.

В общем случае уравнение эллиптической кривой Е имеет вид:

y^2+ axy + by = x^3+ cx^2+ dx + e

В качестве примера рассмотрим эллиптическую кривую Е, уравнение которой имеет вид:

y^2+ y = x^3– x^2

На этой кривой лежат только четыре точки, координаты которых являются целыми числами. Это точки

А (0, 0), В (1, -1), С (1, 0) и D (0, -1)

Пример эллиптической кривой с четырьмя точками

Рис. 4.6. Пример эллиптической кривой с четырьмя точками

Для определения операции сложения двух точек на эллиптической кривой сделаем следующие предположения:

  • На плоскости существует бесконечно удаленная точка О принадлежит Е, в которой сходятся все вертикальные прямые.
  • Будем считать, что касательная к кривой проходит через точку касания два раза.
  • Если три точки эллиптической кривой лежат на прямой линии, то их сумма есть О.
Сложение точек на эллиптической кривой

Рис. 4.7. Сложение точек на эллиптической кривой

Введем следующие правила сложения точек на эллиптической кривой:

  • Точка О выступает в роли нулевого элемента. Так, О = –О, и для любой точки Р на эллиптической кривой Р + О = Р.
  • Вертикальная линия пересекает кривую в двух точках с одной и той же координатой х S=(x,y) и T=(x,-y). Эта прямая пересекает кривую и в бесконечно удаленной точке. Поэтому Р1 + Р2+ О = О и Р1 = –Р2.
  • Чтобы сложить две точки P и Q с разными координатами х, следует провести через эти точки прямую и найти точку пересечения ее с эллиптической кривой. Если прямая не является касательной к кривой в точках P или Q, то существует только одна такая точка, обозначим ее S. Согласно нашему предположению

    P + Q + S = О

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

    P + Q = –S или

    P + Q = T

Если прямая является касательной к кривой в какой-либо из точек P или Q, то в этом случае следует положить S=P или S=Q соответственно.

Чтобы удвоить точку Q, следует провести касательную в точке Q и найти другую точку пересечения S с эллиптической кривой. Тогда Q + Q = 2?Q = -S.

Введенная таким образом операция сложения подчиняется всем обычным правилам сложения, в частности коммутативному и ассоциативному законам. Умножение точки Р эллиптической кривой на положительное число k определяется как сумма k точек Р.

В криптографии с использованием эллиптических кривых все значения вычисляются по модулю р, где р является простым числом. Элементами данной эллиптической кривой являются пары неотрицательных целых чисел, которые меньше р и удовлетворяют частному виду эллиптической кривой:

y^2= x^3+ ax + b (mod\; p)

Такую кривую будем обозначать Ep(a,b). При этом числа а и b должны быть меньше р и должны удовлетворять условию 4a^3+ 27b^2(mod\; p) \ne 0. Множество точек на эллиптической кривой вычисляется следующим образом.

Для каждого такого значения х, что 0 \leq х \leq р, вычисляется x^3+ ax + b(mod\; p).

Для каждого из полученных таким образом значений выясняется, имеет ли это значение целочисленный квадратный корень. Если нет, то в Ep (a,b) нет точек с этим значением х. Если целочисленный корень существует, имеется два значения y, равные этим значениям квадратного корня. Исключением является случай, когда y равен нулю. Эти значения (x,y) и будут точками Ep(a,b).

Алгоритм цифровой подписи на основе эллиптических кривых ECDSA

Создание ключей:

Выбирается эллиптическая кривая Ep(a,b). Число точек на ней должно делиться на большое целое n.

Выбирается точка Р ∈ Ep(a,b).

Выбирается случайное число d ∈ [1,n-1].

Вычисляется Q = d×P.

Закрытым ключом является d, открытым ключом (E, P, n, Q).

Создание подписи:

Выбирается случайное число k ∈ [1,n-1].

Вычисляется k×P = (x1, y1) и r = x1 (mod n). Проверяется, чтобы r не было равно нулю, так как в этом случае подпись не будет зависеть от закрытого ключа. Если r = 0, то выбирается другое случайное число k.

Вычисляется

k^{-1}\; mod\; n

Вычисляется

s = k^{-1}\cdot (Н(M) + d\cdot r) (mod\; n)

Проверяется, чтобы s не было равно нулю, так как в этом случае необходимого для проверки подписи числа s-1(mod n) не существует. Если s=0, то выбирается другое случайное число k.

Подписью для сообщения М является пара чисел (r,s).

Проверка подписи:

Проверяется, что целые числа r и s принадлежат диапазону чисел [0,n-1]. В противном случае результат проверки отрицательный, и подпись отвергается.

Вычисляется

w = s^{-1}(mod \; n) \;и\; H(M)

Вычисляется

u1 = H(M) \cdot w (mod \;n)\\
u2 = r \cdot w (mod \;n)

Вычисляется

u_1\times P + u_2\times Q = (x_0, y_0)\\
v = x_0 (mod\; n)

Подпись верна в том и только том случае, когда v = r.