PENYANDIAN DATA TEKS DENGAN ALGORITMA ELGAMAL
DAN ALGORITMA KOMPRESI DATA DENGAN
ALGORITMA
ELIAS GAMMA CODESKRIPSI
WIWIN AGUSTINI LUBIS
131421061
PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
PENYANDIAN DATA TEKS DENGAN ALGORITMA ELGAMAL DAN ALGORITMA KOMPRESI DATA DENGAN ALGORITMA
ELIAS GAMMA CODE
SKRIPSI
Diajukan untuk melengkapi tugas akhir dan memenuhi syarat memperoleh ijazah Sarjana Ilmu Komputer
Oleh :
WIWIN AGUSTINI LUBIS 131421061
PROGRAM STUDI EKSTENSI S1 ILMU KOMPUTER FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA MEDAN
PERSETUJUAN
Judul :PENYANDIAN DATA TEKS DENGAN ALGORITMA
ELGAMAL DAN ALGORITMA KOMPRESI DATA DENGAN ALGORITMA ELIAS GAMMA CODE.
Kategori : SKRIPSI
Nama : WIWIN AGUSTINI LUBIS
Nomor Induk Mahasiswa : 131421061
Program Studi : EKSTENSI S1 ILMU KOMPUTER Departemen : ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI UNIVERSITAS SUMATERA UTARA
Diluluskan di
Medan, Agustus 2015 Komisi Pembimbing :
Pembimbing 2 Pembimbing 1
Handrizal, S.Si, M.Comp. Sc Dr. Poltak Sihombing, M.Kom
NIP.- NIP. 19620317 199103 1 001
Diketahui/Disetujui oleh
Program Studi S1 Ilmu Komputer Ketua,
PERNYATAAN
PENYANDIAN DATA TEKS DENGAN ALGORITMA ELGAMAL DAN ALGORITMA KOMPRESI DATA DENGAN ALGORITMA
ELIAS GAMMA CODE
SKRIPSI
Saya menyatakan bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing telah disebutkan sumbernya.
Medan,
PENGHARGAAN
Alhamdulillah segala puji dan syukur atas nikmat yang luas kepada Allah Yang Maha Esa sehingga penulis dapat menyelesaikan penyusunan skripsi ini, sebagai syarat untuk memperoleh gelar Sarjana Komputer, pada Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
Ucapan terima kasih Penulis sampaikan kepada semua pihak yang telah membantu Penulis dalam menyelesaikan skripsi ini baik secara langsung maupun tidak langsung, teristimewa orangtua penulis yang sangat mengasihi dan menyayangi penulis dan memberi dukungan tiada henti. Pada kesempatan ini penulis ingin mengucapkan terima kasih yang sebesar-besarnya kepada:
1. Bapak Prof. Drs. Subhilhar, M.A., Ph.D selaku Pejabat Rektor Universitas Sumatera Utara.
2. Bapak Prof. Dr. Muhammad Zarlis selaku Dekan Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
3. Bapak Dr. Poltak Sihombing, M.Kom selaku Ketua Program Studi S1 Ilmu Komputer Universitas Sumatera Utara dan sebagai Dosen Pembimbing I yang telah memberikan arahan, kritik dan saran serta motivasi kepada penulis dalam pengerjaan skripsi ini.
4. Ibu Maya Silvi Lydia, B.Sc, M.Sc selaku Sekretaris Program Studi S1 Ilmu Komputer Universitas Sumatera Utara dan sebagai Pembanding I yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.
6. Ibu Dian Rachmawati, M.Kom selaku Dosen Pembanding II yang telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.
7. Semua dosen dan semua pegawai di Program Studi S1 Ilmu Komputer Fakultas Ilmu Komputer dan Teknologi Informasi Universitas Sumatera Utara.
8. Keluarga besar penulis, Orang tua yang senantiasa mendoakan dan mendukung serta kakak dan adik tersayang Dona, Nova, Nanda, Riki.
9. Teman-teman seperjuangan mahasiswa Ekstensi S1-Ilmu Komputer stambuk 2013, Fera, Tiany, Nurul, Melsa, Sabrina, Ade, Rio, Ifar, Ryan, Adly, Satrio, Tika, Lely, Zumik, Yusi, Ridha, Mhd.Iqbal, dan virsw2 Dan adik-adik junior yang telah memberikan semangat dan menjadi teman diskusi penulis dalam menyelesaikan skripsi ini.
10. Semua pihak yang terlibat langsung ataupun tidak langsung yang tidak dapat penulis ucapkan satu per satu yang telah membantu penyelesaian skripsi ini.
Penulis menyadari bahwa skripsi ini masih terdapat kekurangan. Oleh karena itu, kepada pembaca agar kiranya memberikan kritik dan saran yang bersifat membangun demi kesempurnaan skripsi ini. Sehingga dapat bermanfaat bagi kita semuanya.
Medan, Agustus 2015 Penulis,
ABSTRAK
Dalam komunikasi data, aspek keamanan, kerahasiaan dan efisiensi penyimpanan data sangat diperlukan. Untuk menjaga keamanan dan kerahasiaan data tersebut salah satu teknik yang digunakan adalah ElGamal. Kekuatan algoritma ini terletak pada sulitnya menghitung logaritma diskrit pada grup bilangan bulat prima yang di dalamnya dilakukan operasi perkalian. Algoritma ElGamal termasuk Algoritma Kunci Asimetris. Disamping usaha pengamanan, sekarang ini orang juga berusaha melakukan proses pengecilan ukuran suatu data (kompresi suatu data). Elias Gamma Code merupakan salah satu algoritma kompresi yang menggunakan tabel Gamma Code. Dalam penelitian ini, penulis menggabungan antara Algoritma ElGamal untuk melakukan penyandian data dan Algoritma Elias Gamma Code untuk kompresi data. Plainteks pertama kali dienkripsikan menggunakan algoritma ElGamal, kemudian hasil enkripsi dari Elgamal tersebut di kompresi dengan menggunakan Elias Gamma Code. Pengujian bilangan prima menggunakan Metode Fermat. Implementasi sistem menggunakan bahasa pemrograman Java dengan software Netbeans versi 7.0.1. Hasil penelitian menunjukkan bahwa metode ElGamal dapat menjaga keamanan, dan kerahasiaan data. Metode Elias Gamma Code cukup efisien dalam proses penyimpanan data dengan rasio kompresi rata-rata sebesar 73,04%.
THE TEXT DATA ENCRYPTION USING ELGAMAL ALGORITHM AND COMPRESSION DATA ALGORITHM BY ELIAS GAMMA CODE ALGORTHM
ABSTRACT
In data communications, aspects of security, confidentiality and efficiency of data storage are indispensable. Maintain the security and confidentiality of data is one of the techniques used is the ElGamal. This algorithm strength lies in the difficulty of calculating discrete logarithms in prime integers group which the multiplication operation performed. ElGamal algorithms including Asymmetric Key Algorithm. Besides the security business, today people are also trying to make the process of downsizing the size of the data (the data compression). Elias Gamma Code is a compression algorithm that uses the Gamma table Code. In this study, the authors to combine between ElGamal algorithm to perform data encryption and Elias Gamma Code algorithm for data compression. Plaintext was first encrypted using ElGamal algorithm, then the result of the ElGamal encryption is compressed by using Elias Gamma Code. The tests were using the method of Fermat primes. Implementation of the system was using the Java programming language with Netbeans software version 7.0.1. The results showed that ElGamal method can maintain the security and confidentiality of data. Elias Gamma Code method is quite efficient in the process of data storage with an average ratio of compression 73,04%.
DAFTAR ISI
1.3. Ruang Lingkup Penelitian 3
1.4. Tujuan Penelitian 3
1.5. Manfaat Penelitian 4
1.6. Penelitian Sebelumnya 4
1.7. Metodologi Penelitian 5
1.8. Sistematika Penulisan 6
BAB 2. LANDASAN TEORI 8
2.1. Kriptografi 8
2.1.1. Defenisi Kriptografi 8
2.1.2. Sejarah Kriptografi 9
2.1.3. Tujuan Kriptografi 10
2.1.4. Terminologi dan Konsep Dasar Kriptografi 11
2.1.5. Jenis Kriptografi 13
2.2. Algoritma ElGamal 16
2.2.1. Sejarah Algoritma ElGamal 16
2.3. Landasan Matematika Algoritma ElGamal 17
2.3.1. Modulo Exponensial 17
2.3.2. Algoritma Euclidean 18
2.3.3. Inversi Modulo 19
2.3.4. Bilangan Prima 20
2.3.5. Bilangan Relatif Prima 20
2.3.6. Elemen Primitif 20
β.γ.7. Fermat’s Little Theorem 21
2.4. Prinsip Kerja Algoritma ElGamal 22
2.4.2. Proses Enkripsi 23
2.4.3. Proses Dekripsi 24
2.5. Defenisi Kompresi 24
2.5.1. Penggolongan Algoritma Kompresi 25
2.5.2. Algoritma Elias Gamma Code 25
2.5.2.1 Konsep Kompresi Data 27 2.5.3. Pengukuran Kinerja Kompresi Data 30
BAB 3. ANALISIS DAN PERANCANGAN SISTEM 31
3.1. Analisis 31
3.1.1. Analisis Masalah 31
3.1.2. Analisis Kebutuhan 32
3.1.2.1. Kebutuhan Fungsional 33 3.1.2.2. Kebutuhan Non Fungsional 33
3.2. Pemodelan Sistem 34
3.2.1. Use-Case Diagram 34
3.2.2. Activity Diagram 35
3.2.2.1. Activity Diagram Proses Pembangkit Kunci 35 3.2.2.2. Activity Diagram Proses Enkripsi ElGamal 36 3.2.2.3. Activity Diagram Proses Kompresi Elias Gamma Code 36 3.2.2.4. Activity Diagram Proses Dekompresi Elias Gamma Code 37 3.2.2.5. Activity Diagram Proses Dekripsi ElGamal 38
3.2.2.6. Sequence Diagram 38
3.3. Perancangan Sistem 39
3.3.1. Pembuatan Algoritma Program 39
3.3.2. Alur Proses Sistem Secara Umum 40
3.3.3. Alur Proses Pembangkit Kunci 41
3.3.4. Alur Proses Enkripsi pada ElGamal 42 3.3.5. Alur Proses Dekripsi pada ElGamal 44 3.3.6. Alur Proses Kompresi Elias Gamma Code 46 3.4. Perancangan Antarmuka (Interface) 49
3.4.1. Rancangan Halaman Utama 49
3.4.2. Rancangan HalamanKey Generator 50
3.4.3. Rancangan Halaman Enkripsi 51
3.4.4. Rancangan Halaman Dekripsi 53
3.4.5. Rancangan Halaman Kompresi 54
3.4.6. Rancangan Halaman Dekompresi 55
BAB 4. IMPLEMENTASI DAN PENGUJIAN SISTEM 56
4.1. Implementasi Sistem 56
4.1.1. Form Halaman Utama 57
4.1.2. Form Key Generator 57
4.1.4. Form Dekripsi 59
4.1.5. Form Kompresi 59
4.1.6. Form Dekompresi 60
4.2. Pengujian Sistem 61
4.2.1. Pengujian Proses Key Generator 61
4.2.2. Pengujian Proses Enkripsi 63
4.2.3. Pengujian Proses Kompresi 65
4.2.4. Pengujian Proses Dekompresi 66
4.2.5. Pengujian Proses Dekripsi 68
4.2.6. Hasil Pengujian 70
4.2.6.1 Hasil Pengujian String Homogen dan Heterogen 76
Kompleksitas Waktu Algoritma PROMETHEE 86
BAB 5. KESIMPULAN DAN SARAN 77
5.1. Kesimpulan 77
5.2. Saran 78
DAFTAR TABEL
halaman Tabel 2.1. Penyelesaian contoh soal Inversi Modulo 19 Tabel 2.2. Perhitungan α2 mod β579 dan α1289 mod 2579 21
Tabel 2.3. Tabel Elias Gamma Code 26
Tabel 2.4. String yang Belum Dikompresi 28
Tabel 2.5. String yang Sudah Dikompresi Dengan Elias Gamma Code 29 Tabel 4.1. Hasil Uji Coba untuk 9 (sembilan) percobaan 75
DAFTAR GAMBAR
halaman
Gambar 2.1. Urutan proses kriptografi 9
Gambar 2.2. Mesin enigma yang digunakan tentara Jerman 10 Gambar 2.3. Perbandingan plainteks dan cipherteks 12 Gambar 2.4. Hubungan antara kriptologi, kriptografi dan kriptografi 13
Gambar 2.5. Skema Algoritma Simetri 14
Gambar 2.6 Skema Algoritma Asimetri 15
Gambar 3.1 Diagram Ishikawa Masalah Penelitian 32
Gambar 3.2 Use-Case Diagram Pada Sistem 34
Gambar 3.3. Activity Diagram Proses Pembangkit Kunci 35 Gambar 3.4. Activity Diagram Proses Enkripsi Pesan 36 Gambar 3.5 Activity Diagram Proses Kompresi Elias Gamma Code 36 Gambar 3.6. Activity Diagram Proses Dekompresi Elias Gamma Code 37 Gambar 3.7. Activity Diagram Proses Dekripsi Pesan 38
Gambar 3.8. Sequence diagram sistem 39
Gambar 3.9. Flowchart gambaran umum sistem 40
Gambar 3.10. Flowchart Alur proses pembangkitan kunci 42 Gambar 3.11. Flowchart Alur proses enkripsi ElGamal 44 Gambar 3.12. Flowchart Alur proses dekripsi ElGamal 46 Gambar 3.13. Flowchart Alur proses kompresi Elias Gamma Code 48
Gambar 3.14. Rancangan Halaman Utama 50
Gambar 3.15 Rancangan Key Generator 51
Gambar 3.16 Rancangan Halaman Enrkipsi 52
Gambar 3.17 Rancangan Halaman Dekripsi 53
Gambar 3.18 Rancangan Halaman Kompresi 54
Gambar 3.19 Rancangan Halaman Dekompresi 55
Gambar 4.1. Halaman utama 57
Gambar 4.7. Hasil nilai kunci publik dan kunci privat 61 Gambar 4.8. Save File Dialog untuk menyimpan kunci publik 62 Gambar 4.9. Save File Dialog untuk menyimpan kunci privat 62
Gambar 4.10. Form nilai kunci publik 63
Gambar 4.11. Open File Dialog untuk input file teks 63
Gambar 4.12 Form Hasil Enkripsi 64
Gambar 4.14 Open File Dialog input file teks 65 Gambar 4.15 Save File Dialog hasil kompresi 66
Gambar 4.16 Message Dialog hasil kompresi 66
Gambar 4.17 Open File Dialog input file teks 67 Gambar 4.18 Save File Dialog hasil dekompresi 67 Gambar 4.19 Message Dialog hasil dekompresi 68
Gambar 4.20 Form nilai kunci privat 68
Gambar 4.21 Open File Dialog untuk input file teks 69
Gambar 4.22 Form hasil dekripsi 69
Gambar 4.23 Save File Dialog hasil dekripsi 70
Gambar 4.24 Hasil Uji Coba ke-1 70
Gambar 4.25 Hasil Uji Coba ke-2 71
Gambar 4.26 Hasil Uji Coba ke-3 71
Gambar 4.27 Hasil Uji Coba ke-4 72
Gambar 4.28 Hasil Uji Coba ke-5 72
Gambar 4.29 Hasil Uji Coba ke-6 73
Gambar 4.30 Hasil Uji Coba ke-7 73
Gambar 4.31 Hasil Uji Coba ke-8 74
Gambar 4.32 Hasil Uji Coba ke-9 74
ABSTRAK
Dalam komunikasi data, aspek keamanan, kerahasiaan dan efisiensi penyimpanan data sangat diperlukan. Untuk menjaga keamanan dan kerahasiaan data tersebut salah satu teknik yang digunakan adalah ElGamal. Kekuatan algoritma ini terletak pada sulitnya menghitung logaritma diskrit pada grup bilangan bulat prima yang di dalamnya dilakukan operasi perkalian. Algoritma ElGamal termasuk Algoritma Kunci Asimetris. Disamping usaha pengamanan, sekarang ini orang juga berusaha melakukan proses pengecilan ukuran suatu data (kompresi suatu data). Elias Gamma Code merupakan salah satu algoritma kompresi yang menggunakan tabel Gamma Code. Dalam penelitian ini, penulis menggabungan antara Algoritma ElGamal untuk melakukan penyandian data dan Algoritma Elias Gamma Code untuk kompresi data. Plainteks pertama kali dienkripsikan menggunakan algoritma ElGamal, kemudian hasil enkripsi dari Elgamal tersebut di kompresi dengan menggunakan Elias Gamma Code. Pengujian bilangan prima menggunakan Metode Fermat. Implementasi sistem menggunakan bahasa pemrograman Java dengan software Netbeans versi 7.0.1. Hasil penelitian menunjukkan bahwa metode ElGamal dapat menjaga keamanan, dan kerahasiaan data. Metode Elias Gamma Code cukup efisien dalam proses penyimpanan data dengan rasio kompresi rata-rata sebesar 73,04%.
THE TEXT DATA ENCRYPTION USING ELGAMAL ALGORITHM AND COMPRESSION DATA ALGORITHM BY ELIAS GAMMA CODE ALGORTHM
ABSTRACT
In data communications, aspects of security, confidentiality and efficiency of data storage are indispensable. Maintain the security and confidentiality of data is one of the techniques used is the ElGamal. This algorithm strength lies in the difficulty of calculating discrete logarithms in prime integers group which the multiplication operation performed. ElGamal algorithms including Asymmetric Key Algorithm. Besides the security business, today people are also trying to make the process of downsizing the size of the data (the data compression). Elias Gamma Code is a compression algorithm that uses the Gamma table Code. In this study, the authors to combine between ElGamal algorithm to perform data encryption and Elias Gamma Code algorithm for data compression. Plaintext was first encrypted using ElGamal algorithm, then the result of the ElGamal encryption is compressed by using Elias Gamma Code. The tests were using the method of Fermat primes. Implementation of the system was using the Java programming language with Netbeans software version 7.0.1. The results showed that ElGamal method can maintain the security and confidentiality of data. Elias Gamma Code method is quite efficient in the process of data storage with an average ratio of compression 73,04%.
BAB 1
PENDAHULUAN
Bab ini akan menjelaskan mengenai latar belakang masalah yang dibahas dalam skripsi
ini, rumusan masalah, ruang lingkup penelitian, tujuan penelitian, manfaat penelitian,
penelitian sebelumnya, metode penelitian, dan sistematika penulisan skripsi.
1.1Latar Belakang
Teknologi informasi dan komunikasi telah berkembang pesat, memberikan pengaruh
yang besar bagi kehidupan manusia. Perkembangan teknologi jaringan dan internet
memungkinkan setiap orang untuk saling bertukar data, informasi, atau pesan kepada
orang lain tanpa batasan jarak dan waktu.
Keamanan dan kerahasiaan merupakan aspek penting yang dibutuhkan dalam
proses pertukaran pesan melalui jaringan internet, karena turut berkembang pula
kejahatan teknologi dengan berbagai teknik interupsi, penyadapan, maupun modifikasi.
Tanpa adanya jaminan keamanan, orang lain dapat dengan mudah mendapatkan pesan
atau informasi yang dikirimkan melalui jaringan internet. Berbagai macam teknik
keamanan telah dikembangkan untuk melindungi dan menjaga kerahasiaan pesan agar
terhindar dari orang yang tidak berhak, salah satunya yaitu teknik kriptografi (Rahmat, B.
2010).
Kriptografi adalah suatu ilmu dan seni untuk menjaga kerahasiaan pesan dengan
cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti maknanya. Secara
Sedangkan Algoritma Asimetris terdiri atas dua buah kunci yaitu kunci publik untuk
melakukan enkripsi sedangkan kunci privat untuk melakukan dekripsi (Kurniawan, Y.
2004).
Disamping usaha pengamanan, sekarang ini orang juga berusaha melakukan
proses pengecilan ukuran suatu data (kompresi suatu data). Tujuannya adalah untuk
mempercepat, menghemat biaya pengiriman data, dan dapat mengurangi ukuran data agar
dapat disimpan pada media penyimpanan yang memiliki ukuran relatif kecil (Andri, Y.
2009).
Banyaknya algoritma yang digunakan untuk melakukan penyandian data agar
data tersebut aman. Maka disini penulis menggunakan algoritma ElGamal. Kekuatan
algoritma ini terletak pada sulitnya menghitung logaritma diskrit pada grup bilangan
bulat prima yang di dalamnya dilakukan operasi perkalian (Widyartono, A. 2011).
Disebut logaritma diskrit karena nilainya berhingga dan bergantung pada bilangan prima
yang digunakan. Karena bilangan prima yang digunakan adalah bilangan prima yang
besar, maka sangat sulit bahkan tidak mungkin menurunkan kunci privat dari kunci
publik yang diketahui walaupun serangan dilakukan dengan menggunakan sumberdaya
komputer yang sangat besar.
Selanjutnya dalam hal kompresi juga memiliki berbagai macam algoritma yang
digunakan, penulis menggunakan Algoritma Elias Gamma Code. Penulis ingin
melakukan penggabungan antara algoritma kriptografi untuk penyandian data dengan
algoritma kompresi. Dimana plainteks pertama kali dienkripsikan menggunakan
algoritma ElGamal. Dari proses enkripsi ini akan dihasilkan cipherteks. Dan cipherteks
inilah yang nantinya akan digunakan pada proses kompresi. Proses kompresi dilakukan
terhadap berkas yang telah dienkripsi yang bertujuan agar berkas tersebut ukurannya
1.2 Rumusan Masalah
Melihat dari latar belakang yang sudah dipaparkan di atas maka rumusan masalahnya
adalah bagaimana hasil dari penggabungan antara Algoritma Kriptografi untuk keamanan
data dan Algoritma Elias Gamma Code untuk kompresi data.
1.3Ruang Lingkup Penelitian
Dari uraian perumusan masalah di atas, agar tidak menyimpang dari tujuan yang
diharapkan maka dibuat beberapa pembatasan masalah antara lain :
1. Algoritma kriptografi yang digunakan yaitu Algoritma ElGamal.
2. Metode yang dipakai untuk memperkecil ukuran file menggunakan prinsip lossless
dengan algoritma Elias Gamma Code yang bekerja berdasarkan teknik pengkodean
bilangan bulat menjadi bentuk biner yang lebih sederhana.
3. Membahas proses penyandian pesan yang meliputi : proses pembentukan kunci,
proses enkripsi dan proses dekripsi serta implementasinya dalam sebuah program
sederhana.
4. Proses penyandian hanya dilakukan pada file teks dengan ekstensi (*.txt).
5. Bahasa yang digunakan adalah bahasa pemrograman Java.
1.4Tujuan Penelitian
Tujuan dari penyusunan tugas akhir ini adalah membantu pengguna dalam menyandikan
data teks agar tidak diketahui oleh orang yang tidak memiliki hak untuk data tersebut
dengan menggunakan Algoritma ElGamal dan mengkompresikan data tersebut agar dapat
disimpan dimedia penyimpanan yang berkapasitas rendah dengan menggunakan
1.5Manfaat Penelitian
Adapun manfaat dari penelitian ini adalah :
1. Menambah pengetahuan penulis dalam melakukan proses enkripsi dan dekripsi
pesan dengan menggunakan algoritma ElGamal.
2. Memberikan keamanan data bagi para pengguna.
3. Memudahkan para pengguna dalam menyimpan data pada media penyimpanan
yang relatif berkapasitas rendah.
1.6Penelitian Sebelumnya
Penelitian yang dilakukan oleh (Putra, E. 2013) membahas tentang bagaimana
menyederhanakan perhitungan pada kriptografi kurva eliptik dan berusaha
mempersingkat waktu proses tanpa mengurangi tingkat keamanan dengan judul
Implementasi Kriptografi Kurva Eliptik Dengan Algoritma Elgamal Dan Metode
Pembangkitan Bilangan Prima Rabin-Miller Untuk Pengamanan File Teks. Dimana
kesimpulan penelitiannya antara lain adalah sebagai berikut: Kriptografi kurva eliptik
dengan algoritma ElGamal dan metode pembangkit bilangan prima Rabin Miller dapat
diimplementasikan dengan baik dan dalam prosesnya berhasil disajikan secara sederhana
sehingga dapat membantu pemahaman mengenai kriptografi kurva eliptik, Proses
enkripsi pada kriptografi kurva eliptik dengan algoritma ElGamal dan metode
pembangkit bilangan prima Rabin Miller dapat diproses dengan baik, dan Dengan adanya
pembatasan nilai a dan b menjadi 1 serta jumlah digit pada bilangan prima hasil
bangkitan dari pembangkit bilangan prima Rabin-Miller sebanyak 2 digit, proses
pembangkitan kunci, enkripsi dan dekripsi dapat dilakukan dengan cepat.
Penelitian yang dilakukan oleh (Erdiansyah, U. 2014) membahas tentang
bagaimana Aplikasi yang dirancang dalam penelitian telah mampu melakukan proses
dirancang dalam penelitian ini telah mampu melakukan proses dekompresi file teks hasil
kompresi menjadi file teks semula sebelum dikompresi.
1.7Metode Penelitian
Metodologi penelitian adalah langkah-langkah sistematik yang ini digunakan untuk
mengerjakan atau menyelesaikan suatu masalah. Metodologi penelitian digunakan
sebagai pedoman dalam melaksanakan penelitian agar hasil yang dicapai sesuai dengan
yang diinginkan. Metodologi penelitian yang digunakan dalam penulisan skripsi ini yaitu,
sebagai berikut:
1. Kepustakaan
a. Library Research, yaitu membaca dan mempelajari buku-buku yang
berhubungan dengan Algoritma Kriptografi ElGamal, dan Algoritma
Kompresi Elias Gamma Code.
b. Melakukan pencarian dokumen-dokumen elektronik (e-book/e-journal)
yang berkaitan dengan pembahasan Algoritma Kriptografi ElGamal dan
Algoritma Elias Gamma Code.
2. Analisa dan Perancangan Sistem
Berdasarkan rumusan dan batasan masalah, kebutuhan perancangan dianalisis
disertai pembuatan flowchart dan design interface.
3. Implementasi Sistem
Mengimplementasikan sistem sesuai hasil analisis dan perancangan ke dalam
program komputer.
4. Pengujian Sistem
Pada tahap ini dilakukan pengujian sistem, apakah implementasi telah sesuai
5. Dokumentasi
Metode ini dilaksanakan dengan membuat dokumentasi dalam bentuk laporan
tugas akhir.
1.8 Sistematika Penulisan
Sistematika penulisan dari skripsi ini terdiri dari beberapa bagian utama sebagai berikut :
BAB 1. PENDAHULUAN
Bab ini akan menjelaskan mengenai latar belakang masalah yang dibahas dalam skripsi
ini, rumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, penelitian
sebelumnya, metode penelitian, dan sistematika penulisan skripsi.
BAB 2. LANDASAN TEORI
Bab ini merupakan tinjauan teoritis yang berkaitan dengan algoritma kriptografi ElGamal
dan algoritma kompresi Elias Gamma Code.
BAB 3. ANALISIS DAN PERANCANGAN SISTEM
Pada bab ini berisi penjelasan tentang analisis masalah yang dibangun dalam sistem dan
menganalisis tentang hal – hal yang dibutuhkan dalam membangun sistem ini, kemudian
dilanjutkan dengan tahapan perancangan sistem yang berupa perancangan interface
sistem.
BAB 4 : IMPLEMENTASI DAN PENGUJIAN SISTEM
Pada bab ini berisi tentang implementasi sistem yang berdasarkan tahapan perancangan
pengujian sistem untuk menguji apakah sistem sudah berjalan sesuai dengan
perancangan.
BAB 5 : KESIMPULAN DAN SARAN
Bab ini merupakan bab penutup yang menguraikan mengenai kesimpulan yang penulis
ambil dari pembahasan pada bab-bab sebelumnya dan saran sebagai masukan terhadap
permasalahan yang muncul yang diharapkan dapat bermanfaat bagi pemecahan masalah
BAB 2
LANDASAN TEORI
Bab ini akan membahas tinjauan teoritis yang berkaitan dengan algoritma kriptografi
ElGamal dan algoritma kompresi Elias Gamma Code.
2.1 Kriptografi
Kriptografi mempunyai peranan penting dalam dunia komputer. Hal ini disebabkan
karena banyaknya informasi rahasia yang disimpan dan dikirim melalui media-media
komputer. Informasi- informasi ini biasanya berisikan dokumen-dokumen penting dan
data keuangan dari suatu instansi yang tidak ingin dibaca oleh orang yang tidak berhak
atas informasi tersebut. Oleh karena itu ilmu kriptografi setiap saat selalu dikembangkan
oleh orang untuk dapat menjaga fasilitas – fasilitas tersebut.
2.1.1 Defenisi Kriptografi
Menurut Rinaldi Munir dalam skripsi Yuli Andri, 2009 : Kriptografi
(cryptography) berasal dari Bahasa Yunani: “cryptós” artinya “secret” (rahasia),
sedangkan “gráphein” artinya “writing” (tulisan). Jadi, kriptografi berarti “secret writing” (tulisan rahasia).
Kriptografi adalah ilmu mengenai teknik enkripsi dimana data diacak
menggunakan suatu kunci enkripsi menjadi sesuatu yang sulit dibaca oleh seseorang yang
tidak memiliki kunci dekripsi (Kromodimoeljo, 2009).
Secara umum, kriptografi merupakan teknik pengamanan informasi yang dilakukan
dengan cara mengolah informasi awal (plainteks) dengan suatu kunci tertentu
baru (cipherteks) yang tidak dapat dibaca secara langsung. Cipherteks tersebut dapat
dikembalikan menjadi informasi awal (plainteks) melalui proses dekripsi. Urutan proses
kriptografi secara umum dapat dilihat pada Gambar 2.1.
Gambar 2.1. Urutan proses kriptografi (Widyartono, A. 2011).
2.1.2 Sejarah Kriptografi
Sebagian besar sejarah kriptografi merupakan bagian dari kriptografi klasik, yaitu metode
kriptografi yang menggunakan kertas dan pensil atau menggunakan alat bantu mekanik
yang sederhana. Kriptografi klasik secara umum dikelompokkan menjadi dua kategori,
yaitu algoritma transposisi (transposition cipher) dan algoritma substitusi (substitution
cipher). Algoritma transposisi adalah algoritma yang mengubah susunan-susunan huruf
di dalam pesan, sedangkan algoritma substitusi yaitu mengganti setiap huruf atau
kelompok huruf dengan sebuah huruf atau kelompok huruf yang lain.
Algoritma substitusi paling awal dan paling sederhana adalah Caesar Cipher,
yang digunakan oleh raja Yunani kuno, Julius Caesar. Disaat Julius Caesar ingin
mengirimkan sebuah pesan rahasia kepada seorang jenderal di medan perang. Pesan
tersebut akan dikirimkan melalui seorang kurir. Karena tingkat kerahasiaan pesan yang
tinggi, maka Julius Caesar tidak mau mengambil resiko jika pesan tersebut sampai ke
tangan musuh. Maka Caesar mensubstitusi pesan tersebut dengan cara mengganti
huruf-huruf alfabet a menjadi d, b menjadi e, c menjadi f dan seterusnya. Sebelumnya kunci
dari pesan tersebut telah diberitahu oleh Julius Caesar kepada jenderal yang akan
menerima pesan tersebut. Dengan demikian, walaupun pesan tersebut jatuh ke pihak
musuh, maka musuh tersebut tidak akan dapat membaca pesan tersebut.
Enkripsi Dekripsi
Pada abad ke-20, kriptografi lebih banyak digunakan oleh kalangan militer. Pada
perang dunia ke II, Pemerintah Nazi Jerman membuat mesin enkripsi yang dinamakan
dengan Enigma. Mesin ini menggunakan beberapa buah rotor (roda berputar), dan
melakukan proses enkripsi yang sangat rumit. Jerman percaya pesan akan dikirim melalui
enigma tidak akan terpecahkan kode enkripsinya.
Tetapi anggapan Jerman tersebut salah, setelah mempelajari mesin enigma
bertahun-tahun, sekutu berhasil memecahkan kode-kode tersebut. Setelah Jerman
mengetahui kode-kode mereka telah terpecahkan, kemudian enigma mengalami beberapa
kali perubahan. Mesin Enigma dapat dilihat pada Gambar 2.2.
Gambar 2.2 Mesin enigma yang digunakan tentara Jerman ( Halim, A. 2013).
Perkembangan peralatan komputer digital memicu terbentuknya kriptografi
modern. Dengan komputer digital, akan sangat mungkin untuk menghasilkan cipher yang
lebih kompleks dan rumit. Kriptografi klasik pada umumnya dienkripsi karakter per
karakter (menggunakan alfabet tradisional), sedangkan kriptografi modern beroperasi
pada string biner. Kriptografi modern tidak hanya berkaitan dengan teknik menjaga
2.1.3. Tujuan Kriptografi
Kriptografi bertujuan untuk memberikan layanan keamanan (Kurniawan, Y. 2004)
sebagai berikut:
1. Kerahasiaan (Confidentiality)
Layanan yang ditujukan untuk menjaga pesan tidak dapat dibaca oleh pihak-pihak
yang tidak berhak.
2. Keutuhan Data (Integrity)
Penerima harus dapat memeriksa apakah pesan telah dimodifikasi ditengah jalan
atau tidak. Seorang penyusup seharusnya tidak dapat memasukkan tambahan ke
dalam pesan, mengurangi atau mengubah pesan selama data berada diperjalanan.
3. Autentikasi (Message Authentication)
Penerima pesan dapat memastikan keaslian pengirimnya. Penyerang tidak dapat
berpura- pura sebagai orang lain.
4. Menolak Penyangkalan (Nonrepudiation)
Pengirim seharusnya tidak dapat mengelak bahwa dialah pengirim pesan yang
sesungguhnya. Tanpa kriptografi, seseorang dapat mengelak bahwa dialah pengirim
email yang sesungguhnya.
2.1.4 Terminologi dan Konsep Dasar Kriptografi
Dalam bidang kriptografi akan ditemukan beberapa istilah atau terminologi.
Isitilah-istilah tersebut sangat penting untuk diketahui dalam memahami ilmu kriptografi. Oleh
karena itu penulis akan menjelaskan beberapa istilah penting dalam bidang kriptografi
yang akan sering penulis gunakan dalam tulisan penulis. Berikut merupakan istilah-istilah
penting tersebut.
a. Plainteks dan Cipherteks
Pesan merupakan data atau informasi yang dimengerti maknanya. Nama lain dari pesan
lain) dan dapat juga disimpan dalam media penyimpanan (kertas, storage, dan
lain-lain). Pesan dapat berupa teks, video, gambar, dan lain-lain. Agar pesan tersebut tidak
dapat dimengerti maknanya bagi pihak lain, maka pesan perlu disandikan ke bentuk lain
yang tidak dapat dipahami. Bentuk pesan yang telah tersandikan tersebut dinamakan
dengan cipherteks (ciphertext). Perbandingan plainteks dan cipherteks dapat dilihat pada
Gambar 2.3
(a). Plainteks (b). Cipherteks
Gambar 2.3 Perbandingan plainteks dan cipherteks ( Halim, A. 2013).
b. Peserta Komunikasi
Komunikasi data melibatkan pertukaran pesan antara dua entitas. Entitas yang
pertama adalah pengirim, yang berfungsi mengirim pesan kepada entitas lain. Entitas
kedua adalah penerima, yang berfungsi menerima pesan yang dikirimkan. Entitas-entitas
ini dapat berupa orang, mesin (komputer), kartu kredit dan sebagainya. Contohnya mesin
ATM berkomunikasi dengan komputer server di bank. Pengirim ingin mengirimkan
pesan dengan aman sampai ke penerima. Jadi solusinya adalah dilakukan penyandian
terhadap pesan tersebut agar tidak diketahui pihak-pihak yang tidak berkepentingan
terhadap pesan tersebut.
c. Enkripsi dan Dekripsi
Proses penyandian pesan, dari plainteks ke cipherteks dinamakan dengan enkripsi
(encryption) atau enchipering (standard nama menurut ISO 7498-2). Sedangkan proses
(descryption) atau dechipering (standard nama menurut ISO 7498-2). Proses enkripsi dan
dekripsi dapat diterapkan pada pesan yang dikirim ataupun pesan yang disimpan.
Encryption of data in motion mengacu pada enkripsi pesan yang ditransmisikan melalui
saluran komunikasi, sedangkan istilah encryption of data at-rest mengacu pada enkripsi
pesan yang tersimpan di dalam storage.
d. Kriptanalis dan Kriptologi
Kriptografi selalu memiliki perkembangan, karena kriptografi memiliki ilmu yang
berlawan yang disebut dengan kriptanalisis. Kriptanalis (cryptanalysis) adalah ilmu dan
seni untuk memecahkan cipherteks menjadi plainteks, tanpa memerlukan kunci yang
digunakan. Pelakunya disebut dengan cryptanalyst. Jika seorang kriptopgrafer (istilah
bagi pelaku kriptografi) mentransformasikan plainteks ke cipherteks dengan
menggunakan kunci, maka sebaliknya seorang kriptanalis berusaha memecahkan
cipherteks tersebut untuk menemukan plainteks atau kunci. Kriptologi (cryptology)
adalah studi mengenai kriptografi dan kriptanalis. Hubungan antara kriptologi, kriptografi
dan kriptanalis dapat dilihat pada Gambar 2.4.
Gambar 2.4 Hubungan antara kriptologi, kriptografi dan kriptografi (Kurniawan, Y.
2004)
2.1.5 Jenis Kriptografi
Berdasarkan kunci enkripsi dan dekripsinya algoritma kriptografi terbagi menjadi dua
bagian yaitu :
Kriptologi
1. Kriptografi simetri
Pada sistem algoritma simetris, kunci untuk proses enkripsi sama dengan kunci untuk
proses dekripsi. Keamanan sistem algoritma simetris terletak pada kerahasiaan kunci.
Istilah lain untuk algoritma simetris adalah kriptografi kunci privat (private key
cryptography) atau kriptografi konvensional (conventional cryptography).
Kriptografi simetri merupakan satu-satunya jenis kriptografi yang dikenal dalam
catatan sejarah hingga tahun 1976. Semua algoritma kriptografi klasik termasuk ke dalam
sistem kriptografi simetri.
Skema Algoritma Simetri dapat dilihat pada Gambar 2.5
Gambar 2.5 Skema Algoritma Simetri (Halim, A. 2013)
Kriptografi simetri adalah kunci enkripsi sama dengan kunci dekripsi, yaitu K.
Sebelum melakukan pengiriman pesan, pengirim dan penerima harus memilih suatu
kunci tertentu yang sama untuk dipakai bersama, dan kunci ini haruslah rahasia bagi
pihak yang tidak berkepentingan sehingga algoritma ini disebut juga algoritma kunci
rahasia (secret-key algorithm).
a. Kelebihan Kriptografi Simetri :
1. Proses enkripsi atau dekripsi kriptografi simetri membutuhkan waktu yang
singkat.
2. Ukuran kunci simetri relatif lebih pendek. Kunci
Dekripsi Enkripsi
A B
3. Otentikasi pengiriman pesan langsung diketahui dari cipherteks yang diterima,
karena kunci hanya diketahui oleh penerima dan pengirim saja.
b. Kekurangan Kriptografi Simetri:
1. Kunci simetri harus dikirim melalui saluran komunikasi yang aman, dan kedua
entitas yang berkomunikasi harus menjaga kerahasiaan kunci.
2. Kunci harus sering diubah, setiap kali melakasanakan komunikasi.
2. Kriptografi asimetri
Berbeda dengan kriptografi kunci simetri, kriptografi kunci publik memiliki dua buah
kunci yang berbeda pada proses enkripsi dan dekripsinya. Nama lain dari kunci asimetri
ini adalah kriptografi kunci-publik (public-key cryptography). Kunci untuk enkripsi pada
kriptografi asimetri ini tidak rahasia (diketahui oleh publik), sedangkan kunci untuk
dekripsi bersifat rahasia (kunci privat). Entitas pengirim akan mengenkripsi dengan
menggunakan kunci publik, sedangkan entitas penerima mendekripsi menggunakan kunci
privat. Skema dari kriptografi asimetri dapat dilihat pada Gambar 2.6.
Gambar 2.6 Skema Algoritma Asimetri ( Halim, A. 2013)
Kriptografi asimetri ini dapat dianalogikan seperti kotak surat yang terkunci dan
memiliki lubang untuk memasukan surat. Setiap orang dapat memasukkan surat ke dalam
kotak surat tersebut, tetapi hanya pemilik surat yang memiliki kunci dan yang dapat
membuka kotak surat. Kunci publik dapat dikirim ke penerima melalui saluran yang
pihak yang tidak berkepentingan tidak akan dapat mendekripsi pesan tersebut, karena
tidak memiliki kunci privat.
a. Kelebihan kriptografi asimetri:
1. Hanya kunci privat yang perlu dijaga kerahasiaanya oleh setiap entitas yang
berkomunikasi. Tidak ada kebutuhan mengirim kunci privat sebagaimana
pada kunci simetri.
2. Pasangan kunci privat dan kunci publik tidak perlu diubah dalam jangka
waktu yang sangat lama.
3. Dapat digunakan dalam pengaman pengiriman kunci simetri.
4. Beberapa algoritma kunci publik dapat digunakan untuk memberi tanda
tangan digital pada pesan.
b. Kelemahan kriptografi asimetri :
1. Proses enkripsi dan dekripsi umumnya lebih lambat dari algoritma simetri,
karena menggunakan bilangan yang besar dan operasi bilangan yang besar.
2. Ukuran cipherteks lebih besar daripada plainteks.
3. Ukuran kunci relatif lebih besar daripada ukuran kunci simetri.
2.2 Algoritma ElGamal
Algoritma ini merupakan salah satu algoritma kriptografi asimetri. Pada subbab ini penulis
akan membahas dasar-dasar dan prinsip kerja dari algoritma ElGamal itu sendiri.
2.2.1 Sejarah Algoritma ElGamal
Algoritma ElGamal merupakan algoritma enkripsi kunci asimetris yang berdasarkan pada
pertukaran kunci Diffe-Hellman. Algoritma ini diusulkan Taher Elgamal pada tahun
1984. Keamanan algoritma ini didasarkan pada kesulitan memecahkan masalah logaritma
Karena sistem kriptografi simetri menggunakan kunci yang sama untuk enkripsi dan
dekripsi, maka hal ini mengimplikasikan dua pihak yang berkomunikasi saling
mempercayai. Konsep sistem kriptografi kunci-publik ditemukan oleh Diffie dan
Hellman yang mempresentasikan konsep ini pada Tahun 1976. Ide dasar dari sistem
kriptografi kunci-publik adalah bahwa kunci kriptografi dibuat sepasang, satu kunci
untuk enkripsi dan satu kunci untuk dekripsi. Kunci untuk enkripsi bersifat publik (tidak
rahasia), sehingga dinamakan kunci publik (public-key). Sedangkan kunci dekripsi
bersifat rahasia sehingga dinamakan kunci rahasia (private key atau secret key).
Logaritma ini disebut logaritma diskrit karena nilainya berhingga dan bergantung
pada bilangan prima yang digunakan. Karena bilangan prima yang digunakan adalah
bilangan prima yang besar, maka sangat sulit bahkan tidak mungkin menurunkan kunci
privat dari kunci publik yang diketahui walaupun serangan dilakukan dengan
menggunakan sumberdaya komputer yang sangat besar.
Algoritma ElGamal mempunyai kunci publik berupa tiga pasang bilangan dan
kunci rahasia berupa satu bilangan. Algoritma ini mempunyai kerugian pada
cipherteksnya yang mempunyai panjang dua kali lipat dari plainteksnya. Akan tetapi,
algoritma ini mempunyai kelebihan pada enkripsi. Untuk plainteks yang sama, algoritma
ini memberikan cipherteks yang berbeda setiap kali plainteks dienkripsi. Algoritma
ElGamal terdiri dari tiga proses, yaitu proses pembentukan kunci, proses enkripsi dan
proses dekripsi. Algoritma ini merupakan cipher blok, yaitu melakukan proses enkripsi
pada blok-blok plainteks dan menghasilkan blok-blok cipherteks yang kemudian
dilakukan proses dekripsi dan hasilnya digabungkan.
Besaran-besaran yang digunakan dalam pembangkitan kunci publik algoritma
ElGamal (Taufiq, M. 2010) :
1. Bilangan prima, p (tidak rahasia)
β. Bilangan acak α sebagai akar primitf ( α < p) (tidak rahasia) 3. Bilangan acak a (a < p) (rahasia)
4. Blok plainteks M (plainteks) (rahasia)
2.3 Landasan Matematika Algoritma ElGamal
Dalam mempelajari sebuah algoritma kriptografi, sebaiknya kita memahami terlebih dahulu
konsep-konsep dasar perhitungan matematis yang akan digunakan dalam suatu algoritma
kriptografi tersebut.
2.3.1 Modulo Exponensial
Modulo eksponensial sering digunakan dalam bidang kriptografi untuk menghitung hasil
enkripsi maupun hasil dekripsi. Permasalahan pada operasi modulo adalah bagaimana
menghitung xy (mod n) dengan n yang sangat besar. Terdapat beberapa cara untuk
menghitung modulo eksponensial, antara lain adalah dengan cara iteratif.
Function mod exp (x, y, n){
Contoh : Tentukan hasil dari 25 mod 30 dengan cara iterasi!
Maka hasil dari 25 mod 30 adalah 2.
2.3.2 Algoritma Euclidean
Algoritma ini digunakan untuk mencari nilai pembagi persekutuan terbesar (PBB) dari dua
bilangan bulat. 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
Pembuktian dari persamaan diatas dapat dilihat dari definisi relatif prima diketahui
bahwa GCD(a, n) = 1.
Contoh: untuk inversi dari 7 (mod 11), penyelesaiannya dapat dilihat pada Tabel 2.1.
Tabel 2.1. Penyelesaian contoh soal inversi modulo.
a-1 a-1x 7(mod 11)
1 1 x7 (mod11) = 7
2 2 x7 (mod11) = 3
3 3 x7 (mod11) = 10
4 4 x7 (mod11) = 6
5 5 x7 (mod11) = 2
6 6 x7 (mod11) = 9
7 7 x7 (mod11) = 5
8 8 x7 (mod11) = 1
Pada Tabel 2.1, iterasi berhenti ketika a-1a≡ 1 (mod n) dan diperoleh a-1 = 8.
2.3.4 Bilangan Prima
Bilangan positif p (p>1) disebut bilangan prima jika pembaginya hanya 1 dan p. Sebagai
contoh bilangan 23 adalah bilangan prima karena ia hanya habis dibagi 1 dan 23. Karena
bilangan prima harus lebih besar dari satu, maka barisan bilangan prima dimulai dari 2,
yaitu 2, 3, 5 , 7, 11, 13, .... Seluruh bilangan prima adalah bilangan ganjil, kecuali dua
yang merupakan bilangan genap.
Sebuah bilangan bulat p > 1 disebut bilangan prima, jika bilangan tersebut hanya
memiliki pembagi positif 1 dan p. Bilangan bulat yang lebih dari 1 yang bukan bilangan
2.3.5 Bilangan Relatif Prima
Dua buah bilangan bulat a dan b dikatakan relatif prima jika PBB atau GCD (greatest common divisor) dari a dan b bernilai 1.
Contoh : 20 dan 3 relatif prima sebab PBB (20, 3) = 1. Begitu juga 7 dan 11 relatif
prima karena PBB (7, 11) = 1. Tetapi β0 dan 5 tidak relatif prima sebab PBB (β0, 5) = 5 ≠ 1.
2.3.6 Elemen Primitif
Selain bilangan prima, dalam kriptografi ElGamal juga digunakan elemen primitif yang
merupakan elemen pembangun dari grup Z
p. Untuk mencari elemen ini digunakan
p=2q+ 1, dimana q merupakan bilangan prima. Jika elemen α memenuhi α2 mod p ≠ 1 dan
αq mod p ≠ 1, maka α merupakan elemen primitif (Jeffrey dkk, 2008).).
Untuk mengetahui suatu bilangan merupakan elemen primitif atau tidak dapat
dilakukan langkah-langkah sebagai berikut :
1. Input bilangan prima aman p ≥ 5.
2. Hitung q= −1 2
3. Hitung α2mod p dan αqmod p.
4. Jika α 2mod p= 1, maka α bukan elemen primitif.
5. Jika αq mod p= 1, maka α bukan elemen primitif.
6. Jika tidak terpenuhi dua persyaratan di atas maka q merupakan elemen primitif.
Misalkan p = 2579 yang merupakan bilangan prima aman. Oleh karena itu, dapat
ditentukan bilangan prima = 2579−1
2 = 1289. Untuk menunjukkan bahwa suatu bilangan bulat a merupakan elemen primitif Z 2579*, harus ditunjukkan bahwa
α
2 � �Tabel 2.2. Perhitungan
α
2 mod 2579 danα
mod 2579a 2 3 4 5 6 7 8
α
2 � 4 9 16 25 36 49 64α
� 2578 1 1 1 2578 1 25782.3.7 Fermat’s Little Theorem
Fermat’s little theorem adalah suatu metode yang digunakan untuk menguji keprimaan suatu bilangan bulat. Teorema Fermat ditemukan oleh Pierre De Fermat merupakan
seorang matematikawan Perancis pada tahun 1640. Meskipun dapat digunakan untuk
mempermudah kalkulasi dalam kriptografi, peran terpenting dari Fermat's little theorem
adalah sebagai dasar dari berbagai teknik enkripsi asimetris.
Salah satu perhitungan matematis yang digunakan untuk menghasilkan bilangan
prima adalah metode Fermat yang dapat dirumuskan sebagai berikut:
Untuk bilangan prima p dan bilangan bulat a, ap≡ a (mod p) dan jika a tidak dapat dibagi oleh p, maka a p-1≡1 (mod p) (Kromodimoeljo, S. 2010). Di mana p adalah bilangan bulat dan a adalah urutan bilangan yang lebih kecil dari p.
Contoh penerapan metode Fermat adalah sebagai berikut:
a. Bila p = 4
Maka 1 ≤a< 4, didapat a = {1, 2, 3}
a p-1mod p
1 4-1 mod 4 = 13 mod 4 = 1
24-1 mod 4 = 23 mod 4 = 0
34-1 mod 4 = 33 mod 4 = 3
Jadi, angka 4 bukan merupakan bilangan prima sebab dalam pengecekan menggunakan
metode Fermat didapat semua hasil dari urutan bilangan yang lebih kecil dari 4 terdapat
b. Bila p = 5
Maka 1 ≤a< 5, jadi didapat a = {1, 2, 3, 4}
a p-1 mod p
1 5-1 mod 5 = 14 mod 5 = 1
25-1 mod 5 = 24 mod 5 = 1
35-1 mod 5 = 34 mod 5 = 1
45-1 mod 5 = 44 mod 5 = 1
Jadi, angka 5 merupakan bilangan prima sebab dalam pengecekan menggunakan
metode Fermat didapat semua hasil dari urutan bilangan yang lebih kecil dari 5 adalah 1.
Untuk angka yang besar dengan jumlah nilai a yang banyak, hanya diambil beberapa
angka sebagai contoh untuk dilakukan pengujian dengan metode Fermat.
2.4 Prinsip Kerja Algoritma ElGamal
2.4.1 Proses Pembangkitan Kunci
Langkah-langkah dalam pembangkitan kunci
1. Pilih sembarang bilangan prima p ( disarankan bilangan prima yang bernilai besar
agar aman dan uji bilangan prima tersebut dengan metode Fermat). Misalkan p =
271
2. Ambil bilangan α sebagai akar primitive mod p
Misalkan α =107
3. Ambil bilangan acak a dengan syarat a harus berada dalam rentang β≤a<p-1.
Misalkan a = 96
4. Hitung berapa x=αa mod p
= 107 96 mod 271
= 39
1. Kunci publik (p,α,x) = (271, 107, 39)
2. Kunci privat (p,a)= (271, 96)
2.4.2 Proses Enkripsi
Langkah-langkah dalam mengenkripsi pesan:
1. Terima kunci publik (p, α, x) = (271, 107, 39)
2. Plainteks m disusun menjadi blok-blok m1, mβ, …, mp-1 sedemikian sehingga setiap
blok merepresentasikan nilai di dalam rentang 0 sampai p – 1.
3. Ubah nilai blok pesan ke dalam nilai ASCII. Ekspresikan pesan m1 = c = 99 (kode
ASCII) sebagai bilangan
4. Ambil sebuah bilangan asli b < p-1
b = 50
5. Hitung y = αb mod p
= 10750 mod 271
= 238
Hitung c = (m(xb mod p)) mod p
= (99(3950 mod 271) mod 271
= 99.169 mod 271
= 200
Maka dari perhitungan di atas, kita mendapatkan nilai y dan c sebagai cipherteks nya
yaitu (238, 200). Jadi, ukuran cipherteks dua kali ukuran plainteksnya. Proses diatas akan
berulang untuk membaca semua blok pesan untuk menghasilkan cipherteks.
6. Kirim y = 238 dan c = 200 ke pemilik kunci publik.
2.4.3 Proses Dekripsi
Langkah-langkah dalam mendekripsi pesan:
2. Hitung Z = yp-1-a mod p
= 238 271-1-96 mod 271
= 238 174 mod 271
= 178
Hitung M = c.z mod p
= 200. 178 mod 271
= 99. Karakter dalam ASCII adalah c. sesuai dengan plainteks yang
dikirim sender, yang berarti bahwa plainteks ditemukan kembali dari pasangan cipherteks
y dan c. Kemudian menggabungkan lagi blok m1, m2, ….. menjadi plainteks yang utuh.
2.5 Defenisi Kompresi
Kompresi data adalah ilmu atau seni yang merepresentasikan informasi dalam bentuk
yang lebih compact. Istilah kompresi tersebut diterjemahkan dari kata bahasa Inggris
“compression” yang berarti pemampatan. Dalam bidang teknik, kompresi berarti proses memampatkan sesuatu yang berukuran besar sehingga menjadi kecil. Dengan demikian,
kompresi data berarti proses untuk memampatkan data agar ukurannya menjadi lebih
kecil (Komputer, W. 2003).
Definisi kompresi data adalah proses yang mengkonversi sebuah masukan berupa aliran data (the source atau data asli mentah) menjadi suatu aliran data lain (the Output,
aliran bit, atau aliran sudah dikompres) yang memiliki ukuran lebih kecil. Aliran data
(stream) dapat berupa sebuah file atau buffer pada memori. Data dalam konteks kompresi
data melingkupi segala bentuk digital dari informasi, yang dapat diproses oleh sebuah
program komputer. Bentuk dari informasi tersebut secara luas dapat diklasifikasikan
sebagai teks, suara, gambar dan video (Salomon,D. 2007).
Tujuan kompresi data adalah untuk mempercepat dan menghemat biaya
tujuan untuk dapat mengurangi ukuran data dan dapat disimpan pada media penyimpanan
yang memiliki ukuran relatif kecil.
2.5.1 Penggolongan Algoritma Kompresi
Secara garis besar terdapat 2 buah penggolongan algoritma kompresi data yaitu kompresi
lossy, dan kompresi lossless (Merdiyan, M. 2005).
1. Kompresi Lossless merupakan metoda kompresi data yang memungkinkan data
asli dapat disusun kembali dari data hasil kompresi maka rasio kompresi pun tidak
dapat terlalu besar untuk memastikan semua data dapat dikembalikan ke bentuk
semula.
Contoh metode ini adalah Elias Gamma Code, Shannon-Fano Coding, Huffman
Coding, Arithmetic Coding, Run Length Encoding, dan lain-lain.
2. Kompresi Lossy adalah suatu metode untuk mengkompresi data dan
mendekompresinya. Data yang diperoleh mungkin berbeda dari data aslinya,
tetapi perbedaan itu cukup dekat. Metode ini paling sering digunakan untuk
kompres data multimedia (Audio file dan gambar). Format kompresi Lossy
mengalami generation loss yaitu jika mengalami prose kompresi-dekompresi
berulang kali maka akan menyebabkan kehilangan kualitas secara progresif.
Contoh metode ini adalah Transform Coding, Wavelet, dan lain-lain.
2.5.2 Algoritma Elias Gamma Code
Elias Gamma Code adalah sebuah algoritma kompresi yang dibuat oleh Peter Elias.
Untuk membuat tabel kode Elias Gamma, Elias menambah panjang kode dalam unary
(u). Dalam kode berikutnya, E ditambahkan pada panjang kode (M) dalam biner ( ).
Dengan demikian, Elias Gamma Code, yang juga untuk bilangan bulat positif, sedikit
lebih kompleks untuk dibangun (Salomon, D. 2007).
Adapun aturan untuk mengkodekan sebuah bilangan dengan menggunakan Elias
Gamma (Sukiman & Chandra, 2013) adalah sebagai berikut:
2. Kurangkan 1 dari jumlah bit yang ditulis pada langkah pertama dan tambahkan
sesuai dengan banyaknya bilangan nol (u) diikuti oleh angka 1.
3. Gabungkan bilangan dalam bentuk biner ( ) dengan kode dalam bentuk unar (u)
dengan menghilangkan angka 1 didepan sehingga menghasilkan E (n).
Contoh pada bilangan integer 4 (n=4), maka :
(4) = 100
M = 3
u (4) = 001
E (4) = 100001 = 00001
Elias Gamma hanya dapat digunakan untuk mengkodekan bilangan bulat positif
dan mengasumsikan bahwa pengkodeaan Gamma hanya efisien untuk integer kecil
tetapi tidak cocok untuk integer yang besar, dimana kode terparameter dari Elias Code
yang lain adalah Delta code lebih cocok digunakan. Tabel Elias Gamma Code dapat
dilihat pada Tabel 2.3.
Tabel 2.3. Tabel Elias Gamma Code
n M Unary (u) E (n) hapus angka 1 disebelah
n M Unary (u) E (n) hapus angka 1 disebelah kiri
2.5.2.1 Konsep Kompresi Data
Untuk proses kompresi menggunakan Elias Gamma Code kita merujuk pada Tabel2.3.
Dimana Elias Gamma ini hanya cocok diterapkan untuk bilangan desimal 1 hingga 15
karena pengkodean kelima belas bilangan ini hanya memerlukan jumlah bit 1 hingga 7
bit sehingga efisiensi penyimpanan di dapat. Proses kompresi sendiri didasarkan pada
bahwa isi file akan dibaca secara per byte (8 bit) sehingga menghasilkan nilai pembacaan
antara 0 hingga 255.
Suatu metode pada kompresi data akan menghasilkan bit-bit (satuan terkecil
pembentuk data) data baru yang lebih pendek dibandingkan oleh bit-bit data sebelum
dikompresi. Bit-bit data yang lebih pendek tersebut biasanya tidak akan bisa dibaca oleh
komputer sebelum dilakukan proses encoding. Pada proses encoding bit-bit data tersebut
di-encode setiap delapan bitnya sehingga membentuk satu karakter yang dapat dibaca
oleh komputer. Begitu juga sebaliknya, pada saat dekompresi bit-bit data tersebut
di-decode kembali agar membentuk bit-bit data semula yang akan digunakan dalam proses
dekompresi. Karena pada saat proses dekompresi dibutuhkan bit-bit data sebelum
di-Encode untuk dapat dibaca kembali dalam proses dekompresi.
Didalam komputer satu karakter direpresentasikan oleh bilangan ASCII
(American Standard Code For Information Interchange) sebanyak delapan bit dalam
bilangan biner. Jika ternyata jumlah bit-bit data tersebut bukan merupakan kelipatan
delapan. Maka dibentuk variabel baru sebagai penambahan ke bit-bit data itu agar bit-bit
1. Padding
Padding adalah penambahan bit 0 sebanyak kekurangan jumlah bit-bit data pada hasil
proses kompresi sehingga jumlah keseluruhan bit-bit data tersebut merupakan kelipatan
delapan (habis dibagi delapan). Contoh misalkan dihasilkan bit-bit data hasil kompresi
yaitu 1001011. Terdapat 7 bit data dalam bilangan biner. Maka dilakukan penambahan
bit 0 sebanyak 1 kali agar jumlah bit-bit data tersebut habis dibagi delapan. Sehingga bit
bit data itu menjadi 10010110 setelah diberikan padding.
2. Flagging
Flagging adalah penambahan bilangan biner sepanjang delapan bit setelah padding
dimana flagging ini adalah sejumlah bilangan yang memberikan sebuah tanda bahwa
terdapat n buah padding di dalam bit-bit data hasil dari kompresi. Penambahan flagging
ini dimaksudkan untuk mempermudah dalam membaca bit-bit data hasil kompresi pada
saat proses dekompresi. Contoh misalkan bit-bit data yang telah diberikan padding
adalah10010110. Karena terdapat 1 bit penambahan padding maka flag nya adalah
bilangan biner dari 1 dengan panjang 8 bit yaitu 00000001. Sehingga bit-bit datanya
menjadi 1001011000000001 setelah diberikan flagging.
Contoh :
Berikut ini adalah contoh proses kompresi file teks dengan metode Elias Gamma Code.
Terdapat file teks yang berisikan string “KUKU KAKI KAKAK KAKEKKU KAKU”.
Untuk ukuran String dapat dilihat pada Tabel 2.4.
Tabel 2.4. String yang Belum Dikompresi
char ASCII Code ASCII Code (Binary) Bit Frek Bit x Frek
K 75 01001011 8 13 104
A 65 01000001 8 5 40
U 85 01010101 8 4 32
Lanjutan Tabel 2.4. String yang Belum Dikompresi
char ASCII Code ASCII Code (Binary) Bit Frek Bit x Frek
I 73 01001001 8 1 8
E 69 01000101 8 1 8
Total 224
Berdasarkan kode ASCII, satu karakter bernilai delapan bit bilangan biner. Sehingga
35 karakter pada string mempunyai nilai biner sebanyak 224 bit. Sebelum melakukan
proses kompresi, karakter tersebut diurutkan terlebih dahulu berdasarkan dari karakter
yang memiliki frekuensi terbesar ke terkecil. Proses kompresi untuk Elias Gamma Code
dapat dilihat pada Tabel 2.5
Tabel 2.5. String yang Sudah Dikompresi Dengan Elias Gamma Code
char Elias Gamma Code Bit Frek Bit x Frek
K 1 1 13 13
A 001 3 5 15
U 011 3 4 12
Sp 00001 5 4 20
I 00011 5 1 5
E 01001 5 1 5
Total 70
Dapat dibentuk string bit dari string sebelum dikompresi yaitu “ KUKU KAKI KAKAK
KAKEKKU KAKU” menjadi string bit
“1011101100001100110001100001100110011000011001101001110110000110011011”
. Sebelum ditulis ke sebuah file hasil kompresi dilakukan penambahan bit-bit padding
dan flagging diakhir String bit. Bit-bit itu dihasilkan dari panjang String bit itu sendiri
apakah habis dibagi delapan dan berapa sisanya jika dibagi delapan. Karena jumlah
dan flaggingnya adalah “00000010”
menjadi“1011101100001100110001100001100110011000011001101001110110000110
0110110000000010”. Sehingga total bit seluruhnya setelah penambahan padding dan
flagging adalah 80 bit.
2.5.3. Pengukuran Kinerja Kompresi Data
Pada suatu teknik yang digunakan dalam proses kompresi data terdapat beberapa faktor
atau variabel yang biasa digunakan untuk mengukur kualitas dari suatu teknik kompresi
data tersebut, yaitu:
1. Ratio of compression (Rc)
Ratio of compression (Rc) adalah perbandingan antara ukuran data sebelum dikompresi
dengan ukuran data setelah dikompresi.
Rc = (Salomon dan Motta, 2010)
Misalkan didapat sebuah nilai Ratio of compression sebesar 2.75. Itu berarti besar data
sebelum kompresi adalah 2.75 kali lipat dari besar data setelah dikompresi.
2. Compression ratio (Cr)
Compression ratio (Cr) adalah persentasi besar data yang telah dikompresi yang didapat
dari hasil perbandingan antara ukuran data setelah dikompresi dengan ukuran data
sebelum dikompresi.
Cr = x 100% (Salomon dan Motta, 2010)
Misalkan didapat sebuah nilai Compression ratio sebesar 35%. Itu berarti setelah
3. Redundancy (Rd)
Redundancy (Rd) adalah kelebihan yang terdapat di dalam data sebelum dikompresi. Jadi
setelah data dikompresi dapat dihitung Redundancy data yaitu persentasi dari hasil selisih
antara ukuran data sebelum dikompresi dengan data setelah dikompresi.
� = %−� (Salomon dan Motta, 2010)
Misalkan didapat sebuah nilai Redundancy sebesar 14%. Itu berarti besarnya kelebihan
BAB 3
ANALISIS DAN PERANCANGAN SISTEM
Bab ini akan menganalisis terhadap system yang akan dirancang dengan algoritma
kriptografi ElGamal dan algoritma kompresi Elias Gamma Code.
3.1 Analisis
Dalam merancang suatu sistem diperlukan analisis terhadap sistem yang akan dirancang
terlebih dahulu. Tujuan dari analisis ini sendiri adalah agar sistem yang dirancang
menjadi tepat guna dan ketahanan dari sistem tersebut akan lebih terjaga. Di samping itu
dengan dilakukannya analisis kita akan dapat mempermudah kerja kita dalam membuat
sistem, dan jika suatu saat nanti ada perbaikan atau penambahan dalam sistem tersebut,
maka akan mudah untuk diselesaikan.
Analisis sistem terdiri dari tahapan-tahapan berbeda yang mendekripsikan
pengembangan sistem. Dalam tugas akhir ini, ada dua fase analisis yaitu: analisis
masalah, dan analisis kebutuhan.
3.1.1 Analisis Masalah
Untuk dapat mengurangi ancaman yang dapat terjadi dalam pertukaran informasi
yang bersifat rahasia dalam sebuah proses komunikasi data dapat dilakukan dengan cara
melakukan pengkodean terhadap informasi yang akan disimpan atau dikirim.
Gambar 3.1. merupakan diagram Ishikawa yang dapat digunakan untuk
menganalisis masalah. Bagian kepala atau segiempat yang berada di sebelah kanan
Gambar 3.1 DiagramIshikawa Masalah Penelitian.
Sistem yang akan dibangun menggunakan Netbens versi 7.0.1 yang memudahkan
para pengguna untuk melakukan proses pengamanan dan kompresi file .
3.1.2 Analisis Kebutuhan
Analisis kebutuhan terbagi dua bagian, yaitu kebutuhan fungsional dan kebutuhan
nonfungsional. Kebutuhan fungsional mendeskripsikan aktivitas yang disediakan suatu
sistem. Sedangkan kebutuhan nonfungsional mendeskripsikan fitur, karakteristik dan
batasan lainnya.
3.1.2.1 Kebutuhan Fungsional
Kebutuhan fungsional adalah fungsi-fungsi yang harus dipenuhi pada aplikasi yang
dirancang. Kebutuhan fungsional yang harus dipenuhi aplikasi yang dirancang adalah
sebagai berikut:
b. Sistem harus mampu melakukan enkripsi dengan menggunakan ElGamal
setiap karakter yang berada dalam String yang telah dibaca sehingga
menghasilkan ciphertext, serta sistem harus mampu melakukan dekripsi
ciphertext menjadi String yang sama dengan String sebelum dikodekan.
c. Sistem Harus mampu melakukan kompresi dengan menggunakan algoritma
Elias Gamma Code setiap karakter yg berada dalam string yang bebentuk
cipherteks sehingga menghasilkan file yg telah dikompresi, serta mampu
melakukan dekompresi menjadi string yang sama dengan string berbentuk
cipherteks sebelum dikompresi
3.1.2.2 Kebutuhan Non Fungsional
Kebutuhan fungsional mencakup karakteristik berikut:
1. Performa
Perangkat lunak yang akan dibangun dapat menunjukkan hasil dari fungsi kriptografi
yang dilakukan oleh sistem.
2. Efisiensi
Sistem atau perangkat lunak yang akan dibangun harus sesederhana mungkin agar
mudah digunakan oleh pengguna, responsif.
3. Ekonomi
Sistem atau perangkat lunak yang akan dibangun harus dapat bekerja dengan baik
tanpa harus mengeluarkan biaya tambahan dalam penggunaan perangkat keras
maupun perangkat lunak.
4. Dokumentasi
Sistem atau perangkat lunak yang akan dibangun dapat menyimpan data hasil proses
enkripsi.
5. Manajemen kualitas
Perangkat lunak yang dibangun harus memiliki kualitas yang baik yaitu proses
6. Kontrol
Perangkat lunak yang dibangun akan menampilkan pesan error untuk setiap input
yang tidak sesuai.
3.2. Pemodelan Sistem
Pemodelan aplikasi yang dirancang bertujuan untuk menggambarkan semua kondisi dan
bagian-bagian yang berperan dalam sistem yang dirancang. Pemodelan aplikasi dilakukan
dengan membuat use-case diagram dan activity diagram.
3.2.1. Use-Case Diagram
Untuk menganalisa komponen-komponen yang berperan dalam sistem yang dirancang,
penulis menggunakan use-case diagram agar proses penganalisaan komponen dapat
dilakukan dengan mudah. Use-case diagram sistem pada aplikasi yang dirancang dapat
dilihat pada Gambar 3.2.
Gambar 3.2 Use-CaseDiagram Pada Sistem.
3.2.2. Activity Diagram
Activity diagram adalah diagram aktivitas yang mendeskripsikan proses kerja dalam
sebuah sistem yang sedang berjalan. Dalam diagram aktivitas ini dijelaskan proses kerja
3.2.2.1Activity Diagram Proses Pembangkit Kunci
Gambar 3.3 Activity Diagram Proses Pembangkit Kunci
Berdasarkan Gambar 3.3 untuk melakukan proses pembangkit kunci hal pertama yang
dilakukan adalah mengklik tombol bangkitkan kunci, dimana untuk nilai bilangan prima,
alpha, a dan x sudah ditentukan sendiri oleh system. Setelah selesai proses bangkitkan
kunci maka user menyimpan kunci publik dan privat yang nantinya akan digunakan
3.2.2.2Activity Diagram Proses Enkripsi ElGamal
Gambar 3.4 Activity Diagram Proses Enkripsi Pesan
Berdasarkan Gambar 3.4 untuk melakukan enkripsi hal yang pertama dilakukan adalah
input file yang akan dienkripsi, kemudian sistem menampilkan isi file yang akan
dienkripsi. Setelah itu, input file kunci publik yang telah disimpan, sistem akan
menampilkan kunci publik yang akan digunakan dalam proses enkripsi. Setelah
penginputan kunci selesai, proses enkripsi dapat dilakukan dan selanjutnya sistem akan
menampilkan file cipherteks hasil enkripsi.
3.2.2.3Activity Diagram Proses Kompresi Elias Gamma Code
Berdasarkan gambar 3.5 untuk melakukan kompresi hal yang pertama dilakukan adalah
input file cipherteks yang akan di kompresi, Kemudian sistem akan menampilkan isi file
cipherteks yang akan dikompresi, setelah itu kompresi file cipherteks tersebut, kemudian
sistem akan menampilkan penyimpanan file yang dikompresi selanjutnya simpan file
kompresi dan proses kompresi selesai.
3.2.2.4Activity Diagram Proses Dekompresi Elias Gamma Code
Gambar 3.6 Activity Diagram Proses Dekompresi Elias Gamma Code
Berdasarkan gambar 3.6 untuk melakukan dekompresi hal yang pertama dilakukan
adalah input file hasil kompresi, sistem akan menampilkan file dekompresi
tersebut.Setelah itu dekompresi file selanjtunya simpan file yang sudah didekompresi, dan
3.2.2.5Activity Diagram Proses Dekripsi ElGamal
Gambar 3.7 Activity Diagram Proses Dekripsi Pesan
Berdasarkan gambar 3.7 untuk melakukan dekrispi ElGamal, hal yang pertama
dilakukan adalah input file cipherteks (hasil dekompresi), setelah itu sistem akan
menampilkan isi file cipherteks, setelah itu input kunci privat yang telah disimpan,
selanjutnya dekripsi cipherteks, berikutnya sistem akan menampilkan hasil dekripsi
berupa palinteks awal seperti sebelum dilakukan proses enkripsi, dan simpan plainteks,
dan proses dekripsi selesai.
3.2.2.6 Sequence Diagram
Sequence Diagram adalah bentuk pemodelan sistem yang menggambarkan hubungan
antar objek atau objek yang saling berinteraksi melalui pesan dalam eksekusi. Diagram