Алгоритм CAST-256

Алгоритм шифрования CAST-256 [31] разработан специалистами канадской компании Entrust Technologies. Основой алгоритма являются преобразова­ния широко используемого ранее и хорошо зарекомендовавшего себя алго­ритма CAST-128 (см. разд. 3.10), также разработанного компанией Entrust Technologies.

Основные характеристики и структура алгоритма

Алгоритм CAST-256 шифрует информацию 128-битными блоками и исполь­зует несколько фиксированных размеров ключа шифрования: 128, 160, 192, 224 или 256 битов.

128-битный блок данных разбивается на 4 субблока по 32 бита, каждый из которых в каждом раунде алгоритма подвергается определенному преобразо­ванию и накладывается на один из соседних субблоков. Разработчики алго­ритма классифицировали его как подстановочно-перестановочную сеть (SP-сеть, см. разд. 1.3). Однако ряд экспертов конкурса AES посчитали алгоритм CAST-256 сетью Фейстеля, в каждом раунде которой обрабатывается только один субблок, а количество «настоящих» раундов в 4 раза больше, чем заяв­лено в спецификации алгоритма [384].

В процессе работы алгоритма выполняется 12 раундов преобразований, в первых 6 из которых выполняется преобразование tl (называемое прямой функцией раунда), а в последних 6 раундах выполняется обратная функция раунда tl.

Преобразования tl и tl показаны на рис. 3.35 и 3.36 соответственно. Функция tl описана следующим образом:

clip_image002

где / — номер текущего раунда.

Преобразование tl состоит из следующих операций:

clip_image004

Функции /1,/2 и /3 выполняют несколько элементарных операций над 32-битным субблоком; они приведены, соответственно, на рис. 3.37, 3.38 и 3.39. Каждая из функций принимает три параметра:

□ значение обрабатываемого субблока (на рисунках обозначено как «дан­ные»);

□ 32-битный подключ раунда Kmni (называемый маскирующим подключом, поскольку первой операцией каждой из функций является наложение дан­ного ключа на обрабатываемый субблок);

□ 5-битный подключ раунда Krni (называемый подключом сдвига, посколь­ку данный ключ используется в операции циклического сдвига результата предыдущей операции на переменное число битов).

clip_image006

Рис. 3.35. Преобразование rl

clip_image008

Рис. 3.36. Преобразование г2

clip_image010

Рис. 3.37. Функция fi

clip_image012

Рис. 3.38. Функция fl

clip_image014

Рис. 3.39. Функция /3

Сложение и вычитание выполняются с 32-битными операндами по модулю 2 .

Функции 5|, 52, 53 и S4 являются табличными подстановками, выполняю­щими замену входного 8-битного значения на 32-битное. Таблицы являются различными, каждая из них содержит 256 32-битных фиксированных значе­ний (таблицы полностью приведены в Приложении 1).

Расшифровывание выполняется аналогично зашифровыванию, но подключи раундов используются в обратной последовательности, т. е. вместо подключа Kxni используется подключ Ajc/i(1W) (считая, что раунды нумеруются от 0 до И).

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

Задача функции расширения ключа — выработать для каждого раунда 4 32-битных маскирующих подключа Kmni и 4 5-битных подключа сдвига Krni. То есть сформировать 1776 байтов ключевой информации.

Процедура расширения ключа является более сложной, чем собственно шиф­рование данных. Сначала 256-битный ключ шифрования делится на 8 фраг­ментов по 32 бита. Если используется ключ меньшего размера, то «лишние» фрагменты ключа считаются нулевыми.

После этого выполняется инициализация временных переменных, которая описана далее.

Затем выполняется 12 раундов преобразований, в каждом из которых произ­водятся следующие действия:

1. Выполняется функция W2j , где j— номер раунда процедуры расширения ключа (функция Wj приведена на рис. 3.40).

2. Выполняется функция W2j+\.

3. По 5 младших битов четырех фрагментов результата операции (А\ С, Е, G) становятся подключами Kr0j, KrXj, Kr2j и АУ соответственно.

4. Оставшиеся фрагменты (В’, D’, F\ Я’) становятся подключами Ктъ^ Km2j, KmXj и Km0j соответственно.

Как видно, в каждом раунде функции расширения ключа используются по 8 дополнительных переменных Tmnk и Trnk, которые вычисляются сле­дующим образом:

1. Инициализируются временные переменные (для Cm и Mm указаны шест-надцатеричные значения): clip_image016

clip_image018

Рис. 3.40. Функция W:

2. В цикле от 0 до 23 выполняется цикл от 0 до 8, в котором производятся следующие вычисления:

где:clip_image020

• п — счетчик внутреннего цикла;

• к — счетчик внешнего цикла.

Достоинства и недостатки алгоритма

Несомненным достоинством алгоритма CAST-256 является отсутствие дока­занных уязвимостей. Кроме того, плюсом является возможность выполнения расширения ключа «на лету», т. е. в процессе операции зашифровывания (но не расшифровывания) [284]. Однако в алгоритме было найдено несколько недостатков, благодаря которым он не вышел во второй раунд конкурса [284]:

□ алгоритм уступает в скорости ряду алгоритмов — участников конкурса, в том числе всем финалистам конкурса;

□ достаточно высокие требования к оперативной и энергонезависимой па­мяти затрудняют использование данного алгоритма в смарт-картах;

□ некоторые эксперты сочли алгоритм CAST-256 подверженным атакам по потребляемой мощности [80, 114].

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100