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

Таблица 4.9. Рекомендуемые параметры тестирования

n

L

Q = 10 2L

387 840

6

640

904 960

7

1 280

2 068 480

8

2 560

4 654 080

9

5 120

11 342 400

10

10 240

22 753 280

11

20 480

49 643 520

12

40 960

107 560 960

13

81 920

231 669 760

14

163 840

496 435 200

15

327 680

1 059 061 760

16

655 360

Пример 4.8

Вход:

= 010110100111010101110; L = 2;

Q = 4.

Тест:

K21 4 6 .

2

Тестовый сегмент будет состоять из 6 блоков по 2 бита, следовательно, последний элемент последовательности (0) отбрасывается, как не принадлежащий ни одному блоку.

Инициализирующий сегмент:

и = 01011010.

Заполняем таблицу:

Блок «00» не встречается ни разу, следовательно, T0 = 0; Блок «01» встречается 2 раза, следовательно, T1 = 2; Блок «10» встречается 2 раза, следовательно, T2 = 4; Блок «11» не встречается ни разу, следовательно T3 = 0. Тестовый сегмент:

т= 011101010111.

i = 5: Значение блока = 1, sum log2 5 2 1,5849 , T1 = 5;

i = 6: Значение блока = 3, sum 1,5849 log2 6 0 4,1699 , T3 = 6; i = 7: Значение блока = 1, sum 4,1699 log2 7 5 5,1699 , T1 = 7;

130

i = 8: Значение блока = 1, sum 5,1699

log2

8 7 5,1699 , T1 = 8;

i = 9: Значение блока = 1, sum 5,1699

log2

9 8 5,1699 , T1 = 9;

i = 10: Значение блока = 3, sum 5,1699 log2 10 6 7,1699 , T3 =

= 10;

 

 

Во время выполнения операций тестовый сегмент изменялся следующим образом:

i

T0

T1

T2

T3

(00)

(01)

(10)

(11)

 

4

0

2

4

0

5

0

5

4

0

6

0

5

4

6

7

0

7

4

6

8

0

8

4

6

9

0

9

4

6

10

0

9

4

10

fn

7,1699

1,195 .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Из табл. 4.8 для L = 2 находим значение expectedValue

= 1,537.

 

0,8

 

 

 

3

 

1,338

 

 

 

 

 

 

 

 

 

 

 

32 K 2

 

 

 

0,184 ,

 

 

 

 

0,7

 

2

4

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

n

expectedValue

 

 

 

 

 

f

n

expectedValue

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P-value

 

 

 

 

 

 

 

 

 

 

erfс

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1,195 1,537

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

 

 

 

 

erfc

2 0,184

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4.10. Сжатие при помощи алгоритма Лемпела–Зива

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

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

131

Пример 4.9

Вход:

= 010110010.

Заполнение словаря:

Позиция бита

Бит

Новое слово?

Слово

1

0

Да

0 (бит 1)

2

1

Да

1 (бит 1)

3

0

Нет

 

4

1

Да

01 (биты 3–4)

5

1

Нет

 

6

0

Да

10 (биты 5–6)

7

0

Нет

 

8

1

Нет

 

9

0

Да

010 (биты7–9)

Таким образом, словарь состоит из пяти слов: (0, 1, 01, 10, 010).

Подсчитываем число слов в словаре Wobs. Данная величина аппроксимируется с нормальным распределением со средним и

отклонением , следовательно, можно рассчитать значение P- value:

 

 

W

 

 

 

 

erfс

obs

 

 

P-value X , , P-value W

, ,

 

 

2

 

.

 

 

 

 

 

obs

 

 

2

 

 

 

 

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

 

 

 

 

 

 

 

 

 

Рекомендуемая длина последовательности: n = 1 000 000.

Примечание. К сожалению, расчет значения и отклонения

является проблематичным. В качестве приближенных значений разработчики Руководства НИСТ указали 69 586,25 и

70,448718 , полученные для последовательностей длиной 106

бит с генераторов BBS (Blum-Blum-Shub) и генераторов, использующих в своей работе алгоритм SHA-1. Фиксированная длина тестируемой последовательности и использование экспериментальных значений вместо теоретических при расчете статистики теста привели к тому, что в новой ревизии Руководства НИСТ [16] данный тест отсутствует.

132

4.11. Проверка линейной сложности

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

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

 

 

n

 

Разобьем ее на

N

 

 

непересекающихся подпоследовательно-

 

 

M

 

стей длиной М каждая. Лишние биты отбрасываем.

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

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

ной обратной связью (LFSR – Linear Feedback Shift Register [10]),

необходимую для генерации данной подпоследовательности).

Пример 4.10

Вход:

= 1101011110001.

Определение линейной сложности:

Для генерации данной последовательности достаточно LFSR длиной 4 (рис. 4.1). Таким образом, линейная сложность последовательности равна 4.

Рис. 4.1. Пример LFSR, генерирующего последовательность = 1101011110001

133

Для вычисления линейной сложности также можно использовать алгоритм Берлекэмпа–Месси [3]. Данный алгоритм использует n итераций, причем N-я итерация, N n , определяет линейную

сложность подпоследовательности N , состоящей из первых N бит

исходной последовательности . Шаг 1. Инициализация:

С D 1 , L 0 , m 1 , B D 1, N 0 .

Шаг 2. Пока N n выполнить шаги 2.1–2.3.

Шаг 2.1. d с0 N 1 с1 N с2 N 1 ... сL N L 1 .

Шаг 2.2. Если d 1 , выполнить шаги 2.2.1 и 2.2.2.

Шаг 2.2.1. T D C D ,

сN m сN m b0 , сN m 1 сN m 1 b1 , … , сn 1 сn 1 bn N m 1 .

Шаг 2.2.2. Если L N2 , то L N 1 L , m N , B D T D .

Шаг 2.3. N N 1 .

Шаг 3. Возвратить значение L.

Пример 4.11

Вход:

= 1101011110001; n = 13.

Определение линейной сложности с помощью алгоритма Берле- кэмпаМесси:

εN

d

 

T D

 

 

 

C D

 

 

L

m

 

B D

 

N

 

c0

c1

c2

c3

 

c4

b0

b1

b2

b3

b4

 

 

 

 

 

 

 

 

-

-

-

 

1

 

 

 

 

 

 

0

– 1

1

 

 

 

 

0

1

1

1

 

1

+ D

 

 

1

0

1

 

 

 

 

1

1

0

1

 

1

+ D

 

 

1

0

1

 

 

 

 

2

0

1

1+D

1 + D + D2

 

 

2

2

1 + D

 

3

1

0

1+D

1 + D + D2

 

 

2

2

1 + D

 

4

0

1

1+D+D2

1

+ D +

 

 

3

4

1 + D + D2

 

5

1

1

1+D +D3

1

 

+ D2

 

 

3

4

1 + D + D2

 

6

1

1

1

+D2

1

 

 

+ D3

+ D4

4

6

1

+ D2

 

7

1

0

1

+D2

1

 

 

+ D3

+ D4

4

6

1

+ D2

 

8

1

0

1

+D2

1

 

 

+ D3

+ D4

4

6

1

+ D2

 

9

0

0

1

+D2

1

 

 

+ D3

+ D4

4

6

1

+ D2

 

10

0

0

1

+D2

1

 

 

+ D3

+ D4

4

6

1

+ D2

 

11

0

0

1

+D2

1

 

 

+ D3

+ D4

4

6

1

+ D2

 

12

1

0

1

+D2

1

 

 

+ D3

+ D4

4

6

1

+ D2

 

13

134

Таким образом, линейная сложность последовательности равна 4. С D – образующий многочлен [10] LFSR, соответствующий

структуре генератора, полученной в примере 4.10.

Находим среднее значение

 

M

 

2

 

 

 

9 1 M 1

 

 

 

M

 

 

 

 

 

 

 

3

9

 

 

 

 

 

2

36

 

2M

 

 

и вычисляем статистику для каждой подпоследовательности:

Ti 1 M Li 92 .

Значения Ti распределяются на К + 1 категорий 0, …, K:

 

Ti 2,5,

0 0 1;

2,5 T 1,5,

1;

 

i

!

 

1

 

 

1,5 T 0,5,

 

2

 

2

1;

 

i

 

 

 

 

 

3 4 1;

0,5 Ti 0,5,

 

0,5 T 1,5,

 

4

 

4

1;

 

i

 

 

 

 

 

1,5 Ti 2,5,

5

 

5

1;

 

Ti 2,5,

6 6 1;

 

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

 

 

 

2

 

 

 

 

K

 

 

 

 

 

 

 

2 obs

i N i

 

,

 

 

 

 

 

i 0

N i

 

 

 

 

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

свободы, равным K.

Значения i определяются при помощи следующих формул:

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

P T

k 0

 

 

 

 

 

 

 

