Зашифровывание открытых данных в режиме гаммирования
Криптосхема, реализующая алгоритм шифрования в режиме гаммирования, показана на рис. 7.4. Открытые данные разбивают на 64-разрядные блоки
,
где – -й 64-разрядный блок открытых данных, , определяется объемом шифруемых данных.
Эти блоки поочередно зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 в сумматоре с гаммой шифра , которая вырабатывается блоками по 64 бита, т. е.
,
где – -й 64-разрядный блок, .
Число двоичных разрядов в блоке может быть меньше 64, при этом не использованная для зашифровывания часть гаммы шифра из блока отбрасывается.
Уравнение шифрования данных в режиме гаммирования имеет вид
,
где , ; – -й блок 64-разрядного блока зашифрованного текста; ‑ функция шифрования в режиме простой замены; С1,С2 ‑ 32–разрядные двоичные константы; Yi,Zi ‑ 32–разрядные двоичные последовательности.
Рис. 7.4. Схема реализации режима гаммирования |
Величины Yi,Zi определяются итерационно по мере формирования гаммы следующим образом:
,
где – синхропосылка (64-разрядная двоичная последовательность),
Рассмотрим реализацию процедуры шифрования в режиме гаммирования. В накопители N6 и N5 заранее записаны 32-разрядные двоичные константы С1 и С2, имеющие следующие значения (в шестнадцатеричной форме):
В КЗУ вводится 256 бит ключа; в накопители N1 и N2 ‑ 64-разрядная двоичная последовательность (синхропосылка)
.
Синхропосылка является исходным заполнением накопителей N1 и N2 для последовательной выработки блоков гаммы шифра.
Исходное заполнение накопителя N1:
состояние накопителя N2:
Исходное заполнение N1 и N2 (синхропосылка шифруется в режиме простой замены. Результат шифрования
переписывается в 32-разрядные накопители N3 и N4 так, что заполнение N1 переписывается в N3, а заполнение N2 ‑ в N4.
Заполнение накопителя N4 суммируют по модулю в сумматоре с 32-разрядной константой С1 из накопителя N6. Результат записывается в N4. Заполнение накопителя N3 суммируется по модулю в сумматоре с 32-разрядной константой С3 из накопителя N5. Результат записывается в N3. Заполнение N3 переписывают в N1, а заполнение N4 ‑ в N2, при этом заполнения N3, N4 сохраняются. Заполнение накопителей шифруется в режиме простой замены.
Полученное в результате шифрования заполнение накопителей N1 и N2 образует первый 64-разрядный блок гаммы шифра:
,
который суммируют поразрядно по модулю 2 в сумматоре с первым 64-разрядным блоком открытых данных:
.
В результате суммирования по модулю 2 значений и получают первый 64-разрядный блок зашифрованных данных
,
где , .
Для получения следующего 64-разрядного блока гаммы шифра заполнение N4 суммируется по модулю в сумматоре с константой С1 из N6. Результат записывается в N4. Заполнение N3 суммируется по модулю в сумматоре с константой С2 из N5. Результат записывается в N3. Новое заполнение N3 переписывают в N1, а новое заполнение N4 ‑ в N2, при этом заполнения и сохраняют. Заполнения N1, N2 шифруют в режиме простой замены.
Полученное в результате шифрования заполнение накопителей N1 и N2 образует второй 64-разрядный блок гаммы шифра , который суммируется поразрядно по модулю 2 в сумматоре со вторым блоком открытых данных
.
Аналогично вырабатываются блоки гаммы шифра и шифруются блоки открытых данных .
В канал связи или память ЭВМ передаются синхропосылка и блоки зашифрованных данных:
.
Дата добавления: 2015-09-07; просмотров: 791;