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

39

3.В заключение формируются шестнадцать слов типа k' расширенного ключа, используемых для умножения (это слова K[5] , K[7] , ..., K[35] ) так, чтобы они удовлетворяли бы пере-

численным выше свойствам. Заметим, что вероятность случайного получения слова, не удовлетворяющего второму свойству, составляет около 1/41. Процедура корректировки слов ключа K[i], i =5,7,,35 выглядит следующим образом:

а) Два младших бита слова K[i] запоминаются в j ( j = K[i] AND 3 ), после чего из K[i] формируется слово w , в котором оба младших бита исправляются на 1 ( w = K[i] OR 3 ).

б) Формируется маска M = (m0 , m1,, m31 ) из бит слова w , образующих последовательность из десяти или более подряд идущих нулей или единиц (то есть mi =1 тогда и

только тогда, когда в слове w на i -й позиции находится один из десяти (или более) подряд идущих нулей (или единиц). Далее полученное слово преобразуется следующим

образом:

mi = 0 для

всех i < 2 и i =31;

mi = 0 , если не соблюдается условие:

w = w 1 или w = w +1. Например, пусть

w = 031130121011 (где 0i , 1i обозначает по-

i

i

i

i

 

следовательность из i

подряд идущих 0 или 1). Тогда, сначала получим M = 0312504 , а

затем M = 041110011005 .

 

в) Генерируется вспомогательное слово p . Создается массив B[ ] из четырех слов, кото-

рые выбираются из таблицы векторов, участвующих в формировании S-box (A4A8D57B, 5B5D193B, C8A8309B, 73F9A978). Эти слова обладают тем свойством, что никакой их циклический сдвиг не содержит более 6 последовательных нулей и более 9 последовательных единиц, кроме того, имеется всего 14 наборов из восьми бит, встречающихся дважды в этих словах (с учетом всех возможных их циклических сдвигов), и никакой 8- битный набор не встречается более двух раз. В таблице для S-box эти слова имеют порядковые номера с 265 по 268.

p = ЦСЛ(B[ j], младшие 5 бит слова K[i-1]) , где j определяется на шаге (а). г) Для получения окончательного результата используются w , p и M :

K[i] = w ( p AND M ) ,

при этом, учитывая предыдущие действия, гарантируется наличие единиц в двух младших разрядах слова K[i] и отсутствие в нем последовательностей из 10 или более 0 и 1.

Построение S-box

При построении используется "псевдослучайный" алгоритм, после чего проверяются разностные и линейные свойства полученных S-box. "Псевдослучайные" S-box получаются как соответствующие слова, полученные в результате использования хэш-функции SHA к фиксированным константам c1 , c2 : S[5i + j] = SHA(5i | c1 | c2 | c3 ) j , для i = 0,,102 , j = 0,,4 (где SHA( ) j означает

j -е слово из четырех, получаемых как результат хэш-функции); c1 = 7E15162 , c2 = 243F6A88, c3 изменяется до тех пор, пока не будет получена S-box с хорошими свойствами. В результате экспериментальных расчетов, проведенных авторами алгоритма в течение недели (было проверено более 226 возможных значений c3 ), в качестве подходящего было выбрано значение c3 = 02917D59 . S-box, используемые в алгоритме MARS, приведены в Приложении 1.

4.2. Алгоритм RC6

Авторы: Рональд Л.Ривест (Ronald L. Rivest), М.Дж.Б. Робшо (M.J.B. Robshaw), Р. Сидней (R. Sidney), и Й.Л.Йин (Y.L. Yin).

RC6 — итеративный блоковый алгоритм с переменной длиной информационного блока, переменным числом циклов и переменной длиной ключа. Алгоритм построен по классической схеме сетей Файстела. В общем случае авторы обозначили свой алгоритм как RC6- w / r / b , где w — размер

r = 20

40

обрабатываемых алгоритмом блоков, r — число циклов, b — длина ключа. Согласно требованиям NIST длина обрабатываемых блоков в версии, предназначенной для будущего стандарта, составляет 32 бита, а длина ключа может быть 128, 192 или 256 бит. Алгоритм RC6- w / r / b с такими параметрами и с обозначается просто как RC6. Исходный информационный блок разбивается на четыре подблока a , b , c , d каждый длиной w = 32 , которые в процессе 20 циклов алгоритма преобразуются при участии блоков ключа с использованием следующих алгебраических операций:

a +b — сложение по модулю 2w , a b — вычитание по модулю 2w , a b — сложение по модулю два, a b — умножение по модулю 2w ,

ЦСЛ(a,b) — циклический сдвиг слова a влево, на число позиций, определяемых младшими log2 (w) битами аргумента b ;

ЦСП(a,b) — циклический сдвиг слова a вправо, на число позиций, определяемых младшими log2 (w) битами аргумента b ;

Общая схема алгоритма приведена на Рис. 4.6.

Рис. 4.6. Шифрация алгоритмом RC6 (здесь f (x) = x(2x +1) ).