SHACAL (SHACAL)
SHACAL | |
---|---|
Создатель | Хелена Хандшух, Давид Наккаш |
Создан | 2000 |
Опубликован | 2001 |
Размер ключа | 128—512 бит |
Размер блока | 160 бит / 256 бит |
Число раундов | 80/64 |
Тип | Криптографическая хеш-функция |
SHACAL — в криптографии симметричный блочный криптоалгоритм, разработанный для участия в конкурсе NESSIE группой авторов из компании Gemplus во главе с Хеленой Хандшух и Давидом Наккашем. Существует два варианта алгоритма — SHACAL-1 и SHACAL-2, который и стал одним из 17 финалистов NESSIE.
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
[править | править код]- Представить шифруемое сообщение в виде 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-19 | 5A827999 |
20-39 | 6ED9EBA1 |
40-59 | 8F1BBCDC |
60-79 | CA62C1D6 |
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
428a2f98 | 71374491 | b5c0fbcf | e9b5dba5 |
3956c25b | 59f111f1 | 923f82a4 | ab1c5ed5 |
d807aa98 | 12835b01 | 243185be | 550c7dc3 |
72be5d74 | 80deb1fe | 9bdc06a7 | c19bf174 |
e49b69c1 | efbe4786 | 0fc19dc6 | 240calcc |
2de92c6f | 4a7484aa | 5cb0a9dc | 76f988da |
983e5152 | a831c66d | b00327c8 | bf597fc7 |
c6e00bf3 | d5a79147 | 06ca6351 | 14292967 |
27b70a85 | 2e1b2138 | 4d2c6dfc | 53380d13 |
650a7354 | 766a0abb | 81c2c92e | 92722c85 |
a2bfe8a1 | a81a664b | c24b8b70 | c76c51a3 |
d192e819 | d6990624 | f40e3585 | 106aa070 |
19a4c116 | 1e376c08 | 2748774c | 34b0bcb5 |
391c0cb3 | 4ed8aa4a | 5b9cca4f | 682e6ff3 |
748f82ee | 78a5636f | 84c87814 | 8cc70208 |
90befffa | a4506ceb | bef9a3f7 | c67178f2 |
Стойкость
[править | править код]Прежде всего, как было отмечено[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).
Примечания
[править | править код]- ↑ H. Handschuh, D. Naccache SHACAL
- ↑ Панасенко, 2009, с. 449.
- ↑ ndschuh, D. Naccache SHACAL
- ↑ 1 2 3 Панасенко, 2009.
- ↑ Markku-Juhani Olavi Saarinen (2003-02). «Cryptanalysis of Block Ciphers Based on SHA-1 and MD5»
- ↑ J. Lu, J. Kim, N. Keller, O. Dunkelman (2006). "Differential and Rectangle Attacks on Reduced-Round SHACAL-1
- ↑ Lu et al., 2006, p. 85–100.
Ссылки
[править | править код]- H. Handschuh, D. Naccache. SHACAL (2000).
- Панасенко С. П. Алгоритмы шифрования. Специальный справочник — СПб.: BHV-СПб, 2009. — 576 с. — ISBN 978-5-9775-0319-8
- Панасенко С.Алгоритмы шифрования. Специальный справочник — Санкт-Петербург: БХВ-Петербург, 2009. — С. 443—451. — 978-5-9775-0319-8.
- J.Lu,J.Kim,N.Keller,O.Dunkelman (2006). Differential and Rectangle Attacks on Reduced-Round SHACAL-1.
{{cite conference}}
: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка) - Jiqiang Lu, Jongsung Kim, Nathan Keller, Orr Dunkelman (2006). Related-Key Rectangle Attack on 42-Round SHACAL-2 (PDF). Samos: Springer-Verlag. Архивировано из оригинала (PDF) 25 сентября 2006. Дата обращения: 14 ноября 2012.
{{cite conference}}
: Википедия:Обслуживание CS1 (множественные имена: authors list) (ссылка) Архивная копия от 25 сентября 2006 на Wayback Machine - Markku-Juhani Olavi Saarinen (2003-02). "Cryptanalysis of Block Ciphers Based on SHA-1 and MD5" (PDF). FSE '03. Lund: Springer-Verlag. pp. 36—44. Архивировано из оригинала (PDF) 24 декабря 2006. Дата обращения: 28 ноября 2012. Архивная копия от 24 декабря 2006 на Wayback Machine