Криптосистемы на основе эллиптических кривых
Задача, 27 Мая 2013, автор: пользователь скрыл имя
Краткое описание
1. Для заданного M определить значения a и b, которые позволяют построить эллиптическую группу EM(a, b).
2. Для найденных в задании 1 параметров сгенерировать все элементы эллиптической группы EM(a, b).
3. Реализовать алгоритм обмена ключами для эллиптической группы EM(a,b).
4. Разработать алгоритм цифровой подписи на основе эллиптической группы EM(a, b).
Прикрепленные файлы: 1 файл
Задание.doc
— 96.50 Кб (Скачать документ)Криптосистемы на основе эллиптических кривых
Задание:
- Для заданного M определить значения a и b, которые позволяют построить эллиптическую группу EM(a, b).
- Для найденных в задании 1 параметров сгенерировать все элементы эллиптической группы EM(a, b).
- Реализовать алгоритм обмена ключами для эллиптической группы EM(a,b).
- Разработать алгоритм цифровой подписи на основе эллиптической группы EM(a, b).
Параметр модуля М является входным данным и изменяется от 47 до 79
Эллиптическая кривая над множеством действительных чисел может быть определена как набор точек (x, y), удовлетворяющих уравнению эллиптической кривой вида y2 = x3 + ax + b (x, y, a и b – действительные числа), а также некоторый элемент O, называемый неопределенным (нулевым) элементом (рис. 15).
Рис. 15. Эллиптическая кривая y2 = x3 + x + 1
По определению, эллиптическая кривая обладает следующим свойством: если три ее точки лежат на одной прямой, то их сумма равна O. Это свойство позволяет описать правила сложения и умножения точек эллиптической кривой.
- Если O – нулевой элемент, то справедливо равенство O = –O, а для любой точки P эллиптической кривой имеем P + O = P.
- Прямая, проходящая через точки P и –P, является вертикальной прямой, которая не пересекает эллиптическую кривую ни в какой третьей точке. По определению, Р + (–Р) = О.
- Пусть P и Q – две различные точки эллиптической кривой, и Р ≠ –Q. Проведем через P и Q прямую. Она пересечет эллиптическую кривую только еще в одной точке, называемой –R. Точка –R отображается относительно оси Х в точку R. Закон сложения: P + Q = R.
- Чтобы сложить точку Р с ней самой, нужно провести касательную к кривой в точке Р. Если yP ≠ 0, то касательная пересечет эллиптическую кривую ровно в одной точке R. Закон удвоения точки Р: P + P = 2P = R.
- Умножение точки Р на целое положительное k определяется как сумма k точек Р: kP = P + P + P + … + P.
Эллиптическая кривая может быть использована для построения эллиптической группы, если ее параметры a и b удовлетворяют соотношению 4a3 + 27b2 ≠ 0 (mod M), где М – простое число, a < M и b < M.
Эллиптическая группа EM(a,b) представляет собой набор точек (x, y) с целыми положительными координатами, x < М и y < М, которые удовлетворяют соотношению y2 = x3 + ax + b (mod M).
Алгоритм формирования элементов эллиптической группы:
- Для всех значений x (0 < x < M) вычисляется значение x3 + ax + b (mod M).
- Для каждого значения из шага 1 определяется квадратный корень по модулю M и элемент включается в группу EM(a,b), если результат положительный.
Пример. Пусть a = 1, b = 0 и M = 23, тогда y2 = x3 + x. Так как
4∙13 + 27∙12 = 8 ≠ 0 (mod 23), то можно построить группу E23(1,1). Существуют 23 точки, которые
удовлетворяют уравнению группы, а именно
(0,0) (1,5) (1,18) (9,5) (9,18) (11,10) (11,13) (13,5) (13,18) (15,3)
(15,20) (16,8) (16,15) (17,10) (17,13) (18,10) (18,13) (19,1) (19,22)
(20,4) (20,19) (21,6) (21,17). Заметим, что для каждого
значения x существует по две точки
с симметрией относительно у = 11,5. В случае эллиптических
кривых над действительными числами для
каждой точки имеется отрицательная, отображаемая
относительно оси х. В случае использования
конечной эллиптической группы отрицательные
значения координаты y берутся по модулю, в результате
чего получаются положительные координаты: –P = (xP, (–yP mod M)). Например, если P = (1,5), то –P = (1, (–5 mod 23)) = (1,18).
Рассмотрим алгоритм
сложения точек эллиптической группы.
Пусть
Р = (x1, y1) и Q = (x2, y2). Тогда P + Q = (x3, y3), где x3 = λ2 – x1 – x2 (mod M) и
y3 = λ × (x1 – x3 – y1) (mod M), а
|
если P ≠ Q, |
если P = Q. |
Число λ – угловой коэффициент секущей, проведенной
через точки
Р = (x1,y1) и Q = (x2, y2). При Р = Q секущая превращается
в касательную, чем и объясняется наличие
двух формул для вычисления λ.
Пример. Пусть эллиптической группа задана уравнением y2 = x3 + 9x + 17 mod 23. Найдем в ней значение произведение 2P=P+P для точки P = (16, 5).
λ = (3xP2 + a)/(2yP) mod M = (3∙162+9)/(2∙5) mod 23;
тогда 10λ = 18 mod 23, отсюда:
λ = 18∙10j(23) – 1 mod 23 = 18∙1021 mod 23 =11;
xR = λ2 – 2xP mod M = (112 – 2∙16) mod 23=20;
yR = –yP+ λ(xP – xP) mod M= –5 + 11∙(16 – 20) mod 23= –49 mod 23= 20.
В результате получаем 2P = (20,20).
Умножение точек эллиптической группы на число определяется аналогично умножению для эллиптических кривых как многократное сложение точки с собой. Если вычислять P + P + P + … достаточно долго, то, т.к. число точек конечно, в конце концов, должен быть получен результат O. Всегда можно найти такие a и b (b > a), что aP = bP. Это означает, что cP = O , где c = b – a. Наименьшее c, для которого это справедливо, называется порядком точки.
Использование эллиптических
групп в криптографических
Алгоритм обмена ключами в эллиптической группе
Прежде всего, задается большое простое число M, а также параметры a и b для определения эллиптической группы EM(a,b). Затем выбирается генерирующая точка G такая, чтобы с, для которого cG = O, было большим простым числом с «хорошими алгебраическими свойствами». Размер числа с на практике довольно велик (2254 < с < 2256). Параметры EM(a,b) и G открыты для всех.
Процедура обмена ключами между пользователями A и B:
- Пользователь A выбирает целое число nA такое, что nA < M. nA – секретный ключ пользователя А. Затем пользователь A генерирует открытый ключ PA = nAG. Заметим, что PA – точка из группы EM(a,b).
- Пользователь B выполняет те же действия для получения своего секретного ключа nB и открытого ключа PB.
- Пользователь A генерирует общий секретный ключ K = nAPB, а пользователь B генерирует тот же секретный ключ K= nBPA.
- Легко показать, что nAPB = nA(nB G) = nB(nA G) = nBPA.
Для взлома третья сторона должна вычислить k (nA или nB) на основании G и kG, т.е. решить задачу дискретного логарифмирования в эллиптической группе.
Пример. Пусть M = 211, E211(0,–4) и G = (2,2). Легко проверить, что 241G = O, а 241 является простым числом.
- Секретный ключ nA = 121, тогда открытый ключ PA = nAG = 121∙(2,2) =
= (115,48). - Секретный ключ nB = 203, открытый ключ PB = nB G = 203∙(2,2) = (130,203).
- Общий секретный ключ K= nAPB =
nBPA = 121∙(130,203) = 203∙(115,48) =
=(161,69).
Алгоритм ЭЦП на основе эллиптических кривых (ECDSA)
Алгоритм ECDSA (Elliptic Curve DSA) является аналогом алгоритма цифровой подписи DSA (Digital Signature Algorithm), реализованным с помощью эллиптических групп. Рассмотрим эллиптическую группу EM(a,b) и генерирующую точка G с порядком q, причем q простое число.
Пользователи A генерируют свои ключи: секретный nA и открытый PA, где PA= nAG. Для постановки цифровой подписи под сообщением m пользователь A:
- На основе хэш-функции h() находит хеш-код h(m) от m. В качестве хеш-функции должна использоваться криптографически стойкая функция, например SHA-1.
- Генерирует случайное число k, 1 < k < q – 1.
- Вычисляет значение kG = (x1,y1) и r = x1 mod q. Если r = 0, возвращается на шаг 2.
- Вычисляет s = k–1(h(m) + nAr) (mod q). Если s = 0, то возвращается на шаг 2.
- Подпись сообщения m – это пара целых чисел (r,s).
Для проверки цифровой подписи пользователь B использует ту же эллиптическую группу EM(a,b), генерирующую точку G, открытый ключ PA и хэш-функцию h.
- На основе хэш-функции h определяем хэш-код h(m) от m.
- Проверяем, принадлежат ли числа r и s интервалу от 1 до q – 1.
- Вычисляем w = s–1 mod q.
- Вычисляем u1 = h(m)w mod q и u2 = rw mod q.
- Вычисляем u1G + u2PA = (x1*, y1*) и r*=x1* mod q.
- Равенство r* = r удостоверяет подпись пользователя A.
Особое достоинство криптосистем на эллиптических кривых состоит в том, что по сравнению с системами на основе алгоритма RSA они обеспечивают существенно более высокую стойкость при равной трудоемкости или, наоборот, существенно меньшую трудоемкость при равной стойкости. В результате тот уровень стойкости, который достигается в RSA при использовании 1024-битовых модулей, в системах на эллиптических кривых реализуется при размере модуля 160 бит, что обеспечивает более простую как программную, так и аппаратную реализацию.