BLAKE3 1.0 криптограф хэш функцийн лавлагааны хувилбарыг гаргалаа

BLAKE3 1.0 криптограф хэш функцийн лавлагаа хувилбар гарсан бөгөөд энэ нь SHA-3 түвшинд найдвартай байдлыг хангахын зэрэгцээ маш өндөр хэш тооцооллын гүйцэтгэлээрээ алдартай. 16 КБ файлын хэш үүсгэх тестийн хувьд 3 битийн түлхүүр бүхий BLAKE256 нь SHA3-256-г 17 дахин, SHA-256-г 14 дахин, SHA-512-ыг 9 дахин, SHA-1-ийг 6 дахин, BLAKE2b-ээс илүү сайн байна. 5 удаа. Маш их хэмжээний өгөгдлийг боловсруулахад мэдэгдэхүйц цоорхой хэвээр байна, жишээлбэл, BLAKE3 нь 256 ГБ санамсаргүй өгөгдлийн хэшийг тооцоолохдоо SHA-8-аас 1 дахин хурдан болсон. BLAKE3 лавлагаа хэрэгжүүлэх кодыг C болон Rust хувилбаруудад нийтийн эзэмшлийн хос домэйн (CC0) болон Apache 2.0 лицензийн дагуу ашиглах боломжтой.

BLAKE3 1.0 криптограф хэш функцийн лавлагааны хувилбарыг гаргалаа

Хэш функц нь файлын бүрэн бүтэн байдлыг шалгах, мессежийн баталгаажуулалт, криптограф тоон гарын үсгийн өгөгдөл үүсгэх зэрэг програмуудад зориулагдсан. BLAKE3 нь нууц үгийг хэш болгоход зориулагдаагүй, учир нь энэ нь хэшийг аль болох хурдан тооцоолох зорилготой (нууц үгийн хувьд удаан хэш функцийг yescrypt, bcrypt, scrypt эсвэл Argon2 ашиглахыг зөвлөж байна). Хэлэлцэж буй хэш функц нь хэшлэгдсэн өгөгдлийн хэмжээнээс хамааралгүй бөгөөд мөргөлдөөнийг сонгох, урьдчилан дүрс хайх зэрэг халдлагаас хамгаалагдсан.

Алгоритмыг криптографийн нэрт мэргэжилтнүүд (Жек О'Коннор, Жан-Филипп Аумассон, Самуэл Невес, Зооко Вилкокс-О'Херн) боловсруулсан бөгөөд BLAKE2 алгоритмыг үргэлжлүүлэн хөгжүүлж, блок гинжин модыг кодлохдоо Bao механизмыг ашигладаг. . BLAKE2 (BLAKE2b, BLAKE2s)-ээс ялгаатай нь BLAKE3 нь битийн гүн болон хэш хэмжээнээс хамааралгүй бүх платформд зориулсан нэг алгоритмыг санал болгодог.

Тойргийн тоог 10-аас 7 болгон бууруулж, блокуудыг 1 КБ хэмжээтэй тус тусад нь хэш болгосноор гүйцэтгэл нэмэгдсэн. Бүтээгчдийн үзэж байгаагаар тэд ижил түвшний найдвартай байдлыг хадгалахын тулд 7-ийн оронд 10 тойрог хийх боломжтой гэсэн итгэл үнэмшилтэй математик нотолгоо олжээ (тодорхой болгохын тулд бид холигчоор жимс холих жишээг өгч болно - 7 секундын дараа). жимс нь аль хэдийн бүрэн холилдсон бөгөөд нэмэлт 3 секунд нь хольцын тогтвортой байдалд нөлөөлөхгүй). Гэсэн хэдий ч зарим судлаачид эргэлзэж буйгаа илэрхийлж, 7 раунд нь одоогоор хэш дээр мэдэгдэж байгаа бүх халдлагыг эсэргүүцэхэд хангалттай байсан ч ирээдүйд шинэ халдлага илэрсэн тохиолдолд нэмэлт 3 раунд хэрэгтэй болно гэж үзэж байна.

Блокуудад хуваах тухайд BLAKE3-д урсгалыг 1 КБ хэмжээтэй хэсгүүдэд хувааж, хэсэг бүрийг бие даан хэшлэдэг. Хэсгийн хэш дээр үндэслэн хоёртын Merkle мод дээр үндэслэн нэг том хэш үүсдэг. Энэ хуваагдал нь хэшийг тооцоолохдоо өгөгдөл боловсруулалтыг зэрэгцээ болгох асуудлыг шийдэх боломжийг бидэнд олгодог - жишээлбэл, та 4 блокийн хэшийг нэгэн зэрэг тооцоолохын тулд 4 урсгалтай SIMD зааврыг ашиглаж болно. Уламжлалт SHA-* хэш функцууд нь өгөгдлийг дараалан боловсруулдаг.

BLAKE3-ийн онцлогууд:

  • Өндөр гүйцэтгэлтэй, BLAKE3 нь MD5, SHA-1, SHA-2, SHA-3, BLAKE2-ээс хамаагүй хурдан юм.
  • Аюулгүй байдал, үүнд SHA-2 өртөмтгий зурвасын уртасгах халдлагыг эсэргүүцэх;
  • SSE2, SSE4.1, AVX2, AVX-512, NEON зааварт тохируулсан Rust хувилбарт ашиглах боломжтой.
  • Ямар ч тооны утас, SIMD сувгууд дээр тооцооллыг параллель болгох.
  • Урсгалуудыг үе шаттайгаар шинэчлэх, баталгаажуулсан боловсруулах боломж;
  • PRF, MAC, KDF, XOF горимд болон ердийн хэш болгон ашиглах;
  • Бүх архитектурт зориулсан ганц алгоритм, x86-64 систем болон 32 битийн ARM процессорын аль алинд нь хурдан ажилладаг.

BLAKE3 ба BLAKE2 хоёрын гол ялгаа:

  • Хэш тооцоололд хязгааргүй параллелизм хийх боломжийг олгодог хоёртын модны бүтцийг ашиглах.
  • Тойргийн тоог 10-аас 7 болгон бууруулж байна.
  • Үйлдлийн гурван горим: хэш хийх, түлхүүрээр хэшлэх (HMAC) болон түлхүүр үүсгэх (KDF).
  • Түлхүүр параметрийн блок өмнө нь эзэлж байсан талбайг ашигласан тул түлхүүрээр хэш хийх үед нэмэлт зардал гарахгүй.
  • Өргөтгөсөн үр дүн бүхий функц хэлбэрээр суурилуулсан үйлдлийн механизм (XOF, Extendable Output Function), зэрэгцээ байрлуулах, байрлуулах (хайх) боломжийг олгодог.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх