Открыть сервис

Skein

Skein — это семейство криптографических хэш-функций, разработанное группой специалистов, включавшей Брюса Шнайера, Нильса Фергюсона, Стефана Люксбергера, Дугласа Уиппла, Дэвида Вагнера, Криса Холла, Джесси Уокера и других. Skein была представлена как один из кандидатов на участие в конкурсе, проводимом Национальным институтом стандартов и технологий США (NIST) по выбору нового стандарта хэширования SHA-3, однако не прошла в финал. Основной особенностью Skein является использование блочного шифра Threefish в качестве основного строительного блока, что обеспечивает высокую гибкость и производительность.

История

Разработка Skein началась в 2007 году, когда NIST объявил конкурс на создание новой криптографической хэш-функции, призванной заменить устаревающие алгоритмы семейства SHA-1 и SHA-2. Команда разработчиков, известная как «Skein Team», поставила целью создать алгоритм, который был бы не только криптостойким, но и эффективным как на мощных серверах, так и на устройствах с ограниченными ресурсами, таких как смарт-карты и RFID-метки.

В 2008 году Skein была официально представлена на конкурс. Она вошла в число 51 кандидата первого раунда. В 2009 году, после анализа криптоаналитиками, Skein была отобрана в число 14 финалистов второго раунда. Однако в 2010 году NIST объявил, что Skein не прошла в финал, и победителем стала хэш-функция Keccak (ныне известная как SHA-3). Несмотря на это, Skein продолжает использоваться в ряде проектов и приложений, где требуется высокая производительность или специфические возможности, такие как настраиваемая длина выходного хэша.

Устройство и принцип работы

Skein основана на итеративном применении блочного шифра Threefish в режиме построения хэш-функции, известном как Unique Block Iteration (UBI). В отличие от классических хэш-функций, таких как MD5 или SHA-1, которые используют специализированные сжимающие функции, Skein переиспользует криптографически стойкий блочный шифр.

Блочный шифр Threefish

Threefish — это симметричный блочный шифр, не использующий S-блоки (таблицы подстановок), что делает его эффективным для программной реализации. Он поддерживает три размера блока: 256, 512 и 1024 бита. Соответственно, ключ шифрования имеет тот же размер. Шифр использует простую структуру, основанную на операциях сложения, исключающего ИЛИ (XOR) и циклических сдвигах. Количество раундов варьируется: 72 раунда для 256-битной версии, 72 раунда для 512-битной и 80 раундов для 1024-битной.

Режим UBI

Режим UBI (Unique Block Iteration) — это способ построения хэш-функции на основе блочного шифра. В этом режиме каждый блок сообщения обрабатывается с использованием Threefish, причём в качестве ключа выступает предыдущее состояние хэша, а в качестве открытого текста — текущий блок данных. Для обеспечения уникальности и предотвращения коллизий в каждом раунде используется так называемая «твик» (tweak) — дополнительный входной параметр, который изменяется в зависимости от номера блока и типа данных (например, конфигурация, сообщение, выходной хэш). Это позволяет избежать атак, основанных на симметрии блочного шифра.

Параметры и конфигурация

Skein является параметризуемой хэш-функцией. Она позволяет задавать:

  • Размер выходного хэша — от 1 до 2^64 бит (на практике обычно 128, 160, 224, 256, 384, 512 бит).
  • Размер блока — 256, 512 или 1024 бита.
  • Ключ — для использования в качестве MAC-кода (Message Authentication Code) или в режиме аутентифицированного шифрования.
  • Персональная строка — произвольная строка, которая позволяет создавать различные экземпляры хэш-функции для разных приложений, что снижает риск коллизий.

Характеристики

  • Производительность: Skein демонстрирует высокую скорость хэширования, особенно на 64-битных процессорах, благодаря использованию простых арифметических операций. По заявлениям разработчиков, на процессорах архитектуры x86-64 Skein-512 может обрабатывать данные со скоростью более 6 циклов на байт, что значительно быстрее SHA-256 и SHA-512.
  • Криптостойкость: На момент участия в конкурсе Skein не была взломана. Криптоаналитики не обнаружили атак, которые бы существенно снижали её стойкость. Алгоритм обеспечивает устойчивость к коллизиям, прообразам и атакам на удлинение сообщения.
  • Гибкость: Возможность настраивать размер хэша, использовать ключ и персональную строку делает Skein универсальным инструментом для различных задач — от цифровых подписей до генерации псевдослучайных чисел.
  • Потребление ресурсов: Алгоритм требует небольшого объёма оперативной памяти (около 200 байт для состояния), что делает его пригодным для встраиваемых систем.

Применение

Хотя Skein не стала стандартом SHA-3, она нашла применение в ряде проектов и протоколов:

  • Криптовалюты: Skein используется в некоторых криптовалютах, таких как DigiByte и Skeincoin, в качестве алгоритма хэширования для майнинга. В частности, DigiByte использует пять алгоритмов хэширования, включая Skein, для повышения безопасности и децентрализации.
  • Аутентифицированное шифрование: Режим UBI позволяет использовать Skein в схемах аутентифицированного шифрования, где требуется одновременно шифровать данные и проверять их целостность.
  • Генерация случайных чисел: Благодаря своей криптостойкости, Skein может применяться для построения генераторов псевдослучайных чисел.
  • Исследования и образование: Skein часто используется в учебных курсах по криптографии как пример современной, эффективной и гибкой хэш-функции.

Критика и недостатки

Основной критикой Skein является её сложность по сравнению с более простыми хэш-функциями, такими как SHA-2. Несмотря на высокую производительность, реализация Threefish требует большего объёма кода, что может быть проблемой для очень маленьких микроконтроллеров. Кроме того, некоторые криптоаналитики отмечали, что отсутствие S-блоков делает алгоритм потенциально уязвимым для определённых типов атак, хотя на практике таких атак обнаружено не было.

Интересные факты

  • Название «Skein» (англ. «моток пряжи») было выбрано как метафора для «сплетения» различных криптографических функций в единую структуру.
  • Разработчики Skein опубликовали подробное описание алгоритма и его обоснование в открытом доступе, что способствовало его анализу и популяризации.
  • Skein является одной из немногих хэш-функций, которая позволяет использовать ключ непосредственно в алгоритме хэширования, что делает её пригодной для построения MAC-кодов без дополнительных модификаций.

Источники

  • Ferguson, N., Lucks, S., Schneier, B., et al. «The Skein Hash Function Family». Submission to NIST SHA-3 Competition, 2008.
  • NIST. «SHA-3 Competition: Finalists». National Institute of Standards and Technology, 2010.
  • Schneier, B. «Applied Cryptography: Protocols, Algorithms, and Source Code in C». 20th Anniversary Edition, John Wiley & Sons, 2015.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →