Таблица 4.9. Рекомендуемые параметры тестирования
n |
L |
Q = 10 2L |
387 840 |
6 |
640 |
904 960 |
7 |
1 280 |
2 068 480 |
8 |
2 560 |
4 654 080 |
9 |
5 120 |
11 342 400 |
10 |
10 240 |
22 753 280 |
11 |
20 480 |
49 643 520 |
12 |
40 960 |
107 560 960 |
13 |
81 920 |
231 669 760 |
14 |
163 840 |
496 435 200 |
15 |
327 680 |
1 059 061 760 |
16 |
655 360 |
Пример 4.8
Вход:
= 010110100111010101110; L = 2;
Q = 4.
Тест:
K21 4 6 .
2
Тестовый сегмент будет состоять из 6 блоков по 2 бита, следовательно, последний элемент последовательности (0) отбрасывается, как не принадлежащий ни одному блоку.
Инициализирующий сегмент:
и = 01011010.
Заполняем таблицу:
Блок «00» не встречается ни разу, следовательно, T0 = 0; Блок «01» встречается 2 раза, следовательно, T1 = 2; Блок «10» встречается 2 раза, следовательно, T2 = 4; Блок «11» не встречается ни разу, следовательно T3 = 0. Тестовый сегмент:
т= 011101010111.
i = 5: Значение блока = 1, sum log2 5 2 1,5849 , T1 = 5;
i = 6: Значение блока = 3, sum 1,5849 log2 6 0 4,1699 , T3 = 6; i = 7: Значение блока = 1, sum 4,1699 log2 7 5 5,1699 , T1 = 7;
130
i = 8: Значение блока = 1, sum 5,1699 |
log2 |
8 7 5,1699 , T1 = 8; |
i = 9: Значение блока = 1, sum 5,1699 |
log2 |
9 8 5,1699 , T1 = 9; |
i = 10: Значение блока = 3, sum 5,1699 log2 10 6 7,1699 , T3 = |
||
= 10; |
|
|
Во время выполнения операций тестовый сегмент изменялся следующим образом:
i |
T0 |
T1 |
T2 |
T3 |
|
(00) |
(01) |
(10) |
(11) |
||
|
|||||
4 |
0 |
2 |
4 |
0 |
|
5 |
0 |
5 |
4 |
0 |
|
6 |
0 |
5 |
4 |
6 |
|
7 |
0 |
7 |
4 |
6 |
|
8 |
0 |
8 |
4 |
6 |
|
9 |
0 |
9 |
4 |
6 |
|
10 |
0 |
9 |
4 |
10 |
fn |
7,1699 |
1,195 . |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Из табл. 4.8 для L = 2 находим значение expectedValue |
= 1,537. |
|||||||||||||||||||||
|
0,8 |
|
|
|
3 |
|
1,338 |
|
|
|
|
|
|
|
|
|
||||||
|
|
32 K 2 |
|
|
|
0,184 , |
|
|
|
|
||||||||||||
0,7 |
|
2 |
4 |
|
|
|
|
|
6 |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
2 15 |
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
f |
n |
expectedValue |
|
|
|
|
|
f |
n |
expectedValue |
|
|
|
||||||
|
|
|
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
P-value |
|
|
|
|
|
|
|
|
|
|
erfс |
|
|
|
|
2 |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
1,195 1,537 |
0,63 > 0,01 – тест пройден. |
|
|
|
|
||||||||||||||||
erfc |
2 0,184 |
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.10. Сжатие при помощи алгоритма Лемпела–Зива
Цель теста – проверить равномерность распределения 0 и 1 в исследуемой последовательности на основе анализа степени сжатия последовательности.
Пусть = 1, 2,…, n – двоичная последовательность длины n. Выделим из нее последовательные непересекающиеся и неповторяющиеся «слова», которые образуют «словарь».
131
Пример 4.9
Вход:
= 010110010.
Заполнение словаря:
Позиция бита |
Бит |
Новое слово? |
Слово |
1 |
0 |
Да |
0 (бит 1) |
2 |
1 |
Да |
1 (бит 1) |
3 |
0 |
Нет |
|
4 |
1 |
Да |
01 (биты 3–4) |
5 |
1 |
Нет |
|
6 |
0 |
Да |
10 (биты 5–6) |
7 |
0 |
Нет |
|
8 |
1 |
Нет |
|
9 |
0 |
Да |
010 (биты7–9) |
Таким образом, словарь состоит из пяти слов: (0, 1, 01, 10, 010).
Подсчитываем число слов в словаре Wobs. Данная величина аппроксимируется с нормальным распределением со средним и
отклонением , следовательно, можно рассчитать значение P- value:
|
|
W |
|
|
|||
|
|
erfс |
obs |
|
|
||
P-value X , , P-value W |
, , |
|
|
2 |
|
. |
|
|
|
|
|
|
|||
obs |
|
|
2 |
|
|
|
|
Значение P-value должно быть больше 0,01. |
|
|
|
|
|||
|
|
|
|
|
|||
Рекомендуемая длина последовательности: n = 1 000 000. |
Примечание. К сожалению, расчет значения и отклонения
является проблематичным. В качестве приближенных значений разработчики Руководства НИСТ указали 69 586,25 и
70,448718 , полученные для последовательностей длиной 106
бит с генераторов BBS (Blum-Blum-Shub) и генераторов, использующих в своей работе алгоритм SHA-1. Фиксированная длина тестируемой последовательности и использование экспериментальных значений вместо теоретических при расчете статистики теста привели к тому, что в новой ревизии Руководства НИСТ [16] данный тест отсутствует.
132
4.11. Проверка линейной сложности
Цель теста – исследовать последовательность на случайность, анализируя линейные сложности ее подпоследовательностей.
Пусть = 1, 2,…, n – двоичная последовательность длины n.
|
|
n |
|
|
Разобьем ее на |
N |
|
|
непересекающихся подпоследовательно- |
|
||||
|
M |
|
стей длиной М каждая. Лишние биты отбрасываем.
Определим линейную сложность Li, i 1, N , каждой подпосле-
довательности (т.е. минимальную длину регистра сдвига с линей-
ной обратной связью (LFSR – Linear Feedback Shift Register [10]),
необходимую для генерации данной подпоследовательности).
Пример 4.10
Вход:
= 1101011110001.
Определение линейной сложности:
Для генерации данной последовательности достаточно LFSR длиной 4 (рис. 4.1). Таким образом, линейная сложность последовательности равна 4.
Рис. 4.1. Пример LFSR, генерирующего последовательность = 1101011110001
133
Для вычисления линейной сложности также можно использовать алгоритм Берлекэмпа–Месси [3]. Данный алгоритм использует n итераций, причем N-я итерация, N n , определяет линейную
сложность подпоследовательности N , состоящей из первых N бит
исходной последовательности . Шаг 1. Инициализация:
С D 1 , L 0 , m 1 , B D 1, N 0 .
Шаг 2. Пока N n выполнить шаги 2.1–2.3.
Шаг 2.1. d с0 N 1 с1 N с2 N 1 ... сL N L 1 .
Шаг 2.2. Если d 1 , выполнить шаги 2.2.1 и 2.2.2.
Шаг 2.2.1. T D C D ,
сN m сN m b0 , сN m 1 сN m 1 b1 , … , сn 1 сn 1 bn N m 1 .
Шаг 2.2.2. Если L N2 , то L N 1 L , m N , B D T D .
Шаг 2.3. N N 1 .
Шаг 3. Возвратить значение L.
Пример 4.11
Вход:
= 1101011110001; n = 13.
Определение линейной сложности с помощью алгоритма Берле- кэмпа–Месси:
εN |
d |
|
T D |
|
|
|
C D |
|
|
L |
m |
|
B D |
|
N |
|||
|
c0 |
c1 |
c2 |
c3 |
|
c4 |
b0 |
b1 |
b2 |
b3 |
b4 |
|||||||
|
|
|
|
|
|
|
|
|||||||||||
- |
- |
- |
|
1 |
|
|
|
|
|
|
0 |
– 1 |
1 |
|
|
|
|
0 |
1 |
1 |
1 |
|
1 |
+ D |
|
|
1 |
0 |
1 |
|
|
|
|
1 |
|||
1 |
0 |
1 |
|
1 |
+ D |
|
|
1 |
0 |
1 |
|
|
|
|
2 |
|||
0 |
1 |
1+D |
1 + D + D2 |
|
|
2 |
2 |
1 + D |
|
3 |
||||||||
1 |
0 |
1+D |
1 + D + D2 |
|
|
2 |
2 |
1 + D |
|
4 |
||||||||
0 |
1 |
1+D+D2 |
1 |
+ D + |
|
|
3 |
4 |
1 + D + D2 |
|
5 |
|||||||
1 |
1 |
1+D +D3 |
1 |
|
+ D2 |
|
|
3 |
4 |
1 + D + D2 |
|
6 |
||||||
1 |
1 |
1 |
+D2 |
1 |
|
|
+ D3 |
+ D4 |
4 |
6 |
1 |
+ D2 |
|
7 |
||||
1 |
0 |
1 |
+D2 |
1 |
|
|
+ D3 |
+ D4 |
4 |
6 |
1 |
+ D2 |
|
8 |
||||
1 |
0 |
1 |
+D2 |
1 |
|
|
+ D3 |
+ D4 |
4 |
6 |
1 |
+ D2 |
|
9 |
||||
0 |
0 |
1 |
+D2 |
1 |
|
|
+ D3 |
+ D4 |
4 |
6 |
1 |
+ D2 |
|
10 |
||||
0 |
0 |
1 |
+D2 |
1 |
|
|
+ D3 |
+ D4 |
4 |
6 |
1 |
+ D2 |
|
11 |
||||
0 |
0 |
1 |
+D2 |
1 |
|
|
+ D3 |
+ D4 |
4 |
6 |
1 |
+ D2 |
|
12 |
||||
1 |
0 |
1 |
+D2 |
1 |
|
|
+ D3 |
+ D4 |
4 |
6 |
1 |
+ D2 |
|
13 |
134
Таким образом, линейная сложность последовательности равна 4. С D – образующий многочлен [10] LFSR, соответствующий
структуре генератора, полученной в примере 4.10.
Находим среднее значение |
|
M |
|
2 |
|||||
|
|
|
9 1 M 1 |
|
|
||||
|
M |
|
|
|
|
|
|||
|
|
3 |
9 |
||||||
|
|
|
|
|
|||||
2 |
36 |
|
2M |
|
|
и вычисляем статистику для каждой подпоследовательности:
Ti 1 M Li 92 .
Значения Ti распределяются на К + 1 категорий 0, …, K:
|
Ti 2,5, |
0 0 1; |
||||||
2,5 T 1,5, |
1; |
|||||||
|
i |
! |
|
1 |
|
|
||
1,5 T 0,5, |
|
2 |
|
2 |
1; |
|||
|
i |
|
|
|
|
|||
|
3 4 1; |
|||||||
0,5 Ti 0,5, |
||||||||
|
0,5 T 1,5, |
|
4 |
|
4 |
1; |
||
|
i |
|
|
|
|
|||
|
1,5 Ti 2,5, |
5 |
|
5 |
1; |
|||
|
Ti 2,5, |
6 6 1; |
||||||
|
||||||||
Вычисляется статистика |
|
|
|
2 |
|
|
|
|
|
K |
|
|
|
|
|
|
|
|
2 obs |
i N i |
|
, |
|
|||
|
|
|
||||||
|
i 0 |
N i |
|
|
|
|
которая анализируется при помощи критерия 2 с числом степеней
свободы, равным K.
Значения i определяются при помощи следующих формул:
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
||||
|
|
|
P T |
k 0 |
|
|
|
|
|
|
|
; |
|||||||
|
|
|
3 |
2 |
2 |
k 2 |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
||||
|
|
|
P T |
k 0 |
|
|
|
|
|
|
. |
||||||||
|
|
|
|
|
|
2 |
|
k |
|
1 |
|
||||||||
|
|
|
|
|
|
|
|
|
3 2 |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
Таким образом, получаем |
|
|
|
|
|
|
|
|
|
|
|
|||||||
π0 |
P(T 2,5) |
|
1 |
|
|
|
0,0104 , |
|
|
|
|
|
|
|
|||||
|
22 |
|
2,5 |
|
|
1 |
|
|
|
|
|
|
|
||||||
|
3 |
|
|
135 |
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
π1 P(T 1,5) π0 3 22 1 1,5 1 0,0104 0,0312 ,
π2 P(T 0,5) π1 π0 3 22 1 0,5 1 0,0312 0,0104 0,125 ,
π6 P(T 2,5) 3 2212,5 2 0,0208 ,
π5 P(T 1,5) π6 3 2211,5 2 0,0208 0,0625 ,
π4 P(T 0,5) π5 π6 3 2210,5 2 0,0625 0,0208 0,25
π3 1 π0 π1 π2 π6 π5 π4 1 0,0104 0,0312 0,125 .
0,0208 0,0625 0,25 0,5.
Вычисляем значение P-value:
P-value , 2 obs P-value K, 2 obs igamc |
K |
, |
2 obs |
. |
|
|
|||
2 |
|
2 |
|
|
Значение P-value должно быть больше 0,01. |
|
|
|
Рекомендуемые параметры тестирования: n 1 000 000, 500 M
5000, N 200.
Пример 4.12
Вход:
= 1101011110001; M = 13.
Тест:
n |
13 |
|
|
||
N |
|
|
|
|
1. |
|
|||||
m |
13 |
|
|
Минимальная длина LFSR, необходимого для генерация данной последовательности, равна 4, т.е. L1 = 4.
|
|
|
9 ( 1)13 1 |
|
|
|
13 |
|
2 |
|
||
|
13 |
|
|
|
|
|
|
|
||||
|
|
|
|
3 |
9 |
|||||||
μ |
|
|
13 |
6,77 , |
||||||||
2 |
36 |
|
|
|
||||||||
|
|
|
|
2 |
|
2 |
|
|
||||
T ( 1)13 (4 6,77) |
3 . |
|
|
|||||||||
|
|
|
||||||||||
1 |
|
|
|
|
9 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
136 |
0 = 0, 1 = 0, 2 = 0, 3 = 0, 4 = 0, 5 = 0, 6 = 1. |
|
|
|
|
|
|
||||||||||||||
χ2 (obs) |
(0 1 0,0104)2 |
|
(0 1 0,0312)2 |
|
(0 1 0,125)2 |
|
|
|||||||||||||
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
1 0,0104 |
|
|
|
1 0,312 |
|
|
|
1 0,123 |
|
|
|
|
|||
|
(0 1 0,5)2 |
|
|
(0 1 0,25)2 |
(0 1 0,625)2 |
(1 1 0,0208)2 |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48,61, |
||
|
1 0,5 |
1 0,25 |
|
|
1 0,625 |
|
|
|
1 0,208 |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
P-value , |
2 |
|
|
|
|
|
|
|
|
|
6 |
, |
48,61 |
|
|
||||
|
|
obs P-value 6; 48,61 igamc |
2 |
2 |
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8,9 10 9 < 0,01 – тест не пройден.
4.12. Проверка серий
Цель теста – исследовать последовательность на случайность, анализируя число появлений серий различной длины.
Пусть = 1, 2,…, n – двоичная последовательность длины n, m – длина серии. Сформируем последовательность =1, 2,…, n, 1, 2,…, m-1, добавив к концу последовательности первые m – 1 битов той же самой последовательности. Подсчитаем
число появлений i |
...i |
m |
всевозможных пересекающихся серий дли- |
||||||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
ной m, i |
...i |
m 1 |
|
– длиной m – 1 |
и |
i |
...i |
m 2 |
– |
длиной m – 2. |
|
||||||||||||||||||||||||||||||||||
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
Вычислим статистики |
|
|
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
2 |
|
|
2m |
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
2m |
|
|
|
|
2 |
|
|
|
|
|
|||||||||||||
|
|
|
m |
|
|
|
|
|
|
|
i |
...i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i ...i |
n , |
|
||||||||||||||||
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
i |
|
...i |
|
|
1 |
|
|
m |
|
2m |
|
|
|
|
|
n i |
...i |
|
|
1 |
m |
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 |
m |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
m |
|
|
|
|
|
|
||||||
2 |
|
|
|
2m 1 |
|
|
|
|
|
|
|
|
|
|
|
n 2 |
|
|
|
2m 1 |
|
|
|
2 |
|
|
|
|
|||||||||||||||||
m 1 |
|
|
|
|
|
|
|
|
|
i |
...i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i ...i |
|
|
n , |
||||||||||||
|
|
n |
|
|
|
|
|
|
2m 1 |
|
|
|
|
n |
|
|
|
|
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
i |
...i |
|
|
|
1 |
|
|
m 1 |
|
|
|
|
|
|
|
|
|
|
|
i |
...i |
1 |
|
m 1 |
|
|||||||||||
|
|
|
|
|
|
|
1 |
m 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
m 2 |
|
|
|
|
|||||||
2 |
|
|
|
2m |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n 2 |
|
|
|
|
2m 2 |
|
|
|
2 |
|
|
|
|
||||||||||||
m 2 |
|
|
|
|
|
|
|
|
|
|
|
|
i |
...i |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
i |
...i |
|
n . |
||||||
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
i ...i |
|
|
|
|
1 |
|
|
m 2 |
|
|
2m 2 |
|
|
|
|
|
|
|
|
i ...i |
1 |
|
m 2 |
|
||||||||||||
|
|
|
|
|
|
|
1 |
m 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 m 2 |
|
|
|
|
Значения i1 ...im не являются независимыми, поэтому применить
критерий к статистике 2m критерий 2 нельзя. В связи с этим вычисляются статистики
2m 2m 2m 1 ,2 2m 2m 2 2m 1 2m 2 ,
137