Общие уравнения оптимальных кривых над конечным полем
12. Waterhouse W. C. Abelian varieties over finite fields // Ann. Sci. Ecole Norm. 1969. Sup. 2. P. 521-560.
13. Yu C.-F. The isomirphism classes of abelian varieties of CM-type // Journ. Pure Appl. Algebra. 2004. N. 187. P. 305-319.
Об авторах
Е. С. Алексеенко — асп., РГУ им. И. Канта, [email protected].
С. И. Алешников — канд. техн. наук, доц., РГУ им. И. Канта, [email protected].
А. И. Зайцев — д-р, Институт Клода Шеннона и Школа математических наук Дублинского университета, Ирландия.
УДК 681.3.06
А.А. Михайлов
КРИПТОСИСТЕМЫ НА ЭЛЛИПТИЧЕСКИХ КРИВЫХ НАД ПОЛЕМ GF(2N) И ОСОБЕННОСТИ ИХ РЕАЛИЗАЦИИ НА 32-БИТНЫХ ЭВМ
Проводится обзор математических и технических задач, возникающих при реализации на 32-битных ЭВМ криптосистемы на эллиптических кривых над полем характеристики 2, а также описание путей решения таких задач.
Mathematical and technical problems of developing elliptic curve cryptosystem over finite field of characteristic 2 and it's efficient implementation on 32-bit computers are reviewed.
Ключевые слова: криптосистема, эллиптическая кривая, поле, 32-битная ЭВМ.
В настоящее время продолжается поиск криптосистем, способных заменить или создать конкуренцию RSA. И одним из самых актуальных направлений являются криптосистемы на эллиптических кривых. В частности, особое внимание уделяется эллиптическим кривым над полем характеристики 2 ввиду эффективности реализации на ЭВМ.
Цель данной работы — обзор математических и технических задач, возникающих при реализации криптосистемы на эллиптических кривых над полем характеристики 2, а также описание путей решения таких задач. На данный момент наиболее распространенными являются 32-битные ЭВМ, потому мы будем рассматривать реализационные задачи с учетом данной архитектуры.
Принцип функционирования криптосистем на эллиптических кривых подробно изложен в [1]. В данной статье мы рассмотрим задачи, с которыми приходится сталкиваться при реализации такой криптосистемы на 32-битных ЭВМ.
Вестник РГУ им. И. Канта. 2008. Вып. 10. Физико-математические науки. С. 79 — 83.
Арифметика длинных чисел
80
Число многократной точности имеет смысл представить как вектор четырехбайтных переменных — выравнивание по четырем байтам ускорит приложение на 32-битных машинах. Основание системы счисления берется максимально большим, чтобы уменьшить количество цифр в числе, что влияет на скорость операций с числами. Для отладки достаточно взять основание системы счисления 10 000 — для наглядности. При оптимизации основание системы счисления приближают к 232, где величина основания выбирается с учетом способа обработки переполнения 32-битной переменной при умножении и сложении.
Существуют разные способы реализации арифметических операций, но достаточно будет алгоритмов, схожих с тривиальными арифметическими приемами. Подробная эффективная реализация рассмотрена в [5], глава 4.
Поле многочленов характеристики 2 по модулю неприводимого многочлена
Необходимую информацию о полях многочленов можно найти в [4], глава 2. В нашей реализации на ЭВМ многочлен характеристики 2 из соображений производительности является вектором 32-битных переменных. Один бит — один коэффициент многочлена. Сложение в поле — операция побитового «или» для всех соответствующих 32-битных переменных двух векторов. Умножение и деление на x — операция сдвига на один бит влево и вправо соответственно. Умножение двух произвольных многочленов — двойной цикл со сдвигами и побитовым «или» либо умножение по методу Карацубы (см. [2], разд. 4.3).
Для операции взятия многочлена по модулю мы используем пред-вычисленную таблицу.
INPUT:
1. m = (mn-1,..., mi, m0)2 — модуль.
2. table = [mx x0,mx x1,..., mx xn] — предвычисленная таблица.
3. к = (kt_i,... ,ki, k0 )2 , многочлен где i ^ n.
OUTPUT: многочлен, взятый по модулю неприводимого многочлена.
ALGORITHM:
1. for i ^ t downto n
2. if ki = 1
k ^ k xor t[i' - n]
3. return( k)
Взятие обратного элемента в поле реализуется при помощи алгоритма Евклида (см. [2], разд. 4.5).
Операции в группе точек эллиптической кривой
Различные виды эллиптических кривых рассмотрены в [1]. Однако из всего многообразия кривых мы остановимся на кривой вида:
Криптосистемы на эллиптических кривых над полем СР(2") /—\
ш
E2 / K : у + у = x + а4х + аб, (1)
где я4, я6 є ЄР(2и) и и — нечетное.
Характеристика 2 удобна для вычислений на 32-битных ЭВМ, нечетное и необходимо для задания кривой в виде у2 + у, что упрощает вычисление квадратного корня элемента поля GF(2и).
Сложение точек и вычисление обратной точки осуществляется по классическим формулам, описанным в [1], и не представляют сложности в реализации.
В дальнейшем при преобразовании набора байтов в точку придется вычислять решение квадратного уравнения вида
х2 + х = с, с є GF(2n). (2)
Обоснование метода решения таких уравнений можно посмотреть в [3], глава 1 и 2. Алгоритм решения уравнения:
INPUT: с є GF(2n), n = 2k +1.
OUTPUT: реш ALGORITHM:
OUTPUT: решение уравнения x2 + x = с .
2
1. Вычислить след х + х = с .
2. Если і Ф 0 , вернуть «решений нет».
к
3. Вернуть х = с + Е с
і=1
с 22
Данный алгоритм требует больших вычислительных затрат и потому мы модифицируем его, используя следующие свойства:
т-1 т-1
Тг(с)= Тг( Е сіх1) = ЕсіТт(х1);
і=0 і=0
т-1 т-1
н(с)= н( Е сіх) = Е сін(х).
і=0 і=0
Остается заранее вычислить Тг(хі) и Н(хі), и решение х2 + х = с сведется к двум простым циклам без подсчета степеней.
Необходимой частью криптосистемы является преобразование набора байтов в точку на эллиптической кривой. Для этого используем вероятностный алгоритм:
1. Задаем число попыток вероятностного алгоритма к .
2. Несколько байт представляют многочлен с порядковым номером 0^к<р такой, что кхікр, где р — количество элементов в поле. Заметим, что полином из GF(2n), очевидно, определяет свой порядковый номер битами своих коэффициентов.
3. Перебираем полиномы с номерами хі = к х к,..., к х к + к -1 в качестве абсциссы точки на эллиптической кривой.
4. Подставляем хі в (1) и получаем уравнение у2 + у = с . Это и есть квадратное уравнение вида (2).
81
82
5. Пробуем решить уравнение (2) и получить ординату точки на эллиптической кривой.
6. Если (2) имеет решение, то мы сгенерировали точку. Иначе снова переходим к п. 3.
Вероятность решения уравнения (2) для эллиптической кривой около 0,5. Мы выберем к = 25 = 32 (к — степень двойки для легкого преобразования многочленов к виду к х к простым сдвигом влево). Таким образом, вероятность невозможности генерации точки 0,532 » 2 х 10-9, что достаточно мало для нашей задачи. Очевидно, что математическое ожидание успешного нахождения точки тоже достаточно мало.
Для демаркировки точки в набор байтов достаточно сдвинуть биты координаты х на log2 к .
Выбор параметров криптосистемы
Для подготовки криптосистемы необходимо выбрать эллиптическую кривую, базовую точку, секретный и открытый ключ.
Можно генерировать эллиптическую кривую и базовую точку самостоятельно (см. [3], разд. 1.2). Однако для практической реализации достаточно будет суперсингулярной кривой, рекомендованной стандартом NIST (стандартная кривая Коблица K-163):
3 6 7 163
• Неприводимый многочлен: f (x) = 1 + x + x + x + x .
• Кривая: £2 / K: y2 + y = x3 + x2 +1.
• Базовая точка P (шестнадцатеричная форма коэффициентов полинома):
o X: 0x2fe13c0537bbc11acaa07d793de4e6d5e5c94eee8 o Y: 0x289070fb05d38ff58321f2e800536d538ccdaa3d9
После настройки криптосистемы пользователь генерирует случайный секретный ключ s (большое число, близкое по количеству цифр к количеству точек эллиптической кривой) и вычисляет на его основе открытый ключ sP .
Один из методов получения случайного числа — псевдослучайные последовательности следующего вида (см. [5]):
xt+1 = (А х xt + B)mod 232 .
Для практических целей достаточно положить А = 134 775 813, B = 1.
Случайность достигается начальной инициализацией x0 случайным значением. Например, WinAPI функцией QueryPerformanceCounter(), которая возвращает текущие показания производительности системы (случайно изменяются во времени). Заметим, что стандартный Randomize() инициализирует псевдослучайную последовательность из системного таймера, что дает возможность атаковать криптосистему перебором предполагаемого временного интервала шифрования. Псевдослучайную функцию стоит периодически инициализировать заново для уменьшения предсказуемости псевдослучайной последовательности.
Криптосистемы на эллиптических кривых над полем GF(2n)
Протокол шифрования
Для практических нужд пересылки сообщения по открытым каналам связи вполне будет достаточно схемы Эль-Гамаля.
1. Отправитель генерирует число k, близкое по количеству цифр количеству точек эллиптической кривой.
2. Маркирует байты в точку L (или несколько точек).
3. Вычисляет kP и k(sP) (sP — открытый ключ получателя).
4. L шифруется прибавлением к нему ksP. Получаем точку N = L + k(sP) — зашифрованный текст.
5. По каналам связи передается kP и N .
6. Получатель домножает kP на свой секретный ключ s и вычисляет N - s(kP) = L + k(sB) - s(kB) = L . Демаркирует получившуюся точку и получает исходное сообщение.
Таким образом, в процессе работы криптосистемы часто нужно домножать точку на большое число — это одна из основных операций криптосистемы. И потому она реализована особо, по аналогии с быстрым возведением в степень:
INPUT:
k = (kf-i,..., ki,k0)2 , — число и его битовое представление,
P — точка эллиптической кривой.
OUTPUT: kP.
ALGORITHM:
1. Q ^ 1
2. For i from 0 to f -1 do
2.1 If ki = 1 then Q = Q + P
2.2 P ^ P x P
3. Return( Q)
Список литературы
1. Hankerson D., Menezes A., Vansfone S. Guide to Elliptic Curve Cryptography. Springer-Verlag, New York, 2004.
2. Болотов А. А., Гашков С. Б., Фролов А. Б., Часовских А. А. Элементарное введение в эллиптическую криптографию: Алгебраические и алгоритмические основы. М., 2006.
3. Болотов А. А., Гашков С. Б., Фролов А. Б. Элементарное введение в эллиптическую криптографию: Протоколы криптографии на эллиптических кривых. М., 2006.
4. Лидл Р., Нидеррайтер Г. Конечные поля: В 2 т. М., 1988.
5. Кнут Д. Э. Искусство программирования. Т. 2: Получисленные алгоритмы М., 2001.
6. Solinas J. A. An Improved Algorithm for Arithmetic on a Family of Elliptic Curves. National Security Agency, Ft. Meade, MD 20755 USA.
7. Yan S. Y., James G. Fast Group Operations on Ellptic Curves in Maple // Computers and Mathematics with Applications. 1999. 37. 129 — 138.
8. Guajardo J., Paar C. Efficient Algorithms for Elliptic Curve Cryptosystems. ECE Department Worcester Polytechnic Institute Worcester, MA 01609, USA
Об авторе
А. А. Михайлов — асп., РГУ им. И. Канта. anton. [email protected].