Utgivelse av referanseimplementeringen av den kryptografiske hash-funksjonen BLAKE3 1.0

En referanseimplementering av den kryptografiske hash-funksjonen BLAKE3 1.0 ble utgitt, kjent for sin svært høye hash-beregningsytelse samtidig som den sikrer pålitelighet på SHA-3-nivå. I hash-genereringstesten for en 16 KB-fil, overgår BLAKE3 med en 256-bits nøkkel SHA3-256 17 ganger, SHA-256 14 ganger, SHA-512 9 ganger, SHA-1 6 ganger og BLAKE2b - 5 ganger. Et betydelig gap gjenstår ved behandling av svært store datamengder, for eksempel viste BLAKE3 seg å være 256 ganger raskere enn SHA-8 når man beregner en hash for 1 GB tilfeldige data. BLAKE3-referanseimplementeringskoden er tilgjengelig i C- og Rust-versjoner under en dual public domain (CC0) og Apache 2.0-lisens.

Utgivelse av referanseimplementeringen av den kryptografiske hash-funksjonen BLAKE3 1.0

Hash-funksjonen er designet for applikasjoner som filintegritetskontroll, meldingsautentisering og generering av data for kryptografiske digitale signaturer. BLAKE3 er ikke beregnet på å hashe passord, da den tar sikte på å beregne hash så raskt som mulig (for passord anbefales det å bruke sakte hash-funksjonene yescrypt, bcrypt, scrypt eller Argon2). Hash-funksjonen som vurderes er ufølsom for størrelsen på hash-dataene og er beskyttet mot angrep på kollisjonsvalg og preimage-funn.

Algoritmen ble utviklet av kjente kryptografieksperter (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) og fortsetter utviklingen av BLAKE2-algoritmen og bruker Bao-mekanismen til å kode blokkkjedetreet . I motsetning til BLAKE2 (BLAKE2b, BLAKE2s), tilbyr BLAKE3 en enkelt algoritme for alle plattformer, ikke knyttet til bitdybden og hashstørrelsen.

Økt ytelse ble oppnådd ved å redusere antall runder fra 10 til 7 og hashe blokker separat i 1 KB-stykker. I følge skaperne har de funnet et overbevisende matematisk bevis på at det er mulig å klare seg med 7 runder i stedet for 10 samtidig som de opprettholder samme grad av pålitelighet (for klarhetens skyld kan vi gi et eksempel med å blande frukt i en mikser - etter 7 sekunder frukten er allerede fullstendig blandet, og ytterligere 3 sekunder vil ikke påvirke blandingens konsistens). Noen forskere uttrykker imidlertid tvil, og tror at selv om 7 runder for øyeblikket er tilstrekkelig for å motvirke alle kjente angrep på hash, så kan ytterligere 3 runder være nyttige hvis nye angrep blir identifisert i fremtiden.

Når det gjelder deling i blokker, i BLAKE3 er strømmen delt inn i 1 KB-biter og hver brikke hashes uavhengig. Basert på hashen til brikkene, dannes én stor hash basert på det binære Merkle-treet. Denne inndelingen lar oss løse problemet med parallellisering av databehandling ved beregning av hash - for eksempel kan du bruke 4-tråds SIMD-instruksjoner for samtidig å beregne hashes på 4 blokker. Tradisjonelle SHA-* hash-funksjoner behandler data sekvensielt.

Funksjoner til BLAKE3:

  • Høy ytelse, BLAKE3 er betydelig raskere enn MD5, SHA-1, SHA-2, SHA-3 og BLAKE2.
  • Sikkerhet, inkludert motstand mot meldingsforlengelsesangrep som SHA-2 er mottakelig for;
  • Tilgjengelig i Rust, optimalisert for SSE2, SSE4.1, AVX2, AVX-512 og NEON-instruksjoner.
  • Sikre parallellisering av beregninger på et hvilket som helst antall tråder og SIMD-kanaler.
  • Mulighet for inkrementell oppdatering og verifisert behandling av strømmer;
  • Bruk i PRF, MAC, KDF, XOF-modus og som en vanlig hash;
  • En enkelt algoritme for alle arkitekturer, rask på både x86-64-systemer og 32-bits ARM-prosessorer.

De viktigste forskjellene mellom BLAKE3 og BLAKE2:

  • Bruk av en binær trestruktur som tillater ubegrenset parallellitet i hash-beregninger.
  • Redusere antall runder fra 10 til 7.
  • Tre driftsmoduser: hashing, hashing med en nøkkel (HMAC) og nøkkelgenerering (KDF).
  • Ingen ekstra overhead ved hashing med en nøkkel på grunn av bruken av området som tidligere var okkupert av nøkkelparameterblokken.
  • Innebygd betjeningsmekanisme i form av en funksjon med utvidet resultat (XOF, Extendable Output Function), som tillater parallellisering og posisjonering (søk).

Kilde: opennet.ru

Legg til en kommentar