• Tidak ada hasil yang ditemukan

Implementasi Public Key Infrastructure untuk Keamanan Sistem Pengiriman Data Pilkada Via Mobile

N/A
N/A
Protected

Academic year: 2017

Membagikan "Implementasi Public Key Infrastructure untuk Keamanan Sistem Pengiriman Data Pilkada Via Mobile"

Copied!
43
0
0

Teks penuh

(1)

i

IMPLEMENTASI

PUBLIC KEY INFRASTRUCTURE

UNTUK

KEAMANAN SISTEM PENGIRIMAN DATA PILKADA

VIA MOBILE

SYAMSUL ARIFIN

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

(2)

i ABSTRACT

SYAMSUL ARIFIN, Implementation of Public Key Infrastructure for Security System of Local Elections Data Transmission Via Mobile. Supervised by SHELVIE NIDYA NEYMAN

Cryptography is a process of encrypting data into a form that can be read only by a system. The system has a key to read the encripted data. Based on the method, cryptographic algorithms can be divided into asymmetric key cryptography, symmetric key criptography, and public key cryptography. This research attemps to develop Public Key Infrastructure (PKI) with integrity service, which is implemented in the transmission of voting results in mobile election process. The benefits of this research is to simplify and improve the efficiency of the counting process and improving the security of the data transmission using mobile communication.

The method employed is the Life Cycle Security System in which a sequence of steps following the life cycle of security system by eliminating the operational and maintenance step. The algorithm used in this research are RSA and MD5 Hash Function. RSA Algorithm is used to facilitate the distribution of keys that was used in the message encryption, and MD5 hash functions as an authentication function. The result of this research is the security system of the transmission of local elections vote via mobile which overcome the threat of sniffing or snooping, camouflage, and alteration with provides security services of authentication, integrity, and availability.

(3)

i

IMPLEMENTASI

PUBLIC KEY INFRASTRUCTURE

UNTUK

KEAMANAN SISTEM PENGIRIMAN DATA PILKADA

VIA MOBILE

SYAMSUL ARIFIN

Skripsi

sebagai salah satu syarat untuk memperoleh gelar Sarjana Komputer pada

Departemen Ilmu Komputer

DEPARTEMEN ILMU KOMPUTER

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

INSTITUT PERTANIAN BOGOR

(4)

ii Judul skripsi : Implementasi Public Key Infrastructure untuk Keamanan Sistem Pengiriman

Data Pilkada Via Mobile

Nama : Syamsul Arifin

NIM : G64063472

Menyetujui Pembimbing,

Shelvie Nidya Neyman, S.Kom, M.Si. NIP 19770206 200501 2 002

Mengetahui

Ketua Departemen Ilmu Komputer,

Dr. Ir. Agus Buono, M.Si, M.Kom NIP 19660702 199302 1 001

(5)

iii

RIWAYAT HIDUP

Penulis lahir di Bangkalan pada tanggal 15 Agustus 1988. Penulis merupakan anak kelima dari lima bersaudara, pasangan Mi‟ad Ikhsan dan Sumani.

Pada tahun 2006, penulis lulus Sekolah Menengah Umum Negeri 1 Bangkalan, Kabupaten Bangkalan, Madura, Jawa Timur. Penulis melanjutkan perkuliahan di Institut Pertanian Bogor melalui jalur Ujian Seleksi Masuk IPB (USMI) pada tahun 2006. Penulis diterima di Program Studi Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam pada tahun 2008. Penulis aktif dalam organisasi Badan Eksekutif Mahasiswa Keluarga Mahasiswa IPB (BEM KM IPB) dan menjabat sebagai staf Kementrian Pendidikan pada tahun 2006. Penulis juga menjadi asisten praktikum Penerapan Komputer pada tahun 2008.

Penulis pernah melakukan Praktik Kerja Lapangan di Republik Citra Televisi Indonesia (RCTI)selama 2 bulan. Penulis membuat Sistem Dokumentasi Data Perusahaan RCTI. Penulis pernah bekerja sebagai programmer di salah satu perusahaan yang bergerak di bidang GPS

(6)

iv

PRAKATA

Alhamdulillah, segala puji dan syukur penulis panjatkan kepada Allah Subhanahuwata’ala atas semua rahmat dan karunia-Nya, sehingga penulis dapat menyelesaikan skripsi yang berjudul Implementasi Public Key Infrastructure untuk Keamanan Sistem Pengiriman Data Pilkada Via Mobile yang dilaksanakan pada bulan Juli 2010 sampai dengan September 2011. Shalawat serta salam penulis sampaikan kepada junjungan kita Nabi Muhammad Salallahualaihiwassalam.

Terima kasih kepada kedua orang tua tercinta, Ayahanda Mi‟ad Ikhsan dan Ibunda Sumani yang sampai detik ini selalu memberikan curahan kasih sayang yang tiada terhingga, juga untuk setiap dukungan, semangat, dan doa yang telah diberikan untuk penulis, begitu juga dengan keempat kakak penulis yang menjadi motivasi buat penulis untuk terus melakukan yang terbaik.

Penulis mengucapkan terima kasih kepada Ibu Shelvie Nidya Neyman, S.Kom, M.Si selaku pembimbing yang dengan sabar membimbing serta memberikan masukan kepada penulis.Terima kasih atas saran, bantuan, perhatian, bimbingan dan masukannya kepada penulis selama menjalankan penelitian ini. Ucapan terima kasih juga penulis sampaikan kepada pihak-pihak yang terus memberikan dukungan dan semangat :

1Teman-teman di PT. Global Posisi Semesta, terutama kepada Bapak Rudy Hartanto selaku pimpinan perusahaan.

2Seluruh staf pengajar dan karyawan Departemen Ilmu Komputer Institut Pertanian Bogor. 3Teman-teman ILKOM angkatan 43 atas kebersamaan dan dukungannya.

4Teman-teman GASISMA atas kebersamaan, persahabatan, semangat dan bantuannya. Semoga karya ilmiah ini bermanfaat bagi pembaca, terutama untuk para pembaca yang berminat untuk melanjutkan dan menyempurnakan penelitian ini.

Bogor, Juli 2012

(7)

v

DAFTAR ISI

Halaman

DAFTAR GAMBAR ... vi

DAFTAR LAMPIRAN ... vi

PENDAHULUAN Latar Belakang ... 1

Tujuan ... 1

Ruang Lingkup ... 1

Manfaat Penelitian ... 1

TINJAUAN PUSTAKA Kriptografi Kunci Publik ... 1

Algoritme RSA ... 1

Fungsi Hash ... 2

Message Digest 5 (MD5) ... 2

Komunikasi Perangkat Mobile ... 2

1 Teknologi Nirkabel 1G ... 2

2 Teknologi Nirkabel 2G ... 2

3 Teknologi Nirkabel 2,5 G ... 3

4 Teknologi Nirkabel 3G ... 3

Java 2 Micro Edition (J2ME) ... 3

1 Connected Limited Device Configuration (CLDC) ... 3

2 Connected Device Configuration (CDC) ... 4

3 Mobile Information Device Profile (MIDP) ... 4

METODE PENELITIAN Ancaman (Thread) ... 4

Kebijakan (Policy) ... 4

Spesifikasi ... 4

Desain... 4

Implementasi ... 4

HASIL DAN PEMBAHASAN Ancaman (Thread) ... 5

Kebijakan (Policy) ... 5

Spesifikasi ... 5

Desain... 5

Implementasi ... 8

KESIMPULAN DAN SARAN Kesimpulan ... 8

Saran ... 8

(8)

vi

DAFTAR GAMBAR

Halaman

1 Algoritme MD5 (Munir 2004) ... 2

2 Arsitektur jaringan GPRS. ... 3

3 Perkembangan teknologi Java ... 3

4 Siklus hidup sistem keamanan (Neyman 2007). ... 4

5 Flowchart pendaftaran petugas. ... 6

6 Flowchart pendaftaran calon. ... 6

7 Flowchart login ke sistem. ... 6

8 Form login. ... 7

9 Flowchart pengiriman data. ... 7

10 Formgenerate token. ... 8

DAFTAR LAMPIRAN Halaman 1 User interface aplikasi di sisi server ... 11

2 User interface aplikasi di sisi client ... 12

3 Implementasi public key infrastructure... 13

4 Data hasil enkripsi ... 21

(9)

PENDAHULUAN

Latar Belakang

Pemilihan Kepala Daerah (Pilkada)

merupakan salah satu bentuk perwujudan sistem politik demokrasi di Indonesia, sehingga pelaksanaan pilkada yang baik menjadi tolak ukur baik tidaknya pelaksanaan demokrasi. Pilkada harus dilaksanakan secara langsung, umum, bebas, dan rahasia serta dilandasi dengan semangat jujur dan adil. Oleh karena itu, pelaksanaan pilkada perlu dikelola dengan baik dan benar (Budi et al. 2008).

