BAB 2 LANDASAN TEORI 2.1 Teori Umum 2.1.1 Rekayasa Perangkat Lunak Menurut Pressman (2010, p.13), rekayasa perangkat lunak adalah pembentukan
dan
penggunaan
prinsip-prinsip
engineering
untuk
memperoleh perangkat lunak secara ekonomis yang handal dan dapat bekerja efisien pada mesin yang sesungguhnya. IEEE [IEE93a] telah mengembangkan definisi yang lebih komprehensif ketika menyatakan bahwa rekayasa perangkat lunak adalah aplikasi yang sistematik, disiplin, pendekatan kuantitatif untuk pengembangan, operasi, dan pemeliharaan perangkat lunak, yaitu dengan penerapan rekayasa pada perangkat lunak. Jika pendekatan ini diterapkan pada satu tim perangkat lunak mungkin akan memberatkan pada hal lainnya. Oleh karena itu kita juga membutuhkan penyesuaian dan kecerdasan.
Rekayasa perangkat lunak mempunyai sebuah proses kerangka. Kerangka proses ini menetapkan dasar bagi proses rekayasa perangkat lunak lengkap dengan mengidentifikasi sejumlah kecil aktivitas kerangka kerja yang berlaku untuk semua proyek perangkat lunak, terlepas dari ukuran atau kompleksitasnya. Secara umum kerangka proses untuk rekayasa perangkat lunak mencakup lima aktivitas (Pressman, 2010, p.15): • Communication Sebelum setiap pekerjaan teknis dimulai, sangat penting untuk berkomunikasi dan berkolabirasi dengan pelanggan dan stakeholder. 8
9
Tujuannya adalah untuk memahami tujuan stakeholder pada proyek dan membantu mendefinisikan fitur dan fungsi perangkat lunak. • Planning Perencanaan akan membantu memandu kita dalam mengerjakan proyek perangkat lunak kita. semua proyek yang kompleks dapat menjadi sederhana
dengan
adanya
perencanaan
kegiatan.
Perencanaan
menjelaskan tentang tugas-tugas teknis yang akan dilakukan, resiko yang mungkin terjadi, sumber daya apa yang dibutuhkan, produk kerja seperti apa yang dihasilkan, dan jadwal kerja yang akan dilaksanakan. • Modeling Dalam mengerjakan perangkat lunak, perlu menciptakan suatu permodelan untuk lebih memahami gambaran besar apa yang akan dikerjakan. Jika diperlukan, kita dapat memberbaiki permodelan kita menjadi lebih detail dalam upaya untuk lebih memahami masalah apa yang ada dan bagaimana kita kan mengatasinya. • Construction Kegiatan ini menggabungkan kode generasi (baik manual maupun otomatis) dan pengujian yang diperlukan untuk mengungkap kesalahan dalam kode. • Deployment Perangkat lunak (sebagai entitas lengkap atau sebagai sebagian yang selesai) dikirim ke pelanggan yang mengevaluasi produk yang disampaikan dan memberikan umpan balik berdasarkan evaluasi.
10
Salah satu proses model dalam rekayasa perangkat lunak adalah waterfall model, terkenal juga sebagai siklus hidup perangkat lunak. Waterfall model adalah contoh sebuah proses perencanaan yang bejalan, pada prinsipnya, anda harus merencanakan dan menjadwalkan semua kegiatan proses sebelum mulai bekerja memakai waterfall model. Tahap utama dari waterfall model langsung mencerminkan kegiatan pembangunan mendasar (Sommerville, 2011, p.30): 1. Requirements Analysis and Definition Pada tahap ini dilakukan konsultasi dengan pengguna sistem untuk menetapkan seperti apa sistem yang diinginkan. Setelah ini definisikan keinginan user secara rinci dan jalankan sebagai spesefikasi sistem. 2. System and Software Design Proses desain sistem mengalikasikan persyaratan yang baik untuk sofware atau hardware sistem dengan membentuk arsitektur sistem secara keseluruhan. Desain perangkat lunak melibatkan identifikasi dan menggambarkan abstraksi sistem sofware yang mendasar dan hubungan mereka. 3. Implementation and Unit Testing Selama tahapan ini, desain perangkat lunak direalisasikan sebagai satu set dari program atau unit program. Unit testing melibatkan verifikasi bahwa setiap unit memenuhi spesifikasinya. 4. Integration and System Testing Unit program individu atau program yang terintegrasi dan diuji sebagai sistem yang lengkap untuk memastikan bahwa persyaratan perangkat
11
lunak telah dipenuhi. Setelah pengujian, sistem perangkat lunak disampaikan kepada pelanggan. 5. Operation and Maintenance Biasanya, ini adalah fase terpanjang dari siklus hidup. Sistem terinstal dan
dimasukkan
ke dalam
penggunaan
praktis.
Pemeliharaan
melibatkan pengoreksian kesalahan yang tidak ditemukan pada tahaptahap awal dari siklus hidup, meningkatkan implementasi unit sistem dan meningkatkan layanan sistem sebagai persyaratan baru yang ditemukan. Requirements Definition
System and Software Design
Implementation and Unit Testing
Integration and System Testing
Operation and Maintenance
Gambar 2.1 Waterfall Model
2.1.2 Unified Modeling Language (UML) UML adalah sebuah bahasa standar untuk menulis perencanaan perangkat lunak. Sama seperti halnya arsitek bangunan membuat perencanan yang akan digunakan oleh perusahaan konstruksi, maka arsitek software membuat diagram UML untuk membantu pengembang perangkat lunak
12
membangun perangkat lunak (Pressman, 2010, p.841). Berikut ini adalah beberapa tipe diagram pada UML:
1. Use Case Diagram Use case diagram membantu menentukan fungsi dan fitur dari perangkat lunak dari perspektif pengguna. Use case menggambarkan bagaiman interaksi user dengan sistem dengan mendefinisikan langkah yang diperlukan untuk mencapai tujuan tertentu. Dan use case diagram merupakan gambaran dari semua use case dan bagaimana mereka berhubungan. Use case diagram memberikan gambaran besar dari fungsi sistem (Pressman, 2010, p.847).
Gambar 2.2 Contoh Use Case Diagram
2. Activity Diagram Sebuah activity diagram menunjukkan perilaku dinamis dari suatu sistem atau bagian dari sistem melalui aliran kontrol antara suatu tindakan dengan yang dikerjakan oleh sistem. Activity diagram mirip
13
dengan flow chart, hanya activity diagram dapat menunjukkan arus yang terjadi bersama-sama. Komponen utama dari suatu activity diagram adalah sebuah action node yang dilambangkan dengan persegi panjang. Action node berisi tugas-tugas yang dilakukan oleh sistem perangkat lunak. Kemudian panah dari satu node ke node lain menunjukkan aliran kontrol. Sedangkan node awal dilambangkan dengan titik atau bundaran hitam yang menandakan awal dimulainya kegiatan. Dan titik atau bundaran hitam yang dikelilingi oleh lingkaran menunjukkan akhir kegiatan (Pressman, 2010, p.853).
Gambar 2.3 Contoh Activity Diagram
3. Class Diagram Class diagram adalah kelas model yang terdiri dari atribut, operasi, dan hubungan dan asosiasi kelas dengan kelas lainnya. Class diagram memberikan pandangan statis atau struktural dari sebuah sistem. Tidak menunjukkan sifat dinamis dari komunikasi antara onjek dari kelas dalam diagram(Pressman, 2010, p.842).
14
Elemen utama dari sebuah class diagram adalah kotak, yang lambangnya digunakan untuk mewakili kelas dan antarmuka. Kotak akan dibagi menjadi tiga, dimana bagian atas merupakan nama kelas, bagian tengah adalah atribut, dan yang bagian bawah adalah operasi dari sebuah kelas.
Nama kelas - Atribut + Operasi Gambar 2.4 Contoh Class Diaram
4. Sequence Diagram Berbeda dengan class diagram yang menunjukkan struktur statis dari komponen software, sequence diagram digunakan untuk menunjukan komunikasi dinamis antara objek selama pelaksanaan tugas. Itu menunjukkan urutan temporal dalam pesan yang dikirim antara objek untuk menyelesaikan tugas itu. Penggunaan sequence diagram untuk menunjukkan interaksi dalam satu use case atau di salah satu skenario dari sistem perangkat lunak (Pressman, 2010, p.848).
15
Gambar 2.5 Contoh Sequence Diagram
2.1.3 Flow Chart Flow chart adalah gambaran dari langkah-langkah dan urutan-urutan prosedur dari sebuah program. Flow chart merupakan gambar atau diagram yang mempunyai aliran satu atau dua arah secara sekuensial. Flow chart berguna untuk merepresentasikan ataupun mendesain program. Flow chart juga berfungsi untuk memecahkan masalah menjadi bagianbagian yang lebih kecil dan memudahkan dalam menganalisis cara lain yang dapat digunakan dalam pengoperasian program.
2.1.4 Metode Evaluasi Kinerja Pengujian Kualitas data citra juga berkaitan dengan kemungkinan penyerangan steganografi dengan menggunakan metode visual attack.
16
Pengujian
dilakukan
dengan
melakukan
survey
pada
sejumlah
koresponden untuk menilai kualitas citra tersebut secara subjektif. Citra tersebut dianalisa untuk mengetahui distorsi yang terjadi pada citra dan bagaimana kualitas citra yang dihasilkan. Pengujian ini dilakukan dengan menggunakan HVS (Human Visual System) atau sistem penglihatan manusia (Piarsa, 2011). Pengujian dilakukan dengan mengukur MOS (Mean Opinion Score) sebagai berikut (Rojali, 2009): Tabel 2.1 Level Distorsi Pengukuran MOS Nilai
Level Distorsi
1
Sangat
2
Kualitas Gambar
Tidak Perbedaan antara cover image dan stego
Mirip
image sangat jelas
Tidak Mirip
antara cover image dan stego image ada perbedaan sedikit
3
Mirip
antara cover image dan stego image mirip
4
Sangat Mirip
antara cover image dan stego image sangat mirip atau tidak dapat dibedakan
Selain pengujian kualitas, dibutuhkan juga teknik teknik sampling. Salaah satu tenik sampling adalah teknik sampling probabilitas atau dikenal dengan random sampling digunakan untuk melakukan generasi hasil penelitian terhadap populasi walaupun data yang didapat hanya berasal dari sampel. Pada simple random sampling, satuan data sampling akan dipilih secara acak tanpa dilakukan pengelompokkan terlebih dahulu (Setiawan, 2005). Cara pengumpulan data dapat menggunakan kuisioner. Kuisioner adalah sejumlah pertanyaan dimana responden mengisi
17
jawaban-jawaban. Kuisioner merupakan teknik pengumpulan data yang efisien dimana peneliti mengetahui dengan tepat apa yang diminta dan bagaimana mengukur variabel-variabel (Rojali, 2009).
2.2 Teori Khusus 2.2.1 Steganografi Steganografi adalah sebuah mekanisme untuk melindungi data. Data yang akan dikirimkan dapat disisipkan melalui media pembawa. (Rojali, 2009). Dan menurut Baskara (2007), steganografi adalah ilmu dan seni yang mempelajari bagaimana menyembunyikan pesan rahasia ke suatu media sehingga pihak ketiga (selain pengirim dan penerima) tidak menyadari keberadaan pesan rahasia itu. Metode steganografi lebih banyak digunakan pada data digital dengan media teks, gambar, audio, dan video. Pada steganografi terdapat dua proses, yaitu proses penyisipan pesan dan proses ekstrasi pesan.
Proses penyisipan pesan memerlukan input berupa pesan yang akan disisipkan, media penyisipan, serta kunci atau cara untuk menyisipkan pesan. Kemudian output dari proses penyisipan adalah media yang sudah tersisipkan pesan. Sedangkan input yang diperlukan pada proses ekstraksi adalah media yang telah disisipkan pesan dan output dari proses ekstraksi yang dihasilkan adalah pesan yang disisipkan.
Dalam
steganografi
juga
perlu
memperhatikan
kriteria
penyembunyian data. Kriterianya antara lain (Munir, 2004):
dalam
18
1. Fidelity. Mutu citra yang menjadi media penyisipan tidak jauh berubah setelah ditambahkan data rahasia. Sehingga pengamat tidak mengetahui kalau di dalam citra tersebut terdapat data rahasia. 2. Robustness. Data yang disisipkan harus tahan terhadap manipulasi yang dilakukan terhadap citra yang dijadikan sebagai media penyisipan (seperti pengubahan kontras, penajaman, rotasi, dan sebagainya). Bila pada citra dilakukan operasi pengolahan citra, maka data yang disembunyikan tidak rusak. 3. Recovery. Data yang disisipkan harus dapat diekstrak kembali. Karena tujuan steganografi adalah data hiding, maka data yang disisipkan harus dapat diambil kembali untuk digunakan lebih lanjut.
2.2.2 Teknik Penyisipan dan Ekstraksi Berikut ini adalah model dasar dari metode steganografi menurut Zollner et al (1998):
Gambar 2.6 Model Penyisipan dan Ekstraksi
Dengan keterangan sebagai berikut: Cover: media gambar yang akan disisipkan pesan. Embed: Pesan yang akan disisipkan.
19
F(g): fungsi steganografi untuk menyisipkan. F(g)’: fungsi steganografi untuk mengekstraksi. Key: parameter dari F(g). Stego: gambar yang telah disisipkan pesan. Embed akan disisipkan kedalam Cover dengan menggunakan fungsi F(g). Kemudian, akan menghasilkan Stego¸ yang berisi pesan Embed. Lalu, fungsi F(g)’ akan mengekstraksi data yang disisipkan menjadi Embed* dan juga akan menghasilkan output berupa Cover*. Pada akhirnya, Embed* harus sama dengan Embed dan pada umumnya Cover* akan sama dengan Stego.
2.2.3 Metode PVD Pixel Value Differencing (PVD) adalah salah satu algoritma steganografi. Algoritma ini ditemukan pada tahun 2003 oleh Da-Chun Wu dan WenHsiang Tsai (Rojali, 2009). PVD merupakan teknik dengan memanfaatkan nilai perbedaan
dari
dua
piksel
berturut-turut.
Kapasitas
pesan
bersembunyi pada dua piksel yang bertutur-turut itu tergantung pada selisih kedua piksel itu. Dengan kata lain, daerah yang halus adalah daerah dimana data rahasia kurang bisa disembunyikan. Tetapi, jika semakin tepi suatu
daerah,
maka
semakin
banyak
juga
data
rahasia
dapat
disembunyikan. Ini karena degradasi kualitas stego-image yang lebih tidak terlihat oleh mata manusia (Wu et al, 2007).
Algoritma PVD adalah dengan sistem arah pencarian selisih dua piksel terdekat seperti pada gambar dibawah (Wu dan Tsai, 2003):
20
Gambar 2.7 Proses Penyisipan File Cover Secara Zig Zag.
Pada penelitian ini akan dimodifikasi pola pengambilan pikselnya dengan metode spiral. Untuk lebih jelas, akan dibahas pada bab 3.
Secara ringkas, ini lah algoritma dalam PVD: Algoritma Penyisipan Pada PVD 1) Hitunglah selisih piksel
, dimana
dan
adalah piksel yang akan disisipkan pesan. 2) Cari nilai dari tabel untuk mendapatkan sebagai batas bawah dan
sebagai batas atas pada tabel
, dengan .
3) Setelah itu, kita harus mencari nilai 4) Kemudian kita gunakan nilai
untuk menghitung berapa jumlah bit
yang bisa disisipkan dengan perhitungan: 5) Selanjutnya, ambil pesan sejumlah
bit dengan sesuai dengan
perhitungan diatas. 6) Lalu Konversikan pesan yang telah diambil ke dalam desimal. Nyatakan sebagai
.
21
7) Sesudah itu, kita harus menghitung nilai 8) Kemudian dari nilai
yang didapat, kita dapat memperoleh nilai
, dimana nilai m ini yang nantinya akan digunakan untuk menentukan nilai piksel setelah disisipkan pesan. dan
9) Hitung kedua nilai piksel
yang telah disisipkan pesan
dengan menggunakan tabel dan syarat yang ada pada 2.1.2. 10) Lakukan sampai semua pesan telah berhasil disisipkan ke dalam gambar.
Algoritma Ekstraksi Pada PVD 1)
Hitunglah selisih nilai
,
dan
dimana
adalah piksel yang telah disisipkan pesan. 2)
Kemudian cari nilai
yang merupakan nilai batas bawah pada tabel
dengan menggunakan nilai 3)
Lalu, hitunglah nilai
4)
Konversikan nilai
yang telah diperoleh. .
ke dalam biner, setelah itu gunakan perhitungan
untuk mengetahui seberapa panjang bit pesan yang harus diekstraksi. 5)
Lakukan sampai semua piksel telah berhasil diproses.
Syarat yang digunakan untuk menghitung nilai baru piksel yang dinyatakan sebagai
, adalah:
22
Untuk mengetahui batas bawah ( ) dan batas atas ( ) bagi selisih piksel dapat menggunakan tabel dibawah: Tabel 2.1 Tabel Jangkauan Selisih Piksel
Contoh kasus: Pesan yang ingin disisipkan adalah 1101100 kedalam sebuah gambar dengan nilai piksel sebagai berikut: 229 231 231 232 229 235 232 234 235 236 238 239 240 241 243 244
23
Cara menyisipkan pesan: Pesan pertama kali akan disisipkan ke piksel
dimana bernilai 229 dan
yang bernilai 231. Kemudian kita hitung selisih keduanya, yaitu ,
Setelah itu kita cari batas bawah
sebagai batas atas pada tabel
Sehingga didapat
dan
dan
Setelah itu, kita harus mencari nilai Lalu, kita baru dapat menghitung berapa jumlah bit yang bisa disisipkan Selanjutnya, ambil pesan
dengan perhitungan: sejumlah 3 bit, yaitu 110.
Kemudian konversikan 110 ke dalam desimal sebagai
. Sesudah
itu, kita harus menghitung nilai
Dari nilai
yang didapat, kita dapat memperoleh nilai Nilai m digunakan untuk menentukan nilai piksel setelah disisipkan pesan, dan
dengan syarat yang ada pada 2.1.2. Karena dan
(
,
<
maka syarat yang digunakan adalah
) =
Jadi, nilai
= 227 dan
= 233. Lakukan perhitungan cara penyisipan pesan sampai semua pesan telah berhasil disisipkan ke dalam gambar. Untuk piksel yang selanjutnya akan dihitung adalah
dan
seterusnya mengikuti cara pengambilan pikselnya.
,
dan
), dan
24
Cara mengekstraksi pesan: Jika kita ingin mengekstraksi pesan yang ada didalam gambar, maka kita perlu mengurutkan semua piksel pada gambar (yang telah disisipkan pesan) sesuai cara pengambilan pikselnya. Setelah itu kita hitung selisih nilai Kemudian kita cari bawah) pada tabel
sehingga didapat
menhitung nilai
Setelah itu, kita dapat Kemudian kita hitung nilai
Nilai mengetahui seberapa panjang
(batas
ini yang kita gunakan untuk
akan dikonversikan ke dalam biner, yaitu
sepanjang 3 bit. Berarti pesan yang disisipkan adalah 110. Proses ini akan terus diulang sampai semua piksel telah diperiksa.
2.2.4 Citra Digital Bertalya (2005) mengatakan citra digital dihasilkan melalui digitalisasi terhadap citra kontinu. Citra digital merupakan fungsi intensitas cahaya f(x,y), dimana harga x dan y merupakan koordinat spasial dan harga fungsi tersebut pada setiap titik (x,y) merupakan tingkat kecemerlangan (intensitas cahaya) pada titik tersebut. Citra digital juga dapat diartikan sebagai sebuah matriks dimana indeks baris dan kolomnya menyatakan suatu titik pada citra tersebut dan elemen matriksnya (disebut sebagai elemen gambar/ piksel) menyatakan tingkat keabuan pada titik tersebut.
25
Menurut Fatta (2007), Suatu citra adalah sekumpulan triplet yang terdiri atas variasi tingkat keterangan (brightness) dari elemen Red, Green, dan Blue (RGB). Setiap triplet akan menggambarkan sebuah piksel. Jika suatu triplet bernilai 67, 228, dan 180 berarti akan mengatur nilai Red = 67, Green = 228, dan Blue = 180. Pada format .bmp citra setiap piksel pada citra digambarkan dengan 24 bit (8 bit untuk Red, 8 bit untuk Green, dan 8 bit untuk Blue) .
2.2.5 Peak Signal To Noise Ratio Menurut Male et al (2012), Peak Signal To Noise Ratio (PSNR) merupakan perbandingan antara nilai maksimum dari sinyal yang diukur dengan berapa besarnya derau yang berpengaruh pada sinyal tersebut. PSNR digunakan untuk mengetahui perbandingan kualitas gambar sebelum dan sesudah disisipkan pesan. Satuan PSNR adalah desibel. Agar dapat menghitung PSNR, maka terlebih dahulu kita harus menghitung nilai MSE (Mean Square Error). MSE adalah nilai error kuadrat rata-rata antara citra cover dengan citra tersteganografi. Berikut ini adalah perhitungan MSE secara matematis:
Keterangan: MSE = Nilai Mean Square Error citra steganografi M = Panjang citra stego (dalam piksel) N = Lebar citra stego (dalam piksel) I(x,y) = Nilai piksel dari citra cover
26
I’(x,y) = Nilai piksel pada citra stego
Untuk gambar warna dengan komponen Red, Green, dan Blue nilai MSE secara keseluruhan merupakan jumlah MSE untuk setiap komponen Red, Green, dan Blue dibagi tiga. Jika sudah memperoleh nilai MSE, maka nilai PSNR dapat dihitung dengan cara sebagai berikut:
Dimana, MSE merupakan nilai MSE yang sudah dihitung sebelumnya dan MAXi adalah nilai maksimum dari piksel citra yang digunakan. Semakin rendah MSE maka akan semakin baik, dan semakin besar nilai PSNR maka akan semakin baik kualitas citra steganografi. Menurut Cole (2003), nilai PSNR dikatakan baik jika berada diatas nilai 20. Jadi, jika nilai PSNR dibawah nilai 20 distorsi yang terjadi sangat besar antara stego image dan cover image.