SHACAL

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

SHACAL
Создатель Хелена Хандшу, Давид Наккаш
Создан 2000
Опубликован 2001
Размер ключа 128—512 бит
Размер блока 160 бит / 256 бит
Число раундов 80/64
Тип Криптографическая хеш-функция

SHACAL-1

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

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

.

Данная особенность стала преградой для избрания алгоритма в качестве финалиста NESSIE, так как возникли сомнения в её криптостойкости.[2]

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

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

Реализация алгоритма SHACAL-1

  1. Представить шифруемое сообщение в виде 5 32-битных блоков данных: A, B, C, D, E.
  2. 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 бит.[4]

Исходный ключ размером 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

Стойкость

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

Одним из тезисов безопасности стала архитектура шифра. Теоретически, безопасность алгоритмов SHA-1 и SHA-2 должна обеспечить и устойчивость алгоритмов SHACAL к различным видам атак. В то же время, требования, предъявляемые к хеш-функциям при их разработке, концептуально иные и данный тезис не слишком обоснован. В своей работе Маркку-Юхани Сааринен описал возможные атаки с использованием связанных ключей на алгоритм SHACAL-1.[5]

Относительно устойчивости на конкурсе NESSIE было отмечено отсутствие каких-либо предложений по атаке на SHACAL. Однако, что касается SHACAL-1, ключевое расписание было подвержено критике. В 2002 году Ким Чонсон (Jongsung Kim) предложил дифференциальную атаку на 41 раундах SHACAL-1 с 512-битным ключом. В 2005 году О. Дункельман(O.Dunkelman) представил атаку на связанных ключах для всех 80 раундов SHACAL-1.[6] Годом позднее экспертами был сделан вывод, что в связи с обнаружением коллизий в SHA-1 будут появляться новые атаки на связанных ключах, а криптоаналитики из Кореи предложили атаку методом бумеранга.

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

Примечания

  1. H. Handschuh, D. Naccache SHACAL
  2. Панасенко, 2009, с. 449.
  3. ndschuh, D. Naccache SHACAL
  4. Панасенко, 2009.
  5. Markku-Juhani Olavi Saarinen (2003-02). «Cryptanalysis of Block Ciphers Based on SHA-1 and MD5»
  6. J. Lu, J. Kim, N. Keller, O. Dunkelman (2006). "Differential and Rectangle Attacks on Reduced-Round SHACAL-1
  7. Lu et al., 2006, p. 85–100.

Ссылки

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.