Disclosure, merupakan akses terhadap informasi dari pihak yang tidak berhak. Deception, merupakan penerimaan dari data yang salah. Disruption, merupakan gangguan atau pencegahan dari operasi yang benar. Usurpation, merupakan pengaturan dari beberapa bagian sistem oleh pihak yang tidak berhak. Kebijakan (Policy) Kebijakan merupakan suatu pernyataan yang dibutuhkan untuk membatasi sesuatu yang diperbolehkan dan tidak dalam pembuatan sistem pemilu. Banyak hal yang harus diberi kebijakan seperti contoh kebijakan atau aturan yang diterapkan oleh KPU dalam melaksanakan pemilu secara manual. Dalam hal ini dapat berupa suatu prosedur, metode, alat, ruang lingkup akses dan lain-lain. Spesifikasi (Specification) Setelah kebijakan dibuat, maka akan dilakukan spesifikasi dari kebijakan tersebut. Spesifikasi dibuat agar dapat menentukan kebutuhan dari sistem yang akan dikerjakan. Menurut Bishop (2003), spesifikasi adalah pernyataan baik formal maupun informal mengenai fungsi sistem yang diinginkan. Spesifikasi dapat berupa bagian low-level, kombinasi kode program dengan logika dan hubungan kewaktuan untuk menetapkan tugas yang dikerjakan. Perancangan (Design) Perancangan merupakan hal yang sangat penting dalam pembuatan suatu sistem. Tahap ini merupakan tahap untuk merinci kebutuhankebutuhan dari spesifikasi yang telah dibuat. Dengan demikian perancangan tersebut tidak diizinkan keluar dari spesifikasi yang telah dibuat. Perancangan dibuat secara detail, mulai dari fungsi-fungsi yang dibutuhkan hingga alur kerja sistem. Pada penelitian ini dibuat perancangan dalam beberapa kelompok yaitu: perancangan GUI untuk Voter, pengembangan alur komunikasi CLA server dengan voter dari penerimaan Username dan Password hingga pengecekan (otentikasi Voter), serta perancangan penyimpanan username dan password dengan menggunakan Toplink Object Relational Mapping.
Implementasi (Implementation) Pada tahap ini hasil analisis dan perancangan akan diimplementasikan menjadi suatu sistem dengan lingkungan implementasi sebagai berikut: 1
2 3 4 5 6 7
Implementasi untuk GUI menggunakan Java Swing dan Java AWT dengan menitikberatkan pada penggunaan Layout Manager. Platform : Java 1.4 (Platform independent & inbuilt security features). RSA (2048 bits) : Enkripsi kunci publik. BlowFish (56 bits) : Enkripsi kunci simetri. SHA-1 (160 bits) : signature/Hashing. CA : Transmisi kunci publik secara aman. Implemetasi untuk penyimpanan username dan password menggunakan object relational mapping yaitu Toplink.
Pengujian (Testing) Tahap pengujian dilakukan untuk menguji apakah sistem yang dibangun memberi hasil keluaran seperti yang diharapkan. Pengujian pada penelitian ini dilakukan dengan Metode Black Box dan simulasi. Lingkungan Pengembangan Perangkat keras dan perangkat lunak yang digunakan dalam penelitian ini berupa notebook dengan spesifikasi sebagai berikut: Perangkat keras: Processor Intel Pentium® Core TM Duo Memori 1 GB Harddisk 160 GB Perangkat Lunak: Sistem operasi: Windows XP SP2 Netbeans IDE 6.5 XAMPP-win32-1.6.8
HASIL DAN PEMBAHASAN Threats (Ancaman) Ancaman merupakan hal yang sangat perlu untuk diperhatikan karena ancaman adalah suatu tindakan yang berpotensi untuk merusak sistem keamanan. Pada penelitian ini CLA server membutuhkan suatu analisis ancaman dalam hubungannya dengan komunikasi data ke voter atau sebaliknya.
5
CLA server sebagai salah satu server yang bertugas untuk otentikasi dan validasi voter, sehingga ada beberapa hal kemungkinan ancaman yang timbul, yaitu: a
b
c
Snooping (pengintaian), ancaman ini bersifat pasif karena pengintai hanya memata-matai. Ancaman ini merupakan bagian dari disclosure/ akses informasi bagi yang tidak berwenang. Di dalam kaitannya dengan CLA server pengintai berusaha mengetahui username dan password. Untuk mengatasi hal ini dilakukan pengiriman username dan password kepada voter melalui email dengan terlebih dahulu voter melakukan registrasi pada sistem. Modification or alteration (modifikasi atau pengubahan), ancaman ini bersifat aktif karena melakukan perubahan terhadap sistem yang ada. Ancaman ini merupakan bagian dari disruption dan usurpation/ pengaturan dan perubahan terhadap bagian sistem oleh pihak yang tidak berwenang . Pada CLA server pengubahan berbahaya jika terjadi di beberapa bagian berikut: Pada Voter database. Database ini merupakan tempat menyimpan data dari CLA server yang kemudian dikirim kepada voter melalui e-mail. Pengubahan kunci simetri dari CLA yang merupakan kunci untuk keamanan komunikasi antara Voter dan CLA. Hal ini mungkin terjadi pada saat voter mengirimkan pesan enkripsi “CLAID-VoterID” bersama kunci simetri blowfish dengan kunci publik CLA. Namun kunci publik yang digunakan menggunakan kunci publik dengan 2048 bit yang saat ini kemungkinan untuk diprediksi masih sulit. Masquering (penyamaran) yaitu peniruan terhadap suatu entitas terhadap entitas yang lain. Ancaman ini akan memancing korban (voter) agar memercayai yang melakukan komunikasi dengannya adalah entitas/ pihak yang benar. Akan tetapi, sebenarnya yang berkomunikasi adalah entitas yang lain atau disebut attacker (penyerang). Ancaman ini merupakan bentuk dari deceptio(penerimaan dari data yang salah) dan usuraption Dalam konteks CLA server hal ini terjadi jika voter menyangka bahwa pihak yang berkomunikasi dengannya adalah CLA server yang benar padahal tidak. Hal ini
akan menyebabkan suara yang voter pilih tidak dapat dihitung oleh sistem. Sebaliknya jika CLA server menyangka ia sedang berkomunikasi dengan voter yang benar maka hasil perhitungan suara tidak akan valid. Untuk menangani masalah ini diperlukan otentikasi dari CLA server dan voter. Untuk mengatasi hal ini, CLA dan voter memiliki bukti untuk memastikan bahwa masing-masing mereka merupakan pihak yang benar. Bukti tersebut berupa CA atau Certificate Authority. CA merupakan identitas dari CLA dan voter. Alur pembuktian dari masing-masing entitas adalah ketika CLA mengirimkan paket yang dienkripsi oleh kunci private CLA dan didekripsi oleh voter menggunakan kunci publik. Jika voter tidak dapat melakukan dekripasi terhadap paket tersebut maka CLA bukanlah entitas yang benar. Policy (Kebijakan) Kebijakan keamanan adalah pernyataan atas apa yang diperbolehkan dan tidak diperbolehkan dalam menjalankan sebuah sistem. Dengan demikian sistem yang dibangun secara komputerisasi akan digunakan jika terdapat protokol yang menjamin (Schneier 1996): 1 Privasi individu 2 Pencegahan terhadap kecurangan Berdasarkan pemilu yang sesungguhnya, 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. Specification (Spesifikasi) Berdasarkan ruang lingkup penelitian yang dijelaskan sebelumnya. Sistem membutuhkan spesifikasi sebagai berikut. Sistem protokol kriptografi untuk CLA server, GUI untuk voter dan database untuk menyimpan data hak 6
akses untuk CLA membutuhkan spesifikasi sebagai berikut: a
b
c
Sistem dari voter ke CLA membutuhkan: 1 Pengamanan data untuk pengiriman kunci simetri. Pengiriman ini menggunakan kunci publik. 2 CLA memperbolehkan voter untuk masuk/log in beberapa kali, namun untuk memilih hanya boleh satu kali. 3 Pengamanan data untuk menjaga keutuhan data dengan menggunakan fungsi hash. 4 Otentikasi dan verifikasi voter dan CLA dengan menggunakan CA. Untuk GUI sistem membutuhkan: 1 Java swing dan Java awt untuk pembuatan GUI. 2 GUI untuk voter dapat melakukan log in. 3 GUI untuk voter melihat hasil komunikasi antara voter dan CLA. 4 GUI untuk voter memilih kandidat yang hanya diperbolehkan untuk memilih satu kandidat. 5 GUI untuk verifikasi pilihan dan untuk log out. Untuk menyimpan data username, password, dan ValidationID membutuhkan: 1 ORM (Object Relational Mapping) yang berguna untuk konversi dari database relasional ke object oriented. 2 Database untuk tempat menyimpan datanya.
a
Perancangan GUI yang dibutuhkan untuk aplikasi Online Voting cukup sederhana. Berdasarkan spesifikasi yang telah dibuat, GUI akan dibangun dengan berbasiskan pada container dari layout manager yang berguna mengatur posisi dari bagian-bagian GUI. Di samping itu, penelitian ini menggunakan package dari Java Swing dan Java AWT untuk pemrograman GUI. Adapun perancangan dari GUI yang akan dibangun adalah: Perancangan susunan bagian-bagian dengan menggunakan layout manager sehingga posisinya dapat disesuaikan. Perancangan bagian untuk voter dapat melakukan log in (masuk ke sistem). Bagian ini terdiri atas field untuk username dan password serta tombol submit agar sistem dapat menerima username dan password dari voter. Perancangan GUI setelah log in yaitu perancangan bagian daftar kandidat yang akan dipilih. Bagian ini akan dirancang menggunakan Radio Button agar voter hanya dapat memilih satu kandidat. Perancangan tombol untuk melakukan pilihan dan verifikasi pilihan. Perancangan Result Area atau area hasil yang berfungsi untuk menampilkan alur dari sistem. Misalnya kesalahan memasukkan username dan password, pengiriman data ke CLA dan lain sebagainya yang berhubungan dengan alur sistem secara umum. Perancangan tombol untuk keluar dari sistem. Bagian ini dirancang pada sistem setelah voter melakukan log in.
Design (Perancangan) Pada penelitian ini dilakukan beberapa bagian perancangan sistem pemilu online. Sebelumnya program pemilu online dibangun oleh Sireesha, Janga dan So-In Chakchai, akan tetapi akan dilakukan pengembangan lebih lanjut dari sistem tersebut. Perancangan secara umum dari sistem online voting ini menggunakan protocol two central facilities. Berdasarkan ruang lingkup yang dijelaskan sebelumnya, perancangan yang dikembangkan pada penelitian ini berfokus pada komunikasi antara voter dan CLA hingga voter mendapatkan nilai validationID. Perancangan yang akan dilakukan meliputi tiga rancangan utama yaitu: perancangan GUI untuk voter, perancangan alur komunikasi voter dan CLA, perancangan database menggunakan ORM. Hasil perancangan untuk ketiga bagian tersebut sebagai berikut:
Perancangan GUI
b
Alur komunikasi voter-CLA
Pada penelitian ini, perancangan proses dari alur komunikasi voter ke CLA Server dibahas secara umum. Secara umum CLA berfungsi sebagai salah satu server yang memiliki beberapa fungsi utama yaitu: 1 2
3
Memberikan Certificate kepada masingmasing voter. Melakukan pertukaran kunci simetri blowfish dengan menggunakan kunci publik CLA. Melakukan otentikasi terhadap voter yang valid.
7
Berdasarkan fungsi utama di atas, berikut alur secara keseluruhan dari protokol voter ke CLA. Mula-mula CLA mengirim CA kepada voter. Setelah voter menerima CA kemudian voter mendekripsi CA dengan menggunakan berkas CA.publik. Hasil dari dekripsi voter mendapatkan CLA publik. Voter mengirimkan pesan ke CLA yang sudah dienkripsi dengan kunci publik CLA. Pesan tersebut berisi CLAID-VoterID, blowfish symmetric key, dan nilai Nounce(number used once). Nilai Nounce atau nomor yang digunakan hanya sekali berfungsi untuk menghindari ancaman penyerangan kembali (reply attack). CLA menerima pesan dari voter dan mendekripsinya. Setelah didekripsi maka CLA mendapatkan kunci simetri. Kunci ini berfungsi untuk komunikasi dengan voter. Kemudian CLA mengirim CLAID dan VoterID dengan menggunakan SHA-1 unuk menjaga keutuhan pesan. Kemudian CLA mengirim pesan ke voter CLAID-VoterID beserta nilai nounce+1. Kemudian voter mengirimkan username dan password kepada CLA dengan enkripsi dan SHA-1. CLA server akan mendekripsi pesan dari voter tersebut dan memeriksa fungsi hashnya. Setelah dilakukan pengecekan keutuhan pesan maka CLA akan melakukan otentikasi username dan password dari voter. Setelah melakukan otentikasi dan jika dianggap valid maka CLA mengirimkan validationID ke voter dan akan digunakan oleh voter untuk melakukan pilihan. Disamping itu CLA juga menambahkan jumlah bagi voter yang sama melakukan log in dan disimpan dalam CLA.voters-count. Flowchart dari komunikasi CLA-voter hingga voters mendapatkan validationID dapat dilihat pada Gambar 5.
Membangkitkan objek untuk kunci-kunci dari server
mulai
Mengirim CLA.cert ke voter dengan enkripsi
Membuat koneksi jaringan
Membaca CLA.cert
Menerima pesan dari voter
CLA.publik, CLA.cert
Kembali ke mulai
CLA.publik, CLA.private
Cek isi paket, cocok atau tidak ?
Tidak
KS, nilai nounce, hash
CLA mendekripsi pesan
Ya Mengirim pesan ke voter dengan KS
Nounce+1, CLAIDVoterID
Dekripsi pesan voter
Menerima pesan dari voter
CLA mengirim ValidationID ke voter
dari
Ya
username, password, SHA1
Apakah username & password benar
Tidak Alur selesai
CLA memasukkan data log in ke data store CLA
Kembali mulai
ke
Gambar 5. Flowchart secara umum Alur voter CLA
c
Perancangan ORM
database
menggunakan
Pada penelitian ini database berfungsi sebagai tempat menyimpan data dari CLA.voters. Data ini kemudian akan dikirim ke email voter yang telah melakukan registrasi sebagai suatu verifikasi. Database pada penelitian dirancang menggunakan database relasional. Namun, dikarenakan pada penelitian ini menggunakan bahasa pemrograman Java yang berbasis 8
orientasi objek maka dibutuhkan suatu ORM/ object relational mapping untuk mengonversinya. ORM merupakan suatu pemetaan database yang bersifat relasional ke orientasi objek. Perancangan database pada penelitian ini menggunakan Toplink sebagai ORM. Tabel yang terdapat pada database dibentuk menjadi objek yang dapat diakses dari suatu model kelas tertentu. Hasil analisis perancangan konseptual database CLA ini hanya memiliki satu entitas, yaitu claserver yang merepresentasikan tabel pada database relasional. Hasil perancangan konseptual dari database CLA ini dapat dilihat pada Tabel 1 berikut: Tabel 1 Perancangan konseptual database CLA Nama Entitas
Atribut
Deskripsi
claserver
nomor, username, password, validationid
Informasi user access
Implementation (implementasi) Implementasi untuk pengembangan sistem ini menggunakan bahasa pemrograman Java dengan menggunakan IDE Netbeans 6.5. Implementasi dari pembuatan GUI dimulai dari menetukan posisi dari masing-masing blok dengan mengggunakan kontainer pada layout manager. Setiap bagian didefinisikan dalam satu blok. Masing-masing blok juga didefiniskan ukurannya, pengaturan posisi, dan isi dari blok tersebut. Pendefinisian ukuran dan posisi dilakukan memanfaatkan fungsi dari layout manager yaitu GridBagLayout. Pertama, dibuat objek dari GridBagLayout. Kemudian, akan digunakan fungsi yang ada untuk menentukan rincian dari pengaturan masing-masing blok yang akan dibuat. Java Swing dan Java Awt digunakan untuk membuat graphic seperti warna, font, tombol, radio button untuk daftar kandidat, field dan lain-lain. Secara umum, hasil dari pengembangan User Interface ada 3 bagian. Pertama, bagian sebelum log in, kedua, bagian setelah log in dan monitoring pada area hasil. Di lain pihak untuk log out, voter hanya menekan tombol log out ketika sistem berada dalam kondisi log in.
Bagian pertama, voter akan disediakan blok untuk melakukan log in, terdiri atas tempat masukan username dan password. Kedua, bagian setalah log in, sistem menyediakan daftar pemilih dalam bentuk radio button, tombol pilihan, tombol verifikasi pilihan dan tombol log out. Ketiga, bagian area hasil yang merupakan implementasi dari TextArea dan merupakan tempat monitoring komunikasi antara voter dan sistem. Hasil dari pegembangan GUI dapat dilihat pada Lampiran 2. Pada penelitian ini, untuk CLA server tidak dilakukan pengembangan lebih lanjut dari sistem yang sudah ada. CLA server yang ada hanya dianalisis dan dilakukan monitoring stabilitas server. Secara umum CLA server memiliki memiliki fungsi yaitu membaca meesage digest, membaca array byte dalam basis format 64, memisahkan ValidationID yang kemudian dikirim ke voter dan fungsi untuk media kontrol perhitungan bagi setiap voter melakukan log in. Implementasi dari pembuatan database menggunakan bahasa pemrograman Java dan database MySQL. Seperti yang diuraikan pada metode penelitian, untuk menghubungkan database relasional ke bahasa pemrograman berorientasi objek menggunakan Toplink Object Relational Mapping. Toplink akan memetakan suatu tabel ke dalam suatu kelas model agar dapat diakses dalam bentuk objek. Dengan demikian untuk mengakses tabel pada database tidak dalam bentuk query biasa seperti query SQL tapi mengakses model yang telah dibentuk menjadi objek. Database CLA hanya terdiri atas satu tabel yaitu tabel dari CLAvoters. Tabel ini menyimpan data berupa username, password dan ValidationID. Database ini bertujuan untuk data yang akan dikirim kepada voter melalui email. Voter yang akan dikirimkan adalah voter yang telah melakukan registrasi. Proses ini merupakan proses verifikasi voter. Testing (Pengujian) Metode terakhir adalah tahap pengujian terhadap sistem Online Voting. Pengujian dilakukan menggunakan black-box testing. Pengujian dibagi ke dalam beberapa tahap, yaitu: 1 Tahap menjalankan berkas generate random key yang berfungsi untuk membentuk berkas-berkas yang dibutuhkan dalam protokol sistem online voting, dan mengecek apakah data untuk CLAvoters masuk ke dalam database 9