Вычисление корней по простому модулю как криптографический примитив

УДК 681.3

Вестник СПбГУ. Сер. 10, 2008, вып. 1

Н. А. Молдовян

ВЫЧИСЛЕНИЕ КОРНЕЙ ПО ПРОСТОМУ МОДУЛЮ КАК КРИПТОГРАФИЧЕСКИЙ ПРИМИТИВ

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

1) факторизация составных чисел вида п — qr, где q и г - два больших простых числа, удовлетворяющих специальным требованиям [1];

2) нахождение дискретного логарифма по простому модулю р [2];

3) нахождение дискретного логарифма на элиптической кривой (ЭК) специального вида [3].

Первые две задачи решаются с помощью субэкспоненциальных алгоритмов, поэтому минимальный уровень стойкости криптосистем на их основе обеспечивается выбором чисел пир достаточно большого размера (1024 бит и более). Для решения третьей задачи в настоящее время известны только алгоритмы с экспоненциальной сложностью, поэтому криптосхемы на основе ЭК имеют наиболее высокую производительность, несмотря на то, что операция умножения точки ЭК на число включает несколько операций возведения в степень по модулю р. Это связано с тем, что в случае ЭК вычисления выполняются по модулю достаточно малой длины \р\ (160-320 бит).

В настоящей работе в качестве криптографического примитива предлагается новая вычислительно сложная задача - нахождение корней большой степени к по простому модулю вида р = Nks + 1, где N - четное число, s ^ 2 и к - простое число достаточно большого размера. На ее основе разработаны схемы электронной цифровой подписи (ЭЦП) [4], стойкость которых оценивается с учетом предложенного алгоритма решения новой задачи.

2. Нахождение корней по модулю. Трудность нахождения корней по составному модулю п используется в некоторых криптосистемах с открытым ключом: RSA [2], ЭЦП Рабина [5] и др. [6], однако сложность решения этой задачи в указанных схемах имеет один порядок со сложностью факторизации модуля на простые делители q и г. Это связано со сведением исходной задачи к задаче извлечения корней по простым модулям q и г.

Для произвольно выбранных значений степени корня к и простого модуля р для любого вычета а степени к вычисление всех значений \Ja mod р является сравнительно простой задачей. Если к не делит р— 1, то существует обратный элемент mod р = к' и имеется единственный корень = ак mod р. Если к\р— 1, то существуют к корней. Они вычисляются следующим образом. Находится один из корней г = \/а mod р, который затем умножается по модулю р на каждый из к различных корней из единицы ei,e2,...,efc. Последние вычисляются как степени элемента е порядка к мультипликативной группы {1,2, ...,р — 1}: а — е1 mod р, где i = 1,2,..., к. Нахождение элемента 6 является достаточно простой задачей [7]. Более сложным является вычисление значения г для больших простых значений к, однако обычно и это не представляет достаточно высокой сложности.

© Н. А. Молдовян, 2008

Если простое число к является большим, то с большой вероятностью к не делит и легко найти некоторое значение Д такое, что к делит число где h - целое число (заметим, что к не делит Д). Тогда имеем

а^ = 1 mod р =>• = ал mod р => ahk = aA d mod р,

где d = НОД(Д,р- 1). Пусть Д" = Д'~х mod р- 1. Получаем

/ / , ч hA"\ к / ч ЛД"

i (а1^) J = а mod р => а1'* = (а1'*) .

С высокой вероятностью d является достаточно малым и корень степени d можно легко найти (например, используя метод, описанный в п. 3).

Если к2\р — 1, то этот способ не работает, т. е. в случае простого числа, имеющего структуру р = Nks + 1, где N - четное число, s ^ 2 и к - большое простое, нахождение корней степени к является вычислительно сложным.

3. Вычисление корней степени к по простому модулю р = Nk" +1. В предложенном ниже алгоритме решения этой задачи и оценке его вычислительной сложности используются некоторые результаты, вытекающие из следующих трех известных фактов. Существуют различных вычетов aj степени к (J = 1,2,..., Для не-

которого вычета а и некоторого невычета 6; имеем

= 1 mod р и b^ = е* mod р,

где ej = \/Т mod р -ф 1 и г = 1,2,..., к — 1.

Из этих фактов следует, что каждому корню е; соответствует ровно ^ji различных

значений bij, где j = 1,2,..., таких, что Ь^к = е* mod р. Действительно,

/ b{,j \ bij Ь^к = 6(у mod р I —— I = 1 mod р =>• —— mod р = Oj", \"ij'/ bij'

т. е. отношение ^ mod р есть вычет степени к mod р. Поскольку существует ровно

различных вычетов aj», то существует ровно столько же различных значений bij'. Поэтому, выбирая случайное значение t, имеем следующие вероятности:

Рг

(tmod р = = Pr mod р = e^j

для всех ¿ = 1,2,..., к — 1.

Пусть выбран случайный вычет а. Очевидно, что аmod р 6 {ei,e2,..., , 1}. Число степенных вычетов, для которых имеем аmod р = 1, равно значению Z\ = #{а : шр(а) ^ = N}, где # обозначает мощность множества {•}. Число вычетов,

для которых имеем аЕ^г mod р ф 1, равно Z2 = — Z\. Известно [7], что : шр(х) = d, d\p - 1} = ip(d), где х < р, и J2d\N,d>o <р№) = N, следовательно, Zt = N

и Zi = N(k — 1). Получаем, что вероятность Рг = 1 mod p^j = ^ = (к — I)-1

пренебрежимо мала, и с вероятностью jpy мы имеем Рг ^а^ = е; 1 modpj, где е; - один из корней из единицы.

Учитывая, что для каждого г существует г', такой что вг< — eil mod р, мы можем записать аЕ^Ге^ = 1 modp, поэтому

a^b^ =aNbE^1 =1 mod р,

где Ъ - некоторый невычет.

Если сравнение (1) выполняется, то можно легко вычислить г = i^a mod р. Действительно, (1) можно представить в виде

акЬ^к = ak~N mod р,

где с достаточно высокой вероятностью имеем НОД(& — N,p — 1) = 1 (в противном случае задача несколько усложнится, так как потребуется дополнительно вычислить корень сравнительно малой степени, однако в целом ее решение не будет сложным). Тогда можно вычислить значение N' = (к — iV)-1 mod р — 1 и затем

/V^Eomodp,

Сравнение (3) показывает, что величина X — аЛ bN mod р есть один из корней 2 = {¡/a mod р.

Вопрос состоит в нахождении невычета Ь. удовлетворяющего сравнению (1). Заметим, что значение b может быть представлено в виде b = b{bj modp, где и bj -некоторые невычеты. Действительно, любой корень из единицы можно представить в виде произведения двух других корней, поэтому имеем

р-1 2=1 2=1

к bj к =1 mod р =>

а^Ь^ mod р.

Следующий алгоритм позволяет с достаточно высокой вероятностью найти значения bi и bj.

1. Выбрать случайное значение 6;. Вычислить и сохранить в таблице А пары значений bi и А= aEirbi к mod р для i = 1,2,..., [\/к] + А, где Д -С [\/к].

2. Выбрать случайное значение bj. Вычислить и сохранить в таблице Б пары

_ р~ 1

значений bj и Bj = bj к mod р для j = 1,2,...,[%/&] + А, где A <С [Vk].

3. Упорядочить таблицу А по значениям А\.

4. Для значений j от 1 до [Vk] + А проверить, если в таблице А содержится значение Ai0 = Bj.

Для случайно выбранных bi и bj имеем Pr (Ai = Bj) = к"1, поэтому в таблицах А и £>, содержащих по \fk + А значений bi и bj, соответственно с вероятностью примерно 0,5 имеется пара равных значений А;0 и Bj0 = Ai0 (парадокс дней рождения [1, 2]). Таким образом, с вероятностью приблизительно 0,5 алгоритм находит невычеты bi0 и bj0,

Производительность различных схем ЭЦП, основанных на вычислительно трудных задачах

ЭЦП задача M kl # опер. произв.

RSA ЗФ 1024 1024 1 1

ЭЦП Рабина ЗФ 512 512 8 1

Схема из [8], z = 3 ЗФ 1024 160 6 1.3

ГОСТ Р 34.10-1994 ЗДЛ 1024 160 3 2

Работа [9] ЗДЛ 1024 160 3 2

ГОСТ Р 34.10-2001 ЗДЛ на ЭК 160 160 18 12

Предложенные схемы новая 322 160 4 13,5

Примечание. ЗФ - задача факторизации, ЗДЛ - задача дискретного логарифмирования.

удовлетворяющие сравнению (4). Далее вычисляем невычеты b — bi0 и bj0 modp, удовлетворяющие сравнению (1), затем - г = mod р. Выполняя алгоритм т раз, где т -небольшое число, с вероятностью, близкой к 1,. вычислим значение г. Сложность алгоритма составляет около 2ту/к операций экспоненциирования по модулю. Сложность процедуры вычисления 2 можно оценить значением W = O(Vk). При \к\ = 160 имеем W « 280 операций, что соответствует минимальному приемлемому уровню стойкости систем ЭЦП.

4. Аутентификация информации на основе новой сложной задачи.

4.1. Схема ЭЦП. Пусть р = Nk2 + 1, где |fc| ^ 160 и 2 < \N\ ^ 16. Открытый ключ у определим по формуле у = хк mod р, где при |fc| = 160 битовая длина |р| выбирается от 322 до 336. Подписью является пара |р|-битовых чисел S и R. Формирование подписи к сообщению М выполняется следующим образом:

1) выбрать случайное значение t < р — 1 и вычислить R = tk mod р;

2) используя некоторую специфицированную хэш-функцию вычислить Я = Fh(M) и f(R,M) = RH mod S, где / - сжимающая функция и <5 - большое простое число, например |<5| = 80 или = 160 бит;

3) вычислить второй элемент ЭЦП: S = x^R'MH mod p. Соотношением проверки подписи является следующее сравнение:

Sk =yf

Длина подписи |5| + \R\ к 320 + 320 = 640 бит.

Используя значение Е = f(R, М) в качестве элемента подписи вместо Д, можно существенно сократить размер подписи. Генерация подписи осуществляется аналогично исходной схеме ЭЦП, а проверка подписи - следующим образом:

1) используя подпись (E,S), вычислить R = Sky~E mod р;

2) определить величину Е' = f(R, М) = RH mod (5;

3) сравнить значения Е' и Е. Если Е' = Е, то подпись действительна.

В модифицированной схеме ЭЦП длина подписи + |5| = |<5| + |5|. В случае минимального уровня стойкости можно использовать значение ]<5| = 80 бит, получая размер подписи примерно 400 бит.

Сравнение производительности, оцененное как величина, обратно пропорциональная времени, затрачиваемого на генерацию и проверку подписи, различных схем ЭЦП, представлено в таблице. Для всех схем производительность определяется числом операций вида а~ mod т и пропорциональна значению |m|_2|2:|_1.

4-2. Коллективная подпись. На основе предложенной выше схемы ЭЦП может быть реализован протокол коллективной подписи, т. е. цифровой подписи, принадлежащей некоторой совокупности из m пользователей. Пусть s пользователей являются владельцами открытых ключей у\, •-., ys, т из которых желает подписать документ М. Все их подписи могут быть объединены в единую подпись, размер которой не зависит от т и равен длине подписи одного пользователя. Это может быть осуществлено в соответствии со следующим протоколом.

1. Каждый j-й пользователь генерирует случайное число taj < р — 1, где j = 1,2,...,т. Затем он вычисляет число Raj = modp, которое рассылает остальным пользователям из данной группы.

2. Все пользователи вычисляют первый элемент коллективной подписи R = RaiRQ2...Ram mod р, а затем значение f(R, М) = RH mod 5.

3. Каждый из рассматриваемой группы пользователей вычисляет свою долю подписи: Saj = m°di> и предоставляет ее остальным.

4. Все пользователи вычисляют число S = SaiSa2...Sam modp, которое является вторым элементом коллективной подписи.

Соотношением проверки подписи является сравнение (5), в которое в качестве значения у входит коллективный открытый ключ у = Уа\Уа2---Уат mod р.

5. Заключение. Для построения алгоритмов и протоколов аутентификации информации предложена новая вычислительно сложная задача, заключающаяся в нахождении корней простой степени к по простому модулю р = Nk2 -+- 1. Сложность данной задачи определяется битовой длиной числа к. Составлены схемы ЭЦП, обладающие более высокой производительностью по сравнению с известными. Разработан алгоритм решения указанной задачи и оценена его сложность, с учетом которой определены безопасные параметры схем ЭЦП. Особенностью новой схемы ЭЦП является возможность формирования коллективной подписи фиксированной длины, принадлежащей произвольной совокупности из т пользователей (т ^ 1). Для практических применений важна независимость длины подписи от т. Одной из целей данной статьи является привлечение внимания математиков и криптографов к рассмотренной сложной задаче и инициирование поисков новых более эффективных алгоритмов ее решения, которые будут способствовать более полной оценке стойкости предложенных схем ЭЦП.

Summary

Moldovyan N. A. Computing roots modulo prime as cryptographic primitive.

Particular cases of computing roots modulo prime is proposed as difficult problem for designing cryptographic algorithms and protocols. An algorithm computing the roots in these cases is proposed and requirements to parameters of this problem are formulated. A new digital signature (DS) scheme is proposed, which has performance higher than the known DS schemes. A new type of cryptographic primitives (collective DS protocol) is proposed.

Литература

1. Pieprzyk J., Hardjono Th., Seberry J. Fundamentals of computer security. Berlin: Springer-Verlag. 2003. 677 p.

2. Menezes A. J., Van Oorschot P. C., Vanstone S. A. Handbook of applied cryptography. Boca Raton, FL: CRC Press, 1997. 780 p.

3. Koblitz N. A course in number theory and cryptography. Berlin: Springer-Verlag, 2003. 236 p.

4. Молдовян А. А., Молдовян H. А. Способ формирования и проверки подлинности электронной цифровой подписи, заверяющей электронный документ: Патентная заявка РФ № 2007129254 от 30.07.2007.

5. Smart N. Cryptography: an introduction. London: McGraw-Hill Publication, 2003. 390 p.

6. Moldovyan A. A., Moldovyan D. N., Gortinskaya L. V. Cryptoschernes based on new signature formation mechanism // Computer Science Journal of Moldova. 2006. Vol. 14, N 3 (42). P. 397-411.

7. Buchmann J. Introduction to cryptography. Berlin: Springer-Verlag, 2003. 335 p.

8. Moldovyan N. A., Moldovyan A. A. Class of provably secure information authentication systems // 4th Intern. Workshop MMM-ANCS'07 Proc. September 13-15, 2007. St. Petersburg, Russia: Springer-Verlag CCIS. 2007. Vol. 1. P. 147-152.

9. Schnorr С. P. Efficient signature generation by smart cards //J. Cryptology. 1991. Vol. 4. P. 161-174.

Статья рекомендована к печати проф. Е. И. Еремеем.

Статья принята к печати 11 ноября 2007 г.