Зашифровывание открытых данных в режиме гаммирования
Криптосхема, реализующая алгоритм шифрования в режиме гаммирования, показана на рис. 4.2. Открытые данные разбивают на 64-разрядные блоки
,
где
-
-й 64-разрядный блок открытых данных,
,
определяется объемом шифруемых данных.
Эти блоки поочередно зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 в сумматоре
с гаммой шифра
, которая вырабатывается блоками по 64 бита, т.е.
,
где
‑
-й 64-разрядный блок,
.
Число двоичных разрядов в блоке
может быть меньше 64, при этом не использованная для зашифрования часть гаммы шифра из блока
отбрасывается.
Уравнение шифрования данных в режиме гаммирования имеет вид
,
где
,
;
‑
-й блок 64-разрядного блока зашифрованного текста;
‑ функция шифрования в режиме простой замены;
‑ 32-разрядные двоичные константы;
‑ 32-разрядные двоичные последовательности.
Величины
определяются итерационно по мере формирования гаммы
следующим образом:
,
где
‑ синхропосылка (64-разрядная двоичная последовательность),

Рассмотрим реализацию процедуры шифрования в режиме гаммирования. В накопители
и
заранее записаны 32-разрядные двоичные константы
и
, имеющие следующие значения (в шестнадцатеричной форме):

![]() |
В КЗУ вводится 256 бит ключа; в накопители
и
‑ 64-разрядная двоичная последовательность (синхропосылка)
.
Синхропосылка
является исходным заполнением накопителей
и
для последовательной выработки
блоков гаммы шифра.
Исходное заполнение накопителя
:

состояние накопителя
:

Исходное заполнение
и
(синхропосылка
шифруется в режиме простой замены. Результат шифрования

переписывается в 32-разрядные накопители
и
так, что заполнение
переписывается в
, а заполнение
‑ в
.
Заполнение накопителя
суммируют по модулю
в сумматоре
с 32-разрядной константой
из накопителя
. Результат записывается в
. Заполнение накопителя
суммируется по модулю
в сумматоре
с 32-разрядной константой
из накопителя
. Результат записывается в
. Заполнение
переписывают в
, а заполнение
‑ в
, при этом заполнения
,
сохраняются. Заполнение накопителей шифруется в режиме простой замены.
Полученное в результате шифрования заполнение накопителей
и
образует первый 64-разрядный блок гаммы шифра:
,
который суммируют поразрядно по модулю 2 в сумматоре
с первым 64-разрядным блоком открытых данных:
.
В результате суммирования по модулю 2 значений
и
получают первый 64-разрядный блок зашифрованных данных
,
где
,
.
Для получения следующего 64-разрядного блока гаммы шифра
заполнение
суммируется по модулю
в сумматоре
с константой
из
. Результат записывается в
. Заполнение
суммируется по модулю
в сумматоре
с константой
из
. Результат записывается в
. Новое заполнение
переписывают в
, а новое заполнение
‑ в
, при этом заполнения
и
сохраняют. Заполнения
,
шифруют в режиме простой замены.
Полученное в результате шифрования заполнение накопителей
и
образует второй 64-разрядный блок гаммы шифра
, который суммируется поразрядно по модулю 2 в сумматоре
со вторым блоком открытых данных 
.
Аналогично вырабатываются блоки гаммы шифра
и шифруются блоки открытых данных
.
В канал связи или память ЭВМ передаются синхропосылка
и блоки зашифрованных данных:
.
