УДК 519.7
О. Р. Каратаев, Б. Г. Мубараков, А. С. Мочалов
О ПОВЫШЕНИИ ЭФФЕКТИВНОСТИ ТЕСТА ПРОСТОТЫ МИЛЛЕРА-РАБИНА
Ключевые слова: криптография, тест простоты, тест простоты Миллера-Рабина, псевдопростые числа.
В статье рассматривается один из способов повышения эффективности теста Миллера-Рабина. Данный алгоритм, позволяющий определить простоту числа, лежит в основе большинства современных криптографических систем. Теоретическим основанием для данного способа является поиск и исследование свойств псевдопростых чисел. Выявление данных чисел осуществляется последовательным перебором первого сомножителя.
Key words: cryptography, primality test, Miller-Rabin primality test, pseudoprimes.
In the article the way to improve the efficiency of the Miller-Rabin test is discussed. The algorithm, that allows to determine the number primality, is the basis of most modern cryptographic systems. The theoretical basis for this method is the search and investigation of the properties of pseudoprime numbers. Identification of data of numbers is carried out via brute force of the first factor.
Развитие новых информационных технологий и всеобщая компьютеризация привели к тому, что информационная безопасность не только становится обязательной, она еще и одна из характеристик информационных систем [1, 2]. Например, отдельные сферы деятельности (банковские и финансовые продукты, информационные сети [3], системы государственного управления, оборонные и специальные структуры) требуют специальных мер безопасности данных и предъявляют повышенные требования к надежности функционирования информационных систем, в соответствии с характером и важностью решаемых ими задач. В данной статье мы не будем затрагивать вопросы специальных систем безопасности, а остановимся на общих вопросах защиты информации и криптографии.
В криптографии и теории чисел одной из наиболее важных проблем является проблема определения по заданному натуральному числу П , является ли оно простым или составным. Процедура, решающая такую задачу, называется тестом простоты. Известно множество различных тестов простоты, среди которых наиболее распространенным является тест простоты Миллера-Рабина.
Начнем с описания алгоритма Миллера-Рабина проверки простоты. Пусть задано натуральное нечетное число П , большее трех. Представим число П — 1 в виде
П — 1 = 2 U, U - нечетно.
(1)
Алгоритм Миллера-Рабина состоит из отдельных итераций, называемых раундами. Каждый раунд либо определяет число П , как составное, либо усиливает вероятность того, что П является простым числом. Опишем инструкции выполнения одного раунда:
1. Выбираем случайное целое число a в диапазоне от 2 до П — 1;
2. Вычисляем b = a" mod П ;
3. Проверяем условие
b = ±imodn ;
(2)
4. Если (2) выполнено, то П вероятно простое, переходим к следующему раунду;
5. Иначе, вычисляем последовательность b0,b1,...,bs—1, полагая
b0 = b, bi+1 = b2 modn.
(3)
Если ни один из членов этой последовательности не эквивалентен -1 по модулю П , тогда утверждаем, что П - составное. Иначе, подтверждает П - вероятно, простое. Тест Миллера-Рабина работает достаточно быстро и эффективно, однако, существуют составные числа, успешно проходящие тест Милле-ра-Рабина.
Определение 1. Пусть а > 1 - произвольное натуральное число. Назовем нечетное составное натуральное число П строго псевдопростым по базе а или врвр(а), если число П успешно проходит один раунд теста Миллера-Рабина с базой а . Иначе говоря, выполняется одно из следующих условий:
а" = ±1тоЬП
для некоторого
где П — 1 = 2sU
au2i = — imodn
i, 0 < i < s.
(4)
Определение 2. Пусть а > 1 - произвольное натуральное число. Назовем нечетное составное натуральное число П а -псевдопростым или рвр(а), если выполняется формула
аП—1 modn = 1.
(5)
Элемент а называется базой для псевдопростого числа П .
По теореме Рабина вероятность того, что составное число успешно пройдет один раунд этого теста не превышает 1/4, поэтому выполнение к успешных итераций уменьшает вероятность ошибки до
4 к. Отметим, что если П - составное, то на одной из итераций это будет определено точно. Если использовать недоказанную гипотезу Римана о распределении простых чисел, можно ограничить ко-
личество итераций величиной (1од2 П)2, что, однако, является заведомо завышенной.
Таким образом, эффективный поиск сильно-псевдопростых чисел и исследование их свойств могут повысить скорость работы теста Миллера-Рабина и улучшить его точность.
В частности, в [4] предлагается «быстрый» тест
простоты для чисел П < 25 • 199, идея которого заключается в следующем.
Найдем список Р всех чисел р < 25 • 199, таких что р е 8рвр({2,3,5}). Пусть на вход подано некоторое целое П . Определим алгоритм по следующим шагам:
1. Запускаем тест Миллера-Рабина в три итерации со свидетелями простоты а = 2,3 и 5 соответственно. Если П не проходит хотя бы одну из проверок, считаем его составным и завершаем работу;
2. Проверяем, находится ли число в нашем списке (П е Р ?). Если число удалось обнаружить, то оно очевидно составное. Иначе - считаем П простым.
Нетрудно доказать, что предложенный алгоритм является детерминированным и будет давать верный результат на любых числах из рассматриваемого интервала. Его применимость особенно имеет место в вычислительных системах, имеющих достаточное количество свободной памяти (необходимо постоянно хранить список Р), но возможно имеющих дефицит вычислительных мощностей.
Задаваясь целью найти все псевдопростые числа, меньшие некоторой фиксированной границы, будет разумно осуществлять поиск чисел, которые являются псевдопростыми сразу по базе нескольких чисел, особенно если это поможет увеличить эффективность алгоритма.
Зафиксируем некоторое множество
V = (а1,...,а), границу В и зададимся целью найти все такие числа П < В , что П е врвр^). Для начала будем рассматривать только числа вида П = ря , где р, ^ - простые числа. Полученный подход может быть обобщен в дальнейшем на произвольное количество множителей 1, однако эта задача сама по себе является менее актуальной, т.к. преимущественное большинство сильно-псевдопростых чисел по нескольким базам состоят из двух сомножителей. Среди приведенного в [5]
списка врвр({2,3,5}) - чисел, меньших 1012, только 6 из 101 (5,9%) имеют 1 = 3. Чисел, состоящих из 4-х и более множителей в данном списке нет вовсе.
Следует также понимать, что при 1 > 2 становится значительно проще производить полный перебор по сомножителям, т.к. количество рассматриваемых вариантов ограничивается р| < \/В для всех 11 < ] < 1.
Составное число П = ря является псевдопро-
стым по базе Ь тогда и только тогда, когда р|Ьч—1 — 1 и Ьр 1 — 1. Если же мы ищем П е spsp(w), w = (Ь1,...,Ь|), w е V, то должно выполняться Ьр 1 — 1, 1 < I < I, откуда
я| НОД(Ьр—1 — 1,..., Ьр—1 — 1).
(6)
Соотношение (6) дает нам возможность, зафиксировав очередной сомножитель р < -\[В, отыскать соответствующие ему значения Я среди делителей
вычисленного НОД. Числа Ьр 1 — 1 будут иметь большие значения, однако их НОД будет значительно меньше, что упрощает факторизацию. Очевидно, данный подход будет наиболее эффективен при небольших значениях р, в отличие, например, от методики, предложенной в [5]. Ниже опишем алгоритм:
1. Выбираем очередное простое р < ТВ и вычисляем
— | НОД(Ьр—1 — 1,..., Ьр—1 — 1);
2. Факторизуем — = —2...—т ;
р
3. Для каждого —| > р проверяем, является ли —¡р сильно-псевдопростым по V и переходим к шагу 1.
Очевидно, эффективная реализация данного алгоритма напрямую зависит от следующих задач:
1. Даны I целых чисел, необходимо вычислить их НОД;
—
2. Для данного — найти все сомножители.
р
—
Можно предположить, что среди делителей —
р
будет достаточное количество небольших простых
чисел, кроме того, как будет показано далее, значе-— 7
ние — невелико даже при р ~ 10 . Соответствен-р
но, использование таких субэкспоненциальных алгоритмов факторизации, как метод квадратичного решета или метод решета числового поля, будет неоправданным. Данные алгоритмы требуют значительного времени на стадии инициализации (например, выбор полиномиальной пары в методе решета числового поля) и наиболее эффективны при факторизации чисел более 10100 .
В данном случае более обоснованным выглядит выбор таких методов факторизации, как р -
алгоритм Полларда, а также метод эллиптических кривых. Вычислительная сложность последнего оценивается как
ехр((7 2 + 0(1) р 1п р 1п(1п р)),
И
где р - наименьший делитель —.
Р
На практике же будем сперва производить перебор возможных делителей, меньших 103. Это позволит отбросить все небольшие простые сомножи-
И
тели —, не затрачивая на этот процесс много вре-р
мени.
Вычисление на каждой итерации алгоритма чисел вида Цр) = Ьр 1 — 1 также представляется ресурсоемкой задачей. В таком случае более эффективным будет рекуррентный подход к вычислению Цр). Предположим, нами уже вычислено значение
Ь(р| 1), где рц - некоторое очередное простое число. Нам необходимо быстро вычислить Ь(р|2) = Ь(р| 1 +5), где 5 = р,2 — рц - некоторое целое. Имеем:
L(p,! +5) = b
_ hpii+5-1 _ i = bPil~'b5 -1 =
= (bPi1 1 _ i)b5 + (b5 _ l) = b5L(pi1) + (b5 _ l).
Получаем, что
L(Pi1 +5) = b5L(Pi1) + (b5 _ 1).
(7)
Очевидно, использование данной рекуррентной формулы вычислительно упрощает нашу задачу, т.к. мы избавляемся от необходимости осуществлять возведение в степень. Что касается практического применения, то использование подхода позволило сократить время работы алгоритма в среднем на 8%.
Вычисление НОД чисел вида Ьр 1 — 1 представляется весьма ресурсоемкой задачей, т.к. аргументы могут принимать большие значения. К примеру, при
Ь = 2, р ~ 107 данное значение можем оценить
как
1Q7 Э'Ю^
2 ~ 10 . Простые методы нахождения
нашим условиям показал, что наиболее эффективным будет использование алгоритма Лемера (Lehmer's GCD algorithm).
С целью найти список сильно-псевдопростых
чисел, меньших границы 10 , реализованный алгоритм был запущен на сервере, имеющем 8 физических двухъядерных процессоров и 16 ГБ оперативной памяти и работающем под управлением ОС Linux. Поиск производился в 16 вычислительных потоков.
Полный цикл работы алгоритма занял 2 суток 23 часа 34 минуты, а результатом его работы стал список P из 1118 чисел, являющихся сильно-псевдопростыми по отношению к первым трем простым числам (2, 3, 5). Все числа этого множества состоят из двух сомножителей, при этом один из них
7
ограничен по значению числом 10 . Наименьшее полученное число - 25326001 (~ 2,5 • 10 ), наибольшее - 3931205905188049 (« 3,9 • 1015).
На интервале < 1012 обнаруживаем полное совпадение с 95 псевдопростыми числами, приведенными [5] в своем труде. Несмотря на то, что это всего лишь 8,5% чисел из всего множества P , полное совпадение подтверждает гипотезу о небольшом разбросе между значениями p и q, что исключает возможность «пропустить» сильно-псевдопростое число, фиксируя конкретную границу для одного из множителей.
Литература
1. И.Д. Тарасенко, В.А. Дударев, Вестн. Казан. технол. ун-та, 17, 19, 381-383 (2014).
2. А.Г. Мухаметзянова, К.А. Алексеев, Вестн. Казан. технол. ун-та, 17, 24, 426 (2014).
3. Л.Т. Ягьяева, Е.А. Молчанов, Л.Ф. Мубаракшин, Вестн. Казан. технол. ун-та, 17, 19, 369-372 (2014).
4. C. Pomerance, J. Selfrifge, S. Samuel, Math. Comput. 35, 1003-1026 (1980).
5. G.Jaeschke,Math. Comput. 61, 915-926 (1993).
НОД, как алгоритм Евклида, в данном случае будут бессильны. Сравнительный анализ реализаций различных методов нахождения НОД применительно к
© О. Р. Каратаев - к.т.н., доцент кафедры машиноведения КНИТУ, [email protected], Б. Г. Мубараков - аспирант кафедры системного анализа и информационных технологий Института вычислительной математики и информационных технологий Казанского федерального университета, [email protected], А. С. Мочалов - аспирант кафедры системного анализа и информационных технологий Института вычислительной математики и информационных технологий Казанского федерального университета, breathe@bk.
© О. R. Karataev - c.t.s., associate professor of the department of mechanical engineering of Kazan National Research Technological University (KNRTU), [email protected], B. G. Mubarakov - PhD student Department of System Analysis and Information Technology Institute of Computational Mathematics and Information Technologies Kazan Federal University, [email protected], A. S. Mochalov - PhD student Department of System Analysis and Information Technology Institute of Computational Mathematics and Information Technologies Kazan Federal University, breathe@bk.