Rilis implementasi referensi fungsi hash kriptografi BLAKE3 1.0

Implementasi referensi dari fungsi hash kriptografi BLAKE3 1.0 telah dirilis, terkenal karena kinerja penghitungan hashnya yang sangat tinggi sekaligus memastikan keandalan pada tingkat SHA-3. Dalam pengujian pembuatan hash untuk file 16 KB, BLAKE3 dengan kunci 256-bit mengungguli SHA3-256 sebanyak 17 kali, SHA-256 sebanyak 14 kali, SHA-512 sebanyak 9 kali, SHA-1 sebanyak 6 kali, dan BLAKE2b - 5 kali. Masih terdapat kesenjangan yang signifikan saat memproses data dalam jumlah yang sangat besar, misalnya, BLAKE3 ternyata 256 kali lebih cepat daripada SHA-8 saat menghitung hash untuk 1 GB data acak. Kode implementasi referensi BLAKE3 tersedia dalam versi C dan Rust di bawah lisensi domain publik ganda (CC0) dan Apache 2.0.

Rilis implementasi referensi fungsi hash kriptografi BLAKE3 1.0

Fungsi hash dirancang untuk aplikasi seperti pemeriksaan integritas file, otentikasi pesan, dan menghasilkan data untuk tanda tangan digital kriptografi. BLAKE3 tidak dimaksudkan untuk hashing kata sandi, karena bertujuan untuk menghitung hash secepat mungkin (untuk kata sandi, disarankan untuk menggunakan fungsi hash lambat yescrypt, bcrypt, scrypt atau Argon2). Fungsi hash yang dipertimbangkan tidak sensitif terhadap ukuran data yang di-hash dan dilindungi dari serangan pada pemilihan tabrakan dan penemuan gambar awal.

Algoritma ini dikembangkan oleh para ahli kriptografi ternama (Jack O'Connor, Jean-Philippe Aumasson, Samuel Neves, Zooko Wilcox-O'Hearn) dan melanjutkan pengembangan algoritma BLAKE2 serta menggunakan mekanisme Bao untuk mengkodekan pohon rantai blok. . Berbeda dengan BLAKE2 (BLAKE2b, BLAKE2s), BLAKE3 menawarkan algoritma tunggal untuk semua platform, tidak terikat pada kedalaman bit dan ukuran hash.

Peningkatan kinerja dicapai dengan mengurangi jumlah putaran dari 10 menjadi 7 dan melakukan hashing blok secara terpisah dalam potongan 1 KB. Menurut penciptanya, mereka telah menemukan bukti matematis yang meyakinkan bahwa adalah mungkin untuk bertahan dengan 7 putaran, bukan 10, dengan tetap mempertahankan tingkat keandalan yang sama (untuk kejelasan, kita dapat memberikan contoh dengan mencampurkan buah dalam mixer - setelah 7 detik buah sudah tercampur sempurna, dan tambahan 3 detik tidak akan mempengaruhi konsistensi campuran). Namun, beberapa peneliti menyatakan keraguannya, percaya bahwa meskipun 7 putaran saat ini cukup untuk melawan semua serangan hash yang diketahui, maka 3 putaran tambahan mungkin berguna jika serangan baru teridentifikasi di masa depan.

Sedangkan untuk pembagian menjadi blok, di BLAKE3 aliran dibagi menjadi 1 bagian KB dan setiap bagian di-hash secara independen. Berdasarkan hash dari potongan-potongan tersebut, satu hash besar dibentuk berdasarkan pohon Merkle biner. Pembagian ini memungkinkan kita untuk memecahkan masalah paralelisasi pemrosesan data saat menghitung hash - misalnya, Anda dapat menggunakan instruksi SIMD 4-utas untuk menghitung hash dari 4 blok secara bersamaan. Fungsi hash SHA-* tradisional memproses data secara berurutan.

Fitur BLAKE3:

  • Performa tinggi, BLAKE3 secara signifikan lebih cepat dibandingkan MD5, SHA-1, SHA-2, SHA-3 dan BLAKE2.
  • Keamanan, termasuk ketahanan terhadap serangan pemanjangan pesan yang rentan terhadap SHA-2;
  • Tersedia dalam Rust, dioptimalkan untuk instruksi SSE2, SSE4.1, AVX2, AVX-512, dan NEON.
  • Memastikan paralelisasi perhitungan pada sejumlah thread dan saluran SIMD.
  • Kemungkinan pembaruan bertahap dan pemrosesan aliran terverifikasi;
  • Gunakan dalam mode PRF, MAC, KDF, XOF dan sebagai hash biasa;
  • Algoritme tunggal untuk semua arsitektur, cepat pada sistem x86-64 dan prosesor ARM 32-bit.

Perbedaan utama antara BLAKE3 dan BLAKE2:

  • Penggunaan struktur pohon biner yang memungkinkan paralelisme tak terbatas dalam penghitungan hash.
  • Mengurangi jumlah putaran dari 10 menjadi 7.
  • Tiga mode operasi: hashing, hashing dengan kunci (HMAC) dan pembuatan kunci (KDF).
  • Tidak ada overhead tambahan saat melakukan hashing dengan kunci karena penggunaan area yang sebelumnya ditempati oleh blok parameter kunci.
  • Mekanisme operasi bawaan berupa fungsi dengan hasil yang diperluas (XOF, Extendable Output Function), memungkinkan paralelisasi dan pemosisian (seek).

Sumber: opennet.ru

Tambah komentar