ANALISIS DAN IMPLEMENTASI E-VOTING SYSTEM PADA PEMILIHAN KEPALA

Download Pada penelitian ini dirancang protokol dan simulasi sistem e-voting pada pemilihan kepala daerah. Fungsi-fungsi pada sistem ini ... menunju...

0 downloads 313 Views 1MB Size
ANALISIS DAN IMPLEMENTASI E-VOTING VOTING SYSTEM PADA PEMILIHAN KEPALA DAERAH

MUHAMMAD FIKRI ISNAINI

DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2009

ANALISIS DAN IMPLEMENTASI E-VOTING SYSTEM PADA PEMILIHAN KEPALA DAERAH

Skripsi Sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor

MUHAMMAD FIKRI ISNAINI G64104034

DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR BOGOR 2009

ii

Judul : Analisis dan Implementasi E-Voting System pada Pemilihan Kepala Daerah Nama : Muhammad Fikri Isnaini NIM : G64104034

Menyetujui:

Pembimbing I,

Pembimbing II,

Shelvie Nidya Neyman, S.Kom, M.Si NIP 132 311 916

Dr. Ir. Sri Nurdiati, M.Sc NIP 131 578 805

Mengetahui: Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor

Dr. Drh. Hasim, DEA NIP 131 578 806

Tanggal Lulus:

i

ABSTRAK MUHAMMAD FIKRI ISNAINI. Analisis dan Implementasi E-Voting System pada Pemilihan Kepala Daerah. Dibimbing oleh SHELVIE NIDYA NEYMAN dan SRI NURDIATI. Pada penelitian ini dirancang protokol dan simulasi sistem e-voting pada pemilihan kepala daerah. Fungsi-fungsi pada sistem ini disesuaikan dengan skema e-voting yang harus memenuhi beberapa kriteria, yaitu Eligibility, Unreusability, Anonymity, Accuracy, Fairness, Vote and Go, dan Public Verifiability. Protokol yang dibuat dalam penelitian ini adalah untuk sistem pendaftaran pemilih, validasi dan pengaktifan pemilih, sistem pemilihan, dan sistem perhitungan suara. Untuk menjaga keamanan dan kerahasiaan data, sistem e-voting ini menggunakan algoritme kunci publik dan algoritme kunci simetri. Hasil dari penelitian ini adalah sebuah sistem e-voting berbasis web yang berjalan pada jaringan komputer yang memenuhi kriteria dari skema e-voting. Hasil penelitian ini menunjukkan bahwa e-voting dapat mempercepat proses perhitungan suara dan menghilangkan kesalahan perhitungan yang dapat terjadi jika dilakukan secara manual oleh manusia. Kata kunci: voting, electronic voting (e-voting), algoritme kunci publik, algoritme kunci simetri, pemilihan kepala daerah

i

RIWAYAT HIDUP Penulis dilahirkan di Jakarta pada tanggal 12 September 1985, dari pasangan Rusdi dan Mardianah. Penulis merupakan putra kedua dari lima bersaudara. Pada tahun 1998, penulis lulus dari SD Negeri 13 Jakarta, lalu pada tahun yang sama melanjutkan pendidikan di SLTP NEGERI 38 Jakarta. Pada tahun 2001, penulis lulus dari SLTP dan melanjutkan sekolah di SMU Negeri 63 Jakarta hingga tahun 2004. Pada tahun yang sama penulis berkesempatan untuk melanjutkan studinya di Institut Pertanian Bogor (IPB) melalui jalur Undangan Seleksi Masuk IPB (USMI) sebagai mahasiswa S1 Departemen Ilmu Komputer, Fakultas Matematika dan Ilmu Pengetahuan Alam (FMIPA). Selama di IPB, penulis aktif dalam kegiatan kemahasiswaan, pada tingkat pertama tahun 2004 penulis aktif sebagai staf Research and Development Himpunan Mahasiswa Ilmu Komputer (HIMALKOM) periode 2004/2005. Di periode kepengurusan HIMALKOM selanjutnya, yaitu 2005/2006 penulis dipercaya sebagai Ketua Umum HIMALKOM dan tahun berikutnya diamanahkan sebagai Ketua Umum Badan Eksekutif Mahasiswa (BEM) FMIPA periode 2006/2007 setelah melalui proses Pemilihan Raya (Pemira) BEM FMIPA IPB dan mendapat perolehan suara terbanyak. Penulis juga mendapatkan beasiswa Peningkatan Prestasi Akademik (PPA) dari IPB sejak semester pertama sampai keenam. Pada semester ketujuh penulis mendapatkan beasiswa unggulan aktivis dari Dikti yang merupakan beasiswa pertukaran pelajar. Beasiswa ini dilaksanakan pada tanggal 28 Juli sampai 10 Agustus 2008 dengan memberangkatkan 23 mahasiswa penerima beasiswa ini ke Universiti Malaysia Sabah (UMS) di Malaysia. Pada tahun 2007 penulis melaksanakan kegiatan praktik kerja lapangan di Badan Pemerikasa Keuangan (BPK) RI selama dua bulan. Di aktifitas akademik penulis pernah menjadi asisten praktikum Algoritme dan Pemrograman pada tahun 2006 dan 2007 dan asisten praktikum Rekayasa Perangkat Lunak (RPL) pada tahun 2007 di Departemen Ilmu Komputer IPB.

ii

PRAKATA Alhamdulillahi Rabbil ‘alamin, puji dan syukur penulis panjatkan kepada Allah Subhanahu Wa Ta’ala atas segala curahan rahmat dan karunia-Nya sehingga tugas akhir ini dapat diselesaikan. Shalawat beriring salam senantiasa tercurah kepada Rasulullah Muhammad Sholallahu ‘Alaihi Wasallam. Melalui tugas akhir ini yang berjudul Analisis dan Implementasi E-voting System pada Pemilihan Kepala Daerah, penulis ingin memberikan penghargaan dan ucapan terimakasih kepada kedua orangtua tercinta yang senantiasa memberikan sokongan, nasihat, dan doa kepada penulis sehingga dapat meningkatkan semangat untuk segera menyelesaikan tugas akhir ini. Tidak lupa penulis ucapkan terimakasih kepada Ibu Shelvie S Neyman, S.Kom, M.Si selaku Pembimbing I yang telah memberikan arahan dan bimbingan kepada penulis dalam menyelesaikan sistem evoting yang dibuat untuk tugas akhir ini. Juga kepada Ibu Dr. Ir. Sri Nurdiati, M.Sc selaku Pembimbing II yang senantiasa memberikan bimbingan dan nasihat kepada penulis sehingga tetap bersemangat dalam menyelesaikan tugas akhir ini. Terimakasih juga penulis sampaikan kepada teman-teman tercinta mahasiswa ilmu komputer IPB khususnya angkatan 41 khususnya Yaghi, Ardi, Bayu, Alvira, Nur, Ajeng, temanteman di wisma cemara dan mangrove dan yang lainnya yang tidak bisa disebutkan satu per satu. Teman-teman seperjuangan di Badan Eksekutif Mahasiswa FMIPA IPB khususnya Faris, Nidia, Yuyun, Cucu dan yang lainnya juga teman-teman DPM FMIPA IPB khususnya Reza, Novera, Riski, dan yang lainnya yang tidak bisa disebutkan satu per satu. Teman-teman di komsat KAMMI IPB yang selama dua tahun penulis tinggal di sana. Tidak lupa juga kepada teman-teman beasiswa unggulan aktivis yang menjalin ukhuwah yang kuat ketika keberangkatan ke Malaysia khususnya Amal sebagai ketua rombongan, Yogi, Cahyo, dan Henri yang merupakan teman sekamar di Malaysia, Vyta yang senantiasa memberi tausyiah dan mengingatkan penelitian serta teman-teman yang lain yang selalu ceria dalam suka duka. Kepada adik-adik kelas di BEM, DPM FMIPA, dan HIMALKOM khususnya Siti, Cici, Deni, Obi, Imam, Puspa, Desca, Roni, Atul. Juga kepada Amin, Romzie, Farid, Fajrin dan yang lainnya yang selalu menyediakan tempat untuk menginap di Bogor ketika penulis sudah tidak ada tempat kos lagi di Bogor. Kepada temen-temen di Al-Ihsan, yaitu Didik, Hendro, Ihsan, Helmi, Eval, Irul, dan Rizal. Seluruh staf pengajar yang telah menyampaikan banyak ilmu dan pelajaran kepada penulis selama menuntut ilmu di Departemen Ilmu Komputer IPB. Kepada staf administrasi dan perpustakaan Departemen Ilmu Komputer yang memberikan kemudahan dalam mengurus berbagai macam administrasi baik perkuliahan, ujian, dan lainnya, serta pihak-pihak lain yang tidak dapat disebutkan satu-persatu. Akhir kata penulis berharap semoga karya ilmiah ini dapat bermanfaat baik untuk penulis pribadi maupun yang membacanya.

Bogor, Januari 2009

Muhammad Fikri Isnaini

iii

DAFTAR ISI Halaman DAFTAR TABEL ............................................................................................................................. v DAFTAR GAMBAR......................................................................................................................... v DAFTAR LAMPIRAN ..................................................................................................................... v PENDAHULUAN ............................................................................................................................. 1 Latar Belakang ............................................................................................................................... 1 Tujuan ............................................................................................................................................ 1 Ruang Lingkup .............................................................................................................................. 1 Manfaat Penelitian ......................................................................................................................... 1 TINJAUAN PUSTAKA .................................................................................................................... 2 E-voting ......................................................................................................................................... 2 Skema E-voting ............................................................................................................................. 2 Algoritme Kunci Publik ................................................................................................................ 2 Algoritme RSA .............................................................................................................................. 2 Algoritme Kunci Simetri ............................................................................................................... 2 Algoritme Twofish ......................................................................................................................... 3 Fungsi Hash ................................................................................................................................... 3 Captcha.......................................................................................................................................... 3 METODE PENELITIAN .................................................................................................................. 3 Perencanaan ................................................................................................................................... 3 Analisis Sistem .............................................................................................................................. 3 Desain Sistem ................................................................................................................................ 4 Implementasi ................................................................................................................................. 5 Penggunaan dan Pengujian Sistem ................................................................................................ 5 HASIL DAN PEMBAHASAN ......................................................................................................... 5 Analisis Kebutuhan ....................................................................................................................... 5 Perancangan Sistem ....................................................................................................................... 6 Perancangan Basis Data ................................................................................................................ 9 Implementasi Sistem ................................................................................................................... 10 Keamanan Sistem ........................................................................................................................ 14 Kelemahan Sistem ....................................................................................................................... 15 Pengujian ..................................................................................................................................... 16 KESIMPULAN DAN SARAN ....................................................................................................... 16 Kesimpulan .................................................................................................................................. 16 Saran ............................................................................................................................................ 16 DAFTAR PUSTAKA ...................................................................................................................... 16 LAMPIRAN .................................................................................................................................... 17

iv

DAFTAR TABEL Halaman 1 Basis Data di TPS dan Kelurahan ...................................................................................................9 2 Basis Data di Pusat ........................................................................................................................10

DAFTAR GAMBAR Halaman 1 Metode pengembangan SLC. ..........................................................................................................3 2 ERD basis data pusat. ......................................................................................................................6 3 ERD basis data kelurahan dan TPS. ................................................................................................6 4 Flowchart pendaftaran pemilih. ......................................................................................................7 5 Flowchart validasi dan pengaktifan pemilih. ..................................................................................7 6 Flowchart login ke sistem e-voting. ................................................................................................8 7 Flowchart sistem pemilihan. ...........................................................................................................8 8 Flowchart sistem perhitungan suara di kelurahan. ..........................................................................9 9 Flowchart sistem perhitungan suara total. .......................................................................................9 10 Halaman pendaftaran pemilih. .....................................................................................................10 11 Fungsi pendaftaran pemilih dalam bahasa PHP. .........................................................................10 12 Menu pengaktifan pemilih. ..........................................................................................................11 13 Halaman edit pemilih. .................................................................................................................11 14 Fungsi edit pemilih dalam bahasa PHP. ......................................................................................11 15 Halaman login. ............................................................................................................................11 16 Fungsi login dalam bahasa PHP. .................................................................................................12 17 Halaman pemilihan. .....................................................................................................................12 18 Fungsi pemilihan dalam bahasa PHP. .........................................................................................12 19 Pilihan pemilih.............................................................................................................................13 20 Halaman perhitungan suara di TPS. ............................................................................................13 21 File enkripsi hasil perhitungan di TPS ........................................................................................13 22 Dekripsi hasil perhitungan suara dari TPS ..................................................................................13 23 Halaman hasil perhitungan di kelurahan .....................................................................................13 24 Fungsi pengiriman hasil perhitungan. .........................................................................................13 25 Halaman hasil perhitungan suara total dan tiap kelurahan. .........................................................14 26 Fungsi pengecekan login pemilih menggunakan session. ...........................................................14 27 Fungsi pengecekan login administrator menggunakan session. .................................................15

DAFTAR LAMPIRAN Halaman 1 Tabel basis data e-voting ...............................................................................................................18 2 Implementasi Algoritme Kunci Publik dan Kunci Simetri ...........................................................21 3 Black Box Testing ..........................................................................................................................26

v

PENDAHULUAN Latar Belakang Voting telah menjadi salah satu metode untuk mengambil keputusan penting dalam kehidupan manusia. Voting digunakan mulai tingkat masyarakat terkecil, yaitu keluarga, sampai dengan sebuah negara. Dalam negara yang menerapkan sistem politik demokrasi, voting digunakan untuk mengambil keputusan negara yang sangat krusial, antara lain adalah untuk memilih wakil-wakil rakyat, atau untuk memilih pemimpin negara yang baru. Akan tetapi, tidak seluruh warga negara dapat memberikan suara mereka dalam voting. Terdapat beberapa persyaratan yang harus dipenuhi oleh warga negara tersebut untuk mendapatkan haknya, dan negara wajib untuk melindungi warga negara tersebut dalam memberikan suaranya. Oleh karena itu, voting membutuhkan prosedur pelaksanaan yang dapat menjamin kerahasiaan dan keabsahan dari hasil pelaksanaan voting tersebut. Perkembangan teknologi informasi saat ini telah membawa perubahan yang besar bagi manusia, termasuk cara untuk melaksanakan voting. Penggunaan teknologi komputer pada pelaksanaan voting ini dikenal dengan istilah electronic voting atau lazim disebut dengan evoting. Perkembangan teknologi e-voting telah menjadi isu yang hangat dibicarakan di negara-negara maju, hal ini disebabkan oleh kelebihan dari sistem e-voting dibandingkan pemilihan menggunakan kertas suara yang biasa dilakukan. Walaupun demikian, e-voting juga memiliki kelemahan. Pemilihan menggunakan kertas suara (Papper Ballots) adalah sistem yang pertama kali digunakan untuk melakukan pemilihan umum. Pemilih mengambil kertas suara yang telah ditandai (sebagai bukti sahnya kertas suara), lalu pemilih tinggal memilih calon yang ada pada kertas suara yang biasanya dilakukan dengan mencoblos. Pemilih lalu memasukkan hasil pilihannya ke kotak suara dan panitia melakukan perhitungan suara secara manual lalu mengirimkannya ke pusat perhitungan suara yang juga dihitung secara manual. Pemilihan dengan metode ini membutuhkan banyak waktu, tenaga, dan sumber daya manusia yang dikerahkan. Di sisi lain juga ada faktor kesalahan manusia (human error) dalam melakukan perhitungan suara dan kecurangan seperti manipulasi

kertas suara dalam perjalanan pengiriman kertas suara ke tempat perhitungan pusat. Pada sistem e-voting penggunaan kertas sudah diminimalkan karena sistem ini sudah berbasis teknologi digital. Setelah mendaftar, pada saat pemilihan pemilih hanya menunjukkan tanda pemilih lalu login menggunakan id dan password masingmasing, setelah itu pemilih melakukan pemilihan calon hanya dengan melakukan klik pada pilihan yang disediakan sistem ini, lalu sistem akan menghitung pilihannya secara digital. Untuk perhitungan total pun dilakukan oleh sistem secara digital menggunakan fungsi aritmatika sederhana, yaitu penjumlahan yang dapat dilakukan dalam hitungan detik. Dengan sistem e-voting sudah melakukan efisiensi waktu dan tenaga yang digunakan dalam melakukan perhitungan suara. Algoritme kunci publik merupakan salah satu teknik kriptografi yang dapat melakukan enkripsi dan dekripsi data serta penandaan digital. Penggunaan algoritme kunci publik pada sistem e-voting untuk melakukan enkripsi pada data untuk menjaga keamanan dan kerahasiaan data. Tujuan Tujuan penelitian ini adalah: 1. Mengembangkan protokol e-voting berdasarkan skema e-voting. 2. Mengimplementasikan algoritme kunci publik dan kunci simetri pada sistem evoting. 3. Melakukan simulasi sederhana sistem evoting pada pemilihan kepala daerah. Ruang Lingkup Ruang lingkup penelitian dibatasi pada pembuatan protokol sistem e-voting berdasarkan skema e-voting dengan mengimplementasikan algoritme kunci publik dan kunci simetri di dalamnya menggunakan bahasa pemrograman PHP. Manfaat Penelitian Penelitian dilakukan untuk menerapkan skema e-voting dan peningkatan keamanan sistem. Diharapkan penelitian ini bermanfaat untuk melakukan pemilihan (voting) secara digital sehingga mempermudah dalam melakukan perhitungan suara dan efisiensi waktu yang digunakan serta meningkatkan keamanan dari sistem e-voting.

1

TINJAUAN PUSTAKA E-voting Pengertian dari electronic voting (e-voting) secara umum adalah penggunaan teknologi komputer pada pelaksanaan voting. Pilihan teknologi yang digunakan dalam implementasi dari e-voting sangat bervariasi, seperti penggunaan smart card untuk autentikasi pemilih, penggunaan internet sebagai sistem pemungutan suara, penggunaan touch screen sebagai pengganti kartu suara, dan masih banyak variasi teknologi yang digunakan (Azhari 2005). Skema E-voting Skema e-voting adalah satu set protokol yang menjaga keamanan atau kerahasiaan pemilih dalam melakukan pemilihan serta interaksi dengan penitia pemilihan dan perhitungan suara. E-voting biasanya dibedakan menjadi dua tipe, yaitu online (misalnya via internet) dan offline (menggunakan mesin perhitungan suara atau kertas suara). Tujuan dari keamanan sistem e-voting adalah untuk menjamin privasi atau kerahasiaan pemilih dan keakuratan pilihan. Keamanan sistem ini memiliki beberapa kriteria, yaitu: 1. Eligibility: hanya pemilih yang terdaftar yang dapat melakukan pemilihan. 2. Unreusability: setiap pemilih hanya bisa memberikan satu kali pilihan. 3. Anonymity: pilihan pemilih dirahasiakan 4. Accuracy: pilihan tidak bisa diubah atau dihapus selama atau setelah pemilihan dan juga tidak bisa ditambahkan setelah pemilihan ditutup. 5. Fairness: perhitungan suara sebelum pemilihan ditutup tidak bisa dilakukan 6. Vote and Go: pemilih hanya dapat melakukan pemilihan saja. 7. Public Verifiability: setiap orang dapat melakukan pengecekan pada berjalannya proses pemilihan (Canard & Sibert 2001). Algoritme Kunci Publik Diberikan skema enkripsi terdiri dari himpunan transformasi enkripsi dan dekripsi {Ee /e Є K} dan {Dd /d Є K}. Metode enkripsi disebut dengan skema enkripsi kunci publik jika untuk setiap pasangan kunci (e,d), satu kunci e dibuat tersedia untuk umum (publik) dan kunci pasangannya d dibuat untuk pribadi dan dijaga kerahasiaannya. Skema tersebut

dikatakan aman, jika secara perhitungan taklayak menentukan d dari e (Guritman 2003). Algoritme RSA Algoritme RSA ditemukan oleh Ron Rivest, Adi Shamir, dan Len Adleman. Algoritme ini pertama kali diperkenalkan pada bulan Agustus 1977. Sistem kriptografi ini banyak digunakan untuk memberikan privasi dan menjamin autentikasi data digital. Saat ini RSA telah dikembangkan oleh banyak sistem komersial. RSA digunakan oleh web server dan browser untuk keamanan lalu-lintas data pada web. RSA juga digunakan untuk menjamin privasi dan autentikasi e-mail, untuk keamanan remote login session, dan bagian utama dari sistem pembayaran kartu kredit elekronik. Dengan kata lain RSA banyak digunakan untuk aplikasi yang membutuhkan keamanan data digital (Boneh 1999). Deskripsi sederhana dari algoritme RSA sebagai berikut, berikan N = pq dengan p dan q adalah dua buah bilangan prima besar dengan ukuran yang sama (n/2 bits misalnya). Berikan nilai e dan d dengan ketentuan ed = 1 mod φ(N) dan φ(N) = (p-1)(q-1). N adalah RSA modulus, e adalah encryption exponent, dan d adalah decryption exponent. (N,e) adalah kunci publik yang digunakan untuk enkripsi pesan. (N,d) adalah kunci rahasia atau kunci privat yang digunakan untuk mendekripsi ciphertext atau pesan yang telah dienkripsi ke pesan sebenarnya (Boneh 1999). Pesan adalah bilangan integer M, untuk mengenkripsi M menggunakan cara e C = M mod N. Untuk mendekripsi ciphertext d digunakan perhitungan M = C mod N d ed dengan C = M = M (mod N) (Boneh 1999). Algoritme Kunci Simetri Suatu skema enkripsi disebut enkripsi kunci simetri, jika untuk setiap pasangan kunci enkripsi dan dekripsi (e,d), secara komputasi d “mudah” dihitung apabila e diketahui, dan e “mudah” dihitung apabila d diketahui. Karena di dalam praktik paling sering kali digunakan bahwa d = e, maka enkripsi kunci simetri disebut juga dengan enkripsi satu kunci, kunci tunggal, kunci pribadi, atau konvensional (Guritman 2003).

2

Algoritme Twofish Twofish merupakan 128-bit blok sandi yang bisa menerima panjang variabel kunci hingga 256 bit. Sandi tersebut berasal dari 16round jaringan Feitsel dengan fungsi bijektif F yang dilanjutkan dengan empat keydependent 8-by-8-bit S-boxes, satu fixed 4-by4 jarak maksimum yang dapat dipisahkan di atas matriks GF(28), satu pseudo-Hadamard transform, satu rotasi bitwise, dan satu desain key schedule. Twofish dapat diimplementasikan pada perangkat keras dengan 14000 gerbang. Desain fungsi round dan penjadwalan kunci mengakibatkan adanya tradeoffs antara kecepatan, ukuran perangkat lunak, waktu setup key, jumlah gerbang, dan memori (Schneier et al 1998) .

sekalipun. Captcha hanya mengandung informasi tersembunyi dalam jumlah yang kecil dengan menggunakan tes yang acak (Ahn 2004).

METODE PENELITIAN Metode yang digunakan untuk implementasi e-voting system ini adalah System Life Cycle (SLC). Berdasarkan McLeod (2004) System Life Cycle (SLC) terdiri dari fase perencanaan, analisis sistem, desain sistem, implementasi, pengujian, evaluasi, dan penggunaan.

Fungsi Hash Fungsi hash adalah fungsi yang secara komputasi efisien memetakan bitsring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut nilai-hash (hashvalue). Untuk fungsi hash dengan output nilaihash n-bit, probabilitas pemilihan string secara random yang dipetakan ke nilai-hash -n n-bit adalah 2 . Berdasarkan definisi tersebut, ide dasar dari fungsi hash adalah membuat string input menjadi teratur rapat dengan panjang seragam. Terkait dengan kegunaan kriptografi, fungsi hash h dipilih sedemikian sehingga secara komputasi tak-layak menentukan input berbeda x dan y sehingga h(x) = h(y) (Guritman 2003). Captcha Captcha biasa digunakan oleh Yahoo, Hotmail, Paypal, dan banyak website yang populer menggunakannya untuk mencegah pendaftaran secara otomatis. Hal ini bekerja karena tidak ada program komputer yang bisa membaca susunan teks seperti manusia. Captcha bukan sekedar gambar dengan susunan teks, ia adalah tes atau banyak tes yang dapat berubah secara otomatis yang sebagian besar orang dapat melaluinya, tetapi program komputer saat ini tidak bisa melaluinya (Ahn 2004). Captcha singkatan dari Completely Automated Public Turing Test to Tell Computers and Humans Apart. P untuk Public berarti kode dan data yang digunakan captcha sehingga orang bisa membacanya. Captcha adalah jaminan keamanan, ini menyulitkan seseorang untuk membuat program komputer yang dapat melewati tes dari captcha walaupun dia tahu cara kerja captcha

Gambar 1 Metode pengembangan SLC. Perencanaan Tahap ini merupakan tahap pengumpulan data mengenai sistem pemilihan (voting) dan sistem pemilihan elektronik (e-voting). Data sistem pemilihan diambil dari sistem pemilihan kepala daerah (Pilkada). Data yang diambil adalah mengenai pasangan calon pada Pilkada seperti daftar pasangan calon, partai pengusung, dan visi dan misi pasangan calon yang dijadikan rujukan dalam merancang desain sistem dan basis data. Selanjutnya adalah pencarian data literatur mengenai sistem e-voting yang akan digunakan untuk merancang sistem yang akan dibuat. Analisis Sistem Analisis sistem meliputi identifikasi input, proses, serta output pada sistem e-voting. Input yang dibutuhkan bisa berupa nomor Kartu Tanda Penduduk (KTP) pemilih, password, maupun pilihan dari pemilih. Analisis proses merupakan pendefinisian dari skema sistem e-voting dalam bentuk fungsi-fungsi yang akan digunakan dalam

3

sistem yang akan mengolah input dari pemilih yang akan menghasilkan suatu output baik untuk sistem maupun output untuk pemilih. Proses di sini juga meliputi fungsi untuk keamanan sistem seperti penggunaan algoritme kunci publik dan kunci simetri untuk autentikasi pemilih, sistem perhitungan suara, pengiriman perhitungan suara, serta fungsi-fungsi untuk manajemen sistem. Output merupakan keluaran yang dihasilkan dari sistem yang melalui proses berdasarkan fungsi-fungsi yang digunakan dan input dari pemilih. Output dapat berupa keluaran atau informasi kepada pemilih atau berupa data yang akan kembali diolah oleh sistem. Pada tahap ini juga dilakukan analisis untuk perancangan basis data sistem seperti perancangan data diri pemilih yang dibuat berdasarkan KTP pemilih. Basis data juga disusun berdasarkan skema e-voting yang digunakan. Sistem yang akan dikembangkan adalah sistem berbasis web yang dapat diakses oleh pemilih melalui penjelajah situs yang terhubung dengan jaringan yang dibentuk oleh panitia pemilihan. Sistem ini dibangun menggunakan bahasa pemrograman web PHP dan AJAX dengan Database Management System (DBMS) MySQL. Sistem e-voting ini dapat diterapkan dengan asumsi bahwa masyarakat telah memiliki pengetahuan dasar tentang komputer dan internet dan nomor KTP mempunyai nilai yang unik atau berbeda satu dengan yang lainnya. Di sisi penyelenggara pemilihan harus memenuhi kebutuhan infrastruktur dari sistem ini seperti ketersediaan komputer baik untuk client maupun server di pusat, kelurahan, dan juga Tempat Pemungutan Suara (TPS).

menggunakan algoritme kunci publik. Untuk kunci privat sistem akan mengenkripsinya menggunakan algoritme kunci simetri dengan password yang diberikan pemilih. Setelah melakukan pendaftaran pemilih akan mendapatkan kartu pemilih dari kelurahan jika data yang diberikan pemilih dinyatakan valid. Nomor KTP dan password digunakan pemilih untuk masuk ke dalam sistem e-voting (login) untuk melakukan pemilihan kepala daerah. Input captcha dilakukan pada saat pemilih melakukan pendaftaran, login, dan melakukan pilihan pada pasangan calon. 2. Desain output Desain output pada sistem ini terdiri dari informasi calon Bupati dan Wakil Bupati pada Pilkada, informasi pilihan pemilih, dan informasi hasil perhitungan suara. Pemilih dapat melihat informasi calon berupa nama, visi dan misi, serta partai pengusung calon. Informasi pilihan pemilih hanya dapat dilihat setelah pemilih melakukan pemilihan, sedangkan informasi hasil perhitungan dapat dilihat setelah pemilihan selesai dilakukan. Hasil pemilihan terbagi menjadi dua, yaitu hasil pemilihan total dan hasil pemilihan per kelurahan. 3. Desain basis data Desain basis data yang disusun berupa tabel-tabel yang dibutuhkan oleh sistem berdasarkan skema e-voting. Tabel basis data pemilih disusun berdasarkan field pada KTP pemilih. Basis data terdiri dari dua bagian, yaitu basis data pada kelurahan yang berisi data pemilih dan hasil perhitungan pada kelurahan tesebut dan basis data pusat yang digunakan untuk perhitungan suara total. Data perhitungan pusat diambil dari basis data tiap kelurahan.

Desain Sistem

4. Desain fungsi atau proses

Desain dari sistem e-voting berdasarkan analisis yang dilakukan terdiri dari:

Desain proses menggambarkan urutan perintah yang dilakukan oleh sistem pada tiap input pemilih maupun fungsi-fungsi yang ada. Desain fungsi ini terdiri dari pendaftaran pemilih, pengaktifan pemilih, login atau fungsi untuk masuk dalam sistem e-voting, captcha, pemilihan calon, perhitungan, serta fungsi enkripsi-dekripsi yang merupakan fungsi utama sistem untuk keamanan data. Fungsi enkripsi-dekripsi menggunakan dua algoritme, yaitu algoritme kunci publik dan kunci simetri.

1. Desain input Desain input pada sistem ini terdiri dari input data diri pemilih, nomor KTP dan password, captcha, dan pilihan pemilih. Input data diri pemilih dilakukan pada saat pendaftaran pemilih. Pada tahap ini setelah pemilih melakukan pendaftaran dengan mengisi data diri, sistem akan memberikan kunci publik, kunci privat, dan modulo secara acak yang akan disimpan dalam basis data

4

Implementasi Implementasi pada sistem e-voting ini dilakukan menggunakan bahasa pemrograman PHP dan AJAX dengan MySQL sebagai basis datanya. Lingkungan implementasi yang digunakan adalah sebagai berikut:  Perangkat lunak: Microsoft ® Windows XP SP 2, WampServer 2.0, PHP 5.2.6, MySQL 5.0.51b, Apache 2.2.8, Firefox 3.0.4, dan Notepad++ v5.1.1  Perangkat keras: Prosesor AMD Turion64 X2 2.0 GHz, Memori 1,5 GB DDR2, hardisk 80 GB, keyboard, mouse, dan monitor.

d.

e.

f.

Penggunaan dan Pengujian Sistem Pengujian dilakukan untuk mendeteksi kesalahan serta memastikan setiap input yang dimasukkan menghasilkan output yang diharapkan. Pengujian yang akan dilakukan menggunakan metode black box.

HASIL DAN PEMBAHASAN Analisis Kebutuhan Pada tahap ini dilakukan analisis terhadap kebutuhan sistem dari data dan literatur yang didapat dengan hasil sebagai berikut: 1. Hasil analisis skema e-voting Berdasarkan paper yang ditulis Canard & Sibert (2001), sistem e-voting harus memenuhi beberapa kriteria dengan tujuan keamanan sistem dan kerahasiaan pemilih. Pada penelitian ini, sistem e-voting yang dibuat sudah memenuhi kriteria sebagai berikut: a. Hanya pemilih yang sudah melakukan pendaftaran dan telah divalidasi dan dipengaktifan pendaftarannya oleh panitia pemilihan yang dapat masuk ke sistem evoting dan melakukan pemilihan kepala daerah. b. Setiap pemilih yang sudah melakukan pemilihan tidak dapat melakukan pemilihan lagi atau memperbaiki pilihannya. Pemilih hanya dapat memberikan satu kali pilihannya pada satu pasangan calon. c. Pilihan dari pemilih dirahasiakan. Setelah melakukan pemilihan, hasil pilihan pemilih dienkripsi menggunakan algoritme RSA dengan kunci publik pemilih dan disimpan dalam basis data. Hanya pemilih yang tahu pilihannnya

