En referensimplementering av den kryptografiska hashfunktionen BLAKE3 1.0 slÀpptes, kÀnd för dess mycket höga hashberÀkningsprestanda samtidigt som den sÀkerstÀller tillförlitlighet pÄ SHA-3-nivÄ. I hashgenereringstestet för en 16 KB-fil övertrÀffar BLAKE3 med en 256-bitars nyckel SHA3-256 17 gÄnger, SHA-256 14 gÄnger, SHA-512 9 gÄnger, SHA-1 6 gÄnger och BLAKE2b - 5 gÄnger. En betydande lucka kvarstÄr vid bearbetning av mycket stora datamÀngder, till exempel visade sig BLAKE3 vara 256 gÄnger snabbare Àn SHA-8 vid berÀkning av en hash för 1 GB slumpmÀssig data. BLAKE3-referensimplementeringskoden Àr tillgÀnglig i C- och Rust-versioner under en dual public domain (CC0) och Apache 2.0-licens.

Hashfunktionen Àr designad för applikationer som kontroll av filintegritet, meddelandeautentisering och generering av data för kryptografiska digitala signaturer. BLAKE3 Àr inte avsett för att hasha lösenord, eftersom det syftar till att berÀkna hash sÄ snabbt som möjligt (för lösenord rekommenderas att anvÀnda de lÄngsamma hashfunktionerna yescrypt, bcrypt, scrypt eller Argon2). Den aktuella hashfunktionen Àr okÀnslig för storleken pÄ hashad data och Àr skyddad frÄn attacker mot kollisionsval och förbildssökning.
Algoritmen har utvecklats av vÀlkÀnda kryptografiexperter (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) och fortsÀtter utvecklingen av BLAKE2-algoritmen och anvÀnder Bao-mekanismen för att koda blockkedjetrÀdet . Till skillnad frÄn BLAKE2 (BLAKE2b, BLAKE2s) erbjuder BLAKE3 en enda algoritm för alla plattformar, inte bunden till bitdjupet och hashstorleken.
Ăkad prestanda uppnĂ„ddes genom att minska antalet rundor frĂ„n 10 till 7 och hasha block separat i 1 KB bitar. Enligt skaparna har de hittat övertygande matematiska bevis för att det Ă€r möjligt att klara sig med 7 omgĂ„ngar istĂ€llet för 10 samtidigt som man bibehĂ„ller samma nivĂ„ av tillförlitlighet (för tydlighetens skull kan vi ge ett exempel med att blanda frukt i en mixer - efter 7 sekunder frukten Ă€r redan helt blandad och ytterligare 3 sekunder pĂ„verkar inte blandningens konsistens). Vissa forskare uttrycker dock tvivel och tror att Ă€ven om 7 omgĂ„ngar för nĂ€rvarande rĂ€cker för att motverka alla kĂ€nda attacker pĂ„ hash, sĂ„ kan ytterligare 3 omgĂ„ngar vara anvĂ€ndbara om nya attacker identifieras i framtiden.
NÀr det gÀller uppdelning i block, i BLAKE3 Àr strömmen uppdelad i 1 KB bitar och varje bit hashas oberoende av varandra. Baserat pÄ bitarnas hash bildas en stor hash baserat pÄ det binÀra Merkle-trÀdet. Denna uppdelning gör att vi kan lösa problemet med parallellisering av databehandling vid berÀkning av hash - till exempel kan du anvÀnda 4-trÄdiga SIMD-instruktioner för att samtidigt berÀkna hash om 4 block. Traditionella SHA-*-hashfunktioner behandlar data sekventiellt.
Funktioner hos BLAKE3:
- Hög prestanda, BLAKE3 Àr betydligt snabbare Àn MD5, SHA-1, SHA-2, SHA-3 och BLAKE2.
- SÀkerhet, inklusive motstÄnd mot attacker mot meddelandeförlÀngning som SHA-2 Àr kÀnsligt för;
- Finns i Rust, optimerad för instruktionerna SSE2, SSE4.1, AVX2, AVX-512 och NEON.
- SÀkerstÀll parallellisering av berÀkningar pÄ valfritt antal trÄdar och SIMD-kanaler.
- Möjlighet till inkrementell uppdatering och verifierad bearbetning av strömmar;
- AnvÀnd i lÀgen PRF, MAC, KDF, XOF och som en vanlig hash;
- En enda algoritm för alla arkitekturer, snabb pÄ bÄde x86-64-system och 32-bitars ARM-processorer.
De viktigaste skillnaderna mellan BLAKE3 och BLAKE2:
- AnvÀndning av en binÀr trÀdstruktur som möjliggör obegrÀnsad parallellitet i hashberÀkningar.
- Minska antalet omgÄngar frÄn 10 till 7.
- Tre driftslÀgen: hashning, hashning med nyckel (HMAC) och nyckelgenerering (KDF).
- Ingen extra omkostnad vid hashning med en nyckel pÄ grund av anvÀndningen av omrÄdet som tidigare upptogs av nyckelparametrarnas block.
- Inbyggd manövermekanism i form av en funktion med utökat resultat (XOF, Extendable Output Function), vilket möjliggör parallellisering och positionering (sök).
KĂ€lla: opennet.ru
