УДК 511+519.719.2 Д.В. Кручинин
Метод построения рекуррентных вероятностных генераторов простых чисел
Предложен метод построения рекуррентных вероятностных генераторов простых чисел с применением аппарата обыкновенных производящих функций и операции суперпозиции функций 1п(1 + Е(х)), где Е(х) является обыкновенной производящей функцией с целыми коэффициентами. Рассмотрены примеры построения таких генераторов с использованием предложенного метода.
Ключевые слова: генератор простых чисел, рекуррентные выражения, простые числа, производящие функции, суперпозиция производящих функций.
Простые числа имеют фундаментальное значение в математике в целом и в теории чисел в частности. Таким образом, это представляет большой интерес для изучения различных свойств простых чисел. На практике простые числа играют важную роль в современной криптографии и защите информации. Многие современные криптографические системы строятся на базе простого числа. Поэтому алгоритмы генерации простых чисел и проверки на простоту сформированного числа являются важными инструментами при создании криптографической системы.
Так, в хорошо известной криптографической системе с открытым ключом ЯБЛ потребность в выборе простых чисел имеет основополагающую позицию. Каждый пользователь ЯБЛ вырабатывает свою пару открытых и секретных ключей. Для этого ему необходимо сгенерировать два больших простых числа р ид и вычислить произведение п = рд. Затем требуется взять случайное число е, взаимно простое с ф(п) = (р -1)(д -1), и найти число й из условия ей = 1(modф(п)). Пара (п,е) объявляется открытым ключом и помещается в открытый каталог. Остальные числа (р, д,ф(п),й) образуют секретный ключ. Для расшифровки достаточно знать пару (п,й). Поскольку успешное решение задачи факторизации (разложения) числа п позволяет полностью дешифровать схему ЯБЛ и определить секретный ключ, то выбор простых чисел р и д во многом определяет стойкость шифрования [1].
В данной работе рассматривается задача генерации простых чисел, в том числе в заданном числовом промежутке.
Генерация простых чисел
Одним из методов получения простых чисел является использование какой-нибудь формулы, порождающей простые числа. Например, еще Л. Эйлер предложил многочлен
р(х) = х2 + х + 41, (1)
значения которого в первых 40 членах натурального ряда дают простые числа.
Впрочем, есть гораздо более сильный результат Ю. Матиясевича (1970), который доказал, что существует многочлен с целыми коэффициентами от нескольких переменных, значениями которого будут в точности все простые числа [2].
Генерация простых чисел, основанная на тесте Поклингтона.
Теорема Поклингтона. Пусть п = рЯ +1, и полное разложение множителя Я на простые множители известно. Тогда если для некоторого а < п выполняются условия:
1) ап-1 = 1mod п,
п-1/
2) НОД(а 'д,п) ф 1 для любого д | Я , то любой делитель числа п сравним с 1 по модулю Я.
Пусть задано простое число р:
1. Выбирается случайным образом чётное число Я на промежутке р < Я < 4р + 2 и определяется п = рЯ + 1.
2. Проверяется получившееся число п на отсутствие малых простых делителей.
3. Проверка простоты числа п с помощью теста Рабина-Миллера для различных значений а <р. Если число определяется как составное число, то выбирается новое значение Я.
Оценка эффективности этого метода зависит от плотности распределения простых чисел и расстояния между соседними простыми числами [2].
На основе теоремы Поклингтона строится алгоритм построения простых чисел, изложенный в Стандарте (ГОСТ Р34.10-94) «Процедуры выработки и проверки электронной цифровой подписи на базе асимметричного криптографического алгоритма».
Также существуют методы построения больших простых чисел, использующие не только простые делители п -1, но и делители чисел п + 1, п +1, п + п + 1. В основе их лежит использование последовательностей целых чисел, удовлетворяющих линейным рекуррентным уравнениям различных порядков.
Генерация простых чисел с использованием решета Аткина
Решето Аткина - быстрый современный алгоритм нахождения всех простых чисел до заданного целого числа. Основная идея алгоритма состоит в использовании неприводимых квадратичных форм (представление чисел в виде ах2 + Ьу2). Это оптимизированная версия старинного решета Эратосфена: решето Аткина проделывает некоторую предварительную работу, а затем вычеркивает числа, кратные квадрату.
Алгоритм имеет асимптотическую сложность - 0(п/1о§1о§п) и требует п12+о(1) бит памяти, это схоже по сложности с уже известными алгоритмами, но требование памяти существенно ниже в решете Аткина [3].
Для нахождения простых чисел, следующих за заданным числом х, можно использовать следующий алгоритм:
1. Выписывается множество чисел {п,п + 2,п + 4,...,п + 2т}, где п>х - наименьшее нечетное число, п + 2т - верхняя граница интервала.
2. Выполняется просеивание этого интервала с использованием решета Эратосфена или Аткина с помощью множества небольших простых чисел {3,5,...,р£}, ограниченного сверху границей В. При В = 10 отсеется примерно половина кандидатов. При р£ < 1000 отсеется 5/6 всех кандидатов.
3. Проверяются оставшиеся кандидаты с помощью теста Рабина-Миллера [2].
В 2008 г. Э. Роуланд получил рекуррентную последовательность, состоящую только из простых чисел, что делает возможным построение рекуррентного генератора простых чисел [4].
Последовательность задается следующим образом:
Пусть а\ = 7 и для всех п> 1 ап = ап-1 + НОД(п,ап-\), то для всех п>1 выражение Ьп = ап - ап-1 принимает только 1 и простые значения.
Недостатки данного метода генерации заключаются в следующем:
• генерация происходит при помощи дополнительной операции отыскания наибольшего общего делителя;
• генерируются простые числа не подряд;
• множественные повторения простых чисел, особенно числа 1;
• неизвестно, генерируются ли все простые числа.
Построение рекуррентных выражений для определения простоты числа
Для построения рекуррентных выражений, определяющих простоту числа, рассмотрим следующую суперпозицию производящих функций:
О( х) = Я( Е (х)), (2)
где внешней функцией является производящая функция Я( х) = 1п(-----), а внутренней - обыкновен-
1-х
ная производящая функция Е (х) с целыми коэффициентами.
Известно [5], что данная суперпозиция О(х) = ^ §(п)хп обладает следующим свойством:
п>1
• для любых значений п > 0, значения выражения п§ (п) являются целыми числами.
Для последовательности, задаваемой целочисленной функцией п§ (п), возможно построение рекуррентных функций, также однозначно определяющих заданную последовательность.
Рассмотрим еще одно свойство суперпозиции 0( х) = ^ g (и) х1 :
и>1
• для любых простых значений и, значения выражения
ng (и) - / (1)и и
являются целыми числами [5].
Приводя полученную рекуррентную функцию к виду (3), получаем рекуррентную функцию, которая генерирует последовательность чисел. Причем при простых значениях п элемент последовательности однозначно будет целым. Обратное утверждение неверно.
Рассмотрим ряд примеров, характеризующих вышеописанные утверждения.
Пример 1
2 Г 1
Пусть Е(х) = х+х , тогда функция коэффициентов g(и) суперпозиции 0(х) = 1п'
1-х - х2
имеет вид
п
g(n)=Z|^n-kjp (4)
щ (и) = [1,3,4,7,11,18,29,47,76,123,199,322,521,843...].
Это последовательность чисел Люка, где числа Люка определяются следующим образом:
„ . '1+75 Т Г1-Т5'
1(>г) =
или рекуррентная формула
Ди) = Ь(и -1)+Ь(и - 2).
Приводя рекуррентную формулу к виду (3), получаем выражение
Ь(и-1)+Ь(и - 2)-1
(5)
и
генерирующее последовательность чисел от 1 до и, такую, что при простых значениях и элемент последовательности однозначно будет целым.
Рекуррентная формула и-го члена последовательности определяется следующим образом:
Ни) =
и
где а(и) = а(и -1) + а(и - 2) + 1, (6)
а(1) = 0, а(1) = 2.
Для и = 23 последовательность будет следующая:
011 — 2 — 4 — — —18107 40 42113631103 210 5777 492 7563 24475198012786
2 6 4 3 5 4 7 15 8 18 10 21 11
Видно, что для и < 23 целые значения принимают только элементы при простых порядковых номерах. К сожалению, в общем виде существуют и псевдопростые числа и, элементы при которых также целые числа. Так, для и <150000 существуют 31 псевдопростое число, называемое псевдо-простыми числами Люка:
705, 2465, 2737, 3745, 4181, 5777, 6721, 10877, 13201, 15251, 24465,29281, 34561, 35785, 51841, 54705, 64079, 64681, 67861, 68251, 75077, 80189, 90061, 96049, 97921, 100065, 100127,105281, 113573, 118441, 146611. Пример 2
Пусть Е(х) =----, тогда функция коэффициентов g (и) суперпозиции 0( х) = 1п [-| имеет вид
1-х I х )
2и -1
^------, (7)
к=1к'"-' и
g (и) =1к- (и-1 к=1кХ 1
ng (и) = [1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,...].
Это последовательность чисел Мерсенна, рекуррентная формула которых имеет следующий вид:
М(п) = М (п-1) + 2М (п-2) + 2, (8)
Приводя рекуррентную формулу к виду (3), получим выражение, генерирующее последовательность чисел от 1 до п, такую, что при простых значениях п элемент последовательности одно-
значно будет целым.
Рекуррентная формула п-го члена последовательности определяется следующим образом:
Ь(п) = ^
п
где а(п) = 2а(п -1) + 2, (9)
а(1) = 0.
Для п = 20 последовательность будет следующая:
п , „ 7 г 31 0 127 170 511 2047 8191 10922 32767 131071 ^пепл 524287
0,1,2,—,6,—, 18,-------------------------------------,-,-, 186,-,630,-,-,-,7710,-,27594,-.
2 3 4 3 5 6 7 5 8 9 10
Видно, что для п < 20 целые значения принимают только элементы при простых порядковых номерах. К сожалению, в общем виде существуют и псевдопростые числа п, элементы при которых также целые числа, они называются числа Сарруса. Так, для п < 10000 существует гораздо больше чисел Сарруса, чем псевдопростых чисел Люка:
341, 561, 645, 1105, 1387, 1729, 1905, 2047, 2465, 2701, 2821, 3277,
4033, 4369, 4371, 4681, 5461, 6601, 7957, 8321, 8481, 8911.
Использование полученных рекуррентных выражений
Используя полученные рекуррентные выражения, возможно построение вероятностных генераторов простых чисел. В зависимости от подставляемых производящих функций генераторы простых чисел имеют различную точность определения простоты. Используя данный метод, можно находить множество чисел от 1 до п, в котором находятся все простые числа в этом интервале и некоторые составные числа, удовлетворяющие условию генерации, количество которых определяется суперпозицией имеющихся производящих функций. Для подсчета вероятности и понятия адекватности использования получаемых генераторов простых чисел можно использовать функции подсчета количества простых чисел в заданном интервале. Сравнивая количество псевдопростых чисел, полученных с помощью рекуррентного генератора, и результат функции подсчета простых чисел, можно сделать заключение о состоятельности рекуррентного генератора и о его дальнейшем практическом применении.
Преимущество использования рекуррентных генераторов заключаются в том, что при знании некоторых необходимых элементов а(к) определенной размерности возможно дальнейшее построение простых чисел в интервале от к до п . То есть если хранить необходимое количество элементов последовательности а(п), заданной большой размерности, то с легкостью можно отыскать множество псевдопростых чисел, больших, чем заданные значения п. В этом случае вся сложность генерации будет заключаться в операции деления на порядковый номер п и хранении нижней границы значений а(п) необходимого порядка.
Применение рекуррентных генераторов простых чисел целесообразно для построения простых чисел в заданном интервале некоторой допустимой погрешностью либо для построения или уменьшения размера последовательности чисел, необходимых для отыскания простых чисел с помощью проверок простоты. То есть строится некоторая последовательность псевдопростых чисел и для чисел данной последовательности применяются некоторые тесты на простоту до тех пор, пока не найдется среди них простое число.
Литература
1. Rivest R. A Method for Obtaining Digital Signatures and Public-Key Cryptosystems / R. Rivest, A. Shamir, L. Adleman // Communications of the ACM. - 1978. - Vol. 21(2). - P. 120-12б.
2. Ишмухаметов Ш.Т. Методы факторизации натуральных чисел: учеб. пособие. - Казань: Казан. ун., 2011. - 190 с.
3. Atkin A.O.L. Prime sieves using binary quadratic forms / A.O.L. Atkin, D.J. Bernstein // Mathematics of Computation. - 2004. - Vol. 73. - P. 1023-1030.
4. Rowland E.S. A Natural Prime-Generating Recurrence // Journal of Integer Sequences. - 2008. -Vol. 11, article 08.2.8. - P. 1-13.
5. Кручинин Д.В. О свойствах коэффициентов суперпозиции некоторых производящих функций // Прикладная дискретная математика. - 2012. - № 1(15). - С. 55-59.
Кручинин Дмитрий Владимирович
Аспирант каф. комплексной информационной безопасности электронно-вычислительных систем ТУСУРа
Тел.: +7-913-845-99-04
Эл. почта: [email protected]
Kruchinin D.V
The method of constructing probabilistic recurrence generators of prime numbers
A method for constructing probabilistic recurrence generators of prime numbers proposed by using the apparatus of ordinary generating functions and operations of superposition of generating functions ln(1 + F(x)), where F(x) is a ordinary generating function with integer coefficients. Examples of the construction of prime number generators considered by using the proposed method.
Keywords: prime number generator, recurrence expressions, prime numbers, generating functions, superposition of generating functions.