Wydano referencyjną implementację kryptograficznej funkcji skrótu BLAKE3 1.0, wyróżniającą się bardzo wysoką wydajnością obliczania skrótu przy jednoczesnym zapewnieniu niezawodności na poziomie SHA-3. W teście generowania skrótu dla pliku o rozmiarze 16 KB BLAKE3 z 256-bitowym kluczem przewyższa SHA3-256 17 razy, SHA-256 14 razy, SHA-512 9 razy, SHA-1 6 razy i BLAKE2b - 5 razy. Znaczna luka pozostaje przy przetwarzaniu bardzo dużych ilości danych, przykładowo BLAKE3 okazał się 256 razy szybszy niż SHA-8 przy obliczaniu skrótu dla 1 GB losowych danych. Referencyjny kod implementacyjny BLAKE3 jest dostępny w wersjach C i Rust w ramach podwójnej licencji domeny publicznej (CC0) i licencji Apache 2.0.

Funkcja skrótu jest przeznaczona do zastosowań takich jak sprawdzanie integralności plików, uwierzytelnianie wiadomości i generowanie danych do kryptograficznych podpisów cyfrowych. BLAKE3 nie jest przeznaczony do mieszania haseł, ponieważ ma na celu jak najszybsze obliczenie skrótów (w przypadku haseł zaleca się użycie wolnych funkcji skrótu takcrypt, bcrypt, scrypt lub Argon2). Rozważana funkcja skrótu jest niewrażliwa na rozmiar zaszyfrowanych danych i jest chroniona przed atakami na selekcję kolizji i wyszukiwanie obrazu wstępnego.
Algorytm został opracowany przez znanych ekspertów w dziedzinie kryptografii (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) i stanowi kontynuację rozwoju algorytmu BLAKE2 i wykorzystuje mechanizm Bao do kodowania drzewa łańcuchów blokowych . W przeciwieństwie do BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 oferuje jeden algorytm dla wszystkich platform, niezależny od głębokości bitowej i rozmiaru skrótu.
Zwiększoną wydajność osiągnięto poprzez zmniejszenie liczby rund z 10 do 7 i oddzielne bloki mieszające w kawałkach o rozmiarze 1 KB. Zdaniem twórców znaleźli przekonujący dowód matematyczny na to, że przy zachowaniu tej samej niezawodności można obejść się 7 nabojami zamiast 10 (dla jasności możemy podać przykład mieszania owoców w mikserze – po 7 sekundach) owoc jest już całkowicie wymieszany i dodatkowe 3 sekundy nie mają wpływu na konsystencję mieszanki). Część badaczy ma jednak wątpliwości, wierząc, że nawet jeśli obecnie 7 rund wystarczy do odparcia wszystkich znanych ataków na hasze, to dodatkowe 3 rundy mogą się przydać w przypadku zidentyfikowania w przyszłości nowych ataków.
Jeśli chodzi o dzielenie na bloki, w BLAKE3 strumień jest dzielony na kawałki o wielkości 1 KB i każdy kawałek jest niezależnie mieszany. Na podstawie skrótów elementów tworzony jest jeden duży skrót w oparciu o binarne drzewo Merkle. Podział ten pozwala nam rozwiązać problem równoległego przetwarzania danych przy obliczaniu skrótów - przykładowo można zastosować 4-wątkowe instrukcje SIMD do jednoczesnego obliczania skrótów 4 bloków. Tradycyjne funkcje skrótu SHA-* przetwarzają dane sekwencyjnie.
Cechy BLAKE3:
- Wysoka wydajność, BLAKE3 jest znacznie szybszy niż MD5, SHA-1, SHA-2, SHA-3 i BLAKE2.
- Bezpieczeństwo, w tym odporność na ataki polegające na wydłużaniu wiadomości, na które podatny jest SHA-2;
- Dostępne są warianty Rust, zoptymalizowane pod kątem instrukcji SSE2, SSE4.1, AVX2, AVX-512 i NEON.
- Zapewnienie równoległości obliczeń na dowolnej liczbie wątków i kanałów SIMD.
- Możliwość przyrostowej aktualizacji i zweryfikowanego przetwarzania strumieni;
- Używaj w trybach PRF, MAC, KDF, XOF i jako zwykły skrót;
- Pojedynczy algorytm dla wszystkich architektur, szybki zarówno w systemach x86-64, jak i 32-bitowych procesorach ARM.
Główne różnice pomiędzy BLAKE3 i BLAKE2:
- Zastosowanie binarnej struktury drzewa, która pozwala na nieograniczoną równoległość w obliczeniach skrótu.
- Zmniejszenie liczby rund z 10 do 7.
- Trzy tryby pracy: hashowanie, hashowanie z kluczem (HMAC) i generowanie klucza (KDF).
- Brak dodatkowego obciążenia podczas mieszania kluczem ze względu na wykorzystanie obszaru zajmowanego wcześniej przez blok kluczowych parametrów.
- Wbudowany mechanizm operacyjny w postaci funkcji o rozszerzonym wyniku (XOF, Extendable Output Function), umożliwiającej równoległość i pozycjonowanie (wyszukiwanie).
Źródło: opennet.ru
