БЛЕЙК (хэш-функция)


BLAKE — это криптографическая хэш-функция , основанная на потоковом шифре Дэниела Дж. Бернштейна ChaCha , но перед каждым раундом ChaCha добавляется переставленная копия входного блока, обработанная XOR с константами раунда. Как и SHA-2 , есть два варианта, отличающиеся размером слова . ChaCha работает с массивом слов 4×4. BLAKE многократно комбинирует хэш-значение из 8 слов с 16 словами сообщения, усекая результат ChaCha для получения следующего хэш-значения. BLAKE-256 и BLAKE-224 используют 32-битные слова и производят дайджесты размером 256 и 224 бита соответственно, в то время как BLAKE-512 и BLAKE-384использовать 64-битные слова и создавать размеры дайджеста 512 бит и 384 бита соответственно.

Хэш- функция BLAKE2 , основанная на BLAKE, была анонсирована в 2012 году. Хеш-функция BLAKE3 , основанная на BLAKE2, была анонсирована в 2020 году.

BLAKE был представлен на конкурс хеш-функций NIST Жаном-Филиппом Аумассоном, Лукой Хензен, Вилли Мейером и Рафаэлем К.-В. Фан. В 2008 году было 51 запись. Блейк прошел в финальный раунд, состоящий из пяти кандидатов, но проиграл Кекчаку в 2012 году, который был выбран для алгоритма SHA-3 .

Как и SHA-2 , BLAKE существует в двух вариантах: один использует 32-битные слова для вычисления хэшей длиной до 256 бит, а другой использует 64-битные слова для вычисления хэшей длиной до 512 бит. Преобразование базового блока объединяет 16 слов ввода с 16 рабочими переменными, но между блоками сохраняется только 8 слов (256 или 512 бит).

Он использует таблицу из 16 постоянных слов (старшие 512 или 1024 бита дробной части числа π ) и таблицу из 10 перестановок по 16 элементов:

Основная операция, эквивалентная четвертному раунду ChaCha, работает со столбцом или диагональю из 4 слов a b c d, которые объединяются с 2 словами сообщения m[]и двумя постоянными словами n[]. Выполняется 8 раз за полный раунд: