Моток (хэш-функция)
Общий | |
---|---|
Дизайнеры | Брюс Шнайер , Нильс Фергюсон и др. |
Получено из | Тройка |
Сертификация | Финалист 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), варианта хеш-режима Матиаса-Мейера-Осеаса . [3] при этом для обеспечения гибкости используется дополнительная система аргументов с низкими накладными расходами.
Алгоритм Скейна и эталонная реализация были переданы в общественное достояние . [4]
Функциональность
[ редактировать ]Skein поддерживает размеры внутреннего состояния 256, 512 и 1024 бита, а также произвольные размеры вывода. [5]
Авторы заявляют, что Duo в 64-битном режиме для любого размера вывода требуется 6,1 такта на байт на процессоре Intel Core 2 . [6]
Ядро Threefish основано на функции MIX, которая преобразует 2 64-битных слова с помощью одного сложения, вращения с помощью константы и XOR. Режим цепочки UBI объединяет входное значение цепочки с входной строкой произвольной длины и создает выходные данные фиксированного размера.
Threefish Нелинейность полностью возникает из-за комбинации операций сложения и исключающего ИЛИ ; он не использует S-box . Функция оптимизирована для 64-битных процессоров, а в документе Skein определены дополнительные функции, такие как рандомизированное хеширование , распараллеливаемое хеширование дерева , потоковое шифрование , персонализация и функция получения ключа .
Криптоанализ
[ редактировать ]атака, сочетающая ротационный криптоанализ с атакой отскока В октябре 2010 года была опубликована . Атака обнаруживает вращательные столкновения в 53 из 72 раундов в Threefish-256 и в 57 из 72 раундов в Threefish-512. Это также влияет на хеш-функцию Skein. [7] Это продолжение предыдущей атаки, опубликованной в феврале, которая состоит из 39 и 42 раундов соответственно. [8]
Команда Skein изменила ключевую константу расписания для третьего раунда конкурса хэш-функций NIST, чтобы сделать эту атаку менее эффективной, хотя они считают, что хеш по-прежнему будет безопасным и без этих настроек. [1]
Примеры хешей Skein
[ редактировать ]Хэш-значения пустой строки.
Skein-256-256("") c8877087da56e072870daa843f176e9453115929094c3a40c463a196c29bf7ba Skein-512-256("") 39ccc4554a8b31853b9de7a1fe638a24cce6b35a55f2431009e18780335d2621 Skein-512-512("") bc5b4c50925519c290cc634277ae3d6257212395cba733bbad37a4af0fa06af41fca7903d06564fea7a2d3730dbdb80c1f85562dfcc070334ea4d1d9e72cba7a
Даже небольшое изменение в сообщении (с подавляющей вероятностью) приведет к совершенно другому хешу из-за лавинного эффекта . Например, добавив точку в конце предложения:
Skein-512-256("The quick brown fox jumps over the lazy dog") b3250457e05d3060b1a4bbc1428bc75a3f525ca389aeab96cfa34638d96e492a Skein-512-256("The quick brown fox jumps over the lazy dog.") 41e829d7fca71c7d7154ed8fc8a069f274dd664ae0ed29d365d919f4e575eebb Skein-512-512("The quick brown fox jumps over the lazy dog") 94c2ae036dba8783d0b3f7d6cc111ff810702f5c77707999be7e1c9486ff238a7044de734293147359b4ac7e1d09cd247c351d69826b78dcddd951f0ef912713 Skein-512-512("The quick brown fox jumps over the lazy dog.") 658223cb3d69b5e76e3588ca63feffba0dc2ead38a95d0650564f2a39da8e83fbb42c9d6ad9e03fbfde8a25a880357d457dbd6f74cbcb5e728979577dbce5436
Ссылки
[ редактировать ]- ^ Jump up to: а б с Фергюсон; и др. (01.10.2010). «Семейство хэш-функций Skein» (PDF) . Архивировано из оригинала (PDF) 24 августа 2014 г. Проверено 15 декабря 2010 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ «NIST выбирает победителя конкурса алгоритмов безопасного хеширования (SHA-3)» . НИСТ . 02.10.2012 . Проверено 2 октября 2012 г.
- ^ http://www.skein-hash.info/sites/default/files/skein1.3.pdf. Архивировано 24 августа 2014 г. в Wayback Machine, с. 6
- ^ skein_NIST_CD_121508.zip. Архивировано 10 июня 2016 г. на Wayback Machine на сайте skein-hash.info, skein.c «Реализация хэш-функции Skein. Автор исходного кода: Дуг Уайтинг, 2008 г. Этот алгоритм и исходный код опубликованы в общественное достояние».
- ^ «Теперь от Брюса Шнайера, хеш-функция Skein» . Слэшдот . 31 октября 2008 г. Проверено 31 октября 2008 г.
- ^ «Документ с описанием хеш-функции, версия 1.3 (01.10.2010)» (PDF) . Архивировано из оригинала (PDF) 24 августа 2014 г. Проверено 15 декабря 2010 г.
- ^ Дмитрий Ховратович; Ивица Николич; Кристиан Рехбергер (20 октября 2010 г.). «Вращательные атаки с отскоком на уменьшенный моток» . Архив электронной печати по криптологии .
- ^ Дмитрий Ховратович и Ивица Николич (2010). «Ротационный криптоанализ ARX» (PDF) . Университет Люксембурга . Архивировано из оригинала (PDF) 26 января 2013 г. Проверено 25 октября 2010 г.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь )
Внешние ссылки
[ редактировать ]Реализации
[ редактировать ]- SPARKSkein — реализация Skein в SPARK с доказательствами типовой безопасности.
- Botan содержит реализацию Skein-512 на C++.
- nskein — реализация Skein для .NET с поддержкой всех размеров блоков.
- 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)
- Java-реализация Skein (на основе версии 1.1)
- Реализация Skein в Ada
- skerl , хэш-функция Skein для Erlang, через NIF
- Skein 512-512 реализован в Bash
- Skein реализован на Haskell
- Исходный код VHDL, разработанный Исследовательской группой криптографической инженерии (CERG) Университета Джорджа Мейсона.
- skeinr Skein реализован на Ruby
- fhreefish Эффективная реализация Skein-256 для 8-битных микроконтроллеров Atmel AVR, соответствующая оценкам производительности, указанным в официальной спецификации.