Default – Above Header Ads

Apa itu Hash Function?

Penulis: Dr. Muhammad Reza bin Z’aba
Fakulti Sains Komputer dan Teknologi Maklumat, Universiti Malaya

Dalam artikel yang lalu, kita telah menyelusuri secara ringkas sejarah dan asal-usul kriptografi. Artikel ini akan memberi fokus kepada salah satu teknik kriptografi iaitu cryptographichash function(selepas ini akan dirujuk sebagai hash function sahaja). Apakah tujuan hash function digunakan? Bagaimana hash function berfungsi?

Dalam kriptografi, hash function bertujuan untuk melindungi integriti sesuatu data digital. Dalam kata lain, seseorang dapat menyemak sekiranya data asal diubah, sama ada sengaja atau sebaliknya. Hash function berupaya menerima input yang pelbagai saiz. Namun, saiz output adalah tetap, seperti 128, 256, 384 dan 256 bit, bergantung kepada jenis algoritma. Output bagi hash function digelar hashdigestatau hash. Terdapat banyak algoritma hash function yang boleh digunakan. Antara yang popular ialah MD5, SHA-1, SHA-256 dan SHA3-256.

Contoh senario penggunaan hash function adalah seperti berikut. Saya telah memuat naik sebuah fail digital di laman web saya. Sesiapapun dibenarkan untuk memuat turun fail tersebut. Bagaimana saya mahu memastikan bahawa sesiapa yang muat turun fail tersebut mendapat salinan yang asal dan bukan salinan yang telah diubahsuai oleh pihak lain?

Permasalahan di atas boleh ditangani dengan memaparkan nilai hash digestbagi fail tersebut. Contohnya adalah seperti dalam gambar yang diberi di bawah, iaitu salah satu laman web alternatifuntuk memuat turun sistem pengoperasian (OS) Ubuntu versi 18.10.

Sumber: http://point.putrajaya.my/ubuntu/release/18.10/

Di laman web tersebut, jika kita klik pada fail SHA256SUMS, maka akan terpapar maklumat berikut.

Nilai pertama setiap baris merupakan hash digest bagi fail yang diberi selepasnya. Misalnya,

818affdaea8d38bbbe620009bfa788a7cbc583c7c61c2d278f61dd3c43e030a0

merupakan nilai hash digestbagi algoritma SHA-256 untuk fail ubuntu-18.10-desktop-amd64.iso. Nilai hash digesttersebut diberi dalam format heksadesimaldimana setiap aksara mewakili 4 bit. Terdapat 64 aksara dalam hash digestdi atas. Maka saiz output ialah 64 x 4 = 256 bit.

Jika seorang pengguna memuat turun fail ubuntu-18.10-desktop-amd64.iso tersebut, dia boleh memproses fail ini dengan algoritma hash function SHA-256. Sekiranya nilai hash digestyang diperolehi pengguna sama dengan yang dipaparkan dalam fail SHA256SUMS di atas, maka pengguna telah memuat turun fail yang asal. Sekiranya nilai hash digestyang diperoleh tidak sama, maka fail yang telah dimuat turun tersebut berbeza dengan yang asal (mungkin kerana masalah pada rangkaian semasa memuat turun, atau hacker telah berjaya mengubah fail tersebut).

Untuk merasai pengalaman menggunakan hash function, pembaca boleh masukkan setiap daripada dua ayat berikut dalam ruangan “String hash” di laman web ini (sila klik di sini).

  1. Hash function bukan encryption.
  2. Hash function bukan encryption

Jika anda memasukkan dengan betul, iaitu, nilai hash digestbagi algoritma SHA-256 bagi setiap ayat di atas ialah:

  1. 120455bd7adb11072eea81ea7061a1fdd7239b1884e68a759a0b1c1816c655ff
  2. d407b6e5a9207bdabb36eeaa2a141abd65d2e50864b6a2f4cc027b8d075b0fa2

Kedua-dua nilai hash digesttersebut ternyata berbeza walaupun perbezaan kedua-dua ayat yang diuji tadi hanyalah tanda noktah (.). Ini menunjukkan bahawa hash function berupaya untuk mengesan sebarang perubahan ke atas data asal walaupun perbezaannya sangat sedikit, malah sehingga 1 bit, iaitu saiz paling kecil dalam format data digital.

Secara ringkas, sebagai pelindung integriti, sebuah hash function perlu mempunyai ciri-ciri berikut:

  1. Collision resistance: adalah sukar untuk mencari dua input berbeza yang memberi nilai hash digestyang sama.
  2. Pre-image resistance: apabila diberi nilai hash digest, adalah sukar untuk mencari nilai input asalnya.
  3. Second pre-image resistance: apabila diberi satu contoh input dan nilai hash digestuntuk input tersebut, adalah sukar untuk mencari satu nilai input lain yang memberi nilai hash digestyang sama.

Sekiranya sebuah algoritma hash function tidak mempunyai ciri-ciri di atas, maka ia dianggap lemah. Antaranya ialah algoritma MD5 dan SHA-1. Pada tahun 2005, sekumpulan penyelidik daripada Ruhr University of Bochum berjaya mencipta dua fail berbeza yang mempunyai nilai hash digestyang sama bagi algoritma MD5. Contoh-contoh lain bagi MD5 boleh didapati di laman web ini (sila klik). Hal demikian menunjukkan bahawa algoritma MD5 tidak mempunyai ciri collision resistance. Pada tahun 2017, ciri collision resistanceSHA-1 pula berjaya dipatahkanoleh sekumpulan penyelidik daripada Centrum Wiskunde & Informaticadan Google. Kumpulan ini berjaya menunjukkan kewujudan dua fail PDF berbeza yang mempunyai nilai hash digestyang sama.

Hash function yang lemah seperti MD5 dan SHA-1 ini tidak lagi selamat digunakan dalam aplikasi seperti tandatangan digital. Sebelum sesuatu data ingin ditandatangan secara digital, data tersebut perlu diproses oleh hash function terlebih dahulu. Sebuah algoritma tandatangan digital tidak memproses data asal, sebaliknya, akan memproses nilai hash digestbagi data tersebut. Sekiranya terdapat dua fail berbeza yang mempunyai nilai hash digestyang sama, misalnya surat pemecatan dan surat kenaikan pangkat, maka tandatangan digital yang diaplikasikan kepada salah satu surat adalah terpakai untuk kedua-duanya.

Buat masa ini, terdapat banyak lagi pilihan algoritma hash function yang selamat seperti SHA-256 dan SHA3-256. Dalam artikel yang berikutnya, insya-Allah kita akan merungkai persoalan-persoalan berikut: Apakah peranan hash function dalam mata wang digital? Mengapa Satoshi Nakamoto memilih SHA-256 sebagai algoritma hash function pilihan dalam Bitcoin?

Nak beli bitcoin? Jangan tertipu dengan scammer bitcoin! Biar faham dulu tentang bitcoin! Klik sini untuk belajar.