Pelepasan palaksanaan rujukan tina fungsi hash cryptographic BLAKE3 1.0

Palaksanaan rujukan tina fungsi hash cryptographic BLAKE3 1.0 dirilis, kasohor kinerja itungan hash kacida luhurna bari mastikeun reliabilitas dina tingkat SHA-3. Dina tes generasi hash pikeun file 16 KB, BLAKE3 kalayan konci 256-bit ngaleuwihan SHA3-256 ku 17 kali, SHA-256 ku 14 kali, SHA-512 ku 9 kali, SHA-1 ku 6 kali, sarta BLAKE2b - 5 kali. Gap signifikan tetep nalika ngolah jumlahna ageung data, contona, BLAKE3 tétéla 256 kali leuwih gancang ti SHA-8 nalika ngitung Hash pikeun 1GB data acak. Kode palaksanaan rujukan BLAKE3 sadia dina versi C jeung Rust dina domain publik ganda (CC0) jeung lisénsi Apache 2.0.

Pelepasan palaksanaan rujukan tina fungsi hash cryptographic BLAKE3 1.0

Fungsi hash dirancang pikeun aplikasi sapertos mariksa integritas file, auténtikasi pesen, sareng ngahasilkeun data pikeun tanda tangan digital kriptografi. BLAKE3 henteu dimaksudkeun pikeun hashing kecap akses, sabab boga tujuan pikeun ngitung hashes gancang-gancang (pikeun kecap akses, disarankeun pikeun ngagunakeun fungsi hash slow yescrypt, bcrypt, scrypt atanapi Argon2). Fungsi hash anu dipertimbangkeun henteu merhatikeun kana ukuran data anu hashed sareng ditangtayungan tina serangan dina pilihan tabrakan sareng milarian preimage.

Algoritma ieu dikembangkeun ku ahli kriptografi anu terkenal (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) sareng neraskeun pamekaran algoritma BLAKE2 sareng ngagunakeun mékanisme Bao pikeun ngodekeun tangkal ranté blok. . Teu kawas BLAKE2 (BLAKE2b, BLAKE2s), nawarkeun BLAKE3 algoritma tunggal pikeun sakabéh platform, teu dihijikeun ka jero bit jeung ukuran Hash.

Ngaronjatkeun kinerja kahontal ku cara ngurangan jumlah rounds ti 10 ka 7 jeung hashing blok misah dina 1 lembar KB. Numutkeun panyipta, aranjeunna mendakan bukti matematika anu ngayakinkeun yén anjeun tiasa kéngingkeun 7 babak tibatan 10 bari ngajaga tingkat réliabilitas anu sami (pikeun kajelasan, urang tiasa masihan conto kalayan nyampur buah dina mixer - saatos 7 detik. buah tos rengse dicampurkeun, sarta tambahan 3 detik moal mangaruhan konsistensi campuran). Sanajan kitu, sababaraha panalungtik nganyatakeun mamang, percanten yén sanajan 7 rounds ayeuna cukup pikeun ngalawan sagala serangan dipikawanoh dina hashes, lajeng tambahan 3 rounds bisa jadi mangpaat lamun serangan anyar nu dicirikeun dina mangsa nu bakal datang.

Sedengkeun pikeun ngabagi blok, dina BLAKE3 aliran dibagi kana 1 lembar KB sarta unggal sapotong geus hashed mandiri. Dumasar kana hashes tina potongan, hiji hash badag kabentuk dumasar kana tangkal Merkle binér. Divisi ieu ngamungkinkeun urang pikeun ngajawab masalah parallelizing ngolah data nalika ngitung hashes - contona, anjeun tiasa nganggo parentah SIMD 4-threaded pikeun sakaligus ngitung hashes 4 blok. Fungsi hash SHA-* Tradisional ngolah data sacara berurutan.

Keunggulan BLAKE3:

  • Kinerja anu luhur, BLAKE3 nyata langkung gancang tibatan MD5, SHA-1, SHA-2, SHA-3 sareng BLAKE2.
  • Kaamanan, kaasup résistansi kana serangan elongation pesen anu SHA-2 rentan;
  • Sadia dina Rust, dioptimalkeun pikeun SSE2, SSE4.1, AVX2, AVX-512, sarta parentah NEON.
  • Mastikeun parallelization tina itungan dina sagala Jumlah threads na saluran SIMD.
  • Kamungkinan ngamutahirkeun incremental sareng ngolah aliran anu diverifikasi;
  • Anggo dina modeu PRF, MAC, KDF, XOF sareng salaku hash biasa;
  • Algoritma tunggal pikeun sadaya arsitéktur, gancang dina sistem x86-64 sareng prosesor ARM 32-bit.

Beda utama antara BLAKE3 sareng BLAKE2:

  • Anggo struktur tangkal binér anu ngamungkinkeun paralélisme anu henteu terbatas dina itungan hash.
  • Ngurangan jumlah babak ti 10 ka 7.
  • Tilu mode operasi: hashing, hashing kalayan konci (HMAC) sareng turunan konci (KDF).
  • Taya overhead tambahan nalika hashing kalawan konci alatan pamakéan wewengkon saméméhna dikawasaan ku blok parameter konci.
  • Diwangun-di mékanisme operasi dina bentuk hiji fungsi kalawan hasil nambahan (XOF, Extendable Output Fungsi), sahingga parallelization na positioning (neangan).

sumber: opennet.ru

Tambahkeun komentar