Opublikowano ostateczną implementację algorytmu , który oferuje kryptograficzną funkcję skrótu przeznaczoną do zastosowań takich jak sprawdzanie integralności plików, uwierzytelnianie wiadomości i generowanie danych do podpisów cyfrowych. BLAKE3 nie jest przeznaczony do hashowania haseł (w przypadku haseł należy używać yescrypt, bcrypt, scrypt lub Argon2), ponieważ jest przeznaczony do obliczania skrótów tak szybko, jak to możliwe, z gwarancją braku kolizji, ochrony przed i niewrażliwe na rozmiar haszowanych danych. Implementacją referencyjną jest BLAKE3 Podwójna licencja - domena publiczna (CC0) i Apache 2.0.
Kluczową różnicą nowej funkcji skrótu jest jej bardzo wysoka wydajność obliczeń skrótu przy zachowaniu niezawodności na poziomie SHA-3. Domyślnie wynikowy rozmiar skrótu w BLAKE3 wynosi 32 bajty (256 bitów), ale można go rozszerzyć do dowolnych wartości. W teście generowania skrótu dla pliku o rozmiarze 16 KB BLAKE3 przewyższa SHA3-256 15 razy, SHA-256 12 razy, SHA-512 8 razy, SHA-1 6 razy i BLAKE2b 4 razy. Znaczna luka pozostaje przy przetwarzaniu bardzo dużych ilości danych, na przykład BLAKE3 okazał się SHA-256 jest 8x szybszy przy obliczaniu skrótu dla 1 GB losowych danych.
Algorytm został opracowany przez uznanych ekspertów w dziedzinie kryptografii (, , , ) i nadal rozwija algorytm i wykorzystuje mechanizm do kodowania drzewa łańcuchów bloków W przeciwieństwie do BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 oferuje jeden algorytm dla wszystkich platform, nie jest on powiązany z głębokością bitową i rozmiarem skrótu.
Wzrost wydajności został osiągnięty poprzez zmniejszenie liczby rund z 10 do 7 i haszowanie bloków w blokach 1 KB oddzielnie. Według twórców, znaleźli przekonujący , że można obejść się 7 rundami zamiast 10, zachowując ten sam poziom niezawodności (dla jasności możemy posłużyć się przykładem miksowania owoców w blenderze - po 7 sekundach owoce są już całkowicie wymieszane, a dodatkowe 3 sekundy nie wpłyną na konsystencję mieszanki). Jednocześnie niektórzy badacze wyrażają wątpliwości, wierząc, że nawet jeśli 7 rund jest obecnie wystarczające, aby wytrzymać wszystkie znane ataki na hasze, to dodatkowe 3 rundy mogą być przydatne, jeśli w przyszłości zostaną wykryte nowe ataki.
Jeśli chodzi o podział na bloki, w BLAKE3 strumień jest dzielony na części o rozmiarze 1 KB, a każda część jest haszowana niezależnie. Na podstawie haszów części na bazie powstaje jeden duży hash. Ten podział pozwala rozwiązać problem paralelizacji przetwarzania danych podczas obliczania hasha — na przykład można użyć instrukcji 4-strumieniowych SIMD do jednoczesnego obliczania hashów 4 bloków. Tradycyjne funkcje hashujące SHA-* przetwarzają dane sekwencyjnie.
Cechy BLAKE3:
- Wysoka wydajność;
- Bezpieczeństwo, w tym odporność na , na które podatny jest SHA-2;
- Zapewnia paralelizację obliczeń w dowolnej liczbie wątków i kanałów SIMD;
- Możliwość przyrostowej aktualizacji i zweryfikowanego przetwarzania strumieni;
- Zastosowanie w trybach PRF, MAC, KDF, XOF i jako zwykły hash;
- Pojedynczy algorytm dla wszystkich architektur, szybki zarówno w systemach x86-64, jak i 32-bitowych procesorach ARM.
Źródło: opennet.ru