Proses pilkada memiliki 4 tahapan utama: 1 Pendataan adalah tahap untuk mendata

penduduk dan pemilih, TPS (Tempat Pemungutan Suara), dan peserta pilkada. 2 Persiapan adalah tahap untuk menetapkan

alokasi kursi untuk setiap daerah pemilihan, serta untuk menetapkan calon, serta

melengkapi pembentukan panitia

penyelenggara pilkada.

3 Pemungutan suara adalah tahapan

pengambilan dan penghitungan suara

Pilkada.

4 Pasca Pilkada adalah tahapan penetapan hasil pilkada.

Proses yang paling krusial pada pilkada adalah pada saat proses pengambilan suara dan proses penghitungan hasil suara. Setelah proses penghitungan, hasil suara dikirim ke pusat.

Sistem pengiriman data hasil suara yang

banyak dikembangkan belakangan ini

menggunakan aplikasi berbasis SMS yang diintegrasikan dengan aplikasi web. Tujuannya untuk mempercepat hasil perhitungan suara pilkada secara realtime dan mengurangi indikasi kecurangan (Amborowati 2007). Kelemahan sistem ini adalah proses pengiriman datanya masih menggunakan sistem SMS yang sederhana serta tidak sepenuhnya data jumlah suara dikirim ke pusat tetapi hanya mengambil sebagian suara sebagai sampel sehingga masih memungkinkan kecurangan.

Penelitian ini mencoba mengembangkan

sebuah sistem menggunakan algoritme

kriptografi kunci publik dalam proses pengiriman data pilkada untuk menigkatkan keamanan dan kerahasiaan informasi data hasil suara yang dikirimkan ke pusat. Sistem pengiriman data pilkada ini berguna sebagai pengaman agar tidak terjadi kecurangan dalam pengubahan pada saat pengiriman data ke pusat.

Tujuan

Penelitian ini bertujuan membangun sistem

Public Key Infrastruktur (PKI) dengan

keamanan layanan integritas di dalamnya. Layanan integritas tersebut menggunakan kriptografi sebagai autentikasi untuk memeriksa pesan yang terkirim apakah benar berasal dari sumber yang sah.

Ruang Lingkup

Penelitian ini mencoba mengembangkan sistem PKI yang merupakan sistem client-server. Sistem ini menggunakan mobile sebagai

client. Sistem diimplementasikan menggunakan simulator. Data yang digunakan dalam penelitian ini bersifat dummy. Bahasa

pemrograman yang digunakan untuk

mengembangkan sistem ini adalah bahasa pemograman Java yang diimplementasikan dalam lingkungan mobile.

Manfaat Penelitian

Hasil dari penelitian ini diharapkan dapat mempermudah dan meningkatkan efisiensi

waktu dalam perhitungan suara serta

meningkatkan keamanan pengiriman data pilkada yang dilakukan melalui mobile. Selain itu, metode keamanan yang dihasilkan dari penelitian ini dapat diterapkan dalam sistem pemilihan berbasis mobile (m-voting).

TINJAUAN PUSTAKA

Kriptografi Kunci Publik

Diberikan skema enkripsi yang teridiri atas himpunan transformasi enkripsi dan dekripsi {Ee : eϵK} dan {Dd : dϵK}. Metode enkripsi disebut skema enkripsi kunci publik jika untuk setiap pasangan (e,d). Kunci e dibuat tersedia untuk umum (publik) dan kunci pasangan d

dibuat untuk pribadi dan dijaga kerahasiaannya. Skema tersebut dikatakan aman, jika secara perhitungan tak-layak menentukan d dari e

(Menezes et al. 1996).

Algoritme RSA

Algoritme RSA ditemukan oleh Ron Rivest, Adi Shamir, dan Len Adleman. Algoritme ini diperkenalkan pertama kali pada bulan Agustus 1977. Algoritme kriptografi ini banyak digunakan untuk memberikan privasi dan menjamin autentikasi data digital. Saat ini RSA telah dikembangkan oleh banyak sistem komersial. RSA digunakan oleh web server dan

browser untuk keamanan lalu-lintas data pada web. RSA juga juga digunakan untuk menjamin

(10)

aplikasi yang membutuhkan keamanan data digital.

Deskripsi sederhana dari algoritme RSA sebagai berikut:

N = pq (1)

Dengan p dan q adalah dua buah bilangan prima besar dengan ukuran yang sama. Berikan nilai e

dan d dengan ketentuan sebagai berikut: ed = 1 mod φ(N) (2) φ(N) = (p-1)(q-1) (3)

N adalah RSA modulus, e adalah encryption exponent, dan d adalah decryption exponent. (N,e) adalah kunci publik yang digunakan untuk ekripsi pesan. (N,d) adalah kunci rahasia atau

kunci privat yang digunakan untuk

mendeskripsi chipertext atau pesan telah dienkripsi ke pesan sebenarnya (Boneh 1999).

Fungsi Hash

Fungsi hash adalah fungsi yang secara komputasi efisien memetakan bitstring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut nilai-hash (hash-value). Untuk fungsi hash dengan output nilai-hash n-bit, probabilitas pemilihan string secara random

yang dipetakan ke nilai-hash n-bit adalah 2-n. Berdasarkan definisi tersebut, ide dasar dari fungsi hash adalah membuat string input

menjadi teratur rapat dengan panjang seragam. Terkait dengan kegunaan kriptografi, fungsi

hash h dipilih sedemikian sehingga secara komputasi tak-layak menentukan input berbeda

x dan y sehingga h(x) = h(y) (Menezes et al. adalah kita dengan mudah dapat menghitung nilai hash pesan tetapi sangat sulit untuk mendapatkan kembali pesan semula.

MD5 memproses masukan dengan panjang 512 bit yang dibagi ke dalam 16 blok dengan panjang masing-masing blok 32 bit (Schneier 1996). Keluaran yang dihasilkan berupa

message digest yang panjangnya 128 bit. Langkah-langkah pembuatan message digest

adalah sebagai berikut:

1 Penambahan bit-bit pengganjal (padding bits).

2 Penambahan nilai panjang pesan semula. 3 Inisialisasi penyangga MD.

4 Pengolahan pesan dalam blok berukuran 512 bit.

Gambaran pembuatan message digest

dengan algoritme MD5 dapat dilihat pada Gambar 1.

Gambar 1 Algoritme MD5 (Munir 2004).

Komunikasi Perangkat Mobile

Perkembangan teknologi perangkat mobile

telah sampai pada fase “Generations” atau

dikenal dengan akronim „G”. Perkembangan baru dari tiap generasi perangkat mobile

memberikan reabilitas dan fleksibilitas lebih dari generasi sebelumnya (Harte & Bowler 2004).

1 Teknologi Nirkabel 1G

Teknologi ini merupakan teknologi pertama dari teknologi nirkabel. Generasi ini dikembangkan pada tahun 1980-1990 dan hanya menggunakan layanan suara analog tanpa layanan data. Pada generasi ini, frekuensi yang digunakan belum standar, karena terdapat berbagai frekuensi berbeda untuk tiap provider.

2 Teknologi Nirkabel 2G

Generasi kedua atau 2G dari teknologi nirkabel menggunakan jaringan digital berbasis sirkuit. Karena generasi ini menggunakan jaringan digital, teknologi ini telah mampu mentransmisikan data dengan kecepatan rata-rata 9.6 Kbps (Kilobits per second). Teknologi ini bekerja pada beberapa frekuensi, yaitu 900 MHz, 1800 MHz, dan 1900 MHz. Teknologi ini memiliki tiga standar sebagai berikut:

1 Time Division Multiple Access (TDMA). 2 Code Division Multiple Access (CDMA). 3 Global Sistem for Mobile (GSM).

(11)

3 Teknologi Nirkabel 2.5 G

2.5G adalah akronim dari perkembangan teknologi dari generasi teknologi nirkabel 2G. Perkembangan pada teknologi ini adalah meningkatnya kecepatan transmisi data menjadi 56 Kbps. Teknologi 2.5G tetap menggunakan infrastruktur 2G dengan beberapa tambahan teknologi perti General Packet Radio Service

(GPRS) dan Enhanced Data Rates for Global Evolution (EDGE) yang berbasis paket data.

Gambar 2 Arsitektur jaringan GPRS. Gambar 2 menunjukkan arsitektur jaringan GPRS. Elemen dari jaringan GPRS adalah Base Transciver Stations (BTS), Base Stations Controller (BSC), GPRS support nodes

(GSNs), serving GSN, dan Gateway GSN (GGSN).

4 Teknologi Nirkabel 3G

Generasi ini menggunakan frekuensi

transmisi yang berbeda dari generasi sebelumnya dan membutuhkan infrastruktur yang berbeda. Teknologi ini memberikan peningkatan kecepatan transmisi data hingga 2 Mbps pada keadaan stabil.

Teknologi 3G dapat memberikan layanan seperti :

 Audio dan Video streaming,

Voice Over Internet Protocol (VolP),

 Mengirim dan menerima gambar, suara dan video,

Virtual Home Environments (VHE), dan

Global Positioning Sistem (GPS).

Layanan 3G masih akan terus bertambah seiring perkembangan teknologi ini.

Java 2 Micro Edition (J2ME)

Sun Microsistem mendefinisikan Java 2 Micro Edition (J2ME) sebagai Java run-time environment yang ditargetkan pada konsumen

perangkat mobile, seperti pager, ponsel, screen-phones, dan sistem navigasi kendaraan (Feng & Zhu 2001). Gambar 3 memperlihatkan perangkat dan platform dari tiap edisi teknologi Java. Java 2 Entreprise Edition (J2EE)

memberikan solusi untuk lingkungan

enterprise, Java 2 Standard Edition (J2SE) untuk lingkungan pengembangan desktop, dan J2ME untuk perangkat mobile.

Gambar 3 Perkembangan teknologi Java.

Configuration merepresentasikan Java

library minimum yang harus dimiliki oleh suatu perangkat elektronik untuk menjalankan suatu aplikasi. J2ME saat ini telah mendefinisikan dua buah configuration,yaitu CLDC dan CDC, serta profile dari masing-masing Configuration, yaitu MIDP.

1 Connected Limited Device Configuration

(CLDC)

CLDC adalah spesifikasi dasar yang berupa

library dan API yang diimplementasikan pada J2ME dan biasa digunakan pada telepon selular atau PDA yang memiliki karakteristik:

 Prosesor 16-bit atau 32-bit.

 Memory terbatas, 512 KB atau lebih rendah.

Power supply yang terbatas.

 Layar monitor yang terbatas.

 Kemampuan input yang terbatas.

CLDC juga tidak mendukung tipe data float

dan double. Selain itu, CLDC juga tidak

mendukung kelas dan method yang

membutuhkan tipe data tersebut atau

melibatkan operasi floating point. Java Virtual Machine (JVM) yang biasa digunakan disebut

Kilobyte Virtual Machine (KVM). Selain itu, terdapat VM lain, yaitu J9VM dari IBM.

Low End Consumer

Device

Java Virtual Machine KVM Card VM

(12)

2 Connected Device Configuration (CDC)

CDC diperuntukan bagi perangkat dengan ketersediaan memori minimal 2MB dan 32 bit prosesor. CDC dapat ditemukan pada high-end

PDA, smart phones, Internet TV serta mobile

TV. JVM yang digunakan disebut CVM.

Profile melengkapi configuration dengan

menambahkan beberapa kelas yang

menyediakan fitur yang sesuai untuk suatu tipe perangkat tertentu. Kedua configuration J2ME memiliki satu atau lebih profile yang terkait, dan beberapa di antaranya saling tergantung.

3 Mobile Information Device Profile

(MIDP)

MIDP memiliki API tambahan untuk jaringan, daur hidup aplikasi, antarmuka, dan penyimpanan persistensi untuk CLDC. Profile

ini ditujukan untuk perangkat mobile yang memiliki display dan fasilitas penyimpanan yang terbatas.

METODE PENELITIAN

Gambar 4 Siklus hidup sistem keamanan (Neyman 2007).

Metode yang digunakan untuk implementasi sistem keamanan pengiriman data hasil suara pilkada via mobile ini mengadopsi tahapan pada

Security Sistem Life Cycle (Bishop 2003) untuk lebih detail dapat dilihat pada Gambar 4. Kegiatan yang dilakukan pada setiap tahapannya adalah sebagai berikut:

Ancaman (Thread)

Tahapan awal dari pembangunan sistem ini adalah mengidentifikasi ancaman-ancaman yang ingin diatasi oleh sistem, atau dalam penelitian ini adalah penentuan aspek, atau layanan keamanan yang ingin diberikan. Layanan keamanan dipersiapkan untuk mengatasi serangan akibat ancaman-ancaman yang diperkirakan akan muncul.

Bishop (2003) mengemukakan bahwa

keamanan komputer melingkupi tiga aspek utama yaitu, kerahasiaan, integritas, dan availability. Interpretasi setiap aspek pada lingkungan suatu organisasi ditentukan oleh kebutuhan dari individu yang terlibat, kebiasaan, dan hukum yang berlaku pada organisasi tersebut.

Kebijakan (Policy)

Tahapan selanjutnya adalah penentuan kebijakan keamanan. Kebijakan tersebut ditujukan untuk memberikan arahan dan sasaran serta sekaligus menjadi acuan standar keamanan dalam sistem. Kebijakan keamanan juga harus memenuhi layanan-layanan keamanan yang akan disajikan oleh sistem.

Spesifikasi

Tahap spesifikasi merupakan pernyataan fungsional dari sistem yang dapat berupa ekspresi matematika atau bahasa lain yang mendeskripsikan metode sistem dalam memberikan layanan keamanan.

Desain

Tahapan desain dari sistem akan

menerjemahkan spesifikasi dalam bentuk

komponen-komponen yang akan

diimplementasikan. Desain dikatakan memenuhi spesifikasi jika tidak melanggar semua ketentuan dalam spesifikasi. Pada tahap ini, dilakukan perancangan aplikasi dengan menerjemahkan kebutuhan sistem berdasarkan ancaman (thread),

kebijakan, dan spesifikasi. Perancangan dilakukan dengan membuat flowchart modul dan sketsa umum antarmuka sistem yang akan dibuat.

Implementasi

Tahapan implementasi menghasilkan

aplikasi yang sesuai dengan desain yang ada. Bila desain yang ada telah memenuhi spesifikasi sistem, secara tidak langsung aplikasi yang dihasilkan juga memenuhi spesifikasi tersebut. Kesulitan pada tahapan ini biasanya terletak pada kompleksitas program untuk mengimplementasikan desain.

HASIL DAN PEMBAHASAN

(13)

Jaringan tersebut merupakan jaringan unsecure

sehingga diperlukan keamanan dalam

pengiriman data pilkada ke server. Pada pembahasan di bawah ini, akan dijelaskan dari setiap tahap dalam pembangunan sistem ini.

Ancaman (Thread)

Jenis ancaman yang teridentifikasi yang dapat menimbulkan serangan keamanan dalam sistem pengiriman data pilkada via mobile ini adalah snooping dan modification or alteration. Ancaman snooping atau pengintaian terjadi dikarenakan pengiriman data melewati jaringan komunikasi public yang semua pihak dapat melihat aliran informasi yang lewat pada jaringan tersebut atau biasa dikenal dengan

wiretapping, yaitu pengintaian dalam jaringan yang terbuka. Snooping yang terjadi dalam sistem pengiriman data pilkada adalah mengetahui jumlah suara yang dikirim petugas ke pusat. Modification or alteration, adanya pengubahan data jumlah suara pilkada oleh pihak yang tidak berhak kemudian dikirim ulang ke server dengan harapan petugas dan

server tidak menyadari adanya perubahan. Penyamaran, yaitu adanya pihak yang tidak berhak mengaku sebagai petugas sehingga dapat menggunakan sistem untuk hal yang tidak sesuai prosedur. Salah satu cara untuk

mengatasi ancaman ini adalah dengan

memberikan layanan kerahasiaan, autentikasi dan integritas pada sistem.

Kebijakan (Policy)

Pada tahap ini, ditentukan kebijakan-kebijakan yang akan berlaku dalam sistem ini. Kebijakan keamanan tersebut meliputi:

1 User Policy

Pada sistem ini, terdapat dua pihak yaitu pihak pengirim dan penerima. Dalam sistem pengiriman data pilkada via mobile, penerima sendiri adalah admin server dan pengirim adalah petugas yang mengirimkan data jumlah suara pilkada viamobile. Masing-masing pihak memiliki peranan yang berbeda dalam proses pengiriman data. Sistem ini tidak melibatkan pihak ketiga.

2 Communication and Network Policy

Jalur komunikasi dalam sistem pengiriman data pilkada bersifat dua arah serta menggunakan jaringan yang unsecure dan umum. Hal ini menyebabkan setiap orang dapat melihat adanya pertukaran data yang mengalir di dalam jaringan dengan ketentuan kondisi normal. Penelitian ini menggunakan jaringan

unsecure dan umum untuk menerapkan metode pendistribusian kunci yang sesuai sebagai pengaman.

3 Access Policy

Sistem ini sepenuhnya mengatur hak akses

user. Dalam sistem ini, user yang sudah diberikan hak dapat menggunakan layanan yang disediakan oleh sistem. Untuk melakukan proses tersebut, user harus memasukkan

username, password, dan pin. Kebijakan ini diberikan untuk mencegah adanya ancaman penyamaran yang sudah diidentifikasi pada tahap sebelumnya.

4 Application and Data Policy

Aplikasi hanya bisa digunakan oleh user

yang telah mendaftarkan diri ke admin sehingga aplikasi tersebut bisa di-install di handphone

Pada tahap ini, dilakukan penentuan algoritme yang akan digunakan. Algoritme yang dipakai untuk menyajikan keamanan pada sistem ini adalah sebagai berikut:

1 Autentikasi dan verifikasi

Fungsi hash diterapkan untuk menjaga layanan integritas. Autentikasi digunakan untuk mendapat nilai autentikasi dari data, sedangkan

verifikasi digunakan untuk memeriksa

keautentikan data dengan nilai autentikasinya. Metode ini digunakan untuk menyembunyikan keautentikan data agar tidak diketahui oleh pihak luar. Selain itu, metode ini digunakan sebagai bentuk pencegahan penyamaran dan modifikasi data oleh pihak yang tidak berhak. Untuk mendukung layanan integritas, sistem menggunakan fungsi hash yaitu MD5.

2 Kerahasiaan Data

Algoritme kriptografi kunci publik

digunakan untuk menjaga kerahasiaan data adalah RSA. Algoritme ini merupakan metode yang digunakan dalam pembangkitan kunci yang nantinya akan didistribusikan secara umum. Studi kasus dalam penelitian ini adalah petugas akan mengirimkan kunci publik ke

server agar server bisa membuka pesan yang dikirim oleh petugas. Hal ini dilakukan untuk layanan keautentikan dapat terealisasi. Tahap spesifikasi dalam penelitian ini juga ditentukan lingkungan pengembangan sistem.

Desain

Ancaman, kebijakan, dan spesifikasi yang

sudah ditentukan dilanjutkan untuk

(14)

dibagi berdasarkan modul yang dibutuhkan dalam sistem. Modul-modul tersebut antara lain adalah:

1 Modul pendaftaran petugas

Modul ini digunakan untuk pendaftaran petugas yang nantinya akan diberi hak untuk mengakses sistem atau dengan kata lain modul ini dijadikan sebagai layanan jaminan hak akses terhadap sistem. Hasil dari desain sistem pendaftaran petugas dapat dilihat pada

flowchart pendaftaran petugas pada Gambar 5. Antarmuka aplikasi di sisi server dapat dilihat pada Lampiran 1, sedangkan antarmuka aplikasi di sisi klien dapat dilihat pada Lampiran 2.

Mulai

Input Data Diri Pendaftaran ditutup

Input data

Gambar 5 Flowchart pendaftaran petugas. Pendaftaran hanya bisa dilakukan pada saat pendaftaran dibuka oleh panitia. Data yang dimasukkan adalah data diri petugas sesuai dengan KTP petugas, username, password,

password token, serta pin yang akan digunakan ketika login. Jika input data lengkap, sistem akan menyimpan data tersebut ke dalam

database dengan mengambil nilai hash dari

password, password token, dan pin. 2 Modul pendaftaran calon

Modul ini digunakan untuk memberikan referensi kepada petugas dan memberikan jaminan agar tidak terjadi kesalahan ketika mengirimkan data berupa jumlah suara yang terkait dengan calon serta memberikan standarisasi penamaan calon dalam sistem. Desain yang dirancang dapat dilihat pada

flowchart pendaftaran calon pada Gambar 6.

Mulai

Input Data Diri Pendaftaran ditutup

Gambar 6 Flowchart pendaftaran calon.

Mulai password dan pin menggunakan

kunci privat petugas dengan algoritma kunci asimetri oleh petugas, dilakukan proses pengiriman data.

Login dilakukan oleh petugas pada saat proses perhitungan suara, baik saat hasil perhitungan

(15)

belum selesai atau sudah selesai, dengan ketentuan bahwa pengiriman data yang pertama adalah insert data baru sesuai dengan id

petugas. Untuk yang kedua kali dan seterusnya, yang dilakukan hanya proses update data di dalam database berdasarkan id petugas tersebut. Untuk lebih detail mengenai desain modul ini dapat dilihat pada flowchart login pada Gambar 7.

Pada modul ini, akan dilakukan

pembangkitan kunci publik ketika petugas melengkapi input data pada sistem. Kunci publik digunakan untuk mengenkripsi data petugas, dalam hal ini adalah username, password, dan password token agar tidak ada pihak luar yang mengetahui isi pesan yang dikirimkan. Kode implementasi public key infrastructure dapat dilihat pada Lampiran 3.

User Interface untuk modul login dapat dilihat pada Gambar 8.

Gambar 8 Form Login. 4 Modul pengiriman data

Modul ini merupakan fungsi utama dalam penelitian ini. Desain modul ini dapat dilihat pada flowchart pengiriman data pada Gambar 9.

Pada modul ini, petugas melakukan

pengiriman data berupa jumlah suara yang diperoleh oleh setiap calon ke server. Pada proses pengiriman ini, dilakukan enkripsi-deskripsi menggunakan algoritme kunci publik. Contoh data yang telah dienkripsi dapat dilihat pada Lampiran 4.

Fungsi yang sifatnya update data ini bisa dilakukan berulang kali oleh petugas. Pada saat petugas melakukan pengiriman data pertama kali, sistem tidak otomatis logout, tetapi kembali ke tampilan utama.

Untuk menjamin keamanan bahwa sistem

masih dipegang oleh orang yang sama, setelah melakukan pemilihan, petugas akan diminta untuk memasukkan password token sebagai parameter untuk membangkitkan challenge code yang nantinya akan divalidasi oleh system. Challenge code hanya berlaku dalam selang waktu tiga menit.

Memilih calon dan memasukkan Jumlah suara, nama TPS dan

keadaan

Proses submit

Proses Generate respon Code menggunakan password token petugas

dan challenge code

Memasukkan password token Proses Generate Challenge Code

Enkripsi id petugas, challenge code, respon code, jumlah suara, pilihan calon, nama TPS, kondisi pilkada menggunakan kunci challenge code, respon code, jumlah suara, pilihan

calon, nama TPS, kondisi pilkada menggunakan

Gambar 9 Flowchart pengiriman data.

User interface untuk form pengisian data dapat dilihat pada Gambar 10.

User interface untuk generate token key

dapat di lihat pada Gambar 11.

Gambar 10 Form data pilkada.

user

(16)

Gambar 11 Formgenerate token.

Implementasi

Tahap implementasi dilakukan untuk

merealisasikan desain sistem yang sudah dibuat dalam bentuk aplikasi. Beberapa komponen yang digunakan untuk merealisasikan desain sistem adalah sebagai berikut:

 Algoritme fungsi hash yang digunakan adalah MD5 yang menghasilkan nilai hash

dengan panjang 128 bit.

 Algoritme kunci publik yang berfungsi untuk pengamanan dalam pendistribusian kunci menggunakan sepasang kunci dengan fungsi tertentu, yaitu kunci publik dan kunci privat. Algoritme yang digunakan sebagai algoritme kunci publik yakni RSA.

Komponen dan lingkungan implementasi desain sistem direalisasikan menjadi aplikasi menggunakan perangkat dengan spesifikasi sebagai berikut:

1 Perangkat lunak:

MySQL 5.0.67,

J2ME Wireless Toolkit 2.5.2,

Netbeans IDE 6.9, dan

Bahasa pemograman yang digunakan

adalah Java 2 Mobile Edition (J2ME) 2 Perangkat keras:

Processor : Intel® Dual- Core 2.00GHz,

Memory : 2GB,

Harddisk : 160GB, dan

Handphone berbasis Java, misalnya: Sony Ericsson W205

Pada tahap ini, juga dilakukan pengujian terhadap sistem menggunakan metode uji

blackbox testing. Berdasarkan hasil pengujian, sistem sudah berjalan dengan baik berdasarkan

flowchart atau desain sistem yang telah ditentukan pada tahap desain. Untuk lebih detail, hasil pengujian dapat dilihat di Lampiran 5.

KESIMPULAN DAN SARAN

Kesimpulan

Penelitian ini berhasil menerapkan metode

public key infrastructure. Dalam prosesnya, sistem ini sendiri bisa memberikan beberapa layanan keamanan untuk mengatasi ancaman-ancaman yang mungkin terjadi pada sistem. Ancaman yang bisa diatasi dalam penelitian ini adalah sniffing atau snooping, penyamaran, dan

alteration. Ancaman sniffing bisa diatasi karena pesan yang dikirimkan pada jaringan publik berupa karakter-karakter yang aneh sehingga untuk bisa membaca pesan tersebut dibutuhkan

sistem bantuan, sedangkan ancaman

penyamaran dan alteration dapat diatasi dengan layanan autentikasi-verifikasi data yang dikirimkan.

Saran

Saran untuk penelitian selanjutnya adalah: 1 Penelitian ini dapat dikembangkan menjadi

pemilihan secara mobile (m-voting)

sehingga mempermudah pemilihan, dan perhitungan suara serta meningkatkan efisiensi waktu yang digunakan serta meningkatkan keamanan dari m-voting. 2 Aplikasi perlu dikembangkan agar dapat

diimplementasikan untuk semua platform mobile karena tidak semua handphone

menggunakan aplikasi berbasis Java.

DAFTAR PUSTAKA

Amborowati A. 2007. Aplikasi Sistem Quick Count (SI-Q-CUP) Pilkada Pemilihan Kepala Daerah Studi Kasus Pilkada Propinsi DIY. Yogyakarta: STMIK AMIKOM Yogyakarta.

Bishop M. 2003. Computer Security. Boston: Addison-Wesley.

Boneh D. 1999. Twenty years of attacks on the RSA cryptosystem. Notices of the American Mathematical Society (AMS) 46(2):203-123.

(17)

Feng Y, Zhu J. 2001. Wireless Java

Programming with J2ME. New York: Sams.

Harte L, Bowler D. 2004. Introduction to Mobile Telephone System – 1G, 2G, 2.5 G, and 3G Wireless Technologies and Services. New York: ALTHOS.

Menezes A, Oorschot PV, Vanstone S. 1996.

Handbook of Applied Cryptography. London: CRC Press.

Munir R. 2004. Fungsi Hash Satu Arah dan MD5. Bandung: Institut Teknologi Bandung.

Neyman SN. 2007. Perancangan Protokol Penyembunyian Informasi Terotentikasi [tesis]. Bogor: Fakultas Matematika dan Ilmu Pengetahuan Alam. Bogor: Institut Pertanian Bogor.

(18)
(19)
(20)

Lanjutan

(21)

Lanjutan

Lampiran 3 Implementasi public key infrastructure

package com.arifin.odp.RSA.main;

import com.arifin.odp.RSA.cipher.AsymmetricBlockCipher; import com.arifin.odp.RSA.cipher.AsymmetricCipherKeyPair; import com.arifin.odp.RSA.cipher.exception.CryptoException; import com.arifin.odp.RSA.cipher.exception.DataLengthException; import com.arifin.odp.RSA.cipher.exception.InvalidCipherTextException; import com.arifin.odp.RSA.digest.MD5Digest;

import com.arifin.odp.RSA.encoding.PKCS1Encoding; import com.arifin.odp.RSA.modul.BigInteger;

import com.arifin.odp.RSA.modul.RSAKeyPairGenerator; import com.arifin.odp.RSA.modul.SecureRandom;

import com.arifin.odp.RSA.parameter.RSAKeyGenerationParameters; import com.arifin.odp.RSA.parameter.RSAKeyParameters;

import com.arifin.odp.RSA.privat.RSAPrivateCrtKeyParameters; import com.arifin.odp.RSA.sign.PSSSigner;

import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException;

/**

* @author Arifin */

public class RSAMidlet {

public String Encrypt(String str) { try {

System.out.println(“generator on”);

byte[] keypair = generator();

(22)

Lanjutan

byte[] plain = str.getBytes();

// input stream pasangan kunci

ByteArrayInputStream bais = new ByteArrayInputStream(keypair); DataInputStream dis = new DataInputStream(bais);

int modLen = dis.readInt(); int pubLen = dis.readInt(); int privLen = dis.readInt(); int pLen = dis.readInt(); int qLen = dis.readInt(); int dPLen = dis.readInt(); int dQLen = dis.readInt(); int qInvLen = dis.readInt();

byte[] modulo = new byte[modLen]; bais.read(modulo, 0, modLen); byte[] pubExp = new byte[pubLen]; bais.read(pubExp, 0, pubLen); byte[] privExp = new byte[privLen]; bais.read(privExp, 0, privLen); byte[] p = new byte[pLen]; bais.read(p, 0, pLen); byte[] q = new byte[qLen]; bais.read(q, 0, qLen); byte[] dP = new byte[dPLen]; bais.read(dP, 0, dPLen); byte[] dQ = new byte[dQLen]; bais.read(dQ, 0, dQLen); byte[] qInv = new byte[qInvLen]; bais.read(qInv, 0, qInvLen);

dis.close(); bais.close();

// construct private key

// RSAPrivateCrtKeyParameters privKey = constructPrivateKey(modulo, pubExp, privExp, p, q, dP, dQ, qInv);

// construct public key

RSAKeyParameters pubKey = constructPublicKey(modulo, pubExp);

byte[] cipher = rsaEncrypt(plain, pubKey); String tss = byteArraytoHex(cipher); String encrypt = tss+”+”+keyp; return encrypt;

} catch (IOException ex) { return ex.toString();

}

}

public String Decrypt(String hexa,byte[] pair) { try {

System.out.println(“generator on”);

ByteArrayInputStream bais = new ByteArrayInputStream(pair); DataInputStream dis = new DataInputStream(bais);

(23)

Lanjutan

int pLen = dis.readInt(); int qLen = dis.readInt(); int dPLen = dis.readInt(); int dQLen = dis.readInt(); int qInvLen = dis.readInt();

byte[] modulo = new byte[modLen]; bais.read(modulo, 0, modLen); byte[] pubExp = new byte[pubLen]; bais.read(pubExp, 0, pubLen); byte[] privExp = new byte[privLen]; bais.read(privExp, 0, privLen); byte[] p = new byte[pLen]; bais.read(p, 0, pLen); byte[] q = new byte[qLen]; bais.read(q, 0, qLen); byte[] dP = new byte[dPLen]; bais.read(dP, 0, dPLen); byte[] dQ = new byte[dQLen]; bais.read(dQ, 0, dQLen); byte[] qInv = new byte[qInvLen]; bais.read(qInv, 0, qInvLen);

dis.close(); bais.close();

// construct private key

// RSAPrivateCrtKeyParameters privKey = constructPrivateKey(modulo, pubExp, privExp, p, q, dP, dQ, qInv);

// construct public key

RSAKeyParameters pubKey = constructPublicKey(modulo, pubExp);

String ok = convertHexToString(hexa);

byte[] cip = StringToByteArray(ok);

byte[] recovery = rsaDecrypt(cip, pubKey);

return new String(recovery);

} catch (IOException ex) { return ex.toString();

}

}

public static final char[] kDigits ={„0‟,‟1‟,‟2‟,‟3‟,‟4‟,‟5‟,‟6‟,‟7‟,‟8‟,‟9‟,‟a‟,‟b‟,‟c‟,‟d‟,‟e‟,‟f‟};

/* byte array ke Hexa */

public static String byteArraytoHex(byte[] str){ StringBuffer sb = new StringBuffer(str.length * 2); for(int i=0;i<str.length;i++){

int v = str[i] & 0xff; if(v<16){

(24)

Lanjutan

sb.append(Integer.toHexString(v)); }

return sb.toString(); }

public String convertHexToString(String hex) {

StringBuffer sb = new StringBuffer(); StringBuffer temp = new StringBuffer();

//49204c6f7665204a617661 split into two characters 49, 20, 4c... for (int I = 0; I< hex.length() – 1; I += 2) {

//grab the hex in pairs

String output = hex.substring(I, (I + 2)); //convert hex to decimal

int decimal = Integer.parseInt(output, 16); //convert the decimal to character sb.append((char) decimal);

temp.append(decimal); }

System.out.println(“Decimal : “ + temp.toString());

return sb.toString(); }

public RSAKeyParameters constructPublicKey(byte[] modulo, byte[] pubExp) { BigInteger n = new BigInteger(modulo);

BigInteger e = new BigInteger(pubExp); return (new RSAKeyParameters(false, n, e)); }

public RSAPrivateCrtKeyParameters constructPrivateKey(byte[] modulo, byte[] pubExp, byte[] privExp, byte[] pByte, byte[] qByte, byte[] dPByte, byte[] dQByte, byte[] qInvByte) {

BigInteger n = new BigInteger(modulo); BigInteger e = new BigInteger(pubExp); BigInteger d = new BigInteger(privExp); BigInteger p = new BigInteger(pByte); BigInteger q = new BigInteger(qByte); BigInteger dP = new BigInteger(dPByte); BigInteger dQ = new BigInteger(dQByte); BigInteger qInv = new BigInteger(qInvByte);

return (new RSAPrivateCrtKeyParameters(n, e, d, p, q, dP, dQ, qInv)); }

public byte[] rsaEncrypt(byte[] inputByte, RSAKeyParameters publicKey) { byte[] sesKeyCipher = null;

try {

AsymmetricBlockCipher rsaEngine = new PKCS1Encoding(new RSAEngine()); rsaEngine.init(true, publicKey);

System.out.println(“enkripsi berjalan…”);

System.out.println(“input encrypt length:” + inputByte.length);

sesKeyCipher = rsaEngine.processBlock(inputByte, 0, inputByte.length); } catch (InvalidCipherTextException ex) {

}

return sesKeyCipher; }

(25)

Lanjutan

try {

AsymmetricBlockCipher rsaEngine = new PKCS1Encoding(new RSAEngine()); rsaEngine.init(false, publicKey);

System.out.println(“dekripsi berjalan…”);

System.out.println(“input dekripsi length:” + inputByte.length); sesKeyPlain = rsaEngine.processBlock(inputByte, 0, inputByte.length); } catch (InvalidCipherTextException ex) {

}

return sesKeyPlain; }

public byte[] getSignature(byte[] inputByte, RSAPrivateCrtKeyParameters privateKey) { byte[] signatureByte = null;

try {

MD5Digest md5Engine = new MD5Digest(); RSAEngine rsaEngine = new RSAEngine();

PSSSigner signer = new PSSSigner(rsaEngine, md5Engine, 64); signer.init(true, privateKey);

signer.update(inputByte, 0, inputByte.length); signatureByte = signer.generateSignature(); } catch (DataLengthException ex) { } catch (CryptoException ex) { }

return signatureByte; }

public17oolean verifySignature(byte[] inputByte, byte[] signature, RSAKeyParameters publicKey) { MD5Digest md5Engine = new MD5Digest();

RSAEngine rsaEngine = new RSAEngine();

PSSSigner signer = new PSSSigner(rsaEngine, md5Engine, 64); signer.init(false, publicKey);

signer.update(inputByte, 0, inputByte.length);

return signer.verifySignature(signature); }

public byte[] generator() {

// System.out.println(“tes”);

BigInteger exp = new BigInteger(“11”, 16); // System.out.println(“tes1”);

SecureRandom srand = new SecureRandom(); // System.out.println(“tes2”);

RSAKeyGenerationParameters params = new RSAKeyGenerationParameters(exp, srand, 1024, 80); // System.out.println(“tes3”);

RSAKeyPairGenerator rsaKeyPairGen = new RSAKeyPairGenerator(); // System.out.println(“tes4”);

rsaKeyPairGen.init(params);

AsymmetricCipherKeyPair keyPair = rsaKeyPairGen.generateKeyPair();

// 17oolean hasil generate

RSAPrivateCrtKeyParameters rsaPrivateKey = (RSAPrivateCrtKeyParameters) keyPair.getPrivate();

// private key

byte[] modulo = rsaPrivateKey.getModulus().toByteArray(); byte[] pubExp = rsaPrivateKey.getPublicExponent().toByteArray(); byte[] privExp = rsaPrivateKey.getExponent().toByteArray(); byte[] p = rsaPrivateKey.getP().toByteArray();

(26)

Lanjutan

ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(baos); try {

dos.writeInt(modulo.length); dos.writeInt(pubExp.length); dos.writeInt(privExp.length); dos.writeInt(p.length); dos.writeInt(q.length); dos.writeInt(dP.length); dos.writeInt(dQ.length); dos.writeInt(qInv.length);

baos.write(modulo, 0, modulo.length); baos.write(pubExp, 0, pubExp.length); baos.write(privExp, 0, privExp.length); baos.write(p, 0, p.length);

baos.write(q, 0, q.length); baos.write(dP, 0, dP.length); baos.write(dQ, 0, dQ.length); baos.write(qInv, 0, qInv.length);

dos.close(); baos.close();

} catch (IOException ex) { }

return baos.toByteArray(); }

public static String URLdecode(String str) { StringBuffer result = new StringBuffer(); int l = str.length();

for (int I = 0; I< l; ++i) { char c = str.charAt(i); if (c == „%‟&&I + 2 < l) { char c1 = str.charAt(I + 1); char c2 = str.charAt(I + 2); if (isHexit(c1) && isHexit(c2)) {

result.append((char) (hexit(c1) * 16 + hexit(c2))); I += 2;

} else { result.appendI; } } else { result.appendI; } }

return result.toString(); }

private static 18oolean isHexit(char c) {

String legalChars = “0123456789abcdefABCDEF”; return (legalChars.indexOfI != -1);

}

private static int hexit(char c) { if (c >= „0‟&& c <= „9‟) { return c –„0‟;

}

if (c >= „a‟&& c <= „f‟) { return c –„a‟ + 10; }

(27)

Lanjutan

return c –„A‟ + 10; }

return 0; }

