Представлена современная криптографическая хеш-функция BLAKE2, не уступающая по производительности MD5, потребляющая на 33% меньше памяти чем SHA-2/SHA-3 и лишенная известных проблем с безопасностью. BLAKE2 является переработанной версией хэш-функции BLAKE, вошедшей в число финалистов конкурса на разработку криптоалгоритмов для стандарта SHA-3. При проектировании BLAKE2 была поставлена задача обеспечения максимальной производительности программной реализации алгоритма с предоставлением высочайшего уровня безопасности.
В итоге, был подготовлен алгоритм значительно превосходящий по надёжности MD5, но близкий к нему по производительности, что делает его пригодным для использования в областях, где в силу своей производительности до сих пор доминируют MD5 и SHA1 - в облачных хранилищах, системах контроля версий, дистрибутивах программного обеспечения, системах выявления вторжений и средствах цифровой экспертизы (digital forensics). Как и SHA-3 алгоритм BLAKE2 не чувствителен к размеру хэшируемых данных и защищён от всех свойственных SHA-1 и MD5 видов атак, связанных с возникновением коллизий в процессе хэширования. Надёжность алгоритма подтверждена многолетним аудитом, который проводился в процессе оценки претендентов на звание стандарта SHA-3.
Для использования подготовлены две реализации BLAKE2:
- BLAKE2b (или просто BLAKE2) - вариант, оптимизированный для 64-разрядных платформ и поддерживающий акселерацию через задействование инструкций NEON для ARM-систем и SSE2, SSSE3, SSE4.1, AVX и XOP для архитектур x86. Размер результирующего хэша может генерироваться в диапазоне от 1 до 64 байт. Доступны две модификации BLAKE2b, позволяющие существенно увеличить производительность за счёт распаралелливания на многоядерных или SIMD процессорах: BLAKE2bp - с поддержкой распараллеливания на 4 потока, и BLAKE2sp - с поддержкой распараллеливания на 8 потоков (используется OpenMP).
- BLAKE2s - вариант для 8-, 16- и 32-разрядных платформ, позволяющий генерировать хэши размером от 1 до 32 байт.
Реализации доступны как в виде библиотек для различных языков программирования, так и в форме утилиты b2sum, позволяющей из командной строки хэшировать файлы с использованием методов BLAKE2b, BLAKE2s, BLAKE2bp и BLAKE2sp. При проведении теста на системе с процессором Intel Core i7-2630QM (Sandy Bridge 2GHz) была продемонстрирована производительность в 531 мебибайт в секунду (3.59 процессорных циклов на байт), при использовании процессора AMD FX-8150 (Bulldozer 3.6GHz) производительность составила 628 мебибайт в секунду (5.47 процессорных циклов на байт).