BLAKE2b
BLAKE2b — это криптографическая хеш-функция, являющаяся вариантом алгоритма BLAKE2, оптимизированным для 64-битных платформ. Она относится к классу криптографических хеш-функций и предназначена для создания дайджеста (хеш-суммы) произвольной длины (от 1 до 64 байт) из входных данных произвольного размера. BLAKE2b была разработана как высокопроизводительная и безопасная альтернатива SHA-2 и SHA-3, сохраняя при этом высокую степень устойчивости к коллизиям и другим атакам.
История
BLAKE2b была представлена в 2012 году группой криптографов, включая Жана-Филиппа Аумассона, Сэмюэля Нойеса, Зуко Уилкокса-О’Хирна и Кристиана Виннерлейна. Алгоритм является эволюцией хеш-функции BLAKE, которая была финалистом конкурса SHA-3, проводимого Национальным институтом стандартов и технологий (NIST) США. Разработчики стремились создать более быструю и простую в реализации версию, устранив недостатки предшественника, такие как сложность структуры и зависимость от платформы.
Основные изменения по сравнению с BLAKE включали:
- Упрощение раундовой функции: количество раундов было сокращено с 16 до 12 для BLAKE2b (и до 10 для BLAKE2s).
- Удаление констант, связанных с длиной сообщения, что упростило реализацию.
- Введение режима «дерева» (tree hashing) для параллельного хеширования больших объёмов данных.
- Поддержка ключей (MAC) и соли (salt) без дополнительных модификаций.
BLAKE2b была включена в стандарт RFC 7693 в 2015 году, что подтвердило её пригодность для использования в интернет-протоколах. В 2020 году алгоритм был рекомендован NIST для использования в постквантовой криптографии, хотя сам по себе он не является постквантовым.
Принцип работы
BLAKE2b основана на структуре, называемой «сеть с хаотическим перемешиванием» (sponge construction), но в отличие от SHA-3, использует модифицированную версию, известную как «HAIFA» (HAsh Iterative FrAmework). Алгоритм обрабатывает входные данные блоками фиксированного размера (128 байт для BLAKE2b) и использует внутреннее состояние размером 64 байта.
Основные компоненты
- Инициализация: Внутреннее состояние (IV) инициализируется константами, зависящими от длины дайджеста, ключа и соли. Для BLAKE2b используется 8-словное состояние (каждое слово — 64 бита), которое делится на две части: «верхнюю» и «нижнюю» половины.
- Сжатие: Каждый блок данных обрабатывается с помощью раундовой функции, которая включает операции сложения, XOR, циклические сдвиги и перестановки. Раундовая функция основана на структуре, напоминающей ChaCha20, но с дополнительными шагами.
- Финализация: После обработки всех блоков состояние преобразуется в дайджест заданной длины. Если длина дайджеста меньше 64 байт, лишние байты отбрасываются.
Раундовая функция
Каждый раунд состоит из 8 шагов (G-функций), которые применяются к 16-словному состоянию (4 строки по 4 слова). G-функция включает:
- Сложение двух слов.
- XOR результата с третьим словом.
- Циклический сдвиг влево на 32 бита.
- Повторение с другими парами слов.
Для BLAKE2b используется 12 раундов (в отличие от 16 в BLAKE). Это снижает вычислительную нагрузку, сохраняя при этом безопасность.
Классификация
BLAKE2b является частью семейства BLAKE2, которое включает две основные версии:
- BLAKE2b: Оптимизирована для 64-битных архитектур (например, x86-64, ARM64). Максимальная длина дайджеста — 64 байта (512 бит). Рекомендуется для серверов, настольных компьютеров и встраиваемых систем с 64-битными процессорами.
- BLAKE2s: Оптимизирована для 32-битных платформ (например, ARM32, микроконтроллеры). Максимальная длина дайджеста — 32 байта (256 бит). Используется в мобильных устройствах и IoT-системах.
Также существуют специализированные варианты:
- BLAKE2bp: Параллельная версия для многопоточных систем.
- BLAKE2sp: Параллельная версия для 32-битных систем.
Характеристики
Производительность
BLAKE2b демонстрирует высокую скорость работы на 64-битных процессорах, часто превосходя SHA-256 и SHA-512 в 2-3 раза. Например, на процессоре Intel Core i7-4790 (3.6 ГГц) BLAKE2b обрабатывает данные со скоростью около 1.2 ГБ/с, тогда как SHA-512 — около 0.5 ГБ/с. Это достигается за счёт использования простых арифметических операций (сложение, XOR, сдвиги) и эффективной работы с кэшем.
Безопасность
BLAKE2b считается криптостойкой хеш-функцией. Она устойчива к:
- Коллизиям: Нахождение двух разных сообщений с одинаковым дайджестом требует не менее 2^256 операций для 512-битного дайджеста.
- Прообразу: Восстановление исходного сообщения по дайджесту требует не менее 2^512 операций.
- Второму прообразу: Нахождение другого сообщения с тем же дайджестом требует не менее 2^512 операций.
Алгоритм не имеет известных уязвимостей, таких как атаки на основе дифференциального криптоанализа или атаки на основе времени. Однако, как и все хеш-функции, BLAKE2b не является постквантовой — теоретически квантовый компьютер может сократить время поиска коллизий до 2^256 операций (алгоритм Гровера).
Параметры
- Размер блока: 128 байт (1024 бита).
- Размер внутреннего состояния: 64 байта (512 бит).
- Количество раундов: 12.
- Максимальная длина дайджеста: 64 байта (512 бит).
- Минимальная длина дайджеста: 1 байт.
- Поддержка ключей: до 64 байт.
- Поддержка соли: до 16 байт.
- Поддержка персонализации: до 16 байт.
Применение
BLAKE2b широко используется в различных областях, где требуется высокая производительность и безопасность:
Криптовалюты и блокчейн
- Decred (DCR): Использует BLAKE2b в качестве алгоритма хеширования для майнинга (Proof-of-Work).
- Siacoin (SC): Применяет BLAKE2b для хеширования транзакций и блоков.
- Nano (NANO): Использует BLAKE2b для генерации адресов и проверки подписей.
Протоколы и стандарты
- RFC 7693: Определяет BLAKE2b как стандарт для интернет-протоколов.
- OpenSSL: Начиная с версии 1.1.0, включает поддержку BLAKE2b.
- Linux kernel: Используется в модулях криптографической подсистемы (например, для хеширования файлов).
Программное обеспечение
- Git: Опционально поддерживает BLAKE2b для хеширования объектов (наряду с SHA-1).
- Btrfs: Файловая система использует BLAKE2b для проверки целостности данных.
- ZFS: В некоторых реализациях применяет BLAKE2b для контрольных сумм.
Криптография
- HMAC: BLAKE2b может использоваться для создания кодов аутентификации сообщений (MAC) без дополнительных модификаций.
- PBKDF2: Алгоритм выработки ключа на основе пароля может использовать BLAKE2b в качестве псевдослучайной функции.
- Argon2: Современный алгоритм хеширования паролей использует BLAKE2b для внутренних операций.
Сравнение с другими хеш-функциями
| Характеристика | BLAKE2b (512 бит) | SHA-512 | SHA-3 (512 бит) |
|---|---|---|---|
| Скорость (ГБ/с) | ~1.2 | ~0.5 | ~0.3 |
| Размер дайджеста | 64 байта | 64 байта | 64 байта |
| Размер блока | 128 байт | 128 байт | 72 байта |
| Количество раундов | 12 | 80 | 24 (для 512 бит) |
| Поддержка ключей | Да | Нет (только через HMAC) | Нет (только через HMAC) |
| Поддержка соли | Да | Нет | Нет |
| Постквантовая устойчивость | Нет | Нет | Нет |
BLAKE2b превосходит SHA-512 по скорости в 2-3 раза, сохраняя аналогичный уровень безопасности. SHA-3, хотя и является более современным, медленнее из-за более сложной структуры (sponge construction). Однако SHA-3 обладает лучшей устойчивостью к атакам на основе квантовых компьютеров (но не является постквантовой).
Интересные факты
- BLAKE2b была разработана как часть проекта «BLAKE2», который является преемником BLAKE, финалиста конкурса SHA-3. Разработчики стремились создать «самую быструю безопасную хеш-функцию».
- Алгоритм не использует предварительные вычисления (precomputation) для ускорения, что делает его устойчивым к атакам на основе времени.
- BLAKE2b поддерживает «персонализацию» — уникальный идентификатор для каждого экземпляра хеш-функции, что предотвращает коллизии между разными приложениями.
- В 2023 году BLAKE2b была включена в список рекомендованных NIST для использования в криптографических протоколах, таких как TLS 1.3.
Критика
Несмотря на высокую производительность, BLAKE2b имеет несколько недостатков:
- Отсутствие постквантовой устойчивости: Как и все классические хеш-функции, BLAKE2b уязвима для квантовых атак (алгоритм Гровера).
- Сложность реализации: Для корректной работы требуется строгое соблюдение спецификации, особенно при использовании режима «дерева».
- Ограниченная поддержка в старых системах: Некоторые библиотеки (например, OpenSSL до версии 1.1.0) не поддерживают BLAKE2b, что требует дополнительных усилий по интеграции.
Источники
- RFC 7693: The BLAKE2 Cryptographic Hash and Message Authentication Code (MAC)
- Aumasson, J.-P., Neves, S., Wilcox-O’Hearn, Z., & Winnerlein, C. (2012). BLAKE2: Simpler, Smaller, Fast as MD5
- NIST SP 800-185: SHA-3 Derived Functions
- OpenSSL documentation: BLAKE2 support
- Linux kernel source code: crypto/blake2b_generic.c
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →