Information technology. Cryptographic data security. Block ciphers
Дата введения - 1 января 2016 г.
Введен впервые
Предисловие
1 Разработан Центром защиты информации и специальной связи ФСБ России с участием Открытого акционерного общества "Информационные технологии и коммуникационные системы" (ОАО "ИнфоТеКС")
2 Внесен Техническим комитетом по стандартизации ТК 26 "Криптографическая защита информации"
3 Утвержден и введен в действие приказом Федерального агентства по техническому регулированию и метрологии от 19 июня 2015 г. N 749-ст
4 Введен впервые
Введение
Настоящий стандарт содержит описание алгоритмов блочного шифрования, которые применяются в криптографических методах защиты информации.
Необходимость разработки стандарта вызвана потребностью в создании блочных шифров с различными длинами блока, соответствующих современным требованиям к криптографической стойкости и эксплуатационным качествам.
Настоящий стандарт терминологически и концептуально увязан с международными стандартами ИСО/МЭК 10116 [1] и серии ИСО/МЭК 18033 [2], [3].
Примечание - Основная часть стандарта дополнена приложением А.
1 Область применения
Настоящий стандарт определяет алгоритмы базовых блочных шифров, которые применяются в криптографических методах обработки и защиты информации, в том числе для обеспечения конфиденциальности, аутентичности и целостности информации при ее передаче, обработке и хранении в автоматизированных системах.
Определенные в настоящем стандарте алгоритмы криптографического преобразования предназначены для аппаратной или программной реализации, удовлетворяют современным криптографическим требованиям и по своим возможностям не накладывают ограничений на степень секретности защищаемой информации.
Стандарт рекомендуется использовать при создании, эксплуатации и модернизации систем обработки информации различного назначения.
2 Термины, определения и обозначения
2.1 Термины и определения
В настоящем стандарте применены следующие термины с соответствующими определениями.
2.1.1
алгоритм зашифрования (encryption algorithm): Алгоритм, реализующий зашифрование, т.е. преобразующий открытый текст в шифртекст. [ИСО/МЭК 18033-1, статья 2.19] |
2.1.2
алгоритм расшифрования (decryption algorithm): Алгоритм, реализующий расшифрование, т.е. преобразующий шифртекст в открытый текст. [ИСО/МЭК 18033-1, статья 2.14] |
2.1.3
базовый блочный шифр (basic block cipher): Блочный шифр, реализующий при каждом фиксированном значении ключа одно обратимое отображение множества блоков открытого текста фиксированной длины в блоки шифртекста такой же длины. |
2.1.4
блок (block): Строка бит определенной длины. [ИСО/МЭК 18033-1, статья 2.6] |
2.1.5
блочный шифр (block cipher): Шифр из класса симметричных криптографических методов, в котором алгоритм зашифрования применяется к блокам открытого текста для получения блоков шифртекста. [ИСО/МЭК 18033-1, статья 2.7] |
Примечание - В настоящем стандарте установлено, что термины "блочный шифр" и "алгоритм блочного шифрования" являются синонимами.
2.1.6
зашифрование (encryption): Обратимое преобразование данных с помощью шифра, которое формирует шифртекст из открытого текста. [ИСО/МЭК 18033-1, статья 2.18] |
2.1.7
итерационный ключ (round key): Последовательность символов, вычисляемая в процессе развертывания ключа шифра, и определяющая преобразование на одной итерации блочного шифра. |
2.1.8
ключ (key): Изменяемый параметр в виде последовательности символов, определяющий криптографическое преобразование. [ИСО/МЭК 18033-1, статья 2.21] |
Примечание - В настоящем стандарте рассматриваются ключи только в виде последовательности двоичных символов (битов).
2.1.9
открытый текст (plaintext): Незашифрованная информация. [ИСО/МЭК 10116, статья 3.11] |
2.1.10
развертывание ключа (key schedule): Вычисление итерационных ключей из ключа шифра. |
2.1.11
расшифрование (decryption): Операция, обратная к зашифрованию. [ИСО/МЭК 18033-1, статья 2.13] |
Примечание - В настоящем стандарте в целях сохранения терминологической преемственности по отношению к опубликованным научно-техническим изданиям применяется термин "шифрование", объединяющий операции, определенные терминами "зашифрование" и "расшифрование". Конкретное значение термина "шифрование" определяется в зависимости от контекста упоминания.
2.1.12
симметричный криптографический метод (symmetric cryptographic technique): Криптографический метод, использующий один и тот же ключ для преобразования, осуществляемого отправителем, и преобразования, осуществляемого получателем. [ИСО/МЭК 18033-1, статья 2.32] |
2.1.13
шифр (cipher): Криптографический метод, используемый для обеспечения конфиденциальности данных, включающий алгоритм зашифрования и алгоритм расшифрования. [ИСО/МЭК 18033-1, статья 2.20] |
2.1.14
шифртекст (ciphertext): Данные, полученные в результате зашифрования открытого текста с целью скрытия его содержания. [ИСО/МЭК 10116, статья 3.3] |
2.2 Обозначения
В настоящем стандарте используются следующие обозначения:
V* |
- |
множество всех двоичных строк конечной длины, включая пустую строку; |
- |
множество всех двоичных строк длины s, где s - целое неотрицательное число; нумерация подстрок и компонент строки осуществляется справа налево начиная с нуля; |
|
- |
прямое (декартово) произведение множества U и множества W; |
|
- |
число компонент (длина) строки * (если А - пустая строка, то = 0); |
|
- |
конкатенация строк A, *, т.е. строка из , в которой подстрока с большими номерами компонент из совпадает со строкой A, а подстрока с меньшими номерами компонент из совпадает со строкой B; |
|
- |
циклический сдвиг строки на 11 компонент в сторону компонент, имеющих большие номера; |
|
- |
операция покомпонентного сложения по модулю 2 двух двоичных строк одинаковой длины; |
|
- |
кольцо вычетов по модулю ; |
|
- |
операция сложения в кольце ; |
|
- |
конечное поле , где ; элементы поля представляются целыми числами, причем элементу
соответствует число , где и обозначает класс вычетов по модулю , содержащий х; |
|
- |
биективное отображение, сопоставляющее элемент у кольца его двоичное представление, т.е. для любого элемента , представленного в виде
, где , выполнено равенство ; |
|
- |
отображение, обратное к отображению , т.е. = ; |
|
- |
биективное отображение, сопоставляющее двоичной строке из элемент поля следующим образом: строке ,
соответствует элемент ; |
|
- |
отображение, обратное к отображению , т.e. ; |
|
- |
композиция отображений, при которой отображение действует первым; |
|
- |
композиция отображений и Ф, причем . |
3 Общие положения
В настоящем стандарте приведено описание двух базовых блочных шифров с длинами блоков n = 128 бит и n = 64 бит и длинами ключей k = 256 бит.
Примечания
1 На описанный в настоящем стандарте шифр с длиной блока n = 128 бит можно ссылаться как на блочный шифр "Кузнечик" ("Kuznyechik").
2 На описанный в настоящем стандарте шифр с длиной блока n = 64 бит можно ссылаться как на блочный шифр "Магма" ("Magma").
4 Алгоритм блочного шифрования с длиной блока n = 128 бит
4.1 Значения параметров
4.1.1 Нелинейное биективное преобразование
В качестве нелинейного биективного преобразования выступает подстановка , где . Значения подстановки записаны ниже в виде массива
= (252, 238, 221, 17, 207, 110, 49, 22, 251, 196, 250, 218, 35, 197, 4, 77, 233, 119, 240, 219, 147, 46, 153, 186, 23, 54, 241, 187, 20, 205, 95, 193, 249, 24, 101, 90, 226, 92, 239, 33, 129, 28, 60, 66, 139, 1, 142, 79, 5, 132, 2, 174, 227, 106, 143, 160, 6, 11, 237, 152, 127, 212, 211, 31, 235, 52, 44, 81, 234, 200, 72, 171, 242, 42, 104, 162, 253, 58, 206, 204, 181, 112, 14, 86, 8, 12, 118, 18, 191, 114, 19, 71, 156, 183, 93, 135, 21, 161, 150, 41, 16, 123, 154, 199, 243, 145, 120, 111, 157, 158, 178, 177, 50, 117, 25, 61, 255, 53, 138, 126, 109, 84, 198, 128, 195, 189, 13, 87, 223, 245, 36, 169, 62, 168, 67, 201, 215, 121, 214, 246, 124, 34, 185, 3, 224, 15, 236, 222, 122, 148, 176, 188, 220, 232, 40, 80, 78, 51, 10, 74, 167, 151, 96, 115, 30, 0, 98, 68, 26, 184, 56, 130, 100, 159, 38, 65, 173, 69, 70, 146, 39, 94, 85, 47, 140, 163, 165, 125, 105, 213, 149, 59, 7, 88, 179, 64, 134, 172, 29, 247, 48, 55, 107, 228, 136, 217, 231, 137, 225, 27, 131, 73, 76, 63, 248, 254, 141, 83, 170, 144, 202, 216, 133, 97, 32, 113, 103, 164, 45, 43, 9, 91, 203, 155, 37, 208, 190, 229, 108, 82, 89, 166, 116, 210, 230, 244, 180, 192, 209, 102, 175, 194, 57, 75, 99, 182).
4.1.2 Линейное преобразование
Линейное преобразование задается отображением : , которое определяется следующим образом:
(1)
для любых , i = 0, 1, ..., 15, где операции сложения и умножения осуществляются в поле , а константы являются элементами поля в указанном ранее смысле.
4.2 Преобразования
При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:
, где ; |
(2) |
|
, где
; |
(3) |
|
преобразование, обратное к преобразованию S, которое может быть вычислено, например, следующим образом:
, где
, - подстановка, обратная к подстановке ; |
(4) |
|
, где ; |
(5) |
|
, где ; |
(6) |
|
преобразование, обратное к преобразованию R, которое может быть вычислено, например, следующим образом:
, где
; |
(7) |
|
, где ; |
(8) |
|
, где . |
(9) |
4.3 Алгоритм развертывания ключа
Алгоритм развертывания ключа использует итерационные константы , i = 1, 2, ..., 32, которые определены следующим образом:
.
(10)
Итерационные ключи , , вырабатываются на основе ключа , , и определяются равенствами:
;
;
(11)
.
4.4 Базовый алгоритм шифрования
4.4.1 Алгоритм зашифрования
Алгоритм зашифрования в зависимости от значений итерационных ключей , i = 1, 2, ..., 10, реализует подстановку , заданную на множестве в соответствии с равенством
,
(12)
где .
4.4.2 Алгоритм расшифрования
Алгоритм расшифрования в зависимости от значений итерационных ключей , i = 1, 2, ..., 10 реализует подстановку , заданную на множестве в соответствии с равенством
,
(13)
где .
5 Алгоритм блочного шифрования с длиной блока n = 64 бит
5.1 Значения параметров
5.1.1 Нелинейное биективное преобразование
В качестве нелинейного биективного преобразования выступают подстановки
, где . Значения подстановок записаны ниже в виде массивов :
= (12, 4, 6, 2, 10, 5, 11, 9, 14, 8, 13, 7, 0, 3, 15, 1);
= (6, 8, 2, 3, 9, 10, 5, 12, 1, 14, 4, 7, 11, 13, 0, 15);
= (11, 3, 5, 8, 2, 15, 10, 13, 14, 1, 7, 4, 12, 9, 6, 0);
= (12, 8, 2, 1, 13, 4, 15, 6, 7, 0, 10, 5, 3, 14, 9, 11);
= (7, 15, 5, 10, 8, 1, 6, 13, 0, 9, 3, 14, 11, 4, 2, 12);
= (5, 13, 15, 6, 9, 2, 12, 10, 11, 7, 8, 1, 4, 3, 14, 0);
= (8, 14, 2, 5, 6, 9, 1, 12, 15, 4, 11, 0, 13, 10, 3, 7);
= (1, 7, 14, 13, 0, 5, 8, 3, 4, 15, 10, 6, 9, 12, 11, 2).
5.2 Преобразования
При реализации алгоритмов зашифрования и расшифрования используются следующие преобразования:
,
где ; |
(14) |
|
, где k, ; |
(15) |
|
, где ; |
(16) |
|
, где . |
(17) |
5.3 Алгоритм развертывания ключа
Итерационные ключи , i = 1, 2, ..., 32, вырабатываются на основе ключа
и определяются равенствами:
;
;
;
;
;
;
;
;
;
;
.
(18)
5.4 Базовый алгоритм шифрования
5.4.1 Алгоритм зашифрования
Алгоритм зашифрования в зависимости от значений итерационных ключей , i = 1, 2, ..., 32 реализует подстановку , заданную на множестве в соответствии с равенством
,
(19)
где .
5.4.2 Алгоритм расшифрования
Алгоритм расшифрования в зависимости от значений итерационных ключей , i = 1, 2, ..., 32 реализует подстановку , заданную на множестве в соответствии с равенством
,
(20)
где .
Библиография*
_____________________________
* Оригиналы международных стандартов ИСО/МЭК находятся во ФГУП "Стандартинформ" Федерального агентства по техническому регулированию и метрологии.
Если вы являетесь пользователем интернет-версии системы ГАРАНТ, вы можете открыть этот документ прямо сейчас или запросить по Горячей линии в системе.
Национальный стандарт РФ ГОСТ Р 34.12-2015 "Информационная технология. Криптографическая защита информации. Блочные шифры" (утв. приказом Федерального агентства по техническому регулированию и метрологии от 19 июня 2015 г. N 749-ст)
Текст ГОСТа приводится по официальному изданию Стандартинформ, Москва, 2016 г.
Дата введения - 1 января 2016 г.