Алгоритм криптографического преобразования данных ГОСТ 28147-89

В нашей стране установлен единый алгоритм криптографического преобразования данных для систем обработки информации в сетях ЭВМ, отдельных вычислительных комплексах и ЭВМ, который определяется ГОСТ 28147-89. Стандарт обязателен для организаций, предприятий и учреждений, применяющих криптографическую защиту, хранимых и передаваемых в сетях ЭВМ, в отдельных вычислительных комплексах и ЭВМ.

Этот алгоритм предназначен для аппаратной и программной реализации, удовлетворяет криптографическим требованиям и не накладывает ограничений на степень секретности защищаемой информации. Он представляет собой 64-битовый блочный алгоритм с 256-битовым ключом, основанный на сети Фейстеля.

Алгоритм шифрования блока данных по ГОСТ 28147-89 описывается схемой, представленной на рис. 3.2. Обозначения на схеме:

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru – 32-разрядные накопители;

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru – 32-разрядный сумматор по модулю 232 ([+]);

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru – 32-разрядный сумматор по модулю 2 (Å);

R – 32-разрядный регистр циклического сдвига;

КЗУ – ключевое запоминающее устройство на 256 бит, состоящее из восьми 32-разрядных накопителей Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru ;

S – блок подстановки, состоящий из восьми узлов замены (S-блоков замены) Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru .

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru
Рис. 3.2. Схема преобразования информации в алгоритме шифрования блока по ГОСТ 28147–89.

Открытые данные, подлежащие шифрованию, разбивают на 64-разрядные блоки Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru . Процедура шифрования 64-разрядного блока Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru включает 32 раунда (цикла) (j = 1…32).

В ключевое запоминающее устройство вводят 256 бит ключа K в виде восьми 32-разрядных подключей Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru :

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru .

Последовательность битов блока

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru

разбивают на две последовательности по 32 бита: b(0) а(0), где b(0) – левые или старшие биты, а(0) – правые или младшие биты.

Эти последовательности вводят в накопители Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru и Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru ; перед началом первого раунда шифрования.

В результате начальное заполнение накопителя Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru :

Номер разряда
a(0) = ( Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , …, Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru )

Начальное заполнение накопителя Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru :

Номер разряда
b(0) = ( Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , …, Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru )

Первый раунд (j = 1) процедуры шифрования 64-разрядного блока открытых данных можно описать уравнениями:

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru ,

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru .

Здесь а(1) – заполнение Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , b(1) – заполнение Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru после 1-го раунда шифрования; f – функция шифрования.

Аргументом функции f является сумма по модулю Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru числа а(0) (начального заполнения накопителя Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru ) и числа Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru – подключа, считываемого из накопителя Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru КЗУ. Каждое из этих чисел равно 32 битам.

Функция f включает две операции над полученной 32-разрядной суммой Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru .

Первая операция является подстановкой (заменой) и выполняется блоком подстановки S. Блок подстановки S состоит из восьми узлов замены (S-блоков замены) Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru с памятью 64 бит каждый. Поступающий из Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru на блок подстановки S 32-разрядный вектор разбивают на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в четырехразрядный вектор соответствующим узлом замены. Каждый узел замены можно представить в виде таблицы-подстановки шестнадцати четырехразрядных двоичных чисел в диапазоне 0000…1111. Входной вектор указывает адрес строки в таблице, а число в этой строке является выходным вектором. Затем четырехразрядные выходные векторы последовательно объединяют в 32-разрядный вектор. Узлы замены (таблицы-подстановки) представляют собой ключевые элементы, которые являются общими для сети ЭВМ и редко изменяются. Эти узлы замены должны сохраняться в секрете. Считается, что стойкость алгоритма ГОСТ 28147-89 во многом определяется структурой узлов замены.

Долгое время структура S-блоков в открытой печати не публиковалась. В настоящее время известны S-блоки, которые используются в приложениях Центрального Банка Российской Федерации и считаются достаточно сильными. Их устройство дано в табл. 3.1. Каждый S-блок может быть представлен в виде строки чисел от 0 до 15, расположенных в некотором порядке. Тогда порядковый номер числа будет являться входным значением S-блока, а само число – выходным значением S-блока.

Таблица 3.1

Рекомендуемые узлы замены для алгоритма ГОСТ 28147-89

№ S-блока Значение входа

Вторая операция – циклический сдвиг влево (на 11 разрядов) 32-разрядного вектора, полученного с выхода блока подстановки S. Циклический сдвиг выполняется регистром сдвига R.

Далее результат работы функции шифрования f суммируют поразрядно по модулю 2 в сумматоре Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru с 32-разрядным начальным заполнением b(0) накопителя Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru . Затем полученный на выходе Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru результат (значение а(1)) записывают в накопитель Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , а старое значение Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru (значение а(0)) переписывают в накопитель Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru (значение b(1) = а(0)). На этом первый раунд завершается.

Последующие раунды осуществляются аналогично, при этом во втором раунде из КЗУ считывают заполнение Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru – подключ Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , в третьем – подключ Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru и т.д., в восьмом раунде – подключ Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru . В раундах с 9-го по 16-й, а также в с 17-го по 24-й подключи из КЗУ считываются в том же порядке: Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru . В последних восьми раундах с 25-го по 32-й порядок считывания подключей из КЗУ обратный: Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru . Таким образом, при шифровании в 32 циклах осуществляется следующий порядок выборки из КЗУ подключей:

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru

В 32-м раунде результат из сумматора Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru вводится в накопитель Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , а в накопителе Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru сохраняется прежнее заполнение. Полученные после 32-го раунда заполнения накопителей Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru и Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru являются блоком зашифрованных данных Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , соответствующим блоку открытых данных Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru .

Таким образом уравнения шифрования блока имеют вид:

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru при j = 1…24,

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru при j = 25…31,

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru при j = 32,

где Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru – заполнение Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru после j-го раунда шифрования, Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru – заполнение Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru после j-го раунда, j = 1…32.

Блок зашифрованных данных Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru (64 разряда) выводится из накопителей Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru в следующем порядке: из разрядов 1…32 накопителя Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , затем из разрядов 1…32 накопителя Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , т.е. начиная с младших разрядов:

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru .

Криптосхема, реализующая алгоритм расшифрования блока, имеет тот же вид, что и при шифровании (см. рис. 3.2).

В КЗУ вводят 256 бит ключа, на котором осуществлялось шифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru по 64 бита в каждом. Ввод любого блока Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru в накопители Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru и Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru производят так, чтобы начальное значение накопителя Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , имело вид:

Номер разряда
a(32) = ( Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , …, Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru )

Начальное заполнение накопителя Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru :

Номер разряда
b(32) = ( Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , …, Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru , Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru )

Расшифрование осуществляется по тому же алгоритму, что и шифрование, с тем изменением, что заполнения накопителей Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru считываются из КЗУ в раундах расшифрования в следующем порядке:

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru

Уравнения расшифрования имеют вид:

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru при j=1…8,

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru при j=9…31,

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru при j=32.

Полученные после 32 циклов работы заполнения накопителей Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru и Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru образуют блок открытых данных

Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru ,

соответствующий блоку зашифрованных данных Алгоритм криптографического преобразования данных ГОСТ 28147-89 - student2.ru .

Наши рекомендации