TEKNIK PEMECAHAN KUNCI PRIVAT ELGAMAL DENGAN
ALGORITMA BABY STEP GIANT STEP
SKRIPSI
GUNALAN ANGGIRASA
101401038
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015
TEKNIK PEMECAHAN KUNCI PRIVAT ELGAMAL DENGAN ALGORITMA BABY STEP GIANT STEP
SKRIPSI
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh ijazah
Sarjana Ilmu Komputer
GUNALAN ANGGIRASA
101401038
PROGRAM STUDI S1 ILMU KOMPUTER
FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015
iii
PERNYATAAN
TEKNIK PEMECAHAN KUNCI PRIVAT ELGAMAL DENGAN ALGORITMA BABY STEP GIAT STEP
SKRIPSI
Saya mengakui bahwa skripsi ini adalah hasil karya saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, 10 Maret 2015
Gunalan Anggirasa 101401038
ii
PERSETUJUAN
Judul : TEKNIK PEMECAHAN KUNCI PRIVAT
ELGAMAL DENGAN ALGORITMA BABY STEP GIANT STEP
Kategori : SKRIPSI
Nama : GUNALAN ANGGIRASA
Nomor Induk Mahasiswa : 101401038
Program Studi : SARJANA(S1) ILMU KOMPUTER
Fakultas : ILMU KOMPUTER DAN TEKNOLOGI INFORMASI (Fasilkom-TI)
Komisi Pembimbing:
Dosen Pembimbing II Dosen Pembimbing I
Dian Rachmawati,S.Si,M.Kom M.Andri Budiman,ST,M.Comp.Sc,MEM
NIP. 1983 0723 2009 1220 04 NIP. 1975 1008 2008 0110 11
Diketahui/Disetujui oleh
Program Studi S1 IlmuKomputer Ketua,
Dr. Poltak Sihombing, M.Kom NIP. 1962 0317 1991 0210 01
iv
UCAPAN TERIMA KASIH
Puji dan syukur penulis ucapkan kehadirat Tuhan YME, karena rahmat dan izin-Nya
penulis dapat menyelesaikan skripsi ini. Banyak bantuan berupa uluran tangan, budi
baik, buah pikiran dan kerjasama yang telah penulis terima selama menempuh studi
sampai dengan penyelesaian studi (skripsi) ini. Oleh karena itu, seyogianya penulis
menyampaikan ucapan terima kasih kepada pihak-pihak yang telah membantu.
Ucapan terima kasih penulis sampaikan kepada:
1. Bapak Prof. Subhilhar MA, 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 S-1 Ilmu
Komputer Universitas Sumatera Utara dan selaku Dosen Pembanding I yang
telah memberikan kritik dan saran dalam penyempurnaan skripsi ini.
4. Ibu Maya Silvi Lydia, B.Sc, M.Sc. selaku Sekretaris Program Studi S-1 Ilmu
Komputer Universitas Sumatera Utara.
5. Bapak M. Andri Budiman, S.T., M.Comp.Sc., M.E.M. selaku Dosen
Pembimbing I dan Dosen Pembimbing Akademik yang telah memberikan
bimbingan dan dukungan kepada penulis.
6. Ibu Dian Rachmawati, S.Si., M.Kom. selaku Dosen Pembimbing II yang telah
memberikan bimbingan dan dukungan kepada penulis.
7. Bapak Amer Sharif, S.Si., M.Kom selaku Dosen Pembanding II yang telah
memberikan kritik dan saran dalam penyempurnaan skripsi ini.
8. Ayahanda Dr. Suba Jaido Naidu dan Ibunda Dr. B. Teinmalar, serta adik-adik
saya Rai Wegudani dan Lovelyn Partiba yang selalu memberikan kasih sayang
dan dukungannya kepada penulis.
9. Seluruh tenaga pengajar dan pegawai pada Fakultas Ilmu Komputer dan
Teknologi Informasi USU, terkhususnya di Program Studi S-1 Ilmu Komputer.
v
10. Rekan-rekan senior khususnya abangda Angga Ricardo Malau S. Kom,
Johannes Hutabarat S. Kom, Octavianus Sianturi, Septian Dwi Cahya Panjaitan,
Septian Maihadi, Samuel Tarigan S. Kom, Johnri Sibarani S.Kom dan yang
lainya yang selalu memberikan semangat dan dorongan dan motivasi kepada
penulis selama menyelesaikan skripsi ini.
11. Rekan-rekan kuliah Timothy, Johanes P. Saragih , Lorent Oliver Barus, Rivai H
Purba, Kurniawan Wardani Hutagaol, Hengky Prayson Gulo, Yansen Boston
Simatupang, Arifin dan yang lainnya yang selalu memberikan semangat dan
dorongan, serta motivasi kepada penulis selama menyelesaikan skripsi ini.
12. Rekan-rekan Duelist Medan, AC3, ILKOM USU COC, IMILKOM, RHF,
IKLC, RTIK SUMUT dan lainya yang tidak bisa disebutkan satu persatu, yang
selalu memberikan semangat dan dorongan kepada penulis selama
menyelesaikan skripsi ini.
Semoga Tuhan YME melimpahkan berkah dan kasih sayang-Nya kepada semua
pihak yang telah memberikan bantuan, semangat, dukungan dan perhatian kepada
penulis dalam menyelesaikan skripsi ini. Semoga skripsi ini bermanfaat bagi penulis,
pendidikan, masyarakat, organisasi atau negara.
Medan, 10 Maret 2015
Penulis
vi
TEKNIK PEMECAHAN KUNCI PRIVAT ELGAMAL DENGAN ALGORITMA BABY STEP GIANT STEP
ABSTRAK
Algoritma kriptografi ElGamal merupakan sistem kriptografi asimetrik dimana terdapat dua pasang kunci yaitu kunci publik (p, α, αa) dan kunci privat (a). Kunci untuk enkripsi bersifat umum dan dapat digunakan semua orang sehingga dinamakan kunci publik. Sedangkan kunci untuk dekripsi bersifat rahasia dan hanya dimiliki oleh penerima pesan, oleh karena itu dinamakan kunci privat. Keuntungan algoritma ElGamal terletak pada keamanannya yang bergantung pada sulitnya memecahkan perhitungan logaritma diskrit dan kerugiannya adalah pada ciphertext-nya yang mempunyai panjang dua kali lipat dari plaintext-nya. Untuk menguji keamanan dari algoritma kriptografi ElGamal penulis akan melakukan pemecahan kunci yang bertujuan untuk melihat seberapa aman algoritma ElGamal bertahan dari serangan terhadap perhitungan logaritma diskritnya. Pada penelitian ini, digunakan algoritma Baby-step Giant-step untuk memecahkan kunci privat ElGamal. Dalam pengujiannya, akan digunakan uji coba data untuk melihat efektivitas dan efisiensi dari algoritma Baby-step Giant-step dalam memecahkan kunci privat ElGamal berdasarkan lama waktu prosesnya. Hasil dari pengujian menunjukkan bahwa semakin banyak faktor prima sebuah bilangan, maka akan semakin lama proses pembangkitan kuncinya. Pada proses pemecahan kunci publik 10 digit dengan p = 1570736149 , α = 806863671 , dan αa = 55171560 lama waktu proses adalah 172817 ms. Sedangkan pada proses pemecahan kunci publik 11 digit mencapai waktu hingga lebih dari 1 jam dikarenakan pencarian invers modulo yang sangat lama.
Kata kunci: Kriptografi, Kriptanalisis, Logaritma Diskrit, Hacking, ElGamal,
Baby-step Giant-step.
vii
ELGAMAL PRIVATE KEY SOLVING TECHNIQUE WITH BABY STEP GIANT STEP ALGORITHM
ABSTRACT
ElGamal cryptography algorithm is an asymetric cryptography system where there are two pair of keys which are public key and private key. Encryption key is made public so everyone can use it; therefore it is named public key. While decryption key is made secret that the only one that can use it is only the receiver; therefore it is named private key. The advantage of ElGamal algorithm is in its security that depends on the difficulty in solving discrete logarithm calculation and the disadvantage is in the ciphertext which have twice the original size from the plaintext. To test Elgamal cryptography algorithm security, the writer will do the key solving process which the purpose is to see how safe the algorithm in withstanding the attack to the discrete logarithm calculation. In this research, Baby-step Giant-step algorithm used to solve ElGamal private key. In testing, data testing will be used to see the effectivity and eficiency of Baby-step Giant-step algorithm in solving ElGamal private key base on its process time. The test result shows that the more prime factor a number has, the longer the process would be in generating key. In 10 digits hacking process with p = 1570736149 , α
= 806863671 , dan αa = 55171560 the processing time took 172.817 ms. While in
11 digits hacking process, the processing time took more than an hour because of inverse modulo searching process that took a long time.
Kata kunci: Cryptography, Cryptanalysis, Discrete Logarithm, Hacking,
ElGamal, Baby-step Giant-step.
viii
DAFTAR ISI
PERSETUJUAN ii
PERNYATAAN iii
UCAPAN TERIMA KASIH iv
ABSTRAK vi
ABSTRACT vii
DAFTAR ISI viii
DAFTAR TABEL x
DAFTAR GAMBAR xi
BAB 1 PENDAHULUAN
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Batasan Masalah 2
1.4 Tujuan Penelitian 3
1.5 Manfaat Penelitian 3
1.6 Metodologi Penelitian 4
1.7 Sistematika Penulisan 5
BAB 2 TINJAUAN PUSTAKA
2.1 Kriptografi 6
2.2 Keamanan Data 9
2.3 Bilangan Prima dan Komposit 9
2.4 Bilangan Prima Aman 9
2.5 Faktor Persekutuan Terbesar (Greatest Common Divisor) 10
2.6 Relatif Prima 10
2.7 Kekongruenan 11
2.8 Fungsi Euler 11
2.9 Ordo Modulo 11
2.10 Modulo Invers 12
2.11 Akar Primitif (Primitive Roots) 12
2.12 Metode Pembangkit Bilangan Prima Lehmann 13
2.13 Algoritma ElGamal 15
2.14 Pembentukan Kunci 15
2.15 Proses Pembentukan Kunci 16
2.16 Enkripsi 16
2.17 Dekripsi 19
2.18 Baby-step Giant-step 20
2.19 Penelitian yang Relevan 22
BAB 3 ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisis Sistem 24
3.1.1 Analisis Masalah 24
ix
3.1.2 Analisis Kebutuhan 25
3.1.2.1 Kebutuhan Fungsional 25
3.1.2.2 Kebutuhan Non-Fungsional 26
3.2 Pemodelan 27
3.2.1 Use Case Diagram 27
3.2.2 Sequence Diagram 31
3.2.3 Activity Diagram 32
3.3 Pseudocode dan Flowchart Program 33
3.3.1 Pseudocode dan FlowchartLehmann Primality Test 33
3.3.2 Pseudocode dan FlowchartPrimitive Roots 36
3.3.3 Pseudocode dan Flowchart Enkripsi ElGamal 37
3.3.4 Pseudocode dan Flowchart Dekripsi ElGamal 41
3.3.5 Pseudocode dan FlowchartModulo Inverse 44
3.3.6 Pseudocode dan FlowchartBaby-step Giant-step 45
3.4 Perancangan Antarmuka (Interface) 48
3.4.1 Form Utama 48
3.4.2 Form Enkripsi 49
3.4.3 Form Baby-step Giant-step 50
3.4.4 Form Dekripsi 51
3.4.5 Form Tentang 52
3.4.6 Form Bantuan 52
BAB 4 IMPLEMENTASI DAN PENGUJIAN SISTEM
4.1 Implementasi Sistem 54
4.1.1 Form Utama 54
4.1.2 Form Enkripsi 55
4.1.3 Form Baby-step Giant-step 56
4.1.4 Form Dekripsi 57
4.1.5 Form Tentang 59
4.1.6 Form Bantuan 60
4.2 Pengujian 60
4.2.1 Pengujian Sistem Algoritma ElGamal Aplikasi 61
4.2.2 Pengujian Proses Bangkit Kunci Algoritma ElGamal 67
4.2.3 Pengujian Proses Enkripsi Algoritma ElGamal 68
4.2.4 Pengujian Proses Dekripsi Algoritma ElGamal 70
4.2.5 Pengujian Proses Baby-step Giant-step 71
BAB 5 KESIMPULAN DAN SARAN
5.1 Kesimpulan 73
5.2 Saran 74
DAFTAR PUSTAKA 75
LAMPIRAN
x
DAFTAR TABEL
Tabel 2.1 Konversi Blok-blok Karakter Pesan ke Kode ASCII 18
Tabel 2.2 Proses Enkripsi 18
Tabel 2.3 Proses Dekripsi 20
Tabel 2.4 Proses Baby-step [1] 21
Tabel 2.4 Proses Baby-step [2] 22
Tabel 2.5 Proses Giant-step 22
Tabel 3.1 Narrative Use-Case Bangkitkan Kunci 28
Tabel 3.2 Narrative Use-Case Enkripsi 29
Tabel 3.3 Narrative Use-Case Dekripsi Pesan [1] 29
Tabel 3.3 Narrative Use-Case Dekripsi Pesan [2] 30
Tabel 3.4 Narrative Use-Case Pemecahan Kunci 30
Tabel 4.1 Pengujian Lama Proses Algoritma ElGamal
Terhadap Panjang Kunci 67
Tabel 4.2 Pengujian Lama Proses Enkripsi
Terhadap Rentang Bilangan Acak b 69
Tabel 4.3 Pengujian Lama Proses Pemecahan Kunci Privat
Terhadap Panjang Kunci ElGamal 71
xi
DAFTAR GAMBAR
Gambar 2.1 Proses Enkripsi dan Dekripsi Algoritma Simetris 7
Gambar 2.2 Proses Enkripsi dan Dekripsi Algoritma Asimetris 7
Gambar 3.1 Diagram Ishikawa 25
Gambar 3.2 Diagram Use-Case 27
Gambar 3.3 Diagram Sequence untuk ElGamal User 31
Gambar 3.4 Diagram Sequence untuk Hacker 31
Gambar 3.5 Diagram Activity untuk ElGamal User 32
Gambar 3.6 Diagram Activity untuk Hacker 33
Gambar 3.7 Flowchart Lehmann Primality Test 35
Gambar 3.8 Flowchart Primitive Roots 37
Gambar 3.9 Flowchart Enkripsi ElGamal 40
Gambar 3.10 Flowchart Dekripsi ElGamal 43
Gambar 3.11 Flowchart Modulo Inverse 44
Gambar 3.12 Flowchart Baby-step Giant-step 47
Gambar 3.13 Rancangan Form Utama Aplikasi 48
Gambar 3.14 Rancangan Encryption Form 49
Gambar 3.15 Rancangan Form BSGS Aplikasi 50
Gambar 3.16 Rancangan Decryption Form Aplikasi 51
Gambar 3.17 Rancangan About Form Aplikasi 52
Gambar 3.18 Rancangan Help Form Aplikasi 53
Gambar 4.1 Form Utama 55
Gambar 4.2 Form Enkripsi 56
Gambar 4.3 Form Baby-step Giant-step 57
Gambar 4.4 Form Dekripsi 58
Gambar 4.5 Form Bantuan 59
Gambar 4.6 Form Tentang 60
Gambar 4.7 Isi Pesan Plaintext yang Diuji Algoritma ElGamal 62
Gambar 4.8 Proses Pembangkitan Kunci Publik dan Kunci Privat 63
Gambar 4.9 Proses Enkripsi Pesan dengan Algoritma ElGamal 63
Gambar 4.10 Pesan Enkripsi Berhasil 64
Gambar 4.11 Hasil Enkripsi Plaintext 64
Gambar 4.12 Proses Pemecahan Kunci dengan Algoritma Baby-step Giant-step 65
Gambar 4.13 Proses Dekripsi Pesan dengan Algoritma ElGamal 65
Gambar 4.14 Hasil Dekripsi Pesan dengan Algoritma ElGamal 66
Gambar 4.15 Grafik Panjang Digit Kunci dengan Waktu Proses Bangkit Kunci 67
Gambar 4.16 Grafik Panjang Digit Kunci dengan Waktu Proses Enkripsi 68
Gambar 4.17 Grafik Panjang Digit Kunci dengan Waktu Proses Dekripsi 70
Gambar 4.18 Grafik Panjang Digit Kunci dengan
Waktu Proses Pemecahan Kunci Privat 72