Алгоритм ГОСТ 28147—89

Советский (ныне российский) стандарт рекомендован к использо­ванию для защиты любых данных, представленных в виде двоичного кода, хотя не исключаются и другие методы шифрования. Данный стандарт формировался с учетом мирового опыта, и в частности, были приняты во внимание недостатки и нереализованные возможности алгоритма DES, поэтому использование стандарта ГОСТ предпочтительнее.

Рисунок 4.6. Схема алгоритма ГОСТ 28147—89

Алгоритм ГОСТ 28147-89 – это итеративный 32-цикловый обрати­мый блочный шифр Фейстеля. Размер входного блока – 64 бита, размер ключа шифра – 256 бит. Алгоритм достаточно сложен и ниже будет описана в основном его концепция. Таблица замен алгоритма ГОСТ не опубликована. Общая схема алгоритма приведена рисунке 4.6.

В этой схеме: + —сложение по модулю 232,

Å — побитовое сложение по модулю 2.

Для прибавления ключа и сложения подблоков в сети Фейстеля исполь­зуются операции + и Å. Эта пара операций не обладает свойст­вами ассоциативности и дистрибутивности, что повышает стойкость алго­ритма к аналитическим атакам, основанным на аппроксимации таблицы за­мен линейными соотношениями.

Ключ k длиной 256 бит представляется в виде восьми 32-разрядных чисел:

    k = k (0)k (1)║ … ║ k (7).

Алгоритм криптографического преобразования предусматривает 4 режима работы:

² Шифрование данных в режиме простой замены;

² Шифрование данных в режиме гаммирования;

² Шифрование данных в режиме гаммирования с обратной связью;

² Выработка имитовставки.

Режим простой замены

Каждый 64-битовый блок М шифруемого сообщения рассматривает­ся как пара 32-битовых блоков М=Н L (H - правые или младшие и L – левые или старшие биты). Первый бит блока считается старшим.

Далее выполняется итеративный (i - номер итерации) процесс шифрования (f - функция шифрования):

H i = f (H i -1 [+] k ((i -1)mod8)) Å L i -1   для i =1, 2,..., 24
L i = H i -1

H i = f (H i -1 [+] k (32- i)) Å L i -1 для i =25, 26,..., 31
L i = H i -1

H32 = H31              L32 = f (H31 [+] k 0) Å L31.

64-разрядный блок зашифрованных данных C представляется в виде

C=H32L32.

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

Подключи ki , используемые в итерациях алгоритма, представляют собой 8 блоков k (0), k (1), …, k (7) по 32 бита, на которые разбивается 256-битовый секретный ключ K. Ключи повторяются циклически 3 раза, а в четвертый раз выбираются в обратном порядке.



Функция шифрования

Функция шифрования включает две операции над 32-разрядным аргументом. Схема функции шифрования в алгоритме ГОСТ 28147—89 показана на рисунке 4.7.

Рисунок 4.7. Функция шифрования в алгоритме ГОСТ 28147—89

Первая операция является подстановкой. Блок подстановки состоит из 8 узлов замены S(1)...S(8) с памятью 64 бита каждый. Поступающий на блок подстановки 32-разрядный вектор разбивается на 8 последовательно идущих 4-разрядных вектора, каждый из который преобразуется в 4-раз­рядный вектор соответствующим узлом замены.

Каждый узел замены можно представить в виде таблицы-перестанов­ки 16-и четырехразрядных двоичных чисел в диапазоне 0...15. Входной вектор определяет адрес строки в таблице, число из которой является выходным вектором. Затем 4-разрядные векторы последовательно объе­диняются в 32-разрядный выходной вектор.

Вторая операция - циклический сдвиг влево (на 11 разрядов) 32-разрядного вектора, полученного в результате подстановки.

Следует учитывать, что данный режим шифрования обладает ограниченной криптостойкостью.Режим простой замены допустимо использовать для шифрования данных только в ограниченных случаях – при шифровании ключа с обеспечением имитозащиты для передачи по каналам связи или хранения его в памяти ЭВМ.

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

Режим гаммирования напоминает режим OFB, также являясь вариантом потокового шифра.

Открытые данные, разбитые на 64-разрядные блоки mi (i =1,2,..., n) (n определяется объемом шифруемых данных), зашифровываются в режиме гаммирования путем поразрядного сложения по модулю 2 с гаммой шифра gш=(g1, g2,...., gm), которая вырабатывается блоками по 64 бита. ci (64-разрядный блок зашифрованного текста) получается из уравнения

ci = mi Å g i,

где гамма шифра: g i = F (yi -1, zi -1).

Здесь F обозначает функцию шифрования в режиме простой замены (аргументами этой функции являются два 32-разрядных числа).

Величины yi и zi определяются итерационно по мере формирования гаммы следующим образом:

(y 0, z 0)=F(s),

(yi, zi)=(yi -1+ a 2, zi -1+ a 1), i =1, 2,..., n.

где s – начальное значение (64-разрядная двоичная последо­вательность, называемая синхропосылкой), не является секретным элементом шифра. Она известна как на передающей стороне, так и на приемной или передается по каналу связи вместе с шифртекстом.

a 1=0101010116 и a 2=0101010416 - 32-разрядные двоичные константы, заданные в ГОСТе.


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



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