Kriptografinės maišos funkcijos BLAKE3 1.0 pamatinio įgyvendinimo išleidimas

Buvo išleistas pamatinis kriptografinės maišos funkcijos BLAKE3 1.0 įgyvendinimas, pasižymintis labai dideliu maišos skaičiavimo našumu, tuo pačiu užtikrinant patikimumą SHA-3 lygiu. 16 KB failo maišos generavimo teste BLAKE3 su 256 bitų raktu pralenkia SHA3-256 17 kartų, SHA-256 14 kartų, SHA-512 9 kartus, SHA-1 6 kartus ir BLAKE2b - 5 kartus. Didelė spraga išlieka apdorojant labai didelius duomenų kiekius, pavyzdžiui, skaičiuojant 3 GB atsitiktinių duomenų maišą, BLAKE256 pasirodė 8 kartus greitesnis nei SHA-1. BLAKE3 nuorodos įgyvendinimo kodas yra C ir Rust versijose pagal dvigubą viešąjį domeną (CC0) ir Apache 2.0 licenciją.

Kriptografinės maišos funkcijos BLAKE3 1.0 pamatinio įgyvendinimo išleidimas

Maišos funkcija skirta tokioms programoms kaip failų vientisumo tikrinimas, pranešimų autentifikavimas ir duomenų generavimas kriptografiniams skaitmeniniams parašams. BLAKE3 nėra skirtas slaptažodžiams maišyti, nes juo siekiama kuo greičiau apskaičiuoti maišą (slaptažodžiams rekomenduojama naudoti lėtos maišos funkcijas yescrypt, bcrypt, scrypt arba Argon2). Nagrinėjama maišos funkcija nejautri maišos duomenų dydžiui ir yra apsaugota nuo susidūrimų pasirinkimo ir išankstinio vaizdo radimo atakų.

Algoritmą sukūrė žinomi kriptografijos ekspertai (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) ir tęsia BLAKE2 algoritmo kūrimą bei naudoja Bao mechanizmą blokų grandinės medžio kodavimui. . 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 sumaišius blokus atskirai į 1 KB gabalus. Pasak kūrėjų, jie rado įtikinamą matematinį įrodymą, kad išlaikant tą patį patikimumo lygį galima apsieiti su 7 šoviniais, o ne su 10 (aiškumo dėlei galime pateikti pavyzdį su vaisių maišymu mikseriu – po 7 sek. vaisiai jau visiškai susimaišę, o papildomos 3 sekundės neturės įtakos mišinio konsistencijai). Tačiau kai kurie tyrinėtojai išreiškia abejones, manydami, kad net jei šiuo metu pakanka 7 raundų, kad būtų galima atremti visas žinomas maišos atakas, tada papildomi 3 raundai 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, pagal dvejetainį Merkle medį sudaroma viena didelė maiša. Šis padalijimas leidžia išspręsti duomenų apdorojimo lygiagretinimo skaičiuojant maišą problemą – 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, BLAKE3 yra žymiai greitesnis nei MD5, SHA-1, SHA-2, SHA-3 ir BLAKE2.
  • Saugumas, įskaitant atsparumą pranešimų pailgėjimo atakoms, kurioms jautrus SHA-2;
  • Galima įsigyti „Rust“, optimizuota SSE2, SSE4.1, AVX2, AVX-512 ir NEON instrukcijoms.
  • 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.

Pagrindiniai skirtumai tarp BLAKE3 ir BLAKE2:

  • Dvejetainės medžio struktūros, leidžiančios neribotą lygiagretumą maišos skaičiavimuose, naudojimas.
  • Raundų skaičius sumažinamas nuo 10 iki 7.
  • Trys veikimo režimai: maiša, maiša naudojant raktą (HMAC) ir raktų išvedimas (KDF).
  • Jokių papildomų išlaidų maišant su raktu, nes naudojama sritis, kurią anksčiau užėmė rakto parametrų blokas.
  • Integruotas valdymo mechanizmas funkcijos pavidalu su išplėstiniu rezultatu (XOF, Extendable Output Function), leidžiantis lygiagretinti ir nustatyti padėtį (ieškoti).

Šaltinis: opennet.ru

Добавить комментарий