PENGEMBANGAN SISTEM PENGIRIMAN SUARA
VOTER
MENUJU
CENTRAL TABULATING FACILITIES
(CTF)
MEDRIA KUSUMA DEWI HARDHIENATA
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA
DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
PENGEMBANGAN SISTEM PENGIRIMAN SUARA
VOTER
MENUJU
CENTRAL TABULATING FACILITIES
(CTF)
MEDRIA KUSUMA DEWI HARDHIENATA
Skripsi
Sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer pada
Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
ABSTRACT
MEDRIA KUSUMA DEWI HARDHIENATA.The Development of Voting Result Data Transfer to the Central Tabulating Facilities. Under the direction of SRI NURDIATI and SUGI GURITMAN.
Advances in election voting process nowadays has triggered the application of virtualization technique in several countries. Most studies raised concern about Online Voting which provides cost saving and convinience. The voting system using virtual network technology aims to reduce considerable calculation time as well as necessary human resources. Despite this, Indonesia still performs voting during election manually. Therefore, this research is performed to study the application of small scale Online Voting at the Department of Computer Science, Bogor Agricultural University as well as studying its further possibility for applying this technique in larger scales. Considering the complexity in building a complete secure online election voting process, this research is focused only in developing a system to send vote from voterto Central Tabulating Facilities (CTF) by implementing a modified secure election protocol with Two Central Facilities. It is also conducted to implement earlier research recommendations to make the system more secure as well as how to integrate an election voting system from a single host into multiple hosts by using Java Web Start
Technology.
Judul :Pengembangan Sistem Pengiriman Suara Voter Menuju Central Tabulating Facilities (CTF) Nama :Medria K.D.Hardhienata
NIM :G64052475
Menyetujui:
Pembimbing I, Pembimbing II,
Dr. Ir. Sri Nurdiati, M.Sc Dr. Sugi Guritman
NIP 19601126 198601 2 001 NIP 19620927 199203 1 004
Mengetahui,
Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor
Dr. Drh. Hasim, DEA NIP 19610328 198601 1 002
RIWAYAT HIDUP
Medria Kusuma Dewi Hardhienata dilahirkan di kota Stuttgart, Jerman Barat, pada tanggal 22 Agustus 1986 dari pasangan Ibu Sri Setyaningsih dan Bapak Soewarto Hardhienata. Pada tahun 2005 penulis lulus dari Sekolah Menengah Atas (SMA) Negeri 1 Bogor dan diterima di Program Studi Ilmu Komputer Institut Pertanian Bogor melalui jalur Seleksi Masuk Penerimaan Mahasiswa (SPMB). Penulis aktif berpartisipasi dalam National University English Debate Championship yang diselenggarakan pada tanggal 24-26 April 2007 dan berhasil meraih juara Third Runner Up.
PRAKATA
Rasa syukur penulis ucapkan kepada Allah SWT yang telah memberikan anugerah dan rahmat-Nya hingga proses pembuatan skripsi ini dapat terselesaikan dengan lancar. Skripsi berjudul “Pengembangan Sistem Pengiriman Suara Voter Menuju Central Tabulating Facilities (CTF)” ini berangkat dari sebuah mimpi bahwa suatu saat pemilu di Indonesia dapat terselenggara secara virtual.
Penelitian ini diharapkan dapat menjadi sumbangan pemikiran yang nantinya dapat terus dikembangkan bagi penyelenggaraan pemilu secara lebih luas di masa mendatang. Seiring dengan terselesaikannya skripsi ini, penulis ingin mengucapkan terima kasih yang tidak terhingga kepada: 1 Ayah dan Ibu, Soewarto Hardhienata dan Sri Setyaningsih, kedua orang yang menjadi sumber
kekuatan untuk tetap maju dan melangkah. Terimakasih pula penulis ucapkan kepada kakak, Hendradi Hardhienata, yang selalu mengajarkan untuk tidak cepat menyerah dan menyadarkan bahwa mempelajari ilmu pengetahuan dimulai dari mencintai ilmu pengetahuan itu sendiri. Terimakasih pula kepada Faridah Handayasari, kakak perempuan penulis yang telah memotivasi agar dapat menyelesaikan skripsi tepat waktu.
2 Ibu Dr. Ir. Sri Nurdiati, MSc selaku pembimbing pertama yang telah memberi arahan, bimbingan serta motivasi untuk menyelesaikan skripsi ini.
3 Bapak Dr. Sugi Guritman selaku pembimbing kedua yang telah menumbuhkan rasa kecintaan akan ilmu kriptografi dan mencetuskan pemikiran awal untuk mengerjakan penelitian Online Voting.
4 Bapak Irman Hermadi S.Kom, MS selaku pembimbing akademik yang telah membimbing dan menjadi tempat penulis berkonsultasi dan bertanya.
5 Orang-orang yang telah menemani hingga semester demi semester perkuliahan dapat terlewati dan membantu penulis dalam melewati masa-masa sulit, Rizqi Baihaqi Ahmadi, sahabat terbaik yang pernah ada, orang yang mengajarkan untuk tidak pernah menyerah dan terus berjuang serta Rinjani Yusni Maharjanti, sahabat yang selalu menemani di saat-saat pengerjaan skripsi. Tidak lupa penulis ucapkan terimakasih kepada sahabat, Nida, rekan seperjuangan dalam projek Online Voting, Dina, Uud, dan Fajri, serta sahabat-sahabat yang pernah bekerja bersama-sama dalam satu tim hebat Ferdian Faisal, Noviana Putri, Fitri, dan Abie Rafdi. Skripsi ini juga penulis persembahkan untuk sahabat-sahabat program studi Ilmu Komputer Angkatan 42, Mirna, Lena, Adet, Prita, Nila, Huda, Indra, Ijun, Nano, Regi, organisasi yang telah membesarkan penulis, Komunitas Film FOKERZ dan HIMALKOM, serta sahabat-sahabat yang tidak bisa penulis sebutkan satu persatu, terimakasih atas segalanya.
6 Seluruf staf pengajar Departemen Ilmu Komputer yang telah berbagi banyak ilmu, filosofi dan cerita-cerita luar biasa sehingga mempelajari ilmu komputer menjadi hal yang menyenangkan. Terimakasih juga penulis ucapkan kepada segenap staf administrasi dan perpustakaan Departemen Ilmu Komputer yang telah membantu hingga skripsi ini dapat terselesaikan. Terimakasih atas bantuan semua pihak.
Akhir kata semoga karya ilmiah ini dapat bermanfaat dan memberi inspirasi bagi peneliti-peneliti muda lainnya untuk terus berlomba menciptakan karya terbaik.
Bogor, Agustus 2009
iv DAFTAR ISI
Halaman
DAFTAR GAMBAR ... v
DAFTAR LAMPIRAN ... v
PENDAHULUAN ... 6
Latar Belakang ... 6
Tujuan ... 6
Ruang Lingkup ... 6
TINJAUAN PUSTAKA ... 2
Protokol ... 2
Kriptografi ... 2
Kunci Publik (Public Key) ... 2
Kunci Simetri (Session Key) ... 2
Algoritme RSA ... 2
Secure Hash Algorithm (SHA)-1 ... 3
Jaringan Feistel ... 3
Blowfish ... 3
Nonce ... 5
Java Web Start ... 5
Certificate Authority (CA) ... 5
Central Legitimization Agency (CLA) ... 5
Central Tabulating Facilities (CTF) ... 5
METODE PENELITIAN ... 6
Ancaman (Threats) ... 6
Kebijakan (Policy) ... 6
Spesifikasi (Specification) ... 6
Perancangan (Design) ... 6
Implementasi (Implementation) ... 7
Pengujian (Testing) ... 7
HASIL DAN PEMBAHASAN ... 8
Ancaman (Threats) ... 8
Kebijakan (Policy) ... 8
Spesifikasi (Specification) ... 9
Perancangan (Design) ... 9
Perancangan Sistem Secara Umum ... 9
Perancangan Pengembangan Sistem ... 11
Implementasi ... 13
Pengujian ... 17
KESIMPULAN DAN SARAN ... 19
Kesimpulan ... 19
Saran ... 19
DAFTAR PUSTAKA ... 20
v DAFTAR GAMBAR
Halaman
1 Enkripsi dan Dekripsi ... 2
2 Jaringan Feistel ... 3
3 Fungsi f Blowfish ... 4
4 Blowfish ... 4
5 TheSecurity Life Cycle ... 6
6 Proses Komunikasi Voter – CTF untuk Fungsionalitas Permintaan Kandidat ... 10
7 Proses Komunikasi Voter – CTF untuk Fungsionalitas Permintaan Melakukan Pemilihan (vote) . 10 8 Proses Komunikasi Voter – CTF untuk Fungsionalitas Melakukan Verifikasi Pilihan ... 11
9 Jaringan Wireless Online Voting dengan Topologi Infrastruktur ... 12
10 Diagram Alir Pengiriman dan Penerimaan Kunci Simetri Voter ... 12
11 Diagram Alir Pengiriman dan Penerimaan Kunci Simetri CTF ... 13
12 Pengaturan Java Web Start pada project properties window menu Run ... 13
13 Pengaturan Java Web Start pada project properties window menu Application Web Start ... 14
14 Situs IPB Online Voting Centre (Bagian 1) ... 14
15 Situs IPB Online Voting Centre (Bagian 2) ... 14
16 Tampilan Antamuka Online Voting ... 14
17 Berkas launch.jnlp untuk memunculkan aplikasi Online Voting ... 14
DAFTAR LAMPIRAN Halaman 1 Implementasi GenerateRandomKeys.java ... 22
2 Implementasi Voter.java untuk Fungsi do_CTF ... 28
3 Implementasi CTF.java untuk Fungsi Main ... 35
4 Black Box Testing ... 40
vi PENDAHULUAN
Latar Belakang
Pemilihan Umum (Pemilu) merupakan suatu kegiatan yang lazim dilakukan di berbagai negara untuk memilih kandidat yang akan menempati jabatan politik tertentu. Kegiatan ini dilakukan tidak hanya dalam skala nasional, pada lingkungan yang lebih khusus seperti kampus misalnya kegiatan ini pun sering kali dilakukan untuk melakukan pemilu berskala kecil seperti pemilihan rektor, dekan, maupun berbagai ketua badan kegiatan mahasiswa. Seiring dengan kemajuan teknologi, proses pemunggutan suara dalam pemilu di negara-negara maju kini mulai berkembang ke arah virtualisasi. Pemilu untuk memilih presiden Amerika Serikat pada bulan November 2008 lalu pun telah berhasil diselenggarakan dengan penghitungan electoral vote yang sangat cepat berkat bantuan teknologi maju. Hanya dalam hitungan jam hasil pemungutan suara dari seluruh negara bagian negara ini dapat diketahui oleh seluruh dunia.
Di Indonesia sendiri pemilu umumnya masih dilakukan dengan cara konvensional. Pemilihan dilakukan melalui pencontrengan pada kartu pemilih serta identifikasi pemilih secara manual. Tidak jarang kegiatan ini menghabiskan waktu yang cukup lama dalam penghitungan suara akhir. Peluang dalam melakukan kecurangan dalam pemilu yang diselenggarakan secara konvensional pun kadang tidak dapat dihindari.
Pada tahun 2001, Dan DuFeu dan Jon Harris (2001) melakukan penelitian dengan mendeskripsikan bagaimana online election system bekerja. Penelitian ini mengimplementasikan pembangunan Central Legitimization Agency (CLA) dan Central Tabulating Facilities (CTF) untuk menerapkan pemilu yang aman. Selanjutnya beberapa penelitian mengenai topik serupa kian terbuka lebar. Pada tahun 2005, Sireesha, Janga dan So-In Chakchai (2005) melakukan penelitian dengan memodifikasi protokol secure election dengan Two Central Facilities. Dengan lahirnya berbagai penelitian dalam bidang election system, penelitian ini diharapkan dapat terus menyempurnakan sistem online voting yang telah ada.
Dengan kemajuan jaringan teknologi dan teknik kriptografi saat ini penyelenggaraan pemilihan kandidat dengan cara virtual khususnya dalam lingkup kampus di Indonesia
bukanlah hal yang mustahil dilakukan. Meski demikian, pemilihan suara dengan komputerisasi hanya dapat dilakukan jika protokol menjamin bahwa privasi individu dapat dilindungi dan berbagai bentuk kecurangan dengan teknologi ini dapat dicegah. Hal inilah yang mendorong adanya keinginan untuk terus menyempurnakan serta mengembangkan sebuah protokol keamanan virtual dengan protokol Two Central Facilities. Protokol ini dipilih karena termasuk sebagai protokol yang paling memenuhi sebagian besar persyaratan untuk menjalankan secure election
dan memiliki tingkat keamanan yang paling tinggi dibandingkan protokol-protokol lain yang dijelaskan oleh Schneier (1996).
Tujuan
Terdapat dua tujuan utama dari penelitian ini. Pertama, penelitian dilakukan untuk mengembangkan sistem pengiriman suara dari
voter menuju Central Tabulating Facilities
(CTF) dengan protokol Two Central Facilities
yang telah ada serta penyempurnaan beberapa kekurangan pada protokol sesuai rekomendasi dari penelitian sebelumnya. Kedua, penelitian dilakukan untuk membuat model simulasi guna melihat apakah sistem ini dimungkinkan untuk diimplementasikan pada pemilu yang diadakan di lingkungan kampus Institut Pertanian Bogor (IPB).
Ruang Lingkup
2 TINJAUAN PUSTAKA
Protokol
Suatu protokol menurut Schneier (1996) adalah serangkaian langkah yang melibatkan dua pihak atau lebih dan dirancang agar dapat menyelesaikan suatu tugas.
Protokol memiliki berbagai karakteristik seperti :
1 Protokol memiliki urutan dari awal hingga akhir.
2 Setiap langkah harus dilaksanakan secara bergilir.
3 Suatu langkah tidak dapat dikerjakan bila langkah sebelumnya belum selesai dilakukan.
4 Diperlukan dua pihak atau lebih untuk melaksanakan protokol.
5 Protokol harus mencapai dan memberikan suatu hasil.
6 Setiap orang yang terlibat dalam protokol harus mengetahui terlebih dahulu mengenai protokol dan seluruh langkah yang akan dilaksanakan dalam protokol.
7 Setiap orang yang terlibat dalam protokol harus menyetujui untuk mengikutinya.
8 Protokol tidak boleh menimbulkan kerancuan (ambigu) dan tidak boleh timbul kesalahpahaman.
9 Protokol harus lengkap, harus terdapat aksi yang spesifik untuk setiap kemungkinan situasi.
Kriptografi
Kriptografi menurut Schneier (1996) adalah seni dan ilmu untuk menjaga keamanan pesan. Beberapa istilah menurut Kurniawan (2008) yang sering digunakan dalam kriptografi antara lain:
a) Plaintext: Semua data yang belum diproses melalui suatu algoritme kriptografi.
Plaintext dapat berupa teks, gambar atau bentuk lainnya.
b) Ciphertext: Hasil proses algoritme kriptografi dari suatu plaintext.
c) Enkripsi: Proses pengubahan pesan sedemikian sehingga isi pesan disembunyikan. Enkripsi juga dapat dikatakan sebagai proses pengubahan dari
plaintext ke ciphertext, dengan algoritme kriptografi tertentu.
d) Dekripsi: proses pengubahan kembali dari
ciphertext ke plaintext dengan algoritme kriptografi tertentu.
e) Cipher: Suatu algoritme kriptografi yang dapat melakukan enkripsi dan dekripsi.
f) Key: Parameter kunci yang digunakan oleh
cipher dalam melakukan proses enkripsi dan dekripsi.
g) Message digest: Ukuran byte kecil yang menunjukkan ukuran plaintext.
h) Hash: Nama lain dari message digest.
Skema proses enkripsi dan dekripsi secara umum dapat dilihat pada Gambar 1.
Gambar 1 Enkripsi dan Dekripsi.
Kunci Publik (Public Key)
Kunci Publik (Public Key) adalah kunci yang dirancang sedemikian sehingga kunci yang digunakan untuk enkripsi berbeda dengan kunci yang digunakan pada proses dekripsi (Schneier 1996).
Kunci Simetri (Session Key)
Kunci Simetri (Session Key) adalah kunci yang dirancang sedemikian sehingga kunci yang digunakan untuk enkripsi sama dengan kunci yang digunakan pada proses dekripsi (Schneier 1996).
Algoritme RSA
Algoritme RSA dinamakan berdasarkan nama tiga orang penemunya yakni Ron Rivest, Adi Shamir, dan Leonard Adleman. Keamanan algoritme RSA didapatkan dari sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Algoritme RSA memiliki besaran-besaran sebagai berikut: 1 p dan q bilangan prima (rahasia)
Deskripsi sederhana dari algoritme RSA dijelaskan sebagai berikut, diberikan Nilai N, dimana N adalah :
dengan p dan q adalah dua bilangan prima besar dengan ukuran yang sama.
PENGEMBANGAN SISTEM PENGIRIMAN SUARA
VOTER
MENUJU
CENTRAL TABULATING FACILITIES
(CTF)
MEDRIA KUSUMA DEWI HARDHIENATA
DEPARTEMEN ILMU KOMPUTER FAKULTAS MATEMATIKA
DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
BOGOR
PENGEMBANGAN SISTEM PENGIRIMAN SUARA
VOTER
MENUJU
CENTRAL TABULATING FACILITIES
(CTF)
MEDRIA KUSUMA DEWI HARDHIENATA
Skripsi
Sebagai salah satu syarat untuk memperoleh gelar
Sarjana Komputer pada
Departemen Ilmu Komputer
DEPARTEMEN ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
INSTITUT PERTANIAN BOGOR
ABSTRACT
MEDRIA KUSUMA DEWI HARDHIENATA.The Development of Voting Result Data Transfer to the Central Tabulating Facilities. Under the direction of SRI NURDIATI and SUGI GURITMAN.
Advances in election voting process nowadays has triggered the application of virtualization technique in several countries. Most studies raised concern about Online Voting which provides cost saving and convinience. The voting system using virtual network technology aims to reduce considerable calculation time as well as necessary human resources. Despite this, Indonesia still performs voting during election manually. Therefore, this research is performed to study the application of small scale Online Voting at the Department of Computer Science, Bogor Agricultural University as well as studying its further possibility for applying this technique in larger scales. Considering the complexity in building a complete secure online election voting process, this research is focused only in developing a system to send vote from voterto Central Tabulating Facilities (CTF) by implementing a modified secure election protocol with Two Central Facilities. It is also conducted to implement earlier research recommendations to make the system more secure as well as how to integrate an election voting system from a single host into multiple hosts by using Java Web Start
Technology.
Judul :Pengembangan Sistem Pengiriman Suara Voter Menuju Central Tabulating Facilities (CTF) Nama :Medria K.D.Hardhienata
NIM :G64052475
Menyetujui:
Pembimbing I, Pembimbing II,
Dr. Ir. Sri Nurdiati, M.Sc Dr. Sugi Guritman
NIP 19601126 198601 2 001 NIP 19620927 199203 1 004
Mengetahui,
Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor
Dr. Drh. Hasim, DEA NIP 19610328 198601 1 002
RIWAYAT HIDUP
Medria Kusuma Dewi Hardhienata dilahirkan di kota Stuttgart, Jerman Barat, pada tanggal 22 Agustus 1986 dari pasangan Ibu Sri Setyaningsih dan Bapak Soewarto Hardhienata. Pada tahun 2005 penulis lulus dari Sekolah Menengah Atas (SMA) Negeri 1 Bogor dan diterima di Program Studi Ilmu Komputer Institut Pertanian Bogor melalui jalur Seleksi Masuk Penerimaan Mahasiswa (SPMB). Penulis aktif berpartisipasi dalam National University English Debate Championship yang diselenggarakan pada tanggal 24-26 April 2007 dan berhasil meraih juara Third Runner Up.
PRAKATA
Rasa syukur penulis ucapkan kepada Allah SWT yang telah memberikan anugerah dan rahmat-Nya hingga proses pembuatan skripsi ini dapat terselesaikan dengan lancar. Skripsi berjudul “Pengembangan Sistem Pengiriman Suara Voter Menuju Central Tabulating Facilities (CTF)” ini berangkat dari sebuah mimpi bahwa suatu saat pemilu di Indonesia dapat terselenggara secara virtual.
Penelitian ini diharapkan dapat menjadi sumbangan pemikiran yang nantinya dapat terus dikembangkan bagi penyelenggaraan pemilu secara lebih luas di masa mendatang. Seiring dengan terselesaikannya skripsi ini, penulis ingin mengucapkan terima kasih yang tidak terhingga kepada: 1 Ayah dan Ibu, Soewarto Hardhienata dan Sri Setyaningsih, kedua orang yang menjadi sumber
kekuatan untuk tetap maju dan melangkah. Terimakasih pula penulis ucapkan kepada kakak, Hendradi Hardhienata, yang selalu mengajarkan untuk tidak cepat menyerah dan menyadarkan bahwa mempelajari ilmu pengetahuan dimulai dari mencintai ilmu pengetahuan itu sendiri. Terimakasih pula kepada Faridah Handayasari, kakak perempuan penulis yang telah memotivasi agar dapat menyelesaikan skripsi tepat waktu.
2 Ibu Dr. Ir. Sri Nurdiati, MSc selaku pembimbing pertama yang telah memberi arahan, bimbingan serta motivasi untuk menyelesaikan skripsi ini.
3 Bapak Dr. Sugi Guritman selaku pembimbing kedua yang telah menumbuhkan rasa kecintaan akan ilmu kriptografi dan mencetuskan pemikiran awal untuk mengerjakan penelitian Online Voting.
4 Bapak Irman Hermadi S.Kom, MS selaku pembimbing akademik yang telah membimbing dan menjadi tempat penulis berkonsultasi dan bertanya.
5 Orang-orang yang telah menemani hingga semester demi semester perkuliahan dapat terlewati dan membantu penulis dalam melewati masa-masa sulit, Rizqi Baihaqi Ahmadi, sahabat terbaik yang pernah ada, orang yang mengajarkan untuk tidak pernah menyerah dan terus berjuang serta Rinjani Yusni Maharjanti, sahabat yang selalu menemani di saat-saat pengerjaan skripsi. Tidak lupa penulis ucapkan terimakasih kepada sahabat, Nida, rekan seperjuangan dalam projek Online Voting, Dina, Uud, dan Fajri, serta sahabat-sahabat yang pernah bekerja bersama-sama dalam satu tim hebat Ferdian Faisal, Noviana Putri, Fitri, dan Abie Rafdi. Skripsi ini juga penulis persembahkan untuk sahabat-sahabat program studi Ilmu Komputer Angkatan 42, Mirna, Lena, Adet, Prita, Nila, Huda, Indra, Ijun, Nano, Regi, organisasi yang telah membesarkan penulis, Komunitas Film FOKERZ dan HIMALKOM, serta sahabat-sahabat yang tidak bisa penulis sebutkan satu persatu, terimakasih atas segalanya.
6 Seluruf staf pengajar Departemen Ilmu Komputer yang telah berbagi banyak ilmu, filosofi dan cerita-cerita luar biasa sehingga mempelajari ilmu komputer menjadi hal yang menyenangkan. Terimakasih juga penulis ucapkan kepada segenap staf administrasi dan perpustakaan Departemen Ilmu Komputer yang telah membantu hingga skripsi ini dapat terselesaikan. Terimakasih atas bantuan semua pihak.
Akhir kata semoga karya ilmiah ini dapat bermanfaat dan memberi inspirasi bagi peneliti-peneliti muda lainnya untuk terus berlomba menciptakan karya terbaik.
Bogor, Agustus 2009
iv DAFTAR ISI
Halaman
DAFTAR GAMBAR ... v
DAFTAR LAMPIRAN ... v
PENDAHULUAN ... 6
Latar Belakang ... 6
Tujuan ... 6
Ruang Lingkup ... 6
TINJAUAN PUSTAKA ... 2
Protokol ... 2
Kriptografi ... 2
Kunci Publik (Public Key) ... 2
Kunci Simetri (Session Key) ... 2
Algoritme RSA ... 2
Secure Hash Algorithm (SHA)-1 ... 3
Jaringan Feistel ... 3
Blowfish ... 3
Nonce ... 5
Java Web Start ... 5
Certificate Authority (CA) ... 5
Central Legitimization Agency (CLA) ... 5
Central Tabulating Facilities (CTF) ... 5
METODE PENELITIAN ... 6
Ancaman (Threats) ... 6
Kebijakan (Policy) ... 6
Spesifikasi (Specification) ... 6
Perancangan (Design) ... 6
Implementasi (Implementation) ... 7
Pengujian (Testing) ... 7
HASIL DAN PEMBAHASAN ... 8
Ancaman (Threats) ... 8
Kebijakan (Policy) ... 8
Spesifikasi (Specification) ... 9
Perancangan (Design) ... 9
Perancangan Sistem Secara Umum ... 9
Perancangan Pengembangan Sistem ... 11
Implementasi ... 13
Pengujian ... 17
KESIMPULAN DAN SARAN ... 19
Kesimpulan ... 19
Saran ... 19
DAFTAR PUSTAKA ... 20
v DAFTAR GAMBAR
Halaman
1 Enkripsi dan Dekripsi ... 2
2 Jaringan Feistel ... 3
3 Fungsi f Blowfish ... 4
4 Blowfish ... 4
5 TheSecurity Life Cycle ... 6
6 Proses Komunikasi Voter – CTF untuk Fungsionalitas Permintaan Kandidat ... 10
7 Proses Komunikasi Voter – CTF untuk Fungsionalitas Permintaan Melakukan Pemilihan (vote) . 10 8 Proses Komunikasi Voter – CTF untuk Fungsionalitas Melakukan Verifikasi Pilihan ... 11
9 Jaringan Wireless Online Voting dengan Topologi Infrastruktur ... 12
10 Diagram Alir Pengiriman dan Penerimaan Kunci Simetri Voter ... 12
11 Diagram Alir Pengiriman dan Penerimaan Kunci Simetri CTF ... 13
12 Pengaturan Java Web Start pada project properties window menu Run ... 13
13 Pengaturan Java Web Start pada project properties window menu Application Web Start ... 14
14 Situs IPB Online Voting Centre (Bagian 1) ... 14
15 Situs IPB Online Voting Centre (Bagian 2) ... 14
16 Tampilan Antamuka Online Voting ... 14
17 Berkas launch.jnlp untuk memunculkan aplikasi Online Voting ... 14
DAFTAR LAMPIRAN Halaman 1 Implementasi GenerateRandomKeys.java ... 22
2 Implementasi Voter.java untuk Fungsi do_CTF ... 28
3 Implementasi CTF.java untuk Fungsi Main ... 35
4 Black Box Testing ... 40
vi PENDAHULUAN
Latar Belakang
Pemilihan Umum (Pemilu) merupakan suatu kegiatan yang lazim dilakukan di berbagai negara untuk memilih kandidat yang akan menempati jabatan politik tertentu. Kegiatan ini dilakukan tidak hanya dalam skala nasional, pada lingkungan yang lebih khusus seperti kampus misalnya kegiatan ini pun sering kali dilakukan untuk melakukan pemilu berskala kecil seperti pemilihan rektor, dekan, maupun berbagai ketua badan kegiatan mahasiswa. Seiring dengan kemajuan teknologi, proses pemunggutan suara dalam pemilu di negara-negara maju kini mulai berkembang ke arah virtualisasi. Pemilu untuk memilih presiden Amerika Serikat pada bulan November 2008 lalu pun telah berhasil diselenggarakan dengan penghitungan electoral vote yang sangat cepat berkat bantuan teknologi maju. Hanya dalam hitungan jam hasil pemungutan suara dari seluruh negara bagian negara ini dapat diketahui oleh seluruh dunia.
Di Indonesia sendiri pemilu umumnya masih dilakukan dengan cara konvensional. Pemilihan dilakukan melalui pencontrengan pada kartu pemilih serta identifikasi pemilih secara manual. Tidak jarang kegiatan ini menghabiskan waktu yang cukup lama dalam penghitungan suara akhir. Peluang dalam melakukan kecurangan dalam pemilu yang diselenggarakan secara konvensional pun kadang tidak dapat dihindari.
Pada tahun 2001, Dan DuFeu dan Jon Harris (2001) melakukan penelitian dengan mendeskripsikan bagaimana online election system bekerja. Penelitian ini mengimplementasikan pembangunan Central Legitimization Agency (CLA) dan Central Tabulating Facilities (CTF) untuk menerapkan pemilu yang aman. Selanjutnya beberapa penelitian mengenai topik serupa kian terbuka lebar. Pada tahun 2005, Sireesha, Janga dan So-In Chakchai (2005) melakukan penelitian dengan memodifikasi protokol secure election dengan Two Central Facilities. Dengan lahirnya berbagai penelitian dalam bidang election system, penelitian ini diharapkan dapat terus menyempurnakan sistem online voting yang telah ada.
Dengan kemajuan jaringan teknologi dan teknik kriptografi saat ini penyelenggaraan pemilihan kandidat dengan cara virtual khususnya dalam lingkup kampus di Indonesia
bukanlah hal yang mustahil dilakukan. Meski demikian, pemilihan suara dengan komputerisasi hanya dapat dilakukan jika protokol menjamin bahwa privasi individu dapat dilindungi dan berbagai bentuk kecurangan dengan teknologi ini dapat dicegah. Hal inilah yang mendorong adanya keinginan untuk terus menyempurnakan serta mengembangkan sebuah protokol keamanan virtual dengan protokol Two Central Facilities. Protokol ini dipilih karena termasuk sebagai protokol yang paling memenuhi sebagian besar persyaratan untuk menjalankan secure election
dan memiliki tingkat keamanan yang paling tinggi dibandingkan protokol-protokol lain yang dijelaskan oleh Schneier (1996).
Tujuan
Terdapat dua tujuan utama dari penelitian ini. Pertama, penelitian dilakukan untuk mengembangkan sistem pengiriman suara dari
voter menuju Central Tabulating Facilities
(CTF) dengan protokol Two Central Facilities
yang telah ada serta penyempurnaan beberapa kekurangan pada protokol sesuai rekomendasi dari penelitian sebelumnya. Kedua, penelitian dilakukan untuk membuat model simulasi guna melihat apakah sistem ini dimungkinkan untuk diimplementasikan pada pemilu yang diadakan di lingkungan kampus Institut Pertanian Bogor (IPB).
Ruang Lingkup
2 TINJAUAN PUSTAKA
Protokol
Suatu protokol menurut Schneier (1996) adalah serangkaian langkah yang melibatkan dua pihak atau lebih dan dirancang agar dapat menyelesaikan suatu tugas.
Protokol memiliki berbagai karakteristik seperti :
1 Protokol memiliki urutan dari awal hingga akhir.
2 Setiap langkah harus dilaksanakan secara bergilir.
3 Suatu langkah tidak dapat dikerjakan bila langkah sebelumnya belum selesai dilakukan.
4 Diperlukan dua pihak atau lebih untuk melaksanakan protokol.
5 Protokol harus mencapai dan memberikan suatu hasil.
6 Setiap orang yang terlibat dalam protokol harus mengetahui terlebih dahulu mengenai protokol dan seluruh langkah yang akan dilaksanakan dalam protokol.
7 Setiap orang yang terlibat dalam protokol harus menyetujui untuk mengikutinya.
8 Protokol tidak boleh menimbulkan kerancuan (ambigu) dan tidak boleh timbul kesalahpahaman.
9 Protokol harus lengkap, harus terdapat aksi yang spesifik untuk setiap kemungkinan situasi.
Kriptografi
Kriptografi menurut Schneier (1996) adalah seni dan ilmu untuk menjaga keamanan pesan. Beberapa istilah menurut Kurniawan (2008) yang sering digunakan dalam kriptografi antara lain:
a) Plaintext: Semua data yang belum diproses melalui suatu algoritme kriptografi.
Plaintext dapat berupa teks, gambar atau bentuk lainnya.
b) Ciphertext: Hasil proses algoritme kriptografi dari suatu plaintext.
c) Enkripsi: Proses pengubahan pesan sedemikian sehingga isi pesan disembunyikan. Enkripsi juga dapat dikatakan sebagai proses pengubahan dari
plaintext ke ciphertext, dengan algoritme kriptografi tertentu.
d) Dekripsi: proses pengubahan kembali dari
ciphertext ke plaintext dengan algoritme kriptografi tertentu.
e) Cipher: Suatu algoritme kriptografi yang dapat melakukan enkripsi dan dekripsi.
f) Key: Parameter kunci yang digunakan oleh
cipher dalam melakukan proses enkripsi dan dekripsi.
g) Message digest: Ukuran byte kecil yang menunjukkan ukuran plaintext.
h) Hash: Nama lain dari message digest.
Skema proses enkripsi dan dekripsi secara umum dapat dilihat pada Gambar 1.
Gambar 1 Enkripsi dan Dekripsi.
Kunci Publik (Public Key)
Kunci Publik (Public Key) adalah kunci yang dirancang sedemikian sehingga kunci yang digunakan untuk enkripsi berbeda dengan kunci yang digunakan pada proses dekripsi (Schneier 1996).
Kunci Simetri (Session Key)
Kunci Simetri (Session Key) adalah kunci yang dirancang sedemikian sehingga kunci yang digunakan untuk enkripsi sama dengan kunci yang digunakan pada proses dekripsi (Schneier 1996).
Algoritme RSA
Algoritme RSA dinamakan berdasarkan nama tiga orang penemunya yakni Ron Rivest, Adi Shamir, dan Leonard Adleman. Keamanan algoritme RSA didapatkan dari sulitnya memfaktorkan bilangan yang besar menjadi faktor-faktor prima. Pemfaktoran dilakukan untuk memperoleh kunci privat. Algoritme RSA memiliki besaran-besaran sebagai berikut: 1 p dan q bilangan prima (rahasia)
Deskripsi sederhana dari algoritme RSA dijelaskan sebagai berikut, diberikan Nilai N, dimana N adalah :
dengan p dan q adalah dua bilangan prima besar dengan ukuran yang sama.
3 Diberikan nilai e dan d dengan ketentuan
sebagai berikut :
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 C = Me mod N. Untuk mendekripsi ciphertext
digunakan perhitungan M = Cd mod N dengan
Cd= Med= M (mod N) (Boneh 1999).
Secure Hash Algorithm (SHA)-1
SHA adalah fungsi hash satu-arah yang dibuat oleh NIST. Fungsi hash SHA yang paling umum digunakan adalah SHA-1 yang telah diimplementasikan di dalam berbagai aplikasi dan protokol keamanan. SHA-1 menerima masukan berupa pesan dengan ukuran maksimum 64 bit dan menghasilkan message digest yang panjangnya 160 bit, lebih panjang dari message digest yang dihasilkan oleh MD5 yang hanya 128 bit.
Langkah-langkah pembuatan message digest
dengan SHA-1 secara garis besar adalah sebagai berikut:
1 Penambahan bit-bit pengganjal (padding bits).
2 Penambahan nilai panjang pesan semula. 3 Inisialisasi penyangga (buffer) MD.
4 Pengolahan pesan dalam blok berukuran 512 bit.
(Munir 2006). Jaringan Feistel
Hampir semua algoritme cipher blok bekerja dalam model jaringan Feistel. Jaringan Feistel
ditemukan oleh Horst Feistel tahun 1970. Model jaringan Feistel adalah sebagai berikut:
1 Bagi blok yang panjangnya n bit menjadi dua bagian, kiri (L) dan kanan (R), yang masing-masing panjangnya n/2 (hal ini mensyaratkan n harus genap).
2 Definisikan cipher blok berulang dimana hasil dari putaran ke-i ditentukan dari hasil putaran sebelumnya (lihat Gambar 2), yaitu :
Li = Ri+1 terdapat fungsi substitusi, permutasi, dan/atau ekspansi, kompresi) (Munir 2006).
Gambar 2 Jaringan Feistel. Blowfish
Blowfish merupakan blok cipher 64-bit dengan panjang kunci variabel. Algoritme ini terdiri dari dua bagian: ekspansi kunci dan enkripsi data. Ekspansi kunci mengubah kunci yang dapat mencapai 448 bit menjadi beberapa
array subkunci (subkey) dengan total 4168 byte.
Blowfish dikembangkan untuk memenuhi kriteria perancangan sebagai berikut:
a) Cepat, pada implementasi yang optimal
Blowfish dapat mencapai kecepatan 26 clock cycle per-byte.
b) Kompak, Blowfish dapat berjalan pada memori kurang dari 5 KB.
c) Sederhana, Blowfish hanya menggunakan operasi yang sederhana: penambahan (addition), XOR, dan penelusuran tabel (table lookup) pada operand 32 bit. Rancangannya mudah untuk dianalisis yang membuatnya resisten terhadap kesalahan implementasi.
d) Keamanan yang variabel, panjang kunci
Blowfish dapat bervariasi dan dapat mencapai 448 bit (56 byte).
Enkripsi data terdiri dari iterasi fungsi sederhana sebanyak 16 kali. Setiap putaran terdiri atas permutasi kunci-dependent dan substitusi kunci- dan data-dependent. Semua operasi adalah penambahan dan XOR pada variable 32-bit. Tambahan operasi lainnya hanyalah empat penelusuran tabel (table lookup) array berindeks untuk setiap putaran.
4
Blowfish menggunakan subkunci yang besar. Kunci ini harus dihitung sebelum enkripsi atau dekripsi data. Array P terdiri dari delapan belas 32-bit subkunci:
P1,P2, . . . ,P18
Empat 32-bit S-box masing-masing mempunyai 256 entri:
S1,0, S1,1, . . . , S1,255 S2,0, S2,1, . . . , S2,255 S3,0, S3,1, . . . , S3,255 S4,0, S4,1, . . . , S4,255
Metode selengkapnya untuk menghitung subkunci ini akan dijelaskan pada bagian di bawah ini. Blowfish merupakan algoritme yang menerapkan jaringan Feistel (Feistel network) yang terdiri atas 16 putaran. Input merupakan elemen 64 bit, X. Untuk memulai enkripsi :
Kombinasikan kembali XL dan XR
Fungsi F adalah sebagai berikut:
Bagi XL, menjadi empat bagian 8-bit: a, b,
Proses fungsi f dan enkripsi Blowfish dapat dilihat pada Gambar 3 dan 4.
Dekripsi sama persis dengan enkripsi, kecuali P1, P2, . . . , P18 digunakan pada urutan yang terbalik. Subkunci dihitung menggunakan algoritme Blowfish sebagai berikut:
1 Pertama-tama inisialisasi P-array dan kemudian empat S-box secara berurutan dengan string yang tetap. String ini terdiri digit heksadesimal dari pi.
2 XOR P1 dengan 32 bit pertama kunci, XOR P2 dengan 32 bit kedua dari kunci dan seterusnya untuk setiap bit dari kunci (sampai P18). Ulangi terhadap bit kunci sampai seluruh P-array di XOR dengan bit kunci.
3 Lakukan enkripsi pada semua string nol dengan algoritme Blowfish dengan menggunakan subkunci seperti dijelaskan pada langkah (1) dan (2).
4 Ganti P1 dan P2 dengan keluaran dari langkah (3)
5 Lakukan enkripsi pada keluaran dari langkah (3) dengan algoritme Blowfish
dengan subkunci yang sudah dimodifikasi. 6 Ganti P3 dan P4 dengan keluaran dari
langkah (5).
7 Lanjutkan proses tersebut, ganti seluruh elemen dari P-array, dan kemudian seluruh keempat S-box berurutan, dengan keluaran yang berubah secara kontinyu dari algoritme
Blowfish. (Schneier 1996).
Gambar 3 Fungsi f Blowfish.
5 Nonce
Dalam bidang teknik keamanan, Nonce merupakan kepanjangan dari number used once
(nomor yang digunakan hanya sekali). Umumnya bilangan ini berupa bilangan acak atau semi-acak yang digunakan dalam protokol otentikasi untuk memastikan bahwa komunikasi lama tidak dapat digunakan ulang dalam serangan balasan (replay attacks) (Ross 2001). Java Web Start
Java Web Start menyediakan kekuatan dalam menampilkan fitur lengkap aplikasi Java dalam satu kali klik. Pengguna dapat mengunduh dan menampilkan aplikasi, seperti tampilan program yang lengkap atau komunikasi klien dalam internet tanpa prosedur instalasi yang rumit. Sekali pengguna mengakses Java Web Start, aplikasi akan terintegrasi dengan desktop pengguna. Sebagai tambahan Java Web Start juga dapat melayani pengguna dengan mengatur versi Java Runtime Environment dan secara otomatis melakukan
update versi aplikasi (Sun Microsystem 2005). Certificate Authority (CA)
Fungsi Utama dari Certificate Authority
(CA) adalah menghasilkan, memublikasikan, dan menghapus certificate public key dari user identity, bisa personal maupun lembaga. Contoh CA, yaitu verisign (Kurniawan 2008).
Central Legitimization Agency (CLA)
Central Legitimization Agency (CLA) merupakan sebuah badan yang bertugas untuk melakukan sertifikasi pemilih. Fungsi utama badan ini adalah untuk melakukan otentikasi dan otorisasi pemilih. Setiap pemilih akan mengirim sebuah pesan aman kepada CLA untuk meminta sebuah ValidationID. CLA akan membangkitkan ValidationID, mendaftarkannya secara aman kepada Central Tabulating Facilities, dan mengembalikannya secara aman kepada pemilih. ValidationID bernilai kompleks sehingga secara komputasi tidak dimungkinkan seorang penyerang untuk memproduksi sebuah ID yang valid. CLA memiliki daftar sejumlah
ValidationID yang valid serta daftar identifikasi pemilih dari setiap ValidationID untuk mencegah seseorang memiliki lebih dari satu
ValidationID (Dan DuFeu and Jon Harris 2001). Central Tabulating Facilities (CTF)
Central Tabulating Facilities (CTF) merupakan suatu badan yang bertugas melakukan penghitungan suara. CTF
menyediakan beberapa fungsionalitas sebagai berikut:
a) Mengizinkan pengguna untuk meminta sertifikasi daftar kandidat.
b) Menerima secure Validation ID yang telah disertifikasi dan ditandatangani dari CLA. c) Menerima permintaan secure vote dari
pemilih yang berwenang (dengan Validation ID).
d) Secara aman mengembalikan nama kandidat terpilih sebagai verifikasi atas permintaan pemilih.
e) Mengizinkan pemilih untuk meminta sertifikasi hasil pemilihan.
Dalam rangka otorisasi pemilih, CTF melakukan pengecekan ValidationID dengan daftar yang diterima dari CLA. Jika
6 METODE PENELITIAN
Penelitian ini dikembangkan dengan metode
Security Life Cycle. Berdasarkan Bishop (2003) 6 tahap utama yang diterapkan dalam
Security Life Cycle di antaranya: (1) Ancaman (Threats), (2) Kebijakan (Policy), (3) Spesifikasi (Specification) (4) Perancangan (Design) (5) Implementasi (Implementation)
serta (6) Operasi dan Pemeliharaan (Operation and Maintenance). Metode Security Life Cycle
dapat dilihat pada Gambar 5. Oleh karena keterbatasan waktu, penelitian ini difokuskan dari tahap (1) hingga (5) serta disempurnakan dengan tahap pengujian.
Gambar 5 The Security Life Cycle. Ancaman (Threats)
Sebuah ancaman (threats) adalah kekerasan potensial dalam suatu sistem keamanan. Di dalam konteks pemilu, terdapat banyak sekali serangan yang mengancam pertukaran informasi yang terkirim dan diterima oleh voter dan server. Peran kriptografi sangat dibutuhkan untuk melindungi sistem pemilu, termasuk pada saat suara voter dikirim kepada CTF. Oleh karenanya, sistem pemilu yang akan dibangun harus dipersiapkan agar mampu melindungi sistem dari ancaman-ancaman yang mungkin terjadi. Dalam penelitian ini berbagai ancaman yang dapat timbul pada saat suara
voter dikirim menuju CTF akan dianalisis dalam 4 kelas besar yakni :
a) Disclosure, yakni akses terhadap informasi oleh pihak yang tidak berwenang.
b) Deception, yakni penerimaan data yang salah.
c) Disruption, yakni gangguan atau pencegahan terhadap operasi yang benar.
d) Usurpation, yakni pengaturan beberapa bagian dari sistem oleh pihak-pihak yang tidak berwenang.
Kebijakan (Policy)
Kebijakan keamanan adalah pernyataan atas apa yang diperbolehkan dan tidak diperbolehkan dalam menjalankan sebuah sistem. Metode, alat, atau prosedur untuk melaksanakan kebijakan keamanan tersebut dinamakan mekanisme keamanan. Sistem pemilu yang rentan terhadap serangan keamanan tentu membutuhkan kebijakan tentang hal-hal yang diperbolehkan dan tidak diperbolehkan dalam proses penyelenggaraan pemilu secara online. Kebijakan yang dibuat untuk menjalankan pemilu online dalam penelitian ini mengacu pada requirementsecure voting yang ditulis dalam buku karangan Schneier (1996).
Spesifikasi (Specification)
Spesifikasi adalah pernyataan baik formal maupun informal mengenai fungsi sistem yang diinginkan (Bishop 2003). Setelah kebijakan pemilu dibuat, langkah selanjutnya adalah menentukan spesifikasi sistem. Agar dapat menjalankan mekanisme keamanan sesuai dengan kebijakan, sistem pemilu online
membutuhkan berbagai spesifikasi keamanan. Pada konteks penelitian kali ini spesifikasi yang digunakan adalah spesifikasi informal yang menjelaskan fungsi-fungsi yang dikerjakan sistem agar dapat menjalankan kebijakan. Perancangan (Design)
Tahap perancangan akan menerjemahkan spesifikasi menjadi komponen-komponen yang dapat diimplementasikan. Suatu perancangan dikatakan sesuai dengan spesifikasi jika dalam semua kondisi, rancangan yang telah dibuat tidak mengizinkan sistem untuk melanggar spesifikasi.
Tahap perancangan sistem pengiriman suara
voter menuju CTF mencakup perancangan pengembangan sistem komunikasi antara voter
dan CTF dari mulai perancangan proses pengiriman kunci agar lebih aman hingga proses pengiriman suara voter menuju CTF.
7 pada penelitian ini dapat dibagi menjadi dua
bagian yakni :
1 perancangan Online Voting dengan Java Web Start , dan
2 perancangan pengiriman kunci simetri. Implementasi (Implementation)
Pada tahap ini hasil analisis dan perancangan akan diimplementasikan menjadi sistem dengan lingkungan implementasi sebagai berikut:
a) Platform: Java 1.4 (Platform independent & inbuilt security features)
b) GUI: Java Swing
c) RSA (2048 bits): Enkripsi kunci publik d) Blowfish (56 bits): Enkripsi kunci simetri e) SHA-1 (160 bits): signature/Hashing
f) Nonce and Nonce+1: untuk mengembalikan pesan.
g) CA : Transmisi kunci publik secara aman.
Pengujian (Testing)
Tahap Pengujian dilakukan untuk menguji apakah sistem yang dibangun memberi hasil keluaran seperti yang diharapkan. Pengujian pada penelitian ini dilakukan dengan metode
8 HASIL DAN PEMBAHASAN
Ancaman (Threats)
Seiring dengan kemajuan teknologi komunikasi saat ini, ancaman terhadap pengiriman data yang bersifat rahasia seperti hasil pilihan voter menuju CTF menjadi hal yang sangat penting untuk diperhatikan dalam pembangunan sistem Online Voting. Keamanan komunikasi antara voter dan CTF sangat diperlukan untuk menjaga tingkat kepercayaan
voter kepada instansi atau lembaga yang menyelenggarakan pemilu. Oleh karena itu pembangunan sistem IPB Online Voting harus dimulai dari analisis mengenai berbagai ancaman yang mungkin menyerang sistem komunikasi data.
Salah satu bagian yang akan dikembangkan dalam sistem IPB Online Voting adalah pengamanan pengiriman kunci simetri. Kunci ini digunakan sebagai media pengaman komunikasi antara voter dan CTF saat pengiriman daftar kandidat, hasil pilihan voter
maupun hasil verifikasi suara dilakukan. Oleh karenanya, berbagai ancaman yang akan dianalisis dalam penelitian ini difokuskan pada penanggulangan ancaman yang dapat menyerang pengiriman kunci simetri dari voter
menuju CTF. Berbagai ancaman yang dapat timbul saat proses pengiriman kunci simetri berlangsung diantaranya:
a) Pengintaian (snooping), yakni penahanan informasi oleh pihak yang tidak berwenang. Secara sederhana ancaman ini dapat didefinisikan bahwa terdapat suatu entitas yang tidak memiliki otoritas ikut mendengar atau membaca komunikasi sistem informasi yang bersifat rahasia. Dalam konteks pengamanan pengiriman kunci simetri, ancaman ini berarti bahwa terdapat entitas yang tidak berwenang dan berhasil mendengar komunikasi pengiriman kunci simetri dari voter menuju CTF. Ancaman jenis ini tergolong ke dalam kelas
disclosure. Snooping merupakan salah satu contoh serangan pasif dimana penyerang tidak terlibat langsung dalam komunikasi antara voter dan CTF, namun menyadap pertukaran pesan antara kedua entitas. Tujuan penyerangan ini adalah untuk mendapatkan informasi yang dapat digunakan oleh kriptanalis. Ancaman
snooping dapat diatasi menggunakan layanan keamanan pesan kerahasiaan (confidentiality).
b) Modifikasi atau pengubahan (modification oralternation) yakni pengubahan informasi yang dilakukan oleh pihak penyerang. Jika kunci simetri yang dibangkitkan oleh voter
telah diubah, maka CTF akan menerima kiriman kunci simetri berbeda yang dianggap benar oleh CTF. Ancaman ini pada akhirnya mengarah ke dalam kelas
deception. Ancaman modifikasi yang mungkin terjadi dalam pengiriman suara
voter menuju CTF di antaranya kunci simertri yang dikirimkan oleh pemilih telah diubah oleh penyerang saat kunci dikirimkan kepada CTF. Hal ini menyebabkan komunikasi antara voter dan CTF tidak dapat dilakukan. Ancaman modifikasi terhadap kunci simetri dapat menyebabkan terjadinya peningkatan ancaman disruption dan usurpation.
Layanan keamanan integritas (integrity) digunakan untuk menanggulangi masalah ini.
c) Penyamaran (masquering) yakni peniruan terhadap suatu entitas terhadap entitas yang lain. Ancaman ini akan mengumpan korban agar percaya bahwa entitas yang berkomunikasi dengannya adalah pihak yang benar, meski pada kenyataannya pihak tersebuat adalah penyerang (attacker) yang bukan merupakan pihak yang berwenang. Sebagai contoh, saat pemilih akan mengirimkan kunci simetri kepada CTF untuk melakukan komunikasi, pihak yang menerima kunci tersebut bukanlah CTF melainkan server lain yang mengaku sebagai CTF. Untuk menangani ancaman ini konsep otentifikasi (authentication) dapat digunakan untuk mencegah serangan ini.
Masquerading termasuk ancaman dalam kelas deception dan usurpation.
Kebijakan (Policy)
Kebijakan yang diterapkan dalam membangun IPB Online Voting mengacu pada buku Schneier (1996) mengenai syarat-syarat penyelenggaraan sistem pemilihan umum yang aman. Menurut Scheneier secure voting yang dibangun secara komputerisasi akan digunakan jika terdapat protokol yang menjamin :
1 privasi individu, dan
9 Suatu protokol yang ideal harus memiliki 6
persyaratan sebagai berikut :
1 Hanya pemilih yang berhak yang dapat memberikan suara (otentifikasi);
2 Tidak boleh memberikan lebih dari satu suara;
3 Tidak boleh menentukan orang lain harus memilih untuk siapa;
4 Tidak ada yang bisa menduplikasi suara orang lain;
5 Tidak boleh mengubah pilihan orang lain; 6 Setiap pemilih dapat memastikan bahwa
suara mereka sudah dikirimkan dan terhitung dalam penghitungan akhir.
Spesifikasi (Specification)
Secara Umum sistem pengiriman suara voter
menuju CTF yang dibangun dapat memenuhi spesifikasi umum sebagai berikut:
• Hanya pemilih yang berhak yang dapat memberikan suara (otentifikasi).
o Terdapat validationID yang acak dan unik untuk setiap voter.
o Secara komputasional infeasible untuk seorang penyerang untuk menebak pasangan kunci dan validationID yang
valid.
o Hanya CTF yang dapat memasukkan hasil pilihan.
• Tidak boleh menentukan orang lain harus memilih untuk siapa.
o Semua transaksi aman dan
ditandatangani untuk mencegah orang lain menangkap pesan.
• Tidak boleh memberikan lebih dari satu suara.
o Jika voter telah melakukan pemilihan dan kembali melakukan pemilihan maka CTF akan mengembalikan pesan “Telah terjadi duplikasi Suara”. CTF tidak mengetahui ID validasi voter namun hanya nilai Hash yang dihasilkan oleh ID validasi tersebut. Hal ini menyebabkan CTF dapat mengetahui jika terjadi duplikasi.
• Tidak ada yang bisa menduplikasi suara orang lain.
o Diasumsikan bahwa terdapat saluran aman lain untuk mengirim ID pengguna dan password secara langsung untuk setiap voter, sehingga orang lain selain voter yang dimaksud tidak dapat mengetahui
password voter lain.
• Tidak boleh mengubah pilihan orang lain
o Diberikan ID validasi yang unik dan aman sehingga orang lain tidak dapat mengganti pilihan voter lain termasuk CTF.
• Setiap pemilih dapat memastikan bahwa suara mereka sudah dikirimkan dan terhitung dalam penghitungan akhir.
o Jika seorang voter memasukkan pilihan, CTF akan menghitung kandidat yang telah dipilih oleh voter
dan mengembalikan hasil penghitungan sementara. Hal ini menyebabkan voter dapat memastikan bahwa pilihannya benar telah dihitung oleh CTF.
Secara khusus spesifikasi tambahan yang dikembangkan dalam penelitian ini adalah bahwa sistem menjamin agar voter dapat melakukan komunikasi secara lebih aman dengan CTF karena kunci simetri kini telah dilengkapi dengan penghitungan Nonce untuk menghindari serangan balasan (replay attack)
dan nilai Hash untuk menjamin integritas pesan. Perancangan (Design)
Perancangan sistem Online Voting terbagi menjadi dua bagian yakni perancangan sistem secara umum dan khusus. Perancangan secara umum membahas keseluruhan komunikasi yang dilakukan antara voter dengan CTF, sedangkan perancangan secara khusus difokuskan untuk membahas secara lebih rinci mengenai pengembangan sistem.
Perancangan Sistem Secara Umum
Secara umum CTF melayani 3 fungsionalitas agar dapat berkomunikasi dengan
voter yakni permintaan daftar kandidat (Request Candidate), melakukan voting (Vote), dan melihat dan memverifikasi hasil yang sudah dipilih (Request My Vote).
Proses permintaan daftar kandidat (Request Candidate) dari voter menuju CTF dilakukan melalui langkah-langkah sebagai berikut: 1 Voter meminta daftar kandidat dari CTF. 2 CTF mengirimkan kunci publik CTF
(kunci publik RSA) dan sertifikat.
3 Voter membaca kunci publik CTF dan memverifikasi sertifikat dengan kunci publik CA.
4 Voter membangkitkan kunci simetri
Blowfish.
10 6 Voter mengirimkan permintaan Daftar
Kandidat kepada CTF dengan symmetric cipher.
7 CTF mendekripsi kunci simetri dengan kunci privat RSA dan mendekripsi pesan dengan kunci simetri.
8 Dengan kunci simetri CTF mengenkripsi daftar kandidat dan mengirimkan kepada
voter.
9 CTF menandatangani daftar kandidat dan mengirimkannya kepada voter.
10 Voter mendekripsi daftar kandidat dan memverifikasi tanda tangan CTF.
Proses komunikasi antara voter dengan CTF untuk fungsionalitas permintaan kandidat dapat dilihat pada Gambar 6.
Gambar 6 Proses Komunikasi Voter – CTF untuk Fungsionalitas Permintaan Kandidat.
Fungsionalitas kedua yang dilayani oleh CTF adalah permintaan voter untuk melakukan pemilihan (vote). Langkah-langkah komunikasi yang dilakukan untuk memenuhi fungsionalitas yang kedua adalah:
1 Voter meminta untuk melakukan pemilihan (voting).
2 CTF mengirimkan kunci publik RSA bersama sertifikat.
3 Voter membaca kunci publik RSA dan memverifikasi sertifikat dengan kunci publik RSA dan memverifikasi sertifikat dengan kunci publik CA.
4 Voter membangkitkan kunci simetri
Blowfish.
5 Voter mengenkripsi kunci simetri tersebut dengan kunci publik CTF dan mengirimkannya kepada CTF.
6 Voter mengirimkan pesan yang terdiri dari VOTE, validationID, kandidat CTF menggunakan symmetric cipher.
7 CTF mendekripsi kunci simetri dengan kunci publik RSA, dan mendekripsi pesan dengan kunci simetri.
8 CTF melakukan pemeriksaan apakah
validationID valid. Jika ya, maka suara dihitung dan dimasukkan ke dalam kotak suara.
9 CTF mengirimkan konfirmasi kandidat kepada voter.
10 Menggunakan kunci simetri CTF
mengirimkan pesan kepada voter
pernyataan “OK” dan menandatanganinya. 11 Voter mendekripsi pesan dengan kunci
publik dan memverifikasi sertifikat. Proses komunikasi antara voter dengan CTF untuk fungsionalitas melakukan pemilihan (vote) dapat dilihat pada Gambar 7.
Voter CTF
1. Permintaan Melakukan Pemilihan(Vote)
2. Kunci publik RSA bersama sertifikat
Membaca kunci publik CTF dan menverifikasi
3. Kunci Simetri Blowfish di enkripsi dengan kunci
publik CTF
4. Voter mengirimkan pesan yang terdiri dari VOTE, ID
validasi, kandidat CTF menggunakan symmetric
cipher
CTF mendekripsi kunci simetri dengan kunci privat RSA dan mendekripsi pesan
dengan kunci simetri
CTF melakukan pemeriksaan apakah ID validasi
valid. Jika ya, maka suara dihitung dan dimasukkan ke dalam kotak suara. 5. Pesan pernyataan “OK”
dan tanda tangan CTF yang telah dienkripsi dengan kunci
simetri untuk Fungsionalitas Permintaan Melakukan
Pemilihan (vote).
11 komunikasi yang dilakukan untuk memenuhi
fungsionalitas yang ketiga adalah:
1 Voter meminta untuk melakukan verifikasi terhadap pilihannya.
2 CTF mengirimkan kunci publik RSA bersama sertifikat.
3 Voter membaca kunci publik RSA dan memverifikasi sertifikat dengan kunci publik RSA dan memverifikasi sertifikat dengan kunci publik CA.
4 Voter membangkitkan kunci simetri
Blowfish.
5 Voter mengenkripsi kunci simetri tersebut dengan kunci publik CTF dan mengirimkannya kepada CTF.
6 Voter mengirimkan pesan meminta hasil menggunakan symmetric cipher.
7 CTF mendekripsi kunci simetri dengan kunci publik RSA dan mendekripsi pesan dengan kunci simetri.
8 Menggunakan kunci simetri CTF,
mengenkripsi hasil voting kepada voter. 9 Voter mendekripsi hasil pemilihan dengan
kunci publik dan memverifikasi tanda tangan.
Proses komunikasi antara voter dengan CTF untuk fungsionalitas verifikasi hasil pilihan dapat dilihat pada Gambar 8.
Gambar 8 Proses Komunikasi Voter – CTF untuk Fungsionalitas Melakukan Verifikasi
Pilihan.
Area pengembangan sistem selanjutnya dilakukan pada proses nomor tiga dari Gambar 6, 7, dan 8. Untuk memperjelas ruang lingkup pengembangan sistem maka penulisan proses nomor tiga diberi warna merah dan terletak di dalam lingkaran bergaris putus-putus untuk membedakan dengan proses lainnya.
Perancangan Pengembangan Sistem
1 Perancangan Online Voting dengan Java Web Start
Pemilu Online Voting dirancang dengan model topologi infrastruktur dimana komunikasi antara voter, CLA, dan CTF dijembatani oleh wireless acces point. Gambar 9 menunjukkan rancangan topologi pemilu
online. Sistem Online Voting dirancang dengan mengadopsi cara kerja protokol Two Central Facilities. Oleh karenanya perancangan Java Web Start dimulai dengan memisahkan CLA dan CTF ke dalam dua server yang berbeda. Selanjutnya dilakukan pendistribusian kunci-kunci antara voter, CLA dan CTF. Pada penelitian sebelumnya program Online Voting
diimplementasikan untuk single host sehingga kunci-kunci milik voter, CLA, dan CTF berada pada satu berkas yang sama. Pada penelitian ini program Online Voting dikembangkan agar dapat diimplementasikan menjadi multiple host. Agar dapat mempermudah voter dalam menjalankan program ini, dilakukan konversi dari aplikasi berbasis desktop menjadi basis web
dengan teknologi Java Web Start. CLA yang berfungsi untuk memverifikasi voter bertindak sebagai server pertama sehingga berkas aplikasi pemilu online yang harus diunduh oleh voter
12
Gambar 9 Jaringan Wireless Online Voting
dengan Topologi Infrastruktur.
2 Perancangan pengiriman kunci simetri Program Online Voting yang dibangun oleh Sireesha, Janga dan So-In Chakchai pada
awalnya dirancang dengan mengimplementasikan 1024 RSA sehingga
enkripsi dilakukan hanya terhadap kunci simetri. Penelitian ini dirancang agar dapat menambah faktor keamanan sistem sehingga sistem yang baru kini menggunakan 2048 RSA. Dengan peningkatan ini, nilai Nonce dan SHA-1
dapat dikombinasikan bersama dengan kunci simetri agar proses pengiriman kunci menjadi lebih aman.
Hasil perancangan pengiriman kunci simetri dari voter menuju CTF dijelaskan sebagai berikut:
1 Inisialisasi key generator dilakukan dari 1024 menjadi 2048 RSA.
2 Voter membangkitkan kunci simetri dengan algoritme Blowfish.
3 Kunci simetri dikirim melalui 2 paket : a) Paket yang pertama berisi kunci simetri
yang kemudian dienkripsi dan dikirimkan dari voter menuju CTF. b) Paket kedua berisi kunci simetri yang
digabungkan dengan nilai Nonce dan nilai Hash dari kombinasi kunci simetri dan Nonce.
4 Kunci simetri pada paket pertama kemudian dienkripsi dengan algoritme RSA dan dikirimkan ke CTF.
5 Untuk memperkuat faktor keamanan pengiriman kunci voter mengirimkan paket kedua kepada CTF.
6 Selanjutnya jika semua proses verifikasi berhasil dilewati, voter akan menerima
balasan paket dari CTF berupa pesan, nilai
Hash, dan Nonce Balasan.
7 Voter akan melakukan pemeriksaan nilai
Hash.
8 Jika Nilai Hash valid maka pemeriksaan dilanjutkan dengan memeriksa nilai Nonce.
Diagram alir pengiriman dan penerimaan kunci simetri oleh voter dapat dilihat pada Gambar 10.
Mulai
Membangkitkan objek
pasangan kunci simetri
dengan algoritme Blowfish
Kunci Simetri dan Nonce
Kunci Simetri +
Nonce
Mencari nilai Hash dari Kunci Mengirim Cipher
Text (1) ke CTF Menerima Pesan 1 yang dienkripsi dengan Kunci
Gambar 10 Diagram Alir Pengiriman dan Penerimaan Kunci Simetri Voter.
Hasil perancangan pengiriman kunci simetri dari CTF menuju voter dijelaskan sebagai berikut:
1 CTF mendapatkan kiriman paket pertama dari voter.
13 3 CTF kemudian menerima paket kedua dari
voter.
4 CTF mendekripsi paket kedua dan mendapatkan pesan nilai Nonce dan Hash
dari kunci simetri yang dikirim pada paket pertama.
5 CTF memeriksa nilai Hash yang dikirimkan. Jika nilai Hash tidak valid
maka sistem dihentikan. Jika valid, maka CTF melakukan pemeriksaan terhadap nilai Nonce.
6 Jika nilai Nonce tidak valid maka sistem dihentikan, jika nilai Nonce valid maka CTF akan mengirimkan Nonce balasan ke
voter. Nilai Nonce balasan dienkripsi dan dikirimkan bersama dengan pesan konfirmasi CTF serta nilai Hash dari pesan. Diagram alir pengiriman dan penerimaan kunci simetri oleh CTF dapat dilihat pada Gambar 11.
Gambar 11 Diagram Alir Pengiriman dan Penerimaan Kunci Simetri CTF. Implementasi
1. Implementasi Online Voting dengan Java Web Start
Perubahan aplikasi Online Voting dari basis
desktop menjadi basis web diolah dengan menggunakan teknologi Java Web Start dengan Netbeans 6. Pengaturan Java Web Start
dilakukan pada project properties program
Online Voting. Pada window tersebut menu
Run dipilih dan pada field Main Class kelas utama yang dipilih adalah kelas Voter.java. Kelas ini dipilih karena kelas Voter
mengandung semua fungsi utama yang diperlukan oleh voter untuk menjalankan program Online Voting dari komputer voter. Selanjutnya pengaturan konfigurasi diubah menjadi Web Start. Konfigurasi Java Web Start
dapat dilihat pada Gambar 12 dan 13.
Pada saat dilakukan build pada project Online Voting, Java Web Start akan menghasilkan 3 berkas, yakni berkas aplikasi bertipe jar, berkas launch bertipe html, serta berkas launch bertipe jnlp. Berkas aplikasi bertipe jar berisi semua kelas dan berkas lain yang dibutuhkan voter untuk menjalankan aplikasi voting. Berkas-berkas yang dibungkus ke dalam satu berkas bertipe jar di antaranya kelas User Interface.Java,Voter.Java, Voter.private, Voter.public, serta CA Public. Berkas launch bertipe jnlp digunakan untuk memudahkan voter dalam menjalankan program
Online Voting. Dengan berkas ini voter hanya perlu menekan sebuah link dan mendapatkan aplikasi Online Voting berjalan di luar browser. Berkas launch bertipe html tidak diperlukan untuk menjalankan program Online Voting
karena fungsi untuk menjalankan program dari
browser telah diintegrasikan dengan situs IPB
Online Voting. Tampilan antarmuka Situs IPB
Online Voting dapat dilihat pada Gambar 14 dan 15.
Voter dapat menjalankan program Online Voting dengan cara mengunduh Voter.rar dari situs IPB Online Votng. Selanjutnya hasil unduhan diekstrak ke dalam direktori C pada komputer voter. Langkah terakhir dilakukan dengan menjalankan berkas launch.jnlp.
Jika prosedur menjalankan aplikasi Voting
telah dilakukan dengan benar maka tampilan antarmuka Online Voting akan muncul seperti yang terlihat pada Gambar 16. Berkas launch
bertipe .jnlp dapat dilihat pada Gambar 17.
Gambar 12 Pengaturan Java Web Start pada
14 Gambar 13 Pengaturan Java Web Start pada
project properties window menu Application Web Start.
Gambar 14 Situs IPB Online Voting Centre
(Bagian 1).
Gambar 15 Situs IPB Online Voting Centre
(Bagian 2).
Gambar 16 Tampilan antamuka Online Voting.
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+"
codebase="file:/C:/Voter/ " href="launch.jnlp">
<information>
<title>OnlineVoting</title>
<vendor>Matt</vendor>
<description>OnlineVoting</description>
<description
kind="short">OnlineVoting</description>
<homepage href=""/>
<offline-allowed/>
</information>
<security>
<all-permissions/>
</security>
<resources>
<j2se version="1.5+"/>
<jar href="OnlineVoting.jar" main="true" download="eager"/>
</resources>
<application-desc main-class="Voter">
<argument>localhost</argument>
<argument>localhost</argument>
</application-desc>
</jnlp>
Gambar 17 Berkas launch.jnlp untuk memunculkan aplikasi Online Voting. 2.Implementasi Pengiriman Kunci Simetri
Untuk mengembangkan 1024 RSA menjadi 2048 RSA, hal pertama yang dilakukan adalah membuat inisialisasi pada Kelas GenerateRandomKeys.java. Hasil pemrograman untuk kelas GenerateRandomKeys dapat dilihat pada Lampiran 1.
Selanjutnya untuk memulai komunikasi antara voter dengan CTF, voter membangkirkan kunci simetri dengan algoritme Blowfish seperti yang ditujukkan pada pemrograman berikut :
KeyGenerator kg =
KeyGenerator.getInstance("Blowfish");
SecretKey symmetricKey = kg.generateKey();
15 Cipher cipher =
Cipher.getInstance("RSA");
Voter selanjutnya mengirimkan algoritme kunci simetri serta panjang kunci simetri kepada CTF. Hal ini diperlukan agar CTF dapat membangun kunci yang sama seperti kunci simetri yang dimiliki voter. Pemrograman untuk membangun kunci simetri dapat dilihat pada coding di bawah ini:
ByteArrayOutputStream keyBytes = new ByteArrayOutputStream();
DataOutputStream keyStream = new
DataOutputStream(keyBytes);
byte [] encodedKey = symmetricKey.getEncoded();
System.out.println("ini isi encoded Key:"+ encodedKey);
Selanjutnya kunci simetri dienkripsi menggunakan algoritme RSA dan dikirimkan menuju CTF dengan pemrograman yang dituliskan di bawah ini :
Setelah paket pertama selesai dikirimkan,
voter mengirimkan paket kedua yang berisi kunci simetri, Nonce serta nilai Hash. Kunci simetri yang dibangkitkan oleh algoritme
Blowfish memiliki tipe data byte. Nilai Nonce kemudian dibangkitkan dan selanjutnya digabungkan dengan kunci simetri dengan pemrograman sebagai berikut :
iNonce3 = nctf.nextInt(maxNonce+1);
AddNonce2=test2+" "+iNonce3;
Untuk menjaga integritas pesan yang nantinya akan dikirimkan ke CTF, maka langkah selanjutnya adalah mencari nilai Hash
dari pesan.
byte [] test3=AddNonce2.getBytes();
byte [] theDigest2=digestIt(test3);
String decode64AddNonce2 = displayBase64(digestIt(theDigest2));
Nilai kunci simetri, Nonce, dan nilai Hash
digabungkan menjadi paket 2 dan kemudian dikirimkan ke CTF:
String inputAddNonce2=AddNonce2+"
Setelah serangkaian proses di atas selesai dilakukan, langkah selanjutnya adalah voter
menunggu kiriman paket balasan dari CTF. Jika verifikasi pada CTF berhasil dilakukan maka
voter akan mendapatkan paket dan mendekripsinya serta melakukan pemeriksaan pada nilai Nonce yang dikirimkan untuk memastikan bahwa benar CTF telah menerima kunci simetri dari voter. Pemrograman untuk langkah ini dituliskan sebagai berikut:
Cipher cipherstream =
Cipher.getInstance("Blowfish");
cipherstream.init(Cipher.DECRYPT_MODE, symmetricKey);
byte[] decryptedKs =
cipherstream.doFinal((byte[])input.readO bject());
System.out.println("5.Voter Client menerima pesan pertama dengan Ks :"+decryptedKs.toString());
decryptedString = new
String(decryptedKs);
int idx = 0; int tokenCount;
String words[] = new String [500];
StringTokenizer st = new
StringTokenizer(decryptedString);
tokenCount = st.countTokens();
while (st.hasMoreTokens()) { words[idx] = st.nextToken(); idx++; }
// check CTF signature
String CheckSHA1 = words[0];
byte [] dataBuffer1 =
CheckSHA1.getBytes();
byte [] theDigest1 =
digestIt(dataBuffer1);
String decode64 =