;

 

 

 

3

2

2

k 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

P T

k 0

 

 

 

 

 

 

.

 

 

 

 

 

 

2

 

k

 

1

 

 

 

 

 

 

 

 

 

 

3 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таким образом, получаем

 

 

 

 

 

 

 

 

 

 

 

π0

P(T 2,5)

 

1

 

 

 

0,0104 ,

 

 

 

 

 

 

 

 

22

 

2,5

 

 

1

 

 

 

 

 

 

 

 

3

 

 

135

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

π1 P(T 1,5) π0 3 22 1 1,5 1 0,0104 0,0312 ,

π2 P(T 0,5) π1 π0 3 22 1 0,5 1 0,0312 0,0104 0,125 ,

π6 P(T 2,5) 3 2212,5 2 0,0208 ,

π5 P(T 1,5) π6 3 2211,5 2 0,0208 0,0625 ,

π4 P(T 0,5) π5 π6 3 2210,5 2 0,0625 0,0208 0,25

π3 1 π0 π1 π2 π6 π5 π4 1 0,0104 0,0312 0,125 .

0,0208 0,0625 0,25 0,5.

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

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

K

,

2 obs

.

 

 

2

 

2

 

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

 

 

 

Рекомендуемые параметры тестирования: n 1 000 000, 500 M

5000, N 200.

Пример 4.12

Вход:

= 1101011110001; M = 13.

Тест:

n

13

 

 

N

 

 

 

 

1.

 

m

13

 

 

Минимальная длина LFSR, необходимого для генерация данной последовательности, равна 4, т.е. L1 = 4.

 

 

 

9 ( 1)13 1

 

 

 

13

 

2

 

 

13

 

 

 

 

 

 

 

 

 

 

 

3

9

μ

 

 

13

6,77 ,

2

36

 

 

 

 

 

 

 

2

 

2

 

 

T ( 1)13 (4 6,77)

3 .

 

 

 

 

 

1

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

136

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

 

 

 

 

 

 

χ2 (obs)

(0 1 0,0104)2

 

(0 1 0,0312)2

 

(0 1 0,125)2

 

 

 

 

 

 

 

 

 

 

 

 

1 0,0104

 

 

 

1 0,312

 

 

 

1 0,123

 

 

 

 

 

(0 1 0,5)2

 

 

(0 1 0,25)2

(0 1 0,625)2

(1 1 0,0208)2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

48,61,

 

1 0,5

1 0,25

 

 

1 0,625

 

 

 

1 0,208

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P-value ,

2

 

 

 

 

 

 

 

 

 

6

,

48,61

 

 

 

 

obs P-value 6; 48,61 igamc

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8,9 10 9 < 0,01 – тест не пройден.

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

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

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

число появлений i

...i

m

всевозможных пересекающихся серий дли-

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ной m, i

...i

m 1

 

– длиной m – 1

и

i

...i

m 2

длиной m – 2.

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

2m

 

 

 

 

 

 

 

 

 

 

 

n

 

 

2m

 

 

 

 

2

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

i

...i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i ...i

n ,

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

...i

 

 

1

 

 

m

 

2m

 

 

 

 

 

n i

...i

 

 

1

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

m

 

 

 

 

 

 

2

 

 

 

2m 1

 

 

 

 

 

 

 

 

 

 

 

n 2

 

 

 

2m 1

 

 

 

2

 

 

 

 

m 1

 

 

 

 

 

 

 

 

 

i

...i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i ...i

 

 

n ,

 

 

n

 

 

 

 

 

 

2m 1

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

i

...i

 

 

 

1

 

 

m 1

 

 

 

 

 

 

 

 

 

 

 

i

...i

1

 

m 1

 

 

 

 

 

 

 

 

1

m 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

m 2

 

 

 

 

2

 

 

 

2m

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n 2

 

 

 

 

2m 2

 

 

 

2

 

 

 

 

m 2

 

 

 

 

 

 

 

 

 

 

 

 

i

...i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

...i

 

n .

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i ...i

 

 

 

 

1

 

 

m 2

 

 

2m 2

 

 

 

 

 

 

 

 

i ...i

1

 

m 2

 

 

 

 

 

 

 

 

1

m 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 m 2

 

 

 

 

Значения i1 ...im не являются независимыми, поэтому применить

критерий к статистике 2m критерий 2 нельзя. В связи с этим вычисляются статистики

2m 2m 2m 1 ,2 2m 2m 2 2m 1 2m 2 ,

137