Berburu Hash

Ini cerita tentang tugas atau pekerjaan rumah mahasiswa saya. Ceritanya saya mengajar kuliah keamanan informasi (information security). Salah satu bagian dari materinya adalah tentang kriptografi dan minggu lalu kami membahas fungsih hash.

Apa itu fungsi hash? Bisa panjang lagi ceritanya. (Nambah daftar topik yang perlu diceritakan.) Singkatnya fungsi hash adalah fungsi satu arah yang dapat memberikan ciri atau tanda-tanda (signature) dari data digital (stream of data, files, dan-lain-lain). Contoh fungsi hash yang terkenal adalah MD5 dan SHA256.

Misal ada sebuah berkas (bernama “pesan1.txt”) yang berisi “beli 10000”. Maka hasil SHA 256 (algoritma SHA dengan panjang bit 256) dari teks tersebut dapat dilihat pada contoh di bawah ini.

unix$ echo "beli 10000" | shasum -a 256
375a6c46228994656932f4aa17d9ae50f21da75a31ff17f8517c255c06cba809 -

unix$ cat pesan1.txt
beli 10000
unix$ shasum -a 256 pesan1.txt
375a6c46228994656932f4aa17d9ae50f21da75a31ff17f8517c255c06cba809 pesan1.txt

unix$ cat pesan2.txt
beli 1000
unix$ shasum -a 256 pesan2.txt
5901bccc6a0556fac2b4a164ef831a7ed4ceddeb60c6ddde1162f5a40b9d2917 pesan2.txt

Pada contoh di atas ditunjukkan jika kita memiliki data yang berbeda – dicontohkan dengan berkas “pesan2.txt” yang berisi “beli 1000” (hilang satu angka nolnya) – maka hasil hash-nya pun berbeda. Bahkan, sangat jauh berbeda.

Hal lain dari fungsi hash adalah, jika kita diberikan sebuah hasil hash, maka akan sangat sulit bagi kita untuk merekonstruksi ulang berkas aslinya.

Kebetulan saat ini yang sedang ngetop adalah blockchain. Atau lebih ngetopnya adalah Bitcoin-nya. Salah satu dasar dari blockchain adalah fungsi hash. Maka salah satu tugas mahasiswa di kelas saya adalah berburu (hasil) hash.

Skenarionya adalah kita memiliki sebuah pesan “A>B,5000” (tanpa tanda kutip). Pesan ini ditambahkan nonce, sebuah angka (data, string) yang diambil “dari langit”, dan kemudian keduanya di-hash-kan dengan SHA256.

A>B,5000
NONCE

Ada sedikit “perlombaan” di kelas, yaitu siapa yang berhasil menghasilkan hash terkecil adalah pemenangnya. Cara menguji angka hash yang kecil adalah dengan melihat jumlah “0” di depannya. Yang perlu dicari adalah nonce-nya tersebut. Jadi carilah nonce yang menghasilkan nilai hash paling kecil. Silahkan diperlombakan. Kalau di kelas diberi waktu satu minggu. Pemenangnya akan saya beri hadiah buku.

[Catatan: konsep ini mirip dengan konsep “miner” di bitcoin.]

Teka Teki Kriptografi

Apakah ada pesan tersembunyi di dalam barisan karakter yang terlihat random seperti ini?



GF03hD3rkwvt9CTbYL93UiUTGjCCsPCoTfFe0ado2axJ
4JTWFtssu4NB7pzFFA3bRr5tbWa87VOwPgf9SpNWgEM=
jPKW=MmpJ1z8snQiRSUxXDSZXptsbVwTClxVbkrjGyNL
mglQYWRqyAWLuWV4h0PSPff2BEmffmatkpx1HpaYC8jB
JCT92CUC2dZnG9HAbThO8hjiJvWZknSLKl=jbc8BX43k
9ypGd9WLUrXxi6xpsfBH8oUVlDKDgnRL4H1DB6CkxBi6
2l68XnOPzuwZjokYsKnPqcx5Ys0fa2bsz7en7PeYlGDj
1EEhXzdhv4qBlRgZtBBMqXI0j2xwxWzOu189f=u9r=1S
xNtXFQHZutGsiYYtljSXVM1cQodvCr6wRTDd6crqdh5P
EgBCxuhW82EeRGLHb8vFhjtcKb6IXs=IAa1uqEXpmkgN
TDFZ1WcaVvsz4A=MO=JwfGRUZClS9vIsSpi85eepHNeg
U2FsdGVkX18RgbSjoOwUuLO5sC2sHjA+1vkI2gUkouU=
42xkVb5G6KF69MoFrp8a45CVLOv6FtpW2uHW6hlm=0HY
j73dWO4eg3f=HnDi2JdRG4pb8SCUSfdxJyCGKv9Rc02P
ZjMbCzwj=inmwCcDvnIY7TRjpuW7IzLEyf62OlPg=uFO
G96oWfPDz0Pp6Y4sFC4FGd9w8Wx8b61ykjEpwB46Fca2


Jika ada, apa isi pesannya? Kalau ada. Boleh jadi sesungguhnya tidak ada pesan apa-apa. ha ha ha. Itu bisa jadi hanya sampah (noise) belaka.