BAB II LANDASAN TEORI 2.1 Definisi Kriptografi Kata kriptografi berasal dari bahasa Yunani, “kryptós” yang berarti tersembunyi dan “gráphein” yang berarti tulisan. Sehingga kata kriptografi dapat diartikan berupa frase “tulisan tersembunyi”. Menurut Request for Comments (RFC), kriptografi merupakan ilmu matematika yang berhubungan dengan transformasi data untuk membuat artinya tidak dapat dipahami (untuk menyembunyikan maknanya), mencegahnya dari perubahan tanpa izin, atau mencegahnya dari penggunaan yang tidak sah. Jika transformasinya dapat dikembalikan, kriptografi juga bisa diartikan sebagai proses mengubah kembali data yang terenkripsi menjadi bentuk yang dapat dipahami. Artinya, kriptografi dapat diartikan sebagai proses untuk melindungi data dalam arti yang luas (Oppliger, 2005). Secara umum, kriptografi merupakan teknik pengamanan informasi yang dilakukan dengan cara mengolah informasi awal (plaintext) dengan suatu kunci tertentu menggunakan 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 dekripsi. Urutan proses kriptografi secara umum dapat dilihat pada Gambar 2.1. Gambar 2.1 Proses Kriptografi Secara Umum 7 http://digilib.mercubuana.ac.id/ 8 2.2 Sejarah Kriptografi Kriptografi memiliki sejarah yang panjang dan mengagumkan. Penulisan rahasia ini dapat dilacak kembali ke 3000 tahun SM saat digunakan oleh bangsa Mesir. Mereka menggunakan hieroglyphcs untuk menyembunyikan tulisan dari mereka yang tidak diharapkan. Hieroglyphcs diturunkan dari bahasa Yunani hieroglyphica yang berarti ukiran rahasia. Hieroglyphs berevolusi menjadi hieratic, yaitu stylized script yang lebih mudah untuk digunakan. Sekitar 400 SM, kriptografi militer digunakan oleh bangsa Spartan dalam bentuk sepotong papirus atau perkamen dibungkus dengan batang kayu. Sistem ini disebut Scytale. Gambar 2.2 Scytale Sekitar 50 SM, Julius Caesar, kaisar Roma, menggunakan cipher substitusi untuk mengirim pesan ke Marcus Tullius Cicero. Pada cipher ini, huruf-huruf alfabet disubstitusi dengan huruf-huruf yang lain pada alfabet yang sama. Karena hanya satu alfabet yang digunakan, cipher ini merupakan substitusi monoalfabetik. Cipher semacam ini mencakup penggeseran alfabet dengan 3 huruf dan mensubstitusikan huruf tersebut. Substitusi ini kadang dikenal dengan C3 (untuk Caesar menggeser 3 tempat). Secara umum sistem cipher Caesar dapat ditulis sebagai berikut : Zi = Cn(Pi) Dimana Zi adalah karakter-karekter ciphertext, Cn adalah transformasi substitusi alfabetik, n adalah jumlah huruf yang digeser, dan Pi adalah karakterkarakter plaintext. Disk mempunyai peranan penting dalam kriptografi sekitar 500 tahun yang lalu. Di Italia sekitar tahun 1460, Leon Battista Alberti http://digilib.mercubuana.ac.id/ 9 mengembangkan disk cipher untuk enkripsi. Sistemnya terdiri dari dua disk konsentris. Setiap disk memiliki alfabet di sekelilingnya, dan dengan memutar satu disk berhubungan dengan yang lainnya, huruf pada satu alfabet dapat ditransformasi ke huruf pada alfabet yang lain. Bangsa Arab menemukan cryptanalysis karena kemahirannya dalam bidang matematika, statistik, dan lingiustik. Karena setiap orang muslim harus menambah pengetahuannya, mereka mempelajari peradaban terdahulu dan mendekodekan tulisan-tulisannya ke huruf-huruf Arab. Pada tahun 815, Caliph alMamun mendirikan House of Wisdom di Baghdad yang merupakan titik pusat dari usaha-usaha translasi. Pada abad ke-9, filsuf Arab al-Kindi menulis risalat (ditemukan kembali tahun 1987) yang diberi judul “A Manuscript on Deciphering Cryptographic Messages”. Pada 1790, Thomas Jefferson mengembangkan alat enkripsi dengan menggunakan tumpukan yang terdiri dari 26 disk yang dapat diputar secara individual. Pesan dirakit dengan memutar setiap disk ke huruf yang tepat dibawah batang berjajar yang menjalankan panjang tumpukan disk. Kemudian, batang berjajar diputar dengan sudut tertentu, A, dan huruf-huruf dibawah batang adalah pesan yang terenkripsi. Penerima akan menjajarkan karakter-karakter cipher dibawah batang berjajar, memutar batang kembali dengan sudut A dan membaca pesan plaintext. Sistem disk digunakan secara luas selama perang sipil US. Federal Signal Officer mendapatkan hak paten pada sistem disk mirip dengan yang ditemukan oleh Leon Battista Alberti di Italia, dan dia menggunakannya untuk mengkode dan mendekodekan sinyal-sinyal bendera diantara unit-unit. Sistem Unix menggunakan cipher substitusi yang disebut ROT 13 yang menggeser alfabet sebanyak 13 tempat. Penggeseran 13 tempat yang lain membawa alfabet kembali ke posisi semula, dengan demikian mendekodekan pesan. Mesin kriptografi mekanik yang disebut Hagelin Machine dibuat pada tahun 1920 oleh Boris Hagelin di Scockholm, Swedia. Di US, mesin Hagelin dikenal sebagai M-209. Pada tahun 20-an, Herbert O. Yardley bertugas pada organisasi rahasia US MI-8 yang dikenal sebagai “Black Chamber”. MI-8 menjebol kode-kode sejumlah negara. Selama konferensi Angkatan Laut Washington tahun 1921-1922, US membatasi negosiasi dengan Jepang karena MI-8 telah memberikan rencana http://digilib.mercubuana.ac.id/ 10 negosiasi Jepang yang telap disadap kepada sekretaris negara US. Departemen negara menutup MI-8 pada tahun 1929 sehingga Yardley merasa kecewa. Sebagai wujud kekecewaanya, Yardley menerbitkan buku The American Black Chamber, yang menggambarkan kepada dunia rahasia dari MI-8. Sebagai konsekuensinya, pihak Jepang menginstal kode-kode baru. Karena kepeloporannya dalam bidang ini, Yardley dikenal sebagai “Bapak Kriptografi Amerika”. Japanese Purple Machine Mengikuti peninggalan Yardley, William F.Friedman melanjutkan usaha cryptanalysis untuk tentara US. Tim Friedman berhasil menjebol cipher diplomatik Jepang yang baru. Rekan Yardley di Angkatan Laut US adalah Laurence Stafford. Stafford mengepalai tim yang memecahkan kode angkatan laut Purple Machine Jepang selama PD II. Kelompok pemecah kode ini bekerja di ruang bawah tanah yang gelap pada pusat distrik Naval di Pearl Harbour. Komandan Joseph J.Rochefort memimpin kelompok ini pada musim semi 1942 saat cryptanalysisnya menyadap dan mendekodekan pesan terkode Jepang. Pesan ini mengatakan akan ada serangan Jepang pada sebuah lokasi yang dikenal dengan AF. Rochefort yakin bahwa AF adalah pulau Midway. Gambar 2.3 Japanese Purple Machine http://digilib.mercubuana.ac.id/ 11 Midway adalah basis US kunci yang memproyeksikan kekuatan US di pasifik tengah. Rochefort tidak dapat meyakinkan atasannya bahwa AF adalah pulau Midway. Sebagai tipu daya, Rochefort meminta personel Midway untuk mengirim pesan bahwa Midway memiliki masalah air. Pesannya dikirim dengan kode yang jelas dan lemah yang diyakini akan disadap dan dipecahkan oleh Jepang. Kemudian pada 22 Mei, agen rahasia Angkatan Laut Jepang mengirim pesan yang dibaca oleh US bahwa AF mempunyai masalah air. Sebagai hasil dari usaha jenius dalam memecahkan kode ini, laksamana Chester W.Nimitz mengotorisasi strategi untuk mengirimkan armada US untuk mengejutkan armada Jepang di Midway. Usaha yang hebat ini berdampak pada gema kemenangan US yang merupakan titik balik di perang Pasifik. The German Enigma Machine Militer Jerman menggunakan mesin cipher substitusi polialfabetik disebut Enigma sebagai sistem pengkodean utama selama PD II. Enigma menggunakan rotor mekanis untuk pengkodean dan pendekodean. Seorang Belanda, Hugo Koch mengembangkan mesin ini pada 1919, dan diproduksi untuk pasar komersial pada 1923 oleh Arthur Scherbius. Scherbius mendapatkan hal paten pada mesin Enigma untuk perusahaan Berlin Chiffriermasschinen Aktiengesellschaft. Pakar cryptanalysis Polandia, Marian Rejewski, bekerja bersama Perancis dari 1928 sampai 1938, berhasil memecahkan pengkabelan sistem 3 rotor yang digunakan Jerman saat itu dan menciptakan berkas kartu yang dapat mengantisipasi 6 kali 17,576 kemungkinan posisi rotor. Jerman mengubah indikator sistem dan jumlah rotor menjadi 6 pada 1938, sehingga meningkatkan kesulitan untuk memecahkan cipher Enigma. Dalam kerjanya pada 1938, Polandia dan Perancis mengkonstruksi mesin prototipe yang disebut “The Bombe” untuk memecahkan cipher Enigma. Namanya diturunkan dari bunyi detikan yang dihasilkan oleh mesin. Usaha memecahkan cipher Enigma diambil alih oleh Inggris di Bletchley Park Inggris dan dipimpin oleh banyak ilmuwan terkemuka termasuk Alan Turing. http://digilib.mercubuana.ac.id/ 12 Prototipe Bombe Turing muncul pada 1940, dan Bombe berkecepatan tinggi dikembangkan oleh Inggris dan Amerika pada 1943. Perkembangan komputer dan sistem komunikasi pada tahun 60an berdampak pada permintaan dari sektor-sektor privat sebagai sarana untuk melindungi informasi dalam bentuk digital dan untuk menyediakan layanan keamanan. Dimulai dari usaha Feistel pada IBM di awal tahun 70an dan mencapai puncaknya pada 1977 dengan pengangkatan DES (Data Encryption Standard) sebagai standar pemrosesan informasi federal US untuk mengenkripsi informasi yang unclassified. DES merupakan mekanisme kriptografi yang paling dikenal sepanjang sejarah. Pengembangan paling mengejutkan dalam sejarah kriptografi terjadi pada 1976 saat Diffie dan Hellman mempublikasikan New Directions in Cryptography. Tulisan ini memperkenalkan konsep revolusioner kriptografi kunci publik dan juga memberikan metode baru dan jenius untuk pertukaran kunci, keamanan yang berdasar pada kekuatan masalah logaritma diskret. Gambar 2.4 Enigma Machine Meskipun tidak memiliki realisasi praktis pada ide enkripsi kunci publik saat itu, idenya sangat jelas dan ketertarikan yang luas pada komunitas kriptografi. Pada 1978 Rivest, Shamir dan Adleman menemukan rancangan enkripsi kunci publik dan tanda tangan, yang sekarang disebut RSA. Rancangan RSA berdasar pada masalah matematika yang sulit untuk kriptografi menggiatkan kembali usaha untuk menemukan metode yang lebih efisien untuk pemfaktoran. Tahun 80an menunjukkan peningkatan luas di area ini, sistem RSA masih aman. Pada 1991 standar internasional pertama untuk tanda tangan digital (ISO/IEC 9796) diadopsi. Standar ini berdasar pada rancangan kunci publik RSA. http://digilib.mercubuana.ac.id/ 13 Pada 1994 pemerintah US mengadopsi Digital Signature Standard, sebuah mekanisme yang berdasar pada rancangan kunci publik ElGamal. (Subagja, 2015). 2.3 Tujuan Kriptografi Dalam teknologi informasi telah dan sedang dikembangkan cara-cara untuk menangkal berbagai serangan, seperti penyadap dan pengubahan data yang sedang dikirimkan. Salah satu cara yang ditempuh untuk mengatasi masalah ini adalah dengan menggunakan kriptografi yang menggunakan transformasi data sehingga data yang dihasilkan tidak dapat dimengerti oleh pihak yang tidak berhak mengakses. Transformasi ini memberikan solusi pada dua macam masalah keamanan data, yaitu masalah privasi (privacy) dan keotentikan (authentication). Privacy mengandung arti bahwa data yang dikirimkan hanya dapat dimengerti oleh penerima yang sah atau berhak. Sedangkan keotentikan mencegah pihak ketiga untuk mengirimkan data yang salah atau mengubah data yang dikirimkan. Adapun tujuan kriptografi adalah sebagai berikut (Munir, 2006). 1. Confidentiality (Kerahasiaan) Adalah layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca. 2. Authentiation (Otentikasi) Adalah layanan yang berhubungan dengan identifikasi, baik mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication atau entity authentication). Maupun mengidentifikasi kebenaran sumber pesan. 3. Data Integrity (Integritas Data) Adalah layanan yang menjamin bahwa pesan masih asli atau belum pernah dimanipulasi selama pengiriman. 4. Non - repudiation (Tanpa Penyangkalan) Adalah layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan yaitu pengiriman atau penerima menyangkal telah menerima pesan. http://digilib.mercubuana.ac.id/ pesan 14 2.4 Algoritma Kriptografi Algoritma dalam kriptografi merupakan sekumpulan aturan (fungsi matematis yang digunakan) untuk proses enkripsi dan proses dekripsi. Dalam beberapa metode kriptografi terdapat perbedaan antara fungsi enkripsi dan fungsi dekripsi. Konsep matematis yang mendasari algoritma adalah relasi antara himpunan, yaitu relasi antara himpunan yang berisi elemen-elemen ciphertext. Enkripsi dan dekripsi merupakan fungsi yang memetakan elemen-elemen antara kedua himpunan tersebut. Misalkan himpunan plaintext dinotasikan P dan himpunan elemen ciphertext dinotasikan C, maka fungsi E memetakan himpunan P ke himpunan C. E(P) = C Dan fungsi dekripsi memetakan himpunan C ke himpunan P D(C) = P Karena fungsi dekripsi D mengembalikan himpunan C menjadi himpunan P asal, maka algoritma kriptografi harus memenuhi persamaan D(E(P)) = P Tingkat keamanan suatu algoritma dalam kriptografi seringkali diukur dari kuantitas proses yang dilakukan dalam suatu fungsi, baik itu fungsi enkripsi maupun fungsi dekripsi. Proses tersebut juga dapat dihubungkan dengan sumber data yang dibutuhkan, menunjukkan semakin kuat algoritma kriptografi tersebut. Pada kriptografi klasik, keamanan kriptografi terletak pada kerahasiaan algoritma kriptografinya. Salah satu contohnya adalah mesin enigma yang dikeluarkan oleh pemerintah Jerman pada masa perang dunia ke-2. Namun, hal ini yang menjadi titik lemah ketika algoritma bocor ke pihak yang seharusnya tidak berwenang sehingga mengharuskan untuk menyusun suatu algoritma baru tanpa ada rasa khawatir akan kebocoran informasi tersebut, sebab informasi tersebut hanya dapat didekripsikan, yaitu pihak yang memang mempunyai kunci private. Berikut ini adalah istilah-istilah yang digunakan dalam bidang kriptografi : 1. Plaintext adalah pesan yang hendak dikirim (berisi data asli). 2. Ciphertext adalah pesan yang terenkripsi (tersandi) yang merupakan hasil dari enkripsi. http://digilib.mercubuana.ac.id/ 15 3. Enkripsi adalah proses pengubahan plaintext menjadi ciphertext. 4. Dekripsi adalah kebalikan dari enkripsi yakni mengubah ciphertext menjadi plaintext, sehingga berupa data awal atau asli. 5. Kunci adalah suatu bilangan yang dirahasiakan yang digunakan dalam proses enkripsi dan dekripsi. Dalam kriptografi terdapat dua konsep utama yakni enkripsi dan dekripsi. Enkripsi adalah proses dimana informasi atau data yang hendak dikirim diubah menjadi bentuk yang hamper tidak dikenal sebagai informasi awalnya dengan menggunakan algoritma tertentu. Dekripsi adalah kebalikan dari enkripsi yaitu mengubah bentuk tersamar tersebut menjadi informasi awal. 2.4.1 Algoritma Simetris Algoritma simetris adalah algoritma kriptografi yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Istilah lain untuk kriptografi kuncisimetri adalah kriptografi kunci privat (private-key cryptography), kriptografi kunci rahasia (secret-key cryptography), atau kriptografi konvensional (conventional cryptography). Sistem kriptografi kunci-simetri (atau disingkat menjadi “kriptografi simetri” saja), mengasumsikan pengirim dan penerima pesan sudah berbagi kunci yang sama sebelum bertukar pesan. Keamanan sistem kriptografi simetri terletak pada kerahasiaan kuncinya. Kriptografi simetris merupakan satu-satunya jenis kriptografi yang dikenal dalam catatan sejarah hingga tahun 1976. Semua algoritma kriptografi klasik termasuk ke dalam sistem kriptografi simetri. Kelebihan algoritma simetris ini adalah proses enkripsi dan deskripsinya yang jauh lebih cepat dibandingkan dengan algoritma asimetris. Sedangkan kelemahan algoritma ini adalah permasalahan distribusi kunci (key distribution). Seperti yang telah dibahas, proses enkripsi dan deskripsi menggunakan kunci yang sama. Sehingga muncul persoalan menjaga kerahasian kunci, yaitu pada saat pengiriman kunci pada media yang tidak aman seperti internet. Tentunya jika kunci ini sampai hilang atau sudah dapat ditebak oleh orang lain (orang yang tidak berhak), maka kriptosistem ini sudah tidak aman lagi http://digilib.mercubuana.ac.id/ 16 Kelemahan lain adalah masalah efisiensi jumlah kunci. Jika terdapat n user, maka diperlukan n(n-1)/2 kunci, sehingga untuk jumlah user yang sangat banyak, sistem ini tidak efisien lagi (Menezes et al, 1996). Gambar 2.5 Skema Kriptografi Simetris 2.4.2 Algoritma Asimetris Algoritma asimetris didesain sehingga kunci yang digunakan untuk enkripsi berbeda dengan kunci untuk dekripsi dimana kunci untuk enkripsi tidak rahasia dan dapat diketahui oleh siapapun (diumumkan ke publik), sementara kunci untuk dekripsi hanya diketahui oleh penerima pesan (rahasia). Pada kriptografi jenis ini, setiap orang yang berkomunikasi mempunyai sepasang kunci, yaitu kunci privat dan kunci publik. Pengirim mengenkripsi pesan menggunakan kunci publik si penerima pesan. Hanya penerima pesan yang dapat mendekripsi pesan karena hanya ia yang mengetahui kunci privatnya. Kriptografi kunci-publik dapat dianalogikan seperti kotak surat yang terkunci dan memiliki lubang untuk memasukkan surat. Setiap orang dapat memasukkan surat ke dalam kotak surat tersebut, tetapi hanya pemilik kotak yang dapat membuka kotak dan membaca surat di dalamnya karena ia yang memiliki kunci. Keuntungan sistem ini ada dua. Pertama, tidak ada kebutuhan untuk mendistribusikan kunci privat sebagaimana pada sistem kriptografi simetri. Kunci publik dapat dikirim ke penerima melalui saluran yang sama dengan saluran yang digunakan untuk mengirim pesan. Saluran untuk mengirim pesan umumnya tidak aman. Kedua, jumlah kunci dapat ditekan. Untuk berkomunikasi rahasia dengan banyak orang tidak perlu kunci rahasia sebanyak jumlah orang tersebut, cukup membuat dua buah kunci, yaitu kunci publik bagi koresponden untuk mengenkripsi pesan, dan kunci privat untuk mendekripsi pesan. Berbeda dengan kriptografi kunci-simetris yang dibuat adalah sebanyak jumlah pihak yang diajak berkorespondensi. http://digilib.mercubuana.ac.id/ 17 Contoh penggunaan, misalkan jaringan komputer menghubungkan komputer karyawan di kantor cabang dengan komputer manejer di kantor pusat. Seluruh kepala cabang diberitahu bahwa kalau mereka mengirim laporan ke manejer di kantor pusat, mereka harus mengenkripsi laporan tersebut dengan kunci publik manejer (kunci publik menejer diumumkan kepada seluruh kepala cabang). Untuk mengembalikan laporan tersandi ke laporan semula, hanya manejer yang dapat melakukan dekripsi, karena hanya dialah yang memegang kunci privat. Selama proses transmisi ciphertext dari kantor cabang ke kantor pusat melalui saluran komunikasi mungkin saja data yang dikirim disadap oleh pihak ketiga, namun pihak ketiga ini tidak dapat mengembalikan ciphertext ke plainteksnya karena ia tidak mengetahui kunci untuk dekripsi. Meski berusia relatif muda (sejak 1976), kriptografi kunci-publik mempunyai kontribusi yang luar biasa dibandingkan dengan sistem kriptografi simetri. Kontribusi yang paling penting adalah tanda-tangan digital pada pesan untuk memberikan aspek keamanan otentikasi, integritas data, dan nirpenyangkalan. Tanda-tangan digital adalah nilai kriptografis yang bergantung pada isi pesan dan kunci yang digunakan. Pengirim pesan mengenkripsi pesan (yang sudah diringkas) dengan kunci privatnya, hasil enkripsi inilah yang dinamakan tanda-tangan digital. Tanda-tangan digital dilekatkan (embed) pada pesan asli. Penerima pesan memverifikasi tanda-tangan digital dengan menggunaklan kunci publik. Gambar 2.6 Skema Kriptografi Asimetris 2.5 Algoritma RC4 (Rivest Code 4) RC4 pertama kali didesain oleh Ron Rivest yang berasal dari Laboratorium RSA pada tahun 1987. RC sendiri mempunyai singkatan resmi yaitu “Rivest Cipher”, namun juga dikenal sebagai “Ron’s Code”. RC4 sebenarnya dirahasiakan dan tidak dipublikasikan kepada khalayak ramai, akan http://digilib.mercubuana.ac.id/ 18 tetapi pada September 1994, kode tersebut dikirim oleh seseorang yang tidak diketahui ke milist Chypermunks dan menyebar ke banyak situs internet. Kode yang bocor tesebut akhirnya dikonfirmasi sebagai RC4 karena memiliki output yang sama dengan software dengan lisensi RC4 di dalamnya. Karena algoritma sudah diketahui, RC4 tidak lagi menjadi rahasia dagang.Nama RC4 sudah dipatenkan, sehingga sering disebut sebagai “ARCFOUR” atau “ARC4” (Alleged RC4) untuk menghindari pematenan. RSA Security tidak pernah secara resmi merilis algoritma tersebut, namun Rivest secara pribadilah yang merilisnya dengan menghubungkan Wikipedia Inggris ke catatancatatan yang ia punya. RC4 telah menjadi bagian dari protocol enkripsi yang standard dan sering digunakan.Faktor utama yang menjadi kesuksesan dari RC4 adalah kecepatannya dan kesederhanaannya dalam menangani banyakaplikasi, sehingga mudah untuk mengembangkan implementasi yang effisien ke software dan hardware. RC4 adalah algoritma kriptografi simetris. Disebut algoritma kriptografi simetris karena menggunakan kunci yang sama untuk mengenkripsi atau mendekripsi suatu pesan, data, ataupun informasi. RC4 merupakan salah satu jenis stream cipher, yaitu memproses unit atau input data pada satu saat. Dengan cara ini enkripsi atau dekripsi dapat dilaksanakan pada panjang yang variabel. Algoritma ini tidak harus menunggu sejumlah input data tertentu sebelum diproses, atau menambahkan byte tambahan untuk mengenkrip. Algoritma RC4 bekerja pada 2 tahap, menyetem susunan (key setup) dan (ciphering). Kunci susunan merupakan yang lebih awaldan merupakan tahap yang paling sulit dari algoritma ini. Selama menyetem susunan dari N-bit ( N menjadi panjang kunci ), kunci enkripsi digunakan untuk menghasilkan suatu variabel enkripsi yang menggunakan dua arrays, state dan key dan jumlah N dari operasi pencampuran. Operasi pencampuran terdiri dari menukar bytes, modulo operasi, dan rumusan lain. Suatu modulo operasi adalah proses sisa dari suatu hasil divisi. Sebagai contoh, 10/4 adalah 2 sisa 2, oleh karena itu 10 mod 4 sama dengan 2. Sekali variabel enkripsi dihasilkan dari key setup, langkah selanjutnya adalah masuk ke fase ciphering, di mana dalam proses ini hasilnya akan diXORkan dengan plaintext. Sekali penerima mendapat pesanyang dienkripsi, http://digilib.mercubuana.ac.id/ 19 langkah selanjutnya adalah mendeskripsikannya dengan mengXORkan pesan yang dienkripsi, dengan menggunakan variabel yang sama (Ariyus, 2008.) 2.5.1 Algoritma Enkripsi RC 4 RC4 merupakan jenis stream cipher yang mempunyai sebuah S-Box, S0,S1,…,S255, yang berisi permutasi dari bilangan 0 sampai 255, dan permutasi merupakan fungsi dari kunci dengan panjang yang variabel. Dalam algoritma enkripsi metode ini akan membangkitkan pseudorandom byte dari key yang akan dikenakan operasi XOR terhadap plaintext untuk menghasilkan ciphertext. Untuk menunjukan proses enkripsi dari algoritma RC4, berikut dapat dilihat pada Gambar 2.6 di bawah : Gambar 2.7 Arsitektur Enkripsi RC4 Secara garis besar algoritma dari metode RC4 Stream Cipher ini terbagi menjadi dua bagian, yaitu: key setup atau Key Schedulling Algorithm (KSA) dan stream generation atau Pseudo Random Generation Algorithm (PRGA) dan proses XOR dengan stream data. Berikut ini akan dijelaskan bagian-bagian dari algoritma RC4 Stream Cipher tersebut. http://digilib.mercubuana.ac.id/ 20 1. Key Setup/Key Schedulling Algorithm (KSA) Pada bagian ini, terdapat tiga tahapan proses didalamnya yaitu : a. Inisialisasi S-Box Pada tahapan ini, S-Boxakan diisi dengan nilai sesuai indeksnya untuk mendapatkan S-Box awal. Algoritmanya adalah sebagai berikut : 1. Untuk i=0 hingga i=255 lakukan 2. Isikan S dengan nilai i 3. Tambahkan i dengan 1, kembali ke 2 b. Menyimpan kunci dalam Key Byte Array Pada tahapan ini, kunci (key) yang akan kita gunakan untuk mengenkripsi atau dekripsi akan dimasukkan ke dalam array berukuran 256 secara berulang sampai seluruh array terisi. Algoritmanya adalah sebagai berikut : 1. Isi j dengan 1 2. Untuk i=0 hingga i=255 lakukan 3. Jika j > panjang kunci maka 4. j diisi dengan nilai 1 5. Akhir jika 6. Isi K ke i dengan nilai ASCII karakter kunci ke j 7. Nilai j dinaikkan 1 8. Tambahkan i dengan 1, kembali ke 2 c. Permutasi pada S-Box Pada tahapan ini,akan dibandingkan sebuah nilai yang akan dijadikan aturan untukpermutasi pada S-Box. Pertama isi secara berurutan S(0) = 0, S(1)= 1, …, S(255) = 255. Kemudian isi array 256 byte lainnya dengan kunci yang diulangi sampai seluruh arrayK(0), K(1),…, K(255) terisi seluruhnya. Set indeks j dengan nol. Algoritmanya adalah sebagai berikut : 1. Isi nilai j dengan 0 2. Untuk i=0 hingga i=255 lakukan 3. Isi nilai j dengan hasil operasi (j+S(i)+K(i)) mod 256 4. Tukar nilai S(i) dan S(j) 5. Tambahkan i dengan 1, kembali ke 2 http://digilib.mercubuana.ac.id/ 21 2. Stream Generation atau Pseudo Random Generation Algorithm (PRGA) Pada tahapan ini akan dihasilkan pseudorandom yang akan dikenakan operasi XOR untuk menghasilkan ciphertext ataupun sebaliknya yaitu untuk menghasilkan plaintext. Algoritmanya adalah sebagai berikut : 1. Isi indeks i dan j dengan nilai 0 2. Untuk i=0 hingga i=panjang plaintext 3. Isi nilai i dengan hasil operasi (i+1) mod 256 4. Isi nilai j dengan hasil operasi (j+S(i)) mod 256 5. Tukar nilai S(i) dan S(j) 6. Isi nilai t dengan hasil operasi (S(i)+(S(j) mod 256)) mod 256 7. Isi nilai y dengan nilai S(t) 8. Nilai y dikenakan operasi XOR terhadap plaintext 9. Tambahkan i dengan 1, kembali ke 2 Dengan demikian akan dihasilkan misalkan ciphertext dengan hasil XOR antar stream key dari S-Box dan Plaintext secara berurutan. http://digilib.mercubuana.ac.id/ 22 2.5.2 Algoritma Dekripsi Rivest Code 4 Berikut ini akan diberikan Gambar proses dari dekripsi RC4. Lihat Gambar 2.8 Gambar 2.8 Arsitektur Denkripsi RC4 Algoritma dekripsi RC4 mirip dengan algoritma enkripsinya, perbedaannya hanya pada saat stream generation, yaitu untuk menghasilkan plainteks semula, maka ciphertext nya akan dikenakan operasi XOR terhadap pseudorandom bytenya. Algoritma key setup pada proses dekripsi sama dengan algoritma enkripsinya yang diproses inisialisasi S-Box, penyimpanan kunci kedalam key bytearray hingga proses inisialisasi S-Box berdasarkan key byte array nya. Untuk itu proses dekripsi dan enkripsi akan menghasilkan key stream yang sama. Perbedaannya hanya pada stream generationnya, yaitu yang dioperasikan bersama key stream adalah ciphertext untuk menghasilkan kembali plaintext. Algoritmanya adalah sebagai berikut : 1. Isi indeks i dan j dengan nilai 0 2. Untuk i=0 hingga i=panjangciphertext (panjang ciphertext = plaintext) 3. Isi nilai i dengan hasil operasi (i+1) mod 256 4. Isi nilai j dengan hasil operasi (j+S(i)) mod 256 5. Tukar nilai S(i) dan S(j) 6. Isi nilai t dengan hasil operasi (S(i)+(S(j) mod 256)) mod 256 7. Isi nilai y dengan nilai S(t) 8. Nilai y dikenakan operasi XOR terhadap ciphertext 9. Tambahkan i dengan 1, kembali ke 2 http://digilib.mercubuana.ac.id/ 23 2.6 Java 2.6.1 Pengertian Java Java adalah bahasa pemrograman serbaguna. Java dapat digunakan untuk membuat suatu program sebagaimana Anda membuatnya dengan bahasa seperti Pascal atau C++. Yang lebih menarik, Java juga mendukung sumber daya Internet yang saat ini populer, yaitu World Wide Web atau yang sering disebut Web saja. Java juga mendukung aplikasi klien/server, baik dalam jaringan lokal (LAN) maupun jaringan berskala luas (WAN). (Kadir, 2005). Dalam sejumlah literatur disebutkan bahwa Java merupakan hasil perpaduan sifat dari sejumlah bahasa pemrograman, yaitu C, C++, Object-C, SmallTalk, dan Common LISP. Selain itu Java juga dilengkapi dengan unsur keamanan. Yang tak kalah penting adalah bahwa Java menambahkan paradigma pemrograman yang sederhana. Jika Anda telah mengenal C atau C++, yang mengandalkan pointer dan Anda dapat merasakan keruwetannya, Java justru meninggalkannya sehingga Anda akan memperoleh kemudahan saat menggunakannya. 2.6.2 Kelebihan Java Java mempunyai beberapa keunggulan dibandingkan dengan bahasa pemrograman lainnya. Keunggulan bahasa pemrograman Java antara lain: 1. Berorientasi objek Java adalah bahasa pemrograman yang berorientasi pada objek. Java membagi program menjadi objek-objek serta memodelkan sifat dan tingkah laku masing-masing dalam menyelesaikan suatu masalah. 2. Java bersifat multiplatform Java dirancang untuk mendukung aplikasi yang dapat beroperasi di lingkungan jaringan berbeda. Untuk mengakomodasi hal tersebut, Java compiler membangkitkan bytecodes (sebuah format yang tidak tergantung pada arsitektur tertentu yang didesain untuk mengirimkan kode ke banyak platform perangkat keras dan perangkat lunak secara efisien). Java dapat dijalankan oleh banyak platform seperti Linux, Unix, Windows, Solari, maupun Mac. 3. Java bersifat multithread http://digilib.mercubuana.ac.id/ 24 Multithreading adalah kemampuan suatu program komputer untuk mengerjakan beberapa proses dalam suatu waktu. Thread dalam Java memiliki kemampuan untuk memanfaatkan kelebihan multi prosessor apabila sistem operasi yang digunakan mendukung multi prosessor. 4. Dapat didistribusi dengan mudah Java memiliki library rutin yang lengkap untuk dirangkai pada protocol TCP/IP (seperti HTTP dan FTP) dengan mudah. Kemampuan networking Java lebih kuat dan lebih mudah digunakan. Java memudahkan tugas pemrograman jaringan yang sulit seperti membuka dan mengakses sebuah soket koneksi. Java juga mamudahkan pembuatan CGI (Common Gateway Interface). 5. Bersifat dinamis Java dirancang untuk beradaptasi dengan lingkungan yang sedang berkembang. Java bersifat dinamis dalam tahap linking. Class yang ada dapat di link sebatas yang diperlukan, apabila diperlukan modul kode yang baru dapat di link dari beberapa sumber, bahkan dari sumber dalam jaringan Internet. 2.6.3 Script Java Contoh dari script Java adalah sebagai berikut : import javax.script.*; public class EvalScript { public static void main(String[] args) throws Exception { // create a script engine manager ScriptEngineManager factory = new ScriptEngineManager(); // create a JavaScript engine ScriptEngine engine = factory.getEngineByName("JavaScript"); // evaluate JavaScript code from String engine.eval("print('Hello, World')"); } } http://digilib.mercubuana.ac.id/ 25 2.6.4 Java Tidak Bergantung Platform Program Java bersifat tidak bergantung pada platform; Artinya, Java dapat dijalankan pada sembarang komputer dan bahkan pada sembarang sistem operasi. Beberapa platform dan sistem operasi yang didukung oleh Java dapat dilihat pada Tabel 2.1. Sistem Operasi Vendor AIX IBM DG/UX Data General Corporation Digital OpenVMS Digital Equipment Corporation Digital Unix Digital Equipment Corporation HP-UX Hewlett Packard IRIX Silicon Graphics Linux Banayak Perusahaan Mac OS Apple Netware Novell OS/2 IBM OS/390 dan OS/400 IBM Solaris Sun Microsystems Windows Microsoft Corporation Tabel 2.1 Java pada berbagai sistem operasi Ketidakbergantungan terhadap platform sering dinyatakan dengan istilah probabilitas. Yang menarik, tingkat probabilitas Java tidak hanya sebatas pada program sumber (source code), melainkan juga pada tingkat kode biner yang disebut bytecode. Dengan demikian bila Anda telah mengkompilasi program Java pada komputer bersistem operasi Windows, Anda dapat menjalankan hasil kompilasi pada Macintosh secara langsung, tanpa perlu mengkompilasi ulang. http://digilib.mercubuana.ac.id/ 26 2.7 Eclipse 2.7.1 Pengertian Eclipse Eclipse adalah sebuah IDE (Integrated Development Environment) untuk mengembangkan perangkat lunak dan dijalankan di semua platform. Eclipse sendiri juga merupakan sebuah komunitas open source, yang memiliki proyek yang berfokus pada membangun sebuah platform pengembangan terbuka dari extensible Framework, tools dan runtime untuk membangun, menyebarkan dan mengelola perangkat lunak di seluruh siklus hidup perangkat lunak tersebut. (Kadir, 2005). Umumnya Eclipse digunakan untuk membuat sebuah program yang menggunakan bahasa pemrograman Java. Namun, Eclipse juga bisa digunakan untuk penggunaan bahasa pemrograman lainnya seperti C, C++, COBOL, Perl, PHP, Python, dan sebagainya. 2.7.2 Kelebihan Eclipse Berikut ini adalah sifat dari Eclipse dan kelebihan Eclipse daripada Software yang lain: 1. Multi-platform Bisa dijalankan di Microsoft Windows, Linux, Solaris, AIX, HP-UX dan Mac OS X. 2. Mulit-language Pada dasarnya Eclipse dikembangkan dengan bahasa pemrograman Java, selain itu Eclipse juga mendukung pengembangan aplikasi berbasis bahasa pemrograman lainnya, seperti C/C++, Cobol, Python, Perl, PHP, dan lain sebagainya. 3. Multi-role Selain sebagai IDE untuk pengembangan aplikasi, Eclipse pun bisa digunakan untuk aktivitas dalam siklus pengembangan perangkat lunak, seperti dokumentasi, test perangkat lunak, pengembangan web, dan lain sebagainya. http://digilib.mercubuana.ac.id/ 27 2.8 Metodologi 2.8.1 Metode Waterfall SDLC air terjun(waterfall) sering juga disebut sebagai alur hidup klasik (classic life cycle). Model air terjun menyediakan pendekatan alur hidup perangkat lunak secara sekuensial atau terurut dimulai dari analisis, spesifikasi, desain, implementasi, pengujian, dan tahap perawatan. Waterfall merupakan salah satu metode pengembangan perangat lunak yang banyak digunakan. Menurut (Sommerville, 2007), waterfall merupakan salah satu model proses perangkat lunak yang mengambil kegiatan proses dasar seperti spesifikasi, pengembangan, validasi dan evolusi dengan mempresentasikannya sebagai fase-fase proses yang berbeda seperti analisis dan definisi persyaratan, perancangan perangkat lunak, implementasi dan pengujian unit, integrasi dan pengujian sistem, operasi dan pemeliharaan. Gambar 2.1 Metode Waterfall (Sommerville, 2007). http://digilib.mercubuana.ac.id/ 28 Tahapan Metode Waterfall : 1. Requirement Definition Proses mengumpulkan informasi kebutuhan sistem/perangkat lunak melalui konsultasi dengan user system. Proses ini mendefinisikan secara rinci mengenai fungsi-fungsi, batasan dan tujuan dari perangkat lunak sebagai spesifikasi sistem yang akan dibuat. 2. System and Software Design Proses perancangan sistem difokuskan pada empat atribut, yaitu struktur data, arsitektur perangkat lunak, representasi antar muka, dan detail (algoritma) prosedural. Yang dimaksud struktur data adalah representasi dari hubungan logis antara elemen-elemen data individual. 3. Implementation and Unit Testing Pada tahap ini, perancangan perangkat lunak direalisasikan sebagai program atau unit program. Kemudian pengujian unit melibatkan verifikasi bahwa setiap unit program telah memenuhi spesifikasinya. 4. Integration and System Testing Unit program/program individual diintegrasikan menjadi sebuah kesatuan sistem dan kemudian dilakukan pengujian. Dengan kata lain, pengujian ini ditujukan untuk menguji keterhubungan dari tiap-tiap fungsi perangkat lunak untuk menjamin bahwa persyaratan sistem telah terpenuhi. Setelah pengujian sistem selesai dilakukan, perangkat lunak dikirim ke pelanggan/user. 5. Operational and Maintenance Tahap ini biasanya memerlukan waktu yang paling lama. Sistem diterapkan (di-install) dan dipakai. Pemeliharaan mencakup koreksi dari beberapa kesalahan yang tidak diketemukan pada tahapan Analisis dan definisi persyaratan Perancangan sistem dan perangkat lunak Implementasi dan pengujian unit Integrasi dan pengujian sistem Operasi dan pemeliharaan 9 sebelumnya, perbaikan atas implementasi unit sistem dan pengembangan pelayanan persyaratan-persyaratan baru ditambahkan. http://digilib.mercubuana.ac.id/ sistem, sementara 29 2.9 Diagram Alir 2.9.1 Diagram Alir (flowchart) Diagram alir (flowchart) adalah bagan (chart) yang menunjukkan alir (flow) di dalam program atau prosedur sistem secara logika (Jogiyanto.2005). Berikut adalah daftar simbol pada flowchart. Lihat Gambar 2.9. Simbol Keterangan Terminator Digunakan untuk menggambarkan kegiatan awal atau akhir suatu proses. Input atau Output Digunakan untuk menggambarkan suatu kegiatan masukan maupun keluaran. Decision Digunakan untuk suatu keputusan atau tindakan yang harus diambil pada kondisi tertentu. Process Digunakan untuk menggambarkan suatu kegiatan proses penghubung. Predefined Process Digunakan untuk modul yang tidak ditulis karena sudah ada dalam sistem yang menggambarkan suatu proses. On-PageReference Digunakan untuk menghubungkan satu simbol dengan simbol lainnya pada halaman yang sama. Off-Page Reference Digunakan untuk menghubungkan satu simbol dengan simbol lainnya pada halaman yang berbeda. Line Connector Digunakan untuk menghubungkan satu simbol dengan simbol lainnya yang menyatakan alur proses. Gambar 2.10 Daftar Simbol Flowchart http://digilib.mercubuana.ac.id/ 30 2.10 Pengujian Pengujian elemen perangkat lunak adalah elemen kritis dari jaminan kualitas dan merepresentasikan kajian pokok dari spesifikasi, desain, dan pengkodean. (Shalahuddin, 2014). 2.10.1 Pengujian Black Box Black box testing merupakan pengujian yang memungkinkan software engineer mendapatkan serangkaian kondisi input yang sepenuhnya menggunakan semua persyaratan fungsional untuk suatu program. Pengujian black-box juga merupakan pendekatan komplementer yang memungkinkan 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 kesalahan terminasi. http://digilib.mercubuana.ac.id/