Prosiding Seminar Nasional Matematika dan Terapannya 2016 p-ISSN : 2550-0384; e-ISSN : 2550-0392 ENKRIPSI DAN DEKRIPSI TEKS MENGGUNAKAN ALGORITMA ASYMMETRIS ELGAMAL Akik Hidayat Prodi Teknik Informatika, Fakultas MIPA, Universitas Pdjadjaran Jl. Raya Bandung Sumedang KM 21 Jatinangor Sumedang 45363 [email protected] Erick Paulus Prodi Teknik Informatika,Fakultas MIPA, Universitas Pdjadjaran Jl. Raya Bandung Sumedang KM 21 Jatinangor Sumedang 45363 ABSTRACT. ElGamal is an algorithm that uses asymmetric cryptosystem is an algorithm that uses the public key to the private key encryption and decryption process. Excess asymmetric algorithms are the key distribution process in media such as the internet are not safe, do not require confidentiality. Because the keys are distributed is a key public.Then if this key is lost or known by others who are not entitled to, then the message password remains secure. While the private key (secret) remains stored (not distributed). By using ElGamal can use key sizes smaller than cryptosystems like this RSA. ElGamal has a strong security with short key lengths. While the goal to be achieved is to apply the method of the ElGamal cryptosystem using the programming language C ++. Keywords: asymmetric encryption, decryption, cryptosystem, public key, private key. ABSTRAK. Elgamal merupakan kriptosistem yang menggunakan algoritma asymmetris yaitu suatu algoritma yang menggunakan kunci public pada proses enkripsi dan kunci private pada proses dekripsinya. Kelebihan algoritma asimetris ini adalah proses pendistribusian kunci pada media yang tidak aman seperti internet, tidak memerlukan kerahasiaan. Karena kunci yang didistribusikan adalah kunci publik.Sehingga jika kunci ini sampai hilang atau diketahui oleh orang lain yang tidak berhak, maka pesan sandi yang dikirimakan tetap aman. Sedangkan kunci private (rahasia) tetap disimpan (tidak di distribusikan). Dengan menggunakan Elgamal dapat menggunakan ukuran kunci yang lebih kecil dibandingkan dengan kriptosistem seperti RSA. Kemampuan ini membuat Elgamal mempunyai keamanan yang kuat dengan panjang kunci yang pendek. Sedangkan tujuan yang ingin dicapai yaitu mengaplikasikan metode kriptosistem Elgamal menggunakan bahasa pemrograman C++. Kata Kunci: asimetris, enkripsi, dekripsi, kriptosistem, kunci publik, kunci private. Enkripsi dan Dekripsi Teks 233 1. PENDAHULUAN ElGamal adalah suatu algoritma enkripsi yang asimetris, seperti pada gambar berikut ini : Cara enkripsi ini mempunyai banyak kelebihan, salah satunya adalah setiap orang hanya perlu memiliki satu set kunci, tanpa peduli berapa banyak orang yang akan diajak berkomunikasi. Jadi jika ada n orang yang berkomunikasi dengan cara ini, hanya dibutuhkan n set kunci saja. Selain itu, cara enkripsi ini tidak membutuhkan saluran yang aman untuk pengiriman kunci, sebab kunci yang dikirim ini memang harus diketahui oleh publik [1]. Cara enkripsi ini sangat praktis sehingga dapat digunakan oleh awam. Setiap orang yang menggunakan enkripsi ini harus mempunyai dua buah kunci, yaitu kunci rahasia yang hanya diketahui oleh dirinya sendiri dan yang lain disebut kunci public yang disebarkan kepada orang lain. Kedua kunci ini dibuat secara acak secara matematis. Jika A akan mengirimkan pesan kepada si B, si A harus meng-enkrip pesan itu dengan kunci public milik si B. Pesan si A yang telah dienkrip dengan menggunakan kunci publik si B, hanya bisa dibuka dengan menggunakan kunci rahasia B. Walaupun dienkrip dengan menggunakan kunci public si B, pesan ini tidak bisa dibuka dengan kunci public itu sendiri. Si B wajib untuk menjamin keamanan kunci rahasianya. ElGamal Cryptosystem berdasarkan atas problema Algoritma Discrete, Pertama kita awal dengan men-setting pada suatu lapangan terhingga (Zp), dimana p adalah bilangan prima, dijelaskan pada Gambar 1, Selain itu diperlukan Multiplicative Group Zp* (Cyclic) dan sebuah Generator Zp* yang disebut primitive Element yaitu anggota dari himpunan Multiplicative Group Zp*. Multiplicative Group adalah bilangan prima pada Zp yang memenuhi sifat-sifat : asosiatif, mempunyai identitas dan mempunyai invers. Contoh Multiplicative Group Zp* (Cyclic), dengan p=12 : Purwokerto, 3 Desember 2016 234 A. Hidayat dan E. Paulus a/b 1 5 7 11 1 1 5 7 11 5 5 1 11 7 7 7 11 1 5 11 11 7 5 1 Multiplicative Group Z12* = {1,5,7,11} 2. METODE PENELITIAN DAN LANDASAN TEORI 2.1 Metode Penelitian Metode yang digunakan dalam penelitian ini adalah : a. Melakukan studi literatur yang berkaitan dengan penelitian ini. b. Perhitungan menggunakan alat bantu Excell. 2.2 Landasan Teori Ambil p sebagai bilangan prima, sedemikian hingga berlaku pada Zp, kemudian ambil € Zp*, yang merupakan elemen primitif. Ambil P = Zp*, C = Zp* x Zp*, ambil a dengan 0 a p-2. Definisikan : K = {( P, ,a,) : a (mod p)}. dengan nilai merupakan public key, sedangkan a adalah private key. Untuk K = (P, ,a,), dan ambil bilangan acak k pada Zp-1, kemudian untuk melakukan enkripsi, definisikan : e K (x,k) = (y1,y2) dimana y1 = k mod p dan y2 = x k mod p Purwokerto, 3 Desember 2016 Enkripsi dan Dekripsi Teks 235 untuk y1,y2 € Zp*, Untuk melakukan dekripsi[2], definisikan : d K (y1,y2)= y2(y1 a)-1 mod p 3. HASIL DAN PEMBAHASAN Tabel korespondensi yang digunakan : A B C D E F G H I 1 2 3 4 5 6 7 8 9 J K L M N O P Q R 10 11 12 13 14 15 16 17 18 S T U V W X Y Z 19 20 21 22 23 24 25 26 Kami akan mencoba mengenkripsi huruf J(10), Tahap Setting up : Melakukan setting up, yaitu memilih p, private key dan public key, dengan cara : Langkah 1 : Pilih p = 29 (harus cukup besar, minimal dapat meng-akomodasi karakter yang akan digunakan, karena kaitan akan bekerja pada Zp ) Langkah 2 : Pilih primitive element dari p, dengan 235 = 2. Langkah 3 : Pilih sebuah private key, ambil a = 6. Langkah 4 : Menghitung nilai (public key), dengan =a (mod p) = 26(mod 29) = 6. Hasil yang didapat bekerja dalam Module 29, private key = 6, publik key = 6. Tahap Enkripsi : Plaintext = j = 10, menggunakan public key = 6 1. Ambil angka a secara random k = 3 (k Zp-1) Purwokerto, 3 Desember 2016 236 A. Hidayat dan E. Paulus y1 = k mod p = 23 mod 29 = 8 2. Hitung y2 = x k mod p =10 x 63 mod 29 = 14 3. Didapat Ciphertext (8,14) Tahap Dekripsi : Untuk men-dekripsi-kan C=(8,14) dengan rumus : d K (y1,y2) = y2(y1 a)-1 mod p 1. Hitung : y1 a = 86 = 13 mod 29 = 13 2. Hitung : y2(y1 a)-1 mod 29 = 14(13)-1 mod 29 = 10 mod 29 = 10 3. Didapat Plaintext 10 = j. 4. IMPLEMENTASI P 29 Bilangan Prima G 2 Primitive element modulo p X 6 private key (merupakan angka dari 1 sampai dengan p-1) K 3 Bilangan acak Himpunanan plaintext (modulo p) M 6 Y Public Key Kita akan mencoba mengenkripsi (AKIKHIDAYAT) m={0,10,8,10,7,8,3,0,24,0,19} Enkripsi M 0 10 8 10 7 8 3 0 24 0 19 y1 8 8 8 8 8 8 8 8 8 8 8 y2 0 14 17 14 4 17 10 0 22 0 15 Purwokerto, 3 Desember 2016 Enkripsi dan Dekripsi Teks 237 Dekripsi Plaintext Private key 6 GCD(29,13)=1 1/13 (mod 29) 9 Artinya 16 mempunyai invers dengan menggunakan algorithma Euclidean untuk menentukan nilai inversnya y1x 13 13 13 13 13 13 13 13 13 13 13 M 0 10 8 10 7 8 3 0 24 0 19 Plaintext = AKIKHIDAYAT ( 0, 10, 8, 10, 7, 8, 3, 0, 24, 0, 19 ) Alfabet Korespondensi satu-satu Hasil Enkripsi Hasil (Ciphertext) Dekripsi (Plaintext) A 0 (8,0) 1 K 10 (8,14) 11 I 8 (8,17) 9 K 10 (8,14) 11 H 7 (8,4) 8 I 8 (8,17) 9 D 3 (8,10) 4 A 0 (8,0) 1 Y 24 (8,22) 25 A 0 (8,0) 1 T 19 (8,15) 20 Purwokerto, 3 Desember 2016 238 A. Hidayat dan E. Paulus DAFTAR PUSTAKA Shala, M., Primes Number in Cryptography, University of Greenwich, 2004. Stinson, D. R., Cryptography : Theory and Practice, CRC Press, Boca Raton, Florida, 1956. Purwokerto, 3 Desember 2016