SHABAL
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 существуют различные версии в зависимости от длины полученного хэша “lh“: SHABAL-192, SHABAL-224, SHABAL-256, SHABAL-384, SHABAL-512.
После ввода алгоритма на вход поступает битовая последовательность, она разбивается на блоки по 512 бит, независимо от используемой вариации SHABAL (SHABAL-512, SHABAL-384 и т.д.). Обратите внимание, что размер блока кратен 32. Последнему блоку, если его битовая длина не равна 512 битам, присваивается одна битовая единица и необходимое количество нулей для достижения заданного размера блока.
Shabal – итерационный алгоритм. Количество повторов равно количеству блоков исходной битовой последовательности плюс две итерации на блок, добавленные в начало сообщения, плюс три финальные итерации.