Главная
Тактико-технические данные
Режимы алгоритма
Режим простой замены
Режим гаммирования
Режим гам. с обратной связью
Режим выработки имитовставки
Упражнения
Литература

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

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

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

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

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

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

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

Рис. 3. Схема реализации режима гаммирования с обратной связью

Число двоичных разрядов в блоке Т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) = А(S),

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

(Yi, Zi) = (Yi-1[+]C2, Zi-1[+']C1), i = 1…m.

Процедура шифрования в режиме гаммирования заключается в следующем. В накопители N6 и N5 заранее записываются 32-разярдные двоичные константы С1 иС2, имеющие следующие значения (в шестнадцатеричной форме): С1 = 01010104(16) иС2=01010101 (16). В КЗУ вводится 256 бит ключа; в накопители N1 и N2 – 64-разрядная двоичная последовательность (синхропосылка) S = (S1, S2,…, S64). Синхропосылка S является исходным заполнением накопителей N1 и N2 для последовательной выработки m блоков гаммы шифра.

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

(S32(0), S31(0), …, S2(0), S1(0)),

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

а заполнение накопителя N2 имеет вид

(S64(0), S63(0), …, S34(0), S33(0)),

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

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

А(S) = (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-разрядный блок гаммы шифра Гш = (g1(1), g2(!), …, g63(1), …, g64(1)), который суммируют поразрядно по модулю 2 в сумматоре СМ5 с первым 64-разрядным блоком открытых данных Т0 = (t1(1), t2(!), …, t 63(1), …, t 64(1)). В результате суммирования по модулю 2 значений Гш(1) и Т0(1) получают первый 64-разрядный блок зашифрованных данных:

Тш(1) = Гш(i) + Т0(i) =(t1(1), t2(!), …, t63(1), …, t64(1)), где ti(1) = ti(1) + gi(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 с первым 64-разрядным блоком открытых данных Т0(2): Тш(2) = Гш(2) + Т0(2).

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

Расшифрование данных в режиме гаммирования. При расшифровании криптосхема имеет тот же вид, что и при зашифровании (рис. 2). Уравнение расшифрования: Т0(i) = Тш(i)ш(i) = Тш(i) +А(Yi-1[+]C2, Zi-1[+']C1), i = 1..m. Отметим, что расшифрование возможно при наличии синхропосылки, которая не является секретным элементом шифра и может передаваться по каналу связи вместе с зашифрованными данными.