Анализ вычислительной сложности алгоритмов тестирования на простоту чисел многократной точности

УДК 681.3.06

АНАЛИЗ ВЫЧИСЛИТЕЛЬНОЙ СЛОЖНОСТИ АЛГОРИТМОВ ТЕСТИРОВАНИЯ НА ПРОСТОТУ ЧИСЕЛ МНОГОКРАТНОЙ ТОЧНОСТИ

КАЧКО Е.Г., СВИНАРЕВ А.В., МЕЛЬНИКОВА О.А.

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

1. Введение

В настоящее время в системах защиты информации широко используются несимметричные криптографические преобразования. Среди них алгоритм цифровой подписи и шифрования RSA, класс подписей Эль-Гамаля (алгоритмы DSS и ГОСТ Р 34.1094), алгоритм Диффи-Хеллмана и другие. В несимметричной криптографии в качестве ключевых параметров повсеместно применяются простые числа. В алгоритме RSA модуль преобразования N представляет собой произведение двух простых чисел p и q. В набор общесетевых параметров алгоритмов класса Эль-Гамаля входят простые числа p и q, причем q делит р-1. Одним из общесетевых параметров алгоритма Диффи-Хеллмана является простое число р.

Отметим, что для обеспечения требуемого уровня стойкости криптографических систем необходимо использовать простые числа большой разрядности (256, 512, 1024 и более бит) и, следовательно, трудоемкие операции арифметики многократной точности. Кроме того, используемые простые числа во многих криптографических схемах должны удовлетворять еще ряду довольно жестких требований и ограничений для затруднения ведения криптоанализа, поскольку стойкость несимметричных систем основана, как правило, на сложности факторизации многоразрядного числа либо на сложности решения задачи дискретного логарифмирования по модулю большого простого числа. Подобные ограничения создают дополнительные трудности при формировании многоразрядных простых чисел, поскольку ведут к значительным вычислительным затратам на повторную перегенерацию при неудовлетворительном качестве сформированных чисел. В криптографических системах вычислительная сложность алгоритмов является, как правило, критическим параметром, поэтому особую актуальность приобретает проблема быстрого формирования простых чисел с заданными свойствами, т.е. создания быстрого комплексного теста проверки простоты задаваемых чисел, обеспечивающего требуемый уровень достоверности.

2. Обзор известных методов тестирования на простоту чисел

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

К математически строгим (аналитическим) методам относятся: метод пробных делений, решето Эратосфена, методы прямой факторизации с использованием различных алгоритмов, чисел специального вида (Ферма, Мерсенна и других), а также методы, использующие известные разложения чисел N ± 1.

Основными из вероятностных методов являются: тест, основанный на использовании теоремы Ферма, тесты Лемана, Соловея-Штрассена, Рабина-Миллера.

К основным методам, базирующимся на использовании предположения о справедливости определенной гипотезы (в частности, расширенной гипотезы Римана), относятся следующие тесты: Полларда, Миллера (обычный и полиномиальный), Адлемана-Румели, Ленстры-Коэна и другие.

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

3. Анализ вычислительной сложности вероятностных тестов

При работе с криптографическими системами основным критерием предпочтительности выбора того или иного метода проверки простоты чисел является минимизация вычислительной сложности, а следовательно, и времени построения простых чисел. Подчеркнем, что здесь подразумевается построение больших простых чисел (длиной не менее 256 бит). Далее мы проведем сравнительный анализ трех вероятностных методов с точки зрения их вычислительной сложности, при этом не будем накладывать никаких дополнительных требований на простое число, например, на вид разложения чисел р ± 1.

1. Тест Соловея-ТТТтрассена. Основан на теореме [3 ]: для любого нечетного составного числа N коли -чество чисел A, для которых выполняются условия:

N-1

1) 1 < A < N; 2) НОД(А, N) = 1; 3) A 2

A )

— I mod N, N

где

символ Якоби, не превышает N/2.

Из теоремы следует, что если для случайно выбранного A, 1 < A < N выполняются условия 2) и 3), то N является простым с вероятностью не менее 1/

2. Если условия выполняются для k различных значений A, число N может быть составным с вероятностью не более 2-k.

Вычислительная сложность теста определяется так:

I(k) * k(Ip0W (l) + Ij(l)),

44

РИ, 1998, № 1

где l — количество разрядов в тестируемом числе N; Ij(l) — вычислительная сложность определения символа Якоби для чисел разрядности l; Ipow(l) — вычислительная сложность модульного возведения в степень чисел разрядности l.

2. Тест Лемана. Согласно малой теореме Ферма [3]: если N — простое, НОД(^А) = 1, то

AN-1 = 1

Выражение (1) для нечетных N можно представить в виде

( N—1 ^

A 2 +1

( n-1 ^

A 2 -1

= 0

Тест Лемана проверяет условия (2): 1) выбрать случайное число А < N;

N-1

2) вычислить Z :=

A 2 mod N

3) если Z = ±1(mod N), то N — составное, в противном случае — простое с вероятностью 50 %.

Если проверка выполнена для k различных значений А, то N может быть составным с вероятностью не более 2-k.

Вычислительная сложность теста

I

3. Тест Рабина-Миллера. Назовем число n = 2lno+1 сильным псевдопростым по основанию а, если оно удовлетворяет одному из условий:

1) ano = 1 (mod n);

2) существует j, 0<j<t, такое, что

a2no = -i(modn).

Справедлива теорема [3]: если n > 9 и n является составным, то количество чисел a, 1<a<n, взаимно простых с n, таких, что n является сильным псевдопростым по основанию а, не превышает n/4.

Приведем алгоритм, основанный на данной теореме [4,5]:

1) выбрать h и M такие, что N = 2hM + 1, где h — наибольшая степень 2, делящая N — 1;

2) выбрать случайное число А < N;

3) установить j := 0; Z := AM mod N;

4) если Z є ±1 (mod N), то N может быть простым;

5) если j > 0 и Z = 1, то N — составное;

6) установить j := j + 1;

7) если j = h и Z ф N — 1, то N — составное;

8) если Z = N — 1, то N может быть простым;

9) установить Z = Z2 mod N, перейти на шаг 5.

Повторение теста k раз позволяет сделать вывод

о том, что число N может быть составным с вероятностью не более 4-k.

Вычислительная сложность оценивается как

I

где Imsqr(l) — вычислительная сложность модульного возведения в квадрат чисел разрядности l.

Пусть вероятность того, что величина h примет

значение h0 > 0, равна 2-ho . Тогда математическое ожидание h определяется из выражения

_ ТО

h = X ho2-ho = 2

ho = 1

Подставляя h в (3), получаем окончательную оценку вычислительной сложности:

I(k) * k(Ipow (l) + 2Imsqr(l)).

Для сравнительной оценки вероятностных методов будем использовать математическое ожидание их вычислительной сложности:

ТО ТО

1 = Z PiiIc = !c Z iPi .

i=1 i=1

Здесь pi — вероятность отсеивания составного числа на i-м цикле вероятностного теста; ^ — вычислительная сложность одного цикла теста.

Вероятность pi определяется из выражения

Pi = PC-1(1 - Pc ) ,

где pc — вероятность прохождения составного числа через 1 цикл теста. Тогда уравнение (4) может быть представлено в виде

I = Ic

i=1

Заметим, что для приведенных выше тестов значения вероятности pc имеют вид 1/m, где m может принимать значение 2 или 4. В этом случае (5) можно упростить:

I = Ic

m -1 m

ТО i

Z -i-ї

i=1 mi 1

I cm

m -1

По формуле (6) получим значения I для рассмотренных вероятностных тестов (табл. 1).

Таблица 1

Тест Вероятность pc Мат. ожидание вычислительной сложности

Соловея- Штрассена 1/2 I1 = 2

Лемана 1/2 I2 = 2Ipow

Рабина- Миллера 1/4 I3 =

Сравнение полученных результатов показывает, что I3 < I2 < Ii, т.е. тест Рабина-Миллера является наиболее эффективным по вычислительной сложности.

4. Анализ вычислительной сложности комбинированного теста

Для дальнейшего снижения вычислительной сложности тестирования в [5] предложен комбинированный метод, включающий в себя детерминированный и вероятностный тест. Сущность его заключается в том, что перед проведением вероятностного теста выполняется деление числа N на малые простые числа и, как показано ниже, на этом этапе отсеивается значительная доля составных чисел. Выигрыш по вычислительной сложности достигается за счет того, что операция деления выполняется значительно быстрее, чем операция возведения в степень [6].

Комбинированный тест содержит пункты:

1) предварительно строится таблица делителей T, в которую заносятся np первых простых чисел: 3, 5, 7;

РИ, 1998, № 1

45

2) для i, принимающего значения от 1 до np, выполняется шаг 3;

3) если N делится на T[i], то закончить тест с результатом «N является составным»;

4) число N проверяется по какому-либо вероятностному тесту.

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

Математическое ожидание вычислительной сложности комбинированного теста можно определить по формуле

n p

1 = !di

i=1

где Id1(l) — вычислительная сложность операции деления l-разрядного числа многократной точности на число однократной точности; pd(i) — вероятность того, что N не делится на первые i простых чисел из

таблицы; I pt — математическое ожидание вычислительной сложности вероятностного теста, применяемого на шаге 4.

Аналитически определить вероятности pd(i) сложно, поэтому были проведены их экспериментальные оценки. Результат представлен на рисунке.

Pd

Зависимость вероятности pd от размера таблицы делителей np

Если на шаге 4 выполняется тест Рабина- Миллера, то (7) примет вид

I = Id1(l) £ i(l - Pd (i)) + 4 (l - PdZ ( (l) + 2ImSqr (0) .(8) i=1 J

Для определения значений np, обеспечивающих

минимум I, в выражение (8) подставим оценки вычислительной сложности операций арифметики многократной точности для длины машинного слова 32 бита, полученные авторами в [6, 7]:

Idi(l) * 61;

Imsqr(l) * 1412 + 271;

Ipow(1) * 556l3 + 1240l2 + 245l.

Результаты расчетов для часто используемых длин простых чисел приведены в табл. 2.

5. Особенности тестирования на простоту общесетевых параметров алгоритма ГОСТ Р 34.10-94

Алгоритм цифровой подписи ГОСТ Р 34.10-94 предполагает использование в качестве общесетевых

46

параметров двух простых чисел: простого числа q длиной 256 бит и простого числа p длиной 512 или 1024 бита, причем

p = qN + 1, где N — четное число.

Для построения простого числа в соответствии с ГОСТ Р34.10-94 выбирается минимальное простое число длиной 32 бита и выполняется постепенное удвоение длины числа до тех пор, пока не будут получены числа требуемых длин.

Рассмотрим алгоритм формирования простого числа qi+i длиной 2l по заданному простому числу

qi длиной l.

1. Вычисляется минимальное четное число k, такое что kqi имеет требуемую длину 2l.

2. Формируется случайная сдвижка g для обеспечения возможности формирования простого во всем диапазоне числа длиной 2l:

3. Определяется случайное число r длиной 2l и

r

число g= 2^7.

4. Вычисляется значение qi+1 = Nqi + 1, где N = k + g. Если длина qi+1 превосходит требуемую, перейти на шаг 2.

5. Пока qi+1 не простое, выполнять шаг 5.

6. Вычислить Цд+1 = qi+1 + 2qp N = N + 2.

Для проверки числа q^+1 на простоту используется

аналитический метод, основанный на проверке выполнения условий малой теоремы Ферма:

2q i+1 -1 = l

и следствия из теоремы Люка [3]:

2N Ф l

Число считается простым, если выполняются оба эти условия.

Вычислительная сложность проверки

3

Ig = 2 Ipow

Для получения 256-битного q и 512-битного p требуется выполнить 4 шага увеличения длины (32 ^ 64 ^ 128 ^ 256 ^ 512), а для 1024-битного p требуется 5 шагов. На каждом шаге выполняется поиск простого числа с использованием одной операции возведения в степень при неблагополучном исходе и двух операций возведения в степень — при благополучном. Количество итераций увеличивается пропорционально длине простого числа и на длине 512 бит оно составляет порядка 100. Для длины 1024 бита эти значения еще больше, поэтому вычислительная сложность генерации простых p и q достаточно велика.

Для уменьшения вычислительной сложности предлагается использовать комбинированный тест совместно с проверками (9) и (10) на каждой итерации, при этом сохраняется справедливость со-

Таблица 2

Разрядность тестируемого числа, бит Количество делителей, nP

128 26

192 40

256 42

512 92

1024 189

1280 190

1536 191

1792 191

2048 192

РИ, 1998, № 1

отношения (7), имеющего в данном случае следующий вид:

1 g = Id1 (OZ i(l - pd (i)) + 2 (l - Pd (np )) Ipow (l) .

Комбинированный тест дает выигрыш по вычислительной сложности по сравнению с (11):

AIg = ^PdSIpow(l)- Id1 (l)Zi(1 - Pd()).

2 i=1

6. Результаты экспериментальных исследований вычислительной сложности

Комбинированный тест на простоту был реализован программно на 32-разрядной ПЭВМ. В ходе экспериментов получены значения времени выполнения теста с вероятностью необнаружения составного числа 2-100 для различных вероятностных тестов и комбинированного метода (табл. 3).

Таблица 3

Разрядность тестируемого числа, бит Время, с

Тест Лемана Тест Соловея- Штрассена Тест Рабина- Миллера Комбини- рованный метод

256 1,37 1,58 0,42 0,34

512 13,0 19,0 5,6 2,6

1024 116 158 81,0 49

Проведены эксперименты по определению эффективности использования комбинированного теста для обеспечения минимального времени генерации общесетевых параметров алгоритма ГОСТ Р 34.10 для длины 512 и 1024 бита. На длине тестируемого числа 512 бит при использовании таблицы из

100 делителей время генерации уменьшается в 2 раза. При длине тестируемого числа 1024 бита и таблице из 1000 делителей время генерации уменьшается более чем в 5 раз.

Литература: 1. Кнут Д. Искусство программирования для ЭвМ/Пер. с англ. М.: Мир, 1977. Т.2. 728 с. 2. Миллер Г.Л. Гипотеза Римана и способы проверки простоты чисел // Кибернетический сборник. М.: Мир, 1985. Вып. 23. С. 31-50. 3. Уильямс X. Проверка чисел на простоту с помощью вычислительных машин // Кибернетический сб. М.: Мир. 1985. Вып. 23. С. 51-99.

4. Василенко О.Н. Современные способы проверки простоты чисел // Кибернетический сб. М.: Мир, 1988. Вып. 25. C. 162-188. 5. Schneier B. Applied Cryptography Second Edition: protocols, algorithms and source code in C. New York: John Wiley & Sons. 1996. 758 p. 6. Горбенко И.Д., Качко Е.Г., Свинарев А.В., Мельникова О.А. Программирование операций многократной точности // Безопасность информации. 1995. №1. С. 18-21. 7. Свинарев А.В. Методы ускорения процедур цифровой подписи класса Эль-Гамаля // Радиотехника. 1997. Вып. 104. С. 173—178.

Поступила в редколлегию 22.03.98

Качко Елена Григорьевна, доцент кафедры ПОЭВМ ХТУРЭ. Научные интересы: криптология, системное программное обеспечение. Адрес: 310726, Украина, Харьков, пр. Ленина, 14, тел. 30-24-52, 45-53-45.

Свинарев Андрей Владимирович, аспирант кафедры ЭВМ ХТУРЭ. Научные интересы: криптографические методы защиты информации в компьютерных системах. Адрес:310726, Украина, Харьков, пр. Ленина, 14. тел. 3024-52.

Мельникова Оксана Анатольевна, ассистент кафедры ЭВМ ХТУРЭ. Научные интересы: криптографические методы защиты информации в компьютерных системах. Адрес: 310726, Украина, Харьков, пр. Ленина, 14, тел. 30-24-52,38-46-92.

УДК 681.3.04

ПОСТРОЕНИЕ ШТРИХОВЫХ КОДОВ С ПОВЫШЕННОЙ ПОМЕХОУСТОЙЧИВОСТЬЮ

ДИЧКА И.А., СУЛЕМА Е.С._______

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

Использование ШК подразумевает три этапа:

1) изготовление ШК-этикетки; 2) хранение информации в виде ШК; 3)считывание ШК с последующим декодированием исходной информации.

На каждом из этих этапов возможно возникновение ситуаций, приводящих к искажению ШК-символов, а значит, и к ошибкам в исходной информации. К ним можно отнести следующее:

1) сбой устройства печати, а также дефекты печати

краски); 2) непродуманное оформление ШК-этикет-ки (в качестве носителя ШК выбрана глянцевая бумага, материал типа полиэтилена с неустойчивой краской); 3) загрязнение ШК-этикетки в процессе хранения и использования; 4) сбой устройства считывания.

Основная идея построения ШК с обнаруживающей и корректирующей способностью знаков состоит в следующем: перейти от контроля правильности всего ШК -символа (ШК-символ — совокупность данных, представленных в виде ШК, построенная по определенным правилам) в целом, осуществляемого путем добавления к исходному слову контрольного символа, к контролю правильности каждого ШК-знака (под знаком понимают совокупность штрихов и пробелов, соответствующую определенному алфавитно-цифровому символу). Тогда можно построить ШК, который позволяет исправлять, например, все однократные ошибки, возникающие в пределах каждого знака. Значит, при представлении n-символьного исходного слова такой ШК теоретически позволит исправить n-кратную ошибку, возникшую в пределах всего ШК -символа.

Проведенные авторами исследования показали, что наиболее вероятными являются ошибки вставки разрядов в двоичном векторе знака (компоненты двоичного вектора знака—двоичные нули и едини-

РИ, 1998, № 1

47