- •Введение
- •1 Теоретические сведения
- •Требования к ключевым данным
- •Варианты систем тестирования
- •1.3 Тесты по стандарту fips-140-3
- •1.3.1 Монобитный тест
- •Пусть число битов в проверяемой последовательности равно l, число единиц – , число нулей – n0 .В данном тесте вычисляется следующее значение: (1.1)
- •1.3.2 Блочный тест
- •1.3.3 Серийный тест
- •1.3.4 Покерный тест
1.3.1 Монобитный тест
Монобитный тест – самый простой тест из FIPS-140-3. Он основан на определении соотношения между нулями и единицами во всей двоичной последовательности. Его используют для того, чтобы выяснить, действительно ли число нулей и единиц в последовательности приблизительно одинаковы, как это должно быть в случае истинно случайной последовательности. Тест оценивает, насколько доля единиц близка к 0,5. Таким образом, для успешного прохождения теста, нужно чтобы в сгенерированной последовательности количество нулей и единиц было примерно одинаковым. Если вычисленное в ходе теста значение вероятности p < 0,01, то данная двоичная последовательность не является истинно случайной. В противном случае, последовательность носит случайный характер. Все последующие тесты проводятся при условии, что пройден монобитный тест.
Алгоритм монобитного теста следующий:
Пусть число битов в проверяемой последовательности равно l, число единиц – , число нулей – n0 .В данном тесте вычисляется следующее значение: (1.1)
Если значение Хl превысит некоторый порог (который зависит от p), то генератор не проходит тест. Поскольку Хl имеет приблизительно х распределение с одной степенью свободы, то в качестве порога было взято число 6,63 (так как ).
Единственной сложностью здесь является эффективный подсчет числа различных битов, так как в большинстве современных вычислительных архитектур нет команд для работы с отдельными битами. Число мысленно разбивается на ячейки, равной длины и биты в старшей и младшей половинах ячейки рассматривается как число битов в соответствующей части ячейки. Затем параллельно для всех ячеек число битов в обеих половинах ячейки суммируются и результат записывается в младшую часть. Вначале суммирование производится для ячеек размером 2 бита, потом 4 и так далее до 32. В результате мы получаем полное число битов за логарифмическое (от длины машинного слова) время.
1.3.2 Блочный тест
Пусть m положительное целое число, такое, что и пусть Разобьем последовательность x на k непересекающихся подпоследовательностей, каждая длиной m, и пусть ni будет числом появлений i-го типа последовательности длиной m,. Блочный тест определяет, действительно ли последовательности длиной m, появляются приблизительно столько же раз в последовательности x, столько же раз, сколько ожидается для случайной последовательности. Для применения критерия используется расчет параметра
(1.2)
который согласуется с распределением χ2 с 2m – 1 степенями свободы. Статистический параметр, задаваемый уравнением, вычисляется для m = 4. Статистика должна удовлетворять условию 1,03 < X3 < 57,4.
1.3.3 Серийный тест
Данный тест определяет число вхождений серий одинаковых битов различной длины. В идеальной случайной последовательности среднее число серий длиной равняется
(1.3)
Пусть число единичных и нулевых серий в проверяемой последовательности равняется и соответственно. Статистика данного теста вычисляется по формуле (1.4):
(1.4)
Данная статистика имеет распределение с степенями свободы. Для произвольного числа , содержащего серию нулевых битов длиной в младших разрядах, содержит серию из единичных битов в младших разрядах (все остальные биты нулевые). Длину выделенной таким образом канонической серии единичных битов можно считать бинарным поиском.