BAB II
LANDASAN TEORI
Bab ini menjelaskan teori dan konsep yang menjadi landasan materi dari sistem yang akan dibuat. Beberapa teori dan konsep yang akan dibahas antara lain pembahasan konsep dasar voting, e-voting, konsep dasar kriptografi, cara kerja algoritma RSA, dan teori tentang bahasa pemograman PHP.
2.1 Voting
Dalam pelaksanaan voting atau pemungutan suara sering terjadi kesalahan-kesalahan yang disebabkan oleh human error atau disebabkan karena sistem pendukung voting yang tidak berjalan baik. Berikut ini adalah beberapa permasalahan yang timbul dalam pelaksanaan voting di Indonesia selama ini: 1. Banyak terjadi kesalahan dalam proses pendaftaran pemilih. Konsep penggunaan banyak kartu identitas menyebabkan banyaknya pemilih yang memiliki kartu suara lebih dari satu buah. Keadaan ini seringkali dimanfaatkan oleh pihak-pihak tertentu untuk meningkatkan jumlah suara pilihannya sehingga dapat memenangkan voting tersebut. 2. Pemilih salah dalam memberi tanda pada kertas suara, karena ketentuan keabsahan penandaan yang kurang jelas, sehingga banyak kartu suara yang dinyatakan tidak sah. Pada tahapan verifikasi keabsahan dari kartu suara, sering terjadi kontroversi peraturan dan menyebabkan konflik. 3. Proses pengumpulan kartu suara yang berjalan lambat, karena perbedaan kecepatan pelaksanaan pemungutan suara di masing-masing tempat pemilihan. Penyebab lainnya adalah kesulitan untuk memeriksa keabsahan dari sebuah kartu suara, sehingga pengumpulan tidak berjalan sesuai dengan rencana.
Universitas Sumatera Utara
8
4. Proses penghitungan suara yang dilakukan di setiap daerah berjalan lambat karena proses tersebut harus menunggu semua kartu suara terkumpul terlebih dahulu. Keterlambatan yang terjadi pada proses pengumpulan, akan berimbas kepada proses penghitungan suara. Lebih jauh lagi, proses tabulasi dan pengumuman hasil perhitungan akan meleset dari perkiraan sebelumnya. 5. Keterlambatan dalam proses tabulasi hasil penghitungan suara dari daerah. Kendala utama dari proses tabulasi ini adalah kurangnya variasi metode pengumpulan hasil penghitungan suara. Hal ini disebabkan oleh masih lemahnya infrastruktur teknologi komunikasi di daerah. Oleh karena itu, seringkali pusat tabulasi harus menunggu data penghitungan yang dikirimkan dari daerah dalam jangka waktu yang lama. Akibat dari hal tersebut, maka pengumuman hasil voting akan memakan waktu yang lama. 6. Permasalahan yang terpenting adalah kurang terjaminnya kerahasiaan dari pilihan yang dibuat oleh seseorang. Banyak pemilih mengalami tekanan dan ancaman dari pihak tertentu untuk memberikan suara mereka kepada pihak tertentu. Lebih buruk lagi, terjadi βjual-beli suaraβ di kalangan masyarakat tertentu, sehingga hasil voting tidak mewakili kepentingan seluruh golongan masyarakat.
2.2 e-voting
e-voting yaitu suatu metode pemungutan suara dan perhitungan suara dalam pemilihan umum dengan menggunakan perangkat elektronik (Priyono & Dihan, 2010). Proses pendaftaran pemilih, pelaksanaan pemilihan, penghitungan suara, dan pengiriman hasil suara dilakukan secara elektronik atau digital (Rokhman, 2011). Pilihan teknologi yang digunakan dalam implementasi dari e-voting sangat bervariasi, seperti penggunaan smart card
untuk otentikasi pemilih, penggunaan internet sebagai
pemungutan suara, penggunaan touch screen sebagai pengganti kartu suara, dan masih banyak variasi teknologi yang digunakan (Azhari, 2005). Penggunaan teknologi ini di satu sisi memberikan banyak kemudahan, kecepatan, sedangkan disisi lain menimbulkan kerawanan (Agustina & Kurniati, 2009). Kerawanan ini terkait dengan keamanan informasinya.
Universitas Sumatera Utara
9
Berikut beberapa requirement dasar pada e-voting (Schneier, 1996): 1. Hanya orang yang sah dapat memberikan suara/ memilih. 2. Setiap orang tidak dapat memilih lebih dari sekali. 3. Tidak ada seorang pun yang dapat mengetahui pilihan orang lain. 4. Tidak ada seorang pun yang dapat menduplikasi suara orang lain. 5. Tidak ada seorang pun yang dapat merubah pilihan orang lain tanpa diketahui oleh pihak lainnya. 6. Setiap orang dapat memastikan pilihan nya telah masuk ke dalam tabulasi suara. 7. Setiap orang dapat mengetahui siapa yang sudah memilih dan tidak memilih.
e-voting merupakan teknologi yang relatif baru untuk mendukung pelaksanaan pesta demokrasi dan telah diterapkan di sejumlah negara (Kahani, 2005). Penerapan e-voting dengan berbagai model dan dalam 10 tahun terakhir tidak hanya di Amerika, tetapi negara-negara lain juga mengadopsi sistem ini (Gefen et al., 2005). Sejumlah negara yang telah menerapkan e-voting yaitu Brazil (sejak 1990 dan tahun 1998 merupakan proses e-voting terbesar karena melibatkan 60 juta pemilih), Inggris (sejak tahun 2002 sebagian telah menerapkan dan mulai tahun 2011 digunakan secara nasional), Australia (mulai digunakan tahun 2001), Selandia Baru (mulai tahun 2006), Jepang (sejak tahun 2002), Irlandia (dipersiapkan sejak tahun 1998 dan mulai diujicoba tahun 2002 dan mulai diterapkan secara nasional tahun 2004), Swiss (sejak tahun 1998) dan Lithuania. Menurut Hajjar et al. (2006) bahwa pertimbangan diterapkannya e-voting adalah karena kecepatan dan akurasi. Di Indonesia sendiri, penggunaan e-voting telah dilakukan Nopember β Desember 2009 pada 31 kepala dusun (banjar) yang ada di 18 desa/kelurahan di Jembrana β Bali yaitu menggunakan kartu identitas dengan chip dan komputer layar sentuh sebagai sarana pemungutan suara.
Penerapan e-voting akan membuat pesta demokrasi menjadi semakin efisien dan efektif dan hasilnya lebih cepat diketahui kurang dari 24 jam (Indriastuti dan Wahyudi, 2010). Tetapi pentingnya kerahasiaan dan keamanan electronic elevation system juga harus diperhatikan seperti ditegaskan oleh Zamora, et.al. (2005). Artinya,
Universitas Sumatera Utara
10
jika kerahasiaan dan keamanan terpenuhi, maka e-voting sangatlah tepat digunakan. Berikut sejumlah aspek manfaat dari penerapan e-voting adalah (Zafar dan Pilkzaer, 2007). 1. Biaya Terkait sumber daya dan investasi yang lebih hemat dibanding dengan sistem tradisional yang ribet, kompleks dan tidak efisien.
2. Waktu Terkait waktu pelaksanaan pemilihan yang lebih cepat dan kalkulasi hasil yang lebih tepat dibandingkan sistem yang tradisional.
3. Hasil Terkait dengan hasil kalkulasi yang lebih tepat dan akurat serta minimalisasi terjadinya kasus human error selama sistem yang dibangun terjamin dari berbagai ancaman kejahatan.
4. Transparansi Terkait dengan transparansi dari semua proses karena semua dilakukan oleh suatu sistem yang otomatis dan real time online.
2.3 Kriptografi
Kriptografi (cryptography) berasal dari bahasa Yunani yaitu cryptos yang berarti secret yaitu rahasia dan graphein artinya writing yaitu tulisan (Agustina dan Kurniati, 2009). Sehingga kriptografi berarti secret writing yaitu tulisan rahasia. Dan arti sebenarnya dari kriptografi itu adalah ilmu yang mempelajari tentang bagaimana menjaga kerahasiaan suatu pesan, agar isi pesan yang disampaikan tersebut aman sampai ke penerima pesan (Ariyus, 2008).
Dalam menjaga kerahasiaan suatu pesan dengan kriptografi, pesan yang akan dikirim (plaintext) diubah dalam bentuk sandi (ciphertext). Proses inilah yang disebut
Universitas Sumatera Utara
11
dengan enkripsi. Sedangkan dekripsi adalah proses mengubah pesan yang telah disandikan (chipertext) ke pesan sebenarnya (plaintext). Menurut Munir (2006), kriptografi bertujuan untuk memberikan layanan pada aspek-aspek keamanan antara lain: 1. Kerahasiaan (confidentially) Merupakan layanan yang ditujukan untuk menjaga agar pesan tidak dapat dibaca oleh pihak-pihak yang tidak berhak.
2. Integritas data (integrity) Memberikan jaminan bahwa tiap bagian pesan tidak akan mengalami perubahan dari saat data dibuat/ dikirim oleh pengirim sampai dengan saat data tersebut dibuka oleh penerima data.
3. Otentikasi (authentication) Merupakan
layanan
mengidentifikasi
yang
kebenaran
berhubungan pihak-pihak
dengan yang
identifikasi,
baik
berkomunikasi
(user
authentication atau entity authentication) maupun mengidentifikasi kebenaran sumber pesan (data origin authenticaton).
4. Nirpenyangkalan (non-repudiation) Merupakan layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan yaitu pengirim pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.
Dalam menjaga kerahasiaan pesan dengan kriptografi, proses enkripsi dan dekripsi membutuhkan kunci (key) tertentu yang hanya dimiliki oleh pihak yang sah saja. Tentunya hal ini membuat pihak lain yang tidak memiliki kunci tersebut tidak akan membaca pesan yang sebenarnya sehingga dengan kata lain pesan akan tetap terjaga. Berdasarkan kunci yang digunakan, algoritma kriptografi dapat dibedakan atas 2 golongan yaitu algoritma kunci simetrik dan algoritma kunci asimetrik.
Universitas Sumatera Utara
12
2.3.1 Kunci Simetrik
Kunci Simetrik yang sering disebut algoritma konvensional adalah algoritma yang menggunakan kunci yang sama untuk proses enkripsi dan dekripsinya (Schneier, 1996). Dari gambar 2.1 ini terlihat bahwa untuk mengenkripsi dan mendekripsinya pesan hanya menggunakan satu buah kunci saja (K) saja :
Key
Plaintext
Key
Ciphertext Enkripsi
Plaintext Dekripsi
Gambar 2.1 Skema kriptografi kunci simetri
Untuk menjaga kerahasiaan pesan antar komunikan pada kriptografi ini dibutuhkan sebuah kunci untuk tiap pasangan komunikan. Sehingga untuk n komunikan jumlah kunci yang dibutuhkan adalah: π(π β 1) 2
(2.1)
Kelebihan kriptografi kunci simetri adalah: 1. Proses enkripsi atau dekripsi kriptografi kunci simetri membutuhkan waktu yang singkat. 2. Ukuran kunci simetri relatif lebih pendek. 3. Otentikasi pengiriman pesan langsung diketahui dari cipherteks yang diterima, karena kunci hanya diketahui oleh pengirim dan penerima saja.
Sedangkan kelemahan kriptografi kunci simetri adalah: 1. Kunci simetri harus dikirim melalui saluran komunikasi yang aman, dan kedua entitas yang berkomunikasi harus menjaga kerahasiaan kunci. 2. Kunci harus sering diubah setiap kali melakukan komunikasi.
Universitas Sumatera Utara
13
Beberapa algoritma yang memakai kunci simetri adalah Data Encryption Standard (DES), RC2, RC4, RC5, RC6, International Data Encryption Algorithm (IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), Blowfish, dan lain sebagainya.
2.3.2 Kunci Asimetrik
Kriptografi kunci simetrik sering disebut dengan kunci publik karena menggunakan kunci yang berbeda untuk enkripsi dan dekripsi (Ratih, 2006). Kriptografi ini memiliki dua kunci (e,d). Seperti yang diuraikan Menezes (1997), kunci e dibuat untuk umum sehingga disebut kunci publik, sementara kunci d tetap disimpan aman dan rahasia sehingga disebut kunci privat. Demi keamanan maka harusnya menghitung d menjadi lebih sulit bila e diketahui. Skema kriptografi kunci simetri dapat dilihat pada gambar 2.2. Kunci Publik
Plaintext
Kunci Privat
Ciphertext Enkripsi
Plaintext Dekripsi
Gambar 2.2 Skema kriptografi kunci asimetri (Schneier, 1996).
Kriptografi kunci publik dapat dianalogikan seperti kotak surat yang terkunci dan memiliki lubang untuk memasukkan surat. Kotak surat diletakkan di depan rumah pemiliknya. Setiap orang dapat memasukkan surat ke dalam kotak tersebut, tetapi hanya pemilik kotak yang dapat membuka kotak dan membaca suratnya karena hanya ia yang memiliki kuncinya. (Ratih, 2006)
Berikut beberapa kelebihan dan kelemahan kriptografi kunci simetri seperti yang diuraikan Munir (2006):
Universitas Sumatera Utara
14
1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas yang berkomunikasi. Tidak ada kebutuhan mengirim kunci privat sebagaimana pada kriptografi kunci simetri. 2. Pasangan kunci privat dan kunci publik tidak perlu diubah dalam jangka waktu yang sangat lama. 3. Dapat digunakan dalam pengamanan pengiriman kunci simetri. 4. Beberapa algoritma kunci publik dapat digunakan untuk memberi tanda tangan digital pada pesan.
Sedangkan kelemahan kriptografi kunci simetri adalah : 1. Proses enkripsi dan dekripsi umumnya lebih lambat dari algoritma simetri, karena menggunakan bilangan yang besar dan operasi bilangan yang besar. 2. Ukuran cipherteks lebih besar daripada plainteks. 3. Ukuran kunci relatif lebih besar daripada ukuran kunci simetri.
Beberapa algoritma yang memakai kunci asimetri adalah Digital Signature Algorithm (DSA), RSA, ElGamal, Diffie-Hellman, Elliptic Curve Cryptography (ECC), Schnoor, Kriptografi Quantum, Diffie-Helman, dan lain sebagainya.
2.4 Algoritma Kriptografi RSA
Algoritma kriptografi RSA ditemukan oleh tiga orang yang kemudian nama-nama mereka disingkat menjadi RSA. Ketiga penemu itu adalah Ron Riverst, Adi Shamir, dan Leonard Adleman. RSA dibuat di MIT pada tahun 1977 dan dip atenkan oleh MIT (Massachussets Institute of Technology) pada tahun 1983. Sejak 21 September tahun 2000, paten tersebut berakhir, sehingga saat ini semua orang dapat menggunakannya dengan bebas (Brian, 2000). RSA merupakan algoritma kriptografi asimetris yang paling mudah untuk diimplementasikan dan dimengerti. (Ariyus, 2008)
Algoritma kriptografi RSA merupakan algoritma yang termasuk dalam kategori algoritma asimetri atau algoritma kunci publik. Algoritma kriptografi RSA
Universitas Sumatera Utara
15
didesain sesuai fungsinya sehingga kunci yang digunakan untuk enkripsi berbeda dari kunci yang digunakan untuk dekripsi. Algoritma RSA disebut kunci publik karena kunci enkripsi dapat dibuat publik yang berarti semua orang boleh mengetahuinya, namun hanya orang tertentu (si penerima pesan sekaligus pemilik kunci dekripsi yang merupakan pasangan kunci publik) yang dapat melakukan dekripsi terhadap pesan tersebut. Keamanan algoritma RSA didasarkan pada sulitnya memfaktorkan bilangan besar menjadi faktor-faktor primanya (Sulistyanto, 2004). Secara umum ada beberapa besaran-besaran yang harus diperhatikan dalam algoritma RSA, yaitu : 1. p dan q adalah bilangan prima
(rahasia)
2. n = p.q
(tidak rahasia)
3. ο¦(n) = (p-1)(q-1)
(rahasia)
4. e (kunci enkripsi)
(tidak rahasia)
5. d (kunci dekripsi)
(rahasia)
6. m (plaintext)
(tidak rahasia)
7. c (chipertext)
(rahasia)
2.5 Konsep Dasar Perhitungan Matematis
Dalam setiap proses pada algoritma RSA terdapat perhitungan matematis. Pada proses pembangkitan kunci dibutuhkan perhitungan untuk menentukan nilai Totient n dan perhitungan dengan algoritma Euclidean untuk menentukan nilai dua buah bilangan yang relatif prima. Sedangkan pada proses enkripsi dan dekripsi dilakukan perhitungan menggunakan metode Fast Exponentiation.
2.5.1 Fungsi Totient Euler Ο Fungsi Totient Euler Ο atau biasa disebut dengan fungsi Euler merupakan salah satu fungsi yang dipakai dalam perhitungan matematis pada algoritma RSA. Fungsi Euler mendefinisikan Ο(n) untuk n β₯ 1 yang menyatakan jumlah bilangan bulat positif < n yang relatif prima dengan n (Munir, 2006). Dua bilangan bulat a dan b dikatakan relatif prima jika gcd(a,b) = 1(pembagi bersama terbesar dari a dan b adalah 1).
Universitas Sumatera Utara
16
Jika n = pq (p dan q bilangan prima)
(2.2)
maka Ο(n) = Ο(p).Ο(q) = (p-1)(q-1)
(2.3)
Contoh 1. Ο(15)= Ο(3) Ο(5)=2x4=8 buah bilangan bulat yang relatif prima terhadap 15, yaitu 1,2,4,7,8,11,13,14.
2.5.2 Algoritma Euclidean
Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar (PBB) dari dua bilangan bulat (Munir, 2006). Algoritma ini didasarkan pada pernyataan bahwa ada dua buah bilangan bulat tak negatif yakni m dan n dimana nilai m β₯ n. Adapun tahap-tahap pada algoritma Euclidean adalah: 1. Jika n = 0 maka m adalah PBB(m, n); stop. Kalau tidak (yaitu n β 0) lanjutkan ke langkah nomor 2. 2. Bagilah m dengan n dan misalkan sisanya adalah r. 3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali ke langkah nomor 1.
Algoritma Euclidean dapat digunakan untuk mencari dua buah bilangan bulat yang relatif prima. Dua buah bilangan bulat dikatakan relatif prima jika GCD dari kedua bilangan bernilai 1.
Contoh 2. Hitung nilai GCD(100, 64) dan GCD(43, 19).
100 mod 64
43 mod 19
64 = 1 . 36 + 28
43 = 2 . 19 + 5
36 = 1 . 28 + 8
19 = 3 . 5 + 4
28 = 2 . 8 + 4
5=1.4+1
8=2.4+0
4=4.1+0
Nilai GCD(100, 64) = 4
Nilai GCD(43, 19) = 1
GCD(100, 64) β 1
Universitas Sumatera Utara
17
2.5.3 Metode Fast Exponentiation
Metode ini digunakan untuk menghitung operasi pemangkatan besar bilangan bulat modulo dengan cepat (Munir, 2006). Metode ini berdasarkan pada pernyataan berikut ini: ab mod m = [(a mod m)(b mod m)] mod m
(2.4)
(abc....) mod m = [(a mod m)(b mod m)(c mod m)....] mod m
(2.5)
Untuk lebih jelasnya mengenai langkah-langkah metode fast exponentiation dapat dilihat pada contoh berikut. Contoh 3. Hitung nilai dari 4540 mod 256. Sebagai ilustrasi, untuk menghitung 4540 mod 256 dapat dilakukan sebagai berikut. 4540 = 4532 . 458 452 mod 256 = 2025 mod 256 = 233 454 mod 256 = 452 . 452 mod 256 = [(452 mod 256) . (452 mod 256)] mod 256 = 2332 mod 256 = 17 458 mod 256 = 454 . 454 mod 256 = [(454 mod 256) . (454 mod 256)] mod 256 = 172 mod 256 = 33 4516 mod 256 = 458 . 458 mod 256 = [(458 mod 256) . (458 mod 256)] mod 256 = 332 mod 256 = 65 4532 mod 256 = 4516 . 4516 mod 256 = [(4516 mod 256) . (4516 mod 256)] mod 256 = 652 mod 256 = 129 4540 mod 256 = [(4532 mod 256) . (458 mod 256)] mod 256 = 4257 mod 256 = 161 Jadi, nilai dari 4540 mod 256 = 233.
Universitas Sumatera Utara
18
2.6 Proses Enkripsi dan Dekripsi RSA
Skema algoritma kunci publik sandi RSA terdiri dari tiga proses yaitu, proses pembentukan kunci, proses enkripsi, dan proses dekripsi (Mollin, 2002).
2.6.1 Proses Pembentukan Kunci
1. Memilih dua bilangan prima yang diberi simbol sebagai p dan q. 2. Menghitung nilai n = p.q ( n β p , karena jika n = p , maka nilai n = p2 dan akan mudah mendapatkan nilai n). 3. Hitung Ο(n) = (p-1) (q-1). 4. Memilih kunci publik e yang relatif prima terhadap π(n) 5. Bangkitkan kunci privat dengan persamaan dimana 1 < π < π(π)
ππ β‘ 1 (πππ π(π)) β π =
1 + π . π(π) π
(2.6)
Hasil dari algoritma di atas adalah : a. Kunci publik adalah pasangan (e,n) b. Kunci privat adalah pasangan (d, n)
2.6.2 Proses Enkripsi
1. Ambil kunci publik penerima pesan e ,dan modulus n. 2. Plainteks dinyatakan dengan blok-blok m1, m2, .., sedemikian sehingga setiap blok merepresentasikan nilai [0, n-1]. 3. Setiap blok mi dienkripsikan menjadi blok ci dengan rumus ci = mie mod n
(2.7)
Universitas Sumatera Utara
19
2.6.3 Proses Dekripsi
Setiap blok chiperteks ci didekripsikan kembali menjadi blok mi dengan rumus : mi = ci d mod n Ketiga proses di atas dapat dicontohkan sebagai berikut : 1. Pilih dua bilangan prima yakni p = 10477 dan q = 53887 2. Hitung nilai n = p.q , sehingga nilai n = 564574099 3. Hitung Ο(n) = (p-1)(q-1), sehingga nilai Ο(n) = (10477-1)(53887-1) adalah 564509736 4. Kemudian bangkitkan kunci publik (e), dimana nilai e relatif prima terhadap Ο(n) Nilai GCD(ο¦(n), e) harus bernilai 1. Nilai e yang relatif prima dengan 564509736 adalah 5. 5. Hitung kunci privat (d) dengan menggunakan persamaan π =
1+k .ο¦(n) e
. Nilai k
dapat dihitung dengan mencoba nilai-nilai = 1,2,3,4...sehingga diperoleh nilai d bilangan bulat.
Tabel 2.1 Tabel Proses Mencari Kunci Privat (d)
Nilai k
1
2
3
4
Persamaan
π=
1+k .ο¦(n) e
Hasil
1 + 1 .564509736 5
112901947.4
π=
1 + 2 . 564509736 5
225803894.6
π=
1 + 3 . 564509736 5
338705841.8
π=
1 + 4 . 564509736 5
451607789
π=
Jadi, nilai dari kunci privat (d) yang diperoleh adalah 451607789.
Universitas Sumatera Utara
20
6. Coba kembali nilai d yang didapat sehingga (π. π) mod π(π) = 1 (π. π) mod π(π) = 1 (451607789 * 5 ) mod 564509736 = 1 2822548680 mod 564509736 = 1 (benar)
7. Polin mengirimkan pesan kepada Arlita. Pesan yang akan dikirimkan adalah: m = SKRIPSI atau dalam desimal (kode ASCII) adalah : 83758273808373 Kemudian nilai di atas akan dipecah-pecah menjadi blok-blok m. Nilai m haruslah masih dalam [0, 564574099-1]
m1 = 83
m5 = 80
m2 = 75
m6 = 83
m3 = 82
m7 = 73
m4 = 73 Polin telah mengetahui kunci publik Arlita adalah e = 5 dan n = 564574099. Polin dapat mengenkripsikan pesan sebagai berikut : c1 = 835 mod 564574099 = 551596049 c5 = 805 mod 564574099 = 453929505 c2 = 755 mod 564574099 = 114750479 c6 = 835 mod 564574099 = 551596049 c3 = 825 mod 564574099 = 319953838 c7 = 735 mod 564574099 = 379349296 c4 = 735 mod 564574099 = 379349296 Jadi cipherteks yang akan dihasilkan adalah: 551596049 114750479 319953838 379349296 453929505 551596049 379349296
8. Maka pesan yang telah terenkripsi tersebut akan dikirimkan kepada Arlita, yang mana Arlita sudah mempunyai kunci privat d = 451607789
Universitas Sumatera Utara
21
9. Setelah itu cipherteks akan didekripsikan oleh Arlita sebagai berikut : m1 = 551596049451607789 mod 564574099 = 83 m2 = 114750479 451607789 mod 564574099 = 75 m3 = 319953838 451607789 mod 564574099 = 82 m4 = 379349296 451607789 mod 564574099 = 73 m5 = 453929505 451607789 mod 564574099 = 80 m6 = 551596049 451607789 mod 564574099 = 83 m7 = 379349296 451607789 mod 564574099 = 73 maka akan dihasilkan kembali : m = 83758273808373 Yang dalam pengkodean ASCII dapat dibaca sebagai berikut : m = SKRIPSI
2.7 Captcha
Captcha (Completely Automated Public Turing test to tell Computers and Human Apart) adalah suatu program yang sebagian besar manusia dapat melewatinya, tetapi program komputer tidak dapat melewatinya (Ahn, 2004). Captcha biasa digunakan oleh Hotmail, Yahoo, Paypal dan banyak website populer menggunakannya untuk mencegah pendaftaran secara otomatis (Mori, 2003). Contoh captcha yang sering digunakan dalam halaman registrasi user di beberapa website seperti YahooMail, Gmail, Kaskus :
Gambar 2.3 CAPTCHA (www.captcha.net)
Universitas Sumatera Utara
22
Captcha dikembangkan untuk mencegah program robot, atau bot yang membuat ratusan ribu email account
untuk mengirimkan junk mail ke banyak
pengguna. (Mori dan Malik, 2003) .
Adapun beberapa kegunaan dari captcha adalah (Captcha, 2010) : 1. Melindungi komentar web/blog dari spam. 2. Melindungi halaman registrasi. 3. Melindungi e-mail address. 4. Melindungi polling online. 5. Melindungi dari BruteForce/Dictionary Attack. 6. Melindungi dari bot milik search engine. 7. Melindungi dari serangan worms, DOS.
Cara meng-embed captcha ke dalam program :
Gambar 2.4 Cara meng-embed captcha
2.8 Unified Modelling Language (UML) Unified Modeling Language (UML) adalah sebuah βbahasaβ yang telah menjadi standard industri untuk visualisasi, merancang dan mendokumentasikan sistem piranti lunak (Dharwiyanti dan Wahono, 2003). Dengan menggunakan UML kita dapat membuat model untuk semua jenis aplikasi piranti lunak, dimana aplikasi tersebut dapat berjalan pada piranti keras, sistem operasi dan jaringan apapun serta ditulis
Universitas Sumatera Utara
23
dalam bahasa pemrograman apapun. Tetapi karena UML juga menggunakan class dan operation dalam konsep dasarnya, maka UML lebih cocok untuk penulisan piranti lunak dalam bahasa berorientasi objek.
Menurut Hariyanto (2004) tujuan perancangan UML adalah: 1. Menyediakan bahasa pemodelan visual yang ekspresif dan siap pakai untuk mengembangkan dan pertukaran model yang berarti. 2. Menyediakan mekanisme perluasan dan spesialisasi untuk memperluas konsep-konsep inti. 3. Mendukung spesifikasi independen bahasa pemograman dan pengembangan tertentu. 4. Menyediakan basis formal untuk bahasa permodelan. 5. Mendukung konsep-konsep pengembangan level lebih tinggi seperti komponen, kolaborasi, framework dan pattern.
Unified Modelling Language (UML) menyediakan sejumlah diagram untuk menggambarkan pemodelan berorientasikan objek yang dilakukan. UML membagi diagram menjadi dua tipe :
1. Diagram Struktur Diagram ini memvisualisasi, menspesifikasi, membangun dan mendokumentasikan aspek statik dari sistem. Diagram struktur UML terdiri dari : a. Diagram Kelas (Class Diagram) b. Diagram Objek (Object Diagram) c. Diagram komponen (Component Diagram) d. Diagram deployment (Deployment Diagram)
2. Diagram perilaku Diagram untuk memvisualisasi, menspesifikasi, membangun dan mendokumentasikan aspek dinamis dari sistem. Diagram strukur di UML terdiri dari : a. Diagram use case (Use case diagram) b. Diagram sekuen (Sequence diagram) c. Diagram kolaborasi (Collaboration diagram)
Universitas Sumatera Utara
24
d. Diagram statechart (Statechart diagram) e. Diagram aktivitas (Activity diagram)
2.8.1 Diagram Use Case
Diagram Use case (use case diagram) merupakan salah satu diagram untuk memodelkan aspek perilaku sistem atau digunakan untuk mendeskripsikan apa yang seharusnya dilakukan oleh sistem (Hariyanto, 2004). Beberapa elemen diagram use case yaitu :
1. Aktor Aktor adalah pemakai sistem, dapat berupa manusia atau sistem terotomatisasi lain. Aktor adalah seseorang atau sesuatu yang dapat berinteraksi dengan sistem, yaitu siapa dan apa yang menggunakan sistem. Aktor adalah tipe (kelas) bukan instan. Aktor akan mempresentasikan peran bukan pemakai individu dari sistem. Aktor memilih nama, nama yang dipilih seharusnya menyatakan peran aktor.
administrator
operator
user(member)
Gambar 2.7 Aktor-aktor use case
2. Use case Use case adalah cara spesifik penggunaan sistem oleh aktor. Use case melibatkan interaksi antara aktor-aktor dan sistem. Use case mengemukakan suatu kerja yang tampak.
Universitas Sumatera Utara
25
Login
user (member)
Gambar 2.8 Aktor dan use case
3. Keterhubungan Keterhubungan antar use case dengan use case lain berupa generalisasi antara use case yaitu : a. include, perilaku use case merupakan bagian dari use case lain. b. extend, perilaku use case memperluas use case yang lain.
Β«includeΒ» Login
Proses voting Β«extendsΒ»
Proses user (member)
Gambar 2.9 Keterhubungan
2.8.2 Spesifikasi Use Case (Use Case Spesification)
Spesifikasi use case memberikan gambaran lengkap spesifikasi tekstual pada use case. Spesifikasi use case sistem e-voting dilakukan berdasarkan case yang ada pada use case diagram. Spesifikasi use case terdiri dari : a. Deskripsi singkat case, yang menjelaskan apa yang terjadi pada case. b. Pra kondisi yaitu keadaan apa yang terjadi sebelum case berlangsung. c. Karateristik yang dimiliki oleh low case. d. Skenario (flow of event) yaitu menjelaskan cara kerja case mulai dari awal hingga akhir
Universitas Sumatera Utara
26
e. Pasca kondisi yaitu keadaan apa atau output apa yang dihasilkan setelah case berlangsung.
2.8.3 Diagram Sekuen
Diagram sekuen (sequence diagram) menggambarkan interaksi antar objek di dalam dan di sekitar sistem (termasuk pengguna, display dan sebagainya) berupa message (pesan) yang digambarkan terhadap waktu.
Diagram sekuen digunakan untuk memodelkan skenario penggunaan. Skenario penggunaan adalah barisan kejadian yang terjadi selama satu eksekusi sistem. Diagram sekuen menunjukkan objek sebagai garis vertikal dan tiap kejadian sebagai panah horizontal dari objek pengirim ke objek penerima.
Diagram sekuen memiliki beberapa elemen yang terdiri dari :
Tabel 2.2 Elemen-elemen dasar Sequence Diagram Nama 1.
Objek lifeline
Penjelasan
Gambar
Menggambarkan batasan objek Object1
2.
Boundary
Berhubungan
dengan
proses
input output ataupun interface
halaman login (boundary)
Universitas Sumatera Utara
27
Tabel 2.2 Elemen-elemen dasar Sequence Diagram (lanjutan) Nama 3.
Controller
Penjelasan
Gambar
Berhubungan dengan proses kontrol login (controller)
4.
Entity
Berhubungan
dengan
input-
output data
5.
Message arrow
Menggambarkan
login entity (entity)
alir
proses,
perintah atau pengiriman data
Message (call)
Message (return)
Message
6.
Aktivasi
Menggambarkan aktivitas objek
7.
Actor
Mengambarkan
actor
suatu
objek
Universitas Sumatera Utara
28
2.8.4 Diagram Aktivasi (Activity Diagram)
Diagram aktivitas adalah diagram flowchart yang diperluas untuk menunjukkan aliran kendali satu aktivitas ke aktivitas lain. Diagram aktivitas berupa operasi-operasi dan aktivitas-aktivitas di use case (Hariyanto, 2003). Diagram aktivitas dapat digunakan untuk :
1. Pandangan dalam yang dilakukan di operasi. 2. Pandangan dalam bagaimana objek-objek bekerja 3. Pandangan dalam di aksi-aksi dan pengaruhnya pada objek-objek 4. Pandangan dalam suatu use case. 5. Logik dalam proses bisnis
Berikut adalah tabel simbol dari aktivasi diagram :
Tabel 2.3 Simbol Aktivitas Diagram Simbol
Keterangan Start point End point activities Join ( penggabungan)
Fork ( percabangan)
swimline
Sebuah cara mengelompokkan aktifitas
berdasarkan
(mengelompokkan
aktor aktivitas
dalam sebuah urutan yang sama)
Universitas Sumatera Utara
29
2.9 Flowchart
Flowchart adalah penggambaran secara grafik dari langkah-langkah dan urutan-urutan prosedur suatu program (Setiawan, 2006). Simbol-simbol dari flowchart memiliki fungsi yang berbeda antara satu simbol dengan simbol lainnya (Davis, 1999). Fungsi dari simbol-simbol flowchart adalah sebagai berikut :
Tabel 2.4 Fungsi simbol-simbol flowchart. Simbol
Fungsi
Simbol process, yaitu menyatakan suatu tindakan (proses) yang dilakukan didalam program.
Simbol offline connector yaitu menyatakan penghubung bila flowchart terputus disebabkan oleh pergantian halaman (misalanya tidak cukup dalam satu halaman). Simbol online connector, berfungsi untuk menyatakan sambungan dari prose ke proses yang lainnya dalam halaman yang sama.
Simbol arus/flowline, yaitu menyatakan jalannya arus suatu proses.
Simbol decision yaitu menunjukkan suatu kondisi tertentu yang akan menghasilkan dua kemungkinan jawaban yaitu : ya/ tidak.
Simbol input/output, menyatakan proses input atau output tanpa tergantung jenis peralatannya.
Universitas Sumatera Utara
30
Tabel 2.4 Fungsi simbol-simbol flowchart (lanjutan) Simbol terminal yaitu menyatakan permulaan atau akhir suatu program.
Simbol document, mencetak keluaran dalam bentuk dokumen.
2.10 Bahasa Pemograman PHP
PHP (Hypertext Preprocessor) adalah bahasa computer yang dibuat untuk pengembangan web dinamis. Pada umumnya PHP digunakan di server namun juga dapat berdiri sendiri sebagai aplikasi graphical (www.php.net, 2008).
Penggunaan PHP dan MySQL dipilih karena PHP dan MySQL memiliki beberapa kelebihan seperti dinyatakan oleh Nugroho (2008) kelebihan nya sebagai berikut: 1. Bahasa pemograman PHP adalah sebuah bahasa script yang tidak melakukan sebuah kompilasi dalam penggunaannya. 2. Web Server yang mendukung PHP dapat ditemukan dimana-mana dari mulai IIS sampai dengan Apache dengan konfigurasi yang relatif mudah. 3. Dalam sisi pengembangan lebih mudah, karena banyaknya milis milis dan developer yang siap membantu dalam pengembangan. 4. Dalam sisi pemahaman, PHP adalah bahasa scripting yang paling mudah karena referensi yang banyak. 5. PHP adalah bahasa opensource yang dapat digunakan di berbagai mesin (Linux, Unix, Windows) dan dapat dijalankan secara runtime melalui console serta juga dapat menjalankan perintah-perintah sistem.
Universitas Sumatera Utara
31
Sedangkan database MySQL memiliki beberapa kelebihan, yaitu: 1. Portability MySQL dapat berjalan stabil pada berbagai sistem operasi seperti Windows, Linux, FreeBSD, Mac Os X Server, Solaris, Amiga dan masih banyak lagi. 2. Open Source MySQL dapat didistribusikan secara open source (gratis), dibawah lisensi GPL sehingga dapat digunakan secara cuma- cuma. 3. Multiuser MySQL dapat digunakan oleh beberapa user dalam waktu yang bersamaan tanpa mengalami masalah atau konflik. 4. Performance tuning MySQL memiliki kecepatan yang menakjubkan dalam menangani query sederhana, dengan kata lain dapat meproses lebih banyak SQL per satuan waktu. 5. Column types MySQL memiliki tipe kolom yang sangat kompleks, seperti signed/ unsigned integer, float, double, char, text, date, timestamp, dan lain-lain. 6. Command dan functions MySQL memiliki operator dan fungsi secara penuh yang mendukung perintah Select dan Where dalam query. 7. Security MySQL memiliki beberapa lapisan sekuritas seperti level subnetmask, nama host, dan izin akses user dengan sistem perizinan yang perizinan yang mendetail serta password terenkripsi. 8. Scalability dan limits MySQL mampu mengani database dalam skala besar, dengan jumlah records lebih dari 50 juta dan 60 juta ribu serta 5 milyar baris. Selain itu batas indeks yang dapat ditampung mencapai 32 indeks pada tiap tabelnya. 9. Connectivity MySQL dapat melakukan koneksi dengan client menggunakan protocol TCP/IP, Unix soket (UNIX), atau Named Pipes (NT).
Universitas Sumatera Utara
32
10. Localization MySQL dapat mendeteksi pesan kesalahan pada client dengan menggunakan lebih dari dua puluh bahasa. Meskipun demikian, bahasa Indonesia belum termasuk di dalamnya. 11. Interface MySQL memiliki interface (antar muka) terhadap berbagai aplikasi dan bahasa pemograman dengan menggunakan fungsi API (Application Programming Interface). 12. Clients dan tools MySQL dilengkapi dengan berbagai tool yang dapat digunakan untuk adminsitrasi database, dan pada setiap tool yang ada disertakan petunjuk online. 13. Struktur Tabel MySQL memiliki struktur table yang lebih fleksibel dalam menangani ALTER TABLE, dibandingkan database lainnya semacam PostgreSQL ataupun Oracle.
Universitas Sumatera Utara