Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР4-5_МО417_МСЗИ_ИбрагимоваК_РахимоваА_СтепановаД_ШакировА.docx
Скачиваний:
10
Добавлен:
14.09.2022
Размер:
3.1 Mб
Скачать

Структура алгоритма

Как и 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 ... .

Рис.48 Структура алгоритма RC6

Аналогичным образом выполняется частичное выходное отбеливание:

(49)

(50)

В каждом i-м раунде алгоритма выполняются следующие действия:

(51)

(52)

(53)

(54)

где и - временные переменные, количество битов вращения на переменное число битов определяется значением 5 младших битов параметра и ( и .

функция f() выполняет следующее квадратичное преобразование:

f(x)= x (2x+1)mod 232 (55)

В конце каждого раунда выполняется сдвиг субблоков - рис. 48.

Рис. 49. Расшифровывание алгоритмом RC6

При расшифровывании подключи используются в обратном порядке, наложение подключей вместо сложения по модулю 232 выполняется вычитанием, а также сдвиг субблоков выполняется в начале раунда и в обратную сторону. Преобразование f() не претерпело изменений (рис. 49).

Процедура расширения ключа

Процедура расширения ключа алгоритма RC6 аналогична RC5, за исключением того, что алгоритму RC6 требуется несколько больше сгенерированных подключей, а именно 2R+4, т.е. K0,,.K43 для 20 раундов. Рассмотрим данную процедуру для алгоритма RC6 в варианте для конкурса AES, т.е. с указанными выше фиксированными параметрами.

Расширение ключа выполняется в два этапа:

  1. Инициализация массива расширенных ключей K0,,.K43 производится следующим образом:

K0=P32 , (56)

Ki+1=Ki+ Q32. (57)

где P32 и Q32 - псевдослучайные константы, образованные путем умножения на 232 дробной части и последующего округления до ближайшего нечетного целого двух математических констант (e и φ соответственно):

P32 =В7Е15163;

Q32= 9Е3779B9.

  1. Циклически выполняются следующие действия:

, (58)

, (59)

(60)

. (61)

где i, j, A, B - временные переменные, их начальные значения равны нулю,

KI - исходный ключ шифрования, представленный в виде с 32- битных слов.

Выполняются 3c итераций цикла.