SHACAL — в криптографии симметричный блочный криптоалгоритм, разработанный для участия в конкурсе NESSIE группой авторов из компании Gemplus во главе с Хеленой Хандшух и Давидом Наккашем. Существует два варианта алгоритма — SHACAL-1 и SHACAL-2, который и стал одним из 17 финалистов NESSIE.

SHACAL-1 Алгоритм SHACAL существенно отличается от многих других алгоритмов. Он основан на функции компрессии хеш-алгоритма SHA-1, что возможно благодаря обратимости раундовой функции данного хеш-алгоритма, при условии что её внутреннее состояние известно. В данном случае ключ используется как подвергающиеся трансформации данные, а открытый текст подается как внутреннее состояние хеш-функции. Всего выполняется 80 раундов преобразования.H. Handschuh, D. Naccache SHACAL

Особенностью алгоритма является его простое ключевое расписание — ключ короче 512 бит дополняется до полного размера нулевыми битами. Ключи короче 128 бит не применяются. 512-битный исходный ключ шифрования делится на 16 фрагментов по 32 бита K0…K15. Остальные фрагменты расширенного ключа K16…K79 вычисляются из первых 16 фрагментов по формуле: . Данная особенность стала преградой для избрания алгоритма в качестве финалиста NESSIE, так как возникли сомнения в её криптостойкости.

Размер блока равен размеру внутреннего состояния и хеша хеш-функции SHA1 — 160 бит. Блок обрабатывается как пять 32-битных подблоков: . Шифротекстом является конкатенация данных из переменных ndschuh, D. Naccache SHACAL

SHACAL-1 в настоящее время мало распространен. Его довольно быстро заменил алгоритм SHACAL-2, который часто именуется как просто SHACAL. Существовал так же теоретический SHACAL-0, который был основан на хеш-функции SHA-0 (ранней, позже исправленной версии SHA-1), но он не получил распространения, как собственно и сама хеш-функция SHA-0.

Реализация алгоритма SHACAL-1 Представить шифруемое сообщение в виде 5 32-битных блоков данных: A, B, C, D, E. 80 раз проделать следующее:

где:  — номер раунда (1-79)  — фрагмент расширенного ключа для i-го раунда  — функция для i-го раунда (см. табл. 1) <<< — побитовый циклический сдвиг влево  — модифицирующие константы (см. табл. 2)

Таблица 1 РаундыФункция 0-19 20-39 40-59 60-79

Таблица 2 РаундыЗначения константы 0-195A827999 20-396ED9EBA1 40-598F1BBCDC 60-79CA62C1D6

SHACAL-2 В 2001 году создатели алгоритма SHACAL-1, также в рамках конкурса NESSIE разработали aлгоритм SHACAL-2 основанный на 64 раундах хеш-функции SHA-256 с внутренним состоянием длиной 256 бит.

Исходный ключ размером 512 бит по аналогии с SHACAL-1 делится на 16 частей по 32 бита каждая. Остальные 48 частей вычисляются следующим образом:

где и :

Реализация алгоритма SHACAL-2 Алгоритм состоит из 64 раундов преобразований:

где:

>>> — побитовый циклический сдвиг  — временная переменная  — модифицирующие константы при i = 0 — 63 (см. Таблицу 3, константы расположены по порядку)

Таблица 3 428a2f9871374491b5c0fbcfe9b5dba5 3956c25b59f111f1923f82a4ab1c5ed5 d807aa9812835b01243185be550c7dc3 72be5d7480deb1fe9bdc06a7c19bf174 e49b69c1efbe47860fc19dc6240calcc 2de92c6f4a7484aa5cb0a9dc76f988da 983e5152a831c66db00327c8bf597fc7 c6e00bf3d5a7914706ca635114292967 27b70a852e1b21384d2c6dfc53380d13 650a7354766a0abb81c2c92e92722c85 a2bfe8a1a81a664bc24b8b70c76c51a3 d192e819d6990624f40e3585106aa070 19a4c1161e376c082748774c34b0bcb5 391c0cb34ed8aa4a5b9cca4f682e6ff3 748f82ee78a5636f84c878148cc70208 90befffaa4506cebbef9a3f7c67178f2

Стойкость Прежде всего, как было отмечено, преимуществом алгоритмов семейства SHACAL была их производительность. Важным моментом является так же простота описания и реализации алгоритмов.

Одним из тезисов безопасности стала архитектура шифра. Теоретически, безопасность алгоритмов SHA-1 и SHA-2 должна обеспечить и устойчивость алгоритмов SHACAL к различным видам атак. В то же время, требования, предъявляемые к хеш-функциям при их разработке, концептуально иные и данный тезис не слишком обоснован. В своей работе Маркку-Юхани Сааринен описал возможные атаки с использованием связанных ключей на алгоритм SHACAL-1.Markku-Juhani Olavi Saarinen (2003-02). «Cryptanalysis of Block Ciphers Based on SHA-1 and MD5»

Относительно устойчивости на конкурсе NESSIE было отмечено отсутствие каких-либо предложений по атаке на SHACAL. Однако, что касается SHACAL-1, ключевое расписание было подвержено критике. В 2002 году Ким Чонсон (Jongsung Kim) предложил дифференциальную атаку на 41 раундах SHACAL-1 с 512-битным ключом. В 2005 году О. Дункельман(O.Dunkelman) представил атаку на связанных ключах для всех 80 раундов SHACAL-1.J. Lu, J. Kim, N. Keller, O. Dunkelman (2006). "Differential and Rectangle Attacks on Reduced-Round SHACAL-1 Годом позднее экспертами был сделан вывод, что в связи с обнаружением коллизий в SHA-1 будут появляться новые атаки на связанных ключах, а криптоаналитики из Кореи предложили атаку методом бумеранга.

После окончания конкурса NESSIE была предложена атака на 42 раунда алгоритма SHACAL-2 c 512-битным ключом, но полнораундовый алгоритм пока не взломан. Следовательно, полнораундовые алгоритмы SHACAL на данный момент можно считать безопасными при условии использования в качестве ключа 512-битного хеша от какой-либо хеш-функции (SHA-512, Whirlpool).

Примечания

Ссылки

Панасенко С.Алгоритмы шифрования. Специальный справочник — Санкт-Петербург: БХВ-Петербург, 2009. — С. 443—451. — 978-5-9775-0319-8.

Категория:Блочные шифры