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

ИНФОРМАЦИОННО-

ТЕЛЕКОММУНИКАЦИОННЫЕ

СИСТЕМЫ

«НАУКА. ИННОВАЦИИ. ТЕХНОЛОГИИ», №1, 2013

удк 621.391 М. Г. Бабенко [M. G. Babenko],

Н. Н. Вершкова [N. N. Vershkova], Н. Н. Кучеров [N. N. Kucherov

АНАЛИЗ ПОДХОДОВ К ПОСТРОЕНИЮ АРИФМЕТИЧЕСКИХ СОПРОЦЕССОРОВ ДЛЯ ЗАДАЧ ЭЛЛИПТИЧЕСКОй КРИПТОГРАФИИ1

Analysis approaches to construction of arithmetic coprocessors for problems of elliptic cryptography

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

The article analyzes the methods of finding residue on a large prime modulus and describes an algorithm developed by the authors of the operation to find the residue of a large simple module in the system of residual classes using the approximate method of performing non-modular operations.

Ключевые слова: приближенный метод, система остаточных классов, эллиптическая кривая.

Key words: аpproximate method, system of residual classes, elliptic curve

В современном информационном обществе важную роль играет информация. От степени её защищенности зависят жизнь людей и безопасность государства. Одним из способов защиты информации является применение криптографических протоколов, построенных на точках эллиптической кривой. Эллиптическая кривая позволяет получить самый высокий уровень защищенности информации при равном размере ключа по сравнению с другими криптосистемами, построенными над полями Галуа, такими как RSA, Месси-Омура, Эль-Гамаля и др.

i

Работа выполнена при поддержке гранта РФФИ 12-07-31087-мол_а.

«НАУКА ИННОВАЦИИ. ТЕХНОЛОГИИ»

.Северо-Кавказский федеральный университет

Однако уязвимым местом криптосистем, построенных на точках эллиптических кривых, является скорость выполнения арифметических операций «удвоения» и «сложения» точек. Для выполнения операций «сложения» и «удвоения» точек эллиптической кривой в аффинной системе координат требуются дорогостоящие операции «нахождения остатка по большому простому модулю» и вычисления «инверсии» в конечном поле. Использование проективных координат позволяет избежать вычисления операции «инверсия» в конечном поле, однако возникает проблема с операцией нахождения остатка от деления по большому простому модулю. С учетом всего вышесказанного актуальность приобретает следующая научная задача: разработка алгоритма выполнения операции нахождения остатка по большому простому модулю в системе остаточных классов с использованием приближенного метода.

Для решения поставленной задачи разобьем её на подзадачи:

1. Анализ и модификация существующих алгоритмов нахождения остатка по большому простому модулю;

2. Разработка нового алгоритма нахождения остатка по большому простому модулю.

Алгоритму сложения над полем , требующему выполнения сложения «в столбик», и, при необходимости, вычитания числар необходимо О(т) битовых операции, где 2т-1 < р < 2т.

Умножение над полем ¥р можно выполнить двумя основными способами:

- умножением целых чисел с последующим нахождением остатка от деления на р;

- умножением по Монтгомери, которое не требует деления.

Целочисленное умножение может быть реализовано при помощи алгоритма «в столбик», алгоритма Карацубы-Офмана и алгоритма Шенхаге-Штрассена.

Сложность классического алгоритма умножения в «столбик» составляет О(да2) битовых операций.

Рекурсивный алгоритм Карацубы-Офмана [1] вычисляет произведение двух 5-разрядных двоичных чисел и и V, представленных в виде

и = щ25/2 + и0, V = vl2s/2 + V,,, как

иу = и^25 +((их + и0 + V,) - и^ - и, V, )252 + и, V,,

то есть умножение 5-разрядных двоичных чисел сводится к трем умножениям 5/2-разрядных двоичных чисел, выполняемым по аналогичным формулам. Сложность этого алгоритма составляет О(5158) элементарных операций.

Обобщением алгоритма Карацубы-Офмана является алгоритм Шен-хаге-Штрассена [2, 3], в котором 5-разрядное двоичное число разбивается на b блоков по l разрядов в каждом. Применяя быстрое преобразование Фурье и теорему о свертке [2] для многочлена с коэффициентами, состоящими из b блоков, мы можем умножить два 5-разрядных двоичных числа за O (s log 5 log log 5) битовых операций. Алгоритм Шенхаге-Штрассена позволяет получить существенный выигрыш при 5 > 192 бит.

Алгоритм Монтгомери для умножения двух чисел длиной по n слов требует 2n (n + 1) операций умножения и (n — 0.5) n операций сложения слов [4, 5].

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

В работе [6] описан алгоритм нахождения остатка от деления по большому простому модулю в виде модуля Протаp = к• 2q + c, где \c\<q, предложенный в 1999 году Gallot.

На вход поступает число 0 < x < p2, к, c, и q. Алгоритм состоит из трех частей:

1. Функция вычисления n(y) = ((ку) << q) + cy

2. Прилаженные вычисления

У =

x > q

; t = n

к

3. Переключения полярности:

если с > 0, то, пока I > х, выполнять: г = п(у); у = у — 1; если с > 0, то, пока I < х, выполнять: у = у + 1; г = п(у);

У = У - 1 г = п(у). Вывод: х —

Модифицируем алгоритм из работы [6], использующий модуль вида 2т ± С, что позволит увеличить диапазон С < 8 до С < 216 и повысить скорость выполнения модульных операций. Применение простых чисел такого вида связано с тем, что операции по модулю 2т процессор выполняет быстро, а операция деления не требуется.

Рассмотрим принцип работы алгоритма сложения по модулю р = 2т ± С. Заданы два числа а и Ь, 0 < а, Ь < р - 1, по модулю р = 2т ± С. Нужно найти сумму а + Ь по модулю р = 2т ± С.

В силу того что за т битовых операций число а + Ь можно представить в виде

а + Ь = 2т А + В , где 0 < В < 2т, 0 < А < е, и

И для р = 2т - С, [2, для р = 2+" -С,

то, так как 2т = ± С (mod р),

а + Ь = В ± АС (modр).

Алгоритм сложения чисел по модулю р = 2т ± С требует О(т) битовых операций.

Исследуем алгоритм умножение двух чисел по модулю р = 2т ± С. Заданы два числа а и Ь, 0 < а, Ь < р — 1, по модулю р = 2т ± С. Найти произведение а X Ь, по модулю р = 2т ± С.

В силу того что за 2т битовых операций число а X Ь можно представить в виде

а X Ь = 2т А + В,

где 0 < А < 2т + С,0 < В < 2т, то, так как

2т = - C(mod 2т + С ) и 2т = - C(mod 2т - С ),

аЬ = В - АС

аЬ = В + АС

Случай р = 2т ± С. Поскольку С < 216, то нахождение вычета В — AС(mod 2т + С ) в (1) осуществляется по следующему принципу: если В < АС, то £ находится с использованием бинарного поиска за 16да битовых операций:

аЬ = В - АС + £ (2т — С),

где £ е {1,2,...,216}.

Случай р = 2т — С. Поскольку С < 216, нахождение вычета аЬ = В + АС (mod 2т — С) в (1) осуществляется по следующему принципу: если В + АС > 2т — С, то £ находится с использованием бинарного поиска за 16т битовых операций

аЬ = В + АС - £ (2т — С),

где £ е {1,2,...,216}.

Табл. 1. КОЛИЧЕСТВО ПРОСТЫХ ЧИСЕЛ ВИДАр = 2т ± С,

СООТВЕТСТВУЮЩИХ ОРИГИНАЛЬНОМУ И МОДИФИЦИРОВАННОМУ МЕТОДАМ НАХОЖДЕНИЯ ОСТАТКА ОТ ДЕЛЕНИЯ

№ Вид р Оригинальный метод Модифицированный метод

1 р = 2 192 + С 0 461

2 р = 2192 - С 0 499

3 р = 2224 + С 0 400

4 р = 2224 - С 0 430

5 р = 2256 + С 0 389

6 р = 2256 - С 0 365

Алгоритм умножения чисел по модулю р = 2т ± С требует О(т) битовых операций.

Рассмотрим вопрос о количестве простых чисел при т = 192 (224, 256) бит, удовлетворяющих условиям оригинального и модифицированного метода по модулю р = 2т ± С. Результаты заносятся в таблице 1.

Анализ имеющихся алгоритмов выполнения базовых арифметических операций для осуществления операций с точками эллиптической кривой привел авторов к тому, что подходами, связанными с позиционным представлением числа, повысить скорость выполнения операций нельзя. Однако это можно получить при использовании одного из интересных способов кодирования информации и выполнения действий с большими числами, основанного на простом факте из теории чисел.

Идея метода: возьмем несколько модулей рх, р2,..., рп , которые попарно взаимно просты, и будем оперировать не непосредственно с числами А, а с его «остатками» Amod р1, Amod р2 , ..., Amod рп .

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

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

Реализация алгоритма деления с помощью численного метода деления отрезка пополам на основе использования метода из работы [7], который базируется на применении замены абсолютной величины ее относительными значениями и простоте их вычисления, позволяет сохранить адекватную связь числовых значений модулярных величин с их представлениям в СОК и повысить скорость выполнения немодульных операций.

«НАУКА ИННОВАЦИИ. ТЕХНОЛОГИИ»

.Северо-Кавказский федеральный университет

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

Так какМ = П=1 т1 равно 2п > 2193, то для реализации больших диапазонов логично использовать в качестве т2 наибольшее простое число, соответствующее машинному слову, в качестве т3 — наибольшее простое число, меньшее т2 и т. д. до ть [8, 9].

Для реализации алгоритма деления с применением численного метода деления отрезка пополам необходимо две операции: «сравнения» и «деления на 2», поэтому целесообразно один из модулей СОК выбирать чётным (например т1), что даёт возможность осуществить разбиение выбранного диапазона [0, М] на равные поддиапазоны М и М , которые будут использоваться для представления положительных и отрицательных чисел:

М+ =

Г М 1 и М =

0;--1

2

—; М -1 2

Рассмотренные выше алгоритмы были реализованы на 32-разрядном процессоре над полями размерностью в 912 бита, где модулями системы остаточных классов являются 4, 4294967291, 4294967279, 4294967231, 4294967197, 4294967189, 4294967161.

Над случайно сгенерированными точками эллиптической кривой у2 = х3 + 3х + 18446744073709551617 было произведено 104 операций «сложения» и «удвоения». Среднее время выполнение операций в миллисекундах приведено в таблице 2.

Анализируя полученные результаты, можно сделать вывод о том, что модификация алгоритма нахождения остатка по большому простому модулю видар = 2т ± С позволяет существенно увеличить количество простых чисел такого вида (таблица 1). А алгоритм нахождения остатка от деления на произвольное простое число, основанный на методе деления отрезка пополам и приближенного метода функционирования системы остаточных классов, позволяет получить существенное преимущество в скорости выполнения операции. Вследствие всего вышесказанного можно сделать следующий вывод: применение системы остаточных классов дает значительное преимущество не только в тех приложениях, в которых основная доля вычислений приходится на умножение, возведение в степень больших чисел, в сочетании со сложением и вычитанием, но и в тех, где часто появляется необходимость в делении, сравнении и определении знака числа, в проверке не выходят ли результаты за пределы допустимых значений и другие.

ЛИТЕРАТУРА

1. Карацуба А., Офман Ю. Умножение многозначных чисел на автоматах // Доклады АН СССР Т. 145. № 2.1961. С. 293-294.

2. Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. М.: Мир, 1979. 535 с.

Табл. 2. СРАВНИТЕЛЬНАЯ ОЦЕНКА ВРЕМЕННЫХ ПОКАЗАТЕЛЕЙ

АЛГОРИТМОВ ВЫПОЛНЕНИЯ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ С ТОЧКАМИ ЭЛЛИПТИЧЕСКОЙ КРИВОЙ у2 = х3 + Эх + 18446744073709551617

№ Поле Время

1 p = 7 • 2189 + 47 101,27

2 p = 2192 + 133 93,88

3 p = 2192 + 237 89,71

4 p = 4707826301540010572876842067 / 406368933212136725314122285687 53,2

3. Шенхаге А., Штрассен В. Быстрое умножение больших чисел // Кибернетический сборник, нов. Вып. 10. М.: Мир, 1973. С. 87-98.

4. Menezes A., van Oorchot P., Vanstone S.A. Handbook on applied cryptography. CRC press, 1997. 780 p.

5. Montgomery P. L. Modular multiplication without trial division // Mathematics of Computation. V. 44. № 170. April 1985. P. 519-521.

6. Crandall R., Pomerance C. Prime numbers: a computational perspective. Springer-Verlag, 2001. 604 p.

7. Червяков Н. И., Авербух В. М., Бабенко М. Г., Ляхов П. А., Гладков А. В., Гапочкин А. В. Приближенный метод выполнения немодульных операций в системе остаточных классов // Фундаментальные исследования. 2012. № 6. Ч. I. С. 189-193.

8. Модулярные параллельные вычислительные структуры нейропро-цессорных систем / Н. И. Червяков, П. А. Сахнюк, А. В. Шапошников, С. А. Ряднов; под ред. Н. И. Червякова. М.: Физматлит, 2003. 288 с.

9. Нейрокомпьютеры в остаточных классах: учеб. пособие для вузов / Н. И. Червяков, П. А. Сахнюк, А. В. Шапошников, А. Н. Макоха; под ред. А. И. Галушкина. М.: Радиотехника, 2003. 272 с.

ОБ АВТОРАХ

Бабенко Михаил Григорьевич, ФГАОУ ВПО «Северо-Кавказский федеральный университет», кандидат физико-математических наук, старший преподаватель кафедры высшей алгебры и геометрии Института естественных наук.

Вершкова Наталья Николаевна, ФГАОУ ВПО «Северо-Кавказский федеральный университет», студентка первого года обучения магистратуры по направлению «Математика» Института естественных наук. Кучеров Николай Николаевич, ФГАОУ ВПО «Северо-Кавказский федеральный университет», студент первого года обучения магистратуры по направлению «Математика» Института естественных наук.

Babenko Michail Grigorievich, doctorate in Physical and Mathematical Sciences, Assistant Professor on Department of Algebra and Geometry, INS, North-Caucasus federal university.

Vershkova Natalia Nikolaevna, student of the first year master's in «Mathematics», INS, North-Caucasus federal university. Kucherov Nikolaj Nikolaevich, student of the first year master's in «Mathematics», INS, North-Caucasus federal university.