ГОСТ 28147-89. Государственный стандарт Союза ССР. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования
(утв. и введен в действие Постановлением Госстандарта СССР от 02.06.1989 № 1409)
Внимание
Документ утратил силу с 1 июня 2019 года в связи с изданием Приказа Росстандарта от 04.12.2018 № 1062-ст. Взамен введены в действие ГОСТ 34.12-2018 и ГОСТ 34.13-2018. Документ утратил силу с 1 июня 2019 года в части разделов 2, 3, 4, 5 в связи с изданием Приказа Росстандарта от 04.12.2018 № 1062-ст. Взамен введен в действие ГОСТ 34.13-2018. Документ утратил силу с 1 июня 2019 года в части раздела 1 в связи с изданием Приказа Росстандарта от 04.12.2018 № 1061-ст. Взамен введен в действие ГОСТ 34.12-2018. С 1 июля 2003 года до вступления в силу технических регламентов акты федеральных органов исполнительной власти в сфере технического регулирования носят рекомендательный характер и подлежат обязательному исполнению только в части, соответствующей целям, указанным в пункте 1 статьи 46 Федерального закона от 27.12.2002 № 184-ФЗ. Документ введен в действие с 1 июля 1990 года.
ИСТОРИЯ ИЗМЕНЕНИЙ НОРМАТИВНО-ТЕХНИЧЕСКИХ АКТОВ
flowchart LR n0["ГОСТ 28147-89"]:::rst click n0 "https://bukva.ai/docs/gost-28147-89" "ГОСТ 28147-89. Государственный стандарт Союза ССР. Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования (утв. и введен в действие Пост" n1["ГОСТ 34.12-2018"]:::doc click n1 "https://bukva.ai/docs/standart-gost-34-12-2018" "ГОСТ 34.12-2018. Межгосударственный стандарт. Информационная технология. Криптографическая защита информации. Блочные шифры (введен в действие Приказом Росстандарта от 04.12.2018 N" n2["ГОСТ 34.13-2018"]:::doc click n2 "https://bukva.ai/docs/standart-gost-34-13-2018" "ГОСТ 34.13-2018. Межгосударственный стандарт. Информационная технология. Криптографическая защита информации. Режимы работы блочных шифров (введен в действие Приказом Росстандарта " n0 --> n1 n0 --> n2 classDef rst fill:#FFEBEB,stroke:#8B0000,color:#000; classDef doc fill:#EBFFEB,stroke:#006400,color:#000; classDef notEnt fill:#FFFFEB,stroke:#FF8C00,color:#000;
от 2 июня 1989 г. № 1409
ГОСУДАРСТВЕННЫЙ СТАНДАРТ СОЮЗА ССР
СИСТЕМЫ ОБРАБОТКИ ИНФОРМАЦИИ. ЗАЩИТА КРИПТОГРАФИЧЕСКАЯ
АЛГОРИТМ КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ
ИНФОРМАЦИОННЫЕ ДАННЫЕ
1. Утвержден и введен в действие Постановлением Государственного комитета СССР по стандартам от 02.06.1989 № 1409.
| Обозначение НТД, на который дана ссылка | Номер пункта |
|---|---|
| ГОСТ 15971-90 | Приложение 1 |
| ГОСТ 17657-79 | Приложение 1 |
| ГОСТ 19781-90 | Приложение 1 |
4. Переиздание, апрель 1996 г.
Настоящий стандарт устанавливает единый алгоритм криптографического преобразования для систем обработки информации в сетях электронных вычислительных машин (ЭВМ), отдельных вычислительных комплексах и ЭВМ, который определяет правила шифрования данных и выработки имитовставки.
Алгоритм криптографического преобразования предназначен для аппаратной или программной реализации, удовлетворяет криптографическим требованиям и по своим возможностям не накладывает ограничений на степень секретности защищаемой информации.
Стандарт обязателен для организаций, предприятий и учреждений, применяющих криптографическую защиту данных, хранимых и передаваемых в сетях ЭВМ, в отдельных вычислительных комплексах или в ЭВМ.
Термины, применяемые в настоящем стандарте, и их определения приведены в Приложении 1.
1. СТРУКТУРНАЯ СХЕМА АЛГОРИТМА КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ
1.1 Структурная схема алгоритма криптографического преобразования (криптосхема) содержит (см. черт. 1):
ключевое запоминающее устройство (КЗУ) на 256 бит, состоящее из восьми 32-разрядных накопителей ( X_{0} , X_{1} , X_{2} , X_{3} , X_{4} , X_{5} , X_{6} , X_{7} );
четыре 32-разрядных накопителя ( N_{1} , N_{2} , N_{3} , N_{4} );
два 32-разрядных накопителя ( N_{5} , N_{6} ) с записанными в них постоянными заполнениями C_{2} , C_{1} ;
два 32-разрядных сумматора по модулю 2^{32} ( CM_{1} , CM_{3} );
32-разрядный сумматор поразрядного суммирования по модулю 2 (CM_{2}) ;
32-разрядный сумматор по модулю (2^{32} - 1) (CM_{4}) ;
сумматор по модулю 2 (CM_{5}) , ограничение на разрядность сумматора CM_{5} не накладывается;
1.2. Блок подстановки K состоит из восьми узлов замены K_{1} , K_{2} , K_{3} , K_{4} , K_{5} , K_{6} , K_{7} , K_{8} с памятью на 64 бита каждый. Поступающий на блок подстановки 32-разрядный вектор разбивается на восемь последовательно идущих 4-разрядных векторов, каждый из которых преобразуется в 4-разрядный вектор соответствующим узлом замены, представляющим собой таблицу из шестнадцати строк, содержащих по четыре бита заполнения в строке. Входной вектор определяет адрес строки в таблице, заполнение данной строки является выходным вектором. Затем 4-разрядные выходные векторы последовательно объединяются в 32-разрядный вектор.
1.3. При сложении и циклическом сдвиге двоичных векторов старшими разрядами считаются разряды накопителей с большими номерами.
1.4. При записи ключа ( W_{1} , W_{2} ,..., W_{256} ), {}_{W_{q} \in}{_{0,1}} , q = 1 \div 256 в КЗУ значение W_{1} вводится в 1-й разряд накопителя X_{0} , значение W_{2} вводится во 2-й разряд накопителя X_{0} ,..., значение W_{32} вводится в 32-й разряд накопителя X_{0} ; значение W_{33} вводится в 1-й разряд накопителя X_{1} , значение W_{34} вводится во 2-й разряд накопителя X_{1} ,..., значение W_{64} вводится в 32-й разряд накопителя X_{1} ; значение W_{65} вводится в 1-й разряд накопителя X_{2} и т.д., значение W_{256} вводится в 32-й разряд накопителя X_{7} .
1.5. При перезаписи информации содержимое p-го разряда одного накопителя (сумматора) переписывается в p-й разряд другого накопителя (сумматора).
1.6. Значения постоянных заполнений C_{1} , C_{2} (констант) накопителей N_{6} , N_{5} приведены в Приложении 2.
1.7. Ключи, определяющие заполнения КЗУ и таблиц блока подстановки K, являются секретными элементами и поставляются в установленном порядке.
Заполнение таблиц блока подстановки K является долговременным ключевым элементом, общим для сети ЭВМ.
Организация различных видов связи достигается построением соответствующей ключевой системы. При этом может быть использована возможность выработки ключей (заполнений КЗУ) в режиме простой замены и зашифрования их в режиме простой замены с обеспечением имитозащиты для передачи по каналам связи или хранения в памяти ЭВМ.
1.8 В криптосхеме предусмотрены четыре вида работы:
зашифрование (расшифрование) данных в режиме простой замены;
зашифрование (расшифрование) данных в режиме гаммирования;
зашифрование (расшифрование) данных в режиме гаммирования с обратной связью;
Схемы программной реализации алгоритма криптографического преобразования приведены в Приложении 3.
2. РЕЖИМ ПРОСТОЙ ЗАМЕНЫ
2.1 Зашифрование открытых данных в режиме простой замены
2.1.1. Криптосхема, реализующая алгоритм зашифрования в режиме простой замены, должна иметь вид, указанный на черт. 2.
Открытые данные, подлежащие зашифрованию, разбивают на блоки по 64 бита в каждом. Ввод любого блока T_{0} = (a_{1}(0),a_{2}(0),...,a_{31}(0),a_{32}(0),b_{1}(0),b_{2}(0),...,b_{32}(0)) двоичной информации в накопители N_{1} и N_{2} производится так, что значение a_{1}(0) вводится в 1-й разряд N_{1} , значение a_{2}(0) вводится во 2-й разряд N_{1} и т.д., значение a_{32}(0) вводится в 32-й разряд N_{1} ; значение b_{1}(0) вводится в 1-й разряд N_{2} , значение b_{2}(0) вводится во 2-й разряд N_{2} и т.д., значение b_{32}(0) вводится в 32-й разряд N_{2} . В результате получают состояние (a_{32}(0),a_{31}(0),...,a_{2}(0),a_{1}(0)) накопителя N_{1} и состояние (b_{32}(0),b_{31}(0),...,b_{1}(0)) накопителя N_{2} .
2.1.2. В КЗУ вводятся 256 бит ключа. Содержимое восьми 32-разрядных накопителей X_{0} , X_{1} ,..., X_{7} имеет вид:
2.1.3. Алгоритм зашифрования 64-разрядного блока открытых данных в режиме простой замены состоит из 32 циклов.
В первом цикле начальное заполнение накопителя N_{1} суммируется по модулю 2^{32} в сумматоре CM_{1} с заполнением накопителя X_{0} , при этом заполнение накопителя N_{1} сохраняется.
Результат суммирования преобразуется в блоке подстановки K и полученный вектор поступает на вход регистра R, где циклически сдвигается на одиннадцать шагов в сторону старших разрядов. Результат сдвига суммируется поразрядно по модулю 2 в сумматоре CM_{2} с 32-разрядным заполнением накопителя N_{2} . Полученный в CM_{2} результат записывается в N_{1} , при этом старое заполнение N_{1} переписывается в N_{2} . Первый цикл заканчивается.
Последующие циклы осуществляются аналогично, при этом во 2-м цикле из КЗУ считывается заполнение X_{1} , в 3-м цикле из КЗУ считывается заполнение X_{2} и т.д., в 8-м цикле из КЗУ считывается заполнение X_{7} . В циклах с 9-го по 16-й, а также в циклах с 17-го по 24-й заполнения из КЗУ считываются в том же порядке:
X_{0} , X_{1} , X_{2} , X_{3} , X_{4} , X_{5} , X_{6} , X_{7} .
В последних восьми циклах с 25-го по 32-й порядок считывания заполнений КЗУ обратный:
X_{7} , X_{6} , X_{5} , X_{4} , X_{3} , X_{2} , X_{1} , X_{0} .
Таким образом, при зашифровании в 32 циклах осуществляется следующий порядок выбора заполнений накопителей:
X_{0} , X_{1} , X_{2} , X_{3} , X_{4} , X_{5} , X_{6} , X_{7} ,
X_{0} , X_{1} , X_{2} , X_{3} , X_{4} , X_{5} , X_{6} , X_{7} ,
X_{0} , X_{1} , X_{2} , X_{3} , X_{4} , X_{5} , X_{6} , X_{7} ,
X_{7} , X_{6} , X_{5} , X_{4} , X_{3} , X_{2} , X_{1} , X_{0} .
В 32 цикле результат из сумматора CM_{2} вводится в накопитель N_{2} , а в накопителе N_{1} сохраняется старое заполнение.
Полученные после 32-го цикла зашифрования заполнения накопителей N_{1} и N_{2} являются блоком зашифрованных данных, соответствующим блоку открытых данных.
2.1.4 Уравнения зашифрования в режиме простой замены имеют вид:
где a(0) = (a_{32}(0),a_{31}(0),...,a_{1}(0)) — начальное заполнение N_{1} перед первым циклом зашифрования;
b(0) = (b_{32}(0),b_{31}(0),...,b_{1}(0)) — начальное заполнение N_{2} перед первым циклом зашифрования;
a(j) = (a_{32}(j),a_{31}(j),...,a_{1}(j)) — заполнение N_{1} после j-го цикла зашифрования;
b(j) = (b_{32}(j),b_{31}(j),...,b_{1}(j)) — заполнение N_{2} после j-го цикла зашифрования, j = 1 \div 32 .
Знак
означает поразрядное суммирование 32-разрядных векторов по модулю 2.
Знак
означает суммирование 32-разрядных векторов по модулю 2^{32} . Правила суммирования по модулю 2^{32} приведены в Приложении 4;
R — операция циклического сдвига на одиннадцать шагов в сторону старших разрядов, т.е.
R(r_{32},r_{31},r_{30},r_{29},r_{28},r_{27},r_{26},r_{25},r_{24},r_{23},r_{22},r_{21},r_{20},...,r_{2},r_{1}) =
= (r_{21},r_{20},...,r_{2},r_{1},r_{32},r_{31},r_{30},r_{29},r_{28},r_{27},r_{26},r_{25},r_{24},r_{23},r_{22}) .
2.1.5. 64-разрядный блок зашифрованных данных T_{\text{ш}} выводится из накопителей N_{1} , N_{2} в следующем порядке: из 1-го, 2-го,..., 32-го разрядов накопителя N_{1} , затем из 1-го, 2-го,..., 32-го разрядов накопителя N_{2} , т.е.
Остальные блоки открытых данных в режиме простой замены зашифровываются аналогично.
2.2 Расшифрование зашифрованных данных в режиме простой замены
2.2.1. Криптосхема, реализующая алгоритм расшифрования в режиме простой замены, имеет тот же вид (см. черт. 2), что и при зашифровании. В КЗУ вводятся 256 бит того же ключа, на котором осуществлялось зашифрование. Зашифрованные данные, подлежащие расшифрованию, разбиты на блоки по 64 бита в каждом. Ввод любого блока
в накопители N_{1} и N_{2} производятся так, что значение a_{1}(32) вводится в 1-й разряд N_{1} , значение a_{2}(32) вводится во 2-й разряд N_{1} и т.д., значение a_{32}(32) вводится в 32-й разряд N_{1} ; значение b_{1}(32) вводится в 1-й разряд N_{2} и т.д., значение b_{32}(32) вводится в 32-й разряд N_{2} .
2.2.2. Расшифрование осуществляется по тому же алгоритму, что и зашифрование открытых данных, с тем изменением, что заполнения накопителей X_{0} , X_{1} ,..., X_{7} считываются из КЗУ в циклах расшифрования в следующем порядке:
X_{0} , X_{1} , X_{2} , X_{3} , X_{4} , X_{5} , X_{6} , X_{7} ,
X_{7} , X_{6} , X_{5} , X_{4} , X_{3} , X_{2} , X_{1} , X_{0} ,
X_{7} , X_{6} , X_{5} , X_{4} , X_{3} , X_{2} , X_{1} , X_{0} ,
X_{7} , X_{6} , X_{5} , X_{4} , X_{3} , X_{2} , X_{1} , X_{0} .
2.2.3 Уравнения расшифрования имеют вид:
2.2.4. Полученные после 32 циклов работы заполнения накопителей N_{1} и N_{2} составляют блок открытых данных.
T_{0} = (a_{1}(0),a_{2}(0),...,a_{32}(0),b_{1}(0),b_{2}(0),...,b_{32}(0)) , соответствующий блоку зашифрованных данных, при этом значение a_{1}(0) блока T_{0} соответствует содержимому 1-го разряда N_{1} , значение a_{2}(0) соответствует содержимому 2-го разряда N_{1} и т.д., значение a_{32}(0) соответствует содержимому 32-го разряда N_{1} ; значение b_{1}(0) соответствует содержимому 1-го разряда N_{2} , значение b_{2}(0) соответствует содержимому 2-го разряда N_{2} и т.д., значение b_{32}(0) соответствует содержимому 32-го разряда N_{2} .
Аналогично расшифровываются остальные блоки зашифрованных данных.
2.3. Алгоритм зашифрования в режиме простой замены 64-битового блока T_{0} обозначается через A, т.е.
2.4. Режим простой замены допускается использовать для зашифрования (расшифрования) данных только в случаях, приведенных в п. 1.7.
3. РЕЖИМ ГАММИРОВАНИЯ
3.1 Зашифрование открытых данных в режиме гаммирования
3.1.1. Криптосхема, реализующая алгоритм зашифрования в режиме гаммирования, имеет вид, указанный на черт. 3.
Открытые данные, разбитые на 64-разрядные блоки T_{0}^{(1)} , T_{0}^{(2)} ,..., T_{0}^{(M - 1)} , T_{0}^{(M)} , зашифровываются в режиме гаммирования путем поразрядного суммирования по модулю 2 в сумматоре CM_{5} с гаммой шифра \text{Г}_{\text{ш}} , которая вырабатывается блоками по 64 бита, т.е.
\text{Г}_{\text{ш}} = (\text{Г}_{(\text{ш })}^{1},\text{Г}_{(\text{ш })}^{2},...,\text{Г}_{\text{ш}}^{(M - 1)},...,\text{Г}_{(\text{ш })}^{M}) ,
где M — определяется объемом шифруемых данных.
\text{Г}_{(\text{ш})}^{i} — i-й 64-разрядный блок, i = 1 \div M , число двоичных разрядов в блоке T_{0}^{(M)} может быть меньше 64, при этом неиспользованная для зашифрования часть гаммы шифра из блока \text{Г}_{(\text{ш })}^{M} отбрасывается.
3.1.2. В КЗУ вводятся 256 бит ключа. В накопители N_{1} , N_{2} вводится 64-разрядная двоичная последовательность (синхропосылка) S = (S_{1},S_{2},...,S_{64}) , являющаяся исходным заполнением этих накопителей для последующей выработки M блоков гаммы шифра. Синхропосылка вводится в N_{1} и N_{2} так, что значение S_{1} вводится в 1-й разряд N_{1} , значение S_{2} вводится во 2-й разряд N_{1} и т.д., значение S_{32} вводится в 32-й разряд N_{1} ; значение S_{33} вводится в 1-й разряд N_{2} , значение S_{34} вводится во 2-й разряд N_{2} и т.д., значение S_{64} вводится в 32-й разряд N_{2} .
3.1.3. Исходное заполнение накопителей N_{1} и N_{2} (синхропосылка S) зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Результат зашифрования A(S) = Y_{0},Z_{0}) переписывается в 32-разрядные накопители N_{3} и N_{4} , так, что заполнение N_{1} переписывается в N_{3} , а заполнение N_{2} переписывается в N_{4} .
3.1.4. Заполнение накопителя N_{4} суммируется по модулю (2^{32} - 1) в сумматоре CM_{4} с 32-разрядной константой C_{1} из накопителя N_{6} , результат записывается в N_{4} . Правила суммирования по модулю (2^{32} - 1) приведены в Приложении 4. Заполнение накопителя N_{3} суммируется по модулю 2^{32} в сумматоре CM_{3} в 32-разрядной константой C_{2} из накопителя N_{5} , результат записывается в N_{3} .
Заполнение N_{3} переписывается в N_{1} , а заполнение N_{4} переписывается в N_{2} , при этом заполнение N_{3} , N_{4} сохраняется.
Заполнение N_{1} и N_{2} зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Полученное в результате зашифрования заполнение N_{1} , N_{2} образует первый 64-разрядный блок гаммы шифра \text{Г}_{(\text{ш })}^{1} , который суммируется поразрядно по модулю 2 в сумматоре CM_{5} с первым 64-разрядным блоком открытых данных
В результате суммирования получается 64-разрядный блок зашифрованных данных
Значение \tau_{1}^{(1)} блока T_{\text{ш}}^{(1)} является результатом суммирования по модулю 2 в CM_{5} значения t_{1}^{(1)} из блока T_{0}^{(1)} со значением 1-го разряда N_{1} , значение \tau_{2}^{(1)} блока T_{\text{ш}}^{(1)} является результатом суммирования по модулю 2 в CM_{5} значения t_{2}^{(1)} из блока T_{0}^{(1)} со значением 2-го разряда N_{1} и т.д., значение \tau_{6(4)}^{1} блока T_{\text{ш}}^{(1)} является результатом суммирования по модулю 2 в CM_{5} значения t_{6(4)}^{1} из блока T_{0}^{(1)} со значением 32-го разряда N_{2} .
3.1.5. Для получения следующего 64-разрядного блока гаммы шифра \text{Г}_{(\text{ш })}^{2} заполнение N_{4} суммируется по модулю (2^{32} - 1) в сумматоре CM_{4} с константой C_{1} из N_{6} , заполнение N_{3} суммируется по модулю 2^{32} в сумматоре CM_{3} с константой C_{2} из N_{5} . Новое заполнение N_{3} переписывается в N_{1} , а новое заполнение N_{4} переписывается в N_{2} , при этом заполнение N_{3} и N_{4} сохраняется.
Заполнение N_{1} и N_{2} зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Полученное в результате зашифрования заполнение N_{1} , N_{2} образует второй 64-разрядный блок гаммы шифра \text{Г}_{(\text{ш })}^{2} , который суммируется поразрядно по модулю 2 в сумматоре CM_{5} со вторым блоком открытых данных T_{0}^{(2)} . Аналогично вырабатываются блоки гаммы шифра \text{Г}_{(\text{ш })}^{3} , \text{Г}_{(\text{ш })}^{4} ,..., \text{Г}_{(\text{ш })}^{M} и зашифровываются блоки открытых данных T_{0}^{(3)} , T_{0}^{(4)} ,..., T_{0}^{(M)} . Если длина последнего M-го блока открытых данных T_{0}^{(M)} меньше 64 бит, то из последнего M-го блока гаммы шифра \text{Г}_{(\text{ш })}^{M} для зашифрования используется только соответствующее число разрядов гаммы шифра, остальные разряды отбрасываются.
3.1.6. В канал связи или память ЭВМ передаются синхропосылка S и блоки зашифрованных данных T_{\text{ш}}^{(1)} , T_{\text{ш}}^{(2)} ,..., T_{\text{ш}}^{(M)} .
3.1.7 Уравнение зашифрования имеет вид:
T_{\text{ш}}^{(i)} = A(Y_{i - 1}(C_{2},Z_{i - 1}(\prime C_{1})T_{0}^{(i)} = \text{Г}_{(\text{ш})}^{i}T_{0}^{(i)} ,
где (\prime — означает суммирование 32-разрядных заполнений по модулю (2^{32} - 1) ;
- поразрядное суммирование по модулю 2 двух заполнений;
Y_{i} — содержимое накопителя N_{3} после зашифрования i-го блока открытых данных T_{0}^{(i)} ;
Z_{i} — содержимое накопителя N_{4} после зашифрования i-го блока открытых данных T_{0}^{(1)} ;
3.2 Расшифрование зашифрованных данных в режиме гаммирования
3.2.1. При расшифровании криптосхема имеет тот же вид, что и при зашифровании (см. черт. 3). В КЗУ вводятся 256 бит ключа, с помощью которого осуществлялось зашифрование данных T_{0}^{(1)} , T_{0}^{(2)} ,..., T_{0}^{(M)} . Синхропосылка S вводится в накопители N_{1} и N_{2} и аналогично пп. 3.1.2 - 3.1.5 осуществляется процесс выработки M блоков гаммы шифра \text{Г}_{(\text{ш })}^{1} , \text{Г}_{(\text{ш })}^{2} ,..., \text{Г}_{(\text{ш })}^{M} . Блоки зашифрованных данных T_{\text{ш}}^{(1)} , T_{\text{ш}}^{(2)} ,..., T_{\text{ш}}^{(M)} суммируются поразрядно по модулю 2 в сумматоре CM_{5} с блоками гаммы шифра, в результате получаются блоки открытых данных T_{0}^{(1)} , T_{0}^{(2)} ,..., T_{0}^{(M)} , при этом T_{0}^{(M)} может содержать меньше 64 разрядов.
3.2.2 Уравнение расшифрования имеет вид:
T_{0}^{(i)} = A(Y_{i - 1}(C_{2},Z_{i - 1}(\prime C_{1})T_{\text{ш}}^{(i)} = \text{Г}_{(\text{ш})}^{i}T_{\text{ш}}^{(i)} ,
4. РЕЖИМ ГАММИРОВАНИЯ С ОБРАТНОЙ СВЯЗЬЮ
4.1 Зашифрование открытых данных в режиме гаммирования с обратной связью
4.1.1. Крипстосхема, реализующая алгоритм зашифрования в режиме гаммирования с обратной связью, имеет вид, указанный на черт. 4.
Открытые данные, разбитые на 64-разрядные блоки T_{0}^{(1)} ,..., T_{0}^{(M)} , зашифровываются в режиме гаммирования с обратной связью путем поразрядного суммирования по модулю 2 в сумматоре CM_{5} с гаммой шифра \text{Г}_{\text{ш}} , которая вырабатывается блоками по 64 бита, т.е. \text{Г}_{\text{ш}} = (\text{Г}_{(\text{ш })}^{1},\text{Г}_{(\text{ш })}^{2},...,\text{Г}_{(\text{ш })}^{M}) , где M определяется объемом открытых данных, \text{Г}_{(\text{ш})}^{i} — i-й 64-разрядный блок, i = 1 \div M . Число двоичных разрядов в блоке T_{0}^{(M)} может быть меньше 64.
4.1.2. В КЗУ вводятся 256 бит ключа. Синхропосылка S = (S_{1},S_{2},...,S_{64}) из 64 бит вводится в N_{1} и N_{2} аналогично п. 3.1.2.
4.1.3. Исходное заполнение N_{1} и N_{2} зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Полученное в результате зашифрования заполнение N_{1} и N_{2} образует первый 64-разрядный блок гаммы шифра \text{Г}_{(\text{ш })}^{1} = A(S) , который суммируется поразрядно по модулю 2 в сумматоре CM_{5} с первым 64-разрядным блоком открытых данных T_{0}^{(1)} = (t_{1}^{(1)},t_{2}^{(1)},...,t_{6(4)}^{1}) .
В результате получается 64-разрядный блок зашифрованных данных
4.1.4. Блок зашифрованных данных T_{\text{ш}}^{(1)} одновременно является также исходным состоянием N_{1} , N_{2} для выработки второго блока гаммы шифра \text{Г}_{(\text{ш })}^{2} и по обратной связи записывается в указанные накопители. При этом значение \tau_{1}^{(1)} вводится в 1-й раздел N1, значение \tau_{2}^{(1)} вводится во 2-й разряд N1 и т.д., значение \tau_{3(2)}^{1} вводится в 32-й разряд N1; значение \tau_{3(3)}^{1} вводится в 1-й разряд N2, значение \tau_{3(4)}^{1} вводится во 2-й разряд N2 и т.д., значение \tau_{6(4)}^{1} вводится в 32-й разряд N2.
Заполнение N_{1} , N_{2} зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1. Полученное в результате зашифрования заполнение N_{1} , N_{2} образует второй 64-разрядный блок гаммы шифра \text{Г}_{(\text{ш })}^{2} , который суммируется поразрядно по модулю 2 в сумматоре CM_{5} со вторым блоком открытых данных T_{0}^{(2)} .
Выработка последующих блоков гаммы шифра \text{Г}_{(\text{ш})}^{i} и зашифрование соответствующих блоков открытых данных T_{0}^{(i)} (i = 3 \div M) производится аналогично. Если длина последнего M-го блока открытых данных T_{0}^{(M)} меньше 64 разрядов, то из \text{Г}_{(\text{ш })}^{M} используется только соответствующее число разрядов гаммы шифра, остальные разряды отбрасываются.
4.1.5 Уравнения зашифрования в режиме гаммирования с обратной связью имеют вид:
4.1.6. В канал связи или память ЭВМ передаются синхропосылка S и блоки зашифрованных данных T_{\text{ш}}^{(1)} , T_{\text{ш}}^{(2)} ,..., T_{\text{ш}}^{(M)} .
4.2 Расшифрование зашифрованных данных в режиме гаммирования с обратной связью
4.2.1. При расшифровании криптосхема имеет тот же вид (см. черт. 4), что и при зашифровании.
В КЗУ вводятся 256 бит того же ключа, на котором осуществлялось зашифрование T_{0}^{(1)} , T_{0}^{(2)} ,..., T_{0}^{(M)} . Синхропосылка S вводится в N_{1} и N_{2} аналогично п. 3.1.2.
4.2.2. Исходное заполнение N_{1} , N_{2} (синхропосылка S) зашифровывается в режиме простой замены согласно подразделу 2.1. Полученное в результате зашифрования заполнение N_{1} , N_{2} образует первый блок гаммы шифра \text{Г}_{(\text{ш })}^{1} = A(S) , который суммируется поразрядно по модулю 2 в сумматоре CM_{5} с блоком зашифрованных данных T_{\text{ш}}^{(1)} . В результате получается первый блок открытых данных T_{0}^{(1)} .
4.2.3. Блок зашифрованных данных T_{\text{ш}}^{(1)} является исходным заполнением N_{1} , N_{2} для выработки второго блока гаммы шифра \text{Г}_{(\text{ш })}^{2} . Блок T_{\text{ш}}^{(1)} записывается в N_{1} , N_{2} в соответствии с требованиями п. 4.1.4. Полученное заполнение N_{1} , N_{2} зашифровывается в режиме простой замены в соответствии с требованиями п. 2.1, полученный в результате блок \text{Г}_{(\text{ш })}^{2} суммируется поразрядно по модулю 2 в сумматоре CM_{5} со вторым блоком зашифрованных данных T_{\text{ш}}^{(2)} . В результате получается блок открытых данных T_{\text{ш}}^{(2)} .
Аналогично в N_{1} , N_{2} последовательно записываются блоки зашифрованных данных T_{\text{ш}}^{(2)} , T_{\text{ш}}^{(3)} ,..., T_{\text{ш}}^{(M - 1)} , из которых в режиме простой замены вырабатываются блоки гаммы шифра \text{Г}_{(\text{ш })}^{3} , \text{Г}_{(\text{ш })}^{4} ,..., T_{\text{ш}}^{(M)} . Блоки гаммы шифра суммируются поразрядно по модулю 2 в сумматоре CM_{5} с блоками зашифрованных данных T_{\text{ш}}^{(3)} , T_{\text{ш}}^{(4)} ,..., T_{\text{ш}}^{(M)} , в результате получаются блоки открытых данных \text{Г}_{0}^{(3)} , \text{Г}_{0}^{(4)} ,..., T_{0}^{(M)} , при этом длина последнего блока открытых данных T_{0}^{(M)} может содержать меньше 64 разрядов.
4.2.4 Уравнения расшифрования в режиме гаммирования с обратной связью имеют вид:
T_{0}^{(1)} = A(S)T_{\text{ш}}^{(1)} = \text{Г}_{(\text{ш })}^{1}T_{\text{ш}}^{(1)} ,
T_{0}^{(i)} = A(T_{\text{ш}}^{(i - 1)})T_{\text{ш}}^{(i)} = \text{Г}_{(\text{ш})}^{i}T_{\text{ш}}^{(i)},i = 2 \div M.
5. РЕЖИМ ВЫРАБОТКИ ИМИТОВСТАВКИ
5.1. Для обеспечения имитозащиты открытых данных, состоящих из M 64-разрядных блоков T_{0}^{(1)} , T_{0}^{(2)} ,..., T_{0}^{(M)} , M >= 2, вырабатывается дополнительный блок из l бит (имитовставка \text{И}_{l} ). Процесс выработки имитовставки единообразен для всех режимов шифрования.
5.2 Первый блок открытых данных
записывается в накопители N_{1} и N_{2} , при этом значение t_{1}^{(1)} = a_{1}^{(1)}(0) вводится в 1-й разряд N_{1} , значение t_{2}^{(1)} = a_{2}^{(1)}(0) вводится во 2-й разряд N_{1} и т.д., значение t_{3(2)}^{1} = a_{3(2)}^{1}(0) вводится в 32-й разряд N_{1} ; значение t_{3(3)}^{1} = b_{1}^{(1)}(0) вводится в 1-й разряд N_{2} и т.д., значение t_{6(4)}^{1} = b_{3(2)}^{1}(0) вводится в 32-й разряд N_{2} .
5.3. Заполнение N_{1} и N_{2} подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены (см. подраздел 2.1). В КЗУ при этом находится тот же ключ, которым зашифровываются блоки открытых данных T_{0}^{(1)} , T_{0}^{(2)} ,..., T_{\text{ш}}^{(M)} в соответствующие блоки зашифрованных данных T_{\text{ш}}^{(1)} , T_{\text{ш}}^{(2)} ,..., T_{\text{ш}}^{(M)} .
Полученное после 16 циклов работы заполнение N_{1} и N_{2} , имеющее вид a_{1}^{(1)}(16) , a_{2}^{(1)}(16) ,..., a_{3(2)}^{1}(16) , b_{1}^{(1)}(16) , b_{2}^{(1)}(16) ,..., b_{3(2)}^{1}(16) , суммируется в CM_{5} по модулю 2 со вторым блоком T_{0}^{(2)} = (t_{1}^{(2)},t_{2}^{(2)},...,t_{6(4)}^{2}) .
заносится в N_{1} и N_{2} и подвергается преобразованию, соответствующему первым 16 циклам алгоритма зашифрования в режиме простой замены.
Полученное заполнение N_{1} и N_{2} суммируется по CM_{5} по модулю 2 с третьим блоком T_{0}^{(3)} и т.д., последний блок T_{0}^{(M)} = (t_{1}^{(M)},t_{2}^{(M)},...,t_{6(4)}^{M} , при необходимости дополненный до полного 64-разрядного блока нулями, суммируется в CM_{5} по модулю 2 с заполнением N_{1} , N_{2}
заносится в N_{1} , N_{2} и зашифровывается в режиме простой замены по первым 16 циклам работы алгоритма. Из полученного заполнения накопителей N_{1} и N_{2}
(a_{1}^{(M)}(16),a_{2}^{(M)}(16),...,a_{3(2)}^{M}(16),b_{1}^{(M)}(16),b_{2}^{(M)}(16),...,b_{3(2)}^{M}(16))
выбирается отрезок \text{И}_{l} (имитовставка) длиной l бит:
\text{И}_{l} = [a_{3(2 - )l + 1}^{M}(16),a_{3(2 - )l + 2}^{M}(16),...,a_{3(2)}^{M}(16)] .
Имитовставка \text{И}_{l} передается по каналу связи или в память ЭВМ в конце зашифрованных данных, т.е. T_{\text{ш}}^{(1)} , T_{\text{ш}}^{(2)} ,..., T_{\text{ш}}^{(M)} , \text{И}_{l} .
5.4. Поступившие зашифрованные данные T_{\text{ш}}^{(1)} , T_{\text{ш}}^{(2)} ,..., T_{\text{ш}}^{(M)} расшифровываются, из полученных блоков открытых данных T_{0}^{(1)} , T_{0}^{(2)} ,..., T_{0}^{(M)} аналогично п. 5.3 вырабатывается имитовставка \text{И}_{l} , которая затем сравнивается с имитовставкой \text{И}_{l} , полученной вместе с зашифрованными данными из канала связи или из памяти ЭВМ. В случае несовпадения имитовставок полученные блоки открытых данных T_{0}^{(1)} , T_{0}^{(2)} ,..., T_{0}^{(M)} считают ложными.
Выработка имитовставки \text{И}_{l} (\text{И}\prime_{l}) может производиться или перед зашифрованием (после расшифрования) всего сообщения, или параллельно с зашифрованием (расшифрованием) по блокам. Первые блоки открытых данных, которые участвуют в выработке имитовставки, могут содержать служебную информацию (адресную часть, отметку времени, синхропосылку и др.) и не зашифровываться.
Значение параметра l (число двоичных разрядов в имитовставке) определяется действующими криптографическими требованиями, при этом учитывается, что вероятность навязывания ложных данных равна 2^{- l} .
СТАНДАРТЕ, И ИХ ОПРЕДЕЛЕНИЯ
Справочное
СХЕМЫ ПРОГРАММНОЙ РЕАЛИЗАЦИИ АЛГОРИТМА
КРИПТОГРАФИЧЕСКОГО ПРЕОБРАЗОВАНИЯ
1. Схема одного цикла шифрования
2. Схема 32-х циклов зашифрования
3. Схема 32-х циклов расшифрования
4. Схема алгоритма зашифрования в режиме простой замены
5. Схема алгоритма расшифрования в режиме простой замены
6. Схема алгоритма зашифрования в режиме гаммирования
8. Схема алгоритма зашифрования
9. Схема алгоритма расшифрования
в режиме гаммирования с обратной связью
10. Схема алгоритма криптографического
преобразования в режиме выработки имитовставки
Справочное
ПРАВИЛА СУММИРОВАНИЯ ПО МОДУЛЮ 2^{32} И ПО МОДУЛЮ (2^{32} - 1)
1. Два целых числа a, b, где 0 <= a, b \leq 2^{32} - 1 , представленные в двоичном виде
a = (a_{32},a_{31},...,a_{2},a_{1}) , b = (b_{32},b_{31},...,b_{2},b_{1}) ,
т.е. a = a_{32} \cdot 2^{31} + a_{31} \cdot 2^{30} + ... + a_{2} \cdot 2 + a_{1} ,
суммируются по модулю 2^{32} (операция
) по следующему правилу:
a(b = a + b , если a + b<2^{32} ,
где операция + (-) есть арифметическая сумма (разность) двух целых чисел.
2. Два целых числа a, b, где 0 <= a, b \leq 2^{32} - 1 , представленные в двоичном виде
суммируются по модулю (2^{32} - 1) (операция (\prime ) по следующему правилу:
a(\prime b = a + b - 2^{32} + 1 , если a + b \geq 2^{32} .
























