- •Лабораторная работа № 4 семейство алгоритмов rc
- •2.1.2 Процедура расширения ключа
- •2.1.3 Расшифровывание
- •2.1.4 Криптостойкость алгоритма
- •2.2 Алгоритм rc4
- •2.3Алгоритм rc5
- •2.3.1 Структура алгоритма
- •2.3.2 Процедура расширения ключа
- •2.3.3 Криптоанализ алгоритма
- •2.3.4 Варианты rc5
- •2.4 Алгоритм rc6
- •2.4.1 Структура алгоритма
- •2.4.2 Процедура расширения ключа
- •3.Примеры выполнения работы
- •Расшифруем зашифрованное сообщение с помощью правильного и неправильного ключа (рис. 56-58).
- •4. Содержание работы
2.4.1 Структура алгоритма
Как и RC5, алгоритм RC6 имеет гибкую структуру: помимо секретного ключа, параметрами являются:
размер слов w; алгоритм RC6 шифрует блоками по 4 слова;
количество раундов R;
размер секретного ключа в байтах b.
Аналогично RC5, для уточнения параметров алгоритма, используемых в его конкретной реализации, применяется обозначение RC6-w/R/b. Поскольку в конкурсе AES 128-битный блок являлся обязательным, значение w фиксировано и равно 32. В спецификации алгоритма зафиксировано также количество раундов: R=20. Поскольку конкурс АЕ8 допускал использование ключей трех фиксированных размеров, рассмотрим три следующие варианты алгоритма: RC6-32/20/16, RC6-32/20/24, RC6-32/30/32, совокупность которых мы и будем иметь далее в виду, говоря об «RC6».
Структура алгоритма приведена на рис. 48. В алгоритме используется 20 раундов преобразований, перед которыми выполняется частичное входное отбеливание:
, (47)
, (48)
где В и D - текущие значения двух из четырех (А, В, С, D) обрабатываемых 32-битных субблоков,
и - первые два из используемых в алгоритме фрагментов расширенного ключа К0 ... .
Аналогичным образом выполняется частичное выходное отбеливание:
(49)
(50)
В каждом i-м раунде алгоритма выполняются следующие действия:
(51)
(52)
(53)
(54)
где и - временные переменные, количество битов вращения на переменное число битов определяется значением 5 младших битов параметра и ( и .
функция f() выполняет следующее квадратичное преобразование:
f(x)= x (2x+1)mod 232 (55)
В конце каждого раунда выполняется сдвиг субблоков - рис. 48.
Рис.
49.
Расшифровывание алгоритмом RC6
2.4.2 Процедура расширения ключа
Процедура расширения ключа алгоритма RC6 аналогична RC5, за исключением того, что алгоритму RC6 требуется несколько больше сгенерированных подключей, а именно 2R+4, т.е. K0,,.K43 для 20 раундов. Рассмотрим данную процедуру для алгоритма RC6 в варианте для конкурса AES, т.е. с указанными выше фиксированными параметрами.
Расширение ключа выполняется в два этапа:
Инициализация массива расширенных ключей K0,,.K43 производится следующим образом:
K0=P32 , (56)
Ki+1=Ki+ Q32. (57)
где P32 и Q32 - псевдослучайные константы, образованные путем умножения на 232 дробной части и последующего округления до ближайшего нечетного целого двух математических констант (e и φ соответственно):
P32 =В7Е15163;
Q32= 9Е3779B9.
Циклически выполняются следующие действия:
, (58)
, (59)
(60)
. (61)
где i, j, A, B - временные переменные, их начальные значения равны нулю,
KI - исходный ключ шифрования, представленный в виде с 32- битных слов.
Выполняются 3c итераций цикла.