Wydanie referencyjnej implementacji funkcji skrótu kryptograficznego BLAKE3 1.0

Wydano referencyjną implementację funkcji haszującej BLAKE3 1.0, która wyróżnia się bardzo wysoką wydajnością obliczania haszy przy zapewnieniu niezawodności na poziomie SHA-3. W teście generowania hasza dla pliku o wielkości 16 KB, BLAKE3 z kluczem 256-bitowym wyprzedza SHA3-256 17 razy, SHA-256 14 razy, SHA-512 9 razy, SHA-1 6 razy, a BLAKE2b 5 razy. Znacząca przewaga utrzymuje się także przy przetwarzaniu bardzo dużych ilości danych; na przykład BLAKE3 okazał się szybszy od SHA-256 8 razy przy obliczaniu hasza dla 1 GB losowych danych. Kod referencyjnej implementacji BLAKE3 jest dostępny w wersjach dla języków C i Rust na podwójnej licencji — w domenie publicznej (CC0) oraz Apache 2.0.

Wydanie referencyjnej implementacji funkcji skrótu kryptograficznego BLAKE3 1.0

Funkcja haszująca przeznaczona jest do zastosowań takich jak weryfikacja integralności plików, uwierzytelnianie wiadomości oraz generowanie danych do kryptograficznych podpisów cyfrowych. BLAKE3 nie jest przeznaczona do haszowania haseł, ponieważ skupia się na maksymalnie szybkim obliczaniu haszy (do haseł zaleca się stosowanie wolnych funkcji haszujących, takich jak yescrypt, bcrypt, scrypt lub Argon2). Rozważana funkcja haszująca jest nieczuła na rozmiar haszowanych danych i jest zabezpieczona przed atakami typu collision attacks i finding preimages.

Algorytm został opracowany przez znanych specjalistów w dziedzinie kryptografii (Jack O’Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn) i kontynuuje rozwój algorytmu BLAKE2, stosując do kodowania drzewo łańcuchów bloków mechanizm Bao. W przeciwieństwie do BLAKE2 (BLAKE2b, BLAKE2s), w BLAKE3 zaproponowano jednolity algorytm dla wszystkich platform, niezwiązany z architekturą bitową ani rozmiarem hasza.

Zwiększenie wydajności udało się osiągnąć dzięki zmniejszeniu liczby rund z 10 do 7 oraz rozdzielnemu haszowaniu bloków w kawałkach po 1 KB. Jak twierdzą twórcy, znaleźli przekonujący dowód matematyczny, że można obejść się 7 rundami zamiast 10, zachowując ten sam poziom niezawodności (dla zobrazowania można przytoczyć przykład mieszania owoców w mikserze — 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, uważając, że nawet jeśli obecnie 7 rund wystarcza do przeciwdziałania wszystkim znanym atakom na hasze, to dodatkowe 3 rundy mogą okazać się korzystne w przypadku wykrycia nowych ataków w przyszłości.

Jeśli chodzi o podział na bloki, to w BLAKE3 strumień dzieli się na kawałki po 1 KB, a każdy kawałek jest haszowany niezależnie. Na podstawie haszy kawałków, na bazie binarnego drzewa Merkle'a, tworzony jest jeden duży hasz. Wskazany podział pozwala rozwiązać problem z równoległym przetwarzaniem danych przy obliczaniu hasza — na przykład można używać 4-wątkowych instrukcji SIMD do jednoczesnego obliczania haszy 4 bloków. Tradycyjne funkcje haszujące SHA-* przetwarzają dane sekwencyjnie.

Cechy BLAKE3:

  • Wysoka wydajność, BLAKE3 jest znacznie szybsza od MD5, SHA-1, SHA-2, SHA-3 i BLAKE2.
  • Bezpieczeństwo, w tym odporność na atak wydłużenia wiadomości, na który narażony jest SHA-2;
  • Dostępne są wersje w języku Rust, zoptymalizowane do używania 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ść inkrementalnej aktualizacji i weryfikowanej obróbki strumieni;
  • Zastosowanie w trybach PRF, MAC, KDF, XOF oraz jako zwykły hasz;
  • Jednolity algorytm dla wszystkich architektur, szybki zarówno w systemach x86-64, jak i na 32-bitowych procesorach ARM.

Główne różnice BLAKE3 od BLAKE2:

  • Użycie binarnej struktury drzewa, co pozwala osiągnąć nieograniczony równoległość podczas obliczania hasza.
  • Zmniejszenie liczby rund z 10 do 7.
  • Trzy tryby pracy: haszowanie, haszowanie z kluczem (HMAC) oraz generowanie klucza (KDF).
  • Brak dodatkowych obciążeń przy haszowaniu z kluczem dzięki wykorzystaniu obszaru, wcześniej zajmowanego przez blok parametrów klucza.
  • Wbudowany mechanizm pracy w formie funkcji z wydłużonym wynikiem (XOF, Extendable Output Function), dopuszczający równoległość i pozycjonowanie (seek).

Źródło: opennet.ru

Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS 🔥 Kup niezawodny hosting stron z ochroną DDoS, serwery VPS VDS - ProHoster