final static String[] hex = {

“%00”, “%01”, “%02”, “%03”, “%04”, “%05”, “%06”, “%07”,

“%08”, “%09”, “%0a”, “%0b”, “%0c”, “%0d”, “%0e”, “%0f”,

“%10”, “%11”, “%12”, “%13”, “%14”, “%15”, “%16”, “%17”,

“%18”, “%19”, “%1a”, “%1b”, “%1c”, “%1d”, “%1e”, “%1f”,

“%20”, “%21”, “%22”, “%23”, “%24”, “%25”, “%26”, “%27”,

“%28”, “%29”, “%2a”, “%2b”, “%2c”, “%2d”, “%2e”, “%2f”,

“%30”, “%31”, “%32”, “%33”, “%34”, “%35”, “%36”, “%37”,

“%38”, “%39”, “%3a”, “%3b”, “%3c”, “%3d”, “%3e”, “%3f”,

“%40”, “%41”, “%42”, “%43”, “%44”, “%45”, “%46”, “%47”,

“%48”, “%49”, “%4a”, “%4b”, “%4c”, “%4d”, “%4e”, “%4f”,

“%50”, “%51”, “%52”, “%53”, “%54”, “%55”, “%56”, “%57”,

“%58”, “%59”, “%5a”, “%5b”, “%5c”, “%5d”, “%5e”, “%5f”,

“%60”, “%61”, “%62”, “%63”, “%64”, “%65”, “%66”, “%67”,

“%68”, “%69”, “%6a”, “%6b”, “%6c”, “%6d”, “%6e”, “%6f”,

“%70”, “%71”, “%72”, “%73”, “%74”, “%75”, “%76”, “%77”,

“%78”, “%79”, “%7a”, “%7b”, “%7c”, “%7d”, “%7e”, “%7f”,

“%80”, “%81”, “%82”, “%83”, “%84”, “%85”, “%86”, “%87”,

“%88”, “%89”, “%8a”, “%8b”, “%8c”, “%8d”, “%8e”, “%8f”,

“%90”, “%91”, “%92”, “%93”, “%94”, “%95”, “%96”, “%97”,

“%98”, “%99”, “%9a”, “%9b”, “%9c”, “%9d”, “%9e”, “%9f”,

“%a0”, “%a1”, “%a2”, “%a3”, “%a4”, “%a5”, “%a6”, “%a7”,

“%a8”, “%a9”, “%aa”, “%ab”, “%ac”, “%ad”, “%ae”, “%af”,

“%b0”, “%b1”, “%b2”, “%b3”, “%b4”, “%b5”, “%b6”, “%b7”,

“%b8”, “%b9”, “%ba”, “%bb”, “%bc”, “%bd”, “%be”, “%bf”,

“%c0”, “%c1”, “%c2”, “%c3”, “%c4”, “%c5”, “%c6”, “%c7”,

“%c8”, “%c9”, “%ca”, “%cb”, “%cc”, “%cd”, “%ce”, “%cf”,

“%d0”, “%d1”, “%d2”, “%d3”, “%d4”, “%d5”, “%d6”, “%d7”,

“%d8”, “%d9”, “%da”, “%db”, “%dc”, “%dd”, “%de”, “%df”,

“%e0”, “%e1”, “%e2”, “%e3”, “%e4”, “%e5”, “%e6”, “%e7”,

“%e8”, “%e9”, “%ea”, “%eb”, “%ec”, “%ed”, “%ee”, “%ef”,

“%f0”, “%f1”, “%f2”, “%f3”, “%f4”, “%f5”, “%f6”, “%f7”,

“%f8”, “%f9”, “%fa”, “%fb”, “%fc”, “%fd”, “%fe”, “%ff” };

public static String URLencode(String s) { StringBuffer sbuf = new StringBuffer(); int len = s.length();

for (int I = 0; I< len; i++) { int ch = s.charAt(i);

if („A‟<= ch && ch <= „Z‟) { // „A‟..‟Z‟ sbuf.append((char) ch);

} else if („a‟<= ch && ch <= „z‟) { // „a‟..‟z‟ sbuf.append((char) ch);

} else if („0‟<= ch && ch <= „9‟) { // „0‟..‟9‟ sbuf.append((char) ch);

} else if (ch == „„) { // space sbuf.append(„+‟);

} else if (ch <= 0x007f) { // other ASCII sbuf.append(hex[ch]);

} else if (ch <= 0x07FF) { // non-ASCII <= 0x7FF sbuf.append(hex[0xc0 | (ch >> 6)]);

sbuf.append(hex[0x80 | (ch & 0x3F)]);

} else { // 0x7FF < ch <= 0xFFFF sbuf.append(hex[0xe0 | (ch >> 12)]);

(28)

Lanjutan

}

return sbuf.toString(); }

//=============================================== // .StringToByteArray

//=============================================== public static final byte[] StringToByteArray(String s) {

int len = s.length(); byte[] b = new byte[len]; for (int I = 0; I< len; i++) { b[i] = (byte) s.charAt(i); }

return b; }

private static final String ENCODINGSTR = “ISO-8859-1”; private static byte SupportsEncoding;

//=============================================== //CheckEncoding()

//=============================================== public static void CheckEncoding() {

byte[] b = new byte[1]; b[0] = (byte) 178;

try {

String s = new String(b, 0, 1, ENCODINGSTR); if (s == null) {

throw new Exception(); }

if (s.charAt(0) != 178) { SupportsEncoding = 2; } else {

SupportsEncoding = 1; }

} catch (Exception e) { String s = new String(b, 0, 1);

if (s == null || s.length() != 1 || s.charAt(0) != 178) { SupportsEncoding = 2;

} else {

SupportsEncoding = 0; }

} }

//=============================================== // .ByteArrayToString

//=============================================== public static final String ByteArrayToString(byte[] buf, int off, int len) { StringBuffer sb = new StringBuffer(len);

for (int I = 0; I< len; i++) { sb.append((char) (buf[i] & 0xff)); }

(29)

Lampiran 4 Data hasil enkripsi

Data Hasil enkripsi

123 4a3277148b2868c0fd56ef6c592198215c90b7ceb5a36672074a91a5381304c2095cec9f37

(30)

Lampiran 5 Proses uji pada aplikasi pengiriman data pilkadavia mobile – server

Skenario Uji Keterangan Status Data Output

