Режим гаммирования

Зашифрование открытых данных в режиме гаммирования. Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования, показана на рис.3.13. Открытые данные разбивают на 64‑разрядные блоки

Т0(1), Т0(2),..., Т0(i),..., Т0(m),

где Т0(i) – i-й 64-разрядный блок открытых данных, i = 1…m, m определяется объемом шифруемых данных.

Эти блоки поочередно зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 в сумматоре СМ5 с гаммой шифра Гш, которая вырабатывается блоками по 64 бита, т.е.

Гш=(Гш(1), Гш(2),..., Гш(i), Гш(m)),

где Гш(i) – i-й 64-разрядный блок, i = 1…m.

Рисунок 3.13 – Схема реализации режима гаммирования

Число двоичных разрядов в блоке Т0(m) может быть меньше 64, при этом неиспользованная для зашифрования часть гаммы шифра из блока Гш(m) отбрасывается.

Уравнение зашифрования данных в режиме гаммирования имеет вид

Тш(i) = Т0(i)  Гш(i),

где Гш(i)=А(Yi–1 ⊞ C2, Zi–1 ⊞´C1),i=1…m; Тш(i) – i-й блок 64-разрядного блока зашифрованного текста; А(·) – функция зашифрования в режиме простой замены; С1, С2 – 32-разрядные двоичные константы; Yi, Zi– 32‑разрядные двоичные последовательности.

Величины Yi, Zi определяются итерационно по мере формирования гаммы Гш следующим образом:

(Y0, Z0) = А (),

где – синхропосылка (64-разрядная двоичная последова-тельность),

(Yi, Zi) = (Yi–1 ⊞ С2, Zi–1 ⊞ C1), i= 1…m.

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

С1 = 01010104(16), С2 = 01010101(16).

В КЗУ вводится 256 бит ключа; в накопители N1 и N2 – 64-разрядная двоичная последовательность (синхропосылка)

= (S1, S2,..., S64).

Синхропосылка является исходным заполнением накопителей N1 и N2 для последовательной выработки m блоков гаммы шифра.

Исходное заполнение накопителя N1:

(S32, S31,...,S2, S1);

32, 31,..., 2, 1  номер разряда N1

исходное заполнение накопителя N2:

(S64, S63,..., S34, S33).

64, 63,..., 34, 33  номер разряда N2

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

A() = (Y0, Z0)

переписывается в 32-разрядные накопители N3 и N4 так, что заполнение N1 переписывается в N3, а заполнение N2 – в N4.

Заполнение накопителя N4 суммируют по модулю (232 –1) в сумматоре СМ4 с 32-разрядной константой С1 из накопителя N6. Результат записывается в N4. Заполнение накопителя N3 суммируется по модулю 232 в сумматоре СМ3 с 32-разрядной константой С2 из накопителя N5. Результат записывается в N3. Заполнение N3 переписывают в N1, а заполнение N4 – в N2, при этом заполнения N3, N4 сохраняются. Заполнение накопителей N1 и N2 зашифровывается в режиме простой замены.

Полученное в результате зашифрования заполнение накопителей N1, N2 образует первый 64-разрядный блок гаммы шифра Гш(1)=(1(1), 2(1),..., 63(1), 64(1)), который суммируют поразрядно по модулю 2 в сумматоре СМ5 с первым 64-разрядным блоком открытых данных

Т0(1) = (t1(1), t2(1),..., t63(1), t64(1)).

В результате суммирования по модулю 2 значений Гш(1) и Т0(1) получают первый 64-разрядный блок зашифрованнных данных:

Тш(1) = Гш(1)  Т0(1) = (1(1), 2(1),..., 63(1), 64(1)),

где i(1) = ti(1)  i(1), i = 1…64.

Для получения следующего 64-разрядного блока гаммы шифра Гш(2) заполнение N4 суммируется по модулю (232 –1) в сумматоре СМ4 с константой С1 из N6. Результат записывается в N4. Заполнение N3 суммируется по модулю 232 в сумматоре СМ3 с константой С2 из N5. Результат записывается в N3. Новое заполнение N3 переписывают в N1, а новое заполнение N4 – в N2 , при этом заполнения N3 и N4 сохраняют. Заполнения N1, N2 зашифровывают в режиме простой замены.

Полученное в результате зашифрования заполнение накопителей N1 и N2 образует второй 64-разрядный блок гаммы шифра Гш(2), который суммируется поразрядно по модулю 2 в сумматоре СМ5 со вторым блоком открытых данных Т0(2):

Тш(2) = Гш(2)  Т0(2).

Аналогично вырабатываются блоки гаммы шифра Гш(3), Гш(4),..., Гш(m) и зашифровываются блоки открытых данных Т0(3), Т0(4),..., Т0(m).

В канал связи или память ЭВМ передаются синхропосылка и блоки зашифрованных данных

Тш(1), Тш(2),..., Тш(m).

Расшифрование в режиме гаммирования. При расшифровании криптосхема имеет тот же вид, что и при зашифровании (см. рис.3.13).

Уравнение расшифрования:

Т0(i) = Тш(i)  Гш(i) = Tш(i)  A (Yi–1 ⊞ C2, Zi–1 ⊞´ C1), i = 1…m.

Следует отметить, что расшифрование данных возможно только при наличии синхропосылки, которая не является секретным элементом шифра и может храниться в памяти ЭВМ или передаваться по каналам связи вместе с зашифрованными данными.

Рассмотрим реализацию процедуры расшифрования. В КЗУ вводят 256 бит ключа, с помощью которого осуществляется зашифрование данных Т0(1), Т0(2),..., Т0(m). В накопители N1 и N2 вводится синхропосылка, и осуществляется процесс выработки m блоков гаммы шифра Гш(1), Гш(2),..., Гш(m). Блоки зашифрованных данных Тш(1), Тш(2),..., Тш(m) суммируются поразрядно по модулю 2 в сумматоре СМ5 с блоками гаммы шифра Гш(1),..., Гш(m). В результате получаются блоки открытых данных

Т0(1), Т0(2),..., Т0(m);

при этом Т0(m) может содержать меньше 64 разрядов.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: