Megjelent a kriptográfiai hash funkció BLAKE3 1.0 referencia megvalósítása, amely kiemelkedően magas hash-számítási teljesítményéről szól, miközben biztosítja a megbízhatóságot SHA-3 szinten. A 16 KB-os fájl hash-generálási tesztjében a 3 bites kulccsal rendelkező BLAKE256 3-szer jobb teljesítményt nyújt az SHA256-17-nál, az SHA-256-nál 14-szeres, az SHA-512-nél 9-szer, az SHA-1-nél pedig hatszor, és a BLAKE6b-nél - 2 alkalommal. Jelentős hézag marad nagyon nagy mennyiségű adat feldolgozásakor, például a BLAKE5 3-szor gyorsabbnak bizonyult, mint az SHA-256, amikor 8 GB véletlenszerű adat hash-jét számították ki. A BLAKE1 hivatkozási megvalósítási kód C és Rust verziókban érhető el kettős nyilvános domain (CC3) és Apache 0 licenc alatt.
A hash funkciót olyan alkalmazásokhoz tervezték, mint például a fájlok integritásának ellenőrzése, az üzenetek hitelesítése és a kriptográfiai digitális aláírásokhoz szükséges adatok generálása. A BLAKE3 nem a jelszavak kivonatozására szolgál, mivel célja a hashek minél gyorsabb kiszámítása (jelszavakhoz a yescrypt, bcrypt, scrypt vagy Argon2 lassú hash függvények használata javasolt). A vizsgált hash függvény érzéketlen a kivonatolt adatok méretére, és védve van az ütközéskiválasztás és az előkép-keresés elleni támadásoktól.
Az algoritmust ismert kriptográfiai szakértők (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) fejlesztették ki, és folytatja a BLAKE2 algoritmus fejlesztését és a Bao mechanizmus segítségével kódolja a blokkláncfát. . A BLAKE2-vel (BLAKE2b, BLAKE2s) ellentétben a BLAKE3 egyetlen algoritmust kínál minden platformhoz, amely nincs a bitmélységhez és a hash méretéhez kötve.
A teljesítménynövekedést a körök számának 10-ről 7-re való csökkentésével és a blokkok külön-külön 1 KB-os darabokban történő kivonatosításával érték el. Az alkotók szerint meggyőző matematikai bizonyítékot találtak arra, hogy 7 helyett 10 körrel is meg lehet boldogulni, miközben a megbízhatóság megmarad (az érthetőség kedvéért hozhatunk példát a gyümölcs mixerben való keverésére - 7 másodperc után). a gyümölcs már teljesen összekeveredett, és további 3 másodperc nem befolyásolja a keverék állagát). Egyes kutatók azonban kétségeiket fejezik ki, mivel úgy vélik, hogy még ha jelenleg 7 lövés elegendő is az összes ismert hash elleni támadás ellen, további 3 lövés hasznos lehet, ha a jövőben újabb támadásokat azonosítanak.
Ami a blokkokra osztást illeti, a BLAKE3-ban az adatfolyam 1 KB-os darabokra van felosztva, és mindegyik darab külön-külön kivonatolva van. A darabok hash-ei alapján egy nagy hash keletkezik a bináris Merkle-fa alapján. Ez a felosztás lehetővé teszi számunkra, hogy megoldjuk az adatfeldolgozás párhuzamosításának problémáját a hash-ek kiszámításakor – például 4 szálas SIMD utasításokat használhatunk 4 blokk hasheinek egyidejű kiszámításához. A hagyományos SHA-* hash függvények szekvenciálisan dolgozzák fel az adatokat.
A BLAKE3 jellemzői:
- A nagy teljesítményű BLAKE3 lényegesen gyorsabb, mint az MD5, SHA-1, SHA-2, SHA-3 és BLAKE2.
- Biztonság, beleértve az olyan üzenethosszabbító támadásokkal szembeni ellenállást, amelyekre az SHA-2 érzékeny;
- Rust színben kapható, SSE2, SSE4.1, AVX2, AVX-512 és NEON utasításokhoz optimalizálva.
- A számítások párhuzamosításának biztosítása tetszőleges számú szálon és SIMD csatornán.
- A folyamok fokozatos frissítésének és ellenőrzött feldolgozásának lehetősége;
- Használja PRF, MAC, KDF, XOF módokban és normál hashként;
- Egyetlen algoritmus minden architektúrához, gyors mind az x86-64 rendszereken, mind a 32 bites ARM processzorokon.
A fő különbségek a BLAKE3 és a BLAKE2 között:
- Bináris fastruktúra használata, amely korlátlan párhuzamosságot tesz lehetővé a hash számításokban.
- A körök számának csökkentése 10-ről 7-re.
- Három működési mód: kivonatolás, kivonatolás kulccsal (HMAC) és kulcsgenerálás (KDF).
- A kulcsparaméterek blokkja által korábban elfoglalt terület használata miatt nincs többletköltség kulccsal történő kivonatoláskor.
- Beépített működési mechanizmus kiterjesztett eredménnyel rendelkező funkció formájában (XOF, Extendable Output Function), amely lehetővé teszi a párhuzamosítást és a pozicionálást (seek).
Forrás: opennet.ru