Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Чугунков Методы и средства оценки качества генераторов 2012.pdf
Скачиваний:
14
Добавлен:
12.11.2022
Размер:
4.26 Mб
Скачать

Таблица 4.13. Результаты тестирования m последовательностей набором из t статистических тестов

Последовательность

Тест 1

Тест 2

Тест t

(1)

Прошла /

Прошла /

Прошла /

 

Не прошла

Не прошла

 

Не прошла

(2)

Прошла /

Прошла /

Прошла /

 

Не прошла

Не прошла

 

Не прошла

(m)

Прошла /

Прошла /

Прошла /

 

Не прошла

Не прошла

 

Не прошла

Результат проверки

Прошел /

Прошел /

Прошел /

генератора ПСП

Не прошел

Не прошел

Не прошел

4.17.5. Принятие решения о свойствах генератора

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

156

ГЛАВА 5. ДРУГИЕ ТЕСТЫ

Три предыдущие подборки – система «DIEHARD», Руководство НИСТ и набор тестов Д. Кнута – традиционно используются при оценке качества генераторов псевдослучайных последовательностей благодаря открытости исходных кодов и достаточно подробному описанию. Тесты, приведенные в данной главе, применяются гораздо реже, однако также заслуживают внимания.

5.1. Система CRYPT-X

Данная система [22] разработана Хелен Густафсон (Helen Gustafson), Эдом Доусоном (Ed Dawson), Лорен Нильсен (Lauren Nielsen) и Уильямом Каэли (William J. Caelli). По непонятной причине описание системы и связанные с ней статьи находятся в полузакрытом доступе, программная реализация отсутствует по анонси-

руемому адресу http://www.isi.qut.edu.au/resources/cryptx. Вполне вероятно, что именно по этой причине данный набор тестов не так распространен, как рассмотренные раннее. Также следует отметить, что ряд идей, предложенных в системе, пусть и в несколько видоизмененном виде использовался при разработке Руководства НИСТ.

Всостав системы входят следующие тесты:

частотный тест (frequency test);

частотный тест в подпоследоватлеьностях;

тест серий (serial test);

проверка на равномерность (runs test);

сложность последовательности (sequence complexity);

линейная сложность (linear complexity);

бинарное ускорение (binary derivative);

бинарное ускорение в подпоследовательностях;

точка расхождения (change point);

точка расхождения в подпоследовательностях.

5.1.1. Частотный тест

Цель теста – проверить равномерность появления 0 и 1 в исследуемой последовательности.

157

Пусть = 1, 2,…, n – двоичная последовательность длины n. Определяем n0 – число появлений 0 и n1 – число появлений 0. Вычисляем статистику теста

2 obs n1 n0 2 , n

которая анализируется при помощи критерия 2 с числом степеней

свободы, равным 1. Вычисляется значение P-value:

 

2 obs

 

P-value , 2 obs P-value 1, 2 obs igamc 1

,

.

2

 

2

 

Значение P-value должно быть больше 0,01.

 

 

 

Пример 5.1

 

 

 

Вход:

 

 

 

= 11001001000011111101101010100010001000010110100011 00001000110100110001001100011001100010100010111000;

n = 100.

Тест:

Число единиц: n1 42 ;

 

 

 

 

 

 

 

Число нулей: n0 58 .

 

 

 

 

 

 

 

2 obs

n1

n0 2

 

42 58 2

2,56 .

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

100

 

 

 

 

 

 

 

P-value ,

2

obs P-value 1; 2,56

 

1

 

2,56

 

 

 

igamc

 

,

 

 

 

 

2

2

 

 

 

 

 

 

 

 

 

 

 

0,109599 > 0,01 – тест пройден.

Примечание. Данный тест по своей структуре схож с частотным тестом Руководства НИСТ [16].

5.1.2. Частотный тест в подпоследовательностях

Цель теста – проверить равномерность появления 0 и 1 в подпоследовательностях исследуемой последовательности.

Пусть = 1, 2,…, n – двоичная последовательность длины n.

Разделим ее на N

n

 

подпоследовательностей длиной m. Лиш-

 

m

 

 

 

 

158

ние биты отбрасываем. Подсчитываем j

( j

1, k

) – число под-

последовательностей, имеющих в своем составе ровно j единиц (вk записывается число подпоследовательностей, имеющих k и бо-

лее единиц). Вычисляем статистику

k

 

i

Np

2

2 obs

 

i

 

,

 

 

Npi

 

i 1

 

 

 

 

где соответствующие вероятности вычисляются по следующей формуле:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

1

, i 1, k 1 ;

 

 

 

 

 

 

m

 

 

 

 

2

 

 

 

 

i

 

 

 

 

 

pi

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

1

p j ,

i k.

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

Полученная статистика анализируется при помощи критерия 2 с числом категорий, равным k 1. Вычисляется значение P-value:

P-value , 2 obs P-value k 1, 2 obs igamc

k 1

,

2 obs

.

 

 

2

 

2

 

Значение P-value должно быть больше 0,01.

В системе CRYPT-X используются следующие параметры: m = 56, k = 47. Значения соответствующих вероятностей приведены в табл. 5.1.

Примечание 1. Данный тест по своей структуре схож с тестом «Частотный тест в подпоследовательностях» Руководства НИСТ.

Примечание 2. Тест можно существенно усилить, если рассматривать не ограниченное число категорий k, а все возможные категории m.

159

Таблица 5.1. Значения вероятностей pi, i 1,48 для частотного теста в подпоследовательностях

i = 2

i = 3

i = 3

i = 3

i = 5

0,000000000

0,000000000

0,000000000

0,000000000

0,000000000

i = 6

i = 7

i = 8

i = 9

i = 10

0,000000000

0,000000003

0,000000020

0,000000105

0,000000494

i = 11

i = 12

i = 13

i = 14

i = 15

0,000002066

0,000007749

0,000026228

0,000080557

0,000225559

i = 16

i = 17

i = 18

i = 19

i = 20

0,000577995

0,001359989

0,002946643

0,005893286

0,010902578

i = 21

i = 22

i = 23

i = 24

i = 25

0,018690134

0,029734304

0,043955059

0,060438206

0,077360904

i = 26

i = 27

i = 28

i = 29

i = 30

0,092238000

0,102486667

0,106146905

0,102486667

0,092238000

i = 31

i = 32

i = 33

i = 34

i = 35

0,077360904

0,060438206

0,043955059

0,029734304

0,018690134

i = 36

i = 37

i = 38

i = 39

i = 40

0,010902578

0,005893286

0,002946643

0,001359989

0,000577995

i = 41

i = 42

i = 43

i = 44

i = 45

0,000225559

0,000080557

0,000026228

0,000007749

0,000002066

i = 46

i = 47

 

 

 

0,000000494

0,000000129

 

 

 

Пример 5.2

Вход:

= 11001001000011111101101010100010001000010110100011

00001000110100110001001100011001100010100010111000; n = 100;

m = 10.

Тест:

N100 10 .

10

k = 10.

1 = 1100100100, 4 1,

2 = 0011111101, 7 1,

160

3 = 1010101000,

4 2 ,

4 = 1000100001,

3

1,

5 = 0110100011,

5

1,

6

= 0000100011,

3 2

,

7

= 0100110001,

4

3

,

8

= 0011000110,

4 4 ,

9

= 0110001010,

4

5

,

10

= 0010111000, 4 6 .

 

 

 

 

 

Получаем

 

 

 

 

 

 

 

 

 

 

1 0 ,

2 0 ,

3 2 ,

4 6 ,

5 1,

6 0 ,

7 1,

8 0 ,

9

0 , 10 0 .

 

 

 

 

 

 

 

10

 

1

 

 

 

 

 

 

 

 

p1

 

 

 

 

0,010 ;

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

 

 

 

 

 

 

 

10

 

 

 

1

 

 

 

 

 

 

 

 

p2

 

 

 

 

 

0,044 ;

 

 

 

 

 

 

10

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

10

 

 

1

 

 

 

 

 

 

 

 

p3

 

 

 

 

 

0,117 ;

 

 

 

 

 

 

10

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

10

 

 

 

1

 

 

 

 

 

 

 

 

p4

 

 

 

 

 

0,205 ;

 

 

 

 

 

 

10

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

10

 

 

 

1

 

 

 

 

 

 

 

 

p5

 

 

 

 

 

0,246 ;

 

 

 

 

 

 

10

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

10

 

 

 

1

 

 

 

 

 

 

 

 

p6

 

 

 

 

 

0,205 ;

 

 

 

 

 

 

10

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

10

 

 

 

1

 

 

 

 

 

 

 

 

p7

 

 

 

 

 

0,117 ;

 

 

 

 

 

 

10

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

10

 

 

 

1

 

 

 

 

 

 

 

 

p8

 

 

 

 

 

0,044 ;

 

 

 

 

 

 

10

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

10

 

 

 

1

 

 

 

 

 

 

 

 

p9

 

 

 

 

 

0,010 ;

 

 

 

 

 

 

10

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

161

 

 

 

 

 

10

 

 

1

 

p10

 

 

 

0,001;

10

 

 

 

10

 

 

2

 

2 obs

0 10 0,010 2

 

0 10 0,044 2

 

2 10 0,117 2

 

 

 

 

 

 

10 0,044

 

 

 

 

 

 

 

 

 

10 0,010

 

 

10 0,117

 

 

 

 

 

 

6 10 0,205 2

 

 

1 10 0,246 2

 

 

0 10 0,205 2

 

 

1 10 0,117 2

 

 

10 0,205

 

 

10 0,246

 

 

10 0,205

 

 

 

10 0,117

 

 

0 10 0,044 2

 

 

0 10 0,010 2

 

 

0 10 0,001 2

 

12,23.

 

 

10 0,044

 

10 0,010

 

10 0,001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P-value ,

2

obs

 

 

 

 

 

 

 

 

 

10 1

,

12,23

 

 

 

P-value 10 1;12,23 igamc

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,200651 > 0,01 – тест пройден.

5.1.3. Проверка серий

Цель теста – исследовать последовательность на случайность, анализируя серии из двух бит.

Пусть = 1, 2,…, n – двоичная последовательность длины n. Разобьем ее на пересекающиеся серии из двух бит и подсчитаем n0

число появлений 0 и n1 – число появлений 1, а также число появ-

лений серий каждого типа:

n00 – число появлений серий вида «00»; n01 – число появлений серий вида «01»; n10 – число появлений серий вида «10»; n11 – число появлений серий вида «11».

Вычислим статистику

2 obs

4

1 1

n2

 

2

1

n2

1 ,

 

 

 

 

 

 

ij

 

 

i

 

 

n 1 i 0 j 0

 

 

n i 0

 

 

которая анализируется при помощи критерия 2 с числом степеней

свободы, равным 2. Вычислим значение P-value:

 

 

2 obs

 

P-value , 2 obs P-value 2, 2 obs igamc

2

,

.

 

 

 

2

 

2

 

Значение P-value должно быть больше 0,01.

162

Примечание. Данный тест по своей структуре схож с проверкой серий Руководства НИСТ.

Пример 5.3

Вход:

= 0011011101; n = 10.

Тест:

Число единиц: n1 6 ;

Число нулей: n0 4 .

Разобьем последовательность на пересекающиеся серии длиной два бита:

{00}, {01}, {11}, {10}, {01}, {11}, {11}, {10}, {01}.

Подсчитаем число серий каждого вида:

n00

1;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n01

3 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n10

2 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n11

3 .

 

 

 

 

12 32 22 32

 

 

 

42

62 1 1,18 .

2 obs

 

4

 

 

2

 

10 1

10

 

 

 

 

 

 

 

 

 

P-value ,

2

obs P-value 2; 1,18

 

 

 

2

 

1,18

 

 

igamc

 

,

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

0,554327 > 0.01 – тест пройден.

5.1.4. Проверка на равномерность

Цель теста – проверить равномерность распределения 0 и 1 в исследуемой последовательности на основе анализа количества появлений «блоков» – подпоследовательностей, состоящих из одних единиц, и «дырок» – подпоследовательностей, состоящих их одних нулей.

Пусть = 1, 2,…, n – двоичная последовательность длины n. Прежде чем выполнить непосредственно тест, вычисляются число

единиц n1 и нулей n0 и анализируются результаты теста «проверка серий». Если проверка серий не пройдена, то и тест «проверка на

163

равномерность» считается не пройденным, в противном случае определяются следующие значения:

blocksj – число появлений «блоков» длиной j, j 1, m

blocksm записывается число «блоков» с длиной, большей либо равной m)

 

gapsj – число появлений «дырок» длиной j, j

1, m

gapsm

 

записывается число «дырок» с длиной, большей либо равной

 

m);

runs – общее число блоков и дырок, то есть

runs m blocks j gaps j .

j 1

Для «блоков» и «дырок» вычисляется статистика

 

2

 

2

 

2 obs blocksj np j

gaps j np j .

m

 

m

 

 

j 1

np j

j 1

np j

 

Соответствующие вероятности вычисляются по формуле

 

 

1

 

 

 

 

 

,

j 1, m 1 ;

 

 

 

2

2 j

 

 

 

 

 

 

p j

1

m 1

 

 

 

 

j m.

 

4

pi ,

 

i 1

 

 

 

Полученная статистика анализируется при помощи критерия 2 с числом степеней свободы, равным 2m . Вычисляется значение P-

value:

 

 

obs

 

 

 

2

 

P-value , 2 obs P-value 2m, 2 obs igamc m,

 

.

 

 

 

2

 

 

 

 

 

Значение P-value должно быть больше 0,01.

В системе CRYPT-X используется значение m, равное 26. Соответствующие вероятности приведены в табл. 5.2.

164

Mean 1

Таблица 5.2. Значения вероятностей pi, i 1, 26 для теста «проверка на равномерность»

i = 1

i = 2

i = 3

i = 4

i = 5

i = 6

0,125000000

0,062500000

0,031250000

0,015625000

0,007812500

0,003906250

I = 7

i = 8

i = 9

i = 10

i = 11

i = 12

0,001953125

0,000976563

0,000488281

0,000244141

0,000122070

0,000061035

i = 13

i = 14

i = 15

i = 16

i = 17

i = 18

0,000030518

0,000015259

0,000007629

0,000003815

0,000001907

0,000000954

i = 19

i = 20

i = 21

i = 22

i = 23

i = 24

0,000000477

0,000000238

0,000000119

0,000000060

0,000000030

0,000000015

i = 25

i = 26

 

 

 

 

0,000000007

0,000000007

 

 

 

 

Для общего числа «блоков» и «дырок» вычисляется статистика

z runs Mean ,

Variance

где

2n0n1 , n

Variance Mean 1 Mean 2 . n 1

Величина z нормировано нормально распределена, поэтому

можно вычислить соответствующее значение P-value:

 

 

 

 

 

 

 

Mean

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

erfс

 

 

2 Variance

 

 

P-value X , , P-value , Mean,Variance

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

Значение P-value должно быть больше 0,01.

Пример 5.4

Вход:

= 11001001000011111101101010100010001000010110100011 00001000110100110001001100011001100010100010111000;

165

n = 100.

Тест:

Для m = 4. n1 42 ; n0 58 .

blocks1 15 ,

blocks2 9 , blocks3 1, blocks4 1, gaps1 9 , gaps2 5 , gaps3 9 ,

gaps4 3 ,

runs 15 9 1 1 9 5 9 3 52 . p1 0,1250 ,

p2 0,0625 , p3 0,0312 ,

p4 0,25 0,1250 0,0625 0,0312 0,0313.

2 obs

 

15 100 0,125 2

 

9 100 0,0625 2

 

1 100 0,0312 2

 

 

100 0,125

100 0,0625

100 0,0312

 

 

 

 

 

 

 

1 100

0,313 2

 

9 100 0,125 2

 

5 100

0,0625 2

 

 

 

100 0,313

 

100 0,125

100 0,0625

 

 

9 100 0,0312 2

 

 

3 100 0,313 2

 

16,92.

 

 

 

 

100 0,0312

100 0,313

 

 

 

 

 

 

 

 

 

 

 

P-value , 2 obs P-value 2 4;16,92 igamc 4,16,92 0,030953.

2

Mean 1

2n0n1

1

2 58 42

49,72 ,

n

100

 

 

 

 

Variance

49,72 1 49,72 2

23,48 .

 

 

 

100

1

 

 

 

 

 

 

166

z runs Mean

 

52 49,72

0,47 .

 

 

 

 

 

 

Variance

 

23,48

 

 

 

 

 

 

 

 

 

 

 

 

 

52 49,72

 

 

 

 

 

 

 

 

 

 

 

 

erfс

 

2 23,48

 

 

 

 

 

 

 

 

 

 

P-value X , ,

P-value 52; 49,72; 23,48

 

 

 

 

 

 

 

 

 

 

2

 

 

0,319177.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Примечание. Данный тест по своей структуре схож с проверкой на равномерность Руководства НИСТ.

5.1.5. Сложность последовательности

Цель теста – проверить равномерность распределения 0 и 1 в исследуемой последовательности, анализируя число появлений подпоследовательности определенного типа.

Пусть

= 1, 2,…, n – двоичная последовательность длины n.

Определим

С – сложность последовательности [23] – число

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

В работах [21, 22, 24] показано, что для абсолютно случайной последовательности сложность должна быть приблизительна равна

CТ logn n .

2

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

тать значение P-value для нормированной нормальной величины

 

 

С СТ

 

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

С СТ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

erfс

 

2

 

 

 

 

P-value X , , P-value С ,С

,

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

167

 

 

 

 

 

 

 

Пример 5.5

Вход:

= 1001101110000111; n = 16.

Тест:

Определим сложность последовательности

 

Рассмотренные биты

Очередная

Новизна

С

 

подпоследовательность

 

-

1

+

1

 

1

0

+

2

 

10

0

2

 

100

01

+

3

 

1001

1

-

3

10011

10

3

100110

101

+

4

1001101

1

4

10011011

11

4

100110111

110

4

1001101110

1100

+

5

10011011100

0

5

100110111000

00

5

1001101110000

001

5

10011011100001

0011

5

100110111000011

00111

+

6

Таким образом, исследуемую последовательность можно представить в виде набора из шести ранее не повторяющихся подпоследовательностей:

= {1} {0} {01} {101} {1100} {00111};

С

 

16

 

4 .

 

 

 

 

 

Т

 

log2 16

 

 

 

 

 

 

 

 

5.1.6. Линейная сложность

 

 

Цель теста – исследовать последовательность на случайность,

анализируя линейные сложности ее подпоследовательностей.

 

 

Пусть

= 1, 2,…, n – двоичная последовательность длины n.

Последовательно рассматривая подпоследовательности i

=

1,…, i,

i

 

, определяем линейную сложность Li каждой под-

1, n

последовательности (то есть минимальную длину регистра сдвига с

168

линейной обратной связью, необходимую для генерации данной подпоследовательности) а также jumpi , i 1, m – число интервалов

длиной i бит, между изменениями линейной сложности на 1 (в jumpm записывается число интервалов с длиной, большей либо

равной m). Ожидаемое значение линейной сложности приблизительно равно n2 , однако, ввиду отсутствия формул для отклонения

, вычисление P-value для нормированной нормальной величины

Ln n

2 не представляется возможным. Зато можно вычислить ста-

тистику

 

 

 

jump L

 

2

 

 

 

m

p

2 obs

 

i n

i

 

 

,

 

Ln pi

 

 

 

где

 

 

i 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

,

 

i 1, m 1 ;

 

 

 

 

2

i

 

 

 

 

 

 

 

 

 

 

 

pi

 

 

m 1

 

 

 

 

 

 

1 p j ,

i m,

 

 

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и оценить ее при помощи критерия 2 с числом степеней свободы, равным m 1, вычислив статистику

P-value , 2 obs P-value m 1, 2 obs igamc m 1

,

2 obs

.

2

 

2

 

Значение P-value должно быть больше 0,01.

Система CRYPT-X использует m, равное 13. Соответствующие вероятности приведены в табл. 5.3.

Таблица 5.3. Значения вероятностей pi, i 1, 26 для теста «Линейная сложность»

i = 1

i = 2

i = 3

i = 4

i = 5

i = 6

i = 7

0,5000

0,2500

0,1250

0,0625

0,0313

0,0156

0,0078

i = 8

i = 9

i = 10

i = 11

i = 12

i = 13

 

0,0039

0,0020

0,0010

0,0005

0,0002

0,0002

 

 

 

 

169

 

 

 

Пример 5.6

Вход:

= 1101011110001; n = 13;

m = 3.

Тест:

Вычисление линейной сложности проведем при помощи алгоритма Берлекэмпа–Месси, как в примере 4.11.

 

 

 

 

 

 

 

εN

 

L

 

 

jump1

 

 

jump2

 

jump3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

0

 

 

0

 

 

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

1

 

 

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

1

 

1

 

 

1

 

 

0

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

2

 

 

1

 

 

1

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

1

 

 

1

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

3

 

 

1

 

 

2

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

1

 

3

 

 

1

 

 

2

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

1

 

4

 

 

1

 

 

3

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

1

 

4

 

 

1

 

 

3

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

1

 

4

 

 

1

 

 

3

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

4

 

 

1

 

 

3

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

4

 

 

1

 

 

3

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

4

 

 

1

 

 

3

 

 

 

0

 

 

 

 

 

1

 

 

 

 

1

 

4

 

 

1

 

 

3

 

 

 

0

 

 

 

 

p

 

0,5 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

1

 

0,25 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

22

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p2 1 0,5 0,25 0,25 .

 

 

 

 

 

 

 

 

 

 

 

2 obs

1 4 0,5 2

 

3 4 0,25 2

 

0 4 0,25 2

5,5 .

 

4 0,25

4 0,25

 

 

 

 

 

 

 

 

 

4 0,5

 

 

 

 

 

 

 

 

 

 

 

 

P-value ,

2

obs P-value 3 1; 5,5

3

1

,

5,5

 

 

 

igamc

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0,063928 > 0,01 – тест пройден.

170

5.1.7. Бинарное ускорение

Цель теста – проверить равномерность появления 0 и 1 в исследуемой последовательности.

Пусть = 1, 2,…, n – двоичная последовательность длины n. Бинарным ускорением 1-го порядка называется последовательность

1 1 2 , 2 3 , ... , n 1 n .

Ускорение 2-го порядка суть ускорение 1-го порядка для последовательности 1 и так далее, ускорение m-го порядка m n

суть ускорение 1-го порядка для последовательности m 1 .

Пример 5.7

Вход:

ε = 1000100011010101.

Получение бинарных ускорений:

1 0 0 0 1 0 0 0 1 1 0 1 0 1 0 1

1

1 0

0

 

1

1

0

 

0

1

0

 

1

1

1

1

1

1

2

1 0

 

1

0

 

1

0

1

 

1

1

0

 

0

0

0

0

3

 

1

1

 

1

1

1

 

1

0

0

 

1

0

0

0

0

 

4

0

 

0

0

 

0

0

1

 

0

1

1

 

0

0

0

 

Подсчитывается число единиц n1 в исходной последовательности и n11 и в последовательности 1 . Для полученных значений вычисляются статистики

2 obs 2n1 n 2 n

и

2 obs 2n11 n 1 2 .

1 n 1

Полученные статистики анализируются при помощи критерия2 с числом степеней свободы, равным 1. Вычисляются значения

P-value:

171

P-value ,

2

obs P-value 1,

2

1

2 obs

 

 

 

 

obs igamc 2 ,

 

2

 

 

и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

 

 

 

P-value 1 , 21 obs P-value 1, 21 obs igamc

,

1 obs

.

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Значения P-value и P-value(1) должны быть больше 0,01. Примечание. Данный тест суть частотный тест, применяемый к

последовательностям и 1 .

Пример 5.8

Вход:

ε = 1000100011010101; n = 16.

Тест: n1 7 .

2 obs

2 7 16 2

0,25 .

 

 

 

 

 

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P-value ,

2

obs

 

1

,

0,25

 

 

 

P-value 1; 0,25 igamc

2

2

 

 

 

 

 

 

 

 

 

0,617075 > 0.01.

1 = 100110010111111, n11 = 10.

21 obs

2 10 16 1 2

1,67 .

 

 

 

 

 

 

 

 

16 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P-value 1 ,

2

obs P-value 1;1,67

 

1

,

1,67

 

 

 

igamc

2

2

 

 

 

 

 

 

 

 

 

 

0,196259 > 0.01 – тест пройден.

5.1.8. Бинарное ускорение в подпоследовательностях

Цель теста – проверить равномерность появления 0 и 1 в подпоследовательностях исследуемой последовательности.

172

Так же, как «бинарное ускорение» суть частотный тест, применяемый к последовательности и ее бинарному ускорению 1-го порядка, так и «бинарное ускорение в подпоследовательностях» суть частотный тест в подпоследовательностях, применяемый к подпос-

ледовательностям и их бинарным ускорениям 1-го порядка. Пусть = 1, 2,… n – двоичная последовательность длины n. Разделим ее на

N

n

 

подпоследовательностей длиной m. Лишние биты отбра-

 

m

 

j

 

– число подпоследовательно-

сываем. Подсчитываем j

 

1, k

стей, имеющих в своем составе ровно j единиц (в k записывается число подпоследовательностей, имеющих k и более единиц), и j1 – число подпоследовательностей, чьи бинарные ускорения 1-го порядка имеют в своем составе ровно j единиц (в k1 записывается число подпоследовательностей, чьи бинарные ускорения 1-го по-

рядка имеют k и более единиц).

 

 

 

 

 

Вычисляем статистики

 

 

 

2

k

i

Np

2 obs

 

i

 

,

 

 

Npi

 

i 1

 

 

 

 

где соответствующие вероятности вычисляются по следующей формуле:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

1

 

i 1, k 1 ;

 

 

 

,

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

pi

 

i

 

 

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

p j ,

i k.

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и

 

 

 

 

 

1

 

 

1 2

 

 

 

 

 

k

 

 

 

2

 

 

 

 

 

i

Npi

 

1 obs

 

 

 

 

,

 

Np 1

 

 

 

 

 

 

i 1

 

 

i

 

 

 

где соответствующие вероятности вычисляются по формуле

173

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m 1

 

 

1

, i 1, k 1 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m 1

 

 

 

 

i

2

 

 

 

 

 

 

 

 

 

pi

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

p j

,

 

i k.

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Полученные статистики анализируются при помощи критерия

2 с числом категорий, равным

k 1 . Вычисляются значения P-

value:

 

 

 

 

2 obs

 

 

 

P-value , 2 obs P-value k 1, 2 obs igamc

k 1

,

 

,

 

 

 

 

 

2

 

 

2

 

 

 

 

 

k 1

 

2

 

 

 

P-value 1 , 2 obs P-value k 1, 21 obs igamc

,

1 obs

.

 

2

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Значения P-value и P-value(1) должны быть больше 0,01.

Пример 5.9

Вход:

= 11001001000011111101101010100010001000010110100011

00001000110100110001001100011001100010100010111000;

n = 100; m = 10.

Тест:

N100 10 .

10

Получение значения P-value = 0,20065 описано в примере 5.2. k = 9.

1

= 1100100100, 11

 

010110110, 5

1

2

1

 

010000011, 3 1,

= 0011111101, 2

3

= 1010101000, 31

 

111111100, 7

1,

4

1

 

100110001, 4 1,

= 1000100001, 4

5

= 0110100011, 51

 

101110010, 5

2 ,

6

1

 

000110010, 3

2 ,

= 0000100011, 6

 

 

 

174

 

7

1

 

110101001, 5

3 ,

= 0100110001, 7

8

= 0011000110, 81

 

010100101, 4

2 ,

9

= 0110001010, 91

 

101001111, 6

1,

 

1

 

011100100, 4

3 .

10 = 0010111000, 10

Получаем

 

 

 

1 0 , 2 0 , 3 2 , 4 3 , 5 3 , 6 1, 7 1, 8 0 , 9 0 .

 

 

9

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p1

 

 

 

 

0,018 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p2

 

 

 

 

 

0,070 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p3

 

 

 

 

 

0,164 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

3

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p4

 

 

 

 

 

0,246 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

4

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p5

 

 

 

 

 

0,246 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

5

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p6

 

 

 

 

 

0,164 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

6

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p7

 

 

 

 

 

0,070 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

7

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p8

 

 

 

 

 

0,018 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

8

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p9

 

 

 

 

 

0,002 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

9

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 obs

 

0 10 0,018 2

 

0 10 0,070 2

 

2 10 0,164 2

 

 

 

 

 

 

10 0,018

 

 

 

 

10 0,164

 

 

 

 

 

 

 

 

 

 

 

 

 

10 0,070

 

 

 

 

3 10 0,246 2

 

3 10 0,246 2

 

1 10 0,164 2

 

 

 

 

10 0,246

10 0,246

10 0,164

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

175

 

 

 

 

 

 

 

1 10 0,070 2

 

0 10 0,018 2

 

0 10 0,002 2

1,75.

 

 

10 0,070

10 0,018

10 0,002

 

 

 

 

 

 

 

 

 

 

P-value ,

2

 

 

 

 

9 1

,

1,75

 

 

 

obs P-value 9 1;1,75 igamc

 

2

 

 

 

 

 

 

 

 

2

 

 

 

 

0,987740 > 0,01 – тест пройден.

5.1.9. Точка расхождения

Цель теста – проверить равномерность появления 0 и 1 в исследуемой последовательности.

Пусть = 1, 2,…, n – двоичная последовательность длины n. Определим n1 – число единиц в последовательности. Двигаемся от

начала последовательности и рассчитываем значения

Ut n n1t t nn1 ,

где n1t – число единиц в подпоследовательностях (t) = 1, 2,… t,

t 1, n .

Определим значение

KmaxUi .

i 1,n

Значение К характеризует максимальную разницу между числом появления 0 и 1, а смещение t, в котором достигнута эта максимальная разница, называется точкой расхождения.

В работе [20] показано, что значение P-value для К может быть определено по следующей формуле:

2K 2

P-value e n1n2 n n1 2 .

Значение P-value должно быть больше 0,01.

Примечание. Тест следует применять только в том случае, когда пройден частотный тест.

Пример 5.10

Вход:

= 110010010001111111010010101000; n = 30.

176

Тест: n1 15 ;

 

 

 

 

t n

 

 

 

t

15

 

 

t

 

 

 

 

 

U

t

n n t

 

1

30 n t

 

 

 

 

30 n t

 

.

 

 

 

 

 

n

 

30

 

 

 

 

 

 

 

1

 

 

1

 

 

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

t

 

 

 

 

 

 

 

 

 

 

(t)

 

 

 

 

 

 

t

 

U

 

30 n t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n1

 

 

t

1

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

15

 

 

2

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

30

 

 

3

 

110

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

15

 

 

4

 

1100

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

0

 

 

5

 

11001

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

15

 

 

6

 

110010

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

0

 

 

7

 

1100100

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

–15

 

 

8

 

11001001

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

0

 

 

9

 

110010010

 

 

 

 

 

 

 

 

 

4

 

 

 

–15

 

 

10

1100100100

 

 

 

 

 

 

 

 

 

4

 

 

 

–30

 

 

11

11001001000

 

 

 

 

 

 

 

 

 

4

 

 

 

–45

 

 

12

110010010001

 

 

 

 

 

 

 

 

 

5

 

 

 

–30

 

 

13

1100100100011

 

 

 

 

 

 

 

 

6

 

 

 

–15

 

 

14

11001001000111

 

 

 

 

 

 

 

 

7

 

 

 

0

 

 

15

110010010001111

 

 

 

 

 

 

 

 

8

 

 

 

15

 

 

16

1100100100011111

 

 

 

 

 

 

 

 

9

 

 

 

30

 

 

17

11001001000111111

 

 

 

 

 

 

 

 

10

 

 

 

45

 

 

18

110010010001111111

 

 

 

 

 

 

 

11

 

 

 

60

 

 

19

1100100100011111110

 

 

 

 

 

 

11

 

 

 

45

 

 

20

11001001000111111101

 

 

 

 

 

 

12

 

 

 

60

 

 

21

110010010001111111010

 

 

 

 

 

 

12

 

 

 

45

 

 

22

1100100100011111110100

 

 

 

 

 

 

12

 

 

 

30

 

 

23

11001001000111111101001

 

 

 

 

 

 

13

 

 

 

45

 

 

24

110010010001111111010010

 

 

 

 

 

13

 

 

 

30

 

 

25

1100100100011111110100101

 

 

 

 

 

14

 

 

 

45

 

 

26

11001001000111111101001010

 

 

 

 

14

 

 

 

30

 

 

27

110010010001111111010010101

 

 

 

15

 

 

 

45

 

 

28

1100100100011111110100101010

 

 

 

15

 

 

 

30

 

 

29

11001001000111111101001010100

 

 

 

15

 

 

 

15

 

 

30

110010010001111111010010101000

 

 

15

 

 

 

0

 

 

K max

 

Ui

 

 

60 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1,30

 

 

 

 

 

2 602

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P-value e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15 302 30 152

 

0,344 > 0,01 – тест пройден.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

177

 

 

 

 

 

 

 

 

 

5.1.10. Точка расхождения в подпоследовательностях

Цель теста – проверить равномерность появления 0 и 1 в подпоследовательностях исследуемой последовательности.

Пусть = 1, 2,…, n – двоичная последовательность длины n.

Разделим ее на N

n

 

подпоследовательностей длиной m. Лиш-

 

m

 

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

P-valuei , i 1, N .

Все значения P-valuei должны быть больше 0,01.

Примечание 1. Можно получить интегральную оценку для теста, применив к полученным значениям P-valuei критерий Колмогоро-

ва–Смирнова или Андерсона–Дарлинга.

Пример 5.11

Вход:

= 110010010001111111010010101000; n = 30;

m = 10.

Тест:

N30 3 .10

1-я подпоследовательность:

1100100100 n1 4 ;

 

 

t

 

 

t 4

t

 

 

 

Ut 10 n1

 

 

 

 

10 n1

0,4t .

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

(t)

 

n1t

Ut 10 n1t 0.4t

1

1

 

 

 

 

 

 

 

1

6

2

11

 

 

 

 

 

 

 

2

12

3

110

 

 

 

 

 

 

 

2

8

4

1100

 

 

 

 

 

 

 

2

4

5

11001

 

 

 

 

 

 

3

10

6

110010

 

 

 

 

 

 

3

6

 

 

 

 

 

 

 

 

178

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

(t)

 

n1t

Ut

10 n1t 0.4t

7

1100100

 

 

 

 

 

 

 

 

3

 

 

2

8

11001001

 

 

 

 

 

 

 

4

 

 

8

9

110010010

 

 

 

 

 

4

 

 

4

10

1100100100

 

 

 

 

 

4

 

 

0

K max

 

 

Ui

 

 

12 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1,10

 

 

 

 

 

 

 

 

2 122

 

 

 

 

 

 

 

 

P-value e

 

 

 

 

 

 

 

 

 

4 102 10 42

 

0,3 > 0,01.

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2-я подпоследовательность:

 

 

 

0111111101

 

 

 

 

 

 

 

 

 

 

 

n1 8;

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

t 8

 

 

 

t

 

 

 

 

 

Ut 10 n1

 

 

 

 

10 n1

0,8t .

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

(t)

 

n t

U

t

10 n t 0.8t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

1

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

–8

2

01

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

–6

3

011

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

–4

4

0111

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

–2

5

01111

 

 

 

 

 

 

 

 

 

 

 

4

 

 

0

6

011111

 

 

 

 

 

 

 

 

 

 

 

5

 

 

2

7

0111111

 

 

 

 

 

 

 

 

6

 

 

4

8

01111111

 

 

 

 

 

 

 

7

 

 

6

9

011111110

 

 

 

 

 

7

 

 

–2

10

0111111101

 

 

 

 

 

8

 

 

0

K max

 

Ui

 

 

8 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1,10

 

 

 

 

 

 

2 82

 

 

 

 

 

 

 

 

P-value e

 

 

 

 

 

 

 

 

 

 

8 102

10 82

0,45 > 0,01.

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3-я подпоследовательность:

 

 

 

0010101000

 

 

 

 

 

 

 

 

 

 

 

n1 3;

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

t 3

 

 

 

t

0,3t .

 

 

 

Ut 10 n1

 

 

 

 

10 n1

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

179

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

(t)

n1t

Ut 10 n1t 0.3t

1

0

 

 

 

 

 

 

 

0

–3

2

00

 

 

 

 

 

 

 

0

–6

3

001

 

 

 

 

 

 

 

1

–1

4

0010

 

 

 

 

 

 

 

1

–2

5

00101

 

 

 

 

 

2

5

6

001010

 

 

 

 

 

2

2

7

0010101

 

 

 

 

 

3

9

8

00101010

 

 

 

3

6

9

001010100

 

 

3

3

10

0010101000

 

 

3

0

K max

 

Ui

 

9.

 

 

 

 

 

 

 

 

 

 

 

i 1,10

 

 

 

 

2 92

 

 

 

P-value e

 

 

 

3 102

10 32

0,46 > 0,01.

 

 

 

3

 

 

 

 

 

 

 

 

 

Применим к полученным значениям P-value критерий Андерсо- на–Дарлинга. Получим интегральную оценку теста

P-value = 0,58 > 0,01 – тест пройден.

5.2. Тест «Стопка книг»

Цель теста – проверить равномерность появления чисел в исследуемой последовательности.

Данный тест основан на решении задачи выбора книги из стопки [14]. Суть ее в следующем. Предположим, имеется некоторый набор из M книг, которые лежат в стопке. Каждая книга нумеруется в зависимости от положения в стопке: верхняя книга – первая, книга под ней – вторая и так далее, самая нижняя книга получает номер M. При обращении к очередной книге она извлекается из стопки и кладется наверх, то есть получает первый номер. Книги, которые были над ней, сдвигаются вниз на одну позицию, то есть увеличивают свой номер на единицу; книги, находящиеся под ней, свой номер не меняют. Если к какой-либо книге обращались чаще, чем к остальным, то вероятность обнаружить ее в верхней части стопки выше, чем в нижней. Выбор книг в случайном порядке сделает их положение в стопке равновероятным.

Пусть = 1, 2,…, n – последовательность m-разрядных чисел длины n. Под «книгами» будем понимать все возможные значения

180

чисел от 0 до 2m 1 (для удобства реализации полагаем, что верхняя книга имеет номер 0). Все возможные значения разобьем на

целое число N

2m

непересекающихся множеств

k

 

 

Ai 0 k i 1 ,1 k i 1 , ... , k 1 k i 1 , i 1, N

Изначальный порядок книг T0 принимаем равным следующему:

0 на нулевой позиции, 1 – на первой, … , 2m 1 на 2m 1 -ой. Начинаем вынимать очередную книгу, то есть анализируем очередной

элемент j, j 1, n . Для выбранного элемента определяем его номер в стопке и увеличиваем соответствующее значение i – число

номеров, принадлежащих множеству Ai ,

i

1, N

. Также осуществ-

ляем перенумерацию книг в стопке:

 

 

 

 

 

 

 

a j

 

 

 

 

 

 

1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Tj 1 a Tj 1

j

,

a 0, 2m 1 .

Tj a Tj 1 a 1,

Tj 1 a ,

Tj 1 a Tj 1

j

 

 

 

 

 

 

 

 

 

 

 

 

 

К полученным после обработки всех элементов последователь-

ности значениям i , i

 

, применяем критерий

2

с числом

1, N

степеней свободы, равным N 1:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

n 2

 

 

 

 

 

 

K

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 obs

 

 

 

 

N

.

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

i 1

 

 

 

 

 

 

 

 

 

 

 

Вычисляем значение P-value:

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 obs

 

P-value , 2 obs P-value N 1, 2 obs igamc

N 1

,

.

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

Значение P-value должно быть больше 0,01.

Пример 5.12

Вход:

= 7 5 3 8 12 6 11 0 9 2 4 1 5 15 10 14; n = 16;

181

m = 4.

Тест: k = 4.

N

2m

 

24

 

4 .

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A1 0,1, 2, 3 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A2 4, 5, 6, 7 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A3 8, 9,10,11 .

 

 

 

 

 

 

 

 

 

 

 

 

 

A4 12,13,14,15 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

0

1

 

 

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

 

-

7

5

3

8

12

6

11

0

9

2

4

1

5

15

10

14

 

 

 

 

 

 

 

 

 

 

 

 

 

T

 

 

 

 

 

 

 

 

-

7

 

 

6

5

8

12

9

12

7

11

10

11

11

10

15

13

14

0

0

7

 

 

5

3

8

12

6

11

0

9

2

4

1

5

15

13

14

1

1

0

 

 

7

5

3

8

12

6

11

0

9

2

4

1

5

15

13

2

2

1

 

 

0

7

5

3

8

12

6

11

0

9

2

4

1

5

15

3

3

2

 

 

1

0

7

5

3

8

12

6

11

0

9

2

4

1

5

4

4

3

 

 

2

1

0

7

5

3

8

12

6

11

0

9

2

4

1

5

5

4

 

 

3

2

1

0

7

5

3

8

12

6

11

0

9

2

4

6

6

5

 

 

4

4

2

1

0

7

5

3

8

12

6

11

0

9

2

7

7

6

 

 

6

6

4

2

1

0

7

5

3

8

12

6

11

0

9

8

8

8

 

 

8

8

6

4

2

1

1

7

5

3

8

12

6

11

0

9

9

9

 

 

9

9

9

6

4

2

2

1

7

5

3

8

12

6

11

10

10

10

 

10

10

10

9

9

4

4

2

1

7

5

3

8

12

6

11

11

11

 

11

11

11

10

10

9

9

4

4

1

7

7

3

8

12

12

12

12

 

12

12

12

11

11

10

10

10

10

10

10

10

7

3

8

13

13

13

 

13

13

13

13

13

13

13

13

13

13

13

13

10

7

3

14

14

14

 

14

14

14

14

14

14

14

14

14

14

14

14

13

13

7

15

15

15

 

15

15

15

15

15

15

15

15

15

15

15

15

14

14

13

ν1

0

0

 

 

0

0

0

0

0

0

0

0

0

0

0

0

0

0

0

ν2

0

1

 

 

2

3

3

3

3

3

4

4

4

4

4

4

4

4

4

ν3

0

0

 

 

0

0

1

1

1

1

1

2

3

4

5

6

6

7

7

ν4

0

0

 

 

0

0

0

1

2

3

3

3

3

3

3

3

4

4

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

182

 

 

0

 

16

2

 

 

4

 

16

2

 

 

7

 

16

2

 

 

5

16

2

 

 

 

 

4

 

 

 

4

 

 

 

4

 

 

 

4

 

 

 

2 obs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4,5 .

 

 

 

16

 

 

 

16

 

 

 

16

 

 

16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P-value ,

 

 

4

 

 

 

 

4

 

 

 

 

4

 

 

 

 

4

 

 

 

 

2

obs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4 1

,

4,5

 

 

P-value 4 1; 4,5 igamc

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 0,212290 > 0,01 – тест пройден.

183

ГЛАВА 6. ПОВЫШЕНИЕ ЭФФЕКТИВНОСТИ ОЦЕНОЧНЫХ ТЕСТОВ

6.1. Проверка категорий

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

Пример 6.1

Дана последовательность 3-разрядных чисел длиной 50. Исследовать последовательность на случайность при помощи критерия равномерности (см. раздел 3.1) для уровня значимости, равного

0,01.

Вход:

ε = 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1;

m = 3; n = 50;

0,01.

Тест:

Поскольку разрядность числа m 3 , всего возможно 2m 23 8 категорий с вероятностью попадания в каждую категорию

pi 21m 213 18 , i 0,7 . Подсчитаем число попаданий в каждую

категорию:

ν0 = 0; ν1 = 8; ν2 = 7; ν3 = 7; ν4 = 7; ν5 = 7; ν6 = 7; ν7 = 7.

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

184

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

 

 

 

 

7

 

 

 

np

2

 

 

 

 

1

 

 

 

 

1

2

 

 

 

 

 

 

1

 

2

2 obs

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

0 50

 

 

8

50

 

 

 

 

 

 

 

 

 

np

 

 

 

 

 

 

1

 

8

 

 

 

i 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

50 8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

50

 

1

2

 

 

7

 

50

 

1

2

 

 

7

50

 

1

2

 

7 50

 

1 2

 

 

8

 

 

 

8

 

 

8

 

 

8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

50

 

1

2

 

 

7

 

50

 

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

 

 

 

8

 

7,28.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P-value ,

2

obs

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

,

7,28

 

 

 

 

 

P-value 7; 7,28 igamc

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= 0,40032 > 0.01 – тест пройден.

Как видно из примера 6.1, интегральная оценка сгладила локальное неслучайное поведение, а именно: отсутствие в последовательности 0. Одним из вариантов решения данной проблемы является анализ каждой категории, которая учитывается при расчете тестовой статистики.

Пусть задана последовательность m-разрядных чисел ε =

ε12,…,εn длиной n и пусть νi i 1,2m – количество появлений i-го числа. Тогда вероятность того, что отклонение частоты появления

i-го символа pЭ ni от теоретического значения pТ 21m не превышает заданного значения 0 , приближенно [5] равна удвоен-

ной функции Лапласа от

 

 

n

 

 

 

:

 

 

 

 

 

 

 

 

 

p

 

1 p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т

 

 

 

Т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

1

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

 

 

L

 

 

 

 

 

 

 

 

 

 

.

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

n

 

2

 

 

 

 

 

 

 

 

 

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

1

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Для уровня значимости теста

185

P ni 21m 1 .

Таким образом,

L 21m 1n 21m L 2m 2mn 1 1 .

Отсюда получаем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ф

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L

 

 

2

 

 

 

 

 

 

2m 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

где ФL1 1

 

 

 

 

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

– обратная функция Лапласа.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом, с вероятностью 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ф

1

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

1

 

 

 

 

 

L

 

 

 

 

2

 

 

 

2m 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

Отсюда

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

Ф

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ф

1

 

 

 

 

 

 

 

1

 

L

 

2

 

 

 

2m

1

 

 

i

 

 

 

 

 

1

 

 

 

L

 

2

 

 

 

2m 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2m

 

 

 

2m

 

 

 

 

 

n

 

 

 

n

 

2m

 

 

 

 

 

2m

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или

 

 

1

 

n 2

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

n 2

 

1

 

 

 

1

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

m

 

n ФL

 

2

 

 

 

 

 

 

 

 

 

 

 

 

n ФL

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

Пример 6.2

Исследовать последовательность из примера 6.1 на случайность при помощи критерия равномерности с анализом категорий.

186

Тест:

1 1

 

1

1 0,01

 

1

0,495 2,58 .

 

ФL

2

 

ФL

 

2

 

ФL

 

 

 

 

 

 

 

 

 

 

Таким образом,

 

 

 

 

 

50 23 1

 

50 2,58

 

50 23 1

i

 

50 2,58

,

 

23

 

 

 

23

 

 

 

 

 

 

 

 

 

0,22 i 12,28 .

Значение ν0 не попадает в указанный интервал – тест не пройден.

Рассчитаем значение интервала для общего случая. Пусть для заданной последовательности длины n результаты испытаний можно разделить на s категорий с вероятностью попадания в каждую

категорию, равную psT . Пусть psЭ i 1,s – частота попадания в s-ю категорию, полученная в результате испытаний. Тогда

P

 

L

 

 

 

n

 

 

psЭ psТ

 

 

 

 

.

 

 

 

 

 

 

 

 

Т

Т

 

 

 

 

 

 

 

ps

1 ps

 

Определяем значение :

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

Т

1

 

Т

 

 

L

 

 

 

 

 

 

 

 

 

 

 

 

 

ps

ps

 

 

 

 

 

1

 

1

 

psТ 1 psТ

ФL

 

 

 

 

 

 

 

 

 

2

 

 

 

n

 

 

 

 

 

 

 

 

 

Таким образом,

 

 

 

 

 

 

 

 

 

 

psТ 1 psТ

 

 

 

 

 

 

 

Э

Т

 

 

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ps

ps

 

 

ФL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

n

 

 

 

 

или

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

psТ 1 psТ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Т

1

 

1

 

 

Э

 

Т

 

1

 

1

 

ps

ФL

 

 

 

 

 

 

 

 

 

 

ps

ps

ФL

 

 

 

 

 

2

n

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

psТ 1 psТ . n

Применяя проверку категорий, можно повысить эффективность ряда рассмотренных ранее тестов (табл. 6.1).

187

Таблица 6.1. Тесты, которые могут быть улучшены при помощи проверки категорий

Название теста

Раздел

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

psТ

 

 

 

 

 

 

 

 

 

 

 

 

Система «DIEHARD»

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

Проверка дней

2.1

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

se

 

 

 

 

 

 

 

рождения

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s!

 

 

 

 

 

 

 

 

 

 

 

Проверка

 

n 1

 

 

 

 

 

 

 

 

 

 

 

 

n 1

 

 

 

 

 

 

