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

Skein - это криптографическая хеш-функция и один из пяти финалистов конкурса хеш-функций NIST . Поступивший в качестве кандидата на роль стандарта SHA-3 , преемника SHA-1 и SHA-2 , он в конечном итоге проиграл кандидату хеширования NIST Keccak . [2]

Название Skein относится к тому, как функция Skein переплетает входные данные, подобно мотку пряжи. [1]

История [ править ]

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

Skein основан на настраиваемом блочном шифре Threefish, сжатом с использованием режима цепочки Unique Block Iteration (UBI), варианта режима хеширования Matyas – Meyer – Oseas [3], при этом для гибкости используется дополнительная система аргументов с низкими накладными расходами.

Алгоритм Скейна и его эталонная реализация стали достоянием общественности . [4]

Функциональность [ править ]

Skein поддерживает размеры внутреннего состояния 256, 512 и 1024 бит, а также произвольные размеры вывода. [5]

Авторы заявляют 6,1 цикла на байт для любого размера вывода на Intel Core 2 Duo в 64-битном режиме. [6]

Ядро Threefish основано на функции MIX, которая преобразует 2 64-битных слова с помощью одного сложения, вращения с помощью константы и XOR. Режим цепочки UBI объединяет входное значение цепочки с входной строкой произвольной длины и производит выходные данные фиксированного размера.

Нелинейность Threefish полностью обусловлена комбинацией операций сложения и исключающего ИЛИ ; он не использует S-боксы . Функция оптимизирована для 64-битных процессоров, а в документе Skein определены дополнительные функции, такие как рандомизированное хеширование , параллелизируемое хеширование дерева , потоковый шифр , персонализация и функция вывода ключей .

Криптоанализ [ править ]

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

Команда Skein изменила ключевую константу расписания для третьего раунда конкурса хэш-функций NIST, чтобы сделать эту атаку менее эффективной, даже несмотря на то, что они считают, что хэш все равно будет безопасным без этих настроек. [1]

Примеры хэшей Skein [ править ]

Хеш-значения пустой строки.

Скейн-256-256 ("")c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7baСкейн-512-256 ("")39ccc4554a8b31853b9de7a1fe638a24cce6b35a55f2431009e18780335d2621Скейн-512-512 ("")bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af41fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a

Даже небольшое изменение в сообщении (с огромной вероятностью) приведет к в основном другому хешу из-за эффекта лавины . Например, добавив точку в конце предложения:

Skein-512-256 (« Быстрая коричневая лисица перепрыгивает через ленивого пса »)b3250457e05d3060b1a4bbc1428bc75a3f525ca389aeab96cfa34638d96e492aSkein-512-256 (« Быстрая коричневая лисица перепрыгивает через ленивого пса ».)41e829d7fca71c7d7154ed8fc8a069f274dd664ae0ed29d365d919f4e575eebbSkein-512-512 (« Быстрая коричневая лисица перепрыгивает через ленивого пса »)94c2ae036dba8783d0b3f7d6cc111ff810702f5c77707999be7e1c9486ff238a7044de734293147359b4ac7e1d09cd247c351d69826b78dcddd951f0ef912713Skein-512-512 (« Быстрая коричневая лиса перепрыгивает через ленивого пса ».)658223cb3d69b5e76e3588ca63feffba0dc2ead38a95d0650564f2a39da8e83fbb42c9d6ad9e03fbfde8a25a880357d457dbd6f74cbcb5e728979577dbce5436

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

  1. ^ a b c Фергюсон; и другие. (2010-10-01). «Семейство функций спинового хэша» (PDF) . Цитировать журнал требует |journal=( помощь )
  2. ^ «NIST выбирает победителя конкурса алгоритмов безопасного хеширования (SHA-3)» . NIST . 2012-10-02 . Проверено 2 октября 2012 .
  3. ^ http://www.skein-hash.info/sites/default/files/skein1.3.pdf стр. 6
  4. ^ skein_NIST_CD_121508.zip на сайте skein-hash.info, skein.c «Реализация хеш-функции Skein. Автор исходного кода: Дуг Уайтинг, 2008. Этот алгоритм и исходный код выпущены в открытый доступ».
  5. ^ «Теперь от Брюса Шнайера, функция Skein Hash» . Slashdot . 2008-10-31 . Проверено 31 октября 2008 .
  6. ^ Документ с описанием хэш-функции, версия 1.3 (01.10.2010)
  7. Дмитрий Ховратович; Ивица Николич; Кристиан Рехбергер (2010-10-20). «Атаки с вращением с отскоком на пониженном ключе» . Цитировать журнал требует |journal=( помощь )
  8. Дмитрий Ховратович и Ивица Николич (2010). «Ротационный криптоанализ ARX» (PDF) . Люксембургский университет . Цитировать журнал требует |journal=( помощь )

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

  • Официальный сайт Skein
  • Веб-страница Брюса Шнайера Skein

Реализации [ править ]

  • SPARKSkein - реализация Skein в SPARK , с доказательствами типовой безопасности
  • Botan содержит реализацию Skein-512 на C ++.
  • nskein - .NET реализация Skein с поддержкой всех размеров блоков
  • модуль pyskein Skein для Python
  • PHP-Skein-Hash Хеш Skein для PHP на GitHub
  • Digest :: Skein , реализация на C и Perl
  • Skeinfish AC # реализация Skein и Threefish (на основе версии 1.3)
  • Реализации Skein 512-512 для Java, Scala и Javascript (на основе версии 1.3)
  • Реализация Skein на Java (на основе версии 1.1)
  • Реализация Skein на Аде
  • skerl , хеш-функция Skein для Erlang, через NIF
  • Skein 512-512 реализован в Bash
  • Skein реализован на Haskell
  • Исходный код VHDL, разработанный исследовательской группой Cryptographic Engineering Research Group (CERG) в Университете Джорджа Мейсона
  • skeinr Skein реализован на Ruby
  • fhreefish Эффективная реализация Skein-256 для 8-битных микроконтроллеров Atmel AVR, отвечающая оценкам производительности, указанным в официальной спецификации.