2 BAB II DASAR TEORI Pada bab ini akan dibahas mengenai tinjauan pustaka yang menjadi dasar dari pembuatan Tugas Akhir. Pokok-pokok permasalahan yang dibahas diantaranya definisi elektronik voting, Paillier kriptosistem, barcode, pemrograman java dan jaringan. 2.1 Elektronik Voting Elektronik voting pertama kali ditemukan oleh Thomas A. Edison pada tahun 1869[5]. Elektronik voting yang biasa disebut e-voting adalah salah satu bentuk pemilihan suara dari sejumlah option kandidat dengan memanfaatkan teknologi elektronisasi untuk membuat pekerjaan lebih cepat selesai [7]. Contoh teknologi evoting adalah punch cards, optical scan voting system, dan touch screen system. Teknologi ini dapat mentransmisikan kertas suara (ballot) dan hasil suara melalui telepon, jaringan komputer atau internet. E-voting menggunakan protokol-protokol pemilihan yang disebut sebagai “secure election”. Protokol- protokol ini berisi aturanaturan yang harus dipatuhi untuk mendapatkan hasil sesuai dengan yang diinginkan. Adapun input dan output dari e-voting dapat dilihat pada Gambar 2.1. Gambar 2.1 Input dan output dari e-voting 9 10 2.2 Metode Scratch and Vote Metode scratch and vote adalah sebuah metode pada sistem pemilihan suara dengan maksud untuk meminimalkan harga dan kompleksitas sistem, yaitu dengan cara: • Pemilihan suara yang menggunakan teknik kriptografi. • Kertas suara (ballot) yang bersifat paper-based dan dapat dicetak menggunakan teknologi yang sedang berkembang saat ini. • Kertas suara yang verifikasinya tanpa melibatkan petugas pemilihan suara. • Perhitungan hasil suara yang hanya mempercayakan pada proses dekripsi dan menggunakan homomorphic enkripsi. • Hasil suara dienkripsi dan dipublish pada sebuah bulletin board dengan nama pemilih atau nomer identitas pemilih dalam bentuk asli (tanpa dienkripsi). Sehingga setiap orang dapat melihat bahwa Alice telah melakukan pemilihan tapi tidak tahu apa yang dia pilih. Kriptografi dipakai pada metode ini dikarenakan kriptografi dapat menggabungkan public auditability dan ballot secrecy. Adapun langkah-langkah pemilihan suara adalah sebagai berikut : • Sign in : voter harus login terlebih dahulu kemudian baru mendapatkan webpage kertas suara dengan urutan list kandidat yang bersifat random untuk setiap kertas suaranya. Petugas pemilihan tidak mengetahui urutan kandidat yang telah dirandom disetiap webpage kertas suara. Webpage kertas suara memiliki garis pembatas secara vertikal ditengah kertas untuk memisahkan list kandidat yang terletak disebelah kiri dan checkbox yang terletak disebelah kanan. Selain itu 11 juga garis pembatas secara horizontal untuk memisahkan dengan 1D-barcode[2]. • Make selection : Pemilih mengisi webpage kertas suara kandidat yang telah disediakan. • Print Ballot : Webpage kertas suara yang telah diisi secara benar kemudian di cetak sehingga dapat dipakai sebagai barang bukti bagi voter bila terjadi kesalahan. • Detach ballot halves : Webpage kertas suara yang telah dicetak, dipisah berdasarkan garis pembatas kertas. Dimana kertas suara yang berisi list kandidat pilihan akan dibuang. Dengan catatan bagian yang dibuang tidak berisi informasi lain, hanya berisi urutan list kandidat. Casting : Setiap voter dapat memberikan kertas suara yang berisi barcode kepada petugas pemilihan untuk membaca arti dari image barcodenya. Barcode dibaca dengan menggunakan sebuah alat scanner. Verification : Voter dapat log on ke website bulletin board untuk memverifikasi hasil pilihan voter yang telah dihitung. • • 2.3 Paillier Kriptosistem Sistem kriptografi Paillier adalah sebuah sistem yang berbasis algoritma asimetris probabilistik. Algoritma enkripsi yang digunakan adalah sebuah algoritma kriptografi kunci publik. Sistem ini ditemukan oleh Pascal Paillier pada tahun 1999[8]. Sistem kriptografi Paillier dibuat berdasarkan pemikiran bahwa untuk menghitung kelas residu yang ke–n, perhitungan yang dibutuhkan sangat sulit. Hal ini dikenal sebagai asumsi Composite Residuosity (CR). Contohnya adalah penggunaan himpunan derajat pada sebuah bilangan n = pq yang sangat sulit untuk difaktorkan, dimana p dan q adalah dua buah bilangan prima. Dapat dilihat bahwa teknik trapdoor ini dapat menyediakan 12 sebuah blok pembangun kriptografi untuk mendapat sebuah kriptosistem yang berbasis kunci publik[8]. Sistem kriptografi Paillier ini memiliki properti – properti seperti random-self-reducibility, additive homomorphic property, dan self–blinding. Properti-properti inilah yang menyebabkan kriptosistem Paillier ini dapat digunakan untuk berbagai keperluan, seperti pemungutan suara elektronik dan uang elektronik. Pada sistem pemilihan suara elektronik, kriptosistem Paillier ini dapat merupakan pilihan yang cocok karena beberapa pertimbangan : 1. Homomorphic property. Properti homomorfisme memungkinkan penjumlahan nilai yang dienkripsi dengan nilai lain, kemudian hasil penjumlahannya dapat didekripsi tanpa mengetahui nilai–nilai yang membentuknya. Dengan maksud agar suara hasil pilihan voter tetap terjaga kerahasiaannya. Sebuah fungsi enkripsi F(M) dikatakan homomorphic jika F(M1)F(M2) = F(M1 +M2), yaitu, jika perkalian dua pesan yang terenkripsi adalah sama dengan penjumlahan dua pesan yang terenkripsi. 2. Karena properti semantic security dari kriptosistem Paillier ini, maka suara yang masuk dapat dilindungi dari serangan yang bersifat Chosen Plaintext attack, namun karena sifatnya yang malleable, maka suara yang masuk masih dapat diserang melalui metode Chosen Ciphertext attack, kecuali apabila menggunakan skema ROM. 3. Properti malleability (kelenturan logika didalam pemrograman komputer) yang dimiliki oleh kriptosistem Paillier ini. 13 2.3.1 Key Generation Key generation adalah pembuatan kunci secara elektronis dengan menggunakan suatu alat pembangkit rangakain kunci (key generator). Metode ini sudah menggunakan alat elektronik dalam pembangkitan kuncinya. Biasanya menggunakan RK Generator seperti RNG (Random Number Generator). Proses key generation pada Paillier kriptosistem adalah sebagai berikut : 1. Pilih 2 bilangan prima p dan q secara random dan bebas disetiap bilangan prima tersebut. 2. Hitung nilai n, dimana n =pq and λ = lcm(p − 1,q − 1) 3. Pilih bilangan integer g secara random dimana 4. Bilangan basis g yang dipilih secara acak dari elemenelemen yang ordenya dapat dibagi dengan n dengan mengecek modular multiplicative inverse Dimana fungsi L adalaha sebagai berikut 5. Public key untuk enkripsi adalah (n,g) 6. Private key untuk dekripsi adalah (λ,µ). 2.3.2 Enkripsi Di bidang kriptografi, enkripsi ialah proses mengamankan suatu informasi dengan membuat informasi tersebut tidak dapat dibaca tanpa bantuan pengetahuan khusus [6]. 14 Algoritma enkripsi pada Paillier kriptosistem : 1. Pesan m dienkripsi dimana 2. Pilih r secara random r dimana 3. Perhitungan ciphertext : . 2.3.3 Deskripsi Algoritma deskripsi pada Paillier kriptosistem : 1. Ciphertext 2. Compute message: 2.4 Barcode Barcode adalah sebuah perwakilan informasi yang dapat terbaca oleh mesin. Biasanya berupa baris warna hitam di atas latar belakang putih yang terpola jaraknya, yang mewakili 1 dan 0 dalam bilangan biner. Baris-baris ini mengandung informasi yang mudah terbaca oleh mesin[3]. 2.4.1 Barcode Code 39 Code 39 dapat mengkodekan karakter alphanumeric yaitu angka desimal dan huruf besar serta tambahan karakter spesial-.*$/%+. Satu karakter dalam Code 39 terdiri dari 9 elemen yaitu 5 bar (garis vertikal hitam) dan 4 spasi (garis vertikal putih) yang disusun bergantian antara bar dan spasi. 3 dari 9 elemen tersebut memiliki ketebalan lebih tebal dari yang lainnya oleh karenanya kode ini biasa disebut juga code 3 of 9 , 3 elemen yang lebih 15 tebal tersebut terdiri dari 2 bar dan 1 spasi. Elemen yang lebar mewakili digit biner 1 dan elemen yang sempit mewakili digit biner 0. 2.5 Buletin Board Bulletin board ditemukan oleh Benaloh[], merupakan bentuk komunikasi pada proses pemilihan suara. Buletin board adalah channel komunikasi yang berisi data yang telah ditulis yang tidak dapat diubah atau dihapus, bersifat read-only dan dapat dibaca public. Bulletin board harus meng-autentikasi voter, dan menghandle storage dan pembuktian dari hasil suara. 2.6 Jaringan Jaringan Komputer dapat diartikan sebagai suatu himpunan interkoneksi sejumlah komputer otonom. Dua buah komputer dikatakan membentuk suatu network bila keduanya dapat saling bertukar informasi [8]. Secara umum, jaringan mempunyai beberapa manfaat yang lebih dibandingkan dengan komputer yang berdiri sendiri dan dunia usaha telah pula mengakui bahwa akses ke teknologi informasi modern selalu memiliki keunggulan kompetitif dibandingkan pesaing yang terbatas dalam bidang teknologi. Jaringan memungkinkan manajemen sumber daya lebih efisien. Misalnya, banyak pengguna dapat saling berbagi printer tunggal dengan kualitas tinggi, dibandingkan memakai printer kualitas rendah di masing-masing meja kerja. Selain itu, lisensi perangkat lunak jaringan dapat lebih murah dibandingkan lisensi standalone terpisah untuk jumlah pengguna sama. Jaringan membantu mempertahankan informasi agar tetap andal dan uptodate. Sistem penyimpanan data terpusat yang dikelola dengan baik memungkinkan banyak pengguna mengaskses data 16 dari berbagai lokasi yang berbeda, dan membatasi akses ke data sewaktu sedang diproses. Jaringan membantu mempercepat proses berbagi data (data sharing). Transfer data pada jaringan selalu lebih cepat dibandingkan sarana berbagi data lainnya yang bukan jaringan. Jaringan memungkinkan kelompok kerja berkomunikasi dengan lebih efisien. Surat dan penyampaian pesan elektronik merupakan substansi sebagian besar sistem jaringan, disamping sistem penjadwalan, pemantauan proyek, konferensi online dan groupware, dimana semuanya membantu team bekerja lebih produktif. 2.6.1 Jaringan LAN LAN (Local Area Network) adalah suatu kumpulan komputer, dimana terdapat beberapa unit komputer dan satu unit komputer untuk bank data (server). Antara masing-masing client maupun antara client dan server dapat saling bertukar file maupun saling menggunakan printer yang terhubung pada unit-unit komputer yang terhubung pada jaringan LAN [8]. Berdasarkan kabel yang digunakan ada dua cara membuat jaringan LAN, yaitu dengan kabel BNC dan kabel UTP. Adapun keuntungan jaringan LAN : • Pertukaran file dapat dilakukan dengan mudah (file sharing). • Pemakaian printer dapat dilakukan oleh semua client (printer sharing). • berdasarkan struktur organisasi perusahaan sehingga keamanan data terjamin. 17 • File data yang keluar atau masuk dari atau ke server dapat di kontrol. • Proses backup data menjadi lebih mudah dan cepat. • Resiko kehilangan data oleh virus komputer menjadi sangat kecil sekali. • Komunikasi antar karyawan dapat dilakukan dengan menggunakan e-mail dan chat. • Bila salah satu client atau server terhubung dengan modem, maka semua atau sebagian komputer pada jaringan LAN dapat mengakses ke jaringan internet atau mengirimkan fax melalui satu modem. 2.7 Java Java adalah sebuah bahasa pemrograman komputer berbasiskan kepada Object Oriented Programming. Java didesain sedemikian rupa sehingga ukurannya kecil, sederhana, dan portable (dapat dipindah-pindahkan di antara bermacam platform dan sistem operasi). Program yang dihasilkan dengan bahasa java dapat berupa applet (aplikasi kecil yang jalan di atas web browser) maupun berupa aplikasi mandiri yang dijalankan dengan program java Interpreter. Salah satu keunggulan java adalah sifatnya yang platform independence, artinya java baik source program maupun hasil kompilasinya sama sekali tidak bergantung kepada sistem operasi dan platform yang digunakan. Source code sebuah aplikasi dengan bahasa java yang ditulis di atas sistem Windows NT misalnya, dengan gampang dapat dipindahkan ke sistem operasi UNIX tanpa harus mengedit satu baris kodepun. Ini tentunya merupakan satu nilai tambah tersendiri. 18 Selain itu, bukan hanya source code-nya saja yang bisa dipindahpindahkan antar sistem komputer, bahkan hasil kompilasinya pun bisa dijalankan di berbagai sistem komputer. Hal ini dimungkinkan dengan adanya bytecode. Setiap program yang ditulis dengan bahasa java, hasil kompilasinya berupa bytecode, yaitu sekumpulan instruksi yang kelihatannya seperti kode mesin (machine code) tapi tidak spesifik untuk satu jenis prosesor tertentu. Kemampuan java berjalan di lebih dari satu sistem operasi tidak lepas dari keberadaan Java Virtual Machine(JVM) yang menjembatani antara bytecode dan hardware. Untuk itu diperlukan instalasi JVM pada setiap platform yang berbeda agar bytecode dapat berjalan. Jika hanya untuk keperluan pengoperasian, hanya diperlukan Java Runtime Environment (JRE). Namun untuk membuat program, tidak bisa hanya mengandalkan JRE, dibutuhkan Java SDK (Software Development Kit) yang mempunyai compiler didalamnya. Contoh program Halo dunia yang ditulis menggunakan bahasa pemrograman java adalah sebagai berikut: class HaloDunia { public static void main(String[] argumen) { System.out.println("Halo Dunia"); } } 19 2.7.1 Java 2 Standart Edition (J2SE) Java 2 Platform Standard Edition (J2SE) digunakan untuk menjalankan dan mengembangkan aplikasi java pada level Personal Computer (PC). Platform ini berisi class-class inti pada java dan Graphical User Interface (GUI). 2.7.2 Java Server Pages JavaServer PagesTM(JSP) adalah teknologi web berbasis bahasa pemrograman java dan berjalan pada platform java yang diproduksi oleh Sun Microsystem. JSP memungkinkan kita menggabungkan static HTML dengan dinamik content yang dihasilkan dari servlet. JSP juga merupakan bagian dari teknologi J2EE (Java 2 Enterprise Edition). J2EE merupakan platform java untuk pengembangan aplikasi enterprise dengan dukungan API (Application Program Interface) yang lengkap dan portabilitas serta memberikan sarana untuk membuat aplikasi multitier yang memisahkan antara presentation layer, application layer dan data layer [9]. Gambar 2.2 Arsitektur JSP [9] 2.7.3 Java Bean Kegunaan dari JavaBeans tidak hanya digunakan pada spesifikasi JSP. Bagaimanapun juga, mereka menyediakan fungsi yang 20 mudah digunakan, oleh karena itu kegunaan dari javabean dapat sangat mengurangi jumlah dari elemen scripting yang dapat ditemukan pada sebuah halaman java. Yang paling utama, dari latihan javabean adalah javabean hanya merupakan class java sederhana yang mempertahankan standart peng-codingan: • Menyediakan default, konstruktor tanpa argumen • Menyediakan method get dan set untuk properti yang akan digunakan. Berikut ini merupakan contoh bagaimana menggunakan user JavaBean pada halaman JSP: