Государственный стандарт СССР ГОСТ 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 "Информационная технология. Криптографическая защита информации. Блочные шифры"