Frigivelse af referenceimplementeringen af ​​den kryptografiske hashfunktion BLAKE3 1.0

En referenceimplementering af den kryptografiske hash-funktion BLAKE3 1.0 blev frigivet, kendt for dens meget høje hash-beregningsydelse, samtidig med at den sikrede pålidelighed på SHA-3-niveau. I hash-genereringstesten for en 16 KB-fil overgår BLAKE3 med en 256-bit nøgle SHA3-256 17 gange, SHA-256 14 gange, SHA-512 9 gange, SHA-1 6 gange og BLAKE2b - 5 gange. Der er et betydeligt hul tilbage, når man behandler meget store mængder data, for eksempel viste BLAKE3 sig at være 256 gange hurtigere end SHA-8, når man beregnede en hash for 1 GB tilfældige data. BLAKE3-referenceimplementeringskoden er tilgængelig i C- og Rust-versioner under en dual public domain (CC0) og Apache 2.0-licens.

Frigivelse af referenceimplementeringen af ​​den kryptografiske hashfunktion BLAKE3 1.0

Hash-funktionen er designet til applikationer såsom kontrol af filintegritet, meddelelsesgodkendelse og generering af data til kryptografiske digitale signaturer. BLAKE3 er ikke beregnet til hash af adgangskoder, da det har til formål at beregne hashes så hurtigt som muligt (til adgangskoder anbefales det at bruge de langsomme hash-funktioner yescrypt, bcrypt, scrypt eller Argon2). Den hash-funktion, der overvejes, er ufølsom over for størrelsen af ​​de hash-data, og er beskyttet mod angreb på kollisionsvalg og preimage-finding.

Algoritmen er udviklet af velkendte kryptografieksperter (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) og fortsætter udviklingen af ​​BLAKE2-algoritmen og bruger Bao-mekanismen til at kode blokkædetræet . I modsætning til BLAKE2 (BLAKE2b, BLAKE2s) tilbyder BLAKE3 en enkelt algoritme til alle platforme, ikke bundet til bitdybden og hashstørrelsen.

Øget ydeevne blev opnået ved at reducere antallet af runder fra 10 til 7 og hash-blokke separat i 1 KB-stykker. Ifølge skaberne har de fundet et overbevisende matematisk bevis på, at det er muligt at klare sig med 7 runder i stedet for 10 og samtidig bevare det samme niveau af pålidelighed (for klarhedens skyld kan vi give et eksempel med at blande frugt i en mixer - efter 7 sekunder frugten er allerede fuldstændig blandet, og yderligere 3 sekunder vil ikke påvirke blandingens konsistens). Nogle forskere udtrykker dog tvivl, idet de mener, at selvom 7 runder i øjeblikket er tilstrækkeligt til at imødegå alle kendte angreb på hash, så kan yderligere 3 runder være nyttige, hvis nye angreb identificeres i fremtiden.

Med hensyn til opdeling i blokke, i BLAKE3 er strømmen opdelt i 1 KB-stykker, og hver brik hashes uafhængigt. Baseret på stykkernes hash, dannes én stor hash baseret på det binære Merkle-træ. Denne opdeling giver os mulighed for at løse problemet med parallelisering af databehandling ved beregning af hash - for eksempel kan du bruge 4-trådede SIMD instruktioner til samtidig at beregne hashes af 4 blokke. Traditionelle SHA-* hashfunktioner behandler data sekventielt.

Funktioner af BLAKE3:

  • Høj ydeevne, BLAKE3 er betydeligt hurtigere end MD5, SHA-1, SHA-2, SHA-3 og BLAKE2.
  • Sikkerhed, herunder modstand mod meddelelsesforlængelseangreb, som SHA-2 er modtagelig for;
  • Fås i Rust, optimeret til SSE2, SSE4.1, AVX2, AVX-512 og NEON instruktioner.
  • Sikring af parallelisering af beregninger på et vilkårligt antal tråde og SIMD-kanaler.
  • Mulighed for trinvis opdatering og verificeret behandling af strømme;
  • Brug i PRF, MAC, KDF, XOF-tilstande og som en almindelig hash;
  • En enkelt algoritme til alle arkitekturer, hurtig på både x86-64-systemer og 32-bit ARM-processorer.

De vigtigste forskelle mellem BLAKE3 og BLAKE2:

  • Brug af en binær træstruktur, der giver mulighed for ubegrænset parallelitet i hash-beregninger.
  • Reduktion af antallet af runder fra 10 til 7.
  • Tre driftsformer: hashing, hashing med en nøgle (HMAC) og nøglegenerering (KDF).
  • Ingen ekstra overhead ved hash med en nøgle på grund af brugen af ​​det område, der tidligere var optaget af nøgleparameterblokken.
  • Indbygget betjeningsmekanisme i form af en funktion med et udvidet resultat (XOF, Extendable Output Function), der muliggør parallelisering og positionering (seek).

Kilde: opennet.ru

Tilføj en kommentar