BLAKE2
BLAKE2 — это семейство криптографических хеш-функций, созданное как более быстрая и безопасная альтернатива широко распространённым алгоритмам MD5, SHA-1 и SHA-2. Разработанная в 2012 году группой криптографов под руководством Жана-Филиппа Омассона (Jean-Philippe Aumasson), Самуэля Невеса (Samuel Neves), Зуко Уилкокса-О’Хирна (Zooko Wilcox-O’Hearn) и Кристиана Винтерхальтера (Christian Winnerlein), функция BLAKE2 основана на финалисте конкурса SHA-3 — алгоритме BLAKE, но оптимизирована для высокой производительности на современных процессорах без снижения криптостойкости. BLAKE2 не является стандартом, утверждённым государственными органами (в отличие от SHA-3 или SHA-2), но широко применяется в программном обеспечении, криптовалютах и протоколах благодаря своей скорости и надёжности.
История и предпосылки создания
К середине 2000-х годов стало очевидно, что алгоритмы семейства SHA-1 и MD5 имеют серьёзные уязвимости. К 2005 году были найдены коллизии для SHA-1, а MD5 был полностью скомпрометирован. Национальный институт стандартов и технологий США (NIST) объявил конкурс на новый стандарт хеширования SHA-3, который завершился в 2012 году победой алгоритма Keccak. Однако одним из пяти финалистов конкурса был алгоритм BLAKE, созданный той же командой, что позже разработала BLAKE2. Несмотря на то, что BLAKE не победил, он получил признание за свою криптографическую надёжность и элегантную конструкцию.
После завершения конкурса разработчики BLAKE решили создать его практическую модификацию, ориентированную на повседневное использование. Основной целью было устранение недостатков оригинального BLAKE, который был относительно медленным на некоторых платформах из-за необходимости выполнять большое количество раундов. В результате в 2012 году была представлена спецификация BLAKE2. В отличие от BLAKE, новая функция предлагала меньшее количество раундов (10 вместо 14 для 32-битной версии и 12 вместо 16 для 64-битной), что значительно ускорило вычисления без потери безопасности.
Архитектура и принцип работы
BLAKE2, как и его предшественник, основана на конструкции «губка» (sponge construction) в сочетании с HAIFA-структурой (HAsh Iterative FrAmework). Однако внутренняя логика использует так называемую «сжимающую функцию» (compression function), которая обрабатывает блоки данных фиксированного размера. Основным строительным блоком является функция G, которая применяется к 128-битным словам состояния и использует операции сложения, XOR и циклического сдвига. Эта функция не имеет обратимых свойств, что затрудняет нахождение коллизий.
Ключевое отличие BLAKE2 от SHA-2 заключается в использовании «шифрования с ключом» (keyed hashing) и режима «деревьев» (tree hashing) без дополнительных накладных расходов. Алгоритм может работать как обычная хеш-функция, так и как MAC (Message Authentication Code) — для этого в начальное состояние загружается секретный ключ. Это делает BLAKE2 удобной для построения протоколов аутентификации.
Параметры и варианты
BLAKE2 имеет два основных варианта, различающихся разрядностью:
- BLAKE2b (BLAKE2 for 64-bit platforms) — оптимизирована для 64-битных архитектур, выдаёт хеш длиной от 1 до 64 байт (8–512 бит). Максимальный размер выходного хеша — 64 байта.
- BLAKE2s (BLAKE2 for 8–32-bit platforms) — оптимизирована для 32-битных и 8-битных систем, выдаёт хеш длиной от 1 до 32 байт (8–256 бит). Максимальный размер — 32 байта.
Кроме того, существует специализированный вариант BLAKE2sp и BLAKE2bp — параллельные версии, которые используют многопоточность для ускорения хеширования больших объёмов данных на многоядерных процессорах. Они разбивают входные данные на части, обрабатываемые независимо, а затем объединяют результаты.
Сравнение с другими хеш-функциями
BLAKE2 значительно превосходит по скорости SHA-2 (SHA-256, SHA-512) и SHA-3 на большинстве современных процессоров. По данным разработчиков, BLAKE2b на 64-битных системах работает в 1,5–2 раза быстрее SHA-512 и в 3–4 раза быстрее SHA-3 (Keccak). На 32-битных платформах BLAKE2s также опережает SHA-256 примерно в 2 раза. При этом криптостойкость BLAKE2 считается эквивалентной SHA-2: для BLAKE2s (256 бит) — 128 бит безопасности, для BLAKE2b (512 бит) — 256 бит безопасности.
В отличие от MD5 и SHA-1, для BLAKE2 не было найдено практических коллизий, несмотря на активные исследования. Алгоритм устойчив к известным типам атак, включая атаки на расширение длины (length extension attack), которые уязвимы для MD5, SHA-1 и SHA-2. BLAKE2 по своей конструкции не подвержена этой атаке, так как использует внутренний счётчик и режим «конечного ключа» (finalization).
Применение
BLAKE2 получила широкое распространение в различных областях информационных технологий:
- Криптовалюты: BLAKE2b используется в алгоритме хеширования для майнинга криптовалюты Decred (DCR) и некоторых других монет, где требуется высокая скорость и стойкость к ASIC-майнерам.
- Операционные системы: BLAKE2 включена в стандартные библиотеки многих ОС, включая Linux (начиная с ядра 4.15), FreeBSD, OpenBSD и macOS (через libsystem). В Linux она используется для хеширования паролей в файле
/etc/shadow(алгоритм yescrypt). - Протоколы и утилиты: BLAKE2 применяется в протоколе SSH (OpenSSH), в архиваторе 7-Zip, в менеджере паролей KeePass, в криптографической библиотеке NaCl (Networking and Cryptography library) и её форке libsodium.
- Верификация данных: BLAKE2 часто используется для проверки целостности файлов и сообщений, как замена MD5 и SHA-1 в утилитах
blake2sum,b2sum(входит в состав GNU Coreutils). - Стандартизация: В 2015 году BLAKE2 была включена в стандарт Internet Engineering Task Force (IETF) как RFC 7693, что формализовало её использование в интернет-протоколах.
Криптоанализ и безопасность
На момент 2024 года BLAKE2 не имеет известных эффективных атак, позволяющих найти коллизию или обратное значение быстрее, чем полным перебором. Исследования показывают, что даже для уменьшенного числа раундов (например, 5 раундов для BLAKE2s вместо 10) атаки не приводят к практическим результатам. Разработчики специально выбрали консервативное количество раундов, чтобы обеспечить запас прочности.
Однако в 2021 году группа исследователей под руководством Дмитрия Ховратовича (Dmitry Khovratovich) опубликовала работу, в которой была показана теоретическая атака на BLAKE2b с уменьшенным до 7 раундов числом итераций. Полнораундовая версия (12 раундов для BLAKE2b) остаётся неуязвимой. Это подтверждает, что BLAKE2 сохраняет высокий уровень безопасности.
Интересные факты
- Название «BLAKE2» происходит от имени разработчика Жана-Филиппа Омассона (Jean-Philippe Aumasson) — BLAKE является акронимом от «BLAKE» (фамилия) и «KEccak» (название победителя конкурса SHA-3). Цифра «2» указывает на вторую версию алгоритма.
- BLAKE2b может выдавать хеш длиной до 512 бит, что делает её одной из немногих хеш-функций, способных генерировать дайджесты такой длины (наряду с SHA-512 и SHA-3-512).
- Алгоритм BLAKE2sp (параллельная версия BLAKE2s) на многоядерных процессорах может достигать скорости хеширования до 10 Гбит/с на одном ядре, что делает её одной из самых быстрых криптографических хеш-функций в мире.
- BLAKE2 не требует лицензирования и является общественным достоянием (public domain). Разработчики сознательно отказались от патентов, чтобы стимулировать её широкое внедрение.
Критика и ограничения
Несмотря на преимущества, BLAKE2 не лишена недостатков. Основной критикой является отсутствие официальной сертификации со стороны NIST или других государственных органов, что ограничивает её использование в некоторых государственных и военных системах, где требуется соответствие стандартам (например, ГОСТ Р или FIPS). Кроме того, BLAKE2 не поддерживает режим работы с ключом для аутентификации так же просто, как HMAC (хотя может использоваться как MAC сама по себе). Некоторые специалисты отмечают, что BLAKE2 менее изучена с точки зрения криптоанализа, чем SHA-2, хотя за более чем десять лет исследований серьёзных уязвимостей не обнаружено.
Источники
- Aumasson, J.-P., Neves, S., Wilcox-O’Hearn, Z., Winnerlein, C. (2012). BLAKE2: simpler, smaller, fast as MD5. IACR Cryptology ePrint Archive.
- RFC 7693: The BLAKE2 Cryptographic Hash and Message Authentication Code (MAC). IETF, 2015.
- Bernstein, D. J., Lange, T. (2013). NaCl: Networking and Cryptography library. Documentation.
- Khovratovich, D., et al. (2021). Improved attacks on reduced-round BLAKE2. IACR Transactions on Symmetric Cryptology.
- Документация GNU Coreutils: b2sum. Free Software Foundation.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →