Pêkanîna referansê ya fonksiyona hash a krîptografî BLAKE3 1.0 hate berdan, ku ji ber performansa xweya hesabkirina hash a pir bilind di heman demê de ku pêbaweriya di asta SHA-3 de misoger dike. Di ceribandina hilberîna hash de ji bo pelek 16 KB, BLAKE3 bi mifteyek 256-bit ji SHA3-256 17 carî, SHA-256 bi 14 carî, SHA-512 bi 9 carî, SHA-1 bi 6 caran, û BLAKE2b - 5 caran. Di dema hilanîna jimarek pir mezin a daneyan de valahiyek girîng dimîne, mînakî, BLAKE3 dema ku ji bo 256 GB daneyên rasthatî hesap tê hesibandin 8 carî ji SHA-1 zûtir derket. Koda pêkanîna referansa BLAKE3 di guhertoyên C û Rust de di bin lîsansek dualî (CC0) û Apache 2.0 de heye.

Fonksiyona hash ji bo serîlêdanên wekî kontrolkirina yekparebûna pelê, rastkirina peyamê, û hilberîna daneyan ji bo îmzeyên dîjîtal ên krîptografîk hatî çêkirin. BLAKE3 ji bo şîfrekirina şîfreyan ne armanc e, ji ber ku ew armanc dike ku bi lez û bez hesas bihesibîne (ji bo şîfreyan, tê pêşniyar kirin ku fonksiyonên hash-a hêdî erê, bcrypt, scrypt an Argon2 bikar bînin). Fonksiyona hash a ku li ber çavan tê girtin ji mezinahiya daneya haşekirî re ne hesas e û ji êrişên li ser hilbijartina pevçûnê û dîtina pêşimage parastî ye.
Algorîtma ji hêla pisporên naskirî yên krîptografî ve hate pêşve xistin (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) û pêşveçûna algorîtmaya BLAKE2 berdewam dike û mekanîzmaya Bao bikar tîne da ku dara zincîra blokê şîfre bike. . Berevajî BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 ji bo hemî platforman algorîtmayek yekane pêşkêşî dike, ku bi kûrahiya bit û mezinahiya haş ve nayê girêdan.
Performansa zêde bi kêmkirina jimareya gerokan ji 10 ber 7 û blokên heşkirinê veqetandî di perçeyên 1 KB de hate bidestxistin. Li gorî afirîneran, wan delîlek matematîkî ya pêbawer dîtiye ku gengaz e ku meriv li şûna 7 dor bi 10 geryan bi ser bikeve û heman astê pêbaweriyê biparêze (ji bo zelaliyê, em dikarin mînakek bi tevlihevkirina fêkiyan di mîkserê de bidin - piştî 7 çirkeyan fêkî jixwe bi tevahî tevlihev e, û 3 çirkeyên din dê bandorê li hevgirtina tevliheviyê neke). Lêbelê, hin lêkolîner gumanan diyar dikin, di wê baweriyê de ne ku her çend 7 gerok niha bes bin ji bo berevajîkirina hemî êrişên naskirî yên li ser haşeyan, wê hingê ger di pêşerojê de êrişên nû werin tespît kirin 3 gerên din jî dikarin kêrhatî bin.
Wekî ku ji bo dabeşkirina nav blokan, di BLAKE3 de stream li perçeyên 1 KB tê dabeş kirin û her perçeyek serbixwe tê haş kirin. Li ser bingeha hejên perçeyan, li ser bingeha dara Merkle ya binaryê yek haşek mezin tê çêkirin. Ev dabeşkirin rê dide me ku em pirsgirêka paralelkirina pêvajoya daneyê di dema hesabkirina haşeyan de çareser bikin - mînakî, hûn dikarin rêwerzên SIMD-a 4-têlan bikar bînin da ku bi hevdemî heşeyên 4 blokan hesab bikin. SHA-* fonksiyonên hash ên kevneşopî daneyan bi rêkûpêk pêvajoyê dikin.
Taybetmendiyên BLAKE3:
- Performansa bilind, BLAKE3 ji MD5, SHA-1, SHA-2, SHA-3 û BLAKE2 bi girîngî zûtir e.
- Ewlekarî, tevî berxwedana li hember êrişên dirêjkirina peyamê ku SHA-2 jê re gumanbar e;
- Di Rust de peyda dibe, ji bo rêwerzên SSE2, SSE4.1, AVX2, AVX-512, û NEON xweşbîn e.
- Paqijkirina paralelkirina hesabên li ser her hejmarek mijar û kanalên SIMD.
- Ihtîmala nûvekirina zêdeyî û pêvajoyek verastkirî ya çeman;
- Di modên PRF, MAC, KDF, XOF de û wekî hashek birêkûpêk bikar bînin;
- Algorîtmayek yekane ji bo hemî mîmarî, bilez li ser pergalên x86-64 û pêvajoyên ARM yên 32-bit.
Cûdahiyên sereke di navbera BLAKE3 û BLAKE2 de:
- Bikaranîna avahiyek dara binary ku destûrê dide paralelîzma bêsînor di hesabên haş de.
- Kêmkirina hejmara geryan ji 10 bo 7.
- Sê awayên xebitandinê: haşkirin, bi kilîtekê (HMAC) û hilberîna mifteyê (KDF).
- Ji ber bikaranîna devera ku berê ji hêla bloka parametreya sereke ve hatî dagir kirin, dema ku bi mifteyê ve tê çewisandin, zêde zêde tune.
- Mekanîzmaya xebitandinê ya çêkirî di forma fonksiyonek bi encamek dirêjkirî de (XOF, Fonksiyona Hilbera Berfireh), ku destûrê dide paralelkirin û pozîsyonê (lêgerînê).
Source: opennet.ru
