Perancangan Keamanan Informasi Sistem Pemungutan Suara Elektronik (E-Voting) Menggunakan Kombinasi Algoritma AES Dan RSA

(1)

PERANCANGAN KEAMANAN INFORMASI SISTEM PEMUNGUTAN SUARA ELEKTRONIK (E-VOTING) MENGGUNAKAN KOMBINASI

ALGORITMA AES DAN RSA

SKRIPSI

FAHRY ROZY SIREGAR 101402045

PROGRAM STUDI S1 TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(2)

PERANCANGAN KEAMANAN INFORMASI SISTEM PEMUNGUTAN SUARA ELEKTRONIK (E-VOTING) MENGGUNAKAN KOMBINASI

ALGORITMA AES DAN RSA SKRIPSI

Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah Sarjana Teknologi Informasi

FAHRY ROZY SIREGAR 101402045

PROGRAM STUDI S1 TEKNOLOGI INFORMASI

FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA

MEDAN 2014


(3)

PERSETUJUAN

Judul : PERANCANGAN KEAMANAN INFORMASI

SISTEM PEMUNGUTAN SUARA ELEKTRONIK (E-VOTING) MENGGUNAKAN KOMBINASI ALGORITMA AES DAN RSA

Kategori : SKRIPSI

Nama : FAHRY ROZY SIREGAR

Nomor Induk Mahasiswa : 101402045

Program Studi : S1 TEKNOLOGI INFORMASI

Departemen : TEKNOLOGI INFORMASI

Fakultas : ILMU KOMPUTER DAN TEKNOLOGI

INFORMASI UNIVERSITAS SUMATERA UTARA Komisi Pembimbing :

Pembimbing 2 Pembimbing 1

Dr. Erna Budhiarti Nababan, M.IT M. Andri Budiman, ST., M.Comp.Sc., M.E.M.

NIP. 19751008 200801 1 011

Diketahui/disetujui oleh

Program Studi S1 Teknologi Informasi Ketua,

Muhammad Anggia Muchtar, ST., MM.IT NIP. 19800110 200801 1 010


(4)

PERNYATAAN

PERANCANGAN KEAMANAN INFORMASI SISTEM PEMUNGUTAN SUARA ELEKTRONIK (E-VOTING) MENGGUNAKAN KOMBINASI

ALGORITMA AES DAN RSA

SKRIPSI

Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.

Medan,

Fahry Rozy Siregar 101402045


(5)

PENGHARGAAN

Puji dan syukur penulis panjatkan kehadirat Tuhan Yang Maha Kuasa yang telah melimpahkan berkat dan rahmatNya sehingga penulis dapat menyelesaikan skripsi ini. Penulis sangat menyadari bahwa Tuhanlah yang sangat berperan membantu dan mengingatkan disaat penulis jatuh ataupun terlena selama mengerjakan skripsi ini.

Dalam menyelesaikan skripsi ini penulis menyadari banyak mendapatkan bantuan dari berbagai pihak baik bantuan secara materi maupun moril. Pada kesempatan ini dengan segala kerendahan hati, penulis ingin mengucapkan terima kasih yang sedalam-dalamnya kepada:

1. Kedua orang tua penulis, yaitu ayahanda Alm. M. Yusuf Shirot Siregar dan ibunda tercinta Nurhayati, karena berkat dukungan dan kesabarannya baik secara moril maupun materil sehingga penulis dapat menyelesaikan skripsi ini. Kepada saudara kandung, Herry M Siregar dan Irfan Abdillah Siregar yang juga memberikan dukungan kepada penulis.

2. Kepada Bapak M. Andri Budiman S.T., M.Comp.Sc., M.E.M. dan Ibu Dr. Erna Budhiarti, M.IT selaku dosen pembimbing penulis yang telah memberikan saran dan masukan serta bersedia meluangkan waktu, tenaga dan pikiran untuk membantu penulis dalam menyelesaikan skripsi ini.

3. Kepada dosen penguji saya Ibu Sarah Purnamawati, S.T., M.Sc dan Bapak Sajadin Sembiring, S.Si., M.Comp.Sc yang banyak memberikan masukan. 4. Ketua dan Sekretaris Jurusan Bapak Anggia Muchtar, S.T., MM.IT dan Bapak

M. Fadly Syahputra,B.Sc.,M.Sc.IT.

5. Seluruh Dosen dan staff program studi Teknologi Informasi Universitas Sumatera Utara.

6. Sahabat - sahabat terdekat saya selama mengecap bangku perkuliahan di jurusan Teknologi Informasi 2010 yang tergabung dalam Group Foya : Ovy, Dian Bunda, Dian Pomta, Desy, Edgar, Muslim, Akira, Baim, Eka, Galih, Fezan, Heri, Chairul, dan Joko, dan seluruh teman-teman sejawat yang tidak dapat disebutkan satu persatu. Terima kasih atas bantuan kalian, teman.

Penulis menyadari bahwa hasil penulisan skripsi ini masih banyak kesalahan dan jauh dari sempurna. Oleh karena itu, kritik dan saran dari pembaca sangatlah penulis harapkan bagi perbaikan dan kesempurnaan di masa yang akan datang. Penulis mohon maaf apabila terdapat kekurangan dan kesalahan dalam penulisan skripsi ini.

Akhir kata, penulis ucapkan terima kasih kepada semua pihak yang terkait dalam penyelesaian skripsi ini yang tidak bisa disebutkan satu persatu, biarlah Tuhan yang membalas semua kebaikan kalian. Amin.


(6)

ABSTRAK

Voting atau pemungutan suara dilakukan untuk mengambil sikap dan keputusan menyangkut hal kepemimpinan dan lain - lain. Namun voting dengan cara konvensional yang biasa dilakukan dinilai kurang efektif karena memakan waktu dan biaya yang cukup besar, serta rentan terhadap kesalahan dalam pemilihan dan penghitungan suara. E-Voting merupakan alternatif untuk melakukan pemungutan suara secara lebih mudah dan efektif karena membutuhkan waktu yang singkat, murah, dan dapat meminimalisir kesalahan. Akan tetapi e-voting memiliki celah terkait persoalan keamanan yang menimbulkan peluang kecurangan manipulasi terhadap data dan informasi yang digunakan. Atas dasar hal ini, kriptografi dimanfaatkan untuk mengatasi celah tersebut sekaligus meningkatkan kemanan dan menjaga keaslian informasi. Metode yang diajukan adalah dengan menggunakan kombinasi algoritma AES dan RSA untuk mengamankan data dan informasi pada sistem e-voting, dan menjaga keaslian data dan informasi menggunakan digital signature dengan hash SHA-1. Pada penelitian ini ditunjukkan bahwa kombinasi algoritma AES dan RSA mampu menutupi celah manipulasi dan meningkatkan keamanan informasi pada sistem e-voting, serta penggunaan digital signature dapat menjaga keaslian data dan informasi yang digunakan.

Kata Kunci : e-voting, kriptografi, kombinasi algoritma, AES, RSA, digital signature, SHA-1


(7)

DESIGNING INFORMATION SECURITY FOR ELECTRONIC VOTING (E-VOTING) SYSTEM USING A COMBINATION OF

AES AND RSA ALGORITHM

ABSTRACT

Voting are often used to take decisions and actions regarding leadership issues, etc. However the conventional ballot voting system is considered less efective due to the amount of time and money it costs, and prone to errors in voting and calculation. Electronic voting (e-voting) could be an alternative to make voting easier and more effective because it only takes a short time, inexpensive, and able to minimize errors. But e-voting has a gap and security issues related to fraud of data and information manipulation. Cryptography, in this case, can be used to cover the gap and increase the security, and also maintain the authenticity of the information. This thesis describes how the AES and RSA algorithm in securing e-voting information, as well as maintaining its authenticity with digital signatures using SHA-1. In this study shows that the combination of AES and RSA algorithm is able to cover the security gap of manipulation and improve the information security in e-voting systems, as well as the use of digital signatures to maintain the authenticity of the data and information.

Keywords: e-voting, cryptography, algorithm combination, RSA, AES, digital signature, SHA-1


(8)

DAFTAR ISI Hal. Persetujuan Pernyataan Penghargaan Abstrak Abstract Daftar Isi ii iii iv v vi vii

Daftar Tabel x

Daftar Gambar xi

BAB 1 PENDAHULUAN 1.1 Latar Belakang 1.2 Rumusan Masalah 1.3 Batasan Masalah 1.4 Tujuan Peneletian 1.5 Manfaat Penelitian 1.6 Sistematika Penulisan

1 3 3 4 4 5

BAB 2 LANDASAN TEORI 2.1 Voting

2.2 E-Voting

2.3 Kriptografi

2.3.1 Kunci Simetrik 2.3.2 Kunci Asimetrik

2.3.3 Perbandingan Kunci Simetrik dan Kunci Asimetrik 2.4 Algoritma Kriptografi AES

2.4.1 Proses Enkripsi AES 2.4.2 Proses Dekripsi AES

6 7 9 12 13 14 15 17 20


(9)

2.5 Algoritma Kriptografi RSA

2.6 Konsep Dasar Perhitungan Matematis 2.6.1 Fungsi Totient Euler ϕ

2.6.2 Algoritma Euclidean

2.6.3 Metode Fast Exponentiation

2.7 Cara Kerja Algoritma RSA

2.7.1 Proses Pembentukan Kunci RSA 2.7.2 Proses Enkripsi RSA

2.7.3 Proses Dekripsi RSA

2.8 Tanda Tangan Digital (Digital Signature) 2.9 Penelitian Terdahulu

22 23 23 24 24 26 26 26 26 29 32

BAB 3 ANALISIS DAN PERANCANGAN SISTEM

3.1 Analisis dan Perancangan Keamanan Informasi Sistem e-Voting

3.1.1 Enkripsi Data Jumlah Suara menggunakan Algoritma RSA 3.1.2 Enkripsi Database menggunakan Algoritma AES

3.1.3 Enkripsi Kunci Algoritma AES menggunakan Algoritma RSA

3.1.4 Tanda Tangan Digital dengan SHA-1 3.1.5 Verifikasi Tanda Tangan Digital

3.1.6 Dekripsi Data Jumlah Suara menggunakan Algoritma RSA 3.1.7 Dekripsi Database menggunakan Algoritma AES

3.1.8 Dekripsi Kunci Algoritma AES menggunakan Algoritma RSA

3.2 Analisis dan Perancangan Sistem e-Voting

3.2.1 Dekripsi Database menggunakan Algoritma AES

3.2.2 Dekripsi Kunci Algoritma AES menggunakan Algoritma RSA 33 33 34 37 39 40 41 42 43 44 44 44 46

BAB 4 IMPLEMENTASI DAN PENGUJIAN PERANGKAT LUNAK 4.1 Spesifikasi Perangkat Keras dan Perangkat Lunak yang

Digunakan

55 55


(10)

4.2 Pengujian Sistem

4.2.1 Pengujian Pada Sisi Administrator 4.2.2 Pengujian Pada Sisi Operator 4.2.3 Pengujian Pada Sisi Voter

4.2.4 Pengujian Pada Sisi Pengguna(Anonymous) 4.3 Analisis Keamanan Informasi Sistem

4.3.1 Hasil Enkripsi Data Jumlah Suara Analisis Keaslian 4.3.2 Hasil Enkripsi Database

4.3.3 Hasil Enkripsi Kunci Algoritma AES 4.3.4 Hasil Tanda Tangan Digital dan Verifikasi 4.3.5 Hasil Dekripsi Kunci Algoritma AES 4.3.6 Hasil Dekripsi Database

4.3.7 Hasil Dekripsi Data Jumlah Suara

56 56 63 65 66 68 68 69 70 71 73 73 74

BAB 5 KESIMPULAN DAN SARAN 5.1 Kesimpulan

5.2 Saran

75 75 75

DAFTAR PUSTAKA 77


(11)

DAFTAR TABEL

Hal. Tabel 2.1 Tabel Perbandingan Beberapa Cipher

Tabel 2.2 Tabel Perbandingan Panjang Kunci AES Tabel 2.3 S-Box Algoritma AES

Tabel 2.4 Inverse S-Box Algoritma AES

Tabel 2.5 Tabel Proses Mencari Kunci Privat RSA (d)

16 17 18 21 27


(12)

DAFTAR GAMBAR

Hal. Gambar 2.1 Skema enkripsi dan dekripsi pada kunci simetrik

Gambar 2.2 Skema enkripsi dan dekripsi pada kunci asimetrik Gambar 2.3 Ilustrasi transformasi SubByte ke dalam S-Box Gambar 2.4 Ilustrasi transformasi ShiftRows

Gambar 2.5 Ilustrasi transformasi MixColoumn Gambar 2.6 Ilustrasi transformasi AddRoundKey Gambar 2.7 Alur proses enkripsi algoritma AES Gambar 2.8 Alur proses dekripsi algoritma AES Gambar 2.9 Skema proses tanda tangan digital

Gambar 3.1 Arsitektur umum perancangan keamanan informasi pada sistem

e-voting

Gambar 3.2 Proses enkripsi data jumlah suara Gambar 3.3 Proses enkripsi database

Gambar 3.4 Proses enkripsi kunci algoritma AES Gambar 3.5 Proses tanda tangan digital

Gambar 3.6 Verifikasi tanda tangan digital Gambar 3.7 Proses dekripsi data jumlah suara Gambar 3.8 Proses dekripsi database

Gambar 3.9 Proses dekripsi kunci algoritma AES

Gambar 3.10 Arsitektur penggunaan perangkat lunak e-voting

Gambar 3.11 Flowchart proses registrasi mahasiswa Gambar 3.12 Flowchart proses login voter

Gambar 3.13 Flowchart proses pilih kandidat Gambar 3.14 Flowchart proses cek pilihan suara

Gambar 3.15 Flowchart proses login administrator/operator Gambar 3.16 Flowchart proses rekapitulasi suara di TPS Gambar 3.17 Flowchart proses rekapitulasi suara di KPU Gambar 3.18 Flowchart proses lihat hasil voting

12 13 18 18 19 19 20 22 30 34 37 39 40 40 41 42 43 44 45 47 48 49 50 51 52 53 54


(13)

Gambar 4.1 Tampilan halaman login administrator Gambar 4.2 Tampilan halaman panel administrator Gambar 4.3 Tampilan halaman manajemen database Gambar 4.4 Tampilan halaman olah data pemilih Gambar 4.5 Tampilan halaman olah data kandidat Gambar 4.6 Tampilan halaman olah data operator

Gambar 4.7 Tampilan halaman olah pertanyaan keamanan Gambar 4.8 Tampilan halaman manajemen TPS

Gambar 4.9 Tampilan halaman distribusi database Gambar 4.10 Tampilan halaman manajemen kunci Gambar 4.11 Tampilan halaman olah data pemilih Gambar 4.12 Tampilan halaman lihat hasil voting

Gambar 4.13 Tampilan halaman rekap hasil suara Gambar 4.14 Tampilan halaman login operator Gambar 4.15 Tampilan halaman panel operator Gambar 4.16 Tampilan halaman login pemilih Gambar 4.17 Tampilan halaman pemilihan

Gambar 4.18 Tampilan halaman beranda website KPU Gambar 4.19 Tampilan halaman pendaftaran

Gambar 4.20 Tampilan halaman cek suara pemilihan Gambar 4.21 Tampilan halaman lihat hasil voting

Gambar 4.22 Hasil enkripsi data jumlah suara Gambar 4.23 Hasil enkripsi database

Gambar 4.24 Nilai Hex ciphertext database

Gambar 4.25 Hasil enkripsi kunci algoritma AES Gambar 4.26 Nilai Hex ciphertext kunci AES

Gambar 4.27 Tanda tangan digitalkunci valid Gambar 4.28 Tanda tangan digital database valid Gambar 4.29 Digital signature kunci tidak valid

Gambar 4.30 Digital signature kunci tidak valid Gambar 4.31 Hasil dekripsi kunci algoritma AES Gambar 4.32 Hasil dekripsi database

57 58 58 59 59 60 60 61 61 62 63 63 64 65 65 66 67 68 68 69 69 70 70 71 71 72 72 73 73 73 74 74


(14)

Gambar 4.33 Pembuatan fungsi view pada database Gambar 4.34 Hasil penghitungan rekapitulasi total Gambar 4.35 Hasil pengitungan suara dari TPS

75 75 75


(15)

ABSTRAK

Voting atau pemungutan suara dilakukan untuk mengambil sikap dan keputusan menyangkut hal kepemimpinan dan lain - lain. Namun voting dengan cara konvensional yang biasa dilakukan dinilai kurang efektif karena memakan waktu dan biaya yang cukup besar, serta rentan terhadap kesalahan dalam pemilihan dan penghitungan suara. E-Voting merupakan alternatif untuk melakukan pemungutan suara secara lebih mudah dan efektif karena membutuhkan waktu yang singkat, murah, dan dapat meminimalisir kesalahan. Akan tetapi e-voting memiliki celah terkait persoalan keamanan yang menimbulkan peluang kecurangan manipulasi terhadap data dan informasi yang digunakan. Atas dasar hal ini, kriptografi dimanfaatkan untuk mengatasi celah tersebut sekaligus meningkatkan kemanan dan menjaga keaslian informasi. Metode yang diajukan adalah dengan menggunakan kombinasi algoritma AES dan RSA untuk mengamankan data dan informasi pada sistem e-voting, dan menjaga keaslian data dan informasi menggunakan digital signature dengan hash SHA-1. Pada penelitian ini ditunjukkan bahwa kombinasi algoritma AES dan RSA mampu menutupi celah manipulasi dan meningkatkan keamanan informasi pada sistem e-voting, serta penggunaan digital signature dapat menjaga keaslian data dan informasi yang digunakan.

Kata Kunci : e-voting, kriptografi, kombinasi algoritma, AES, RSA, digital signature, SHA-1


(16)

DESIGNING INFORMATION SECURITY FOR ELECTRONIC VOTING (E-VOTING) SYSTEM USING A COMBINATION OF

AES AND RSA ALGORITHM

ABSTRACT

Voting are often used to take decisions and actions regarding leadership issues, etc. However the conventional ballot voting system is considered less efective due to the amount of time and money it costs, and prone to errors in voting and calculation. Electronic voting (e-voting) could be an alternative to make voting easier and more effective because it only takes a short time, inexpensive, and able to minimize errors. But e-voting has a gap and security issues related to fraud of data and information manipulation. Cryptography, in this case, can be used to cover the gap and increase the security, and also maintain the authenticity of the information. This thesis describes how the AES and RSA algorithm in securing e-voting information, as well as maintaining its authenticity with digital signatures using SHA-1. In this study shows that the combination of AES and RSA algorithm is able to cover the security gap of manipulation and improve the information security in e-voting systems, as well as the use of digital signatures to maintain the authenticity of the data and information.

Keywords: e-voting, cryptography, algorithm combination, RSA, AES, digital signature, SHA-1


(17)

BAB I PENDAHULUAN

Bab ini menjelaskan rincian hal yang menjadi dasar penulisan skripsi ini mulai dari latar belakang, rumusan masalah, batasan masalah, tujuan, manfaat, dan sistematika penulisan.

1.1.Latar Belakang

Voting atau pemungutan suara sering digunakan oleh lembaga-lembaga atau organisasi-organisasi baik skala besar seperti sebuah negara maupun kecil seperti sebuah perkumpulan atau himpunan untuk mengambil sikap dan keputusan dalam hal kepemimpinan dan lain - lain. Pemungutan suara yang biasa dilakukan oleh masyarakat pada umumnya adalah pemungutan suara secara manual dengan menggunakan kertas. Penggunaan pemungutan suara dengan cara seperti ini untuk organisasi skala cukup besar yang melibatkan banyak orang dinilai kurang efektif baik dari segi biaya, tata kelola, maupun waktu.

Di Indonesia sendiri, sebagai contoh, kasus pemungutan suara dengan kertas yang dilakukan pada pemilihan umum (pemilu) kerap menuai berbagai permasalahan. Permasalahan yang timbul kerap memacu pada tingginya tingkat pemborosan biaya yang dikeluarkan untuk setiap penyelenggaraannya. Permasalahan lain seperti tata kelola yang buruk, proses penghitungan suara yang terbilang lambat, tidak ada bukti dari hasil pemilihan suara yang valid sehingga sulit apabila ada pihak yang keberatan dan menginginkan penghitungan ulang, kekurangan dan keterlambatan distribusi alat pendukung sehingga dapat menghambat kelancaran proses pemilihan, rentannya kerusakan kertas suara, potensi kecurangan dan kesalahan yang ditimbulkan pada proses pemilihan, dan kurang terjaminnya kerahasiaan dari pilihan yang dibuat seseorang sehingga banyak pemilih yang mengalamani tekanan dan ancaman dari pihak tertentu. Banyaknya permasalahan ini menandakan perlunya pengkajian ulang agar sistem pemungutan suara yang dilakukan dapat berlangsung lebih efektif.


(18)

(19)

Menurut Direktur Program Sistem Pemilu Elektronik BPPT, Andrari Grahitandaru, berdasarkan hasil uji coba pemungutan suara elektronik (e-voting) di Bali menunjukkan, sistem ini layak diterapkan, hemat biaya lebih dari 60 persen, serta mempersingkat dan memudahkan proses permilihan (Kompas, 2014). Cara pemilihan atau pemungutan suara ini juga menyingkat waktu, hanya butuh 20 detik untuk memberikan suara.

Namun, di sisi lain pada pelaksanaan pemilu dengan menggunakan Sistem Pemilu Eletronik (e-voting) juga memiliki celah keamanan yang dapat memungkinkan seseorang untuk melakukan manipulasi pada data hasil pemilihan suara. Keamanan sistem sebagai permasalahan mendasar pada sistem e-voting (Pardede, 2012) :

1. e-voting merupakan sebuah kesatuan sistem yang memiliki kebergantungan tinggi satu sama lain

2. Pemanfaatan TI membuka peluang bagi siapa saja untuk melakukan serangan terhadap sistem voting .

3. Sistem e-voting yang berbentuk digital rentan terhadap manipulasi apabila tidak disertai dengan metode pengamanan yang baik

Oleh karena itu e-voting membutuhkan metode pengamanan yang dapat menjamin kemanan data hasil pemilihan suara pada sistem e-voting. Kriptografi dipilih sebagai metode yang digunakan untuk mengamankan dan menjaga kerahasiaan informasi sehingga pihak yang tidak berhak tidak dapat mengakses informasi tersebut. Selain itu, kriptografi juga dapat digunakan untuk otentikasi dan menjaga keaslian pesan/informasi.

Penelitian sebelumnya pernah membahas mengenai keamanan informasi dalam sistem e-voting menggunakan kriptografi RSA (Pardede, 2012). Kelebihan algoritma asimetrik RSA ini terletak pada tingkat kesulitan dalam memfaktorkan bilangan menjadi bilangan prima. Namun memiliki kelemahan untuk mengenkripsi data dengan ukuran yang besar.

Pada kasus e-voting yang melibatkan banyak pemilih, hasil suara yang diperoleh menjadi sangat besar apabila dikumpulkan menjadi satu file hasil rekapitulasi suara. Keamanan dan keaslian file ini menjadi sangat penting ketika melakukan pendistribusian dari tempat pemungutan suara yang ada di daerah ke pusat.


(20)

Selain itu dalam penerimaan file hasil rekapitulasi suara juga perlu dilakukan validasi agar dapat diketahui pengirim asli dari dokumen hasil suara yang diterima.

Untuk menutupi kelemahan algoritma tersebut, penulis akan melengkapinya dengan algoritma simetrik AES untuk mengenkripsi dokumen hasil suara yang berukuran cukup besar. Algoritma AES memiliki beberapa kelebihan diantaranya, pada setiap putaran algoritma menghasilkan kunci (subkey) yang berbeda sehingga memiliki tingkat keamanan yang baik, kecepatan melakukan proses enkripsi dan dekripsi file baik berukuran kecil maupun besar, serta penggunaan memori yang relatif efisien. Selanjutnya untuk menjaga keamanan proses distribusi kunci digunakan kembali enkripsi dengan algoritma RSA 2048-bit yang memiliki kompleksitas yang sangat rumit untuk diretas, serta menerapkan digital signature dengan menggunakan SHA-1 untuk menjaga otentikasi keaslian file.

1.2.Rumusan Masalah

Berdasarkan uraian latar belakang permasalahan yang mengutarakan kerawanan terkait celah keamanan pada sistem pemungutan suara elektronik (e-voting) yang memungkinkan seseorang untuk melakukan manipulasi data, maka dibutuhkan suatu metode pengamanan informasi yang dapat memberikan keamanan sehingga data dan informasi yang ada dalam sistem dapat terjaga keutuhan dan keasliannya.

1.3.Batasan Masalah

Untuk lebih mengarahkan usaha pembahasan masalah yang telah ditetapkan, dilakukan pembatasan masalah dan asumsi, yakni :

1. Sistem hanya berupa simulasi dimana data yang digunakan di dalamnya tidak menggunakan data sebenarnya.

2. Pemungutan suara diasumsikan pada Pemilihan Presiden Mahasiswa Universitas Sumatera Utara.

3. Sistem tidak membahas tata cara jalur pendistribusian file kunci dan dokumen.

4. Jaminan keamanan difokuskan pada pengamanan data hasil suara pemilihan dan database rekapitulasi.


(21)

5. Masalah non-teknis seperti pemadaman listrik, bencana alam, dan lain-lain diabaikan selama pemilihan umum berlangsung.

6. Sistem yang dibangun menggunakan sistem client-server jaringan lokal (LAN) dengan asumsi dilakukan di setiap tempat pemungutan suara (TPS).

1.4.Tujuan

Untuk mengamanankan data dan informasi dalam penggunaan sistem pemungutan suara elektronik (e-voting) dengan menerapkan kombinasi algoritma AES dan RSA, serta untuk menjaga keaslian data dan informasi dengan tanda tangan digital menggunakan hash SHA-1.

1.5.Manfaat Penelitian

Penulisan skripsi ini diharapkan mempunyai manfaat yang baik dan berguna , antara lain:

1. Sistem e-voting yang dibangun dapat diterapkan pada pemilihan-pemilihan umum yang menggunakan cara pemungutan suara, baik bersifat kenegaraan maupun institusional, seperti pemilihan presiden, kepala daerah, ataupun pemilihan presiden universitas.

2. Meminimalisir biaya anggaran pelaksanaan pemilihan dengan pemungutan suara.

3. Memudahkan dan mempercepat waktu proses penghitungan suara yang dilakukan pada pemilihan umum.

4. Memudahkan pengguna untuk melakukan voting tanpa khawatir data pemilihannya tidak sesuai dengan hasil voting.

5. Membantu menjamin keamanan dan keaslian informasi serta mencegah terjadinya manipulasi data pemilihan suara.

6. Menembah pengetahuan dan referensi mengenai kriptografi dan keamanan informasi.


(22)

1.6. Sistematika Penulisan

Sistematika penulisan skripsi ini dibagi menjadi lima bagian utama sebagai berikut :

BAB I : Pendahuluan

Bab ini berisikan konsep dasar untuk penyusunan penelitian yang terdiri dari latar belakang penelitian yang dilaksanakan, rumusan masalah, tujuan penelitian, batasan masalah, manfaat penelitian, metodologi penelitian, serta sistematika penulisan.

BAB II : Landasan Teori

Pada bab ini membahas beberapa teori-teori penunjang yang akan mendukung pembahasan pada bab selanjutnya. Teori mengenai voting, e-voting, serta algoritma kriptografi yang digunakan akan dibahas pada bab ini.

BAB III : Analisis dan Perancangan Perangkat Lunak

Bab ini membahas mengenai analisis permasalahan dalam penerapan keamanan informasi dalam sistem e-voting. Pada bab ini dijabarkan arsitektur umum, proses yang dilakukan serta cara kerja algoritma yang digunakan.

BAB IV : Implementasi dan Pengujian Perangkat Lunak

Bab ini berisi pembahasan tentang implementasi dari perancangan penerapan yang telah dijabarkan pada bab 3. Selain itu, hasil yang didapatkan dari pengujian keamanan informasi yang dilakukan terhadap implementasi yang dilakukan juga dijabarkan pada bab ini.

BAB V : Kesimpulan dan Saran

Bab ini berisi ringkasan serta kesimpulan dari rancangan yang telah dibahas pada bab 3, serta hasil penelitian yang dijabarkan pada bab 4. Bagian akhir dari bab ini akan berisi saran-saran yang diajukan untuk pengembangan penelitian selanjutnya.


(23)

BAB II

LANDASAN TEORI

Bab ini menjelaskan teori dan konsep yang menjadi landasan materi dari sistem yang akan dibuat. Beberapa teori dan konsep yang akan dibahas antara lain pembahasan konsep dasar voting, e-voting, konsep dasar kriptografi, cara kerja algoritma AES, cara kerja algoritma RSA, cara kerja tanda tangan digital (digital signature), dan penelitian terdahulu.

2.1. Voting

Voting atau pemungutan suara yang biasa dilakukan dengan cara manual oleh masyarakat dalam mengambil sikap dan keputusannya menentukan pemimpin sering menimbulkan permasalahan-permasalah yang disebabkan oleh human error maupun sistemik. Berikut ini adalah beberapa permasalahan yang timbul dalam pelaksanaan

voting di Indonesia selama ini:

1. Banyak terjadi kesalahan dalam proses pendaftaran pemilih. Konsep penggunaan banyak kartu identitas menyebabkan banyaknya pemilih yang memiliki kartu suara lebih dari satu buah. Keadaan ini seringkali dimanfaatkan oleh pihak-pihak tertentu untuk meningkatkan jumlah suara pilihannya sehingga dapat memenangkan voting tersebut.

2. Pemilih salah dalam memberi tanda pada kertas suara, karena ketentuan keabsahan penandaan yang kurang jelas, sehingga banyak kartu suara yang dinyatakan tidak sah. Pada tahapan verifikasi keabsahan dari kartu suara, sering terjadi kontroversi peraturan dan menyebabkan konflik.

3. Proses pengumpulan kartu suara yang berjalan lambat, karena perbedaan kecepatan pelaksanaan pemungutan suara di masing-masing tempat pemilihan.


(24)

(25)

4. Penyebab lainnya adalah kesulitan untuk memeriksa keabsahan dari sebuah kartu suara, sehingga pengumpulan tidak berjalan sesuai dengan rencana. 5. Proses penghitungan suara yang dilakukan di setiap daerah berjalan lambat

karena proses tersebut harus menunggu semua kartu suara terkumpul terlebih dahulu. Keterlambatan yang terjadi pada proses pengumpulan, akan berimbas kepada proses penghitungan suara. Lebih jauh lagi, proses tabulasi dan pengumuman hasil perhitungan akan meleset dari perkiraan sebelumnya. 6. Keterlambatan dalam proses tabulasi hasil penghitungan suara dari daerah.

Kendala utama dari proses tabulasi ini adalah kurangnya variasi metode pengumpulan hasil penghitungan suara. Hal ini disebabkan oleh masih lemahnya infrastruktur teknologi komunikasi di daerah. Oleh karena itu, seringkali pusat tabulasi harus menunggu data penghitungan yang dikirimkan dari daerah dalam jangka waktu yang lama. Akibat dari hal tersebut, maka pengumuman hasil voting akan memakan waktu yang lama.

7. Permasalahan yang terpenting adalah kurang terjaminnya kerahasiaan dari pilihan yang dibuat oleh seseorang. Banyak pemilih mengalami tekanan dan ancaman dari pihak tertentu untuk memberikan suara mereka kepada pihak tertentu. Lebih buruk lagi, terjadi “jual-beli suara“ di kalangan masyarakat tertentu, sehingga hasil voting tidak mewakili kepentingan seluruh golongan masyarakat.

2.2. E-Voting

E-Voting yaitu suatu metode pemungutan suara dan penghitungan suara dalam pemilihan umum dengan menggunakan perangkat elektronik (Priyono & Dihan, 2010). Proses pendaftaran pemilih, pelaksanaan pemilihan, penghitungan suara, dan pengiriman hasil suara dilakukan secara elektronik atau digital (Rokhman, 2011). Pilihan teknologi yang digunakan dalam implementasi dari e-voting sangat bervariasi, seperti penggunaan smart card untuk otentikasi pemilih, penggunaan internet sebagai pemungutan suara, penggunaan touch screen sebagai pengganti kartu suara, dan masih banyak variasi teknologi yang digunakan (Azhari, 2005). Penggunaan teknologi ini di satu sisi memberikan banyak kemudahan dan kecepatan, namun di sisi lain


(26)

menimbulkan kerawanan (Agustina & Kurniati, 2009). Kerawanan ini terkait dengan keamanan informasinya. Berikut beberapa requirement dasar pada e-voting (Schneier, 1996):

1. Tidak ada seorang pun yang dapat mengetahui pilihan orang lain.

2. Setiap orang dapat memastikan dan memverifikasi pilihannya telah masuk ke rekapitulasi akhir pemilihan dengan benar sesuai pilihannya.

3. Hanya orang yang sah dan terdaftar yang dapat memberikan suara/pemilih 4. Tidak seorangpun dapat menduplikasi suara orang lain tanpa diketahui. 5. Tidak ada pemilih/voter yang dapat memilih lebih dari satu kali.

6. Sistem harus dapat menyimpan dan menghitung suara yang diberikan oleh pemilih/voter dengan benar dan akurat.

7. Prosedur pemilihan dalam sistem harus dapat dengan mudah dimengerti dan digunakan oleh pengguna.

