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.]

Analogi Bitcoin

Sekarang Bitcoin sedang ramai diperbincangkan. Sebetulnya apa itu Bitcoin? Daripada menjelaskan tentang Bitcoin (atau cryptocurrency lainnya), lebih baik saya buat analoginya.

Katakanlah sekolah Anda ingin mengadakan acara bazaar. Di acara tersebut ada penjualan makanan dan minuman. Agar penjualan makanan dan minuman terkendali maka panitia membuat aturan bahwa pembelian makanan dan minuman dilakukan dengan menggunakan kupon. Kupon dijual dalam pecahan Rp. 20.000,-. Maka mulailah orang yang hadir di bazaar tersebut membeli kupon.

Untuk menghindari terjadinya fraud, penipuan, kupon palsu dan sejenisnya maka jumlah penjualan kupon dibatasi. Hanya ada 500 kupon yang tersedia.

Eh, ternyata makanan dan minuman yang ada di sana enak-enak. Maka orang mulai mencari kupon. Walah. Jumlah kupon yang tersedia ternyata terbatas. Maka mulailah kupon dicari. Tiba-tiba ada orang yang menjual kuponnya. Kupon yang harganya Rp. 20.000,- dijual seharga Rp. 25.000,-. Lumayan, untung Rp. 5.000,-. Malah ada orang yang menjual kupon itu dengan harga Rp. 30.000,-.

Begitu melihat kupon dapat dijual lebih mahal dari harga belinya maka orang mulai memperjualbelikan kupon. Kupon lebih dicari lagi. Harga makin naik lagi. Sekarang harga kupon menjadi Rp. 100.000,-. Wow!!

Lucunya, orang-orang tidak menggunakan kupon itu untuk membeli makanan. Justru jual beli kuponnya yang menjadi fokus kegiatannya.

Lantas bagaimana nasib penjual makanan dan minuman itu? Hmm … sebentar kita cek dulu. Ternyata jual beli makanan dilakukan dengan uang Rupiah saja karena daripada tidak ada yang beli dan kupon malah disimpan (dan diperjualbelikan) oleh orang-orang. Kupon tidak jadi solusi.

Bazaar akan selesai. Bagaimana nasib harga kupon setelah bazaar selesai? Anda tahu sendiri.

Update: yang ini belum tentu benar, tapi lucu saja. hi hi hi.

bitcoin-mania

Judul / Topik Thesis / Penelitian

Minggu ini mulai banyak mahasiswa berdatangan untuk mencari topik penelitian & thesis S2 mereka. Berikut ini adalah beberapa topik yang saya tawarkan. Deskripsi dari masing-masing topik mungkin belum terlalu rinci, tetapi mudah-mudahan penjelasan ini masih dapat memberikan bayangan. Topik besarnya adalah security & big data.

  1. Anonimity + eVoting + Visual Cryptography ID. Topik ini melanjutkan disertasi dari I Made Ardhana (softcopy disertasi sedang saya telusuri dan akan diupload di web site). Fokus kepada implementasi ide-ide yang ada di dalam disertasi tersebut. Ada beberapa design decissions yang harus diambil dalam implementasinya beserta pembaharuan teorinya. Titik beratnya kepada programming. (Ada beberapa snippet code yang sudah saya buat sebagai proof of concept.) [Sudah ada rencana 1 mahasiswa yang memilih ini. Masih dapat ditambah khususnya untuk sisi attack-nya.] Untuk aspek teorinya, pengukuran tingkat anonimitas, juga sedang mencari mahasiswa. Namun yang ini lebih banyak aspek matematisnya. Jika menyukai matematika (atau memang mahasiswa matematika), bisa memikirkan topik ini.
  2. Stegokripto. Meneruskan thesis dari Almaarif (lihat budi.rahardjo.id bagian students). Pencarian kode yang berbeda antara data dan noise. (Coding theory. Mencari kode yang orthogonal terhadap noise. Ide on-curve dan off-curve pada Elliptic Curve juga dapat dipakai.) Pada thesis terdahulu proses pembedaan kode dan noise dilakukan dengan menggunakan marker tertentu. (Proses pendeteksian dapat dilakukan dengan sliding window, atau bahkan matriks. Belum dilihat aspek kinerjanya.) Kode terdahulu juga dapat lebih disempurnakan sehingga aplikasi menjadi lebih integrated. (Sebelumnya pecah-pecah menjadi beberap aplikasi.)
  3. Mekanisme pengamanan program chat (Signals / dahulu TextSecure, WA, dll.) dengan menggunakan Curve 25519. Thesis memahami protokol yang digunakan dan melakukan re-implementasi di program Open Whisper Systems. (Ini juga dapat menjadi topik thesis di Matematika.)
  4. Cryptocurrency. Block chain. Ini adalah konsep di belakang Bitcoin. Memahami dan membuat protototipe sebuah digital money. Mengembangkan teori uang digital.
  5. Secure phone. Beberapa komponen dari konsep secure phone, yaitu authentication module (menggunakan SAM). [Sudah ada 1 mahasiswa yang mengerjakan ini.] Ini bagian besar dari disertasi Virtual Trusted Machine (mahasiswa S3: Raidun). Beberapa kemungkinan implementasi dari ide secure phone dengan menggunakan DSP board.
  6. Proteksi DNS terhadap DoS attack. [Sudah ada 1 mahasiswa yang mengambil ini.] Fokus kepada teknis. (Sementara untuk aspek teori adanya di level S3.)
  7. Automated software security testing. Exploring several framework. [Sudah ada 1 mahasiswa yang memilih menggunakan Sully]
  8. Beberapa sub-topik dari disertasi mahasiswa saya. (Mahasiswa S3 akan memberikan beberap sub-topik dari penelitian [kesulitan] mereka saat ini yang dapat menjadi topik thesis.) Topik terkait dengan Graph-based Social Network Analysis (SNA), graph compression, big-data in SNA,  Distributed IDS (ant-colony), eLearning berbasis Jigsaw, …

Sementara ini daftarnya adalah seperti itu. Akan saya tambahkan dengan link-link lain agar lebih jelas lagi dalam update berikutnya.

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.