Paskelbtas galutinis algoritmo įgyvendinimas , kuri siūlo kriptografinę maišos funkciją, skirtą tokioms programoms kaip failų vientisumo tikrinimas, pranešimų autentifikavimas ir duomenų generavimas skaitmeniniams parašams. BLAKE3 nėra skirtas slaptažodžiams maišyti (slaptažodžiams reikia naudoti yescrypt, bcrypt, scrypt arba Argon2), nes jis skirtas kuo greičiau apskaičiuoti maišą, garantuojant, kad nebus susidūrimų, apsauga nuo ir nėra jautrūs maišos duomenų dydžiui. BLAKE3 įgyvendinimo nuoroda Dviguba licencijuota pagal Public Domain (CC0) ir Apache 2.0.
Pagrindinis naujosios maišos funkcijos skirtumas yra labai didelis maišos skaičiavimų našumas, išlaikant patikimumą SHA-3 lygiu. Pagal numatytuosius nustatymus gautas maišos dydis BLAKE3 yra 32 baitai (256 bitai), tačiau jį galima išplėsti iki savavališkų reikšmių. Atliekant maišos generavimo testą 16 KB faile, BLAKE3 3 kartų lenkia SHA256-15, 256 kartų SHA-12, 512 kartus SHA-8, 1 kartus SHA-6 ir 2 kartus BLAKE4b. Didelė spraga išlieka apdorojant labai didelius duomenų kiekius, pavyzdžiui, pasirodė BLAKE3 SHA-256 8 kartus skaičiuojant 1 GB atsitiktinių duomenų maišą.
Algoritmą sukūrė garsūs kriptografijos ekspertai (, , , ) ir toliau tobulina algoritmą ir naudoja mechanizmą blokų grandinės medžiui koduoti . Skirtingai nuo BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 siūlo vieną algoritmą visoms platformoms, nesusietą su bitų gyliu ir maišos dydžiu.
Padidintas našumas buvo pasiektas sumažinus raundų skaičių nuo 10 iki 7 ir atskirai maišant blokus į 1 KB gabalus. Pasak kūrėjų, jie rado įtikinamą , kad jūs galite apsieiti su 7 raundais vietoj 10 išlaikant tą patį patikimumo lygį (aiškumo dėlei galite pateikti pavyzdį su vaisių maišymu mikseriu - po 7 sekundžių vaisiai jau visiškai susimaišę ir dar 3 sekundes bus neturi įtakos mišinio konsistencijai). Tačiau kai kurie tyrėjai išreiškia abejones, manydami, kad net jei šiuo metu pakanka 7 šovinių, kad atlaikytų visas žinomas maišos atakas, tada papildomi 3 šoviniai gali būti naudingi, jei ateityje bus nustatyta naujų atakų.
Kalbant apie padalijimą į blokus, BLAKE3 srautas yra padalintas į 1 KB dalis ir kiekviena dalis yra maišoma atskirai. Remiantis gabalų maišais ant pagrindo susidaro viena didelė maiša. Šis padalijimas leidžia išspręsti duomenų apdorojimo lygiagretinimo problemą skaičiuojant maišą – pavyzdžiui, galite naudoti 4 gijų SIMD instrukcijas, kad vienu metu apskaičiuotumėte 4 blokų maišą. Tradicinės SHA-* maišos funkcijos duomenis apdoroja nuosekliai.
BLAKE3 savybės:
- Didelis našumas;
- Saugumas, įskaitant atsparumą , kuriam jautrus SHA-2;
- Skaičiavimų lygiagretumo užtikrinimas bet kokiame gijų ir SIMD kanalų skaičiuje;
- Galimybė laipsniškai atnaujinti ir patikrinti srautų apdorojimą;
- Naudoti PRF, MAC, KDF, XOF režimais ir kaip įprasta maiša;
- Vienas algoritmas visoms architektūroms, greitas tiek x86-64 sistemose, tiek 32 bitų ARM procesoriuose.
Šaltinis: opennet.ru
