ГОСУДАРСТВЕННЫЙ СТАНДАРТ
СОЮЗА ССР
СИСТЕМЫ ОБРАБОТКИ
ИНФОРМАЦИИ.
ЗАЩИТА КРИПТОГРАФИЧЕСКАЯ
АЛГОРИТМ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ
ГОСТ 28147—89
Издание официальное
ИПК ИЗДАТЕЛЬСТВО СТАНДАРТОВ Москва
СОДЕРЖАН И Е
Структурная схема алгоритма криптографического преобразования 1
Режим простой замены 4
Режим гаммирования 8
Режим гаммирования с обратной связью 11
Режим выработки имитовставки 14
Приложение 1. Термины, применяемые в настоящем стандарте, и их определения 16
Приложение 2. Значения констант Cl, С2 18
Приложение 3. Схемы программной реализации алгоритма криптографического преобразования 19
Приложение 4. Правила суммирования по модулю 232 и по модулю (232— 1) 25ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР
С
ГОСТ
28147-89
Алгоритм криптографического преобразования
ОКП 40 4000
Дата введения 01.07.90
Настоящий стандарт устанавливает единый алгоритм криптографического преобразования для систем обработки информации в сетях электронных вычислительных машин (ЭВМ), отдельных вычислительных комплексах и ЭВМ, который определяет правила шифрования данных и выработки имитовставки.
Алгоритм криптографического преобразования предназначен для аппаратной или программной реализации, удовлетворяет криптографическим требованиям и по своим возможностям не накладывает ограничений на степень секретности защищаемой информации.
Стандарт обязателен для организаций, предприятий и учреждений, применяющих криптографическую защиту данных, хранимых и передаваемых в сетях ЭВМ, в отдельных вычислительных комплексах или в ЭВМ.
Термины, применяемые в настоящем стандарте, и их определения приведены в приложении 1.
СТРУКТУРНАЯ СХЕМА АЛГОРИТМА КРИПТОГРАФИЧЕСКОГО
ПРЕОБРАЗОВАНИЯ
Структурная схема алгоритма криптографического преобразования (криптосхема) содержит (см.черт. 1):
ключевое запоминающее устройство (КЗУ) на 256 бит, состоящее из восьми 32-разрядных накопителей (Хо, Xt, Х2, Х2Х4, Х5, Х6, Х7);
четыре 32-разрядных накопителя (tV|, N2, N3, TV4);
П
Издание официальное
ерепечатка воспрещена© Издательство стандартов, 1989 © И ПК. Издательство стандартов, 1996два 32-разрядных накопителя (N5, Л^,) с записанными в них постоянными заполнениями Су, С;
два 32-разрядных сумматора по модулю 232 (СЛ/j, СЛ/3);
32-разрядный сумматор поразрядного суммирования по модулю 2 (СЛ/2);
32-разрядный сумматор по модулю (2J2 — 1) (СЛ/4);
сумматор по модулю 2(СЛ/5), ограничение на разрядность сумматора СЛ/5 не накладывается;
блок подстановки (Л);
регистр циклического сдвига на одиннадцать шагов в сторону старшего разряда (/?).
Блок подстановки К"состоит из восьми узлов замены К{, Ку, Ку, К4, К5, К(,, Ку, с памятью на 64 бита каждый. Поступающий на блок подстановки 32-разрядный вектор разбивается на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в 4-разрядный вектор соответствующим узлом замены, представляющим собой таблицу из шестнадцати строк, содержащих по четыре бита заполнения в строке. Входной вектор определяет адрес строки в таблице, заполнение данной строки является выходным вектором. Затем 4-разрядные выходные векторы последовательно объединяются в 32-разрядный вектор.
При сложении и циклическом сдвиге двоичных векторов старшими разрядами считаются разряды накопителей с большими номерами.
При записи ключа (И^, ^25б)’ <7 = 1-^256, в
КЗУ значение вводится в 1-й разряд накопителя Xq, значение вводится во 2-й разряд накопителя Х$, ... , значение ИЗ2 вводится в 32-й разряд накопителя Xq; значение И'зз вводится в 1-й разряд накопителя Х, значение вводится во 2-й разряд накопителя Х, ... , значение вводится в 32-й разряд накопителя Х^ значение Иб5 вводится в 1-й разряд накопителя Ху и т.д., значение вводится в 32-й разряд накопителя Ху.
При перезаписи информации содержимое р-го разряда одного накопителя (сумматора) переписывается в p-й разряд другого накопителя (сумматора).
Значения постоянных заполнений С], С2 ( констант) накопителей Nq, W5 приведены в приложении 2.
Ключи, определяющие заполнения КЗУ и таблиц блока подстановки К, являются секретными элементами и поставляются в установленном порядке.
Черт. 1
Заполнение таблиц блока подстановки К является долговременным ключевым элементом, общим для сети ЭВМ.
Организация различных видов связи достигается построением соответствующей ключевой системы. При этом может быть использована возможность выработки ключей (заполнений К.ЗУ) в режиме простой замены и зашифрования их в режиме простой замены с обеспечением имитозащиты для передачи по каналам связи или хранения в памяти ЭВМ.
В криптосхеме предусмотрены четыре вида работы:
зашифрование (расшифрование) данных в режиме простой замены; зашифрование (расшифрование) данных в режиме гаммирования;
зашифрование (расшифрование) данных в режиме гаммирования с обратной связью;
режим выработки имитовставки.
Схемы программной реализации алгоритма криптографического преобразования приведены в приложении 3.
РЕЖИМ ПРОСТОЙ ЗАМЕНЫ
Зашифрование открытых данных в режиме простой замены
Криптосхема, реализующая алгоритм зашифрования в режиме простой замены, должна иметь вид, указанный на черт.2.
Открытые данные, подлежащие зашифрованию, разбивают на блоки по 64 бита в каждом. Ввод любого блока То = (а1 (0), а2(0), ..., а3!(0), а32(0), д](0), Л>2(0), ... , £32(0)) двоичной информации в накопители и А2 производится так, что значение а^О) вводится в 1-й разряд N, значение а2(0) вводится во 2-й разряд и т.д., значение а32(0) вводится в 32-й разряд N; значение £](0) вводится в 1-й разряд Л/2, значение />2(0) вводится во 2-й разряд /V2 и т.д., значение />32(0) вводится в 32-й разряд А2. В результате получают состояние (а32(О), а31(0), ... , а2(0), Д|(0)) накопителя и состояние (/>32(0), />31 (0), ... , Z>i(0)) накопителя JV2.
В КЗУ вводятся 256 бит ключа. Содержимое восьми 32-раз- рядных накопителей Хо, Х, ... , имеет вид:
^ = (^2,^,, ...
= (wz64, И4з, ... ,^з4,^зз)
Л = (^256, и/255,..., ц/226, РГ225)
Алгоритм зашифрования 64-разрядного блока открытых данных в режиме простой замены состоит из 32 циклов.
В первом цикле начальное заполнение накопителя N суммируется по модулю 232 в сумматоре СМ с заполнением накопителя Хо при этом заполнение накопителя N сохраняется.
Результат суммирования преобразуется в блоке подстановки К и полученный вектор поступает на вход регистра Л, где циклически сдвигается на одиннадцать шагов в сторону старших разрядов. Результат сдвига суммируется поразрядно по модулю 2 в сумматоре СЛ/2 с 32-разрядным заполнением накопителя А2. Полученный в СЛ/2 результат записывается в N, при этом старое заполнение N переписывается в А2. Первый цикл заканчивается.
Последующие циклы осуществляются аналогично, при этом во 2-м цикле из КЗУ считывается заполнение Xt, в 3-м цикле из КЗУ считывается заполнение Ху и т.д., в 8-м цикле из КЗУ считывается заполнение Ху. В циклах с 9-го по 16-й, а также в циклах с 17-го по 24-й заполнения из КЗУ считываются в том же порядке:
ад, ад,ад,ад7.
В последних восьми циклах с 25-го по 32-й порядок считывания заполнений КЗУ обратный:
ад6,ад4,ад2,ад0.
Таким образом, при зашифровании в 32 циклах осуществляется следующий порядок выбора заполнений накопителей:
ад, ад,ад,ад, ад, ад,ад5,ад,
ад, ад,ад,ад, ад6,ад4,ад2,ад0.
Черт. 2
В 32 цикле результат из сумматора СМ2 вводится в накопитель N2, а в накопителе сохраняется старое заполнение.
Полученные после 32-го цикла зашифрования заполнения накопителей N и Л/2 являются блоком зашифрованных данных, соответствующим блоку открытых данных.
Уравнения зашифрования в режиме простой замены имеют вид:
*(/) = (а(/- О {mod8))^®fc0- О
b(j) = a(j- 1)
при j ~ 1 -24;
J a(j) = (a(j~ 1) Ш XO2_n)KR®b(j - 1) ]_*(/) =а и - і)
при j = 25 -і- 3 1;
а (32) =а (31)
b (32) = (д(31)Ш Xq)KR® b (Зі)
при j = 32,
где а(0) = (<232(0), а31(0), ... , Д](0)) — начальное заполнение Wj перед первым циклом зашифрования;
6(0) = (632(0), 63](0), ... , 6](0)) — начальное заполнение N2 перед первым циклом зашифрования;
a(j) = (032(7), 031(7), , 0j (/')) —заполнение Nl после у-го цикла
зашифрования;
b(j) — (632(7), ^зі(/)> , b(j)) — заполнение N2 после у-го цикла
зашифрования, у = 132.
Знак ® означает поразрядное суммирование 32-разрядных векторов по модулю 2.
Знак И означает суммирование 32-разрядных векторов по модулю 232. Правила суммирования по модулю 232 приведены в приложении 4;
R — операция циклического сдвига на одиннадцать шагов в сторону старших разрядов, т.е.
^(/’32,г31,г30>/,29,г28,г27,г26,г25,г24,/'23, г22,г21,г20>
=(r2l,r20> , r2,rl>/32,,'31,/30,/29,,'28,/'27,/26,,25,r24,r23>/22)-
64-разрядный блок зашифрованных данных 7Ш выводится из накопителей N, N2 в следующем порядке: из 1-го, 2-го, ... , 32-го разрядов накопителя Nt, затем из 1-го, 2-го, ... , 32-го разрядов накопителя т е
Тш = (а,(32),а2(32), «З2(32), £,(32), £2(32), 632(32)).
Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично.
Расшифрование зашифрованных данных в режиме простой замены
Криптосхема, реализующая алгоритм расшифрования в режиме простой замены, имеет тот же вид (см.черт.2), что и при зашифровании. В КЗУ вводятся 256 бит того же ключа, на котором осуществлялось зашифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки по 64 бита в каждом. Ввод любого блока
Тш= (а,(32),«2(32), ..., «З2(32), 6,(32), £2(32), ..., 632(32))
в накопители Л', и У2 производятся так, что значение а,(32) вводится в 1-й разряд 7V,, значение ау(32) вводится во 2-й разряд У, и т.д., значение «32(32) вводится в 32-й разряд У,; значение £,(32) вводится в 1-й разряд У2и Т-Д-, значение £32(32) вводится в 32-й разряд У2.
Расшифрование осуществляется по тому же алгоритму, что и зашифрование открытых данных, с тем изменением, что заполнения накопителей Xq, Л|, ... , Ху считываются из КЗУ в циклах расшифрования в следующем порядке:
ад, х2,х3,х4,х5,х6,х7, ад,ад,ад,ад,
ад,ад,ад,ад, х7,х6,х5,х4,х3,х2,х1,х0.
Уравнения расшифрования имеют вид:
Г а(32—/) = (а(32-/ + 1) Ш ,) KR Ф 6(32-/ + 1)
I 6(32—/) =д(32 -/ + 1)
при j = 1 + 8;
. «(32- /) = («(32 - / + 1) fflX(32_/)(mod8))^®6(32-/ + 1)
6(32 —/) =в(32 —/+1)
при /=9-5-31;
а(0)=а(1)
6(0) = (а (І)ШЛо)КЛФб(І)
при / = 32.
Полученные после 32 циклов работы заполнения накопителей N[ и Ny составляют блок открытых данных.
Tq - (°1(0), О2(0), — , «32(0), £1(0), £2(0), ... , £зг(О)), соответствующий блоку зашифрованных данных, при этом значение «1(0) блока То соответствует содержимому 1-го разряда N, значение о2(0) соответствует содержимому 2-го разряда N и т.д., значение а3г(0) соответствует содержимому 32-го разряда Л/]; значение Ь(0) соответствует содержимому 1-го разряда N2, значение />3(0) соответствует содержимому 2-го разряда Л2 и т.д., значение />33(0) соответствует содержимому 32-го разряда N2.
Аналогично расшифровываются остальные блоки зашифрованных данных.
Алгоритм зашифрования в режиме простой замены 64-битового блока То обозначается через А, т.е.
А (То) = А (а (0), b (0)) = (а (32), b (32)) = Тт.
2А. Режим простой замены допускается использовать для зашифрования (расшифрования) данных только в случаях, приведенных в п.1.7.
РЕЖИМ ГАММИРОВАНИЯ
Зашифрование открытых данных в режиме гаммирования
Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования, имеет вид, указанный на черт.З.
Открытые данные, разбитые на 64-разрядные блоки 7у>, 7р> ..., 7]М)( зашифровываются в режиме гаммирования путем поразрядного суммирования по модулю 2 в сумматоре СЛ/5 с гаммой шифра Гш, которая вырабатывается блоками по 64 бита, т.е.