2

пересекающихся

2.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

перестановок

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

s 1

1 2 j Q 1 2 j R

3

Проверка рангов

2.3

 

 

 

 

 

 

 

2s Q

 

R

 

 

s QR

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 2 j s

 

матриц

 

Q

R

 

 

 

 

 

 

 

 

 

 

 

j 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определяются на основе

4

Подсчет единиц

2.5

 

 

 

N

 

 

 

 

 

 

 

 

 

P(A), … P(E),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

приведенных в п. 2.5

5

Тест сжатия

2.9

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 2.2

6

Тест игры

2.12

200 000

 

 

 

 

 

 

 

 

 

 

 

Табл. 2.3

 

в кости

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

Тест НОД

2.21

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 2.4

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подборка тестов Д. Кнута

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8

Проверка

3.1

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

Проверка серий

3.2

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β α

 

 

β

α

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

, s 0, t 1 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2m

 

 

2m

 

10

Проверка

3.3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

интервалов

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β α

 

,

 

 

 

s t.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

Покер-тест

3.4

 

 

n

 

 

 

 

 

d d 1 ... d s 1 t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d t

 

 

 

 

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d!

s 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s d, t 1 ,

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

d 1 ,

 

 

 

 

 

 

 

 

 

 

 

 

d

s

 

12

Тест собирателя

3.5

 

ν j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

купонов

 

 

j d

 

 

 

 

 

 

 

 

 

1

 

d!

 

t

 

1

, s t .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

d t 1

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

188

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Продолжение табл. 6.1

Название теста

Раздел

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

psТ

 

 

 

 

 

 

 

13

Проверка

3.6

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

перестановок

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

1

 

 

 

,

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1, t 1 ;

 

Проверка на

 

t

 

 

 

s!

s 1 !

14

3.7

ν j

 

 

 

 

 

 

 

 

 

t 1

 

 

 

 

 

 

 

 

 

 

 

монотонность

 

j 1

 

 

 

 

 

 

 

1 p j ,

 

s t.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Руководство НИСТ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Частотный тест в

 

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

15

подпоследова-

4.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

тельностях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проверка на

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16

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

4.4

 

 

 

 

 

 

 

 

 

 

 

Табл. 4.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

подпоследова-

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тельностях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проверка

 

n

 

 

 

 

 

e

 

 

s

s

1

l

17

пересекающихся

4.8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

шаблонов

 

M

 

 

 

 

 

 

 

2

 

 

 

l 1

l

1

l!

 

Проверка

 

n

 

 

 

 

 

 

 

 

 

 

 

 

0 , ... , 6

 

 

 

 

18

линейной

4.11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сложности

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19

Проверка серий

4.12

 

 

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Проверка

 

 

 

J

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

случайных

4.15

 

 

 

 

 

 

 

 

 

 

 

 

Табл. 4.10

 

 

 

 

 

отклонений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Система CRYPT-X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m , s 1, k 1 ;

 

Частотный тест в

 

n

 

 

 

 

 

 

 

2

21

5.1.2

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

подпоследова-

 

 

 

 

 

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

тельностях

 

M

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s k.

 

 

 

 

 

 

 

 

 

 

 

1 p j ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

, s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1, m 1 ;

22

Проверка на

5.1.4

 

 

n

 

 

 

 

 

22 s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m 1

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pi ,

 

s m.

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

189

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Окончание табл. 6.1

Название теста

Раздел

 

n

 

 

 

 

 

 

 

 

 

psТ

 

 

 

 

 

 

 

 

 

 

 

 

1

 

, s

 

 

 

 

 

 

 

 

 

 

 

 

 

1, m 1 ;

23

Линейная

5.1.6

 

L

 

 

 

 

2s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m 1

 

 

 

 

 

сложность

 

 

n

 

 

 

 

 

 

s m,

 

 

 

 

 

 

 

 

1 p j ,

 

 

 

 

 

 

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

m

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1, k 1 ;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Бинарное

 

 

 

 

 

 

 

 

m , s

 

 

 

n

 

 

 

 

 

2

24

ускорение в

5.1.8

 

 

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

подпоследова-

 

M

 

 

 

 

 

 

 

 

 

 

 

тельностях

 

 

 

 

 

 

 

1 p j ,

s k.

 

 

 

 

 

 

 

 

 

 

 

j 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Тест

«Стопка

книг»

 

 

 

 

 

 

 

 

 

 

 

 

 

25

Стопка книг

5.2

 

n

 

 

 

 

 

 

 

 

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6.2. Подсчет числа отсутствующих слов

Еще одно направление повышения эффективности тестов, кроме увеличения силы теста, – уменьшение объемов дополнительной памяти, требуемой для реализации теста. Как правило, при вычислении статистики тестов подсчитывается число исходов, относящихся к заданным категориям (например, в частотном тесте (см. раздел 4.2) это число появлений 0 и 1, в проверке равномерности (см. раздел 3.1) – количество появлений каждого из возможных чисел). Под дополнительной памятью как раз и понимается число ячеек памяти, необходимое для хранения данных значений.

Пример 6.3

Дана последовательность 3-разрядных чисел длиной 50. Определить размер дополнительной памяти, необходимой для реализации критерия равномерности (см. раздел 3.1).

Вход: n = 50; m = 3.

Тест:

Для чисел с разрядностью m возможно всего 2m категорий. К каждой категории может быть отнесено от 0 до n чисел, то есть для

190

хранения результата для каждой категории необходимо выделитьlog2 n 1 бит памяти. Таким образом, для исследуемой последо-

вательности размером m n 3 50 150 бит общий объем дополнительной памяти составит

2m log2 n 1 23 log2 50 1 48 бит.

В общем случае для хранения числа появлений наборов, состоящих из k m-разрядных чисел, в последовательности длиной n чисел потребуется дополнительный объем памяти

V

 

km

 

 

 

n

 

2

 

log

 

 

 

 

 

1

2

 

Н

 

 

 

 

 

 

 

 

 

 

k

 

в случае непересекающихся наборов и

VП 2km log2 n 1

в случае пересекающихся.

Как можно заметить, с увеличением длины тестируемой последовательности возрастает и объем дополнительной памяти, требуемый для реализации теста. В предельном случае

VН n

и

VП n .

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

В настоящее время большинство разработчиков оценочных тестов (в том числе и авторы наиболее популярного на сегодняшний день Руководства НИСТ США) решают данную проблему путем введения ограничений на размеры анализируемых наборов и длину исследуемой последовательности.

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

191

наиболее эффективных из существующих генераторов псевдослучайных последовательностей. Все они с легкостью проходят тест «Проверка серий» (см. разделы 3.2 и 4.12) с наборами из двух и трех бит и полностью проваливают «Критерий равномерности» с проверкой категорий (размер набора – восемь бит) [10]. И это только для наборов, состоящих из одного числа. Можно предположить, что увеличение количества чисел в наборов сделает статистику прохождения еще более удручающей.

Уменьшение длины исследуемой последовательности также снижает качество тестирования. В качестве примера разработчики Руководства НИСТ рекомендуют использовать для анализа последовательности длиной всего лишь 220 бит или 128 кбайт, что для существующих объемов передаваемой информации, исчисляемой мега-, гига- и даже терабайтами, просто недопустимо.

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

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

объема памяти до 2km бит. При этом цель теста не будет изменена, и он продолжит выявлять те же статистические отклонения, что и оригинальный тест. Таким образом, размер требуемой для реализации теста памяти перестает зависеть от длины исследуемой последовательности. Например, для реализации тестов НИСТ при реко-

192

мендуемой длине в 128 кбайт объем дополнительной памяти уменьшается в log2 220 1 = 21 раз.

Рассмотрим, как меняется механизм вычисления статистики теста. Для заданной последовательности длиной n, состоящей из наборов по k m-разрядных чисел, подсчитываем число отсутст-

вующих наборов Э . Дж. Марсалья в своей работе [32] показал,

что число отсутствующих наборов аппроксимируется с нормальным распределением. Найдем среднее и отклонение .

Для расчета среднего необходимо рассмотреть разложение в ряд Тейлора производящей функции [8], соответствующей значениям k и m. Очевидно, это не очень удобно, поскольку для различных наборов придется заново определять производящую функцию для каждого типа набора и раскладывать ее в ряд Тейлора. Например, для k = 2 расчет осуществляется следующим образом [32]:

вычисляется p1 – коэффициент при zn в разложении производящей функции

12 2 ;

1z p z

вычисляется p2 – коэффициент при zn в разложении производящей функции

1 pz

z2

;

1 1 p z p p2

вычисляется среднее для числа отсутствующих слов

2km 2m p1 2m p2 .

Сувеличением k увеличивается число производящих функций, а

также их сложность. Поэтому для расчета предлагается использовать подход Дж. Марсалья, который показал [32], что среднее можно вычислить (при условии, что n > 1000) по формуле

2km e

 

n

 

2km .

 

Действительно, для случая n = 221, k = 2, m = 10 имеем p1 0,135335283236469 ,

p2 0,135599351997986596411,

193

22 10 210 0,135335283236469

210 0,135599351997986596411 141909,60;

221

22 10 e 2210 141909,33 ;

.

Расчет отклонения осуществить гораздо сложнее. Точное значение отклонения

 

2m 2m

2m

,

 

 

... cov ni1 ,ni2 , ...,nik

 

i1 1 i2 1

ik 1

 

где cov ni1 ,ni2 , ...,nik – ковариация ni1 ,ni2 , ...,nik ,

n1, еслибуква, равная2i , присутствует вслове; i 0, еслибуква, равная2i , отсутствует вслове.

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

В связи с этим применяют две методики оценки полученного в результате теста числа отсутствующих наборов Э . Первая заклю-

чается в выборе небольшого значения k, например, не более 5, расчете отклонения и вычисления значения

 

 

 

Э

 

 

 

erfс

 

2

 

P-value X , ,

 

 

 

 

.

 

2

 

 

 

 

 

 

 

Вторая методика связана с функцией Лапласа. Используя фор-

мулу для вычисления интервала

 

 

 

 

 

 

 

 

 

 

 

Т

1

1

 

 

psТ 1 psТ

 

Э

Т

1

1

 

psТ 1 psТ

 

 

ps

ФL

 

 

 

 

 

 

 

 

 

ps

ps

ФL

 

 

 

 

 

,

2

 

 

n

2

n

получаем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

n

 

 

 

1

1

 

 

 

Э

 

1 1

 

 

.

ФL

 

2

 

 

 

 

n

ФL

 

2

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

194

 

 

 

 

 

 

 

 

 

 

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

буемой аппроксимации желательно [32], чтобы n t2km , t 1,4 .

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

Название теста

Раздел

 

Система «DIEHARD»

 

1

Проверка пересекающихся перестановок

2.2

2

Проверка рангов матриц

2.3

3

Обезьяньи тесты

2.4

4

Подсчет единиц

2.5

5

Тест игры в кости

2.12

 

Подборка Д. Кнута

 

6

Проверка равномерности

3.1

7

Проверка серий

3.2

8

Покер-тест

3.4

9

Тест собирателя купонов

3.5

10

Проверка перестановок

3.6

 

Руководство НИСТ

 

11

Проверка рангов матриц

4.5

12

Проверка непересекающихся шаблонов

4.7

13

Проверка пересекающихся шаблонов

4.8

14

Проверка серий

4.12

 

Система CRYPT-X

 

15

Проверка серий

5.1.3

16

Бинарное ускорение в подпоследовательностях

5.1.8

Можно выделить следующие положительные эффекты от использования подсчета числа отсутствующих наборов:

размер вспомогательной памяти для сбора статистики теста теперь не зависит от длины тестируемой последовательности

195

и определяется только размерами набора. Это позволит выделять данную память статически (что ускорит скорость выполнения теста при программной реализации) или прогнозировать объем выделяемой динамической памяти;

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

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

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

196

ГЛАВА 7. ГРАФИЧЕСКИЕ ТЕСТЫ

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

0,99; 0,999 ) позволяют говорить о качестве исследуемого генера-

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

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

К данной группе относятся следующие тесты:

гистограмма распределения элементов последовательности;

распределение на плоскости;

проверка серий;

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

автокорреляционная функция (АКФ);

спектральный тест;

профиль линейной сложности.

197

7.1. Гистограмма распределения элементов последовательности

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

Строится гистограмма следующим образом. Пусть = 1, 2,…, n – последовательность m-разрядных чисел. Подсчитывается, сколько раз встречается каждый элемент, после чего строится график зави-

симости числа появлений всех возможных 2m элементов от их численного представления.

Полученная графическая зависимость может рассматриваться как визуализация ряда оценочных тестов. Например, для m = 1 – это графический «Частотный тест» (см. раздел 4.1), для остальных m – «Проверка равномерности» (см. раздел 3.1). Наиболее распространенное применение «Гистограммы распределения элементов последовательности» – исследование байтовых последовательностей (m = 8). В этом случае тест иногда называют «Посимвольной проверкой» [10].

Пример 7.1

Вход:

= 4 6 0 7 5 1 2 3 0 4 3 5 2 1 6 4 6 2 3 0 5 2 1 6 3 7 2 6 4 2 6 4 3 2 5 4 2 7 3 2;

n = 40; m = 3.

Тест:

Подсчитаем число появлений всех возможных значений от 0 до

2m 1 7 в последовательности: Число появлений 0: n0 = 3; Число появлений 1: n1 = 3; Число появлений 2: n2 = 9; Число появлений 3: n3 = 6; Число появлений 4: n4 = 6; Число появлений 5: n5 = 4; Число появлений 6: n6 = 6; Число появлений 7: n7 = 3.

Изобразим полученные данные в виде гистограммы:

198

10

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

Для того чтобы последовательность удовлетворяла свойствам случайности, необходимо присутствие в ней всех возможных элементов рассматриваемой разрядности, при этом разброс частот появления символов должен стремиться к нулю (рис. 7.1). В противном случае последовательность не является случайной (рис. 7.2,а).

Данный тест может принести пользу также в тех случаях [9], когда оценивается качество последовательности с законом распределения, отличным от равномерного, либо последовательности, в которой некоторые символы вообще отсутствуют (рис. 7.2,б). Несмотря на то, что данные последовательности уже нельзя назвать псевдослучайными, они имеют сферу своего применения и используют в своей работе генераторы псевдослучайных последовательностей.

Рис. 7.1. Пример гистограммы распределения элементов последовательности: результат положительный

199

a

б

Рис. 7.2. Примеры гистограмм распределения элементов последовательности:

а – результат отрицательный; б – последовательность с законом распределения, близким к нормальному

7.2. Распределение на плоскости

Данный тест предназначен для определения зависимостей между элементами исследуемой последовательности.

Построение распределения на плоскости осуществляется сле-

дующим образом. На поле размером 2m 2m (m – разрядность чисел исследуемой последовательности) наносятся точки с координатами

( i; i+1), где i – элементы исследуемой последовательности , i 1, (n 1) , n – длина последовательности.

Далее анализируется полученная картина. Если между элементами последовательности отсутствуют зависимости, то точки на

200

поле расположены хаотично (рис. 7.3,a). Если на поле присутствуют зависимости, наблюдаются «узоры», последовательность не является случайной (рис. 7.3,б). Для последовательностей большой длины хорошим результатом является абсолютно черное поле

(рис. 7.3, в).

Пример 7.2

Вход:

= 4 6 0 7 5 1 2 3 0 4 3 5 2 1 6 4 6 2 3 0 5 2 1 6 3 7 2 6 4 2 6 4 3 2 5 4 2 7 3 2;

n = 40; m = 3.

Тест:

Получаем координаты точек:

{4, 6}, {6, 0}, {0, 7}, {7, 5}, {5, 1}, {1, 2}, {2, 3}, {3, 0}, {0, 4}, {4, 3}, {3, 5}, {5, 2}, {2, 1}, {1, 6}, {6, 4}, {4, 6}, {6, 2}, {2, 3}, {3, 0}, {0, 5}, {5, 2}, {2, 1}, {1, 6}, {6, 3}, {3, 7}, {7, 2}, {2, 6},

{6, 4}, {4, 2}, {2, 6}, {6, 4}, {4, 3}, {3, 2}, {2, 5}, {5, 4}, {4, 2}, {2, 7}, {7, 3}, {3, 2}.

Изобразим полученные точки на поле размером 23 23 =8 8.

7

6

5

4

3

2

1

0

0

1

2

3

4

5

6

7

8

201

а

б

в

Рис. 7.3. Примеры распределения на плоскости:

а– результат положительный; б – результат отрицательный;

в– положительный результат для последовательностей большой

длины

Данный тест тесно связан с тестами, основанными на задачах размещения (тест парковки и тест минимальных расстояний системы DIEHARD). Тест можно улучшить, если рассматривать распределение точек не только на плоскости, но и в пространстве.

Распределение на плоскости позволяет выявить статистические зависимости, не видимые другими тестами. Например, при помощи данного теста найдены закономерности в последовательностях ряда конгруэнтных генераторов (рис. 7.4), успешно проходящих оценочные тесты.

202

a

б

в г

Рис. 7.4. Распределения на плоскости для конгруэнтных генераторов с уравнениями работы:

X n 1 430X n 2531 mod11979 (а);

X n 1 (99X n2 430X n 2531) mod 11979 (б);

X n 1 363X n3 99X n2 430X n 2531 mod 11979 (в); X n X n 4 X n 11 mod 256 (г)

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

203

а

б

Рис. 7.5. Распределение на плоскости для регистра сдвига с линейными обратными связями с образующим многочленом

Ф х x9 x4 1 :

а – битовый генератор; б – байтовый

Распределение на плоскости необходимо для исследования блочных генераторов [10]. Нелинейное преобразование, применяемое в данных генераторах, представляет собой многократное повторение одной и той же раундовой функции, которая, в свою очередь, состоит из нескольких операций. Использование теста «Распределение на плоскости» помогает оценить число раундов, необходимых для полного рассеивания и перемешивания информации, а также оценить влияние на данный процесс каждой раундовой операции. На рис. 7.6 показано влияние изменений, вносимых каждой раундовой операцией в генераторе на основе ГОСТ 28.147-89.

Всостав раундовой функции входят следующие операции [7]:

сложение правой половины R блока данных по модулю 232 с элементом ключа;

замена по таблице: R H R ;

сдвиг влево на 11 разрядов: ROL11(R)

сложение по модулю 2 c левой половиной L блока данных:

R R L ;

взаимозамена R и L: R L .

Как следует из рис. 7.6, полное рассеивание и перемешивание информации в ГОСТ 28.147-89 осуществляется за четыре раунда.

204

а

б

в

г

д

Рис. 7.6. Распределение на плоскости для ГОСТ 28.147-89:

а– исходная последовательность; б – раунд 1: R H R ;

в– раунд 1: ROL11(R) ; г – раунд 1: R R L ;

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

205

На рис. 7.7 показано влияние изменений, вносимых каждой раундовой операцией в генераторе на основе AES-128 (применительно к той же последовательности, что и при исследовании ГОСТ 28147-89, см. рис. 7.6, а). В состав раундовой функции входят следующие операции [19]:

побайтовая замена;

сдвиг строк;

перемешивание столбцов

сложение по модулю 2 c раундовым ключом;

Как следует из рис. 7.7, полное рассеивание и перемешивание информации в AES-128 осуществляется за 2 раунда.

аб

в

Рис. 7.7. Распределение на плоскости для AES-128:

а – раунд 1: SubBytes; б – раунд 1: ShiftRows; в – после двух раундов

206

7.3. Проверка серий

Данный тест позволяет оценить равномерность распределения символов в исследуемой последовательности на основе анализа частоты появления нулей, единиц и серий, состоящих из k бит.

Построение осуществляется следующим образом. Подсчитывается, сколько раз встречаются нули, единицы, серии-двойки (00, 01, 10, 11), серии-тройки (000, 001, 010, 011, 100, 101, 110, 111) и т.д. в

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

В частном случае (m = 8) тест превращается в «Гистограмму распределения элементов последовательности», поэтому «Проверка серий» также может рассматриваться как графическое отображение ряда оценочных тестов.

Наиболее распространенное применение данного теста – исследование серий-пар (m = 2), серий-троек (m = 3) и серий-четверок

(m = 4).

Пример 7.3

Вход:

= 4 6 0 7 5 1 2 3 0 4 3 5 2 1 6 4 6 2 3 0 5 2 1 6 3 7 2 6 4 2 6 4 3 2 5 4 2 7 3 2.

Тест:

Представим последовательность в битовом виде (в предположении, что разрядность чисел последовательности равна 3).

= 100 110 000 111 101 001 010 011 000 100 011 101 010 001 110 100 110 010 011 000 101 010 001 110 011 111 010 110 100 010 110 100 011 010 101 100 010 111 011 010.

Подсчитаем число серий из одного бита:

= 100 110 000 111 101 001 010 011 000 100 011 101 010 001 110

100 110 010 011 000 101 010 001 110 011 111 010 110 100 010 110

100 011 010 101 100 010 111 011 010.

n1 59 ,

n0 61.

Изобразим полученные значения графически:

207

60

 

50

 

40

 

30

 

20

 

10

 

0

 

0

1

Представим битовую последовательность в виде непересекающихся пар

= 10 01 10 00 01 11 10 10 01 01 00 11 00 01 00 01 11 01 01 00 01 11 01 00 11 00 10 01 10 00 10 10 10 00 11 10 01 11 11 01 01 10 10 00 10 11 01 00 01 10 10 10 11 00 01 01 11 01 10 10.

Подсчитаем число пар каждого вида:

n00 12 , n01 19 , n10 18 , n11 11.

Изобразим полученные значения графически:

18

 

 

 

16

 

 

 

14

 

 

 

12

 

 

 

10

 

 

 

8

 

 

 

6

 

 

 

4

 

 

 

2

 

 

 

0

 

 

 

00

01

10

11

Подсчитаем число троек каждого вида:

n000 3,

n001 3 ,

n010 9 ,

n011 6 ,

n100 6 ,

n101 4 ,

n110 6 ,

n111 3 .

 

 

 

 

 

 

Изобразим полученные значения графически:

208

10

 

 

 

 

 

 

 

8

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

000

001

010

011

100

101

110

111

У последовательности, чьи статистические свойства близки к свойствам истинно случайной последовательности, разбросы между числом появлений нулей и единиц, между числом появлений серий-пар каждого вида и между числом появлений серий-троек каждого вида должны стремиться к нулю (рис. 7.8,а). В противном случае последовательность не является случайной (рис. 7.8,б).

Как можно заметить, в случае, когда длина серии k равна разрядности числа, тест превращается в гистограмму распределения элементов. Таким образом, для тщательной проверки желательно проверить все серии длиной от 1 до разрядности вырабатываемых генератором чисел. Это позволит выявить ряд статистических отклонений, в частности, в случае, когда формируемая генератором последовательность есть некая функция от выходов нескольких генераторов (например, каждый генератор формирует отдельные биты числа результирующей последовательности). В этом случае есть вероятность того, что проверка серий обнаружит слабость (при наличии таковой) данных генераторов даже в том случае, если пройдены тесты для числовых последовательностей.

209

а

б

Рис. 7.8. Проверка серий:

а– результат положительный; б – отрицательный

7.4.Проверка на монотонность

Данный тест позволяет оценить равномерность распределения символов в исследуемой последовательности на основе анализа длин участков невозрастания и неубывания элементов последовательности.

Построение производится так. Исследуемая последовательность

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

210

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

i i 1 ... i p 1 ;

соответственно под участком неубывания длиной q понимается подпоследовательность, в которой каждый последующий элемент больше либо равен предыдущему:

j j 1 ... j q 1 .

Пример 7.4

Вход:

= 2 3 4 5 5 5 4 4 3 2 2 2 1 2 3 4 5.

Тест:

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

= 23455544322212345.

Получаем участок неубывания длиной 6, затем участок невозрастания длиной 7 и вновь участок неубывания длиной 4. Изображаем эти участки графически:

8

 

 

6

 

 

4

 

 

2

 

 

0

 

 

1

2

3

У последовательности, чьи статистические свойства близки к свойствам истинно случайной последовательности, вероятность появления участка невозрастания (неубывания) определенного размера зависит от его длины: чем больше длина, тем меньше вероятность. Соответственно у последовательности, чьи свойства близки к свойствам истинно случайной последовательности, распределение участков невозрастания и неубывания будет близко к равномерному (рис. 7.9,а). В противном случае последовательность не является случайной (рис. 7.9,б).

211

а

б

Рис. 7.9. Проверка на монотонность:

а – результат положительный; б – отрицательный

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

j j 1 ... j q 1

