Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
BAB II TEORI PENUNJANG 2.1. PENGENALAN STEGANOGRAPHY 2.1.1. Pengertian Steganography Steganography (covered writing) didefinisikan sebagai ilmu dan seni untuk menyembunyikan pesan rahasia (hiding message) sedemikian sehingga keberadaan (eksistensi) pesan tidak terdeteksi oleh indera manusia[6]. Media yang digunakan umumnya merupakan suatu media yang berbeda dengan media pembawa informasi rahasia, dimana disinilah fungsi dari teknik steganography yaitu sebagai teknik penyamaran menggunakan media lain yang berbeda sehingga informasi rahasia dalam media awal tidak terlihat secara jelas. Steganography biasanya sering disalahkaprahkan dengan kriptografi karenanya keduanya sama-sama bertujuan untuk melindungi informasi yang berharga. Perbedaan yang mendasar antara keduanya yaitu steganography berhubungan dengan informasi tersembunyi sehingga tampak seperti tidak ada informasi tersembunyi sama sekali. Jika seseorang mengamati objek yang menyimpan informasi tersembunyi tersebut, ia tidak akan menyangka bahwa terdapat pesan rahasia dalam objek tersebut, dan karenanya ia tidak akan berusaha memecahkan informasi (dekripsi) dari objek tersebut[7]. Kata steganography berasal dari bahasa Yunani, yaitu dari kata Steganos (tersembunyi) dan Graptos (tulisan). Steganography di dunia modern biasanya mengacu pada informasi atau suatu arsip yang telah disembunyikan ke dalam suatu arsip citra digital, audio, atau video[8]. Teknik steganography ini telah banyak digunakan dalam stratategi peperangan dan pengiriman sandi rahasia sejak jaman dahulu kala. Dalam perang Dunia II, teknik steganography umum digunakan oleh tentara Jerman dalam mengirimkan pesan rahasia dari atau menuju Jerman. Semakin pentingnya nilai dari sebuah informasi, maka semakin berkembang pula metode-metode yang dapat digunakan untuk melakukan penyisipan informasi yang didukung pula dengan semakin berkembangnya media elektronik. Berbagai macam media elektronik kini telah dapat digunakan untuk melakukan berbagai fungsi steganography dengan berbagai macam tujuan dan fungsi yang diharapkan oleh penggunanya. Sebagai fungsi yang umum,
5
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
steganography digunakan untuk memberikan cap khusus dalam sebuah karya yang dibuat dalam format media elektronik sebagai identifikasi . Satu hal esensial yang menjadi kelebihan steganography adalah kemampuannya untuk menipu persepsi manusia, manusia tidak memiliki insting untuk mencurigai adanya arsip-arsip yang memiliki informasi yang tersembunyi di dalamnya, terutama bila arsip tersebut tampak seperti arsip normal lainnya. Namun begitu terbentuk pula suatu teknik yang dikenal dengan steganalysis, yaitu suatu teknik yang digunakan untuk mendeteksi penggunaan steganography pada suatu arsip. Seorang steganalyst tidak berusaha untuk melakukan dekripsi terhadap informasi yang tersembunyi dalam suatu arsip, yang dilakukan adalah berusaha untuk menemukannya. Terdapat beberapa cara yang dapat digunakan untuk mendeteksi steganography seperti melakukan pengamatan terhadap suatu arsip dan membandingkannya dengan salinan arsip yang dianggap belum direkayasa. 2.1.2 Sejarah Steganography Seperti kriptografi, penggunaan steganography sebenarnya telah digunakan berabad-abad yang lalu bahkan sebelum istilah steganography itu sendiri muncul. Berikut adalah contoh penggunaan steganography di masa lalu[6] : 1. Selama terjadinya Perang Dunia ke-2, tinta yang tidak tampak (invisible ink) telah digunakan untuk menulis informasi pada lembaran kertas sehingga saat kertas tersebut jatuh di tangan pihak lain hanya akan tampak seperti lembaran kertas kosong biasa. 2. Pada sejarah Yunani kuno, masyarakatnya biasa menggunakan seorang pembawa pesan sebagai perantara pengiriman pesan. Pengirim pesan tersebut akan dicukur rambutnya, untuk kemudian dituliskan suatu pesan pada kepalanya yang sudah botak. Setelah pesan dituliskan, pembawa pesan harus menunggu hingga rambutnya tumbuh kembali sebelum dapat mengirimkan pesan kepada pihak penerima. Pihak penerima kemudian akan mencukur rambut pembawa pesan tersebut untuk melihat pesan yang tersembunyi. 3. Metode lain yang digunakan oleh masyarakat Yunani kuno adalah dengan menggunakan lilin sebagai media penyembunyi pesan mereka. Pesan dituliskan pada suatu lembaran, dan lembaran tersebut akan ditutup dengan lilin untuk menyembunyikan pesan yang telah tertulis. Pihak penerima kemudian akan menghilangkan lilin dari lembaran tersebut untuk melihat pesan yang disampaikan oleh pihak pengirim.
6
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
2.1.3 Kegunaan Steganography Seperti perangkat keamanan lainnya, steganography dapat digunakan untuk berbagai macam alasan, beberapa diantaranya untuk alasan yang baik, namun dapat juga untuk alasan yang tidak baik. Untuk tujuan legitimasi dapat digunakan pengamanan seperti citra dengan watermarking dengan alasan untuk perlindungan copyright. Digital watermark (yang juga dikenal dengan fingerprinting, yang dikhususkan untuk hal-hal menyangkut copyright) sangat mirip dengan steganography karena menggunakan metode penyembunyian dalam arsip, yang muncul sebagai bagian asli dari arsip tersebut dan tidak mudah dideteksi oleh kebanyakan orang. Steganography juga dapat digunakan sebagai cara untuk membuat pengganti suatu nilai hash satu arah (yaitu pengguna mengambil suatu masukan panjang variabel dan membuat sebuah keluaran panjang statis dengan tipe string untuk melakukan verifikasi bahwa tidak ada perubahan yang dibuat pada variabel masukan yang asli). Selain itu juga, steganography dapat digunakan sebagai tag-notes untuk citra online. Terakhir, steganography juga dapat digunakan untuk melakukan perawatan atas kerahasiaan informasi yang berharga, untuk menjaga data tersebut dari kemungkinan sabotasi, pencuri, atau dari pihak yang tidak berwenang. Sayangnya, steganography juga dapat digunakan untuk alasan yang ilegal. Sebagai contoh, jika seseorang telah mencuri data, mereka dapat menyembunyikan arsip curian tersebut ke dalam arsip lain dan mengirimkannya keluar tanpa menimbulkan kecurigaan siapapun karena tampak seperti email atau arsip normal. Selain itu, seseorang dengan hobi menyimpan pornografi, atau lebih parah lagi, menyimpannya dalam hard disk, mereka dapat menyembunyikan hobi buruk mereka tersebut melalui steganography. Begitu pula dengan masalah terorisme, steganography dapat digunakan oleh para teroris untuk menyamarkan komunikasi mereka dari pihak luar. 2.1.4 Tipe Media Steganography Dalam steganography, ada beberapa tipe media yang dapat digunakan untuk menyisipkan pesan rahasia. Tipe - tipe media ini dapat berfungsi sebagai media pembawa pesan rahasia, yang disebut dengan host message. Terdapat beberapa media dalam data digital yang dapat digunakan sebagai media steganography, diantarannya adalah File Sistem Komputer, Transmisi Protokol, Dokumen Text dan File Multimedia. Secara detail 4 tipe media
7
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
steganography tersebut dapat dijelaskan dalam sub bab di bawah ini. 2.1.4.1. File Sistem Komputer Sebagaimana penyimpanan data secara normal, sebuah file sistem komputer juga dapat digunakan untuk menyembunyikan informasi diantara file yang tidak terlihat penting. Sebagai contoh sebuah hard drive ketika menampakkan partisi dalam komputer pemakai dapat berisi partisi tersembunyi yang dapat membawa informasi tersembunyi didalamnya. Sebagai contoh sfspatch adalah sebuah potongan kernel, yang dapat berfungsi untuk memasukkan modul pendukung file steganography dalam sistem Linux. Sfspatch menggunakan enkripsi secara bersamaan dengan tehnik steganography untuk menyembunyikan informasi rahasia di dalam disk sehingga tidak akan terlihat oleh pemakai awam [Westfeld, 1999]. 2.1.4.2. Transmisi Protokol Transmission Control Protocol (TCP) dan Intenet Protocol (IP) adalah sebagian dari protokol yang dapat digunakan untuk menyembunyikan informasi didalam bagian header tertentu. Beberapa bagian dari TCP/IP akan diubah atau dipotong melalui mekanisme paket filter atau melalui fragment-fragment yang dikumpulkan kembali. Bagai manapun, terdapat beberapa bagian yang tidak dapat diubah. Bagian - bagian tersebut meliputi : Identification field, Sequence Number field, dan Acknowledge Sequence Number field. 2.1.4.3. Penyembunyian Informasi dalam Dokumen Text Menurut Bender et al [Bender, 1996] softcopy text merupakan salah satu tempat yang paling menarik untuk melakukan penyembunyian data. Karena kurangnya informasi redundan di dalam data text. Bender et al mendiskusikan tiga cara berbeda untuk melakukan penyembunyian di dalam data text. Metode - metode tersebut adalah : Metode Spasi Terbuka, Syntactic, dan Metode Semantic. 2.1.4.4. Penyembunyian Informasi dalam File Multimedia File multimedia seperti image, audio dan video (gabungan dari audio dan image) juga dapat digunakan sebagai media penyimpanan data rahasia. Pada file multimedia sering kali diaplikasikan steganography dengan menggunakan metode Least Significant Bit karena kemudahan serta kemungkinan file carrier rusak karena telah disisipi data rahasia kecil.
8
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
2.1.5 Metode Steganography Terdapat banyak metode yang digunakan dalam melakukan penyembunyian data ke dalam data lainnya. Berikut adalah penjelasan mengenai beberapa metode yang banyak digunakan dalam steganography. 2.1.5.1. Metode Steganography Pada Teks 2.1.5.1.1. Metode Spasi Terbuka Terdapat beberapa cara untuk memanfaatkan spasi terbuka dalam data text guna menyembunyikan informasi. Metode ini dapat berhasil ka rena buku bacaan pada umumnya menambahkan satu spasi tambahan pada akhir baris atau diantara dua kata sehingga tidak terbaca aneh. Bagaimanapun, metode spasi terbuka hanya dapat digunakan dengan memakai ASCII (American Standard Character Interchange) format. Bender et al memberikan tiga metode untuk mengungkap white space dalam proses penyembunyian. Spasi terbuka antar kalimat akan menghasilkan nilai "0" apabila hanya terdapat sebuah spasi yang ditambahkan diantara kalimat tersebut. Dengan menambahkan dua spasi akan menghasilkan nilai "1". Metode ini dapat berhasil, tetapi membutuhkan data dalam jumlah besar untuk menyembunyikan sebuah informasi kecil. Dan juga terdapat banyak software word-processing yang akan secara otomatis membetulkan spasi antara kalimat, sehingga metode ini seringkali gagal. Metode spasi end-of-line (EOL) mengutarakan white space pada akhir dari masing-masing baris. Data disembunyikan menggunakan jumlah spasi yang telah ditentukan sebelumnya dari akhir untuk masing- masing kalimat. Sebagai contoh dua spasi akan menyembunyikan satu bit, empat spasi akan menyembunyikan dua bit dan delapan spasi akan menghasilkan tiga bit dan seterusnya. Tehnik ini lebih baik dibandingkan metode spasi terbuka antar kalimat, karena dengan meningkatkan jumlah spasi akan dapat menyembunyikan lebih banyak data. Salah satu kekurangan dari tehnik ini adalah dapat hilangnya informasi tersembunyi jika hard copy data yang diberikan Pada akhirnya, pemerataan kanan dari text dapat digunakan pula untuk menyembunyikan informasi rahasia pada data text. Penghitungan dan pengontrolan spasi diantara kata dapat menyembunyikan informasi dalam data text yang terlihat tidak penting. Sebuah spasi antara kata akan menghasilkan nilai "0" dan dua buah spasi akan menghasilkan nilai "1".
9
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
Bagaimanapun, pendekatan ini akan mempersulit untuk mengeluarkan informasi penitng dari media data text tersebut karena akan semakin tidak mungkin untuk membedakan sebuah spasi biasa dengan spasi yang berfungsi untuk penyembunyian data. Untuk mewujudkan hal ini, Bender et al menggunakan Manchester coding untuk mengelompokkan bit-bit. Sehingga "01" diinterpretasikan sebagai "1" dan "10" diinterpretasikan sebagai "0". Dimana "00" dan "11" akan dianggap sebagai null bit string.
2.1.5.1.2.
Metode Syntactic
Metode Syntactic sebagaimana yang telah di sarankan oleh Bender et al, mengutarakan penggunaan punktuasi dan struktur text untuk menyembunyikan informasi tanpa secara signifikan mengubah arti dari pesan pembawa. Sebagai contoh terdapat dua frase "bread, butter, and milk" dan "bread, butter and milk" secara gramatikal benar tetapi berbeda dalam penggunaan koma. Salah satu dapat digunakan secara alternatif dalam pesan text guna mengintepretasikan nilai "1" apabila salah satu metode dipakai dan nilai "0" untuk metode lain yang dipakai.
2.1.5.1.3.
Metode Semantic
Metode Semantic menggunakan dua sinonim sebagai nilai primer atau sekunder. Nilai tersebut akan diterjemahkan kedalam biner "1" atau "0". Bender et al menggunakan sebuah contoh dimana kata "big" berfungsi sebagai primer dan "large" berfungsi sebagai sekunder. Oleh karena itu, dalam menguraikan isi sebuah pesan akan menterjemahkan atas penggunaan primer sebagai "1" dan sekunder sebagai "0". Bender et al menyebutkan masalah yang dapat muncul dengan penggunaan metode ini adalah ketika sinonim tidak dapat digantikan karena dapat mengubah arti dari struktur kalimat. Sebagai contoh dalam memanggil seseorang dalam bahasa Inggris dengan "cool" mempunyai arti berbeda dibandingkan dengan memanggilnya "chilly". 2.1.5.2. Metode Steganography Pada Gambar Sudah banyak metode yang digunakan untuk menyembunyikan pesan di dalam sebuah image tanpa mengubah tampilan image, sehingga pesan yang disembunyikan tidak akan terlihat. Berikut akan dibahas beberapa metode umum yang digunakan pada image steganography.
10
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
2.1.5.2.1. Penyisipan Least Significant Bit Cara paling umum untuk menyembunyikan pesan adalah dengan memanfaatkan Least-Significant Bit (LSB). Walaupun banyak kekurangan pada metode ini, tetapi kemudahan implementasinya membuat metode ini tetap digunakan sampai sekarang. Metode ini membutuhkan syarat, yaitu jika dilakukan kompresi pada stego, harus digunakan format lossless compression, karena metode ini menggunakan bit-bit pada setiap pikses pada image. Jika digunakan format lossy compression, pesan rahasia yang disembunyikan dapat hilang. Jika digunakan image 24 bit color sebagai cover, sebuah bit dari masing-masing komponen Red, Green, dan Blue, dapat digunakan sehingga 3 bit dapat disimpan pada setiap piksel. Sebuah image 800 x 600 piksel dapat digunakan untuk menyembunyikan 1.440.000 bit (180.000 bytes) data rahasia. Misalnya, di bawah ini terdapat 3 piksel dari image 24 bit color : (00100111 11101001 11001000) (00100111 11001000 11101001) (11001000 00100111 11101001) jika diinginkan untuk menyembunyikan karakter A (10000001) dihasilkan : (00100111 11101000 11001000) (00100110 11001000 11101000) (11001000 00100110 11101001) dapat dilihat bahwa hanya 3 bit saja yang perlu diubah untuk menyembunyikan karakter A ini. Perubahan pada LSB ini akan terlalu kecil untuk terdeteksi oleh mata manusia sehingga pesan dapat disembunyikan secara efektif. Jika digunakan image 8 bit color sebagai cover, hanya 1 bit saja dari setiap piksel warna yang dapat dimodifikasi sehingga pemilihan image harus dilakukan dengan sangat hati-hati, karena perubahan LSB dapat menyebabkan terjadinya perubahan warna yang ditampilkan pada citra. Akan lebih baik jika image berupa image grayscale karena perubahan warnanya akan lebih sulit dideteksi oleh mata manusia. Proses ekstraksi pesan dapat dengan mudah dilakukan dengan mengekstrak LSB dari masing-masing piksel pada stego secara berurutan dan menuliskannya ke output file yang akan berisi pesan tersebut. Kekurangan dari metode modifikasi LSB ini adalah
11
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
bahwa metode ini membutuhkan "tempat penyimpanan" yang relatif besar. Kekurangan lain adalah bahwa stego yang dihasilkan tidak dapat dikompress dengan format lossy compression. 2.1.5.2.2. Masking dan Filtering Teknik masking dan filtering ini biasanya dibatasi pada image 24 bit color atau image grayscale. Metode ini mirip dengan watermark, dimana suatu image diberi tanda (marking) untuk menyembunyikan pesan rahasia. Hal ini dapat dilakukan, misalnya dengan memodifikasi luminance beberapa bagian dari image. Walaupun metode ini akan mengubah tampilan dari image, dimungkinkan untuk melakukannya dengan cara tertentu sehingga mata manusia tidak melihat perbedaannya. Karena metode ini menggunakan aspek image yang memang terlihat langsung, metode ini akan lebih "robust" terhadap kompresi (terutama lossy compression), cropping, dan beberapa image processing lain, bila dibandingkan dengan metode modifikasi LSB. 2.1.5.2.3. Transformation
Metode yang lebih kompleks untuk menyembunyikan pesan pada image ini dilakukan dengan memanfaatkan Discrete Cosine Transformation (DCT) dan Wavelet Compression. DCT digunakan, terutama pada kompresi JPEG, untuk metransformasikan blok 8x8 piksel yang berurutan dari image menjadi 64 koefisien DCT. Setiap koefisien DCT F(u,v) dari blok 8x8 piksel image f(x,y) dihitung sebagai berikut :
Persamaan 2. 1 Persamaan koefisien DCT
dimana C(x) = 1 2 saat x sama dengan 0 dengan C(x)=1 saat x sama dengan 1. Setelah koefisien-koefisien diperoleh, dilakukan proses kuantisasi sebagai berikut :
Persamaan 2. 2 Persamaan Kuantisasi
dengan Q(u,v) adalah 64-elemen dari tabel kuantisasi. Walaupun image yang dikompresi dengan lossy compression akan menimbulkan kecurigaan karena perubahan LSB akan terlihat jelas, pada metode ini hal ini tidak akan terjadi karena metode ini terjadi
12
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
di domain frekuensi di dalam image, bukan pada domain spasial, sehingga tidak akan ada perubahan yang ter lihat pada cover image. Wavelet Compression adalah salah satu cara kompresi data yang cocok digunakan untuk kompresi image, audio, dan video. Tujuannya adalah untuk menyimpan data dalam "ruang" yang sekecil mungkin dalam sebuah file, karenanya hilangnya informasi tertentu memang sudah diharapkan akan terjadi, kompresi ini merupakan contoh lossy compression. Sama seperti DCT, wavelet compression juga berbasis pada domain frekuensi. Keuntungannya, wavelet compression lebih baik dalam merepresentasikan daerah transien, contohnya image bintang pada langit malam. Artinya, elemen dari data yang transien akan direpresentasikan dalam jumlah informasi yang lebih kecil daripada yang terjadi pada transformasi lain, seperti pada DCT. Kerugiannya, wavelet compression kurang baik digunakan pada data yang bersifat periodik dan smooth. Metode yang dilakukan pada wavelet compression akan dijelaskan sebagai berikut. Pertama-tama, dilakukan wavelet transform yang akan menghasilkan koefisien sesuai dengan jumlah piksel pada image sebagai berikut :
Persamaan 2. 3 Persamaan Wavelet Transform
Koefisien wavelet cjk diperoleh dengan : Persamaan 2. 4 Persamaan Koefisien Wavelet
dimana a = 2−j disebut binary dilation atau dyadic dilation, dan b = k2−j disebut binary position atau dyadic position. Setelah koefien wavelet diperoleh, koefisien ini dapat dikompresi dengan mudah karena informasi terkonsentrasi secara statistik pada beberapa koefisien tertentu saja. Prinsip ini disebut dengan transform coding. Setelah itu, koefisien-koefisien tadi dikuantisasi, baru kemudian diencode dengan entropy encoding dan/atau run length encoding. Proses ekstraksi pesan dengan menggunakan metode transformasi ini dilakukan dengan melakukan transformasi pada stego untuk memperoleh koefisien transformasi image. Pilih koefisien yang nilainya lebih kecil dari nilai treshold. Ekstrak bit data yang sesuai dengan koefisien ini dan tulis ke output file yang akan berisi pesan tersebut.
13
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
2.1.5.3. Metode Steganography Pada Suara Cara untuk mengaplikasikan steganography pada file audio terdiri dari beberapa cara yang lazim digunakan dan prinsip kerja atau algoritma yang digunakan sama seperti pada metode steganography pada gambar. Berikut adalah beberapa teknik yang digunakan : 2.1.5.3.1. Low Bit coding Cara ini lazim digunakan dalam teknik digital steganography yaitu mengganti LSB input setiap samplingnya dengan data yang dikodekan. Dengan metode ini keuntungan yang didapatkan adalah ukuran pesan yang disispkan relative besar, namun berdampak pada hasil audio yang berkualitas kurang dengan banyaknya noise. 2.1.5.3.2. Phase coding Metode kedua yang digunakan ini adalah merekayasa fasa dari sinyal masukan. Teori yang digunakan adalah dengan mensubstitusi awal fasa dari tiap awal segment dengan fasa yang telah dibuat sedemikian rupa dan merepresentasikan pesan yang disembunyikan. Fasa dari tiap awal segment ini dibuat sedemikian rupa sehingga setiap segmen masih memiliki hubungan yang berujung pada kualitas suara yang tetap terjaga. Teknik ini menghasilkan keluaran yang jauh lebih baik daripada metode pertama namun dikompensasikan dengan kerumitan dalam realisasinya. 2.1.5.3.3. Spread Spectrum Metode yang ketiga adalah penyebaran spektrum. Dengan metode ini pesan dikodekan dan disebar ke setiap spectrum frekuensi yang memungkinkan. Maka dari itu akan sangat sulit bagi yang akan mencoba memecahkannya kecuali ia memiliki akses terhadap data tersebut atau dapat merekonstruksi sinyal random yang digunakan untuk menyebarkan pesan pada range frekuensi. 2.1.5.3.4. Echo Hiding Metode terakhir yang sering digunakan adalah menyembunyikan pesan melalui teknik echo. Teknik menyamarkan pesan ke dalam sinyal yang membentuk echo. Kemudian pesan disembunyikan dengan menvariasikan tiga parameter dalam echo yaitu besar amplitude awal, tingkat penurunan atenuasi, dan offset. Dengan adanya offset dari echo dan sinyal asli maka echo akan tercampur dengan sinyal aslinya, karena sistem pendengaran manusia yang tidak memisahkan antara echo dan sinyal asli.
14
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
Keempat metode di atas memiliki kesamaan yaitu menggunakan kelemahan dari sistem pendengaran manusia. Maka dari itu teknik steganography dalam MP3 juga akan menggunakan kelemahan ini untuk menyembunyikan pesan. 2.2. Java Java adalah suatu teknologi di dunia software komputer, yang merupakan suatu bahasa pemrograman, dan sekaligus suatu platform. Sebagai bahasa pemrograman, Java dikenal sebagai bahasa pemrograman tingkat tinggi. Java mudah dipelajari, terutama bagi programmer yang telah mengenal C/C++. Java merupakan bahasa pemrograman berorientasi objek yang merupakan paradigma pemrograman masa depan. Sebagai bahasa pemrograman, Java dirancang menjadi handal dan aman. Java juga dirancang agar dapat dijalankan di semua platform. Dan juga dirancang untuk menghasilkan aplikasi– aplikasi dengan performansi yang terbaik, seperti aplikasi database Oracle 8i/9i yang core-nya dibangun menggunakan bahasa pemrograman Java. Sedangkan Java bersifat neutral architecture, karena Java Compiler yang digunakan untuk mengkompilasi kode program Java dirancang untuk menghasilkan kode yang netral terhadap semua arsitekture perangkat keras yang disebut sebagai Java Bytecode. Sebagai sebuah platform, Java terdiri atas dua bagian utama, yaitu: • Java Virtual Machine (JVM). • Java Application Programming Interface (Java API). •
• •
Sun membagi arsitektur Java membagi tiga bagian, yaitu: Enterprise Java (J2EE) untuk aplikasi berbasis web, aplikasi sistem tersebar dengan beraneka ragam klien dengan kompleksitas yang tinggi. Merupakan superset dari Standar Java. Standar Java (J2SE), ini adalah yang biasa dikenal sebagai bahasa Java. Micro Java (J2ME) merupakan subset dari J2SE dan salah satu aplikasinya yang banyak dipakai adalah untuk wireless device/ mobile device.
15
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
2.2.1. Sejarah Java Java diciptakan oleh suatu tim yang dipimpin oleh Patrick Naughton dan James Gosling dalam suatu proyek dari Sun Microsystem yang memiliki kode Green dengan tujuan untuk menghasilkan bahasa komputer sederhana yang dapat dijalankan di peralatan sederhana dengan tidak terikat pada arsitekture tertentu. Mulanya disebut OAK, tetapi karena OAK sendiri merupakan nama dari bahasa pemrograman komputer yang sudah ada. Maka Sun mengubahnya menjadi Java. Sun kemudian meluncurkan browser dari Java yang disebut Hot Java yang mampu menjalankan applet. Setelah itu teknologi Java diadopsi oleh Netscape yang memungkinkan program Java dijalankan di browser Netscape yang kemudian diikuti Internet Explorer. Karena keunikanya dan kelebihanya, teknologi Java mulai menarik banyak vendor seperti IBM,Symantec, Inprise, dll. Sun merilis versi awal Java secara resmi pada awal tahun 1996 yang kemudian terus berkembang hingga muncul JDK 1.1, kemudian JDK 1.2 yang mulai disebut sebagai versi Java2 karena banyak mengandung peningkatan dan perbaikan. Perubahan utama adalah adanyaSwing yang merupakan teknologi GUI (Graphical User Interface) yang mampu menghasilkan window yang portabel. Dan pada tahun 1998 – 1999 lahirlah teknologi J2EE ( Java 2 Enterprise Edition ) yang berbasis J2SE yang diawali dengan servlet dan EJB kemudian diikuti JSP. Java juga menjadi lebih cepat populer di lingkungan server side dikarenakan kelebihanya di lingkungan network dan terdistribusi serta kemampuan multithreading. Sedangkan J2ME (Java 2 Micro Edition) dapat menghasilkan aplikasi mobile baik games maupun software yang dapat dijalankan di peralatan mobile seperti ponsel. 2.2.2. Kelebihan Java Beberapa kelebihan bahasa pemrograman Java dibandingkan dengan bahasa pemrograman lain : a. Multiplatform Kelebihan utama dari Java ialah dapat dijalankan di beberapa platform / sistem operasi komputer, sesuai dengan prinsip tulis sekali, jalankan di mana saja. Dengan kelebihan ini pemrogram cukup menulis sebuah program Java dan dikompilasi (diubah, dari bahasa yang dimengerti manusia menjadi bahasa mesin /
16
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
b.
c.
d.
bytecode) sekali lalu hasilnya dapat dijalankan di atas beberapa platform tanpa perubahan. Kelebihan ini memungkinkan sebuah program berbasis java dikerjakan diatas operating system Linux tetapi dijalankan dengan baik di atas Microsoft Windows. Platform yang didukung sampai saat ini adalah Microsoft Windows, Linux, Mac OS dan Sun Solaris. Penyebanya adalah setiap sistem operasi menggunakan programnya sendiri-sendiri (yang dapat diunduh dari situs Java) untuk meninterpretasikan bytecode tersebut. OOP (Object Oriented Programming - Pemrograman Berorientasi Objek) OOP artinya semua aspek yang terdapat di Java adalah Objek. Java merupakan salah satu bahasa pemrograman berbasis objek secara murni. Semua tipe data diturunkan dari kelas dasar yang disebut Object. Hal ini sangat memudahkan pemrogram untuk mendesain, membuat, mengembangkan dan mengalokasi kesalahan sebuah program dengan basis Java secara cepat, tepat, mudah dan terorganisir. Kelebihan ini menjadikan Java sebagai salah satu bahasa pemograman termudah, bahkan untuk fungsi fungsi yang advance seperti komunikasi antara komputer sekalipun. Perpustakaan Kelas Yang Lengkap Java terkenal dengan kelengkapan library/perpustakaan (kumpulan program program yang disertakan dalam pemrograman java) yang sangat memudahkan dalam penggunaan oleh para pemrogram untuk membangun aplikasinya. Kelengkapan perpustakaan ini ditambah dengan keberadaan komunitas Java yang besar yang terus menerus membuat perpustakaan-perpustakaan baru untuk melingkupi seluruh kebutuhan pembangunan aplikasi. Bergaya C++ Java memiliki sintaks seperti bahasa pemrograman [C++] sehingga menarik banyak pemrogram C++ untuk pindah ke Java. Saat ini pengguna Java sangat banyak, sebagian besar adalah pemrogram C++ yang pindah ke Java. Universitasuniversitas di Amerika juga mulai berpindah dengan mengajarkan Java kepada murid-murid yang baru karena lebih mudah dipahami oleh murid dan dapat berguna juga bagi mereka yang bukan mengambil jurusan komputer.
17
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
e.
Pengumpulan sampah otomatis Java memiliki fasilitas pengaturan penggunaan memori sehingga para pemrogram tidak perlu melakukan pengaturan memori secara langsung (seperti halnya dalam bahasa C++ yang dipakai secara luas).
2.2.3.
NetBeans IDE (Integrated Development Environment) NetBeans IDE adalah sebuah open-source terintegrasi dimana lingkungan pengembangannya ditulis di Java menggunakan Platform NetBeans. NetBeans IDE mendukung pengembangan semua tipe aplikasi Java (Java SE, web, EJB, dan aplikasi mobile). Diantara fitur-fitur lainnya adalah Projek Sistem Berbasis Ant, version control (mensuport CVS, Subversion, Mercurial dan Clearcase) dan refactoring. Semua fungsi dari IDE disediakan oleh modul-modul. Setiap modul menyediakan fungsi yang didefinisikan dengan baik, seperti dukungan untuk bahasa Java, editing, atau dukungan untuk sistem versi CVS dan SVN. NetBeans berisi semua modul yang diperlukan untuk pengembangan Java, mengijinkan pengguna untuk memulai bekerja dengan segera. Modul-modul ini juga mengijinkan NetBeans untuk dikembangkan. Fitur-fitur baru, seperti dukungan untuk bahasa pemrograman lainnya, dapat ditambahkan dengan menginstal modul tambahan. Sebagai contoh, Sun Java Studio Enterprise dan Sun Java Studio Creator dari Sun Microsystem semuanya berbasis pada NetBeans IDE.
Gambar 2. 1 Tampilan Utama NetBeans IDE 6.7
18
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
2.3. Format File Image 2.3.1. Format File Bitmap (BMP) a. Merupakan format citra yang baku dilingkungan sistem Microsoft Windows dan IBM OS/2. Macam citra dalam BMP : citra biner, citra berwarna, citra grayscale. b. Kualitas BMP lebih baik dan dengan ukuran yang lebih baik dari format JPG/ JPEG dan GIF. c. Format File Bitmap versi baru dari Microsoft Windows, setiap berkas/file terdiri dari : header file, header bitmap, informasi palet, dan data bitmap.
Gambar 2. 2 Struktur Header File BMP
d.
Data bitmap diletakkan setelah informasi palet. Penyimpanan data bitmap di dalam file berkas disusun terbalik dari bawah ke atas dalam bentuk matriks yang berukuran Height x Width.
2.3.2. Joint Photographic Experts Group (JPEG) Formats a. Dikembangkan oleh para ahli pencitraan fotografi untuk mendapatkan citra yang berukuran rasional tapi tetap menyimpan persepsi citra yang baik. b. Bersifat lossy dengan tingkat lossness yang dapat diatur. c. Bagus untuk mengkompresi foto-foto natural tetapi kurang cocok untuk computer-generated images (CGI) d. Banyak digunakan oleh kamera digital saku e. Filenya disebut JFIF f. Struktur File JPEG : i. Dalam sebuah file JPEG dapat tersimpan berbagai informasi yang masing-masing diawali oleh sebuah “marker“ untuk penanda, masing-masing berukuran 2 bytes. ii. Byte pertama selalu bernilai FF16 sedangkan bit kedua bisa berupa : 1. APPn: untuk menghandle application specific data, misalnya informasi tambahan yang ada dalam JPEG
19
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
2.
COM (Comment): untuk memberikan komentar plain text string seperti copyright. 3. DHT (Define Huffman Table): menyimpan tabel kodekode Algoritma Huffman 4. DRI (Define Resart Interval): sebagai tanda resart interval 5. DQT (Define Quantization Table): mendefinisikan tabel kuantisasi yang digunakan dalam proses kompresi 6. EOI (End of Image): tanda akhir file JPEG 7. RSTn: restart marker 8. SOI (Start of Image): tanda awal image 9. SOFn: start of frame 10. SOS: start of scan
Gambar 2. 3 Struktur Header File JPG
2.3.3. Graphics Interchange Format (GIF) a. Dibuat oleh Compuserve pada tahun 1987 untuk menyimpan citra bitmap menjadi sebuah file yang mudah ditransmisikan pada jaringan komputer. b. Merupakan format citra web yang tertua yang mendukung kedalaman warna sampai 8 bit (256 warna), menggunakan 4 langkah interlacing, mendukung transparency, dan mampu menyimpan banyak citra dalam 1 file. c. Struktur File GIF :
20
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
i. Header : menyimpan informasi identitas file GIF (3 bytes, harus string “GIF“) dan versinya (3 bytes, harus string “87a“ atau “89b“) ii. Global Screen Descriptor : mendefinisikan logical screen area di mana masing-masing citra dalam GIF ditampilkan. iii. Global Color Table. Masing-masing citra dalam GIF dapat menggunakan global color table atau tabel warnanya sendiri. Penggunaan GCT akan memperkecil ukuran file GIF. iv. Image1, Image2, Image3, ... Image-n: informasi citra ke 1 s/d n disertai terminator/pemisah antar citra v. Trailer: Penanda akhir sebuah file GIF Header
GSD
GCT
Image-1
Image-2
…
Image-n
Trailer
Gambar 2. 4 Struktur Header File GIF
2.3.4. Portable Graphics Network (PNG) a. PNG (Portable Network Graphics) digunakan di Internet dan merupakan format “pengganti” GIF, setelah GIF terkena patent LZW yang dilakukan oleh Unisys. b. Diprakarsai oleh Thomas Boutell dari PNG Development Group, dan versi finalnya direlease pada 1 Oktober 1996 c. Memiliki kedalaman warna sampai 48-bit d. Struktur File PNG : i. PNG Signature: tanda file PNG ii. IHDR chunk: menyimpan dimension, depth, dan color type iii. PLTE chunk: palet warna untuk PNG yang menggunakan color palette type iv. IDAT chunk 1, IDAT chunk 2, IDAT chunk 3, ... IDAT chunk-n: data citra (image data) v. IEND chunk: end of PNG image 2.4. Zip Compression Algoritma pemampatan data dengan format data ZIP termasuk dalam algoritma kompresi atau pemampatan yang bersifat lossless. Berbeda dengan algoritma pemampatan yang bersifat lossy yang menghilangkan sebagian informasi dari berkas yang di mampatkan untuk mendapatkan hasil yang optimum, algoritma kompresi yang bersifat lossless seperti ZIP tidak membuang sedikitpun informasi yang dimiliki oleh berkas asal. Algoritma kompresi yang bersifat
21
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
lossy umumnya digunakan untuk memampatkan berkas–berkas gambar, video ataupun suara, hal ini menimbang perubahan (penghilangan) sedikit pada berkas asal tidak akan menimbulkan efek yang mampu ditangkap oleh indra manusia. Sedangkan algoritma kompresi yang bersifat lossless umumnya digunakan untuk berkas teks atau binary (executable). Hal ini mengingat perubahan yang kecil pada berkas yang dikompresi akan memberi pengaruh besar pada berkas hasil kompresi saat di dekompresi ulang. Misalnya pada suatu berkas program computer (source code), perubahan yang terjadi walaupun sedikit akan berakibat pada kesalahan kode program tersebut saat di kompilasi setelah di dekompresi. Berkas termampatkan dengan format zip dibuat dengan menggunakan algoritma kompresi deflate. Sebagaimana format gzip berkas terkompresi dengan format zip dibuat dengan algoritma deflate yang pertama kali didisain oleh Philip Katz (1962-2000), algoritma deflate sendiri merupakan algoritma yang berbasiskan algoritma LZ77 dan kode Huffman (Huffman Codes). Spesifikasi format kompresi zip distandardisasi melalui RFC1952 yang ditulis oleh Peter Deutsch. Meskipun algoritma deflate tidak dirancang untuk suatu tipe berkas secara spesifik, akan tetapi metode – metode pemampatan data yang dirancang khusus untuk tipe berkas tertentu, yang umumnya memiliki kerumitan yang lebih tinggi, umumnya memiliki performansi (dalam segi ukuran berkas hasil kompresi) yang lebih tinggi. Pada umumnya algoritma deflate (termasuk zip) memiliki nilai faktor kompresi (compression factor) antara 2.5 sampai 3 untuk pemampatan berkas tipe teks dan memiliki nilai yang lebih kecil jika yang berkas dimampatkan adalah tipe binary (executable). Factor kompresi (compression factor) merupakan invers dari nilai rasio kompresi (compression ratio) yang menunjukkan persentase ukuran berkas hasil pemampatan dibandingkan ukuran berkas sebelum dimampatkan.
Persamaan 2. 5 Persamaan Rasio Kompresi
22
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
Persamaan 2. 6 Persamaan Faktor Kompresi
Dari persamaan tersebut terlihat, bahwa rasio kompresi akan selalu bernilai kurang dari 1, jadi jika suatu algoritma kompresi memiliki nilai rasio kompresi 0,5 maka algoritma ini mampu memampatkan berkas hingga menjadi separuh (50%) dari ukuran semula. Jadi semakin kecil nilai rasio kompresi dari suatu algoritma kompresi maka semakin bagus algoritma tersebut. Berkebalikan dengan nilai rasio kompresi adalah nilai faktor kompresi. Sehingga semakin besar nilai faktor kompresi dari suatu algoritma pemampatan data, maka algoritma tersebut berarti semakin baik. Pada umumnya nilai faktor kompresi lebih sering digunakan sebagai standard ukuran mengingat secara alamiah nilainya menunjukkan tingkat keandalan dari suatu algoritma (semakin besar nilai = semakin bagus kualitas). 2.4. DES Encryption DES (Data Encryption Standard) adalah algoritma cipher blok yang populer karena dijadikan standard algoritma enkripsi kuncisimetri, meskipun saat ini standard tersebut telah digantikan dengan algoritma yang baru, AES, karena DES sudah dianggap tidak aman lagi. Sebenarnya DES adalah nama standard enkripsi simetri, nama algoritma enkripsinya sendiri adalah DEA (Data Encryption Algorithm), namun nama DES lebih populer daripada DEA. Algoritma DES dikembangkan di IBM dibawah kepemimpinan W.L. Tuchman pada tahun 1972. Algoritma ini didasarkan pada algoritma Lucifer yang dibuat oleh Horst Feistel. Algoritma ini telah disetujui oleh National Bureau of Standard (NBS) setelah penilaian kekuatannya oleh National Security Agency (NSA) Amerika Serikat. DES termasuk ke dalam sistem kriptografi simetri dan tergolong jenis cipher blok. DES beroperasi pada ukuran blok 64 bit. DES mengenkripsikan 64 bit plainteks menjadi 64 bit cipherteks dengan menggunakan 56 bit kunci internal (internal key) atau upa-kunci
23
Data Hiding Steganograph Pada File Image Menggunakan Metode Least Significant Bit
(subkey). Kunci internal dibangkitkan dari kunci eksternal (external key) yang panjangnya 64 bit. Cara kerja Algortima DES 1. Blok plainteks dipermutasi dengan matriks permutasi awal (initial permutation atau IP). 2. Hasil permutasi awal kemudian di-enchipering sebanyak 16 kali (16 putaran). Setiap putaran menggunakan kunci internal yang berbeda. 3. Hasil enciphering kemudian dipermutasi dengan matriks permutasi balikan (invers initial permutation atau IP-1) menjadi blok cipherteks.
Gambar 2. 5 Diagram Enkripsi DES
24