g.

dengan mendekripsi pilihannya menggunakan kunci privat. Pemilihan baru bisa dilakukan pada jangka waktu yang sudah ditentukan panitia. Setelah melakukan pemilihan, pemilih tidak dapat melakukan pemilihan lagi atau mengganti pilihannya. Perhitungan suara tidak dapat dilakukan sebelum pemilihan selesai. Setelah pemilihan selesai, panitia masing-masing kelurahan mengirimkan hasil perhitungan di tempatnya ke pusat perhitungan dengan mengenkripsi data perhitungan yang dikirimkan. Pemilih hanya dapat melakukan pemilihan saja. Pemilih tidak dapat mengubah data calon, waktu pemilihan, dan data dirinya. Setiap pemilih dapat mengecek kembali pilihannya dengan memasukkan password ke sistem, setelah itu pilihan pemilih akan ditampilkan. Pemilih juga dapat melihat langsung hasil pemilihan setelah pemilihan selesai.

Pada sistem ini, setiap pemilih diberikan kartu pemilih ketika pendaftaran yang dilakukan benar dan dinyatakan valid oleh panitia pemilihan. Kartu pemilih akan digunakan ketika akan melakukan pemilihan pada tempat yang sudah ditentukan oleh panitia sebagai bukti bahwa pemilih sudah terdaftar dengan benar. 2. Deskripsi umum sistem Sistem e-voting ini adalah sistem berbasis web dengan tiga modul utama, yaitu: a. Modul pendaftaran pemilih Modul ini digunakan untuk pendaftaran pemilih, pengaktifan pemilih, dan pemberian kartu pemilih. b. Modul pemilihan Modul ini merupakan modul utama pada sistem. Pada modul ini terdapat sistem pemilihan pasangan calon dimana tiap pemilih hanya dapat melakukan satu pilihan dan tidak dapat mengubah pilihannya. Hasil pilihan akan dienkripsi menggunakan algoritme kunci publik dan disimpan dalam basis data. Pada modul ini pun pemilih dapat mengecek kembali hasil pilihannya. Pada modul ini juga terdapat fungsi untuk autentikasi pemilih, dan captcha. c. Modul perhitungan suara Modul ini adalah modul untuk melakukan perhitungan suara. Modul ini terdiri dari dua

5

bagian, yaitu perhitungan suara pada tiap kelurahan dan perhitungan suara total. Perhitungan suara di kelurahan baru dapat dilakukan setelah data perhitungan pada masing-masing TPS dienkripsi terlebih dahulu telah masuk ke basis data di kelurahan. Setelah itu tiap kelurahan mengirimkan hasil perhitungannya ke pusat perhitungan dengan terlebih dahulu mengenkripsi data perhitungan yang akan dikirim.

Pada basis data kelurahan dan TPS disimpan data calon, hasil perhitungan suara, pemilih dan login-nya, dan pilihan dari pemilih. Pada tabel perhitungan disimpan jumlah suara dari calon. Tiap pemilih hanya memiliki satu akun untuk login dan basis data juga menyimpan pilihan dari pemilih dengan syarat tiap pemilih hanya memiliki satu pilihan. ERD dari basis data kelurahan dan TPS dapat dilihat pada Gambar 3.

3. Analisis kebutuhan pengguna Kebutuhan pengguna terhadap aplikasi ini adalah sebagai berikut: a. Terdapat fungsi untuk pendaftaran pemilih sehingga untuk melakukan pemilihan pemilih harus melakukan pendaftaran dengan benar. b. Terdapat fungsi untuk pengaktifan pemilih sehingga hanya pemilih yang datanya valid yang dapat masuk ke sistem evoting. c. Terdapat fungsi autentikasi pemilih sehingga hanya pemilih yang berhak saja yang dapat masuk ke sistem e-voting. d. Terdapat fungsi pemilihan calon yang terjaga keamanan dan kerahasiaannya. e. Terdapat fungsi pengecekan hasil pilihan pemilih oleh pemilih. Pada fungsi ini pemilih memasukkan password untuk mengetahui pilihannya f. Terdapat fungsi perhitungan suara di tiap TPS dan kelurahan. g. Terdapat fungsi perhitungan suara total dari seluruh kelurahan. Pada fungsi ini hasil perhitungan di tiap kelurahan dikirimkan ke pusat perhitungan yang sebelumnya data perhitungan tiap kelurahan dienkripsi terlebih dahulu. Pengguna dari sistem ini adalah pemilih dan panitia pemilihan. 4. Analisis desain basis data sistem Basis data pada sistem e-voting ini dibagi menjadi tiga bagian, yaitu basis data pusat, kelurahan, dan TPS. Pada basis data pusat disimpan data calon, hasil perhitungan suara tiap kelurahan, nama kecamatan, dan nama kelurahan. Tabel hasil perhitungan akan disimpan berdasarkan jumlah suara yang diperoleh calon pada tiap kelurahan. Dalam basis data juga disimpan data kecamatan yang terdiri dari beberapa kelurahan. Entity Relationship Diagram (ERD) untuk basis data pusat dapat dilihat pada Gambar 2.

Gambar 2 ERD basis data pusat.

Gambar 3 ERD basis data kelurahan dan TPS. Desain basis data TPS sama dengan basis data kelurahan, perbedaannya hanya isi basis data TPS yang lebih sedikit. Isi basis data TPS adalah pembagian pemilih berdasarkan tempat pemilih akan memilih sesuai RT dan RW-nya. Jadi pemilih akan melakukan pemilihan di lokasi TPS yang sudah ditentukan oleh panitia. Perancangan Sistem 1. Perancangan Sistem Pendaftaran Pemilih Salah satu kriteria sistem e-voting adalah setiap pemilih yang akan melakukan pemilihan (masuk ke sistem) harus terdaftar di basis data masing-masing kelurahan, oleh karena itu fungsi pertama yang dijalankan oleh sistem adalah fungsi pendaftaran. Hasil dari perancangan sistem pendaftaran pemilih

6

bisa dilihat pada flowchart pemilih pada Gambar 4.

pendaftaran

2. Perancangan Validasi dan Pengaktifan Pemilih Fungsi selanjutnya setelah pendaftaran adalah perancangan untuk validasi dan pengaktifan pemilih. Fungsi ini dijalankan oleh panitia pemilihan yang mengecek data pendaftaran pemilih, jika data valid maka pemilih akan dipengaktifan dan diberikan kartu pemilih yang menandakan pemilih sudah terdaftar dan berhak melakukan pemilihan. Hasil perancangan validasi dan pengaktifan pemilih dapat dilihat pada flowchart validasi dan pengaktifan pemilih pada Gambar 5.

Gambar 4 Flowchart pendaftaran pemilih. Pendaftaran hanya bisa dilakukan pada saat pendaftaran dibuka oleh panitia. Data yang dimasukkan adalah data diri pemilih sesuai dengan KTP pemilih ditambah captcha dan password yang digunakan ketika login. Jika input data lengkap, maka sistem akan membuatkan kunci publik, privat, dan modulo menggunakan algoritme kunci publik. Untuk kunci privat sistem akan melakukan enkripsi menggunakan algoritme kunci simetri menggunakan password yang dimasukkan tadi. Tujuan dari enkripsi ini agar pemilih tidak harus menghafal kunci privat yang diberikan sistem tapi hanya menghafal password yang dimasukkan ketika pendaftaran.

Gambar 5 Flowchart validasi dan pengaktifan pemilih. 3. Perancangan Login ke Sistem Perancangan pada fungsi ini digunakan untuk masuk ke dalam sistem dengan nomor KTP, password pemilih, dan captcha. Setelah login, maka pemilih dapat melakukan pemilihan. Fungsi login ini dilakukan oleh pemilih pada saat pemilihan telah dimulai di masing-masing TPS yang telah ditentukan panitia. Flowchart untuk fungsi login dapat dilihat pada Gambar 6.

7

Gambar 6 Flowchart login ke sistem e-voting. 4. Perancangan Sistem Pemilihan Fungsi ini merupakan fungsi utama dari sistem e-voting dimana sistem ini menggunakan enkripsi-dekripsi algoritme kunci publik dan algoritme kunci simetri. Fungsi ini harus memenuhi kriteria sistem evoting, yaitu pemilih hanya bisa memberikan satu kali pilihannya dan tidak bisa mengubah pilihannya setelah melakukan pemilihan. Pemilihan hanya bisa dilakukan pada waktu yang sudah ditentukan panitia. Fungsi ini digambarkan pada flowchart sistem pemilihan pada Gambar 7.

Gambar 7 Flowchart sistem pemilihan.

8

5. Perancangan Sistem Perhitungan Suara Fungsi perhitungan suara digunakan setelah pemilihan selesai. Fungsi ini ada dua bagian, yaitu fungsi perhitungan suara di kelurahan dan fungsi perhitungan suara pusat atau total. Fungsi perhitungan suara di kelurahan merupakan penjumlahan dari hasil perhitungan suara di masing-masing TPS. Setelah proses pemilihan sistem e-voting di masing-masing TPS akan melakukan perhitungan secara otomatis, lalu jumlah hasil perhitungan di enkripsi dan dikirimkan oleh panitia di TPS ke kelurahan. Di kelurahan sistem e-voting akan mendekripsi hasil perhitungan di TPS yang telah dikirimkan dan menjumlahkannya. Flowchart sistem perhitungan suara di kelurahan dapat dilihat pada Gambar 8.

Gambar 9 Flowchart sistem perhitungan suara total. Perancangan Basis Data Basis data dibagi menjadi dua bagian utama, yaitu basis data pada masing-masing TPS dan kelurahan dan basis data pusat yang digunakan untuk perhitungan suara total. 1. Basis Data di TPS dan Kelurahan Basis data di TPS dan kelurahan memiliki desain yang sama, yaitu terdiri dari enam tabel yang digambarkan pada Tabel 1. Tabel 1 Basis Data di TPS dan Kelurahan Nama Tabel

Gambar 8 Flowchart sistem perhitungan suara di kelurahan. Fungsi perhitungan suara pusat atau total merupakan hasil penjumlahan dari perhitungan suara di masing-masing kelurahan. Setelah perhitungan suara di kelurahan selesai, panitia di kelurahan mengirimkan hasil perhitungan suara yang sudah di enkripsi ke perhitungan pusat. Di sistem e-voting pusat data yang dikirimkan oleh kelurahan akan didekripsi lalu dijumlahkan. Flowchart sistem perhitungan suara total dapat dilihat pada Gambar 9.

Jumlah Kolom

Deskripsi

Calon

7

Tabel yang berisi data pasangan calon

pemilih

13

Tabel yang berisi data pemilih yang diisi pada saat melakukan pendaftaran

Login

8

Tabel yang berisi kunci publik, kunci privat, password, dan modulo pemilih

perhitungan

2

Tabel yang berisi jumlah perhitungan suara tiap pasangan calon pada kelurahan

pilihan

3

Tabel yang berisi pilihan dari pemilih yang dienkripsi oleh kunci publik pemilih

pemilihan

1

Tabel yang berisi status pemilihan untuk membuka atau menutup pemilihan

2. Basis Data di Pusat Basis data di pusat terdiri dari lima tabel yang digambarkan pada Tabel 2.

9

Tabel 2 Basis Data di Pusat Nama Tabel

Jumlah Kolom

… $rsa = generate_keys();

Deskripsi

calon

7

Tabel yang berisi data pasangan calon

kecamatan

2

Tabel yang berisi data kecamatan pada kabupaten Bogor

kelurahan

6

Tabel yang berisi data kelurahan pada tiap kecamatan dan juga berisi nama basis data pada tiap kelurahan

perhitungan

4

Tabel yang berisi hasil perhitungan suara pada masing-masing kelurahan

status_pendaftaran

1

Tabel yang berisi status pendaftaran untuk membuka atau menutup pendaftaran

Deskripsi dari masing-masing tabel pada tiap basis data dapat dilihat pada Lampiran 1. Implementasi Sistem Implementasi sistem e-voting ini menggunakan dua fungsi algoritme yang digunakan oleh fungsi-fungsi lainnya, yaitu algoritme kunci publik dan algoritme kunci simetri. Imlementasi algoritme kunci publik dan simetri dalam bahasa pemrograman PHP dapat dilihat pada Lampiran 2. 1. Implementasi Sistem Pendaftaran Pemilih Halaman untuk pendaftaran pemilih dapat dilihat pada Gambar 10.

$twofish = new TwoFish(); $twofish->makeKey($_POST['password'], $_POST['password']); $encrypt_private_key = $twofish-> encrypt($rsa[2]); $twofish->close(); $tanggal_lahir = "$_POST[tahun_lahir]$_POST[bulan_lahir]-$_POST[tanggal_lahir]"; $password_hash = hash("sha512",md5(encrypt($_POST['password'] ,$_POST['no_ktp']))); $kelurahan_db = mysql_fetch_array(query("select * from kelurahan where kelurahan='$_POST[kelurahan]'")); $insert_db = "insert into pemilih(no_ktp, nama, jenis_kelamin, tempat_lahir, tanggal_lahir, alamat, rt, rw, kelurahan, kecamatan, kotamadya, kode_pos) values ('$_POST[no_ktp]', '$_POST[nama]', '$_POST[jenis_kelamin]', '$_POST[tempat_lahir]', '$tanggal_lahir', '$_POST[alamat]', '$_POST[rt]', '$_POST[rw]', '$_POST[kelurahan]', '$_POST[kecamatan]', '$_POST[kotamadya]', '$_POST[kode_pos]')"; $hasil = registrasi ($insert_db, $kelurahan_db['db_host'], $kelurahan_db['db_name'], $kelurahan_db['db_username'], $kelurahan_db['db_password']); if($hasil) { $id_pemilih = mysql_fetch_array (registrasi("select id, no_ktp from pemilih where no_ktp='$_POST[no_ktp]' and nama='$_POST[nama]' and alamat='$_POST[alamat]'", $kelurahan_db['db_host'], $kelurahan_db['db_name'], $kelurahan_db['db_username'], $kelurahan_db['db_password'])); $insert_db = "insert into login values('$id_pemilih[id]', '$id_pemilih[no_ktp]', '$rsa[0]','$rsa[1]', '$encrypt_private_key', '$password_hash',2,0)"; $hasil2 = registrasi($insert_db, $kelurahan_db['db_host'], $kelurahan_db['db_name'], $kelurahan_db['db_username'], $kelurahan_db['db_password']); if($hasil2) { session_destroy(); echo"Pendaftaran Sukses!"; } else echo"Pendaftaran Gagal!"; } else echo"Pendaftaran Gagal!!";

Gambar 10 Halaman pendaftaran pemilih. Setelah pemilih mengisi form pendaftaran dengan benar, sistem akan mengeksekusi fungsi yang memasukkan data pendaftaran ke dalam basis data kelurahan sesuai dengan kelurahan yang dimasukkan oleh pemilih. Fungsi untuk melakukan proses pendaftaran dapat dilihat pada Gambar 11.



Gambar 11 Fungsi pendaftaran pemilih dalam bahasa PHP. 2. Implementasi Validasi dan Pengaktifan Pemilih Halaman untuk validasi dan pengaktifan pemilih dapat dilihat pada Gambar 12 dan 13.

10

Gambar 12 Menu pengaktifan pemilih. Gambar 15 Halaman login. Proses login setelah pemilih menekan tombol login dapat dilihat pada Gambar 16. 4. Implementasi Sistem Pemilihan

Gambar 13 Halaman edit pemilih. Fungsi untuk mengedit pemilih dapat dilihat pada Gambar 14. … $tanggal_lahir = "$_POST[tahun_lahir]$_POST[bulan_lahir]-$_POST[tanggal_lahir]"; $hasil = query("update pemilih set no_ktp='$_POST[no_ktp]', nama='$_POST[nama]', jenis_kelamin='$_POST[jenis_kelamin]', tempat_lahir='$_POST[tempat_lahir]', tanggal_lahir='$tanggal_lahir', alamat='$_POST[alamat]', rt='$_POST[rt]', rw='$_POST[rw]', kelurahan='$_POST[kelurahan]', kecamatan='$_POST[kecamatan]', kotamadya='$_POST[kotamadya]', kode_pos='$_POST[kode_pos]' where id='$_POST[id_pemilih]'"); if($hasil) $hasil2 = query("update login set status_pendaftaran='$_POST[status_pendaftara n]' where id_pemilih='$_POST[id_pemilih]'"); if($hasil2) header("location:pengaktifan.php?pesan=perub ahan berhasil dilakukan!"); else header("location:pengaktifan.php?pesan=perub ahan gagal dilakukan!"); …

Gambar 14 Fungsi edit pemilih dalam bahasa PHP. 3. Implementasi Login ke Sistem Halaman untuk login dapat dilihat pada Gambar 15.

Halaman untuk pemilihan dapat dilihat pada Gambar 17. Setelah pemilih melakukan pemilihan pada salah satu calon, sistem akan menjalankan fungsi pada kode program pada Gambar 18. Setelah melakukan pemilihan, pemilih tidak dapat melakukan pemilihan kembali atau memperbaiki hasil pilihannya tetapi hanya dapat mengecek siapa calon yang dipilih dengan memasukkan password pemilih yang tampilannya dapat dilihat pada Gambar 19. 5. Implementasi Sistem Perhitungan Suara Implementasi sistem perhitungan suara dibagi menjadi dua, yaitu perhitungan pada TPS ke kelurahan dan perhitungan kelurahan ke pusat. Halaman untuk perhitungan suara di TPS dapat dilihat pada Gambar 20. Setelah panitia menekan tombol “Enkripsi Hasil Pemilihan”, sistem akan membuat file hasil perhitungan yang dapat diunduh seperti pada Gambar 21. Setelah file enkripsi hasil perhitungan di masing-masing TPS diunduh oleh panitia, selanjutnya file tersebut akan dibawa ke perhitungan kelurahan yang akan didekripsi terlebih dahulu oleh sistem yang dapat dilihat pada Gambar 22. Setelah perhitungan suara di kelurahan selesai, selanjutnya adalah perhitungan suara total dimana sistem di kelurahan akan mengirimkan hasil perhitungannya ke pusat. Gambar 23 menunjukkan halaman untuk pengiriman hasil perhitungan ke pusat setelah panitia menekan tombol “Kirim Hasil Pemilihan”. Proses pengiriman hasil perhitungan dapat dilihat pada Gambar 24. Setelah perhitungan selesai, sistem manampilkan hasil perhitungan total beserta hasil perhitungan pada masing-masing kelurahan yang dapat dilihat pada Gambar 25.

11

… session_start(); … $password = hash("sha512",md5(encrypt($_POST['password'] ,$_POST['no_ktp']))); $pemilih = mysql_fetch_array(query("select id,no_ktp,nama,kelurahan from pemilih where no_ktp='$_POST[no_ktp]'")); if($pemilih) { $login = mysql_fetch_array(query("select password, level, status_pendaftaran from login where id_pemilih = '$pemilih[id]' and password = '$password'"));

Gambar 17 Halaman pemilihan.

if($login) { session_register("id_pemilih");



session_register("no_ktp");

session_start();

session_register("nama");

include"fungsi.php";

session_register("password");

$id_pemilih = getId();

session_register("level");

$no_ktp = getNoKtp();

$_SESSION['id_pemilih'] = $pemilih['id']; $_SESSION['no_ktp'] = $pemilih['no_ktp']; $_SESSION['nama'] = $pemilih['nama']; $_SESSION['password'] = $login['password']; $_SESSION['level'] = $login['level']; $_SESSION['status_pendaftaran'] = $login['status_pendaftaran']; if($login['status_pendaftaran'] == 0) header("location:./login.php?pesan=Pendaf taran Anda sudah masuk basis data, tetapi Anda belum melapor ke petugas di kelurahan $pemilih[kelurahan]
Silakan melapor ke kelurahan $pemilih[kelurahan] bahwa anda telah mendaftar dan mintahah kartu pemilih Anda pada petugas di kelurahan!
Terimakasih...!"); else if($login['level'] == 1) header("location:../manajemen/");

if(isLogin() and mysql_num_rows(query("select pilihan from pilihan where id_pemilih='$id_pemilih' and no_ktp='$no_ktp'"))==0) { if(isset($_POST['submit']) and !empty($_POST['pilihan'])) { if(($_SESSION['security_code'] == $_POST["security_code_$_POST[pilihan]"]) && (!empty($_SESSION['security_code'])) ) { include"rsa.php"; $rsa = mysql_fetch_array(query("select * from login where id_pemilih='$id_pemilih' and no_ktp='$no_ktp'")); $pilihan = rsa_encrypt($no_ktp." ".$id_calon,$rsa['public'],$rsa['modulo']); $input_pilihan = query("insert into pilihan values ('$id_pemilih', '$no_ktp', '$pilihan')"); $input_perhitungan = query("insert into perhitungan(id_calon) values ('$id_calon')");

else if($login['level'] == 2)

header("location:memilih.php");

header("location:./"); else header("location:./login.php?pesan=Login Gagal!");

} else header("location:memilih.php?pesan=kode tidak sama!"); }

} else header("location:./login.php?pesan=Login Gagal!"); }

else header("location:memilih.php?pesan=piliha n tidak boleh kosong!"); }

else header("location:./login.php?pesan=Login Gagal!");

else





Gambar 16 Fungsi login dalam bahasa PHP.

header("location:login.php");

Gambar 18 Fungsi pemilihan dalam bahasa PHP.

12

Gambar 23 Halaman hasil perhitungan di kelurahan. …

Gambar 19 Pilihan pemilih.

$h = query("select * from calon order by id"); echo""; echo""; $kirim = ''; while($row=mysql_fetch_array($h)) { if($i%2==0) echo""; else

Gambar 20 Halaman perhitungan suara di TPS.

echo""; echo""; echo""; $h2 = query("select count(id_calon) from perhitungan where id_calon=$row[id]"); $jum = mysql_fetch_row($h2); echo""; echo""; $i++; $kirim .= "$row[id] $jum[0] "; } $kirim = encrypt($kirim,"sekretpilbub1429H"); echo"
No.Nama Pasangan CalonJumlah Suara
$row[id]$row[nama_bupati] $row[nama_wakil_bupati]$jum[0] suara

"; echo"


Gambar 21 File enkripsi hasil perhitungan di TPS

"; …

Gambar 24 Fungsi pengiriman hasil perhitungan.

Gambar 22 Dekripsi hasil perhitungan suara dari TPS

13

sistem tidak akan mengizinkan pengunjung untuk mengakses halaman tersebut. Untuk halaman pemilih hanya dapat dilihat oleh pemilih yang sudah login ke sistem begitu juga untuk halaman administrator. Setiap session yang dibuat akan selalu dicocokkan dengan basis data, sehingga jika ada pengunjung yang menggunakan session palsu maka tetap tidak akan bisa mengakses halaman e-voting. Fungsi untuk pengecekan session untuk mengecek login pemilih dan administrator dapat dilihat pada Gambar 26 dan 27. Fungsi isLogin() dan isAdmin() akan digunakan pada setiap halaman yang membutuhkan autentikasi pengunjung. function isLogin() { session_start(); if(session_is_registered("id_pemilih") and session_is_registered("no_ktp") and session_is_registered("nama") and session_is_registered("password")) { if(!empty($_SESSION['id_pemilih']) and !empty($_SESSION['no_ktp']) and !empty($_SESSION['nama']) and !empty($_SESSION['password'])) {

Gambar 25 Halaman hasil perhitungan suara total dan tiap kelurahan. Keamanan Sistem Keamanan sistem yang diterapkan pada sistem e-voting ini meliputi: 1. Penerapan Captcha Penerapan captcha digunakan untuk mencegah pengisian form seperti pendaftaran secara otomatis yang dilakukan mesin atau program karena tidak ada program komputer yang bisa membaca susunan teks seperti manusia. Penerapan captcha ini juga digunakan untuk mencegah pembobolan pada halaman login yang dapat dilakukan oleh program komputer seperti metode brute force yang mencoba menebak id dan password secara acak dengan segala kemungkinan kombinasi karakter, tetapi metode tersebut tidak bisa membaca captcha. Pada halaman pemilihan juga diterapkan captcha yang bertujuan mencegah pemilihan otomatis oleh program komputer, jadi setiap pemilih yang hendak memilih harus memasukkan captcha pada pilihannya. 2. Penggunaan Session Session digunakan pada setiap halaman untuk mengecek apakah setiap pengunjung yang mengakses halaman itu mempunyai hak atau tidak, jika pengunjung tidak berhak maka

$pemilih = mysql_num_rows(query("select id from pemilih where id='$_SESSION[id_pemilih]' and no_ktp='$_SESSION[no_ktp]' and nama='$_SESSION[nama]'")); $login = mysql_num_rows(query("select id_pemilih from login where id_pemilih='$_SESSION[id_pemilih]' and password='$_SESSION[password]'")); if($pemilih and $login) return true; else return false; } else return false; } else return false; }

Gambar 26 Fungsi pengecekan login pemilih menggunakan session. 3. Penerapan Algoritme Kunci Publik, Kunci Simetri, dan Fungsi Hash Penerapan algoritme dan fungsi hash ini digunakan untuk mengenkripsi dan dekripsi data yang digunakan pada data login pemilih, pilihan pemilih, dan pengiriman hasil perhitungan untuk menjaga kerahasiaan dan keamanan data. Penerapan algoritme kunci publik menggunakan algoritme RSA, untuk algoritme kunci simetri menggunakan

14

algoritme twofish, dan menggunakan SHA-512.

fungsi

hash

Algoritme RSA dapat membuat kunci publik, kunci privat, dan modulo secara otomatis ketika pemilih melakukan pendaftaran yang selanjutnya kunci privat akan dienkripsi oleh algoritme twofish menggunakan kunci dari password pemilih sehingga pemilih mudah untuk mengingatnya. Algoritme RSA ini digunakan untuk melakukan enkripsi pada saat pemilih melakukan pemilihan, yaitu calon yang dipilih akan dienkripsi oleh kunci publik pemilih dan disimpan dalam basis data sehingga hanya pemilih saja yang tahu pilihannya dengan cara memasukkan password yang akan mendekripsi kunci privat dengan algoritme twofish kemudian pilihan pemilih akan didekripsi menggunakan kunci privatnya. Fungsi hash digunakan pada saat pendaftaran untuk mendapatkan nilai hash dari password yang dimasukkan pemilih yang akan disimpan dalam basis data. function isAdmin() { session_start(); if(session_is_registered("id_pemilih") and session_is_registered("no_ktp") and session_is_registered("nama") and session_is_registered("password") and session_is_registered("level")) { if(!empty($_SESSION['id_pemilih']) and !empty($_SESSION['no_ktp']) and !empty($_SESSION['nama']) and !empty($_SESSION['password']) and !empty($_SESSION['level'])) { $pemilih = mysql_num_rows(query("select id from pemilih where id='$_SESSION[id_pemilih]' and no_ktp='$_SESSION[no_ktp]' and nama='$_SESSION[nama]'")); $login = mysql_num_rows(query("select id_pemilih from login where id_pemilih='$_SESSION[id_pemilih]' and password='$_SESSION[password]' and level=$_SESSION['level']")); if($pemilih and $login and $_SESSION['level']==1) return true; else return false; }

4. Pengecekan Karakter pada Saat Login Pengecekan karakter pada saat login digunakan untuk menahan serangan dari SQL Injection. Jadi ketika login terdapat karakter aneh seperti karakter tanda kutip satu, kutip dua atau karakter persen, maka sistem akan memberikan peringatan kesalahan. Kelemahan Sistem Kelemahan dari sistem e-voting ini adalah sebagai berikut: 1. Login Bersamaan dalam Satu Komputer Karena sistem yang dibuat ini berbasis web yang membutuhkan browser untuk menjalankannya sehingga memungkinkan pengguna melakukan login secara bersamaan dalam satu komputer yang sama. Cara yang dilakukan adalah membuka lebih dari satu web browser (bukan tab browser) baik web browser yang sama maupun berbeda, lalu pada masing-masing web browser pengguna dapat melakukan login dengan akun yang berbeda. Hal ini terjadi karena sistem ini menggunakan session yang hanya aktif pada satu web browser dan pada web browser lainnya pengguna dapat membuat session baru. Kelemahan ini menyebabkan pemilih dapat menitipkan pilihannya pada pemilih lain yang akan melakukan pemilihan dengan memberikan nomor KTP dan password-nya sehingga pemilih ini memiliki dua akun, yaitu akun miliknnya dan akun pemilih yang menitipkan pilihannya, jadi ketika pemilih akan memilih di TPS dia bisa memilih untuk dirinya dan untuk pemilih yang menitipkan pilihannya tadi. 2. Keamanan Algoritme RSA Penyerangan yang paling umum pada RSA ialah pada penanganan masalah faktorisasi pada bilangan yang sangat besar. Apabila terdapat faktorisasi metode yang baru dan cepat telah dikembangkan, maka ada kemungkinan untuk membongkar RSA. 3. Enkripsi Kunci Privat dengan Algoritme Twofish

else return false; } else return false; }

Gambar 27 Fungsi pengecekan login administrator menggunakan session.

Pada sistem ini kunci privat pemilih dienkripsi menggunakan algoritme twofish dengan menggunakan kunci dari password pemilih sehingga pemilih tidak perlu menghafal kunci privat yang diberikan algoritme RSA secara acak, tapi hanya perlu menghafal password-nya saja. Hal ini menyebabkan pembobolan algoritme RSA

15

(kunci privatnya) bisa dilakukan hanya dengan membobol password dari pemilih. Pengujian Pengujian terhadap sistem e-voting ini dilakukan menggunakan black-box testing. Pengujian dilakukan terhadap proses dari setiap modul baik pendaftaran, pemilihan, maupun perhitungan suara. Hasil pengujian menunjukkan kesesuaian antara hasil yang diharapkan dengan hasil pengujian. Dokumentasi hasil pengujian dapat dilihat pada Lampiran 3.

KESIMPULAN DAN SARAN Kesimpulan Pemilihan menggunakan kertas suara membutuhkan banyak sumber daya, tenaga, dan waktu terutama dalam proses perhitungan suara. Dengan menggunakan pemilihan secara digital atau electronic voting (e-voting) dapat menghemat waktu dan tenaga yang digunakan terutama dalam proses perhitungan suara. Dari penelitian ini dihasilkan protokol sistem e-voting yang dibuat berdasarkan skema e-voting. Protokol tersebut terdiri dari sistem pendaftaran, validasi dan pengaktifan pemilih, login/masuk ke sistem, sistem pemilihan, dan sistem perhitungan suara. Implementasi dari algoritme kunci publik dan kunci simetri digunakan untuk menjaga keamanan dan kerahasiaan data yang pada penelitian ini diterapkan pada protokol evoting yang dibuat kecuali validasi dan pengaktifan pemilih. Dari protokol dan implementasi algoritme yang dibuat dalam penelitian ini dihasilkan sebuah simulasi sistem e-voting yang diterapkan untuk pemilihan kepala daerah. Simulasi ini dibuat menggunakan bahasa pemrograman PHP yang dijalankan menggunakan web browser.

Saran Pada penelitian ini masih terdapat kelemahan dan kekurangan yang dapat diperbaiki pada penelitian selanjutnya. Saran bagi penelitian selanjutnya yang terkait dengan e-voting adalah sebagai berikut:  Melakukan enkripsi pada penyimpanan data hasil perhitungan suara sehingga hanya sistem yang dapat membaca hasil perhitungan pada basis data dengan mendekripsinya terlebih dahulu.  Simulasi sistem yang dibuat bukan sistem berbasis web yang dijalankan melalui web browser karena memiliki kekurangan, tetapi sistem yang berbasis desktop.  Membuat sistem instalasi di awal yang digunakan untuk inisialisasi kebutuhan sistem e-voting seperti data calon, waktu pendaftaran dan pemilihan, dan akun untuk administrator.

DAFTAR PUSTAKA Ahn L. von, Blum M, Langford J. 2004. Telling Humans And Computers Apart Automatically. Communications Of The ACM. Azhari R. 2005. E-voting. Depok: UI. Boneh D. 1999. Twenty Years of attacks on the RSA Cryptosystem. Notices of the American Mathematical Society (AMS). Canard S, Sibert H. 2001. How to fit cryptographic e-voting into smart cards. Perancis: IOS Press. Guritman S. 2003. Pengantar Kriptografi. Bogor: IPB McLeod R. 2004. Management Information System. New Jersey: Pearson Education Inc. Schneier B et al. 1998. Twofish: A 128-Bit Block Cipher. USA

16

LAMPIRAN

17

Lampiran 1 Tabel basis data e-voting Tabel Pada Basis Data di Kelurahan dan TPS Pada basis data di kelurahan dan TPS terdapat enam tabel, yaitu: Tabel calon Nama id nama_bupati nama_wakil_bupati foto partai_pengusung visi misi

Tipe Data Integer Varchar(100) Varchar(100) Varchar(255) Teks Teks Teks

Not Null Ya Ya Ya Tidak Tidak Ya Ya

Auto Increment Ya Tidak Tidak Tidak Tidak Tidak Tidak

Keterangan Primary key

Tabel pemilih Nama id no_ktp nama jenis_kelamin tempat_lahir tanggal_lahir alamat rt rw kelurahan kecamatan kotamadya kode_pos

Tipe Data Integer Varchar(20) Varchar(100) Varchar(1) Varchar(50) Date Varchar(255) Integer Integer Varchar(100) Varchar(100) Varchar(100) Varchar(5)

Not Null Ya Ya Ya Ya Ya Ya Ya Ya Ya Ya Ya Ya Ya

Auto Increment Ya Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak

Keterangan Primary key

Tabel login Nama

Tipe Data

id_pemilih no_ktp modulo public private_encrypt

Integer Varchar(20) Integer Integer Varchar(255) Varchar(128) Integer Integer

password level status_pendaftran

Not Null Ya Ya Ya Ya Ya Ya Ya Ya

Auto Increment Tidak Tidak Tidak Tidak Tidak Tidak Tidak Tidak

Keterangan Foreign key Foreign key

Default = 2 Default = 0

18

Tabel perhitungan Nama id_perhitungan id_calon

Tipe Data Integer Integer

Not Null Ya Ya

Auto Increment Ya Tidak

Keterangan Primary key Foreign key

Tabel pilihan Nama id_pemilih no_ktp pilihan

Tipe Data Integer Integer Varchar(100)

Not Null Ya Ya Ya

Auto Increment Tidak Tidak Tidak

Keterangan Foreign key Foreign key

Tabel pemilihan Nama status_pemilihan

Tipe Data Integer

Not Null Ya

Auto Increment Tidak

Keterangan 1 or 0

Tabel Pada Basis Data di Pusat Pada basis data di pusat terdapat lima tabel, yaitu: Tabel calon Nama id nama_bupati nama_wakil_bupati foto partai_pengusung visi misi

Tipe Data Integer Varchar(100) Varchar(100) Varchar(255) Teks Teks Teks

Not Null Ya Ya Ya Tidak Tidak Ya Ya

Auto Increment Ya Tidak Tidak Tidak Tidak Tidak Tidak

Keterangan Primary key

Tabel kecamatan Nama id kecamatan

Tipe Data Integer Varchar(50)

Not Null Ya Ya

Auto Increment Ya Tidak

Keterangan Primary key

Tabel kelurahan Nama id_kecamatan kelurahan db_host db_name db_username db_password

Tipe Data Integer Varchar(50) Varchar(100) Varchar(50) Varchar(50) Varchar(50)

Not Null Ya Ya Ya Ya Ya Ya

Auto Increment Tidak Tidak Tidak Tidak Tidak Tidak

Keterangan Foreign key Primary key

19

Tabel perhitungan Nama id_perhitungan id_calon jumlah_suara kelurahan

Tipe Data Integer Integer Integer Varchar(50)

Not Null Ya Ya Ya Ya

Auto Increment Ya Tidak Tidak Tidak

Keterangan Primary key Foreign key

Tabel status_pendaftaran Nama status

Tipe Data Integer

Not Null Ya

Auto Increment Tidak

Keterangan 1 or 0

20

Lampiran 2 Implementasi Algoritme Kunci Publik dan Kunci Simetri Implementasi algoritme kunci publik adalah menggunakan algoritme RSA dalam bahasa PHP. Implementasi di sistem e-voting ini dapat dilihat pada gambar di bawah ini yang secara umum terdiri dari fungsi generate key, enkripsi, dan dekripsi. /* *supplied with Hacker Hunter authentication system. *http://www.polar-lights.com/hackerhunter/ *It is distributed in the hope that it will be useful, but *WITHOUT ANY WARRANTY; without even the implied warranty of *MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. *See the GNU General Public License for more details. *With a great thanks to: *Glenn Haecker *Segey Semenov *Suivan [email protected] */ mt_srand((double)microtime()*1000000); $primes = array ( 4507, 4639, 4759, 4909, 5009, 5147, 5281, 5419, 5527, 5659, 5801, 5897, 6067, 6199, 6311, 6427, 6577, 6709, 6841, 6971, 7109, 7243, 7417, 7541, 7649, 7789, 7927, 8087, 8221, 8353, 8513, 8641, 8747, 8867, 9013, 9161, 9293, 9421,

4513, 4643, 4783, 4919, 5011, 5153, 5297, 5431, 5531, 5669, 5807, 5903, 6073, 6203, 6317, 6449, 6581, 6719, 6857, 6977, 7121, 7247, 7433, 7547, 7669, 7793, 7933, 8089, 8231, 8363, 8521, 8647, 8753, 8887, 9029, 9173, 9311, 9431,

4517, 4649, 4787, 4931, 5021, 5167, 5303, 5437, 5557, 5683, 5813, 5923, 6079, 6211, 6323, 6451, 6599, 6733, 6863, 6983, 7127, 7253, 7451, 7549, 7673, 7817, 7937, 8093, 8233, 8369, 8527, 8663, 8761, 8893, 9041, 9181, 9319, 9433,

4519, 4651, 4789, 4933, 5023, 5171, 5309, 5441, 5563, 5689, 5821, 5927, 6089, 6217, 6329, 6469, 6607, 6737, 6869, 6991, 7129, 7283, 7457, 7559, 7681, 7823, 7949, 8101, 8237, 8377, 8537, 8669, 8779, 8923, 9043, 9187, 9323, 9437,

4523, 4657, 4793, 4937, 5039, 5179, 5323, 5443, 5569, 5693, 5827, 5939, 6091, 6221, 6337, 6473, 6619, 6761, 6871, 6997, 7151, 7297, 7459, 7561, 7687, 7829, 7951, 8111, 8243, 8387, 8539, 8677, 8783, 8929, 9049, 9199, 9337, 9439,

4547, 4663, 4799, 4943, 5051, 5189, 5333, 5449, 5573, 5701, 5839, 5953, 6101, 6229, 6343, 6481, 6637, 6763, 6883, 7001, 7159, 7307, 7477, 7573, 7691, 7841, 7963, 8117, 8263, 8389, 8543, 8681, 8803, 8933, 9059, 9203, 9341, 9461,

4549, 4673, 4801, 4951, 5059, 5197, 5347, 5471, 5581, 5711, 5843, 5981, 6113, 6247, 6353, 6491, 6653, 6779, 6899, 7013, 7177, 7309, 7481, 7577, 7699, 7853, 7993, 8123, 8269, 8419, 8563, 8689, 8807, 8941, 9067, 9209, 9343, 9463,

4561, 4679, 4813, 4957, 5077, 5209, 5351, 5477, 5591, 5717, 5849, 5987, 6121, 6257, 6359, 6521, 6659, 6781, 6907, 7019, 7187, 7321, 7487, 7583, 7703, 7867, 8009, 8147, 8273, 8423, 8573, 8693, 8819, 8951, 9091, 9221, 9349, 9467,

4567, 4691, 4817, 4967, 5081, 5227, 5381, 5479, 5623, 5737, 5851, 6007, 6131, 6263, 6361, 6529, 6661, 6791, 6911, 7027, 7193, 7331, 7489, 7589, 7717, 7873, 8011, 8161, 8287, 8429, 8581, 8699, 8821, 8963, 9103, 9227, 9371, 9473,

4583, 4703, 4831, 4969, 5087, 5231, 5387, 5483, 5639, 5741, 5857, 6011, 6133, 6269, 6367, 6547, 6673, 6793, 6917, 7039, 7207, 7333, 7499, 7591, 7723, 7877, 8017, 8167, 8291, 8431, 8597, 8707, 8831, 8969, 9109, 9239, 9377, 9479,

4591, 4721, 4861, 4973, 5099, 5233, 5393, 5501, 5641, 5743, 5861, 6029, 6143, 6271, 6373, 6551, 6679, 6803, 6947, 7043, 7211, 7349, 7507, 7603, 7727, 7879, 8039, 8171, 8293, 8443, 8599, 8713, 8837, 8971, 9127, 9241, 9391, 9491,

4597, 4723, 4871, 4987, 5101, 5237, 5399, 5503, 5647, 5749, 5867, 6037, 6151, 6277, 6379, 6553, 6689, 6823, 6949, 7057, 7213, 7351, 7517, 7607, 7741, 7883, 8053, 8179, 8297, 8447, 8609, 8719, 8839, 8999, 9133, 9257, 9397, 9497,

4603, 4729, 4877, 4993, 5107, 5261, 5407, 5507, 5651, 5779, 5869, 6043, 6163, 6287, 6389, 6563, 6691, 6827, 6959, 7069, 7219, 7369, 7523, 7621, 7753, 7901, 8059, 8191, 8311, 8461, 8623, 8731, 8849, 9001, 9137, 9277, 9403, 9511,

4621, 4733, 4889, 4999, 5113, 5273, 5413, 5519, 5653, 5783, 5879, 6047, 6173, 6299, 6397, 6569, 6701, 6829, 6961, 7079, 7229, 7393, 7529, 7639, 7757, 7907, 8069, 8209, 8317, 8467, 8627, 8737, 8861, 9007, 9151, 9281, 9413, 9521,

4637, 4751, 4903, 5003, 5119, 5279, 5417, 5521, 5657, 5791, 5881, 6053, 6197, 6301, 6421, 6571, 6703, 6833, 6967, 7103, 7237, 7411, 7537, 7643, 7759, 7919, 8081, 8219, 8329, 8501, 8629, 8741, 8863, 9011, 9157, 9283, 9419, 9533);

$maxprimes = count($primes) - 1; function generate_keys ($show_debug=0){ global $primes, $maxprimes; while (empty($e) || empty($d)) { $p = $primes[mt_rand(0, $maxprimes)]; while (empty($q) || ($p==$q)) $q = $primes[mt_rand(0, $maxprimes)]; $n = $p*$q; $pi = ($p - 1) * ($q - 1); $e = tofindE($pi, $p, $q); $d = extend($e,$pi);

21

$keys = array ($n, $e, $d); if ($show_debug) { echo "P = $p
Q = $q
N = $n - modulo
PI = $pi
E = $e public key
D = $d - private key

"; } } return $keys; } function mo ($g, $l) { return $g - ($l * floor ($g/$l)); } function extend ($Ee,$Epi) { $u1 = 1; $u2 = 0; $u3 = $Epi; $v1 = 0; $v2 = 1; $v3 = $Ee; while ($v3 != 0) { $qq = floor($u3/$v3); $t1 = $u1 - $qq * $v1; $t2 = $u2 - $qq * $v2; $t3 = $u3 - $qq * $v3; $u1 = $v1; $u2 = $v2; $u3 = $v3; $v1 = $t1; $v2 = $t2; $v3 = $t3; $z = 1; } $uu = $u1; $vv = $u2; if ($vv < 0) { $inverse = $vv + $Epi; } else { $inverse = $vv; } return $inverse; } function GCD($e,$pi) { $y = $e; $x = $pi; while ($y != 0) { $w =

mo($x , $y);

$x = $y; $y = $w; } return $x; } function tofindE($pi) { global $primes, $maxprimes; $great = 0; $cc = mt_rand (0,$maxprimes); $startcc = $cc; while ($cc >= 0) {

22

$se = $primes[$cc]; $great = GCD($se,$pi); $cc--; if ($great == 1) break; } if ($great == 0) { $cc = $startcc + 1; while ($cc <= $maxprimes) { $se = $primes[$cc]; $great = GCD($se,$pi); $cc++; if ($great == 1) break; } } return $se; } function rsa_encrypt ($m, $e, $n) { $asci = array (); for ($i=0; $i
//Each number is then encrypted using the RSA formula: block ^E mod N for ($k=0; $k< count ($asci); $k++) { $resultmod = powmod($asci[$k], $e, $n); $coded .= $resultmod." "; } return trim($coded); } function powmod ($base, $exp, $modulus) { $accum = 1; $i = 0; $basepow2 = $base; while (($exp >> $i)>0) { if ((($exp >> $i) & 1) == 1) { $accum = mo(($accum * $basepow2) , $modulus); } $basepow2 = mo(($basepow2 * $basepow2) , $modulus); $i++; } return $accum; } function rsa_decrypt ($c, $d, $n) { //Strip the blank spaces from the ecrypted text and store it in an array

23

$decryptarray = split(" ", $c); for ($u=0; $u
Pada kode program RSA dideklarasikan fungsi-fungsi yang akan digunakan pada fungsi-fungsi lainnya. Fungsi utama pada kode program RSA di atas adalah sebagai berikut: a. generate_keys($show_debug=0)

Fungsi ini digunakan untuk mendapatkan nilai kunci publik, kunci privat dan modulo secara acak yang digunakan untuk tiap pemilih yang melakukan pendaftaran. b. rsa_encrypt($m, $e, $n)

Fungsi ini digunakan untuk melakukan enkripsi pada pesan $m menggunakan kunci publik $e dan modulo $n masing-masing pemilih. c. rsa_decrypt($c, $d, $n)

Fungsi ini digunakan untuk melakukan dekripsi pada ciphertext $c menggunakan kunci privat $d dan modulo $n masing-masing pemilih.

Implementasi algoritme kunci simetri adalah menggunakan algoritme twofish dalam bahasa PHP. Implementasi di sistem e-voting ini dapat dilihat pada gambar di bawah ini yang secara umum terdiri dari fungsi enkripsi dan dekripsi. /* Name:TwoFish

encryption

About: Handles encryption / decrytion of TwoFish

ciphers

Author: Greg Sidberry [ gregsidberry.com ] Requires:None Vars:None */ class TwoFish { var $mTwoFish=array(); function TwoFish(){ //initalise mcrypt and needed vars srand((double)microtime()*1000000 ); $this->mTwoFish['td']=mcrypt_module_open(MCRYPT_TWOFISH, '',

MCRYPT_MODE_CBC, '');

$this->mTwoFish['iv']=mcrypt_create_iv(mcrypt_enc_get_iv_size($this->mTwoFish['td']), MCRYPT_RAND); $this->mTwoFish['ks'] = mcrypt_enc_get_key_size($this->mTwoFish['td']); } function makeKey($key1,$key2){ //encryption requires two keys. we use the passsed keys if available, else we get a md5 hash of current timestamp.

24

$key1 = ($key1===false) ? md5(time()): $key1; $key2 = ($key2===false) ? md5(time()): $key2; //now create the key using the two keys passed - taken from php.net $key = substr($key1, 0, $this->mTwoFish['ks']/2) . substr(strtoupper($key2), (round(strlen($key2) / 2)), $this->mTwoFish['ks']/2); $key = substr($key.$key1.$key2.strtoupper($key1),0,$this->mTwoFish['ks']); $this->mTwoFish['key']=$key; } function encrypt($string){ //init encryption mcrypt_generic_init($this->mTwoFish['td'], $this->mTwoFish['key'], $this->mTwoFish['iv']); //encypt data $encrypted = mcrypt_generic($this->mTwoFish['td'], $string); //terminate encryption handler mcrypt_generic_deinit($this->mTwoFish['td']); //return encrypted value return $encrypted; } function decrypt($string){ //init encryption mcrypt_generic_init($this->mTwoFish['td'], $this->mTwoFish['key'], $this->mTwoFish['iv']); //encypt data $decrypted = mdecrypt_generic($this->mTwoFish['td'], $string); //terminate encryption handler mcrypt_generic_deinit($this->mTwoFish['td']); return $decrypted; } function close(){ mcrypt_module_close($this->mTwoFish['td']); } }

Pada algoritme kunci simetri pada gambar di atas dideklarasikan fungsi-fungsi yang akan digunakan pada fungsi-fungsi lainnya. Fungsi pada algoritme twofish adalah sebagai berikut: a. makeKey($key1,$key2)

Fungsi ini digunakan untuk membuat kunci dengan masukan dua buah kunci $key1 dan $key2 yang akan menghasilkan satu buah kunci $key. b. encrypt($string)

Fungsi ini digunakan untuk melakukan enkripsi pada pesan $string menggunakan kunci yang telah dibuat pada fungsi makeKey($key1,$key2). c. decrypt($string)

Fungsi ini digunakan untuk melakukan dekripsi pada ciphertext $string menggunakan kunci yang telah dibuat pada fungsi makeKey($key1,$key2).

25

Lampiran 3 Black Box Testing Tabel Deskripsi dan Hasil Uji untuk Fungsi Pendaftaran Pemilih No. 1.

Deskripsi Uji Memeriksa hasil pendaftaran pemilih

Kondisi Awal Halaman pendaftar an

Skenario Uji Pemilih memasukkan data pendaftaran dengan benar Pemilih memasukkan data pendaftaran tidak lengkap

Hasil yang Diharapkan Muncul pemberitahuan bahwa pendaftaran sukses Muncul pesan kesalahan dalam melakukan pendaftaran

Hasil Uji OK

OK

Tabel Deskripsi dan Hasil Uji untuk Fungsi Pengaktifan Pemilih No. 1.

Deskripsi Uji Mengubah status pemilih yang telah mendaftar menjadi aktif

Kondisi Awal Halaman edit pemilih

Skenario Uji Administrator mengubah status pemilih yang sudah mendaftar menjadi aktif

Hasil yang Diharapkan Status pemilih yang diubah menjadi aktif

Hasil Uji OK

Tabel Deskripsi dan Hasil Uji untuk Fungsi Autentikasi Pengguna (Login) No. 1.

2.

Deskripsi Uji Memeriksa hasil autentikasi login untuk administrator yang akan memasuki halaman Evoting Management System

Memeriksa hasil autentikasi login untuk pemilih yang akan memasuki evoting system

Kondisi Awal Halaman login

Halaman login

Hasil Uji OK

Skenario Uji

Hasil yang Diharapkan

Administrator memasukkan data login (nomor KTP, password, dan captcha) yang valid untuk tingkatan administrator dan meng-klik tombol ‘Login’ Administrator memasukkan data login (nomor KTP, password, dan captcha) yang tidak valid dan meng-klik tombol ‘Login’

Administrator memasuki halaman E-voting Management System

Administrator tidak bisa memasuki halaman Evoting Management System dan diberikan pesan kesalahan

OK

Pemilih aktif memasukkan data login (nomor KTP, password, dan captcha) yang valid untuk tingkatan administrator dan meng-klik tombol ‘Login’

Pemilih memasuki halaman e-voting system

OK

26

Pemilih aktif memasukkan data login (nomor KTP, password, dan captcha) yang tidak valid dan meng-klik tombol ‘Login’ Pemilih tidak aktif memasukkan data login (nomor KTP, password, dan captcha) yang valid dan meng-klik tombol ‘Login’

Pemilih tidak bisa memasuki halaman evoting system dan diberikan pesan kesalahan

OK

Muncul pesan kesalahan bahwa pemilih belum melaporkan pendaftarannya ke panitia pemilihan

OK

Tabel Deskripsi dan Hasil Uji untuk Fungsi Pemilihan No.

Deskripsi Uji

1.

Pemilih melakukan pemilihan pada calon

2.

Pemilih mengecek hasil pilihannya

Kondisi Awal Halaman pemiliha n calon

Halaman pemiliha n calon

Skenario Uji

Hasil yang Diharapkan

Hasil Uji OK

Pemilih meng-klik tombol ‘PILIH’ tanpa menentukan pilihannya

Pesan kesalahan bahwa pilihan tidak boleh kosong

Pemilih menentukan pilihannya tetapi tidak atau salah mengisi captcha dan meng-klik tombol ‘PILIH’

Pesan kesalahan bahwa kode tidak sama

OK

Pemilih menentukan pilihan, mengisi captcha dengan benar, dan mengklik tombol ‘PILIH’ Pemilih salah atau tidak memasukkan password lalu meng-klik tombol ‘Lihat Pilihan’ Pemilih memasukkan password dengan benar

Pemilihan berhasil dan langsung masuk ke halaman pengecekan hasil pilihan

OK

Pesan kesalahan bahwa password yang dimasukkan salah

OK

Muncul tampilan calon yang dipilih oleh pemilih

OK

Tabel Deskripsi dan Hasil Uji untuk Fungsi Perhitungan Suara No.

Deskripsi Uji

1.

Mengirim hasil perhitungan suara di kelurahan ke pusat

Kondisi Awal Halaman hasil perhitunga n suara kelurahan

Skenario Uji

Hasil yang Diharapkan

Administrator meng-klik tombol ‘Kirim Hasil Pemilihan’

Pesan bahwa pengiriman hasil perhitungan berhasil

Hasil Uji OK

27

2.

Melihat hasil perhitungan suara total

Halaman hasil perhitunga n suara pusat

Masuk ke halaman perhitungan suara pusat

Menampilkan data hasil perhitungan total dan hasil perhitungan masing-masing kelurahan

OK

28