Steganografi Sederhana

15 03 2010

Tugas kuliah Keamanan Informasi kali ini mengharuskan saya membuat suatu pesan rahasia yang dikemas dalam bentuk steganografi. Pesan rahasia yang ada di tulisan kali ini berupa pesan yang diberikan oleh Pak Budi Rahardjo selaku dosen kuliah ini. Pesan tersebut lalu akan saya kemas menjadi suatu steganografi.

Apa itu steganografi?

Steganografi adalah seni untuk menyembunyikan pesan di dalam pesan lainnya sedemikian rupa sehingga orang lain tidak menyadari ada sesuatu di dalam pesan tersebut. Kata steganografi (steganography) berasal dari bahasa Yunani steganos, yang artinya ‘tersembunyi/terselubung’, dan graphein, ‘menulis’ sehingga kurang lebih artinya “menulis (tulisan) terselubung”. Teknik ini meliputi banyak sekali metoda komunikasi untuk menyembunyikan pesan rahasia. Metoda ini termasuk tinta yang tidak tampak, microdots, pengaturan kata, tanda tangan digital, jalur tersembunyi dan komunikasi spektrum lebar.

Kembali ke topik awal, steganografi yang berhasil saya ciptakan adalah sebagai berikut :

Ketika saya bangun pada hari yang indah itu, dibawah ufuk mentari kulihat burung bernyanyi. Aku pun langsung beranjak dari tempat tidurku. Tidak lama, ibu berteriak memanggilku dari lantai bawah. Aku ambil sehelai pakaian dan segera berlari ke bawah. Hari yang indah itu seakan memberikan semangat baru.

Dalam perjalananku ke lantai bawah, tiba-tiba aku ingin buang air besar. Karena sudah tidak tahan, aku berlari ke kamar kecil. Tapi di kamar kecil sudah ada adikku yang juga sedang buang air besar. Tidak terasa, saya sudah mendekati batas toleransi saya. Akhirnya, saya memutuskan untuk mencari kamar kecil lain untuk menuntaskan urusan pribadi saya. Saat di kamar kecil yang lain, saya kembali terkejut karena ayah saya sudah berada di dalam terlebih dahulu. Nasib saya di hari yang indah itu tampak sial.

Hint : mengenang hal tersebut, saya lalu melihat ke arah layar putih fleksibel yang berceritakan pengalaman saya tersebut dan saat itu entah mengapa batas sudut pandang saya adalah ketika dibawah.

Makna pesan yang ada tidaklah terlalu penting, yang penting bagaimana kalian memecahkan apa pesan tersebut.

Jawaban dari steganografi ini akan saya beritahukan minggu depan.

Sekian tulisan kali ini. Semoga bermanfaat.





Self-Generating Code

15 03 2010

Tulisan kali ini saya akan membahas mengenai self-generating code, suatu istilah yang dapat ditemukan pada paper milik Ken Thompson. Lagi-lagi ini merupakan salah satu tugas kuliah Keamanan Informasi. Pada tugas kali ini, saya diminta untuk membuat suatu program yang dapat menampilkan fitur self-regenerating code atau yang biasa dikenal orang dengan metode quine.

Keterangan lengkap mengenai quine dapat dilihat di http://en.wikipedia.org/wiki/Quine_%28computing%29.

Singkatnya ini adalah program di mana output atau hasil dari kode adalah output dari program itu sendiri. Jadi hal ini benar-benar hanya merupakan satu-satunya program yang tujuannya adalah untuk output kode sumber program. Banyak orang yang menyadari bahwa hal ini “menyenangkan” ketika melihat bagaimana sebuah program quine mereka yang dibuat sesingkat mungkin dapat membuat dirinya sendiri. Karena alasan tersebut kebanyakan dari mereka tidak memperhatikan format yang tepat dalam programming termasuk return/line break atau hal lain yang tidak diperlukan supaya program ini berfungsi. Dengan begitu, mereka dapat membuat suatu program self-generating code yang paling singkat yang pernah ada.

Setelah beberapa jam membaca paper milik Ken Thompson tersebut serta eksplorasi mengenai quine, saya mencoba untuk membuat suatu program singkat dengan bahasa C# dengan menggunakan IDE Monodevelop (berhubung saya menggunakan environment UNIX). Dengan dibantu oleh beberapa referensi yang saya temukan, akhirnya saya memutuskan untuk mencoba membuat suatu program singkat yang memiliki fitur self-generating code. Kebetulan saya memilih metode yang ditemukan oleh seorang developer bernama Igor Ostrovsky. Berikut ini adalah screenshot dari program yang dibuat di laptop saya. Pada screenshot berikut akan ditampilkan kode dan outputnya.

Quine Code+Output

Quine Code+Output

Berikut diberikan sourceĀ  code yang ada pada screenshot tersebut :

using System;

namespace Q
{
 class MainClass
 {
 public static void Main(string[] args)
 {
 var s="class Q{{static void Main(){{var s={1}{0}{1};System.Console.Write(s,s,'{1}');}}}}";
 System.Console.Write(s,s,'"');
 }
 }
}

Sedangkan output pada screenshot tersebut akan berupa :

class Q{static void Main(){var s=”class Q{{static void Main(){{var s={1}{0}{1};System.Console.Write(s,s,’{1}’);}}}}”;System.Console.Write(s,s,’”‘);}}

Ide utama di balik implementasi quine ini cukup sederhana. Quine akan terdiri dari dua bagian: definisi dari sebuah string dan program inti. String akan berisi kode sumber dari program inti. Lalu, apa yang akan program inti lakukan? Ia akan mencetak string dua kali: sekali untuk mencetak string definisi, dan sekali lagi untuk mencetak program inti.

Jadi, kita dapat menulis sebuah program yang tahu cara untuk mencetak kode sumbernya. Selain itu, kita juga melakukan hal-hal lain, contohnya :

  1. Hal ini adalah hasil penting dalam ilmu komputer teoritis, yang dikenal sebagai teorema rekursi. Teorema rekursi dapat digunakan untuk membuktikan berbagai hasil yang menarik. Sebagai contoh, dengan menggunakan teorema rekursi dapat membuktikan bahwa halting problem tidak dapat diputuskan begitu saja.
  2. Programmer virus tidak hanya dapat menulis program yang tahu bagaimana mereplikasi diri mereka sendiri, tetapi juga melakukan hal-hal lain, seperti mengacaukan komputer Anda.
  3. Walaupun terkesan Anda menulis program yang pointless tetapi sesungguhnya program singkat ini sangat keren! :D

Sekian tulisan singkat ini. Semoga bermanfaat.








Follow

Get every new post delivered to your Inbox.