ГОСТ 34.12-2018
МЕЖГОСУДАРСТВЕННЫЙ СТАНДАРТ
Информационная технология
КРИПТОГРАФИЧЕСКАЯ ЗАЩИТА ИНФОРМАЦИИ
Блочные шифры
Information technology. Cryptographic data security. Block ciphers
МКС 35.040
Дата введения 2019-06-01
Предисловие
Цели, основные принципы и основной порядок проведения работ по межгосударственной стандартизации установлены в ГОСТ 1.0-2015 "Межгосударственная система стандартизации. Основные положения" и ГОСТ 1.2-2015 "Межгосударственная система стандартизации. Стандарты межгосударственные, правила и рекомендации по межгосударственной стандартизации. Правила разработки, принятия, обновления и отмены"
Сведения о стандарте
1 РАЗРАБОТАН Центром защиты информации и специальной связи ФСБ России с участием Открытого акционерного общества "Информационные технологии и коммуникационные системы" (ОАО "ИнфоТеКС")
2 ВНЕСЕН Техническим комитетом по стандартизации ТК 26 "Криптографическая защита информации"
3 ПРИНЯТ Межгосударственным советом по метрологии, стандартизации и сертификации (протокол от 29 ноября 2018 г. N 54)
За принятие проголосовали:
Краткое наименование страны по МК (ИСО 3166) 004-97 | Код страны по МК (ИСО 3166) 004-97 | Сокращенное наименование национального органа по стандартизации |
Армения | AM | Минэкономики Республики Армения |
Киргизия | KG | Кыргызстандарт |
Россия | RU | Росстандарт |
Таджикистан | TJ | Таджикстандарт |
Туркмения | ТМ | Главгосслужба "Туркменстандартлары" |
(Поправка. ИУС N 1-2021).
4 Приказом Федерального агентства по техническому регулированию и метрологии от 4 декабря 2018 г. N 1061-ст межгосударственный стандарт ГОСТ 34.12-2018 введен в действие в качестве национального стандарта Российской Федерации с 1 июня 2019 г.
5 Настоящий стандарт подготовлен на основе применения ГОСТ Р 34.12-2015
6 ВЗАМЕН ГОСТ 28147-89 в части раздела 1 "Структурная схема алгоритма криптографического преобразования"
Информация об изменениях к настоящему стандарту публикуется в ежегодном информационном указателе "Национальные стандарты", а текст изменений и поправок - в ежемесячном информационном указателе "Национальные стандарты". В случае пересмотра (замены) или отмены настоящего стандарта соответствующее уведомление будет опубликовано в ежемесячном информационном указателе "Национальные стандарты". Соответствующая информация, уведомление и тексты размещаются также в информационной системе общего пользования - на официальном сайте Федерального агентства по техническому регулированию и метрологии в сети Интернет (www.gost.ru)
ВНЕСЕНЫ: поправка, опубликованная в ИУС N 4, 2019 год; поправка, опубликованная в ИУС N 1, 2021 год
Поправки внесены изготовителем базы данных
Введение
Настоящий стандарт содержит описание алгоритмов блочного шифрования, которые применяются в криптографических методах защиты информации.
Необходимость разработки стандарта вызвана потребностью в создании блочных шифров с различными длинами блока, соответствующих современным требованиям к криптографической стойкости и эксплуатационным качествам.
Настоящий стандарт терминологически и концептуально увязан с международными стандартами ИСО/МЭК 10116* [1] и стандартами серии ИСО/МЭК 18033 [2], [3].
________________
* Доступ к международным и зарубежным документам, упомянутым в тексте, можно получить, обратившись в Службу поддержки пользователей. - .
Примечание - Основная часть стандарта дополнена приложением А "Контрольные примеры".
1 Область применения
Настоящий стандарт определяет алгоритмы базовых блочных шифров, которые применяются в криптографических методах обработки и защиты информации, в том числе для обеспечения конфиденциальности, аутентичности и целостности информации при ее передаче, обработке и хранении в автоматизированных системах.
Определенные в настоящем стандарте алгоритмы криптографического преобразования предназначены для аппаратной или программной реализации, удовлетворяют современным криптографическим требованиям и по своим возможностям не накладывают ограничений на степень секретности защищаемой информации.
Стандарт рекомендуется использовать при создании, эксплуатации и модернизации систем обработки информации различного назначения.
2 Термины, определения и обозначения
2.1 Термины и определения
В настоящем стандарте применены следующие термины с соответствующими определениями:
2.1.1 алгоритм зашифрования (encryption algorithm): Алгоритм, реализующий зашифрование, т.е. преобразующий открытый текст в шифртекст.
Примечание - Адаптировано из ИСО/МЭК 18033-1 [2].
2.1.2 алгоритм расшифрования (decryption algorithm): Алгоритм, реализующий расшифрование, т.е. преобразующий шифртекст в открытый текст.
Примечание - Адаптировано из ИСО/МЭК 18033-1 [2].
2.1.3 базовый блочный шифр (basic block cipher): Блочный шифр, реализующий при каждом фиксированном значении ключа одно обратимое отображение множества блоков открытого текста фиксированной длины в блоки шифртекста такой же длины.
2.1.4 блок (block): Строка бит определенной длины.
Примечание - Адаптировано из ИСО/МЭК 18033-1 [2].
2.1.5 блочный шифр (block cipher): Шифр из класса симметричных криптографических методов, в котором алгоритм зашифрования применяется к блокам открытого текста для получения блоков шифртекста.
Примечания
1 Адаптировано из ИСО/МЭК 18033-1 [2].
2 В настоящем стандарте установлено, что термины "блочный шифр" и "алгоритм блочного шифрования" являются синонимами.
2.1.6 зашифрование (encryption): Обратимое преобразование данных с помощью шифра, которое формирует шифртекст из открытого текста.
Примечание - Адаптировано из ИСО/МЭК 18033-1 [2].
2.1.7 итерационный ключ (round key): Последовательность символов, вычисляемая в процессе развертывания ключа шифра и определяющая преобразование на одной итерации блочного шифра.
2.1.8 ключ (key): Изменяемый параметр в виде последовательности символов, определяющий криптографическое преобразование.
Примечания
1 Адаптировано из ИСО/МЭК 18033-1 [2].
2 В настоящем стандарте рассматриваются ключи только в виде последовательности двоичных символов (битов).
2.1.9 открытый текст (plaintext): Незашифрованная информация.
Примечание - Адаптировано из ИСО/МЭК 10116 [1].
2.1.10 развертывание ключа (key schedule): Вычисление итерационных ключей из ключа шифра.
2.1.11 расшифрование (decryption): Операция, обратная к зашифрованию.
Примечания
1 Адаптировано из ИСО/МЭК 18033-1 [2].
2 В настоящем стандарте в целях сохранения терминологической преемственности по отношению к нормативным документам, действующим на территории государства, принявшего настоящий стандарт, и опубликованным ранее на русском языке научно-техническим изданиям применяется термин "шифрование", объединяющий операции, определенные терминами "зашифрование" и "расшифрование". Конкретное значение термина "шифрование" определяется в зависимости от контекста упоминания.
2.1.12 симметричный криптографический метод (symmetric cryptographic technique): Криптографический метод, использующий один и тот же ключ для преобразования, осуществляемого отправителем, и преобразования, осуществляемого получателем.
Примечание - Адаптировано из ИСО/МЭК 18033-1 [2].
2.1.13 шифр (cipher): Криптографический метод, используемый для обеспечения конфиденциальности данных, включающий алгоритм зашифрования и алгоритм расшифрования.
Примечание - Адаптировано из ИСО/МЭК 18033-1 [2].
2.1.14 шифртекст (ciphertext): Данные, полученные в результате зашифрования открытого текста в целях скрытия его содержания.
Примечание - Адаптировано из ИСО/МЭК 10116 [1].
2.2 Обозначения
В настоящем стандарте применены следующие обозначения:
V* - множество всех двоичных строк конечной длины, включая пустую строку;
U
|А| - число компонент (длина) строки
А||В - конкатенация строк А,
3 Общие положения
В настоящем стандарте приведено описание двух базовых блочных шифров с длинами блоков n=128 бит и n=64 бит и длинами ключей k=256 бит.
Примечания
1 На описанный в настоящем стандарте шифр с длиной блока n=128 бит можно ссылаться как на блочный шифр "Кузнечик" ("Kuznechik").
2 На описанный в настоящем стандарте шифр с длиной блока n=64 бит можно ссылаться как на блочный шифр "Магма" ("Magma").
4 Алгоритм блочного шифрования с длиной блока n=128 бит
4.1 Значения параметров
4.1.1 Нелинейное биективное преобразование
В качестве нелинейного биективного преобразования выступает подстановка
4.1.2 Линейное преобразование
Линейное преобразование задается отображением
для любых
4.2 Преобразования
При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:
(2) | ||||
где k, | ||||
где | ||||
преобразование, обратное к преобразованию S, которое может быть вычислено, например, следующим образом: | ||||
(4) | ||||
где | ||||
где | (5) | |||
(6) | ||||
где | ||||
преобразование, обратное к преобразованию R, которое может быть вычислено, например, следующим образом: | ||||
где | ||||
(8) | ||||
где | ||||
(9) | ||||
где k, |
4.3 Алгоритм развертывания ключа
Алгоритм развертывания ключа использует итерационные константы
Итерационные ключи
4.4 Базовый алгоритм шифрования
4.4.1 Алгоритм зашифрования
Алгоритм зашифрования в зависимости от значений итерационных ключей
где
4.4.2 Алгоритм расшифрования
Алгоритм расшифрования в зависимости отзначений итерационных ключей
где
5 Алгоритм блочного шифрования с длиной блока n=64 бит
5.1 Значения параметров
5.1.1 Нелинейное биективное преобразование
В качестве нелинейного биективного преобразования выступают подстановки
(Поправка. ИУС N 4-2019).
5.2 Преобразования
При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:
(14) | ||
где | ||
(15) | ||
где k, | ||
(16) | ||
где k, | ||
(17) | ||
где k, |
5.3 Алгоритм развертывания ключа
Итерационные ключи
5.4 Базовый алгоритм шифрования
5.4.1 Алгоритм зашифрования
Алгоритм зашифрования в зависимости от значений итерационных ключей
где
5.4.2 Алгоритм расшифрования
Алгоритм расшифрования в зависимости от значений итерационных ключей
где
Приложение А
(справочное)
Контрольные примеры
А.1 Общие положения
Настоящее приложение носит справочный характер и не является частью нормативных положений настоящего стандарта.
В настоящем приложении двоичные строки из V*, длина которых кратна 4, записываются в шестнадцатеричном виде, а символ конкатенации ("||") опускается, т.е. строка
где
Таблица А.1 - Соответствие между двоичными и шестнадцатеричными строками
Двоичное число | Шестнадцатеричное число |
0000 | 0 |
0001 | 1 |
0010 | 2 |
0011 | 3 |
0100 | 4 |
0101 | 5 |
0110 | 6 |
0111 | 7 |
1000 | 8 |
1001 | 9 |
1010 | а |
1011 | b |
1100 | с |
1101 | d |
1110 | е |
1111 | f |
А.2 Алгоритм блочного шифрования с длиной блока n=128 бит
А.2.1 Преобразование S
S(ffeeddccbbaa99881122334455667700)=b66cd8887d38e8d77765aeea0c9a7efc,
S(b66cd8887d38e8d77765aeea0c9a7efc)=559d8dd7bd06cbfe7e7b262523280d39,
S(559d8dd7bd06cbfe7e7b262523280d39)=0c3322fed531e4630d80ef5c5a81c50b,
S(0c3322fed531e4630d80ef5c5a81c50b)=23ae65633f842d29c5df529c13f5acda.
A.2.2 Преобразование R
R(00000000000000000000000000000100)=94000000000000000000000000000001,
R(94000000000000000000000000000001)=a5940000000000000000000000000000,
R(05940000000000000000000000000000)=64059400000000000000000000000000,
R(64a59400000000000000000000000000)=0d64a594000000000000000000000000.
A.2.3 Преобразование L
L(64a59400000000000000000000000000)=d456584dd0e3e84cc3166e4b7fa2890d,
L(d456584dd0e3e84cc3166e4b7fa2890d)=79d26221b87b584cd42fbc4ffea5de9a,
L(79d26221b87b584cd42fbc4ffea5de9a)=0e93691a0cfc60408b7b68f66b513c13,
L(0e93691a0cfc60408b7b68f66b513d3)=e6a8094fee0aa204fd97bcb0b44b8580.
A.2.4 Алгоритм развертывания ключа
В настоящем контрольном примере ключ имеет значение:
K=8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef.
Итерационные ключи
A.2.5 Алгоритм зашифрования
В настоящем контрольном примере зашифрование проводится при значениях итерационных ключей из А.2.4. Пусть открытый текст, подлежащий зашифрованию, равен
а=1122334455667700ffeeddccbbaa9988,
тогда
Результатом зашифрования является шифртекст
A.2.6 Алгоритм расшифрования
В настоящем контрольном примере расшифрование проводится при значениях итерационных ключей из А.2.4. Пусть шифртекст, подлежащий расшифрованию, равен шифртексту, полученному в А.2.5:
b=7f679d90bebc24305a468d42b9d4edcd,
тогда
Результатом расшифрования является открытый текст
А.3 Алгоритм блочного шифрования с длиной блока n=64 бит
А.3.1 Преобразование t
t(fdb97531)=2a196f34,
t(2a196f34)=ebd9f03a,
t(ebd9f03a)=b039bb3d,
t(b039bb3d)=68695433.
A.3.2 Преобразование g
g[87654321](fedcba98)=fdcbc20c,
g[fdcbc20c](87654321)=7e791a4b,
g[7e791a4b](fdcbc20c)=c76549ec,
g[c76549ec](7e791a4b)=9791c849.
A.3.3 Алгоритм развертывания ключа
В настоящем контрольном примере ключ имеет значение:
K=ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff.
Итерационные ключи
А.3.4 Алгоритм зашифрования
В настоящем контрольном примере зашифрование проводится при значениях итерационных ключей из А.3.3. Пусть открытый текст, подлежащий зашифрованию, равен
а=fedcba9876543210,
тогда
Результатом зашифрования является шифртекст
A.3.5 Алгоритм расшифрования
В настоящем контрольном примере расшифрование проводится при значениях итерационных ключей из А.3.3. Пусть шифртекст, подлежащий расшифрованию, равен шифртексту, полученному в предыдущем пункте:
b=4ee901e5c2d8ca3d,
тогда
Результатом расшифрования является открытый текст
Библиография
Примечание - Оригиналы международных стандартов ИСО/МЭК находятся в национальных (государственных) органах по стандартизации* государств, принявших настоящий стандарт.
______________
* В Российской Федерации оригиналы международных стандартов ИСО/МЭК находятся в Федеральном информационном фонде стандартов.
[1] | ИСО/МЭК 10116:2017 (ISO/IEC 10116:2017) | Информационная технология. Методы и средства обеспечения безопасности. Режимы работы при использовании алгоритмов кодирования для режима n-разрядного блочного шифрования (Information technology - Security techniques - Modes of operation for an n-bit block cipher) |
[2] | ИСО/МЭК 18033-1:2015 (ISO/IEC 18033-1:2015) | Информационные технологии. Методы и средства обеспечения безопасности. Алгоритмы шифрования. Часть 1. Общие положения (Information technology - Security techniques - Encryption algorithms - Part 1: General) |
[3] | ИСО/МЭК 18033-3:2010 (ISO/IEC 18033-3:2010) | Информационные технологии. Методы и средства обеспечения безопасности. Алгоритмы шифрования. Часть 3. Блочные шифры (Information technology - Security techniques - Encryption algorithms - Part 3: Block ciphers) |
УДК 681.3.06:006.354 | МКС 35.040 |
Ключевые слова: информационная технология, криптографическая защита информации, симметричный криптографический метод, зашифрование, расшифрование, блочный шифр, ключ |
Редакция документа с учетом
изменений и дополнений подготовлена