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

Математические основы криптологии и криптографические методы и средс

..pdf
Скачиваний:
48
Добавлен:
15.11.2022
Размер:
14.26 Mб
Скачать

Метод перемешивания. В методе перемешивания используют­ ся операции циклического сдвига содержимого ячейки влево и впра­ во. Идея метода состоит в следующем. Пусть в ячейке хранится на­ чальное число Ж). Циклически сдвигая содержимое ячейки влево на 1/4 длины ячейки, получаем новое число ЛО*. Точно так же, цикли­ чески сдвигая содержимое ячейки R0 вправо на 1/4 длины ячейки, получаем второе число Ж)**. Сумма чисел Ж)* и Ж)** дает новое случайное число Ж . Далее Ж заносится в Ж), и вся последователь­ ность операций повторяется (рис. 14).

 

 

 

 

R0 ! a ji b | с d е \, f

g || h !

 

 

 

 

 

 

\

 

 

 

 

 

 

Цчк.ни'^огнй г/V.мг влево

Цикли11-и:кип с

 

вправо

j

И a

J ,М

III: I

ЛИГ-:'

I 10

1 } Л ДНИ HI-.

.1:

;

RO*

d

е f

g

h |‘ a ! b

RO** f g

h ;j a !' b

id

е f

!

 

 

 

i

 

___

!

 

 

 

 

 

 

 

[RI=RO*+RO**

 

 

 

 

 

 

 

 

 

1 0.R1

 

 

 

 

 

 

 

 

 

 

D i у I Mi-*. HOf1!

М Н О Ю

 

 

 

Рис. 14. Схема метода перемешивания

 

 

Обратите внимание, что число, полученное в результате сумми­ рования R0* и R0**, может не уместиться полностью в ячейке R\. В этом случае от полученного числа должны быть отброшены лиш­ ние разряды. Поясним это для рис. 14, где все ячейки представлены

воемью двоичными разрядами.

Пусть R0* = 100100012

= 14510,

Л0**= 101000012= 16110, тогда

R0* + R0** = 1001100102

= 30610.

Как видим, число 306 занимает 9 разрядов (в двоичной системе счис­

ления), а ячейка R\

(как и R0) может вместить в себя максимум

8 разрядов. Поэтому

перед занесением значения в Л1 необходимо

убрать один «лишний», крайний левый бит из числа 306, в результате чего в /?1 пойдет уже не 306, а 001100102 = 5010. Также заметим, что в таких языках, как Паскаль, «урезание» лишних битов при перепол­ нении ячейки производится автоматически в соответствии с задан­ ным типом переменной.

Мультипликативный метод генерации псевдослучайных чи­ сел был предложен Д.Г. Лехмером (D.H. Lehmer) в 1949 году. В этом методе используется операция х (mod у), возвращающая остаток от деления первого аргумента на второй. В качестве текущего значения случайного числа выделяют остаток от деления произведения пре­ дыдущего случайного числа и постоянного множителя к на постоян­ ное число М:

г, = к Гм + 6(тосШ),

где к, М - постоянные числа; г,— случайное число.

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

г,- = к гм + 6(modA/),

где М - модуль (0 < М); к - множитель (0 < к <М);

b - приращение (0 < b <М);

г0- начальное значение (0 < r0 <М).

Последовательность случайных чисел, полученных с помощью данной формулы, называется линейной конгруэнтной последова­ тельностью. Многие авторы называют линейную конгруэнтную по­ следовательность при 6 = 0 мультипликативным конгруэнтным ме­ тодом, а при Ьф 0 - смешанным конгруэнтным методом.

Для качественного генератора требуется подобрать подходящие коэффициенты. Необходимо, чтобы число М было довольно боль­ шим, так как период не может иметь больше М элементов. С другой стороны, деление, использующееся в этом методе, является довольно медленной операцией, поэтому для двоичной вычислительной ма­ шины логичным будет выбор М= 2N, поскольку в этом случае нахо­ ждение остатка от деления сводится внутри ЭВМ к двоичной логиче­

ской операции «AND». Также широко распространен выбор наи­ большего простого числа М, меньшего, чем 2Ы: в специальной лите­ ратуре доказывается, что в этом случае младшие разряды получаемо­ го случайного числа г/ + 1 ведут себя так же случайно, как и старшие, что положительно сказывается на всей последовательности случай­ ных чисел в целом. В качестве примера можно пивести одно из чисел Мерсенна, равное 231 - 1, и таким образом, М = 231 - 1.

Одним из требований к линейным конгруэнтным последова­ тельностям является как можно большая длина периода. Длина пе­ риода зависит от значений М, к и Ъ. Теорема, которую мы приведем ниже, позволяет определить, возможно ли достижение периода мак­ симальной длины для конкретных значений М, к и Ь.

Теорема 15. Линейная конгруэнтная последовательность, опре­ деленная числами М9к, b и г0, имеет период длиной М тогда и только тогда, когда

числа Ь и М взаимно простые;

к- 1 кратнор для каждого простогор, являющегося делителем М\

к- 1 кратно 4, если М кратно 4.

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

Пример 48.

M =2N

к - 3 + 8 • q (или к = 5 + 8 q) Ь^О г0- нечетно.

Было установлено, что ряд псевдослучайных чисел, генерируе­ мых на основе данных из примера 1, будет повторяться через каждые М/4 чисел. Число q задается произвольно перед началом вычислений, однако при этом следует иметь в виду, что ряд производит впечатле­ ние случайного при больших к (а значит, и q). Результат можно не­ сколько улучшить, если b нечетно и £ = 1 + 4 q ~ в этом случае ряд будет повторяться через каждые М чисел. После долгих поисков к исследователи остановились на значениях 69069 и 71365.

Пример 49

А/ = 231 - 1 к = 1 220 703 125 6 = 7

го = 7 Генератор случайных чисел, использующий данные из примера

2, будет выдавать случайные неповторяющиеся числа с периодом, равным 7 миллионам.

1.3.4. Проверка качества работы ГСЧ

От качества работы ГСЧ зависит качество работы всей системы и точность результатов. Поэтому случайная последовательность, по­ рождаемая ГСЧ, должна удовлетворять целому ряду критериев.

Осуществляемые проверки бывают двух типов:

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

проверки на статистическую независимость.

Методы проверки равномерности распределения

1. ГСЧ должен выдавать близкие к следующим значения стати­

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

 

 

П

 

математическое ожидание: mr =

Sr,

~ 0,5;

 

 

п

дисперсия: Dr = —------------и 0,0833 ;

 

п

 

среднеквадратичное отклонение: ст,. = ^D r « 0,2887

2. Частотный тест Частотный тест позволяет выяснить, сколько чисел попало в ин­

тервал {тг~ а,; т,- + оЛ), т.е. (0,5 - 0,2887; 0,5 + 0,2887), или в конеч­ ном итоге (0,2113; 0,7887). Поскольку 0,7887-0,2113 = 0,5774, за­ ключаем, что в хорошем ГСЧ в этот интервал должно попадать около 57,7 % из всех выпавших случайных чисел (рис. 15).

Рис. 15. Частотная диаграмма идеального ГСЧ в случае проверки его на частотный тест

Таюке необходимо учитывать, что количество чисел, попавших в интервал (0; 0,5), должно быть примерно равно количеству чисел,

попавших в интервал (0,5; 1).

 

Проверка по критерию

- это один из самых из­

вестных статистических критериев; он является основным методом, ис­ пользуемым в сочетании с другими критериями. Критерий х2 был пред­ ложен в 1900 году Карлом Пирсоном. Его замечательная работа рас­ сматривается как фундамент современной математической статистики.

Для нашего случая проверка по критерию «хи-квадрат» позво­ лит узнать, насколько созданный нами реальный ГСЧ близок к эта­ лону ГСЧ, т.е. удовлетворяет ли он требованию равномерного рас­ пределения или нет.

Частотная диаграмма эталонного ГСЧ представлена на рис. 16. Поскольку закон распределения эталонного ГСЧ равномерный, то (теоретическая) вероятность /?, попадания чисел в /-й интервал (всего этих интервалов к) равна /?, = 1/к. И, таким образом, в каждый из к интервалов попадет ровно по pi N чисел (N - общее количество сге-

Реальный ГСЧ будет выдавать числа, распределенные (причем не обязательно равномерно) по к интервалам, и в каждый интервал попадет по щ чисел (в сумме щ + п2+ + л* = N). Как же нам опре­ делить, насколько испытываемый ГСЧ хорош и близок к эталонному? Вполне логично рассмотреть квадраты разностей между полученным количеством чисел и, и «эталонным» pt N. Сложим их и в результате получим

Х2эксп~ (п\ ~ Р \ N )z + (n2 - p 2 N)2 + + (nk- p k N)2.

Из этой формулы следует, что чем меньше разность в каждом из слагаемых (а значит, и чем меньше значение х2эксп), тем сильнее закон распределения случайных чисел, генерируемых реальным ГСЧ, тяго­ теет к равномерному.

В предыдущем выражении каждому из слагаемых приписывает­ ся одинаковый вес (равный 1), что на самом деле может не соответ­ ствовать действительности; поэтому для статистики «хи-квадрат» необходимо провести нормировку каждого /-го слагаемого, поделив

его на pi • N.

 

 

 

2

( я ,- /у А 0 2 (п2- р 2 Ю 2

0nk - Pk- N f

 

Р\ *N

р г -N

Pk N

Наконец,

запишем

полученное выражение более компактно

и упростим его:

 

 

 

Х’эксп ■ z

( n , - p r N)’

- N .

 

Pi'N

 

«

 

Мы получили значение критерия «хи-квадрат» для эксперимен­ тальных данных.

В табл. 5 приведены теоретические значения «хи-квадрат» (Х2теоР). где v =N - 1 - это число степеней свободы, ^ - э т о довери­ тельная вероятность, задаваемая пользователем, который указывает, насколько ГСЧ должен удовлетворять требованиям равномерного распределения, или р - это вероятность того, что экспериментальное значение х^ксп будет меньше табулированного (теоретического) х^ор или равно ему.

 

 

 

 

 

 

 

 

Таблица 5

 

 

Некоторые процентные точки ^-распределения

 

 

 

P = i % p = 5 % p = 2 5 % p = 50 % p = 75 % p■= 95 % p = 99 %

v=

1

0,00016

0,0039

0,1015

0,4549

1,323

3,841

6,635

v = 2

0,02010

0,1026

0,5754

1,386

2,773

5,991

9,210

v = 3

0,1148

0,3518

1,213

2,366

4,108

7,815

11,34

v = 4

0,2971

0,7107

1,923

3,357

5,385

9,488

13,28

v = 5

0,5543

1,1455

2,675

4,351

6,626

11,.07

15,09

V = 6

0,8721

1,635

3,455

5,348

7,841

12,59

16,81

v = 7

1,239

2,167

4,255

6,346

9,037

14,07

18,48

v = 8

1,646

2,733

5,071

7,344

10,22

15,51

20,09

v = 9

2,088

3,325

5,899

8,343

11,39

16,92

21,67

v=

10

2,558

3,940

6,737

9,342

12,55

18,31

23,21

v=

11

3,053

4,575

7,584

10,34

13,70

19,68

24,72

v=

12

3,571

5,226

8,438

11,34

14,85

21,03

26,22

v=

15

5,229

7,261

11,04

14,34

18,25

25,00

30,58

v = 20

8,260

10,85

15,45

19,34

23,83

31,41

37,57

v = 30

14,95

18,49

24,48

29,34

34,80

43,77

50,89

v = 50

29,71

34,76

42,94

49,33

56,33

67,50

76,15

v > 50

 

v + sqrt(2v) • xp + 2/3 • x2p -

2/3 + 0(l/sqrt(v))

 

 

 

-2,33

-1,64

-0,674

0,00

0,674

1,64

2,33

Приемлемым считают р от 10 % до 90 %.

Если Х2эксп много больше х^еор (т.е. р - велико), то генератор не удовлетворяет требованию равномерного распределения, так как на­ блюдаемые значения л, слишком далеко уходят от теоретических р( N и не могут рассматриваться как случайные. Другими словами, устанавливается такой большой доверительный интервал, что огра­ ничения на числа становятся очень нежесткими, требования к чис­ лам-слабыми. При этом будет наблюдаться очень большая абсо­ лютная погрешность.

Еще Д. Кнут в своей книге «Искусство программирования» за­ метил, что иметь х2эксп маленьким тоже, в общем-то, нехорошо, хотя это и кажется, на первый взгляд, замечательно с точки зрения равно­ мерности. Действительно, возьмите ряд чисел 0,1; 0,2; 0,3; 0,4; 0,5; 0,6; 0,7; 0,8; 0,9; 0,1; 0,2; 0,3; 0,4; 0,5; 0,6, - они идеальны с точки зрения равномерности, и х2эксПбудет практически нулевым, но вряд ли вы их признаете случайными.

Если х2эксп много меньше х2теоР (т.е. р - мало), то генератор не удовлетворяет требованию случайного равномерного распределения, так как наблюдаемые значения л, слишком близки к теоретическим Pi N и не могут рассматриваться как случайные.

А вот если х2эксп лежит в некотором диапазоне, между двумя значениями х2теоР> которые соответствуют, например, р - 25 % и р = 50 %, то можно считать, что значения случайных чисел, порож­ даемые датчиком, вполне являются случайными.

При этом дополнительно надо иметь в виду, что все значения Pi N должны быть достаточно большими, например больше 5 (выяс­ нено эмпирическим путем). Только тогда (при достаточно большой статистической выборке) условия проведения эксперимента можно считать удовлетворительными.

Итак, процедура проверки имеет следующий вид:

1.Диапазон от 0 до 1 разбивается на к равных интервалов.

2.Запускается ГСЧ N раз (N должно быть велико, например Nik > 5).

3.Определяется количество случайных чисел, попавших в каж­ дый интервал: nh i = 1, ..., к.

4.Вычисляется экспериментальное значение х^эксп по следую-

щей формуле: xLn = X

(ni - p r N)2 _ 1

п,г\

■N, где р, = \/к —

= - У

/=1

p r N

/=1 \ Р и

 

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

Путем сравнения экспериментально полученного значения х2эксп с теоретическим х2теор (см. табл. 5) делается вывод о пригодности ге­ нератора для использования. Для этого:

1. Входим в табл. 4 ( v = количество экспериментов - 1).

♦ Сравниваем вычисленное х2,ксп с х^ор, встречающимися в строке.

При этом возможно три случая.

Первый случай: х2эксп много больше любого х2теоР в строке - гипотеза о случайности равномерного генератора не выпол­ няется (разброс чисел слишком велик, чтобы быть случай­ ным).

Второй случай: %2ЭКСПмного меньше любого %2теоР в строке — гипотеза о случайности равномерного генератора не выпол­ няется (разброс чисел слишком мал, чтобы быть случайным).

Третий случай: х2эксп лежит между значениями х2теор двух ря­ дом стоящих столбцов — гипотеза о случайности равномер­ ного генератора выполняется с вероятностью р (т.е. в р слу­

чаях из 1 0 0 ).

Заметим, что чем ближе получается р к значению 50 %, тем луч­

ше.

Проверка ГСЧ на статистическую независимость. Проверка на частоту появления цифры в последовательности. Рассмотрим пример. Случайное число 0,2463389991 состоит из цифр 2463389991, а число 0,5467766618 состоит из цифр 5467766618. Соединяя после­ довательности цифр, имеем 24633899915467766618.

Понятно, что теоретическая вероятность у>, выпадения г'-й цифры

(от 0 до 9) равна 0,1.

Далее

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

в выпавшей

экспериментальной последовательности. Например,

цифра 1 выпала 2 раза из 20, а цифра 6 выпала 5 раз из 20.

Далее считают оценку и принимают решение по критерию «хиквадрат».

Проверка появления серий из одинаковых цифр. Обозначим через nL число серий одинаковых подряд цифр длины L. Проверять надо все L от 1 до т, где т - это заданное пользователем число: мак­ симально встречающееся число одинаковых цифр в серии.

В примере «24633899915467766618» обнаружены 2 серии дли­ ной в 2 (33 и 77), т.е. п2 = 2 и 2 серии длиной в 3 (999 и 6 6 6 ), т.е.

п 2 = 2.

Вероятность появления серии длиной в L: рь = 9 КГ2, (теорети­ ческая), т.е. вероятность появления серии длиной в один символ рав­ на: р/ = 0,9 (теоретическая). Вероятность появления серии длиной в два символа: р2 = 0,09 (теоретическая). Вероятность появления се­ рии длиной в три символа: р2 = 0,009 (теоретическая).

Например, вероятность появления серии длиной в один символ p i = 0,9, так как всего может встретиться один символ из 1 0 , а всего символов 9 (ноль не считается). А вероятность того, что подряд встретится два одинаковых символа «XX» равна 0,1 *0,1 -9, т.е. веро­ ятность 0,1 того, что в первой позиции появится символ «А”», умножает­ ся на вероятность 0,1 того, что во второй позиции появится такой же символ «А"» и умножается на количество таких комбинаций 9.

Частота появления серий подсчитывается по ранее разобранной нами формуле «хи-квадрат» с использованием значений pi-

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

Аппаратные ГСП. Самая большая проблема всех методов ран­ домизации-это порождение действительно случайной последова­ тельности. Дело в том, что генераторы случайных последовательно­ стей, используемые для общих целей, например, в языках програм­ мирования, являются на самом деле псевдослучайными генератора­ ми. В принципе, существует конечное, а не бесконечное множество состояний ЭВМ, и, как бы сложно не формировалось в алгоритме число, оно все равно имеет относительно немного бит информацион­ ной насыщенности. Источниками по-настоящему случайных величин могут быть только внешние объекты, например человек.

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

По первому методу над самими введенными значениями произ­ водятся действия, повышающие случайность выходного потока. Так, например, обязательно удаляются верхние 3 бита введенного ASCII символа, часто удаляются еще один верхний и еще один нижний би­ ты. Затем объем полученной последовательности уменьшается еще в три раза наложением первого и второго бита на третий операцией