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

Keccak

Keccak (произносится как «кечак» или «кетчак») — это семейство криптографических функций, основанных на губчатой конструкции (sponge construction), разработанное специалистами STMicroelectronics и Национального института стандартов и технологий США (NIST). В 2012 году Keccak был признан победителем конкурса криптографических алгоритмов хеширования, организованного NIST, и утверждён в качестве стандарта SHA-3.

История создания

Предшественником Keccak является алгоритм RadioGatún, также использующий губчатую конструкцию. В 2006 году группа исследователей (Гвидо Бертони, Жоан Демен, Мика Питерс и Жиль Ван Аше) разработала первую версию Keccak для участия в конкурсе NIST по выбору нового стандарта хеширования. Конкурс был объявлен в 2007 году после обнаружения успешных атак на алгоритм SHA-1 и появления признаков ослабления SHA-2.

Keccak обошёл 63 других кандидата, включая пятерых финалистов (BLAKE, Grøstl, JH, Skein и SHAvite-3). В 2012 году NIST объявил Keccak победителем, а алгоритм был стандартизирован как SHA-3. Конкретная версия, утверждённая NIST, немного отличалась от оригинальной параметрами: была изменена ёмкость и количество раундов для повышения запаса прочности.

Криптографическая конструкция

В отличие от классических хеш-функций, использующих конструкцию Меркла — Дамгора (SHA-1, SHA-2), Keccak реализует губчатую конструкцию. Этот подход состоит из двух чередующихся фаз: впитывание (absorbing) и выжимание (squeezing).

Губчатая конструкция

Исходное состояние алгоритма представляет собой битовую строку длиной b = r + c, где:

Начальное состояние заполняется нулями. Каждый бит сообщения разбивается на блоки размера r. На каждом раунде блок сообщения XOR-ится с состоянием, после чего применяется функция перестановки (Keccak-f). После обработки всех блоков в фазе выжимания из состояния выбираются биты размера r для формирования хеша. Если нужная длина хеша превышает r, процесс выжимания повторяется.

Функция перестановки Keccak-f

Основой Keccak является семейство перестановок Keccak-f с длиной состояния b = 25 × 2^l (l — число от 0 до 6). В SHA-3 используется b = 1600 бит (l = 6). Перестановка состоит из 12 + 2l раундов (24 раунда для SHA-3).

Каждый раунд включает пять шагов:

  1. θ (тета) — XOR-взаимодействие столбцов для распространения битов;
  2. ρ (ро) — вращение битов внутри каждой дорожки (lane) на заданное число позиций;
  3. π (пи) — перестановка дорожек между столбцами;
  4. χ (хи) — нелинейная операция, выполняемая по строкам (единственная нелинейная стадия);
  5. ι (йота) — добавление константы раунда для синхронизации.

Параметры для SHA-3

Стандарт SHA-3 включает четыре варианта с разной длиной хеша:

ВариантВыход (бит)r (бит)c (бит)Стойкость (бит)
SHA3-2242241152448112
SHA3-2562561088512128
SHA3-384384832768192
SHA3-5125125761024256

Стойкость к коллизиям составляет половину длины выхода (n/2), к прообразу — n.

Криптографическая стойкость

Keccak (SHA-3) спроектирован с избыточным запасом прочности. Создатели алгоритма установили количество раундов (24) в два раза больше, чем требовалось для эффективной диффузии. Ни на момент стандартизации, ни в последующие годы (до 2025 года) не было опубликовано ни одной теоретически или практически успешной атаки на полную версию Keccak, сопоставимой по сложности с полным перебором.

Известные атаки:

По состоянию на 2025 год наиболее успешные атаки на полный 6-раундовый Keccak (в версии c = 512) имеют сложность выше 2^200 операций, что делает их нефункциональными для полной версии.

Применение

Криптография и информационная безопасность

Keccak применяется в:

Блокчейны и криптовалюты

Keccak (в варианте Keccak-256) используется в ряде блокчейн-систем:

Постквантовая криптография

Губчатая конструкция Keccak является основой для нескольких постквантовых схем подписи и шифрования, включая:

Сравнение с SHA-2

ХарактеристикаSHA-2SHA-3 (Keccak)
КонструкцияМеркла — ДамгорГубчатая
Длина состояния256/512 бит1600 бит
НелинейностьXOR, сложение, ANDТолько XOR в χ
Скорость (аппаратная)СредняяВысокая (простая логика)
Скорость (программная)Быстро (оптимизировано)Медленнее SHA-2 на x86
Устойчивость к атакам удлиненияНетДа
Стойкость к квантовым атакамУязвим (алгоритм Гровера)Аналогично

Критика и ограничения

Основные критические замечания в адрес SHA-3:

  1. Производительность: В программных реализациях на типичных процессорах x86 SHA-3 в 2–4 раза медленнее SHA-256. Это связано с необходимостью поддержания большого состояния (1600 бит) и малым количеством аппаратной поддержки.
  2. Стандартизация: NIST после победы Keccak изменил параметры (в частности, поднял c минимум до 512), что вызвало недовольство некоторых разработчиков из-за снижения скорости по сравнению с оригинальным вариантом.
  3. Спор с Ethereum: Продолжительное время существует путаница между Keccak-256 и SHA3-256, поскольку Ethereum использует пре-стандартную версию Keccak, что приводило к ошибкам совместимости между системами.

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

Источники

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

На главную BFOmetr →