a day in the life …

Ini bukan tentang lagunya the Beatles, meskipun judulnya sama. Ini adalah tentang keseharian saya. Untuk apa diceritakan ya? Kepo? Ha ha ha. Namanya juga “blog”. Jadi sekali-sekali mencatatan (log) kegiatan sehari-hari. Seperti kegiatan sehari-harinya di pesawat ruang angkasa. Ciyeh.

Okay. Kemarin saya melakukan banyak hal. Catat dulu.

  1. Mewawancarai calon mahasiswa untuk CCE MBA SBM ITB. (Iya, singkatan semua.)
  2. Memberi mentoring entrepreneurship (selama 1 jam saja)
  3. Futsal (1 jam saja juga)
  4. Latihan band bersama BANDOS (Band Dosen ITB)

Itu garis besarnya. Tentu saja ada hal-hal lain. Ternyata sibuk juga saya untuk hari yang tidak saya ramalkan sebagai sibuk. Hmm…

interview CCE MBA SBM ITB

28619378_10155353991686526_2245848601284629566_o
Latihan BANDOS
Iklan

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

Memulai Perkuliahan Lagi

Hari ini sebetulnya sudah merupakan minggu kedua dari perkuliahan di ITB. Semester ini saya mengajar tiga (3) mata kuliah. Semuanya di bidang information security:

  • II3230 – Keamanan Informasi (Information Security)
  • EL5215 – Keamanan Perangkat Lunak (Software Security)
  • EL6115 – Secure Operation and Incident Handling

Ini potret yang saya ambil di kelas Keamanan Informasi minggu lalu.

ITB information security class 2018

Kelasnya dimulai pagi sekali, pukul 7 pagi. Ayo semangat! Semoga tetap bersemangat sampai akhir semester.

(PGP) Key-Signing Party

Salah satu aktivitas dalam rangka menjalankan sistem teknologi informasi yang aman (secure IT operation) adalah proses pertukaran kunci publik. Sistem kunci publik yang digunakan biasanya berbasis kepada PGP (Pretty Good Privacy) atau Gnu Privacy Guard (GPG). Maka di kelas saya, dilakukan key-signing party.

P_20170214_134309-01 keysigning

Para mahasiswa diminta membuat kunci publiknya, mengunggah kuncinya ke sebuah keyserver, dan kemudian menunjukkan identitasnya (KTP, kartu mahasiswa). Saya unduh kunci mereka dan saya tandatangani (signed) kunci mereka itu setelah melihat dan memastikan bahwa identitas mereka itu benar. Inilah kegiatan key-signing party yang sesungguhnya.

P_20170214_134545_BF keysigning

Di atas beberapa foto proses tersebut. Seru. Untuk memproses seluruh kunci di kelas ini dibutuhkan lebih dari 1 jam.

Semester Baru

 

Semester baru sudah dimulai di ITB hari-hari kemarin. Kelas sudah mulai. Saya mengajar tiga kelas semester ini. Semuanya berhubungan dengan keamanan informasi (information security). Ini foto kelas Keamanan Informasi (7:00 s/d 9:00), dipotret di akhir kelas. Masih pada segar.

P_20170118_083618_BF-01 kelas

Selain mengajar, saya juga membimbing S2 dan S3. Lupa jumlah mahasiswa bimbingannya. ha ha ha. Ini foto ketika bimbingan dengan sebagian mahasiswa.

P_20170118_111302_BF bimb

Waktunya memperbaharui halaman web juga. (Belum sempat euy.) Demikian pula masih ada setumpuk makalah (perbaikan) mahasiswa yang harus saya koreksi lagi. Ballpoint sudah disiapkan.

p_20170117_114824-01-ballpoint

Ayo semangat!

Mengajarkan Debugging?

Bagaimana ya cara mengajarkan “debugging” (mencari sumber masalah dalam koding, sistem)?

Seringkali kita memberikan tutorial atau tugas tentang satu hal (kode pemrograman misalnya). Kemudian siswa mengikuti tutorial tersebut. Ketika ada masalah, tidak jalan, maka siswa kesulitan mencari sumber masalahnya. Ketika melapor, yang dilaporkan juga tugas tidak jalan. Nah ini membingungkan karena ada banyak hal yang membuat sebuah kode / sistem tidak jalan.

Hal yang sama juga terjadi dalam pengembangan sebuah sistem. Ketika ada masalah maka kita harus mencari sumber masalahnya dan memperbaikinya. Debugging.

Kemampuan debugging ini ternyata tidak dimiliki oleh semua orang. Namun semestinya bisa diajarkan. Bagaimana ya cara mengajarkannya yang baik?

Salah satu ide adalah dengan membuat soal yang memiliki kesalahan, kemudian siswa diminta untuk mencari kesalahan tersebut dan memperbaikinya. Semakin sering melakukan hal ini (mencari kesalahan dan memperbaikinya), mudah-mudahan meningkatkan kemampuan untuk debuggingnya.

Hal lain juga yang perlu diajarkan adalah bagaimana membagi-bagi sistem. Divide and conqueror. Ini bisa jadi topik terpisah.

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.