Генераторы псевдослучайных чисел, не имеющие периода

Математические заметки СВФУ Октябрь—декабрь, 2014. Том 21, № 4

УДК 512.643.5

ГЕНЕРАТОРЫ ПСЕВДОСЛУЧАЙНЫХ ЧИСЕЛ, НЕ ИМЕЮЩИЕ ПЕРИОДА С. Ф. Кренделев, А. Ю Кузьменок

Аннотация. Представлен новый алгоритм генерации псевдослучайных чисел, основанный на решении уравнений вида f (x) = 0 modpn (n —> Определен способ построения ключей генератора, позволяющих генерировать последовательности, не имеющие периода. Исследованы статистические свойства таких последовательностей с помощью NIST STS. Также проведен обзор возможных обобщений схемы.

Ключевые слова: генератор случайных чисел, 2-адические числа, период, статистические тесты.

Введение

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

В данной работе для генерации псевдослучайной последовательности используется хорошо известный факт из элементарной теории чисел [1]. Пусть f (ж) — некоторый многочлен с коэффициентами из кольца целых чисел, а p — простое число. Тогда при решении уравнения f (ж) = 0modpn, где n — сколь угодно большое число (в общем случае будем считать, что n ^ то), согласно теории чисел возникает последовательность чисел 0 < tk < p, k = 1,..., n, которую и предлагается использовать в качестве последовательности псевдослучайных чисел.

Описанный подход не является абсолютно новым. В работе [2] фактически рассматривался случай, когда полином f (ж) — линейная функция, т. е. f (ж) = аж + b, а p = 2. Получаемая в [2] последовательность является 2-адическим представлением для рационального числа. Однако еще раньше появилась работа [3], в которой рассматривалось решение матричного уравнения Аж = b, в котором элементы матрицы А и вектора b принадлежат кольцу целых

Работа выполнена при финансовой поддержке Минобрнауки РФ (договор № 02.G25.31.0054) © 2014 Кренделев С. Ф., Кузьменок А. Ю.

чисел, а искомый вектор x имеет рациональные компоненты. Очевидно, что этот подход позволяет строить векторные последовательности. Но и в том, и в другом случае получаемые последовательности имели циклы.

Конструкция из теории чисел

Рассмотрим простейший способ получения элементов последовательности tk, k = 1,..., n. Пусть имеется сравнение вида

f

Поскольку любое решение сравнения вида (1) должно удовлетворять сравнению вида

f

его можно найти следующим образом.

Будем считать, что заданы полином f (x) и модуль p и выбран некоторый корень xo сравнения (2), возьмем его в качестве to.

Следующий элемент последовательности t1 можно найти, решив сравнение

f (x1) = 0 mod p2.

Подставляя x1 = xo + t1p в f (x) и применяя к левой части формулу Тейлора, получаем

f (xo) + f '(xo)t1p = 0 mod p2,

откуда следует, что

il = _/(£o)(//(a.o))-imodp_

p

Ограничимся случаем, когда данное сравнение имеет единственное решение, т. е. когда f'(xo) обратима по модулю p. Вышеизложенное легко продолжить на случай n-го элемента последовательности:

1п = _ГЩ_i)(/Wl))-imodp. pn

Несложно заметить, что из обратимости f'(xo) следует обратимость и f'(xn) для любого n, так как

f '(xo) = f '(x1) = • • • = f '(xn) mod p.

Также исходя из свойств сравнений по модулю гарантируется делимость f (x„_1) на pn.

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

На вход подается модуль последовательности p, количество генерируемых элементов count, в качестве ключа генератора берутся коэффициенты полинома a,i, 0, то, и номер корня пг, 0 ^ nr ^ то — 1.

xo = nr-й корень сравнения f (x) = 0modp; d = (f '(xo))-1 mod p; to = xo;

for

{

, f{xi) , , U+i =--— • amodp;

}

p'

жг+1 = жг + tj+ip'+1;

Метод генерации для многочленов второй степени

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

Ограничение множества ключей полиномами второй степени позволяет оптимизировать алгоритм. Пользуясь тем, что

f (жг) = f (жг_1 + tip'),

f

р

gi-i + f'(жг-1) • ti + aotfp'

f

можно представить вычисление выражения gi := i+V в виде

gi

p

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

i-1

f '(ж'-i) = f '(ж'-2) + 2aot'-ip Тогда псевдослучайное число ti+1 находится из равенства

t'+i = —g' • d mod p.

Данная модификация алгоритма позволяет уйти от вычисления ж', а также деления и умножения длинного числа на длинное, что значительно увеличиват скорость генерации.

Длина периода и тип корней уравнения

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

