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.
- a menjadi 1
- b menjadi 2
- c menjadi 3
- dst…
Sehingga pesan 'hello' akan
menjadi '8.5.12.12.15'. Kemudian kita jumlahkan bilangan-bilangan
tersebut sehingga kata 'hello' akan menghasilkan
jumlah 52.
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
|
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.
Kegunaan
Menurut Kaufman et. al. (2002), Fungsi hash dapat digunakan
sebagai:
1. Menyimpan Password
2. Sebagai Message
Integrity
3. Sebagai Message Fingerprint
1. Menyimpan Password
Password didalam sebuah sistem dianjurkan untuk disimpan dengan
menggunakan fungsi hash. Dengan demikian administrator sistem tersebut
sekalipun tidak akan dapat melihat atau menggunakan password user yang telah
menjadi membernya. Hal ini akan memberikan impact yang baik kepada user bahwa
baik sistem maupun administrator sangat menghargai privasi dari anggotanya.
Selain itu pula, jika database password pengguna, dengan
cara tertentu dapat diakses oleh publik, maka siapapun tetap tidak langsung
dapat menggunakan password tersebut. Untuk
menggunakan password yang telah publicly accessible terlebih
dahulu seorang hacker harus melakukan buteforce terhadap kumpulan
password-password teresbut.
2. Message Integrity
Andaikata Alice ingin mengirimkan pesan kepada Bob. Untuk mencegah
ada seseorang ditengah perjalanan yang ingin mengganti pesan tersebut, Alice
melakukan hash terhadap pesannya sendiri yang kemudian dikirim bersama dengan
pesannya yang asli. Namun, ternyata apa yang Alice lakukan tidak menjamin
integritas keamanan pesan miliknya. Seseorang tetap dapat mengubahnya dan
menyediakan fungsi hash dari pesan tersebut
Alice bermaksud mengirimkan pesan ‘Hello Bob’ kepada Bob. Alice
kemudian mengirimkan pesan tersebut bersama dengan fungsi hash MD5 dari
pesannya, yaitu b4c9c3086946666f7ec8014629e105f7. Alice mengirimkan pesan dan
hash MD5 nya melalui jasa pengantar barang, TIKI. Ditengah perjalanan, Eve
berhasil mencuri pesan Alice untuk Bob dari sang kurir TIKI. Eve membuat pesan
baru yang berbunyi ‘Hello Honey’, membuat hash MD5 dari pesannya tersebut, dan
mengembalikannya kedalam tas sang Kurir tanpa sepengetahuan sang Kurir.
Kurir yang baik hati tersebut memberikan pesan Alice tadi kepada
Bob. Ketika Bob membacanya, Bob merasakan ada yang aneh terhadap pesan
tersebut. Bob mengecek hash MD5 dari pesan yang dibacanya, namun pengecekan MD5
pesan yang diterima Bob dengan MD5 yang dikirim bersama paket tersebut cocok.
Tapi apakah Bob tahu pesan yang bertuliskan ‘Hello Honey’ tersebut memang
berasal dari Alice?
Dalam kasus ini tentu saja Bob tidak memiliki cara untuk
mengetahui keabsahan pesan tersebut hanya dari paket yang berisi pesan dan MD5
yang katanya dikirim oleh Alice. Hal ini tidak akan terjadi jika Alice dan Bob
menggunakan sejumlah karakter rahasia yang hanya diketahui oleh kedua orang
tersebut. Karakter-karakter rahasia ini disebut juga dengan nama keyed
hash. Penggunan karakter ini disebut sebagai message integrity, dimana cara
pengunaannya adalah sebelum dilakukannya hash, Alice terlebih dahulu
menggabungkan pesannya dengan karakter rahasia tersebut.
Jika pesan Alice adalah ‘Hello Bob’ dan karakter
rahasia Alice dan Bob adalah 1234, maka hasil hash yang dibuat oleh Alice akan
bernilai 508e1ae04417ccb03953aa2a320d1714. Jika Eve berhasil mencuri pesan
Alice tersebut dan menggantinya dengan pesan miliknya sendiri, dan karena Eve
tidak mengetahui karakter rahasia milik Alice dan Bob, Eve berasumsi bahwa MD5
yang dikirim oleh Alice tidak mengikutsertakan keyed hash sehingga ia hanya
melakukan MD5 terhadap pesannya ‘Hello honey’ tersebut. Bob
yang kemudian menerima pesan yang kata sang kurir berasal dari Alice mengecek
integritas dari pesan yang katanya dari Alice tersebut dengan cara menambahkan
keyed hash miliknya kedalam pesan yang diterima tersebut. Setelah dilakukan
hash terhadap pesan 'Hello Honey1234' Bob dengan yakin dapat mengatakan bahwa
pesan tersebut bukan berasal dari Alice.
Pesan
|
Keyed Hash
|
MD5
|
‘Hello Bob’
|
b4c9c3086946666f7ec8014629e105f7
|
|
‘Hello Honey’
|
e42afb241fceefa05e3e897fa0686f14
|
|
‘Hello Bob’
|
1234
|
508e1ae04417ccb03953aa2a320d1714
|
‘Hello Honey’
|
1234
|
7dc14667a10ce5116b50f4d8a7e1ad9c
|
3. Message Fingerprint
Penggunaan Hash sebagai sidik jari pesan (message fingerprint)
digunakan untuk mengecek apakah file yang kita simpan masih sesuai dengan file
asli ketika hash file tersebut dibuat dan belum berubah. Jika terdeteksi adanya
file yang tidak memiliki hash yang sama dengan yang telah dibuat sebelumnya,
maka dapat dipastikan bahwa file tersebut telah berubah. Contoh: Pada bulan
Januari 2008 Alice memiliki file Bob.txt yang berisi profil mengenai Bob. Alice
mengkomputasi hash dari file tersebut sehingga diperoleh:
MD5(Bob.txt) --> f06defdef28e15706f974f6d080b57fe
Dua tahun kemudian Alice membuka kembali file Bob.txt tersebut dan
mencurigai ada yang tidak lazim dari isi file tersebut. Alice kemudian membuat
hash dari file Bob.txt tersebut dan mendapatkan nilai hashnya.
MD5(Bob.txt) --> 5f3b147ae863e541701d7011e597e98b
Alice kemudian menyadari bahwa hash file Bob.txt pada Januari 2010
berbeda dengan hash pada bulan Januari 2008. Dengan demikian, dapat dipastikan
bahwa seseorang telah mengubah file tersebut antara Bulan Januari 2008 hingga
Januari 2010.
Ketidak cocokan message fingerprint tidak selama disebabkan karena
ada manusia yang mengubah file ataupun pesan tersebut. Terkadang message
fingerprint tidak cocok antara 2 waktu dapat disebabkan oleh transfer file yang
gagal, sektor pada hardisk dimana sebuah file disimpan rusak, dan lain
sebagainya. Jadi, tidak selamanya manusia dapat disalahkan juga.
Salam kenal gan, wah ane kuliah jurusan teknik Elektro jadi gak tau yg beginian. Thanks deh ilmunya.
BalasHapusJangan lupa mampir gan http://pusatgame-psp.blogspot.com
Salam kenal gan, wah ane kuliah jurusan teknik Elektro jadi gak tau yg beginian. Thanks deh ilmunya.
BalasHapusJangan lupa mampir gan http://pusatgame-psp.blogspot.com
Did you know there is a 12 word sentence you can speak to your man... that will induce intense feelings of love and impulsive attraction to you buried inside his heart?
BalasHapusThat's because deep inside these 12 words is a "secret signal" that fuels a man's impulse to love, treasure and look after you with his entire heart...
===> 12 Words That Fuel A Man's Love Instinct
This impulse is so hardwired into a man's brain that it will make him try harder than ever before to do his best at looking after your relationship.
In fact, triggering this mighty impulse is so important to having the best possible relationship with your man that once you send your man one of the "Secret Signals"...
...You will instantly find him expose his mind and heart for you in a way he haven't expressed before and he will identify you as the one and only woman in the universe who has ever truly attracted him.