Режим гаммирования.
Зашифрование открытых данных в режиме гаммирования. Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования, показана на рис. 24.
Открытые данные разбивают на 64-разрядные блоки
T0(1), T0(2),…,T0(i),…,T0(m),
где Т0(i) - i-й 64-разрядный блок открытых данных, i = 1...m, m определяется объемом шифруемых данных.
Эти блоки поочередно зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 в сумматоре СМ5 с гаммой шифра Гш, которая вырабатывается блоками по 64 бита, т.е.
Гш = (Гш(1), Гш(2),…, Гш(i),…, Гш(m)),
где Гш(i) - i-й 64-разрядный блок, i = 1...m.
Число двоичных разрядов в блоке Т0(m) может быть меньше 64, при этом неиспользованная для зашифрования часть гаммы шифра из блока Гш(m) отбрасывается.
Рис. 24. Схема реализации режима гаммирования
Уравнение зашифрования данных в режиме гаммирования имеет вид
Тш(i) = T0(i)+ Гш(i),
где Гш(i)=А(Уi-1 [+]C2, Zi-1 {+} С1), i=1 ...m; Тш(i) - i-й блок 64-разрядного блока зашифрованного текста; А() - функция зашифрования в режиме простой замены; C1, С2 - 32-разрядные двоичные константы; Yi, Zi - 32-разрядные двоичные последовательности.
Величины Yi, Zi определяются итерационно по мере формирования гаммы Гш следующим образом:
(Y0, Z0) = A(S),
где S - синхропосылка (64-разрядная двоичная последовательность),
(Yi, Zi) = (Yi-1 [+] С2, Zi-1 {+} C1), i = 1...m.
Рассмотрим реализацию процедуры зашифрования в режиме гаммирования.
1. В накопители N6 и N5 заранее записаны 32-разрядные двоичные константы С1 и С2, имеющие следующие значения (в шестнадцатеричной форме):
C1 = 01010104(16), С2 = 01010101(16).
2. В КЗУ вводится 256 бит ключа.
3. В накопители N1 и N2 вводится 64-разрядная двоичная последовательность (синхропосылка)
S = (S1, S2, ..., S64).
Синхропосылка S является исходным заполнением накопителей N1 и N2 для последовательной выработки m блоков гаммы шифра.
Исходное заполнение накопителя N1:
(S32, S31, ...,S2, S1);
32, 31, ..., 2, 1 номер разряда N1.
Исходное заполнение накопителя N2:
(S64, S63, … , S34, Sзз)-
32, 31, ..., 2, 1 номер разряда N2.
4. Исходное заполнение N1 и N2 (синхропосылка S) зашифровывается в режиме простой замены. Результат зашифрования
A(S) = (Yo,Z0)
переписывается в 32-разрядные накопители N3 и N4 так, что заполнение N1 переписывается в N3, а заполнение N2 - в N4.
5. Заполнение накопителя N4 суммируют по модулю (232 -1) в сумматоре СМ4 с 32-разрядной константой C1 из накопителя N6. Результат записывается в N4. Заполнение накопителя N3 суммируется по модулю 232 в сумматоре СМ3 с 32-разрядной константой С2 из накопителя N5. Результат записывается в N3.
6. Заполнение N3 переписывают в N1, а заполнение N4 - в N2, при этом заполнения N3, N4 сохраняются.
7. Заполнение накопителей N1 и N2 зашифровывается в режиме простой замены.
8. Полученное в результате зашифрования заполнение накопителей N1, N2 образует первый 64-разрядный блок гаммы шифра ГШ(1)=(y1(1), y2(1), …, y63(1), y64{1)). Блок гаммы суммируют поразрядно по модулю 2 в сумматоре СМ5 с первым 64-разрядным блоком открытых данных
T0(1) = (t1(1), t2(1),…, t63(1), t64(1)).
В результате суммирования по модулю 2 значений Гш(1) и Т0(1) получают первый 64-разрядный блок зашифрованных данных.
9. Для получения следующего 64-разрядного блока гаммы шифра Гш(2) заполнение N4 суммируется по модулю (232 -1) в сумматоре СМ4 с константой C1 из N6. Результат записывается в N4. Заполнение N3 суммируется по модулю 232 в сумматоре СМ3 с константой С2 из N5. Результат записывается в N3. Новое заполнение N3 переписывают в N1, а новое заполнение N4 - в N2, при этом заполнения N3 и N4 сохраняют. Заполнения N1, N2 зашифровывают в режиме простой замены.
10. Полученное в результате зашифрования заполнение накопителей N1 и N2 образует второй 64-разрядный блок гаммы шифра Гш(2), который суммируется поразрядно по модулю 2 в сумматоре СМ5 со вторым блоком открытых данных Т0(2):
Тш(2) = Гш(2) + Т0(2).
11. Аналогично вырабатываются блоки гаммы шифра Гш(3), Гш4, …, Гш(m) и зашифровываются блоки открытых данных Т0(3), T0(4), …, T0(m).
В канал связи или память ЭВМ передаются синхропосылка S и блоки зашифрованных данных
Тш(1), Тш(2), …, Тш(m).
Предполагается также, что получатель знает ключ шифрования данных.
Расшифрование в режиме гаммирования.При расшифровании криптосхема имеет тот же вид, что и при зашифровании (см. рис. 16).
Уравнение расшифрования:
To(i) = Тш(i) + Гш(i) = Тш(i) + A(Yi-1 [+] C2, Zi-1 {+} C1), i =1…m.
Следует отметить, что расшифрование данных возможно только при наличии синхропосылки, которая не является секретным элементом шифра и может храниться в памяти ЭВМ или передаваться по каналам связи вместе с зашифрованными данными.
Рассмотрим реализацию процедуры расшифрования.
1. В КЗУ вводят 256 бит ключа, с помощью которого осуществляется зашифрование данных Т0(1), Т0(2), ..., Т0(m).
2. В накопители N1 и N2 вводится синхропосылка, и осуществляется процесс выработки m блоков гаммы шифра Гш(1), Гш(2), ..., Гш(m).
3. Блоки зашифрованных данных Тш(1), Тш(2),…, Тш(m) суммируются поразрядно по модулю 2 в сумматоре СМ5 с блоками гаммы шифра Гш(1), •••, Гш(m). В результате получаются блоки открытых данных
T0(1), T0(2),…, T0(m);
при этом Т0(m) может содержать меньше 64 разрядов.
Дата добавления: 2017-08-01; просмотров: 636;