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

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

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

ГОСТ 28147—89

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

ИПК ИЗДАТЕЛЬСТВО СТАНДАРТОВ Москва

СОДЕРЖАН И Е

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

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

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

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

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

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

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

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

Приложение 4. Правила суммирования по модулю 232 и по модулю (232— 1) 25ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР

С

ГОСТ
28147-89

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

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

ОКП 40 4000

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

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

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

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

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

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

    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 не накладывается;

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

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

  1. Блок подстановки К"состоит из восьми узлов замены К{, Ку, Ку, К4, К5, К(,, Ку, с памятью на 64 бита каждый. Посту­пающий на блок подстановки 32-разрядный вектор разбивается на восемь последовательно идущих 4-разрядных векторов, каж­дый из которых преобразуется в 4-разрядный вектор соответст­вующим узлом замены, представляющим собой таблицу из шест­надцати строк, содержащих по четыре бита заполнения в строке. Входной вектор определяет адрес строки в таблице, заполнение данной строки является выходным вектором. Затем 4-разрядные выходные векторы последовательно объединяются в 32-разряд­ный вектор.

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

  3. При записи ключа (И^, ^25б)’ <7 = 1-^256, в

КЗУ значение вводится в 1-й разряд накопителя Xq, значение вводится во 2-й разряд накопителя Х$, ... , значение ИЗ2 вводится в 32-й разряд накопителя Xq; значение И'зз вводится в 1-й разряд накопителя Х, значение вводится во 2-й разряд накопителя Х, ... , значение вводится в 32-й разряд накопителя Х^ значение Иб5 вводится в 1-й разряд накопителя Ху и т.д., значение вводится в 32-й разряд накопителя Ху.

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

  2. Значения постоянных заполнений С], С2 ( констант) нако­пителей Nq, W5 приведены в приложении 2.

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

Черт. 1



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

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

  1. В криптосхеме предусмотрены четыре вида работы:

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

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

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

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

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

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

      1. Криптосхема, реализующая алгоритм зашифрования в ре­жиме простой замены, должна иметь вид, указанный на черт.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.

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

^ = (^2,^,, ...

= (wz64, И4з, ... ,^з4,^зз)

Л = (^256, и/255,..., ц/226, РГ225)

  1. Алгоритм зашифрования 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 являются блоком зашифрованных данных, соответ­ствующим блоку открытых данных.

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

*(/) = (а(/- О {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)-

  1. 64-разрядный блок зашифрованных данных 7Ш выводится из накопителей N, N2 в следующем порядке: из 1-го, 2-го, ... , 32-го разрядов накопителя Nt, затем из 1-го, 2-го, ... , 32-го разрядов накопителя т е

Тш = (а,(32),а2(32), «З2(32), £,(32), £2(32), 632(32)).

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

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

    1. Криптосхема, реализующая алгоритм расшифрования в ре­жиме простой замены, имеет тот же вид (см.черт.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.

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

ад, х234567, ад,ад,ад,ад,
ад,ад,ад,ад, х76543210.

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

Г а(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.

  1. Полученные после 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.

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

  1. Алгоритм зашифрования в режиме простой замены 64-бито­вого блока То обозначается через А, т.е.

А (То) = А (а (0), b (0)) = (32), b (32)) = Тт.

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

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

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

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

Открытые данные, разбитые на 64-разрядные блоки 7у>, 7р> ..., 7]М)( зашифровываются в режиме гаммирования путем пораз­рядного суммирования по модулю 2 в сумматоре СЛ/5 с гаммой шифра Гш, которая вырабатывается блоками по 64 бита, т.е.