Алгоритм Sha-zam

Алгоритм шифрования Sha-zam разработан в 1999 г. тремя сотрудниками компании Lucent Technologies. Авторы алгоритма: Сарвар Пател (Sarvar Patel), Зульфикар Рамзан (Zulfikar Ramzan) и Ганеш Сундарам (Ganesh Sundaram).

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

немного напоминает рассмотренные в разд. 3.6 алгоритмы Bear, Lion и Lioness. Сходство в том, что Sha-zam также использует в качестве одного из преобразований алгоритм хэширования, а именно принятый в США стандарт хэширования SHA (Secure Hash Algorithm) в его 160-битном варианте SHA-1. Описание семейства алгоритмов SHA можно найти в тексте стандарта FIPS 180-2 [152].

Рис. 3.195. Структура алгоритма Sha-zam

Структура алгоритма исключительно проста и состоит в выполнении следующих операций (рис. 3.195) [297]:  где:

П L и R— соответственно, левый и правый субблоки открытого текста по 160 битов каждый, т. е. алгоритм Sha-zam шифрует данные блоками по 320 битов;

?      П и Т2 — временные переменные;

?      ?1, к2икЗ — фрагменты расширенного ключа (процедура расширения ключа будет описана далее); к2 имеет размер 352 бита, к\ икЗ — по 160 битов;

?      IV— вектор инициализации— 160-битный дополнительный параметр алгоритма (см. далее);

?       L! и /?’ — соответственно, левый и правый субблоки шифртекста;

?      SqH— операция «квадратичного хэширования» (square hash), изобретенная авторами алгоритма и состоящая в выполнении следующего действия:

где р — простое число, минимальное из простых чисел, больших 2160.

Варьируя значение вектора инициализации, можно получать различные значения шифртекста для одного и того же открытого текста и одного и того же ключа шифрования. В данном случае IV используется в качестве начального значения в алгоритме хэширования SHA (Initial hash value). Значение IV в алгоритме Sha-zam может быть зависимым от ключа шифрования, может быть константой, а может и не использоваться — в последнем случае в качестве начального берется стандартное значение, описанное в спецификации SHA-1 (5 значений по 32 бита) [152] — см. табл. 3.131 (указаны шестнадцатеричные значения).

Расшифровывание данных выполняется с помощью обратных операций, применяемых в обратной последовательности:

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

использует ключи шифрования весьма необычного размера — 100 битов. На основе исходного ключа шифрования процедура расширения ключа вычисляет 672 бита расширенного ключа. Если же используется зависимость вектора инициализации от ключа шифрования, то данная процедура вырабатывает уже 832 бита ключевой информации.

Расширение ключа происходит таким образом:

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

где:

•                  s’ — результат применения операции XOR к секретному ключу и старшим 100 битам значения IV, в качестве которого в процедуре расширения ключа используется приведенное выше стандартное значение;

•                  С,’ — результат применения операции XOR к /-му 32-битному слову с{ (c0…cw — дополнительный параметр алгоритма) и каждому четному 32-битному слову 512-битной константы С (не указана в спецификации алгоритма [297], отсчет слов константы начинается с младшего с номером 0);

•                 т— количество циклов, необходимое для вычисления расширенного ключа требуемого размера, считая, что в каждой итерации цикла вычисляется 160 битов j..

2.     Необходимое количество битов расширенного ключа набирается из последовательности h(sx)…h(sm), где h() — преобразование, не описанное в спецификации алгоритма Sha-zam; функция h() должна заменять 160-битное значение другим, например, возведением S; в фиксированную степень по модулю 21 В принципе, эта функция может и не применяться совсем, а в качестве расширенного ключа можно использовать значения sx…sm.

На самом деле размер 100 битов является только рекомендуемым. В качестве начального значения описанного генератора псевдослучайных чисел могут использоваться и ключи большего или меньшего размера.

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

Несмотря на достаточно интересную структуру алгоритма Sha-zam, он не вызвал внимания со стороны криптоаналитиков. Какие-либо работы, посвященные доказательству криптостойкости этого алгоритма (за исключением собственно описания алгоритма [297], часть которого посвящена данному вопросу, и другой работы авторов алгоритма— [298]) или поиску уязвимостей в нем, не получили широкой известности.

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