Състоя се пускането на еталонната реализация на криптографската хеш-функция BLAKE3 1.0, забележителна с много висока производителност при изчисляване на хеш и осигуряване на надеждност на ниво SHA-3. В теста за генериране на хеш за файл с размер 16 КБ, BLAKE3 с 256-битов ключ изпреварва SHA3-256 с 17 пъти, SHA-256 с 14 пъти, SHA-512 с 9 пъти, SHA-1 с 6 пъти, а BLAKE2b с 5 пъти. Значителното предимство остава и при обработката на много големи обеми данни, например, BLAKE3 се оказа 8 пъти по-бърз от SHA-256 при изчисляване на хеш за 1 ГБ случайни данни. Кодът на еталонната реализация BLAKE3 се предлага на езици C и Rust под двойна лицензия — обществено достояние (CC0) и Apache 2.0.

Хеш-функцията е проектирана за приложения като проверка на целостта на файлове, удостоверяване на съобщения и генериране на данни за криптографски цифрови подписи. BLAKE3 не е предназначена за хеширане на пароли, тъй като е насочена към максимално бързо изчисляване на хешове (за пароли се препоръчва да се използват бавни хеш-функции като yescrypt, bcrypt, scrypt или Argon2). Обсъжданата хеш-функция не е чувствителна към размера на хешираните данни и е защитена от атаки за подбор на колизии и намиране на предпразник.
Алгоритъмът е разработен от известни специалисти в криптографията (Jack O’Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn) и продължава развитието на алгоритъма BLAKE2, като прилага механизма Bao за кодиране на дърво от блокови вериги. За разлика от BLAKE2 (BLAKE2b, BLAKE2s), в BLAKE3 за всички платформи е предложен единен алгоритъм, който не е свързан с разрядността и размера на хеша.
Подобрения в производительности были достигнуты за счёт сокращения числа раундов с 10 до 7 и раздельного хеширования блоков по 1 Кб. Согласно заявлениям разработчиков, они нашли убедительное математическое доказательство, что можно ограничиться 7 раундами вместо 10 при сохранении того же уровня надёжности (для наглядности можно привести пример с перемешиванием фруктов в блендере — через 7 секунд фрукты уже полностью перемешаны, и дополнительные 3 секунды не повлияют на консистенцию смеси). При этом некоторые исследователи выражают сомнения, полагая, что даже если сейчас 7 раундов достаточно для противостояния всем известным атакам на хеши, дополнительные 3 раунда могут оказаться полезными в случае возникновения новых атак в будущем.
Что касается разделения на блоки, то в BLAKE3 поток разбивается на кусочки по 1 Кб, и каждый кусочек хешируется независимо. На основе хешей кусочков формируется один большой хеш на базе бинарного дерева Меркла. Указанное разделение позволяет решить проблему параллельной обработки данных при вычислении хеша — например, можно использовать 4-поточные SIMD-инструкции для одновременного вычисления хешей 4 блоков. Традиционные хеш-функции SHA-* обрабатывают данные последовательно.
Характеристики на BLAKE3:
- Высокая производительность, BLAKE3 значительно быстрее MD5, SHA-1, SHA-2, SHA-3 и BLAKE2.
- Безопасность, в том числе стойкость к атаке удлинением сообщения, которой подвержен SHA-2;
- Доступны версии на языке Rust, оптимизированные для использования инструкций SSE2, SSE4.1, AVX2, AVX-512 и NEON.
- Обеспечение распараллеливания вычислений на любое количество потоков и SIMD-каналов.
- Възможност за инкрементално обновяване и верифицирана обработка на потоци;
- Применение в режимах PRF, MAC, KDF, XOF и как обычный хеш;
- Единен алгоритъм за всички архитектури, бърз както на системи x86-64, така и на 32-битови процесори ARM.
Основные отличия BLAKE3 от BLAKE2:
- Использование бинарной древовидной структуры, позволяющей достичь неограниченного параллелизма при вычислении хеша.
- Сокращение числа раундов с 10 до 7.
- Три режима работы: хеширование, хеширование с ключом (HMAC) и формирование ключа (KDF).
- Отсутствие дополнительных накладных расходов при хешировании с ключом благодаря использованию области, ранее занимаемой параметрами ключа.
- Встроенный механизм работы в форме функции с удлиняемым результатом (XOF, Extendable Output Function), допускающей распараллеливание и позиционирование (seek).
Източник: opennet.ru
