ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР
СИСТЕМЫ ОБРАБОТКИ ИНФОРМАЦИИ.ЗАЩИТА КРИПТОГРАФИЧЕСКАЯ
АЛГОРИТМ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ
ГОСТ 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
ГОСУДАРСТВЕННЫЙ СТАНДАРТ
СИСТЕМЫ ОБРАБОТКИ ИНФОРМАЦИИ. ЗАШИТА КРИПТОГРАФИЧЕСКАЯ
Алгоритм криптографического преобразования
ОКГ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, X\t ... , 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) зашифровывается в режиме простой замены в соответствии с