Шаг 2
Поблочная замена. 32-битовое значение, полученное на пре- дыдущем шаге, интерпретируется как массив из восьми 4-бито- вых блоков кода: S = (S0, S1, S2, S3, S4, S5, S6, S7), причем S0 содер- жит четыре самых младших, а S7 – четыре самых старших бита S.
Далее значение каждого из восьми блоков заменяется но- вым, которое выбирается по таблице замен следующим образом: значение блока Si меняется на Si-й по порядку элемент (нумера- ция с нуля) i-го узла замены (то есть i-й строки таблицы замен, нумерация также с нуля). Другими словами, в качестве замены для значения блока выбирается элемент из таблицы замен с но- мером строки, равным номеру заменяемого блока, и номером столбца, равным значению заменяемого блока как 4-битового це- лого неотрицательного числа. Отсюда становится понятным раз- мер таблицы замен: число строк в ней равно числу 4-битовых эле- ментов в 32-битовом блоке данных, то есть восьми, а число столб- цов равно числу различных значений 4-битового блока данных, равному, как известно, в 24-битовом блоке – шестнадцати.
Шаг 3
R
11
Циклический сдвиг на 11 бит влево. Результат предыдущего шага сдвигается циклически на 11 бит в сторону старших разря- дов и передается на следующий шаг. На схеме алгоритма симво-
лом
обозначена функция циклического сдвига своего аргу-
Рис. 7.1
Ниже даны пояснения к алгоритму основного шага:
Шаг 0
Определяет исходные данные для основного шага крипто- преобразования:
N – преобразуемый 64-битовый блок данных, в ходе выпол- нения шага его младшая (N1) и старшая (N2) части обрабатыва- ются как отдельные 32-битовые целые числа без знака. Таким образом, можно записать N = (N1, N2).
X – 32-битовый элемент ключа.
мента на 11 бит влево, то есть в сторону старших разрядов.
Шаг 4
Побитовое сложение: значение, полученное на шаге 3, по- битно складывается по модулю 2 со старшей половиной преоб- разуемого блока.
Шаг 5
Сдвиг по цепочке: младшая часть преобразуемого блока сдвигается на место старшей, а на ее место помещается резуль- тат выполнения предыдущего шага.
Шаг 6
Полученное значение преобразуемого блока возвращается как результат выполнения алгоритма основного шага крипто- преобразования.
Базовые циклы криптографических преобразований
ГОСТ относится к классу блочных шифров, то есть едини- цей обработки информации в нем является блок данных. Следо- вательно, вполне логично ожидать, что в нем будут определены алгоритмы для криптографических преобразований, то есть для зашифрования/расшифрования и «учета» в контрольной комби- нации одного блока данных. Именно эти алгоритмы и называют- ся базовыми циклами ГОСТа, что подчеркивает их фундамен- тальное значение для построения этого шифра.
Базовые циклы построены из основных шагов криптографи- ческого преобразования, рассмотренного в предыдущем разделе. В процессе выполнения основного шага используется только один 32-битовый элемент ключа, в то время как ключ ГОСТа содержит восемь таких элементов. Следовательно, чтобы ключ был использован полностью, каждый из базовых циклов должен многократно выполнять основной шаг с различными его элемен- тами. Вместе с тем кажется вполне естественным, что в каждом базовом цикле все элементы ключа должны быть использованы одинаковое число раз, по соображениям стойкости шифра это число должно быть больше одного.
Цикл зашифрования 32-З:
K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, K2, K3, K4, K5, K6, K7, K0,
K1, K2, K3, K4, K5, K6, K7, K7, K6, K5, K4, K3, K2, K1, K0 (рис. 7.2).
Рис. 7.2
Цикл расшифрования 32-Р:
K0, K1, K2, K3, K4, K5, K6, K7, K7, K6, K5, K4, K3, K2, K1, K0, K7,
K6, K5, K4, K3, K2, K1, K0, K7, K6, K5, K4, K3, K2, K1, K0 (рис. 7.3).
Рис. 7.3
Цикл выработки имитовставки 16-З:
K0, K1, K2, K3, K4, K5, K6, K7, K0, K1, K2, K3, K4, K5, K6, K7 (рис. 7.4).
Рис. 7.4
Каждый из циклов имеет собственное буквенно-цифровое обозначение, соответствующее шаблону « n-X», где первый эле-
мент обозначения ( n), задает число повторений основного шага в цикле, а второй элемент обозначения ( X), (буква), задает порядок зашифрования («З») или расшифрования («Р») в использовании ключевых элементов.
Цикл расшифрования должен быть обратным циклу зашиф- рования, то есть последовательное применение этих двух циклов к произвольному блоку должно дать в итоге исходный блок, что отражается следующим соотношением: Ц 32-Р(Ц 32-З(T)) = T, где T – произвольный 64-битовый блок данных, Ц X(T) – резуль- тат выполнения цикла X над блоком данных T. Для выполнения этого условия для алгоритмов, подобных ГОСТу, необходимо и достаточно, чтобы порядок использования ключевых элементов соответствующими циклами был взаимно обратным. В справедли- вости записанного условия для рассматриваемого случая легко убедиться, сравнив приведенные выше последовательности для циклов 32-З и 32-Р. Из сказанного вытекает одно интересное следствие: свойство цикла быть обратным другому циклу явля- ется взаимным, то есть цикл 32-З является обратным по отноше- нию к циклу 32-Р. Другими словами, зашифрование блока дан- ных теоретически может быть выполнено с помощью цикла рас- шифрования, в этом случае расшифрование блока данных долж- но быть выполнено циклом зашифрования. Из двух взаимно об- ратных циклов любой может быть использован для зашифрования, тогда второй должен быть использован для расшифрования дан- ных, однако стандарт ГОСТ 28147–89 закрепляет роли за циклами и не предоставляет пользователю права выбора в этом вопросе.
Цикл выработки имитовставки вдвое короче циклов шифро- вания, порядок использования ключевых элементов в нем такой же, как в первых 16-ти шагах цикла зашифрования, в чем не- трудно убедиться, рассмотрев приведенные выше последова- тельности, поэтому этот порядок в обозначении цикла кодирует- ся той же самой буквой «З».
Схемы базовых циклов приведены на рис. 7.2–7.4. Каждый из них принимает в качестве аргумента и возвращает в качестве результата 64-битовый блок данных, обозначенный на схемах N. Символ «Шаг( N, X)» обозначает выполнение основного шага криптопреобразования для блока данных N с использованием ключевого элемента X. Между циклами шифрования и вычисле- ния имитовставки есть еще одно отличие, не упомянутое выше: в конце базовых циклов шифрования старшая и младшая часть
блока результата меняются местами, это необходимо для их взаим- ной обратимости.
Основные режимы шифрования
ГОСТ 28147–89 предусматривает три следующих режима шифрования данных:
простая замена;
гаммирование;
гаммирование с обратной связью и один дополнительный режим выработки имитовставки.
Достарыңызбен бөлісу: |