Udgivelsen af den referenceimplementering af den kryptografiske hash-funktion BLAKE3 1.0

Den officielle udgivelse af den referenceimplementering af den kryptografiske hash-funktion BLAKE3 1.0 er sket, bemærkelsesværdig for sin meget høje ydeevne i beregning af hashes, samtidig med at den opretholder pålidelighed på niveau med SHA-3. I en test af hash-generering for en fil på 16 KB overgår BLAKE3 med en 256-bit nøgle SHA3-256 med 17 gange, SHA-256 med 14 gange, SHA-512 med 9 gange, SHA-1 med 6 gange, og BLAKE2b med 5 gange. Den store fordel forbliver også ved behandling af meget store datamængder, for eksempel var BLAKE3 8 gange hurtigere end SHA-256 ved beregning af hashes for 1GB tilfældige data. Koden til referenceimplementeringen af BLAKE3 leveres i versioner på C og Rust under en dobbellicens — public domain (CC0) og Apache 2.0.

Udgivelsen af den referenceimplementering af den kryptografiske hash-funktion BLAKE3 1.0

Hash-funktionen er designet til anvendelse som filintegritetskontrol, autentificering af beskeder og generering af data til kryptografiske digitale signaturer. BLAKE3 er ikke beregnet til hashning af adgangskoder, da den sigter mod at beregne hashes så hurtigt som muligt (for adgangskoder anbefales langsomme hash-funktioner som yescrypt, bcrypt, scrypt eller Argon2). Den betragte hash-funktion er ufølsom over for størrelsen af de hashende data og er beskyttet mod angreb ved at finde kollisioner og omvendt konstruere.

Algoritmen er udviklet af anerkendte kryptografispecialister (Jack O’Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O’Hearn) og fortsætter udviklingen af algoritmen BLAKE2 og anvender Bao-mekanismen til kodning af kædetræer. I modsætning til BLAKE2 (BLAKE2b, BLAKE2s) tilbyder BLAKE3 en samlet algoritme for alle platforme, der ikke er bundet til bitdybde og hash-størrelse.

Ydelsesforbedringerne er opnået ved at reducere antallet af runder fra 10 til 7 og ved at hashere blokke i stykker af 1 kB. Ifølge skaberne har de fundet et overbevisende matematisk bevis for, at man kan nøjes med 7 runder i stedet for 10 og samtidig bevare det samme niveau af pålidelighed (for at illustrere dette kan man sammenligne det med at blande frugt i en mixer — efter 7 sekunder er frugterne allerede helt blandet, og yderligere 3 sekunder vil ikke påvirke konsistensen af blandingen). Nogle forskere udtrykker imidlertid skepsis og mener, at selvom 7 runder i øjeblikket er tilstrækkelige til at modstå alle kendte angreb på hashes, kan yderligere 3 runder vise sig at være nyttige i tilfælde af, at der opdages nye angreb i fremtiden.

Når det kommer til segmentering, opdeles BLAKE3-strømmen i stykker af 1 kB, og hvert stykke hashes uafhængigt. Baseret på hashes af stykkerne dannes der en stor hash ved hjælp af et binært Merkle-træ. Den nævnte segmentering løser problemet med at parallelisere databehandlingen ved hashberegningen — for eksempel kan der anvendes 4-tråds SIMD-instruktioner til at beregne hashes for 4 blokke samtidig. Traditionelle hashfunktioner som SHA-* behandler data sekventielt.

Egenskaber ved BLAKE3:

  • Høj ydeevne, BLAKE3 er betydeligt hurtigere end MD5, SHA-1, SHA-2, SHA-3 og BLAKE2.
  • Sikkerhed, herunder modstand mod angreb med forlængelse af beskeder, som SHA-2 er udsat for.
  • Der er tilgængelige varianter på Rust, optimeret til brug af instruktioner som SSE2, SSE4.1, AVX2, AVX-512 og NEON.
  • Sikring af parallelisering af beregninger på et vilkårligt antal tråde og SIMD-kanaler.
  • Mulighed for inkrementel opdatering og verificeret behandling af strømme;
  • Anvendelse i mode som PRF, MAC, KDF, XOF og som almindelig hash.
  • En enkelt algoritme til alle arkitekturer, hurtig både på x86-64-systemer og på 32-bit ARM-processorer.

Hovedforskelle mellem BLAKE3 og BLAKE2:

  • Brugen af en binær træstruktur, der muliggør ubegribelig parallelisme ved hashberegning.
  • Reduktion af antallet af runder fra 10 til 7.
  • Tre driftsmode: hashing, hashing med nøgle (HMAC) og nøglegenerering (KDF).
  • Ingen yderligere overhead ved hashing med nøgle takket være brugen af det område, der tidligere blev optaget af nøgleparameterblokken.
  • Indbygget mekanisme til drift som en funktion med udvideligt output (XOF, Extendable Output Function), der tillader parallelisering og positionering (seek).

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster