BAB 2. LANDASAN TEORI 2.1. Data dan Informasi Data adalah bahan baku informasi, didefinisikan sebagai kelompok teratur simbolsimbol yang mewakili kuantitas, tindakan, benda dan sebagainya. Data terbentuk dari karakter, dapat berupa alfabet, angka, maupun simbol khusus seperti *, $ dan /. Data disusun untuk diolah dalam bentuk struktur data, struktur file, dan basis data. Sedangkan informasi merupakan hasil dari pengolahan data menjadi bentuk yang lebih berguna bagi yang menerimanya yang menggambarkan suatu kejadian-kejadian nyata dan dapat digunakan sebagai alat bantu untuk pengambilan keputusan. 2.2. Keamanan Data dan Informasi Kemajuan teknologi informasi yang semakin pesat berdampak pada kehidupan manusia, baik itu positif maupun negatif, salah satu dampak positifnya adalah kemudahan akan akses informasi serta cara berkomunikasi antar manusia, disisi lain kemajuan teknologi juga memunculkan dampak negatif yaitu masalah keamanan data dan informasi itu sendiri. Dalam hal ini akan membuka peluang bagi orang-orang yang tidak bertanggung jawab serta tidak berwenang untuk mencuri dan atau mengubah data untuk kepentingannya sendiri yang tentunya akan merugikan pihak tertentu. Karena bila pesan yang dikirim berisi sesuatu yang bersifat rahasia sehingga pesan tersebut dibaca oleh pihak yang tidak berhak, maka bocorlah kerahasiaan pesan yang dikirim. Ini adalah masalah keamanan pesan yang dinamakan kerahasiaan. Aman sering diartikan dengan istilah free from danger yang berarti bebas dari ancaman bahaya. Menurut Harold F. Tipton, “Keamanan biasanya digambarkan sebagai kebebasan dari bahaya atau sebagai kondisi keselamatan”. (Rifqi,2012). Keamanan komputer secara rinci adalah perlindungan data didalam suatu sistem melawan terhadap otorisasi tidak sah. Dimana pengirim menginginkan pesan yang akan dikirim ke penerima sampai dengan utuh tanpa ada kurang atau lebih pada pesan tersebut, artinya tidak ada manipulasi pesan selama pesan itu dalam perjalanan menuju penerima, dan harus dipastikan bahwa pesan yang diterima oleh penerima adalah pesan asli yang memang dikirim oleh pengirim tanpa ada penambahan atau 2-1 http://digilib.mercubuana.ac.id/ pengurangan terhadap isi pesan yang memungkinkan akan merubah arti dari isi pesan tersebut. Ketika penerima merasa yakin bahwa pesan yang diterimanya berasal dari pengirim yang dimaksud dan bukan orang lain yang menyamar, kemudian si pengirim juga merasa yakin bahwa yang menerima pesan yang dia kirim adalah orang yang dituju, maka hal ini adalah merupakan masalah keamanan data pesan yang disebut otentikasi. Mengingat pentingnya sebuah data informasi, mengharuskan dilakukanya pengamanan terhadap data informasi tersebut untuk menjaga nilai.keaslian serta keabsahannya supaya tidak disalah gunakan oleh pihak-pihak yang tidak berwenang dan tidak bertanggung jawab. Keamanan data informasi merupakan salah satu cabang studi dari teknologi informasi yang mempelajari metode dan teknik untuk melindungi data dan sistem informasi dari akses, perusakan, penyebaran, perubahan dan tindakan lainya tanpa otorisasi yang sah. Keamanan data pada komputer tidak hanya tergantung pada teknologi saja, tetapi juga dari aspek prosedure dan kebijakan keamanan yang diterapkan serta jika firewall danperangkat keamanan lainnya bisa dibobol oleh orang yang tidak berhak, disini perang kriptografi untuk mengamankan data dengan menggunakan teknik enkripsi sehingga data tidak bisa dibaca (Kurniawan, 2012). 2.3. Layanan Keamanan Jaringan Dalam Komunikasi Data Layanan-layanan keamanan jaringan didefinisikan berdasarkan kebutuhan yang harus disediakan untuk memenuhi permintaan terhadap keamanan jaringan. Jenis-jenis layanan keamanan jaringan berdasarkan rekomendasi ITU-T (International Telecommunication Union-Telecommunication Standardiation Sector) pada dokumen X.800, (Rifqi,2012). Adalah : 1. Otentikasi Dalam layanan otentikasi terdapat dua layanan, yang pertama adalah layanan otentikasi entitas (entity aunthentication), yaitu layanan keamanan jaringan yang memberikan kepastian terhadap identitas semua entitas yang terlibat dalam komunikasi data. Sedangkan yang kedua adalah otentikasi keaslian data (data origin authentication) yaitu layanan yang memberikan kepastian terhadap sumber sebuah data. 2. Kendali Akses (access control) 2-2 http://digilib.mercubuana.ac.id/ Kendali akses yaitu layanan keamanan jaringan yang menghalangi penggunaan tidak terotorisasi terhadap sumber daya. Pada aplikasi jaringan biasanya kebijakan kemampuan ditentukan oleh jenis pengguna. Misalnya sebuah data rekam medis elektronik hanya dapat diakses oleh pasien dan paramedis yang terlibat. 3. Kerahasiaan Data (data confidentiality) Kerahasiaan data adalah layanan keamanan jaringan yang memproteksi data tertranmisi terhadap pengungkapan oleh pihak yang tidak berwenang. 4. Keutuhan Data (data integrity) Keutuhan data adalah layanan keamanan jaringan yang memastikan bahwa data yang diterima oleh penerima adalah benar-benar sama dengan data yang dikirim oleh pengirim. 5. Non-Repudiation Layanan non-repudiation adalah layanan keamanan jaringan yang menghindari penolakan atas penerimaan/pengiriman data yang telah terkirim. 6. Ketersediaan (availabilituy) Layanan ketersediaan adalah layanan sistem yang membuat sumber daya sistem tetap dapat diakses dan digunakan ketika ada permintaan dari pihak yang berwenang. Serangan terhadap sistem seperti denial of services membuat sistem tidak dapat diakses oleh pihak yang berwenang. (Rifki Sadikin,2012) 2.4. Mekanisme Keamanan Jaringan Untuk mewujudkan layanan keamanan jaringan, pengembang sistem dapat menggunakan mekanisme keamanan jaringan. Berikut ini adalah beberapa jenis mekanisme keamanan jaringan : o Encipherment Merupakan mekanisme keamanan jaringan yang digunakan untuk menyembunyikan data. Mekanisme ini dapat menyediakan layanan kerahasiaan data meskipun dapat juga digunakan untuk layanan lainnya. Untuk mewujudkan mekanisme encipherment teknik kriptografi dan steganografi dapat digunakan. o Keutuhan Data Mekanisme keutuhan data digunakan untuk memastikan keutuhan data pada unit data atau pada suatu aliran (stream) data unit. Cara yang digunakan adalah dengan menambahkan nilai penguji (check value) pada 2-3 http://digilib.mercubuana.ac.id/ data asli. Jadi ketika sebuah data akan dikirim nilai penguji dihitung terlebih dahulu dan kemudian data dan penguji dikirim bersamaan. o Digital Signature Digital signature merupakan mekanisme keamanan jaringan yang menyediakan cara bagi pengirim data untuk “menandatangani” secara elektronik sebuah data dan penerima dapat memverifikasi “tanda tangan” itu secara elektronik. 2.5. Kriptografi 2.5.1 Pengertian Kriptografi Secara etimologi kata kriptografi (cryptography) berasal dari bahasa Yunani, yaitu kryptos yang artinya tersembunyi dan graphein yang artinya tulisan. Awal mula kriptografi dipahami sebagai ilmu tentang menyembunyikan pesan (Rifki Sadikin, 2012),buku-buku tentang kriptografi terbitan lama sekitar tahu 80-an secara umum mendifinisikan kriptografi sebagai sebuah ilmu dan seni untuk menjaga kerahasiaan pesan dengan cara menyandikannya kedalam bentuk yang tidak dapat dimengerti lagi maknanya secara umum. Namun saat ini kriptografi lebih dari sekedar privacy, akan tetapi juga untuk tujuan data integrity, authentication, dan nonrepudiation (Rifki Sadikin, 2012). Menurut Katz, kriptografi adalah studi ilmiah atau teknik untuk mengamankan informasi digital, transaksi, dan komputasi yang terdistribusi (Ade Candra, 2015). Seiring perkembangan zaman hingga saat ini pengertian kriptografi berkembang menjadi ilmu tentang teknis matematis yang digunakan untuk menyelesaikan persoalan keamanan informasi seperti kerahasiaan, keutuhan data dan otentikasi entitas. Jadi dapat disimpulkan bahwa pengertian kriptografi modern adalah tidak saja mengenai penyembunyian pesan namun lebih kepada sekumpulan teknik yang menyediakan keamanan informasi. Beberapa mekanisme yang berkembang pada kriptografi modern antara lain : 1. Fungsi Hash Fungsi hash yaitu melakukan pemetaan pesan dengan panjang sembarang kesebuah teks khusus yang disebut message digest dengan panjang tetap. Fungsi hash umumnya dipakai sebagai nilai uji (check value) pada mekanisme keutuhan data. 2-4 http://digilib.mercubuana.ac.id/ 2. Penyandian dengan kunci simetrik (symmetric key encipherment). Penyandian dengan kunci simetrik adalah penyandian yang kunci enkripsi dan kunci dekripsi bernilai sama. Kunci pada penyandian ini bersifat rahasia, hanya pihak yang melakukan enkripsi dan dekripsi yang mengetahuinya. Penyandian dengan kunci simetrik disebut juga penyandian kunci rahasia (secret key encipherment). 3. Penyandian dengan kunci asimetrik (asymmetric key encipherment) Penyandian dengan kunci asimetrik atau juga sering disebut penyandian kunci public (public key) adalah penyandian dengan kunci enkripsi dan dekripsi berbeda nilai. Kunci enkripsi yang juga disebut dengan kunci public (public key) bersifat terbuka. Sedangkan kunci dekripsi yang juga disebut kunci privat (private key) bersifat tertutup/rahasia. Didalam Kriptografi terdapat banyak istilah (terminology). Beberapa istilah yang perlu diketahui antara lain : 1. Pesan Plainteks dan Pesan cipherteks Pesan Plainteks (plaintext) adalah data informasi yang dapat dibaca dan dimengerti maknanya. Pesan dapat berupa daa informasi yang dikirim (melalui kurir, saluran telekomunikasi,dan lainnya) atau yang disimpan didalam media penyimpanan (kertas,storage,dll). Pesan dapat berupa teks, suara, gambar, atau video. Sedangkan pesan cipherteks (ciphertext) adalah pesan asli (plaintext) yang sudah tersandikan supaya pesan tidak dapat dibaca atau dimengerti oleh orang lain yang tidak berwenang, cipherteks harus bisa ditranspormasikan kembali menjadi plainteks oleh penerima supaya bisa dibaca dan dimengerti makna dan maksudnya.(Munir, 2006) 2. Enkripsi dan Dekripsi Enkripsi adalah proses penyandian plaintext menjadi ciphertext atau disebut juga proses encryption. Sedangkan dekripsi (decryption) adalah proses megembalikan pesan yang sudah tersandi (ciphertext) menjadi pesan asli (plaintext) supaya bisa dibaca dan dimengerti apa isi dari pesan yang diterima. 3. Pengirim dan Penerima Komunikasi data melibatkan pertukaran pesan antara dua entitas. Pengirim adalah entitas yang mengirimkan pesan sedangkan penerima adalah entitas yang menerima pesan. Pengirim pasti berharap pesan yang dikirimnya dapat 2-5 http://digilib.mercubuana.ac.id/ diterima oleh penerima dengan aman tanpa bisa dibaca oleh pihak lain yang tidak berhak , untuk itu perlu dilakukan proses penyandian terhadap pesan yang akan dikirim menjadi cipherteks. 4. Cipher dan Kunci Cipher merupakan kata lain dari algoritma kriptografi, yaitu aturan bagaimana melakukan proses enkripsi dan dekripsi secara matematis. Beberapa cipher memerlukan algoritma yang berbeda untuk melakukan proses enkripsi dan dekripsi. Konsep matematis yang mendasari algoritma kriptografi adalah relasi antara dua buah himpunan yang berisi elemen-elemen plainteks dengan himpunan yang berisi elemen-elemen cipherteks. Enkripsi dan dekripsi merupakan fungsi yang memetakan elemen-elemen kedua himpunan tersebut, misalkan P adalah plainteks dan C adalah cipherteks, maka : E(P) = C fungsi enkripsi E memetakan P ke C D(C) = P fungsi dekripsi D memetakan C ke P Karena proses enkripsi, maka kemudian proses dekripsi mengembalikan pesan tersandi ke pesan asli dengan persamaan : D(E(P)) = P harus benar Kriptografi adalah salah satu teknik untuk mengatai keamanan data, didalam prosesnya teknik kriptografi menggunakan sebuah kunci yang bersifat rahasia. Kunci (key) merupakan parameter yang digunakan untuk mentransformasikan proses enkripsi dan dekripsi. Kunci dapat berupa string maupun bilangan. Fungsi persamaan enkripsi dan dekripsi dengan menggunakan kunci K adalah sebagai berikut : EK(P) = C dan DK(C) =P Dari kedua fungsi persamaan tersebut, maka akan didapat fungsi persamaan sebagai berikut : DK(EK(P)) = P Keterangan : E = Enkripsi D = Dekripsi K = Kunci P = Plaintext C = Ciphertext 2-6 http://digilib.mercubuana.ac.id/ Pada proses enkripsi pesan “P” di enkripsikan dengan “E” menggunakan kunci “K” menjadi pesan sandi “C”. kemudian pada proses dekripsi pesan “C” dikembalikan lagi ke pesan asli melalui proses dekripsi “D” dengan menggunakan kunci “K” sehingga menghasilkan pesan asli plaintext “P”. Dengan demikian, dengan menggunakan kunci “K”, maka proses enkripsi dan dekripsi dapat digambarkan dalam skema sebagai berikut : Gambar 2.1. Skema proses enkripsi dan dekripsi 2.5.2 Sejarah Kriptografi Seni kriptografi sudah ada sejak zaman kuno, hal ini dibuktikan dengan ditemukannya penulisan rahasia tertua pada peradaban Mesir kuno yakni tahun 3000-an SM, dimana pada masa itu bangsa mesir menggunakan ukiran rahasia yang disebut dengan hieroglyphics untuk menyampaikan pesan kepada orang-orang yang berhak. Selanjutnya pada awal tahun 400 SM bangsa Spartan di Yunani memanfaatkan kriptografi dibidang militer dengan menggunakan alat yang disebut scytale, yaitu pita panjang berbahan daun papyrus yang dibaca dengan cara digulungkan ke sebatang silinder. 2-7 http://digilib.mercubuana.ac.id/ Gambar 2.2. Hieroglyphics Sumber : www.ancient-egypt-online.com Gambar 2.3. Scytale Sumber : http://2.bp.blogspot.com/s1600/Skytale.jpg/ Sedangkan di Asia peradaban China dan Jepang menemukan kriptogrfi pada abad 15 SM. Peradaban Islam jugamenemukan kriptografi karena penguasaanya terhadap matematika, statistik dan linguistik. Bahkan teknik kriptanalis dipaparkan untuk pertama kalinya pada abad 9 M oleh seorang ilmuwan Islam yang bernama Abu Yusuf Ya‟qub bin „Ishaq asShabbah al Kindi atau biasa di panggil Al Kindi yang menulis kitab tentang seni 2-8 http://digilib.mercubuana.ac.id/ memecahkan kode. Kitab tersebut berjudul Risalah fi Istikhraj al-Mu‟amma (Manuskrip untuk memecahkan pesan-pesan Kriptografi),yang terinspirasi dari perulangan huruf dalam Al-Qur‟an, Al-Kindi menemukan teknik analisis frekuensi, yakni teknik untuk memecahkan ciphertext berdasarkan frekuensi kemunculan karakter pada sebuah pesan. Gambar 2.4. Risalah fi Istikhraj al-Mu‟amma Sejarah panjang kriptografi telah mencatat ada empat kelompok yang dianggap berkontribusi terhadap perkembangan seni kriptografi, dimana keempat kelompok tersebut menggunakan kriptografi untuk menjamin kerahasiaan dan keamanan dalam komunikasi pesan yang dianggap penting. Keempat kelompok tersebut adalah kalangan militer, diplomatik, penulis buku serta para pecinta (lovers). Kalangan gereja pada awal masa agama kristen menggunakan teknik kriptografi untuk keamanan tulisan religius dari gangguan otoritas budaya dan politik yang lebih dominan pada masa itu. Hal ini dapat diliat dari istilah yang sudah terkenal dikalangan umat kristiani yaitu “Angka si Buruk Rupa (number of the beast)” yang tertulis di Kitab perjanjian baru yaitu angka “666” merupakan cara kriptografik (dienkripsi) untuk menyembunyikan pesan berbahaya, para ahli percaya bahwa pesan tersebut mengacu kepada kekaisaran Romawi. Sedangkan para pencinta (lovers) menggunakan teknik kriptografik untuk berkomunikasi dengan pasangannya dengan rahasia tanpa diketahui oleh orang lain. Hal ini dapat dilihat 2-9 http://digilib.mercubuana.ac.id/ didalam buku Kama Sutra dari India yang merekomendasikan wanita seharusnya mempelajari seni memahami tulisan dengan cipher. Pada abad ke-17 sejarah kriptografi mencatat korban ketika ratu Skotlandia „Queen Mary‟ dihukum pancung setelah surat rahasianya (surat terenkripsi) yang isinya rencana pembunuhan ratu Ratu Elizabeth I berhasil dipecahkan oleh seorang pemecah kode . Sekitar tahun 50 SM, ketika Julius Caesar, Kaisar Roma, ingin mengirimkan satu pesan rahasia kepada seorang Jendral di medan perang. Pesan tersebut harus dikirimkan melalui kurir, tetapi karena pesan tersebut mengandung informasi yang bersifat rahasia maka Julius Caesar tidak ingin pesan tersebut sampai dibuka dan dibaca ditengah jalan. Julius Caesar memikirkan bagaimana cara mengatasinya yaitu dengan cara mengacak pesan tersebut menjadi suatu pesan yang tidak dapat dipahami oleh siapa pun kecuali Jendralnya tersebut. Tentunya jendral tersebut telah diberitahu bagaimana cara membaca pesan tersebut. Julius Caesar menggunakan cipher subtitusi untuk mengirim pesan tersebut kepada jendralnya. Pada cipher ini, huruf – huruf alfabet disubtitusikan dengan huruf – huruf yang lain pada alfabet yang sama, karena hanya satu alfabet yang digunakan, cipher ini merupakan subtitusi monoalfabetik. Cipher semacam ini mencakup pergeseran alfabet dengan 3 huruf dan mensubtitusikan huruf tersebut. Subtitusi ini dikenal dengan C3 (untuk Caesar menggeser 3 tempat). Secara umum sistem cipher Caesar dapat ditulis sebagai berikut: Zi = Cn(Pi) Dimana Zi adalah karakter-karakter ciphertext, Cn adalah transformasi substitusi alfabetik, n adalah jumlah huruf yang digeser dan Pi adalah karakter-karakter plaintext. Disk mempunyai peranan penting dalam kriptografi sekitar 500 tahun yang lalu. Di Italia sekitar tahun 1460, Leon Battista Alberti 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. 2.5.3 Sistem Kriptografi Sistem kriptografi terdiri dari 5 bagian : 1. Plaintext 2-10 http://digilib.mercubuana.ac.id/ Plaintext adalah pesan atau data dalam bentuk aslinya yang dapat terbaca. Plaintext merupakan masukan bagi algoritma enkripsi. 2. Secret Key Secret key juga merupakan masukan bagi algoritma enkripsi dan merupakan nilai yang bebas terhadap teks asli dan menentukan hasil keluaran algoritma enkripsi. 3. Ciphertext Ciphertext adalah merupakan keluaran algoritma enkripsi, dan merupakan pesan tersembunyi. Algoritma enkripsi yang baik akan menghasilkan sebuah ciphertext yang acak dan susah di baca/diartikan. 4. Algoritma Enkripsi Algoritma enkripsi mempunyai 2 masukan, yaitu teks asli (plaintext) and kunci rahasia (secret key). Algoritma enkripsi membuat perubahan terhadap teks asli sehingga menjadi teks sandi. 5. Algoritma Dekripsi Algoritma dekripsi juga memiliki 2 masukan, yaitu teks sandi (ciphertext) dan kunci rahasia. Algoritma dekripsi merubah kembali teks sandi yang acak dan seakan tidak mempunyai arti menjadi teks asli yang mempunyai arti seperti semula. 2.5.4 Kriptografi Klasik Kriptografi klasik telah digunakan sebelum era komputer, yang mana umumnya merupakan teknik penyandian dengan kunci simetrik dan penyembunyian pesan yang mempunyai arti ke sebuah pesan yang seolah-olah tidak mempunyai arti dengan menggunakan metode substitusi (pergantian huruf) dan/atau transposisi (pertukaran tempat). Kriptografi klasik adalah sebuah algoritma dengan berbasis karakter, dimana enkripsi dan dekripsi dilakukan pada setiap karakter pesan. Beberapa ciri kriptografi klasik antara lain : Berbasis karakter Termasuk kedalam kriptografi kunci simetris Alat yang digunakan adalah pena dan kertas (belum menggunakan komputer) 2-11 http://digilib.mercubuana.ac.id/ Kriptografi klasik merupakan dasar dari ilmu kriptografi modern dan diperlukan guna mempelajari konsep dasar kriptografi, dengan mempelajari kriptografi klasik, maka kita bisa memahami kelemahan sistem kode. Pada dasarnya, algoritma kriptografi klasik dapat dikelompokkan kedalam dua macam cipher, yaitu : 1. Cipher Substitusi (Substitution Cipher) Di dalam cipher substitusi setiap unit plainteks diganti dengan satu unit cipherteks. Algoritma substitusi tertua yang diketahui adalah Caesar cipher yang digunakan oleh kaisar Romawi , Julius Caesar sehingga dinamakan juga caesar cipher, untuk mengirimkan pesan yang dikirimkan kepada gubernurnya. Caranya adalah dengan mengganti mensubstitusi setiap karakter dengan karakter lain dalam susunan abjad (alfabet). Misalnya, tiap huruf disubstitusi dengan huruf kelima berikutnya dari susunan abjad. Dalam hal ini kuncinya adalah jumlah pergeseran huruf yaitu k = 5. pi: A B C D E F ci: I J pi: N O P Q R ci: F G H S G I J K L M K L M N O P Q R S U V W X Y Z Z E T T U V W X Y H A B C D Tabel 2.1. Cipher Substitusi Contoh Pesan : MAHASISWA UMB KELAS KARYAWAN Disandikan (enkripsi) menjadi : RFMFXNXBF ZRG PJQFX PFWTFBFS Penerima pesan mendekripsi cipherteks dengan menggunakan table substitusi, sehingga cipherteks: RFMFXNXBF ZRG PJQFX PFWTFBFS Dapat di ubah kembali menjadi pesan asli seperti semula yaitu : MAHASISWA UMB KELAS KARYAWAN 2-12 http://digilib.mercubuana.ac.id/ Dengan mengkodekan setiap huruf abjad dengan integer sebagai berikut: A = 0, B = 1, …, Z = 25, maka secara matematis caesar cipher menyandikan plainteks pi menjadi ci dengan aturan: ci = E(pi) = (pi + 3) mod 26 (1) dan dekripsi cipherteks ci menjadi pi dengan aturan: pi = D(ci) = (ci - 3) mod 26 (2) Karena hanya ada 26 huruf abjad, maka pergeseran huruf yang mungkin dilakukan adalah dari 0 sampai 25. Secara umum, untuk pergeseran huruf sejauh k (dalam hal ini k adalah kunci enkripsi dan dekripsi), fungsi enkripsi adalah: ci = E(pi) = (pi + k) mod 26 (3) dan fungsi dekripsi adalah: pi = D(ci) = (ci - k) mod 26 (4) Catatan: a) Pergeseran 0 sama dengan pergeseran 26 (susunan huruf tidak berubah). b) Pergeseran lain untuk k > 25 dapat juga dilakukan namun hasilnya akan kongruen dengan bilangan bulat dalam modulo 26. Misalnya k = 37 kongruen dengan 11 dalam modulo 26, atau 37 ≡ 11 (mod 26). c) Karena ada operasi penjumlahan dalam persamaan (3) dan (4), maka caesar cipher kadang-kadang dinamakan juga additive cipher. Untuk mengenkripsi/dekripsi pesan yang disusun oleh karakter-karakter teks (ASCII, 256 karakter), maka persamaan 3 dan 4 ditulis: ci = E(pi) = (pi + k) mod 256 (3) pi = D(ci) = (ci - k) mod 26 (4) Terdapat empat cara dalam menggunakan teknik subtitusi, yaitu: a. Monoalphabet, dimana setiap karakter Ciphertext mengganti satu macam karakter Plaintext tertentu. b. Polialphabet, dimana setiap karakter Ciphertext mengganti lebih dari satu macam karakter Plaintext. c. Monograf/unilateral, dimana satu enkripsi dilakukan terhadap satu karakter Plaintext. d. Poligraf/multilateral, dimana satu enkripsi dilakukan terhadap lebih dari satu karakter Plaintext. (Dian, 2015) 2-13 http://digilib.mercubuana.ac.id/ 2. Cipher transposisi (transposition cipher) Di dalam cipher transposisi pengacakan huruf dilakukan berdasar letak atau posisinya yang di rubah akan tetapi untuk huruf-huruf yang digunakan dalam kalimat masih sama. Metode ini disebut juga permutasi atau pengacakan (scrambling), karena transpose setiapkarakter didalam teks masih samadengan mempermutasikankarakter-karakter tersebut. Contoh pesan : FAKULTAS ILMU KOMPUTER MERCUBUANA Untuk mengenkripsi pesan, plainteks ditulis secara horizontal dengan lebar kolom tetap, misal selebar 6 karakter (kunci k – 6): FAKULT ASILMU KOMPUT ERMERC UBUANA Maka cipherteksnya dibaca secara vertical menjadi: FAKEUASORBKIMMUULPEALMURNTUTCA Untuk mendekripsi pesan, kita membagi panjang cipherteks dengan kunci. Pada contoh ini, kita membagi 30 dengan 6 untuk mendapatkan 5. kita menulis cipherteks dalam baris-baris selebar 5 karakter menjadi: FAKEU ASORB KIMMU ULPEA LMURN TUTCA Dengan membaca setiap kolom kita memperoleh pesan semula: FAKULTAS ILMU KOMPUTER MERCUBUANA 2-14 http://digilib.mercubuana.ac.id/ Ada benyak variasi yang bisa di explore dari metode transposisi, tergantung kreativitas seseorang dalam memanfaatkan metode ini dalam proses enkripsi dan dekripsi. 2.5.5 Sistem Kriptografi Klasik berbasis Substitusi Sistem-sistem kriptografi klasik dapat dilihat dari operasi yang digunakan dalam enkripsi dan dekripsi. Salah satu operasi yang digunakan untuk enkripsi dan dekripsi adalah substitusi. Prinsip utama substitusi adalah mengganti kemunculan sebuah simbol dengan simbol lainnya. Sistem kriptografi yang menggunakan operasi substitusi disebut dengan sistem kriptografi berbasis substitusi. Sistem kriptografi berbasi substitusi diantaranya adalah Shift cipher (Ceisar cipher), Affine cipher, Vgenere cipher dan Hill cipher. 2.5.5.1 Shift cipher (Caesar cipher) Sandi Caesar merupakan sistem persandian klasik berbasis substitusi yang sederhana. Enkripsi dan dekripsi pada sistem persandian Caesar menggunakan operasi shift. Operasi shift adalah mesubstitusi suatu huruf menjadi huruf pada daftar alphabet berada di-k sebelah kanan atau sebelah kiri huruf tersebut. Misalkan dipilih k=3 (ganti dengan huruf ke-3 sebelah kanan) maka “A” akan menjadi huruf “D”, dan “B” akan menjadi huruf “E” dan seterusnya. Bagaimana dengan “X”, “Y”, dan “Z”. supaya semuanya memiliki substitusi, maka huruf “A” dianggap disebelah kanan huruf “Z” sehingga “X” menjadi “A”, “Y” menjadi “B” dan “Z” menjadi “C”. Untuk dapat mengolah teks asli yang merupakan deretan symbol huruf diperlukan pemetaan dari huruf menjadi angka sehingga dapat diaplikasikan dengan operasi martematika. Misal huruf “A” sampai “Z” dipetakan ke angka “0” sampai “25”. Nilai yang mungkin untuk teks asli dan teks sandi adalah dari “0” sampai “25” dan jika hasi penggeseran melebihi 26 maka angka tersebut dibagi 26 dan nilai sisa yang dipakai adalah sisa bagi atau dalam istilah matematika adalah modular, oleh karena itu aritmatika modular Z26 digunakan pada sistem persandian ceasar. 2-15 http://digilib.mercubuana.ac.id/ Gambar 2.7. Simulasi penyandian Caesar Cipher Kelas Caesar cipher memiliki 2 fungsi, yaitu enkripsi dan dekripsi. Operasi enkripsi melakukan penjumlahan nilai kunci K terhadap satu input karakter teks asli, sedangkan operasi dekripsi penjumlah invers nilai kunci K terhadap satu input karakter teks sandi, semua operasi aritmatika pada aritmatika modular Z26. Implementasi dalam bahsa java sebagai berikut : Public class CaesarCipher extends ClassicCipher { //kunci K Public CaesarCipher (int K) { This.K = K; } //fungsi enkripsi x = (x + K) mod 26 Public int enkripsi(int x) { return z_m.tambah (x, K); } //fungsi dekripsi x = (x – K) mod 26 Public int dekripsi (int y) { return z_m.tambah (y, z_m.neg(K)); } } Contoh : Dengan menggunakan sandi ceasar dengan kunci K=7 sandikan pesan berikut ini: UDIN PERGI KE KAMPUS Jawab : Petakan terlebih dahulu karakter alfabet menjadi bilangan pada Z26 U D I N P E R G I K E K A M P U S 2-16 http://digilib.mercubuana.ac.id/ 20 3 8 13 15 4 17 6 8 10 4 10 0 12 15 20 18 Setelah didapatkan rangkaian bilangan tambahan K untuk tiap bilangan dalam aritmatika moduluar Z26, maka hasilnya adalah : 1 10 15 20 22 11 24 13 15 17 11 17 7 19 22 1 25 B K P U W L R N P R L R H T W B Z Jadi cipherteks untuk pesan “UDIN PERGI KE KAMPUS” adalah “ BKPU WLRNP RL RHTWBZ Keamanan Sandi Caesar Keamanan sandi ceasar msih lemah, hal ini dapat didemontrasikan dengan analisis sandi dengan tipe penyerangan ciphertext-only attack, yaitu dengan hanya melihat teks sandi saja nilai kunci K pada sandi ceasar dapat dipecahkan. Ketidak amanan sandi Ceasar disebabkan oleh besar ruang nilai yang mungkin bagi kunci K terlalu kecil yaitu hanya 26 tebakan. Contoh : Jika diketahui ciphertext berikut di hasilkan oleh sandi Caesar : RWR YNBJW AJQJBRJ Maka kunci K dapat dicoba dari 1 sampai dengan k dengan menjalankan operasi dekripsi. Nilai k dipilih ketika dekripsi cipherteks memberikan plainteks yang bisa dibaca k Plainteks 1 QVQ XMAIV ZIPIAQI 2 PUP 3 OTO VKYGT 4 NSN UJXFS WFMFXNF 5 MRM TIWER VELEWME WLZHU YHOHZPH XGNGYOG 2-17 http://digilib.mercubuana.ac.id/ 6 LQL SHVDQ UDKDVLD 7 KPK RGUCP TCJCUKC 8 JOJ QFTBO 9 INI PESAN SBIBTJB RAHASIA Pada nilai K = 9, teks asli yang didapatkan adalah INI PESAN Rahasia, plainteks ini bisa dibaca sehingga dapat disimpulkan nilai kunci K adalah 9. 2.5.5.2 Sandi Affine Sistem sandi affine merupakan sandi monoalfabetik yang menggunakan teknik substitusi yang menggunakan fungsi linier ap + b untuk enkripsi teks asli p dan a-1 c – b untuk dekripsi teks sandi c pada Z26 . Gambar 2.8. Ilustrasi Sandi Affine (Rifki Sadikin, 2012) Kunci pada sandi affine adalah 2 integer yaitu a dan b. Nilai a yang dapat dipakai adalah anggota elemen pada Z26 yang memiliki invers yaitu yang memenuhi gcd(a,26) =1. Implementasi Sandi Affine public class AffineCipher extends ClassicCipher { // K [0] = a, K[1] = b Int [ ] K= new int [2]; 2-18 http://digilib.mercubuana.ac.id/ public AffineCipher(int [ ] K) { int [ ] mZstar = z_m.mult_group (); int aHasInvers = java.util.Arrays.binarySearch (mZstar, K[0]); if (aHasInvers == -1) { System,err.pintln (“Kunci a pada affine cipher harus memiliki Invers perkalian, a = “+ K[0]; } System.arraycopy(K,0, this.K,0, 2); } public int enkripsi (int x) { // e(x) = ax + b mod 26 Return z_m.tambah(z_m.kali(K[0],x) ,K[1]); } public int dekripsi(int y) { // d(y) = a^{-1} (y -b) mod 26 return z_m.kali(z_m.invers(K[0]) , z_m.tambah(y, z_m.neg(K[1]))); } } Implementasi sandi affine seperti tertera diatas, kunci disimpan pada larik integer. Fungsi enkripsi menggunakan metode kali dan tambah dari kelas AritmatikaModular untuk melakukan perhitungan c[i] = a x p[i] + b pada Z26. Fungsi dekripsi menggunakan metode invers, kali, tambah dan neg dari kelas AritmatikaModular untuk melakukan perhitungan p[i] = a-1 x c[i] – b. Keamanan Sandi Affine Sandi Affine memiliki kelemahan yang sama dengan sandi Caesar yaitu ukuran ruang kunci yang kecil. Ukuran ruang kunci sandi Affine adalah 12 x 26 = 312 (12 adalah jumlah bilangan integer yang memiliki invers di Z26 yang dapat dipakai sebagai nilai a, sedangkan untuk b, terdapat 26 nilai kemungkinan). Ukurang ruang kunci yang kecil menyebabkan sistem sandi affine dapat depecahkan dengan pencarian brute force.(Akbar, 2013) 2-19 http://digilib.mercubuana.ac.id/ Sandi Affine dapt secara mudah terbongkar keamanannya jika diserang dengan tipe penyerangan known plaintext attack. Misalkan terdapat 2 pasang teks asli dan teks sandi yang diketahui maka dengan mudah si penyerang mengetahui nilai a dan b dengan menyelesaikan sistem persamaan linear. ( Rifqi Sadikin, 2012) C1 = ap1 + b C2 = ap2 + b Contoh : Jika didapat sepasang teks asli “BIMA SAKTI” dan teks sandi “WXFH RHBGX” dan diketahui sistem sandi yang digunakan adalah sandi affine, maka kunci yang digunakan dapat dicari dengan hanya dibutuhkan 2 pasang karakter teks asli dan karakter teks sandi untuk memecahkan sandi affine dengan membentuk sistem persamaan linier, 2 karakter pertama pada teks asli dan teks sandi dapat digunakan yaitu (B,W) dan (I,X). bentuk sistem persamaan linier dengan mengubah representasi alphabet menjadi integer, sebagai berikut : 22 = 1a + b 23 = 8a + b Sistem persamaan linier dapat dipecahkan sehingga didapatkan 7a =1, a = 7-1 = 15 dan kemudian mendapatkan b = 22-15 =7, jadi kunci yang digunakan adalah a=15, b=7. 2.5.6 Serangan Terhadap Kriptografi 2.5.6.1 Jenis-jenis Serangan 1. Berdasarkan keterlibatan penyerang dalam komunikasi, serangan dapat dibagi atas dua macam, yaitu: a. Serangan pasif (passive attack) Pada serangan ini, penyerang tidak terlibat dalam komunikasi antara pengirim dan penerima, namun penyerang menyadap semua pertukaran pesan antara kedua entitas tersebut. Tujuannya adalah untuk mendapatkan sebanyak mungkin informasi yang digunakan untuk kriptanalisis. Beberapa metode penyadapan antara lain: 2-20 http://digilib.mercubuana.ac.id/ wiretapping: penyadap mencegat data yang ditransmisikan pada saluran kabel komunikasi dengan menggunakan sambungan perangkat keras. electromagnetic eavesdropping: penyadap mencegat data yang ditrasnmisikan melalui saluran wireless, misalnya radio dan microwave. acoustic eavesdropping: menangkap gelombang suara yang dihasilkan oleh suara manusia. b. Serangan aktif (active attack) Pada jenis serangan ini, penyerang mengintervensi komunikasi dan ikut mempengaruhi sistem untuk keuntungan dirinya. Misalnya penyerang mengubah aliran pesan seperti menghapus sebagian cipherteks , mengubah cipherteks, menyisipkan potongan cipherteks palsu, me-replay pesan lama, mengubah informasi yang tersimpan, dan sebagainya. 2. Berdasarkan banyaknya informasi yang diketahui oleh kriptanalis, maka serangan dapat dikelompokkan menjadi lima jenis, yaitu: a. Ciphertext-only attack Ini adalah jenis serangan yang paling umum namun paling sulit, karena informasi yang tersedia hanyalah cipherteks saja. Kriptanalis memiliki beberapa cipherteks dari beberapa pesan, semuanya dienkripsi dengan algoritma yang sama. Untuk itu kriptanalis menggunakan beberapa cara, seperti mencoba semua kemungkinan kunci secara exhaustive search. Menggunkan analis frekuensi, membuat terkaan berdasarkan informasi yang diketahui,dan sebagainya. b. Known-plaintext attack Ini adalah jenis serangan dimana kriptanalis memiliki pasangan plainteks dan cipherteks yang berkoresponden. c. Chosen-plaintext attack Serangan jenis ini lebih hebat dari pada known-plaintext attack, karena kriptanalis dapat memilih plainteks yang dimilikinya untuk dienkripsikan, yaitu plainteks-plainteks yang lebih mengarahkan penemuan kunci. d. Chosen-ciphertext attack Ini adalah jenis serangan dimana kriptanalis memilih cipherteks untuk didekripsikan dan memiliki akses ke plainteks hasil dekripsi. 2-21 http://digilib.mercubuana.ac.id/ e. Chosen-text attack Ini adalah jenis serangan yang merupakan kombinasi chosen-plaintext attack dan chosen-chiphertext attack. 3. Berdasarkan teknik yang digunakan dalam menemukan kunci, maka serangan dapat dibagi menjadi empat, yaitu: a. Exhaustive attack atau brute force attack Ini adalah serangan untuk mengungkap plainteks atau kunci dengan menggunakan semua kemungkinan kunci. Diasumsikan kriptanalis mengetahui algoritma kriptografi yang digunakan oleh pengirim pesan. Selain itu kriptanalis memiliki sejumlah cipherteks dan plainteks yang bersesuaian. b. Analytical attack Pada jenis serangan ini, kriptanalis tidak mencoba-coba semua kemungkinan kunci tetapi menganalisis kelemahan algoritma kriptografi untuk mengurangi kemungkinan kunci yang tidak ada. Diasumsikan kriptanalis mengetahui algoritma kriptografi yang digunakan oleh pengirim pesan. Analisis dapat menggunakan pendekatan matematik dan statistik dalam rangka menemukan kunci. c. Related-key attack Kriptanalis memiliki cipherteks yang dienkripsi dengan dua kunci berbeda. Kriptanalis tidak mengetahui kedua kunci tersebut namun ia mengetahui hubungan antara kedua kunci, misalnya mengetahui kedua kunci hanya berbeda 1 bit. d. Rubber-hose cryptanalysis Ini mungkin jenis serangan yang paling ekstrim dan paling efektif. Penyerang mengancam, mengirim surat gelap, atau melakukan penyiksaan sampai orang yang memegang kunci memberinya kunci untuk mendekripsi pesan 2.5.6.2 Kompleksitas Serangan Kompleksitas serangan dapat diukur dengan beberapa cara, yaitu: 1. Kompleksitas data (data complexity) 2-22 http://digilib.mercubuana.ac.id/ Jumlah data (plainteks dan cipherteks) yang dibutuhkan sebagai masukan untuk serangan. Semakin banyak data yang dibutuhkan untuk melakukan serangan, semakin kompleks serangan tersebut, yang berarti semakin bagus sistem kriptografi tersebut. 2. Kompleksitas waktu (time complexity) Waktu yang dibutuhkan untuk melakukan serangan. Semakin lama waktu yang dibutuhkn untuk melakukan serangan, berarti semakin bagus kriptografi tersebut. 3. Kompleksitas ruang memori (space/storage complexity) 2.6. Tinjauan Matematis 2.6.1 Konsep Dasar Kriptografi Dasar matematis yang mendasari proses enkripsi dan dekripsi adalah relasi-relasi himpunan yaitu himpunan yang berisi elemen plainteks dan himpunan yang berisi elemen cipherteks. Enkripsi dan dekripsi merupakan fungsi transformasi antara dua himpunan tersebut. Bila himpunan plainteks dinotasikan dengan P dan himpunan cipherteks dinotasikan dengan C, sedangkan fungsi enkripsi dinotasikan dengan E dan fungsi dekripsi dinotasikan dengan D maka proses enkripsi dan dekripsi dapat dinyatakan dalam notasi matematis sebagai berikut : E(P) = C D(C) = P Karena proses enkripsi dan dekripsi bertujuan untuk memperoleh kembali data asal, maka : D(E(P)) = P Relasi antara himpunan plainteks dengan himpunan cipherteks merupakan korespondensi satu-satu. Hal ini merupakan keharusan untuk mencegah terjadinya ambigu dalam dekripsi yaitu satu elemen cipherteks menyatakan lebih dari satu elemen plainteks. Pada metode kriptografi simetris hanya menggunakan satu buah kunci untuk proses enkripsi dan dekripsi. Bila kunci dinotasikan dengan k maka proses enkripsi dan dekripsi kriptografi simetris dapat dinyatakan sebagai berikut : Ek (P) = C Dk (C) = P maka Dk (Ek (P)) = P 2-23 http://digilib.mercubuana.ac.id/ Pada metode kriptografi asimetris menggunakan kunci umum untuk enkripsi dan kunci pribadi untuk dekripsi. Bila kunci umum dinotasikan dengan pk dan kunci pribadi dinotasikan dengan sk, maka proses enkripsi dan dekripsi kriptografi asimetris dapat dinyatakan sebagai berikut : Epk (P) = C Dsk (C) = P maka Dsk (Epk (P)) = P 2.6.2 Aritmatika Modular Aritmatika modular merupakan operasi matematika yang banyak diimplementasikan pada metoda kriptografi. Pada metoda kriptografi simetris, operasi aritmatika modular yang sering dipakai adalah operasi penjumlahan modulo dua dalam operasi XOR (Exclusive OR) dengan dinotasikan. Nilai operasi XOR dapat dilihat pada tabel berikut ini : a b a b 0 0 0 0 1 1 1 0 1 1 1 0 Tabel 2.2. Tabel nilai operasi XOR Keterangan : A A=0 A 0=A A 1 = A1 dengan A1 adalah kebalikan (komplemen) A 2.7. Java 2.7.1 Pengertian Java Java merupakan sebuah bahasa pemrograman yang berkembang cukup pesat. Java menyediakan paket yang lengkap untuk melakukan pemrograman dari pemrograman dekstop, pemrograman internet, pemrograman jaringan, hingga 2-24 http://digilib.mercubuana.ac.id/ pemrograman mobile. Selain itu java juga bersifat multiplatform sehingga dapat dijalankan pada semua platform sistem operasi. Java juga dapat diperoleh dengan mudah tanpa harus membayar hak cipta. Java menurut definisi dari Sun adalah nama untuk sekumpulan teknologi untuk membuat dan menjalankan perangkat lunak pada komputer standalone ataupun pada lingkungan jaringan. Java dikembangkan pada bulan Agustus 1991, dengan nama semula Oak. Pada Januari 1995, karena nama Oak dianggap kurang komersial dan juga nama tersebut sudah menjadi hak cipta bahasa lain, maka diganti menjadi Java. Pada Desember 1998, Sun memperkenalkan nama “Java 2” (J2) sebagai generasi kedua dari java platform. Konvensi nama baru ini diterapkan untuk semua edisi Java yaitu Standard Edition (J2SE), Enterprise Edition (J2EE), dan Micro Edition (J2ME). Ada tiga platform Java yang telah didefinisikan, yang masing-masing diarahkan untuk tujuan tertentu dan untuk lingkungan komputasi yang berbeda-beda: 1. Standard Edition (J2SE): J2SE Merupakan inti dari bahasa yang dinotasikan dengan dua ekspresi. Contoh, e1 | e2 = { x | x anggota L1 atau x anggota L2 }. Closure ditunjukkan dengan kurung kurawal { }, atau dengan subskrip *, yang berarti pengulangan dari ekspresi kosong atau lebih. Seperti, { e1 } = e1* = { x | x anggota L1* } dimana L1* adalah penutup dari L1. pemrograman Java. J2SE Didesain untuk jalan pada komputer desktop dan komputer workstations. 2. Enterprise Edition (J2EE) Dengan built-in mendukung untuk servlets. JSP, dan XML, edisi ini ditujukan untuk aplikasi berbasis server. 3. Micro Edition (J2ME) Didesain untuk piranti dengan memori terbatas, layar display terbatas dan power pemrosesan yang juga terbatas. 2.7.2 Sejarah Java Java lahir pada saat penelitian yang dilakukan oleh sejumlah insinyur di Sun California pada tahun 1991. Mereka membuat proyek pembuatan bahasa pemrograman yang dapat berjalan pada perangkat yang memiliki memori ukuran 2-25 http://digilib.mercubuana.ac.id/ kecil. Selain itu mereka juga mengharapkan program dapat berjaan di platform manapun, ini dikarenakan setiap perangkat mempunyai manufaktur yang berbeda. Pada mulanya, mereka menamakan proyek ini dengan nama “Green Project”. Dalam proyek penelitiannya, proyek Green berhasil menciptakan Star 7 (*7), sebuah peranti yang dapat digunakan untuk berkomunikasi jarak jauh yang sangat cerdas. Star 7 dibuat dengan basis C dan C++. Setelah beberapa lama, James Gosling, salah satu pimpinan tim merasa kedua bahasa ini mempunyai kekurangan, sehingga mereka sepakat mengembangkan bahasa baru. Bahasa yang mereka kembangkan ini diberi nama Oak, terinspirasi ketika James Gosling melihat pohon oak di seberang kantornya. Oleh karena Oak telah menjadi hak cipta bahasa lainnya, maka mereka mengubah namanya menjadi Java. Penamaan Java sendiri terinspirasi ketika para tim minum kopi disebuah kedai kopi di dekat kantor mereka. Salah seorang tim berbicara tentang asal muasal biji kopi yang mereka minum yaitu dari java (pulau Jawa). Kemudian para tim sepakat menamakan bahasa itu Java dengan logo secangkir kopi panas. Setelah mereka berhasil menciptakan Star 7, ternyata pangsa pasar belum begitu tertarik, sehingga mereka mencari pangsa pasar lain yaitu pemrograman internet. Mereka mengarahkan penelitian ke pengembangan internet karena Java memiliki karakteristik yang cocok untuk mengembangkan Internet yaitu mempunyai ukuran yang kecil, efisien, dan portable. Pada saat yang sama perkembangan internet begitu pesat, sehingga Java dalam waktu yang tidak lama telah menjadi populer dikalangan para pengembang web. Setelah mereka sukses dengan pemrograman internet , selanjutnya mereka mengembangkan Java ke pemrograman dekstop, mobile, klien-server (jaringan), dan lainnya. 2.7.3 Fitur-fitur Java Java telah mengadopsi fitur-fitur dari bahasa lain yang dianggap memiliki kelebihan, sehingga menjadikannya sebagai bahasa portabel, efisien, tangguh, dan sederhana. Berikut beberpa fitur yang membedakannya dengan pemrograman lainnya : a. Java Virtual Machine (JVM) 2-26 http://digilib.mercubuana.ac.id/ JVM adalah sebuah mesin maya yang bekerja menyerupai aplikasi pada sebuah mesin nyata. JVM menyediakan spesifikasi piranti keras dan platform dimana kompilasi kode Java terjadi . Spesifikasi inilah yang membuat aplikasi berbasis Java menjadi bebas dari platform manapun karena proses kompilasi diselesaikan oleh JVM. b. Garbage Collection Garbage collection adalah sebuah fasilitas pengelolaan memori secara dinamis yang dilakukan oleh bahasa pemrograman, termasuk Java. Dengan fasilitas ini seorang programmer tidak perlu mengalokasikan memori sendiri sebagaimana pada pemrograman C/C++. Hal ini berarti mengurangi kesalahan programmer, apabila dia Lupa mengosongkan blok memori yang dipakai program, maka akan menjadi memori piblik. Kondisi ini dikenal dengan istilah Memory leaks. c. Code Security Code Security terimplementasi dengan Java melalui penggunaan java Runtime Environment (JRE). Setelah melewati proses Code Security, barulah kode program Java dijalankan. Javamenggunakan model model pengamanan 3 lapis untuk melindungi sistem dari Untrusted Code, yaitu antara lain : Class-loader menangani pemanggilan kelas Java ke interpreter runtime. Proses inin melakukan pemilahan kelas-kelas yang berasal dari disk local dengan kelas-kelas yang berasal dari jaringan, hal ini dapat melindungi sistem dari Trojan. ByteCode verifier menangani pembacaan bytecode sebelum dijalankan dan memastikan bytecode memenuhi aturan-aturan bahasa Java. Security Management menangani keamanan tingkat aplikasi dengan mengendalikan program yang berhak maengakses sumber daya seperti sistem file, port jaringan, proses eksternal dan sistem windowing. d. Java memiliki beberapa pengaman terhadap applet. Untuk mencegah program bertindak mengganggu media penyimpanan, maka appet tidak diperbolehkan melakukan open, read ataupun write terhadap berkas secara sembarangan. Oleh karena Java applet dapat membuka jendela browser yang baru, maka jendela mempunyai logo Java dan teks identifikasi terhadap jendela yang dibuka. Hal ini mencegah jendela pop-up menipu sebagai permintaan keterangan nama pengguna dan kata sandi. 2-27 http://digilib.mercubuana.ac.id/ 2.7.4 Kelebihan Java Java memiliki beberapa kelebihan yang tidak dimiliki oleh bahasa lain, berdasarkan dokumen resmi dari Sun Microsystem, Java memiliki karakteristik sebagai barikut : 1. Sederhana Bahasa pemrograman Java menggunakan sintaks mirip C++ namun sintaks Java telah banyak diperbaiki terutama dengan menghilangkan penggunaan pointer yang rumit dan multiple inheritance. Java juga menggunakan automatic memory allocation dan memory garbage collection. Java diracang untuk mudah dipelajari, terutama bagi programmer yang telah mengenal bahasa C/C++ aka mudah sekali untuk berpindah ke Java. Pemakai dapat belajar membuat program dengan Java secara cepat jika telah memahami konsep dasar pemrograman berorientasi objek. Java tidak memiliki hal-hal yang mengejutkan dan aneh. Java memberi kita kemampuan untuk menuangkan semua ide, karena bahasa pemrograman ini bukan merupakan scriping language (bahasa naskah) yang menghilangkan kemampuan kita untuk berinovasi, tetapi dengan cara berorientasi objek yang mudah dan jelas. 2. Aman Java dirancang sebagai bahasa pemrograman yang handal dan aman. Aplikasiaplikasi yang dibangun dengan bahasa Java sangat handal dengan manajemen memori yang bagus. Aplikasi Java juga dikenal sangat secure, yaitu kasuskasus seperti buffer everflow yang umumnya menjadi lubang keamanan aplikasi aplikasi berbasis C/C++ tidak terjadi di Java, karena pengaturan securitynya yang bagus. Seperti yang kita ketahui ancaman virus dan penyusup ada dimanamana, bahkan dokumen word processor dapat mengandung virus. Salah satu prinsip kunci perancangan Java adalah keselamatan dan keamanan. Java tidak pernah memiliki fasilitas dan kemampuan yang tidak aman sampai perlu ditangani secara khusus untuk pengamanannya. Maka karena program Java tidak dapat memanggil fungsi-fungsi global dan memperoleh akses ke berbagai sumber dalam sistem, terdapat sejumlah pengawasan yang dapat dilakukan oleh program Java yang tidak dapat dilakukan oleh sistem lain. 2-28 http://digilib.mercubuana.ac.id/ 3. Berorientasi Objek Paradigma pemrograman berorientasi objek merupakan paradigm pemrograman masa depan. Java merupakan bahasa pemrograman berorientasi onjek. Java bukan turunan langsung dari bahasa pemrograman manapun, juga sama sekali tidak kompatibel dengan semuanya. Java memiliki keseimbangan, menyediakan mekanisme peng-class-an sederhana, dengan model antar muka dinamik yang intuitif hanya jika diperlukan. 4. Kokoh Java membatasi kita dari beberapa hal kunci supaya kita dapat menemukan kesalahan lebih cepat saat mengembangkan program. Java langsung memeriksa program saat kita menuliskannya, dan sekali lagi ketika program dijalankan. Karena Java adalah bahasa yang sangat ketat dalam hal tipe data dan deklarasi, banyak kesalahan umum terjadi saat kompilasi. Hal ini akan lebih menghemat waktu jika dibandingkan dengan keharusan menjalankan program terlebih dahulu dan memeriksa semua bagian program untuk melihat ketidak cocokan dinamis selama program berjalan. Ini adalah contoh dari beberapa bahasa lain, tetapi dengan imbalan yang layak untuk kelebihan itu. 5. Interaktif Java memiliki beberapa kemampuan yang memungkinkan program melakukan beberapa hal pada saat bersamaan, tanpa harus kesulitan menangani proses yang akan terjadi selanjutnya. Jalinan program-program Java yang mudah digunakan memungkinkan kita untuk memikirkan pembuatan perilaku khusus, tanpa harus mengintegrasikan perilaku tersebut dengan model pemrograman global yang mengatur perulangan kejadian. 6. Netral Terhadap Berbagai Arsitektur Java telah mengambil beberapa keputusan yang sulit dalam pembuatan bahasa Java dan bagaimana program dijalankan, jadi kita dapat sepenuhnya percaya “tulis sekali, jalan dimana saja, kapan saja, selamanya”. 7. Terinterprestasi dan Berkinerja Tinggi Java dilengkapi keajaiban lintas platform yang luar biasa dengan kompilasi ke dalam representasi langsung yang disebut kode-byte Java (Java byte-code), yang dapat diterjemahkan oleh sistem manapun yang memiliki program Java didalamnya. Java, bagaimanapun dirancang untuk tetap berkinerja baik pada CPU yang tidak terlalu kuat. Walaupu Java merupakan bahasa terinterprestasi 2-29 http://digilib.mercubuana.ac.id/ kode-kode Java telah dirancang dengan hati-hati sehingga mudah diterjemahkan ke dalam bahasa asli suatu mesin untuk menghasilkan kinerja yang tinggi. Sistem program Java yang melakukan optimasi tepat waktu tersebut tidak kehilangan keuntungan dari program yang netral terhadap platform. “lintas platform berkinerja tinggi” bukan sekedar omong kosong. Dalam aplikasi Java (*.class) merupakan Java bytecode yang berjalan di atas jvm (Java Virtual Machine), yang kemudian jvm-lah yang akan mengiterpresentasikan kode-kode tersebut ke kode native atau kode mesin dari arsitektur yang bersangkutan. Hal ini sangat menari karena urusan arsitektur mesin bukan jadi masalah bagi programmer tapi menjadi urusan compiler pada bahasa pemrograman Java. 2.8. NetBeans 2.8.1 Pengertian NetBeans NetBeans adalah imtegrated Development Environment (IDE) berbasiskan Java dari Sun Microsystems yang berjalan di atas Swing, Swing adalah sebuah teknologi Java untuk pengembangan aplikasi Dekstop yang dapat berjalan diberbagai macam platform seperti Windows, Linux, Mac OS X and Solaris. Suatu IDE adalah lingkup pemrograman yang diintegrasikan kedalam suatu aplikasi perangkat lunak yang menyediakan pembangun Graphic User Interface (GUI), suatu text atau kode editor, suatu compiler atau inrerpreter dan suatu debugger. NetBeans merupakan software development yang Open Source, dengan kata lain software ini dibawah pengembangan bersama, bebas biaya. NetBeans merupakan sebuah proyek kode terbuka yang sukses dengan pengguna yang sangat luas, komuitas yang terus tumbuh, dan memiliki hampir 100 mitra. Sun Microsystems mendirikan proyek kode terbuka NetBeans pada bulan Juni 2000 dan terus menjadi sponsor utama. Saat ini terdapat dua produk Netbeans, yaitu NetBeans IDE dan NetBeans Platform. The Netbeas IDE adalah sebuah produk bebas dengan tanpa batasan bagaimana digunakan. Tersedia juga NetBeans Platform, yaitu sebuah fondasi yang moduloar dan dapat diperluas yag dapat digunakan sebagai perangkat lunak dasar untuk membuat aplikasi dekstop yang besar. 2-30 http://digilib.mercubuana.ac.id/ 2.8.2 Sejarah NetBeans NetBeans dimulai pada tahun 1996 sebagai Xelfi (kata bermain pada Delphi ), Java IDE proyek mahasiswa di bawah bimbingan Fakultas Matematika dan Fisika di Charles University di Praha . Pada tahun 1997 Staněk Romawi membentuk perusahaan sekitar proyek tersebut dan menghasilkan versi komersial NetBeans IDE hingga kemudian dibeli oleh Sun Microsystems pada tahun 1999. Komunitas NetBeans sejak terus tumbuh, berkat individu dan perusahaan yang menggunakan dan berkontribusi dalam proyek ini. NetBeans IDE 6.0 memperkenalkan dukungan untuk mengembangkan modul IDE dan aplikasi klien kaya berdasarkan platform NetBeans, Java Swing GUI builder (sebelumnya dikenal sebagai “Proyek Matisse”), meningkatkan CVS dukungan, WebLogic 9 dan JBoss 4 dukungan, dan perangkat tambahan banyak editor. NetBeans 6 tersedia dalam repositori resmi dari distribusi Linux utama. Selain itu, NetBeans Enterprise Pack mendukung pengembangan aplikasi Java EE 5 perusahaan, termasuk SOA alat desain visual, skema XML tools, web orkestrasi layanan (untuk BPEL), dan UML modeling. The NetBeans IDE Bundle for C/C++ supports C/C++ development. The NetBeans IDE Bundle untuk C / C + + mendukung C / C + + pembangunan. 2.9. UML (Unified Modeling Language) Pada perkembangan teknologi perangakt lunak, diperlukan adanya bahasa yang digunakan untuk memodelkan perangkat lunak yang akan dibuat dan perlu adanya standarisasi agar orang di berbagai negara dapat mengerti permodelan perangkat lunak. Banyak orang yang telah membuat bahasa permodelan pembangunan pada saat itu, misalnya yang sempat berkembang dan digunakan oleh banyak pihak adalah Data Flow Diagram (DFD) untuk memodelkan perangkat lunak yang menggunakan pemograman procedural atau structural. Pada perkembangan teknik pemogramkan berorientasi objek munculkan sebuah standarisasi bahasa permodelan untuk pembangunan perangkat lunak yang dibangun dengan menggunakan pemograman berorientasi obek yaitu Unifed Modeling Language (UML). UML merupakan bahasa visual untuk pemodelan dan komunikasi mengenai sebuah sistem dengan menggunakan diagram dan teks-teks pendukung. 2-31 http://digilib.mercubuana.ac.id/ UML juga berfungsi untuk melakukan permodelan. (Rosa A.S ,M. Shalahuddin,2013). 2.9.1 Class Diagram Diagram kelas atau class diagram menggambarkan struktur sistem dari segi pendefinisian kelas – kelas yang dibuat untuk membangun sistem. Kelas memiliki apa yang akan dibuat untuk membangun sistem. Kelas memiliki apa yang akan disebut atribut dan metode atau operasi. (Rosa A.S ,M. Shalahuddin,2013). Kelas – kelas yang ada pada struktur sistem harus dapat melakukan fungsi – fungsi sesuai dengan kebutuhan sistem sehingga pembuatan perangkat lunak atau programmer dapat membuat kelas – kelas didalam program perangkat lunak sesuai dengan perancangan diagram kelas. Susunan struktur kelas yang baik pada diagram kelas sebaiknya memiliki jenis – jenis kelas berikut : Kelas Main Kelas yang memiliki fungsi awal dieksekusi ketika sistem dijalankan. Kelas yang menangani tampilan sistem (view) Kelas yang mendefinisikan dan mengatur tampilan ke pemakai. Kelas yang diambil dari pendefinisian use case (controller) Kelas yang menangani fungsi-fungsi yang harus ada diambil dari pendefinisian use case, kelas ini biasanya disebut dengan kelas proses yang menangani proses bisnis pada perangkat lunak. Kelas yang diambil dari pendefinisian data (model) 2.9.2 Use Case Diagram Use case diagram merupakan pemodelan untuk kelakuan sebuah sistem yang akan dibuat. Use case mendeskripsikan sebuah interaksi antara satu atau lebih aktor dengan sistem yang akan dibuat. Secara kasar, use case digunakan untuk mengetahui fungsi apa saja yang ada di dalam sebuah sistem dan siapa saja yang berhak menggunakan fungsi-fungsi tersebut (Rosa A.S ,M. Shalahuddin,2013). 2-32 http://digilib.mercubuana.ac.id/ Ada dua hal utama pada use case yaitu pendefinisian apa yang disebut actor dan use case. Aktor merupakan orang, proses atau sistem lain yang berinteraksi dengan sistem informasi yang akan dibuat diluar sistem informasi yang akan dibuat itu sendiri, jadi walaupun simbol dari actor adalah gambar orang, tapi actor belum tentu merupakan orang. Use Case merupakan fungsionalitas yang disediakan sistem sebagai unit – unit yang saling bertukar pesan antar unit atau actor. Use-case diagram dapat digunakan selama proses analisis untuk menangkap requirement system dan untuk memahami bagaimana sistem seharusnya bekerja. Selama tahap desain, use-case diagram berperan untuk menetapkan perilaku (behavior) sistem saat diimplementasikan. Dalam sebuah model mungkin terdapat satu atau beberapa use-case diagram. Kebutuhan atau requirements system adalah fungsionalitas apa yang harus disediakan oleh sistem kemudian didokumentasikan pada model use-case yang menggambarkan fungsi sistem yang diharapkan (usecase), dan yang mengelilinginya (actor), serta hubungan antara actor dengan usecase (use-case diagram) itu sendiri. 2.9.3 Activity Diagram Diagram aktivitas atau activity diagram menggambarkan workflow (aliran kerja) atau aktivitas dari sebuah sistem atau proses bisnis atau menu yang ada pada perangkat lunak. Yang perlu diperhatikan disini adalah bahwa diagram aktivitas menggambarkan aktivitas sistem bukan apa yang dilakukan actor, jadi aktivitas yang dapat dilakukan oleh sistem. (Rosa A.S ,M. Shalahuddin,2013). Diagram aktivitas juga banyak digunakan untuk mendefinisikan hal-hal berikut: Rancangan proses bisnis dimana setiap urutan aktivitas yang digambarkan merupakan proses bisnis sistem yang didefinisikan. Urutan atau pengelompokkan tampilan dari sistem/user interface, dimana setiap aktivitas dianggap memiliki sebuah rancangan antar muka tampilan. Rancangan pengujian dimana setiap aktivitas dianggap memerlukan sebuah pengujian yang perlu didefinisikan kasus ujinya. Rancangan menu yang ditampilkan pada perangkat lunak. 2.9.4 Sequence Diagram 2-33 http://digilib.mercubuana.ac.id/ Diagram sekuen menggambarkan kelakuan objek pada use case dengan mendeskripsikan waktu hidup objek dan message yang dikirimkan dan diterima antar objek. Oleh karena itu untuk menggambarkan diagram sekuen maka harus diketahui objek – objek yang terlihat dalam sebuah use case beserta metode – metode yang dimiliki kelas yang diintanisasi menjadi obejk itu. Banyaknya diagram sekuen yang harus digambar adalah minimal sebanyak pendefinisian use case yang memiliki proses sendiri atau yang penting semua use case yang didefinisikan maka diagram sekuen yang harus dibuat juga semakin banyak. (Rosa A.S ,M. Shalahuddin,2013). 2.10. Metode Pengujian Black Box Menurut Rosa A.S (2013:275) “Black Box Testing yaitu menguji perangkat lunak dari segi spesifikasi fungsional tanpa menguji desain dan kode program. Pengujian dimaksudkan untuk mengetahui apakah fungsi-fungsi, masukan, keluaran dari perangkat lunak sesuai dengan spesifikasi yang dibutuhkan”. Pengujian kotak hitam dilakukan dengan membuat kasus uji yang bersifat mencoba semua fungsi dengan memakai perangkat lunak apakah sesuai dengan spesifikasi yang dibutuhkan. Kasus uji yang dibuat untuk melakukan pengujian kotak hitam harus dibuat dengan kasus benar dan kasus salah, misalkan untuk kasus proses login maka kasus uji yang dibuat adalah : Jika user memasukkan nama pemakai (username) dan kata sandi (password) yang benar. Jika user memasukkan nama pemakai (username) dan kata sandi (password) yang salah, misalnya nama pemakai benar tapi kata sandi salah, atau sebaliknya, atau keduanya salah. 2-34 http://digilib.mercubuana.ac.id/