Меню
Главная
Случайная статья
Настройки
|
Тестирование псевдослучайных последовательностей — совокупность методов определения меры близости заданной псевдослучайной последовательности к случайной. В качестве такой меры обычно выступает наличие равномерного распределения, большого периода, равной частоты появления одинаковых подстрок и т. п.
Содержание
Теоретическая основа
Принципы построения
Один из самых наглядных тестов — тест на равномерное распределение частот появления каждого символа. Пусть — последовательность длиной n и размерности m. Тогда частоты i должны принадлежать отрезку . Однако, большинство тестов используют другой метод — принятие или отклонение гипотезы о случайности последовательности, используя статистические распределения.
Зная вероятностные свойства истинно случайной последовательности, можно на их основе проверять гипотезу о том, насколько сгенерированная последовательность похожа на случайную. Для этого для каждого теста подбирается подходящая статистика, вычисляется её значения для идеальной и сгенерированной последовательности. Если разность этих значений превышает некоторое критическое значение, установленное заранее, то последовательность считается неслучайной. Для «хороших» последовательностей вероятность такого события крайне мала (допустим ~0,001 и обозначим её ). Однако, существует вероятность того, что «плохая» последовательность удовлетворит критерию и будет сделан вывод о её случайности (обозначим вероятность такого события ). На практике значения длины последовательности n, и связаны, задаётся и подбирается n такое, чтобы минимизировать .
Определим величину P-value как вероятность того, что идеальный генератор сгенерировал последовательность менее случайную, чем исследуемый. Тогда если P-value больше , то исследуемая последовательность считается случайной и наоборот в противном случае.
Кратко шаги статистического тестирования можно изобразить в виде таблицы:
№ шага
|
Процесс
|
Комментарии
|
1
|
Постановка гипотезы
|
Предполагаем, что последовательность является случайной
|
2
|
Вычисление статистики исследуемой последовательности
|
Тестирование на битовом уровне
|
3
|
Вычисление P-value
|
P-value[0; 1]
|
4
|
Сравнение P-value с
|
Задаем в пределах [0,001; 0,01]; если P-value>, то тест пройден
|
Интерпретация результатов
Пусть дана двоичная последовательность s. Требуется установить, проходит ли данная последовательность статистический тест или нет. Для этого используются несколько различных подходов:
- пороговое значение
- фиксированный диапазон значений
- значение вероятности
Данный подход заключается в подсчёте какой-либо статистической величины двоичной последовательности с(s) и его сравнении с некоторым пороговым значением. Если полученное значение с(s) меньше порогового значения, то последовательность s не проходит данный тест.
Подход также заключается в подсчёте некоторой статистической величины двоичной последовательности с(s) как и в первом случае. Однако теперь мы говорим, что если с(s) выходит за пределы некоторого диапазона значений, то последовательность s не проходит данный тест.
Третий подход в определении того факта, что двоичная последовательность s проходит статистический тест, включает подсчёт не только статистической величины с(s), но и соответствующее ей значение вероятности p. Обычно подсчёт конкретной статистической величины производится таким образом, чтобы её большие значения предполагали неслучайный характер последовательности s. Тогда p есть вероятность получения значения с(s) большего либо равного значению с(s'), высчитанного для истинно случайной последовательности s'. Следовательно, малые значения вероятности p (обычно p < 0,05 или p < 0,01) могут быть интерпретированы как доказательство того, что s не является случайной. Таким образом, если для некоторого фиксированного значения a значение вероятности p < a, то двоичная последовательность s не проходит данный тест. Как правило, a принимает значения из интервала [0,001;0,01].
Графические тесты
К этой категории относятся тесты, результаты которых отображаются в виде графиков, характеризующих свойства исследуемой последовательности. Среди них:
- гистограмма распределения элементов последовательности;
- позволяет оценить равномерность распределения символов в последовательности и определить частоту повторения каждого символа;
- распределение на плоскости;
- предназначено для определения зависимости между элементами последовательности;
- проверка серий;
- позволяет определить равномерность отдельных символов в последовательности, а также равномерность распределения серий из k бит;
- проверка на монотонность;
- служит для определения равномерности исходя из анализа невозрастающих и неубывающих подпоследовательностей;
- автокорреляционная функция;
- предназначена для оценки корреляции между сдвинутыми копиями последовательностей и отдельных подпоследовательностей;
- профиль линейной сложности;
- тест оценивает зависимость линейной сложности последовательности от её длины;
- графический спектральный тест;
- позволяет оценить равномерность распределения бит последовательности на основании анализа высоты выбросов преобразования Фурье.
Результаты графических тестов интерпретируются человеком, поэтому на их основе выводы могут быть неоднозначными.
Статистические тесты
В отличие от графических тестов, статистические тесты выдают численную характеристику последовательности и позволяют однозначно сказать, пройден ли тест. Наиболее известны следующие программные пакеты статистических тестов:
№ |
Название |
Автор |
Организация
|
1 |
Тесты NIST[1] |
Andrew Rukhin, et. al. |
NIST ITL
|
2 |
TEST-U01[2] |
P.L’Ecuyer и др. |
Universite de Montreal
|
3 |
CRYPT-X[3] |
Helen Gustafson и др. |
Queensland University of Technology
|
4 |
The pLab Project[4] |
Peter Hellekalek |
University of Salzburg
|
5 |
DIEHARD[5] |
George Marsaglia |
Florida State University
|
6 |
Dieharder[6] |
Robert G. Brown |
Duke University
|
7 |
ENT[7] |
John Walker |
Autodesk, Inc.
|
8 |
The Art Of Computer Programming Vol. 2 Seminumerical Algorithms[8] |
Дональд Кнут |
Stanford University
|
9 |
Handbook of Applied Cryptography[9] |
Alfred Menezes и др. |
CRC Press, Inc.
|
Тесты DIEHARD
Тесты DIEHARD были разработаны Джорджем Марсальей[англ.] в течение нескольких лет и впервые опубликованы на CD-ROM, посвящённом случайным числам. Они рассматриваются как один из наиболее строгих известных наборов тестов.
Тесты Д. Кнута
Тесты Кнута основаны на статистическом критерии . Вычисляемое значение статистики сравнивается с табличными результатами, и в зависимости от вероятности появления такой статистики делается вывод о её качестве. Среди достоинств этих тестов — небольшое их количество и существование быстрых алгоритмов выполнения. Недостаток — неопределенность в трактовке результатов.
Вот краткое описание этих тестов:
- Проверка несцепленных серий. Последовательность разбивается на m непересекающихся серий и строится распределение для частот появления каждой возможной серии.
- Проверка интервалов. Данный тест проверяет равномерность распределения символов в исследуемой последовательности, анализируя длины подпоследовательностей, все элементы которых принадлежат определённому числовому интервалу.
- Проверка комбинаций. Последовательность разбивается на подпоследовательности определённой длины, и исследуются серии, состоящие из различных комбинаций чисел.
- Тест собирателя купонов. Пусть — последовательность длины n и размерности m. Исследуются подпоследовательности определённой длины, содержащие каждое m-разрядное число.
- Проверка перестановок. Данный тест проверяет равномерность распределения символов в исследуемой последовательности, анализируя взаимное расположение чисел в подпоследовательностях.
- Проверка на монотонность. Служит для определения равномерности исходя из анализа невозрастающих и неубывающих подпоследовательностей.
- Проверка корреляции. Данный тест проверяет взаимонезависимость элементов последовательности.
Тесты NIST
Отличие этих тестов от других современных — открытость алгоритмов. Также среди достоинств — однозначная интерпретация результатов тестирования.
Таблица общих характеристик:
№
|
Название теста
|
Определяемый дефект
|
1
|
Частотный тест
|
Слишком много нулей или единиц
|
2
|
Проверка кумулятивных сумм
|
Слишком много нулей или единиц в начале последовательности
|
3
|
Проверка «дырок» в подпоследовательностях
|
Отклонение в распределении последовательностей единиц
|
4
|
Проверка «дырок»
|
Большое (малое) число подпоследовательностей нулей и единиц свидетельствует, что колебание потока бит слишком быстрое (медленное)
|
5
|
Проверка рангов матриц
|
Отклонение распределения рангов матриц от соответствующего распределения для истинно случайной последовательности, связанное с периодичностью последовательностей
|
6
|
Спектральный тест
|
Периодические свойства последовательности
|
7
|
Проверка непересекающихся шаблонов
|
Непериодические шаблоны встречаются слишком часто
|
8
|
Проверка пересекающихся шаблонов
|
Слишком часто встречаются m-битные последовательности единиц
|
9
|
Универсальный статистический тест Маурера
|
Сжимаемость (регулярность) последовательности
|
10
|
Проверка случайных отклонений
|
Отклонение от распределения числа появлений подпоследовательностей определённого вида
|
11
|
Разновидность проверки случайных отклонений
|
Отклонение от распределения числа появлений подпоследовательностей определённого вида
|
12
|
Проверка аппроксимированной энтропии
|
Неравномерность распределения m-битных слов. Малые значения означают высокую повторяемость
|
13
|
Проверка серий
|
Неравномерность распределения m-битных слов
|
14
|
Сжатие при помощи алгоритма Лемпела-Зива
|
Большая сжимаемость, чем истинно случайная последовательность
|
15
|
Линейная сложность
|
Отклонение от распределения линейной сложности для конечной длины подстроки
|
Практические приложения
Генераторы случайных и псевдослучайных чисел являются связующим звеном в обеспечении информационной безопасности. В некотором смысле это жизненно важные строительные блоки криптографических алгоритмов и протоколов. Поскольку такие генераторы применяются во многих криптографических задачах, например формирование случайных параметров и ключей систем шифрования, то требования, предъявляемые к ним, оказываются достаточно высокими. В частности, одним из критериев абсолютно произвольной двоичной последовательности, получаемой на выходе генератора, является невозможность её предсказания в отсутствие какой-либо информации о данных, подаваемых на вход генератора. Поэтому на практике статистические тесты проводят для проверки случайного характера бинарной последовательности, формируемой генератором случайных или псевдослучайных чисел. Что в свою очередь позволяет выявить генераторы, заранее удовлетворяющие требованиям конкретной криптографической задачи.
Конкурс AES
С целью утверждения нового стандарта шифрования Advanced Encryption Standard Национальный институт стандартов и технологий при поддержке правительства США провёл конкурс, в ходе которого были протестированы 15 претендовавших алгоритмов. Один из критериев, используемых при оценке алгоритмов, заключался в их пригодности в качестве генераторов случайных чисел. Проверка таких генераторов на предмет формирования случайных двоичных последовательностей с хорошими статистическими свойствами осуществлялась с помощью набора статистических тестов NIST.
В течение первого раунда AES тестирование проводилось с 128-битными ключами. Лишь 9 алгоритмов из 15 алгоритмов смогли пройти статистические тесты[10].
По результатам первого раунда 5 алгоритмов шифрования были выбраны в качестве финалистов AES: MARS, RC6, Rijndael, Serpent и Twofish. Во втором раунде конкурса AES оценка пригодности этих 5 алгоритмов в качестве генераторов случайных чисел проводилась на основе 192-битных и 256-битных ключей. Продолжительность статистических тестов NIST составила несколько месяцев, причем вычисления производились на многочисленных рабочих станциях Sun Ultra. Все данные формировались и обрабатывались в режиме онлайн. В результате второго раунда было показано, что каждый из пяти финалистов формирует случайную бинарную последовательность с хорошими статистическими свойствами и поэтому может быть использован в качестве генератора псевдослучайных чисел, причем имеется возможность использования ключей размерами: 128, 192 и 256 бит[11].
См. также
Примечания
- NIST Cryptographic Toolkit . Дата обращения: 8 мая 2010. Архивировано 17 августа 2011 года.
- TestU01 . Дата обращения: 8 мая 2010. Архивировано 23 июля 2010 года.
- Crypt-X Архивная копия от 22 сентября 2008 на Wayback Machine. The Information Security Research Centre.
- The pLab Project . Дата обращения: 21 ноября 2009. Архивировано из оригинала 14 ноября 2009 года.
- The DIEHARD Test Suite Архивировано 25 января 2016 года.
- Dieharder: A Random Number Test Suite . Дата обращения: 8 мая 2010. Архивировано 10 июня 2010 года.
- ENT . Дата обращения: 8 мая 2010. Архивировано 15 мая 2010 года.
- Donald E. Knuth. The Art of Computer Programming, Vol.2: Semi-Numerical Algorithms Архивная копия от 4 сентября 2008 на Wayback Machine / 3rd ed. Addison-Wesley, 1998
- Alfred Menezes и др. Handbook of Applied Cryptography Архивная копия от 7 марта 2005 на Wayback Machine
- NIST IR 6390 Randomness Testing of the Advanced Encryption Standard Candidate Algorithms Архивная копия от 6 ноября 2010 на Wayback Machine (англ.)
- NIST IR 6483 Randomness Testing of the Advanced Encryption Standard Finalist Candidates Архивная копия от 27 мая 2010 на Wayback Machine (англ.)
Литература
Ссылки
|
|