Fungsi HASH

Fungsi hash adalh funsi yang menerima masukan string atau pesan yang panjangnya sembarang dan mengkonversinya menjadi string keluaran yang panjangnya tetap atau fixed. Fungsi hash yang dihasilkan biasanya dituliskan dalam notasi persamaan :

h = H (M)
Dimana h merupakan nilai hash yang dihasilkan, sedangkan H adalah fungsi hash-nya itu sendiri dan M adalah message atau pesan yang akan diubah dan dikonversikan menjadi nilai hash (hash value). Nilai hash yang dihasilkan disebut juga pesan ringkas atau message digest. Fungsi hash dapan mengkonversikan sembarang pesan yang berukuran berapa saja menjadi message digest yang berukuran tetap dan biasanya lebih pendek dari panjang pesan yang asli.

Berikut contoh penggunaan fungsi hash yang mengubah suatu string dengan panjang berapapun menjadi sebuah message digest dengan panjang tetap :



Hash memang umumnya digunakan untuk mengecek integritas dari sebuah pesan atau file. File atau pesan yang sudah berubah akan memiliki nilai hash yang berbeda. Sebagai contoh, dengan sebuah algoritma hash, pesan 'hello' akan memberikan nilai hash 12345 sedangkan pesan 'hallo' memiliki nilai hash 83746. Dengan kata lain output hash dari kata 'hello' tidak akan sama dengan 'hallo'.

Nama lain fungsi hash adalah:
  • Fungsi kompresi (compression function)
  • Cetak-jari (fingerprint)
  • Cryptographic checksum
  • Message integrity check (MIC)
  • Manipulation detection code (MDC)
Sifat - sifat fungsi hash :
  1. Preimage resistance. Untuk suatu nilai hash yang sembarang (tidak diketahui asal-usulnya), sangat sukar untuk mencari naskah yang mempunyai nilai hash tersebut.
  2. Second preimage resistance. Untuk suatu naskah m1, sangat sukar untuk mencari naskah lain m2 (m1 =! m2) yang mempunyai nilai hash yang sama (hash(m1) = hash(m2)). Persyaratan ini kerap disebut juga weak collision resistance.
  3. Collision resistance. Sangat sukar untuk mencari dua naskah m1 dan m2 yang berbeda (m1 ? m2) yang mempunyai nilai hash yang sama (hash(m1) = hash(m2)). Persyaratan ini kerap disebut juga strong collision resistance.

Algoritma biasanya terdiri dari dua tahap:

1.    preprocessing dan
2.    hashing.

Tahap preprocessing biasanya terdiri dari padding dan parameter setup. Tahap hashing membuat sidik jari dengan mengkompresi naskah yang sudah diberi padding.

Hash adalah suatu teknik "klasik" dalam Ilmu Komputer yang banyak digunakan dalam praktek secara mendalam. Hash merupakan suatu metode yang secara langsung mengakses record-record dalam suatu tabel dengan melakukan transformasi aritmatik pada key yang menjadi alamat dalam tabel tersebut. 

Pelacakan dengan menggunakan Hash terdiri dari dua langkah utama, yaitu :
  • Menghitung Fungsi Hash.
Fungsi Hash adalah suatu fungsi yang mengubah key menjadi alamat dalam tabel. Fungsi Hash memetakan sebuah key ke suatu alamat dalam tabel. Idealnya, key-key yang berbeda seharusnya dipetakan ke alamat-alamat yang berbeda juga. Pada kenyataannya, tidak ada fungsi Hash yang sempurna. Kemungkinan besar yang terjadi adalah dua atau lebih key yang berbeda dipetakan ke alamat yang sama dalam tabel. Peristiwa ini disebut dengan collision (tabrakan). Karena itulah diperlukan langkah berikutnya, yaitu collision resolution (pemecahan tabrakan).
  • Collision Resolution.
Collision resolution merupakan proses untuk menangani kejadian dua atau lebih key di-hash ke alamat yang sama. Cara yang dilakukan jika terjadi collision adalah mencari lokasi yang kosong dalam tabel Hash secara terurut. Cara lainnya adalah dengan menggunakan fungsi Hash yang lain untuk mencari lokasi kosong tersebut.
Hash juga termasuk salah satu bentuk teknik kriptografi dan dikategorikan sebagai kriptografi tanpa key (unkeyed cryptosystem) karena pada prosesnya fungsi hash ini tidak menggunakan key tetapi menggunakan fungsi untuk menghasilkan message digest. Berbeda dengan teknik enkripsi dalam kriptografi, tujuan hash memang mengubah sebuah pesan yang dapat dibaca (readable text) menjadi pesan acak (unreadable text) sama seperti enkripsi, namun hal mendasar yang menjadi perbedaan dari hash adalah pesan yang telah acak tadi tidak dapat diubah kembali menjadi pesan yang seharusnya. Inilah mengapa hash disebut juga sebagai “one-way function“. Sebuah pesan yang dilewatkan ke fungsi hash akan menghasilkan keluaran yang disebut Message Authenticated Code (MAC). Dilihat dari sisi matematik, fungsi hash memetakan satu set data ke dalam sebuah set yang lebih kecil dan terbatas ukurannya.

Sifat-sifat fungsi hash satu-arah adalah sebagai berikut :
  • Fungsi H dapat diterapkan pada blok data berukuran berapa saja.
  • H menghasilkan nilai (h) dengan panjang tetap (fixed-length output).
  • H(x) mudah dihitung untuk setiap nilai x yang diberikan.
  • Untuk  setiap  h  yang  dihasilkan,  tidak  mungkin  dikembalikan  nilai  x  sedemikian sehingga H(x) =  h.  Itulah  sebabnya  fungsi H  dikatakan  fungsi  hash  satu-arah (one-way hash function).
  • Untuk  setiap  x  yang  diberikan,  tidak mungkin mencari  y ? x  sedemikian  sehingga H(y) = H(x).
  • Tidak mungkin mencari pasangan x dan y sedemikian sehingga H(x) = H(y). Masukan fungsi hash adalah blok pesan (M) dan keluaran dari  hashing blok pesan sebelumnya, hi = H(Mi, hi – 1)
Skema fungsi hash ditunjukkan pada Gambar
Fungsi hash sering sekali digunakan di kehidupan sehari – hari. Beberapa aplikasi fungsi hash dalam kehidupan nyata bertujuan untuk :
  1. Menjaga integritas data
Fungsi hash sangat peka terhadap perubahan 1 bit pada pesan. Pesan berubah 1 bit, nilai hash berubah sangat signifikan. Bandingkan nilai hash baru dengan nilai hash lama. Jika sama, pesan masih asli. Jika tidak sama, pesan sudah dimodifikasi

    2.    Menghemat waktu pengiriman.

Misal untuk memverifikasi sebuah salinan arsip dengan arsip asli. Salinan dokumen berada di tempat yang jauh dari basisdata arsip asli daripada mengirim salinan arsip tersebut secara keseluruhan ke komputer pusat (yang membutuhkan waktu transmisi lama), lebih mangkus mengirimkan message digest-nya. Jika message digest salinan arsip sama dengan message digest arsip asli, berarti salinan arsip tersebut sama dengan arsip master. Contoh lainnya adalah dalam pengiriman hash 1 block pada bit torrent.

   3.    Menormalkan panjang data yang beraneka ragam.

Selain memendekan panjang data yang beragam, fungsi hash juga dapat digunakan untuk menormalkan atau menyeragamkan panjang data yang beragam. Misalkan password panjangnya bebas (minimal 8 karakter) Password disimpan dalam database di komputer host (server) untuk keperluan otentikasi pemakai komputer. Untuk menyeragamkan panjang field password di dalam database, password disimpan dalam bentuk nilai hash (panjang nilai hash tetap).

Beberapa contoh fungsi hash  :


Algoritma
Ukuran message digest (bit)
Ukuran blok pesan
Kolisi
MD2
128
128
Ya
MD4
128
512
Hampir
MD5
128
512
Ya
RIPEMD
128
512
Ya
RIPEMD-128/256
128 / 256
512
Tidak
RIPEMD-160/320
160 / 320
512
Tidak
SHA-0
160
512
Ya
SHA-1
160
512
Ada cacat
SHA-256/224
256 / 224
512
Tidak
SHA-512/384
512 / 384
1024
Tidak
WHIRLPOOL
512
512
Tidak




Leave a Reply