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

Оценка качества генераторов последовательностей случайных чисел Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
4141
295
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ГЕНЕРАТОР / ПОСЛЕДОВАТЕЛЬНОСТЬ СЛУЧАЙНЫХ ЧИСЕЛ / НЕЗАВИСИМОСТЬ / СТОХАСТИЧНОСТЬ / РАВНОМЕРНОСТЬ / ЯЗЫКИ ПРОГРАММИРОВАНИЯ / GENERATOR / RANDOM NUMBER SEQUENCE / INDEPENDENCE / STOCHASTICITY / UNIFORMITY / PROGRAMMING LANGUAGES

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Колесова Наталья Александровна

Предложена методика, в соответствии с которой проведен анализ качества генераторов последовательностей случайных чисел, встроенных в популярные языки программирования C++ и C#. Результаты анализа могут найти применение при выработке решений о приемлемости использования таких генераторов в различных прикладных задачах. Библиогр. 6. Ил. 2.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

The technique, according to which the analysis of quality of generators of random number sequence built in popular programming languages C++ and C#, has been offered. The results of the analysis can find application in development of decisions on acceptability of use of such generators in various applied problems.

Текст научной работы на тему «Оценка качества генераторов последовательностей случайных чисел»

УДК 004.056

Н. А. Колесова

ОЦЕНКА КАЧЕСТВА ГЕНЕРАТОРОВ ПОСЛЕДОВАТЕЛЬНОСТЕЙ СЛУЧАЙНЫХ ЧИСЕЛ

Введение

В настоящее время множество полезных применений находят числа, которые выбираются случайным образом, так называемые последовательности случайных чисел (ПСЧ). Они могут применяться при моделировании различных явлений для повышения адекватности моделей. Для решения сложных задач численного анализа была разработана специальная методика, также использующая случайные числа. Последовательности случайных чисел используются в компьютерной графике, а также являются хорошим источником данных для тестирования эффективности компьютерных алгоритмов [1].

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

Следует отметить, что получение подобных чисел сложно, т. к. любые алгоритмы и технологии строятся таким образом, чтобы результат их работы был предсказуем. Тем не менее в настоящее время уже разработано достаточно большое количество различных генераторов ПСЧ. В общем случае все они должны удовлетворять следующим основным требованиям:

— эффективность;

— невозможность повторной генерации выработанной ПСЧ;

— мультиплатформенность;

— простота программной реализации.

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

В настоящее время широкое распространение получили программные генераторы, вырабатывающие псевдослучайные последовательности чисел, т. е. такие последовательности, которые генерируются с помощью детерминированных рекуррентных формул. Псевдослучайными эти последовательности называют потому, что фактически они, даже пройдя все тесты на независимость и равномерность распределения, остаются полностью детерминированными [2]. Подобные генераторы ПСЧ должны удовлетворять нескольким дополнительным требованиям:

— числа в генерируемой последовательности должны быть равномерно распределены и независимы, т. е. должны быть некоррелированы;

— период последовательности должен иметь возможно большую длину.

Уровень требований, предъявляемых к ПСЧ, а следовательно, и к их генераторам, во многом зависит от класса решаемых с их помощью задач. Так, криптография предъявляет предельно «жесткие» требования к используемым ПСЧ, от которых зависит криптостойкость шифров и надежность защиты, что, в свою очередь, приводит к необходимости разрабатывать эффективные алгоритмы определения качества таких последовательностей и их генераторов.

Постановка и решение задачи

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

О = <{Я};Д}>,

где {^г} - множество вершин графа; {Ду} - множество дуг, соединяющих 7-ю и у-ю вершины; К0 - корневая вершина, отвечающая интегральному критерию. При этом дуги расположены так, что началу дуги соответствует вершина нижнего уровня иерархии (ранга), а концу дуги -вершина ранга, на единицу меньшего.

На втором (нижнем) уровне расположены тесты Т, используемые для проверки различных характеристик числовой последовательности. На уровень выше находятся обозначенные через К основные характеристики случайности: равномерность, стохастичность и независимость. И наконец, корневой вершине нулевого уровня соответствует комплексный критерий К0 оценки качества проверяемой последовательности.

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

Рис. 1. Обобщенная схема комплексной оценки качества ПСЧ

Веса могут быть присвоены каждому тесту непосредственно в виде некоторого рационального числа от 0 до 1 либо могут быть получены экспертным путем. Значения весов тестов, рассчитанные как показано в [3], приведены в табл. 1.

Таблица 1

Значения весов тестов

Г руппа проверок на равномерность

Тест Т1 Т\ Т 1 1 2 Т 1 Т 3 Т 1 4 Т,1

Вес 0,28 0,31 0,1 0,31 0,31

Г руппа проверок на независимость

Тест Т2 т,2 Т2 Т 2 Т2 Т3 Т2 Т 4 Т,2

Вес 8П 0,21 0,2 0,18 0,2 0,21

Г руппа проверок на стохастичность

Тест Т3 Т[3 Т 3 1 2 Т 3 Т3 Т 3 4 Т,3

Вес 8П 0,28 0,28 0,16 0,28 0,16

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

Таким образом, пройдя последовательно снизу вверх по всем уровням иерархии О, можно путем комплексного агрегирования данных выработать суждение о качественном уровне показателя на каждой ступени иерархии (вплоть до К0).

Данная методика была положена в основу программного продукта [4], блок-схема работы которого представлена на рис. 2.

-Нет -

Нет

Выполнить проверку ^ >—Да-^ Проверка

на равномерность на равномерность

<

Нет

Нет

Нет '

Выполнить проверь ^ >—Да-^ Проверка

на независимость на независимость

Выполнить проверку ^ >—Да-* Проверка

на стохастичность на стохастичность

U

Результат I проверки f-\на равномерность \

Результаты ! проверки Ь \ на независимость \

Результаты ! проверки (-\ на стохастичность \

Подсчёт

интегрального

критерия

Рис. 2. Блок-схема работы программного продукта

С помощью [4] был проведен сравнительный анализ качества числовых последовательностей, полученных с помощью широко распространенных генераторов ПСЧ, используемых в языках программирования C++ и C#, и последовательностей, полученных на выходе алгоритма шифрования DES [5].

В общей сложности было протестировано по 60 числовых последовательностей различной длины, сгенерированных с использованием функции random() языков C++ (среда разработки -Builder 2006) и C# (среда разработки - Visual Studio 2008), а также полученных при шифровании данных с помощью алгоритма DES. При этом все тесты считались равнозначными. Случайными (неслучайными) признавались последовательности, прошедшие с положительным (отрицательным) результатом 75 % тестов на равномерность, 80 % тестов на независимость и 75 % тестов на стохастичность.

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

Таблица 2

Соотношение случайных, неслучайных и неопределенных последовательностей

Источник ПСЧ Соотношение, %

случайных последовательностей неопределенных последовательностей неслучайных последовательностей

C++ 81,7 16,6 1,7

C# 78,3 15 6,7

DES 96,7 3,3 0

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

Таблица 3

Результаты тестирования последовательностей при проверке на равномерность, независимость и стохастичность

Источник ПСЧ Равномерность Независимость Стохастичность

СЛ, % НО, % НС, % СЛ, % НО, % НС, % СЛ,% НО, % НС, %

C++ 86,6 11,7 1,7 75 25 0 70 30 0

C# 81,7 11,6 6,7 71,7 28,3 0 73,3 26,7 0

DES 91,7 8,3 0 93,3 6,7 0 100 0 0

Примечание: СЛ - случайные, НО - неопределенные, НС - неслучайные последовательности.

Генератор случайных чисел считается «хорошим», если большая часть вырабатываемых им ПСЧ проходит не менее определенного количества тестов каждой группы с положительным результатом. Конкретное количество тестов, которые должны пройти ПСЧ, чтобы генератор был признан «хорошим», определяется из условий решаемой задачи и фактически зависит от «жесткости» требований к качеству ПСЧ. Так, в задачах криптографии могут применяться только те генераторы, для которых все вырабатываемые последовательности признаются случайными.

Таким образом, основываясь на полученных данных, можно сделать вывод о том, что качество генератора ПСЧ, встроенного в язык программирования C++ (Builder 2006), практически в 4 раза выше качества генератора ПСЧ, встроенного в язык программирования C# (Visual Studio 2008), т. е. он вырабатывает в 4 раза меньше «плохих» последовательностей. Несмотря на то, что данные генераторы непригодны для задач криптографии, они вполне могут применяться в иных областях, например для тестирования компьютерных программ или в вычислительных процедурах типа Монте-Карло [6].

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

Заключение

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

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

СПИСОК ЛИТЕРАТУРЫ

1. Кнут Д. Э. Искусство программирования. - Т. 2. - М.: Вильямс, 2000. - 832 с.

2. Псевдослучайные последовательности / http://www.hardline.ru/selfteachers/Info/Security/Protection_to_ information /6/Index5.htm.

3. Колесова Н. А., Ажмухамедов И. М. Методика оценки качества последовательности случайных чисел // Вестн. Астрахан. гос. техн. ун-та. Сер.: Управление, вычислительная техника и информатика. -2010. - № 2. - С. 141-148.

4. Свидетельство об официальной регистрации программы для ЭВМ № 2010614210. Программа для комплексной оценки качества последовательностей случайных чисел / Н. А. Колесова, И. М. Ажмухамедов; зарег. в реестре программ для ЭВМ 30.06.2010.

5. Шнайер Б. Прикладная криптография: протоколы, алгоритмы и исходные тексты на языке С, часть 3. - М.: Триумф, 2002. - 816 с.

6. Метод Монте-Карло / http://www.statsoft.ru/home/portal/glossary/GlossaryTwo/M/MonteCarlo.htm.

Статья поступила в редакцию 9.12.2010

ESTIMATION OF QUALITY OF GENERATORS OF RANDOM NUMBER SEQUENCE

N. A. Kolesova

The technique, according to which the analysis of quality of generators of random number sequence built in popular programming languages C++ and C#, has been offered. The results of the analysis can find application in development of decisions on acceptability of use of such generators in various applied problems.

Key words: generator, random number sequence, independence, stochas-ticity, uniformity, programming languages.

i Надоели баннеры? Вы всегда можете отключить рекламу.