Pengertian Hash Dalam Kriptografi


Fungsi Hash dalam Kriptografi

Fungsi Hash merupakan sebuah algoritma yg mengubah text / message menjadi sederetan karakter acak yg memiliki jumlah karakter yg sama. Hash juga termasuk salah satu bentuk teknik kriptografi dan dikategorikan sebagai kriptografi tanpa key (unkeyed cryptosystem). Selain itu hash memiliki nama lain yg juga dikenal luas yaitu “one-way function”.


Kita sering sekali menjumpai hash di website-website yg menyediakan layanan untuk download file ataupun program secara resmi. Hash memang umumnya digunakan untuk mengecek integritas dari sebuah pesan / file. File / pesan yg sudah berubah akan memiliki nilai hash yg berbeda. Sebagai contoh, dng 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 yg dimiliki oleh kedua pesan tersebut sangat jauh berbeda.


Berbeda dng teknik enkripsi dalam kriptografi, tujuan hash memang mengubah sebuah pesan yg dapat dibaca (readable text) menjadi pesan acak (unreadable text) sama seperti enkripsi, namun hal mendasar yg menjadi perbedaan dari hash adalah pesan yg telah acak tadi tidak dapat diubah kembali menjadi pesan yg seharusnya. Inilah mengapa hash disebut juga sebagai “one-way function“.


Ketika pertama kali belajar konsep hash, enkripsi, & dekripsi, saya mencoba bersikap kritis dng mengambil hipotesis bahwa dng algoritma yg 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 dng baik sekali. Penjelasannya seperti ini:


Misalkan ada pesan ‘Hello’, pesan ini akan kita hash dng algortima yg sederhana, yaitu pertama-tama huruf-huruf tersebut akan kita ubah kedalam bilangan angka.

  • a menjadi 1
  • b menjadi 2
  • c menjadi 3
  • dst…

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 yg 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 yg 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…


Perlu dicatat disini, bahwa tabulasi diatas adalah ilustrasi bagaimana hash dikatakan sebagai sebuah fungsi yg tidak dapat di dekripsi. Dalam contoh diatas hasil hash sudah sangat acak sehingga kita tidak dapat mengetahui lagi apakah sebuah hash yg ingin kita dekripsi memiliki kandungan huruf e atau z atau m atau lainnya.

Kegunaan

  1. Menyimpan Password
  2. Sebagai Message Integrity
  3. Sebagai Message Fingerprint

Menyimpan Password

Password didalam sebuah sistem dianjurkan untuk disimpan dng menggunakan fungsi hash. Dengan demikian administrator sistem tersebut sekalipun tidak akan dapat melihat / menggunakan password user yg telah menjadi membernya. Hal ini akan memberikan impact yg baik kepada user bahwa baik sistem maupun administrator sangat menghargai privasi dari anggotanya.


Selain itu pula, jika database password pengguna, dng 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.

Message Integrity

Andaikata Alice ingin mengirimkan pesan kepada Bob. Untuk mencegah ada seseorang ditengah perjalanan yg ingin mengganti pesan tersebut, Alice melakukan hash terhadap pesannya sendiri yg kemudian dikirim bersama dng pesannya yg asli. Namun, ternyata apa yg Alice lakukan tidak menjamin integritas keamanan pesan miliknya. Seseorang tetap dapat mengubahnya & menyediakan fungsi hash dari pesan tersebut


Alice bermaksud mengirimkan pesan ‘Hello Bob’ kepada Bob. Alice kemudian mengirimkan pesan tersebut bersama dng fungsi hash MD5 dari pesannya, yaitu b4c9c3086946666f7ec8014629e105f7. Alice mengirimkan pesan & 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 yg berbunyi ‘Hello Honey’, membuat hash MD5 dari pesannya tersebut, & mengembalikannya kedalam tas sang Kurir tanpa sepengetahuan sang Kurir.


Kurir yg baik hati tersebut memberikan pesan Alice tadi kepada Bob. Ketika Bob membacanya, Bob merasakan ada yg aneh terhadap pesan tersebut. Bob mengecek hash MD5 dari pesan yg dibacanya, namun pengecekan MD5 pesan yg diterima Bob dng MD5 yg dikirim bersama paket tersebut cocok. Tapi apakah Bob tahu pesan yg 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 yg berisi pesan & MD5 yg katanya dikirim oleh Alice. Hal ini tidak akan terjadi jika Alice & Bob menggunakan sejumlah karakter rahasia yg hanya diketahui oleh kedua orang tersebut. Karakter-karakter rahasia ini disebut juga dng nama keyed hash. Penggunan karakter ini disebut sebagai message integrity, dimana cara pengunaannya adalah sebelum dilakukannya hash, Alice terlebih dahulu menggabungkan pesannya dng karakter rahasia tersebut.


Jika pesan Alice adalah ‘Hello Bob’ dan karakter rahasia Alice & Bob adalah 1234, maka hasil hash yg dibuat oleh Alice akan bernilai 508e1ae04417ccb03953aa2a320d1714. Jika Eve berhasil mencuri pesan Alice tersebut & menggantinya dng pesan miliknya sendiri, & karena Eve tidak mengetahui karakter rahasia milik Alice & Bob, Eve berasumsi bahwa MD5 yg dikirim oleh Alice tidak mengikutsertakan keyed hash sehingga ia hanya melakukan MD5 terhadap pesannya ‘Hello honey’ tersebut. Bob yg kemudian menerima pesan yg kata sang kurir berasal dari Alice mengecek integritas dari pesan yg katanya dari Alice tersebut dng cara menambahkan keyed hash miliknya kedalam pesan yg diterima tersebut. Setelah dilakukan hash terhadap pesan 'Hello Honey1234' Bob dng 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


Message Fingerprint

Penggunaan Hash sebagai sidik jari pesan (message fingerprint) digunakan untuk mengecek apakah file yg kita simpan masih sesuai dng file asli ketika hash file tersebut dibuat & belum berubah. Jika terdeteksi adanya file yg tidak memiliki hash yg sama dng yg telah dibuat sebelumnya, maka dapat dipastikan bahwa file tersebut telah berubah. Contoh: Pada bulan Januari 2008 Alice memiliki file Bob.txt yg 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 & mencurigai ada yg tidak lazim dari isi file tersebut. Alice kemudian membuat hash dari file Bob.txt tersebut & mendapatkan nilai hashnya.


MD5(Bob.txt)  --> 5f3b147ae863e541701d7011e597e98b

Alice kemudian menyadari bahwa hash file Bob.txt pada Januari 2010 berbeda dng 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 yg mengubah file ataupun pesan tersebut. Terkadang message fingerprint tidak cocok antara 2 waktu dapat disebabkan oleh transfer file yg gagal, sektor pada hardisk dimana sebuah file disimpan rusak, & lain sebagainya. Jadi, tidak selamanya manusia dapat disalahkan juga..

Karakteristik

Dobbertin (1996) dalam artikelnya menyebutkan bahwa dalam membuat fungsi hash harus memenuhi beberapa kriteria berikut:

  1. Relative cepat dalam melakukan komputasi
  2. 2 buah pesan yg berbeda tidak boleh memiliki nilai hash yg sama
  3. Bebas dari serangan Birthday Attack (dari sebanyak 264 atau ~18 446 744 073 709 551 616 pesan kemungkinan besar didapat 2 pesan yg memiliki nilai hash yg sama)
  4. 2 Pesan yg memiliki sangat sedikit perbedaan harus memiliki nilai hash yg sangat berbeda (Kaufman et. al., 2002).

Algortima

Hash umumnya disajikan dalam bentuk bilangan hexadecimal, yaitu kombinasi antara angka 0-9 dng huruf a hingga f. Beberapa algoritma hash yg terkenal & masih sering digunakan hingga saat ini yaitu:

  • md5 (Message Digest 5)
  • SHA-1 (Secure Hash Algortihm 1)
  • SHA-2 (Secure Hash Algorithm 2), yg meliputi 4 fungsi hash:
    • SHA-224
    • SHA-256
    • SHA-384
    • SHA-512

Algoritma MD5 dikembangkan oleh seorang Professor MIT yg bernama Ronald L. Rivest. Istilah “MD” yg digunakan merupakan abrieviation dari Message Digest. Perkembangan MD5 telah melalui 5 kali revisi, dimana MD generasi pertama & kedua di desain untuk membantu algoritma RSA dalam melakukan komputasi signature dari pesan rahasia yg akan dikirim & dienkripsi oleh RSA. Generasi ke tiga & empat MD hadir karena adanya persaingan dari algortima hash lain yg bernama SNEFRU, yg memiliki keunggulan kecepatan pada proses komputasinya dibandingkan MD2. Ketika ditemukan adanya celah keamanan dari SNEFRU pada tahun 1992, ditahun yg sama ditemukan pula kelemahan MD4, yg kemudian Profesor Rivest segera menambal kelemahan tersebut & menggantinya menjadi generasi ke lima Message Digest, yaitu MD5. Dari kelima generasi ini, MD generasi pertama & ketiga merupakan algoritma yg tidak dipublikasikan. Sementara spesifikasi algoritma MD2, MD4, & MD5 terdapat dalam RFC1319, RFC1320, dan RFC1321.


Secure Hash Algoritm (SHA) dikembangkan oleh National Institute and Standard Technology (NIST) pertama kali pada tahun 1993. Generasi pertama SHA diberi nama SHA-0. Kemudian pada tahun 1995, generasi kedua SHA, SHA-1, muncul & dipublikasikan oleh NIST dng kode publikasi FIPS PUB 180-1. Generasi kedua SHA ini muncul dalam waktu 12 jam dari setelah dilaporkannya terdapat kelemahan dalam algoritma SHA-0. Generasi ketiga algortima SHA, SHA-2, dipublikasikan pada tahun 2001 dng berbagai pilihan jumlah bit yg digunakan, yaitu: 224, 256, 384, & 512. Baik SHA-1 & SHA-2 pada dasarnya memiliki algortima yg serupa, hanya berbeda di jumlah karakter outputnya saja. SHA-1, SHA-256, & SHA-516 memiliki jumlah karakter output masing-masing secara berurutan adalah 40, 32, & 64.

0 Response to "Pengertian Hash Dalam Kriptografi"

Post a Comment

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel