Алгоритм Mercy

разработан в 2000 г. Полом Кроули (Paul Crowley) из английской компании DataCash [125].

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

шифрует данные блоками переменного размера, но рекомендуемый размер блока составляет 4096 битов (т. е. соответствует размеру сектора диска). Помимо 128-битного ключа шифрования, существует еще один параметр алгоритма— 128-битная величина, которая может быть случайной, а может и обозначать, например, номер шифруемого сектора. Главное — эта величина должна быть известна при рашифровании данных, но не обязательно должна быть секретной (далее будет обозначена как Sp).

Несмотря на то, что простота дизайна алгоритма, по словам его автора, была одним из основных факторов при разработке алгоритма, структура алгоритма (по сравнению с многими другими алгоритмами блочного симметричного шифрования) оказалась достаточно сложной. Рассмотрим структуру «снизу вверх», т. е. от простейших операций — к комплексным.

Основным преобразованием алгоритма Mercy является функция Г(), выполняющая преобразование 8-битных слов х в 32-битные по следующему закону (рис. 3.130):

3.     Выполняются еще 4 операции Q(), входными значениями которых являются 4 слова входного блока <2„_7. Выходные значения этих операций также не используются.

4.     Наконец, выполняются п – 4 операций (2(), в качестве входных значений которых используются слова Qi…Q„_4. Выходные слова операций (20 формируют слова выходного значения функции F(), обозначим их как F\—Fn~4- Последние 4 выходных слова Fn_3…Fn равны словам состояния 51…54 после выполнения всех перечисленных операций QQ.

Стоит отметить, что 4-словный фрагмент …<2«-4 в качестве входного значения операций QQ используется дважды.

Теперь рассмотрим полностью процедуру шифрования в алгоритме Mercy. По своей структуре алгоритм представляет собой сеть Фейстеля с частичным предварительным и заключительным отбеливанием, т. е. наложением на обрабатываемые субблоки операцией XOR псевдослучайной последовательности, полученной из ключа шифрования в процессе выполнения процедуры расширения ключа.

Структура алгоритма Mercy приведена на рис. 3.134. Как видно из рисунка, алгоритм выполняет 6 раундов преобразований, в которых в качестве функции раунда используется описанная выше функция F(). Обозначенные на рис. 3.134 128-битные элементы 5рг]…5рг6 представляют собой результат расширения параметра Sp\ эта процедура будет описана далее.

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

Расшифровывание данных выполняется аналогично их зашифровыванию, за исключением того, что пре- и пост-отбеливание меняются местами, т. е. наложение W1 выполняется до первого раунда, a W0 используется по завершении шести раундов.

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

Процедура расширения ключа алгоритма Mercy подразумевает использование любого генератора псевдослучайных чисел, в качестве которого автором алгоритма рекомендуется использовать потоковый шифр RC4, разработанный известнейшим криптологом Рональдом Ривестом. Генератор псевдослучайных чисел инициализируется ключом шифрования, а первые 256 байтов псевдослучайных чисел отбрасываются. Далее расширение ключа выполняется таким образом:

1.    В цикле по i от 0 до 7 выполняются следующие действия:

•                текущее случайное число становится значением нулевого байта d{;

•                в цикле по j от 0 до 7:

О выбирается случайное число г; если г уже записано в текущей таблице (от байта 0 до байта 2J -1 таблицы dt), запрос случайного числа повторяется;

О в цикле по к от 0 до 2J -1 выполняется следующее действие:

2.     Вычисляется М) (после чего таким же образом вычисляется IV1), для чего в цикле по j от 0 до 64 выполняется следующее:

•               у-й байт W0 обнуляется;

•                в цикле по к от 0 до 3 к текущему значению у-го байта W0 прибавляется новое случайное число, умноженное на значение 2й .

Как было сказано выше, перед зашифровыванием также выполняется расширение 128-битного значения Spy в результате которого вычисляются 6 128- битных величин Sprv..Spr6 . Для этого используется функция F(), дающая 24 выходных 32-битных значения, которые последовательно используются в качестве соответствующих фрагментов Sprx…Spr6. При этом исходные значения SPl…SP4 используются именно так, как показано на рис. 3.133. В качестве же входного значения для функции FQ используется последовательность 32-битных значений Я0…Я23, вычисляемая достаточно просто:

Криптостойкость алгоритма

Относительно широкую известность получила лишь одна работа, посвященная криптоанализу алгоритма Mercy, автор которой — Скотт Фларер (Scott R. Fluhrer) из компании Cisco Systems [155]. Однако какие-либо практически осуществимые атаки на алгоритм Mercy в этой работе не были предложены.

Несмотря на то, что в алгоритме не были найдены значительные уязвимости, весьма маловероятно, что Mercy найдет достаточно широкое применение из- за весьма узкого назначения.

Вы можете следить за любыми ответами на эту запись через 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