E-Voting merupakan teknologi yang relatif baru untuk mendukung pelaksanaan pesta demokrasi dan telah diterapkan di sejumlah negara (Kahani, 2005). Penerapan e-voting dengan berbagai model dan dalam 10 tahun terakhir tidak hanya di Amerika, tetapi negara-negara lain juga mengadopsi sistem ini (Gefen et al., 2005). Sejumlah negara yang telah menerapkan e-voting yaitu Brazil (sejak 1990 dan tahun 1998 merupakan proses e-voting terbesar karena melibatkan 60 juta pemilih), Inggris (sejak tahun 2002 sebagian telah menerapkan dan mulai tahun 2011 digunakan secara nasional), Australia (mulai digunakan tahun 2001), Selandia Baru (mulai tahun 2006), Jepang (sejak tahun 2002), Irlandia (dipersiapkan sejak tahun 1998 dan mulai diujicoba tahun 2002 dan mulai diterapkan secara nasional tahun 2004), Swiss (sejak tahun 1998) dan Lithuania. Menurut Hajjar et al. (2006) bahwa pertimbangan diterapkannya e-voting adalah karena kecepatan dan akurasi.

Di Indonesia sendiri, penggunaan e-voting telah dilakukan Nopember – Desember 2009 pada 31 kepala dusun (banjar) yang ada di 18 desa/kelurahan di Jembrana – Bali yaitu menggunakan kartu identitas dengan chip dan komputer layar sentuh sebagai sarana pemungutan suara.

Penerapan e-voting akan membuat pesta demokrasi menjadi semakin efisien dan efektif dan hasilnya lebih cepat diketahui kurang dari 24 jam (Indriastuti & Wahyudi, 2010). Tetapi pentingnya kerahasiaan dan keamanan electronic election


(27)

system juga harus diperhatikan seperti ditegaskan oleh Zamora, et.al. (2005). Artinya, jika kerahasiaan dan keamanan terpenuhi, maka e-voting sangatlah tepat digunakan. Berikut sejumlah aspek manfaat dari penerapan e-voting adalah (Zafar & Pilkzaer, 2007).

1. Biaya

Terkait sumber daya dan investasi yang lebih hemat dibanding dengan sistem tradisional yang ribet, kompleks dan tidak efisien.

2. Waktu

Terkait waktu pelaksanaan pemilihan yang lebih cepat dan kalkulasi hasil yang lebih tepat dibandingkan sistem yang tradisional.

3. Hasil

Terkait dengan hasil kalkulasi yang lebih tepat dan akurat serta minimalisasi terjadinya kasus human error selama sistem yang dibangun terjamin dari berbagai ancaman kejahatan.

4. Transparansi

Terkait dengan transparansi dari semua proses karena semua dilakukan oleh suatu sistem yang otomatis dan real time online.

2.3. Kriptografi

Kriptografi (cryptography) berasal dari bahasa Yunani yaitu cryptos yang berarti

secret yaitu rahasia dan graphein artinya writing yaitu tulisan (Agustina & Kurniati, 2009). Sehingga kriptografi berarti secret writing yaitu tulisan rahasia. Dan arti sebenarnya dari kriptografi itu adalah ilmu yang mempelajari tentang bagaimana menjaga kerahasiaan suatu pesan, agar isi pesan yang disampaikan tersebut aman sampai ke penerima pesan (Ariyus, 2008).

Tujuan kriptografi adalah melindungi data dari ancaman yang disengaja atau tidak disengaja. Dewasa ini ancaman bertambah karena semakin meluasnya akses melalui internet atau teknologi bergerak. Aspek - aspek keamanan data dalam kriptografi adalah sebagai berikut (Kurniawan, 2004).

1. Confidentiality / Privacy

Merupakan usaha untuk menjaga kerahasiaan data. Data hanya boleh diakses oleh orang yang berwenang. Contohnya data-data pribadi, data-data bisnis,


(28)

daftar gaji, data nasabah dan lainnya. Aspek keamanan data menjadi sangat sensitif dalam e-commerce dan militer. Serangan dalam aspek ini antara lain dilakukan dengan penyadapan, misalnya sniffer atau logger.

2. Integrity

Memastikan bahwa informasi yang dikirim melalui jaringan tidak mengalami modifikasi oleh pihak yang tidak berhak. Serangan dapat berupa pengubahan data oleh orang yang tidak berhak, misalnya dengan spoofing yaitu virus yang dapat mengubah berkas.

3. Availability

Informasi harus tersedia ketika dibutuhkan. Serangan dapat berupa meniadakan layanan (Denial of Service/DoS attack) atau menghambat layanan dengan membuat server lambat.

4. Non-repudiation

Pengirim tidak dapat menyangkal bahwa yang bersangkutan telah melakukan transaksi tersebut.

5. Authentication

Meyakinkan keaslian data, sumber data, orang yang mengakses data, dan

server yang digunakan. Beberapa cara yang dapat digunakan untuk membuktikan keaslian data antara lain dengan what you have (misalnya kartu identitas), what you know (misalnya password atau PIN) dan what you are

(misalnya dengan biometric identity). Serangan dapat dilakukan dengan menggunakan identitas palsu, terminal palsu ataupun situs gadungan.

6. Access Control

Aspek ini berhubungan dengan mekanisme pengaturan akses ke informasi, untuk mengatur siapa yang boleh melakukan apa. Membutuhkan adanya klasifikasi data, misalnya umum (public), pribadi (private), rahasia (confidential) atau sangat rahasia (top secret).

7. Accountability

Dapat dipertanggungjawabkan melalui mekanisme logging dan audit. Adanya kebijakan dan prosedur (policy and procedures).


(29)

Di dalam kriptografi juga akan sering ditemukan berbagai istilah atau terminologi. Berikut beberapa istilah yang penting untuk diketahui :

1. Pesan, plaintext,dan ciphertext

Pesan (message) adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Nama lain untuk pesan adalah plaintext atau teks jelas (cleartext) (Schneier, 1996). Pesan dapat berupa data atau informasi yang dikirim (melalui kurir, saluran telekomunikasi, dsb.) atau yang disimpan di dalam media perekaman (kertas, storage, dan sebagainya). Pesan yang tersimpan tidak hanya berupa teks, tetapi juga dapat berbentuk citra (image), suara/bunyi (audio), dan video, atau berkas biner lainnya. Agar pesan tidak dapat dimengerti maknanya oleh pihak lain, maka pesan perlu disandikan ke bentuk lain yang tidak dapat dipahami (enkripsi). Bentuk pesan yang tersandi disebut ciphertext. Proses pembalikan dimana ciphertext diubah kembali menjadi plaintext di sebut dekripsi (Stamp, 2007).

2. Entitas, pengirim, penerima, dan penyusup

Entitas atau peserta adalah orang atau sesuatu yang mengirim, menerima, atau memanipulasi informasi. Entitas bisa berupa orang, terminal komputer, kartu kredit, dan sebagainya. Jadi, orang bisa bertukar pesan dengan orang lainnya (contoh: Alice berkomunikasi dengan Bob) sedangkan di dalam jaringan komputer, mesin (komputer) berkomunikasi dengan mesin (contoh: mesin ATM berkomunikasi dengan komputer server di bank). Pengirim adalah entitas dalam komunikasi yang mengirimkan informasi kepada entitas lainnya lainnya. Penerima adalah entitas dalam komunikasi yang diharapkan menerima informasi. Penyusup (adversary) adalah entitas diluar pengirim dan penerima yang mencoba untuk membobol keamanan informasi. Penyusup biasanya bertindak seolah-olah sebagai pengirim yang sah ataupun penerima yang sah. 3. Enkripsi dan dekripsi

Proses menyandikan plaintext menjadi ciphertext disebut enkripsi (encyption) atau enciphering (standar nama menurut ISO 7498-2). Sedangkan proses mengembalikan ciphertext menjadi plaintext semula dinamakan dekripsi (decryption) atau deciphering (standar nama menurut ISO 7498-2). Enkripsi


(30)

dan dekripsi dapat diterapkan baik pada pesan yang dikirim maupun pada pesan yang tersimpan.

4. Cipher dan kunci

Algoritma kriptografi disebut juga cipher yaitu aturan untuk enchiphering dan

deciphering, atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi. Beberapa cipher memerlukan algoritma yang berbeda untuk

enciphering dan dechipering.

Berdasarkan kunci yang digunakan, algoritma kriptografi dapat dibedakan atas dua golongan yaitu algoritma kunci simetrik dan algoritma kunci asimetrik.

2.3.1. Kunci Simetrik

Kunci Simetrik yang sering disebut algoritma konvensional adalah algoritma yang menggunakan kunci yang sama untuk proses enkripsi dan dekripsinya (Schneier, 1996). Dari gambar 2.2 ini terlihat bahwa untuk mengenkripsi dan mendekripsinya pesan hanya menggunakan satu buah kunci saja (K) saja :

Encryption Decryption

Plaintext Ciphertext Plaintext

Key Key

Gambar 2.1 Skema enkripsi dan dekripsi kunci simetrik (Schneier, 1996)

Untuk menjaga kerahasiaan pesan antar komunikan pada kriptografi ini dibutuhkan sebuah kunci untuk tiap pasangan komunikan. Sehingga untuk n komunikan jumlah kunci yang dibutuhkan adalah:

( −1)

2

Contoh kasus yang melibatkan 4 komunikan A, B, C, dan D. Maka untuk berkomunikasi satu sama lain dengan aman, dibutuhkan pasangan kunci sebanyak :


(31)

4 (4 −1) = 4 (3) = 6 kunci untuk setiap pasangan.

2 2

Kunci - kunci yang diperoleh untuk setiap pasangan komunikan antara lain adalah kunci pasangan komunikan A – B, A – C, A – D, B – C, B – D, dan C – D.

Beberapa algoritma yang memakai kunci simetrik adalah Data Encryption Standard (DES), RC2, RC4, RC5, RC6, International Data Encryption Algorithm (IDEA), Advanced Encryption Standard (AES), One Time Pad (OTP), Blowfish, dan lain sebagainya.

2.3.2. Kunci Asimetrik

Kriptografi kunci simetrik sering disebut dengan kunci publik karena menggunakan kunci yang berbeda untuk enkripsi dan dekripsi. Kriptografi ini memiliki dua kunci (e

dan d). Seperti yang diuraikan Menezes (1997), kunci e dibuat untuk umum sehingga disebut kunci publik, sementara kunci d tetap disimpan aman dan rahasia sehingga disebut kunci privat. Demi keamanan maka harusnya menghitung d menjadi lebih sulit bila e diketahui. Skema kriptografi kunci simetri dapat dilihat pada gambar 2.3.

Encryption Decryption

Plaintext Ciphertext Plaintext

Public Key Private Key

Gambar 2.2 Skema enkripsi dan dekripsi kunci asimetrik (Schneier, 1996)

Kriptografi kunci publik dapat dianalogikan seperti kotak surat yang terkunci dan memiliki lubang untuk memasukkan surat. Kotak surat diletakkan di depan rumah pemiliknya. Setiap orang dapat memasukkan surat ke dalam kotak tersebut, tetapi hanya pemilik kotak yang dapat membuka kotak dan membaca suratnya karena hanya ia yang memiliki kuncinya.

Beberapa algoritma yang memakai kunci asimetri adalah Digital Signature Algorithm (DSA), RSA, ElGamal, Diffie-Hellman, Elliptic Curve Cryptography


(32)

2.3.3. Perbandingan Algoritma Simetrik dan Algoritma Asimetrik

Baik kriptografi simetrik maupun kriptografi asimetrik (kunci publik), keduanya mempunyai kelebihan dan kelemahan.

a. Kelebihan kriptografi simetrik:

