Pengenalan terbaru Rain, sebuah fungsi hash non-kriptografis baru, telah memicu perdebatan menarik di dalam komunitas pengembang tentang peran dan kebutuhan fungsi hash yang mirip kriptografis dalam pengembangan perangkat lunak modern. Sementara Rain memamerkan metrik kinerja yang mengesankan sebagai fungsi hash non-kriptografis 128-bit dan 256-bit tercepat, diskusi ini mengungkap pertanyaan yang lebih dalam tentang desain dan pilihan implementasi fungsi hash.
Fitur Utama Rain:
- Hash non-kriptografis 128-bit dan 256-bit tercepat
- Hanya menggunakan kurang dari 140 baris kode
- Lulus semua pengujian SMHasher3
- Mendukung berbagai ukuran output: 64, 128, dan 256 bit
- Fungsi pencampuran berbasis bilangan prima untuk properti avalanche yang kuat
Pertimbangan antara Kinerja dan Keamanan
Diskusi komunitas menyoroti pertanyaan mendasar tentang desain fungsi hash: apa nilai proposisi dari fungsi hash yang berada di antara implementasi kriptografis penuh dan non-kriptografis murni? Beberapa pengembang menunjukkan bahwa meskipun hash kriptografis lebih mahal secara komputasi, mereka sering kali cukup cepat untuk kebanyakan aplikasi. Namun, yang lain berpendapat bahwa ada kasus penggunaan spesifik di mana hash non-kriptografis yang dioptimalkan untuk kinerja masuk akal.
Aplikasi Dunia Nyata
Salah satu komentar yang sangat berwawasan dari komunitas menjelaskan aplikasi praktis:
Ada aplikasi di mana hash digunakan sebagai pengidentifikasi, di mana tidak mungkin menggunakan data asli untuk menyelesaikan kemungkinan tabrakan. Salah satu contohnya adalah dalam RTTI (Run Time Type Information), ketika Anda ingin memeriksa apakah dua objek adalah instance dari tipe yang sama... Jika terjadi tabrakan, maka perilaku program tidak terdefinisi, sehingga ideal untuk meminimalkan probabilitas tabrakan.
Inovasi Teknis
Proses pengembangan Rain mengungkapkan wawasan menarik tentang desain fungsi hash. Fungsi ini menggunakan bilangan prima yang dipilih secara cermat berdasarkan kualitas avalanche mereka di bawah operasi modulo perkalian. Proses pemilihan ini membutuhkan beberapa hari komputasi pada perangkat keras modern untuk mengidentifikasi bilangan prima yang memberikan probabilitas bit-flip optimal di seluruh rentang bit yang mungkin.
Kontroversi Benchmark
Komunitas telah mengangkat kekhawatiran tentang validitas benchmark yang dipublikasikan, khususnya mencatat bahwa pengukuran saat ini tampaknya didominasi oleh waktu startup daripada komputasi hash yang sebenarnya. Ini menyoroti pentingnya metodologi benchmark yang tepat dalam mengevaluasi kinerja fungsi hash.
Perbandingan Kinerja ( C++ vs WASM ):
- Implementasi C++ secara konsisten mengungguli WASM
- Perbedaan kinerja berkisar antara 4x hingga 23x lebih cepat
- Perbedaan kinerja terbesar teramati pada input 1.000.000 byte (23x)
- Perbedaan kinerja terkecil pada input 100.000.000 byte (4x)
Pertimbangan Masa Depan
Diskusi mengungkapkan perdebatan yang sedang berlangsung tentang pemilihan fungsi hash dalam proyek-proyek besar, termasuk sistem penyimpanan yang dapat dialamatkan konten Git dan implementasi bahasa pemrograman. Sementara Rain menunjukkan potensi dalam aplikasi tertentu, komunitas menekankan pentingnya memilih alat yang tepat untuk kasus penggunaan spesifik daripada mengadopsi pendekatan satu ukuran untuk semua.
Referensi: Rain: Fungsi Hash Non-Kriptografis yang Cepat dan Serbaguna