APLIKASI ENKRIPSI DAN DEKRIPSI MENGGUNAKAN ALGORITMA RSA BERBASIS WEB Enung Nurjanah Teknik Informatika UIN Sunan Gunung Djati Bandung email :
[email protected]
Abstraksi Cryptography adalah suatu ilmu ataupun seni mengamankan pesan, dan dilakukan oleh cryptographer. data-data yang diamankan meliputi beberapa aspek seperti aspek keamanan pesan seperti kerahasiaan, integritas data, serta otentikasi. Salah satu algoritma kriptografi yang sering digunakan dalam proses pengamanan data yaitu algoritma RSA. RSA merupakan kependekan dari nama-nama penemu algoritma ini yaitu Ron, Shamir dan Adleman. RSA adalah salah satu algoritma yang menggunkan konsep kiptografi kunci publik (asimetri / kunci yang digunakan untuk mengenkripsi berbeda dengan yang digunakan untuk mendekripsi). Pada jurnal ini, penulis membahas kode program dan algortima RSA berdasarkan tabel ASCII menggunakan bahasa pemrograman PHP. Kata Kunci : Kritografi, RSA, ASCII, PHP I.
Pendahuluan
Algortima termasuk dalam kategori algorita asimetris, dimana kunci yang digunakan untuk mengenkripsi berbeda dengan yang digunakan untuk mendekripsi. berdasarkan sejarah algoritma ini dijabarkan tahun 1997 oleh Ron Rivest, Adi Shamir dan Len Adleman dari Massachusetts Institute of Techlologi.
Kata kriptografi berasal dari bahasa Yunani, dan berasal dari dua kata yaitu crypto dan graphia. Crypto berarti secret (rahasia) dan graphia berarti writing (tulisan). Menurut terminologinya, kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan ketika pesan dikirim dari suatu tempat ke tempat yang lain. Secara umum ada dua tipe algoritma kriptografi berdasarkan kuncinya yaitu algoritma simetris dan algoritma asimetris. Algoritma simetris adalah algoritma yang memiliki kunci enkripsi dan dekripsi yang sama, sedangkan untuk algoritma asimetris terdiri atas dua buah kunci yaitu kunci publik untuk melakukan enkripsi sedangkan kunci pribadi untuk melakukan dekripsi. Dalam algoritma kunci asimetris, kunci yang didistribusikan adalah kunci publik yang tidak diperlukan kerahasiaanya sedangkan kunci pribadi tetap disimpan atau tidak didistribusikan. Setiap orang yang memiliki kunci publik dapat melakukan proses enkripsi tetapi hasil dari enkripsi tersebut hanya bisa dibaca oleh orang yang memiliki kunci pribadi.
Algoritma tersebut dipatenkan oleh Massachusetts institute of Technologi pada tahun 1983 di amerika serikat sebagai U.S Patent 4.405.829. paten tersebut berlaku hingga 21 September 2000. semenjak algortima RSAdipublikasikan sebagai apliaksi paten, regulasi di sebagian besar Negara-negara lain tidak memungkinkan penggunaan paten. Ciri-ciri kriptografi kunci asimetri: Kunci enkripsi tidaksama dengan kunci dekripsi Algoritma kriptografinya disebut algoritma asimetri Contoh algoritma: RSA, Elgamal, dll. Konsep algoritma Asimetri dapat digambarkan dengan gambar berikut ini. 1
Proses Generate Key adalah proses untuk membangkitkan kunci yang digunakan untuk proses enkripsi maupun dekripsi. Rancangan proses generate key dapat dilihat pada Gambar 2. Gambar 1. Skema Algoritma Asimetri Algoritma Kriptografi RSA menggunakan beberapa persamaan dalam melakukan proses generate key, proses enkripsi dan dekripsi A. Generate kay Algoritma Kriptografi RSA memerlukan sepasang kunci yang dibangkitkan dengan memilih bilangan prima p dan q, beberapa besaran yang digunakan dalam mengenerate kunci RSA yaitu :
Besaran p dan q (bilangan prima) n=pxq Totient(n) = (p 1)(q - 1) e (Kunci Enkripsi) d (Kunci Dekripsi) m (Plaintext) c (Ciphertext)
Sifat Rahasia Tidak Rahasia Rahasia Tidak Rahasia Rahasia Rahasia Tidak Rahasia
B. Proses Enkripsi Proses enkripsi merupakan proses untuk menyandikan kalimat plaintext yang kita miliki. cara melakukannnya yatiu dengan menggunakan formula c = p^e mod n; dimana e merupakan ciphertext, p (plaintext), e merupakan kunci enkripsi, dan n merupakan kunci public. C. Proses Dekripsi Proses dekripsi merupakan proses untuk mengembalikan kalimat yang telah disandikan menjadi kalimat dalam bentuk yang dapat dipahami. formula yang digunakan yaitu p = c ^ d mod n, dimana p merupakan plaintext, c (ciphertext), d (kunci dekripsi) dan n merupakan kunci public. II.
Metode Penelitian
A. Generate Key
Gambar 2. Diagram alir proses B. Proses Enkripsi Proses enkripsi merupakan proses untuk mengubah data sumber menjadi file ciphertext dengan menggunakan nilai-nilai kunci enkripsi dan kunci publik yang dihasilkan dari proses
generate key. Rancangan proses enkripsi dapat dilihat pada Gambar 3.
keamanan data yang siap untuk digunakan. Form utama merupakan halaman awal aplikasi kriptografi yang terdiri atas berbagai macam menu yang digunakan untuk membuka halaman-halaman lain yang berkaitan. Tampilan halaman utama aplikasi sistem kriptografi RSA dapat dilihat pada Gambar 5.
Gambar 5. Tampilan halaman Utama
B. Generate Kunci Gambar 3. Diagram Alur Proses Enkripsi C. Proses Dekripsi Proses dekripsi adalah proses untuk mengembalikan ciphertext kedalam bentuk plaintext, dengan menggunakan kunci pribadi dekripsi dan kunci public. Rancangan proses dekripsi dapat dilihat pada Gambar 4.
Hal yang harus dilakukan pertama kali dalam proses mengenerate kunci yaitu dengan menginputkan dua bilangan prima yatiu p dan q, kemudian setelah menginputkan bilangan prima p dan q, aplikasi akan menghitung kunci public (n), kunci enkripsi ( c) dan kunci dekripsi (d). Form Generate key dapat dilihat pada form gamb 6.
Gambar 6. Tampilan generate key Proses Generate kunci ini dilakukan dengan menggunakan cara sebagai berikut :
Pilih bilangan prima p (misal : p = 13 ) dan pilih bilangan prima q (misal : q = 17) 2. Hitung nilai untuk kunci public n dengan formula : n = p x q = 13 x 17 = 221 3. Hitung totien n dengan formula : t(n)= (p-1)(q-1) = (13-1)(17-1) = 192 1.
Gambar 3. Diagram Alur Proses Enkripsi III.
Hasil dan Pembahasan
A. Halaman Utaman Setelah proses perancangan dilakukan maka dihasilkan sebuah aplikasi sistem
Pilih kunci e yang merupakan bilangan yang relative prima terhadap t(n) misal, e=5. 5. Cari kunci d dengan menggunakan algoritma eucleadean yang di perluas, yaitu dengan cara berikut : 4.
192 = 38 x 5 + 2 5 = 2x2+1 2 = 2x1+0 n = 1, a1 = 5, q1 = 38 n = 2, a2 = 2, q2 = 2 n = 3, a3 = 1, q3 = 2 t0 = 0; t1 = 1; t2 = t0 – q1.t1 = 0 – 38(1) = -38 t3 = t1 – q2.t2 = 1 – 2(-38) = 77 didapatkan kunci d = 77 6. didapatkan kunci n (public) = 221 e (enkripsi) = 5 d (dekripsi) = 77 Perose generate key merupakan tahapan paling penting dalam proses enkripsi dan dekripsi dengan menggunakan algoritma RSA, karena pada tahap ini adalah tahap untuk mencari kunci yang dapat digunakan untuk enkripsi dan dekripsi. Berdasarkan percobaan jika bilangan yang diambil untuk p dan q bukan bilangan prima maka hal ini akan berdampak pada peroses dekripsi yaitu data yang telah di enkripsi tidak dapat di kembalikan menjadi bentuk plaintext, hal ini dikarenakan pada saat penghitungan mencari kunci d dengan menggunakan algoritma eucleadean, disitu yang dicari adalah bilangan FPB dengan cara membagi bilangan dari totien n dengan bilangan kunci e hingga sisa pembagiannya bernilai 0, nilai dari FPB nya kembali menjadi nilai totien n. C. Proses Enkripsi Setelah kunci enkripsi dan kunci public didapatkan, proses selanjutnya yatiu melakukan enkripsi, dalam hal ini enkripsi yang dilakukan berupa data text. prosesnya yairu inputkan text yang akan di enkripsi, kemudian inputkan kunci public dan kunci enkripsinya. Form enkripsi dapat dilihat pada gambar berikut :
Gambar 7. Form proses Enkripsi Output ciphertext yang dihasilkan yaitu dalam bentuk bilangan decimal, untuk memisahkan tiap katanya digunakan tanda titik, sehingga dalam proses dekripsi aplikasi akan lebih mudah dalam proses penghitungan serta pengembalian dalam bentuk plaintext. Proses dekripsi dilakukan dengan menggunakan formula : c= Keterangan : c = Ciphertext m = Plaintext e = kunci enkripsi n = kunci public Contoh enkripsi kata “SAYA” c1 = 70 c2 = c3 = c4 = Kata “SAYA” setelah di enkripsi menjadi “70.182.72.182”. D. Proses Dekripsi Peroses dekripsi atau proses pengembalian data yang telah disandikan kedalah bentuk plaintext, yaitu dilakukan dengan cara menginputkan ciphertext pada textarea decription, kemudian inputkan kunci public dan inputkan kunci dekripsinya. Form Proses dekripsi dapat digambarkan dengan gambar berikut :
Gambar 8. Form Dekripsi
Setelah di dekripsi kalimat ciphertext kembali lagi menjadi kaliamt plaintext yang dapat di baca. Teknik Dekripsi dilakukan dengan menggunakan formula : m= Keterangan : c = Ciphertext m = Plaintext e = kunci enkripsi n = kunci public Contoh proses Dekripsi mengembalikan ciphertext “70.182.72.182”. Untuk menghitung perpangkatan yang jumlahnya terlalu banyak, gunakan algoritma sequre and multiply, Langkah-langkahnya yatiu : Langkah-langkahnya : - Binerkan kunci d (yang menjadi pangkatnya). - Pangkatkan nilai biner dari d satu per satu dengan 2, kemudian kalikan dengan nilai m. - Hasil perhitungan pada langkah kedua moduluskan dengan nilai n. - Ambil hasil akhir dari baris paling akhir. Contoh biner dari kunci d = 221 adalah 11011101, prosesnya dijelaskan pada tabel dibawah ini : Untuk ciphertext 70 : c1 = Biner 1 1 0 1 1 1 0 1
70 Proses 1^2 x 70 〖70〗^2 x 70 70 ^ 2 〖38〗^2 x 70 〖82〗^2 x 70 〖8〗^2 x 70 70 ^ 2 〖38〗^2 x 70
Hasil (mod n=221) 70 8 38 83 8 59 38 83 83
Lakukan proses diatas sampai ditemukan plaintext dari semua ciphertext, seperti berikut ini : m1 = 83 m2 = m3 = m4 =
IV. Simpulan Simpulan yang diperoleh setelah melakukan perancangan, pembuatan dan pengujian program Sistem Kriptografi RSA yaitu: 1. Algoritam RSA cukup mudah untuk diterapkan dalam proses penyembunyian informasi, dengan tingkat keamanan yang cukup kuat, bahkan menurut penemu dari algoritma ini, jika bilangan prima untuk p dan q berkisar 200 digit , maka butuh 400 milyar tahun untuk memfaktorkannya. hal ini menunjukan jika algoritma RSA cukup baik dalam proses pengamanannya. 2. Untuk membangun kunci pada Algoritma RSA tidak dapat digunakan dengan menggunakan bilangan selain bilangan prima, karena hal ini akan berdampak pada proses penghitungan kunci dekripsi.
Daftar Pustaka
Devha, C. P. (2013). Pengamanan Pesan Rahasia menggunakan Algoritma RIvher Shank Adleman (RSA). Bandung: perpustakaan.upi.edu. Munir, R. (2010). Matematika Diskrit. Bandung: Informatika. Tamam, M. T. (2010). Penerapan Algoritma Kriptografi ElGamal . Jurnal EECCIS Vol. IV, No. 1, Juni 2010, 13.