Скачиваний:
21
Добавлен:
26.05.2014
Размер:
284.26 Кб
Скачать

Преобразование SR работает как перестановка индексов нашего приближения и в итоге получаем последовательность X′′′ и линейное приближение (из-за симметричности оно остается прежним), вероятность которого не изменяется

3

 

 

3

 

 

 

 

 

X

 

 

X

 

 

 

 

 

x′′′

x′′′

+

x ·

8+4

x ·

8+7

= κ

.

i·8+5

i·8+6

 

i

i

0

 

i=0

 

 

i=0

 

 

 

 

 

В преобразование MC следует подробно исследовать зависимость каждого бита на выходе от бит на входе преобразования. Снова (как и в дифференциальном анализе) рассмотрим только первые два байта s0 = [α7 . . . α0] и

 

 

 

 

 

 

 

 

s0

=

 

 

• s0

 

 

e1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s1 = [β7

. . . β0] состояния

S. Тогда состояние

S равняется

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

02

 

 

 

 

03

 

s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

= 03 • s 02 • s

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e1

 

 

 

 

 

0

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или более подробно

α6

e

 

α5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β5

 

β6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α7

 

 

 

α6

β6

 

β7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e5

 

 

 

α4 β4 β5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

=

α

=

α

3

α

7

β β

4

β

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

α

 

 

 

α α β β β

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e3

 

 

 

2

 

7

 

 

2

 

 

3

 

7

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

α

 

 

 

α

1

β

1

 

β

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α

 

 

 

α

0

α

7

β β

1

β

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e1

 

 

 

 

 

 

 

 

0

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α

 

 

 

α

7

β

0

 

β

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e7

 

 

 

α5 α6

 

β5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β

 

 

 

α6 α7 β6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β5

 

 

 

α4 α5 β4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

s

 

=

β

=

α

3

α

4

 

α β

3

β

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

7

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

e

 

 

 

α

2

α

3

 

α β

2

β

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β3

 

 

 

 

 

 

 

 

 

7

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

α

1

α

2

 

β

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

β2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

α0 α1

 

α7 β0 β7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β1

 

 

 

α0 α7

 

β7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

β0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В нашем случае

нужно получить выражение, зависящее от бит

α2

,

α1

,

β2

 

 

e

 

 

 

 

 

 

 

 

 

 

α7

β0 β1

 

 

 

 

 

1

α2 α1 β2 β1

= (α1 β1 β2) (α0

β7) e2

 

e1

.

и β

. Для этого рассмотрим линейную комбинацию бит

α2 α1

β

β

 

e

e

1 e

 

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

e

 

 

e

 

 

 

 

 

 

 

2

1

 

 

0 α1 α7 β0

 

7

) = α

2

α

1 β2 β1

 

 

 

 

α

 

β ) (α

 

 

 

 

 

 

 

 

 

 

β

 

 

 

 

 

 

 

 

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

3

3

X

X

xi′′′′·8+5 xi′′′′·8+6 +

xi·8+4 xi·8+7 = κ0.

i=0

i=0

Далее снова следует преобразование AddRoundKey(), которое добавит к нашему приближению сумму определенных бит ключа K1 первого раунда. И

20

пусть Y1 — последовательность бит состояния после этого преобразования. В результате, мы получаем линейное приближение первого раунда

3

 

3

X

X

 

y1,i·8+5 y1,i·8+6 +

xi·8+4 xi·8+7 = κ0 κ1,

i=0

i=0

где

 

 

 

3

3

 

X

X

κ0

= ki·8+4 ki·8+7 и κ1 = k1,i·8+5 k1,i·8+6.

 

i=0

i=0

вероятность которого равна pL = 1/2 + 1/32, а отклонение ε = +1/32. Проделав те же операции для второго раунда, получим линейное прибли-

жение первых двух раундов, которое и требовалось построить

3

 

3

 

 

 

 

 

 

 

 

X

 

X

 

 

 

 

 

 

 

yi·8+4 yi·8+7 +

 

xi·8+4 xi·8+7 = κ0 κ1 κ2,

i=0

 

i=0

 

 

 

 

 

 

 

где

 

 

 

 

 

 

 

 

 

 

3

3

 

 

 

 

 

 

 

3

 

X

X

 

 

 

 

 

X

κ0 = ki·8+4 ki·8+7, κ1 =

 

k1,i·8+5 k1,i·8+6 и κ2 =

 

k2,i·8+4 k2,i·8+7.

i=0

i=0

 

 

 

 

 

i=0

Вероятность полученного приближения равна

 

32 ,

pL = 1/2 + 27 ·

µ 16

4

· µ 16

= 1/2 +

 

 

4

 

 

8

 

 

1

 

а отклонение равно ε = +1/32.

Следует заметить, что мы получили линейное приближение с одинаковыми суммой входа Xm = [09 09 09 09] и суммой выхода Ym = [09 09 09 09]. В результате, если исключить сумму бит ключа с правой стороны приближения, то полученное выражение

3

3

X

X

yi·8+4 yi·8+7 +

xi·8+4 xi·8+7 = 0

i=0

i=0

должно выполняться с вероятностью pL = 1/2 + 1/32, если сумма κ0 κ1 κ2 = 0, или с вероятностью pL = 1/2 − 1/32, если сумма κ0 κ1 κ2 = 1. Но в любом случае эффективность приближения будет равна |ε| = 1/32.

3.2.4 Извлечение бит подключа последнего раунда.

Если обнаружено линейное приближение R-1 раундов с достаточно большой вероятностью для шифра с числом раундов R, то можно напасть на шифр, извлекая биты подключа последнего раунда. В нашем случае, возможно извлечь биты из подключа K3 последнего раунда. Этот процесс основывается на частичном расшифровании последнего раунда шифртекста. Те позиции подключа K3, которые были бы вовлечены в приближение на последнем раунде, называются целевым частичным подключем.

21

В нашем случае, в целевой частичный подключ входят биты с 4 по 7, с 12 по 15, с 20 по 23 и с 28 по 31. Соответственно, нам нужно перебрать все 216 возможных значения подключа

K3= [K3,4 . . . K3,8, K3,12 . . . K3,15, K3,20 . . . K3,23, K3,28 . . . K3,31].

Для каждого значения подключа мы выберем 213 случайных открытых текстов X. Далее для каждого такого текста получим шифртекст на неизвестном ключе K (предполагаем, что нам заранее были известен набор пар открытого текста и шифртекста), и произведем его частичное расшифрование на текущем ключе-кандидате. Подставим значения бит в наше линейное приближение и проверим выполняется ли оно. Если результат верный (то есть приближение выполняется), то увеличиваем счет ключа-кандидата. В конце подсчитываем вероятность p выполнения приближения и эффективность |ε| для каждого значения подключа.

Ниже приведена часть результата нашей атаки.

K3

|ε|

F A 1 9

0.01209

F A 1 A

0.00659

F A 1 B

0.00854

F A 1 C

0.00940

F A 1 D

0.00146

F A 1 E

0.00964

F A 1 F

0.00024

F A 2 0

0.00610

F A 2 1

0.01025

F A 2 2

0.00452

F A 2 3

0.03040

F A 2 4

0.00354

F A 2 5

0.00745

F A 2 6

0.00488

F A 2 7

0.01282

F A 2 8

0.02075

F A 2 9

0.00842

F A 2 A

0.01599

F A 2 B

0.00476

F A 2 C

0.01575

F A 2 D

0.00403

Как видно из результатов, полученная эффективность очень близка к ожидаемой (1/32 = 0.03125). В итоге мы получили 16 бит ключа третьего раунда K3 из 32 возможных (знак x означает неизвестные биты)

K3 = [xF xA x2 x3].

3.2.5 Восстановление исходного ключа.

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

22

подстановка SB[] действует на 2 полубайта независимо, а в операции эти полубайты так же не зависят друг от друга.

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

k4 = k0 S(k3) 1 k5 = k1 S(k2)

k6 = k2 k4 k7 = k3 k5

k8 = k4 S(k7) 2 k9 = k5 S(k6)

k10 = k6 k8 k11 = k7 k9

k12 = k8 S(k11) 4 k13 = k9 S(k10) k14 = k10 k12

k15 = k11 k13

Так как мы знаем значения младших полубайтов ключа K3 = [k12 k13 k14 k15], то можем получить сначала подключи k10 и k11, а затем k8 и k9, то есть ключ

K2.

k10 = k12 k14 = F 2 = D

k11 = k13 k15 = A 3 = 9

k8 = S(k11) k12 4 = S(9) F 4 = F F 4 = 4

k9 = S(k10) k13 = S(D) A = 7 A = D

Подобным образом мы находим ключ K1 и собственно исходный ключ K.

K = [xB xE x5 x6]

Оставшиеся 16 бит найдем простым перебором.

K= [2B 7E 15 16]

3.2.6Эффективность криптоанализа.

Всего был использован одно линейное приближение. Для него число вариантов подключей равнялось 216. Для каждого подключа было проанализировано 213 пар открытых текстов. То есть всего было произведенно 229 зашифрований.

Для отсавшихся 16 бит ключа перебирались 216 вариантов, то есть было произведенно 216 зашифрований, что значительно меньше числа шифрований для восстановления первых 16 бит ключа. Следовательно, этим перебором можно пренебречь.

Откуда следует, что линейный криптоанализ оказался на 3 порядка эффективнее, чем метод полного перебора, и наша криптосистема оказалась нестойкой к данному методу криптоанализа.

3.2.7 Программная реализация.

Исходный код на языке C++ для линейного криптоанализа приведен в Приложении 3.

23

4Криптосистема как генератор псевдослучайных последовательностей.

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

Xi = f (Xi−1, K), i > 1.

Начальная инициализация последовательности задается значением X0 и ключом K. Последовательность строится начиная со значения X1.

Для тестирования зададим следующие значения X0 = [00 00 00 00] и

ключом K = [2B 7E 15 16].

4.1Введение.

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

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

Проверка статистической гипотезы — процедура генерации заключения, которая имеет два возможных результата — или принять H0 (данные случайны), или принять H1 (данные неслучайны).

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

Вероятность ошибки 1-го рода называется уровнем значимости теста. Эта вероятность может быть установлена до испытания и обозначается как α. Для теста α суть вероятность того, что тест укажет на неслучайность последовательности, тогда как на самом деле она является случайной. То есть на то, что последовательность имеет неслучайные свойства, даже если ее

произвел хороший генератор.

Вероятность ошибки 2-го рода обозначается как β. Для теста β есть вероятность того, что тест укажет на случайность последовательности, тогда

24

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

Одной из основных целей нижеописанных тестов является минимизация вероятности ошибки 2-го рода, иначе говоря, минимизация вероятности принятия последовательности, произведенной плохим генератором, за последовательность, произведенную хорошим генератором. Вероятности α и β связаны друг с другом и с длиной n проверяемой последовательности: если два из этих значений определены, третье определяется автоматически. На практике обычно выбирают размер n и значение для α (вероятности ошибки 1-го рода). Тогда критическая точка для данной статистики выбирается так, чтобы получить наименьшее значение β (вероятность ошибки 2-го рода).

4.2Общее описание набора тестов Руководства НИСТ.

Каждый тест основан на вычислении значения тестовой статистики, которое является функцией данных. Если значение тестовой статистики есть S, a t — критическое значение, то вероятность ошибки 1-го рода и 2-го рода есть соответственно

P (S > t|H0 истинна) = P (отклонить H0|H0 истинна),

P (S < t|H0 ложна) = P (принять H0|H0 ложна).

Тестовая статистика использует вычисление значения P-value, которое констатирует силу доказательства против нулевой гипотезы, иначе говоря, P-value есть вероятность того, что совершенный генератор случайных чисел произвел бы последовательность менее случайную, чем исследуемая, для типа неслучайности, проверяемого тестом. Если P-value для теста равно 1, то последовательность абсолютно случайна. P-value, равное 0, указывает, что последовательность абсолютно неслучайна. Для теста следует выбрать уровень значимости α. Если значение P-value больше или равно α, то принимается нулевая гипотеза, т. е. последовательность кажется случайной. Если значение P-value меньше α, то нулевая гипотеза отклоняется, то есть последовательность кажется неслучайной. Параметр α обозначает вероятность ошибки 1-го рода.

Выберем α равным 0.01, которое говорит о том, что из 100 случайных последовательностей не прошла бы тест лишь одна. При P-value > 0.01 последовательность рассматривается как случайная с доверительностью 99%. При P-value < 0.01 последовательность рассматривается как неслучайная с доверительностью 99%.

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

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

25

Вычисление тестовой статистики. Проводим непосредственное тестирование последовательности на битном уровне.

Вычисление P-value. P-value [0; 1].

Сравнение P-value с α. Задаем α, где α = 0.01. Если P-value > α, то тесты пройдены.

Далее приведен список и общие характеристики (определяемы дефект) каждого статистического теста НИСТ.

1.Частотный тест. Слишком много нулей или единиц.

2.Частотный тест в подпоследовательностях. Слишком много нулей или единиц в подпоследовательностях.

3.Проверка “дырок”. Большое (малое) число подпоследовательностей нулей и единиц свидетельствует, что колебание потока бит слишком быстрое (медленное).

4.Проверка “дырок” в подпоследовательностях. Отклонения в распределении подпоследовательностей единиц.

5.Проверка рангов матриц. Отклонение распределения рангов матриц от соответствующего распределения для истинно случайной последовательности, связанное с периодичностью подпоследовательностей.

6.Спектральный тест. Периодические свойства последовательности.

7.Проверка непересекающихся шаблонов. Непериодические шаблоны встречаются слишком часто.

8.Проверка пересекающихся шаблонов. Слишком часто встречаются m- битные последовательности единиц.

9.Универсальный статистический тест Маурера. Сжимаемость (регулярность) последовательности.

10.Сжатие при помощи алгоритма Лемпела-Зива. Большая сжимаемость, чем истинно случайная последовательность.

11.Линейная сложность. Отклонение от распределения линейной сложности для конечной длины (под)строки.

12.Проверка серий. Неравномерность распределения m-битных слов.

13.Проверка аппроксимированной энтропии. Неравномерность распределения m-битных слов. Малые значения означают высокую повторяемость.

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

15.Проверка случайных отклонений. Отклонение от распределения числа появлений подпоследовательностей определенного вида.

16.Разновидность проверки случайных отклонений. Отклонение от распределения числа появлений подпоследовательностей определенного вида.

26

4.3 Описание каждого теста и их параметры.

Длина тестируемой последовательности во всех тестах равна n = 220 бит. Число экспериментов равно 1000 для каждого теста.

4.3.1 Частотный (Монобитный) тест (Frequency).

Цель этого теста состоит в том, чтобы определить, является ли число появлений 0 и 1 в последовательности приблизительно тем же самым, как ожидалось бы для верно случайной последовательности. Тест оценивает близость частоты появления 1 к 1/2, то есть и количество 0 в последовательности должно быть тем же самым. Все последующие тесты зависят от прохождения этого теста; нет другого наглядного теста, чтобы показать, что тестируемая последовательность неслучайна.

4.3.2Частотный тест в подпоследовательностях (Block-Frequency).

Цель этого испытания состоит в том, чтобы определить, приближается ли число появлений 1 в M -битной подпоследовательности к величине M/2, как ожидалось бы согласно предположению о ее случайности. Для размера блока M = 1, этот тест вырождается в Частотный (Монобитный) тест.

В нашем тесте значение длины подпоследовательности равно M = 10500.

4.3.3 Тест “дырок” (Runs).

Внимание этого теста сосредоточено на общем количестве отрезков в последовательности, где отрезок — непрерывная последовательность идентичных бит (0 или 1). Отрезок длины k состоит ровно из k идентичных бит и ограничен до и после противоположным битом. Цель теста состоит в том, чтобы определить, какое число отрезков из 0 или 1 различных длин ожидается для случайной последовательности. В частности этот тест определяет, является ли колебание между такими 0 или 1 слишком быстрым или медленным. “Дыркой” называется отрезок из 0.

4.3.4 Тест “блоков” в подпоследовательностях (Long-Run).

Внимание этого теста сосредоточено на самым длинном отрезке, состоящего из 1 (“блок”), в M -битной подпоследовательности. Цель этого теста состоит

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

вслучайной последовательности. Обратим внимание, что неравномерность в ожидаемой длине самого длинного “блока” подразумевает, что есть также неравномерность в ожидаемой длине самой длинной “дырке”. Поэтому, можно тестировать только “блоки”.

4.3.5 Проверка рангов матриц (Rank).

Внимание этого теста сосредоточено на появлении матриц различных рангов. Матрица интерпретируется как часть последовательности. Цель этого теста

27

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

4.3.6 Спектральный тест (FFT).

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

4.3.7Проверка непересекающихся шаблонов (Aperiodic-Template).

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

В нашем тесте значение длины шаблона равно m = 9.

4.3.8Проверка пересекающихся шаблонов (Periodic-Template).

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

В данном тесте значение длины шаблона так же равно m = 9.

4.3.9 Универсальный тест Маурера (Universal).

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

Тестируемая последовательность разбивается на два сегмента: инициализирующий и тестовый. Первый состоит из Q блоков по L бит каждый, второй из K = n/L − Q блоков по L бит.

В данном тесте значение параметров равны L = 7 и Q = 1280.

4.3.10Проверка сжатия при помощи алгоритма Лемпела-Зива (Lempel-Ziv).

Внимание этого теста сосредоточено на числе кумулятивно отличных образцов (слов) в последовательности. Цель теста состоит в том, чтобы опреде-

28

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

4.3.11 Проверка линейной сложности (Linear-Complexity).

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

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

В данном тесте значение параметра равно M = 500.

4.3.12 Проверка серий (Serial).

Внимание этого теста сосредоточено на частоте всех возможных пересекающихся m-битных образцов сквозь полную последовательность. Цель этого теста состоит в том, чтобы определить, является ли число возникновений 2m m-битных пересекающихся образцов приблизительно тем же самым, какое ожидается для случайной последовательности. Случайные последовательности имеют однородность; то есть каждый m-битный образец имеет ту же самую возможность появления как и любой другой. Обратим внимание, что для m = 1, этот тест эквивалентен Частотному (Монобитному) тесту.

В данном тесте значение параметра равно m = 5.

4.3.13 Проверка аппроксимированной энтропии (Apen).

Внимание этого теста сосредоточено на тех же объектах, что и в тесте Проверки серий. Цель теста состоит в том, чтобы сравнить частоту пересекающихся блоков двух смежных длин (m и m + 1) по отношению к ожидаемому результату для случайной последовательности.

В данном тесте значение параметра равно m = 5.

4.3.14 Проверка кумулятивных сумм (Cusum).

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

29