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

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 байта.

Основные компоненты

  1. Инициализация: Внутреннее состояние (IV) инициализируется константами, зависящими от длины дайджеста, ключа и соли. Для BLAKE2b используется 8-словное состояние (каждое слово — 64 бита), которое делится на две части: «верхнюю» и «нижнюю» половины.
  2. Сжатие: Каждый блок данных обрабатывается с помощью раундовой функции, которая включает операции сложения, XOR, циклические сдвиги и перестановки. Раундовая функция основана на структуре, напоминающей ChaCha20, но с дополнительными шагами.
  3. Финализация: После обработки всех блоков состояние преобразуется в дайджест заданной длины. Если длина дайджеста меньше 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-512SHA-3 (512 бит)
Скорость (ГБ/с)~1.2~0.5~0.3
Размер дайджеста64 байта64 байта64 байта
Размер блока128 байт128 байт72 байта
Количество раундов128024 (для 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 →