Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Кодирование и шифрование информации в системах связи. Часть 2. Шифрование

.pdf
Скачиваний:
36
Добавлен:
05.02.2023
Размер:
10.59 Mб
Скачать

231

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

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

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

Если предположение о случайности для тестируемых данных истинно, то в результате вычисленное тестовое значение статистики для этих данных будет иметь очень низкую вероятность (около 0,01%) превышения критического значения.

Возможно несколько исходов статистического тестирования. Безошибочным исходом является принятие решения о верности нулевой H0 или альтернативной Ha гипотезы при случайности или неслучайности тестируемых данных соответственно. А также возможны ошибки первого и второго рода. Ошибка 1-го рода возникает в том случае, если тестируемые данные являются случайными, но принимается решение об отклонении нулевой H0 гипотезы.

Ошибка 2-го рода возникает в том случае, если тестируемые данные случайными не являются, но при этом принимается решение о принятии нулевой H0 гипотезы.

Ошибка 1-го рода часто называется уровнем значимости теста. Уровень значимости обозначается и может быть установлена до теста. Таким образом – это вероятность того,

что тест покажет, что последовательность неслучайна, при том, что она в действительности случайна. Обычно принимают равным 0,01.

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

P(S>t, H0 истинно) = P(H0 отклоняется/H0 истинно) – вероятность ошибки 1-го рода,

P(S t, H0 ложно) = P(H0 принимается/H0 ложно) – вероятность ошибки 2-го рода,

где S – значение тестовой статистики, t – критическое значение.

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

232

Для теста выбирается уровень значимости . Если P-value , то нулевая гипотеза H0

принимается, т.е. последовательность считается случайной. Если P-value < , то нулевая гипотеза H0 отвергается, т.е. последовательность считается неслучайной. Обычно выбирается из диапазона [0,001;0,01]. Значение = 0,01 означает, что одна последовательность из 100 будет отвергнута тестом, при том, что эта последовательность действительно случайна. P-value 0,01 означает, что последовательность будет считаться случайной с уверенностью 99%. P-value < 0,01 означает, что последовательность будет считаться неслучайной с уверенностью 99%.

Набор статистических тестов НИСТ

Как уже отмечалось выше, набор статистических тестов НИСТ содержит 16 тестов.

Рассмотрим каждый из них подробнее.

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

Цель частотного (монобитного) теста (frequency test) – определить является ли число единиц и нулей в последовательности приблизительно таким же, как и в случайной последовательности. Другими словами этот тест оценивает близость доли единиц к 1/2, т.е.

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

Для тестируемой двоичной последовательности длиной n бит вычисляется тестовая статистика sobs

s

obs

 

 

 

Sn

 

 

,

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где Sn – разница между числом появления единиц и нулей в тестируемой двоичной последовательности.

Затем вычисляется значение P-value

 

s

 

 

 

 

 

P-value = erfc

 

obs

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

2

где erfc x

2

 

 

 

 

 

e x 2 dx – дополнительный интеграл вероятностей [53_Корн].

 

 

 

 

 

 

 

 

 

 

 

 

 

x

Малое значение P-value (< 0,01) указывает на то, что в тестируемой последовательности либо слишком много единиц, либо наоборот – слишком много нулей.

233

Частотный тест внутри блока

Цель частотного теста внутри блока (frequency test within a block) – определить, равно ли число единиц в M-битовом блоке примерно M/2, как в случайной последовательности. При M

= 1 этот тест вырождается в частотный тест.

n

Тестируемая двоичная последовательность длиной n бит разбивается на N M

непересекающихся блоков длиной M бит каждый. Оставшиеся биты отбрасываются.

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

 

2

N

 

 

1

2

 

 

obs 4M i

 

 

 

,

 

 

 

 

i 1

 

 

2

 

где i – доля единиц в каждом M-битовом блоке.

Затем вычисляется значение P-value

 

N

 

 

2 obs

 

P-value = igamc

 

 

 

,

 

 

 

,

 

 

 

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

где igamc(a, x) =

 

 

 

e t t a 1dt – неполная гамма-функция,

 

 

 

a

 

 

 

 

 

 

x

 

 

a e t t a 1dt – гамма-функция.

0

Малое значение P-value (< 0,01) указывает на большое отклонение от равной порции единиц и нулей по крайней мере в одном из блоков.

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

Цель теста последовательностей (the runs test) – определить равно ли количество серий единиц и нулей различной длины количеству аналогичных серий в случайной последовательности.

Для тестируемой двоичной последовательности длиной n бит сначала вычисляется доля

единиц. Если

 

1

 

2

 

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

2

 

 

 

 

 

 

 

 

 

 

n

провалила тест последовательностей.

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

n 1

 

 

 

 

Vn obs r k 1,

 

k 1

 

 

 

 

0, ïðè

 

 

 

k 1 , k k-ый элемент тестируемой последовательности.

где r k

 

k

 

1, ïðè

k

k 1

Затем вычисляется значение P-value

234

 

 

Vn

obs 2n 1

 

 

 

 

 

P-value = erfc

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

2 2n 1

 

 

 

 

 

 

 

Большое значение тестовой статистики Vn(obs) означает, что колебания (изменения единицы на ноль и наоборот) в последовательности слишком быстрые, маленькое значение тестовой статистики Vn(obs) наоборот означает, что колебания слишком медленные.

Тест наибольших последовательностей единиц в блоке

Цель теста наибольших последовательностей единиц в блоке (test for the longest-run-of- ones in a block) – определить совпадает ли длина самой длинной серии единиц в тестируемой последовательности с аналогичной длиной в случайной последовательности. Отклонение от нормы в ожидаемом размере самой длинной серии единиц означает, что такое же отклонение есть в ожидаемом размере самой длинной серии нулей. Поэтому можно ограничиться только тестом для единиц.

 

 

 

 

 

 

 

 

 

n

Тестируемая

двоичная

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

длиной

n бит разбивается

на

N

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

M

непересекающихся блоков длиной M бит каждый.

 

 

 

 

 

 

Составляется таблица (таблица 2.15), содержащая частоты появления vj

серий единиц

длиной l.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 2.15

 

 

 

 

 

 

 

 

 

 

 

 

 

vi

 

M = 8

 

M = 128

M = 104

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v0

 

l 1

 

l 4

l 10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v1

 

l = 2

 

l = 5

l = 11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v2

 

l = 3

 

l = 6

l = 12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v3

 

l 4

 

l = 7

l = 13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v4

 

 

 

l = 8

l = 14

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v5

 

 

 

l 9

l = 15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

v6

 

 

 

 

l 16

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

2 obs vi N i .

 

 

 

 

 

 

 

K

 

 

 

 

 

 

 

 

 

 

 

i 0

N i

 

 

 

 

 

 

 

 

 

 

Значения для i можно найти в [6].

Значения величин Kи N определяются значением M в соответствии с таблицей 2.16.

235

Таблица 2.17

M

 

N

 

 

 

8

 

16

 

 

 

128

 

49

 

 

 

104

 

75

 

 

 

Затем вычисляется значение P-value

K

 

2 obs

 

P-value = igamc

 

,

 

 

,

 

 

 

2

 

2

 

 

 

 

 

 

Большие значения χ2 указывают на то, что в тестируемой последовательности есть скопления единиц.

Тест рангов двоичных матриц

Цель теста рангов двоичных матриц (the binary matrix rank test) – исследовать линейную зависимость между подстроками (фиксированной длины) тестируемой последовательности.

n

Тестируемая двоичная последовательность длиной n бит разбивается на N MQ

непересекающихся блоков длиной M Q бит каждый. Каждый M Q-бит блок представляется в виде матрицы размером M Q. Каждая строка матрицы последовательно заполняется Q-

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

Для каждой матрицы вычисляется ранг Rl, l = 1, …, N.

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

 

2

obs

FM

0,2888N 2

FM 1

0,5776N 2

N FM

FM 1

0,1336N 2

 

 

 

 

 

 

 

,

 

 

 

 

0,2888N

0,5776N

 

0,1336N

где FM равно количеству матриц с рангом Rl = M (полный ранг), FM–1 равно количеству матриц с рангом Rl = M–1, (N FM FM–1) – количество остальных матриц.

Затем вычисляется значение P-value

 

2 obs

P-value = igamc 1,

 

.

 

 

2

 

 

 

Большие значения χ2(obs) (и, следовательно, маленькие P-value) будут указывать на отклонение распределения рангов от соответствующего случайной последовательности.

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

Цель спектрального теста или теста дискретного преобразования Фурье (the discrete Fourier transform (DFT) (spectral) test) – определить в тестируемой последовательности периодические элементы (т.е. повторяющиеся образцы, идущие друг за другом), которые указывали бы на отклонение от случайности.

236
бит формируется элемент исходной

Из тестируемой двоичной последовательности длиной n

последовательность X = x1, x2, …, xn, где xi = +1, если i

последовательности равен 1 и xi = –1, если i-й элемент равен 0.

К полученной последовательности X применяется дискретное преобразование Фурье S =

DFT(X). В результате будет получена последовательность комплексных переменных – гармоники. Затем вычисляется значение M = modulus (S’) S’, где S’

подпоследовательность, состоящая из первых n/2 элементов в S, а функция modulus

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

Вычисляются значения T 3n , соответствующее 95% пороговому уровню высот выбросов, и N0 = 0,95n/2 – ожидаемое количество высот выбросов меньших, чем T.

Вычисляется N1 – фактически наблюдаемое число высот выбросов в M меньших, чем T.

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

d

 

N1

N0

 

.

 

 

 

 

n 0,95 0,05 2

 

 

 

 

Затем вычисляется значение P-value

 

 

 

d

 

 

 

 

 

 

P-value =

erfc

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

Слишком маленькое значение d будет указывать на то, что слишком мало высот (< 95%)

меньше, чем T, и слишком много высот (> 5%) больше, чем T.

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

Цель теста сравнения непересекающихся шаблонов (the non-overlapping template matching test) – выявить последовательности, в которых слишком часто встречается заданный непериодический образец (шаблон).

 

n

Тестируемая двоичная последовательность длиной n бит разбивается на

N

 

 

 

 

 

 

 

M

непересекающихся блоков длиной M бит каждый.

Поиск шаблонов производится следующим образом: каждый M-битовый блок просматривается при помощи m-битового окна. Биты в этом окне сравниваются с шаблоном.

Если совпадения нет, то окно сдвигается на 1 бит дальше по последовательности, а если совпадение есть, то окно сдвигается на m бит. Затем поиск возобновляется. Число появлений шаблона в j-м блоке, j = 1, …, N, подсчитывается и записывается в Wj.

При предположении о случайности вычисляются теоретические значения

 

M m 1

 

2

 

1

 

2m 1

 

 

и

 

M

 

 

 

.

2m

 

2m

2m

 

 

 

 

 

 

237

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

N W

j

2

2 obs

 

 

 

.

 

 

 

 

 

 

2

j 1

 

 

Затем вычисляется значение P-value

 

N

 

2 obs

P-value = igamc

 

,

 

.

 

 

 

2

 

2

 

 

 

 

В данном тесте вычисляется множество значений P-value, т.к. для каждого из шаблонов вычисляется одно значений P-value. Для m = 10 может быть вычислено до 284 значений P- value.

Малое значение P-value (< 0,01) означает, что возможные шаблонны встречаются в последовательности неравномерно.

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

Цель теста сравнения пересекающихся шаблонов (the overlapping template matching test) –

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

 

n

Тестируемая двоичная последовательность длиной n бит разбивается на

N

 

 

 

 

 

 

 

M

непересекающихся блоков длиной M бит каждый.

В данном тесте, как и в предыдущем, при поиске шаблонов каждый M-битовый блок просматривается при помощи m-битового окна. Биты в этом окне сравниваются с шаблоном.

Если совпадения нет, то окно сдвигается на 1 бит дальше по последовательности. Отличие от предыдущего теста заключается в том, что если совпадение есть, то окно сдвигается не на m

бит, а только на 1 бит. Затем поиск возобновляется.

В процессе просмотра m-битовых окон для каждого M-битового блока производится изменение счетчиков vi, i = 1, …, 5, следующим образом: v0 увеличивается, если шаблон в M-

битовом блоке не встречается, v1 увеличивается, если шаблон в M-битовом блоке встречается один раз, v2 увеличивается, если шаблон в M-битовом блоке встречается два раза и т.д.

Вычисляются значения и , которые используются для вычисления теоретических вероятностей i

 

M m 1

и

.

2m

 

 

 

2

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

2 obs vi

2

N i .

5

 

i 0

N i

238

Затем вычисляется значение P-value

 

N

 

2 obs

P-value = igamc

 

,

 

.

 

 

 

2

 

2

 

 

 

 

Универсальный статистический тест Маурера

Цель универсального статистического теста Маурера (Maurer’s ―universal statistical‖ test)

– определить может ли последовательность быть значительно сжата без потери информации Тестируемая двоичная последовательность длиной n бит разбивается на две части:

первая часть (инициализирующая) состоит из Q L-битовых непересекающихся блоков, а

вторая часть (тестовая) состоит из K L-битовых непересекающихся блоков, K

n

Q .

 

 

 

 

 

 

 

L

 

Биты, остающиеся в конце последовательности и не формирующие полный L-битовый блок,

отбрасываются.

Инициализирующая часть используется для формирования таблицы, где каждому возможному L-битовому значению соответствует отдельный столбец. В первой строке таблицы отмечается номер i (i = 1, …, Q) последнего блока, в котором появилось соответствующее L-битовое значение. То есть Tj = i – содержимое j-ой ячейки таблицы, где j

– десятичное представление i-го L-битового блока.

Затем исследуется каждый блок тестовой части. Определяется количество блоков между текущим блоком и последним его появлением, т.е. (i Tj), и производится обновление таблицы: Tj = i.

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

 

1

Q K

 

i Tj .

 

 

 

 

fn

log 2

 

 

 

 

 

 

 

 

 

 

 

K i Q 1

 

 

 

 

 

 

 

 

Затем вычисляется значение P-value

 

 

 

 

 

 

 

 

fn exðectedVa lue L

 

 

 

 

 

 

 

 

 

P-value = erfc

 

 

 

 

 

 

 

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

где expectedValue(L) и – значения, взятые из таблиц предвычисленных значений.

Тест сжатия алгоритмом Зива-Лемпела

Цель теста сжатия алгоритмом Зива-Лемпела (the Lempel-Ziv compression test) –

определить как сильно тестируемая последовательность может быть сжата.

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

число слов в словаре.

Затем вычисляется значение P-value

239

 

1

 

W

 

P-value =

 

erfc

 

 

obs

.

 

 

 

 

2

 

2

 

 

 

 

Значения для и можно найти в [47_NIST_STS].

Тест линейной сложности

Цель теста линейной сложности (the linear complexity test) – определить достаточно ли сложна последовательность, чтобы считаться случайной.

n

Тестируемая двоичная последовательность длиной n бит разбивается на N

 

 

M

непересекающихся блоков длиной M бит каждый.

С помощью алгоритма Берлекампа-Месси определяется линейная сложность Li каждого из N блоков, i = 1, …, N. Li – это длина самого короткого LFSR, который способен сгенерировать последовательность бит i-го блока.

При предположении о случайности вычисляется теоретическое значение

 

 

 

9 1 M 1

 

 

M

 

2

 

 

 

M

 

 

 

3

9

.

2

36

 

2M

 

 

 

 

 

 

 

 

Для каждого блока вычисляется значение Ti

Ti = (–1)M (Li – ) + 2/9.

Используя вычисленные значения Ti, определяются значения v0, …, v6 следующим

образом

 

 

 

 

 

 

 

 

Если

 

 

 

Ti – 2,5,

то

v0

увеличивается на 1

 

 

 

 

– 2,5 < Ti – 1,5,

 

v1

увеличивается на 1

 

 

 

 

– 1,5 < Ti – 0,5,

 

v2

увеличивается на 1

 

 

 

 

– 0,5 < Ti 0,5,

 

v3

увеличивается на 1

 

 

 

 

0,5 < Ti 1,5,

 

v4

увеличивается на 1

 

 

 

 

1,5 < Ti 2,5,

 

v5

увеличивается на 1

 

 

 

 

2,5 < Ti,

 

v6

увеличивается на 1

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

 

 

 

 

 

 

 

2

 

 

 

 

2 obs vi N i .

 

 

 

 

K

 

 

 

 

 

 

 

 

i 0

N i

 

 

 

 

 

Значения для i можно найти в [47_NIST_STS].

 

 

Затем вычисляется значение P-value

 

 

 

K

 

2 obs

 

 

 

P-value = igamc

 

 

,

 

.

 

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

 

 

vi1 im vi1 im 1 vi1 im 2

240

Тест серий

Цель теста серий (the serial test) – определить является ли число появлений 2m m-битовых пересекающихся образцов приблизительно таким же, как в случайной последовательности.

Случайные последовательности однородны, т.е. каждый m-битовый образец имеет такой же шанс появления, как и любой другой m-битовый образец. Для случая m = 1 тест серий равносилен частотному тесту из п.????.

Тестируемая двоичная последовательность длиной n бит расширяется путем добавления к ней в конце (m–1) первых бит этой же последовательности.

Определяется частота появления всех возможных пересекающихся m-битовых блоков

(серий), всех возможных пересекающихся (m–1)-битовых блоков и всех возможных пересекающихся (m–2)-битовых блоков:

– частота появления m-битового блока i1im,

– частота появления m-битового блока i1im–1,

– частота появления m-битового блока i1im–2.

Вычисляются следующие значения

2

 

2m

 

 

 

 

 

 

 

 

n

 

 

2m

 

 

 

 

2

 

 

 

 

 

 

 

m

 

 

 

 

 

vi1 im

 

 

 

 

 

 

 

vi1 im

 

n ,

 

 

 

 

n

2

m

 

n

 

 

 

 

 

 

i1 im

 

 

 

 

 

 

 

i1 im

 

 

 

 

 

 

 

 

 

2

 

 

 

2m 1

 

 

 

 

 

 

 

 

 

 

n

 

2m 1

 

 

 

2

 

 

m 1

 

 

 

 

 

 

 

vi i

 

 

 

 

 

 

 

 

 

 

vi i

n ,

 

 

 

n

 

2m 1

 

n

 

 

 

 

 

 

 

i i

m 1

 

1

 

m 1

 

 

 

 

i i

1

m 1

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

m 1

 

 

2

 

 

 

 

2m 2

 

 

 

 

 

 

 

 

 

 

 

n

 

 

2m 2

 

 

 

2

 

m 2

 

 

 

 

 

 

 

vi i

 

 

 

 

 

 

 

 

 

 

 

vi i

n .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

i1 im 2

1 m 2

2m 2

 

 

n

 

 

i1 im 2

1

m 2

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

 

 

 

 

 

 

 

 

 

2

2 2

 

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

m

 

m 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2 2

 

2

2

2

 

2

.

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

m

 

 

m 1

 

 

 

m 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Затем вычисляются значения P-value1

и P-value2

P-value1 = igamc 2m 2 , 2

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P-value2 = igamc 2m 3 , 2 m2 .

Энтропийный тест

Цель энтропийного теста (the approximate entropy test) – сравнить частоты пересекающихся блоков двух смежных длин (m и m+1) с аналогичными результатами для случайной последовательности.

Тестируемая двоичная последовательность длиной n бит расширяется путем добавления к ней в конце (m–1) первых бит этой же последовательности.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]