Вид последовательностей, порождаемых предложенным генератором, полностью зависит от типа корней уравнения f (ж) = 0. Весьма интересным кажется представление, получаемое при использовании уравнений, неразрешимых в радикалах, например уравнений вида ж5 — д2ж — q = 0, где q — простое число. Такое представление возможно, однако качественной разницы между этим представлением и представлением, полученным при использовании уравнений, не имеющих рациональных корней, обнаружено не было. В связи с этим ограничимся рассмотрением уравнений степени m = 2.

Для начала рассмотрим случай, когда данное уравнение имеет рациональные корни. Если уравнение f (x) = 0 имеет два кратных рациональных корня х\ 2 = f, то сравнение можно переписать в виде

Очевидно, что решение данного сравнения можно свести к решению сравнения

bx — a = 0mod p.

С другой стороны, производная f '(x) = 2b(bx — a) равна нулю по модулю p при тех же значениях, которые являются решениями сравнения (4), а значит, и решениями сравнения (3). Вследствие этого генерация последовательности предложенным способом невозможна для такого типа уравнения.

Рассмотрим случай, когда уравнение f(x) = 0 имеет два различных рациональных корня xi = Х2 = Тогда сравнение (2) будет иметь вид

(b1x — a1)(b2x — a2) = 0 mod p.

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

при этом производная

f '

обратима по модулю p в точках, равных решениям сравнений (5).

Последовательности, получаемые из линейных уравнений, а значит, и из уравнений, имеющих различные рациональные корни, периодические. В работе [2] рассматривалась длина периода для линейного случая при p = 2. Полученные в [2] результаты несложно обобщить для произвольного простого p.

В связи с этим наибольший интерес представляет генерация последовательностей с использованием многочленов с вещественными или комплексными корнями. Покажем, что если уравнение f (x) = 0 заведомо не имеет рациональных решений, то у порождаемых им последовательностей нет периода.

Запишем сравнение (1) в виде

a(x — x1)(x — x2) = 0 modpn.

Предположим, что полученная последовательность коэффициентов ti имеет период T. Тогда решение сравнения можно записать в виде

x = to + t1p + t2p2 + • • • + tkpk + (tk+1 pk+1 + • • • + tk+Tpk+T)(1 + pT + (pT)2 + ... ).

Умножив и разделив правую часть равенства на 1 — pT, а также воспользовавшись тем, что (1 — q)(1 + q + q2 + ...) = 1, получаем

x = to + t1p + t2p2 +-----h tkpk +

tk+iPk+1 + ---+tk+Tpk+T 1 -pT

Получили, что ж — рациональное число, следовательно, корни ж12 уравнения f (ж) = 0 также рациональные числа. Исходя из полученного противоречия, получаем, что последовательность ti не имеет периода.

Выбор ключей генератора

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

1. Выбираем многочлен аж2 + Ьж + с = 0 с целыми коэффициентами а, Ь, с, который заведомо не имеет рациональных решений.

2. Выбираем произвольную точку жо — целое число.

3. В точке жо вычисляем значение r = аж0 + Ьжо + с.

4. Полагая p равным простому сомножителю числа r, проверяем, что производная в точке жо не равна нулю по модулю p. Выполнение данного условия позволяет начать генерацию.

Статистическое тестирование

Для того чтобы генератор псевдослучайных чисел возможно было использовать в криптосистемах, необходимо, чтобы статистические свойства генерируемых им последовательностей полностью соответствовали свойствам случайных последовательностей. Вывод о том, насколько последовательность случайна, позволяют сделать стандартные наборы статистических тестов, объединенные единой методикой расчета необходимых показателей эффективности генератора. В настоящее время наиболее известными пакетами статистического тестирования являются DIEHARD, dieharder, CRYPT-X и пакет NIST.

Набор статистических тестов NIST STS [4] разработан Национальным институтом стандартов и технологий США. Выбор данного пакета обусловлен тем, что он имеет большую криптологическую направленность. Пакет включает в себя 15 статистических тестов, разработанных для проверки гипотезы о случайности битовых последовательностей.

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

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

Для получения битовой последовательности на выходе генератора из сгенерированных целых чисел берутся младшие несколько бит. Количество младших бит (обозначим m), попадающих в результирующую последовательность, зависит от найденного модуля p и определяется следующим образом.

Пусть p — это n-битное целое. Тогда m = n — 1. Для того чтобы сохранить равномерность последовательности, m младших бит берутся только у чисел из

ml m

диапазона 0, 2' , остальные (от ^ 2' + 1 до p — 1) отбрасываются.

L '=i J '=о

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

один миллион бит. Для исследования статистических свойств генератора были взяты две выборки размером 500 и 1000 последовательностей по модулю 2 длиной один миллион бит. Тестирование проводилось при уровне значимости а = 0, 01. В табл. 1 приведены значения границ доверительных интервалов, в которые должна попадать доля последовательностей, прошедших тест.

Таблица 1

Номер Нижняя Верхняя

выборки граница граница

Для "The Random Excursions 1 0.9728800670 1.007119933

Test" и "The Random Excursions 2 0.9778744195 1.002125581

Variant Test"

Для всех остальных тестов 1 0.9766508427 1.003349157

2 0.9805607204 0.9994392796

Значение р для прохождения теста должно быть больше 0.0001.

Поскольку отдельные тесты пакета включают в себя несколько идентичных по смыслу тестов с разными параметрами тестирования (например, тест на проверку неперекрывающихся шаблонов проводится 148 раз для 148 различных шаблонов), то фактически вместо 15 тестов проводится 188, в связи с этим для тестов, генерирующих несколько значений, приводятся худшие из них (табл. 2).

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

Таким образом, можно сделать вывод о том, что генератор прошел все статистические тесты пакета ШБТ.

Можно отметить также, что если сгенерированные числа II переводить в нули и единицы, беря их по модулю 2, то такие последовательности также проходят тестирование (если отбросить число р — 1, иначе нулей больше). Но скорость генерации меньше, чем при отбрасывании большего количества чисел, но взятии большего количества бит, как было описано вначале.

Возможные обобщения

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

Таблица 2

Размер выборки 500 1000

Название теста Доля последовательностей, прошедших тест Pi Доля последовательностей, прошедших тест Pi

Frequency (Monobit) Test 0.982 0.739918 0.99 0.943242

Frequency Test within a Block 0.992 0.534146 0.986 0.406499

The Cumulative Sums (Cusums) Test 0.982 0.798139 0.99 0.241741

The Runs Test 0.992 0.135720 0.993 0.603841

Tests for the Longest-Run-of-Ones in a Block 0.99 0.980341 0.987 0.709558

The Binary Matrix Rank Test 0.988 0.452173 0.987 0.234373

The Discrete Fourier Transform (Spectral) Test 0.986 0.222480 0.989 0.363593

The Non-overlapping Template Matching Test 0.978 0.006107 0.983 0.001087

The Overlapping Template Matching Test 0.984 0.310049 0.993 0.919131

Maurer's "Universal Statistical" Test 0.982 0.267573 0.994 0.205531

The Approximate Entropy Test 0.992 0.510153 0.989 0.454053

The Random Excursions Test 0.980263 0.148094 0.981848 0.112047

The Random Excursions Variant Test 0.986842 0.004981 0.985149 0.055361

The Serial Test 0.986 0.313041 0.993 0.102526

The Linear Complexity Test 0.988 0.328297 0.99 0.467322

блематично. Одним из вариантов таких систем, могут служить системы вида ^(х, у) = аоуох2 + а^х + а2У2 = 0,

/ Ы = у2 + к = 0,

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

Второе возможное обобщение можно получить, рассмотрев конструкцию следующего вида:

А(х)У (х) = В(х),

где А(х) и В(х) — известные многочлены степени в и д соответственно с коэффициентами из конечного поля, причем в > д. Тогда функция У(х) = является производящей функцией [5] последовательности {£«} и представляет

собой формальный ряд вида

V(ж) = J^ tiX1-i=0

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

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

A(x)y2 + B(x)y + C (x) = 0,

где

y = J2

i=0

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

A(x)V(ж) = B(x) modxn

при n ^ ж.

Заключение

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

ЛИТЕРАТУРА

1. Vinogradov I. M. An introduction to the theory of numbers. London and New York: Pergamon Press, 1955.

2. Klapper A., Goresky M. Feedback shift registers, 2-adic span, and combiners with memory // J. Cryptology. 1997. V. 10. P. 111-147.

3. Dixon J. D. Exact solution of linear equations using P-adic expansions // Numer. Math. 1982. V. 40. P. 137-141.

4. A statistical test suite for random and pseudorandom number generators for cryptographic applications / Rukhin A. and others. NIST Special Publication 800-22 Revision 1a April 2010.

5. Stanley R. P. Enumerative combinatorics. Cambridge: Cambridge Univ. Press, 1999. V. 2.

Статья поступила 16 декабря 2014 г.

Кренделев Сергей Федорович Новосибирский гос. университет, ул. Пирогова, 2, Новосибирск 630090 s.f.krendelev@gmail.com Кузьменок Александра Юрьевна Новосибирский гос. технический университет, пр. Карла Маркса, 20, Новосибирск 630092 aleknock@yandex.ru