Cek status pendaftaran petugas

Apakah pendaftaran ditutup ?

Ya Petugas tidak bisa mendaftar

Tidak

Petugas mengisi data diri lengkap dan tersimpan di dalam database

Cek status pendaftaran calon Apakah pendaftaran di tutup ?

Ya Calon tidak bisa mendaftar

Tidak

Calon mengisi data diri lengkap dan tersimpan di dalam database data dan melanjutkan ke proses dekrip data petugas

Tidak

Keluar warning bahwa petugas di minta

memasukkan inputan yang lengkap

Proses dekripsi data petugas Apakah data bisa di terjemahkan ? pengirim tidak terotentikasi

Proses otentikasi data petugas

Apakah username,

password, dan pin

benar ?

Ya Petugas berhasil masuk ke

main menu

Tidak

Keluar warning bahwa petugas di minta memasukkan inputan dengan benar

Main menusistem (memilih calon, memasukkan jumlah suara, nama TPS, dan keadaan)

password token dan generate

response code)

Apakah passwordtoken yang di masukkan

benar?

Ya

Sistem melanjutkan ke proses pengecekan response code

Tidak

Keluar warning bahwa petugas di minta memasukkan password

token dengan benar

Proses pengecekan response code?

Apakah responsecode

sesuai ?

Ya

Data di simpan di dalam

database dan keluar informasi bahwa data sudah tersimpan

Tidak Keluar warning bahwa

(31)

i ABSTRACT

SYAMSUL ARIFIN, Implementation of Public Key Infrastructure for Security System of Local Elections Data Transmission Via Mobile. Supervised by SHELVIE NIDYA NEYMAN

Cryptography is a process of encrypting data into a form that can be read only by a system. The system has a key to read the encripted data. Based on the method, cryptographic algorithms can be divided into asymmetric key cryptography, symmetric key criptography, and public key cryptography. This research attemps to develop Public Key Infrastructure (PKI) with integrity service, which is implemented in the transmission of voting results in mobile election process. The benefits of this research is to simplify and improve the efficiency of the counting process and improving the security of the data transmission using mobile communication.

The method employed is the Life Cycle Security System in which a sequence of steps following the life cycle of security system by eliminating the operational and maintenance step. The algorithm used in this research are RSA and MD5 Hash Function. RSA Algorithm is used to facilitate the distribution of keys that was used in the message encryption, and MD5 hash functions as an authentication function. The result of this research is the security system of the transmission of local elections vote via mobile which overcome the threat of sniffing or snooping, camouflage, and alteration with provides security services of authentication, integrity, and availability.

(32)

PENDAHULUAN

Latar Belakang

Pemilihan Kepala Daerah (Pilkada)

merupakan salah satu bentuk perwujudan sistem politik demokrasi di Indonesia, sehingga pelaksanaan pilkada yang baik menjadi tolak ukur baik tidaknya pelaksanaan demokrasi. Pilkada harus dilaksanakan secara langsung, umum, bebas, dan rahasia serta dilandasi dengan semangat jujur dan adil. Oleh karena itu, pelaksanaan pilkada perlu dikelola dengan baik dan benar (Budi et al. 2008).

Proses pilkada memiliki 4 tahapan utama: 1 Pendataan adalah tahap untuk mendata

penduduk dan pemilih, TPS (Tempat Pemungutan Suara), dan peserta pilkada. 2 Persiapan adalah tahap untuk menetapkan

alokasi kursi untuk setiap daerah pemilihan, serta untuk menetapkan calon, serta

melengkapi pembentukan panitia

penyelenggara pilkada.

3 Pemungutan suara adalah tahapan

pengambilan dan penghitungan suara

Pilkada.

4 Pasca Pilkada adalah tahapan penetapan hasil pilkada.

Proses yang paling krusial pada pilkada adalah pada saat proses pengambilan suara dan proses penghitungan hasil suara. Setelah proses penghitungan, hasil suara dikirim ke pusat.

Sistem pengiriman data hasil suara yang

banyak dikembangkan belakangan ini

menggunakan aplikasi berbasis SMS yang diintegrasikan dengan aplikasi web. Tujuannya untuk mempercepat hasil perhitungan suara pilkada secara realtime dan mengurangi indikasi kecurangan (Amborowati 2007). Kelemahan sistem ini adalah proses pengiriman datanya masih menggunakan sistem SMS yang sederhana serta tidak sepenuhnya data jumlah suara dikirim ke pusat tetapi hanya mengambil sebagian suara sebagai sampel sehingga masih memungkinkan kecurangan.

Penelitian ini mencoba mengembangkan

sebuah sistem menggunakan algoritme

kriptografi kunci publik dalam proses pengiriman data pilkada untuk menigkatkan keamanan dan kerahasiaan informasi data hasil suara yang dikirimkan ke pusat. Sistem pengiriman data pilkada ini berguna sebagai pengaman agar tidak terjadi kecurangan dalam pengubahan pada saat pengiriman data ke pusat.

Tujuan

Penelitian ini bertujuan membangun sistem

Public Key Infrastruktur (PKI) dengan

keamanan layanan integritas di dalamnya. Layanan integritas tersebut menggunakan kriptografi sebagai autentikasi untuk memeriksa pesan yang terkirim apakah benar berasal dari sumber yang sah.

Ruang Lingkup

Penelitian ini mencoba mengembangkan sistem PKI yang merupakan sistem client-server. Sistem ini menggunakan mobile sebagai

client. Sistem diimplementasikan menggunakan simulator. Data yang digunakan dalam penelitian ini bersifat dummy. Bahasa

pemrograman yang digunakan untuk

mengembangkan sistem ini adalah bahasa pemograman Java yang diimplementasikan dalam lingkungan mobile.

Manfaat Penelitian

Hasil dari penelitian ini diharapkan dapat mempermudah dan meningkatkan efisiensi

waktu dalam perhitungan suara serta

meningkatkan keamanan pengiriman data pilkada yang dilakukan melalui mobile. Selain itu, metode keamanan yang dihasilkan dari penelitian ini dapat diterapkan dalam sistem pemilihan berbasis mobile (m-voting).

TINJAUAN PUSTAKA

Kriptografi Kunci Publik

Diberikan skema enkripsi yang teridiri atas himpunan transformasi enkripsi dan dekripsi {Ee : eϵK} dan {Dd : dϵK}. Metode enkripsi disebut skema enkripsi kunci publik jika untuk setiap pasangan (e,d). Kunci e dibuat tersedia untuk umum (publik) dan kunci pasangan d

dibuat untuk pribadi dan dijaga kerahasiaannya. Skema tersebut dikatakan aman, jika secara perhitungan tak-layak menentukan d dari e

(Menezes et al. 1996).

Algoritme RSA

Algoritme RSA ditemukan oleh Ron Rivest, Adi Shamir, dan Len Adleman. Algoritme ini diperkenalkan pertama kali pada bulan Agustus 1977. Algoritme kriptografi ini banyak digunakan untuk memberikan privasi dan menjamin autentikasi data digital. Saat ini RSA telah dikembangkan oleh banyak sistem komersial. RSA digunakan oleh web server dan

browser untuk keamanan lalu-lintas data pada web. RSA juga juga digunakan untuk menjamin

(33)

aplikasi yang membutuhkan keamanan data digital.

Deskripsi sederhana dari algoritme RSA sebagai berikut:

N = pq (1)

Dengan p dan q adalah dua buah bilangan prima besar dengan ukuran yang sama. Berikan nilai e

dan d dengan ketentuan sebagai berikut: ed = 1 mod φ(N) (2) φ(N) = (p-1)(q-1) (3)

N adalah RSA modulus, e adalah encryption exponent, dan d adalah decryption exponent. (N,e) adalah kunci publik yang digunakan untuk ekripsi pesan. (N,d) adalah kunci rahasia atau

kunci privat yang digunakan untuk

mendeskripsi chipertext atau pesan telah dienkripsi ke pesan sebenarnya (Boneh 1999).

Fungsi Hash

Fungsi hash adalah fungsi yang secara komputasi efisien memetakan bitstring dengan panjang sembarang ke bitstring dengan panjang tetap yang disebut nilai-hash (hash-value). Untuk fungsi hash dengan output nilai-hash n-bit, probabilitas pemilihan string secara random

yang dipetakan ke nilai-hash n-bit adalah 2-n. Berdasarkan definisi tersebut, ide dasar dari fungsi hash adalah membuat string input

menjadi teratur rapat dengan panjang seragam. Terkait dengan kegunaan kriptografi, fungsi

hash h dipilih sedemikian sehingga secara komputasi tak-layak menentukan input berbeda

x dan y sehingga h(x) = h(y) (Menezes et al. adalah kita dengan mudah dapat menghitung nilai hash pesan tetapi sangat sulit untuk mendapatkan kembali pesan semula.

MD5 memproses masukan dengan panjang 512 bit yang dibagi ke dalam 16 blok dengan panjang masing-masing blok 32 bit (Schneier 1996). Keluaran yang dihasilkan berupa

message digest yang panjangnya 128 bit. Langkah-langkah pembuatan message digest

adalah sebagai berikut:

1 Penambahan bit-bit pengganjal (padding bits).

2 Penambahan nilai panjang pesan semula. 3 Inisialisasi penyangga MD.

4 Pengolahan pesan dalam blok berukuran 512 bit.

Gambaran pembuatan message digest

dengan algoritme MD5 dapat dilihat pada Gambar 1.

Gambar 1 Algoritme MD5 (Munir 2004).

Komunikasi Perangkat Mobile

Perkembangan teknologi perangkat mobile

telah sampai pada fase “Generations” atau

dikenal dengan akronim „G”. Perkembangan baru dari tiap generasi perangkat mobile

memberikan reabilitas dan fleksibilitas lebih dari generasi sebelumnya (Harte & Bowler 2004).

1 Teknologi Nirkabel 1G

Teknologi ini merupakan teknologi pertama dari teknologi nirkabel. Generasi ini dikembangkan pada tahun 1980-1990 dan hanya menggunakan layanan suara analog tanpa layanan data. Pada generasi ini, frekuensi yang digunakan belum standar, karena terdapat berbagai frekuensi berbeda untuk tiap provider.

2 Teknologi Nirkabel 2G

Generasi kedua atau 2G dari teknologi nirkabel menggunakan jaringan digital berbasis sirkuit. Karena generasi ini menggunakan jaringan digital, teknologi ini telah mampu mentransmisikan data dengan kecepatan rata-rata 9.6 Kbps (Kilobits per second). Teknologi ini bekerja pada beberapa frekuensi, yaitu 900 MHz, 1800 MHz, dan 1900 MHz. Teknologi ini memiliki tiga standar sebagai berikut:

1 Time Division Multiple Access (TDMA). 2 Code Division Multiple Access (CDMA). 3 Global Sistem for Mobile (GSM).

(34)

3 Teknologi Nirkabel 2.5 G

2.5G adalah akronim dari perkembangan teknologi dari generasi teknologi nirkabel 2G. Perkembangan pada teknologi ini adalah meningkatnya kecepatan transmisi data menjadi 56 Kbps. Teknologi 2.5G tetap menggunakan infrastruktur 2G dengan beberapa tambahan teknologi perti General Packet Radio Service

(GPRS) dan Enhanced Data Rates for Global Evolution (EDGE) yang berbasis paket data.

Gambar 2 Arsitektur jaringan GPRS. Gambar 2 menunjukkan arsitektur jaringan GPRS. Elemen dari jaringan GPRS adalah Base Transciver Stations (BTS), Base Stations Controller (BSC), GPRS support nodes

(GSNs), serving GSN, dan Gateway GSN (GGSN).

4 Teknologi Nirkabel 3G

Generasi ini menggunakan frekuensi

transmisi yang berbeda dari generasi sebelumnya dan membutuhkan infrastruktur yang berbeda. Teknologi ini memberikan peningkatan kecepatan transmisi data hingga 2 Mbps pada keadaan stabil.

Teknologi 3G dapat memberikan layanan seperti :

 Audio dan Video streaming,

Voice Over Internet Protocol (VolP),

 Mengirim dan menerima gambar, suara dan video,

Virtual Home Environments (VHE), dan

Global Positioning Sistem (GPS).

Layanan 3G masih akan terus bertambah seiring perkembangan teknologi ini.

Java 2 Micro Edition (J2ME)

Sun Microsistem mendefinisikan Java 2 Micro Edition (J2ME) sebagai Java run-time environment yang ditargetkan pada konsumen

perangkat mobile, seperti pager, ponsel, screen-phones, dan sistem navigasi kendaraan (Feng & Zhu 2001). Gambar 3 memperlihatkan perangkat dan platform dari tiap edisi teknologi Java. Java 2 Entreprise Edition (J2EE)

memberikan solusi untuk lingkungan

enterprise, Java 2 Standard Edition (J2SE) untuk lingkungan pengembangan desktop, dan J2ME untuk perangkat mobile.

Gambar 3 Perkembangan teknologi Java.

Configuration merepresentasikan Java

library minimum yang harus dimiliki oleh suatu perangkat elektronik untuk menjalankan suatu aplikasi. J2ME saat ini telah mendefinisikan dua buah configuration,yaitu CLDC dan CDC, serta profile dari masing-masing Configuration, yaitu MIDP.

1 Connected Limited Device Configuration

(CLDC)

CLDC adalah spesifikasi dasar yang berupa

library dan API yang diimplementasikan pada J2ME dan biasa digunakan pada telepon selular atau PDA yang memiliki karakteristik:

 Prosesor 16-bit atau 32-bit.

 Memory terbatas, 512 KB atau lebih rendah.

Power supply yang terbatas.

 Layar monitor yang terbatas.

 Kemampuan input yang terbatas.

CLDC juga tidak mendukung tipe data float

dan double. Selain itu, CLDC juga tidak

mendukung kelas dan method yang

membutuhkan tipe data tersebut atau

melibatkan operasi floating point. Java Virtual Machine (JVM) yang biasa digunakan disebut

Kilobyte Virtual Machine (KVM). Selain itu, terdapat VM lain, yaitu J9VM dari IBM.

Low End Consumer

Device

Java Virtual Machine KVM Card VM

Gambar

Gambaran pembuatan dengan algoritme MD5 dapat dilihat pada message digest Gambar 1.
Gambar 3  Perkembangan teknologi Java.
Gambar 4  Siklus hidup sistem keamanan
Tabel user pada
+7

Referensi

Dokumen terkait

Salah satu cara yang dapat dilakukan untuk keamanan suatu data adalah.. melakukan enkripsi dengan menggunakan suatu algoritma, baik

kriptografi, sehingga data komunikasi yang dilewatkan pada jalur Internet, tidak dapat.. disadap, dimanipulasi atau dirusak oleh pihak

adalah bagaimana mengatasi masalah keamanan data pada sistem berbasis smart card menggunakan kriptografi ElGamal dan penanganan chosen-chipertext attack menggunakan

Pada penelitian ini, terlebih dahulu dilakukan proses enkripsi data atau pesan rahasia yang berupa data teks angka dengan jumlah maksimum yang dimasukkan adalah 24 digit

Perubahan tingkat performansi ini terjadi karena proses enkripsi dan dekripsi yang cukup banyak, namun dalam segi keamanan data tentu data yang dikirimkan melalui radio

Apakah keamanan sistem komunikasi data ini akan berpengaruh positif bagi pengiriman informasi dini tsunami dengan urutan prosedur penerimaan informasi bagi pejabat/petugas yang