Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Беззатеев и др. Блоковые шифры.pdf
Скачиваний:
241
Добавлен:
02.04.2015
Размер:
1.75 Mб
Скачать

35

Как хорошо видно из Рис. 4.1, алгоритм имеет три этапа:

1.Этап прямого перемешивания использует сложение по модулю 232 32-битных блоков исходного текста с блоками ключа с последующим трансформированием полученных результатов в восьми циклах сети Файстела, не использующих ключ.

2."Криптографическое ядро" шифра, состоящее из 16 циклов сети Файстела с использованием ключа.

3.На последнем этапе выполняются преобразования, обратные к преобразованиям первого этапа, при этом вместо сложения используется операция вычитания по модулю 232 блоков ключа из информационных блоков.

Первый этап: прямое перемешивание

Рис. 4.2. Структурная схема одного цикла, используемого на этапе прямого перемешивания.

36

Как видно из схемы на Рис. 4.2, каждый цикл прямого перемешивания состоит из двух раундов, а каждый раунд — из четырех фаз, таким образом, общее число фаз в одном цикле — 8. В каждой фазе один из 32-битных информационных блоков используется как основной, а остальные три — как вспомогательные. Если обозначить четыре байта информационного блока полученного после

сложения D[0] и K[0] как b0 , b1 , b2 , b3 (где b0 — младший байт, а b3 — старший), тогда b0 и b2 обрабатываются S-box S0 , а b1 и b3 S-box S1 . S0[b0 ] складывается по модулю два с первым вспомогательным блоком, а затем результат складывается с S1[b1] по модулю 232. S0[b2 ] складывается по модулю 232 со вторым вспомогательным блоком, S1[b3 ] складывается по модулю два с

третьим вспомогательным блоком. Перед началом следующей фазы выполняется циклический сдвиг основного информационного блока на 24 бита вправо ( ЦСП( ,24) ) и для некоторых фаз

выполняется дополнительное суммирование по модулю 232 основного блока с одним из вспомогательных (для 1 и 4 фазы — с третьим, а для 1 и 5 фазы — с первым). После чего выполняется циклическое переприсвоение информационных блоков: основной блок становится третьим вспомогательным блоком, первый вспомогательный — основным блоком, и так далее — блок, бывший третьим вспомогательным, становится вторым вспомогательным блоком.

"Криптографическое ядро"

"Криптографическое ядро" алгоритма MARS представляет собой шестнадцать циклов сети Файстела (Рис. 4.3). На каждом цикле используется расширяющая функция E (Рис. 4.4), аргументами которой являются 32-битный информационный блок и соответствующие блоки ключа, а результатом — три 32-битных блока. В функции E используется расширяющая S-box, на вход которой поступают младшие 9 бит суммы, полученной в результате сложения по модулю 232 информационного блока и первого слова ключа. На выходе такой расширяющей S-box получается 32-битный блок. В двух случаях в функции циклического сдвига в качестве аргумента, указывающего, на сколько разрядов необходимо сдвинуть информационный блок, используются младшие 5 бит другого информационного блока.

Рис. 4.3. Один цикл "криптографического ядра".

37

Рис. 4.4. Функция E .

Обратное перемешивание

Обратное перемешивание — аналогично прямому, за исключением порядка использования информационных блоков (Рис. 4.5).

Процедура генерации ключей

Процедура генерации ключей расширяет исходный массив ключа k[ ], содержащий n 32-битных слов (где n — любое число от 4 до 14) до массива K[ ] из 40 слов. Для алгоритма MARS такая процедура должна обеспечивать получение ключевых слов в массиве K[ ] , обладающих следующими свойствами:

два младших бита в словах типа k' , используемых для умножения, должны быть равны нулю,

ни одно из сгенерированных ключевых слов не должно содержать десяти или более подряд идущих 0 или 1.

Для выполнения этих требований используется следующая структура процедуры генерации ключей:

1.Первоначально исходный ключ k[ ] помещается во вспомогательный массив T[ ] , состоящий из 15 слов:

T[0,,n 1] = k[0,,n 1] , T [n] = n , T[n +1,,14] = 0 .

2.Затем четыре раза выполняется следующая процедура, на каждом шаге которой вычисляются очередные десять слов расширенного ключа:

а) Массив T[ ] преобразуется с использованием следующей линейной функции:

для i = 0,,14 , T[i] = T[i] ЦСП(T[i-7 mod 15] T[i-2 mod 15], 3) (4i + j) ,

где j — номер шага (то есть j = 0 на первом шаге, j =1 — на втором, и так далее).

38

Рис. 4.5. Структурная схема одного цикла, используемого на этапе обратного перемешивания.

б) После этого массив T[ ] преобразуется с использованием четырех циклов сети Файстела, то есть для каждого i = 0,1,,14 четыре раза повторяется следующее преобразование:

T[i] = ЦСП((T[i] + S[младшие 9 бит слова T[i 1 mod 15]]), 9) ,

где S[ ] — расширяющая 9 ×12 S-box.

в) Затем первые десять слов массива T[ ] записываются в очередные десять слов расширенного ключа K[ ] :

K[10 j + i] = T[4i mod 15] , i = 0,1,,9 , j — номер шага.