и убывания

i i 1 ... i p 1 ,

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

212

7.5. Автокорреляционная функция

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

Битовая АКФ. Построение битовой АКФ производится сле-

дующим образом. Сначала исследуемая последовательность представляется в битовом виде, а затем полученная битовая после-

довательность нормируется (1 → 1, 0 → 1). Если 0, 1,…, n-1 – двоичная запись исследуемой последовательности, то нормированная последовательность b0,b1,…,bn–1 получается следующим образом:

bi 1 1 εi , i 0, n 1 .

После этого вычисляются всплески корреляции

n 1

bi b i j mod n

с

j

 

i 0

 

,

 

n 1

 

 

 

 

bi2

 

 

 

 

 

i 0

 

где n – длина нормированной битовой последовательности, j 0, n .

Символьная АКФ. Построение символьной АКФ производится

следующим образом. Сначала исследуемая последовательность нормируется. Делается это следующим образом. Пусть

aR 1,aR 2,…,a0 (R – разрядность числа) – двоичная запись i-го элемента исследуемой последовательности. Тогда нормированное значение данного элемента есть

R 1

di 1 ai 2 j .

j 0

После этого вычисляются всплески корреляции

n 1

di d i j mod n

с

j

 

i 0

 

,

 

n 1

 

 

 

 

di2

 

 

 

 

 

i 0

 

где n – длина исследуемой последовательности, j 0, n .

213

Пример 7.5

 

 

 

 

 

 

 

Вход:

 

 

 

 

 

 

 

 

= 3 5.

 

 

 

 

 

 

 

 

Тест – битовая АКФ:

 

 

 

 

 

 

Представим исходную последовательность в битовом виде (в пред-

положении, что разрядность чисел исходной последовательности

равна 3)

 

 

 

 

 

 

 

 

= 011 101.

 

 

 

 

 

 

 

Приведем последовательность к нормированному виду,

 

= 1 1 1 1 1 1.

 

 

 

 

 

 

 

Вычислим всплески корреляции:

 

 

 

 

 

с

1

1 1 1 1 1 1 1 1 1 1 1

6 1 ,

 

0

1 1 1 1 1 1 1 1 1 1 1 1 6

 

 

с 1 1 1 1 1 1 1 1 1 1 1 1

2 1 ,

 

1

 

 

 

6

 

 

6

3

 

с 1 1 1 1 1 1

1 1 1 1 1 1

2 1 ,

 

2

 

 

 

6

 

 

6

3

 

с 1

1 1 1

1 1 1 1 1 1 1 1

2 1 ,

 

3

 

 

 

6

 

 

6

3

 

с 1 1 1 1 1 1 1 1 1 1 1 1

2 1 ,

 

4

 

 

 

6

 

 

6

3

 

с 1

1 1 1

1 1 1 1 1 1 1 1

2 1 ,

 

5

 

 

 

6

 

 

6

3

 

с 1

1 1 1 1 1 1 1 1 1 1 1

6 1 .

 

6

 

 

 

6

 

 

6

 

 

 

 

 

 

 

 

 

 

Изобразим полученные значения графически:

 

 

 

1

 

 

 

 

 

 

 

 

 

0,8

 

 

 

 

 

 

 

 

 

0,6

 

 

 

 

 

 

 

 

 

0,4

 

 

 

 

 

 

 

 

 

0,2

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

-0,2

0

1

2

3

4

 

5

6

 

-0,4

 

 

 

 

 

 

 

 

 

 

 

-0,6

 

 

 

 

 

 

 

 

 

-0,8

 

 

 

 

 

 

 

 

 

 

 

 

214

 

 

 

 

 

Пример 7.6

Вход:

= 3 7 5.

Тест – символьная АКФ:

Приведем последовательность к нормированному виду. Для этого сначала преобразуем исходную последовательность в битовую (в предположении, что разрядность чисел исходной последовательности равна 3)

= 011 111 101.

Вычислим нормированные значения:

d0 = ( 1)1 20 + ( 1)1 21 + ( 1)0 22 = 1 2 + 4 = 1,

d1 = ( 1)1 20 + ( 1)1 21 + ( 1)1 22 = 1 2 4 = 7,

d2 = ( 1)1 20 + ( 1)0 21 + ( 1)1 22 = 1 + 2 4 = 3.

Вычислим всплески корреляции:

с

1 1 7 7 3 3

 

59 1,

 

 

0

 

1 1 7 7 3 3

 

59

 

с

 

1 7 7 3 3 1

 

 

11

,

1 1 7 7 3 3

59

1

 

 

 

с

 

1 3 7 1 3 7

11 ,

 

 

2

 

1 1 7 7 3 3

 

59

 

с

 

1 1 7 7 3 3

 

59

1 .

1 1 7 7 3 3

59

3

 

 

 

Изобразим полученные значения графически:

1

 

 

 

0,8

 

 

 

0,6

 

 

 

0,4

 

 

 

0,2

 

 

 

0

 

 

 

0

1

2

3

 

 

215

 

Для последовательности, чьи свойства близки к свойствам истинно случайной последовательности, значения всплесков корреляции должны стремится к нулю во всех точках, кроме тех, чье значение кратно длине последовательности в символах для символьной АКФ и длине последовательности в битах для битовой АКФ (рис. 7.10,а). Присутствие значительных всплесков корреляции свидетельствует о наличии зависимости между элементами последовательности (рис. 7.10,б).

а

б

Рис. 7.10. Автокорреляционная функция:

а – результат положительный; б – отрицательный

216

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

Пусть b01 ,b11 ,...,bn1 1 и b02 ,b12 ,...,bn21 – нормированные битовые

последовательности длиной n; d01 ,d11 ,...,dn1 1 и d02 ,d12 ,...,dn21 – нормированные числовые последовательности длиной n. В этом случае значение всплесков корреляции будут равны

 

n 1

 

 

 

bi1 b i2 j mod n

сbit i 0

 

 

j

n 1

bi 1 2

 

 

 

 

i 0

 

 

для битовых последовательностей и

 

n 1

d i2 j mod n

 

di 1

сsym i 0

 

 

j

n 1

 

di1 2

i 0

для байтовых.

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

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

Также автокорреляционная функция может использоваться для выявления периодичности в исследуемой последовательности. На рис. 7.11 показано изменение битовой АКФ для регистра сдвига с линейной обратной связью с образующим многочленом

Ф(x) x9 x4 1 (период равен 511) в зависимости от длины фай-

ла. Как можно заметить, начиная с длины файла, равной 545, один из вторичных выбросов (то есть всплеск корреляции максимальной длины, не находящийся в точках со смещением, равным нулю и длине периода) находится в точке со смещением, равным 511.

217

а

б

в

г

Рис. 7.11. Битовая автокорреляционная функция для LFSR с образующим многочленом Ф(x) x9 x4 1,

длина файла: а – 500 бит; б – 600 бит; в – 800 бит; г – 1300 бит

218

7.6. Спектральный тест

Цель теста – проверить равномерность распределения 0 и 1 в исследуемой последовательности на основе анализа высоты выбросов преобразования Фурье.

Пусть = 1, 2,…, n – двоичная последовательность длины n. Преобразуем ее в последовательность x = x1,x2,…,xn, где xi = 2 i – 1 (т.е. 1 1, 0 –1). Теперь применим к x дискретное преобразование Фурье и получим последовательность гармоник

S = DFT(x).

Изобразим графически первые n2 гармоник.

Пример 7.7

Вход:

= 1001010011.

Тест:

x = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,

S = DFT(x),

10

 

 

2

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

S'1 xk cos

 

 

(k

1) i

sin

 

 

 

 

 

 

 

(k 1)

 

1,618 1,175i ,

 

10

 

 

 

 

 

 

k 1

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

10

 

2 2

 

 

 

 

 

 

 

 

2

2

 

 

 

 

 

 

S'2 xk cos

 

 

 

 

(k 1)

i sin

 

 

 

 

(k 1)

1,381 4,253i ,

10

 

10

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

2 3

 

 

 

 

 

 

2 3

 

 

 

 

 

 

S'3 xk cos

 

 

 

 

(k 1)

i sin

 

 

 

 

 

 

(k 1)

0,618 1,902i ,

10

 

 

 

10

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

2 4

 

 

 

 

 

 

 

 

2

4

 

 

 

 

 

 

S'4 xk cos

 

 

 

 

(k 1)

 

i sin

 

 

 

 

 

(k 1)

3,618 2,628i ,

10

 

 

10

 

 

k 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

2

 

 

 

 

 

2

 

 

 

 

 

 

 

 

19

 

S'5 xk cos

 

 

(k

1) i

sin

 

 

 

(k 1)

 

2 7,04 10

 

i ,

10

 

 

 

 

k 1

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

M1 = modulus (1,618 – 1,175i) = 2,

 

 

 

 

 

 

 

 

 

 

M2 = modulus (1,381 – 4,253i) = 4,472,

 

 

 

 

 

 

 

 

M3 = modulus (–0,618 – 1,902i) = 2,

 

 

 

 

 

 

 

 

 

 

M4 = modulus (3,618 + 2,628i) = 4,472,

 

 

 

 

 

 

 

 

M5 = modulus (–2 – 7.04 10–19i ) = 2,

 

 

 

 

 

 

 

 

 

 

Графически изображаем Мi,

i

1, 5

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

219

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

4

 

 

 

 

3

 

 

 

 

2

 

 

 

 

1

 

 

 

 

0

 

 

 

 

1

2

3

4

5

У последовательности, чьи свойства близки к свойствам истинно случайной последовательности, число гармоник, чьи длины (светлые всплески) значительно превышают среднюю длину гармоники, должно стремится к 0 (рис. 7.12,а). В противном случае последовательность не является случайной (рис. 7.12,б).

а

б

Рис. 7.12. Спектральный тест:

а – результат положительный; б – отрицательный

220

7.7. Профиль линейной сложности

Цель теста – исследовать последовательность на случайность, анализируя зависимость линейной сложности последовательности от ее длины.

Построение профиля линейной сложности осуществляется сле-

дующим образом. Пусть = 1, 2,…, n – двоичная последовательность длины n. Последовательно рассматриваются подпоследова-

тельности (k), содержащие первые k элементов последовательности и строится график зависимости линейной сложности L от длины подпоследовательности N.

Пример 7.8

Вход:

= 0 0 1 1 0 1 1 1 0.

Тест:

Определяем линейную сложность L для подпоследовательности (i) длиной i.

(1) = 0, L = 0,

(2) = 0 0 , L = 0,

(3) = 0 0 1, L = 3,

(4) = 0 0 1 1, L = 3,

(5) = 0 0 1 1 0, L = 3,

(6) = 0 0 1 1 0 1, L = 3,

(7) = 0 0 1 1 0 1 1, L = 3,

(8) = 0 0 1 1 0 1 1 1, L = 5,

(9) = 0 0 1 1 0 1 1 1 0, L = 5.

Строим график зависимости линейной сложности L от длины подпоследовательности i:

6

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

1

2

3

4

5

6

7

8

9

221

У последовательности, чьи свойства близки к свойствам истинно случайной последовательности, линия графика должна стремит-

ся к линии y N2 (рис. 7.13,а). В противном случае последовательность не является случайной (рис. 7.13,б).

а

б

Рис. 7.13. Спектральный тест:

а – результат положительный; б – отрицательный

222

ГЛАВА 8. РАЗРАБОТКА СИСТЕМЫ ОЦЕНКИ КАЧЕСТВА ГЕНЕРАТОРОВ ПСЕВДОСЛУЧЕЙНЫХ ЧИСЕЛ

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

Еще одна проблема существующих систем – ориентированность на генераторы определенного вида. К примеру, «DIEHARD» предназначен для исследования 32-разрядных конгруэнтных генераторов, и большинство его тестов рассматривают наборы, состоящие именно из 32-разрядных чисел. Руководство НИСТ требует, чтобы исследуемая последовательность была битовой. Предположим, необходимо оценить статистические свойства 8-разрядного генератора. Как в этом случае формировать последовательность для тестирования? Ни одна из существующих систем никаких рекомендаций не дает. В результате, при тестировании системой «DIEHARD» или Руководством НИСТ могут быть упущены некоторые особенности, присущие 8-разрядным генераторам и выявляемые только тестами, ориентированными именно на 8-разрядные последовательности. Разрабатывать же генераторы, формирующие последовательности, подходящие для той или иной системы, также неправильно, поскольку генератор предназначен для решения других задач, и это система тестирования должна подстраиваться под структуру генератора, а не наоборот.

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

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

