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