Зашифровывание открытых данных в режиме гаммирования
Криптосхема, реализующая алгоритм шифрования в режиме гаммирования, показана на рис. 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 в сумматоре со вторым блоком открытых данных
.
Аналогично вырабатываются блоки гаммы шифра и шифруются блоки открытых данных .
В канал связи или память ЭВМ передаются синхропосылка и блоки зашифрованных данных:
.