Государственный стандарт СССР ГОСТ 28147-89
"Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования"
(утв. постановлением Государственного комитета СССР по стандартам от 2 июня 1989 г. N 1409)
Дата введения - 1 июля 1990 г.
Введен впервые
Настоящий стандарт устанавливает единый алгоритм криптографического преобразования для систем обработки информации в сетях электронных вычислительных машин (ЭВМ), отдельных вычислительных комплексах и ЭВМ, который определяет правила шифрования данных и выработки имитовставки.
Алгоритм криптографического преобразования предназначен для аппаратной или программной реализации, удовлетворяет криптографическим требованиям и по своим возможностям не накладывает ограничений на степень секретности защищаемой информации.
Стандарт обязателен для организаций, предприятий и учреждений, применяющих криптографическую защиту данных, хранимых и передаваемых в сетях ЭВМ, в отдельных вычислительных комплексах или в ЭВМ.
Термины, применяемые в настоящем стандарте, и их определения приведены в приложении 1.
1. Структурная схема алгоритма криптографического преобразования
1.1. Структурная схема алгоритма криптографического преобразования (криптосхема) содержит (см. черт. 1):
ключевое запоминающее устройство (КЗУ) на 256 бит, состоящее из восьми 32-разрядных накопителей (,
,
,
,
,
,
);
четыре 32-разрядных накопителя ();
два 32-разрядных накопителя ( ,
) с записанными в них постоянными заполнениями
,
два 32-разрядных сумматора по модулю (
,
);
32-разрядный сумматор поразрядного суммирования по модулю 2 ();
32-разрядный сумматор по модулю () (
);
сумматор по модулю , ограничение на разрядность сумматора
не накладывается;
блок подстановки (К);
регистр циклического сдвига на одиннадцать шагов в сторону старшего разряда (R)
1.2. Блок подстановки К состоит из восьми узлов замены с памятью на 64 бита каждый. Поступающий на блок подстановки 32-разрядный вектор разбивается на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в 4-разрядный вектор соответствующим узлом замены, представляющим собой таблицу из шестнадцати строк, содержащих по четыре бита заполнения в строке. Входной вектор определяет адрес строки в таблице, заполнение данной строки является выходным вектором. Затем 4-разрядные выходные векторы последовательно объединяются в 32-разрядный вектор.
1.3. При сложении и циклическом сдвиге двоичных векторов старшими разрядами считаются разряды накопителей с большими номерами.
1.4. При записи ключа (...,
)
,
, в КЗУ значение
вводится в 1-й разряд накопителя
, значение
вводится во 2-й разряд накопителя
, ... , значение
вводится в 32-й разряд накопителя
, значение
вводится в 1-й разряд накопителя
, значение
вводится во 2-й разряд накопителя
, ... , значение
вводится в 32-й разряд накопителя
значение
вводится в 1-й разряд накопителя
и т.д., значение
вводится в 32-й разряд накопителя
.
1.5. При перезаписи информации содержимое р-го разряда одного накопителя (сумматора) переписывается в р-й разряд другого накопителя (сумматора).
1.6. Значения постоянных заполнений ,
(констант) накопителей
,
приведены в приложении 2.
1.7. Ключи, определяющие заполнения КЗУ и таблиц блока подстановки К, являются секретными элементами и поставляются в установленном порядке.
"Чертеж 1"
Заполнение таблиц блока подстановки К является долговременным ключевым элементом, общим для сети ЭВМ.
Организация различных видов связи достигается построением соответствующей ключевой системы. При этом может быть использована возможность выработки ключей (заполнений КЗУ) в режиме простой замены и зашифрования их в режиме простой замены с обеспечением имитозащиты для передачи по каналам связи или хранения в памяти ЭВМ.
1.8. В криптосхеме предусмотрены четыре вида работы:
зашифрование (расшифрование) данных в режиме простой замены;
зашифрование (расшифрование) данных в режиме гаммирования;
зашифрование (расшифрование) данных в режиме гаммирования с обратной связью;
режим выработки имитовставки.
Схемы программной реализации алгоритма криптографического преобразования приведены в приложении 3.
2. Режим простой замены
2.1. Зашифрование открытых данных в режиме простой замены
2.1.1. Криптосхема, реализующая алгоритм зашифрования в режиме простой замены, должна иметь вид, указанный на черт. 2.
Открытые данные, подлежащие зашифрованию, разбирают на блоки по 64 бита в каждом. Ввод любого блока двоичной информации в накопители
и
производится так, что значение
вводится в 1-й разряд
, значение
вводится во 2-й разряд
и т.д., значение
вводится в 32-й разряд
; значение
вводится в 3-й разряд
, значение
вводится во 2-1 разряд
и т.д., значение
вводится в 32-й разряд
В результате получают состояние
накопителя
и состояние
накопителя
.
2.1.2. В КЗУ вводятся 256 бит ключа. Содержимое восьми 32-разрядных накопителей ,
,...,
имеет вид;
2.1.3. Алгоритм зашифрования 64-разрядного блока открытых данных в режиме простой замены состоит из 32 циклов.
В первом цикле начальное заполнение накопителя суммируется по модулю
в сумматоре
с заполнением накопителя
при этом заполнение накопителя
сохраняется.
Результат суммирования преобразуется в блоке подстановки и полученный вектор поступает на вход регистра R, где циклически сдвигается на одиннадцать шагов в сторону старших разрядов. Результат сдвига суммируется поразрядно по модулю 2 в сумматоре
с 32-разрядным заполнением накопителя
. Полученный в
результат записывается в
при этом старое заполнение
переписывается в
. Первый цикл заканчивается.
Последующие циклы осуществляются аналогично, при этом во 2-м цикле из КЗУ считывается заполнение , в 3-м цикле из КЗУ считывается заполнение
и т.д., в 8-м цикле из КЗУ считывается заполнение
. В циклах с 9-го по 16-й, а также в циклах с 17-го по 24-й заполнения из КЗУ считываются в том же порядке;
.
В последних восьми циклах с 25-го по 32-й порядок считывания заполнений КЗУ обратный:
.
Таким образом, при зашифровании в 32 циклах осуществляется следующий порядок выбора заполнений накопителей:
|
|
|
|
|
|
"Чертеж 2"
В 32 цикле результат из сумматора вводится в накопитель
, а в накопителе
сохраняется старое заполнение.
Полученные после 32-го цикла зашифрования заполнения накопителей и
являются блоком зашифрованных данных, соответствующим блоку открытых данных.
2.1.4. Уравнения зашифрования в режиме простой замены имеют вид:
при j = 32,
где - начальное заполнение
перед первым циклом зашифрования;
- начальное заполнение
перед первым циклом зашифрования;
- заполнение
после j-го цикла зашифрования;
- заполнение
после j-го цикла зашифрования,
.
Знак
означает поразрядное суммирование 32-разрядных векторов по модулю 2.
Знак
означает суммирование 32-разрядных векторов по модулю . Правила суммирования по модулю
приведены в приложении 4;
R - операция циклического сдвига на одиннадцать шагов в сторону старших разрядов, т.е.
.
2.1.5. 64-разрядный блок зашифрованных данных выводится из накопителей
,
следующем порядке: из 1-го, 2-го,..., 32-го разрядов накопителя
,
в следующем порядке: из 1-го, 2-го,..., 32-го разрядов накопителя
,затем из 1-го, 2-го, ..., 32-го разрядов накопителя
, т.е.
Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично.
2.2. Расшифрование зашифрованных данных в режиме простой замены
2.2.1. Криптосхема, реализующая алгоритм расшифрования в режиме простой замены, имеет тот же вид (см. черт. 2), что и при зашифровании. В КЗУ вводятся 256 бит того же ключа, на котором осуществлялось зашифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки по 64 бита в каждом. Ввод любого блока
в накопители и
производятся так, что значение
вводится в 1-й разряд
, значение
вводится во 2-й разряд
и т.д., значение
вводится в 32-й разряд
; значение
вводится в 1-й разряд
и т.д., значение
вводится в 32-й разряд
.
2.2.2. Расшифрование осуществляется по тому же алгоритму, что и зашифрование открытых данных, с тем изменением, что заполнения накопителей ,
, ...
, считываются из КЗУ в циклах расшифрования в следующем порядке:
|
|
|
|
|
|
2.2.3. Уравнения расшифрования имеют вид:
2.2.4. Полученные после 32 циклов работы заполнения накопителей и
составляют блок открытых данных.
, соответствующий блоку зашифрованных данных, при этом значение
блока
соответствует содержимому 1-го разряда
, значение
соответствует содержимому 2-го разряда
и т.д., значение
соответствует содержимому 32-го разряда
значение
соответствует содержимому 2-го разряда
и т.д., значение
соответствует содержимому 32-го разряда
.
Аналогично расшифровываются остальные блоки зашифрованных данных.
2.3. Алгоритм зашифрования в режиме простой замены 64-битового блока обозначается через А, т.е.
.
2.4. Режим простой замены допускается использовать для зашифрования (расшифрования) данных только в случаях, приведенных в п. 1.7.
3. Режим гаммирования
3.1. Зашифрование открытых данных, в режиме гаммирования
3.1.1. Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования, имеет вид, указанный на черт.3.
Открытые данные, разбитые на 64-разрядные блоки ,
...,
,
, зашифровываются в режиме гаммирования путем поразрядного суммирования по модулю 2 в сумматоре
с гаммой шифра
, которая вырабатывается блоками по 64 бита, т.е.
,
где М - определяется объемом шифруемых данных.
- i-й 64-разрядный блок,
, число двоичных разрядов в блоке
может быть меньше 64, при этом неиспользованная для зашифрования часть гаммы шифра из блока
отбрасывается.
3.1.2. В КЗУ вводятся 256 бит ключа. В накопители ,
вводится 64-разрядная двоичная последовательность (синхропосылка)
, являющаяся исходным заполнением этих накопителей для последующей выработки М блоков гаммы шифра. Синхропосылка вводится в
и
и так, что значение
вводится в 1-й разряд
, значение
вводится во 2-й разряд
и т.д., значение
вводится в 32-й разряд
; значение
вводится в 1-й разряд
, значение
вводится во 2-й разряд
и т.д., значение
вводится в 32-й разряд
.
3.1.3. Исходное заполнение накопителей и
(синхропосылка S) зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Результат зашифрования
,
) переписывается в 32-разрядные накопители
и
, так, что заполнение
переписывается в
, а заполнение
переписывается в
.
3.1.4. Заполнение накопителя суммируется по модулю (
) в сумматоре
с 32-разрядной константой
из накопителя
, результат записывается в
. Правила суммирования по модулю (
) приведены в приложении 4. Заполнение накопителя
суммируется по модулю
в сумматоре
в 32-разрядной константой
из накопителя
, результат записывается в
.
"Чертеж 3"
Заполнение переписывается в
, а заполнение
переписывается в
, при этом заполнение
,
сохраняется.
Заполнение и
зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Полученное в результате зашифрования заполнение
,
образует первый 64-разрядный блок гаммы шифра
, который суммируется поразрядно по модулю 2 в сумматоре
с первым 64-разрядным блоком открытых данных
.
В результате суммирования получается 64-разрядный блок зашифрованных данных
.
Значение блока
является результатом суммирования по модулю 2 в
значения
из блока
со значением 1-го разряда
, значение
блока
является результатом суммирования по модулю 2 в
значения
из блока
со значением 2-го разряда
и т.д., значение
блока
является результатом суммирования по модулю 2 в
значения из
блока
со значением 32-го разряда
.
3.1.5. Для получения следующего 64-разрядного блока гаммы шифра заполнение
суммируется по модулю (
) в сумматоре
с константой
из
, заполнение
суммируется по модулю
в сумматоре
с константой
из
. Новое заполнение
переписывается в
, а новое заполнение
переписывается в
, при этом заполнение
и
сохраняется.
Заполнение и
зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Полученное в результате зашифрования заполнение
,
образует второй 64-разрядный блок гаммы шифра
, который суммируется поразрядно по модулю 2 в сумматоре
со вторым блоком открытых данных
. Аналогично вырабатываются блоки гаммы шифра
,
, ...,
и зашифровываются блоки открытых данных
,
,..,
. Если длина последнего М-го блока открытых данных
меньше 64 бит, то из последнего М-го блока гаммы шифра
для зашифрования используется только соответствующее число разрядов гаммы шифра, остальные разряды отбрасываются.
3.1.6. В канал связи или память ЭВМ передаются синхропосылка S и блоки зашифрованных данных ,
,...,
.
3.1.7. Уравнение зашифрования имеет вид:
.
3.2. Расшифрование зашифрованных данных в режиме гаммирования
3.2.1. При расшифровании криптосхема имеет тот же вид, что и при зашифровании (см. черт. 3). В КЗУ вводятся 256 бит ключа, с помощью которого осуществлялось зашифрование данных ,
,...,
. Синхропосылка S вводится в накопители
и
и аналогично пп.3.1.2 - 3.1.5 осуществляется процесс выработки М блоков гаммы шифра
,
,..,
. Блоки зашифрованных данных
,
,...,
суммируются поразрядно по модулю 2 в сумматоре
с блоками гаммы шифра, в результате получаются блоки открытых данных
,
,...,
, при этом
может содержать меньше 64 разрядов.
3.2.2. Уравнение расшифрования имеет вид:
4. Режим гаммирования с обратной связью
4.1. Зашифрование открытых данных в режиме гаммирования с обратной связью
4.1.1. Крипстосхема, реализующая алгоритм зашифрования в режиме гаммирования с обратной связью, имеет вид, указанный на черт. 4.
Открытые данные, разбитые на 64-разрядные блоки ,...,
, зашифровываются в режиме гаммирования с обратной связью путем поразрядного суммирования по модулю 2 в сумматоре
с гаммой шифра
, которая вырабатывается блоками по 64 бита, т.е.
, где М определяется объемом открытых данных,
- i-й 64-разрядный блок,
. Число двоичных разрядов в блоке
может быть меньше 64.
"Чертеж 4"
4.1.2. В КЗУ вводятся 256 бит ключа. Синхропосылка из 64 бит вводится в
и
аналогично п. 3.1.2.
4.1.3. Исходное заполнение и
зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Полученное в результате зашифрования заполнения
и
образует первый 64-разрядный блок гаммы шифра
, который суммируется поразрядно по модулю 2 в сумматоре
с первым 64-разрядным блоком открытых данных
.
В результате получается 64-разрядный блок зашифрованных данных
.
4.1.4. Блок зашифрованных данных одновременно является также исходным состоянием
,
для выработки второго блока гаммы шифра
и по обратной связи записывается в указанные накопители. При этом значение
вводится в 1-й раздел
, значение
вводится во 2-й разряд N1 и т.д., значение
вводится в 32-й разряд N1; значение
вводится в 1-й разряд N2, значение
вводится во 2-й разряд N2 и т.д., значение
вводится в 32-й разряд N 2.
Заполнение ,
зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Полученное в результате зашифрования заполнение
,
образует второй 64-разрядный блок гаммы шифра
, который суммируется поразрядно по модулю 2 в сумматоре
со вторым блоком открытых данных
.
Выработка последующих блоков гаммы шифра и зашифрование соответствующих блоков открытых данных
производится аналогично. Если длина последнего М-го блока открытых данных
меньше 64 разрядов, то из
используется только соответствующее число разрядов гаммы шифра, остальные разряды отбрасываются.
4.1.5. Уравнения зашифрования в режиме гаммирования с обратной связью имеют вид:
4.1.6. В канал связи или память ЭВМ передаются синхропосылка S и блоки зашифрованных данных ,
,...,
.
4.2. Расшифрование зашифрованных данных в режиме гаммирования с обратной связью
4.2.1. При расшифровании криптосхема имеет тот же вид (см. черт. 4), что и при зашифровании.
В КЗУ вводятся 256 бит того же ключа, на котором осуществлялось зашифрование ,
,... ,
. Синхропосылка S вводится в
и
аналогично п. 3.1.2.
4.2.2. Исходное заполнение ,
(синхропосылка S) зашифровывается в режиме простой замены согласно подразделу 2.1. Полученное в результате зашифрования заполнение
,
образует первый блок гаммы шифра
= A(S), который суммируется поразрядно по модулю 2 в сумматоре
с блоком зашифрованных данных
. В результате получается первый блок открытых данных.
4.2.3. Блок зашифрованных данных является исходным заполнением
,
для выработки второго блока гаммы шифра
. Блок
записывается в
,
в соответствии с требованиями п. 4.1.4. Полученное заполнение
,
зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1, полученный в результате блок
суммируется поразрядно по модулю 2 в сумматоре
со вторым блоком зашифрованных данных
. В результате получается блок открытых данных
.
Аналогично в ,
последовательно записываются блоки зашифрованных данных
,
, ... ,
, из которых в режиме простой замены вырабатываются блоки гаммы шифра
,
, ... ,
. Блоки гаммы шифра суммируются поразрядно по модулю 2 в сумматоре
с блоками зашифрованных данных
,
, ...
, в результате получаются блоки открытых данных
,
, .. ,
при этом длина последнего блока открытых данных
может содержать меньше 64 разрядов.
4.2.4. Уравнения расшифрования в режиме гаммирования с обратной связью имеют вид:
5. Режим выработки имитовставки
5.1. Для обеспечения имитозащиты открытых данных, состоящих из М 64-разрядных блоков ,
,,,, ,
,
, вырабатывается дополнительный блок из
бит (имитовставка
). Процесс выработки имитовставки единообразен для всех режимов шифрования.
5.2. Первый блок открытых данных
записывается в накопители и
, при этом значение
, вводится в 1-й разряд
, значение
вводится во 2-й разряд
и т.д., значение
вводится в 32-й разряд
; значение
вводится в 1-й разряд
и т.д., значение
вводится в 32-й разряд
.
5.3. Заполнение и
подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены (см. подраздел 2.1). В КЗУ при этом находится тот же ключ, которым зашифровываются блоки открытых данных
,
,...,
в соответствующие блоки зашифрованных данных
,
,...,
.
Полученное после 16 циклов работы заполнение и
, имеющее вид
суммируется в
по модулю 2 со вторым блоком
.
Результат суммирования
заносится в и
и подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены.
Полученное заполнение и
суммируется по
по модулю 2 с третьим блоком
и т.д., последний блок
при необходимости дополненный до полного 64-разрядного блока нулями, суммируется в
по модулю 2 с заполнением
,
.
Результат суммирования
заносится в ,
и зашифровывается в режиме простой замены по первым 16 циклам работы алгоритма. Из полученного заполнения накопителей
и
выбирается отрезок (имитовставка) длиной
бит:
.
Имитовставка передается по каналу связи или в память ЭВМ в конце зашифрованных данных, т.е.
,
,...,
,
.
5.4. Поступившие зашифрованные данные ,
,...,
, расшифровываются, из полученных блоков открытых данных
,
,
аналогично п. 5.3 вырабатывается имитовставка
, которая затем сравнивается с имитовставкой
, полученной вместе с зашифрованными данными из канала связи или из памяти ЭВМ. В случае несовпадения имитовставок полученные блоки открытых данных
,
, ... ,
считают ложными.
Выработка имитовставки может производиться или перед зашифрованием (после расшифрования) всего сообщения, или параллельно с зашифрованием (расшифрованием) по блокам. Первые блоки открытых данных, которые участвуют в выработке имитовставки, могут содержать служебную информацию (адресную часть, отметку времени, синхропосылку и др.) и не зашифровываться.
Значение параметра (число двоичных разрядов в имитовставке) определяется действующими криптографическими требованиями, при этом учитывается, что вероятность навязывания ложных данных равна
.
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Государственный стандарт СССР ГОСТ 28147-89 "Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования" (утв. постановлением Государственного комитета СССР по стандартам от 2 июня 1989 г. N 1409)
Текст ГОСТа приводится по официальному изданию ИПК Издательство стандартов, Москва,1996 г.
Дата введения - 1 июля 1990 г.
1. Утвержден и введен в действие постановлением Государственного комитета СССР по стандартам от 2 июня 1989 г. N 1409
2. Введен впервые
3. Ссылочные нормативно-технические документы
Обозначение НТД, на который дана ссылка |
Номер пункта |
ГОСТ 17657-79 |
4. Переиздание, апрель 1996 г.
Приказом Росстандарта от 4 декабря 2018 г. N 1062-ст настоящий ГОСТ отменен в целом с 1 июня 2019 г. в связи с введением в действие межгосударственных стандартов ГОСТ 34.12-2018 и ГОСТ 34.13-2018. С 1 июня 2019 г. взамен в части раздела 2. "Режим простой замены"; раздела 3. "Режим гаммирования"; раздела 4. "Режим гаммирования с обратной связью" и раздела 5. "Режим выработки имитовставки" введен в действие ГОСТ 34.13-2018 "Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров"
Приказом Росстандарта от 4 декабря 2018 г. N 1061-ст с 1 июня 2019 г. взамен настоящего ГОСТа в части раздела 1 "Структурная схема алгоритма криптографического преобразования" введен в действие ГОСТ 34.12-2018 "Информационная технология. Криптографическая защита информации. Блочные шифры"