TUGAS AKHIR – KI141502
IMPLEMENTASI TEKNOLOGI NFC PADA PONSEL PINTAR SEBAGAI AGEN AUTENTIKASI DALAM SISTEM E-VOTE MUHAMAD ARDHINATA J. NRP 5112100094 Dosen Pembimbing I Prof. Ir. Supeno Djanali, M.Sc., Ph.D Dosen Pembimbing II Hudan Studiawan, S. Kom., M. Kom
Jurusan Teknik Informatika Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember Surabaya 2016
i
TUGAS AKHIR – KI141502
IMPLEMENTASI TEKNOLOGI NFC PONSEL PINTAR SEBAGAI AUTENTIKASI DALAM SISTEM E-VOTE MUHAMAD ARDHINATA J. NRP 5112100094
Dosen Pembimbing I Prof. Ir. Supeno Djanali, M.Sc., Ph.D Dosen Pembimbing II Hudan Studiawan, S. Kom., M. Kom
Jurusan Teknik Informatika Fakultas Teknologi Informasi Institut Teknologi Sepuluh Nopember Surabaya 2016
i
PADA AGEN
(Halaman ini sengaja dikosongkan)
ii
UNDERGRADUATE THESES – KI141502
NFC IMPLEMENTATION BASED ON SMARTPHONE AS AUTHENTICATION AGENT IN E-VOTE SYSTEM MUHAMAD ARDHINATA J. NRP 5112100094 First Advisor Prof. Ir. Supeno Djanali, M.Sc., Ph.D Second Advisor Hudan Studiawan, S. Kom., M. Kom
Department of Informatics Faculty of Information Technology Sepuluh Nopember Institute of Technology Surabaya 2016
iii
(Halaman ini sengaja dikosongkan)
iv
LEMBAR PENGESAHAN
IMPLEMENTASI TEKNOLOGI NFC PADA PONSEL
v
(Halaman ini sengaja dikosongkan)
vi
IMPLEMENTASI TEKNOLOGI NFC PADA PONSEL PINTAR SEBAGAI AGEN AUTENTIKASI DALAM SISTEM E-VOTE Nama Mahasiswa NRP Jurusan Dosen Pembimbing 1 Dosen Pembimbing 2
: : : : :
MUHAMAD ARDHINATA J. 5112100094 Teknik Informatika FTIF-ITS Prof. Ir. Supeno Djanali, M.Sc., Ph.D Hudan Studiawan, S. Kom., M. Kom Abstrak
Sistem pemungutan suara di Indonesia yang lebih dikenal dengan nama pemilihan umum (pemilu) sampai saat ini masih dilaksanakan secara manual. Dalam sistem tersebut, dibutuhkan waktu yang lama serta tenaga yang besar untuk menghitung hasil dari pemlihan umum tersebut. Sistem manual juga memiliki banyak kelemahan dan celah yang bisa dimanfaatkan oleh pihak tertentu untuk memanipulasi hasil pemilihan umum oleh pihak atau kelompok tertentu. Untuk mengatasi masalah ini, salah satu solusinya adalah dengan menerapkan sistem pemilihan umum dengan sistem berbasis perangkat elektronik yang lebih dikenal dengan istilah E-Vote. Berbagai macam metode telah diterapkan dalam sistem E-Vote untuk mengatasi kecurangan, salah satunya dengan menggunakan sistem enkripsi-dekripsi hasil surat suara dari pemilih ke sistem. Namun hal ini kurang efektif apabila kecurangan terjadi sebelum surat suara masuk ke sistem, yaitu pada saat pemilih mendaftarkan diri (autentikasi) sampai pemilih memasukkan pilihannya ke sistem. Pada tugas akhir ini, penulis mencoba untuk merancang mekanisme rantai kepercayaan (chain of trust) untuk mendeteksi adanya perubahan surat suara pemilih atau pemilih yang tidak sah mencoba masuk ke sistem E-Vote. Dengan menerapkan teknologi NFC (Near Field Communication) dan perangkat elektronik ponsel pintar (smartphone), pemilih yang tidak vii
berwenang bisa diminimalisir, serta hasil suara pemilih bisa dijamin kebenarannya. Pemilih akan memiliki identitas diri berupa pasangan kunci publik (public key pair) yang bisa digunakan untuk mengidentifikasi pemilih serta menerapkan tanda tangan digital (digital signature) pada hasil suara agar tidak bisa diubah oleh pihak lain. Selain itu, pemilih bisa memeriksa ulang hasil pilihannya untuk memastikan tidak ada kecurangan visual yang terjadi apabila surat suara dimanipulasi untuk menguntungkan pihak tertentu. Skenario yang diusulkan penulis tersebut terbukti dapat mencegah adanya perubahan data suara yang sudah masuk ke dalam sistem. Apabila ada data yang tidak berasal dari sumber yang benar atau data salah, data tersebut akan dieliminasi melalui beberapa proses validasi. Diharapkan skenario ini dapat diterapkan dalam sistem E-Vote di masa mendatang. Kata kunci: Near Field Communication, Authentication Agent, Zero-Knowledge Proof, Digital Signature, pemungutan suara elektronik.
viii
NFC IMPLEMENTATION BASED ON SMARTPHONE AS AUTHENTICATION AGENT IN E-VOTE SYSTEM Student’s Name Student’s ID Department First Advisor Second Advisor
: : : : :
MUHAMAD ARDHINATA J. 5112100094 Teknik Informatika FTIF-ITS Prof. Ir. Supeno Djanali, M.Sc., Ph.D Hudan Studiawan, S. Kom., M. Kom Abstract
Election system in Indonesia still relies on manual, analog system that requires tremendous work and time to get the result. In that system also prone of loophole and vulnerable against illintent action such as rigged election and result manipulation. The one of several solutions to mitigate these disadvantages is to use automated electronic election system, or E-Vote in popular terms. Various methods had been implemented in E-Vote to discourage and desist the act of cheating and rigging election, such as using encryption-decryption (modern cipher) for delivering ballot to system, but this is ineffective if the election is already rigged before the user submit their ballot. In this undergraduate thesis, author is trying to design a chain of trust mechanism to detect any anomaly on submitted ballot as well as bogus users trying to authenticate themself into E-Vote system. With Near Field Communication (NFC) technology and smartphone, bogus users and ballots can be filtered and ballot from authentic users can be trusted. Users will have an asymmetric key pair and can be identified by their public key. Users also can “sign” their ballot with digital signature for integrity measures, and users can double check their choices to prevent some sort of visual foul-play. The scenario suggested by author proven to prevent any attempt to modify ballot data that being submitted to system. If there are some data that it’s malformed or it’s from unknown sources, it will be eliminated by some validation process. Author ix
hope for this scenario can be implemented in future E-Vote system.
Keywords: Near Field Communication, Authentication Agent, Zero-Knowledge Proof, Digital Signature, Electronic Voting System.
x
KATA PENGANTAR
Alhamdulillahirabbil’alamin, segala puji bagi Allah Swt yang telah melimpahkan rahmat dan hidayah-Nya sehingga penulis dapat menyelesaikan Tugas Akhir yang berjudul: “Implementasi Teknologi NFC pada Ponsel Pintar sebagai Agen Autentikasi dalam Sistem E-Vote” yang merupakan salah satu syarat dalam menempuh ujian sidang guna memperoleh gelar Sarjana Komputer. Selesainya Tugas Akhir ini tidak terlepas dari bantuan dan dukungan beberapa pihak, sehingga pada kesempatan ini penulis mengucapkan terima kasih kepada : 1. Bapak Juari dan Ibu Laksmi Wiriyanti selaku orang tua penulis yang selalu memberiakan dukungan do’a, moral, material, dan kasih sayang yang tak terhingga kepada penulis sehingga penulis dapat menyelesaikan Tugas Akhir ini. 2. Muhamad Agung Wicaksana selaku adik dari penulis yang memberikan dukungan kepada penulis meskipun di tengah kesibukan dalam menempuh pendidikan tinggi yang sedang dijalani. 3. Bapak Prof. Ir. Supeno Djanali, M.Sc., Ph.D., Bapak Baskoro Adi Pratomo, S.Kom., M.Kom., dan Bapak Hudan Studiawan, S.Kom, M.Kom. selaku dosen pembimbing Tugas Akhir yang telah membimbing dan memberikan motivasi, nasehat dan bimbingan dalam menyelesaikan Tugas Akhir ini. 4. Bapak Ridho Rahman Hariadi, S.Kom., M.Sc. selaku dosen wali penulis yang telah memberikan arahan, masukan dan motivasi kepada penulis selama menjalani masa studi di ITS. 5. Bapak Darlis Herumurti, S.Kom., M.Kom. selaku kepala jurusan Teknik Informatika ITS dan segenap dosen dan xi
karyawan Teknik Informatika ITS yang telah memberikan ilmu dan pengalaman kepada penulis selama menjalani masa studi di ITS. 6. Teman seperjuangan dalam topik tugas akhir (R. M. Iskandar Zulkarnaen), teman seperjuangan semasa kuliah penulis (Vijay Fathur, Faishal Azka, Reyhan Arief, I Putu Pradnyana, Nabila Tsurayya Silmi), dan teman-teman lain satu angkatan yang sudah memberi dukungan, informasi dan hal lainnya yang membantu penulis menyelesaikan tugas akhir ini. 7. Sahabat penulis lainnya yang tidak bisa disebutkan satupersatu, yang selalu membantu, menghibur, menghadapi persoalan sulit bersama, menjadi tempat bertukar ilmu dan berjuang bersama-sama penulis. Penulis menyadari bahwa Tugas Akhir ini masih memiliki banyak kekurangan sehingga dengan kerendahan hati penulis mengharapkan kritik dan saran dari pembaca untuk perbaikan ke depan.
Surabaya, Desember 2016
xii
DAFTAR ISI LEMBAR PENGESAHAN ........................................................ v Abstrak ..................................................................................... vii Abstract ...................................................................................... ix DAFTAR ISI ............................................................................ xiii DAFTAR GAMBAR .............................................................. xvii DAFTAR TABEL.................................................................... xix DAFTAR PSEUDOCODE...................................................... xxi BAB I PENDAHULUAN .......................................................... 1 1.1 Latar Belakang ................................................................ 1 1.2 Rumusan Masalah ........................................................... 2 1.3 Batasan Permasalahan ..................................................... 2 1.4 Tujuan ............................................................................. 3 1.5 Manfaat ........................................................................... 3 1.6 Metodologi ...................................................................... 3 1.6.1 Penyusunan Proposal ............................................... 4 1.6.2 Studi Literatur .......................................................... 4 1.6.3 Implementasi Perangkat Lunak ................................ 4 1.6.4 Pengujian dan Evaluasi ............................................ 4 1.6.5 Penyusunan Buku..................................................... 5 1.7 Sistematika Penulisan Laporan ........................................ 5 BAB II TINJAUAN PUSTAKA ................................................ 7 2.1 E-Voting .......................................................................... 7 2.2 Sistem Kriptografi Asimetris ........................................... 8 2.3 Zero-Knowledge Proof .................................................... 9 2.4 Cryptographic Hash Function ........................................ 11 2.5 Near Field Communication ........................................... 12 2.6 Digital Signature Algorithm .......................................... 14 2.7 Modul NFC ................................................................... 16 BAB III DESAIN DAN PERANCANGAN............................. 17 3.1 Perancangan Alur Sistem secara Umum ........................ 17 3.2 Perancangan Arsitektur Sistem ...................................... 19 3.3 Perancangan Protokol dan Struktur Data ....................... 22 xiii
3.3.1 3.3.2 3.3.3 3.3.4
Perancangan Protokol dan Alur Komunikasi NFC . 22 Perancangan Struktur Data Komunikasi ................. 26 Perancangan Struktur Data Surat Suara atau Ballot 27 Perancangan Struktur Data Parameter Vote Machine 29 3.4 Perancangan Antarmuka Sistem .................................... 30 3.4.1 Perancangan Antarmuka Vote Machine ................. 30 3.4.1.1 Jendela Konfigurasi Vote Machine ................. 30 3.4.1.2 Jendela Verifikasi Pemilih .............................. 31 3.4.1.3 Jendela Utama ................................................. 32 3.4.2 Perancangan Antarmuka Aplikasi Autentikator ..... 33 3.4.2.1 Tampilan Awal ............................................... 33 3.4.2.2 Tampilan Verifikasi Pengguna ........................ 35 3.4.2.3 Tampilan Verifikasi Pilihan Suara .................. 36 BAB IV IMPLEMENTASI ...................................................... 37 4.1 Lingkungan Implementasi ............................................. 37 4.2 Implementasi ................................................................. 38 4.2.1 Implementasi Sistem Vote Machine ....................... 38 4.2.1.1 Jendela Konfigurasi Awal ............................... 38 4.2.1.2 Jendela Verifikasi Pemilih .............................. 41 4.2.1.3 Jendela Utama ................................................. 43 4.2.2 Implementasi Aplikasi Autentikator ....................... 44 4.2.2.1 Implementasi Tampilan Awal ......................... 44 4.2.2.2 Implementasi Tampilan Verifikasi Pengguna . 46 4.2.2.3 Implementasi Tampilan Autentikasi Pilihan Suara 47 BAB V HASIL UJI COBA DAN EVALUASI ........................ 51 5.1 Lingkungan Pengujian ................................................... 51 5.2 Skenario Uji Coba ......................................................... 52 5.2.1 Pengujian Fungsionalitas ....................................... 53 5.2.1.1 Pengujian Konfigurasi dan Koneksi ................ 53 5.2.1.2 Pengujian Koneksi antara Vote Machine dengan Autentikator .................................................................... 55 5.2.1.3 Pengujian Autentikasi dan Verifikasi Pilihan Suara 57 xiv
5.2.2 Pengujian Keamanan.............................................. 61 5.2.2.1 Pengujian Keamanan terhadap Perubahan Data Autentikasi ..................................................................... 61 5.2.2.2 Pengujian Integritas Surat Suara dan Pilihan Suara 62 BAB VI KESIMPULAN DAN SARAN .................................. 67 6.1 Kesimpulan ................................................................... 67 6.2 Saran ............................................................................. 68 DAFTAR PUSTAKA ............................................................... 69 BIODATA PENULIS ............................................................... 71
xv
(Halaman sengaja dikosongkan)
xvi
DAFTAR GAMBAR Gambar 2.1 Kriptografi Asimetris ................................................ 8 Gambar 2.2 NFC Protocol Stack ................................................ 13 Gambar 2.3 Modul NFC PN532 ................................................. 16 Gambar 3.1 Arsitektur sistem E-Vote ........................................ 20 Gambar 3.2 Arsitektur sistem pada vote machine ...................... 20 Gambar 3.3 Alur Data Sistem E-Vote ........................................ 25 Gambar 3.4 Struktur Data Komunikasi NFC .............................. 26 Gambar 3.5 Struktur Data Parameter Vote Machine................... 30 Gambar 3.6 Jendela Konfigurasi Vote Machine ......................... 31 Gambar 3.7 Jendela Verifikasi ................................................... 32 Gambar 3.8 Jendela Utama ........................................................ 33 Gambar 3.9 Tampilan Awal Autentikator .................................. 34 Gambar 3.10 Tampilan Verifikasi Pengguna.............................. 35 Gambar 3.11 Tampilan Verifikasi Pilihan Suara ........................ 36 Gambar 4.1 Jendela Konfigurasi Awal ....................................... 38 Gambar 4.2 Tampilan Pesan Error ............................................. 40 Gambar 4.3 Jendela Verifikasi Pemilih ...................................... 41 Gambar 4.4 Jendela Utama ........................................................ 43 Gambar 4.5 Tampilan Awal Autentikator .................................. 45 Gambar 4.6 Verifikasi Pengguna................................................ 46 Gambar 4.7 Tampilan Autentikasi Pilihan Suara........................ 48 Gambar 5.1 Arsitektur Uji Coba................................................. 52 Gambar 5.2 Tampilan Pesan Kesalahan Perangkat NFC ............ 54 Gambar 5.3 Tampilan Error Konfigurasi Tidak Sesuai Format .. 54 Gambar 5.4 Tampilan Error Koneksi Ke Server......................... 55 Gambar 5.5 Vote Machine Melakukan Proses Autentikasi ......... 56 Gambar 5.6 Deteksi Perangkat NFC Selain Autentikator ........... 56 Gambar 5.7 Jendela Utama ........................................................ 57 Gambar 5.8 Tampilan Autentikator Setelah Proses Autentikasi Selesai ........................................................................................ 58 Gambar 5.9 Tampilan Authorization .......................................... 59 Gambar 5.10 Log Signature di Autentikator .............................. 60 xvii
Gambar 5.11 Log Vote Machine................................................. 60 Gambar 5.12 Log Verifikasi di Server........................................ 60 Gambar 5.13 Tampilan Autentikasi Gagal ................................. 61 Gambar 5.14 Log Vote Machine saat Autentikasi Gagal ............ 62 Gambar 5.15 Surat Suara Sebelum Dirubah ............................... 63 Gambar 5.16 Surat Suara Setelah Dirubah ................................. 64 Gambar 5.17 Pesan Error di Vote Machine ................................ 64 Gambar 5.18 Tampilan Error di Autentikator ............................. 65
xviii
DAFTAR TABEL Tabel 3.1 Penjelasan Alur Data .................................................. 22 Tabel 3.2 Header NFC APDU Data ........................................... 24 Tabel 3.3 Struktur response APDU ............................................ 24 Tabel 3.4 Struktur Data Surat Suara atau Ballot ......................... 27 Tabel 3.5 Struktur Data Kandidat ............................................... 27 Tabel 4.1 Lingkungan Implementasi Sistem Frontend ............... 37 Tabel 5.1 Lingkungan Pengujian Sistem E-Vote ........................ 51 Tabel 5.2 Lingkungan Pengujian Sistem Autentiaktor ............... 52 Tabel 5.3 Perbandingan antara Jumlah Loop dengan Durasi ...... 59
xix
(Halaman ini sengaja dikosongkan)
xx
1
DAFTAR PSEUDOCODE
Pseudocode 4.1 Tombol Choose File ......................................... 39 Pseudocode 4.2 Tombol Initialize .............................................. 40 Pseudocode 4.3 Background Service .......................................... 42 Pseudocode 4.4 Proses Autentikasi ............................................ 43 Pseudocode 4.5 Tampilkan Kandidat dari Daftar ....................... 44 Pseudocode 4.6 Tombol Vote..................................................... 44 Pseudocode 4.7 Background Process Aplikasi ........................... 45 Pseudocode 4.8 Proses Unlock ................................................... 47 Pseudocode 4.9 Tombol Authorize dan Reject ........................... 49
xxi
(Halaman sengaja dikosongkan)
xxii
BAB 1BAB I PENDAHULUAN 1.1
Latar Belakang
Demokrasi merupakan sistem pemerintahan dimana semua warga negara ikut berperan dan memiliki hak yang sama dalam pengambilan keputusan dan kebijakan, baik itu langsung atau melalui perwakilan. Dalam sistem demokrasi, pengambilan keputusan untuk suatu masalah bisa menggunakan beberapa cara, salah satunya adalah vote atau pemilihan umum. Di Indonesia, demokrasi dijunjung tinggi dalam melaksanakan sistem pemerintahan. Dalam periode tertentu, diadakanlah pemilihan umum atau dikenal sebagai pemilu dalam menentukan wakil rakyat. Pemilihan umum (Pemilu) ini merupakan salah satu bentuk voting dengan menggunakan media kertas suara sebagai alat pemilihan. Di Indonesia, pelaksanaan pemilu diatur dalam UUD 1945. Berdasarkan Pasal 22E ayat (1) UUD 1945, asas pemilu yang berlaku adalah langsung, umum, bebas, rahasia, jujur, dan adil. Pemilu di Indonesia masih menggunakan proses manual yang rawan akan kesalahan dalam pelaksanaannya, serta rawan terjadi kecurangan terhadap jumlah surat suara yang digunakan untuk kepentingan golongan tertentu. Hal ini berlawanan dengan asas pemilu yang ditetapkan di UUD 1945 serta menjadikan hasil pemilu tidak akurat. Salah satu solusi untuk mengatasi kelemahan-kelemahan tersebut adalah dengan melaksanakan sistem pemilu yang lebih modern, yang dikenal dengan sebutan e-voting. Dalam perancangannya, faktor keamanan harus diperhatikan untuk mendukung pelaksanaan yang berdasarkan asas pemilu yang berlaku. Aspek yang terdapat dalam faktor keamanan antara lain authenticity (sistem hanya dapat diakses oleh pihak yang berkepentingan), confidentiality (kerahasiaan), dan integrity (jaminan terhadap keaslian suara pemilih). Tanpa adanya hal
1
2 tersebut, sistem e-voting mudah mengalami serangan yang dapat mengacaukan sistem itu sendiri.
1.2
Rumusan Masalah
Tugas Akhir ini mengangkat beberapa rumusan masalah sebagai berikut: 1.
2. 3.
1.3
Bagaimana mengimplementasikan agen autentikasi independen dengan menggunakan ponsel pintar dan teknologi NFC pada sistem e-vote? Bagaimana cara mengetahui apakah pengguna adalah pemegang hak suara yang sah dan terdaftar? Bagaimana cara mengetahui apakah surat suara atau ballot tidak dirubah oleh pihak lain? Batasan Permasalahan
Permasalahan yang dibahas pada Tugas Akhir ini memiliki batasan sebagai berikut: 1. 2.
3. 4.
5. 6.
Sistem operasi yang digunakan adalah sistem operasi berbasis Linux Media komunikasi perangkat autentikasi dengan mesin pemilih menggunakan teknologi NFC dengan protokol ISO/IEC 7816-4 yang telah dimodifikasi. Bahasa pemograman yang dipakai sebagian besar adalah Java. Aplikasi E-Vote yang dipakai hanya sebuah interface, aplikasi autenticator agent pada ponsel Android, dan stub server sebagai penyimpan hasil suara. Metode autentikasi yang digunakan berbasis ZeroKnowledge Proof dengan menggunakan Discrete Log. Digital signature yang digunakan adalah DSA (Digital Signature Algorithm)
3 7.
1.4
Sistem frontend berfokus kepada masalah autentikasi, pengamanan surat suara, serta verifikasi pilihan pemilih. Masalah double-vote, penghitungan suara, dan pengamanan hasil surat suara dilakukan di sistem backend. Tujuan Tujuan dari Tugas Akhir ini adalah sebagai berikut:
1. Mengimplementasikan teknologi NFC dan ponsel pintar sebagai media autentikasi independen untuk menghindari pencurian identitas pemegang hak suara. 2. Mengimplementasikan metode Zero-Knowledge Proof sebagai metode autentikasi pemegang hak suara. 3. Mendeteksi adanya perubahan surat suara atau ballot dari pihak yang tidak berwenang. 4. Mengimplementasi metode document signing untuk menghindari kecurangan atau perubahan terhadap surat suara.
1.5
Manfaat
Dengan dibuatnya tugas akhir ini diharapkan dapat memberikan manfaat pada sistem e-vote dengan memperkuat keamanan autentikasi pengguna untuk mencegah kecurangan dan hal-hal yang tidak diinginkan pada sistem e-vote.
1.6
Metodologi
Pembuatan Tugas Akhir ini menggunakan metodologi sebagai berikut:
dilakukan
dengan
4 1.6.1
Penyusunan Proposal
Tahap awal Tugas Akhir ini adalah menyusun proposal Tugas Akhir. Pada proposal, diajukan gagasan untuk memperkuat keamanan pada sistem e-vote di sisi pengguna, dengan menggunakan metode autentikasi multi-factor.
1.6.2
Studi Literatur
Pada tahap ini dilakukan untuk mencari informasi dan studi literatur apa saja yang dapat dijadikan referensi untuk membantu pengerjaan Tugas Akhir ini. Informasi didapatkan dari buku dan literatur yang berhubungan dengan metode yang digunakan. Informasi yang dicari adalah NFC Standard specification, ISO/IEC 7816-4, ISO/IEC 14443, Zero-Knowledge Proof, dan Digital Signing.
1.6.3
Implementasi Perangkat Lunak
Implementasi merupakan tahap untuk membangun metodemetode yang sudah diajukan pada proposal Tugas Akhir. Untuk membangun sistem yang telah diperkirakan sebelumnya, maka dilakukan implementasi berupa aplikasi Android dan aplikasi desktop vote-frontend.
1.6.4
Pengujian dan Evaluasi
Pada tahap ini pengujian sistem dilakukan dengan mencoba aplikasi dengan beberapa skenario dunia nyata dengan mempertimbangkan penggunaan normal dan penggunaan menyimpang. Performa sistem yang diuji dicatat dan dibandingkan dengan pengaturan yang berbeda.
5 1.6.5
Penyusunan Buku
Pada tahap ini disusun buku sebagai dokumentasi dari pelaksanaan Tugas Akhir yang mencangkup seluruh konsep, teori, implementasi, serta hasil yang telah dikerjakan.
1.7
Sistematika Penulisan Laporan
Sistematika penulisan laporan Tugas Akhir adalah sebagai berikut: 1. Bab I. Pendahuluan Bab ini berisikan penjelasan mengenai latar belakang, rumusan masalah, batasan masalah, tujuan, manfaat, metodologi, dan sistematika penulisan dari pembuatan Tugas Akhir. 2. Bab II. Tinjauan Pustaka Bab ini berisi penjelasan secara detail mengenai dasar-dasar penunjang untuk mendukung pembuatan Tugas Akhir ini. 3. Bab III. Perancangan Perangkat Lunak Bab ini berisi perancangan metode yang nantinya akan diimplementasikan dan dilakukan uji coba. 4. Bab IV. Implementasi Bab ini menjelaskan implementasi dari rancangan sistem yang telah dijabarkan pada bab sebelumnya. Penjelasan berupa implementasi sistem frontend dan autentikator. 5. Bab V. Hasil Uji Coba dan Evaluasi Bab ini menjelaskan tahap pengujian sistem bedasarkan dengan fungsionalitas utama sistem, proses autentikasi, dan deteksi kecurangan yang terjadi. 6. Bab VI. Kesimpulan dan Saran
6 Bab ini merupakan bab terakhir yang menyampaikan kesimpulan dari hasil uji coba yang dilakukan terhadap rumusan masalah yang ada dan saran untuk pengembangan lebih lanjut. 7. Daftar Pustaka Bab ini berisi daftar pustaka yang dijadikan literatur dalam Tugas Akhir.
2 BAB II TINJAUAN PUSTAKA Bab ini berisi penjelasan teori yang berkaitan dengan implementasi perangkat lunak. Penjelasan tersebut bertujuan untuk memberikan gambaran sistem yang akan dibangun dan sebagai penunjang dalam pengembangan perangkat lunak. 2.1
E-Voting
Electronic voting (e-voting) adalah metode pemilihan umum yang memanfaatkan sarana teknologi informasi atau perangkat elektronik dimana sebagian atau seluruh proses pelaksanaannya, mulai dari pendaftaran peserta pemilih, pemungutan suara, hingga penghitungan suara dilakukan secara digital [1]. Banyak negara di dunia yang berhasil menerapkan sistem e-voting meski memerlukan waktu yang cukup lama dalam mempersiapkannya. Di Indonesia, sistem e-voting masih jarang diminati dikarenakan persiapannya yang rumit. E-voting memiliki kelebihan yang tidak dimiliki oleh pemilihan umum berbasis manual, diantaranya adalah menghemat biaya pelaksanaan, mempercepat proses pemungutan dan penghitungan suara, serta mengurangi risiko kesalahan teknis yang biasa terjadi pada metode manual. Penerapan e-voting memerlukan waktu yang lama karena perlu adanya persiapan yang matang dan menyeluruh dari semua elemen pemilu, mulai dari teknologi dan metode yang digunakan hingga kesiapan pengguna sistem e-voting. Tujuan penggunaan sistem e-voting tidak hanya untuk sekedar mempercepat proses pemungutan suara dan penghitungan hasil pemungutan suara, tetapi juga untuk menjaga keaslian suara pemilih, kerahasiaan, dan memperkecil risiko kesalahan dan kecurangan.
7
8 2.2
Sistem Kriptografi Asimetris
Kriptografi asimetris, atau biasa disebut dengan Public-key Cryptography, adalah sistem kriptografi yang menggunakan sepasang kunci (key) dalam penggunaannya. Sepasang kunci tersebut dibedakan menjadi dua macam, yaitu kunci publik (public key) yang diketahui oleh pihak umum, dan kunci privat (private key) yang dirahasiakan dan hanya diketahui oleh pemilik kunci [2]. Dalam sistem kriptografi asimetris, seseorang bisa mengirimkan pesan yang di enkripsi dengan kunci publik dan pesan hanya bisa di dekripsi oleh kunci privat yang bersangkutan. Hal ini yang menjadikan sistem kriptografi ini bersifat asimetris.
Gambar 2.1 Kriptografi Asimetris Keamanan sistem kriptografi ini bergantung pada permasalahan matematika yang saat ini tidak ada algoritma yang efisien untuk menyelesaikan masalah tersebut, contohnya adalah faktorisasi bilangan, logaritma diskrit, dan hubungan persamaan kurva elipsis [3]. Sistem kriptografi asimetris biasanya digunakan untuk pertukaran data yang kecil karena kerumitan komputasional yang dimiliki oleh sistem ini.
9 Penggunaan yang paling sering untuk sistem kriptografi asimetris ini adalah:
2.3
Public-key Encryption: Ini adalah skema enkripsi dimana pesan yang telah di enkripsi oleh kunci publik hanya bisa di dekripsi oleh kunci privat yang bersangkutan. Hal ini digunakan untuk menjaga kerahasiaan sebuah pesan yang ditujukan ke pemilik kunci privat. Digital Signatures: Alur skema ini adalah kebalikan dari public-key encryption. Pesan di enkripsi dengan kunci privat dan bisa di dekripsi oleh kunci publik yang bersangkutan. Hal ini digunakan untuk menjaga integritas dan keaslian data. Zero-Knowledge Proof
Zero-knowledge proof adalah suatu metode untuk membuktikan pihak satu (biasa disebut prover) ke pihak yang lain (pembukti / verifier) dengan memberikan suatu informasi yang berhubungan dengan informasi rahasia yang hanya dimiliki oleh prover tanpa harus membocorkan rahasia tersebut. Pembuktian bisa dilakukan dengan proses atau metode yang tidak melibatkan kondisi dimana prover harus memberikan informasi rahasia kepada verifier [4]. Metode yang biasanya diterapkan di dunia nyata meliputi penggunaan masalah matematika yang dirancang sedemikian rupa sehingga informasi yang dibutuhkan untuk menyelesaikan masalah tersebut hanya bisa didapatkan apabila prover memiliki informasi rahasia yang terkait dengan masalah tersebut. Salah satu metode yang dipakai adalah menggunakan Discrete Log Modulo Problem [5]. Discrete Log Modulo memiliki rumus sebagai berikut: 𝑦 = 𝑔 𝑥 𝑚𝑜𝑑 𝑝
10 Dengan diketahui p adalah bilangan prima, g adalah generator, y adalah hasil akhir, dan x adalah bilangan rahasia, hampir mustahil untuk menurunkan x dari hasil akhir dari hasil akhir y dengan syarat bilangan rahasia x harus cukup besar sehingga 𝑦 ≠ 𝑔 𝑥 . Dengan menggunakan persamaan ini, pembuktian menggunakan zero-knowledge proof bisa dilakukan dengan langkah-langkah sebagai berikut: 1. Prover memiliki bilangan rahasia x yang tidak boleh dibocorkan kepada orang lain. 2. Verifier memiliki bilangan y yang merupakan hasil dari discrete log modulo dari bilangan rahasia x yang dimiliki oleh prover. 3. Verifier mencoba membuktikan bahwa prover memang memiliki x dengan meminta bilangan acak a 4. Prover menghitung a dengan rumus 𝑎 = 𝑔𝑟 𝑚𝑜𝑑 𝑝 dengan r adalah bilangan acak rahasia yang cukup besar. Bilangan a diberikan kepada verifier. 5. Verifier meminta prover untuk memberikan salah satu dari dua kemungkinan informasi, yaitu bilangan r atau bilangan (x+r) mod (p-1). 6. Jika verifier meminta informasi r, maka verifier bisa membuktikan keasliannya dengan memasukkan ke persamaan 𝑎 = 𝑔𝑟 𝑚𝑜𝑑 𝑝 dan membandingkan hasil a dengan informasi yang diminta sebelumnya. 7. Jika verifier meminta informasi (x+r) mod (p-1), maka verifier bisa membuktikan keasliannya dengan menghitung 𝑎 . 𝑦 = 𝑔𝑟+𝑥 𝑚𝑜𝑑 𝑝. 8. Langkah-langkah diatas diulang kembali sampai verifier percaya apabila prover mempunyai bilangan rahasia x yang berhubungan dengan bilangan y yang dimiliki oleh verifier. Dengan metode ini, verifier tidak bisa mendapatkan nilai dari x karena semua informasi yang diberikan oleh prover tidak bisa digunakan untuk menurunkan x secara langsung, serta pihak
11 lain yang tidak mengetahui informasi y, g, atau p tidak akan mengetahui maksud dari pertukaran informasi yang dilakukan antara prover dan verifier, sehingga informasi x tidak akan bocor ke dunia luar dalam melakukan pembuktian dengan zeroknowledge proof.
2.4
Cryptographic Hash Function
Cryptographic hash function merupakan fungsi hash yang dirancang untuk keperluan kriptografi. Fungsi hash sendiri adalah sebuah metode matematis yang mengambil masukan (input) berupa pesan atau data dengan panjang sembarang dan memetakannya kedalam nilai hash dengan panjang tetap sesuai dengan spesifikasi fungsi hash tersebut [6]. Nilai hash ini biasa disebut dengan istilah digest atau message digest. Fungsi hash bisa dituliskan dengan persamaan: ℎ = 𝐻(𝑀) dimana H adalah fungsi hash, dengan masukan data atau pesan M, dan dengan nilai keluaran berupa digest h. Fungsi hash merupakan fungsi satu arah (one-way function), sehingga nilai digest yang dihasilkan oleh fungsi hash sulit dipetakan balik. Perbedaan fungsi cryptographic hash dengan fungsi hash biasa yaitu di fungsi cryptographic hash dijamin hampir mustahil untuk memetakan balik dari nilai digest ke pesan awal, kemungkinan dua buah pesan yang berbeda menghasilkan nilai digest yang sama sangat kecil, serta perbedaan kecil di pesan masukan menghasilkan nilai digest yang berbeda jauh sehingga nilai digest tidak bisa dikaitkan dengan pesan yang hampir mirip [7]. Fungsi hash dapat digunakan untuk mewujudkan salah satu prinsip keamanan jaringan dan informasi yaitu keutuhan data (data integrity). Fungsi tersebut berguna sebagai parameter yang mengecek ada tidaknya perubahan terhadap data sebelum dan
12 sesudah data itu dikirim atau disebar ke tempat lain dalam satu komputer maupun melalui jaringan. Salah satu metode fungsi hash yang cukup terkenal yaitu dengan membagi sejumlah pesan menjadi beberapa bagian dengan ukuran sama yang disebut dengan block, setiap block dimasukkan kedalam fungsi kompleks yang terdiri dari serangkaian operasi biner (bitwise operation) dan penggeseran block (block rotation). Hasil dari serangkaian fungsi ini adalah nilai dari digest pesan tersebut. Metode ini dikenal sebagai metode Merkle–Damgård construction. Fungsi hash yang menggunakan metode ini salah satunya adalah fungsi cryptographic hash yang cukup populer, yaitu SHA (Secure Hash Algorithm). Fungsi hash SHA adalah koleksi fungsi cryptographic hash yang diterbitkan oleh National Institute of Standards and Technology (NIST) dan selalu diperbarui ketika ditemukan kelemahan di dalam fungsi hash tersebut. Keluarga fingsi hash SHA terdiri dari SHA-0, SHA-1, SHA-2, dan SHA-3. NIST merekomendasikan memakai SHA-2 sebagai fungsi hash utama untuk aplikasi yang mengutamakan digest collision resistance. Varian fungsi hash SHA-2 (Secure Hash Algorithm 2) terdiri dari 6 fungsi hash yang mempunyai panjang digest 224 bit, 256 bit, 384 bit, dan 512 bit. Salah satu varian dari kelaurga SHA2 yang sering dipakai adalah SHA-256 yang memiliki panjang digest 256 bit dengan jumlah round sebanyak 64 round [8].
2.5
Near Field Communication
NFC (Near Field Communication) adalah teknologi yang menggunakan gelombang elektromagnetik di frekuensi sebesar 13,56 Mhz dan didasari oleh beberapa protokol yang memungkinkan dua perangkat berkomunikasi dengan jarak yang dekat (kurang dari 4 cm) [9]. NFC biasanya digunakan oleh ponsel pintar (smartphone), kartu identitas, kartu kredit, dan
13 sistem tiket elektronik, dan perangkat lainnya untuk bertukar data, dan melakukan pembayaran nirsentuh (contactless payment).
Gambar 2.2 NFC Protocol Stack Standar protokol NFC diatur oleh gabungan organisasi yang terdiri dari International Organization of Standardization (ISO) dan International Electrotechnical Commission (IEC). NFC diatur dalam set protokol dengan standar ISO/IEC 18000-3 yang mendefinisikan tentang interface komunikasi di frekuensi 13,56 MHz, ISO/IEC 14443-1 dan ISO/IEC 14443-2 yang mendefinisikan tentang layer fisik NFC, ISO/IEC 14443-3 yang mendefinisikan tentang konsep anti-collision, dan ISO/IEC 78164 yang mendefinisikan tentang struktur data kartu NFC dan protokol aplikasi. Salah satu karakteristik NFC adalah NFC beroperasi dengan jarak yang sangat dekat, yaitu kurang dari 2 cm untuk komunikasi antar perangkat aktif dan perangkat pasif, dan kurang dari 4 cm untuk sesama perangkat aktif. Dengan karakteristik jarak antar perangkat harus sangat dekat ini, NFC cocok diimplementasikan di sistem autentikasi dan pembayaran elektronik dimana pengguna harus mendekatkan perangkat untuk
14 melakukan komunikasi data, sehingga hal ini mempersulit pihak lain untuk menangkap dan mengubah data yang terlibat diantara perangkat tersebut [10]. Kecepatan transfer data NFC terbatas dengan kecepatan maksimum 424 kbit/s.
2.6
Digital Signature Algorithm
Digital Signature Algorithm (DSA) adalah metode tanda tangan digital (digital signature) yang diajukan oleh National Institute of Standards and Technology (NIST) dan masuk ke dalam standar FIPS (Federal Information Processing Standard) [11]. Tanda tangan digital sendiri adalah suatu cara untuk membuktikan bahwa suatu data atau pesan digital berasal dari pengirim yang autentik dengan melibatkan operasi matematika. Digital signature juga digunakan untuk memeriksa pesan apakah terjadi perubahan data selama dalam pengiriman (integritas). Di Indonesia, tanda tangan digital atau tanda tangan elektronik mempunyai kekuatan hukum seperti yang diungkapkan di Undang-undang Informasi dan Transaksi Elektronik (UU ITE) tahun 2008 pasal 11. DSA sendiri adalah varian dari ElGamal signature scheme yang menggunakan persamaan logaritma diskrit (discrete logarithm) 𝑦 = 𝑔 𝑥 𝑚𝑜𝑑 𝑝 dan fungsi hash. DSA memiliki tiga bagian yang harus didefinisikan untuk membuat dan verifikasi data, yaitu: DSA parameter, kunci publik (public key), kunci privat (private key). Untuk DSA parameter, definisi harus memenuhi syarat sebagai berikut: 1. Fungsi hash (H) yang digunakan merupakan cryptographic hash function. SHA-2 disarankan. 2. Tentukan bilangan prima p dan q dengan dengan panjang p harus kelipatan 64 bit dan panjang q harus kurang dari atau sama dengan panjang digest H. 3. Bilangan prima p harus memenuhi syarat p-1 merupakan kelipatan dari q.
15 4. Tentukan g, dengan syarat multiplicative order modulo p adalah q. Untuk membuat kunci publik dan kunci privat yang digunakan untuk tanda tangan digital DSA menggunakan tahapan-tahapan berikut ini: 1. Tentukan bilangan x yang nantinya jadi kunci privat DSA. x harus memenuhi syarat 0 < 𝑥 < 𝑞. 2. Hitung bilangan y dengan persamaan logaritma diskrit 𝑦 = 𝑔 𝑥 𝑚𝑜𝑑 𝑝. Bilangan y nantinya akan menjadi kunci publik. Tahapan-tahapan untuk menghasilkan tanda tangan digital dari pesan m adalah sebagai berikut: 1. Pilih bilangan acak k dengan syarat 0 < 𝑘 < 𝑞. 2. Hitung 𝑟 = (𝑔𝑘 𝑚𝑜𝑑 𝑝) 𝑚𝑜𝑑 𝑞. Jika 𝑟 = 0, kembali ke tahap 1 dengan nilai k yang berbeda. 3. Hitung 𝑠 = 𝑘 −1 (𝐻(𝑚) + 𝑥𝑟)𝑚𝑜𝑑 𝑞. 𝑘 −1 𝑚𝑜𝑑 𝑞 yang dimaksud disini adalah modular inverse. Nilai ini bisa dihitung dengan teorema Fermat (Fermat's little theorem) 𝑘 −1 𝑚𝑜𝑑 𝑞 = 𝑘 𝑞−2 𝑚𝑜𝑑 𝑞. Jika 𝑠 = 0, kembali ke tahap 1 dengan nilai k yang berbeda. 4. Tandatangan digital (digital signature) dari pesan m adalah (r,s). Sedangkan untuk memeriksa tandatangan digital pada pesan m bisa dilakukan dengan mengikuti tahapan-tahapan berikut ini: 1. 2. 3. 4. 5. 6.
Tolak tanda tangan jika 0 < 𝑟 < 𝑞 atau 0 < 𝑠 < 𝑞 Hitung 𝑤 = 𝑠 −1 𝑚𝑜𝑑 𝑞 Hitung 𝑢1 = 𝐻(𝑚) ∙ 𝑤 𝑚𝑜𝑑 𝑞 Hitung 𝑢2 = 𝑟 ∙ 𝑤 𝑚𝑜𝑑 𝑞 Hitung 𝑣 = (𝑔𝑢1 𝑦 𝑢2 𝑚𝑜𝑑 𝑝)𝑚𝑜𝑑 𝑞 Tanda tangan digital benar jika v = r.
16 2.7
Modul NFC
Modul NFC merupakan perangkat elektronik yang mempunyai fungsi sebagai penghubung komunikasi nirsentuh dengan spesifikasi yang ditetapkan oleh standar NFC. Modul ini banyak digunakan di mesin-mesin elektronik yang menyediakan fungsi media komunikasi data jarak dekat , autentikasi nirsentuh, dan pembayaran nirsentuh seperti ATM, EDC (Electronic Data Capture), sistem keamanan gedung nirsentuh, dll. Modul NFC yang umum dijumpai mempunyai bentuk berupa break-out board atau dalam bentuk IC, dan mempunyai interface UART. Diantara banyak modul NFC yang ada, modul NFC yang bisa dipakai oleh komputer biasanya adalah modul dari keluarga PN52X yang diproduksi oleh NXP Semiconductor. Modul ini mempunyai spesifikasi antarmuka serial UART, I2C, dan SPI dan mendukung mode NFC pasif dan aktif [12]. Modul ini juga didukung oleh library perangkat lunak LibNFC yang memungkinkan proses komunikasi ke perangkat jauh lebih mudah. Contoh modul NFC keluarga PN53X adalah PN532 yang memiliki bentuk seperti pada Gambar 2.3.
Gambar 2.3 Modul NFC PN532
3 BAB III DESAIN DAN PERANCANGAN Bab ini membahas mengenai perancangan dan pembuatan sistem perangkat lunak. Perancangan yang dijelaskan pada bab ini meliputi perancangan alur sistem, perancangan arsitektur sistem, perancangan basis data, perancangan data, perancangan protokol komunikasi NFC, perancangan frontend, dan perancangan antarmuka. 3.1
Perancangan Alur Sistem secara Umum
Pada Tugas Akhir ini dibangun sistem frontend antarmuka peserta pemilu dan aplikasi authenticator di ponsel pintar Android pengguna yang dilengkapi dengan fitur NFC. Selain itu, juga dibangun mekanisme pengamanan data dan integritas hasil suara peserta pemilu sebelum dimasukkan ke dalam server, contoh server untuk mencatat hasil suara, dan fitur lain yang menunjang proses operasional sistem. Untuk skenario yang diujikan, dirancang alur sistem yang menyerupai pemilihan umum yang biasa dilakukan di setiap periode kepresidenan di Indonesia namun dengan beberapa proses yang diikuti dengan penggunaan fitur E-Vote. Tahapan-tahapan yang harus dilalui oleh pemilih untuk mendaftarkan dirinya ke dalam sistem E-Vote adalah sebagai berikut: 1. Pemilih memasang aplikasi autentikator pada ponsel pintar yang dilengkapi dengan fitur NFC. 2. Pemilih mendaftarkan diri sesuai dengan aturan yang ditetapkan oleh KPU, mengirim identitas pemilih disertai dengan data public key yang dihasilkan oleh aplikasi autentikator ke administrator sistem 3. Pemilih mencoba menempelkan ponsel pintar ke NFC reader untuk memastikan bahwa autentikator berfungsi.
17
18 Saat pemilih melakukan proses pemilihan suara di TPS, tahapan-tahapan yang dilakukan oleh pemilih adalah sebagai berikut: 1. Pemilih melakukan proses pendataan oleh petugas dengan mencocokkan kartu identitas dengan daftar yang telah ada. 2. Petugas mencocokkan data pemilih dengan daftar peserta yang telah memberihan hak suaranya ke pemilu. Apabila pemilih belum ada di daftar, pemilih bisa melanjutkan proses pemilihan. 3. Pemilih memulai aplikasi autentikator yang ada di ponsel pintar yang telah didaftarkan sebelumnya, dan meletakkannya ke tempat yang disediakan. 4. Pemilih memasukkan password ke dalam ponsel pintar untuk memulai melakukan proses pengambilan suara. 5. Ponsel pintar akan melakukan komunikasi data dengan vote machine. Setelah itu ada dua kemungkinan yang terjadi, yaitu: a. Data yang ada di ponsel pintar tidak cocok dengan data yang telah didaftarkan sebelum proses pemilihan berlangsung, kemungkinan disebabkan oleh password yang dimasukkan salah, aplikasi tidak sengaja terhapus dan kembali ke pengaturan semula, atau hal teknis lain yang menyebabkan autentikator gagal dalam membuktikan bahwa pemilih adalah peserta yang sah. Apabila hal ini terjadi, hubungi petugas TPU. b. Data yang ada di ponsel pintar cocok dengan data yang telah didaftarkan, namun autentikator gagal dalam membuktikan kepemilikan data identitas yang didaftarkan sebelum proses pemilihan berlangsung. Hal ini bisa jadi indikasi peserta mencoba melakukan kecurangan dengan melakukan impersonasi pemilih lain.
19 c. Data yang ada di ponsel pintar cocok dengan data yang telah didaftarkan, namun autentikator berhasil membuktikan kepemilikan data identitas ke vote machine. Pemilih bisa melanjutkan ke tahap selanjutnya. 6. Pemilih memilih kandidat yang ada di vote machine. 7. Pilihan pemilih akan ditampilkan ke aplikasi autentikator disertai dengan tombol “Authorize Decision”. Apabila pilihan pemilih yang ada di ponsel pintar dan vote machine sama, pemilih bisa melanjutkan dengan menekan tombol “Authorize Decision”. Sebaliknya, apabila ada perbedaan pilihan yang ditampilkan oleh vote machine dan aplikasi autentikator, hal ini bisa dijadikan indikasi kecurangan di pihak pelaksana. 8. Selesai. Suara pemilih akan diunggah ke server dan dimasukkan ke database. Vote machine dan server terhubung ke dalam jaringan yang aman dan vote machine diletakkan di bilik suara. Petugas pemilu berjaga-jaga di pos masing-masing apabila terjadi kendala teknis. 3.2
Perancangan Arsitektur Sistem
Sistem dalam rancangan Tugas Akhir ini membutuhkan beberapa perangkat yang terhubung ke jaringan, sehingga perlu untuk merancang arsitektur sistem yang akan dibangun. Gambaran arsitektur sistem bisa dilihat di Gambar 3.1 dan Gambar 3.2.
20
Gambar 3.1 Arsitektur sistem E-Vote
Gambar 3.2 Arsitektur sistem pada vote machine
21 Sistem E-Vote secara keseluruhan terhubung dalam jaringan yang aman, bisa melalui virtual private network (VPN), atau dengan cara yang lain. Di server, terdapat beberapa mesin dengan bagian-bagian seperti di Gambar 3.1. Berikut ini merupakan penjelasan dari bagian-bagian yang ada di server:
Central vote server merupakan server gateway yang menghubungkan antara jaringan luar yang menghubungkan semua vote machine dengan sistem server yang ada di jaringan belakang gateway. Server ini bisa terdiri dari beberapa mesin yang mengendalikan arus data antar jaringan. Sistem utama vote server bisa dijalankan di server ini. Verifier adalah server yang bertugas untuk memeriksa semua data yang masuk ke vote server dan mencocokkannya dengan tandatangan digital yang ada pada data. Vote Pool adalah server yang bertugas menghitung perolehan suara yang masuk ke dalam sistem vote server. Server ini bisa dihubungkan ke sistem informasi lain yang bisa menampilkan perolehan suara melalui API. ID Database Server merupakan server yang menyimpan semua identitas peserta pemilih. Identitas yang disimpan merupakan kunci publik yang digunakan untuk autentikasi dan pemeriksaan tandatangan digital pemilih. Menimpan data selain data yang disebutkan tadi tidak direkomendasikan karena bisa menyebebabkan kunci publik pemilih bisa dikaitkan dengan identitas asli pemilih, dan hal ini melanggar asas pemilu yang bersifat rahasia.
Untuk gambaran arsitektur sistem di vote machine bisa dilihat di Gambar 3.2. Vote machine adalah perangkat komputer yang menjalankan program frontend yang dilengkapi dengan NFC reader yang didukung oleh program frontend. Sedangkan untuk authenticator agent dipasang di perangkat ponsel pintar
22 yang mempunyai fitur NFC yang bisa mengemulasi perangkat NFC pasif (host-based card emulation) sesuai dengan standar ISO/IEC 7816-4 dan ISO/IEC 14433A. 3.3
Perancangan Protokol dan Struktur Data
Pada rancangan sistem di dalam Tugas Akhir ini, penulis menggunakan rancangan protokol hasil modifikasi dari standar yang sudah ada dan struktur data berbasis JSON yang bisa di serialisasi dan deserialisasi ke dalam bentuk objek Java dan diproses sedemikian rupa sehingga menghasilkan struktur berlapis. 3.3.1
Perancangan Protokol dan Alur Komunikasi NFC
Sistem autentikator dan vote machine pada rancangan arsitektur ini menggunakan Near Field Communication (NFC) sebagai media komunikasi jarak dekat antara autentikator dengan vote machine, sehingga dibutuhkan perancangan protokol serta alur komunikasi data antar perangkat. Gambar 3.3 menggambarkan rancangan alur data normal antara autentikator, vote machine, dan vote server. Berikut ini merupakan penjelasan secara rinci elemen yang terlibat dalam skema komunikasi sistem.
Elemen Public Certificate
ID
Tabel 3.1 Penjelasan Alur Data Deskripsi Certificate yang ditandatangani oleh Certificate Authority yang sah dan bisa juga melalui Chain of Trust dari Intermediate Certificate Authority. ID berasal dari fungsi Discrete Logarithm Modulo “y = gx mod p”, dimana x adalah secret key.
23 Fungsi hash adalah fungsi kriptografi satu Fungsi Hash arah yang menghasilkan nilai dengan panjang H(m1, m2, ...,mn) tetap. Pada proses hash, pesan m1, m2, sampai mn akan digabung atau concatenate Secret key diperoleh dari fungsi hash satu Secret Key (s) arah H dari secure element smartphone serta password pengguna. s = H(IMEI, SE, pass) Fungsi Verify() adalah bagian dari ZeroKnowledge Protocol untuk proses autentikasi Verify(ID, pengguna dengan mengirimkan problem Challenge) yang hanya bisa dijawab oleh pihak yang mengetahui secret key yang sesuai dengan ID. Fungsi Proof() adalah bagian dari ZeroKnowledge Protocol untuk proses autentikasi Proof(ID, pengguna dengan mengirimkan jawaban dari Answer) problem ke verifier untuk membuktikan bahwa prover mengetahui secret key dari ID terkait. Ballot merupakan kertas suara digitalyang telah diberi digital signature dari central vote Ballot server untuk menghindari perubahan isi ballot oleh pihak asing. Digital signature menggunakan skema RSA. Metadata berisi timestamp dan data lain yang Metadata belum ditetapkan tetapi menunjang fungsi sistem E-Vote Fungsi ini adalah fungsi digital signature untuk menandatangani pesan m dengan secret key pihak terkait. Digital Signature Sign(m) yang digunakan oleh pemilih / voter menggunakan Digital Signature Algorithm (DSA), dan untuk vote machine dan central vote server menggunakan private key RSA.
24 Untuk protokol komunikasi NFC, penulis menggunakan standar ISO/IEC 7816-4 dengan memodifikasi header instruction flag (INS) seperti di Tabel 3.2Error! Reference source not found. dengan flag yang tidak didefinisikan di ISO/IEC 7816-4. Ukuran maksimal satu packet APDU NFC tidak lebih dari 255 bytes, sehingga apabila data yang dikirim terlalu besar, harus ada mekanisme pemecahan data sehingga data bisa dikirim dengan batasan ukuran yang diperbolehkan [12].
CLA 1 byte
Tabel 3.2 Header NFC APDU Data Header Payload INS P1 P2 Lc Le Payload 1 1 1 3 0/3 ≤ 224 bytes byte byte byte bytes bytes
Karena autentikator melakukan komunikasi NFC dengan mode host-based card emulation, autentikator hanya bisa mengirim data apabila vote machine mengirim perintah PULL. Struktur data protokol response autentikator bisa dilihat di Error! eference source not found.. Response status code yang digunakan di protokol ini mengikuti standar ISO/IEC 7816-4, dengan nilai 9000 (hex) untuk respon no error, 61HH (hex) untuk menandakan bahwa masih ada data yang belum diambil sejumlah 0xHH bytes [12].
Tabel 3.3 Struktur response APDU Payload Payload Payload Status Code ≤ 224 bytes 2 bytes
25
Gambar 3.3 Alur Data Sistem E-Vote
26 3.3.2
Perancangan Struktur Data Komunikasi
Pertukaran data yang terjadi antara autentikator dengan vote machine mengikuti rancangan struktur data seperti di Gambar 3.4. Data yang dikirim dan diterima antar perangkat merupakan representasi objek Java yang diserialisasi menggunakan library Google Gson dengan format JavaScript Object Notation (JSON). Data ini diproses lebih lanjut dengan memampatkan data (data compressing) menggunakan library ZLIB ompressor yang ada di dalam spesifikasi Java. Data hasil kompresi kemudian dipecah menjadi paket dengan ukuran 224 bytes sesuai dengan aturan ukuran payload di protokol yang dijelaskan sebelumnya. Dengan rancangan struktur data seperti ini memungkinkan penulis mengirim data yang tidak sesuai standar ISO/IEC 7816-4 dan mempermudah pengiriman data berupa objek native, sehingga tidak perlu mendefinisikan cara representasi data yang terlalu kompleks.
Gambar 3.4 Struktur Data Komunikasi NFC
27 3.3.3
Perancangan Struktur Data Surat Suara atau Ballot
Rancangan struktur data surat suara atau ballot yang digunakan di sistem menggunakan format JavaScript Object Notation (JSON) dan semua representasi elemen data yang ada di surat suara menggunakan tipe data String yang bisa dibaca dan dicetak. Adapun tipe data lain yang tidak bisa direpresentasikan dengan String harus diubah (encode) menggunakan skema Base64 sehingga representasi data bisa masuk ke dalam format JSON. Struktur data ini bisa dilihat di Tabel 3.4 dan Tabel 3.5. Tabel 3.4 Struktur Data Surat Suara atau Ballot JSON Ballot Header Version String Ballot candidate list Kandidat 1 JSON Element Kandidat 2 JSON Element ................. Kandidat n JSON Element End of ballot candidate list Signature Base64 encoded binary JSON Ballot Footer Tabel 3.5 Struktur Data Kandidat JSON Candidate Header Nama String Nomor_Urut String Foto Base64 encoded binary Deskripsi String JSON Candidate Footer Di dalam struktur data surat suara dan struktur data kandidat terdapat beberapa bagian yang akan dijelaskan secara detail:
28 Struktur data surat suara:
Version adalah data yang mendeskripsikan versi struktur data yang digunakan. Versi yang lebih baru mungkin tidak bisa digunakan oleh sistem yang dirancang dengan struktur data versi lama, tetapi struktur data versi lama bisa digunakan di sistem yang dirancang dengan struktur data yang lebih baru. Kandidat adalah elemen JSON di dalam struktur data yang memiliki format tersendiri yang akan dijelaskan lebih lanjut. Elemen ini bisa berisi lebih dari dua entry, dan dalam rancangan ini tidak ada batasan berapa entry yang bisa ditampung oleh struktur data ini. Signature adalah data dengan format binary yang telah diubah ke dalam representasi Base64. Signature ini merupakan tanda tangan digital dengan algoritma RSA dari semua kandidat yang ada dengan cara menggabungkan semua entry data yang ada di dalam struktur data kandidat yang dipisahkan dengan karakter “\n” (newline) dan hasil penggabungan ini dimasukkan kedalam fungsi RSA digital Signature dengan menggunakan kunci privat dari Certificate Authority (CA) Struktur data surat suara:
Nama merupakan data nama kandidat dalam bentuk String. Apabila nama kandidat memiliki karakter yang tidak sesuai dengan standar format JSON, maka karakter yang ada di dalam nama kandidat harus direpresentasikan dalam bentuk karakter escaped unicode. Nomor_Urut merupakan data nomor urut kandidat dalam bentuk angka integer. Nomor urut ini harus unik (tidak boleh ada yang sama) untuk setiap kandidat yang ada di dalam surat suara yang sama. Foto merupakan data foto kandidat dengan format Base64 encoded binary. Foto ini merupakan data image
29
yang memiliki format JPEG, PNG, atau GIF yang bisa ditampilkan oleh sistem frontend. Deskripsi merupakan deskripsi kandidat dengan format String. Apabila ada karakter yang tidak sesuai dengan standar format JSON, maka karakter yang ada harus direpresentasikan dalam bentuk karakter escaped unicode.
Surat suara bisa di verifikasi integritasnya dengan mencocokkan signature yang ada di dalam surat suara dengan data kandidat yang ditampung di dalam surat suara dan dengan kunci publik yang ada di certificate CA. 3.3.4
Perancangan Struktur Data Parameter Vote Machine
Vote machine memerlukan beberapa konfigurasi atau parameter yang harus disediakan pada saat aplikasi vote machine dijalankan. Parameter ini berisi pasangan kunci publik-privat yang digunakan oleh vote machine untuk berkomunikasi dengan server serta beberapa certificate untuk dikirimkan ke autentukator dengan tujuan untuk mengidentifikasi vote machine dan server dari certificate yang disediakan. Struktur data yang digunakan berupa JavaScript Object Notation (JSON) hasil serialisasi objek Java yang berisi list certificate serta pasangan kunci publikprivat. Skema struktur data untuk parameter vote machine bisa dilihat di Gambar 3.5. Penjelasan elemen data pada parameter adalah sebagai berikut:
publicKey adalah objek kelas Certificate yang digunakan untuk autentikasi keabsahan vote machine terhadap aplikasi autentikator. privateKey merupakan kunci privat dari publicKey yang digunakan untuk tanda tangan digital surat suara atau ballot yang telah diverifikasi oleh autentikator. certificateHierarcy merupakan kumpulan sertifikat yang akan dikirimkan ke autentikator untuk membuktikan
30 sertifikat vote machine adalah sertifikat yang dikeluarkan oleh pihak berwajib.
Gambar 3.5 Struktur Data Parameter Vote Machine 3.4
Perancangan Antarmuka Sistem
Antarmuka tampilan yang dirancang terdiri dari antarmuka vote machine dan antarmuka aplikasi autentikator. 3.4.1
Perancangan Antarmuka Vote Machine
Untuk perancangan tampilan antarmuka di vote machine, terdapat tiga tampilan yaitu jendela konfigurasi data mesin voting, jendela verifikasi pemilih, dan jendela utama. 3.4.1.1
Jendela Konfigurasi Vote Machine
Jendela ini digunakan untuk mengatur konfigurasi mesin voting yang digunakan. Opsi yang ada di jendela ini terdiri dari data konfigurasi yang telah disediakan, konfigurasi NFC Reader,
31 dan konfigurasi alamat server. Gambar 3.6 merupakan gambaran secara umum mengenai bentuk tampilan jendela konfigurasi data yang akan dirancang.
Gambar 3.6 Jendela Konfigurasi Vote Machine 3.4.1.2
Jendela Verifikasi Pemilih
Jendela ini digunakan untuk memberitahukan pemilih untuk meletakkan ponsel pintar pemilih ke NFC Reader dan menampilkan status verifikasi pemilih. Jendela ini merupakan
32 jendela interaksi satu arah sehingga jendela ini hanya menampilkan status dan tidak memiliki opsi yang bisa dirubah. Gambar 3.7 merupakan gambaran secara umum mengenai bentuk tampilan jendela verifikasi yang akan dirancang.
Gambar 3.7 Jendela Verifikasi 3.4.1.3
Jendela Utama
Jendela utama merupakan jendela yang digunakan pemilih untuk melakukan pemilihan suara. Jendela ini terdiri dari panel list kandidat, panel detail kandidat, tombol untuk memilih, dan panel status. Gambar 3.8 merupakan gambaran secara umum mengenai bentuk tampilan jendela utama yang akan dirancang.
33
Gambar 3.8 Jendela Utama 3.4.2
Perancangan Antarmuka Aplikasi Autentikator
Untuk perancangan tampilan antarmuka aplikasi autentikator di ponsel pintar Android, terdapat tiga tampilan yaitu tampilan awal, tampilan verifikasi pengguna, dan tampilan verifikasi pilihan suara. 3.4.2.1
Tampilan Awal
Tampilan awal aplikasi autentikator memiliki beberapa elemen, yaitu ikon aplikasi, sebuah text field untuk menampilkan status autentikator, serta sebuah tombol untuk keluar dari aplikasi. Tampilan ini merupakan tampilan interaksi satu arah dan tampilan ini hanya terlihat pada mode standby saat autentikator menunggu adanya interaksi data dengan vote machine melalui antarmuka NFC. Gambar 3.9 merupakan gambaran secara umum
34 mengenai bentuk tampilan awal aplikasi autentikator yang akan dirancang.
Gambar 3.9 Tampilan Awal Autentikator
35 3.4.2.2
Tampilan Verifikasi Pengguna
Di tampilan verifikasi pengguna ini terdapat kotak masukan password pengguna untuk membuka kunci privat yang ada di aplikasi autentikator. Tampilan ini hanya muncul sekali saat aplikasi dijalankan dan pengguna belum memasukkan password dan membuka kunci privat autentikator. Gambar 3.10 merupakan gambaran secara umum mengenai bentuk tampilan verifikasi pengguna di aplikasi autentikator yang akan dirancang.
Gambar 3.10 Tampilan Verifikasi Pengguna
36 3.4.2.3
Tampilan Verifikasi Pilihan Suara
Di tampilan verifikasi pilihan suara terdapat panel yang memperlihatkan calon atau kandidat yang dipilih oleh pengguna melalui vote machine. Di dalam panel ini terdapat image yang menggambarkan potret kandidat, kotak teks yang menampilkan nama serta deskripsi kandidat, serta tombol untuk melakukan konfirmasi pilihan suara. Gambar 3.11 merupakan gambaran secara umum mengenai bentuk tampilan verifikasi pilihan suara di aplikasi autentikator yang akan dirancang.
Gambar 3.11 Tampilan Verifikasi Pilihan Suara
4 BAB IV IMPLEMENTASI Bab ini berisi penjelasan mengenai implementasi dari perancangan yang sudah dilakukan pada bab sebelumnya. Implementasi berupa kode sumber untuk membangun sistem yang telah dirancang sebelumnya.
4.1
Lingkungan Implementasi
Implementasi sistem E-Vote yang dibangun terdiri dari dua bagian yang berbeda, yaitu sistem frontend, dan aplikasi autentikator. Spesifikasi perangkat keras dan perangkat lunak di sistem frontend ditunjukkan pada Tabel 4.1. Perangkat
Jenis Perangkat
Spesifikasi
Perangkat Keras
Prosesor
3.2 GHz Intel Core i5
Memori
8 GB 1333 MHz DDR3 Kubuntu 16.04.1 LTS Kernel Sistem Operasi 4.4.0-53 x86_64 Perangkat Lunak Perangkat NetBeans 8.2, dan Android Pengembang Studio 2.2.2 Tabel 4.1 Lingkungan Implementasi Sistem Frontend Di sistem frontend dilengkapi dengan perangkat NFC reader sebagai media komunikasi dengan aplikasi autentikator yang ada di ponsel pintar. Lingkungan implementasi di aplikasi autentikator adalah di perangkat ponsel pintar Android yang dilengkapi dengan fitur NFC.
37
38 4.2
Implementasi
Pada sub bab implementasi ini menjelaskan mengenai pembangunan sistem E-Vote secara detail dan menampilkan kode sumber yang digunakan.
4.2.1
Implementasi Sistem Vote Machine
Dalam sistem vote machine terdapat antarmuka dengan beberapa jendela yang mempunyai fungsi yang berbeda-beda. Fungsi tersebut akan dijelaskan secara detail. 4.2.1.1
Jendela Konfigurasi Awal
Di dalam Gambar 4.1 menunjukkan hasil implementasi dari aplikasi vote machine. Jendela ini merupakan jendela awal ketika aplikasi ini dijalankan di vote machine.
Gambar 4.1 Jendela Konfigurasi Awal
39 4.2.1.1.1
Implementasi Tombol Choose File
Tombol Choose File ini berfungsi untuk memanggil jendela browse file untuk menampilkan semua file yang ada di directory path relatif terhadap aplikasi vote machine ini berada. Petugas akan memilih file yang berisi parameter konfigurasi untuk vote machine yang telah ditentukan. Struktur data untuk file parameter sesuai dengan spesifikasi yang dijelaskan pada bab sebelumnya. File parameter vote machine menggunakan ekstensi file .prm. openFileWindow() READ filePath parameter readFile(filePath) IF parameter is invalid DO showErrorAlert() ELSE RETURN parameter
Pseudocode 4.1 Tombol Choose File 4.2.1.1.2
Implementasi Tombol Initialize
Tombol Initialize ini berfungsi untuk mencoba konfigurasi yang sudah dimasukkan dan apabila semua sudah benar, tampilkan jendela verifikasi autentikator. Pada saat tombol ini ditekan, sistem vote machine akan mencoba melakukan prosedur seperti berikut ini:
Mencoba membuka network socket ke server host ada. Mencari dan mencoba mengakses modul NFC Reader. Mencoba mengambil pasangan kunci dan sertifikat yang ada di file parameter.
40 Apabila salah satu prosedur diatas gagal, vote machine akan menampilkan pesan error. Gambar 4.2 menunjukkan salah satu pesan error pada saat proses Initialize gagal.
Gambar 4.2 Tampilan Pesan Error tryConnectToServer() IF fail to connect showErrorAlert() RETURN NULL READ NFCParameter NFCDevice openNFCDevice(NFCParameter) IF NFCDevice is NULL DO showErrorAlert() RETURN NULL ELSE showNextWindow()
Pseudocode 4.2 Tombol Initialize
41 4.2.1.2
Jendela Verifikasi Pemilih
Di dalam Gambar 4.3 menunjukkan hasil implementasi dari aplikasi vote machine. Jendela ini merupakan jendela setelah proses konfigurasi selesai. Di jendela ini terdapat background service yang memantau perangkat NFC Reader apabila ada perangkat yang tersambung melalui NFC. Apabila terdapat perangkat yang tersambung melalui NFC dan perangkat itu adalah ponsel pintar dengan aplikasi autentikator terbuka, maka di jendela ini proses autentikasi dengan autentikator dilaksanakan.
Gambar 4.3 Jendela Verifikasi Pemilih 4.2.1.2.1
Implementasi Background Service NFC Detection
Background service yang ada di jendela ini mempunyai tugas untuk memantau perubahan status yang ada di NFC Reader serta pengidentifikasi perangkat yang tersambung ke NFC dengan
42 mengirim identification packet yang sesuai dengan standar ISO/IEC 7816-4. Apabila perangkat membalas paket yang dikirimkan dengan status “no error” sesuai dengan standar ISO/IEC 7816-4, maka background service akan memulai proses autentikasi. WHILE program is not closed DO device scanNFC() IF device is authenticator DO doAuth(device) ELSE waitNextDevice()
Pseudocode 4.3 Background Service FUNCTION doAuth(device) i 0 send(getPublicKey) publicKey receivePacket() FOR i to auth_limit DO send(initiate_challenge) y receivePacket() r getRandomInt() send(r) x receivePacket() IF r is odd DO verdict proveLog(x, y) IF verdict is false DO RETURN false ELSE
43 verdict proveLogDerive(x, y, publicKey) IF verdict is false DO RETURN false showMainWindow()
Pseudocode 4.4 Proses Autentikasi 4.2.1.3
Jendela Utama
Di dalam Gambar 4.4 menunjukkan hasil implementasi dari aplikasi vote machine. Jendela ini merupakan jendela utama untuk pemilih memilih kandidat di dalam pemilu. Di jendela ini terdapat tombol untuk melakukan pilihan, panel daftar kandidat, dan panel detail kandidat.
Gambar 4.4 Jendela Utama
44 IF current item in candidate list changed DO currentCandidate getCandidate(list) title getTitle(currentCandidate) image getImage(currentCandidate) desc getDesc(currentCandidate) RETURN currentCandidate
Pseudocode 4.5 Tampilkan Kandidat dari Daftar
FUNCTION doVote(selected) preparedPacket convertToSignReq(selected) authSend(preparedPacket) sign receiveAuth() IF sign is valid signature DO vote machineSign(sign) sendToServer(vote) ELSE showErrorBadSign()
Pseudocode 4.6 Tombol Vote 4.2.2
Implementasi Aplikasi Autentikator
Dalam aplikasi autentikator terdapat antarmuka dengan beberapa tampilan yang mempunyai fungsi yang berbeda-beda. Fungsi tersebut akan dijelaskan secara detail. 4.2.2.1
Implementasi Tampilan Awal
Di Gambar 4.5 terdapat text label yang mengidikasikan status autentikator, serta tombol untuk keluar dari aplikasi. Di tamplian awal juga berjalan background process untuk mendeteksi adanya paket data masuk dari saluran NFC.
45
WHILE aplication is active DO packet receivePacket() IF packet is not application_id DO send(wrong_id) ELSE send(no_error) IF packet is do_authentication DO doAuth()
Pseudocode 4.7 Background Process Aplikasi
Gambar 4.5 Tampilan Awal Autentikator
46 4.2.2.2
Implementasi Tampilan Verifikasi Pengguna
Di Gambar 4.6, pengguna diharuskan untuk mengisi password untuk melengkapi kunci privat dan menurunkannya menjadi kunci publik dan dikirimkan ke vote machine. Background service yang ada di tampilan awal masih berjalan di tampilan ini, dan autentikator menunggu event apabila pengguna melakukan pemilihan suara.
Gambar 4.6 Verifikasi Pengguna
47 FUNCTION unlockSecret(password) prePrivateKey getPrivateData() privateKey concat(prePrivateKey, password) publicKey deriveFromPrivateKey(privateKey) send(publicKey) status receiveData() IF status is rejected DO showRejectedMessage() ELSE state getAuthState() IF state is not authenticated DO waitForAuthProcess() ELSE waitForVoteEvent()
Pseudocode 4.8 Proses Unlock 4.2.2.3
Implementasi Tampilan Autentikasi Pilihan Suara
Di Gambar 4.7, setelah pengguna melakukan pemilihan suara di vote machine, autentikator akan menampilkan kembali pilihan pengguna untuk memastikan tidak ada kesalahan dan kecurangan visual yang bisa terjadi di vote machine, dan autentikator akan menandatangani pilihan suara jika pengguna menekan tombol authorize, atau mengirimkan data penolakan penandatanganan pilihan suara ke vote machine jika pengguna menekan tombol reject.
48
Gambar 4.7 Tampilan Autentikasi Pilihan Suara
49 FUNCTION authorizeChoice(choice) privateKey getPrivateKey timestamp getTimeNowInMilis() salt getRandomData(48 bytes) data concat(choice, timestamp, salt) signature sign(data, privateKey) choicePack pack(choice, timestamp, signature) send(choicePack) return choicePack FUNCTION (choice) Send(rejectSignature)
Pseudocode 4.9 Tombol Authorize dan Reject
salt,
50 (Halaman ini sengaja dikosongkan)
5 BAB V HASIL UJI COBA DAN EVALUASI Bab ini berisi penjelasan mengenai skenario uji coba dan evaluasi pada sistem E-Vote yang telah dibangun. Hasil uji coba didapatkan dari implementasi pada bab 4 dengan skenario yang berbeda. Bab ini berisikan pembahasan mengenai lingkungan pengujian dan skenario uji coba yang terdiri dari pengujian fungsionalitas, dan pengujian keamanan program yang telah dibuat. 5.1
Lingkungan Pengujian
Lingkungan pengujian untuk sistem E-Vote yang dibangun menggunakan spesifikasi perangkat keras dan perangkat lunak seperti ditunjukkan di Tabel 5.1, sedangkan lingkungan pengujian untuk sistem autentikator menggunakan perangkat dengan spesifikasi seperti yang ditunjukkan di Tabel 5.2. Perangkat
Perangkat Keras
Jenis Perangkat
Spesifikasi
Prosesor
3.2 GHz Intel Core i5
Memori
8 GB 1333 MHz DDR3
Perangkat Tambahan
PN532 FTDI232 Module
NFC Module, USB-to-UART
Kubuntu 16.04.1 LTS Kernel 4.4.0-53 x86_64 Perangkat Lunak Perangkat NetBeans 8.2, dan Android Pengembang Studio 2.2.2 Tabel 5.1 Lingkungan Pengujian Sistem E-Vote Sistem Operasi
51
52
Perangkat
Jenis Perangkat Tipe
Perangkat Keras
Perangkat Lunak
Prosesor
Spesifikasi Ponsel Pintar Sony Xperia M2 ARM Cortex-A7 Quad-core 1.2 GHz
Memori
1 GB RAM
Sistem Operasi
Android Lollipop 5.1.1 build 18.6.A.0.184 (API level 22)
Tabel 5.2 Lingkungan Pengujian Sistem Autentiaktor
Gambar 5.1 Arsitektur Uji Coba 5.2
Skenario Uji Coba
Pada bagian ini akan dijelaskan mengenai skenario uji coba yang telah dilakukan. Ada dua jenis uji coba yang telah dilakukan yaitu: 1) Uji coba fungsionalitas. Jenis uji coba ini berfungsi untuk menguji fungsionalitas dari sistem yang telah dibuat. Uji coba yang telah dilakukan yaitu: Menguji konfigurasi data, koneksi ke server, serta koneksi ke NFC reader. Menguji koneksi antara autentikator dengan vote machine.
53
Menguji autentikasi, verifikasi pilihan suara, serta penandatanganan digital terhadap pilihan suara. Memeriksa dan validasi tanda tangan digital yang ada di surat suara. 2) Uji coba keamanan Jenis uji coba ini berfungsi untuk menguji keamanan dari sistem yang telah dibangun dengan fokus utama autentikasi pemilih, integritas data surat suara, dan kerahasiaan suara pemilih. Uji coba yang telah dilakukan yaitu: Menguji keamanan dengan mengubah data autentikasi Menguji integritas surat suara dengan mencoba mengubah dan verifikasi ulang surat suara 5.2.1 5.2.1.1
Pengujian Fungsionalitas Pengujian Konfigurasi dan Koneksi
Dalam Pengujian ini, dilakukan uji coba vote machine apabila konfigurasi data dan koneksi yang dibutuhkan oleh aplikasi salah atau tidak sesuai dengan protokol yang telah ditetapkan. Hal pertama yang diuji adalah konfigurasi NFC reader. Apabila NFC reader tidak terdeteksi atau bermasalah dengan privilege, maka vote machine menampilkan pesan error yang mengatakan bahwa perangkat NFC tidak terdeteksi.
54
Gambar 5.2 Tampilan Pesan Kesalahan Perangkat NFC Apabila file konfigurasi tidak sesuai format atau file konfigurasi tidak memiliki skema pasangan kunci publik RSA, maka vote machine menampilkan pesan error dengan pesan bahwa file konfigurasi tidak sesuai format seperti di Gambar 5.3.
Gambar 5.3 Tampilan Error Konfigurasi Tidak Sesuai Format Apabila vote machine tidak bisa melakukan koneksi dengan server, maka vote machine menampilkan pesan error yang mengatakan bahwa alamat server tidak valid atau gagal dalam melakukan koneksi seperti Gambar 5.4.
55
Gambar 5.4 Tampilan Error Koneksi Ke Server
5.2.1.2
Pengujian Koneksi antara Vote Machine dengan Autentikator
Dalam pengujian ini, dilakukan uji koneksi antar perangkat, pengujian identifikasi perangkat yang benar, serta kemampuan perangkat mendeteksi disconnect event. Hal pertama yang dilakukan adalah mencoba mendekatkan autentikator dengan NFC reader yang tersambung ke vote machine. Apabila perangkat mengenali satu sama lain, vote machine langsung menginisiasi proses autentikasi seperti pada Gambar 5.5. Apabila yang terdeteksi bukanlah autentikator melainkan perangkat NFC lain, maka vote machine menampilkan pesan bahwa identifier yang dikirim oleh perangkat tidak cocok seperti pada Gambar 5.6. Vote machine memulai kembali proses identifikasi autentikator setelah perangkat yang bersangkutan dijauhkan dari NFC Reader dan disconnect event terjadi. Apabila pada saat transaksi data berlangsung dan autentikator dijauhkan dari NFC reader, maka autentikator akan menghapus semua state yang ada dan kembali ke menu awal. Vote machine kembali ke jendela utama dan menghapus semua state yang berhubungan dengan sesi sebelumnya.
56
Gambar 5.5 Vote Machine Melakukan Proses Autentikasi
Gambar 5.6 Deteksi Perangkat NFC Selain Autentikator
57
5.2.1.3
Pengujian Autentikasi dan Verifikasi Pilihan Suara
Dalam pengujian ini, dilakukan uji autentikasi pengguna melalui aplikasi autentikator, dan verifikasi pilihan suara pengguna menggunakan aplikasi autentikator. Pengujian dilakukan dengan cara mendekatkan autentikator di NFC Reader pada vote machine yang sudah siap dan menunggu keberadaan autentikator. Vote machine akan mengirimkan paket data NFC ke autentikator sesuai prosedur autentikasi. Apabila autentikator tidak terdaftar di server, vote machine akan menampilkan pesan error yang mengatakan autentikator belum terdaftar serta mengirim paket NFC yang berisi informasi error. Proses autentikasi dilakukan secara berulang-ulang dengan jumlah sesuai dengan yang ditetapkan pada saat pengembangan frontend. Ketika proses autentikasi sudah selesai, vote machine langsung menampilkan jendela utama seperti pada Gambar 5.7 dan mengirimkan paket NFC ke autentikator yang berisi tentang informasi autentikasi sukses. Tampilan autentikator menampilkan pesan proses autentikasi selesai seperti pada Gambar 5.8
Gambar 5.7 Jendela Utama
58
Gambar 5.8 Tampilan Autentikator Setelah Proses Autentikasi Selesai Jumlah proses autentikasi menggunakan Zero-Knowledge Proof berpengaruh terhadap lama waktu proses autentikasi. Penulis mencoba menggunakan jumlah loop yang berbeda-beda dan hasil perbandingan bisa dilihat di Tabel 5.3.
59 Tabel 5.3 Perbandingan antara Jumlah Loop dengan Durasi Jumlah loop Durasi Rata-rata durasi per challenge 8 10 detik 1,25 detik per challenge 12 13 detik 1,08 detik per challenge 16 18 detik 1,12 detik per challenge 24 24 detik 1,00 detik per challenge 32 32 detik 1,00 detik per challenge 48 47 detik 0,98 detik per challenge 64 61 detik 0,95 detik per challenge Dari perbandingan di Tabel 5.3, durasi autentikasi berbanding lurus dengan jumlah loop, sedangkan durasi per autentikasi challenge relatif sama sekitar 1 detik per challenge. Pada saat pengguna melakukan pemilihan suara, pilihan pengguna diteruskan ke autentikator dan diberi digital signature dengan kunci milik vote machine. Autentikator akan memeriksa digital signature yang ada di ballot dan pilihan pengguna, dan menampilkan layar authorization seperti pada Gambar 5.9.
Gambar 5.9 Tampilan Authorization
60
Gambar 5.10 Log Signature di Autentikator Apabila pemilih sudah memeriksa dan menekan tombol authorize di autentikator, maka autentikator mengirim data yang berisi pilihan pengguna, timestamp, serta digital signature pengguna ke vote machine yang nantinya akan diperiksa ulang. Gambar 5.11 menunjukkan hasil pemeriksaan digital signature di vote machine.
Gambar 5.11 Log Vote Machine Selanjutnya vote machine juga akan memberikan timestamp serta digital signature di pilihan pengguna dan mengunggah data tersebut ke server.
Gambar 5.12 Log Verifikasi di Server
61 5.2.2 5.2.2.1
Pengujian Keamanan Pengujian Keamanan terhadap Perubahan Data Autentikasi
Di dalam pengujian ini, penulis merubah program autentikator sedemikian rupa sehingga data credential atau public key yang dikirimkan oleh autentikator menyerupai public key milik orang lain tetapi autentikator tidak mempunyai private key yang bersangkutan. Autentikator yang tidak mempunyai private key menyiapkan sejumlah nilai r yang sudah dikomputasi sebelumnya, dan menebak apakah vote machine meminta nilai r atau x+r. Cara ini secara teori bisa mengelabuhi proses autentikasi menggunakan metode Zero-knowledge Proof dengan probabilitas keberhasilan 1/2𝑛 dengan n adalah repetisi proses autentikasi yang dibutuhkan untuk vote machine agar mempercayai autentikator. Vote machine bisa membedakan antara autentikator yang memiliki key pair yang benar dan autentikator yang tidak memiliki private key yang benar.
Gambar 5.13 Tampilan Autentikasi Gagal
62
Gambar 5.14 Log Vote Machine saat Autentikasi Gagal Pada Gambar 5.14 menunjukkan salah satu zero-knowledge proof challenge yang gagal. Pada saat vote machine meminta autentikator untuk memperlihatkan data rahasia challenge B (x+r), dan melakukan komputasi untuk mencocokkan nilai y dan y’, hasilnya tidak sama seperti yang diperlihatkan pada Gambar 5.14. 5.2.2.2
Pengujian Integritas Surat Suara dan Pilihan Suara
Pada pengujian ini surat suara di server dirubah akan dirubah sedemikian rupa sehingga data surat suara yang ada tidak
63 sama dengan data surat suara yang ditetapkan di awal penandatanganan surat. Pengujian ini digunakan untuk menguji vote machine dan autentikator terhadap integrasi surat suara. Di pengujian ini, autentikator dan vote machine dapat mengidentifikasi perubahan surat suara. Perubahan surat suara bisa dilihat pada Gambar 5.15 dan Gambar 5.16. Gambar 5.15 menunjukkan data surat suara yang belum dirubah dan mempunyai signature yang sah. Sedangkan pada Gambar 5.16 data surat suara dirubah dengan menambahkan deskripsi pada surat suara tetapi signature tidak dirubah.
Gambar 5.15 Surat Suara Sebelum Dirubah
64
Gambar 5.16 Surat Suara Setelah Dirubah
Gambar 5.17 Pesan Error di Vote Machine
65
Gambar 5.18 Tampilan Error di Autentikator
66
6 BAB VI KESIMPULAN DAN SARAN Bab ini berisikan kesimpulan yang dapat diambil dari hasil uji coba yang telah dilakukan. Selain kesimpulan, terdapat juga saran yang ditujukan untuk pengembangan mekanisme yang diajukan ini nantinya. 6.1
Kesimpulan
Kesimpulan yang diperoleh berdasarkan uji coba dan evaluasi yang dilakukan antara lain: 1) Dengan melihat semua uji fungsionalitas, semua kontrol aplikasi berjalan dengan baik dan implementasi sistem yang dirancang berjalan sesuai dengan rancangan sistem. 2) Rancangan sistem autentikator dipadukan dengan rancangan sistem vote machine yang sesuai bisa mendeteksi adanya anomali pada proses autentikasi dan anomali pada data surat suara atau ballot. 3) Sistem autentikator hasil implementasi ini masih mempunyai beberapa kelemahan, salah satunya adalah performa autentikasi. Performa autentikasi challenge dengan rata-rata durasi sekitar 1 detik/challenge dirasa cukup lambat.
67
68 6.2
Saran
Saran yang diberikan terkait pengembangan pada Tugas Akhir ini adalah: 1. Memperbanyak zero-knowledge proof challenge dapat memperkuat sistem autentikasi secara umum. 2. Merubah protokol komunikasi data NFC ke dalam bentuk standar yang ditetapkan di ISO/IEC 7816-4 memungkinkan penggunaan smartcard dan perangkat lain sebagai media autentikator. 3. Penggunaan sistem backend yang lebih aman memperkuat sistem E-Vote secara keseluruhan tarhadap serangan yang bisa merubah data hasil pemilihan umum. 4. Penggunaan struktur data yang optimal bisa mengurangi waktu pengiriman data melalui NFC karena jalur data NFC terbatas di kecepatan rendah (106 kbit/s)
7
DAFTAR PUSTAKA
[1] T. Kohno, A. Stubblefield, D. S. Wallach dan A. D. Rubin, “Analysis of an Electronic Voting System,” IEEE Symposium on Security and Privacy, 2004. [2] A. J. Menezes, P. C. van Oorschot dan S. A. Vanstone, “Overview of Cryptography,” dalam Handbook of Applied Cryptography, CRC Press, 1997, pp. 1-48. [3] A. J. Menezes, P. C. van Oorschot dan S. A. Vanstone , “Public-Key Parameters,” dalam Handbook of Applied Cryptography, CRC Press, 1997, pp. 133-168. [4] M. Blum, S. Micali, A. De Santis dan G. Persiano, “NonInteractive Zero Knowledge,” Massachusetts Institute of Technology, Cambridge, 1990. [5] D. Chaum, J.-H. Evertse dan J. van de Graaf, “An Improved Protocol for Demonstrating Possession of Discrete Logarithms and Some Generalizations,” Lecture Notes in Computer Science, vol. 304, pp. 127-141, 2000. [6] A. G. Konheim, Hashing for Storage: Data Management, New Jersey: John Wiley & Sons, 2010. [7] National Institute of Standards and Technology, “FIPS PUB 180-4: Secure Hash Standard (SHS),” Federal Information Processing Standards, Gaithersburg, 2015. [8] National Institute of Standards and Technology, “Descriptions of SHA-256, SHA-384, and SHA-512,” National Institute of Standards and Technology. [9] U. V. Agrawal dan B. Khanna, “Near Field Communication, A Technology for Short Range Communication,” dalam National Conference on Advanves in Computing, Networking and Security, Nanded, Maharashtra 431606, India, 2013. 69
70 [10] G. Alpár, L. Batina dan R. Verdult, “Using NFC Phones for Proving Credentials,” Measurement, Modelling, and Evaluation of Computing Systems and Dependability and Fault Tolerance, vol. 7201, pp. 317-330, 2012. [11] National Institute of Standards and Technology, “FIPS PUB 186: Digital Signature Standard (DSS),” Federal Information Processing Standards, Gaithersburg, 2013. [12] International Organization for Standardization, “ISO/IEC 7816-4: Organization, security and commands for interchange,” International Organization for Standardization, 2005. [13] K. Curran, A. Millar dan C. Mc Garvey, “Near Field Communication,” International Journal of Electrical and Computer Engineering (IJECE), vol. 2, pp. 371-382, 2012. [14] W. Chen, G. P. Hancke, K. E. Mayes, Y. Lien dan J. H. Chiu, “NFC Mobile Transactions and Authentication based on GSM Network,” Proceedings of the 2010 Second International Workshop on Near Field Communication, pp. 83-89, 2010.
8
BIODATA PENULIS
Muhamad Ardhinata J. Merupakan anak sulung dari pasangan Bapak Juari dan Ibu Laksmi Wiriyanti. Lahir di Kediri pada tanggal 2 Oktober 1993. Penulis menempuh pendidikan formal dimulai dari TK Dharmawanita (1999-2000), SDN Karang Tengah 2 (2000-2006), SMP Negeri 2 Pare (2006-2009), SMA Negeri 2 Pare (2009-2012), dan S1 Teknik Informatika ITS (2012-2017). Bidang studi yang diambil oleh penulis pada saat berkuliah di Teknik Informatika ITS adalah Komputasi Berbasis Jaringan (KBJ). Penulis aktif dalam mengikuti lomba dan menjadi finalis di berbagai lomba seperti ITB PC dalam kategori competitive programming (2012), Gemastik 7 dalam kategori keamanan jaringan (2014), dan Gemastik 8 dalam kategori keamanan jaringan (2015). Penulis memiliki hobi membaca, menggali informasi, dan menyukai hal baru terutama di bidang ilmiah. Penulis dapat dihubungi melalui email:
[email protected] dengan kunci publik PGP 0xE261A1F2D1FE8249.
71