BAB 3 ANALISIS DAN PERANCANGAN
3.1
Analisis 3.1.1
Analisis Permasalahan Seiring dengan pesatnya perkembangan teknologi informasi, kebutuhan
akan keamanan data juga semakin meningkat. Saat ini kejahatan di dunia komputer (cyber crime) sudah sangat banyak ditemui. Salah satunya adalah pencurian terhadap data rahasia.
3.1.2
Usulan Pemecahan Masalah Untuk mengatasi masalah tersebut, dapat dilakukan penyembunyian
terhadap data yang bersifat rahasia. Data rahasia tersebut disimpan ke dalam data lain (file) secara sedemikian rupa sehingga orang yang melihat tidak dapat mengetahui bahwa di dalam file tersebut terdapat data rahasia. Cara ini dikenal dengan istilah steganografi.
3.2
Perancangan Algoritma pada steganografi bersifat spesifik, yang berarti bahwa algoritma yang
menyisipkan data pada file audio tidak dapat digunakan untuk menyisipkan data pada file image, terlebih lagi algoritma yang digunakan pada image terkompresi pun berbeda dengan algoritma pada image tidak terkompresi kelemahannya sendiri. F5 adalah algoritma yang dapat menjaga sifat – sifat histogram DCT dengan cukup baik dan unggul dari segi kapasitas, selain itu F5 adalah algoritma terkini yang dipublikasikan 51
52 secara bebas sehingga dapat dipelajari oleh semua orang. F5 membedakan dirinya dari algoritma lain terutama dari metodenya dalam menyisipkan bit, dimana LSB dari koefisien yang disisipkan mengalami pengurangan nilai (decrement) dan bukan mengalami penimpaan bit (overwrite), selain itu F5 adalah algoritma yang pertama menggunakan matrix encoding (Westfeld, 2004), yaitu suatu teknik operasi xor yang bertujuan untuk meminimalisasi perubahan pada koefisien – koefisien yang disisipkan. Seperti telah dijelaskan sebelumnya bahwa algoritma steganografi pada JPEG pun berbeda – beda, yang masing – masing memiliki keunggulan dan Aplikasi yang dibuat dinamakan “Chimera”. Aplikasi ini menggunakan algoritma F5 sebagai dasarnya. Aplikasi ini menampung seluruh koefisen DCT dalam satu variabel, kemudian dilakukan operasi permutative straddling dan matrix encoding terhadap seluruh koefisien tersebut. Setelah seluruh operasi penyisipan selesai maka koefisien DCT akan dikirim ke tahap selanjutnya (tahap Huffman).
3.2.1
Metode Pembacaan File Text Aplikasi pada dasarnya mampu menyisipkan semua jenis tipe data
selain file text karena komputer melihat data pada file sebagai binary (1 bit hanya berisi angka 0 atau 1), namun file berbasiskan text seperti file berekstensi txt atau html dapat diperlakukan berbeda karena mereka hanya memuat karakter yang memiliki kode ASCII tidak lebih dari 126, sehingga dapat disimpan dalam format yang hanya menggunakan 7 bit saja (1111111 bin = 127 dec). Oleh karena itu ketika user menyisipkan file .txt atau .html aplikasi hanya akan membaca 7 bit terakhir dari setiap karakter dan mengasumsikan
53 0 sebagai bit pertama sehingga secara teori kapasitas penyimpanan akan meningkat sampai 14,28 %. Pada saat ekstraksi aplikasi akan membaca data sisipan setiap 7 bit dan menambahkan bit 0 di awalnya.
3.2.2
Langkah - Langkah Penyisipan Data Pada F5 Seperti dijelaskan diatas bahwa F5 melakukan perubahan terhadap
koefisien DCT, oleh karena itu tahap pertama yang harus dilakukan adalah menjalankan kompresi JPEG seperti biasa dan menghentikannya tepat setelah proses kuantisasi selesai. Seluruh koefisien DCT yang sudah melalui tahap kuantisasi kemudian akan diproses oleh F5. Tahap kedua adalah melakukan permutative straddling, yaitu mendapatkan bilangan – bilangan acak yang dihasilkan oleh random generator yang memiliki sifat kriptografi yang cukup kuat berdasarkan password user, bilangan – bilangan acak ini kemudian digunakan sebagai permutasi untuk mengacak urutan koefisien DCT yang akan diproses oleh F5. Tahap ketiga adalah menghitung jumlah koefisien DCT yang tidak bernilai nol karena koefisien DCT bernilai nol tidak bisa digunakan dalam steganografi. Jumlah ini kemudian dibagi dengan ukuran data yang akan disisipkan untuk mendapatkan embedding rate, embedding rate digunakan oleh F5 untuk menentukan nilai k, semakin sedikit data yang akan disisipkan maka nilai k akan semakin besar. Dari nilai k kemudian didapatkan nilai n melalui rumus n = 2k – 1, nilai n dan k ini akan menjadi
54 dasar dari matrix encoding. Jika embedding rate melebihi 100% maka aplikasi akan memberikan error message kepada user. Tahap keempat adalah memproses file yang akan disisipkan. File yang disisipkan akan ditulis ulang ke dalam file temporary dengan ditambahkan header yang berisi beberapa informasi penting yang akan digunakan pada saat ekstraksi. Header tersebut berisi ukuran dari data yang akan disisipkan yang terdiri dari 3 byte data sehingga memungkinkan penyimpanan data dengan ukuran sampai + 16.777.215 byte.
Gambar 3.1. Penyisipan file text berukuran 408 bytes ( 00 0C C0 Hex )
Tahap kelima adalah melakukan matrix encoding. Matrix encoding dimulai pada pada bit ke-5 dari data host karena 4 bit pertama digunakan untuk menyimpan nilai k yang memiliki nilai maksimal 9 (1001). Pada
55 tahap ini matrix encoding membuat 2 buah buffer, yaitu buffer yang berukuran n (n = 2k – 1) yang diisi oleh koefisien DCT yang tidak bernilai 0, dan buffer yang berukuran k yang diisi oleh data yang akan disisipkan. Kemudian dilakukan operasi xor pada kedua buffer untuk menentukan posisi bit yang akan diubah pada buffer pertama, jika posisi bit bernilai 0 maka tidak akan dilakukan perubahan pada buffer pertama. Setelah buffer pertama diubah maka dilakukan pengujian terhadap koefisien DCT yang diubah, jika koefisien DCT yang telah diubah bernilai 0 maka matrix encoding akan diulang dengan menggunakan koefisien DCT dari indeks yang sama, namun koefisien DCT yang telah diubah menjadi 0 tidak akan dihitung dan tetap dibiarkan bernilai 0. Jika koefisien DCT yang telah diubah tidak bernilai 0 maka matrix encoding mengosongkan kedua buffer tersebut dan memulai kembali dengan indeks yang baru, begitu seterusnya hingga data yang disisipkan habis.
Gambar 3.2. Pengulangan proses penyisipan
Tahap keenam adalah mengembalikan urutan koefisien DCT yang telah mengalami permutasi kepada urutan aslinya. Seluruh koefisien DCT
56 ini kemudian dikirimkan kepada tahap kompresi JPEG selanjutnya yaitu tahap Huffman.
3.2.3
Langkah - Langkah Ekstraksi Data Pada F5 Ekstraksi data dari koefisien DCT mungkin dilakukan karena
steganografi menyisipkan data setelah melalui semua proses lossy pada kompresi JPEG, sehingga apapun proses yang dilalui sesudahnya dapat dikembalikan kepada bentuk semula. Tahap pertama dalam ekstraksi data adalah membalikkan proses Huffman (dekompresi) sehingga didapatkan kembali koefisien DCT yang sama persis dengan bentuknya semula. Tahap ini melibatkan pula operasi de-Zigzag yaitu mengembalikan urutan koefisien DCT yang telah di urutkan secara zigzag ketika memasuki tahap RLC (run length coding) pada kompresi Huffman. Tahap kedua adalah melakukan permutative straddling sama seperti pada proses penyisipan. Ini dimaksudkan agar aplikasi mendapatkan urutan yang benar ketika melakukan ekstraksi data, yaitu urutan yang dipermutasi berdasarkan password yang sama pada waktu penyisipan data. Tanpa password yang benar ekstraksi data tidak mungkin dilakukan karena aplikasi akan mendapat urutan penyisipan yang salah. Tahap ketiga adalah melakukan matrix decoding yang merupakan kebalikan dari proses penyisipan data. Pada tahap ini tidak dilakukan penentuan posisi bit yang akan diubah, tetapi melakukan operasi xor agar didapat k bit dari n bit yang dibaca. Aplikasi akan membaca 4 bit pertama
57 untuk menentukan nilai k, kemudian akan dibuat 1 buah buffer, yaitu buffer yang berukuran n (n = 2k – 1) yang diisi oleh koefisien DCT yang tidak bernilai 0, aplikasi akan membaca seluruh koefisien DCT dalam buffer tersebut dan melakukan operasi xor sehingga didapat k bit data yang akan dituliskan ke dalam file temporary. Setelah itu aplikasi akan mengosongkan buffer tersebut dan memulai lagi dengan indeks yang baru, begitu seterusnya hingga seluruh koefisien DCT habis terbaca. Tahap keenam adalah membaca header dari file temporary tersebut, yaitu 3 byte pertama yang berisi informasi tentang ukuran file yang disisipkan, kemudian menuliskan kembali file temporary tersebut kedalam file yang dispesifikasikan oleh user sesuai dengan ukuran aslinya.
3.2.4
Penggunaan Encoder dan Decoder JPEG Aplikasi ini akan menggunakan encoder dan decoder untuk file JPEG
dari pihak ketiga, yaitu encoder yang dibuat oleh James R. Weeks dari BioElectroMech (www.obrador.com -
[email protected].) dan decoder yang dibuat oleh Dr. Ortega dari University of Southern California (
[email protected] -
[email protected]).
3.2.5
Perancangan Struktur Menu Struktur menu utama pada Chimera F5 ini adalah inject data, extract
data dan exit. Inject data mempunyai sub menu select input file, select output file, select embedded file, set password, set quality, enter dan back. Extract data mempunyai sub menu select stego file, select output file, enter
58 password, enter dan back. Sedangkan menu enter pada inject data maupun extract data mempunyai submenu result.
Gambar 3.3. Perancangan Struktur Menu
3.2.6
Perancangan Layar dan Form 3.2.6.1
Perancangan Layar Awal Pada perancangan tampilan awal (gambar 3.1) terdapat
tiga tombol utama, yaitu btn inject, btn extract, dan btn exit.
Gambar 3.4. Perancangan Layar
59
3.2.6.2
Perancangan Layar Inject Data Pada perancangan layar inject data (gambar 3.2) terdapat
beberapa tombol, diantaranya btn input, btn output, btn password, btn embed, btn quality, btn enter, dan btn back. Selain itu terdapat dua textbox, yaitu embed path dan quality val. Di bawah btn password terdapat animasi dan di bagian bawah layar terdapat sedikit catatan penting mengenai path yang digunakan dalam proses inject data.
Gambar 3.5. Perancangan Layar Inject Data
60 3.2.6.1
Perancangan Form Input Image Pada perancangan Form input image (gambar 3.3) terdapat
sebuah textbox, yaitu input image path. Selain itu terdapat sebuah btn enter, dan di bagian bawah form terdapat sedikit catatan kecil mengenai path image yang digunakan.
Gambar 3.6. Perancangan Form Input Image
3.2.6.4
Perancangan Form Output Image Pada perancangan Form output image (gambar 3.4)
terdapat sebuah textbox, yaitu output image path. Selain itu terdapat sebuah btn enter, dan di bagian bawah form terdapat sedikit catatan kecil mengenai path image yang digunakan.
61
Gambar 3.7. Perancangan Form Output Image
3.2.6.5
Perancangan Form Embedded File Pada perancangan Form embedded file (gambar 3.5)
terdapat sebuah textbox, yaitu embedded path. Selain itu terdapat sebuah btn enter, dan di bagian bawah form terdapat sedikit catatan kecil mengenai embedded file path yang digunakan.
62
Gambar 3.8. Perancangan Form Embedded File
3.2.6.6
Perancangan Form Input Password Pada perancangan Form input password (gambar 3.6)
terdapat sebuah textbox, yaitu user password. Selain itu terdapat sebuah btn enter, dan di bagian bawah form terdapat sedikit catatan kecil mengenai password yang digunakan.
63
Gambar 3.9. Perancangan Form Input Password
3.2.6.7
Perancangan Form Compression Quality Pada perancangan Form Compression Quality (gambar
3.7) terdapat sebuah textbox, yaitu quality value. Selain itu terdapat sebuah btn enter, dan di bagian bawah form terdapat sedikit catatan kecil mengenai nilai quality yang digunakan.
64
Gambar 3.10. Perancangan Form Compression Quality
3.2.6.8
Perancangan Layar Extract Pada perancangan layar extract (gambar 3.8) terdapat
beberapa tombol, diantaranya btn input, btn output, btn password, btn enter, dan btn back. Selain itu terdapat btn password terdapat animasi dan bawahnya terdapat animasi. Di bagian bawah layar terdapat sedikit catatan penting mengenai path yang digunakan dalam proses ekstraksi data.
65
Gambar 3.11. Perancangan Layar Extract Data
3.2.6.9
Perancangan Form Input Stego File Pada perancangan Form Input Stego File (gambar 3.9)
terdapat sebuah textbox, yaitu stego file path. Selain itu terdapat sebuah btn enter, dan di bagian bawah form terdapat sedikit catatan kecil mengenai file stego yang digunakan.
66
Gambar 3.12. Perancangan Form Input Stego File
3.2.6.10
Perancangan Form Output Stego File Pada perancangan Form Output Stego File (gambar 3.10)
terdapat sebuah textbox, yaitu extracted file path. Selain itu terdapat sebuah btn enter, dan di bagian bawah form terdapat sedikit catatan kecil mengenai file hasil ekstraksi.
67
Gambar 3.13. Perancangan Form Output Stego File
3.2.6.11
Perancangan Form Extraction Password Pada perancangan Form Extraction Password (gambar
3.11) terdapat sebuah textbox, yaitu user password. Selain itu terdapat sebuah btn enter, dan di bagian bawah form terdapat sedikit catatan kecil mengenai password yang digunakan untuk proses ekstraksi data.
68
Gambar 3.14. Perancangan Form Extraction Password
3.2.6.12
Perancangan Layar Result Pada perancangan layar result (gambar 3.12) terdapat 2
buah animasi yang menunjukkan proses yang sedang berjalan.
Gambar 3.15. Perancangan Layar Result
69
3.2.6.13
Perancangan Layar Error Message Pada perancangan layar error message (gambar 3.13)
terdapat sebuah tombol, yaitu btn back. Selain itu juga terdapat sebuah animasi, yaitu message, yang menunjukkan pesan kesalahan.
Gambar 3.16. Perancangan Layar Error Message
3.2.6.14
Perancangan Layar Success Message Pada perancangan layar success message (gambar 3.14)
terdapat sebuah animasi yang menunjukkan pesan sukses.
70
Gambar 3.17. Perancangan Layar Success Message
3.2.7
Perancangan Flowchart 3.2.7.1
Perancangan Flowchart Modul Main Menu Modul ini merupakan perancangan tampilan utama
program. Pada saat program dijalankan pertama kali, akan dijalankan “kosong.exe” untuk mengosongkan seluruh input box. Kemudian user akan diberikan pilihan yaitu penyisipan, ekstraksi, atau keluar dari program. Jika user memilih inject (penyisipan), maka akan dijalankan modul inject data. Jika user memilih extract (ekstraksi), maka akan dijalankan modul extract data. Jika user memilih exit (keluar) maka program akan ditutup.
71 Start
Call kosong.exe
Animation
Wait For Selection
Selection = Inject
No
No
Selection = Extract
No
Selection = Exit
Yes
Yes
Yes
GotoAndPla y "Inject Data"
GotoAndPla y "Extract Data"
Quit
End
Gambar 3.18. Flowchart Modul Main Menu
3.2.7.2
Perancangan Flowchart Modul Inject Data Modul ini merupakan perancangan tampilan penyisipan
data. Jika user memilih “Insert Input File”, maka akan dijalankan “inputImage.exe”. Jika user memilih “Insert Output File”, maka akan dijalankan “output.exe”. Jika user memilih “Insert Embed File”, maka akan dijalankan “embed.exe”. Jika user memilih “Enter Password”, maka akan dijalankan “password.exe”. Jika
72 user
memilih
“Enter
Quality”,
maka
akan
dijalankan
“quality.exe”. Kelima parameter di atas bertujuan untuk mengisi seluruh input box yang diperlukan untuk proses penyisipan data. User bebas menentukan urutan pengisian kelima parameter tersebut. Jika user memilih “Back”, maka akan dijalankan modul main menu. Jika user memilih “Enter”, maka akan dilakukan validasi untuk memastikan bahwa seluruh parameter telah diisi. Jika kelima parameter sudah diisi, maka akan dijalankan modul result frame 1.
73 Inject Data
Animation
Wait For Selection
Selection = Insert Input File
No
Selection = Insert Output File
No
Selection = Insert Embedded File
No
Selection = Enter Password
Yes
Yes
Yes
Yes
Call "InputImage.Exe"
Call "Output.exe"
Call "Embed.exe"
Call "Password.exe"
No No
Selection = Enter
No
Selection = Back
No
Selection = Enter Quality
Yes
Yes
Yes
Validasi
GotoAndPla y"Main Menu"
Call "Quality.exe"
Yes GotoAndPla y "Result" Frame 1
Return
Gambar 3.19. Flowchart Modul Inject Data
No
74 3.2.7.3
Perancangan Flowchart Modul Extract Data Modul ini merupakan perancangan tampilan ekstraksi
data. Jika user memilih “Insert Stego File”, maka akan dijalankan “stegox.exe”. Jika user memilih “Insert Output File”, maka akan dijalankan “outputx.exe”. Jika user memilih “Enter Password”, maka akan dijalankan “passwordx.exe”. Ketiga parameter di atas bertujuan untuk mengisi seluruh input box yang diperlukan untuk proses ekstraksi data. User bebas menentukan urutan pengisian ketiga parameter tersebut. Jika user memilih “Back”, maka akan dijalankan modul main menu. Jika user memilih “Enter”, maka akan dilakukan validasi untuk memastikan bahwa seluruh parameter telah diisi oleh user. Jika ketiga parameter sudah diisi, maka akan dijalankan modul result frame 38.
75 Extract Data
Animation
Wait For Selection
Selection = Insert Stego File
No
No
Selection = Insert Output File
Selection = Enter Password
No
Yes
Yes
Yes
Call "Stegox.Exe"
Call "Outputx.exe"
Call "Passwordx.exe"
No No
Selection = Enter
No
Selection = Back
Yes
Yes
Validasi
GotoAndPla y"Main Menu"
Yes GotoAndPla y "Result" Frame 38
Return
Gambar 3.20. Flowchart Modul Extract Data
3.2.7.4
Perancangan Flowchart Modul Result Frame 1 Modul ini merupakan perancangan tampilan proses
penyisipan data yang sedang berlangsung dan hasil yang
76 diperoleh. Ketika modul dijalankan, akan dijalankan “stego.exe”. Jika hasil yang diperoleh adalah fail (gagal), maka akan ditampilkan pesan sesuai dengan kesalahan. Jika hasil yang diperoleh adalah success (sukses), maka akan ditampilkan pesan dan akan dijalankan modul main menu.
Result Frame 1
Call "Stego.exe"
Animation
Process = Fail
No
No
Process = Success
Yes
Yes
Error Message
Success Message No GotoAndPla y "Main Menu"
Selection = Back
Yes GotoAndPla y "Inject Data"
Return
Gambar 3.21. Flowchart Modul Result Frame 1
77
3.2.7.5
Perancangan Flowchart Modul Result Frame 38 Modul ini merupakan perancangan tampilan proses
ekstraksi data yang sedang berlangsung dan hasil yang diperoleh. Ketika modul dijalankan, akan dijalankan “extract.exe”. Jika hasil yang diperoleh adalah fail (gagal), maka akan ditampilkan pesan sesuai dengan kesalahan. Jika hasil yang diperoleh adalah success (sukses), maka akan ditampilkan pesan dan akan dijalankan modul main menu.
78 Result Frame 38
Call "Extract.exe"
Animation
No
No
Process = Fail
Process = Success
Yes
Yes
Error Message
Success Message No GotoAndPla y "Main Menu"
Selection = Back
Yes
GotoAndPla y "Extract Data"
Return
Gambar 3.22. Flowchart Modul Result Frame 38
3.2.7.6
Flowchart Modul Injeksi Modul ini adalah modul utama dalam aplikasi, modul ini
akan melakukan proses embedding ke dalam file JPEG ditengah – tengah proses kompresi. Oleh karena itu langkah pertama yang
79 harus dilakukan adalah menjalankan proses kompresi dan berhenti tepat setelah proses kuantisasi selesai. Seluruh koefisien DCT yang dihasilkan, baik yang bernilai nol atau tidak, kemudian dikumpulkan untuk diproses dengan algoritma F5. Aplikasi kemudian melakukan permutasi terhadap urutan koefisien tersebut berdasarkan password yang dimasukkan user. Aplikasi kemudian akan menghitung embedding rate, yaitu presentase data yang akan disisipkan dan kapasitas yang mampu ditampung oleh koefisien – koefisien DCT, dan menentukan nilai k yang akan digunakan dalam matrix encoding. Apabila file yang disisipkan melebihi kapasitas yang mampu ditampung maka k akan bernilai 0 dan modul ini akan mengirimkan pesan kepada GUI bahwa file tidak dapat disisipkan. Apabila k tidak bernilai 0 maka aplikasi akan memulai proses penyisipan. Aplikasi akan membaca file yang akan disisipkan bit demi bit, menambahkan Stego Header yang berisi informasi yang berupa nilai k (4 bit pertama) dan size dari file yang akan disisipkan (4 byte pertama), dan kemudian menuliskan ulang ke file sementara. File sementara itu akan dibaca pada saat matrix encoding sebagai input, setelah selesai aplikasi akan mengirimkan pesan kepada GUI bahwa file telah disisipkan. Aplikasi kemudian akan mengembalikan urutan seluruh koefisien yang telah
80 disisipkan data tersebut dan mengirimkannya kepada proses JPEG yang terputus untuk dilanjutkan ke tahap selanjutnya.
81 Injeksi
Start JPEG Compression
Stop JPEG Compression After Quantization
Get all DCT coefficients
Do Permutative Straddling
Calculate the Embedding Rate, k and n Value
k>0 No Yes Read Embedded File and write to Temporary File
Add Stego Header to Temporary File
Send Error Message to GUI
Do Matrix Encoding
Send Success Message to GUI
Continue JPEG Compression
Return
Gambar 3.23. Flowchart Modul Injeksi
82 3.2.7.7
Flowchart Modul Permutative Straddling Modul ini akan mengacak urutan koefisien DCT sehingga
data sisipan akan memiliki urutan yang tidak terbaca oleh user yang tidak memiliki password. Pertama-tama aplikasi akan membuat array yang berisi indeks, kemudian aplikasi akan mengacak 4 bilangan yang masing – masing berukuran 1 byte dan menjadikannya 1 nilai integer, apabila nilai ini lebih kecil atau lebih besar dari indeks maka akan dilakukan operasi matematik sehingga nilai menjadi terjangkau oleh batas indeks. Kemudian aplikasi akan menukar nilai pada indeks acak ini dengan nilai pada batas indeks, untuk mempercepat proses permutasi aplikasi akan memperkecil batas indeks dengan cara melakukan pengurangan, apabila batas indeks telah menjadi lebih kecil dari 2 aplikasi akan menghentikan permutasi.
83 Permutative Straddling
Create Array of index
Cntr = 0
Random 4 bytes as an Integer
Fit Random Integer to Index Range No Switch Array Value
Decrement Cntr
Cntr >= 2
Yes Return
Gambar 3.24. Flowchart Modul Permutative Stradling
3.2.7.8
Flowchart Modul Matrix Encoding Modul ini akan menyisipkan data ke dalam koefisien DCT
dengan operasi xor, langkah pertama adalah mengubah nilai indeks menjadi 0 di awal proses, kemudian aplikasi akan membaca k bit dari file yang akan disisipkan dan membaca n
84 koefisien DCT yang tidak bernilai 0 menurut urutan permutasi. Apabila seluruh koefisien telah habis terbaca maka aplikasi akan mengakhiri modul ini. Bit yang akan disisipkan akan di-xor dengan LSB dari koefisien DCT untuk menentukan posisi bit yang akan diubah, kemudian nilai absolut dari koefisien DCT pada posisi tersebut akan dikurangi, jika posisi bit bernilai 0 maka tidak akan bit yang diubah. Aplikasi akan memeriksa nilai bit yang diubah, jika bit yang diubah bernilai 0 maka proses diatas akan diulang dengan tidak mengikut-sertakan bit yang telah menjadi nol, namun jika bit yang diubah tidak bernilai 0 maka proses diatas akan diulang dengan koefisien – koefisien yang baru.
85 Matrix Encoding
Index = 0
Index + n
Read k bit of Embedded File
Use Permuted Sequence
Read n Non-Zero DCT Coefficients
Read All Coefficients ?
Yes
No
No XOR Embedded bit with DCT Coefficients
Calculate changeBit Index
Yes
Decrement DCT Coefficient at changeBit
Produce 0 ?
Return
Gambar 3.25. Flowchart Modul Matrix Encoding
86 3.2.7.9
Flowchart Modul Ekstraksi Modul ini digunakan untuk ekstraksi data yang disisipkan
pada file JPEG. Modul ini akan melakukan ekstraksi data ditengah – tengah proses dekompresi file JPEG, oleh karena itu pertamatama aplikasi akan memulai proses dekompresi dan berhenti tepat setelah pembalikan proses Huffman, kemudian semua Koefisien DCT yang didapat akan melalui proses de-ZigZag untuk mengembalikan urutannya yang diubah ketika memasuki tahap RLC pada saat kompresi, koefisien – koefisien tersebut kemudian akan dikumpulkan dan diproses untuk ekstraksi data. Aplikasi akan melakukan Permutative Straddling dengan cara yang sama seperti pada saat kompresi untuk mendapatkan urutan pembacaan yang benar. Berbeda dengan proses kompresi, aplikasi
tidak
akan
menghitung
embedding
rate
untuk
mendapatkan nilai k, tetapi membacanya langsung dari Stego Header yang ikut disisipkan dalam file JPEG dan kemudian menggunakannya untuk menghitung nilai n, selain nilai k aplikasi juga membaca size dari embedded file pada Stego Header. Selanjutnya aplikasi akan melakukan matrix decoding pada seluruh koefisien DCT dan menuliskan hasilnya sebagai file hasil dari proses ekstraksi sesuai dengan size-nya.
87 Ekstraksi
Start JPEG Decompression
Get all DCT coefficients
Do Permutative Straddling
Read k Value from the Stego Header
Calculate n value
Read Embedded size from the Stego Header
Do Matrix Decoding
Write to Extracted File using Embedded Size
Return
Gambar 3.26. Flowchart Modul Ekstraksi
3.2.7.10
Flowchart Modul Matrix Decoding Modul ini akan mengekstrak data dari koefisien DCT
dengan operasi xor, langkah pertama adalah membaca n koefisien DCT yang tidak bernilai 0 menurut urutan permutasi. Apabila
88 seluruh koefisien telah habis terbaca maka aplikasi akan mengakhiri modul ini. Aplikasi kemudian akan melakukan operasi xor terhadap koefisien – koefisien DCT tersebut dan menuliskan bit – bit yang diekstrak ke dalam file sementara, kemudian proses akan kembali ke langkah pertama sampai seluruh koefisien DCT habis terbaca.
Matrix Decoding
Use Permuted Sequence
Read n Non-Zero DCT Coefficients
Read All Coefficients ?
No
XOR DCT Coefficients Yes Write Extracted bit to Temporary File
Return
Gambar 3.27. Flowchart Modul Matrix Decoding
89 3.2.8
Perancangan Spesifikasi 3.2.8.1
Perancangan Spesifikasi Main Menu Main Menu Module View Main Screen Call “kosong.exe” Animation Wait for Selection If Selection is “Inject” Then gotoAndPlay “Inject Data” Else If Selection is “Extract” Then gotoAndPlay “Extract Data” Else If Selection is “Exit” Then Quit from Application End If End Module
3.2.8.2
Perancangan Spesifikasi Inject Data Inject Data Module View Main Screen Animation Load Variables from File
90 Wait for Selection If Selection is “Insert Input File” Then Call “inputImage.exe” Else If Selection is “Insert Output File” Then Call “output.exe” Else If Selection is “Specify Path” Then Call “embed.exe” Else If Selection is “Insert Password” Then Call “password.exe” Else If Selection is “SpecifyQuality” Then Call “quality.exe” Else If Selection is “Back” Then gotoAndPlay “Main Menu” Else If Selection is “Enter” Then If “Insert Input File” And “Insert Output File” And “Specify Path” And “Insert Password” And “Specify Quality” Are not empty gotoAndPlay “Result” Frame 1
91 End If End If End Module
3.2.8.3
Perancangan Spesifikasi Extract Data Extract Data Module View Main Screen Animation Load Variables from File Wait for Selection If Selection is “Insert Stego File” Then Call “stegox.exe” Else If Selection is “Insert Output File” Then Call “outputx.exe” Else If Selection is “Insert Password” Then Call “passwordx.exe” Else If Selection is “Back” Then gotoAndPlay “Main Menu” Else If Selection is “Enter” Then
92 If “Insert Stego File” And “Insert Output File” And “Insert Password” Are not empty gotoAndPlay “Result” Frame 38 End If End If End Module
3.2.8.4
Perancangan Spesifikasi Result Frame 1 Result Frame 1 Module View Main Screen Call “stego.exe” Load Variable from File Animation If Process is Fail Then View Message If Selection is “Back” Then gotoAndPlay ”Inject Data” End If Else If Process is Done Then View Message gotoAndPlay “Main Menu” End If End Module
93 3.2.8.5
Perancangan Spesifikasi Result Frame 38 Result Frame 38 Module View Main Screen Call “extract.exe” Load Variable from File Animation If Process is Fail Then View Message If Selection is “Back” Then gotoAndPlay ”Extract Data” End If Else If Process is Done Then View Message gotoAndPlay “Main Menu” End If End Module
3.2.8.6
Perancangan Spesifikasi Modul Injeksi Injeksi Module Start JPEG compression Stop JPEG compression after quantization Get all DCT coefficient Call “Permutative Straddling” Module
94 Calculate the embedding rate, k and n value If k > 0 then Send error message to GUI Goto continue JPEG compression End if Else then Read Embedded file and write to temporary file Add stego header to temporary file Call “Matrix Encoding” Module Send success message to GUI Goto continue JPEG compression End if Continue JPEG compression End module
3.2.8.6
Perancangan Spesifikasi Modul Ekstraksi Ekstraksi Module Start JPEG decompression Get all DCT coefficients Call “Permutative Straddling” Module Read k value from the Stego Header Calculate n value Read embedded size from the Stego header
95 Call “Matrix Decoding” Module Write to extracted file using embedded size End Module
3.2.8.7
Perancangan Spesifikasi Modul Matrix Encoding Matrix Encoding Module Set Index = 0 If Index != 0 and Module !produce 0 then Index + n Read k bit of embedded file Use permuted sequence Read n non-zero DCT coefficients If all coefficients read then Goto End Module Else then Xor embedded bit with DCT coefficients Calculate changBit index Decrement DCT coefficient at changeBit End if Check if Module produce 0 Goto If Index != 0 and Module !produce 0 End Module
96 3.2.8.8
Perancangan Spesifikasi Modul Matrix Decoding Matrix Decoding Module Use Permuted Sequence Read n non-zero DCT coefficients If all coefficients read then Goto End Module Else then Xor DCT coefficients Write extracted bit to temporary file End if Goto read n non-zero coefficients End Module
3.2.8.9
Perancangan Spesifikasi Modul Permutative Straddling Permutative Straddling Module Create array of index Set cntr = 0 Do Random 4 bytes as an integer Fit random integer to index range Switch array value Decrement cntr While cntr >= 2 End Module