Fungsi Hash : HAVAL

Posted by Ae89 on Sabtu, 08 Mei 2010 | 0 komentar

keyFungsi hash sering disebut enkripsi satu arah , atau sering disebut message digest . Fungsi hash adalah many to one , sehingga memungkinkan terjadi collision ( tabrakan ). Secara umum fungsi hash memiliki 2 sifat dasar yaitu
  • sifat kompresi, fungsi h memetakan input x dengan panjang sembarang ke output Y = h(x) dengan panjang tetap n ,
  • mudah dihitung, dengan diberikan h dan sebuah input x, maka Y mudah dihitung.
Sangatlah menyulitkan untuk menghitung pasangan dari pesan yang punya nilai digest yang sama. Algoritma hash satu arah sering digunakan untuk autentikasi, secara umum dalam tanda tangan digital dan meningkat sejak ditemukan kunci publik oleh Diffie Hellman. Kemudian ditemukan algoritma hash satu arah , misalnya yang efisien dalam implementasi software, yang digest outputnya bernilai tetap. Misal keluarga MD dengan 128 bit dan SIIS digest dengan 160 bit.
Dikembangkan algoritma hash satu arah yang dapat menghasilkan digest output yang berubah – ubah . Algoritma seperti itu lebih fleksibel dan cocok untuk aplikasi dimana panjang output digest yang berubah – ubah dibutuhkan. Algoritma ini ialah HAVAL yang diciptakan oleh Yuliang Zheng, Josep Pieprzyk dan Jennifer Seberry pada tahun 1992. Haval mengunakan fungsi Boolean, dengan sifat:
  1. keseimbangan 0 – 1
  2. non – linear
  3. memenuhi Strict Avalanche Criterion ( SAC )
  4. tidak dapat diubah menjadi lainnya dengan menambahkan transformasi linear ke koordinat input.
  5. satu sama lain tidak berkolerasi melalui fungsi linear
Dalam hal ini HAVAL bekerja dalam GF(2). Bit dinotasikan dengan huruf kecil, sedangkan string akan dinotasikan sebagai huruf besar. Sebuah byte merupakan string yang terdiri dari 8 bit. Word merupakan string yang terdiri dari 4 byte ( 32 bit ). Sedangkan Block merupakan rangkaian dari 32 word ( 1024 bit ). Kita anggap The Most Significant Bit/ Byte/ Word/ Block terletak paling kiri. Misalkan terdapat biner string X = Xn-1 Xn-2 …..Xo, sehingga memiliki nilai integer I x = Xn-1 2 n-1 + Xn-2 2 n-2 + …… + Xn 2 0.
Perkalian dan penjumlahan X1, X2 dalam GF(2) dinotasikan X1X2 dan X1+X2, terdapat dalam GF(2), sedangkan perkalian dan penjumlahan 2 buah string biner dengan panjang sama , dinotasikan sebagai S1•S2 dan S1+S2. Catatan bahwa operasi • dikerjakan terlebih dahulu dari pada +. Ditentukan pula misalnya S1 = W 1,n-1 W 1,n-2 ….. W 1,0, dimana setiap W i,j adalah 32 bit-word. Sehingga penjumlahan word mod 232 dari 2 string dinotasikan sebagai S1 + S2 dan dijabarkan sebagai  ( W 1,n-1 + W 2,n-1 mod 232 )  ( W 1,n-2 + W 2,n-2 mod 232 )….( W 1,0 + W 2,0 mod 232 ), dimana W i,j dalam [0,232 -1 ]
Proses  Haval pesan M , dengan 3 langkah :
1. Proses Padding ( penambahan ) pada pesan sehingga menjadi sepanjang perkalian dari 1024. Blok terakhir ( the most significant block )  dari penambahan pesan mengindikasikan panjang dari pesan asli, panjang yang dibutuhkan dari digest, dan jumlah dari passes setiap blok yang diproses serta nomor versi dari Haval yaitu 1.
2.Hitung berulang kali D i+1 = II ( Di, Bi ) untuk i dari 0 sampai n-1, dimana D0 adalah 8 word tring konstan dan n adalah totaldari jumlah blok dalah pesan yang ditambahkan
3.Mengatur nilai Dn 256 bit didapat dari perhitungan diatas menurut panjang digest yang ada diblok terakhir Bn-1, dan output dari nilai yang diatur sebagai digest pesan M.

Kelemahan :
1.  Menggunakan birthday attack dapat ditemukan collision
2.  Haval-128 dengan p=3,4,5 telah dibreak. Untuk versi lain belum diketahui statusnya
3. Tidak diketahui perbedaan dari versi Haval
Kelebihan :

1. Dapat menghasilkan 15 tingkat level keamanan
2. Output digestnya dapat berbeda:128, 160,192, 224, 256 bit
3.  Sangat cocok untuk 32bit komputer
4.  Lebih cepat dari MD5 : 60%(p=3), 15% (p=4), sama cepat(p=5)