Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

Threefish - это настраиваемый блочный шифр с симметричным ключом, разработанный как часть хэш-функции Skein , вход в конкурс хеш-функций NIST . Threefish не использует S-блоки или другие таблицы, чтобы избежать атак на время кэширования ; [1] его нелинейность возникает из-за чередования сложений с исключающим ИЛИ . В этом отношении он похож на Salsa20 , TEA и кандидатов на SHA-3 CubeHash и BLAKE .

Threefish и хэш-функция Skein были разработаны Брюсом Шнайером , Нильсом Фергюсоном , Стефаном Люксом , Дугом Уайтингом, Михиром Белларе , Тадаёши Коно, Джоном Калласом и Джесси Уокером.

Описание шифра [ править ]

Threefish работает со словами из 64 бит ( целые числа без знака Little endian ). - количество слов открытого текста, а также ключевых слов. Твик состоит из двух слов. Все сложения и вычитания определяются по модулю .

Ключевой график [ править ]

Threefish использует разные раунды ( : количество раундов). Для вычисления этих ключей к исходным ключевым словам добавляется дополнительное ключевое слово . К словам настройки также добавляется дополнительное слово настройки .

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

Круглые ключевые слова теперь определены следующим образом:

Здесь и - номер раунда, в котором используется ключ раунда.

Функция смешивания [ править ]

Функция смешивания трех рыб

Функция смешивания берет кортеж слов и возвращает другой кортеж слов . Функция определяется так:

представляет собой фиксированный набор констант вращения, выбранных для достижения быстрого распространения .

Переставить [ править ]

Шаг перестановки меняет местами слова в соответствии с постоянным шаблоном. Перестановка битового уровня не достигается на этом этапе, но в этом нет необходимости, поскольку функции MIX обеспечивают перестановки битового уровня в форме побитовых вращений. [ необходима цитата ] Шаг перестановки и константы вращения в функциях MIX выбраны таким образом, чтобы общий эффект был полным распространением всех битов в блоке данных. [ необходима цитата ]

Поскольку эта перестановка фиксирована и не зависит от ключа, время, необходимое для ее вычисления, не дает информации о ключе или открытом тексте. Это важно, потому что на большинстве современных микропроцессоров оптимизация производительности может сделать время, затрачиваемое на вычисление операции с массивом, зависеть от того, где данные хранятся в памяти. В шифрах, где поиск в массиве зависит либо от ключа, либо от открытого текста (как в случае шага подстановки в AES), он может сделать шифр уязвимым для атак по времени , исследуя время, необходимое для шифрования. Таким образом, перестановка преднамеренно разработана таким образом, чтобы гарантировать, что она должна выполняться одинаково независимо от используемого ключа или зашифрованных данных. [ необходима цитата ]

Полный раунд Threefish [ править ]

  • если к слову добавлен ключ раунда
  • функция смешивания применяется к последовательным словам, ширина поворота зависит от номера слова
  • слова переставляются с использованием перестановки, не зависящей от круглого числа

Threefish256 и Threefish512 применяют этот раунд 72 раза ( ). Threefish1024 применяет его 80 раз ( ).

Заключительные операции [ править ]

После применения всех раундов к словам добавляется последний раундовый ключ, и слова преобразуются обратно в строку байтов.

Безопасность [ править ]

В октябре 2010 года была опубликована атака, сочетающая ротационный криптоанализ с атакой отскока . Атака устанавливает распознающий ключ против 53 из 72 раундов в Threefish-256 и 57 из 72 раундов в Threefish-512. Это также влияет на хеш-функцию Skein . [2] Это продолжение более ранней атаки, опубликованной в феврале, которая прерывает 39 и 42 раунда соответственно. [3] В ответ на эту атаку команда Skein изменила константы вращения, используемые в Threefish, и, таким образом, ключевые константы расписания для раунда 3 конкурса хэш-функций NIST. [1]

В 2009 году была опубликована связанная с этим ключевая атака бумерангом на сокращенную версию Threefish. Для версии с 32 раундами сложность времени и сложность памяти ; для версии с 33 раундами временная сложность связана с незначительным использованием памяти. Атаки также работают против измененной версии Threefish: для 32-раундовой версии временная сложность равна, а сложность памяти равна ; для версии с 33 раундами временная сложность связана с незначительным использованием памяти. [4]

См. Также [ править ]

  • Twofish
  • Blowfish (шифр)

Ссылки [ править ]

  1. ^ a b c Фергюсон; и другие. (2010-10-01). «Семейство функций спинового хэша» (PDF) . Cite journal requires |journal= (help) Статья, в которой был представлен Threefish.
  2. Дмитрий Ховратович; Ивица Николич; Кристиан Рехбергер (2010-10-20). «Атаки с вращением с отскоком на пониженном ключе» . Cite journal requires |journal= (help)
  3. Дмитрий Ховратович и Ивица Николич (2010). «Ротационный криптоанализ ARX» (PDF) . Люксембургский университет . Cite journal requires |journal= (help)
  4. ^ Jiazhe Chen; Кетинг Цзя (2009-11-01). «Улучшенные атаки бумеранга по связанным клавишам на Threefish-512 с уменьшенным количеством раундов» .

Внешние ссылки [ править ]

  • "Семейство функций Skein Hash" Домашняя страница семейства функций Skein Hash.