BAB 2 LANDASAN TEORI
2.1
Algoritma Algoritma adalah logika, metode dan tahapan (urutan) sistematis yang digunakan
untuk memecahkan suatu permasalahan (Wahono et al, 2003). Penemu algoritma adalah seorang ahli matematika dari uzbekistan yang bernama Abu Abdullah Muhammad Ibn Musa al-Khwarizmi (770-840) (Wahono et al, 2003). Di literatur barat dia lebih terkenal dengan sebutan Algorizm (Wahono et al, 2003). Panggilan inilah yang kemudian dipakai untuk menyebut konsep algorithm yang ditemukannya. Dalam bahasa Indonesia kemudian disebutkan dengan algoritma. Suatu algoritma yang baik harus memenuhi beberapa syarat (Wahono et al, 2003), yaitu: Susunan langkah yang dilaksanakan harus jelas. Harus memiliki suatu titik awal dan minimal satu titik akhir. Harus berhenti setelah beberapa langkah yang terhingga. Setiap pernyataan harus jelas.
2.2
Steganografi Selama beratus-ratus tahun, sejarah membuktikan bahwa menjaga kerahasiaan
sebuah informasi sangatlah penting. Berbagai cara dan metode guna menjaga kerahasiaan telah ditempuh. Efeknya pun luar biasa. Salah satu contohnya adalah metode kuno yang bernama steganografi. Steganografi adalah teknik penyembunyian data rahasia ke dalam sebuah wadah (media) 6
7 sehingga data yang disembunyikan sulit dikenali oleh indera manusia (Mdesian, 2005). Pengamanan dengan menggunakan steganografi membuat seolah-olah pesan rahasia tidak ada atau tidak nampak, padahal pesan tersebut ada. Hanya saja kita tidak sadar bahwa ada pesan tersebut di sana. Kata steganografi (steganography) berasal dari bahasa Yunani (Budi, 2002). Steganos artinya 'tersembunyi/terselubung', dan graphein, 'menulis' sehingga kurang lebih artinya "menulis (tulisan) terselubung" (Budi, 2002). Teknik ini meliputi banyak sekali metoda komunikasi untuk menyembunyikan pesan rahasia (Budi, 2002). Metoda ini termasuk tinta yang tidak tampak, microdots, pengaturan kata, tanda tangan digital, jalur tersembunyi dan komunikasi spektrum lebar (Budi, 2002). Steganografi membutuhkan dua properti, yaitu wadah penampung dan data rahasia yang akan disembunyikan (Mdesian, 2005). Steganografi digital menggunakan media digital sebagai wadah penampung, misalnya citra, suara, teks, dan video. Data rahasia yang disembunyikan juga dapat berupa citra, suara, teks, atau video. Penggunaan steganografi antara lain bertujuan untuk menyamarkan eksistensi (keberadaan) data rahasia sehingga sulit dideteksi, dan melindungi hak cipta suatu produk. Steganografi dapat dikatakan mempunyai hubungan yang erat dengan kriptografi. Akan tetapi metoda ini sangat berbeda dengan kriptografi. Kriptografi mengacak pesan sehingga tidak dimengerti, sedangkan steganografi menyembunyikan pesan sehingga tidak terlihat (Budi, 2002). Pesan dalam cipherteks mungkin akan menimbulkan kecurigaan sedangkan pesan yang dibuat dengan steganografi tidak akan. Kedua teknik ini dapat digabungkan untuk mendapatkan metoda pengiriman rahasia yang sulit dilacak. Pertama pesan dienkrip, kemudian cipherteks disembunyikan dengan cara steganografi pada media yang tampak tidak mencurigakan (Budi, 2002). Cara ini
8 sangat berguna jika digunakan pada cara steganografi komputer karena banyak format file digital yang dapat dijadikan media untuk menyembunyikan pesan. Format yang biasa digunakan diantaranya: •
Format image: bitmap (bmp), gif, pcx, jpeg, dll.
•
Format audio: wav, voc, mp3, dll.
•
Format lain: teks file, html, pdf, dll.
Gambar 2.1. Komunikasi Steganografi Modern (Provos, 2003)
2.2.1
Sejarah Steganografi Teknik steganografi sudah digunakan sejak ribuan tahun yang lalu. Saat
itu, ada seorang Yunani bernama Demaratus yang sedang berada Persia. Dia menjadi saksi bahwa Raja Persia Xerxes tengah membangun armada perang yang sangat besar. Armada perang tersebut akan digunakan Xerxes menginvasi
9 Yunani dan Spartans. Selain akan datang dengan armada yang lengkap dan besar, Xerxes akan menyerang secara cepat dan tiba-tiba. Demaratus sebagai orang Yunani merasa terpanggil untuk membela bangsanya. Namun tentu saja bukan hal yang mudah melarikan diri dari wilayah Persia dan melaporkan hal ini ke Yunani dan Spartan. Resiko hukuman mati pasti didapat seandainya dia tertangkap (Adi, 2004). Demaratus lalu mengambil kulit kayu yang mengandung lilin. Dibersihkannya kayu itu dari lilin dan ditulisnya pesan di bawah kulit kayu itu. Setelah itu, kayu itu kembali diberi lilin sehingga pesannya menjadi tidak terbaca. Dikirimkanlah kulit kayu itu ke Yunani dan ketika melewati prajuritprajurit penjaga Persia, pesan itu tetap aman karena tidak terbaca dan disangka hanya sebagai kulit kayu biasa. Akhirnya Yunani menerima pesan Demaratus dan segera mempersiapkan bala tentaranya untuk mengantisipasi invasi Persia. Dan datanglah waktu yang ditunggu-tunggu. Waktu itu Persia sangat terkejut karena ternyata Yunani sudah mengantisipasinya. Peperangan tersebut mengakibatkan kekalahan di pihak Persia (Adi, 2004). Dalam perkembangannya teknik steganografi tidak hanya melalui kulit kayu yang mengandung lilin tapi juga berkembang melalui tinta khusus yang hanya dapat dibaca dengan penambahan cairan khusus (Adi, 2004). Ada juga dengan trik berupa pesan biasa namun kata-kata tertentunya diberi tanda khusus, sehingga penerima pesan tidak membaca pesan secara keseluruhan tapi hanya pesan yang diberi tanda saja (Adi, 2004). Namun begitu, teknik steganografi ini tidak efisien. Dalam beberapa kasus teknik ini mudah dipatahkan bagi orangorang yang sudah berpengalaman (Adi, 2004).
10 Selain itu ada beberapa kasus yang melibatkan penggunaan teknik steganografi, diantaranya adalah: •
Di jaman Histalaeus, pesan disembunyikan dengan cara membuat tato di kepala budak yang telah digunduli. Kemudian ditunggu sampai rambut budak tersebut mulai tumbuh baru sang budak dikirim melalui penjagaan musuh. Ketika diperiksa di pintu gerbang memang sang budak tidak membawa pesan apa-apa. Sesampainya di tujuan baru sang budak dicukur oleh sang penerima pesan untuk dapat dibaca pesannya (Budi, 2005).
•
Bangsa Romawi mengenal steganografi dengan menggunakan tinta taktampak (invisible ink) untuk menuliskan pesan. Tinta tersebut dibuat dari campuran sari buah, susu, dan cuka. Jika tinta digunakan untuk menulis maka tulisannya tidak tampak. Tulisan di atas kertas dapat dibaca dengan cara memanaskan kertas tersebut (Budi, 2005).
•
Pesan rahasia dapat juga dikirimkan dengan mengirim surat pembaca ke sebuah surat kabar. Huruf awal setiap kalimat (atau bisa juga setiap kata) membentuk pesan yang ingin diberikan. Cara lain adalah dengan membuat puisi dimana huruf awal dari setiap baris membentuk kata-kata pesan sesungguhnya (Budi, 2005).
•
Hal yang sama dapat dilakukan dengan membuat urutan gambar buah dimana pesan tersebut merupakan gabungan dari huruf awal dari nama buah tersebut (Budi, 2005).
11 •
Pengarang Dan Brown dalam buku novelnya yang berjudul “The Da Vinci Code” memberikan pesan di sampul bukunya dengan membuat beberapa huruf dalam cetakan tebal (bold). Jika disatukan, huruf-huruf yang ditulis dalam cetakan tebal tersebut membuat berita yang dimaksud (Budi, 2005).
•
Dalam peristiwa penyerangan gedung WTC tanggal 11 September 2001 disebutkan oleh "pejabat pemerintah dan para ahli dari pemerintahan AS" yang tidak disebut namanya bahwa "para teroris menyembunyikan petapeta dan foto-foto target dan juga perintah untuk aktivitas teroris di ruang chat sport, bulletin boards porno dan web site lainnya". Isu lainnya menyebutkan bahwa teroris menyembunyikan pesan-pesannya dalam gambar-gambar porno di web site tertentu. Walaupun demikian sebenarnya belum ada bukti nyata dari pernyataan-pernyataan tersebut diatas (Budi, 2002). Di dunia digital, steganografi muncul dalam bentuk digital watermark,
yaitu tanda digital yang disisipkan dalam gambar (digital image) atau suara. Hak cipta (copyright) dari gambar dapat disisipkan dengan menggunakan high-bit dari pixel yang membentuk gambar tersebut (Budi, 2005). Gambar terlihat tidak berbeda - karena kemampuan, atau lebih tepatnya ketidakmampuan mata manusia yang tidak dapat membedakan satu bit saja, akan tetapi sebenarnya mengandung pesan-pesan tertentu.
12
Gambar 2.2. Syndrome tanpa data sisipan
Gambar 2.3. Syndrome yang disisipkan Chapter 2 dari ”Harry Potter and The Sorcerer’s Stone”
2.2.2
Kriteria Steganografi yang Baik Steganografi yang dibahas di sini adalah penyembunyian data di dalam
citra digital. Meskipun demikian, penyembunyian data dapat juga dilakukan pada wadah berupa suara digital, teks, ataupun video.
13 Penyembunyian data rahasia ke dalam citra digital akan mengubah kualitas citra tersebut. Kriteria yang harus diperhatikan dalam penyembunyian data adalah: 1.
Mutu citra penampung tidak jauh berubah (Mdesian, 2005). Setelah penambahan data rahasia, citra hasil steganografi masih terlihat dengan baik. Pengamat tidak mengetahui kalau di dalam citra tersebut terdapat data rahasia.
2.
Data yang disembunyikan harus tahan terhadap manipulasi yang dilakukan pada citra penampung (Mdesian, 2005). Bila pada citra dilakukan operasi pengolahan citra, maka data yang disembunyikan tidak rusak.
3.
Data yang disembunyikan harus dapat diungkapkan kembali (recovery) (Mdesian, 2005).
2.2.3
Teknik Penyembunyian Data Penyembunyian data dilakukan dengan mengganti bit-bit data di dalam
segmen citra dengan bit-bit data rahasia (Mdesian, 2005). Salah satu metode penyembunyian data yang sederhana adalah LSB Modification. Contoh:
11010010 LSB = Least Significant Bit MSB = Most Siginificant Bit MSB LSB
14 Bit yang cocok untuk diganti adalah bit LSB, sebab perubahan tersebut hanya mengubah nilai byte satu lebih tinggi atau satu lebih rendah dari nilai sebelumnya. Misalkan byte tersebut menyatakan warna keabuan tertentu, maka perubahan satu bit LSB tidak mengubah warna keabuan tersebut secara berarti. Selain itu, mata manusia tidak dapat membedakan perubahan yang kecil. Untuk memperkuat teknik penyembunyian data, bit-bit data rahasia tidak digunakan mengganti byte-byte yang berurutan, namun dipilih susunan byte secara acak. Misalnya jika terdapat 50 byte dan 6 bit data yang akan disembunyikan, maka maka byte yang diganti bit LSB-nya dipilih secara acak, misalkan byte nomor 36, 5, 21, 10, 18, 49. Bilangan acak dibangkitkan dengan pseudo-random-number-generator (PRNG) kriptografi (Mdesian, 2005). PRNG kriptografi sebenarnya adalah algoritma kriptografi yang digunakan untuk enkripsi. PRNG dibangun dengan algoritma DES (Data Encryption Standard), algoritma hash MD5, dan mode kriptografi CFB (Chiper-Feedback Mode) (Mdesian, 2005). Tujuan dari enkripsi adalah menghasilkan sekumpulan bilangan acak yang sama untuk setiap kunci enkripsi yang sama. Bilangan acak dihasilkan dengan cara memilih bit-bit dari sebuah blok data hasil enkripsi.
2.2.4
Struktur File Image Pada komputer, suatu gambar adalah array dari bilangan yang
merepresentasikan intensitas terang pada point yang bervariasi (pixel). Pixel ini menghasilkan raster data gambar. Suatu gambar yang berdimensi 640 x 480
15 pixel dengan 256 warna (atau 8 bit per warna per pixel). akan berisi kira-kira 900 kilobyte data. Gambar digital disimpan juga secara khusus di dalam file 24-bit atau 8bit. Gambar 24-bit menyediakan lebih banyak ruang untuk menyembunyikan informasi; bagaimanapun, ukurannya dapat menjadi sangat besar (dengan perkecualian gambar JPEG). Semua variasi warna untuk pixel yang diperoleh dari tiga warna dasar: merah, hijau dan biru. Setiap warna dasar direpresentasikan dengan 1 byte; gambar 24-bit menggunakan 3 byte per pixel untuk merepresentasikan suatu nilai warna. 3 byte ini dapat direpresentasikan sebagai nilai hexadesimal, desimal, dan biner. Dalam banyak halaman Web, warna latar belakang direpresentasikan dengan bilangan 6 digit hexadesimal, yang merupakan tiga ikatan representasi warna merah, hijau dan biru. Latar belakang putih akan mempunyai nilai FFFFFF: 100% merah (FF), 100% hijau (FF) dan 100% biru (FF). Nilai desimal-nya 255,255,255 dan nilai biner-nya adalah 11111111, 11111111, 11111111. Pixel merepresentasikan kontribusi dari ukuran file. sebagai contoh, andaikan kita mempunyai gambar 24-bit dengan lebar 1,024 pixel dan panjang 768 pixel, yang merupakan resolusi umum untuk grafik beresolusi tinggi, gambar tersebut akan mempunyai lebih dari dua juta pixel, dan akan menghasilkan file berukuran lebih dari 2 Mbyte, yang tentu saja menjadi penyebab utama ketidakpopulerannya di internet.
16 2.2.5
Steganografi pada file image Seperti terlihat diatas bahwa file 8-bit merepresentasikan satu warna pada
satu pixel menggunakan 1 byte data, yang berarti satu warna direpresentasikan dengan skala 255, yang berarti pula bahwa file 24-bit yang menggunakan 3 byte data memiliki skala sampai 16,581,375. Steganografi pada file image didasarkan pada kenyataan bahwa mata manusia tidak mampu membedakan perubahan warna yang terlalu kecil, misalnya perubahan 1 nilai dalam skala 255, yang berarti bahwa mata manusia tidak dapat membedakan warna biru yang bernilai 255 dan yang bernilai 254. Kenyataan ini kemudian dimanfaatkan untuk menyisipkan data rahasia ke dalam tiap warna per pixel sebanyak 1 bit dengan cara mengubah LSB (Least Significant Bit) dari nilai warna dengan data yang akan disisipkan. Walaupun demikian perubahan 1 bit tersebut berpengaruh terhadap ganjil-genap nilai warna yang kemudian dapat dideteksi oleh serangan visual.
2.3
Kompresi JPEG Beberapa tahun yang lalu, JPEG (Joint Photographic Experts Group) membuat
standar teknik kompresi internasional pertama untuk format file citra tidak bergerak (still image) yang kini digunakan secara luas. Standar yang pada waktu itu diajukan oleh JPEG bertujuan agar bersifat umum sehingga dapat memenuhi kebutuhan berbagai aplikasi yang bekerja dengan file image (Guillermito, 2004) . Lebih lanjut akan dijelaskan secara singkat tahapan dalam proses kompresi yang diajukan dalam standar JPEG.
17
YCbCr
Kuantisasi
Tabel Kuantisasi
Gambar 2.4. Tahap – tahap dalam kompresi JPEG (Leung, 2004)
2.3.1
Konversi dari RGB Menjadi YCbCr Format warna RGB (Red, Green, Blue) adalah format yang digunakan
dalam file bitmap, dimana setiap pixel terdiri atas komposisi tiga variabel yang berisi nilai masing – masing warna. JPEG mengubah format tersebut menjadi satu koefisien luminance (nilai Y : intensitas warna keseluruhan pada gambar) yang berupa bentuk hitam/putih dari gambar, dan dua koefisien chrominance (nilai Cb dan Cr : Cb merupakan kombinasi warna dari Biru/Kuning dan Cr merupakan kombinasi warna dari Merah/Hijau) melalui rumus berikut (Anonymous, 2004):
18
Gambar 2.5. Rumus Perkalian Matriks untuk mengubah RGB menjadi YcbCr (Anonymous, 2004) Tujuan dari pengubahan ini karena mata manusia pada dasarnya lebih peka terhadap intensitas (luminance) dibanding terhadap warna (chrominance) (Guillermito, 2004), sehingga untuk alasan penghematan ruang, beberapa metode JPEG mampu menggunakan hanya satu pixel warna untuk mewakili empat pixel lainnya tanpa menyebabkan perubahan yang berarti pada gambar. Berikut ini contoh dari gambar yang dikonversi menjadi YCbCr : Red
Y (Luminance)
Green
Cr (Chrominance)
Blue
Cb (Chrominance)
Gambar 2.6. Perubahan dari format RGB menjadi YcbCr (Anonymous, 2004)
2.3.2
DCT (Discrete Cosine Transform) DCT merupakan fungsi yang digunakan untuk mengubah nilai YCbCr
pada setiap pixel menjadi koefisien DCT. Pada bulan Juni 1987, JPEG melakukan studi terhadap 12 proposal yang membahas tentang kualitas gambar yang melalui proses DCT, dan pada bulan Januari 1988 ditemukan bahwa
19 proposal yang menggunakan 8 x 8 DCT, telah menghasilkan gambar dengan kualitas paling baik, namun demikian penggunaan teknik ini tetap memiliki kekurangan yaitu efek isolasi antara blok – blok pixel yang saling berdekatan, inilah alasan mengapa gambar JPEG yang dikompres dengan rasio yang tinggi akan terlihat terkotak – kotak (Wallace, 2004).
Gambar 2.7. JPEG image dengan rasio kompresi tinggi (Leung, 2004)
Pada tahap ini keseluruhan gambar pertama – tama dibagi menjadi berukuran 8 x 8 pixel, kemudian blok – blok pixel tersebut satu persatu diproses menjadi 64 koefisien DCT melalui rumus berikut : Jika Sebaliknya
Gambar 2.8. Persamaan DCT (Leung, 2004)
Tujuan dari tahap ini adalah karena pada gambar “alami” nilai koefisien DCT rata – rata berukuran amat kecil dan banyak yang dapat dihilangkan dengan
20 tetap mempertahankan keakuratan gambar. Pada gambar berikut akan diperlihatkan perubahan dari nilai warna menjadi koefisien DCT :
Gambar 2.9. Perubahan nilai warna menjadi koefisien DCT (Guillermito, 2004)
Koefisien DCT pertama dari tiap blok memiliki nilai paling besar dibanding 63 koefisien lainnya karena merupakan nilai rata – rata dari keseluruhan blok, koefisien pertama ini disebut dengan koefisien DC dan 63 koefisien lainnya disebut dengan koefisien AC. Jika blok DCT tersebut dikembalikan melalui tahap Inverse DCT, maka akan didapat kembali 64 nilai pixel yang mengalami sedikit perubahan sehingga tahap ini disebut sebagai tahap lossy.
2.3.3
Kuantisasi Kuantisasi juga merupakan tahap lossy dalam kompresi JPEG karena
kuantisasi sendiri berarti pembagian antara setiap koefisien DCT dengan koefisien kuantisasi dan pembulatan sesudahnya (Guillermito, 2004). Berikut ini adalah tabel kuantisasi untuk koefisien luminance dan chrominance yang sudah ditetapkan sebagai standar oleh JPEG dengan rasio kompresi paling baik dan penurunan kualitas gambar paling rendah :
21
Gambar 2.10. Tabel Kuantisasi Luminance dan Tabel Kuantisasi
Chrominance(Leung, 2004)
Tabel koefisien ini sendiri pada implementasinya akan berubah sesuai rasio kompresi yang ditentukan oleh user, oleh karena itu tabel tersebut disimpan di awal file gambar dan akan digunakan kembali untuk mengembalikan koefisien frekuensi menjadi koefisien DCT (Inverse Quantization). Semakin tinggi rasio kompresi pada gambar maka semakin tinggi pula nilai pada tabel kuantisasi dan kualitas gambarpun akan semakin rendah. Keragaman warna pada satu blok ternyata juga sangat berpengaruh pada penurunan kualitas yang disebabkan oleh dua tahap lossy tersebut (DCT dan Kuantisasi) (Leung, 2004). Pada dua gambar berikut akan diperlihatkan perbedaan pada blok yang memiliki warna variatif dengan blok yang memiliki warna cenderung sama :
22
Kesalahan
Tabel Kuantisasi
Kuantisasi
Inverse Kuantisasi
Gambar 2.11. Perubahan pada blok dengan warna cenderung seragam (Leung, 2004)
Kesalahan Tabel Kuantisasi
Kuantisasi
Inverse Kuantisasi
Gambar 2.12. Perubahan pada blok dengan warna cenderung variarif (Leung, 2004) 2.3.4
DPCM (Differential Pulse Code Modulation) Pada tahap ini, koefisien DC dari tiap – tiap blok disatukan untuk
memasuki tahap Entropy Coding, teknik DPCM digunakan karena nilai – nilai
23 koefisien DC antara blok satu dengan lainnya tidak jauh berbeda (Leung, 2004). Berikut ini akan digambarkan lebih rinci : Blok 1
Blok 2
Blok 3
Blok 4
Blok 5 Koefisien DC Blok 1
Koefisien Koefisien Koefisien Koefisien DC DC DC DC Blok 5 Blok 2 Blok 3 Blok 4
Gambar 2.13. Proses DPCM (Leung, 2004)
2.3.4.1 Entropy coding pada Koefisien DC Koefisien DC yang sudah melalui tahap DPCM kemudian dikompresi menggunakan kompresi huffman, sebelumnya deretan angka DPCM tersebut dirubah bentuknya menjadi pasangan – pasangan (size,amplitude), dimana size menyatakan jumlah bit yang diperlukan untuk merepresentasikan angka DPCM dan amplitude menyatakan angka tersebut dalam bentuk bit (Leung, 2004). Tabel berikut menyatakan hubungan antara size, amplitude dan angka :
Gambar 2.14. Hubungan size, amplitude dan angka (Leung, 2004)
24 Seperti yang terlihat diatas bahwa amplitude dapat menyatakan nilai absolut dari angka DPCM, yang berarti amplitude dapat berisi angka positif maupun negatif (dalam bentuk komplemen satu dari positifnya). Dalam tahap Entropy coding yang mengalami kompresi huffman hanya size-nya saja, karena perubahan pada size tidak terlalu jauh sedangkan amplitude sangat bervariasi. Lebih lanjut dijelaskan pada gambar berikut
Gambar 2.15. Entropy coding pada koefisien DC (Leung, 2004)
2.3.5 RLC (Run Length Coding) Pada tahap ini koefisien AC dari tiap – tiap blok disatukan untuk memasuki tahap Entropy Encoding, teknik RLC digunakan karena nilai – nilai koefisien AC memiliki banyak nilai berurut, yaitu nilai nol yang urutannya rata – rata panjang (Guillermito, 2004). Berikut ini contoh dari blok koefisien DCT yang telah dikuantisasi :
Gambar 2.16. Koefisien DC ter-Kuantisasi (Leung, 2004)
25 Pada gambar diatas terlihat bahwa nilai – nilai nol cenderung berdekatan dari kiri/atas ke kanan/bawah, oleh karena itu untuk membuat semakin banyak nilai 0 yang berurutan maka urutan koefisien diubah dalam bentuk zig - zag yang lebih rinci dijelaskan pada gambar berikut (Leung, 2004):
Koefisien DCT ter-Kuantisasi
Koefisien AC
Gambar 2.17. Koefisien AC dalam urutan zig – zag (Leung, 2004)
Setelah diubah urutannya, nilai – nilai AC tersebut kemudian diubah bentuknya menjadi pasangan – pasangan (runlength, value), dimana runlength adalah jumlah 0 yang berurutan dan value adalah nilai non - 0 yang terletak sesudahnya. Dalam hal ini koefisien DC tidak diperhitungkan dalam RLC. Koefisien DC Tidak diproses
Akhir Blok
Gambar 2.18. Proses RLC (Leung, 2004)
26 2.3.5.1 Entropy coding pada koefisien AC Koefisien AC yang sudah melalui tahap RLC juga kemudian dikompresi menggunakan kompresi huffman, sebelumnya deretan pasangan – pasangan (runlength, value) tersebut dirubah bentuknya menjadi pasangan – pasangan (runlength, size, value), sama seperti koefisien DC (Leung, 2004). Dalam hal ini yang mengalami kompressi huffman hanya runlength dan size-nya saja untuk alasan yang sama dengan koefisien DC. Lebih lanjut dijelaskan dalam gambar berikut :
Gambar 2.19. Entropy coding pada koefisien AC (Leung, 2004)
2.4
Steganografi pada JPEG Secara umum proses kompresi diatas dapat digambarkan seperti dibawah ini :
Gambar 2.20. Proses Kompresi secara umum (Westfeld, 2004)
Seperti dijelaskan diatas bahwa tahap DCT dan kuantisasi merupakan tahap lossy yang menyebabkan turunnya kualitas pada gambar namun tidak demikian halnya pada
27 tahap Huffman. Kondisi ini kemudian dimanfaatkan untuk melakukan penyisipan data dengan melihat bahwa koefisien – koefisien DCT yang ditransfer antara tahap kuantisasi dan Huffman dapat dikembalikan persis ke bentuk semula melalui proses dekompresi karena tidak melalui tahap lossy. Koefisien DCT tersebut pun memiliki karakteristik sendiri, yang harus tetap dijaga agar tidak menimbulkan kecurigaan pada pendeteksian steganografi, dengan kata lain bahwa algoritma steganografi yang baik dapat mempertahankan sifat – sifat yang dimiliki koefisien DCT. Lebih lanjut dijelaskan dalam gambar berikut :
Gambar 2.21. Frekuensi Kemunculan Koefisien DCT (Westfeld, 2004)
Dari gambar diatas dapat kemudian disimpulkan beberapa karakteristik : 1. Jumlah kemunculan berkurang dengan meningkatnya nilai absolut dari koefisien frekuensi. 2. selisih jumlah kemunculan antara antara dua koefisien frekuensi berkurang dengan meningkatnya nilai absolut dari koefisien frekuensi. Steganografi menyisipkan data steganografi dengan mengubah nilai – nilai dari koefisien frekuensi tersebut.
28 2.5
Pendeteksian Terhadap Steganografi ( Steganalysis ) Berbagai usaha telah dilakukan untuk mendeteksi keberadaan data tersembunyi
dalam file image untuk alasan keamanan oleh berbagai pihak. Seperti sempat terjadi di Amerika pada sekitar bulan Februari 2001, sebuah media lokal USA TODAY yang memuat berita tentang steganografi yang digunakan oleh teroris untuk berkomunikasi, sempat membuat kepanikan massal dan memaksa pemerintah mendanai sebuah perusahaan
teknologi
informasi,
WetStone
Technologies,
untuk
menyelidiki
kemungkinan penyisipan data rahasia dalam file – file image yang terdapat pada situs pelelangan yang sangat terkenal yaitu eBay.com. WetStone akhirnya mengumumkan hasil penyelidikannya bahwa mereka hanya menemukan sekitar 1 diantara 100.000 gambar yang dicurigai memiliki data rahasia, dan sekitar 1 diantara 1 – 2 juta gambar yang diyakini memiliki data rahasia, jumlah yang terlalu kecil untuk menjadi ancaman besar dan tidak sebanding dengan kepanikan yang dialami masyarakat, karena memang, pada sekitar bulan Maret 2004 USA TODAY mengakui bahwa wartawan yang memuat berita tersebut memalsukan hampir seluruh ceritanya dan kemudian memberhentikannya dengan tidak hormat
2.5.1
Visual attack Visual attack adalah teknik pertama yang pernah dipublikasikan terhadap
file image untuk mendeteksi keberadaan data tersebut. Visual attack memungkinkan mata manusia melihat keberadaan data tersembunyi dalam file image karena data tersembunyi tersebut menimpa struktur gambar secara visual. File image pada umumnya memiliki nilai warna yang sama pada pixelpixel yang berdekatan. Penyisipan data rahasia yang memiliki bit tidak beraturan
29 akan menyebabkan pixel-pixel yang saling berdekatan tersebut memiliki nilai warna yang bervariasi dalam bentuk ganjil-genap walaupun tidak terlihat oleh manusia karena perbedaanya terlalu kecil. Teknik visual attack memperbesar perbedaan tersebut sehingga terlihat oleh mata manusia dengan cara membuat nilai warna ganjil menjadi ekstrim maksimum (255) dan nilai warna genap menjadi ekstrim minimum (0) sehingga setiap pixel hanya memiliki nilai warna 0 atau 255 saja (Guillermito, 2003). berikut ini diberikan contoh :
Sisipan Data
File Asli
Visual attack
Keterangan Terlihat bahwa warna putih tidak mengalami perubahan, warna putih yang saling berdekatan
Tidak disisipkan apapun cenderung memiliki LSB yang sama (semua pixelnya memiliki nilai warna 255) File image yang disisipkan data terlihat penuh dibawah, ini terjadi Karena nilai Disisipkan 1kB data warna pertama pada struktur file BMP adalah pixel terakhir pada gambar.
30
Data terlihat semakin Disisipkan 5 kB data penuh oleh data sisipan
Gambar 2.22. Perbandingan Image pada Visual Attack (Guillermito, 2003)
2.5.2
Analisis Histogram DCT
Seperti telah dijelaskan sebelumnya, pada umumnya pixel – pixel yang berdekatan pada file image memiliki nilai LSB yang sama, dengan kata lain pixel – pixel yang berdekatan umumnya memiliki nilai-nilai warna yang sama, kemudian setelah penyisipan data LSB dari nilai – nilai warna tersebut berubah menjadi sangat bervariasi dengan perbedaan yang sangat kecil yaitu hanya satu nilai warna. Menurut Guillermito (Anonymous, 2004) LSB dari data yang disisipkan tersebut, pada setiap kasus, ternyata memiliki distribusi yang mendekati 50/50, yang berarti pada data yang disisipkan, LSB bernilai 1 memiliki jumlah yang hampir sama dengan LSB bernilai 0 (Guillermito, 2003). Pada algoritma JSteg, yang mengalami perubahan bukanlah nilai – nilai warna pada pixel melainkan koefisien DCT pada saat kompresi, seperti telah dijelaskan bahwa JSteg menyisipkan LSB data rahasia pada koefisien DCT. Hal tersebut memberikan pengaruh yang sama seperti halnya nilai – nilai warna pada
31 BMP, koefisien DCT yang memiliki LSB bernilai 1 juga memiliki jumlah yang hampir sama dengan LSB bernilai 0. Westfeld dan Pfitzmann (Westfeld, 2003) kemudian merumuskan suatu teknik pendeteksian berdasarkan kenyataan tersebut. Mereka menyebut pasangan LSB 0 dan 1 yang hampir sama jumlahnya dengan Pair of Values (PoV).
0010
PoV pertama,
0011
koefisien DCT bernilai 2 dan 3 memiliki jumlah hampir sama.
0100
PoV kedua,
0101
koefisien DCT bernilai 4 dan 5 memiliki jumlah hampir sama.
0110
PoV ketiga,
0111
koefisien DCT bernilai 6 dan 7 memiliki jumlah hampir sama.
1000
PoV keempat,
1001
koefisien DCT bernilai 8 dan 9 memiliki jumlah hampir sama.
Lebih lanjut dalam histogram koefisien DCT berikut :
Gambar 2.23. Koefisien DCT file image setelah disisipi data oleh Jsteg
(Westfeld, 2003)
32
Seperti terlihat diatas jumlah koefisien DCT bernilai 1 dan 0 tidak mengalami perubahan, ini disebabkan karena 0 dan 1 merupakan PoV (pasangan), karena koefisien DCT bernilai 0 tidak bisa digunakan dalam steganografi (oleh algoritma apapun) maka 1 pun menjadi tidak bisa digunakan (Westfeld, 2004). 2.6
Algoritma Steganografi pada File JPEG 2.6.1
Algoritma JSteg
JSteg dibuat oleh Derek Upham dan merupakan algoritma steganografi pertama yang dipublikasikan secara umum untuk format JPEG. Algoritma JSteg menyisipkan data ke dalam koefisien DCT JPEG secara sekuensial dangan cara mengganti LSB (Least Significant Bit) dengan LSB dari data yang akan disisipkan. Algoritma ini tidak menggunakan password sehingga siapapun yang mengetahui algoritma JSteg dapat memperoleh data rahasia tersebut (Provos, 2003). File JPEG, dalam hal ini yang menggunakan algoritma steganografi
apapun, tidak terdeteksi oleh visual attack karena tidak mengubah struktur visual (Provos, 2003) melainkan koefisien DCT (lebih lanjut dijelaskan pada
kompresi JPEG) dan cenderung berukuran jauh lebih kecil dari BMP, oleh karena itu sangat populer di internet dan mengalami perkembangan pesat dalam hal algoritma steganografi. JSteg menyisipkan data ke dalam koefisien DCT yang tidak bernilai nol, sama seperti algoritma steganografi JPEG pada umumnya, tanpa mempertahankan sifat-sifat koefisien DCT (lebih lanjut dijelaskan pada
33 kompresi JPEG). Hal tersebut menyebabkan algoritma ini sangat rentan terdeteksi melalui pengamatan histogram DCT.
2.6.2
Perkembangan Algoritma F5
Algoritma F5 dikembangkan secara bertahap dari bentuknya yang pertama yaitu algoritma F3, namun dalam implementasinya hanya algoritma F5 yang digunakan dalam aplikasi. Algoritma F3 dan F4 yang akan dijelaskan
berikut
hanya
dimaksudkan
untuk
memperjelas
proses
perkembangannya.
2.6.2.1
Algoritma F3
Algoritma F3 mengatasi kelemahan pada JSteg namun belum cukup sempurna untuk diimplementasikan menjadi sebuah aplikasi, untuk selanjutnya akan dibahas perkembangan algoritma F3 dan proses penyempurnaanya sampai menjadi F5. F3 memiliki 2 sifat yang membedakannya dari Algoritma JSTEG : 1. Tidak seperti JSTEG yang menggunakan algoritma LSB (menimpa LSB dari bit host dengan bit steganografi), F3 hanya melakukan pengurangan terhadap nilai absolut dari koefisien DCT ketika LSB dari bit host tidak sama dengan bit steganografi (Westfeld, 2004). Hal ini dilakukan untuk mengatasi kelemahan JSTEG yang merusak sifat – sifat
34 histogram DCT (Westfeld, 2004). Lebih rinci dijelaskan dalam diagram berikut :
Koefisien DCT host Data steganografi
Koefisien DCT steganogram Data steganografi
Tidak Digunakan
Gambar 2.24. Penyisipan data steganografi pada F3 (Westfeld, 2004)
2. Koefisien DCT yang bernilai 1 atau -1 mengalami penyusutan dalam jumlah besar. F3 otomatis memproses koefisien lain ketika menghasilkan nilai 0 karena penerima pesan tidak dapat membedakan antara nilai 0 yang memang tidak digunakan oleh F3 dengan nilai 0 yang dihasilkan oleh pengurangan 1 atau -1. Penyusutan terjadi ketika F3 terus menerus mengurangi koefisien yang bernilai 1 atau -1 menjadi 0 sambil beralih ke koefisien berikutnya. 3. Terjadi Peningkatan koefisien jumlah genap sehingga melebihi jumlah koefisien ganjil dalam tingkat yang mencolok. Hal ini terjadi karena pemrosesan koefisien lain yang selalu menghasilkan nilai genap setelah terjadi penyusutan
yang
hanya
mungkin
terjadi
ketika
data
35 steganografi bernilai 0, oleh karena itu F3 tidak efektif untuk data steganografi yang memiliki lebih banyak nilai 0, lebih rinci dijelaskan dalam diagram berikut : 4. Jumlah Kemunculan
Koefisien DCT
Gambar 2.25. Jumlah kemunculan koefisien DCT pada image yang disisipkan pesan dengan algoritma F3 (Westfeld, 2004) 2.6.2.2
Algoritma F4
F4 mengatasi kelemahan F3 dengan cara memetakan koefisien DCT menjadi 4 bagian : koefisien negatif ganjil dan positif genap memiliki data steganografi bernilai 0, sedangkan koefisien negatif genap dan positif ganjil memiliki data steganografi bernilai 1 (Westfeld, 2004). Lebih rinci dijelaskan dalan diagram berikut :
36 Jumlah Kemunculan
Data steganografi 0 Data steganografi 1
Koefisien DCT Gambar 2.26. Jumlah kemunculan koefisien DCT pada image yang disisipkan pesan dengan algoritma F4 (Westfeld, 2004)
Dalam diagram diatas terlihat bahwa penyusutan dapat dikurangi karena koefisien bernilai absolut 1 tidak hanya mengalami pengurangan oleh data steganografi 0 saja namun dapat juga oleh data steganografi 1. Nilai koefisien genap pun tidak lagi melonjak karena pengurangan setelah penyusutan dapat terjadi tidak hanya pada koefisien ganjil namun terhadap koefisien genap juga. Koefisien DCT host Data steganografi
Koefisien DCT steganogram Data steganografi
Tidak Digunakan
Gambar 2.27. Penyisipan data steganografi pada F4
(Westfeld, 2004)
37 F4 juga membentuk diagram koefisien dengan menjaga sifat - sifat pada diagram aslinya, misalkan kita memiliki dua variabel X,Y yang masing – masing mewakili nilai koefisien sebelum dan sesudah F4 menyisipkan data steganografi (Westfeld, 2004). P(X = x) untuk mewakili kofisien frekuensi yang dihasilkan JPEG encoder, dan P(Y = y) untuk mewakili koefisien DCT yang dihasilkan F4 (Westfeld, 2004). Kita dapat menuliskan dua sifat berikut berdasarkan diagram :
P(X = 1) > P(X = 2) > P(X = 3) > P(X = 4)
(1)
P(X = 1) - P(X = 2) > P(X = 2) - P(X = 3) > P(X = 3) - P(X = 4) (2)
Jika data steganografi disebarkan secara seragam maka didapat : P(Y = 1) = ½ P(X = 1) + ½ P(X = 2)
(3)
P(Y = 2) = ½ P(X = 2) + ½ P(X = 3)
(4)
P(Y = 3) = ½ P(X = 3) + ½ P(X = 4)
(5)
Dengan pengurangan persamaan diatas maka didapat : P(Y = 1) – P(Y = 2) = ½ P(X = 1) - ½ P(X = 3)
(7)
P(Y = 2) – P(Y = 3) = ½ P(X = 2) - ½ P(X = 4)
(8)
Dari persamaan (1) kita dapat simpulkan bahwa : P(Y = 1) > P(Y = 2) > P(Y = 3) > P(Y = 4)
(9)
Jika kita tambahkan P(X = 2) – P(X = 3) ke persamaan (2) maka akan didapat : P(X = 1) - P(X = 3) > P(X = 2) - P(X = 4) > P(X = 3) - P(X = 5) (10)
38
Sehingga : ½ P(X = 1) - ½ P(X = 3) > ½ P(X = 2) - ½ P(X = 4)
(11)
P(Y = 1) – P(Y = 2) > P(Y = 2) – P(Y = 3)
(12)
Dari persamaan (12) dapat terlihat bahwa sifat diagram koefisien sebelum dan sesudah peyisipan data oleh F4 tidak mengalami perubahan. Diagram berikut akan menggambarkan lebih rinci bagaimana F4 memasukkan data steganografi bernilai ”01110” :
Gambar 2.28. Penyisipan data steganografi pada F3 (per bit)
(Westfeld, 2004)
Dapat terlihat bahwa bit 5 mengalami pengurangan menjadi 4 karena data steganografi yang disisipkan bernilai 0, sedangkan penyisipan koefisien -1 atau 1 akan menyebabkan F4 secara otomatis mencari koefisien lain.
39 2.6.2.3
Algoritma F5
Dalam banyak kasus, data steganografi tidak menempati seluruh kapasitas yang disediakan oleh steganogram, oleh karena itu F4 hanya menyisipkan data di awal file dan data steganografi terpusat hanya di awal file (Westfeld, 2004), seperti ditunjukkan gambar berikut :
Gambar 2.29. Penyebaran Data yang disisipkan pada image dengan algoritma F4
(Westfeld, 2004)
Algoritma F5 menyisipkan data tidak dengan mengubah LSB (Least Significant Bit) melainkan melakukan pengurangan (decrement) terhadap koefisien DCT, hal ini dilakukan agar steganogram (image yang disisipi oleh steganografi) tidak merusak sifat-sifat histogram DCT.
40
Gambar 2.30. Tahapan kompresi file JPEG (Westfeld, 2004)
2.6.2.3.1
Permutative Straddling pada F5
F5
menggunakan
mekanisme
straddling
yang
fungsinya mengacak letak semua koefisien DCT terlebih dahulu dengan menggunakan permutasi (Westfeld, 2004). F5 kemudian menyisipkan data steganografi menurut urutan permutasi tersebut dan mengirimkannya kepada tahap Huffman dalam urutan sebenarnya sesudah penyisipan selesai, urutan permutasi itu sendiri didapat dari password yang dimasukkan oleh user. Dengan password yang benar, user lain akan mendapatkan urutan permutasinya dan dapat membaca data yang tersembunyi dengan benar. Java
menyediakan
kelas
SecureRandom
yang
memiliki kemampuan untuk menghasilkan bilangan random antara –128 sampai 127 berdasarkan password user, namun pada kenyataannya image JPEG berukuran relatif kecil (16Bit, 283 x 212) saja dapat memiliki ratusan ribu koefisien DCT, jumlah koefisien DCT ini selain ditentukan oleh ukuran image dan rasio kompresi ditentukan juga oleh
41 jumlah kombinasi warna. Untuk mendapatkan jumlah yang mencukupi kebutuhan aplikasi akan merandom 32 bit bilangan, yaitu 4 bilangan yang masing-masing berjumlah 8 bit yang di-random bersamaan, sehingga menghasilkan bilangan
random
antara
-4.294.967.296
sampai
4.294.967.295 :
c6 = d[10] x Math.pow(2,24) + d(Wallace, 2004) x Math.pow(2,16) + d(Westfeld, 2003) x Math.pow(2,8) + d(Westfeld, 2004);
Jumlah bilangan random diatas ternyata dapat mencukupi kebutuhan sebagian besar image JPEG, namun urutan koefisien DCT tidak menggunakan bilangan minus dan pada banyak kasus nilai random diatas terlalu besar untuk jumlah koefisien DCT pada image sehingga dapat dikatakan tidak efisien. Oleh karena itu dilakukan operasi modulo (%) terhadap nilai random sehingga nilainya tidak akan melebihi jumlah koefisien DCT dan nilai random yang lebih kecil dari nol akan ditambahkan jumlah koefisien DCT sehingga tidak terdapat nilai minus.
c6 %= cntr; if (c6<0) c6 += cntr;
42 Proses pengacakan akan dimulai dengan membuat array berisi indeks terlebih dulu, array ini pada awalnya akan diisi terurut dan pada akhir proses akan berisi indeks yang sudah teracak. Pertama-tama aplikasi akan merandom satu bilangan antara 1 hingga posisi indeks teratas, kemudian nilai dari posisi indeks random tersebut akan ditukar dengan nilai pada posisi indeks teratas, lebih lanjut dijelaskan dengan gambar berikut :
Gambar 2.31. Proses Random pada Putaran Pertama
Pada gambar diatas aplikasi menukar nilai pada posisi random (5) dengan nilai pada posisi indeks teratas (10),
kemudian
pada
putaran
kedua
aplikasi
akan
mengurangi posisi indeks teratas, yang berarti pada contoh diatas aplikasi hanya akan merandom bilangan 1–9, oleh karena itu array pada indeks terakhir tidak akan diikutsertakan dan digambarkan berwarna abu-abu, nilai pada posisi random berikutnya kemudian akan ditukar dengan
43 nilai pada posisi indeks teratas (9), lebih lanjut dijelaskan dengan gambar berikut :
Gambar 2.32. Proses Random pada Putaran Kedua
Proses ini akan terus berlanjut hingga indeks teratas berada pada posisi 2, dalam keadaan ini nilai dari semua indeks sudah teracak, lebih lanjut dijelaskan pada gambar berikut :
Gambar 2.33. Keadaan pada Akhir Proses
Pada contoh diatas semua nilai dari setiap indeks sudah
teracak.
Pengurangan
posisi
indeks
teratas
dimaksudkan agar nilai indeks tidak akan dirandom lebih dari satu kali, dengan memperkecil jangkauan indeks maka proses permutasi akan berjalan lebih cepat.
44 2.6.2.3.2
Matrix Encoding pada F5 Matrix encoding pertama kali ditemukan oleh Ron
Crandall. Teknik ini memungkinkan perubahan bit host yang minimum jika terdapat sisa kapasitas dalam steganogram (Westfeld, 2004). Dalam contoh berikut akan dijelaskan lebih rinci, jika kita ingin menyisipkan dua bit x1,x2 ke dalam 3 bit host a1,a2,a3 dengan mengubah maksimal satu bit maka terdapat 4 kemungkinan : Tidak merubah apapun Merubah a1 Merubah a2 Merubah a3 Dalam contoh berikut akan dijelaskan lebih rinci, jika kita ingin menyisipkan dua bit (01) ke dalam tiga bit host (100) maka akan dilakukan perubahan terhadap bit a3 :
Gambar 2.34. Perubahan pada bit a3
Jika kita ingin mendapatkan kembali nilai x1 maka lakukan operasi xor terhadap a1 dan a3, dan jika kita ingin mendapatkan nilai x2 maka lakukan operasi xor terhadap a1 dan a2.
45 Pada contoh diatas kita tidak mengubah lebih dari satu bit, pada fungsi (dmax,n ,k) n bit host akan diubah oleh k bit data steganografi tidak lebih dari jumlah dmax. Untuk
fungsi (1,n,k) bit host mempunyai panjang n = 2k – 1, dari persamaan panjang tersebut maka didapat persamaaan ”kerapatan perubahan” (change density)-nya yaitu :
Kerapatan perubahan dapat didefinisikan sebagai proporsi dari bit yang sudah dirubah, bahkan teknik yang mampu menyimpan 100% data pun memiliki kerapatan perubahan 50% (karena diasumsikan bahwa ½ dari LSB data host sudah sesuai dengan LSB data steganografi). Lalu didapat juga ”tingkat penyisipan”(embedding rate) :
Menggunakan persamaan dari ”tingkat penyisipan” dan
”kerapatan
perubahan”
maka
didapat
”efisiensi
penyisipan” (embedding efficiency) :
”Efisiensi penyisipan” pada (1,n,k) selalu lebih besar dari k, tabel berikut akan menjelaskan lebih rinci bahwa semakin rendah ”tingkat penyisipan” maka semakin tinggi
46 efisiensinya, oleh karena itu penyisipan data dalam jumlah kecil dapat dilakukan se-efisien mungkin.
Sebagai contoh, jika kita ingin menyisipkan pesan sebesar 1000 bit ke dalam carrier dengan kapasitas 50000 bit, maka embedding rate yang dibutuhkan adalah R = 1000 : 50000 = 2%. Nilai ini berada di antara R(k = 8) dan R(k = 9) pada tabel di atas. Kita pilih k = 8, sehingga mampu meyisipkan 50000 : 255 = 196 code words dengan nilai n = 255. Kode (1, 225, 8) dapat menyisipkan 196 x 8 = 1568 bit, sedikit diatas 1000 bit. Tetapi jika kita memilih k = 9, maka kita tidak dapat menyisipkan pesan dengan sempurna. Kasus pada gambar 2 menggunakan desain (1,3,2) yang berarti 1 perubahan pada setiap 3 bit carrier untuk mendapatkan 2 bit data. Terdapat banyak desain lain tergantung pada rate dan change density yang diinginkan, desain (1,7,3) misalnya, digunakan pada 7 bit data yang menyimpan 3 bit data sisipan dengan rate 42 % dan change
47 density 12.5 %, desain (1,31,5) memiliki rate 16 % dan change density 3 %.
Kapasitas penyisipan dapat diperbesar dengan memperbanyak perubahan yang dilakukan pada bit carrier, desain (2,13,6) yang menggunakan 13 bit carrier untuk menyimpan 6 bit data memiliki rate 46 % dan change density 13.5 %, bandingkan dengan desain (1,7,3) dimana 14
bit carrier digunakan untuk menyimpan 6 bit data dengan maksimum 2 perubahan pada data. Algoritma F5 hanya menggunakan desain (1,n,k) yang berarti membatasi hanya 1 perubahan saja, hal ini dilakukan karena desain (1,n,k) adalah desain yang paling baik untuk penyisipan data berkapasitas kecil atau sangat kecil, dan pada banyak kasus, data yang disisipkan oleh steganografi adalah pesan rahasia berukuran kecil. Desain (1,n,k) misalnya, dapat mencapai rate 9,5% pada k = 6, sedangkan desain (2,n,k), pada k = 6 masih memiliki rate 46%. Jika perubahan pada bit yang menyimpan data (change density) semakin kecil maka kapasitasnya pun semakin kecil pula (rate), oleh karena itu pada algoritma F5 semakin kecil data yang disisipkan maka semakin kecil pula perubahan yang dilakukan pada koefisien DCT dan semakin sulit pula dideteksi.
48 2.6.3
Pembatasan Ukuran File Sisipan
Ukuran file yang dapat ditampung oleh steganogram sangat bergantung jumlah koefisien DCT yang tidak bernilai nol yang dimiliki oleh image. Jumlah koefisien DCT ini bergantung kepada kualitas kompresi jpeg,
dimensi image dan keragaman variasi warnanya, semakin besar dimensi image, semakin tinggi kualitas kompresinya dan semakin beragam warnanya
maka semakin besar pula kapasitasnya.
Gambar 2.35. Dua image yang diamati : final.jpg dan nature.jpg
Dua image yang diamati diatas menunjukkan perbedaan yang cukup besar, image nature.jpg memiliki 174.829 koefisien DCT yang tidak bernilai nol sedangkan image final jpg hanya memiliki 66.922 koefisien DCT saja. Pengamatan juga dilakukan terhadap image yang seluruhnya hanya berwarna hitam dan putih, kedua image tersebut ternyata tidak memiliki koefisien DCT yang tidak bernilai nol yang berarti bahwa kedua image tersebut tidak dapat digunakan sebagai media penyisipan data.
49 Jumlah koefisien DCT tersebut menujukkan kapasitas dalam satuan bit yang mampu ditampung oleh steganogram, jika suatu image memiliki 800 koefisien DCT yang tidak bernilai 0 berarti image tersebut mampu menampung 800 bit atau 100 byte data. Namun kapasitas steganogram pada algoritma F5 tidak dapat diperkirakan dengan pasti karena adanya proses penyusutan pada saat penyisipan walaupun dalam jumlah yang kecil. Image final.jpg diatas berukuran 196.608 byte sedangkan image
nature berukuran 409.600 byte, yang berarti bahwa final.jpg dapat menampung sekitar 4.25% dari size-nya yaitu 8.365 byte data sedangkan image nature.jpg dapat menampung sekitar 5.33% dari size-nya atau 21.853
byte data. Menurut Westfeld sendiri (Westfeld, 2004) algoritma F5 pada beberapa kasus tertentu dapat memiliki kapasitas maksimum sampai 13% dari size steganogram-nya.
2.7
Flowchart (Bagan Alir) Flowchart adalah suatu metoda untuk menggambarkan proses kerja suatu sistem
yang terorganisir dengan menggunakan diagram. Grafik diagram tersebut digunakan karena pada dasarnya grafik lebih mudah dimengerti oleh manusia daripada keterangan dalam bentuk tabel ataupun serangkaian kode – kode algoritma. Flowchart itu terdiri dari dua bagian utama yaitu bentuk (shape) dan garis (line),
dimana bentuk adalah bagian yang mewakili setiap langkah atau keputusan dalam proses dan direpresentasikan dalam bentuk lingkaran, persegi panjang dan sebagainya, sedangkan garis menunjukkan urutan proses dan menggambarkan langkah – langkah yang harus diikuti. Adapun simbol-simbol dasar flowchart adalah sebagai berikut :
50 Terminator : menggambarkan awal (“Start” atau “Begin”)
atau akhir (“End” atau “Stop”) dari sebuah proses. Process : menggambarkan beberapa aktivitas atau proses
dengan menuliskan teks di dalam simbol tersebut. Decision : menggambarkan suatu titik percabangan dimana
keputusan harus dibuat. Terdapat dua alur garis, satu menunjuk ke bawah dan yang lain menunjuk ke sebelahnya. Setiap garis ditandai dengan satu jawaban yang mungkin, seperti “Yes” dan “No”, atau “Benar” dan “Salah”. Arrow : menunjukkan urutan langkah-langkah aktivitas (alur
proses) Connector : menggambarkan hubungan antara bentuk-
bentuk dalam flowchart tanpa menggunakan garis. Sebuah huruf atau nomor dalam lingkaran ini menghubungkan huruf atau nomor yang saling berhubungan tersebut. Data : menggambarkan data yang masuk atau keluar dari
sebuah aktivitas. Predefined process : menggambarkan suatu proses yang
sudah didefinisikan sebelumnya, seperti modul atau subrutin. Preparation : menggambarkan modifikasi seperti setting
dari tombol atau inisialisasi suatu rutin.