2.1.2
2.1.3
2.1.4
2.1.5
Примечание - В настоящем стандарте установлено, что термины "блочный шифр" и "алгоритм блочного шифрования" являются синонимами.
2.1.6
2.1.7
2.1.8
2.1.9
2.1.10
Примечание - В настоящем стандарте рассматриваются ключи только в виде последовательности двоичных символов (битов).
2.1.11
2.1.12
2.1.13
Примечание - В настоящем стандарте в целях сохранения терминологической преемственности по отношению к опубликованным научно-техническим изданиям применяется термин "шифрование", объединяющий операции, определенные терминами "зашифрование" и "расшифрование". Конкретное значение термина "шифрование" определяется в зависимости от контекста упоминания.
2.1.14
2.1.15
2.1.16
2.1.17
2.1.18
2.1.19
В настоящем стандарте используются следующие обозначения:
V* - множество всех двоичных строк конечной длины, включая пустую строку;
Vs - множество всех двоичных строк длины s, где s - целое неотрицательное число; нумерация подстрок и компонент строки осуществляется справа налево начиная с нуля;
|A| - число компонент (длина) строки
A||B - конкатенация строк
, т.е. строка из V|A|+|B|, в которой подстрока с большими номерами компонент из V|A| совпадает со строкой A, а подстрока с меньшими номерами компонент из V|B| совпадает со строкой B;0r - строка, состоящая из r нулей;
- операция вычисления остатка от деления целого числа x на целое положительное число - отображение, ставящее в соответствие строкеzm-1 ... ||z1||z0, m >= s, строку zm-1||...||zm-s+1||zm-s,
- отображение, ставящее в соответствие строкеzm-1 ... ||z1||z0, m >= s, строку zs-1||...||z1||z0,
- операция логического сдвига строки A на r компонент в сторону компонент, имеющих большие номера.Если
, причем![]() - отображение, ставящее в соответствие строке многочлен ; - биективное отображение, сопоставляющее элементу кольца в виде z = z0 + 2·z1 + ... + 2s-1·zs-1,
где
, i = 0, 1, ..., s - 1, выполнено равенствоVecs(z) = zs-1||...||z1||z0;
- отображение, обратное к отображению Vecs, т.е.lnts = Vecs-1;
k - параметр алгоритма блочного шифрования, называемый длиной ключа;
n - параметр алгоритма блочного шифрования, называемый длиной блока;
- отображение, реализующее базовый алгоритм блочного шифрования и осуществляющее преобразование блока открытого текста ; - отображение, реализующее зашифрование с использованием ключа - отображение, реализующее расшифрование с использованием ключаНастоящий стандарт определяет следующие режимы работы алгоритмов блочного шифрования:
- режим простой замены (Electronic Codebook, ECB);
- режим гаммирования (Counter, CTR);
- режим гаммирования с обратной связью по выходу (Output Feedback, OFB);
- режим простой замены с зацеплением (Cipher Block Chaining, CBC);
- режим гаммирования с обратной связью по шифртексту (Cipher Feedback, CFB);
- режим выработки имитовставки (Message Authentication Code algorithm).
Данные режимы могут использоваться в качестве режимов для блочных шифров с произвольной длиной блока n.
Отдельные из описанных ниже режимов работы (режим гаммирования, режим гаммирования с обратной связью по выходу, режим гаммирования с обратной связью по шифртексту) могут осуществлять криптографическое преобразование сообщений произвольной длины. Для других режимов (режим простой замены, режим простой замены с зацеплением) требуется, чтобы длина сообщения была кратна некоторой величине
Пусть
Пусть
. Положим![]() Примечание - Описанная процедура в некоторых случаях не обеспечивает однозначного восстановления исходного сообщения. Например, результаты дополнения сообщений P1, такого что
для некоторого q, и P2 = P1||0 будут одинаковы. В этом случае для однозначного восстановления необходимо дополнительно знать длину исходного сообщения.Пусть
. Положим .Примечание - Данная процедура обеспечивает однозначное восстановление исходного сообщения. При этом если длина исходного сообщения кратна
Пусть
.В зависимости от значения r возможны случаи:
- если r = n, то последний блок не изменяется P* = P;
- если r < n, то применяется процедура 2.
Примечания
1 Данная процедура обязательна для режима выработки имитовставки (5.6) и не рекомендуется для использования в других режимах (5.1 - 5.5).
2 Выбор конкретной процедуры дополнения предоставляется разработчику информационной системы и/или регламентируется другими нормативными документами.
В некоторых режимах работы используются величины, начальное значение которых вычисляется на основании синхропосылки IV; обозначим через m суммарную длину указанных величин. Будем обозначать процедуру выработки начального значения через Im:V|IV| -> Vm и называть процедурой инициализации. Будем называть процедуру инициализации тривиальной, если I|IV| = IV. Если не оговорено иное, будем считать, что используется тривиальная процедура инициализации на основе синхропосылки необходимой длины.
Во всех описываемых в настоящем стандарте режимах работы не требуется обеспечение конфиденциальности синхропосылки. Вместе с тем процедура выработки синхропосылки должна удовлетворять одному из следующих требований.
- Значения синхропосылки для режимов простой замены с зацеплением и гаммирования с обратной связью по шифртексту необходимо выбирать случайно, равновероятно и независимо друг от друга из множества всех допустимых значений. В этом случае значение каждой используемой синхропосылки IV должно быть непредсказуемым (случайным или псевдослучайным): зная значения всех других используемых синхропосылок, значение IV нельзя определить с вероятностью большей, чем 2-|IV|.
- Все значения синхропосылок, выработанных для зашифрования на одном и том же ключе в режиме гаммирования, должны быть уникальными, т.е. попарно различными. Для выработки значений синхропосылок может быть использован детерминированный счетчик.
- Значение синхропосылки для режима гаммирования с обратной связью по выходу должно быть либо непредсказуемым (случайным или псевдослучайным), либо уникальным.
Примечание - Режим простой замены не предусматривает использования синхропосылки.
В некоторых режимах используется усечение строк длины n до строк длины s, s <= n, с использованием функции Ts = MSBs, т.е. в качестве операции усечения используется операция взятия бит с большими номерами.
Длина сообщений, зашифровываемых в режиме простой замены, должна быть кратна длине блока базового алгоритма блочного шифрования n, поэтому, при необходимости, к исходному сообщению должна быть предварительно применена процедура дополнения.
Зашифрование (расшифрование) в режиме простой замены заключается в зашифровании (расшифровании) каждого блока текста с помощью базового алгоритма блочного шифрования.
5.1.1 Зашифрование
Открытый и, при необходимости, дополненный текст
Ci = eK(Pi), i = 1, 2, ..., q. (1)
Результирующий шифртекст имеет вид:
C = C1||C2|| ...||Cq.
Зашифрование в режиме простой замены проиллюстрировано на рисунке 1.
![]() Рисунок 1 - Зашифрование в режиме простой замены
5.1.2 Расшифрование
Шифртекст представляется в виде: C = C1||C2|| ...||Cq,
Pi = dK(Ci), i = 1, 2, ..., q. (2)
Исходный (дополненный) открытый текст имеет вид:
P = P1||P2|| ...||Pq.
Примечание - Если к исходному открытому тексту была применена процедура дополнения, то после расшифрования следует произвести обратную процедуру. Для однозначного восстановления сообщения может потребоваться знание длины исходного сообщения.
Расшифрование в режиме простой замены проиллюстрировано на рисунке 2.
![]() Рисунок 2 - Расшифрование в режиме простой замены
Параметром режима гаммирования является целочисленная величина s 0 < s <= n. При использовании режима гаммирования не требуется применение процедуры дополнения сообщения.
Для зашифрования (расшифрования) каждого отдельного открытого текста на одном ключе используется значение уникальной синхропосылки
.Зашифрование в режиме гаммирования заключается в покомпонентном сложении открытого текста с гаммой шифра, которая вырабатывается блоками длины s путем зашифрования последовательности значений счетчика
, i = 1, 2, ..., базовым алгоритмом блочного шифрования с последующим усечением. Начальным значением счетчика является . Последующие значения счетчика вырабатываются с помощью функции Add: следующим образом: . (3)5.2.1 Зашифрование
Открытый текст
P = P1||P2|| ...||Pq,
Блоки шифртекста вычисляются по следующему правилу:
(4)Результирующий шифртекст имеет вид:
C = C1||C2||...||Cq.
Зашифрование в режиме гаммирования проиллюстрировано на рисунке 3.
![]() Рисунок 3 - Зашифрование в режиме гаммирования
5.2.2 Расшифрование
Шифртекст представляется в виде: C = C1||C2||...||Cq,
, r <= s.Блоки открытого текста вычисляются по следующему правилу:
(5)Исходный открытый текст имеет вид
P = P1||P2||...||Pq.
Расшифрование в режиме гаммирования проиллюстрировано на рисунке 4.
![]() Рисунок 4 - Расшифрование в режиме гаммирования
Параметрами режима гаммирования с обратной связью по выходу являются целочисленные величины s и m, 0 < s <= n, m = n·z, z >= 1 - целое число.
При использовании режима гаммирования с обратной связью по выходу не требуется применение процедуры дополнения сообщения.
При шифровании на одном ключе для каждого отдельного открытого текста используется значение уникальной или непредсказуемой (случайной или псевдослучайной) синхропосылки
.При шифровании в режиме гаммирования с обратной связью по выходу используется двоичный регистр сдвига R длины m. Начальным заполнением регистра является значение синхропосылки IV.
Зашифрование в режиме гаммирования с обратной связью по выходу заключается в покомпонентном сложении открытого текста с гаммой шифра, которая вырабатывается блоками длины s. При вычислении очередного блока гаммы выполняется зашифрование n разрядов регистра сдвига с большими номерами базовым алгоритмом блочного шифрования. Затем заполнение регистра сдвигается на n бит в сторону разрядов с большими номерами, при этом в разряды с меньшими номерами записывается полученный выход базового алгоритма блочного шифрования. Блок гаммы вычисляется путем усечения выхода базового алгоритма блочного шифрования.
5.3.1 Зашифрование
Открытый текст
(6)Результирующий шифртекст имеет вид:
C = C1||C2||...||Cq.
Зашифрование в режиме гаммирования с обратной связью по выходу проиллюстрировано на рисунке 5.
![]() Рисунок 5 - Зашифрование в режиме гаммирования с обратной
связью по выходу
5.3.2 Расшифрование
Шифртекст представляется в виде: C = C1||C2||...||Cq,
, r <= s.Блоки открытого текста вычисляются по следующему правилу:
(7)Исходный открытый текст имеет вид
P = P1||P2||...||Pq.
Расшифрование в режиме гаммирования с обратной связью по выходу проиллюстрировано на рисунке 6.
![]() Рисунок 6 - Расшифрование в режиме гаммирования с обратной
связью по выходу
Параметром режима простой замены с зацеплением является целочисленная величина m, m = n·z, z >= 1 - целое число.
Длина сообщений, зашифровываемых в режиме простой замены с зацеплением, должна быть кратна длине блока базового алгоритма блочного шифрования n, поэтому, при необходимости, к исходному сообщению должна быть предварительно применена процедура дополнения.
При шифровании на одном ключе для каждого отдельного открытого текста используется значение непредсказуемой (случайной или псевдослучайной) синхропосылки
.При шифровании в режиме простой замены с зацеплением используется двоичный регистр сдвига R длины m. Начальным заполнением регистра является значение синхропосылки IV.
В режиме простой замены с зацеплением очередной блок шифртекста получается путем зашифрования результата покомпонентного сложения значения очередного блока открытого текста со значением n разрядов регистра сдвига с большими номерами. Затем регистр сдвигается на один блок в сторону разрядов с большими номерами. В разряды с меньшими номерами записывается значение блока шифртекста.
5.4.1 Зашифрование
Открытый и, при необходимости, дополненный текст
(8)Результирующий шифртекст имеет вид:
C = C1||C2||...||Cq.
Зашифрование в режиме простой замены с зацеплением проиллюстрировано на рисунке 7.
![]() Рисунок 7 - Зашифрование в режиме простой замены
с зацеплением
5.4.2 Расшифрование
Шифртекст представляется в виде: C = C1||C2||...||Cq,
(9)Исходный (дополненный) открытый текст имеет вид:
P = P1||P2||...||Pq.
Примечание - Если к исходному открытому тексту была применена процедура дополнения, то после расшифрования следует произвести обратную процедуру. Для однозначного восстановления сообщения может потребоваться знание длины исходного сообщения.
Расшифрование в режиме простой замены с зацеплением проиллюстрировано на рисунке 8.
![]() Рисунок 8 - Расшифрование в режиме простой замены
с зацеплением
Параметрами режима гаммирования с обратной связью по шифртексту являются целочисленные величины s и m, 0 < s <= n, n <= m.
В конкретной системе обработки информации на длину сообщения P может как накладываться ограничение |P| = s·q, так и не накладываться никаких ограничений. В случае если такое ограничение накладывается, к исходному сообщению, при необходимости, должна быть предварительно применена процедура дополнения.
При шифровании на одном ключе для каждого отдельного открытого текста используется значение непредсказуемой (случайной или псевдослучайной) синхропосылки
.При шифровании в режиме гаммирования с обратной связью по шифртексту используется двоичный регистр сдвига R длины m. Начальным заполнением регистра является значение синхропосылки IV.
Зашифрование в режиме гаммирования с обратной связью по шифртексту заключается в покомпонентном сложении открытого текста с гаммой шифра, которая вырабатывается блоками длины s. При вычислении очередного блока гаммы выполняется зашифрование n разрядов регистра сдвига с большими номерами базовым алгоритмом блочного шифрования с последующим усечением. Затем заполнение регистра сдвигается на s разрядов в сторону разрядов с большими номерами, при этом в разряды с меньшими номерами записывается полученный блок шифртекста, являющийся результатом покомпонентного сложения гаммы шифра и блока открытого текста.
5.5.1 Зашифрование
Открытый текст
(10)Результирующий шифртекст имеет вид:
C = C1||C2||...||Cq.
Зашифрование в режиме гаммирования с обратной связью по шифртексту проиллюстрировано на рисунке 9.
![]() Рисунок 9 - Зашифрование в режиме гаммирования с обратной
связью по шифртексту
5.5.2 Расшифрование
Шифртекст представляется в виде: C = C1||C2||...||Cq,
(11)Исходный открытый текст имеет вид:
P = P1||P2||...||Pq.
Примечание - Если к исходному открытому тексту была применена процедура дополнения, то после расшифрования следует произвести обратную процедуру. Для однозначного восстановления сообщения может потребоваться знание длины исходного сообщения.
Расшифрование в режиме гаммирования с обратной связью по шифртексту проиллюстрировано на рисунке 10.
![]() Рисунок 10 - Расшифрование в режиме гаммирования с обратной
связью по шифртексту
Режим выработки имитовставки, описание которого представлено ниже, реализует конструкцию OMAC1 (стандартизован в ISO под названием CMAC [1]).
Параметром режима является длина имитовставки (в битах) 0 < s <= n.
5.6.1 Выработка вспомогательных ключей
При вычислении значения имитовставки используются вспомогательные ключи, которые вычисляются с использованием ключа K. Длины вспомогательных ключей равны длине блока n базового алгоритма блочного шифрования.
Процедура выработки вспомогательных ключей может быть представлена в следующей форме
![]() где B64 = 059||11011, B128 = 0120||10000111.
Если значение n отлично от 64 и 128, следует использовать следующую процедуру определения значения константы Bn. Рассмотрим множество примитивных многочленов степени n над полем GF(2) с наименьшим количеством ненулевых коэффициентов. Упорядочим это множество лексикографически по возрастанию векторов коэффициентов и обозначим через fn(x) первый многочлен в этом упорядоченном множестве.
Рассмотрим поле GF(2n)[x]/(fn(x)), зафиксируем в нем степенной базис и будем обозначать операцию умножения в этом поле символом
(12)Примечание - Вспомогательные ключи K1, K2 и промежуточное значение R наряду с ключом K являются секретными параметрами. Компрометация какого-либо из этих значений приводит к возможности построения эффективных методов анализа всего алгоритма.
5.6.2 Вычисление значения имитовставки
Процедура вычисления значения имитовставки похожа на процедуру зашифрования в режиме простой замены с зацеплением при m = n и инициализации начального заполнения регистра сдвига значением 0n: на вход алгоритму шифрования подается результат покомпонентного сложения очередного блока текста и результата зашифрования на предыдущем шаге. Основное отличие заключается в процедуре обработки последнего блока: на вход базовому алгоритму блочного шифрования подается результат покомпонентного сложения последнего блока, результата зашифрования на предыдущем шаге и одного из вспомогательных ключей. Конкретный вспомогательный ключ выбирается в зависимости от того, является ли последний блок исходного сообщения полным или нет. Значением имитовставки MAC является результат применения процедуры усечения к выходу алгоритма шифрования при обработке последнего блока.
Исходное сообщение
P = P1||P2||...||Pq.
где
Процедура вычисления имитовставки описывается следующим образом:
(13)где
![]() Процедура вычисления имитовставки проиллюстрирована на рисунках 11 - 13.
![]() Рисунок 11 - Вычисление значения имитовставки - общий вид
Примечание - Настоятельно рекомендуется не использовать ключ режима выработки имитовставки в других криптографических алгоритмах, в том числе в режимах, обеспечивающих конфиденциальность, описанных в 5.1 - 5.5.
![]() Рисунок 12 - Вычисление значения имитовставки - случай
полного последнего блока
![]() с дополнением последнего блока
(справочное)
Данное приложение носит справочный характер и не является частью настоящего стандарта.
В данном приложении содержатся примеры для зашифрования и расшифрования сообщений, а также выработки имитовставки, с использованием режимов работы шифра, определенных в данном стандарте. Параметр s выбран равным n с целью упрощения проводимых вычислений, а параметр m выбирался из соображений демонстрации особенностей каждого режима шифрования. Двоичные строки из V*, длина которых кратна 4, записываются в шестнадцатеричном виде, а символ конкатенации ("||") опускается. То есть, строка
, i = 0, 1, ..., r - 1.В А.1 приведены примеры для блочного шифра с длиной блока n = 128 бит ("Кузнечик"). В А.2 приведены примеры для блочного шифра с длиной блока n = 64 бит ("Магма").
А.1 Блочный шифр с длиной блока n = 128 бит
Примеры используют следующие параметры:
Ключ
K = 8899aabbccddeeff0011223344556677fedcba98765432100123456789abcdef.
Открытый текст - четыре 128-битных блока:
P1 = 1122334455667700ffeeddccbbaa9988,
P2 = 00112233445566778899aabbcceeff0a,
P3 = 112233445566778899aabbcceeff0a00,
P4 = 2233445566778899aabbcceeff0a0011.
А.1.1 Режим простой замены
Таблица А.1
Зашифрование в режиме простой замены
А.1.2 Режим гаммирования
А.1.2.1 Зашифрование
s = n = 128,
IV = 1234567890abcef0.
Таблица А.2
Зашифрование в режиме гаммирования
Окончание таблицы А.2
А.1.2.2 Расшифрование
С использованием приведенных значений K, IV, и C с помощью операции расшифрования воспроизводятся исходные значения P1, P2, P3, P4.
А.1.3 Режим гаммирования с обратной связью по выходу
А.1.3.1 Зашифрование
s = n = 128, m = 2n = 256,
IV = 1234567890abcef0a1b2c3d4e5f0011223344556677889901213141516171819.
Таблица А.3
Зашифрование в режиме гаммирования с обратной связью
по выходу
Окончание таблицы А.3
А.1.3.2 Расшифрование
С использованием приведенных значений K, IV, и C и с помощью операции расшифрования воспроизводятся исходные значения P1, P2, P3, P4.
А.1.4 Режим простой замены с зацеплением
А.1.4.1 Зашифрование
m = 2n = 256,
IV = 1234567890abcef0a1b2c3d4e5f0011223344556677889901213141516171819.
Таблица А.4
Зашифрование в режиме простой замены с зацеплением
Окончание таблицы А.4
А.1.4.2 Расшифрование
С использованием приведенных значений K, IV и C и с помощью операции расшифрования воспроизводятся исходные значения P1, P2, P3, P4.
А.1.5 Режим гаммирования с обратной связью по шифртексту
А.1.5.1 Зашифрование
s = n = 128, m = 2n = 256,
IV = 1234567890abcef0a1b2c3d4e5f0011223344556677889901213141516171819.
Таблица А.5
Зашифрование в режиме гаммирования с обратной связью
по шифртексту
Окончание таблицы А.5
А.1.5.2 Расшифрование
С использованием приведенных значений K, IV и C с помощью операции расшифрования воспроизводятся исходные значения P1, P2, P3, P4.
А.1.6 Режим выработки имитовставки
А.1.6.1 Выработка вспомогательных ключей
R = 94bec15e269cf1e506f02b994c0a8ea0,
MSB1(R) = 1,
![]() MSB1(K1) = 0,
K2 = K1 << 1 = 297d82bc4d39e3ca0de0573298151dc7 << 1 = 52fb05789a73c7941bc0ae65302a3b8e,
|P4| = n, K* = K1.
А.1.6.2 Вычисление имитовставки
s = 64.
Таблица А.6
Вычисление имитовставки
Окончание таблицы А.6
Примеры используют следующие параметры.
Ключ
K = ffeeddccbbaa99887766554433221100f0f1f2f3f4f5f6f7f8f9fafbfcfdfeff.
Открытый текст - четыре 64-битных блока:
P1 = 92def06b3c130a59,
P2 = db54c704f8189d20,
P3 = 4a98fb2e67a8024c,
P4 = 8912409b17b57e41.
А.2.1 Режим простой замены
Таблица А.7
Зашифрование в режиме простой замены
А.2.2 Режим гаммирования
А.2.2.1 Зашифрование
s = n = 64,
IV = 12345678.
Таблица А.8
Зашифрование в режиме гаммирования
Окончание таблицы А.8
А.2.2.2 Расшифрование
С использованием приведенных значений K, IV и C с помощью операции расшифрования воспроизводятся исходные значения P1, P2, P3, P4.
А.2.3 Режим гаммирования с обратной связью по выходу
А.2.3.1 Зашифрование
s = n = 64, m = 2n = 128,
IV = 1234567890abcdef234567890abcdef1.
Таблица А.9
Зашифрование в режиме гаммирования с обратной связью
Окончание таблицы А.9
А.2.3.2 Расшифрование
С использованием приведенных значений K, IV и C с помощью операции расшифрования воспроизводятся исходные значения P1, P2, P3, P4.
А.2.4 Режим простой замены с зацеплением
А.2.4.1 Зашифрование
m = 3n = 192,
IV = 1234567890abcdef234567890abcdef134567890abcdef12.
Таблица А.10
Зашифрование в режиме простой замены с зацеплением
Окончание таблицы А.10
А.2.4.2 Расшифрование
С использованием приведенных значений K, IV и C с помощью операции расшифрования воспроизводятся исходные значения P1, P2, P3, P4.
А.2.5 Режим гаммирования с обратной связью по шифртексту
А.2.5.1 Зашифрование
s = n = 64, m = 2n = 128,
IV = 1234567890abcdef234567890abcdef1.
Таблица А.11
Зашифрование в режиме гаммирования с обратной связью
по шифртексту
Окончание таблицы А.11
А.2.5.2 Расшифрование
С использованием приведенных значений K, IV и C с помощью операции расшифрования воспроизводятся исходные значения P1, P2, P3, P4.
А.2.6 Режим выработки имитовставки
А.2.6.1 Выработка вспомогательных ключей
R = 2fa2cd99a1290a12,
MSB1(R) = 0, K1 = R << 1 = 5f459b3342521424,
MSB1(K1) = 0, следовательно K2 = K1 << 1 = be8b366684a42848,
|P4| = n, K* = K1.
А.2.6.2 Вычисление имитовставки
s = 32.
Таблица А.12
Вычисление имитовставки
Окончание таблицы А.12
MAC = 154e7210.
--------------------------------
<*> Оригиналы международных стандартов ИСО/МЭК находятся во ФГУП "Стандартинформ" Федерального агентства по техническому регулированию и метрологии.
Вернуться в "Каталог нормативных документов"
Источник информации: https://internet-law.ru/documents/prod/gost-r_gosudarstvennyj-standart/35/gost_19275.html
На правах рекламы:
|