[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м орфография
м орфография
Строка 9:
|тип = [[хеш-функция]]
}}
'''Skein''' (англ. Skein) — алгоритм [[Криптографические хеш-функции|хеширования]] переменной разрядности, разработанный группой авторов во главе с [[Шнайер, Брюс|Брюсом Шнайером]]. Хеш-функция Skein выполнена как универсальный криптографический примитив, на основе блочного шифра Threefish, работающего в режиме UBI-хэширования.<ref name=autogenerated1>[http://www.skein-hash.info/sites/default/files/skein1.3.pdf Документация Skein, Версия 1.3 (2010-10-01)]</ref> Основные требования, предъявлявшиеся при разработке — оптимизация под минимальное использование памяти, криптографически безопасное хэширование небольших сообщений, устойчивость ко всем существующим атакам на хэшхеш-функции, оптимизация под 64-разрядные процессоры и активное использование обращений к таблицам.
 
== История ==
Skein была создана в 2008 году группой авторов во главе с [[Шнайер, Брюс|Брюсом Шнайером]] и вошла в пятёрку финалистов конкурса [[SHA-3 (конкурс)|SHA-3]], однако в 2012 в финале победителем был выбран алгоритм [[Keccak]], наиболее производительный и нечувствительный к уязвимостям [[SHA-2]]<ref>{{cite web|url=http://www.nist.gov/itl/csd/sha-100212.cfm|title=NIST Selects Winner of Secure Hash Algorithm (SHA-3) Competition|first=2012-10-02|publisher=[[NIST]]|accessdate=2012-10-02}}</ref>. Название хэшхеш-функции Skein означает «моток пряжи».
 
== Алгоритм ==
Строка 21:
 
=== UBI ===
Threefish в Skein используется в режиме UBI (Unique Block Iteration) хэширования. Режим UBI — это разновидность режима [[Matyas-Meyer-Oseas]].[1] Каждое звено UBI комбинирует входные сообщения с предыдущего звена цепи с последовательностью произвольной длины и устанавливает на выходе значение фиксированного размера. Сообщение, передающееся между звеньями (твик), содержит информацию о том, сколько байт было обработано, флаги начала и конца цепочки, и поле типа данных, которое позволяет различать сферы применения UBI. UBI гарантирует невоспроизводимость результата хэширования одного и того же сообщения и дополнительную защиту за счёт того, что на вход хэшхеш-функции и шифра попадают одни и те же сообщения.
UBI устроен следующим образом. Каждое звено цепи — это функция <math>f(G,M,T_s)</math>
: <math>G</math> — начальное <math>N_b</math>-байтное значение
Строка 146:
 
== Применение ==
Область применения Skein достаточно широка. Используя сообщение и ключ в качестве соответствующих входов, можно вычислить [[Message authentication code|MAC]]. Возможно использование в качестве хэшхеш-функции для вычисления [[HMAC]]. При помощи аргумента ''Nonce'' использовать Skein в режиме поточного шифра. Также возможно применение в качестве генератора псевдослучайных чисел, например, в алгоритмах [[Алгоритм Fortuna|Fortuna]] и [[Алгоритм Ярроу|Yarrow]], в качестве Key Derivation Function и Password-Based Key Derivation Function(используя аргументы ''Key'' и ''Key Derivation Identifer ''), в качестве хэшхеш-функции для вычисления [[Электронная подпись|электронной подписи]] (подразумевается использование аргумента ''Public Key'').
 
При помощи аргумента ''Personalisation'' все приложения Skein могут быть персонифицированы для конкретного пользователя. Например для приложения FOO строка персонализации в [[UTF-8|UTF8 Unicode]] может выглядеть так