223

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

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

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

224

Градация тестов по их силе. При анализе последовательности может использоваться несколько десятков тестов. Выполнение каждого теста требует некоторого времени, которое для некоторых тестов (например, «Сжатие при помощи алгоритма Лемпела–Зива») может быть значительным. В ряде случае для получения заключения о свойствах генератора необходимо провести исследование сотен или тысяч последовательностей. Таким образом, время до получения предварительных итогов исследования может быть значительным. Данное время можно сократить, если ввести градацию тестов по их силе. Более того, можно вести категории для тестов, например «быстрый», «медленный», «обязательный», «вспомогательный». Это позволит ввести политику тестирования: вначале выполняются «быстрые обязательные» тесты, то есть тесты, непрохождение которых однозначно свидетельствует о непрохождении других тестов (если не пройден «частотный тест», то не будут пройдены «проверка серий», «проверка равномерности» и так далее). При успешном прохождении «быстрых обязательных» тестов будут выполняться тесты следующей категории, и так вплоть до самых сложных специфических тестов. Каждую категорию тестов также можно проранжировать, останавливая тестирование в случае неудачных результатов для данной категории или реализуя ветвящееся тестирование, когда выбор следующей категории зависит от результатов выполнения текущей.

Наличие средств оценки периода тестируемой последова-

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

225

генератора и будет период. Несколько сложнее определить период, анализируя непосредственно последовательность. В качестве одного из вариантов определения периода в данном случае можно предложить следующий. Запоминается первый элемент последовательности. Двигаясь по последовательности, находим элемент, равный первому. Анализируем следующий за ним, сравнивая со вторым, и так далее до конца последовательности. Если все соответствующие элементы совпадают, это означает наличие периодичности. В данном случае необходимо определить значение периода и при тестировании анализировать только элементы, входящие в период, предварительно выдав информационное сообщение. Данный подход может не сработать в случае наличия предпериода или вырожденных циклов, поэтому имеет смысл сделать несколько испытаний (например, пройти от конца последовательности к началу или начать анализ с заданного элемента последовательности). Для того чтобы сократить время тестирования, рекомендуется включить оценку периода в один из обязательных последовательных тестов, например в «проверку равномерности». Данный тест последовательно обрабатывает элементы последовательности, соответственно, может заодно осуществлять определение периодичности.

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

Настройки параметров тестов. Каждый тест анализирует чис-

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

226

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

разрядность серии: 1, 2, …, разрядность элемента последовательности;

серии смежные (несмежные);

последовательность анализируется целиком и (или) разбивается на блоки и тест применяется к блоку, в последнем случае необходимо также определить параметры блока;

уровень значимости теста;

расширения для проверки категорий;

расширения для проверки отсутствующих наборов.

Настройки параметров тестирования. Данный блок определя-

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

Наличие тестов с отсутствующими наборами. Как было пока-

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

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

227

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

Возможность получения интегральной оценки. Данное тре-

бование решает обратную задачу. В ходе исследований могут анализироваться сотни и тысячи последовательностей, причем каждая последовательность оценивается набором из нескольких десятков тестов. Для ускорения процесса анализа желательно ввести интегральную оценку, которая позволяла бы дать заключение о прохождении последовательностью набора тестов и прохождении испытания генератором. Каждый тест возвращает значение P-value, равномерно распределенное на интервале [0, 1], следовательно, можно применить критерий Колмогорова–Смирнова или Андерсона– Дарлинга и получить значение P-value для оценки прохождения последовательностью группы тестов. Данные значения, полученные для всех последовательностей тестируемого генератора, опять обрабатываются при помощи указанных критериев, и вычисляется значение P-value, характеризующее успешность прохождения генератором испытания.

Возможность тестирования нескольких последовательно-

стей. Для принятия решения о свойствах генератора недостаточно протестировать одну последовательность – требуется испытание

множества последовательностей, как правило, равного 1 , где –

уровень значимости теста. В связи с этим система оценки качества должна иметь возможность тестировать группу последовательностей (в идеале – несколько генераторов с группами последовательностей). Результат должен представлять как отчеты по каждому испытанию, так и интегральную оценку для сокращения времени анализа.

228

Развернутый отчет по каждому тесту. Учитывая, что парамет-

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

детальное описание теста;

параметры тестирования;

область тестирования;

значения промежуточных статистик;

интегральная статистика;

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

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

время начала и окончания тестирования;

наименование объектов тестирования (генераторов с указанием параметров, использовавшихся при формировании набора последовательностей);

параметры тестирования;

интегральная статистика прохождения набором последовательностей набора тестов;

интегральная статистика прохождения каждой последовательностью набора каждого теста;

заключение системы о результатах испытания.

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

обобщенный отчет о тестировании группы генераторов;

обобщенный отчет о тестировании конкретного генератора;

обобщенный отчет о прохождении конкретным генератором конкретного теста и так далее.

229

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

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

Наличие средств оценки корреляции. Система оценки качест-

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

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

Наличие встроенных генераторов псевдослучайных после-

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

230

ретических критериев, а также оценки свойств периодичности исследуемых генераторов.

Возможность онлайн-тестирования. Обилие всевозможных критериев (как эмпирических, так и теоретических), накапливаемые в ходе тестирования сведения о свойствах тех или иных генераторов – всё это делает необходимым создание системы онлайнтестирования генераторов ПСП. В идеале, данная система должна представлять собой клиент-серверную архитектуру. На стороне клиента находится приложение, которое занимается тестированием генераторов, сбором полученной статистики и отправкой последней на сервер. На сервере хранится информация об эмпирических и теоретических критериях, а также результаты тестирования различных генераторов, полученные от пользователей системы.

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

231

ЗАКЛЮЧЕНИЕ

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

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

232

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

1.Бейтмен Г., Эрдейи А. Высшие трансцендентные функции: т.

1.Гипергеометрическая функция. Функции Лежандра.: Пер. с

англ. М.: Наука, 1965. – 296 с.

2.Бейтмен Г., Эрдейи А. Высшие трансцендентные функции: т.

2.Функции Бесселя, функции параболического цилиндра, ортогональные многочлены.: Пер. с англ. М.: Наука, 1966. – 296

с.

3.Берлекэмп Э. Алгебраическая теория кодирования. М.: Мир, 1971. – 478 с.

4.Гантмахер Ф. Р. Теория матриц. М.: Наука, 1988. 552 с.

5.Гмурман В.Е. Теория вероятностей и математическая статистика: Учебное пособие. М.: Высшая школа, 2003. – 479 с.

6.Гнеденко Б.В. Курс теории вероятностей. М.: Наука, 1988. –

451с.

7.ГОСТ 28147-89. Система обработки информации. Защита криптографическая. Алгоритм криптографического преобразования.

8.Грэхем Р., Кнут Д., Паташник О. Конкретная математика.

Основание информатики: Пер. с англ. М.: Мир, 1998. – 703 с.

9.Иванов М.А., Чугунков И.В. Метод генерации псевдослучайной последовательности с произвольным законом распределения // Безопасность информационных технологий. 1999. № 2. С. 91–

10.Иванов М.А., Чугунков И.В. Теория, применение и оценка качества генераторов псевдослучайных последовательностей.

М.: Кудиц-Образ, 2003. – 240 с.

11.Кнут Д. Искусство программирования. т. 1. Основные алгоритмы, 3-е изд.: Пер. с англ.: Учебное пособие. М.: ИД «Виль-

ямс», 2006. – 720 с.

12.Кнут Д. Искусство программирования. т. 2. Получисленные алгоритмы, 3-е изд.: Пер. с англ.: Учебное пособие. М.: ИД

«Вильямс», 2007. – 832 с.

13.Корн Г., Корн Т. Справочник по математике для научных работников и инженеров: Пер. с англ. / Под ред. И.Г. Арамано-

вича. М.: Наука, 1973. – 832 с..

233

14.Рябко Б.Я., Пестунов А.И. «Стопка книг» как новый статистический тест для случайных чисел // Проблемы передачи ин-

формации. 2004. Т. 40. Вып. 1. С. 73–78.

15.A statistical test suite for random and pseudorandom number generators for cryptographic applications. NIST Special Publications 800-22. May, 2001.

16.A statistical test suite for random and pseudorandom number generators for cryptographic applications. NIST Special Publications 800-22. Revision 1.a. April, 2010.

17.Abramowitz M., Stegun I.A. Handbook of Mathematical Functions with Formulas, Graphs and Mathematical Tables. – U.S. Department of Commerce, 1972. – 1046 pp.

18.Cooper C. On the rank of random matrices // Random Structure and Algorithms. 2000. vol.16. № 2. pp. 209–232.

19.Daemen J., Rijmen V. AES Proposal: Rijndael. http://csrc.nist.gov/encryption/aes/.

20.Dawson E., Gustafson H., Davies N. Black box analysis of stream ciphers // Australian Journal of Combinatorics. 1991, № 4. pp. 59– 70.

21.Gustafson H. Dawson E., Caelli W. Applying randomness tests to commercial level block ciphers. in Loxton J.H. Number Theory and Cryptography. – Cambridge University Press. 1990. pp. 120– 128.

22.Gustafson H. Dawson E., Nielsen L., Caelli W. A computer package for measuring the strength of encryption algorithms // Computer & Security, 1994. vol. 13, issue 8. pp. 687–697.

23.Lempel A., Ziv J. On the complexity of finite sequences // IEEE Transaction on Information Theory, IT-22, Jan. 1976, pp. 75–81.

24.Leung A.K., Tavares S.E. Sequence complexity as a test for cryptographic systems // Advanced in Cryptology, Crypto’94, pp. 468– 474.

25.Marsaglia G. A Current View of Random Number Generators in Billard L., editor(s), Computer Science and Statistics: The Interface, pp. 3–10, Elsevier Science Publishers B. V., Amsterdam, 1985.

26.Marsaglia G. DIEHARD: Battery of tests of randomness. – http://stat.fsu.edu/pub/diehard/

27.Marsaglia G. Note on a proposed test for a random number genera-

234

tors // IEEE Transactions on Computers. 1985. vol. 34. pp. 756– 758.

28.Marsaglia, G., Marsaglia, J. Evaluating the Anderson-Darling Distribution // Journal of Statistical Software. 2004. vol. 9. pp 1–5.

29.Marsaglia G., Tsang W.W. Some difficult-to-pass tests of randomness // Journal of Statistical Software. 2002. vol. 7. pp. 1–9.

30.Marsaglia, G., Tsang, W., Wang, J. Evaluating Kolmogorov’s Distribution // Journal of Statistical Software. 2003. vol. 8. pp 1–4.

31.Marsaglia G., Tsay L.-H. Matrices and the structure of random number sequences // Linear Algebra and its Applications. 1985. vol. 67. pp. 147–156.

32.Marsaglia G., Zaman A. Monkey tests for random number generators // Computers and Mathematics with Applications. 1993. Vol. 26. No. 9. pp. 1–10.

33.Maurer U. A Universal Statistical Test for Random Bit Generators. Journal of Cryptology. Vol. 5, No. 2, 1992. pp.89–105.

34.Revesz P. Random Walk in random and non-random environments.

– World Scientific Publishing Co. 2005. 380 p.

35.Rukhin A.L. Approximate entropy for testing randomness. – Journal of Applied Probability, 2000, Vol. 37. No. 1, pp.88–100.

36.Rukhin A.L. Testing Randomness: A Suite of Statistical Procedures // Теория вероятностей и ее применения. 2000. т. 45. вып. 1. С. 137-162.

37.Soto J. Statistical Testing of Random Number Generators. http://infosec.pku.edu.cn/~tly/nist-nissc-1999/papers/p24.pdf.

235

Илья Владимирович Чугунков

Методы и средства оценки качества генераторов псевдослучайных последовательностей,

ориентированных на решение задач защиты информации

Учебное пособие

Редактор Е.Г. Станкевич

Подписано в печать 15.11.2011.

Формат 60×84 1/16.

Печ. л. 15,0. Уч.-изд. л. 17,0.

Тираж 120 экз.

Изд. № 1/38

Заказ № 28.

Национальный исследовательский ядерный университет «МИФИ». 115409, Москва, Каширское ш., 31

ООО «Полиграфический комплекс «Курчатовский». 144000, Московская область, г. Электросталь, ул. Красная, 42