Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР4-5_ПРО3_ЗИ_2020-21.doc
Скачиваний:
6
Добавлен:
25.11.2022
Размер:
5.56 Mб
Скачать

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 ... .

Рис.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).

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

Процедура расширения ключа алгоритма 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 итераций цикла.