Пускане на референтната реализация на криптографската хеш функция BLAKE3 1.0

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

Пускане на референтната реализация на криптографската хеш функция BLAKE3 1.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 KB. Според създателите, те са намерили убедително математическо доказателство, че е възможно да се мине със 7 рунда вместо 10, като се запази същото ниво на надеждност (за по-голяма яснота можем да дадем пример със смесване на плодове в миксер - след 7 секунди плодовете вече са напълно смесени и допълнителни 3 секунди няма да повлияят на консистенцията на сместа). Някои изследователи обаче изразяват съмнения, вярвайки, че дори ако 7 кръга в момента са достатъчни за противодействие на всички известни атаки срещу хешове, тогава допълнителни 3 кръга могат да бъдат полезни, ако бъдат идентифицирани нови атаки в бъдеще.

Що се отнася до разделянето на блокове, в BLAKE3 потокът е разделен на части от 1 KB и всяка част се хешира независимо. Въз основа на хешовете на парчетата се формира един голям хеш на базата на двоичното дърво на Merkle. Това разделение ни позволява да решим проблема с паралелизиране на обработката на данни при изчисляване на хешове - например можете да използвате 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

Добавяне на нов коментар