Aplikasi Website Pengamanan File Dokumen Menggunakan Kriptografi RSA
on
p-ISSN: 2301-5373
e-ISSN: 2654-5101
Jurnal Elektronik Ilmu Komputer Udayana
Volume 11, No 1. August 2022
Aplikasi Website Pengamanan File Dokumen Menggunakan Kriptografi RSA
I Made Ari Widiarsanaa1, I Gusti Ngurah Anom Cahyadi Putraa2
I Ketut Gede Suhartanaa3, Luh Gede Astutia4, I Putu Gede Hendra Suputraa5 I Wayan Suprianaa6
aProgram Studi Informatika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Udayana Badung, Bali, Indonesia
Abstract
Data security is something that needs to be considered in maintaining the confidentiality of information, especially those that only contain information that can be known by the authorized party. There are still many cases of data leakage that occur in Indonesia, especially in documents. Documents can be secured using cryptographic techniques. One of the well-known cryptography is RSA Cryptography. The security of RSA cryptography lies in the difficulty of factoring large numbers into prime factors. In previous research conducted by (Azhar & Yuliany, 2019)[1] they could only encrypt files with the .pdf extension and also the images contained in the document were not successfully encrypted. The implementation of RSA cryptography will be made using the python programming language based on the website. The system created has a success rate of 100% in encrypting documents for each document, and in decrypting it has a success rate of 85% to 96%.
Keywords: Data Security, Cryptography, RSA, Website, Django, Python
Pada saat ini penggunaan internet sudah seperti kebutuhan primer di masyarakat dunia. Teknologi internet semakin hari semakin kian berkembang. Keamanan data merupakan hal yang perlu diperhatikan dalam menjaga kerahasiaan informasi, terutama yang hanya memuat informasi yang dapat diketahui oleh pihak yang berwenang. Ada risiko penyadapan saat mengirim data atau informasi tanpa keamanan, dan mudah bagi pihak yang tidak berwenang untuk menemukan informasi yang terkandung di dalamnya. Keamanan dilakukan dengan melindungi keamanan file untuk menghindari masalah dengan pihak jahat yang dapat membuka kerahasiaan informasi. Pencarian celah keamanan adalah proses menyembunyikan atau menyamarkan informasi dengan cara yang tidak jatuh ke pihak lain yang tidak berkepentingan. Pada saat ini di Indonesia masih banyak kasus kebocoran data. Pada awal Mei 2020, sebanyak 91 data pengguna dari Tokopedia bocor dan dijual di situs gelap (dark web). Pada 21 Mei 2020 Daftar Pemilih Tetap (DPT) Pemilu 2014 yang dalam bentuk file pdf bocor di situs dan forum komunitas hacker. Data yang dihimpun mencakup sejumlah informasi sensitif, seperti nama lengkap, nomor kartu keluarga, Nomor Induk Kependudukan (NIK), tempat dan tanggal lahir, alamat rumah, serta beberapa data pribadi lainnya [2]. Pada tahun 2021 kembali lagi terjadi kasus kebocoran data pribadi yang kemungkinan adalah data dari BPJS Kesehatan yang telah di upload di internet. Data yang bocor tersebut ditemukan dalam bentuk file excel yang sudah di upload ke dalam komunitas hacker. Diperkirakan data yang bocor sebanyak 20 juta data yang meliputi NIK, nomor HP, alamat, alamat email, Nomor Pokok Wajib Pajak (NPWP), tempat tanggal lahir, jenis kelamin, jumlah tanggungan, serta foto [3]
Ilmu yang mempelajari penyandian atau pengkodean terhadap suatu berkas disebut dengan Kriptografi [4]. Sehingga data yang bersifat pribadi seperti NIK, NPWP, Nomor HP yang tercatat dalam dokumen harus di lindungi agar tidak disalahgunakan oleh pihak-pihak yang tidak berkepentingan [5]. Algortima kriptografi yang paling terkenal yaitu algoritma RSA (Riverst Shamir Adleman). RSA ditemukan pada tahun 1976 oleh tiga peneliti MIT (Massachusetts Institute of Technology), Ron Rivest, Adi Shamir, dan Len Adleman. Pada penelitian yang dilakukan oleh Rakhmat Kurniawan pada tahun 2017 juga menggunakan algortima RSA dalam pengamanan file dokumen, akan tetapi pada penelitan tersebut hanya terbatas pada enkripsi text dan juga kunci yang digunakan untuk enkripsi dan dekripsi sudah ditetapkan diawal (tidak ada pembangkitan kunci RSA)[6]. Keamanan algoritma RSA adalah sulitnya memfaktorkan bilangan besar menjadi faktor prima. Proses dari pembangkitan kunci RSA adalah :
-
- Tentukan dua bilangan prima sembarang p dan q
-
- Hitung nilai n dengan p x q. Disarankan bahwa nilai p dan q tidak sama, karena jika p = q maka nilai n = p2, maka nanti nilai p dapat diperoleh dengan akar kuadrat dari n
-
- Hitung nilai dari f(n) = (p – 1)(q – 1)
-
- Pilih kunci publik e yang relatif prima dengan nilai f(n)
-
- Pembangkitan kunci privat menggunakan persamaan e × d = 1 (mod f(n)).
Yang akan mendapatkan nilai kunci publik adalah (e, n) dan kunci privat adalah (d,n). Proses dari enkripsi RSA adalah c = me mod n. Dan untuk proses dekripsi dari algoritma RSA adalah m = cd mod n [7]. Tingkat keamanan dari sebuah pembangkitan kunci RSA adalah semakin panjang kunci yang dibangkitkan (nilai p dan q besar) maka semakin kuat pula kunci yang dibangkitkan.
Penelitian ini menggunakan metode kuantitatif, dan menggunakan metode waterfall untuk metode pengembangannya. Menggunakan metode ini karena pengembangan dilakukan secara berurutan. Sehingga hasil yang didapatkan akan lebih optimal
Implementasi Kriptografi RSA dalam Pengamanan File Dokumen dalam paper ini memiliki tiga kategori utama yaitu enkripsi dokumen, dekripsi dokumen dan juga pembangkitan kunci RSA.
-
a. Pada proses pembangkitan kunci user diminta untuk memilih dua buah bilangan prima yang nilainya tidak boleh sama dan juga minimal 3 digit angka.
-
b. Pada enkripsi dokumen, pengguna akan mengupload dokumen berupa .docx, .pptx, xlsx, atau .pdf dan juga diminta untuk memasukkan kunci publik dari proses pembangkitan kunci RSA. Sistem akan melakukan enkripsi terhadap nilai dari hexabytes pada dokumen tersebut.
-
c. Pada dekripsi dokumen, pengguna akan mengupload dokumen berupa .docx, .pptx, xlsx, atau .pdf dan juga diminta untuk memasukkan kunci privat dari proses pembangkitan kunci RSA. Sistem akan melakukan dekripsi terhadap nilai dari hexabytes pada dokumen tersebut menggunakan algoritma RSA.
Aplikasi yang dibuat menggunakan bahasa pemrograman python, dengan framework django dan tampilan antarmuka menggunakan html, css, jquery, dan juga bootstrap. Berikut adalah flowchart yang digunakan dalam Implementasi Kriptografi RSA dalam Pengamanan File Dokumen di paper
Penjelasan diagram alir sistem:
-
• Mulai
-
• Membaca file dokumen yang di upload ke sistem, dan membaca 256 bytes di dalam file dokumen tersebut.
-
• Melakukan proses pembangkitan kunci RSA, disini user diminta untuk memilih dua buah bilangan prima untuk proses pembangkitan kunci RSA
-
• Melakukan enkripsi 256 bytes dokumen yang sudah di upload menggunakan kunci publik yang sudah di berikan
-
• Menghasilkan output file chipertext yang dapat di unduh namun tidak dapat dibuka jika belum dilakukan dekripsi terhadap file tersebut
-
• Proses dekripsi yang dimana nantinya user mengupload file chipertext dan menggunakan kunci privat untuk dekripsinya.
-
• Akan menghasilkan output berupa plaintext atau file dokumen sama seperti aslinya (sebelum di enkripsi)
-
• Selesai.
Dalam pembangkitan kunci RSA diperlukan dua buah bilangan prima berbeda p dan q
Gambar 2. Diagram Alir Pembangkitan Kunci RSA
Dalam proses enkripsi data plaintext (m) akan di enkripsi menggunakan pasangan kunci publik (e, n).
Gambar 3. Diagram Alir Enkripsi RSA
Dalam proses dekripsi data chippertext akan di dekripsi menggunakan pasangan kunci privat (d, n)
Gambar 3. Diagram Alir Dekripsi RSA
Pada halaman awal menampilkan 4 buah fitur utama yaitu untuk enkripsi, dekripsi, pembangkitan kunci dan juga panduan penggunaan sistem seperti pada gambar 4.
-
a. Pada halaman enkripsi, di halaman ini pengguna mengunggah sebuah file dokumen berupa .docx, .xlsx, .pptx, atau .pdf. Serta pada halaman ini pengguna memasukkan kunci publik, seperti pada gambar 5.
-
b. Pada halamn dekripsi pengguna akan mengunggah file dokumen yang telah di enkripsi dan memasukkan nilai dari kunci privat nya, seperti pada gambar 6.
-
c. Pada halaman pembangkitan kunci RSA, pengguna akan diminta untuk memilih dua buah bilangan prima yang nilainya lebih besar dari 100 (minimal 3 digit angka), dan juga mengisikan alamat email, dikarenakan nantinya hasil dari pembangkitan kunci akan dikirimkan melalui email seperti pada gambar 7.
-
d. Pada halaman panduan penggunaan, pengguna dapat melihat panduan dari penggunaan sistem. Penjelasan bagaimana cara melakukan enkripsi seperti gambar 8
RSA Encryption
Encryption
Decryption Generate κey Guide
RSA Encryption
Secure Documents Using the RSAALgorithm
Encryption
Decryption
Generate Key
S
System Guide
Document Encryption Using RSA Algorithm.
Document Decryption Using RSA Algorithm.
RSA Key Generation Process
Guidline How to Use the
System RSA Encryption
Gambar 5. Tampilan Halaman Enkripsi
RSA Encryption
RSA Encryption
Guide
If you don't have a private key. then do RSA Key Generation on Generate Key
UserGuide
Upload document file with extension docx. xlsx. pptx, .pdt
IFiII in the Public Key that you already have
Encryption
Click Button Submit
To encrypt the document file, you need a Public Key
f you don't have a public key, then do RSA Key Generation on Generate Key
Pick 2 Prime Numbers
Upload document file with extension .docx, .xlsx, .pptx, .pdf
Make sure the 2 prune numbers are Not the Same
-ill ι∏ the Public Key that you already have
Make sure2 Numbersareat Leasts Digits
Fill in the email field with an active email, because it will be used to send the results of key Eeneratior
Click Button Submit
C ιrk Butlori Submit
The encrypted file will appear and can be Downloaded
Public Key and Private Key has been Generated and will be sent to your email
Ihedecrypted Iiiewiil appear andean be Download
Generate Key
Decryption
To decrypt the document file, you need a Private Key
Gambar 8. Tampilan Halaman Panduan Penggunaan Sistem
Metode pengujian sistem menggunakan metode blackbox dan juga metode brute-force untuk mengetahui tingkat keamanan sistem. Hasil dari pengujian black box:
Tabel 1. Pengujian Enkripsi RSA
No. |
Sekenario Pengujian |
Uji Kasus |
Hasil yang Diharapkan |
Hasil Pengujian |
Kesimpulan |
1 |
File dokumen dan kunci publik tidak di isikan , klik tombol Save |
File dokumen: (tidak ada) Kunci publik : (tidak ada) |
Sistem akan menampilkan pesan error, bahwa field tersebut harus di isi |
Sesuai Harapan |
Valid |
2 |
File dokumen yang di upload valid dan kunci publik tidak di isi kemudian klik tombol Save |
File dokumen: (valid) Kunci publik : (kosong) |
Sistem akan menunjukkan pesan error “This field is required.” |
Sesuai Harapan |
Valid |
3 |
File dokumen yang di upload kosong dan kunci publik valid kemudian klik tombol Save |
File dokumen: (kosong) Kunci publik : (valid) |
Sistem akan menunjukkan pesan error “This field is required.” |
Sesuai Harapan |
Valid |
4 |
Fil dokumen yang di upload tidak valid (upload file bukan berekstensi .docx, .pdf, .xlsx, atau .pptx) |
File dokumen : (file berekstensi .txt) Kunci publik : (valid) |
Sistem akan menampilkan pesan error “Please enter a value with a valid extension.” |
Sesuai Harapan |
Valid |
5 |
File dokumen valid dan kunci publik tidak sesuai format |
File dokumen ; (valid) Kunci publik : (abcd) |
Sistem akan menampilkan pesan error “ Kunci Publik tidak sesuai format.” |
Sesuai Harapan |
Valid |
6 |
File dokumen valid dan kunci publik valid |
File dokumen : (valid) Kunci publik : (valid) |
Sistem akan menampilkan pop up dari file yang telah di enkripsi dengan nama acak |
Sesuai Harapan |
Valid |
7 |
Ketika pop up hasil enkripsi tampil dan tombol download di klik |
Tombol download di tekan |
File hasil yang telah di enkripsi akan langsung terunduh di device user |
Sesuai Harapan |
Valid |
8 |
Ketika pop up hasil enkripsi tampil dan tombol upload drive di tekan |
Tombol upload drive di tekan |
Sistem akan menampilkan pop up untuk meminta pengguna login ke akun google. Ketika berhaisl login, file akan ter-upload ke drive pengguna |
Sesuai Harapan |
Valid |
Tabel 2. Pengujian Dekripsi RSA
No. |
Sekenario Pengujian |
Test Case |
Hasil yang Diharapkan |
Hasil Pengujian |
Kesimpulan |
1 |
File dokumen dan kunci privat tidak di berikan kemudian klik tombol Save |
File dokumen: (tidak ada) Kunci privat : (tidak ada) |
Sistem akan menampilkan pesan error, bahwa field tersebut harus di isi |
Sesuai Harapan |
Valid |
2 |
File dokumen yang di upload valid dan kunci privat tidak di isi kemudian klik tombol Save |
File dokumen: (valid) Kunci privat : (kosong) |
Sistem akan menunjukkan pesan error “This field is required.” |
Sesuai Harapan |
Valid |
3 |
File dokumen yang di upload kosong dan kunci privat valid kemudian klik tombol Save |
File dokumen: (kosong) Kunci privat : (valid) |
Sistem akan menunjukkan pesan error “This field is required.” |
Sesuai Harapan |
Valid |
4 |
Fil dokumen yang di upload tidak valid (upload file bukan berekstensi .docx, .pdf, .xlsx, atau .pptx) |
File dokumen : (file berekstensi .txt) Kunci privat : (valid) |
Sistem akan menampilkan pesan error “Please enter a value with a valid extension.” |
Sesuai Harapan |
Valid |
5 |
File dokumen valid dan kunci privat tidak sesuai format |
File dokumen ; (valid) Kunci privat : (abcd) |
Sistem akan menampilkan pesan error “ Kunci Privat tidak sesuai format.” |
Sesuai Harapan |
Valid |
6 |
File dokumen valid dan kunci privat valid |
File dokumen : (valid) Kunci privat : (valid) |
Sistem akan menampilkan pop up dari file yang telah di dekripsi dengan nama dekripsiFile |
Sesuai Harapan |
Valid |
7 |
Ketika pop up hasil dekripsi tampil dan tombol download di klik |
Tombol download di tekan |
File hasil yang telah di dekripsi akan langsung terunduh di device user |
Sesuai Harapan |
Valid |
8 |
Ketika pop up hasil dekripsi tampil dan tombol upload drive di tekan |
Tombol upload drive di tekan |
Sistem akan menampilkan pop up untuk meminta pengguna login ke akun google. Ketika berhaisl login, file akan ter-upload ke drive pengguna |
Sesuai Harapan |
Valid |
Tabel 3. Pengujian Pembangkitan Kunci
No. |
Sekenario Pengujian |
Test Case |
Hasil yang Diharapkan |
Hasil Pengujian |
Kesimpulan |
1 |
Bilangan 1 dan Bilangan 2 dikosingkan kemudian tombol Save di tekan |
Bilangan 1: (tidak ada) Bilangan 2 : (tidak ada) |
Sistem akan menampilkan pesan error, bahwa field tersebut harus di isi |
Sesuai Harapan |
Valid |
2 |
Bilangan 1 valid , dan Bilangan 2 tidak di isi |
Bilangan 1: (103) Bilangan 2 : (kosong) |
Sistem akan menunjukkan pesan error “This field is required.” |
Sesuai Harapan |
Valid |
3 |
Bilangan 1 tidak di isi dan Bilangan 2 valid |
Bilangan 1 : (kosong) Bilangan 2 : (743) |
Sistem akan menunjukkan pesan error “This field is required.” |
Sesuai Harapan |
Valid |
4 |
Bilangan 1 atau Bilangan 2 di isi kurang dari 3 digit |
Bilangan 1 : (11) Bilangan 2 : (13) |
Sistem akan menampilkan pesan error “Please enter at least 3 characters.” |
Sesuai Harapan |
Valid |
5 |
Bilangan 1 atau Bilangan 2 di isi dengan huruf |
Bilangan 1 : (abc) Bilangan 2 : (xyz) |
Sistem akan menampilkan pesan error “Please enter a valid number.” |
Sesuai Harapan |
Valid |
6 |
Bilangan 1 atau Bilangan 2 di isi dengan bilangan bukan prima |
Bilangan 1: (120) Bilangan 2 : (200) |
Sistem akan menampilkan pesan error “Bilangan harus prima.” |
Sesuai Harapan |
Valid |
7 |
Bilangan 1 dan Bilangan 2 di isi dengan bilangan prima (valid) |
Bilangan 1 : (139) Bilangan 2 : (743) |
Sistem akan memunculkan field Kunci publik dan kunci privat yang bisa di copy paste. |
Sesuai Harapan |
Valid |
Sistem juga akan menampilkan file .txt yang bisa di download oleh pengguna | |||||
8 |
Sistem menampilkan hasil generate key RSA |
File .txt di tekan |
File .txt yang di dalamnya berisi nilai kunci publik dan kunci privat akan terdownload ke device user |
Sesuai Harapan |
Valid |
Pengujian BruteForce
Untuk menguji tingkat keamanan RSA metode yang umum digunakan adalah metode brute-force. Brute-force merupakan melakukan pengecekan list kunci yang ada pada kunci sebenarnya hingga menemukan kunci yang sama [8]. Dari uji coba brute-force didapatkan:
Tabel 4. Brute-force RSA
Prima 1 |
Prima 2 |
Kunci Privat |
Waktu |
101 |
431 |
36997|43531 |
1120.90 detik |
101 |
881 |
1741|88981 |
9400.82 detik |
431 |
773 |
273197|333163 |
183600.87 detik |
Semakin besar nilai dari hasil pembangkitan kunci RSA maka semakin kuat juga nilai dari kunci tersebut, dikarenakan waktu yang dibutuhkan untuk menemukan kunci tersebut juga sangat lama
Sistem pengamanan dokumen menggunakan algoritma RSA sudah berjalan sesuai fungsionalitas. Dalam pengimplementasiannya sistem yang dibuat akan mengenkripsi nilai dari hexabytes dari file dokumen sehingga ketika dokumen tersebut sudah berhasil di enkripsi dokumen tersebut tidak dapat dibuka. Lama waktu yang dibutuhkan untuk proses enkripsi dan dekripsi ditentukan oleh besaran file dokumen dan juga besaran kunci publik dan kunci privatnya, semakin besar maka semakin lama juga waktu yang dibutuhkan. Hasil dari penelitian ini diharapkan mampu membantu orang-orang dalam melindungi file dokumen agar aman dipergunakan.
References
-
[1] J. K. Azhar and S. Yuliany, “Implementasi Algoritma RSA (Rivest, Shamir danAdleman) untuk Enkripsi dan Dekripsi File .pdf,” no. December, 2019.
-
[2] C. Stephanie, “7 Kasus Kebocoran Data yang Terjadi Sepanjang 2020,” Kompas. com, 2021. .
-
[3] A. Rizal, “Kebocoran Data BPJS Kesehatan Buktikan Lemahnya Perlindungan Data Pribadi,”
Infokomputer.grid.id, 2021. .
-
[4] R. Firmansyah, “Implementasi Keamanan Pesan Teks Menggunakan Kriptografi Algoritma Rsa Dengan Metode Waterfall Berbasis Java,” Joutica, vol. 4, no. 1, p. 174, 2019, doi: 10.30736/jti.v4i1.265.
-
[5] W. Djafar, “Perlindungan Data Pribadi di Indonesia: Lanskap, Urgensi, dan Kebutuhan Pembaruan,” J. Becoss, vol. 1, no. 1, pp. 147–154, 2019.
-
[6] R. Kurniawan, “Rancang Bangun Aplikasi Pengaman Isi File Dokumen Dengan RSA,” J. Ilmu Komput. dan Inform., vol. 01, no. November, pp. 46–52, 2017.
-
[7] I. R. Munir, “Algoritma RSA dan ElGamal,” Kriptografi, p. 13, 2010.
-
[8] K. Berlin and S. . Henakaran, “An Overview of Cryptanalysis of RSA Public key System,” Int. J. Eng. Technol., vol. 9, no. 5, pp. 3575–3579, 2017, doi: 10.21817/ijet/2017/v9i5/170905312.
This page is intentionally left blank
44
Discussion and feedback