ГОСТ Стандарт

ГОСТ 28147-89

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

1 262 views

Download document

.docx format · available to registered users

Sign in and download

Document text

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

СОЮЗА ССР

СИСТЕМЫ ОБРАБОТКИ

ИНФОРМАЦИИ.

ЗАЩИТА КРИПТОГРАФИЧЕСКАЯ

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

ГОСТ 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,