SHABAL

Материал из BitcoinWiki
Это утверждённая версия страницы. Она же — наиболее свежая версия.
Перейти к: навигация, поиск

SHABAL – это криптографическая хеш-функция, представленная французским исследовательским проектом Saphir на международном конкурсе NIST по отбору хэш-функций для алгоритма SHA-3. Более конкретно, исследовательские партнеры Saphir инициировали концепцию Шабала, а позже к ним присоединились партнеры будущих исследовательских проектов saphir2, которые активно способствовали окончательному дизайну алгоритма Shabal.

Обзор SHABAL[править]

Авторы алгоритма: Эммануэль Брессон, Анна Кантеоут, Беноит Шевалье-Мамес, Кристоф Клавьер, Томас Фухр, Алина Гоуджет, Томас Икарт, Жен-Франсуа Мисарски, Мария Ная-Пласенкия, Паскаль Пайлер, Томас Порнини, Жан-Рене Рейнхард, Селина Тьюлльет, Марион Видеау.

Алгоритм, по мнению авторов, назван в честь «Себастьяна Шабала, французского игрока в регби, известного своим агрессивным стилем игры, а также бородой и длинными волосами, за что ему дали прозвище "пещерный человек"».

SHABAL – это семейство криптографических функций, которые отличаются:

  • размером вывода; эта реализация определяет Shabal для вывода;
  • размерами в 192, 224, 256, 384 и 512 бит.

Структура алгоритма представляет собой контекст для вычислений Shabal: оно содержит промежуточные значения и некоторые данные из последнего введенного блока. Как только вычисления Шабал осуществлены, контекст может быть повторно использован для других вычислений. Более того, содержание этой структуры является частным. Запущенное Шабал-вычисление можно клонировать, скопировав контекст (например, с помощью простого < code>memcpy ()</code>).

Shabal подразумевает очень низкое давление на кэш-данные. Состояние Шабаля умещается менее чем в 300 байт. Элементарные операции – словесные примитивы, изначально реализованные большинством ЦП – ни одна из данных операций не выигрывает от табличного кода. При этом, экономия кэша L1 является одной из сильных сторон Shabal с точки зрения производительности.

Если Shabal должен быть реализован на очень маленьком, 8-разрядном или 16-разрядном ЦП, то распространение переноса должно быть применено ко всем 32-разрядным дополнениям. На такой архитектуре 32-битные слова разбиваются на несколько частей длиной 8 или 16 бит; таким образом, вращение на 16 бит, будучи обменом половин высокого и низкого уровня, является простой проблемой маршрутизации данных, которая может быть решена практически без затрат времени выполнения. Предполагая, что 16-битное вращение по существу свободно, мы можем видеть, что все вращения слов, используемые в Shabal, могут быть упрощены до левого или правого вращения на 1 бит, которые часто более эффективны на маленьком процессоре, чем общие N-битные сдвиги или вращения.

Принцип работы[править]

По словам разработчиков, SHABAL является одним из самых быстрых кандидатов конкурса SHA-3. Он может принимать входные битовые последовательности любой длины, но криптографическая стойкость сообщений длиной более 273 бит не гарантируется.

Shabal алгоритм

У алгоритма Shabal существуют различные версии в зависимости от длины полученного хэша "lh": SHABAL-192, SHABAL-224, SHABAL-256, SHABAL-384, SHABAL-512.

После ввода алгоритма на вход поступает битовая последовательность, она разбивается на блоки по 512 бит, независимо от используемой вариации SHABAL (SHABAL-512, SHABAL-384 и т.д.). Обратите внимание, что размер блока кратен 32. Последнему блоку, если его битовая длина не равна 512 битам, присваивается одна битовая единица и необходимое количество нулей для достижения заданного размера блока.

Shabal – итерационный алгоритм. Количество повторов равно количеству блоков исходной битовой последовательности плюс две итерации на блок, добавленные в начало сообщения, плюс три финальные итерации.

См. также на BitcoinWiki[править]

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