BAB 2 LANDASAN TEORI 2.1 Kriptografi Kriptografi berasal dari bahasa yunani, terdiri dari dua suku kata yaitu kripto dan graphia. Kripto artinya menyembunyikan, sedangkan graphia artinya tulisan. Kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi, seperti kerahasiaan data, keabsahan data, integritas data, serta autentikasi data. Tetapi tidak semua aspek keamanan informasi dapat diselesaikan oleh kriptografi. Kriptografi dapat pula diartikan sebagai ilmu atau seni untuk menjaga keamanan pesan. Kriptografi menjadi dasar bagi keamanan komputer dan jaringan karena yang menjadi pokok dari fungsi komputer dan jaringan adalah data ataupun informasi. Komputer dan jaringannya menjadi sarana bagi distribusi data dan informasi, maka data dan informasi tersebut harus diamankan agar hanya orang-orang yang berhak mengaksesnya yang dapat mengetahui maupun menggunakan data tersebut. Salah satu cara yang paling banyak digunakan dalam mengamankan data adalah dengan kriptografi. Enkripsi adalah sebuah proses penyandian yang melakukan perubahan sebuah kode pesan dari yang biasa dimengerti menjadi sebuah kode yang tidak dapat dimengerti. Sedangkan proses kebalikan dari enkripsi disebut dengan dekripsi. Proses enkripsi dan dekripsi memerlukan suatu mekanisme dari kunci tertentu yang merupakan bagian dari kriptografi. Ada empat tujuan mendasar dari kriptografi yang juga merupakan aspek keamanan informasi, yaitu : 1. Kerahasiaan, adalah aspek yang berhubungan dengan penjagaan isi informasi dari siapapun kecuali yang memiliki otoritas atau kunci rahasia untuk membuka informasi yang telah dienkripsi. 2. Integritas Data, adalah aspek yang berhubungan dengan penjagaan dari perubahan data secara tidak sah. Untuk menjaga integritas data, sistem harus memiliki kemampuan untuk mendeteksi manipulasi data oleh pihak-pihak yang tidak berhak. 7 8 3. Autentikasi, adalah aspek yang berhubungan dengan indetifikasi atau pengenalan baik secara kesatuan sistem maupun informasi itu sendiri. Dua pihak yang saling berkomunikasi harus saling memperkenalkan diri. Informasi yang dikirim harus diautentikasi keaslian, isi datanya, waktu pengiriman, dan lain-lain. 4. Non-repudiation (menolak penyangkalan), adalah usaha untuk mencegah terjadinya penyangkalan terhadap pengiriman suatu informasi oleh yang mengirimkan, atau harus dapat membuktikan bahwa suatu pesan berasal dari seseorang, apabila ia menyangkal mengirim informasi tersebut. 2.2 Sejarah kriptografi Kriptografi sudah digunakan sekitar 40 abad yang lalu oleh orang-orang Mesir untuk mengirim pesan ke pasukan yang berada di medan perang dan agar pesan tersebut tidak terbaca oleh pihak musuh walaupun pembawa pesan tersebut tertangkap oleh musuh. Sekitar 400 SM, kriptografi digunakan oleh bangsa Spartan dalam bentuk sepotong papirius atau perkamen yang dibungkus dengan batang kayu. Pada zaman Romawi, Julius Caesar telah menggunakan teknik kriptografi yang sekarang dianggap kuno dan sangat mudah dibobol untuk keperluan militernya. Metode yang digunakan oleh Julius Caesar ini sering dianggap awal dari kriptografi. Informasi lengkap mengenai sejarah kriptografi dapat ditemukan didalam buku David Kahn yang berjudul The Codebreakers. Buku yang tebalnya 1000 halaman ini menulis secara rinci sejarah kriptografi mulai dari penggunaan kriptografi oleh bangsa Mesir 4000 tahun yang lalu (berupa hieroglyph yang tidak standard pada piramid) hingga penggunaan kriptografi pada abad ke-20. Sampai pada akhir perang dunia pertama, kriptografi merupakan disiplin ilmu matematika yang hanya dipelajari oleh orang-orang tertentu saja. Penelitian bidang ini tidah pernah sampai kepada umum. Kriptografi juga digunakan di kalangan militer. Pada perang dunia ke 2, pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan Enigma. Mesin yang menggunakan beberapa buah rotor (roda berputar) ini melakukan enkripsi dengan cara yang sangat rumit. Namun Enigma chiper berhasil dipecahkan oleh pihak sekutu dan keberhasilan memecahkan Enigma sering dikatakan sebagai faktor yang memperpendek perang dunia II. 9 Perkembangan komputer dan sistem komunikasi pada tahun 60-an 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 diawal tahun 70an dan mencapai puncaknya pada 1977 dengan pengangkatan DES (Data Encryption Standard) sebagai standar pemrosesan informasi federal US untuk mengenkripsi informasi federal US untuk mengenkripsi informasi yang unclassified. DES merupakan mekanisme kriptografi yang paling dikenal sepanjang sejarah. 2.3 Algoritma 2.3.1 Pengertian algoritma Algoritma adalah kumpulan urutan perintah yang menentukan operasi-operasi tertentu yang diperlukan untuk menyelesaikan suatu masalah ataupun mengerjakan suatu tugas tertentu. Algoritma merupakan urutan langkah instruksi yang logis. Setiap langkah instruksi mengerjakan suatu tindakan aksi. Apabila suatu aksi dilaksanakan, maka operasi atau sejumlah operasi yang bersesuaian dengan aksi itu dikerjakan oleh pemroses. Bila data yang digunakan benar, maka algoritma akan selalu berhenti dengan memberikan hasil yang benar pula. Pembuatan algoritma harus selalu dikaitkan dengan : a. Kebenaran algoritma, yakni bila program selesai maka hasilnya juga benar b. Kompleksitas, lama dan jumlah waktu proses dan penggunaan memori. Ciri dari algoritma: • Tepat sasaran • Fleksibel dan portable • Bersih dari kesalahan system ataupun logika • Murah dan efisien • Cepat waktu • Didokumentasikan 10 2.3.2 Definisi algoritma Beberapa definisi dari kata Algoritma adalah sebagai berikut: a. Kamus Besar Bahasa Indonesia Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalah. b. Abu Ja’far Muhammad Ibnu Musa Al-Khwarizmi Algorima adalah langkah - langkah logis penyelesaian masalah yang disusun secara sistematis dan logis. c. Goodman Hedetniemi Algoritma adalah urutan-urutan terbatas dari operasi yang terdefinisi dengan baik, yang masing-masin membutuhkan memory dan waktu yang terbatas untuk menyelesaikan suatu masalah. 2.3.3 Sifat algoritma Sifat-sifat dari algoritma adalah : 1. Input Sifat ini berarti algoritma harus memiliki kondisi awal sebelum dilaksanakan. 2. Output Sifat ini berarti algoritma menghasilkan suatu keluaran setelah dilaksanakan. 3. Definitif Sifat ini berarti, langkah – langkah dari algoritma sudah terdefinisi secara jelas. 4. Finit Sifat ini berarti , algoritma melakukan langkah yang terbatas jumlahnya dalam mengolah input menjadi output. 5. Efektif Sifat ini berarti, algoritma dapat memberi sebuah solusi sesuai harapan. 6. General Sifat ini berarti, algoritma berlaku untuk setiap himpunan input. 2.4 Algoritma kriptografi Menurut Bruce Schneier, Algoritma kriptografi atau sering disebut dengan cipher adalah suatu fungsi matematis yang digunakan untuk melakukan enkripsi dan dekripsi. Ada dua macam algoritma kriptografi, yaitu algoritma simetris (symmetric algorithms) dan algoritma asimetris (asymmetric algorithms). 11 2.4.1 Algoritma simetris Algoritma simetris adalah algoritma kriptografi yang menggunakan kunci enkripsi yang sama dengan kunci dekripsinya. Algoritma ini mengharuskan pengirim dan penerima menyetujui suatu kunci tertentu sebelum mereka saling berkomunikasi. Keamanan algoritma simetris tergantung pada kunci, membocorkan kunci berarti bahwa orang lain dapat mengenkripsi dan mendekripsi pesan. Agar komunikasi tetap aman, kunci harus tetap dirahasiakan. Sifat kunci yang seperti ini membuat pengirim harus selalu memastikan bahwa jalur yang digunakan dalam pendistribusian kunci adalah jalur yang aman atau memastikan bahwa seseorang yang ditunjuk membawa kunci untuk dipertukarkan adalah orang yang dapat dipercaya. Masalahnya akan menjadi rumit apabila komunikasi dilakukan secara bersama-sama oleh sebanyak n pengguna dan setiap dua pihak yang melakukan pertukaran kunci, maka akan terdapat sebanyak = kunci rahasia yang harus dipertukarkan secara aman. Kunci A Plainteks enkripsi Chiperteks dekripsi Plainteks B Gambar 2.1 Skema Algoritma Simetris 2.4.2 Algoritma asimetris Algoritma asimetris, sering juga disebut dengan algoritma kunci publik, menggunakan dua jenis kunci, yaitu kunci publik (public key) dan kunci rahasia (secret key). Kunci publik merupakan kunci yang digunakan untuk mengenkripsi pesan. Sedangkan kunci rahasia digunakan untuk mendekripsi pesan. Kunci publik bersifat umum, artinya kunci ini tidak dirahasiakan sehingga dapat dilihat oleh siapa saja. Sedangkan kunci rahasia adalah kunci yang dirahasiakan dan hanya orang-orang tertentu saja yang boleh mengetahuinya. 12 Keuntungan utama dari algoritma ini adalah memberikan jaminan keamanan kepada siapa saja yang melakukan pertukaran informasi meskipun di antara mereka tidak ada kesepakatan mengenai keamanan pesan terlebih dahulu maupun saling tidak mengenal satu sama lainnya. Kunci Publik Plainteks Kunci Rahasia Chiperteks A enkripsi Plainteks dekripsi B Gambar 2.2 Skema Algoritma Asimetris 2.4.3 Penentuan bilangan prima Tujuan penentuan bilangan prima adalah untuk mempermudah dalam penentuan elemen primitif. Digunakan bilangan prima p sehingga p 2.q + 1 dengan q adalah bilangan prima sehingga nilai minimal p adalah 5 dan q adalah 2. Bilangan prima p tersebut disebut sebagai bilangan prima. Langkah penentuan bilangan prima tersebut dinyatakan sebagai berikut: a. Tentukan bilangan prima p ≥ 5 b. Hitung q dengan “persamaan (2)” c. Jika q merupakan bilangan prima, maka p merupakan bilangan prima aman. d. Jika q bukan merupakan bilangan prima, maka p bukan merupakan bilangan prima aman. Untuk menguji keprimaan suatu bilangan, digunakan suatu metode yang disebut Teorema Fermat. Teorema Fermat Jika x adalah bilangan prima dan y adalah bilangan bulat yang tidak habis dibagi dengan x, yaitu PBB(y,x) = 1, maka y x-1 ≡ 1 (mod p) 13 2.4.4 Penentuan elemen primitif Teorema: Suatu elemen yang membangun mod p. Bila mod p 1 dan adalah elemen primitif dari disebut elemen primitif (primitive root) mod p 1. Jika keduanya dipenuhi, maka α . Langkah penentuan elemen primitif tersebut dapat dinyatakan sebagai berikut: a. Tentukan bilangan prima p ≥ 5 dan α ∈ Zp * b. Hitung q dengan “persamaan (2)” c. Hitung d. Jika mod p dan mod p. mod p = 1 atau mod p = 1, maka α bukan merupakan elemen mod p ≠ 1 dan mod p ≠ 1, maka α bukan merupakan elemen primitif. e. Jika primitif. 2.4.5 Pembentukan kunci berdasarkan bilangan prima dan elemen primitif Setelah bilangan prima dan elemen primitif diperoleh, kunci publik dan kunci rahasia untuk algoritma ElGamal dapat dibentuk. Algoritma ElGamal dalam bentuk prosesnya menggunakan bilangan bulat untuk perhitungan. Oleh karena itu, pesan yang terkandung dalam plaintext harus dalam bentuk bilangan bulat. Untuk memenuhi persyaratan tersebut, digunakan kode ASCII (American Standard for Information Interchange) yang merupakan representasi numeric dari karakter-karakter yang digunakan dalam komputer, serta mempunyai nilai minimum 0 dan maksimal 255. Selanjutnya, dengan kondisi-kondisi tersebut, pembentukan kunci dapat dibentuk dengan mengacu pada langkah berikut: a. Tentukan bilangan prima p ≥ 5 dan α ∈ Zp * b. Pilih a ∈{0,1,..., p − 2} sembarang. c. Hitung nilai β dengan rumus β = mod p Diperoleh kunci publik (p, α, β) yang dapat dipublikasikan serta nilai kunci rahasia a yang dirahasiakan nilainya. Pihak yang membuat kunci publik dan kunci rahasia merupakan pihak penerima pesan. Sedangkan pihak pengirim hanya mengetahui kunci publik dari penerima untuk mengenkripsi pesan yang akan dikirim. 14 2.4.6 Proses pembuatan kunci Proses pertama adalah pembentukan kunci yang terdiri dari kunci rahasia dan kunci publik. Pada proses ini dibutuhkan sebuah bilangan prima p yang digunakan untuk membentuk grup , elemen primitif α dan sebarang a {0,1,..., p -2}. Kunci publik algoritma ElGamal berupa pasangan 3 bilangan, yaitu ( p, α, β), dengan persamaan yang digunakan sebagai berikut. ߚ= mod p Sedangkan kunci rahasianya adalah bilangan a tersebut. Karena pada algoritma ElGamal menggunakan bilangan bulat dalam proses perhitungannya, maka pesan harus dikonversi ke dalam suatu bilangan bulat. Untuk mengubah pesan menjadi bilangan bulat, digunakan kode ASCII (American Standard for Information Interchange). Kode ASCII merupakan representasi numerik dari karakter-karakter yang digunakan pada komputer, serta mempunyai nilai minimal 0 dan maksimal 255. Oleh karena itu, berdasarkan sistem kriptografi ElGamal di atas maka harus digunakan bilangan prima yang lebih besar dari 255. Kode ASCII berkorespondensi 1-1 dengan karakter pesan. Berikut ini diberikan suatu algoritma yang dapat digunakan untuk melakukan pembentukan kunci. Algoritma Pembentukan Kunci Input : Bilangan prima aman p > 255 dan elemen primitif a *. Output : Kunci publik (p, α, β) dan kunci rahasia a. Langkah : 1. Pilih a {0,1,..., p -2}. 2. Hitung ߚ = 3. Publikasikan nilai p, α, dan β , serta rahasiakan nilai a. ݉ ݀. Pihak yang membuat kunci publik dan kunci rahasia adalah penerima, sedangkan pihak pengirim hanya mengetahui kunci publik yang diberikan oleh penerima, dan kunci publik tersebut digunakan untuk mengenkripsi pesan. Jadi, kentungan menggunakan algoritma kriptografi kunci publik adalah tidak ada permasalahan pada distribusi kunci apabila jumlah pengirim sangat banyak serta tidak ada kepastian keamanan jalur yang digunakan. 15 2.5 Metode ElGamal Algoritma ElGamal merupakan algoritma kriptografi asimetris. Pertama kali dipublikasikan oleh Taher ElGamal pada tahun 1984. Algoritma ini pada mulanya digunakan untuk digital signature, namun kemudian dimodifikasi sehingga juga bisa digunakan untuk enkripsi dan dekripsi. Algoritma ini didasarkan atas masalah logaritma diskret pada grup Algoritma ElGamal terdiri dari tiga proses, yaitu proses pembentukan kunci, proses enkripsi dan proses dekripsi. Algoritma ini merupakan cipher blok, yaitu melakukan proses enkripsi pada blok-blok plaintext dan menghasilkan blok-blok ciphertext yang kemudian dilakukan proses dekripsi, dan hasilnya digabungkan kembali menjadi pesan yang utuh dan dapat dimengerti. Untuk membentuk sistem kriptografi ElGamal, dibutuhkan bilangan prima p dan elemen primitif grup Untuk lebih jelasnya mengenai algoritma ElGamal, berikut ini diberikan suatu sistem kriptografi ElGamal, yaitu sistem kriptografi yang menggunakan algoritma ElGamal, definisi himpunan-himpunan plaintext, ciphertext dan kunci, serta proses enkripsi dan dekripsi, seperti diberikan pada penjelasan berikut ini. Diberikan bilangan prima p dan sebuah elemen primitif α P= *. C = *× *. Ditentukan * dan a {0, 1,..., p - 2}. Didefinisikan K = {(p, α, a, β) : = mod p}. Nilai p, a dan β dipublikasikan, dan nilai a dirahasiakan. Untuk K = {(p ,α, a, β), plaintext m dan untuk suatu bilangan acak rahasia k {0, 1,..., p - 2} didefinisikan (m, k) = ( ) dengan dan . m mod p untuk * didefinisikan ( )= mod p 16 Algoritma ini disebut Algoritma diskret karena nilainya berhingga dan bergantung pada bilangan prima yang digunakan. Karena bilangan prima yang digunakan adalah bilangan prima besar, maka sangat sulit bahkan tidak mungkin menurunkan kunci privat dari kunci publik yang diketahui walaupun serangan dilakukan dengan menggunakan sumberdaya komputer yang sangat besar. ElGamal digunakan dalam perangkat lunak linux dikembangkan oleh GNU yang merupakan directory dari program PGP serta program keamanan jaringan lainnya. Keamanan algoritma ini terletak pada sulitnya menghitung algoritma diskrit. Masalah algortima diskrit adalah, jika p adalah bilangan prima dan g dan y adalah sembarang bilangan bulat. Carilah x sedemikian (mod p). 2.5.1 Kelebihan algoritma ElGamal Algoritma ElGamal dikenal sebagai kriptografi digital signature karena algoritma ini berfungsi dengan baik untuk mengirimkan sebuah tanda tangan digital pada sebuah pesan. Kelebihan dari algoritma ElGamal yaitu: 1. Plaintext yang sama dapat diubah menjadi chipertext yang berbeda, karena bilangan bulat pada algoritma Elgamal dapat dipilih secara acak untuk menentukan kunci. 2. Pada algoritma ElGamal tidak hanya kunci privat yang perlu dijamin kerahasiannya, tetapi autentikasi kunci publik juga harus tetap dijaga. 3. Kunci publik dan kunci privat pada algoritma ElGamal tidak perlu diubah dalam periode waktu yang panjang. 4. Algoritma ElGamal bisa dimanfaatkan untuk mengirimkan sebuah pesan rahasia, yaitu dengan menentukan kunci dari sebuah kriptografi simetris. 2.5.2 Proses enkripsi Pada proses ini pesan dienkripsi menggunakan kunci publik dan sembarang bilangan acak rahasia yang diterima oleh penerima pesan. Untuk setiap karakter dalam pesan dienkripsi dengan menggunakan bilangan yang berbeda-beda. Satu karakter yang direperesentasikan dengan menggunakan bilangan bulat ASCII akan menghasilkan kode dalam bentuk blok yang terdiri dari atas dua nilai (a,b). 17 Langkah-langkah proses enkripsi : a. Ambil sebuah karakter dalam pesan yang akan dienkripsi dan transformasi karakter tersebut kedalam kode ASCII sehingga diperoleh bilangan bulat. Plaintext tersebut disusun menjadi blok-blok m1, m2, ..., sedemkian hingga setiap blok mempresentasikan nilai didalam rentang 0 sampai p-1. b. Memillih bilangan acak g (g < p) dan x (x < p) c. Hitung y dalam persamaan y = gx mod p d. Memilih bilangan acak k, yang dalam hal ini 0 < k < p-1, sedemikian hingga k relative prima dengan p-1. e. Hitung nilai a dan b dengan persamaan berikut : a= (mod p) b= m (mod p), m disini yaitu bilangan ASCII yang dilihat tiap perkarakter pesan. f. Diperoleh chipertext untuk karakter m tersebut dalam blok (a,b) g. Melakukan proses diatas untuk seluruh karakter dalam pesan termasuk karakter spasi. 2.5.3 Proses dekripsi Dekripsi dari chipertext ke plaintext menggunakan kunci rahasia a yang disimpan kerahasiaannya oleh penerima pesan. Teorema : Diberikan (p,g,y) sebagai kunci publik dan x sebagai kunci rahasia pada algoritma ElGamal. Jika diberikan chipertext (a,b) maka m = b/a mod p dengan m adalah plaintext, dimana nilai ( = = mod p Langkah proses dekripsi : a. Ambil sebuah blok chipertext dari pesan yang telah dienkripsikan pengirim. b. Dengan menggunakan a yang dirahasiakan oleh penerima, hitung nilai plaintext dengan menggunakan diatas. 18 2.6 SDLC (System Development Live Cycle) SDLC adalah tahapan-tahapan pekerjaan yang dilakukan oleh analis sistem dan programmer dalam membangun sistem informasi. Ada beberapa model SDLC. Model yang cukup populer dan banyak digunakan adalah waterfall. Model yang digunakan pada penulisan skripsi ini adalah dengan model waterfall. Model ini adalah model yang muncul pertama kali yaitu sekitar tahun 1970 sehingga sering dianggap kuno, tetapi merupakan model yang paling banyak dipakai didalam Software Engineering (SE). Model ini melakukan pendekatan secara sistematis dan urut mulai dari level kebutuhan sistem lalu menuju ke tahap analisis, desain, coding, testing / verification, dan maintenance. Disebut dengan waterfall karena tahap demi tahap yang dilalui harus menunggu selesainya tahap sebelumnya dan berjalan berurutan. Sebagai contoh tahap desain harus menunggu selesainya tahap sebelumnya yaitu tahap requirement. Secara umum tahapan pada model waterfall dapat dilihat pada gambar berikut : Gambar 2.3 Waterfall Method Gambar di atas adalah tahapan umum dari model proses ini menurut, Pressman (1992:25). Software Engineering : A Practicioner’s Approach. United States. Akan tetapi Roger S. Pressman memecah model ini menjadi 6 tahapan meskipun secara garis besar sama dengan tahapan-tahapan model waterfall pada umumnya. 19 Berikut adalah penjelasan dari tahap-tahap yang dilakukan di dalam model ini menurut Pressman: 1. System / Information Engineering and Modeling Permodelan ini diawali dengan mencari kebutuhan dari keseluruhan sistem yang akan diaplikasikan ke dalam bentuk software. Hal ini sangat penting, mengingat software harus dapat berinteraksi dengan elemen-elemen yang lain seperti hardware, database, dsb. Tahap ini sering disebut dengan Project Definition. 2. Software Requirements Analysis Proses pencarian kebutuhan diintensifkan dan difokuskan pada software. Untuk mengetahui sifat dari program yang akan dibuat, maka para software engineer harus mengerti tentang domain informasi dari software, misalnya fungsi yang dibutuhkan, user interface, dsb. Dari 2 aktivitas tersebut (pencarian kebutuhan sistem dan software) harus didokumentasikan dan ditunjukkan kepada pelanggan. 3. Design Proses ini digunakan untuk mengubah kebutuhan-kebutuhan diatas menjadi representasi ke dalam bentuk “blueprint” software sebelum coding dimulai. Desain harus dapat mengimplementasikan kebutuhan yang telah disebutkan pada tahap sebelumnya. Seperti 2 aktivitas sebelumnya, maka proses ini juga harus didokumentasikan sebagai konfigurasi dari software. 4. Coding Untuk dapat dimengerti oleh mesin, dalam hal ini adalah komputer, maka desain tadi harus diubah bentuknya menjadi bentuk yang dapat dimengerti oleh mesin, yaitu ke dalam bahasa pemrograman melalui proses coding. Tahap ini merupakan implementasi dari tahap design yang secara teknis nantinya dikerjakan oleh programmer. 5. Testing / Verification Sesuatu yang dibuat haruslah diujicobakan. Demikian juga dengan software. Semua fungsi-fungsi software harus diujicobakan, agar software bebas dari error, dan hasilnya harus benar-benar sesuai dengan kebutuhan yang sudah didefinisikan sebelumnya. 20 6. Maintenance Pemeliharaan suatu software diperlukan, termasuk di dalamnya adalah pengembangan, karena software yang dibuat tidak selamanya hanya seperti itu. Ketika dijalankan mungkin saja masih ada errors kecil yang tidak ditemukan sebelumnya, atau ada penambahan fitur-fitur yang belum ada pada software tersebut. Pengembangan diperlukan ketika adanya perubahan dari eksternal perusahaan seperti ketika ada pergantian sistem operasi, atau perangkat lainnya. 2.7 Sistem aturan proses enkripsi dan dekripsi Proses Enkripsi : • Upload file File disini yang bisa dienkripsi dalam bentuk file .txt. • Input bilangan acak Memasukkan 1 bilangan prima yang harus lebih dari angka 250 agar tidak terjadi kegagalan dalam proses enkripsi dan 2 buah bilangan acak yang kurang dari bilangan prima, dan mendapatkan hasil enkripsi berupa chipertext dan private key untuk proses dekripsi nantinya. Proses Dekripsi : • Upload file Memasukkan file yang enkripsi yang telah diterima. • Input private key Memasukkan private key yang diterima bersamaan dengan file enkripsi, dan mendapatkan hasil plaintext dari chipertext file enkripsi yang diterima setelah menginput private key dan file enkripsi. 2.8 UML (Unified Modelling Language) Menurut Whitten (2004, p408) UML adalah suatu konvensi pemodelan yang digunakan untuk menentukan atau menggambarkan sebuah sistem piranti lunak yang terkait dengan objek. UML terdiri dari berbagai tipe diagram, antara lain : (Joseph Schmuller, 1999). 21 • Flowchart Flowchart merupakan gambar atau bagan yang memperlihatkan urutan dan hubungan antar proses beserta instruksinya. Gambaran ini dinyatakan dengan simbol. Dengan demikian setiap simbol menggambarkan proses tertentu. Sedangkan hubungan antar proses digambarkan dengan garis penghubung. Flowchart ini merupakan langkah awal pembuatan program. Dengan adanya flowchart urutan poses kegiatan menjadi lebih jelas. Setelah flowchart selesai disusun, selanjutnya pemrogram (programmer) menerjemahkannya ke bentuk program dengan bahasa pemrograman Mulai Tulis surat Ambil amplop Masukkan surat ke amplop Lem amplop T Ingat alamatnya tidak Lihat di buku alamat Y Tulis di amplop Tempel perangko Poskan Selesai Gambar 2.4 Contoh Flowchart Pengiriman Surat 22 • Use case diagram Use case diagram secara grafis menggambarkan interaksi antara sistem, sistem eksternal dan pengguna. Dengan kata lain, secara grafis mendeskripsikan siapa yang akan menggunakan sistem dan dalam cara apa pengguna mengharapkan interaksi dengan sistem itu. Use case adalah sebuah deskripsi dari tingkah laku sebuah sistem yang dilihat dari sudut pandang user. Bagi para pengembang, ini adalah tool yang sangat berharga : sebuah teknik tried – and – true yang dipakai untuk mengumpulkan persyaratan sebuah sistem yang dilihat dari sudut pandang user. Teknik pengumpulan tersebut penting jika tujuannya adalah untuk membangun sebuah sistem yang bisa digunakan semua orang (bukan hanya orang yang terbiasa dengan komputer). Login Input no antrian pembeli Input data barang Input harga Cek total biaya Cetak struk Gambar 2.5 Contoh Use case Diagram Transaksi Pembayaran 23 • Class diagram Class diagram adalah digram yang digunakan untuk menampilkan beberapa kelas serta paket-paket yang ada dalam sistem/perangkat lunak yang sedang kita gunakan. Class diagram memberikan kita gambaran (diagram statis) tentang sistem/perangkat lunak dan relasi-relasi yang ada didalamnya. Definisi dari class diagram adalah kumpulan objek-objek dengan dan mempunyai struktur umum, behavior umum, relasi umum, dan semantic/kata yang umum. Kelas-kelas ditentukan dengan cara memeriksa objek-objek dalam sequence diagram dan kolaborasi diagram. Sebuah class digambarkan seperti sebuah bujur sangkar dengan tiga bagian ruangan. Kelas sebaiknya diberi nama menggunakan kata benda sesuai dengan domain/bagian/kelompoknya, Jeffery (2004:432). Class diagram yang menunjukan kelas-kelas yang ada dari sebuah sistem dan hubungannya secara logika. Class diagram menggambarkan struktur statis dari sebuah sistem. Karena itu class diagram merupakan tulang punggung atau kekuatan dasar dari hampir setiap metode berorientasi objek termasuk UML (Henderi, 2008). Elemen-elemen class diagram dalam pemodelan UML terdiri dari kelas-kelas, struktur kelas, sifat kelas (class behavior), perkumpulan/gabungan (association), pengumpulan/kesatuan (agregation), ketergantungan (dependency), relasi-relasi turunannya, keberagaman, dan indikator navigasi, dan role name (peranan/tugas nama). Gambar 2.6 Contoh Class Diagram Jadwal Dosen 24 Pada class diagram gambar 2.7 dapat dilihat pada class dosen terdapat atribut kode dosen, nama, alamat, dan tanggal lahir. Dan class dosen berelasi dengan class jadwal yang mempunyai atribut jam mulai, dan jam berakhir yang mana 1 dosen bisa mempunyai banyak jadwal atau bisa saja 1 dosen mempunyai 1 jadwal saja. Class jadwal juga berelasi dengan class mata kuliah yang mempunyai atribut kode mata kuliah, dan nama mata kuliah yang hubungannya disini 1 jadwal bisa memiliki banyak mata kuliah atau 1 jadwal hanya mempunyai 1 mata kuliah. • Sequence diagram Sequence Diagram secara grafis menggambarkan bagaimana objek berinteraksi satu sama lain melalui pesan pada eksekusi sebuah use case atau operasi. Diagram ini mengilustrasikan bagaimana pesan terkirim dan diterima diantara objek dan dalam urutan apa. Sequence Diagram digambarkan sebagai interaksi dari 2 grafik dimensional. Dimensi vertikal merupakan sumbu waktu, yang berjalan makin ke bawah. Dimensi horizontal menggambarkan peranan classifier yang menampilkan objek individual di dalam kolaborasi. Tiap peranan classifier digambarkan dengan kolom vertikal – sebagai lifeline. Dalam waktu selama objek ada, peranan dari object tersebut digambarkan dengan garis putus – putus. Selama aktivasi prosedur pada sebuah object masih aktif, lifeline digambarkan dengan garis ganda (double line). Pesan ditunjukkan dengan gambar anak panah (arrow) dari lifeline suatu object menuju object yang lainnya. Anak panah tersebut diatur menurun sesuai urutan waktu di dalam diagram. Sequence diagram menunjukkan interaksi yang dinamis berdasarkan waktu. Mengambil contoh dari situasi disebuah restaurant, dengan logika seperti berikut : 1. Pelayan memberikan daftar menu ke pelanggan. 2. Setelah pelanggan menerima daftar menu, pelanggan memesan menu ke pelayan. 3. Kemudian pesanan pelanggan diberikan pelayan kepada koki yang kemudian koki memasak pesanan pelanggan. 4. Setelah makanan selesai dimasak, makanan diberikan lagi ke pelayan yang kemudian diserahkan ke pelanggan. 5. Ketika pelanggan memakan pesanan, pelayan memberikan daftar pesanan ke kasir. 25 6. Kasir langsung menghitung jumlah pembayaran, setelah selesai menghitung kasir memberikan tagihan ke pelayan. 7. Setelah pelanggan selesai makan, pelanggan meminta tagihan ke pelayan yang kemudian pelayan langsung memberikan kepada pelanggan. 8. Setelah diterima oleh pelanggan, pelanggan langsung menuju kasir untuk dibayar. Gambar 2.7 Contoh Sequence Diagram • Activity diagram Activity Diagram menurut Fowler (2005:163) adalah teknik untuk menggambarkan logika prosedural, proses bisnis, dan jalur kerja. Dalam beberapa hal Activity Diagram memainkan peran mirip diagram alir, tetapi perbedaan prinsip antara notasi diagram alir adalah Activity Diagram mendukung behaviour paralel. Node pada sebuah Activity Diagram disebut sebagai action, sehingga diagram tersebut menampilkan sebuah activity yang tersusun dari action. Pada bagian ini akan dijelaskan perpindahan activity setelah dilakukan sebuah event atau action pada rancangan program aplikasi ini dengan cara Activity Diagram. 26 Keterangan Simbol : Tampilkan Menu Mulai Selesai Gambar 2.8 Contoh Activity Diagram Mesin ATM 27 2.9 Email Email merupakan aplikasi TCP/IP yang paling banyak digunakan. Email adalah pesan yang terdiri dari atas kumpulan string ASCII dalam format RFC 822 (dikembangkan tahun 1982). Email yang dikirim belum tentu akan diteruskan ke komputer penerima, tapi disimpan dahulu dalam sebuah komputer server yang akan online secara terus menerus dengan media penyimpanan yang relatif lebih besar dibanding komputer biasa. Komputer yang melayani penerimaan email secara terus menerus tersebut biasa disebut dengan mailserver atau mailhost. 2.10 SSL Secure Socket Layer (SSL) adalah protokol yang digunakan untuk browsing web secara aman. SSL bertindak sebagai protokol yang mengamankan komunikasi antara client dan server. Protokol ini memfasilitasi penggunaan enkripsi untuk data yang rahasia membantu menjamin integritas informasi yang dipertukarkan antara website dan web browser. Selain itu SSL adalah protokol berlapis, dalam tiap lapisannya sebuah data terdiri dari panjang, deskripsi dan isi. SSL mengambil data untuk dikirimkan, dipecahkan kedalam blok-blok yang teratur, kemudian dikompres bila perlu, menerapkan MAC, dienkripsi, dan hasilnya dikirmkan. Di tempat tujuan data dideskripsi, verifikasi, dekompres, dan disusun kembali. Hasilnya dikirimkan ke klien diatasnya. 2.11 Web Service Web service adalah aplikasi sekumpulan data, perangkat lunak atau bagian dari perangkat lunak yang dapat diakses secara remote oleh berbagai piranti dengan sebuah perantara tertentu. Secara umum, web service dapat diindetifikasi dengan menggunakan URL seperti web pada umumnya. Namun yang membedakan web service dengan web pada umumnya adalah interaksi yang diberikan oleh web service. Berbeda dengan URL web pada umumnya, URL web service hanya mengandung kumpulan informasi, perintah, konfigurasi atau sintaks yang berguna membangun sebuah fungsi-fungsi tertentu dari aplikasi. 28 Web service dapat diartikan juga sebuah metode pertukaran data, tanpa memperhatikan dimana sebuha database ditanamkan, dibuat dalam bahasa apa sebuah aplikasi yang mengkonsumsi data, dan diplatform apa sebuah data itu dikonsumsi. Web service mampu menunjang interoperabilitas. Sehingga web service mampu menjadi sebuah jembatan penghubung antara berbagai sistem yang ada. Web pada umumnya digunakan untuk melakukan respon dan request yang dilakukan antara client dan sever. Sebagai contoh, seorang pengguna layanan web tertentu mengetikan alamat url web untuk membentuk sebuah request. Request akan sampai pada server, diolah dan kemudian disajikan dalam bentuk sebuah respon. Dengan singkat kata terjadilah hubungan client-server secara sederhana. Sedangkan pada web service hubungan antara client dan server tidak terjadi secara langsung. Hubungan antara client dan server dijembatani oleh file web service dalam format tertentu. Sehingga akses terhadap database akan ditanggani tidak secara langsung oleh server, melainkan melalui perantara yang disebut sebagai web service. Peran dari web service ini akan mempermudah distribusi sekaligus integrasi database yang tersebar di beberapa server sekaligus. 2.12 PHP PHP merupakan singkatan dari “PHP : Hypertext Preprocessor”, adalah sebuah bahasa scripting yang terpasang pada HTML. Sebagian besar sintaks mirip dengan bahasa C, JAVA, dan Perl, ditambah beberapa fungsi PHP yang spesifik. Tujuan utama bahasa ini adalah untuk memungkinkan perancang web menulis halaman web dinamik dengan cepat. 2.12.1 Hubungan PHP dengan HTML Halaman web biasanya disusun dengan kode-kode html yang disimpan dalam sebuah file berekstensi .html. File html ini dikirimkan oleh server (atau file) ke browser, kemudian browser menerjemahkan kode-kode tersebut sehingga menghasilkan suatu tampilan yang indah. Lain halnya dengan program php, program ini harus diterjemahkan oleh web-server sehingga menghasilkan kode html yang dikirim ke browser agar dapat ditampilkan. Program ini dapat berdiri sendiri ataupun disisipkan di antara kode-kode html sehingga dapat langsung ditampilkan bersama dengan kode-kode html tersebut. 29 Program php dapat ditambahkan dengan mengapit program tersebut di antara tanda <? dan ?>. Tanda-tanda tersebut biasanya disebut tanda untuk escaping (kabur) dari kode html. File html yang telah dibubuhi program php harus diganti ekstensi-nya menjadi .php atau .php3. PHP merupakan bahasa pemograman web yang bersifat server-side HTML = embedded scripting, di mana script-nya menyatu dengan HTML dan berada si server. Artinya adalah sintaks dan perintah-perintah yang kita berikan akan sepenuhnya dijalankan di server tetapi disertakan HTML biasa. PHP dikenal sebgai bahasa scripting yang menyatu dengan tag HTML, dieksekusi di server dan digunakan untuk membuat halaman web yang dinamis seperti ASP (active Server Pages) dan JSP (Java Server Pages). PHP pertama kali dibuat oleh Rasmus Lerdroft, seorang programmer C. Semula PHP digunakannya untuk menghitung jumlah pengunjung di dalam webnya. Kemudian ia mengeluarkan Personal Home Page Tools versi 1.0 secara gratis. Versi ini pertama kali keluar pada tahun 1995. Isinya adalah sekumpulan script PERL yang dibuatnya untuk membuat halaman webnya menjadi dinamis. Kemudian pada tahun1996 ia mengeluarkan PHP versi 2.0 yang kemampuannya telah mampu mengakses database dan dapat terintegrasi dengan HTML. Pada tahun 1998 tepatnya pada tanggal 6 Juni 1998 keluarlah PHP versi 3.0 yang dikeluarkan oleh Rasmus sendiri bersama kelompok pengembang softwarenya. Versi teranyar yaitu PHP 4.0 keluar pada tanggal 22 Mei 2000 merupakan versi yang lebih lengkap lagi dibandingkan dengan versi sebelumnya. Perubahan yang paling mendasar pada PHP 4.0 adalah terintegrasinya Zend Engine yang dibuat oleh Zend Suraski dan Andi Gutmans yang merupakan penyempurnaan dari PHP3 scripting engine. Yang lainnya adalah build in HTTP session, tidak lagi menggunakan library tambahan seperti pada PHP3. Tujuan dari bahasa scripting ini adalah untuk membuat aplikasi-aplikasi yang dijalankan di atas teknologi web. Dalam hal ini, aplikasi pada umumnya akan memberikan hasil pada web browser, tetapi prosesnya secara keseluruhan dijalankan web server. 30 2.12.2 Kelebihan php Ketika e-commerce semakin berkembang, situs-situs yang statispun semakin ditinggalkan Karena dianggap sudah tidak memenuhi keinginan pasar karena situs tersebut harus tetap dinamis selama setiap hari. Pada saat ini bahasa PERL dan CGI sudah jauh ketinggalan jaman sehingga sebagian besar designer web banyak beralih ke bahasa server-side scripting yang lebih dinamis seperti PHP. Seluruh aplikasi berbasis web dapat dibuat dengan PHP. Namun kekuatan yang paling utama PHP adalah pada konektivitasnya dengan system database di dalam web. Sistem database yang dapat didukung oleh PHP adalah : 1. Oracle 2. MySQL 3. Sybase 4. PostgreSQL 5. dan lainnya Keunggulan lainnya dari PHP adalah PHP juga mendukung komunikasi dengan layanan seperti protocol IMAP, SNMP, NNTP, POP3 bahkan HTTP. PHP dapat diinstal sebagai bagian atau modul dari apache web server atau sebagai CGI script yang mandiri. Banyak keuntungan yang dapat diperoleh jika menggunakan PHP sebagai modul dari apache di antaranya adalah : 1. Tingkat keamanan yang cukup tinggi 2. waktu eksekusi yang lebih cepat dibandingkan dengan bahasa pemograman web lainnya yang berorientasi pada server-side scripting. 3. Akses ke system database yang lebih fleksibel. seperti MySQL. Dalam modul ini kita akan mempelajari PHP sebagai server-side scripting yang menggunakan apache sebagai webserver. Versi PHP yang kita gunakan adalah PHP4 untuk windows. 31