1. Algoritma kriptografi simetri dirancang sehingga proses enkripsi/dekripsi membutuhkan waktu yang singkat.

2. Ukuran kunci simetri relatif pendek.

3. Algorima kriptografi simetri dapat disusun untuk menghasilkan cipher

yang lebih kuat.

4. Otentikasi pengirim pesan langsung diketahui dari ciphertext yang diterima, karena kunci hanya diketahui oleh pengirim dan penerima pesan saja.

b. Kelemahan kriptografi simetrik:

1. Kunci simetri harus dikirim melalui saluran yang aman. Kedua entitas yang berkomunikasi harus menjaga kerahasisan kunci ini.

2. Kunci harus sering diubah, mungkin pada setiap sesi komunikasi. c. Kelebihan kriptografi kunci asimetrik (Munir, 2006):

1. Hanya kunci privat yang perlu dijaga kerahasiaannya oleh setiap entitas yang berkomuniaksi (namun, otentikasi kunci publik juga tetap harus terjamin). Tidak ada kebutuhan mengirim kunci privat sebagaimana pada kunci simetrik.

2. Pasangan kunci publik maupun privat tidak perlu diubah, bahkan dalam periode waktu yang panjang.

3. Dapat digunakan untuk mengamankan pengiriman kunci simetrik.

4. Beberapa algoritma kunci-publik dapat digunakan untuk memberi tanda tangan digital pada pesan.


(33)

d. Kelemahan kriptografi kunci asimetrik (Munir, 2006):

1. Enkripsi dan dekripsi data pada umumnya berjalan lebih lambat daripada kunci simetrik, karena enkripsi dan dekripsi menggunakan bilangan yang besar dan operasi perpangkatan yang besar pula.

2. Ukuran ciphertext lebih besar daripada plaintext (bisa dua sampai empat kali ukuran plaintext).

3. Ukuran kunci relatif lebih besar daripada ukuran kunci simetrik.

4. Karena kunci publik diketahui secara luas dan dapat digunakan setiap orang, maka ciphertext yang dihasilkan tidak memberikan informasi mengenai otentikasi pengirim.

2.4. Algoritma Kriptografi AES

Sejak tahun 1976, Data Encryption Standard (DES) dipilih sebagai standar kriptografi yang dipakai pada pemerintahan Amerika Serikat. Namun pada tahun 1990, panjang kunci DES dianggap terlalu pendek, dan pada tahun 1998 DES berhasil dipecahkan dalam waktu 96 hari, kemudian di tahun 1999 dapat dipecahkan dalam waktu 22 hari. Karena alasan tersebut maka kemudian diadakan kompetisi oleh NIST (National Institute of Standard and Technology) untuk mencari pengganti DES. NIST mengundang peserta dari seluruh dunia untuk berpartisipasi dengan mengajukan algoritma baru untuk menggantikan DES (Ariyus, 2008). Pada tahun 1997 ada 21 pelamar dan 6 dari mereka gugur karena tidak masuk dalam kriteria pemilihan. Konferensi umum pun diselenggarakan untuk menilai keamanan algoritma yang diusulkan. Pada Agustus 1998, dipilih 5 kandidat untuk seleksi akhir, yaitu :

1. Rijndael (dari John Daemen dan Vincent Rijmen – Belgia, 86 suara)

2. Serpent (dari Ross Anderson, Eli Biham, dan Lars Knudsen – Inggris, Israel dan Norwegia, 59 suara)

3. Twofish (dari tim yang diketuai oleh Bruce Schneier – USA, 31 suara) 4. RC6 (dari Laboratorium RSA – USA, 23 suara)


(34)

Kriteria penilaian yang dikemukakan NIST didasarkan pada 3 kriteria utama berikut (Nechvatal, 2000) .

1. Aspek keamanan.

Keamanan merupakan aspek terpenting dalam penilaian yang mengacu pada ketahanan algoritma terhadap serangan, kompleksitas penghitungan matematis,

output yang dihasilkan, dan perbandingan aspek keamanan satu sama lain. 2. Aspek biaya.

Aspek biaya mengacu pada lisensi, efisiensi komputasional di berbagai

platform, dan kebutuhan memory sesuai dengan tujuan NIST yang menginginkan agar algoritma AES dapat digunakan secara luas dan bebas tanpa harus membayar royalti, dan juga murah untuk diimplementasikan pada smart card yang memiliki ukuran memori kecil.

3. Aspek implementasi dan karakteristik algoritma.

Aspek ini mengacu pada fleksibilitas, kesesuaian terhadap perangkat lunak maupun keras, serta kesederhanaan algoritma.

Pada bulan Oktober 2000, NIST mengumumkan untuk memilih Rinjdael, kemudian pada bulan November 2001, Rinjdael ditetapkan sebagai AES, dan diharapkan menjadi standard kriptografi yang dominan paling sedikit selama 10 tahun. Terhitung pada 26 Mei 2002 AES telah menjadi standard dalam kriptografi kunci simetrik modern.

Berikut disertakan tabel perbandingan algoritma Rijndael (AES) dengan beberapa algoritma lain (Munir, 2006).

Tabel 2.1 Tabel Perbandingan Beberapa Cipher

Cipher Pembuat Keterangan

DES IBM Too weak to use now

Tripple DES IBM Second best choice

GOST Uni Soviet Good

RC4 Ronald Rivest Some keys are weak

RC5 Ronald Rivest Good but patented


(35)

Tabel 2.1 Tabel Perbandingan Beberapa Cipher (lanjutan)

Cipher Pembuat Keterangan

Twofish Brue Schneier Very strong, widely used

Blowfish Brue Schneier Old and slow

IDEA Massey dan Xuejia Good but patented

Pada algoritma AES, jumlah blok input, blok output, dan state adalah 128-bit. Dengan besar data 128-bit, berarti Nb = 4 (Nb = panjang blok plaintext dibagi 32 dan Nk = panjang kunci dibagi 32) yang menunjukkan panjang data tiap baris adalah 4

byte. Dengan blok input atau blok data sebesar 128-bit, key yang digunakan pada algoritma AES tidak harus mempunyai besar yang sama dengan blok input. Cipherkey

pada algoritma AES dapat menggunakan kunci dengan panjang 128-bit, 192-bit, atau 256-bit. Perbedaan panjang kunci akan mempengaruhi jumlah round yang akan diimplementasikan pada algoritma AES ini. Berikut adalah tabel yang memperlihatkan jumlah round (Nr) yang harus diimplementasikan pada masing-masing panjang kunci (Daemen & Rijmen, 1999).

Tabel 2.2 Tabel Perbandingan panjang kunci AES.

Jumlah Key (Nk) Besar Blok (Nb) Jumlah Round (Nr)

AES – 128 4 4 10

AES – 192 6 4 12

AES – 256 8 4 14

2.4.1. Proses Enkripsi AES

Langkah-langkah enkripsi untuk algoritma rijndael: a. Mengekspansi kunci (Key Expansion)

Pada algoritma Rijndael proses pertama yang dilalui adalah mengekspansi kunci. Kunci hasil ekspansi ini disebut dengan RoundKey yang kemudian digunakan pada tiap-tiap putaran transformasi.

b. Melakukan penjumlahan bit antara blok plaintext dengan kunci yang terekspansi.


(36)

c. Melakukan transformasi putaran sebanyak Nr kali sebagai berikut: 1. SubByte

Proses mensubstitusi plaintext yang telah diekspansi ke dalam S-Box.

Gambar 2.3 Ilustrasi transformasi SubByte (Daemen & Rijmen, 1999)

Tabel 2.3 S-Box Algoritma AES

| 0 1 2 3 4 5 6 7 8 9 a b c d e f ---|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|

00 |63 7c 77 7b f2 6b 6f c5 30 01 67 2b fe d7 ab 76 10 |ca 82 c9 7d fa 59 47 f0 ad d4 a2 af 9c a4 72 c0 20 |b7 fd 93 26 36 3f f7 cc 34 a5 e5 f1 71 d8 31 15 30 |04 c7 23 c3 18 96 05 9a 07 12 80 e2 eb 27 b2 75 40 |09 83 2c 1a 1b 6e 5a a0 52 3b d6 b3 29 e3 2f 84 50 |53 d1 00 ed 20 fc b1 5b 6a cb be 39 4a 4c 58 cf 60 |d0 ef aa fb 43 4d 33 85 45 f9 02 7f 50 3c 9f a8 70 |51 a3 40 8f 92 9d 38 f5 bc b6 da 21 10 ff f3 d2 80 |cd 0c 13 ec 5f 97 44 17 c4 a7 7e 3d 64 5d 19 73 90 |60 81 4f dc 22 2a 90 88 46 ee b8 14 de 5e 0b db a0 |e0 32 3a 0a 49 06 24 5c c2 d3 ac 62 91 95 e4 79 b0 |e7 c8 37 6d 8d d5 4e a9 6c 56 f4 ea 65 7a ae 08 c0 |ba 78 25 2e 1c a6 b4 c6 e8 dd 74 1f 4b bd 8b 8a d0 |70 3e b5 66 48 03 f6 0e 61 35 57 b9 86 c1 1d 9e e0 |e1 f8 98 11 69 d9 8e 94 9b 1e 87 e9 ce 55 28 df f0 |8c a1 89 0d bf e6 42 68 41 99 2d 0f b0 54 bb 16

2. Shiftrow

Rotasi yang dilakukan mulai baris kedua hingga baris ke-4 ke kanan


(37)

3. MixClolumn

State yang dihasilkan dari proses ShiftRow di-XOR-kan dengan matriks yang telah ditentukan. Matriks tersebut adalah:

02 03 01 01 01 02 03 01 01 01 02 03 03 01 01 02

Ilustrasi hasil state yang telah di-XOR dengan matriksdapat dilihat pada gambar .

Gambar 2.5 Ilustrasi transformasi MixColoumn(Daemen & Rijmen, 1999)

4. AddRoundKey

Hasil dari MixColumn di-XOR-kan dengan RoundKey masing-masing putaran. RoundKey diperoleh pada proses ekspansi kunci. Secara garis besar setiap proses dapat dilihat pada gambar 2.7.


(38)

Plaintext

KeyAddition

SubByte ShiftRow MixColoumn AddRoundKey

SubByte ShiftRow AddRoundKey

Ciphertext 9 putaran

Gambar 2.7 Alur proses enkripsi algoritma AES, key 128-bit (Stallings, 2003)

2.4.2 Proses Dekripsi AES

Langkah-langkah dekripsi untuk algoritma Rijndael:

a. Pada proses dekripsi yang diketahui hanyalah kunci, kunci yang ada diekspansi dahulu, prosesnya sama dengan enkripsi dengan tujuan agar diperoleh RoundKey.

b. Ciphertext di-XOR-kan dengan RoundKey terakhir yang diperoleh dari proses Key Schedule. Proses ini disebut Inverse of AddRoundKey.

c. Ciphertext hasil yang berasal dari proses AddRoundKey digeser baris keduanya ke kanan 1 langkah, baris ketiga 2 langkah ke kanan, dan seterusnya hingga baris keempat=3 langkah ke kanan. Proses ini disebut dengan Inverse of ShiftRow.


(39)

d. Ciphertext yang dihasilkan dari proses Invers of ShiftRow kemudian ditransformasikan ke dalam kotak Inverse S-Box yang telah ditentukan. Proses ini dinamakan inverse of SubBytes.

e. Ciphertext yang telah ditransformasikan kemudian di XOR kan dengan matriks yang telah ditentukan. Matriks tersebut adalah sebagai berikut:

0e 0b 0d 09 09 0e 0b 0d 0d 09 0e 0b 0b 0d 09 0e

Pada putaran pertama dalam proses dekripsi ini proses Inverse of MixColumn ini diabaikan.

f. Hasil dari Inverse of MixColumn ini di-XOR-kan dengan RoundKey putaran selanjutnya. Begitu seterusnya hingga putaran terakhir.

Tabel 2.4 Inverse S-BoxAlgoritma AES

| 0 1 2 3 4 5 6 7 8 9 a b c d e f ---|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|--|

00 |52 09 6a d5 30 36 a5 38 bf 40 a3 9e 81 f3 d7 fb 10 |7c e3 39 82 9b 2f ff 87 34 8e 43 44 c4 de e9 cb 20 |54 7b 94 32 a6 c2 23 3d ee 4c 95 0b 42 fa c3 4e 30 |08 2e a1 66 28 d9 24 b2 76 5b a2 49 6d 8b d1 25 40 |72 f8 f6 64 86 68 98 16 d4 a4 5c cc 5d 65 b6 92 50 |6c 70 48 50 fd ed b9 da 5e 15 46 57 a7 8d 9d 84 60 |90 d8 ab 00 8c bc d3 0a f7 e4 58 05 b8 b3 45 06 70 |d0 2c 1e 8f ca 3f 0f 02 c1 af bd 03 01 13 8a 6b 80 |3a 91 11 41 4f 67 dc ea 97 f2 cf ce f0 b4 e6 73 90 |96 ac 74 22 e7 ad 35 85 e2 f9 37 e8 1c 75 df 6e a0 |47 f1 1a 71 1d 29 c5 89 6f b7 62 0e aa 18 be 1b b0 |fc 56 3e 4b c6 d2 79 20 9a db c0 fe 78 cd 5a f4 c0 |1f dd a8 33 88 07 c7 31 b1 12 10 59 27 80 ec 5f d0 |60 51 7f a9 19 b5 4a 0d 2d e5 7a 9f 93 c9 9c ef e0 |a0 e0 3b 4d ae 2a f5 b0 c8 eb bb 3c 83 53 99 61 f0 |17 2b 04 7e ba 77 d6 26 e1 69 14 63 55 21 0c 7d


(40)

Ciphertext

AddRoundKey InvShiftRow

InvSubByte

AddRoundKey InvMixColoumn

InvShiftRow InvSubByte

KeyAddition

Plaintext 9 putaran

Gambar 2.8 Alur proses dekripsi algoritma AES, key 128-bit (Stallings, 2003)

2.5. Algoritma Kriptografi RSA

Algoritma kriptografi RSA ditemukan oleh tiga orang yang kemudian nama-nama mereka disingkat menjadi RSA. Ketiga penemu itu adalah Ron Riverst, Adi Shamir, dan Leonard Adleman. RSA dibuat di MIT pada tahun 1977 dan dipatenkan oleh MIT (Massachussets Institute of Technology) pada tahun 1983. Sejak 21 September tahun 2000, paten tersebut berakhir, sehingga saat ini semua orang dapat menggunakannya dengan bebas (Brian, 2000). RSA merupakan algoritma kriptografi asimetrik yang paling mudah untuk diimplementasikan dan dimengerti (Ariyus, 2008).

Algoritma kriptografi RSA merupakan algoritma yang termasuk dalam kategori algoritma asimetri atau algoritma kunci publik. Algoritma kriptografi RSA


(41)

didesain sesuai fungsinya sehingga kunci yang digunakan untuk enkripsi berbeda dari kunci yang digunakan untuk dekripsi. Algoritma RSA disebut kunci publik karena kunci enkripsi dapat dibuat publik yang berarti semua orang boleh mengetahuinya, namun hanya orang tertentu (si penerima pesan sekaligus pemilik kunci dekripsi yang merupakan pasangan kunci publik) yang dapat melakukan dekripsi terhadap pesan tersebut. Keamanan algoritma RSA didasarkan pada sulitnya memfaktorkan bilangan besar menjadi faktor-faktor primanya (Sulistyanto, 2004). Secara umum ada beberapa besaran-besaran yang harus diperhatikan dalam algoritma RSA, yaitu :

1. p dan q adalah bilangan prima (rahasia)

2. n = p.q (tidak rahasia)

3. (n) = (p-1)(q-1) (rahasia)

4. e (kunci enkripsi) (tidak rahasia)

5. d (kunci dekripsi) (rahasia)

6. m (plaintext) (tidak rahasia)

7. c (ciphertext) (rahasia)

2.6. Konsep Dasar Perhitungan Matematis

Dalam setiap proses pada algoritma RSA terdapat perhitungan matematis. Pada proses pembangkitan kunci dibutuhkan perhitungan untuk menentukan nilai Totient n dan perhitungan dengan algoritma Euclidean untuk menentukan nilai dua buah bilangan yang

relatif prima. Sedangkan pada proses enkripsi dan dekripsi dilakukan perhitungan menggunakan metode Fast Exponentiation.

2.6.1. Fungsi Totient Euler ϕ

Fungsi Totient Euler ϕ atau biasa disebut dengan fungsi Euler merupakan salah satu fungsi yang dipakai dalam perhitungan matematis pada algoritma RSA. Fungsi Euler

mendefinisikan ϕ (n) untuk n ≥ 1 yang menyatakan jumlah bilangan bulat positif < n

yang relatif prima dengan n (Munir, 2006). Dua bilangan bulat a dan b dikatakan relatif prima jika gcd(a,b) = 1 (pembagi bersama terbesar dari a dan b adalah 1).

Jika n = pq (p dan q bilangan prima)


(42)

Contoh : ϕ (15) = ϕ (3) ϕ (5) = 2x4 = 8 buah bilangan bulat yang relatif prima terhadap 15, yaitu 1,2,4,7,8,11,13,14.

2.6.2. Algoritma Euclidean

Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar (PBB) dari dua bilangan bulat (Munir, 2006). Algoritma ini didasarkan pada pernyataan bahwa ada dua buah bilangan bulat tak negatif yakni m dan n dimana nilai m n. Adapun tahap-tahap pada algoritma Euclidean adalah:

1. Jika n = 0 maka m adalah PBB(m, n); stop.

Jikalau tidak (yaitu n ≠ 0) lanjutkan ke langkah nomor 2. 2. Bagilah m dengan n dan misalkan sisanya adalah r.

3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang kembali ke langkah nomor 1.

Algoritma Euclidean dapat digunakan untuk mencari dua buah bilangan bulat yang relatif prima. Dua buah bilangan bulat dikatakan relatif prima jika GCD dari kedua bilangan bernilai 1.

Contoh : menghitung nilai GCD(100, 64) dan GCD(43, 19). 100 mod 64 43 mod 19

64 = 1 . 36 + 28 43 = 2 . 19 + 5 36 = 1 . 28 + 8 19 = 3 . 5 + 4 28 = 2 . 8 + 4 5 = 1 . 4 + 1 8 = 2 . 4 + 0 4 = 4 . 1 + 0

Nilai GCD(100, 64) = 4 Nilai GCD(43, 19) = 1 GCD(100, 64) ≠ 1

2.6.3. Metode Fast Exponentiation

Metode ini digunakan untuk menghitung operasi pemangkatan besar bilangan bulat modulo dengan cepat (Munir, 2006). Metode ini berdasarkan pada pernyataan berikut ini:

ab mod m = [(a mod m)(b mod m)] mod m


(43)

Untuk lebih jelasnya mengenai langkah-langkah metode fast exponentiation dapat dilihat pada contoh berikut.

Sebagai ilustrasi, untuk menghitung 1504283 mod 2077 dapat dilakukan sebagai berikut.

15041 = 1504 (mod 2077) 15042 = 163 (mod 2077)

15044 = 1632 (mod 2077) = 1645 (mod 2077) 15048 = 16452 (mod 2077) = 1771 (mod 2077) 150416 = 17712 (mod 2077) = 171 (mod 2077) 150432 = 1712 (mod 2077) = 163 (mod 2077) 150464 = 1632 (mod 2077) = 1645 (mod 2077) 1504128 = 16452 (mod 2077) = 1771 (mod 2077) 1504256 = 17712 (mod 2077) = 171 (mod 2077)

Maka,

1504283 mod 2077 = 1504(1+2+8+16+256) mod 2077

= 15041 . 15042. 15048 . 150416 . 1504256 mod 2077

= [(15041 mod 2077) . (15042 mod 2077) . (15048 mod 2077) . (150416 mod 2077). (1504256 mod 2077)] mod 2077

= [(1504 mod 2077) . (163 mod 2077) . (1771 mod 2077) . (171 mod 2077) . (171 mod 2077) ] mod 2077

= [ 1504 . 163 . 1771 . 171 . 171 ] mod 2077 = [ 66 . 1771 . 171 . 171 ] mod 2077

= [ 574 . 171 . 171 ] mod 2077 = [ 535 . 171 ] mod 2077 = [ 97 ] mod 2077 Jadi, nilai dari 1504283 mod 2077 = 97


(44)

2.7. Cara Kerja Algoritma RSA

Skema algoritma kunci publik sandi RSA terdiri dari tiga proses yaitu, proses pembentukan kunci, proses enkripsi, dan proses dekripsi (Mollin, 2002).

2.7.1. Proses Pembentukan Kunci RSA

1. Memilih dua bilangan prima yang diberi simbol sebagai p dan q.

2. Menghitung nilai n = p.q ( n p , karena jika n = p , maka nilai n = p2 dan akan mudah mendapatkan nilai n).

3. Hitung ϕ (n) = (p-1) (q-1).

4. Memilih kunci publik e yang relatif prima terhadap ϕ (n)

5. Bangkitkan kunci privat dengan persamaan �.e ≡ 1 ( o� ϕ ( )), dimana 1<�<ϕ ( )

Hasil dari algoritma di atas adalah :

a. Kunci publik adalah pasangan (e, n) b. Kunci privat adalah pasangan (d, n)

2.7.2. Proses Enkripsi RSA

1. Ambil kunci publik penerima pesan (e) ,dan modulus (n).

2. Plaintext dinyatakan dengan blok-blok m1, m2, .., sedemikian sehingga setiap blok merepresentasikan nilai [0, n-1].

3. Setiap blok mi dienkripsikan menjadi blok ci dengan rumus

Ci = mie mod n

2.7.3. Proses Dekripsi RSA

Setiap blok chiperteks Ci didekripsikan kembali menjadi blok mi dengan rumus :

mi = Cid mod n

Ketiga proses yang telah dibahas yakni pembangkitan kunci, enkripsi, dan dekripsi dapat dicontohkan sebagai berikut :


(45)

1. Pilih dua bilangan prima yakni p = 10477 dan q = 53887 2. Hitung nilai n = p.q , sehingga nilai n = 564574099

3. Hitung ϕ (n) = (p-1)(q-1), sehingga nilai ϕ (n) = (10477-1)(53887-1) adalah 564509736

4. Kemudian bangkitkan kunci publik (e), dimana nilai e relatif prima terhadap ϕ (n) Nilai GCD(ϕ (n), e) harus bernilai 1. Nilai e yang relatif prima dengan 564509736 adalah 5.

5. Hitung kunci privat (d) dengan menggunakan persamaan �.e ( o�ϕ ( ) ≡ 1.

Tabel 2.5 Tabel Proses Mencari Kunci Privat RSA (d) Nilai d Persamaan (.e) oϕ ( ) Hasil

1 (1 . 5) mod 564509736 5

2 (2 . 5) mod 5645509736 10

... ... ... 451607789 (451607789 . 5) mod 5645509736 1

Maka, nilai dari kunci privat (d) yang diperoleh adalah 451607789.

6. Fahry mengirimkan pesan kepada Rozy. Pesan yang akan dikirimkan adalah: m = SKRIPSI

atau dalam desimal (kode ASCII) adalah : 83758273808373

Kemudian nilai di atas akan dipecah-pecah menjadi blok-blok m. Nilai m haruslah masih dalam [0, 564574099-1]

m1 = 83 m5 = 80

m2 = 75 m6 = 83

m3 = 82 m7 = 73


(46)

Fahry telah mengetahui kunci publik Rozy adalah e = 5 dan n = 564574099. Fahry dapat mengenkripsikan pesan sebagai berikut :

Jadi ciphertext yang akan dihasilkan adalah: 551596049

114750479 319953838 379349296 453929505 551596049 379349296

7. Maka pesan yang telah terenkripsi tersebut akan dikirimkan kepada Rozy, yang mana Rozy sudah mempunyai kunci privat d = 451607789

8. Setelah itu ciphertext akan didekripsikan oleh Rozy sebagai berikut : m1 = 551596049 . 451607789 mod 564574099 = 83

m2 = 114750479 . 451607789 mod 564574099 = 75

m3 = 319953838 . 451607789 mod 564574099 = 82

m4 = 379349296 . 451607789 mod 564574099 = 73

m5 = 453929505 . 451607789 mod 564574099 = 80

m6 = 551596049 . 451607789 mod 564574099 = 83

m7 = 379349296 . 451607789 mod 564574099 = 73

maka akan dihasilkan kembali : m = 83758273808373

Yang dalam pengkodean ASCII dapat dibaca sebagai berikut : m = SKRIPSI

C1 = 835 mod 564574099 = 551596049

C2 = 755 mod 564574099 = 114750479

C3 = 825 mod 564574099 = 319953838

C4 = 735 mod 564574099 = 379349296

C5 = 805 mod 564574099 = 453929505

C6 = 835 mod 564574099 = 551596049


(47)

2.8. Tanda Tangan Digital (Digital Signature)

Tanda tangan digital (digital signature) adalah mekanisme otentikasi yang mengijinkan pemilik pesan membubuhkan sebuah sandi pada pesannya yang bertindak sebagai tanda tangan. Tanda tangan dibentuk dengan mengambil nilai hash

dari pesan dan mengenkripsi nilai hash pesan tersebut dengan kunci privat pemilik pesan.

Jika dalam proses pengiriman pesan saluran komunikasi yang digunakan sudah aman dan kunci hanya diketahui oleh pihak yang berhak, sekarang masalahnya siapa yang menjamin bahwa pesan yang dikirim memang berasal dari orang yang berhak. Atau bagaimana meyakinkan pihak yang akan menerima kiriman data bahwa memang benar-benar berasal dari pengirim aslinya. Untuk mengatasi validitas pengiriman tersebutlah digunakan teknologi tanda tangan digital.

Tanda tangan digital berfungsi untuk melakukan validasi terhadap setiap data yang dikirim. Dalam pengiriman data, walaupun saluran komunikasi yang digunakan sudah sangat aman, tentu saja perlu diperhatikan validitasnya. Validitas tersebut berkaitan dengan pertanyaan apakah data yang sampai ke penerima dalam keadaan utuh dengan aslinya saat dikirim tanpa sedikitpun adanya gangguan-gangguan dari pihak lain. Teknik yang umum digunakan untuk membentuk tanda-tangan digital adalah dengan fungsi hash dan melibatkan algoritma kriptografi kunci-publik (Munir, 2004). Fungsi tersebut akan menghasilkan sebuah kombinasi karakter yang unik yang disebut dengan message digest.

Keunikannya adalah jika di tengah perjalanan data mengalami modifikasi, penghapusan maupun di sadap diam-diam oleh hacker walaupun hanya 1 karakter saja, maka message digest yang berada si penerima akan berbeda dengan yang dikirimkan pada awalnya. Keunikan lainnya adalah message digest tersebut tidak bisa dikembalikan lagi ke dalam bentuk awal seperti sebelum disentuh dengan fungsi algoritma, sehingga disebutlah sebagai one-way hash. Berikut skema proses tanda tangan digital dapat dilihat pada gambar 2.9.


(48)

Gambar 2.9 Skema proses tanda tangan digital (Munir, 2005)

Mekanisme kerja untuk menghasilkan tanda tangan digital tersebut adalah sebagai berikut:

1. Proses hashing algorithm akan mengambil nilai hash dari pesan yang akan dikirim dan menghasilkan message digest. Kemudian message digest tersebut dienkripsi mengunakan kunci privat dan menghasilkan tanda tangan digital. 2. Kemudian tanda tangan digital tersebut dikirimkan bersama isi pesan tersebut. 3. Sesampainya di penerima, akan dilakukan proses hashing algorithm terhadap pesan tersebut seperti yang dilakukan saat pengiriman. Dari proses tersebut menghasilkan message digest sekunder (MD‟).

4. Secara paralel digital signature yang diterima tadi langsung didekripsi oleh kunci publik. Hasil dekripsi tersebut akan memunculkan message digest yang serupa seperti message digest sebelum dienkripsi oleh pengirim pesan.

Message digest disebut message digest primer (MD).

5. Proses selanjutnya adalah membandingkan message digest primer dengan

message digest sekunder. Jika saja saat diperjalanan ada hacker yang mengubah isi pesan, maka message digest sekunder akan berbeda dengan


(49)

message digest primer. Segera mekanisme tanda tangan digital tersebut akan menyampaikan peringatan bahwa telah terjadi pengubahan isi pesan.

SHA-1 menerima masukkan berupa pesan dengan ukuran maksimum adalah 264-bit dan menghasilkan message digest yang panjangnya 160 bit, lebih panjang dari yang dihasilkan oleh MD5 yaitu 128-bit. Langkah-langkah proses SHA-1 secara garis besar adalah sebagai berikut :

1. Penambahan bit-bit pengganjal (padding bits) 2. Penambahan nilai panjang pesan semula 3. Inisialisasi penyangga (buffer) MD

4. Pengelolaan pesan dalam blok berukuran 512 bit.

Mula-mula pesan diberi tambahan untuk membuat panjangnya menjadi kelipatan 512-bit (L x 512). Jumlah bit data asal adalah K bit. Tambahkan bit „1‟

kemudian tambahkan bit „0‟ secukupnya sampai 64-bit kurangnya dari kelipatan 512 (512 - 64 = 448), yang disebut juga sebagai kongruen dengan 448 (mod 512). Akhirnya tambahkan 64-bit yang menyatakan panjang pesan sebelum diberi tambahan. Pesan dibagi-bagi menjadi blok-blok berukuran 512-bit dan setiap blok diolah. Keluaran setiap blok digabungkan dengan keluaran blok berikutnya. Sehingga akhirnya diperoleh digest. Pengubahan satu huruf dapat menghasilkan cipher yang jauh berbeda.

Contoh enkripsi SHA:

Plaintext : “I heard you crying loud all the way accross the town”

Ciphertext : eaeb1b86f6e41c1b40d7c288f6d7fbff3f948a6e Menghilangkan huruf “d” pada kata “heard”

Plaintext: “I hear you crying loud all the way accross the town” akan

menghasilkan:

Ciphertext : d9aee3365c0ef380f4021fd618b4d4ea3ad9e5a4

Dari hasil ciphertext terakhir yang diperoleh terdapat perbedaan yang berarti pesan sudah diubah.


(50)

2.9. Penelitian Terdahulu

Terdapat beberapa penelitian terdahulu yang berkaitan dengan penggunaan kriptografi sebagai metode pengamanan sistem pemungutan suara elektronik (e-voting). Beberapa penelitian terdahulu dalam penelitian ini akan dijadikan sebagai bahan acuan agar peneliti dapat memperoleh informasi mengenai topik pembahasan penelitian yang akan dilakukan. Pada tahun 2012, Polin melakukan penelitian terkait keamanan informasi pada e-voting secara online dengan menggunakan algoritma kriptografi kunci publik. Algoritma kunci publik yang digunakan Polin adalah algoritma RSA yang memiliki kelebihan dalam tingkat kerumitan memfaktorkan bilangan enkripsi, namun tingkat kerumitan yang digunakan Polin masih relatif rendah dikarenakan keterbatasan bahasa pemrograman yang digunakannya untuk membangun sistem e-voting. Dyah Ayu pada tahun 2014 menerapkan digital signature pada sistem

e-voting dengan arsitektur rancangan sistem yang lebih kompleks, namun pembatasan masalah yang dibahas Dyah Ayu hanya pada otentikasi keaslian pertukaran data dan informasi yang digunakan. Di tahun yang sama penggunaan kombinasi algoritma kunci simetrik dan asimetrik (publik) diajukan oleh Rojali. Kunci simetrik yang digunakan Rojali adalah algoritma AES, sedangkan kunci asimetrik yang digunakan adalah RSA. Kombinasi keduanya mampu melindungi data dan informasi dengan baik, serta memiliki ketahanan terhadap berbagai serangan keamanan informasi. Namun, terkait penggunaan algoritma yang memiliki tingkat kerumitan dalam memfaktorkan bilangan yang digunakan oleh Rojali masih relatif rendah, mengakibatkan kemanan sistem e-voting yang dibangun belum optimal. Hal ini diakui Rojali yang didukung pernyataan dari beberapa ahli bahwa untuk menerapkan keamanan informasi yang efektif dengan algoritma RSA digunakan kunci dengan panjang minimal 1024-bit.


(51)

BAB III

ANALISIS DAN PERANCANGAN

Bab ini menjelaskan analisis keamanan informasi sistem e-voting dengan menerapkan kombinasi algoritma AES dan RSA, analisis kebutuhan sistem e-voting yang akan dibangun, serta perancangannya. Dan tindakan yang dilakukan pada tahap perancangan adalah mengubah model analisis ke model perancangan.

3.1. Analisis dan Perancangan Keamanan Informasi Sistem e-Voting

Dalam merancang keamanan informasi sistem e-voting ini, penulis menerapkan kombinasi algoritma AES dan RSA, serta penggunaan tanda tangan digital untuk otentikasi keaslian informasi yang dikirimkan. Bentuk perancangan keamanan informasi sistem e-voting yang diajukan ini dapat dilihat pada gambar 3.1. yang menunjukkan arsitektur umum dari rangkaian langkah yang dilakukan untuk mengamankan data dan informasi pada setiap pengguna sistem e-voting dengan menggunakan kombinasi algoritma AES dan RSA. Rangkaian langkah yang dimaksud dimulai dari menerapkan algoritma RSA untuk mengenkripsi data jumlah suara berdasarkan pemilihan oleh voter yang disimpan dalam database TPS, kemudian

database dienkripsi kembali oleh operator di masing - masing TPS dengan menggunakan algoritma AES untuk mengamankannya dari pihak - pihak yang tidak bertanggung jawab yang ingin menyalahgunakannya, untuk lebih menjamin keamanannya diterapkan kembali algoritma RSA untuk mengenkripsi kunci yang digunakan pada algoritma AES yang tujuannya adalah apabila kunci algoritma AES ini diintersepsi dan diambil oleh pihak selain administrator yang memiliki wewenang atas hal itu, pihak tersebut masih harus membuka kunci dari algoritma AES tersebut sebelum dapat menggunakannya untuk membuka database yang telah dienkripsi, kemudian tanda tangan digital juga disisipkan pada database dan kunci algoritma AES untuk mengetahui otentikasi keaslian sumbernya, apabila semua berkas database


(52)

(53)

dan kunci algoritma AES telah diterima oleh administrator di KPU selaku penerima yang berhak, berkas tersebut diotentikasi keaslian sumbernya dengan memverifikasi tanda tangan digital, lalu membukanya dengan menggunakan algoritma RSA untuk mendekripsi kunci dari algoritma AES, selanjutnya kunci algoritma AES yang telah didekripsi ini digunakan kembali untuk mendekripsi berkas database yang memuat sejumlah informasi mengenai hasil pelaksanaan pemungutan suara di masing - masing TPS. Setiap tahapan proses yang dilakukan akan dijelaskan dengan lebih terperinci pada bagian selanjutnya.

Data jumlah suara Enkripsi Database Ciphertex data jumlah suara Ciphertext Database Kunci Algoritma AES Penambahan dan penghitungan jumlah

suara Ciphertext kunci

algoritma AES Signed Ciphertext Database Signed Ciphertext kunci algoritma AES Kunci Algoritma RSA

Digital signature dengan kunci privat RSA dan hash

SHA-1

Digital signature dengan kunci privat RSA dan

hash SHA-1

Ciphertext

Database

Enkripsi

Ciphertext kunci algoritma AES Kunci Algoritma RSA Kunci Algoritma RSA Kunci Algoritma AES Database Database Server

Verifikasi digital signature dengan kunci publik RSA dan hash

SHA-1 Enkripsi dekripsi VOTER OPERATOR ADMINISTRATOR Dekripsi dekripsi

Gambar 3.1. Arsitektur umum perancangan keamanan informasi sistem e-voting

3.1.1. Enkripsi Data Jumlah Suara menggunakan Algoritma RSA

Data jumlah suara adalah data yang didapat dari perolehan suara setiap kandidat pada saat pemungutan suara berlangsung. Data jumlah suara menjadi penting karena


(1)

Menezes, A.J. 1997. Handbook of Applied Cryptography.

CRC Press.

Mollin, R. A., 2002. RSA and Public Key Cryptography.

Chapman & Hall/CRC

.

Munir, R. 2004. Bahan Kuliah IF5054Kriptografi Departemen Teknik Informatika

ITB. (

Online

)

http://informatika.stei.itb.ac.id/~rinaldi.munir/Kriptografi/Steganografi%20dan

%20Watermarking.pdf (06 September 2014).

Munir, R. 2005. Penggunaan Tanda Tangan Digital untuk Menjaga Integritas

Berkas Perangkat Lunak

.

(

Online)

http://journal.uii.ac.id/index.php/Snati/article/viewFile/1364/1145

(07 September 2014).

Munir, R. 2006. Kriptografi. Informatika Bandung : Bandunng.

Nechvatal J.

et al

. 2000. Report on the Development of the Advanced Encryption

Standard (AES).

Computer Security Division Information Technology

Laboratory National Institute of Standards and Technology Administration

U.S. Department of Commerce

.

Pardede, P.S.P. 2012. Analisis dan Perancangan Keamanan Informasi Pada

Electronic

Voting

Menggunakan Algoritma Kriptografi Kunci Publik. Skripsi. Universitas

Sumatera Utara.

Permadi, R.B. 2014. Sistem

E-Voting

Menggunakan Protokol

Two Central Facilities

dengan Menggabungkan Algoritma AES dan RSA sebagai Kombinasi

Keamanan. Skripsi. Universitas Pendidikan Indonesia.

Priyono, E & Dihan, F.N. 2010. E-Voting : Argensi Transparansi dan Akuntabilitas.

Seminar Nasional Informatika

UPN Yogyakarta: hal. 55-62.

Rokhman, A. (2011). Prospek dan Tantangan Penerapan e-Voting di Indonesia.

Seminar Nasional Peran Negara dan Masyarakat dalam Pembangunan

Demokrasi dan Masyarakat Madani di Indonesia

7 Juli 2011

.

Jakarta:

Universitas Terbuka.

Schneier, B. 1996. Applied Cryptography, Second Edition: Protocols, Algorithms, and

Source Code in

C.

John Willey & Sons, Inc.

Stallings, W. 2003. Cryptography and Network Security Principles and Practice. Third

Edition. New Jersey: Pearson Education.


(2)

Sulistyanto, H. (2004) Autentikasi dalam Basis Data Jaringan Menggunakan

Kriptosistem Kunci Publik RSA

.

EMITOR,

Jurnal Teknik Elektro dan

Komputer,

Vol.4 (No.1). pp. 39-48.

Wisnu, D.A.M.G. 2014. Rancang Bangun Sistem

E-Voting

dengan Menerapkan

Hash

dan

Digital Signature

untuk Verifikasi Data Hasil

Voting

. Skripsi. Universitas

Brawijaya.

Zafar, Ch.N. & Pilkzaer, A. 2007.

E-voting in Pakistan

. Master Thesis, Departement

of Business Administration and Social Sciences, Lulea University of

Technology

Zamora, C.G., Henriquez, F.R., & Arroyo, D.O. 2005. SELES: An e-voting system for

medium scale online elections.

Proceedings of the 6th Mexican International

Confrence on Computer Science.


(3)

RSA.java

package voter; import java.io.* import java.math.*; import java.security.*; import java.util.*;

import org.apache.commons.io.FileUtils;

import sun.security.pkcs11.wrapper.Constants; public class RSA {

private BigInteger n, d, e;

String newLine = System.getProperty("line.separator"); private int bitlen = 1024;

/** Create an instance that can both encrypt and decrypt. */ public RSA(int bits) {

bitlen = bits;

SecureRandom r = new SecureRandom();

BigInteger p = new BigInteger(bitlen/2 , 100, r); BigInteger q = new BigInteger(bitlen/2 , 100, r); n = p.multiply(q);

BigInteger m = (p.subtract(BigInteger.ONE)).multiply(q .subtract(BigInteger.ONE));

do {

e = new BigInteger(bitlen, r); }while( (e.compareTo(m) != 1) ||

(e.gcd(m).compareTo(BigInteger.valueOf(1)) != 0));

d = e.modInverse(m); }

/** Encrypt the given plaintext message. */

public synchronized String encrypt(String message) {

PrintingTask.print("Modulus : " + newLine + n + newLine + newLine + "Private Key : " + newLine + d);

return (new BigInteger(message.getBytes())).modPow(e, n).toString();

}

public synchronized BigInteger encryptWithKey(BigInteger message) { BigInteger pubKey = null;

BigInteger modulus = null; try {

File dist = new File("ext/Dist.txt");

pubKey = new BigInteger(FileUtils.readLines(dist).get(0)); modulus = new BigInteger(FileUtils.readLines(dist).get(2)); } catch (Exception ex) {

Logger.getLogger(RSA.class.getName()).log(Level.SEVERE, null, ex);

}

//return new String((new

BigInteger("test".getBytes())).modPow(pubKey, modulus).toByteArray());

return message.modPow(pubKey, modulus); }


