BAB 2 Landasan Teori 2.1
Teori Umum Teori-teori pokok yang merupakan teori-teori landasan bagi teori-teori lainnya yang terdapat dalam skripsi ini, yaitu:
2.1.1 Kriptografi Kriptografi menurut definisi yang dikemukakan oleh Bruce Schneier dalam bukunya Applied Cryptography (1996) : Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan (Cryptography is the art and science of keeping messages secure). Kriptografi juga dapat didefinisikan sebagai ilmu yang mempelajari bagaimana mengacak pesan dan mengembalikannya ke bentuk semula. Pengacakan pesan dapat dilakukan dengan kunci atau kata sandi yang ditetapkan. Dalam dunia teknologi sekarang ini, keamanan data dalam melakukan pertukaran data telah menjadi suatu keharusan. Untuk mengamankan data tersebut, maka dilakukan suatu teknik penyamaran data. Teknik penyamaran data seperti ini disebut enkripsi dan teknik untuk mengembalikannya disebut dekripsi. Menurut Ariyus (2009), kriptografi terdiri dari beberapa komponen seperti: a. Plaintext, atau sering disebut juga cleartext, merupakan pesan bermakna yang ditulis atau pesan asli sebelum dilakukan enkripsi menjadi chipertext. b. Ciphertext, merupakan pesan yang sudah melalui proses enkripsi. Pesan yang ada pada ciphertext tidak dapat dibaca karena berisi karakterkarakter yang tidak memiliki makna/arti. c. Enkripsi, yaitu sebuah proses yang mengubah plaintext menjadi bentuk chipertext dengan menggunakan algoritma-algoritma tertentu. d. Dekripsi, merupakan kebalikan dari proses enkripsi, yaitu sebuah proses untuk mengembalikan ciphertext menjadi plaintext kembali. Algoritma 9
10
yang digunakan untuk melakukan dekripsi tentu saja berbeda dengan algoritma enkripsi yang digunakan. e. Kunci, atau key. Kunci yang dimaksud adalah kunci yang dipakai untuk melakukan enkripsi atau dekripsi. Kunci terbagi menjadi dua bagian, yaitu kunci pribadi (private key) dan kunci umum (public key). f. Pesan, dapat berupa data atau informasi yang dikirim (melalui kurir, saluran komunikasi data, dan sebagainya) atau yang disimpan dalam media penyimpanan (kertas, storage, disket, dan lain-lain). g. Kriptanalisis (cryptanalysis), yang bisa diartikan sebagai analisis sandi atau suatu ilmu untuk mendapatkan plaintext dari sebuah ciphertext tanpa harus mengetahui kunci secara wajar. Dengan menganalisa sandi, maka dapat ditemukan kelemahan-kelemahan yang dimiliki oleh algoritma kriptografi tersebut.
Gambar 2.1 Skema Umum Enkripsi dan Dekripsi 2.1.1.1
Sejarah Kriptografi Secara etimologi asal mula kata kriptografi berasal dari bahasa Yunani, kryptós artinya tersembunyi atau tidak kelihatan dan graphein yang berarti sesuatu yang tertulis. Sehingga kriptografi dapat di artikan sebagai pesan yang tertulis dengan secara tersembunyi atau rahasia. Kriptografi memiliki sejarah yang panjang dan mengagumkan. Kriptografi sudah terlihat pada tahun 3000 SM yang digunakan oleh bangsa Mesir. Mereka menggunakan hieroglyphcs untuk menyembunyikan tulisan dari mereka yang tidak diharapkan. Hieroglyphcs berasal dari bangsa Yunani, kata hieroglyphica yang berarti ukiran rahasia.
11
Di tahun 50 SM, Julius Caesar, kaisar Roma, menggunakan cipher substitusi untuk mengirim pesan. Tujuan awal pembuatan pesan dengan kode cipher oleh Julius Caesar agar pesan yang dibawa kurir pada saat perang tidak dapat dibaca andai pesan tersebut jatuh ke tangan musuh. Oleh karena ide pemikiran tersebut, Julius Caesar dianggap bapak dari kriptografi. Kemudian kode sandi mulai banyak dipergunakan dan terkenal serta berkembang hingga sekarang ini. Pada cipher ini, huruf- huruf alfabet disubstitusi dengan hurufhuruf yang lain pada alfabet yang sama. Karena hanya satu alfabet yang digunakan, cipher ini merupakan substitusi monoalfabetik. Awalnya kriptografi hanya khusus di gunakan oleh badan-badan intelejen dunia, untuk mengamankan komunikasi mereka. Namun, seperti yang kita lihat sekarang kriptografi sudah menyebar luas diiringi perkembangan teknologi. Sekarang hampir semua service
di internet menggunakan kriptografi.
Kriptografi bukan lagi menjadi monopoli militer atau badan-badan intelejen. 2.1.1.2 Algoritma Kriptografi Secara umum, algoritma kriptografi terbagi menjadi dua kategori, yaitu algoritma kunci simetris (symmetric key algorithm) dan algoritma kunci asimetris (asymmetric key algorithm). Berikut adalah penjelasan algoritmaalgoritma tersebut: a. Algoritma Kunci Simetris Algoritma kunci simetris (symmetric key algorithm) adalah algoritma kriptografi dimana kunci untuk melakukan enkripsi dan dekripsi adalah kunci yang sama. Contoh dari algoritma ini adalah Twofish, Rijndael, Camellia, dan lain sebagainya. Kelebihan dari algoritma ini adalah: -
Kecepatan operasi lebih tinggi bila dibandingkan dengan algoritma kunci asimetris.
-
Karena kecepatannya yang cukup tinggi, maka dapat digunakan pada sistem real-time.
Sedangkan kelemahannya adalah:
12
-
Setiap pengiriman pesan dengan pengguna yang berbeda maka dibutuhkan kunci yang berbeda pula. Hal ini menyebabkan terjadi kesulitan dalam manajemen kunci tersebut.
-
Permasalahan dalam pengiriman kunci itu sendiri, atau yang disebut juga “key distribution problem”.
b. Algoritma Kunci Asimetris Algoritma kunci asimetris (asymmetric key algorithm), atau disebut juga sebagai kriptografi kunci publik (public key cryptography), adalah suatu algoritma kriptografi dimana dibutuhkan dua kunci yang berbeda, kunci untuk enkripsi dan kunci untuk dekripsi. Kunci enkripsi dinamakan sebagai kunci publik (public key) yaitu kunci yang bebas diketahui oleh siapapun, sedangkan kunci dekripsi dinamakan sebagai kunci pribadi (private key) yaitu kunci yang hanya boleh diketahui oleh penerima pesan. Contoh dari algoritma ini adalah RSA, El Gamal, elliptic curve cryptography, dan lainlain. Kelebihan dari algoritma kunci asimetris adalah: -
Masalah keamanan pada distribusi kunci lebih baik dibanding algoritma kunci simetris.
-
Masalah manajemen kunci yang lebih baik, karena jumlah kunci yang dibutuhkan lebih sedikit.
Sedangkan kelemahannya adalah: -
Kecepatan operasi yang lebih rendah dibanding algoritma kunci simetris.
-
Untuk tingkat keamanan yang sama, kunci yang dibutuhkan lebih panjang dibandingkan dengan algoritma kunci simetris. Algoritma kunci simetris sendiri dapat dibagi kembali menjadi dua
bagian, yaitu algoritma Stream Cipher dan algoritma Block Cipher. Berikut adalah penjelasannya: a. Algoritma Stream Cipher
13
Algoritma stream cipher (aliran cipher) melakukan operasi enkripsi plaintext menjadi ciphertext dalam operasi bit per bit (1 bit setiap kali transformasi). Bit-bit kunci untuk enkripsi/dekripsi disebut sebagai keystream yang dibangkitkan oleh keystream generator, yang biasanya dilakukan dengan melakukan operasi XOR (exclusive-or). b. Algoritma Block Cipher Dalam algoritma block cipher, operasi tidak dikerjakan dalam bit per bit, tetapi dikelompokkan dalam sebuah blok. Jadi bit-bit dari plaintext akan dibagi-bagi menjadi blok-blok dengan panjang yang sama, contohnya 64 bit. Panjang kunci enkripsi pada algoritma ini akan sama persis dengan panjang blok yang dibuat. Kemudian enkripsi dilakukan terhadap blok-blok bit dari plaintext menggunakan bit-bit kunci. Algoritma ini menghasilkan blok ciphertext yang panjangnya sama dengan blok plaintext. 2.1.2
Steganografi Steganografi secara etimologi berasal dari bahasa Yunani, yaitu steganos yang artinya tersembunyi, dan graphein yang artinya adalah tulisan. Secara keseluruhan steganografi berarti “tulisan tersembunyi” (cover writing).
Steganografi
dapat
diartikan
sebagai
ilmu
dan
seni
menyembunyikan pesan rahasia (hidden message) sedemikan rupa sehingga tidak terdeteksi oleh indra manusia, dan selain pengirim dan penerima tidak ada yang mengetahui atau menyadari keberadaan pesan rahasia tersebut. 2.1.2.1 Sejarah Steganografi Steganografi pertama kali di gunakan oleh Herodotus (485-525 BC), penguasa yunani. Pada masa perang antara kerajaan Persia dan Yunani, Herodotus ingin mengirimkan pesan dengan cara mencukur kepala budak dan menulis pesan dikepala budak. Saat rambutnya sudah tumbuh, budak tersebut dikirim untuk menyampaikan pesan sehingga tidak menimbulkan kecurigaan oleh bangsa Persia. Bangsa Romawi mengenal steganografi dengan menggunakan tinta transparan (invisible ink). Pliny the Elder (AD 23-79) adalah tokoh di balik
14
penggunaan tinta transparan tersebut. Ia menjelaskan bahwa susu dari tumbuhan thithymallyus menjadi transparan saat dikeringkan di atas kertas, namun akan terlihat lebih berwarna coklat saat di panaskan. Penggunaan steganografi oleh bangsa Cina kuno dilakukan dengan menulis pesan rahasia di potongan kecil sutra, yang kemudian di bentuk menjadi gumpalan bola kecil yang kemudian dilapisi dengan lilin yang kemudian ditelan oleh si pembawa pesan. Giovanni
Battista
Porta
(1535-1615)
menjelaskan
bagaimana
menyembunyikan pesan pada telur rebus yang masih bercangkang dengan cara menulis di cangkang menggunakan tinta khusus, yang di buat menggunakan alum (bahan kimia) dan cuka. Tinta tersebut akan masuk ke pori dari cangkang, dan tidak meninggalkan jejak terlihat pada permukaan. Untuk mengetahui pesan tersebut, harus membuka cangkang telur, dan pesannya berada di albumen (putih telur). 2.1.3
Multimedia File
2.1.3.1 Audio Saat ini jenis file audio yang populer digunakan orang adalah file audio dengan jenis format WAV dan MP3. Menurut Margaret Rouse (2005), WAVE (Waveform Audio File Format) atau lebih dikenal sebagai file WAV, adalah tipe format uncompressed audio (tidak terkompresi) yang diciptakan oleh Microsoft. Sampai saat ini, format WAV masih menjadi standar file audio untuk sistem operasi Windows. Format WAV juga masih banyak digunakan untuk berbagai fungsi, seperti latar belakang suara untuk game. Extensi dari file Wave adalah WAV (*.wav). Dengan sifatnya yang tidak terkompresi, maka untuk ukuran file WAV pada umumnya cukup besar dibandingkan format file audio lainnya. Format file compressed audio MP3 dikembangkan oleh Dieter Seitzer dan Heinz Gerhauser, Fraunhofer Institute, Erlangen, Jerman. Secara teknis file MP3 disebut MPEG-1 Audio Layer 3. Algoritma Layer 3 yang dihasilkan memampatkan atau mengkompresi musik dengan menyaring suara
15
yang tak tertangkap telinga. Sebuah berkas suara bisa dimampatkan sebesar 1/10 dari ukuran semula. Untuk membuat formatnya menjadi universal, dibutuhkan standar internasional. Maka pada 1988 terjadi koalisi dengan Moving Picture Experts Group (MPEG). Menggunakan kode suara MPEG, data suara dapat direduksi dengan faktor reduksi 12, tanpa mengurangi kualitas suara, atau menambah faktor reduksi (24) dengan mengurangi sedikit kualitas suara. Meski ukurannya jadi lebih kecil, tapi berkualitas baik. Pada 1995, tim Fraunhofer merilis Winplay, pemutar musik versi Windows yang bisa memecah kode berkas MP3 di PC secara real time. Dengan berkembangnya kecepatan prosesor seperti sekarang ini, MP3 akhirnya dapat digunakan di komputerkomputer pribadi dan juga media player lainnya.
Gambar 2.2. WAV Header 2.1.4
Website Menurut Coupey (2001, p127), website adalah suatu jaringan dari dokumen-dokumen elektronik yang disebut halaman web, yang isinya dapat berupa teks, grafis, dan bahkan format suara dan format video. Dokumen-
16
dokumen tersebut terintegrasi dengan hyperlinks. Hyperlinks memungkinkan user untuk mendapatkan informasi yang diinginkan dari satu halaman ke halaman lainnya menggunakan link tersebut dengan mudah. Isi dari website yang berupa teks, grafis, suara atau video biasa di tampilkan oleh HTML. Kumpulan halaman HTML ini lah yang kemudian menjadi website. 2.1.4.1 HTML Menurut Connolly and Begg (2005, p1001), HTML adalah dokumen yang mengatur bahasa-bahasa yang digunakan untuk mendesain kebanyakan halaman web.
HTML
adalah
suatu
sistem
untuk marking-up,
tagging, sehingga dokumen tersebut dapat dipublikasikan ke web. HTML adalah bahasa yang dimengerti oleh browser. Pada dasar nya user interface HTML sangat kaku dan sederhana, padahal banyak orang yang hendak mengakses website yang menampilkan HTML. Oleh karena itu HTML sekarang di dukung dengan CSS dan JavaScript yang membuat halaman HTML menjadi menarik dan interaktif. HTML5 adalah revisi kelima dari HTML (yang pertama kali diciptakan pada tahun 1990 dan versi keempatnya, HTML4, pada tahun 1997). Tujuan utama pengembangan HTML5 adalah untuk memperbaiki teknologi HTML agar mendukung teknologi multimedia terbaru, mudah dibaca oleh manusia dan juga mudah dimengerti oleh mesin. HTML5 merupakan salah satu karya World Wide Web Consortium (W3C) untuk mendefinisikan sebuah bahasa markup yang dapat ditulis dengan cara HTML ataupun XHTML. HTML5 merupakan jawaban atas pengembangan HTML 4.01 dan XHTML 1.1 yang selama ini berjalan terpisah, dan diimplementasikan secara berbeda-beda oleh banyak perangkat lunak pembuat web. 2.1.4.2 CSS Menurut Sulistyawan, Rubianto, Saleh (2008, p32), CSS adalah suatu bahasa stylesheets yang mengatur tampilan suatun dokumen. Pada umumnya CSS digunakan untuk mengatur tampilan dokumen agar terlihat menarik. CSS memungkinkan kita untuk menampilkan halaman yang sama dengan
17
format yang berbeda. Versi dari CSS sekarang adalah CSS3 dimana sudah menjadi bagian yang tak bisa terlepas dari HTML. CSS memiliki peran khusus untuk “memperindah” halaman HTML. Di CSS3 terdapat fitur-fitur baru yang tidak dimiliki oleh versi sebelumnya. Salah satunya adalah melakukan animasi tanpa memerlukan software tambahan, dimana animasi yang dihasilkan menyerupai animasi Adobe Flash namun resource yang digunakan tidak sebesar pada saat menggunakan Adobe Flash. 2.1.4.3 JavaScript Menurut Douglas (2009, p267), JavaScript adalah bahasa yang memungkinkan sebuah halaman web untuk memasukkan perintah yang dijalankan
oleh
web
browser.
JavaScript
berbeda
dengan
bahasa
pemrograman Java, hanya kebetulan saja mempunyai kesamaan nama Java. JavaScript pertama dikembangkan oleh Netscape. Dengan nama LiveScript yang
memang
ditujukan
untuk
pengembangan
HTML.
JavaScript
memungkin untuk mengimplementasikan fitur dinamis pada Client-Side tanpa harus melakukan komunikasi data dengan Server. 2.1.4.4 JQuery JQuery adalah salah satu library JavaScript yang memungkinkan kita untuk membuat program web
pada suatu
halaman
web, tanpa harus
secara eksplisit menambahkan event ataupun properti pada halaman web tersebut. Dengan JQuery, suatu halaman web yang menjadi aplikasi web, jika dilihat sourcenya, akan terlihat seperti dokumen HTML biasa, tidak ada kode JavaScript yang terlihat langsung. Teknik pemrograman web seperti ini disebut sebagai unobstrusive JavaScrip t p rogrammin g. 2.1.4.5 Bootstrap Bootstrap adalah open-source library yang terdiri dari HTML, CSS, dan JavaScript yang dikembangkan oleh tim Twitter, dengan tujuan agar komponen user interface yang dihasilkan memiliki konsistensi di berbagai platform. Library ini merupakan kombinasi HTML, CSS dan JavaScript yang didesain
untuk
membangun
komponen
antarmuka.
Bootstrap
juga
18
dikembangkan untuk mendukung pemrograman HTML5, CSS3, dan juga library JQuery. 2.1.4.6 PHP Menurut Connolly and Begg (2005, p1014), PHP adalah bahasa pemrograman open source yang menempel pada HTML yang didukung oleh banyak web server. PHP pertama kali dibuat oleh Rasmus Lerdorf pada tahun 1994 yang awalnya bernama Form Interpreted (FI). Kegunaan awal dari FI adalah mengelolah data formulir daru suatu halaman web yang di beri nama PHP tools (Personal Home Page tools) . Kemudian Rasmus merilis source code tersebut untuk umum dengan nama PHP/FI. Perilisan source code ini bersifat open
source
sehungga
banyak
programmer
yang
tertarik
untuk
mengembangan bahasa ini. Rasmus menulis ulang script tersebut di dalam bahasa pemrograman C dengan alasan peningkatan performa. Setelah selesai dituliskan, pada November 1997 di rilislah PHP/FI 2.0. Pengembangan selanjutnya dilakukan oleh Zeev Suraski dan Andi Gutmans. Mereka menambahkan feature parser ke PHP yang kemudian dikenal dengan PHP 3. Mereka juga mengubah akronim PHP menjadi PHP: Hypertext Preprocessor. Pada 22 May 2002, PHP 4 dirilis yang didukung dengan Zend Engine 1.0. Versi ini banyak digunakan karena kemampuannya dinilai mampu membangun aplikasi web kompleks tetapi tetap memiliki kecepatan dan stabilitas yang tinggi. Kemudian di Juni 2004, PHP 5 dirilis dan didukung dengan Zend Engine 2.0. Perubahan besar-besaran terjadi pada seri ini, seperti object oriented programming. PHP 6 sampai saat ini masih dalam tahap pengembangan. Saat ini PHP telah menjadi bahasa pemrograman server-side paling popular. 75 % dari semua website menggunakan bahasa pemrograman serverside PHP. Banyak sistem manajemen web content (Content Management System) yang dituliskan menggunakan PHP, seperti Joomla, Wordpress, Drupal, dan masih banyak lagi. Salah satu contoh website popular yang
19
menggunakan bahasa pemrograman PHP adalah Facebook. Kelebihan PHP dibandingkan dengan bahasa pemrograman lain: 1. Bahasa pemrograman PHP adalah bahasa script sehingga tidak diperlukan kompilasi dalam penggunaannya. 2. Web server yang mendukung PHP dapat ditemukan dimana-mana mulai dari Apache, IIS, Lighttp hingga Xitami dengan konfigurasi yang relatif mudah. 3. Dalam sisi pengembangan dan pemahaman lebih mudah, karena banyak milis, forum, website dan developer yang siap membantu dan menyediakan banyak referensi tentang PHP. 4. PHP bersifat open source yang dapat di gunakan di berbagai sistem operasi (Linux, Macintosh, Windows). 2.1.5
Interaksi Manusia dan Komputer
2.1.5.1 Pengertian Interaksi Manusia dan Komputer Menurut Shneiderman (2005, p74), interaksi manusia dan komputer adalah sebuah sistem berbasis komputer selalu mempunyai elemen manusia terkait didalamnya. Interaksi manusia dan komputer merupakan disiplin ilmu yang mempelajari hubungan antara manusia dan komputer yang meliputi perancangan, evaluasi, dan implementasi antarmuka pengguna komputer agar mudah digunakan oleh manusia. 2.1.5.2 Delapan Aturan Emas Menurut Shneiderman (2010, p87-88), dikemukakan 8 aturan yang dapat digunakan sebagai petunjuk dasar yang baik untuk merancang suatu user interface yang baik. Delapan aturan ini dikenal dengan “Eight Golden Rules of Interface Design”, yaitu: 1.
Berusaha konsisten (Strive for consistency) Konsistensi diperlukan dalam beberapa keadaan yang serupa. Sebagai
contoh adalah konsistensi dalam penggunaan warna, layout, dan jenis tulisan.
20
2.
Menyediakan fungsi yang bersifat universal (Cater to Universal Usability) Kemampuan user yang beraneka ragam, mulai dari yang anak-anak
yang baru mengenal komputer hingga seorang pakar komputer, maka di butuhkan sebuah rancangan yang mudah dikenali user yang beraneka ragam ini. 3.
Memberikan umpan balik yang informatif (Offer informative feedback) Untuk setiap aksi yang di lakukan user harus ada umpan balik yang
merespon sesuai dengan kondisi. Sebagai contoh adalah muncul suara dan layar konfirmasi saat ingin menghapus data secara permanen. 4.
Merancang dialog penutup (Design dialogs to yield closure) Urutan tindakan yang dilakukan oleh user sebaiknya di organisir
dengan baik. Umpan balik yang informatif akan memberikan indikasi bahwa cara yang dilakukan user sudah benar, sehingga user bisa bersiap ke tindakan selanjutnya. Salah satu contoh adalah dengan adanya progress bar. 5.
Memberikan pencegahan kesalahan yang sederhana (Prevent errors) Sangat memungkinkan jika user melakukan kesalahan yang sangat
fatal. Jika hal ini terjadi, maka sistem harus bisa mendeteksi kesalahan tersebut dan memberikan penanganan yang tepat dan mudah. 6.
Memungkinkan kembali ke tindakan sebelumnya (Permit easy reversal of action) Sebaiknya sebuah aplikasi memiliki fitur yang dapat membatalkan aksi.
Dengan fitur ini maka dapat mengurangi kecemasan user yang mengetahui adanya kesalahan, sehingga dapat segera dibatalkan. Dan hal ini memungkinkan user untuk mengeksplorasi pilihan-pilihan yang ada tanpa adanya kecemasan melakukan kesalahan.
21
7.
Mendukung pengendalian internal (Support internal locus of control) Pengguna ingin menjadi pengontrol sistem dan sistem akan merespon
tindakan yang dilakukan pengguna. Sebaiknya sistem dirancang sedemikian rupa menjadi inisiator daripada responden. 8.
Mengurangi beban ingatan jangka pendek (Reduce short term memory load) Designer harus menghindari tampilan antar muka dimana user harus
mengingat informasi dari satu tampilan ke tampilan lainnya, karena kapasitas ingatan manusia dalam memproses informasi jangka pendek yang terbatas. 2.1.6
Software Development Life Cycle Menurut Turban, et. al. (2001, p447-486), Software Development Life Cycle (SDLC) adalah kerangka terstruktur yang terdiri dari beberapa proses yang berurutan yang diperlukan untuk membangun suatu sistem informasi. Pendekatan waterfall digunakan untuk menggambarkan SDLC. SDLC dirancang dengan tujuan untuk membangun alur pemrograman yang terstruktur dan untuk membantu manajemen proyek dalam perhitungan estimasi waktu dan sumber yang dibutuhkan suatu proyek.
2.1.6.1 Waterfall Model Menurut Pressman
(2010, p39), model waterfall memberikan
pendekatan yang sistematis dan sekuensial bagi pengembangan software yang dimulai dari level sistem dan melalui tahapan communication, planning, construction, dan deployment.
Gambar 2.3 Waterfall Model (Sumber: Pressman, 2010, p39)
22
Berikut ini adalah penjelasan dari tahapan-tahapan dari model waterfall: 1. Communication Terdiri dari project initiation dan requirements gathering. Merupakan tahapan pengumpulan kebutuhan yang dilakukan secara intensif dan fokus tertama kepada software. 2. Planning Terdiri dari estimating, scheduling, dan tracking. Pada tahap ini developer membuat perkiraan waktu yang diperlukan. Pada tahap ini dilakukan pula penjadwalan untuk menyelesaikan tahap-tahap pembuatan software sesuai dengan waktu yang telah diperkirakan. 3. Modeling Tahap modeling ini terdiri dari analisis dan desain. Pada saat merancang aplikasi, biasanya ada beberapa proses yang memfokuskan pada empat atribut bagian dari program, diantaranya adalah struktur data, arsitektur software, representasi interface, dan detail algoritma. Proses desain mengubah kebutuhan menjadi representasi dari software yang dapat dinilai untuk kualitas sebelum penulisan kode dimulai. 4. Construction Tahap construction terdiri dari coding dan test. Pada tahap ini, desain diterjemahkan menjadi bentuk yang dapat dibaca oleh mesin. Setelah coding selesai, testing terhadap aplikasi dilakukan. Proses pengukian ini menekankan pada logika internal pada aplikasi, meyakinkan semua pernyataan telah diuji, dan pada fungsi eksternal. 5. Deployment Tahap terakhir yaitu deployment, terdiri dari delivery, support, dan feedback.
Pada tahap
ini,
pengembang menyiapkan
aplikasi
yang
menyediakan fungsi dan fitur yang bermanfaat. Pengembang aplikasi juga
23
menyediakan dokumentasi untuk semua fitur dan fungsi. Pada tahap ini, pengembang aplikasi mendapatkan umpan balik pada aplikasinya yang berakhir pada perubahan atau update fungsi dan fitur dari aplikasi tersebut. 2.1.7 Unified Modelling Language (UML) Menurut Whitten dan Bentley (2007), Unified Modeling Language (UML) adalah cetak biru (blue print) dari sistem informasi yang akan dibuat dalam pengembangan software. Setiap UML memiliki fungsi dan tujuan yang berbeda dalam pengembangan software sesuai dengan jenisnya.
Gambar 2.4 UML Dalam pengembangan software, tidak semua bagian dari UML yang diperlukan untuk dipakai. UML yang digunakan disesuaikan dengan kebutuhan, dengan syarat sudah dapat menggambarkan proses pengembangan sistem secara jelas. 2.2
Teori Khusus Teori khusus yang berhubungan dengan topik yang dibahas dalam skripsi ini, terdiri dari:
2.2.1 Algoritma Twofish Algoritma Twofish, adalah block cipher yang diciptakan oleh Counterpane Labs dan dipublikasikan pada tahun 1998, yang beroperasi dalam
24
mode blok cipher berukuran 128 bit dengan ukuran kunci sebesar 256 bit, ukuran kunci yang besar ditujukan untuk meniadakan kemungkinan kunci lemah (weak-key). Algoritma Twofish sendiri merupakan pengembangan dari algoritma Blowfish, yang juga dirancang oleh Schneier. Perancangan Twofish dilakukan dengan memperhatikan kriteria-kriteria yang diajukan National Institute of Standards and Technology (NIST) untuk kompetisi Advanced Encryption Standard (AES), namun algoritma ini tidak terpilih sebagai basis standardisasi. Algoritma Twofish tidak dipatenkan sehingga bebas dipakai oleh siapa saja. Tujuan dari perancangan Twofish yang selaras dengan kriteria NIST untuk AES adalah untuk membuat suatu algoritma kriptografi yang efisien dan portabel, rancangan yang fleksibel yang dapat menerima panjang kunci tambahan sehingga dapat diterapkan pada platform dan aplikasi yang sangat bervariatif serta cocok untuk cipher aliran, fungsi hash, dan MAC, serta rancangan yang sederhana agar memudahkan proses analisis dan implementasi algoritma.
Gambar 2.5 Algoritma Enkripsi Twofish
25
2.2.1.1 Jaringan Feistel Sebuah jaringan Feistel adalah metode umum untuk mengubah semua fungsi (biasanya disebut fungsi F) ke dalam sebuah permutasi. Hal ini ditemukan oleh Horst Feistel dalam desain Lucifer, dan dipopulerkan oleh DES. Blok dasar pembangunan jaringan Feistel adalah fungsi F: sebuah pemetaan key - dependent dari suatu string input ke sebuah string output. Fungsi F selalu non-linear dan kemungkinan non-surjective: F : {0 ,1}
n/2
× {0 ,1} a {0 ,1} N
n/2
Dimana n adalah ukuran blok dari jaringan Feistel, dan F adalah fungsi mengambil n /2 bit dari blok dan N bits kunci sebagai input, dan men ghasilkan output panjang n/2 bit. Pada setiap putaran, “blok sumber” adalah input untuk fungsi F, dan output dari fungsi F adalah XOR dengan “blok tar get”, setelah kedua blok bertukar tempat untuk putaran berikutnya. Idenya disini adalah untuk mengambil fungsi F, yang mungkin menjadi algoritma enkripsi yang lemah ketika diambil dengan sendirinya, dan iterasi yang berulang kali untuk menciptakan algoritma enkripsi yang kuat. Dua putaran dari jaringan Feistel disebut “siklus”. Dalam satu siklus, setiap bit dari blok teks telah dimodifikasi sekali. Twofish merupakan jaringan Feistel 16-round dengan fungsi F bijektif. 2.2.1.2 Tabel S–Box Tabel S-box adalah operasi tabel substitusi non-linear yang paling banyak digunakan dalam block cipher. Tabel S-box bervariasi baik dari ukuran input dan ukuran output, dan dapat dibuat baik secara acak atau secara algoritma. Algoritma Twofish menggunakan empat tabel S-box yang berbeda, bijektif, key-dependent, 8-by-8-bit S-box. Tabel S-box ini dibangun menggunakan dua 8-by-8-bit permutasi tetap dan material key.
26
Gambar 2.6 Contoh Tabel S-Box 2.2.1.3 Matriks MDS Matriks maximum distance separable (MDS) digunakan pada pemetaan linear dari elemen a ke elemen b, menghasilkan penggabungan elemen vektor a + b, dengan properti yang berjumlah minimum elemen non-zero dalam vektor non-zero setidaknya b + 1. Dengan kata lain, “jarak” (jumlah elemen yang berbeda) antara dua vektor yang berbeda yang dihasilkan oleh pemetaan MDS paling sedikit b + 1. Pemetaan MDS dapat direpresentasikan oleh matriks MDS yang terdiri dari unsur a x b. Kode Reed-Solomon (RS) untuk error-correcting dikenal sebagai MDS. Kondisi yang diperlukan untuk matriks a x b untuk menjadi MDS adalah semua sub-matriks persegi yang mungkin, diperoleh dengan membuang baris atau kolom yang non-singular. 2.2.1.4 Fungsi H Fungsi ini mengambil dua input 32-bit kata X dan daftar L = (L0, ..., Lk-1) dari 32-bit panjang k dan menghasilkan satu kata dari output. Fungsi ini bekerja di bagian k. Dalam setiap bagian, empat byte masing-masing melewati S-box, dan di XOR dengan byte yang berasal dari daftar. Akhirnya, byte sekali lagi melewati S-box, dan empat byte dikalikan dengan matriks MDS.
[
]
[
]
l i , j = Li / 2 8 j mod 2 8 x j = X / 2 8 j mod 2 8 Untuk i = 0,…,k-1 dan j = 0,…,3. Kemudian dilanjutkan dengan urutan operasi substitusi dan operasi XOR.
27
yk , j = x j
j = 0,…,3
Jika k = 4, maka : y3, 0 = q1 [y 4, 0 ] ⊕ l 3,0 y3,1 = q 0 [y 4,1 ] ⊕ l 3,1 y3, 2 = q 0 [y 4, 2 ] ⊕ l 3, 2 y3,3 = q1 [y 4,3 ] ⊕ l 3,3
Jika k ≥ 3, maka : y 2, 0 = q1 [y 3, 0 ] ⊕ l 2, 0 y 2,1 = q1 [y 3,1 ] ⊕ l 2,1 y 2, 2 = q 0 [y 3, 2 ] ⊕ l 2, 2 y 2 , 3 = q 0 [ y 3, 3 ] ⊕ l 2 , 3
Kesimpulannya menurut Bruce Schneier (1998) : y 0 = q1 [q 0 [q 0 [y 2, 0 ] ⊕ l1, 0 ] ⊕ l 0,0 ] y1 = q 0 [q 0 [q1 [y 2,1 ] ⊕ l1,1 ] ⊕ l 0,1 ] y 2 = q1 [q1 [q 0 [y 2, 2 ] ⊕ l1, 2 ] ⊕ l 0, 2 ] y3 = q 0 [q1 [q1 [y 2,3 ] ⊕ l1,3 ] ⊕ l 0,3 ]
Dimana q 0 dan q1 adalah hasil permutasi nilai-nilai 8-bit. Hasil vektor yi dikalikan dengan matriks MDS.
28
Gambar 2.7 Fungsi H 2.2.2
M4M Pendekatan metode M4M (Modulus 4 Method) ini didasarkan pada metode M16M (Modulus 16 Method) bersama dengan algoritma Sequance Number Generator untuk menghindari penyisipan data dalam index file carrier, yang nantinya akan membantu dalam menghindari distorsi pada
kualitas file asli. Secara singkat algoritma ini terbagi menjadi 2 sisi, sisi pengirim dan sisi penerima: Pengirim (sender side) : a. Tentukan file carrier b. Tentukan pesan rahasia c. Sisipkan pesan ke file carrier dengan embedding
29
Penerima (receiver side): a. Pilih file stego b. Ekstrak pesan rahasia menggunakan data extraction algorithm c. Tampilkan pesan rahasia 2.2.2.1 Data Embedding Algorithm Penyisipan data dalam algoritma M4M dinyatakan dalam flow chart sebagai berikut:
Gambar 2.8 M4M Data Embedding Algorithm Baca file carrier yang akan dimanipulasi kemudian diubah ke dalam bilangan ASCII. Sebagai contoh bilangan ASCII 21, bilangan ini dikurangkan dengan bilangan ini modulus 4: 23 - (23 % 4) = 23 - 3 = 20 (1) Baca secret file kemudian diubah menjadi bilangan biner. Ambil 2 bit kemudian diubah ke desimal. Sebagai contoh : 10110010 => ambil 2 bilangan biner pertama = 10 => ubah ke decimal => 2 (2)
30
Jumlahkan hasil pengurangan dengan hasil perhitungan (1) dengan (2) 20 + 2 = 22 Stegofile yang tadinya 23 akan menjadi 22 sesuai dengan perhitungan di metode ini. Lakukan sampai semua secret file tersisip di file carrier. Error yang mungkin terjadi adalah ±3. 2.2.2.2 Data Extraction Algorithm Penggalian data pada stego file dinyatakan dalam pseudocode sebagai berikut:
Gambar 2.9 M4M Data Extraction Algorithm Baca stego file ke dalam bilangan ASCII kemudian di-modulus-kan dengan 4. Sebagai contoh, suatu stego file di ambil salah satu bilangan ASCII, contoh nya 22, kemudian modulus-kan 22 dengan 4 22 % 4 = 2 Bilangan 2 ini kemudian di ubah ke dalam kode binner. 2 = 10 Lakukan sampai stego file berhasil diubah ke dalam kode biner. Dari kode biner inilah yang kemudian di susun menjadi secret file.
31
2.2.3
Peak Signal to Noise Ratio (PSNR) PSNR adalah nilai yang menyatakan tingkat noise hasil stego file dalam satuan desibel (dB). Menurut Chen (2006), semakin besar nilai PSNR berarti perbedaan antara file asli dengan stego file semakin kecil, sebaliknya semakin kecil nilai PSNR, semakin besar tingkat perbedaan antar stego file dengan file asli. Menurut Cole (2003), nilai PSNR dikatakan baik jika berada di atas nilai 20, artinya di bawah nilai 20 distorsi yang terjadi sangat besar antara stego file dengan file asli. Sedangkan MSE (Mean Squared Error) menyatakan nilai
penyimpangan atau selisih antara stego file dengan file asli. PSNR sangat umum digunakan sebagai ukuran kualitas dalam kompresi citra, suara, dan video. Nilai minimum PSNR untuk file audio adalah 30 dB, yang berarti jika nilai PSNR suatu file audio berada di bawah 30 dB maka file tersebut bisa dikatakan sudah mengalami kerusakan sinyal audio. PSNR untuk suara dapat dinyatakan sebagai berikut:
P12 PSNR = 10 log10 2 2 + − P P 2 P P 0 1 0 1 dimana; P0 = sinyal suara sebelum dilakukan penyembunyian pesan
P1 = sinyal suara setelah dilakukan penyembunyian pesan