Випуск еталонної реалізації криптографічної хеш-функції BLAKE3 1.0

Відбувся реліз еталонної реалізації криптографічної хеш-функції BLAKE3 1.0, що примітна дуже високою продуктивністю обчислення хешу при забезпеченні надійності на рівні SHA-3. У тесті на генерацію хешу для файлу, розміром 16 КБ, BLAKE3 з 256-бітним ключем випереджає SHA3-256 у 17 разів, SHA-256 – у 14 разів, SHA-512 – у 9 разів, SHA-1 – у 6 разів, а BLAKE2b - у 5 разів. Значний відрив зберігається і при обробці дуже великих об'ємів даних, наприклад, BLAKE3 виявився швидше за SHA-256 у 8 разів при обчисленні хешу для 1ГБ випадкових даних. Код еталонної реалізація BLAKE3 поставляється у варіантах мовами Сі та 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 Кб. За заявою творців, вони знайшли переконливий математичний доказ, що можна обійтися 7 раундами замість 10 за збереження того ж рівня надійності (для наочності можна навести приклад із перемішуванням фруктів у міксері — через 7 секунд фрукти вже повністю перемішані, і додаткові 3 секунди не позначаться на суміші суміші). При цьому деякі дослідники висловлюють сумнів, вважаючи, що навіть якщо в даний час 7 раундів достатньо для протистояння всім відомим атакам на хеші, то додаткові 3 раунди можуть виявитися корисними у разі виявлення нових атак у майбутньому.

Що стосується поділу на блоки, то BLAKE3 потік розбивається на шматочки по 1 Кб і кожен шматочок хешується незалежно. На основі хешів шматочків на базі бінарного дерева Меркла формується один великий хеш. Вказаний розділ дозволяє вирішити проблему з розпаралелюванням обробки даних при обчисленні хешу — наприклад, можна використовувати 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

Додати коментар або відгук