(4)

/** Encrypt the given plaintext message. */

public synchronized BigInteger encrypt(BigInteger message) { PrintingTask.print("Modulus : " + newLine + n + newLine + newLine + "Private Key : " + newLine + d);

return message.modPow(e, n); }

/** Decrypt the given ciphertext message. */

public synchronized String decrypt(String message, BigInteger priKey, BigInteger modulus) {

return new String((new BigInteger(message)).modPow(priKey, modulus).toByteArray());

}

public synchronized BigInteger decryptWithKey(BigInteger message) { BigInteger priKey = null;

BigInteger modulus = null; try {

File dist = new File("ext/Dist.txt");

priKey = new BigInteger(FileUtils.readLines(dist).get(1)); modulus = new BigInteger(FileUtils.readLines(dist).get(2)); } catch (Exception ex) {

Logger.getLogger(RSA.class.getName()).log(Level.SEVERE, null, ex);

}

return message.modPow(priKey, modulus); }

/** Decrypt the given ciphertext message. */

public synchronized BigInteger decrypt(BigInteger message, BigInteger priKey, BigInteger modulus) {

return message.modPow(priKey, modulus); }

public synchronized BigInteger decrypt(BigInteger message) { System.out.println("Ini priKey : " +d );

System.out.println("Ini Mod : " +n ); return message.modPow(d, n);

}

public static void main(String[] args) { }

}

AES.java package TPS; import java.io.*; import java.math.*; import java.security.*; import java.util.*; import javax.crypto.*;

public class AES {

Cipher ecipher; Cipher dcipher;


(5)

{

// Create an 8-byte initialization vector byte[] iv = new byte[]

{

0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f

};

AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv);

try {

ecipher =

Cipher.getInstance("AES/CBC/PKCS5Padding"); dcipher =

Cipher.getInstance("AES/CBC/PKCS5Padding");

// CBC requires an initialization vector ecipher.init(Cipher.ENCRYPT_MODE, key, paramSpec);

dcipher.init(Cipher.DECRYPT_MODE, key, paramSpec);

}

catch (Exception e) {

e.printStackTrace(); }

}

// Buffer used to transport the bytes from one stream to another byte[] buf = new byte[1024];

public static SecretKey generateAESKey() throws NoSuchAlgorithmException

{

KeyGenerator keyGenerator = KeyGenerator.getInstance("AES"); keyGenerator.init(128); // 128 default; 192 and 256 also possible

SecretKey key = keyGenerator.generateKey(); WriteKeytoFile(key);

return key; }

public static void WriteKeytoFile(SecretKey key) { FileWriter fileWriter = null;

byte[] encodedKey = key.getEncoded(); try {

String strKey = new BigInteger(encodedKey).toString(16); File file = new

File(TPSPanel.TPS+TPSPanel.Distribute+"key"); fileWriter = new FileWriter(file); fileWriter.write(strKey);

}

catch(Exception e) { e.printStackTrace(); }finally {

try {

fileWriter.close(); } catch (IOException ex) {


(6)

ex.printStackTrace(); }

} }

public static String readKeyFile( String file ) throws IOException {

BufferedReader reader = new BufferedReader( new FileReader (file));

String line = null;

StringBuilder stringBuilder = new StringBuilder(); while( ( line = reader.readLine() ) != null ) { stringBuilder.append( line );

}

String strKey = stringBuilder.toString(); return strKey;

}

public static SecretKey LoadKey(String strKey) {

byte[] encoded = new BigInteger(strKey, 16).toByteArray(); SecretKey key = new SecretKeySpec(encoded, "AES");

return key; }

public void encrypt(InputStream in, OutputStream out) {

try {

out = new CipherOutputStream(out, ecipher); int numRead = 0;

while ((numRead = in.read(buf)) >= 0) { out.write(buf, 0, numRead); }

out.close(); in.close(); }

catch (java.io.IOException e) { }

}

public void decrypt(InputStream in, OutputStream out) {

try {

in = new CipherInputStream(in, dcipher); int numRead = 0;

while ((numRead = in.read(buf)) >= 0) {

out.write(buf, 0, numRead); }

out.close(); }

catch (java.io.IOException e) {

} }

public static void main(String args[]) {

} }