BAB II LANDASAN TEORI
Masalah keamanan merupakan salah satu aspek penting dari sebuah sistem informasi. Masalah keamanan sering kali kurang mendapata perhatian dari para perancang dan pengelola sistem informasi. Seringkalu masalah keamanan berada di urutan terakhir dalam daftar hal-hal dianggap penting bahkan berada setelah di urutan tampilan. 1.
Banyaknya terjadinya penukaran informasi setiap detik di internet,diiringi pula
dengan banyak terjadinya pencurian dari informasi itu sendiri oleh pihak yang tidak bertanggung jawab. Ancaman keamanan yang terjadi terhadap informasi adalah: 2.
Interupsi,yaitu ancaman terhadap ketersediaan data maupun informasi dengan
cara data atau informasi di dalam sistem dihapus atau dirusak. 3.
Penyadapan,yaitu ancaman keamanan terhadapa kerahasiaan data atau
informasi oleh pihak yang tidak berhak. 4.
Modifikasi,yaitu ancaman terhadap keamanan dengan cara menyadap
informasi kemudian diubah sesuai dengan keinginan pihak penyadapa tersebut. 5.
Fabrication, yaitu ancaman terhadap keamanan dengan cara memasulkan
infomasi dari orang lain sehingga orang yang menerima informasi tersebut mengira orang yang meniru itulah orang yang dikehendaki yang mengirim pesan tersebut. (Dony Arius,2007).
2.1
Definisi Kriptografi Kata Kriptografi berasal dari bahasa Yunani yang terdiri dari dua buah kata
yaitu crypto yang berarti rahasia dan graphia yang berarti tulisan. Berarti secara umum makna dari kata kriptografi adalaha tulisan rahasia. Kriptografi pada awalnya dijabarkan sebagai ilmu yang mempelajari bagaimana cara menyembunyikan pesan. Kriptografi merupakan ilmu yang bersandarkan pada teknik informatika untuk
6 http://digilib.mercubuana.ac.id/
berurusan dengan keamanan informasi seperti kerahasiaan ,keutuhan data dan otentikasi otentitas (Sadikin,2012). Secara umum kriptografi merupakan teknik pengamanan informasi yang dilakukan dengan cara mengolah informasi awal(plaintext) dengan suatu kunci tertentu menggunkaan suatu metode enkripsi tertentu sehingga menghasilkan suatu informasi baru (ciphertext) yang tidak dapat dibaca secara langsung . Ciphertext tersebut dapat dikembalikan menjadi informasi awal (plaintext) melalui proses deskripsi .Urutan proses kriptografi dapat dilihat pada gambar 2.1.
Gambar 2.1. Proses Kriptografi Secara Umum
2.2
Sejarah Kriptografi Kriptografi mempunyai sejarah yang panjang dan menakjubkan informasi yang
lengkap mengenai sejarah kriptografi dapat ditemukan didalam buku David Khan yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi,mulai dari penggunaan kriptografi oleh bangsa Mesir 4000 tahun yang lalu (berupa hieroglyph pada piramid) hingga penggunaan abda ke-20. Sebagian besar sejarah kriptografi bagian dari kriptografi klasik,yaitu metode kriptografi yang menggunakan kertas dan pensil atau menggunakan alat bantu mekanik yang sederhana. Kriptografi klasik secara umum dapat dikelompokkan menjadi dua kategori,yaitu algoritma transposisi ( transposition cipher ) dan algoritma subtitusi ( substitution cipher) . Algoritma transposisi adalah algoritma yang mengubah susunansusunan huruf didalam pesan,sedangkan algoritma subtitusi yaitu menganti setiap huruf atau kelompok huruf dengan sebuah huruf-huruf lain.
7 http://digilib.mercubuana.ac.id/
Penggunaan transposition cipher yaitu oleh tentara Sparta di Yunani pada permulaan tahun 400 SM. Mereka menggunakan apa yang dinamakan scytale (Gambar 2.2). Scytale terdiri dari sebuah kertas panjang dari daun papyrus yang dililitkan pada sebuah silinder dari diameter tertentu (diameter dari silinder merupakan kunci dari penyandian tersebut). Pesan ditulis baris per baris dam secara acak membentuk pesan rahasia (pesan yang ridak dapat dibaca). Agar pesan tersebut dapat dibaca,maka pesan tersebut kemabli dililitkan ke silinder yang diameternya sama dengan diameter silinder pengirim (Subagja, 2015).
Gambar 2.2. Scytale Contoh penggunaan algoritma subtitusi (substitution cipher) adalah pada Zaman Romawi Kuno, disaat Julius Caesar ingin mengirimkan sebuah pesan rahasai kepada seseorang Jendral dimedan perang. Pesan tersebut akan dikirimkan melalui seorang kurir. Karena tingkat kerahasaiaan pesan yang sangat tinggi, maka Julius Caesar tidak mai mengambil resiko jika pesan tersebut sampai ketangan musuh. Maka Caesar mensubtitusi pesan tersebut dengan cara mengganti huruf-huruf alphabet a menjadi b, d menjadi e, c menjadi f, dan seterusnya. Sebelumnya kunci dari pesan tesebut telah diberitahukan oleh Julius Caesar kepada Jendral yang akan menerima pesan tersebut. Dengan demikian, walaupun pesan tersebut jatuh ke pihak musuh, maka musuh tersebut tidak dapat membaca pesan tersebut. Pada abad ke -15, ditemukan kode roda (wheel cipher) oleh Leo Battista Alberti. Kode ini terus dikembangkan pada awalnya menjadi alat enkripsi dan deskripsi hingga saat ini. Metode ini dikembangkan pada awalnya oleh Thomas Jefferson yang kemudian diberi nama roda kode Jefferson. Kemudian kode ini kembangkan lagi oleh
8 http://digilib.mercubuana.ac.id/
Bazeries yang diberi nama silinder Bazeries. Alat ini lebih fleksibel , memungkinkan untuk dikembangkan lagi secara terus menerus untuk menghindar dari pemecah kode. Meskipun demikian metode ini teteap terus dikembangkan dan dianggap aman untuk kasus-kasus tertentu. Pada abad ke-20, kriptogarfi lebih banyak digunakan oleh kalangan militer. Pada perang dunia ke dua, pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan mesin enigma. Mesin ini menggunakan beberapa buah rotor (roda berputar), dan melakukan proses enkripsi yang sangat rumit. Enigma yang digunakan Jerman bisa mengenkripsi satu pesan dengan 15 milyar kemungkinan. Enigma termasuk kriptografi berbasis rotor yang dibangun dan dipatenkan oleh beberapa orang penemu dari Negara-negara yang berbeda dari tahun 1917 sampai 1921. Pihak Nazi Jerman percaya pesan yang dikirim oleh mesin Enigma tidak akan dapat terpecahkan oleh pihak Sekutu. Tetapi anggapan itu keliru karena pesan tersebut dapat dipecahkan oleh pihak Sekutu yang mengakibatkan pihak Nazi Jerman kalah dalam perang tersebut.
Gambar 2.3. Mesin Enigma Perkembangan peralatan komputer digital memicu terbentuknya kriptografi modern. Dengan komputer digital akan sangat mungkin untuk menghasilkan cipher yang lebih komplek dan rumit. Kriptografi klasik pada umumnya dienkripsi karakter per karakter (menggunakan alphabet tradisional), sedangkan kriptografi modern beroperasi pada string biner cipher yang lebih kopleks. Adapun tujuan kriptografi adalah sebagai berikut(Munir,2006) : 1.
Authentication (Otentikasi)
9 http://digilib.mercubuana.ac.id/
Adalah layanan yang berhubungan dengan identifikasi ,baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi maupun mengidentifikasi kebenaran sumber pesan. 2.
Data Integrity(Integritas Data)
Adalah layanan yang menjamin bahwa pesan masih asli atau belum pernah dimanipulasi selama pemgiriman. 3.
Non-repudation (Tanpa Pengyangkalan)
Adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan yaitu pengiriman atau peneriam pesan menyangkal telah menerima pesan. 4.
Confidentiality(Kerahasiaan)
Adalah layanan yang ditunjukkan untuk menjaga agar pesan tidak dapat dibaca.
2.3
Algoritma Kriptografi Algoritma ditinjau dari usul kata, kata algoritma mempunyai sejarah yang
menarik. Kata ini muncul di dalam kamus Webster sampai akhir tahun 1957 hanya menemukan kata algorism yang mempunyai arti proses perhitungan dengan Bahasa Arab. Algoritma berasal dari nama penulis buku Arab yang terkenal yaitu Abu Jaf`ar Muhammad Ibnu Musa Al-Khuwarizmi (Al-Khuwarizmi dibca oleh orang barat menjadi algorim). Kata algorism lambat laut berubah menjadi algoritm. Definisi terminologynya Algoritma adalah urutan langkah-langkah logis untuk penyelesaian masalah yang disusun secara sistematis. Algoritma kriptografi merupakan langkah-langkah logis bagaimana menyembunyikan pesan dari orang-orang yang tidak berhak atas pesan tersebut. Algoritma kriptografi terdiri dari tiga fungsi dasar yaitu: 1.
Enkripsi: Enkripsi merupakan hal yang sangat penting dalam kriptografi yang
merupakan pengamanan data yang dikirimkan terjaga kerahasiannya. Pesan asli disebut plaintext yang dirubah menjadi kode-kode yang tidak dimengerti. Enkripsi bisa diartikan dengan Cipher atau kode. Beda halnya dengan enkripsi, untuk merubah plaintext kedalam bentuk ciphertext kita menggunakan algoritma yang dapat mengkodekan data yang ingin kita inginkan. 10 http://digilib.mercubuana.ac.id/
2.
Deskripsi: deskripsi merupakan kebalikan dari enkripsi, yaitu pesan yang telah
dienkripsi dikembalikan kebentuk asalnya(Plaintext) disebut dengan deskripsi pesan. Algoritma yang digunakan untuk deskripsi tentu berbeda dengan yang digunakan untuk enkripsi 3.
Kunci: kunci yang dimaksud disni adalah kunci yang dipakai untuk melakukan
enkripsi dan deskripsi,kunci terbagi jadi dua bagian kunci yaitu kunci pribadi(private key) dan public key (public key).
2.3.1
Algoritma Simetris Algoritma ini juga sering disebut dengan allgoritma klasik karena memakai
kunci yang sama untuk kegiatan enkripsi dan deskripsinya.Algoritma ini sudah ada lebih dari 4000 tahun yang lalu. Mengirim pesan dengan menggunakan algoritma ini si penerima pesan harus diberitahu kunci dari pesan tersebut agar bisa mendeskripsikan pesan yang dikirim. Keamanan dari pesan yang menggunakan algoritma ini tergantung pada kunci, jika kunci tersebut diketahui oleh orang lain maka orang tersebut bisa melakukan enkripsi dan deskripsi terhadap pesan tersebut. Algoritma yang memakai kunci simetris diantaranya adalah: 1.
Data Encryption Standart (DES)
2.
RC2,RC4,RC5,RC6
3.
International Data Encryption Algorithm(IDEA)
4.
Advanced Encryption Standart (AES)
5.
One Time Pad (OTP)
6.
Triple DES
7.
Vignerre Chipher
8.
Dan lain sebagainya
Gambar 2.4 Algoritma Asimetris
11 http://digilib.mercubuana.ac.id/
2.3.2
Algoritma Asimetris Algortima asimetris sering juga sering disebut dengan algoritma kunci publik,
dengan arti kata kunci yang digunakan untuk melakukan enkripsi dan deskripsinya berbdea. Pada algoritma asimetri kunci terbagi menjadi dua bagian: 1.
Kunci Umum (public key) : Kunci yang boleh semua orang tahu.
2.
Kunci pribadi (private key): Kunci yang dirahasiakan (hanya boleh diketahui
oleh satu orang). Kunci kunci tersebut saling berhubungan satu dengan yang lainnya. Dengan kunci public orang dapat mengenkripsi pesan tapi tidak bisa mendeskripsikannya, hanya orang yang mempunyai kunci pribadi yang dapat mendeskripsikan pesan tersebut. Contoh Bob mengirim pesan kepada Alice mengunakan algoritma asimetris. Hal harus dilakukan adalah: 1.
Bob memberitahukan kunci publiknya ke Alice.
2.
Alice mengenkripsi pesan dengan menggunakan kunci public Bob.
3.
Bob mendeskripsi pesan dari Alice dengan kunci pribadinya.
4.
Dan begitu sebaliknya jika Bob ingin mengirim pesa ke Alice.
Algoritma yang memakai kunci asimetris yaitu Digital Signature Algorithm (DSA), RSA, Diffie-Hellman, Elliptic Curve Cryptography, dan lainnya.
12 http://digilib.mercubuana.ac.id/
2.4
Algoritma Elgamal Sistem kriptografi ElGamal menjadi populer ketika pengembang open source
software untuk kriptografi mencari alternatif dari RSA yang ketika itu patennya masih berlaku. Seperti halnya dengan Diffle-Hellman dan DSA, keamanan ElGamal didasarkan atas sukarnya mengkomputasi logaritma diskrit. Akan tetapi berbeda dengan Diffle-Hellman yang khusus dirancang untuk key agreement dan DSA yang khusus dirancang untuk digital signature, ElGamal lebih seperti RSA karena fungsinya untuk enkripsi umum. ElGamal menggunakan finite field GF(q) yang besar. Untuk memudahkan pembahasan, q = p, suatu bilangan prima yang sangat besar. Jika q = pn dimana n > 1 maka dalam pembahasan p harus diganti dengan q dan aritmatika yang digunakan bukan sekedar aritmatika modular bilangan bulat. Jadi disini finite field yang digunakan adalah GF(p). Suatu g κͺ 2 GF(p)* dipilih yang sebaiknya adalah suatu generator untuk GF(p)*. Jika bukan generator maka sebaiknya g mempunyai order yang sangat besar dalam GF(p)*. Untuk membuat kunci privat, pengguna memilih, menggunakan random number generator, a, dimana 0 < a < pΒ‘1. Kunci publik pasangan a adalah ga 2 GF(p)*. Tentunya kunci publik perlu disebar-luaskan. Seseorang yang mengetahui kunci publik tidak bisa mendapatkan kunci private (a) tanpa mengkomputasi logaritma diskrit dari ga. Seseorang yang ingin mengenkripsi suatu naskah P (representasi P menggunakan bilangan bulat harus lebih kecil dari p) untuk hanya dapat dIDEkripsi oleh pemilik a memilih, menggunakan suatu random number generator, k, dan mengirim pasangan kepada pemilik a. Ini dapat dilakukan karena pengirim mengetahui g, ππππ , P dan k. Seperti halnya dengan DSA, k disini berfungsi sebagai initialization vector. Pemilik a dapat mendekripsi kiriman sebagai berikut: ππ2 , ππππππππ
13 http://digilib.mercubuana.ac.id/
β’
Mengkomputasi (ππππ )^(ππ β 1 β ππ)= ππβππππ . Ini dapat dilakukan karena pemilik
a mengetahui ππππ ,p dan a. β’
Mengalikan ππππππππ dengan ππβππππ untuk mendapatkan P. Jadi ππππππππ
seolah naskah P menggunakan topeng atau mask, dan
mengalikannya dengan ππβππππ
membuka topeng tersebut. Satu hal yang menarik
dengan ElGamal adalah kemampuan untuk re-encryption. Jika g dan ππππ diketahui,
seseorang dapat membuat r secara acak dan mentransformasi pasangan ( ππππ , ππππππππ ) menjadi (( ππ(ππ+ππ) ), ππππππ(ππ+ππ) ) (kalikan g^k dengan g^r dan ππππππππ dengan ππππππ ). Jadi
initialization vector telah diganti dari k menjadi k+r, tanpa harus mengetahui k. Ini dapat
digunakan
untuk
anonimitas,
karena
tanpa mengetahui
a atau
r,
pasangan(( ππ(ππ+ππ) ), ππππππ(ππ+ππ) ) tidak dapat dikaitkan dengan ( ππππ , ππππππππ ) . Aplikasi anonimitas contohnya untuk electronic voting.
Seperti halnya dengan RSA, ElGamal dapat digunakan untuk digital signature. Berikut adalah cara pemilik a menanda-tangan suatu naskah S dimana representasi S menggunakan bilangan bulat lebih kecil dari p - 1: β’
Pilih, menggunakan random number generator, k yang koprima dengan p - 1
(gcd(k, p - 1) = 1). Lakukan komputasi r = ππππ mod p. β’ β’
Cari solusi untuk x dimana ππ π π = ππππππ ππ π₯π₯ ) (mod p). Digital signature untuk S adalah pasangan (r,x).
Solusi untuk x dapat dicari oleh pemilik a karena : ππ ππ = ππππππ ππ π₯π₯ (ππππππ ππ) = ππππππ ππππππ (ππππππ ππ) = ππππππ+ππππ (ππππππ ππ)
Ini berarti S = ar + kx (ππππππ ππ β 1), Jadi π₯π₯ = ππ βππ (ππ β ar)ππππππ ππ β 1
Dimana inverse dikalkulasi dalam aritmatika modulo p-1. Seseorang yang ingin memeriksa tanda tangan diatas cukup memeriksa bahwa ππ ππ = ππππππ ππ π₯π₯ (ππππππ ππ)
Ini dapat dilakukan oleh pemeriksa karena ia mengetahui g,S, g^a , r dan x.
14 http://digilib.mercubuana.ac.id/
2.5
Steganografi Istilah steganography berasal dari Bahasa Yunani, yaitu steganos yang berarti
penyamaran atau penyembunyian dan graphein yang berarti tulisan. Jadi, steganografi bisa diartikan sebagai seni menyamarkan/menyembunyikan pesan tertulis ke dalam pesan lainnya. Steganography dan cryptography adalah saudara sepupu dalam keluarga spycraft. Cryptography adalah pengacakan suatu pesan sehingga artinya tidak mudah dimengerti, sedangkan steganography berarti menghilangkan pesan sehingga pesan tersebut tidak dapat dilihat. Suatu pesan dalam chipertext tidak mungkin membangun kecurigaan pihak penerima karena suatu pesan yang dibuat menggunakan metode steganografi tidak akan kelihatan. (Ariyus, 2009). Steganografi menyembunyikan pesan dalam data lain tanpa mengubah data yang ditumpanginya tersebut sehinggga data yang ditumpanginyasebelum dan sesudah proses penyembunyian hampir terlihat sama. Plaintext disembunyikan dengan berbagai teknik, di antaranya: 1. Menandai karakter: menulis ulang pesa yang dipilih menggunakan pensil. Tanda yang ditulis di atas kertas tersebut tidak kelihatan, kecuali bila dipegang dan diarahkan ke tempat yang terang. 2. Tinta yang tidak kelihatan: menulis pesan menggunakan tinta khusus sehingga pesan yang ditulis tidak bisa dilihat kecuali menggunakan bahan kimia tertentu. 3. Pin puncture: melubangi pesan yang dikirim menggunakan peniti atau alat tertentu sehingga jika dilihat secara sekilas tidak terlihat adanya lubang pada pesan tersebut. Pesan bisa dibaca menggunakan lampu dengan sudut tertentu. 4. Memanipulasi pita pada mesin ketik: menggunakan garis antara dengan suatu pita hitam yang menghasilkan tulisan yang tidak bisa dilihat, kecuali menggunakan sorotan lampu yang benar-benar kuat. 5. Menulis pesan di atas panel kayu yang kemudian disembunyikan dengan cara melapisinya dengan lilin untuk menutupinya yang dikenal dengan istilah wax tablets. Menurut sejarah, metode penulisan tersebut pernah dilakukan oleh Demeratus (orang Yunani) pada tahun 400 sebelum masehi. 15 http://digilib.mercubuana.ac.id/
Pada dasarnya, terdapat tujuh teknik yang digunakan dalam steganografi, yaitu: 1. Injection Merupakan satu teknik menanamkan pesan rahasia secara langsung ke suatu media. Salah satu mesalah dari teknik ini adalah ukuran media yang diinjeksi menjadi lebih besar dari ukuran normalnya sehingga mudah dIDEteksi. Teknik itu sering juga disebut Embedding. 2. Subtitusi Data noral digantikan dengan data rahasia. Biasanya, hasil teknik itu tidak terlalu mengubah ukuran data asli, tetapi tergantung pada file media dan data yang akan disembunyikan. Teknik subtitusi bisa menurunkan kualitas media yang ditumpangi. 3. Transform Domain Teknik ini sangat efektik. Pada dasarnya, ransformasi domain menyembunyikan data pada βtransform spaceβ. Akan sangat lebih efektif bila teknik ini diterapkan pada file berekstensi Jpeg (gambar). 4. Spread Spectrum Sebuah teknik pentransmisian menggunakan pseudo-noise code, yang independen terhadap data informasi sebagai modulator bentuk gelombang untuk menyebarkan energi sinyal dalam sebuah jalur komunikasi informasi. Oleh penerima, sinyal dikumpulkan kembali mengunakan replika pseudo-noise code tersinkronisasi. 5. Statistical Method Teknik ini disebut juga skema steganographic 1 bit. Skema tersebut menanamkan satu bit informasi pasa media tumpangan dan mengubah statistic walaupun hanya 1 bit. Perubaha statistic ditunjukkan dengan indikasi 1 dan jika tidak ada perubahan, terlihat indikasi 0. System ini bekerja berdasarkan kemampuan penerima dalam membedakan informasi yang dimodifikasi dan yang belum. 6. Distortion Metode ini menciptakan perubahan atas benda yang ditumpangi oleh data rahasia. 7. Cover Generation Metode ini lebih unik daripada metode lainnya karena cover object diilih untuk menyembunyikan pesan. Contoh dari metode ini adalah Spam Mimic. 16 http://digilib.mercubuana.ac.id/
2.6 2.6.1
Metode Steganografi Least Significant Bit (LSB) Cara paling umum untuk menyembunyikan pesan adalah dengan
memanfaatkan Least Significant Bit (LSB). Walaupun terdapat kekurangan pada metode ini, tetapi kemudahan implementasinya membuat metode ini tetap digunakan sampai sekarang. Contoh ilustrasinya sebagai berikut: jika digunakan image 24 bit warna sebagai media, sebuah bit dari masing β masing komponen Red, Green, dan Blue, dapat digunakan sehingga 3 bit dapat disimpan pada setiap piksel. Sebuah image 800 x 600 piksel dapat digunakan untuk menyembunyikan 1.440.000 bit (180.000 bytes) data rahasia. Misalnya, di bawah ini terdapat 3 piksel dari image 24 bit warna: (00100111 11101001 11001000) (00100111 11001000 11101001) (11001000 00100111 11101001) Jika diinginkan untuk menyembunyikan karakter A (100000011) dihasilkan (00100111 11101000 11001000) (00100110 11001000 11101000) (11001000 00100111 11101001) Dapat dilihat bahwa hanya 3 bit saya yang perlu diubah untuk menyembunyikan karakter A ini. Jika pesan = 10 bit, maka jumlah byte yang digunakan = 10 byte. Contoh susunan byte yang lebih panjang: 00110011 10100010 11100010 10101011 00100110 10010110 11001001 11111001 10001000 10100011 Pesan = 1110010111 Hasil penyisipan pada bit LSB:
00110011 10100011 11100011 10101010 00100110 10010111 11001000 11111001 10001001 10100011 Pada metode LSB, ukuran data yang akan disembunyikan bergantung pada 17 http://digilib.mercubuana.ac.id/
ukuran cover-object. Perubahan pada LSB ini akan terlalu kecil untuk dideteksi oleh mata manusia sehingga pesan dapat disembunyikan secara efektif. Proses ekstraksi pesan dapat dengan mudah dilakukan dengan mengekstrak LSB dari masing β masing piksel pada stego secara berurutan dan menuliskannya ke output file yang akan berisi pesan tersebut. Keuntungan metode LSB adalah mudah dalam pengimplementasian dan proses encoding yang cepat. Pada perkembangannya metode steganografi LSB selain diterapkan pada media image, juga bisa diterapkan pada media audio.
2.6.2
Metode Masking dan Filtering Teknik masking dan filtering ini biasanya dibatasi pada image 24 bit color atau
image grayscale. Metode ini mirip dengan watermark, dimana suatu image diberi tanda (marking) untuk menyembunyikan pesan rahasia. Hal ini dapat dilakukan, misalnya dengan memodifikasi luminance beberapa bagian dari image. Walaupun metode ini akan mengubah tampilan dari image, dimungkinkan untuk melakukannya dengan cara tertentu sehingga mata manusia tidak melihat perbedaannya. Karena metode ini menggunakan aspek image yang memang terlihat langsung, metode ini akan lebih "robust" terhadap kompresi (terutama lossy compression), cropping, dan beberapa image processing lain, bila dibandingkan dengan metode modifikasi LSB.
2.6.3
Metode End Of File Teknik End Of File merupakan salah satu teknik yang digunakan dalam
steganografi. Teknik ini menggunakan cara dengan menyisipkan data pada akhir file. Teknik ini dapat digunakan untuk menyisipkan data yang ukuran sesuai dengan kebutuhan. Ukuran file yang telah disisipkan data sama dengan ukuran file sebelum disisipkan dan ditambah dengan ukuran data yang disisipkan ke dalam file tersebut. Dalam teknim ini, data tersebut disispkan pada akhir file dengan diberi tanda khusus sebagai pengenal start dari data tersebut dan pengenal akhir dari data tersebut(Wicaksono,Steganografi dengan beberapa Metode, 2010). Kelebihan dari metode EOF adalah tidak ada batasan dalam menambahkan informasi yang ingin disembunyikan, bahkan jika ukuran informasi itu melebihi ukuran 18 http://digilib.mercubuana.ac.id/
citra penampung. Data informasi akan disembunyikan/disisipkan pada akhir fule sehingga file image mungkin akan tampak ada perubahan pada aslinya. Dalam metode EOF data yang disisipkan akan diberi penanda khusus untuk menandakan awal dan akhir dari data tersebut. Contoh perhitungan yang dilakukan metode EOF adalah sebagai berikut. Misalkan pada sebuah citra grayscal 6x6 disisipkan pesan yang berbunyi βAkuβ dengan kode ASCII yaitu: 97 07 117 35 Misalkan matriks tingkat derajat kebutuhan citra sebagai berikut:
Gambar 2.5 Matriks derajat kebutuhan citra (sebelum dilakukan Steganografi) Kode biner sisispkan diakhir citra sehingga sebagai berikut:
Gambar 2.6 Matriks derajat kebutuhan citra (sesudah dilakukan Steganografi)
2.7
Citra File (Ariyus, Keamanan Multimedia, 2009) Pada komputer, suatu citra adalah suatu
array dari bilangan yang merepresentasikan intensitas terang pada point yang bervariasi (piksel). Piksel itu menghasilkan raster data gambar. Suatu ukuran gambar yang umum adalah 640 x 480 piksel dan 256 warna (atau 8 bit per piksel). Suatu citra akan berisi kira β kira 300 kilobyte data. Citra digital disimpan secara khusus di dalam file 24 bit atau 8 bit. Citra 24 bit menyediakan lebih banyak ruang untuk menyembunyikan informasi, bagaimanapun ruang itu, bisa sungguh besar (dengan pengecualian gambar JPEG). Semua variasi warna untuk piksel diperoleh dari 19 http://digilib.mercubuana.ac.id/
tiga warna dasar : merah, hijau, dan biru. Setiap warna dasar direpresentasikan dengan 1 byte; gambarr 24 bit menggunakan 3 byte per piksel untuk merepresentasikan suatu nilai warna. Tiga byte itu bisa direpresentasikan sebagai nilai heksadesimal, desimal, dan biner. Dalam banyak halaman Web, warna latar belakang direpresentasikan dengan bilangan 6 digit heksadesimal, yang aktualnya tiga ikatan merepresentasikan merah, hijau, dan biru. Latar belakang putih akan memiliki nilai FFFFFF: 100% merah (FF), 100% hijau (FF), dan 100% biru (FF). Nilai desimalnya 255,255,255 dan nilai binernya adalah 11111111, 11111111, 11111111, adalah tiga byte yang menghasilkan warna putih. Definisi latar belakang putih adalah analog dengan definisi warna dari piksel tunggal dalam suatu citra. Piksel merepresentasikan kontribusi pada ukuran file. Sebagai contoh, citra 24 bit dengan luas 1,024 piksel dan ketinggian 768 piksel, yang merupakan resolusi umum untuk grafik beresolusi tinggi, suatu citra memiliki definisi yang akan menghasilkan suatu kelebihan file 2 Megabyte. Oleh karena itu 24 bit masih relatif tidak umum pada internet, ukuran seperti itu akan menarik perhatian selama transmisi. Dengan begitu, kompresi file akan menguntungkan. Citra
file
paling
banyak
digunakan
sebagai
cover
image
untuk
menyembunyikan pesan rahasia pada format citra file seperti: 1.
JPG: 8 dan 24 bpp. Progresif dan baseline; faktor kompresi bisa disetel,
subsampling, memperlancar, dan kode optimisasi Huffman. 2.
GIF (Graphics Interchage Format): Non-interlaced GIF 89a only.
3.
BMP: Wondows dan OS/2; 2/8/16/24/32 bpp; RLE dan uncompressed.
4.
TIFF (Tag Image File Format): 1/2/4/8/12/16 bits per sample, 1-4 samples per
piksel dan support untuk multipage dokumen. 5.
PNG (Portable Network Graphics): semua sub-byte mendukung.
2.8
Citra Format JPEG Format citra JPEG paling banyak digunakan sebagai cover image karena citra
yang dihasilkan lebih baik daripada format lain. Suatu jenis kompresi gambar, yaitu JPEG, telah dikembangkan untuk digunakan sebagai alat kompresi yang efisien dan 20 http://digilib.mercubuana.ac.id/
fleksibel. Kompresi gambar JPEG memiliki empat mode operasi yang dirancang untuk mendukung berbagai aplikasi gambar diam dan berlanjut. Kebanyakan aplikasi menggunakan baseline coder/ decoder sekuensial yang sangat efektif dan cukup untuk berbagai aplikasi. JPEG bekerja dalam beberapa langkah seperti berikut. Pertama, piksel gambar ditransformasikan ke ruang warna luminance dan chrominance, lalu komponen chrominance di-downsample untuk mengurangi volume data. Downsampling itu bisa dilakukan karena mata manusia lebih sensitif terhadap perubahan luminance daripada perubahan chrominance. Selanjutnya, nilai piksel dikelompokkan ke dalam blokβblok 8 x 8 yang ditransformasikan menggunakan DCT (discrete cosine transform). Transformasi DCT akan menghasilkan peta frekuensi 8 x 8 yang berisi koefisien yang mewakili nilai rata β rata dalam blok dan frekuensi yang lebih tinggi berubah dalam blok tersebut secara berurutan. Masing β masing memiliki nilai yang dibagi koefisien kuantisasi dan hasilnya dibulatkan menjadi integer. Kuantisasi itu biasanya akan menimbulkan loss / kerugian yang disebabkan oleh JPEG. Banyak koefisien yang mewakili frekuensi lebih tinggi dikurangi menjadi nol. Hal itu bisa diterima karena data dengan frekuensi tinggi yang hilang tidak akan menimbulkan perubahan visual yang bisa terdeteksi dalam gambar. Koefisien yang berkurang kemudian dikodekan menggunakan Huffman coding untuk mengurangi ukuran data selanjutnya. Langkah itu tidak menimbulkan kerugian dan langkah terakhir dalam aplikasi JPEG adalah menambahkan data header dengan memberikan parameter yang akan digunakan oleh decoder untuk melakukan decoding.
2.9
Java Bahasa Java di gagas pertama kali oleh James Gosling, Patrick Naughton, Chris
Warth, Ed Frank, dan Mike Sheridan di Sun Microsystem, Inc pada tahun 1991. Butuh 18 bulan untuk mengembangkan versi pertama kali. Sebelumnya Bahasa Java dikenal dengan namaβ Oakβ, lalu diubah pada tahun 1995 menjadi βJavaβ. Dipertegahan pengimplementasian Oak pada musim Gugur 1992 dan pengenalan Java pada Umum pada musim Panas tahun 1995, banyak orang yang berkontribusi untuk desain dan pengembangan bahasa. Bill joy, Arthur van Holf, Jonathan Payne, Frank Yellin dan 21 http://digilib.mercubuana.ac.id/
Tim Lindholm adalah kunci penyumbang untuk menyempurnakan prototype awal. Pada 1993, anggota tim desain Java menemukan masalah yang jelas yaitu dengan ketika untuk membuat kode untuk embedded controller juga ditemukan saat ditempatkan untuk membuat kode untuk internet. Faktanya, masalah yang sama bahwa Java sebetulnya dIDEsain untuk memecahkan kode yang simple juga diaplikasikan ke Internet dalam skala yang besar. Karena itu, realisasi tersebut menyebabkan perhatian Java berubah dari elekronik computer ke pemrograman Internet. Jadi, sementara arsitektur bahasa pemrograman netral hanya memberikan percikan awal, Internet yeng menyebabkan keberhasilan yang luar biasa bagi Java.
Gambar 2.7. Logo Java
Karena kesamaannya antata java dan C++ , yang menempatkan Java sebagai βInternet Version of C++β yang simpel. Tetapi itu adalah anggapan salah. Java mempunyai filosofi dan penerapan yang sangat berbeda. Memang benar bahwa Java terpengaruhi oleh C ++, tetapi bukan penyempurnaan dari C++. Untuk contohnya, Java dari atas hingga bawah tidak kompatibel dengan C++. Tentu saja dengan kesamaan dengan C++ begitu penting, dan jika anda adalah programmer C++, maka anda akan berasa seperti di βrumahβ dengan Java. Satu poin lain yaitu adalah Java tidak di desain untuk menggantukan C++, tetapi hanya untuk mengatasi satu set tertentu dari masalah. C++ didesain untuk menyelesaikan sebuah set masalah yang berbeda.
22 http://digilib.mercubuana.ac.id/
2.10
Netbeans IDE Netbeans dimulai sebagai sebuah proyek mahasiswa (awalnya disebut Xelfi) di
Cekoslovakia, sekarang Republik Ceko, pada tahun 1996. Tujuannya adalah untuk menulis Delphi-seperti Java IDE (Integrated Development Environment) di Java. Xelfi adalah IDE yang pertama Java ditulis di Java, dengan pra-rilis pertama pada tahun 1997. Xelfi adalah proyek yang mudah untuk dikerjakan, terutama karena ruang Java IDE adalah wilayah yang belum dipetakan pada waktu itu. Proyek ini menarik minat cukup bahwa siswa, setelah mereka lulus, memutuskan bahwa mereka bisa memasarkannya sebagai produk komersial. Meminta sumber daya dari teman-teman dan kerabat untuk sebuah situs web, mereka membentuk sebuah perusahaan di sekitarnya. Segera setelah itu, mereka dihubungi oleh Roman Stanek, seorang pengusaha yang sudah terlibat dalam beberapa startups. Dia sedang mencari ide yang baik untuk berinvestasi dalam, dan menemukan Xelfi. Ia bertemu dengan para pendiri; mereka cocok, dan bisnis lahir. Rencana bisnis awal adalah untuk mengembangkan komponen networkenabled JavaBeans. Jaroslav Tulach, yang merancang arsitektur dasar IDE, datang dengan nama Netbeans untuk menggambarkan komponen apa yang akan dilakukan. IDE akan menjadi cara untuk menyampaikannya. Ketika spesifikasi untuk Enterprise Java Beans keluar, itu membuat lebih masuk akal untuk bekerja dengan standar untuk seperti komponen daripada menyelesaikannya dengan itu,tetapi mereka terjebak dengan nama.
Gambar2.8 Logo Netbeans
23 http://digilib.mercubuana.ac.id/
Pada musim semi tahun 1999, Netbeans DeveloperX2 dirilis, mendukung Swing. Perbaikan kinerja yang datang di JDK 1.3, dirilis pada musim gugur tahun 1999, membuat Netbeans menjadi pilihan yang layak untuk alat pengembangan. Pada musim panas tahun 1999, tim sedang bekerja keras mengearsitektur ulang DeveloperX2 ke Netbeans lebih modular yang membentuk dasar dari software saat ini. Sepanjang jalan, hal yang menarik terjadi. Orang-orang mulai membangun aplikasi menggunakan platform Netbeans IDE, bersama-sama dengan plugin mereka sendiri, terkadang mereka menciptakan aplikasi yang bukan alat pengembangan itu sama sekali. Bahkan, ini ternyata memiliki cukup pasar tersendiri . Sesuatu yang lain sedang terjadi pada musim panas 1999. Sun Microsystems menginginkan alat pengembangan Java yang lebih baik, dan menjadi tertarik pada Netbeans. Ini adalah mimpi yang menjadi kenyataan bagi tim Netbeans. Netbeans akan menjadi alat utama pembuat Java itu sendiri! Tetapi , dengan generasi berikutnya dari Netbeans Developer dalam versi beta, kesepakatan itu gagal. Sun Microsystems juga telah mengakuisisi perusahaan perangkat lain, Forte, pada saat yang sama, dan memutuskan untuk mengubah nama Netbeans Forte untuk Java. Nama Netbeans diistirahatkan untuk sementara waktu. Pada bulan Juni 2000, situs web Netbeans.org pertama kali diluncurkan. Ketika Oracle mengakuisisi Sun pada 2010, Netbeans menjadi bagian dari Oracle, yang terus mensponsori itu. Oracle aktif mencari para pengembang baru untuk bekerja di tim Netbeans dan melihat Netbeans IDE sebagai IDE resmi untuk Java Platform. Sebuah proyek open source adalah entitas hidup yang membutuhkan waktu untuk menemukan keseimbangan yang tepat dari orang-orang yang
berkontribusi, dan
pertumbuhannya selalu merupakan proses yang berkelanjutan. Tahun pertama (melalui Netbeans 3.2), proyek dihabiskan mencoba untuk menemukan dasarnya. Beberapa tahun ke depan yang orang-orang terlibat belajar tentang apa yang dikerjakan dalam hal proses open-source. (Dalam dua tahun pertama, proses pembangunan sangat terbuka yang lebih banyak waktu dihabiskan berdebat daripada menerapkan.) . Keterlambatan itu akhirnya terbayar. Dengan Netbeans 3.5, langkah besar dalam kinerja dibuat, dan tes dan proses dimasukkan ke dalam tempat 24 http://digilib.mercubuana.ac.id/
untuk mencegah regresi. Dengan 3.6, sistem windowing dan lembar properti yang implementasikan kembali, dan interface user yang diperbaiki lebih bersih dari versi sebelumnya. Netbeans 4 mengalami perubahan lengkap dalam cara IDE bekerja. Sebuah sistem proyek baru tidak hanya dirubah melalui pengalaman pengguna, tetapi juga memungkinkan untuk mengganti infrastruktur yang menopang Netbeans dikembalikan 1.
Netbeans 4.1 dirilis yang dibangun pada infrastruktur proyek baru dari 4.0, dan
menambahkan lebih banyak fitur dan dukungan penuh pada J2EE . 2.
Netbeans
5
memperkenalkan
dukungan
yang
komprehensif
untuk
mengembangkan modul IDE dan aplikasi penuh pada klien berdasarkan platform Netbeans; GUI builder yang intuitif (Matisse); dukungan CVS baru dan dIDEsain ulang; dukungan untuk Sun ApplicationServer 8.2, Weblogic 9 dan JBoss 4. 3.
Netbeans 6 difokuskan pada peningkatan produktivitas pengembang melalui
Editor untuk penulisan ulang, lebih cerdas dan lebih cepat, bersama-sama dengan integrasi produk Netbeans eksternal menjadi satu IDE. 4.
Netbeans 7 dirilis bersama-sama dengan JDK 7, menyediakan alat editor untuk
bekerja dengan konstruksi Bahasa JDK 7 yang baru, bersama-sama dengan dukungan untuk JavaFX 2.0, di 7.1, berbagai peningkatan kinerja seluruh IDE dalam 7.2, dan dukungan untuk aplikasi HTML5 di 7.3.
2.11
Rekayasa Perangkat Lunak Istilah Rekayasa Perangkat Lunak (RPL) secara umum disepakati sebagai
terjemahan dari istilah Software Engineering. Istilah Software Engineering mulai dipopulerkan tahun 1968 pada Software Engineering Conference yang diselenggarakan oleh NATO sebagian orang mengartikan RPL hanya sebatas pada bagaimana membuat program komputer. Padahal ada perbedaan yang mendasar antara perangkat lunak dan program komputer. Perangkat Lunak adalah seluruh perintah yang digunakan untuk memproses informasi. Perangkat lunak dapat berupa program atau prosedur. Program adalah kumpulan perintah yang dimengerti oleh komputer sedangkan prosedur adalah perintah yang dibutuhkan oleh pengguna dalam memproses informasi 25 http://digilib.mercubuana.ac.id/
(OβBrien, 1999). Rekayasa Perangkat Lunak (RPL) merupakan suatu disiplin ilmu yang membahas semua aspek produksi perangkat lunak, mulai dari tahap awal yaitu analisa kebutuhan pengguna, menentukan spesifikasi dari kebutuhan pengguna, disain, pengkodean, pengujian, sampai pemeliharaan sistem setelah digunakan. Tujuan RPL sendiri adalah memperoleh biaya produksi perangkat lunak yang rendah, menghasilkan perangkat lunak yang kinerjanya tinggi, andal dan tepat waktu serta menghasilkan perangkat lunak yang dapat bekerja pada berbagai jenis platform.
2.12
Rapid Application Development Rapid Application Development (RAD) adalah sebuah model proses
perkembangan software sekuensial linier yang menekankan siklus perkembangan yang sangat pendek. Model RAD ini merupakan adaptasi βkecepatan tinggiβ dari model sekuensial linier di mana perkembangan cepat dicapai dengan menggunakan pendekatan kontruksi berbasis komponen. Jika kebutuhan dipahami dengan baik. Proses RAD memungkinkan tim pengembangan menciptakan βsistem fungsional yang utuhβ dalam periode waktu yang sangat pendek (kira βkira 60 sampai 90 hari). Karena dipakai terutama pada aplikasi sistem kontruksi, pendekatanRAD melingkupi fase β fase sebagai berikut: 1.
Bussiness modeling
Aliran informasi di antara fungsi β fungsi bisnis dimodelkan dengan suatu cara untuk menjawab pertanyaan β pertanyaan berikut: informasi apa yang mengendalikan proses bisnis? Informasi apa yang dimunculkan? Siapa yang memunculkannya? Ke mana informasi itu pergi? Siapa yang memprosesnya?. 2.
Data Modeling
Aliran informasi yang dIDEfinisikan sebagai bagian dari fase bussiness modeling disaring ke dalam serangkaian objek data yang dibutuhkan untuk menopang bisnis tersebut. Karateristik (disebut artibut) masing β masing objek diIDEntifikasi dan hubungan antara objek β objek tersebut didefinisikan. 3.
Process Modeling
Aliran informasi yang didefinisikan di dalam fase data modeling ditransformasikan 26 http://digilib.mercubuana.ac.id/
untuk mencapai aliran informasi yang perlu bagi implementasi sebuah fungsi bisnis. Gambaran pemrosesan diciptakan untuk menambah, memodifikasi, menghapus, atau mendapatkan kembali sebuah objek data. 4.
Application Modeling
RAD mengasumsikan pemakaian teknik generasi keempat. Selain menciptakan perangkat lunak dengan menggunakan bahasa pemograman generasi ketiga yang konvensional, RAD lebih banyak memproses kerja untuk memakai lagi komponen program yang ada (pada saat memungkinkan) atau menciptkan komponen yang bisa dipakai lagi (bila perlu). Pada semua kasus, alat β alat bantu otomatis dipakai untuk memfasilitasi kontruksi perangkat lunak. 5.
Testing and turnover
Karena proses RAD menekankan pada pemakaian kembali, banyak komponen program telah diuji. Hal ini mengurangi keseluruhan waktu pengujian. Tetapi komponen baru harus diuji dan semua interface harus dilatih secara penuh. (Pressman, 2012).
2.12
Flowchart Flowchart adalah representasi grafis dan langkah β langkah yang harus diikuti
dalam menyelesaikan suatu permasalahan yang terdiri dari sekumpulan symbol, di mana masing β masing symbol merepresentasikan kegiatan tertentu Flowchart menolong analis dan programmer untuk memecahkan masalah ke dalam segmen β segmen yang lebih kecil dan menolong dalam menganalisis alternative β alternative dalam pengoperasian. (Yatini, 2010). Flowchart diawali dengan penerimaan input dan diakhiri dengan penampilan output. Flowchart adalah suatu gambaran yang menjelaskan urutan: 1.
Pembacaan data.
2.
Pemrosesan data.
3.
Pengambilan keputusan terhadap data.
4.
Penyajian hasil pemrosesan data.
27 http://digilib.mercubuana.ac.id/
Jenisβ Jenis Flowchart Flowchart terbagi dalam lima jenis, yaitu: 1.
Flowchart Sistem
Flowchart ini merupakan bagan yang menunjukkan alur kerja atau apa yang sedang dikerjakan di dalam system secara keseluruhan dan menjelaskan urutan dari prosedur β prosedur yang ada dalam system. Secara global Flowchart system dapat dikatakan merupakan deskripsi secara grafik dari urutan prosedur β prosedur yang terkombinasi yang membentuk suatu system. 2.
Flowchart Dokumen
Flowchart ini menelusuri alur data yang ditulis melalui system. Kegunaan utamanya adalah untuk menelusuri alur form dan laporan system dari satu bagian ke bagian lain baik bagaiman alur form dan laporan diproses, dicatat dan disimpan 3.
Flowchart Skematik
Flowchart ini mirip dengan Flowchart system, yang menggambarkan suatu system atau prosedur. Flowchart skematik tidak hanya menggunakan gambar β gambar computer, peripheral, form β form atau peralatan lain yang digunakan dalam system. Kegunaan dari Flowchart skematik sebagai alat komunikasi Antara analis system dengan seorang yang tidak familiar dengan symbol β symbol Flowchart konvensional. Pemakaian gambar sebagai ganti dari symbol β symbol Flowchart akan menghemat waktu yang dibutuhkan oleh seseorang untuk mempelajari symbol abstrak sebelum dapat mengerti Flowchart. 4.
Flowchart Program
Flowchart ini dihasilkan dari Flowchart system. Flowchart program merupakan keterangan yang lebih rinci tentang bagaimana setiap langkah program atau prosedur sesungguhnya dilaksanakan. Flowchart ini menunjukkan setiap langkah program atau prosedur dalam urutan yang tepat saat terjadi. Seorang programmer menggunakan Flowchart program untuk menggambarkan urutan intruksi dari program computer, sedangkan seorang analis menggunakan Flowchart program untuk menggambarkan urutan tugas β tugas pekerjaan dalam suatu prosedur atau operasi. 5.
Flowchart Proses 28 http://digilib.mercubuana.ac.id/
Flowchart ini merupakan teknik penggambaran rekayasa industrial yang memecahkan dan menganalisis langkah β langkah selanjutnya dalam suatu prosedur atau system.
Gambar 2.9 Simbol Flowchart
29 http://digilib.mercubuana.ac.id/
2.13
Metode Pengujian Pengujian perangkat lunak adalah elemen kritis dari jaminan kualitas perangkat
lunak dan merepresentasikan kajian pokok dari spesifikasi, desain, dan pengkodean. 2.12
Pengujian Black box Pengujian black-box berfokus pada persyaratan fungsional perangkat lunak.
Dengan
demikian,
pengujian
black-box
memungkinkan
perekayasa
lunak
mendapatkan serangkaian kondisi input yang sepenuhnya menggunakan semua persyaratan fungsional untuk suatu program. Pengujian black box bukan merupakan alternatif dari teknik white-box, tetapi merupakan pendekatan komplementar yang kemungkinan besar mampu mengungkap kelas kesalahan daripada metode white-box. Pengujian black-box berusaha menemukan kesalahan dalam kategori sebagai berikut: (1) fungsi β fungsi yang tidak benar atau hilang, (2) kesalahan interface, (3) kesalahan dalam struktur data atau akses database eksternal, (4) kesalahan kinerja, (5) inisialisasi dan kesalhan terminasi. Pengujian white-box yang dilakukan pada saat awal proses pengujian, pengujian black-box cenderung diaplikasikan selama tahap akhir pengujian Karena pengujian black-box memperhatikan struktur kontrol, maka perhatian berfokus pada domain informasi. Pengujian didesain untuk menjawab pertanyaan β pertanyaan berikut: 1.
Bagaimana validitas fungsional diuji?
2.
Kelas input apa yang akan membuat test case menjadi baik?
3.
Apakah sistem sangat sensitif terhadap harga input tertentu?
4.
Bagaimana batasan dari suatu data diisolasi?
5.
Apa pengaruh kombinasi tertentu dari data terhadap operasi sistem?
Dengan mengaplikasikan teknik black-box, maka kita menarik serangkaian test case yang memenuhi kriteria berikut ini: (1) test case yang mengurangi, dengan harga lebih dari satu, jumlah test case tambahan yang harus desain untuk mencapai pengujian yang dapat dipertanggungjawabkan, dan (2) test case yang memberitahu kita sesuatu mengenai kehadiran atau ketidakhadiran kelas kesalahan, daripada memberitahu kesalahan yang berhubungan hanya dengan pengujian spesifik yang ada. (Pressman, 2012) 30 http://digilib.mercubuana.ac.id/