Режимы работы алгоритма криптографического преобразования данных ГОСТ 28147-89
Описанные выше режимы работы блочных шифров предложены и официально зарегистрированы в США (FIPS PUB 81). В отечественном стандарте шифрования данных ГОСТ 28147-89 так же предусмотрены различные режимы работы, которые основаны на описанных принципах.
ГОСТ 28147-89 предусматривает четыре режима работы:
· шифрование данных в режиме простой замены;
· шифрование данных в режиме гаммирования;
· шифрование данных в режиме гаммирования с обратной связью;
· выработка имитовставки.
Шифрование данных в режиме простой замены полностью эквивалентно шифрованию в режиме ECB.
Шифрование данных в режиме гаммирования соответствует режиму OFB, но имеет некоторые особенности. Рассмотрим их подробнее.
Криптосхема, реализующая алгоритм шифрования в режиме гаммирования, показана на рис. 3.10. Открытые данные разбивают на 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.
Число двоичных разрядов в блоке Т0(m) может быть меньше 64, при этом неиспользованная для шифрования часть гаммы шифра из блока Гш(m) отбрасывается.
Уравнение шифрования данных в режиме гаммирования имеет вид
Тш(i) = Т0(i) Å Гш(i),
где Гш(i) = А(Yi–1 [+] C2, Zi–1 [+]' C1), i=1…m; Тш(i) – 1-й блок 64-разрядного блока зашифрованного текста; А(×) – функция шифрования блока; [+] – операция суммы по модулю 232, [+]' – операция суммы по модулю 232–1; С1, С2 – 32-разрядные двоичные константы; Yi , Zi – 32-разрядные двоичные последовательности.
Величины Yi Zi определяются итерационно по мере формирования гаммы Гш следующим образом: (Y0 , Z0)=А(Š), где Š - синхропосылка (64-разрядная двоичная последовательность), (Yi , Zi )=(Yi–1 [+] C2, Zi–1 [+] C1), i=1…m.
Рассмотрим реализацию процедуры шифрования в режиме гаммирования. В накопители N6 и N5 заранее записаны 32-разрядные двоичные константы С1 и С2, имеющие следующие значения (в шестнадцатеричной форме):
С1 = 01010104(16) , С2 = 01010101(16).
Рис. 3.10. Схема реализации режима гаммирования ГОСТ 28147-89. |
В КЗУ вводится 256 бит ключа; в накопители N1 и N2 – 64-разрядная двоичная последовательность (синхропосылка) Š = (S1, S2,…, S64).
Синхропосылка Š является исходным заполнением накопителей N1 и N2 для последовательной выработки m блоков гаммы шифра. Исходное заполнение N1 и N2 зашифровывается. Результат шифрования А(Š)=(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) = (g1(1), g2(1),…, g63(1), g64(1)), который суммируют поразрядно по модулю 2 в сумматоре СМ5 с первым 64-разрядным блоком открытых данных Т0(1) = (t1(1), t2(1),…, t63(1), t64(1)).
В результате суммирования по модулю 2 значений Гш(1) и Т0(1) получают первый 64-разрядный блок зашифрованных данных:
Тш(1) = Гш(1) Å Т0(1) = (t1(1), t2(1),…, 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 со вторым блоком открытых данных Т0(2): Тш(2) = Гш(2) Å Т0(2).
Аналогично вырабатываются блоки гаммы шифра Гш(3), Гш(4),…, Гш(m) и зашифровываются блоки открытых данных Т0(3), Т0(4),… Т0(m).
В канал связи или память ЭВМ передаются синхропосылка Š и блоки зашифрованных данных Тш(1), Тш(2),… Тш(m).
При расшифровании криптосхема имеет тот же вид, что и при шифровании (см. рис. 3.10). Уравнение расшифрования:
Т0(i) = Тш(i) Å Гш(i) = Тш(i) Å А(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), Гш(2),…, Гш(m). В результате получаются блоки открытых данных Т0(1), Т0(2),… Т0(m). При этом Т0(m) может содержать меньше 64 разрядов.
Шифрование данных в режиме гаммирования с обратной связью соответствует режиму CFB.
Криптосхема, реализующая алгоритм шифрования в режиме гаммирования с обратной связью, имеет вид, показанный на рис. 3.11.
Открытые данные, разбитые на 64-разрядные блоки Т0(1), Т0(2),…, Т0(m), зашифровываются в режиме гаммирования с обратной связью путем поразрядного сложения по модулю 2 с гаммой шифра Гш, которая вырабатывается блоками по 64 бита:
Гш=(Гш(1), Гш(2),…, Гш(i),…, Гш(m)).
Число двоичных разрядов в блоке Т0(m) может быть меньше 64, при этом неиспользованная для шифрования часть гаммы шифра из блока Гш(m) отбрасывается.
Уравнения зашифрования в режиме гаммирования с обратной связью имеют вид:
Тш(1) = А(Š) Å Т0(1) = Гш(1) Å Т0(1),
Тш(i) = А(Тш(i-1)) Å Т0(i) = Гш(i) Å Т0(i), i=2…m.
Здесь Тш(i) – i-й 64-разрядный блок зашифрованного текста; А(×) –функция шифрования блока, m – определяется объемом открытых данных.
Аргументом функции А(×) на первом шаге итеративного алгоритма является 64-разрядная синхропосылка Š, а на всех последующих шагах – предыдущий блок зашифрованных данных Тш(i–1).
Процедура шифрования данных в режиме гаммирования с обратной связью реализуется следующим образом, В КЗУ вводятся 256 бит ключа. В накопители N1 и N2 вводится синхропосылка Š = (S1, S2,…, S64) из 64 бит. Исходное заполнение накопителей N1 и N2 зашифровывается. Полученное в результате шифрования заполнение накопителей N1 и N2 образует первый 64-разрядный блок гаммы шифра Гш(1) = А(Š), который суммируется поразрядно по модулю 2 в сумматоре СМ5 с первым 64-разрядным блоком открытых данных Т0(1) = (t1(1), t2(1),…, t63(1), t64(1)). В результате получают первый 64-разрядный блок зашифрованных данных Тш(1) = Гш(1) Å Т0(1) = (t1(1), t2(1),…, t63(1), t64(1)).
Блок зашифрованных данных Тш(1) одновременно является также исходным состоянием накопителей N1, N2 для выработки второго блока гаммы шифра Гш(2), и поэтому по обратной связи Тш(1) записывается в указанные накопители N1 и N2.
Заполнение накопителей N1 и N2 зашифровывается в режиме простой замены. Полученное в результате шифрования заполнение накопителей N1 и N2 образует второй 64-разрядный блок гаммы шифра Гш(2), который суммируется поразрядно по модулю 2 в сумматоре СМ5 со вторым блоком открытых данных Т0(2): Тш(2) = Гш(2) Å Т0(2).
Выработка последующих блоков гаммы шифра Гш(i) и зашифрование соответствующих блоков открытых данных Т0(i) (i=3…m) производится аналогично.
Если длина последнего m-го блока открытых данных Т0(m) меньше 64 разрядов, то из Гш(m) используется только соответствующее число разрядов гаммы шифра, остальные разряды отбрасываются.
Рис. 3.11. Схема реализации режима гаммирования с обратной связью ГОСТ 28147-89. |
В канал связи или память ЭВМ передаются синхропосылка Š и блоки зашифрованных данных Тш(1), Тш(2),…, Тш(m).
При расшифровании криптосхема имеет тот же вид, что и при шифровании (см. рис. 3.11). Уравнения расшифрования:
Т0(1) = А(Š) Å Тш(1) = Гш(1) Å Тш(1),
Т0(i) = А(Тш(i-1)) Å Тш(i) = Гш(i) Å Тш(i), i=2…m.
Реализация процедуры расшифрования зашифрованных данных в режиме гаммирования с обратной связью происходит следующим образом. В КЗУ вводят 256 бит того же ключа, на котором осуществлялось зашифрование открытых блоков Т0(1), Т0(2),…, Т0(m). В накопители N1 и N2 вводится синхропосылка Š. Исходное заполнение накопителей N1 и N2 (синхропосылка Š) зашифровывается в режиме простой замены. Полученное в результате зашифрования заполнение N1 и N2 образует первый блок гаммы шифра
Гш(1) = А(Š), который суммируется поразрядно по модулю 2 в сумматоре СМ5 с блоком зашифрованных данных Тш(1). В результате получается первый блок открытых данных Т0(1) = Гш(1) Å Тш(1).
Блок зашифрованных данных Тш(1) является исходным заполнением накопителей N1 и N2 для выработки второго блока гаммы шифра Гш(2):
Гш(2) = А(Тш(1)). Полученное заполнение накопителей N1 и N2 зашифровывается. Образованный в результате шифрования блок Гш(2) суммируется поразрядно по модулю 2 в сумматоре СМ5 со вторым блоком зашифрованных данных Тш(2). В результате получают второй блок открытых данных. Аналогично в N1, N2 последовательно записывают блоки зашифрованных данных Тш(2), Тш(3),…, Тш(m), из которых в режиме простой замены вырабатываются блоки гаммы шифра Гш(3), Гш(4),…, Гш(m).
Блоки гаммы шифра суммируются поразрядно по модулю 2 в сумматоре СМ5 с блоками зашифрованных данных Тш(3), Тш(4),…, Тш(m). В результате получают блоки открытых данных Т0(3), Т0(4),…, Т0(m), при этом последний блок открытых данных Т0(m) может содержать меньше 64 разрядов.
Режим выработки имитовставки соответствует режиму CBC. В стандарте ГОСТ 28147-89 определяется процесс выработки имитовставки, который единообразен для любого из режимов шифрования данных. Имитовставка ИР вырабатывается из блоков открытых данных либо перед шифрованием всего сообщения, либо параллельно с шифрованием по блокам. Первые блоки открытых данных, которые участвуют в выработке имитовставки, могут содержать служебную информацию (например, адресную часть, время, синхропосылку) и не зашифровываются.
Значение параметра Р (число двоичных разрядов в имитовставке) определяется криптографическими требованиями с учетом того, что вероятность навязывания ложных помех равна 0,5Р.
Для выработки имитовставки открытые данные представляют в виде последовательности 64-разрядных блоков Т0(1), Т0(2),…, Т0(m).
Первый блок открытых данных Т0(1) подвергают преобразованию А(×), соответствующему первым 16 циклам алгоритма шифрования блока. В качестве ключа для выработки имитовставки используют ключ длиной 256 бит, по которому шифруют данные.
Полученное после 16 циклов 64-разрядное число А(Т0(1)) суммируют по модулю 2 со вторым блоком открытых данных Т0(2).
Результат суммирования (А(Т0(1)) Å Т0(2)) снова подвергают преобразованию А(×). Полученное 64-разрядное число А(А(Т0(1)) Å Т0(2)) суммируют по модулю 2 с третьим блоком Т0(3) и снова подвергают преобразованию А(×), получая 64-разрядное число А(А(А(Т0(1)) Å Т0(2)) Å Т0(3)), и т.д.
Последний блок Т0(m) (при необходимости дополненный нулями до полного 64-разрядного блока) суммируют по модулю 2 с результатом вычислений на шаге (m–1), после чего зашифровывают в режиме простой замены, используя преобразование А(×).
Из полученного 64-разрядного числа выбирают отрезок ИР (имитовставку) длиной Р бит: ИР = [a(m)32–P+1(16), a(m)32–P+2(16),…, a(m)32(16)], где a(m)i – i-й бит 64-разрядного числа, полученного после 16-го цикла последнего преобразования А(×), 32–P+1 £ i £ 32.
Имитовставка ИР передается по каналу связи или в память ЭВМ в конце зашифрованных данных, т.е. Тш(1), Тш(2),…, Тш(m), ИР.
Поступившие к получателю зашифрованные данные Тш(1), Тш(2),…, Тш(m) расшифровываются, и из полученных блоков открытых данных Т0(1), Т0(2),…, Т0(m) аналогичным образом вырабатывается имитовставка ИР. Эта имитовставка ИР сравнивается с имитовставкой ИР , полученной вместе с зашифрованными данными из канала связи или из памяти ЭВМ. В случае несовпадения имитовставок полученные при расшифровании блоки открытых данных Т0(1), Т0(2),…, Т0(m) считают ложными.
Вопросы для повторения
1. Опишите устройство сети Фейстеля.
2. Докажите обратимость сети Фейстеля.
3. Укажите параметры алгоритма шифрования ГОСТ 28147-89.
4. Опишите функцию шифрования ГОСТ 28147-89.
5. Запишите уравнения шифрования/расшифрования алгоритма ГОСТ 28147-89.
6. Укажите параметры алгоритма шифрования Rijndael.
7. Перечислите и кратко охарактеризуйте преобразования одного раунда шифрования алгоритма Rijndael.
8. Опишите процедуру формирования раундовых ключей алгоритма Rijndael.
9. Опишите схему комбинирования блочных алгоритмов 3DES.
10. Перечислите и охарактеризуйте основные режимы работы блочных алгоритмов шифрования.
11. Перечислите и охарактеризуйте режимы работы алгоритма шифрования ГОСТ 28147-89.
12. Укажите, для каких целей используется режим выработки имитовставки в алгоритме шифрования ГОСТ 28147-89.
Резюме по теме
В теме разобрано устройство сети Фейстеля, являющейся основой для построения большинства современных блочных шифров. В качестве примера шифра, имеющего структуру сети Фейстеля, рассмотрен алгоритм криптографического преобразования данных ГОСТ 28147-89 и описан новый стандарт симметричного криптоалгоритма (AES – Advanced Encryption Standard). Кроме этого, в теме рассмотрены вопросы комбинирования блочных шифров с целью получения криптографических преобразований имеющих большую стойкость, а так же основные режимы работы блочных шифров.