Fungsi Hash merupakan sebuah algoritma yang mengubah text atau message menjadi sederetan karakter acak yang memiliki jumlah karakter yang sama. Hash juga termasuk salah satu bentuk teknik kriptografi dan dikategorikan sebagai kriptografi tanpa key (unkeyed cryptosystem). Selain itu hash memiliki nama lain yang juga dikenal luas yaitu “one-way function”. Kita sering sekali menjumpai hash di website-website yang menyediakan layanan untuk download file ataupun program secara resmi. 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 hash83746. Dengan kata lain output hash dari kata 'hello' tidak akan sama dengan 'hallo'. Bahkan sekalipun dalam kacamata kita kedua pesan tersebut terlihat hanya memiliki perbedaan sedikit saja, namun nilai hash yang dimiliki oleh kedua pesan tersebut sangat jauh berbeda.
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“.
Ketika pertama kali belajar konsep hash, enkripsi, dan dekripsi, saya mencoba bersikap kritis dengan mengambil hipotesis bahwa dengan algoritma yang tepat, hash pasti dapat dibalikkan (reverse). Dengan kata lain keyakinan saya terhadap dekripsi sebuah fungsi hash sangat besar. Namun, jreng-jreng… keyakinan saya tidak terbukti setelah Lecture Security Technology saya menjelaskan hal ini dengan baik sekali. Penjelasannya seperti ini:
Misalkan ada pesan ‘Hello’, pesan ini akan kita hash dengan algortima yang sederhana, yaitu pertama-tama huruf-huruf tersebut akan kita ubah kedalam bilangan angka.
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“.
Ketika pertama kali belajar konsep hash, enkripsi, dan dekripsi, saya mencoba bersikap kritis dengan mengambil hipotesis bahwa dengan algoritma yang tepat, hash pasti dapat dibalikkan (reverse). Dengan kata lain keyakinan saya terhadap dekripsi sebuah fungsi hash sangat besar. Namun, jreng-jreng… keyakinan saya tidak terbukti setelah Lecture Security Technology saya menjelaskan hal ini dengan baik sekali. Penjelasannya seperti ini:
Misalkan ada pesan ‘Hello’, pesan ini akan kita hash dengan algortima yang sederhana, yaitu pertama-tama huruf-huruf tersebut akan kita ubah kedalam bilangan angka.
- a menjadi 1
- b menjadi 2
- c menjadi 3
- dst…
h e l l o
8 + 5 + 12 + 12 + 15 = 52
Kemudian langkah terakhir adalah kita ambil satu digit yang paling belakang sebagai nilai hashnya, yaitu 2. Nah nilai hash 2 ini bukankah bisa dibuat dari banyak kombinasi huruf? jumlah huruf pun juga bisa bervariasi, tidak harus 5 seperti 'hello'. Berikut beberapa text yang memiliki hash 2.
Text Integer Sum Hash
bye 2.25.5 32 2
confidential 3.15.14.6.9.4.5.14.20.9.1.12 112 2
enemy 5.14.5.13.25 62 2
dlsb…
Text Integer Sum Hash
bye 2.25.5 32 2
confidential 3.15.14.6.9.4.5.14.20.9.1.12 112 2
enemy 5.14.5.13.25 62 2
dlsb…
Perlu dicatat disini, bahwa tabulasi diatas adalah ilustrasi bagaimana hash dikatakan sebagai sebuah fungsi yang tidak dapat di dekripsi. Dalam contoh diatas hasil hash sudah sangat acak sehingga kita tidak dapat mengetahui lagi apakah sebuah hash yang ingin kita dekripsi memiliki kandungan huruf e atau z atau m atau lainnya.
Algortima
Hash umumnya disajikan dalam bentuk bilangan hexadecimal, yaitu kombinasi antara angka 0-9 dengan huruf a hingga f. Beberapa algoritma hash yang terkenal dan masih sering digunakan hingga saat ini yaitu:
Hash umumnya disajikan dalam bentuk bilangan hexadecimal, yaitu kombinasi antara angka 0-9 dengan huruf a hingga f. Beberapa algoritma hash yang terkenal dan masih sering digunakan hingga saat ini yaitu:
- md5 (Message Digest 5)
- SHA-1 (Secure Hash Algortihm 1)
- SHA-2 (Secure Hash Algorithm 2), yang meliputi 4 fungsi hash:
- SHA-224
- SHA-256
- SHA-384
- SHA-512
Algoritma MD5 dikembangkan oleh seorang Professor MIT yang bernama Ronald L. Rivest. Istilah “MD” yang digunakan merupakan abrieviation dari Message Digest. Perkembangan MD5 telah melalui 5 kali revisi, dimana MD generasi pertama dan kedua di desain untuk membantu algoritma RSA dalam melakukan komputasi signature dari pesan rahasia yang akan dikirim dan dienkripsi oleh RSA. Generasi ke tiga dan empat MD hadir karena adanya persaingan dari algortima hash lain yang bernama SNEFRU, yang memiliki keunggulan kecepatan pada proses komputasinya dibandingkan MD2. Ketika ditemukan adanya celah keamanan dari SNEFRU pada tahun 1992, ditahun yang sama ditemukan pula kelemahan MD4, yang kemudian Profesor Rivest segera menambal kelemahan tersebut dan menggantinya menjadi generasi ke lima Message Digest, yaitu MD5. Dari kelima generasi ini, MD generasi pertama dan ketiga merupakan algoritma yang tidak dipublikasikan. Sementara spesifikasi algoritma MD2, MD4, dan MD5 terdapat dalam RFC1319, RFC1320, dan RFC1321.
Secure Hash Algoritm (SHA) dikembangkan oleh National Institute and Standard Technology (NIST) pertama kali pada tahun 1993.
Secure Hash Algoritm (SHA) dikembangkan oleh National Institute and Standard Technology (NIST) pertama kali pada tahun 1993.
Source : Hash