19
Здесь уделяется внимание получению из ключа программно длинных
случайных или псевдослучайных рядов чисел, называемых на жаргоне отечест-
венных криптографов гаммой, по названию
- буквы греческого алфавита,
которой в математических записях обозначаются случайные величины.
Эти программы, хотя они и называются генераторами случайных чисел,
на самом деле выдают детерминированные числовые ряды, которые только ка-
жутся случайными по своим свойствам. От них требуется, чтобы, даже зная
закон формирования, но не зная ключа в виде начальных условий,
никто не
смог бы отличить числовой ряд от случайного.
Можно сформулировать 3 основных требования к криптографически
стойкому генератору псевдослучайной последовательности или гаммы:
1. Период гаммы должен быть достаточно большим для шифрования
сообщений различной длины.
2. Гамма должна быть труднопредсказуемой. Это значит, что если из-
вестны тип генератора и кусок гаммы, то невозможно предсказать
следующий
за этим куском бит гаммы с вероятностью выше заданной.
3. Генерирование гаммы не должно быть связано с большими техниче-
скими и организационными трудностями.
Режим гаммирования ГОСТ 28147-89
Схема реализации режима гаммирования приведена на рисунке 1.9.
Открытые данные, разбитые на 64-разрядные блоки T
0
(i)
зашифровыва-
ются в режиме гаммирования путем поразрядного суммирования по модулю 2 в
сумматоре СМ
5
с гаммой шифра Г
ш
(i)
, которая вырабатывается блоками по 64
бита. Число двоичных разрядов в блоке Т
0
(M)
, где М определяется объемом
шифруемых данных может быть меньше 64, при этом неиспользованная для
зашифрования часть гаммы шифра из блока Г
ш
(M)
отбрасывается.
В КЗУ вводятся 256 бит ключа. В накопители N
1
, N
2
вводится 64-
разрядная двоичная последовательность (синхропосылка) S=(S
1
,S
2
,...,S
64
), яв-
ляющаяся исходным заполнением этих накопителей для последующей выра-
ботки М блоков гаммы шифра. Синхропосылка вводится в N
1
и N
2
так, что
значение S
1
вводится в 1-ый разряд N
1
, значение S
33
- в 1-ый разряд N
2
, S
64
- в
32-й разряд N
2
.
Исходное заполнение накопителей N
1
и N
2
(синхропосылка S) зашифро-
вывается в режиме простой замены (нижняя часть рисунка). Результат зашиф-
рования A(S)=(Y
0
,Z
0
) переписывается в 32-разрядные накопители N
3
и N
4
так,
что заполнение N
1
переписывается в N
3
, а N
2
- в N
4
.
Заполнение накопителя N
4
суммируется по модулю (2
32
-1) в сумматоре
СМ
4
с 32-разрядной константой С
1
из накопителя N
6
, результат записывается в
N
4
.