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

ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

СИСТЕМЫ ОБРАБОТКИ ИНФОРМАЦИИ.ЗАЩИТА КРИПТОГРАФИЧЕСКАЯ

АЛГОРИТМ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ

ГОСТ 28147-89

Издание официальное

ИПК ИЗДАТЕЛЬСТВО СТАНДАРТОВ Moctia

ГОСТ 28147-89

СОДЕРЖАН И Е

1    Структурная схема алгоритма криптографического преобразования    1

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

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

4    Режим гаммирования с обратной связью    11

5    Режим выработки имитовставки    14

Приложение 1 Термины, применяемые в настоящем стандарте, и их определения    16

Приложение 2 Значения констант С1, С2    18

Приложение 3 Схемы программной реализации алгоритма криптографического

преобразования    .    19

Приложение 4 Правила суммирования по модулю 232 и по модулю (232—I)    25

ГОСУДАРСТВЕННЫЙ СТАНДАРТ

СОЮЗА ССР

ГОСТ

28147-89

СИСТЕМЫ ОБРАБОТКИ ИНФОРМАЦИИ. ЗАШИТА КРИПТОГРАФИЧЕСКАЯ

Алгоритм криптографического преобразования

ОКГ1 40 4000

Дата введения 01.07.90

Настоящий стандарт устанавливает единый алгоритм криптографического преобразования для систем обработки информации в сетях электронных вычислительных машин (ЭВМ), отдельных вычислительных комплексах и ЭВМ, который определяет правила шифрования данных и выработки имитовставки.

Алгоритм криптографического преобразования предназначен для аппаратной или программной реализации, удовлетворяет криптографическим требованиям и по своим возможностям не накладывает ограничений на степень секретности защищаемой информации.

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

Термины, применяемые в настоящем стандарте, и их определения приведены в приложении 1.

I. СТРУКТУРНАЯ СХЕМА АЛГОРИТМА КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ

1.1. Структурная схема алгоритма криптографического преобразования (криптосхема) содержит (см.черт. 1):

Издание официальное ★

ключевое запоминающее устройство (КЗУ) на 256 бит, состоящее из восьми 32-разрядных накопителей (Х0, Xt. Х2, A3 Л4, Х$, Х6, Ху); четыре 32-разрядных накопителя (/V(, N2, Nj, /V4);

Перепечатка воспрещена

© Издательство стандартов, 1989 © ИПК Издательство стандартов, 1996

два 32-разрядных накопителя Л/$,) с записанными в них постоянными заполнениями С2, С\

два 32-разрядных сумматора по модулю 232 (СМ|, СЛ/3);

32-разрядный сумматор поразрядного суммирования по модулю 2 (СЛ/2);

32-разрядный сумматор по модулю (232 — 1) (СЛ/4);

сумматор по модулю 2(СЛ/5), ограничение на разрядность сумматора СЛ/$ не накладывается;

блок подстановки (А);

регистр циклического сдвига на одиннадцать шагов в сторону старшего разряда (R).

1.2.    Блок подстановки А» состоит из восьми узлов замены A’j,

А2, А“з, К4, А5,    А7, А8 с памятью на 64 бита каждый.    Посту

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

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

1.4.    При записи ключа (И’,, W2 …,    Wqe{0,1), д= N256, в

КЗУ значение W вводится в i-й разряд накопителя Xq, значение W2 вводится во 2-й разряд накопителя Л#, … , значение W^2 вводится в 32-й разряд накопителя Xq; значение W33 вводится в 1-й разряд накопителя Ху значение вводится во 2-й разряд накопителя Ху … , значение WM вводится в 32-й разряд накопителя Х\ значение W65 вводится в 1-й разряд накопителя Х2 и т.д., значение 1У25Ь вводится в 32-й разряд накопителя Ху.

1.5.    При перезаписи информации содержимое р-го разряда одного накопителя (сумматора) переписывается в р-й разряд другого накопителя (сумматора).

1.6.    Значения постоянных заполнений Cj, С2 ( констант) накопителей /V6, /V5 приведены в приложении 2.

1.7.    Ключи, определяющие заполнения КЗУ и таблиц блока подстановки К, являются секретными элементами и поставляются в установленном порядке.

ГОСТ 28147-89 С. 3

Заполнение таблиц блока подстановки К является долговременным ключевым элементом, общим для сети ЭВМ.

Организация различных видов связи достигается построением соответствующей ключевой системы. При этом может быть использована возможность выработки ключей (заполнений КЗУ) в режиме простой замены и зашифрования их в режиме простой замены с обеспечением имитозащиты для передачи по каналам связи или хранения в памяти ЭВМ.

1.8. В криптосхеме предусмотрены четыре вида работы: зашифрование (расшифрование) данных в режиме простой замены; зашифрование (расшифрование) данных в режиме гаммирования;

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

режим выработки имитовставки.

Схемы программной реализации алгоритма криптографического преобразования приведены в приложении 3.

2. РЕЖИМ ПРОСТОЙ ЗАМЕНЫ

2.1.    Зашифрование открытых данных в режиме простой замены

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

Открытые данные, подлежащие зашифрованию, разбивают на блоки по 64 бита в каждом. Ввод любого блока Т{) = (Д|(0), ^(О), …, д31(0), я32(0), £|(0), Ь2(0)у … , Z>32(0)) двоичной информации в накопители N и N2 производится так, что значение Д|(0) вводится в 1-й разряд N|, значение а2(0) вводится во 2-й разряд /Vj и т.д , значение я32(0) вводится в 32-й разряд iVj; значение />|(0) вводится в

1- й разряд Л/2, значение Ь2(0) вводится во 2-й разряд N2 и т.д., значение />32(0) вводится в 32-й разряд N2. В результате получают состояние (я32(0), я3|(0), … , а2(0)у <7|(0)) накопителя yVj и состояние (/>32(0), Ь21(0), … , />|(0)) накопителя N2.

2.1.2.    В КЗУ вводятся 256 бит ключа. Содержимое восьми 32-раз-рядных накопителей Aq, Xt … , Xj имеет вид:

^0 = (^32^3…..*1 =(^64^63, . ^34^33)

*7 = (^56> ^255. … , И/226, ^225)

2.1.3.    Алгоритм зашифрования 64-разрядного блока открытых данных в режиме простой замены состоит из 32 циклов.

В первом цикле начальное заполнение накопителя суммируется по модулю 232 в сумматоре СМ с заполнением накопителя Xq при этом заполнение накопителя Nj сохраняется.

Результат суммирования преобразуется в блоке подстановки К и полученный вектор поступает на вход регистра /?, где циклически сдвигается на одиннадцать шагов в сторону старших разрядов. Результат сдвига суммируется поразрядно по модулю 2 в сумматоре СМ2 с 32-разрядным заполнением накопителя yV2. Полученный в СМ2 результат записывается в N% при этом старое заполнение N| переписывается в N2. Первый цикл заканчивается.

Последующие циклы осуществляются аналогично, при этом во

2- м цикле из КЗУ считывается заполнение Х, в 3-м цикле из КЗУ

ГОСТ 28147-89 С. 5

считывается заполнение Х2 и т.д., в 8-м цикле из КЗУ считывается заполнение Xj. В циклах с 9-го по 16-й, а также в циклах с 17-го по 24-й заполнения из КЗУ считываются в том же порядке:

В последних восьми циклах с 25-го по 32-й порядок считывания заполнений КЗУ обратный:

ад,ад,ад,ад.

Таким образом, при зашифровании в 32 циклах осуществляется следующий порядок выбора заполнений накопителей:

ад, ^2,^},^4>^5,^6»^7, ад, ^2,^3»^4,^5,-^6,^7, ад, ад,ад,ад, ад,ад,ад,ад.

С. 6 ГОСТ 28147-89

В 32 цикле результат из сумматора СЛ/2 вводится в накопитель УУ2, а в накопителе N сохраняется старое заполнение.

Полученные после 32-го никла зашифрования заполнения накопителей N| и N2 являются блоком зашифрованных данных, соответствующим блоку открытых данных.

2.1 4 Уравнения зашифрования в режиме простой замены имеют вид:

J*Cr> »(•</- п 0*0-0 (mode))**©*</- 1)

I Ь(/) = а(/~ I)

при у = I -24;

Г«</) = («</- ОШ Х{гг_п)КЛФЬ(/~ 1)

bO) — а О — О при / 8* 25 -г 31; а(32) = а (31)

А (32) = (д (31) ffl X0)KRG> Ь (31)

при у = 32,

где д(0) = (а32(0), «з|(0), … , Д|(0)) — начальное заполнение N перед первым циклом зашифрования;

6(0) = (632(0), 63j(0), … , 6j(0)) — начальное заполнение /У2 перед первым циклом зашифрования;

a(j) = (032(7), 0з|(/)э … , 0|(/)) — заполнение УУ, после у-го цикла зашифрования;

b(j) = (6з2(/), 63j(/’), … , 6|(/)) — заполнение /V2 после у-го цикла зашифрования, у = 032.

Знак ф означает поразрядное суммирование 32-разрядных векторов по модулю 2.

Знак Ш означает суммирование 32-разрядных векторов по модулю 232. Правила суммирования по модулю 232 приведены в приложении 4;

/?— операция циклического сдвига на одиннадцать шагов в сторону старших разрядов, т.е.

^(г32»О|>г30>г29>г28>г27>г26»г25>г24>г23’ Г22»Г2ЬГ20> ••• »г2*г|)~

=(г21»г20> — » г2*г1 *Г32>Г31 *ГзО»г29*г28*,27э’26э/’25>,24>Г23»,22)*

2.1.5. 64-разрядный блок зашифрованных данных Тш выводится из накопителей Л^, УУ2 в следующем порядке: из 1-го, 2-го, … , 32-го разрядов накопителя Л7|, затем из 1-го, 2-го, … , 32-го разрядов накопителя W2, т.е.

ГОСТ 28147-89 С. 7

тш — (а,<32),02(32),032(32), 6,(32), 62<32),632<32».

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

2.2. Расшифрование зашифрованных данных в режиме простой замены

2.2.1. Криптосхема, реализующая алгоритм расшифрования в режиме простой замены, имеет тот же вид (см.чсрт.2), что и при зашифровании. В КЗУ вводятся 256 бит того же ключа, на котором осуществлялось зашифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки по 64 бита в каждом Ввод любого блока

Тш — (0,(32),о2(32), …, 032(32), 6,(32), 62(32), …, 632(32))

в накопители Л’, и N2 производятся так, что значение дj(32) вводится в 1-й разряд /V,, значение о2(32) вводится во 2-й разряд /V, и т.д., значение a32(32) вводится в 32-й разряд /V,; значение 6,(32) вводится в 1-й разряд N2 и т.д., значение 632(32) вводится в 32-й разряд N2.

2.2.2.    Расшифрование осуществляется по тому же алгоритму, что и зашифрование открытых данных, с тем изменением, что заполнения накопителей Xq, Ху … , Xj считываются из КЗУ в циклах расшифрования в следующем порядке:

ад, ад3,ад,ад, ад,,ад,ад,ад0,

ад6,ад4,ад2,ад, ад,ад,ад2,ад.

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

Г д (32 -/) = (д (32 — / + 1) ШЛГ,.,) *ЛФ6(32-/ + 1) b (32 — /) = д (32 — / + 1) при ,/=1+8;

I о(32- /) = (а(32-/М)ШДГ(32_/)(тод8))КЛФЬ(32./М) |6(32-/) = д (32 — / + 1)

при /= 9 + 31;

®(0) — д(1)

Ь(0) = (а (1) ШДГо) ОФй(1)

При J = 32.

2.2.4. Полученные после 32 циклов работы заполнения накопителей W, и N2 составляют блок открытых данных.

То = (fli(O), а2(0), … , Аз2(0)» 6,(0), 62(0), … , 632(0)), соответствующий блоку зашифрованных данных, при этом значение о,(0) блока 7о соответствует содержимому 1-го разряда yV,, значение 02(0) соот-

С. 8 ГОСТ 28147-89

ветствует содержимому 2-го разряда N и т.д., значение Дз2(0) соответствует содержимому 32-го разряда N; значение 6j(0) соответствует содержимому 1-го разряда значение ^(0) соответствует содержимому 2-го разряда N2 и т.д., значение £зг(0) соответствует содержимому 32-го разряда N2-

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

2.3.    Алгоритм зашифрования в режиме простой замены 64-битового блока Г0 обозначается через Ау т.е.

А (Т0) = А (а (0), Ь (0)) = (а (32), Ь (32)) = Тш .

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

3. РЕЖИМ ГАММИРОВАНИЯ

3.1.    Зашифрование открытых данных в режиме гаммирования

3.1.1.    Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования, имеет вид, указанный на черт.З.

Открытые данные, разбитые на 64-раэрядиые блоки Т} 7},2)…, 7})м“,,1 7[)М), зашифровываются в режиме гаммирования путем поразрядного суммирования по модулю 2 в сумматоре СЛ/5 с гаммой шифра Гш, которая вырабатывается блоками по 64 бита, т е.

Г _/Л1) Я2)    Лм-1)    ЛМ)

‘ill V1 ш э * ш * • • • » ‘ Ш » ‘ * * * ‘ 111 /»

где М — определяется объемом шифруемых данных.

Tjj) — У-й 64-разрядный блок, /« число двоичных разрядов в блоке 7J)M) может быть меньше 64, при этом неиспользованная для зашифрования часть гаммы шифра из блока Г^] отбрасывастся.

3.1.2.    В КЗУ вводятся 256 бит ключа. В накопители iVj, N2 вводится 64-разрядная двоичная последовательность (синхропосылка) S = (5*1, S2, … , 5^4), являющаяся исходным заполнением этих накопителей для последующей выработки Мблоков гаммы шифра. Синхропосылка вводится в jV| и Л^так, что значение 5[ вводится в 1-й разряд УУ}, значение S2 вводится во 2-й разряд N и т.д., значение ^вводится в 32-й разряд 7V|; значение S33 вводится в 1-й разряд N2, значение 4S34 вводится во 2-й разряд N2 и т.д., значение вводится в 32-й разряд N2.

3.1.3.    Исходное заполнение накопителей /Vj и N2 (синхропосылка .5) зашифровывается в режиме простой замены в соответствии с