1.
Pendahuluan
Keamanan informasi data adalah proses untuk melindungi data dari perusakan atau penyalahgunaan yang dilakukan oleh orang dalam atau di luar sebuah organisasi. Informasi yang merupakan hasil pengolahan dari data, mempunyai nilai yang berbeda bagi setiap orang. Seringkali sebuah informasi menjadi sangat berharga, dan tidak semua orang diperkenankan untuk mengetahuinya. Untuk itu perlu adanya kerahasiaan tentang informasi tersebut demi mencegah akses terhadap data-data yang dianggap sensitif oleh orang-orang yang tidak berhak di dalam maupun di luar organisasi. Karena alasan tersebut keamanan untuk menjaga kerahasiaan informasi harus diterapkan demi melindungi data organisasi yang telah tersimpan. Teknologi informasi digunakan untuk menjaga keamanan informasi data. salah satunya yaitu penyimpanan data pada basis data menggunakan teknik kriptografi yang diterapkan pada data tersebut. Dengan adanya teknologi informasi, Kantor Pelayanan dan Perbendaharaan Negara (KPPN) Ambon melakukan suatu perubahan sistem dalam pengelolaan data gaji seluruh pegawai dengan mengkonversikan berkas-berkas gaji pegawai ke bentuk digital menggunakan sistem perhitungan gaji berbasis Web Service, dan menyimpan data gaji ke dalam database agar tidak terjadi kehilangan data. Namun, pengelolaan data menggunakan sistem perhitungan gaji masih terdapat permasalahan yang timbul, dimana berkas atau data-data pegawai yang telah dimasukan ke dalam database, sering terjadi perubahan pada nominal gaji pegawai oleh pihak-pihak yang tidak bertanggung jawab, sehingga terjadi ketidaksesuaian perhitungan dengan pengeluaran anggaran untuk pembayaran gaji Pegawai Negeri Sipil di KPPN Ambon. Solusi untuk menangani masalah tersebut adalah dengan merancang sebuah sistem guna mengamankan data gaji pegawai dengan penerapan algoritma kriptografi one time pad untuk meningkatkan keamanan basis data pada data gaji pegawai di KPPN Ambon. Skema enkripsi yang akan dibangun di sini menerapkan teknik pada kriptografi klasik, yang menganut kerahasiaan pada kunci (key). Kunci pada algoritma ini juga menggunakan teknik substitusi kode geser (Shif) demi keamanan yang lebih baik. 2.
Tinjauan Pustaka
Pada penelitian yang berjudul ”Pemanfaatan Kembali Kriptografi Klasik dengan Melakukan Modifikasi Metode-Metode Kriptografi yang ada” dibahas mengenai memanfaatkan karakter-karater ASCII kriptografi klasik masih dapat digunakan pada jaman sekarang. Hal ini dikarenakan, karakter ASCII memiliki extended character yang berjumlah 128, sehingga jumlah total karakter yang dapat digunakan adalah 256. Dengan kata lain, jumlah kerumitan algoritma akan meningkat karena kemungkinan-kemungkinan yang ada semakin besar daripada hanya menggunakan karakter alfabet yang berjumlah 26 [1]. Pada penelitian yang berjudul ”Algoritma Enkripsi One Time Pad untuk Pengamanan Access Database Server Menggunakan Bahasa Pemrograman Visual Basic” memberikan gambaran tentang kegunaan algoritma yang terkenal 1
sederhana namun unbreakable. Di dalamnya memuat contoh aplikasi serta pengaplikasiannya sehingga dapat memberikan gambaran tentang kegunaan dari kriptografi one time pad itu sendiri [2]. Berdasarkan penelitian terdahulu yang membahas tentang penerapan pemanfaatan kode algoritma klasik dan algoritma One Time Pad maka dilakukan penelitian yang bertujuan untuk menerapkan Algoritma One Time Pad untuk Meningkatkan Keamanan Basis Data pada Data Gaji Pegawai, karena karakter yang digunakan pada kriptografi One Time Pad adalah karakter ASCII (American Standard Code for Information Interchange) yaitu suatu standar internasional dalam kode huruf dan simbol seperti Hex dan Unicode tetapi ASCII lebih bersifat universal yang memungkinkan untuk memiliki tingkat kerumitan yang lebih besar daripada karakter alfabet. Selain itu, penelitian ini juga akan menerapkan teknik substitusi Kode Geser (Shift) pada kunci yang digunakan untuk kriptografi One Time Pad. Penggabungan ini dimaksudkan agar kriptografi ini memiliki tingkat kerumitan algoritma yang lebih daripada hanya menggunakan satu algoritma kriptografi yang ada. Penggabungan ini akan diterapkan untuk menyimpan data gaji pegawai pada sistem. Kriptografi (cryptography) berasal dari Bahasa Yunani yang terdiri dari dua suku kata yaitu “cryptós” artinya menyembunyikan dan “gráphein” artinya tulisan. Kriptografi adalah ilmu yang mempelajari teknik-teknik matematika yang berhubungan dengan aspek keamanan informasi seperti kerahasiaan, integritas data, serta otentikasi [3]. Beberapa istilah yang sering digunakan di dalam kriptografi adalah plaintext, ciphertext, encrypt, decrypt, cipher, kunci, dan sistem kriptografi. Plaintext adalah informasi yang dapat dibaca dan dimengerti maknanya. Ciphertext adalah informasi yang telah disandikan ke bentuk yang lain sehingga maknanya tidak dapat dimengerti. Encrypt adalah proses menyandikan plaintext menjadi ciphertext. Decrypt adalah proses mengembalikan ciphertext menjadi plaintext. Cipher adalah algoritma yang digunakan untuk melakukan transformasi plaintext ke ciphertext. Kunci adalah parameter yang diperlukan cipher untuk transformasi encrypt dan decrypt. Sistem kriptografi adalah kumpulan yang terdiri atas algoritma kriptografi, semua plaintext dan ciphertext yang mungkin serta kunci. Teknik kriptografi yang dibahas dalam penelitian ini Algoritma One-Time Pad ditemukan oleh Mayor Joseph Mauborgne dan Gilbert Vernam pada tahun 1917. Algoritma One-Time Pad merupakan algoritma berjenis kunci simetris yang artinya bahwa kunci yang digunakan untuk melakukan enkripsi dan dekripsi adalah sama. Dalam proses enkripsi, algoritma ini menggunakan cara stream cipher dimana cipher berasal dari hasil exlusive-or antara bit plaintext dan bit key [2]. Metode One-Time Pad juga merupakan perbaikan dari kriptografi Caesar. One Time Pad menggunakan kunci yang panjangnya sama dengan plaintext-nya. Suatu cara untuk mendekripsikan pesan yang telah dienkripsi adalah dengan mengetahui kunci yang digunakan. Enkripsi yang dilakukan oleh One Time Pad ini sebenarnya sama dengan enkripsi Caesar, namun karena panjang kunci sama dengan plaintext-nya, maka setiap huruf pada plaintext akan mengalami
2
pergeseran yang berbeda. Sistem kerja enkripsi One Time Pad adalah setiap kali melakukan enkripsi, dibangkitkan kunci (pad) yang panjangnya sama dengan teks yang akan dienkripsikan. Berikut adalah contoh konsep sederhana yang dibangun oleh One Time Pad [4] : Misalkan terdapat kunci k yang terdiri atas string bit k0k1…kN dan digunakan untuk mengenkripsi plainteks m = m0m1…mN dengan melakukan operasi XOR (Ekslusif-OR) per bitnya. Jadi, cipherteks c = c0c1..cN didapat dari 𝑐𝑖 = 𝑘𝑖 ⊕ 𝑚𝑖 , for 𝑖 = 0,1,…,𝑁
Setiap kunci hanya digunakan satu kali dan kemudian dibuang. Karena setiap kunci hanya digunakan satu kali dengan probabilitas yang sama dan hanya terdapat tepat satu kunci yang mengenkripsi m ke c, maka one-time pad memiliki kerahasiaan yang sempurna. Sistem kerja dari metode ini juga membutuhkan pengetahuan di bidang logika matematika, khususnya meng-XORkan operand satu dengan operand lainnya. Makna dari Ekslusif-OR adalah bahwa kalau kedua input sama maka nilai keluarannya adalah F (false), tetapi bila kedua input berbeda akan menghasilkan nilai T (true) [5]. Selain logika XOR juga dibutuhkan pemahaman dalam pengkonversian ASCII (American Standard Codes for International Interchange) menjadi biner. Hal ini karena, setiap karakter yang dimasukkan akan dilihat bentuk ASCII nya kemudian diubah ke biner, hal ini juga berlaku untuk kunci yang digunakan. Kemudian setelah mendapatkan nilai binernya, data baru akan di-XOR-kan. Tabel 1 adalah contoh biner dan XOR pada karakter. Tabel 1 Contoh Penggunaan Biner dan XOR pada Karakter.
Karakter Inputan A Kunci b Hasil XOR
Nilai ASCII Biner 65 0100 0001 98 0110 0010 0010 0011
Hasil XOR dari Tabel 1 adalah 0010 0011 dimana bila diubah ke bentuk bilangan desimal akan mendapatkan nilai 35, dan bentuk ASCII dari 35 adalah symbol pagar (#). Hasil dari nilai ini belum tentu selamanya berupa symbol pagar, karena hal ini dapat berubah-rubah dari hasil XOR yang didapatkan. Selain dapat digunakan per karakter kata, one time pad juga dapat digunakan pada kata ataupun kalimat. Berikut ini adalah contoh penggunaan kriptografi one time pad pada suatu kata. Misalkan kata “NAMA” sebagai masukan, sedangkan kunci menggunakan kata “bete”. Maka, “NAMA” di sini akan diubah per karakter katanya menjadi nilai biner, sehingga didapat nilai sebagai berikut :
3
Masukan N : A : M : A :
Kunci
0100 1110 0100 0001 0100 1101 0100 0001
b : e : t : e :
0110 0010 0110 0101 0111 0100 0110 0101
Sehingga jika masukan “NAMA” dan kunci “bete” di-XOR-kan, maka akan didapat hasil XOR seperti pada Tabel 2 Tabel 2 Contoh penggunaan Biner dan XOR pada Kata.
Inputan Kunci Hasil XOR
01001110 01100010 00101100
01000001 01100101 00100100
01001101 01110100 00111001
01000001 01100101 00100100
Tabel 2 menjelaskan tentang penggunaan biner pada kata “NAMA” dan kata kunci “bete”, kemudian hasil biner tersebut di-XOR-kan sehingga dapat diperoleh hasilnya. Apabila nilai biner dari Hasil XOR pada Tabel 2 dikembalikan ke bentuk angka desimal, kemudian melihat bentuk ASCII dari angka desimal tersebut maka diperoleh hasil ,$9$. Dengan kata lain, kata ”NAMA” yang dienkripsikan akan berubah menjadi “,$9$”. Kunci pada penelitian ini juga menggunakan algoritma subtitusi kode geser. Teknik subtitusi kode geser (shift) dengan modulus 26 memberikan angka ke setiap alfabet seperti A↔0, B↔1....Z↔25 [6]. Contohnya, teks asli ”UNIVERSITAS” maka teks asli akan mendapatkan angka ”20 13 8 21 4 17 18 8 19 0 18” sesuai dengan penomoran alfabet. Untuk mendapatkan teks-kode, harus mempunyai kunci. Sebagai contoh, kunci yang diambil disini adalah 11, maka jumlahkan setiap angka dari teks asli dengan 11. Jika hasil penjumlahannya lebih dari 26, maka hasilnya dikurangi 26. Misalnya 20 + 11 = 31 – 26 = 5. Setelah dijumlahkan, maka hasilnya adalah ”5 24 19 6 15 2 3 19 4 11 3”. Setelah dikonversikan maka akan menghasilkan teks-kode ” FYTGPCDTELD” seperti pada Gambar 1. A
B
C
D
E
F
G
H
I
J
K
L
0
1
2
3
4
5
6
7
8
9
10 11 10
N
O
P
Q
R
S
T
U
V
W
X
Y
M
Z
13 14 15 16 17 18 19 20 21 22 23 24 25 Gambar 1 Contoh Penomoran Ke Setiap Alfabet.
3. Metode dan Perancangan Sistem Penelitian yang dilakukan, diselesaikan melalui tahapan penelitian yang terbagi dalam lima tahapan, yaitu: (1) Analisis kebutuhan dan pengumpulan data,
4
(2) Perancangan sistem, (3) Perancangan aplikasi/program, (4) Implementasi dan pengujian sistem. Analisis Kebutuhan dan Pengumpulan Data
Perancangan Aplikasi/Program
Perancangan Sistem meliputi Perekayasaan Perangkat Lunak, Perancangan Database dan Perancangan Antarmuka dan Database Implementasi dan Pengujian Sistem
Gambar 2 Tahapan Penelitian Tahapan penelitian pada Gambar 2, dapat dijelaskan sebagai berikut. Tahap pertama: Analisis kebutuhan dan pengumpulan data dengan cara menganalisa kebutuhan pengguna akan tingkat kebutuhan sistem, kebutuhan hardware, kebutuhan software. Selain itu pada tahap ini dilakukan proses wawancara dengan Kepala Seksi Pencarian Dana dan juga staff bagian Informasi Gaji. Data yang dikumpulkan adalah informasi mengenai penggajian yang dilakukan, dan keamanan data yang diperlukan; Tahap kedua: Setelah proses penelitian dan analisa kebutuhan selesai, tahap selanjutnya adalah melakukan perancangan sistem menggunakan diagram Unified Modeling Language (UML) untuk mengetahui setiap proses beserta semua aktifitas dari admin yang akan dibangun pada sistem. Perancangan database untuk merancang tabel-tabel yang berfungsi untuk menyimpan data yang dibutuhkan dalam aplikasi sistem. Perancangan antarmuka, yaitu merancang antarmuka yang berfungsi sebagai penghubung interaksi antara admin dengan sistem; Tahap ketiga, perancangan sistem yaitu merancang aplikasi/program sesuai kebutuhan sistem berdasarkan perancangan sistem yang telah dilakukan. Misalnya bagaimana sistem berjalan saat penyimpanan data dan pengambilan data; Tahap keempat: implementasi dan pengujian sistem, yaitu mengimplementasikan tahapan penelitian kedua dan ketiga ke dalam sebuah program, apabila implementasi program sudah selesai, maka dilakukan pengujian, serta dianalisis untuk melihat apakah aplikasi yang telah dibuat sudah sesuai dengan yang diharapkan atau tidak ada error, jika belum sesuai maka akan dilakukan perbaikan. Perancangan sistem dibuat berdasarkan kebutuhan yang telah dianalisis sebelumnya, menggunakan Flowchart. Gambar 3 menjelaskan tentang bagaimana struktur sistem pengenkripsian data pada sistem keamanan data yang akan dirancang. Sistem akan berjalan ketika start kemudian akan mengecek data input yang ada. Setelah data input diperoleh, maka kunci akan di-generate sehingga mempunyai panjang karakter sama dengan input yang diperoleh. Kemudian data input akan diubah ke dalam bentuk biner, hal ini
5
juga terjadi pada kunci yang didapat tadi. Setelah mendapatkan nilai biner dari input dan kunci, maka input dan kunci akan di-XOR-kan sehingga memperoleh hasil dari nilai XOR tersebut. Nilai XOR tersebut kemudian diubah ke dalam bentuk karakter. Setelah itu proses pengenkripsian data selesai. Start Inputan (nip, nama, status, jum anak, golongan, gaji pokok, tunjangan)
Kunci berupa subtitusi Shif dari kata Administrator String input diubah menjadi Biner Contoh : A = 1000001 String Kunci diubah menjadi Biner Contoh : c = 1100011 Proses XOR Input dan Kunci Contoh : 1000001 1100011 Hasil XOR : 0100010 Hasil XOR diubah kenilai Desimal Biner = 0100010 Decimal = 34 Hasil Desimal diubah kenilai ASCII Decimal = 34 ASCII = “
Tidak
Berhasil disimpan?
Simpan Hasil
End Ya
Gambar 3 Flowchart Proses Pengenkripsian Data
6
Start Inputan ( nama, status, jum anak, golongan, gaji pokok, tunjangan)
Kunci berupa subtitusi Shif dari kata Administrator
String Hasil Enkripsi diubah menjadi Biner Contoh : “ = 0100010
String Kunci diubah menjadi Biner Contoh : c = 1100011
Proses XOR Hasil Enkripsi dan Kunci Contoh : 0100010 1100011 Hasil XOR : 1000001 Hasil XOR diubah kenilai Desimal Biner = 1000001 Desimal = 65 Hasil Desimal diubah kenilai ASCII Desimal = 65 ASCII = A Lihat Hasil End
Gambar 4 Flowchart Proses Pendekripsian Data Gambar 4 menjelaskan tentang bagaimana struktur sistem pendekripsian data pada sistem keamanan data yang akan dirancang. Sistem akan berjalan ketika start kemudian akan mengecek hasil enkripsi yang ada. Setelah data enkripsi diperoleh, maka akan dicari kuncinya. Kemudian data enkripsi akan diubah ke dalam bentuk biner, hal ini juga terjadi pada kunci yang didapat tadi. Setelah mendapatkan nilai
7
biner dari data yang telah dienkripsi dan kunci, maka data tersebut dan kunci akan di-XOR-kan sehingga memperoleh hasil dari nilai XOR tersebut. Nilai XOR tersebut kemudian diubah ke dalam bentuk karakter. Setelah itu proses pendekripsian data selesai. Contoh enkripsi yang dilakukan dengan menggunakan Algoritma One Time Pad dan teknik subtitusi kode geser seperti contoh Tabel 3. Tabel 3 Tabel Penggunaan Kriptografi One Time Pad Nama Golongan Gaji Pokok Inputan AMIN III/C 5250000 Kunci yang digunakan (hasil subtitusi kode geser dari “amin” dengan nilai kunci 23)
xjfk
Xjfkx
xjfkxjf
Inputan Binary
1000001 1001101 1001001 1001110
1001001 1001001 1001001 0101111 1000011
0110101 0110010 0110101 0110000 0110000 0110000 0110000
Kunci Binary
1111000 1101010 1100110 1101011
1111000 1101010 1100110 1101011 1111000
1111000 1101010 1100110 1101011 1111000 1101010 1100110
Hasil XOR Binary
0111001 0100111 0101111 0100101
0110001 0100011 0101111 1000100 0111011
9’/%
1#/D;
1001101 1011000 1010011 1011011 1001000 1011010 1010110 MXS[HZV
Hasil enkripsi
Tabel 1 menjelaskan perhitungan tentang penggunaan algoritma kriptografi one time pad dan substitusi kode geser. Dimana ketiga inputan
8
disertai kunci diubah menjadi bentuk biner. Kemudian bentuk biner tersebut di-XOR-kan, sehingga menghasilkan hasil enkripsi data pada table gaji.
4.
Hasil dan Pembahasan
Sistem dalam penelitian ini berbentuk desktop application yang disertai dengan GUI (Graphical User Interface), bertujuan untuk mempermudah admin dalam pengoperasian sistem. GUI pada sistem ini terdiri dari beberapa form antara lain adalah form Login, form Home, form Manage Data Pegawai, form Manage Data Gaji, form Report Data Pegawai dan form Report Data Gaji. Berikut adalah pseudo code algoritma One Time Pad. Kode Program 1 Pseudo Code Algoritma One Time Pad 1. class OTP { 2. public static string otp(string text, string key){ 3. var result = new StringBuilder(); 4. for (int c = 0; c < text.Length; c++){ 5. char character = text[c]; 6. uint charCode = (uint)character; 7. int keyPosition = c % key.Length; 8. char keyChar = key[keyPosition]; 9. uint keyCode = (uint)keyChar; 10. uint combinedCode = charCode ^ keyCode; 11. char combinedChar = (char)combinedCode; 12. result.Append(combinedChar);} 13. return result.ToString();} 14. }
Kode program 1 menjelaskan enkripsi one time pad dilakukan dengan cara XOR plaintext dan key. Baris ke empat, merupakan fungsi untuk menghitung jumlah karakter plaintext, kemudian pada baris ke tujuh, akan membangun kunci menjadi sama panjang dengan plaintext. Baris ke delapan merupakan fungsi untuk mengambil karakter kunci, kemudian di-XOR dengan karakter plaintext yang dipilih pada baris ke sembilan, dan akan ditambahkan ke hasil enkripsi. Kode Program 2 Pseudo Code Algoritma Kode Geser 1. 2. 3. 4. 5. 6. 7. 8. 9.
class kodegeser { public static string Encrypt(string plainText, int key) { char[] plainChar = plainText.ToCharArray(); int[] ascii = new int[plainChar.Length]; for (int count=0;count < plainChar.Length; count++){ ascii[count] = Convert.ToInt32(plainChar[count]); if (ascii[count] >= 65 && ascii[count] <= 90){ ascii[count] = ((ascii[count] - 65 + key) % 26) + 65;}
9
10. else if (ascii[count] >= 97 && ascii[count] <= 122) { 11. ascii[count] = ((ascii[count] - 97 + key) % 26) + 97;} 12. plainChar[count] = ((char)(ascii[count]));} 13. return new string(plainChar);} 14. }
Kode program 2 menjelaskan teknik substitusi kode geser dilakukan dengan cara mengeser plaintext menggunakan besaran key. Baris ke 4-5 merupakan fungsi untuk mengubah string plaintext ke bentuk char, kemudian pada baris ke 6-7 akan mengubah bentuk char plaintext ke bentuk ASCII. Baris ke 8-11 akan menyaring karakter ASCII yakni yang dipakai adalah karakter alfabet A-Z dan a-z saja dimana alfabet A-Z pada tabel ASCII adalah 65-90 dan a-z adalah 97-122. Baris ke 12 akan mengubah hasil dalam bentuk ASCII ke bentuk Char, kemudian akan diubah lagi ke bentuk String pada baris 13. Dalam sistem ini, penggunaan algoritma One Time Pad dan teknik subtitusi kode geser terdapat pada form Manage Data Gaji, dan juga form Report Data Gaji. Form Manage Data Gaji terdapat beberapa textbox yang hanya dapat menampilkan data sesuai label pada textbox tersebut dan button yang harus dieksekusi oleh Admin sesuai dengan label pada textbox dan button tersebut agar dapat melakukan perhitungan gaji pegawai, menyimpan data gaji pegawai dan menghapus data gaji pegawai.
Gambar 9 Form Manage Data Gaji
Pada Gambar 9, data yang tersimpan adalah data yang sudah terenkripsi pada saat melakukan penyimpanan data. Form Manage Data Gaji juga terdapat button Dekripsi untuk melihat data gaji asli dan button Enkripsi untuk mengembalikan data ke dalam bentuk enkripsi. Form Manage Data Gaji Terdapat juga combobox dengan label NIP yang telah terisi dengan data NIP pegawai sesuai dengan data nip pada database pegawai, yang berfungsi untuk menampilkan data pada textbox sesuai dengan data pemanggilan data pada database. Data gaji pegawai tidak dapat diubah, jadi data yang telah dihitung dan terjadi kesalahan dalam perhitungan akan dihapus dan data pegawai harus di cek pada form Manage Data Pegawai. Button Proses untuk menghitung gaji pegawai, button simpan untuk melakukan penyandian pada data yang dimasukan, kemudian
10
menyimpannya kedalam database. Hasil enkripsi data gaji dapat dilihat pada Gambar 10.
Gambar 10 Hasil Enkripsi dan penyimpanan data gaji.
Pemanggilan fungsi untuk proses enkripsi dan penyimpanan data gaji pegawai ke dalam database, ditunjukkan pada Kode Program 1. Kode Program 1 Proses Enkripsi Data Gaji 1. string kunci = tbadmin.Text.Trim(); 2. g.setGaji_Bulan(textBox1.Text = OTP.otp(textBox1.Text, (kodegeser.Encrypt(kunci, Convert.ToInt32(23))))); 3. g.setNip(cbnip.Text); 4. g.setGajiPokok(tbgajipokok_HG.Text = OTP.otp(tbgajipokok_HG.Text, (kodegeser.Encrypt(kunci, Convert.ToInt32(23))))); 5. g.setTun_IS(tunistri.Text = OTP.otp(tunistri.Text, (kodegeser.Encrypt(kunci,Convert.ToInt32(23))))); 6. g.setTunAnak(tunanak.Text = OTP.otp(tunanak.Text, (kodegeser.Encrypt(kunci, Convert.ToInt32(23))))); 7. g.setTunBeras(tunberas.Text = OTP.otp(tunberas.Text, (kodegeser.Encrypt(kunci, Convert.ToInt32(23))))); 8. g.setTun_Pajak(tunpajak.Text = OTP.otp(tunpajak.Text, (kodegeser.Encrypt(kunci, Convert.ToInt32(23))))); 9. g.setPot_ipn(pot_ipn.Text = OTP.otp(pot_ipn.Text, (kodegeser.Encrypt(kunci, Convert.ToInt32(23))))); 10. g.setPotPajak(potpajak.Text = OTP.otp(potpajak.Text, (kodegeser.Encrypt(kunci, Convert.ToInt32(23))))); 11. g.setPotLain(tbpotlain.Text = OTP.otp(tbpotlain.Text, (kodegeser.Encrypt(kunci, Convert.ToInt32(23))))); 12. g.setGaji_bersih(tbgajibersih.Text = OTP.otp(tbgajibersih.Text, (kodegeser.Encrypt(kunci, Convert.ToInt32(23)))));
Pada Kode Program 1, baris 1-11 yang berfungsi sebagai perintah pada button simpan pada form Manage Data Gaji data gaji akan mengenkripsikan Gaji_Bulan, Gaji_Pokok, Tun_Anak, Tun _Beras, Pot_Pajak, Pot_Lain, Gaji_Bersih dengan menggunakan encode pada class rumus dan kunci pada textbox yang disubtitusikan pada class kodegeser yang telah disubtitusikan dengan menggunakan nilai kunci 23 dan kemudian menyimpan data tersebut dalam database. Proses dekripsi data juga dapat dilakukan pada form Manage Data gaji pada Gambar 9. Hasil dekripsi data gaji dapat dilihat pada Gambar 11.
11
Gambar 11 Hasil Dekripsi
Pemanggilan fungsi untuk proses dekripsi data gaji, ditunjukkan pada Kode Program 2. Kode Program 2 Fungsi Dekripsi 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
26. 27.
dgvgaji.DataSource = null; Dao.DAO d = new Dao.DAO(); List<Model.Gaji> ld = new List<Model.Gaji>(); DataGridViewRow rw = new DataGridViewRow(); ld = d.getGajiPegawaiList(); dgvgaji.ColumnCount = 8; dgvgaji.Columns[0].Name = "NIP"; dgvgaji.Columns[1].Name = "Gaji Bulan"; dgvgaji.Columns[2].Name = "Gaji Pokok"; dgvgaji.Columns[3].Name = "Tun Anak"; dgvgaji.Columns[4].Name = "Tun Beras"; dgvgaji.Columns[5].Name = "Pot Pajak"; dgvgaji.Columns[6].Name = "Pot Lain"; dgvgaji.Columns[7].Name = "Gaji Bersih"; for (int i = 0; i < ld.Count; i++) { String no = i + 1 + ""; String nip = ld[i].getNip()+""; string gaji_bulan = OTP.otp(ld[i].getGaji_Bulan() + "", (kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23))); String gaji_pokok = OTP.otp(ld[i].getGajiPokok() + "", (kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); String tun_anak = OTP.otp(ld[i].getTunAnak() + "", (kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); String tun_beras = OTP.otp(ld[i].getTunBeras() + "", (kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); String pot_pajak = OTP.otp(ld[i].getPotPajak() + "", (kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); String pot_lain = OTP.otp(ld[i].getPotLain() + "", (kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); String gaji_bersih = OTP.otp(ld[i].getGaji_bersih() + "", (kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); string[] row = new string[] { nip, gaji_bulan, gaji_pokok, tun_anak, tun_beras, pot_pajak, pot_lain, gaji_bersih }; dgvgaji.Rows.Add(row);} MessageBox.Show(this, "Data Berhasil Di Dekripsi");}
Kode Program 2 merupakan perintah untuk medekripsikan data yang telah terenkripsi dengan membuat list database yang sama dengan database dengan 28. menampilkan data yang telah terdekripsi. Baris 1-14 merupakan perintah untuk membuat list database. Baris 18-24 merupakan perintah untuk mendekripsikan row pada database sesuai dengan list database menggunakan decode pada class
12
rumus dan dengan kunci pada textbox yang disubtitusikan pada class kodegeser yang telah disubtitusikan dengan menggunakan nilai kunci 11 dan menampilkan data tersebut pada datagridview. Proses perhitungan waktu enkripsi data juga diterapkan dan ditampilkan ketika admin melakukan proses menyimpan data gaji ke dalam database. Hal ini berguna untuk memberikan informasi tentang kecepatan algoritma yang digunakan untuk enkripsi data. Waktu proses akan keluar jika inisialisasi masukan yang dilakukan tidak ada kesalahan, artinya data dapat masuk ke dalam database. Proses ini dapat dilihat pada Gambar 12.
Gambar 12 Informasi Waktu Proses.
Gambar 12 merupakan waktu yang diperoleh hasil dari proses enkripsi dengan data asli sebagai berikut : Gaji Bulan = June-2014 Gaji Pokok = 2900000 Tunjangan I/S = 290000 Tunjangan Anak = 58000 Tunjangan Beras = 300000 Tunjangan Pajak = 145000 Potongan IPN = 191400 Potongan Pajak = 145000 Potongan Lain-lain = 87000 Gaji Bersih = 3026000 Hasil dari proses enkripsi data tersebut dapat dilihat pada informasi berikut ini : Gaji Bulan = KKPC_IE Gaji Pokok = jXZV[V@ Tunjangan I/S = jXZV[V Tunjangan Anak = mYZV[ Tunjangan Beras = kQZV[V Tunjangan Pajak = iU_V[V Potongan IPN = iX[R[V Potongan Pajak = iU_V[V Potongan Lain-lain = `VZV[ Gaji Bersih = kQXP[V@ Form Report Data Gaji merupakan hasil inputan ke dalam database pada Form Manage Data Gaji pada Gambar 9 yang nantinya juga akan di printout atau 13
disimpan dalam bentuk file dalam beberapa format dokumen yakni Excel(*.xls), Word(*.doc) atau PDF(*.pdf). Data yang tedapat pada Report data gaji adalah gabungan dari beberapa data pegawai yg ada pada database data pegawai dan data gaji pegawai yang telah didekripsikan, dapat dilihat pada Gambar 12.
Gambar 12 Form Report Data Gaji
Dari skenario pengujian yang dilakukan dapat diperoleh hasil pengujian sesuai dengan yang diharapkan. Dari hasil pengujian pada setiap item yang ada pada aplikasi peminjaman barang ini terangkum pada Tabel Hasil Pengujian Sistem yang dibangun perlu diuji dan dianalisis untuk melihat apakah sudah memenuhi kebutuhan dan perancangan sistem. Pengujian sistem menggunakan pengujian black box yaitu metode pengujian yang berfokus pada persyaratan fungsional perangkat lunak yang dibuat. Hasil pengujian sistem yang telah dibuat, ditunjukkan pada Tabel 4. Tabel 4 Tabel Hasil Pengujian BlackBox No
Item yang Diuji
Sifat Pengujian
Cara Pengujian
Hasil yang Diharapkan
Hasil Uji
1.
Login
Normal
Memasukkan Username :
Sistem akan menampilkan pesan “Selamat Datang” dan juga menampilkan halaman utama Sistem.
Sesuai
Sesuai
Password :
Sistem tidak akan menampilkan halaman utama dan akan muncul pesan kesalahan “Periksa Username dan Password”
Menyimpan dan
Sistem akan
Sesuai
Password :
Data Salah
2.
Manage
Normal
Memasukkan Username :
14
Data Pegawai
3.
Manage Data Gaji
mengubah data pegawai sesuai dengan field yang disediakan, dan menghapus data pegawai.
menampilkan pesan jika data berhasil disimpan, diubah, dan dihapus dan akan menampilkan semua data pegawai di tabel pegawai yang telah dikelolah oleh admin pada Form Manage Data Pegawai
Data Salah
Memasukkan NIP pegawai yang telah disimpan, menyimpan data dengan field yang kosong.
Sistem tidak akan mnyimpan, mengubah dan menghapus data pegawai, namun akan menampilkan pesan kesalahan.
Sesuai
Normal
Menghitung, menyimpan dan menghapus data gaji pegawai sesuai dengan field yang disediakan.
Menampilkan Data gaji yang dikelolah pada form manage data gaji yang telah terenkripsi pada database gaji pegawai.
Sesuai
Data salah
Memasukkan NIP pegawai yang telah dihitung gajinya dan disimpan, menyimpan data tanpa menghitung gaji terlebih dahulu
Sistem tidak akan mnyimpan, mengubah dan menghapus data pegawai, namun akang menampilkan pesan kesalahan.
Sesuai
4.
Report Data Pegawai
Normal
Melihat data pegawai, simpan data pegawai dalam bentuk file, cetak data pegawai
Report data pegawai akan menampilkan Data pegawai yang ada pada database pegawai untuk di simpan atau dicetak sesuai keinginan admin.
Sesuai
5.
Report Data Gaji
Normal
Melihat data pegawai gaji, simpan data gaji dalam bentuk file, cetak data gaji
Report data gaji akan menampilkan data gaji pegawai yang ada pada database gaji yang telah didekripsikan oleh sistem untuk di simpan atau dicetak sesuai keinginan admin.
Sesuai
15
Berdasarkan hasil pengujian blackbox testing dari setiap item, dapat dijelaskan bahwa setiap menu yang ada sudah dapat berjalan sesuai dengan fungsinya masing-masing baik dalam kelompok uji secara normal maupun dalam kelompok uji tidak normal atau pengujian pesan kesalahan semuanya telah berjalan sesuai dengan rancangan yang telah dibangun. Performance testing merupakan salah satu model yang dimiliki oleh black box testing. Performance testing merupakan evaluasi kemampuan program untuk beroperasi dengan benar dipandang dari sisi acuan kebutuhan seperti kecepatan eksekusi program. [7]. Dalam analisa ini akan dilakukan beberapa pengujian dengan nominal gaji yang akan dienkripsikan. Hal ini dilakukan guna mengetahui apakah nominal gaji yang karakternya panjang akan memakan waktu yang lebih lama dengan nominal gaji yang lebih pendek. Kunci yang digunakan memliki panjang 13 karakter. Untuk panjang nominal gaji yang akan digunakan maksimal memiliki panjang delapan karakter dan terpendek akan digunakan lima karakter, karena sistem yang dibuat merupakan enkripsi gaji yang terdiri dari lima sampai delapan angka nominal gaji pegawai. Tabel 3 Analisa Waktu terhadap Panjang Password Panjang Panjang Rata-rata Waktu Kunci Nominal Gaji Proses (karakter) (karakter) (ms) 13 5 0,005 13 6 0,0010 13 7 0,0011 13 8 0,0011 Hasil percobaan waktu rata-rata tiap baris pada Tabel 3 dilakukan sebanyak 30 kali percobaan, sehingga diperoleh rata-rata waktu prosesnya. Dari hasil rata-rata waktu proses pada Tabel 3, maka dapat disimpulkan bahwa peningkatan panjang jumlah karakter nominal gaji yang akan dienkripsi juga mempengaruhi rata-rata waktu proses, maka dapat diambil kesimpulan bahwa waktu proses dipengaruhi oleh jumlah data yang digunakan. Dalam hal ini, waktu proses dipengaruhi oleh panjang karakter nominal gaji yang dimasukan. Pada pengujian tingkat keamanan ini, akan digunakan metode Kasiski Examination. Kasiski Examination mengambil keuntungan dari kenyataan bahwa sejumlah kata umum akan dienkripsi dengan huruf kunci yang sama, menurut pengumpulan pengulangan huruf pada ciphertext. Tes Kasiski akan efektif, jika terjadi banyak pengulangan pada ciphertext yang dihasilkan. [8]. Berikut adalah contoh ciphertext yang memiliki perulangan dan mengijinkan seorang kriptanalis untuk mengetahui panjang kunci yang digunakan. Plaintext : 12345 5536 2467 12345 2253 234 2467 key : SEAN Ciphertext :
16
bwrzfet{`sa|gsvnbwrzfes|fva|`qa|gsv Perulangan karakter bwrzf diasumsikan bahwa datanya memiliki plaintext yang sama. Jarak perulangannya adalah 16 karakter, berarti memiliki kemungkinan panjang kunci adalah 16, 8, 4, atau 2. Perulangan |gsv juga diasumsikan bahwa datanya memilik plaintext yang sama, dengan jarak perulangan sebesar 20 karakter, berarti kemungkinan panjang kunci yang digunakan adalah 20, 10, 5, 4, atau 2. Dengan mengambil persamaan dari keduanya, maka disimpulkan bahwa panjang kuncinya adalah 2 atau 4. Metode Kasiski hanya dapat menyimpulkan panjang kunci yang digunakan untuk enkripsi data, akan tetapi tidak dapat memprediksi kunci yang digunakan untuk proses enkripsi data. 5.
Simpulan
Berdasarkan hasil penelitian, pembahasan dan pengujian yang telah dilakukan tentang penerapan algoritma One Time Pad untuk meningkatkan keamanan basis data pada data gaji pegawai di Kantor Pelayanan Perbendaharaan Negara (KPPN) Ambon, maka diperoleh beberapa kesimpulan sebagai berikut : (1) Dihasilkan sebuah sistem informasi data pegawai dan data gaji pegawai beserta implementasi keamanan data gaji pegawai, dengan menggunakan kriptografi one time pad; (2) Penyandian kriptografi one time pad dapat diimplementasikan pada sistem yang dibuat dengan memanfaatkan algoritma kode geser sebagai kunci dari algoritma kriptografi one time pad; (4) Kecepatan proses enkripsi pada sistem yang dibangun dengan menggunakan algoritma kriptografi one time pad dan kode geser dipengaruhi oleh panjang plaintext yang akan dienkripsi; (5) Metode Kasiski hanya dapat menyimpulkan panjang kunci yang digunakan untuk enkripsi data, akan tetapi tidak dapat memprediksi kunci yang digunakan untuk proses enkripsi data. Saran untuk pengembangan sistem ini adalah sebagai berikut (1) Aplikasi penyimpanan data dapat dikembangkan menjadi aplikasi untuk enkripsi semua data yang ada di KPPN ambon; (2) Proses enkripsi dan dekripsi dapat dikembangkan lagi, sehingga tidak hanya data gaji yang bentuknya integer, melainkan semua type data yang ada dalam aplikasi dapat dienkripsi dan didekripsi. 6. [1]
[2]
[3]
Daftar Pustaka Primanio, 2007. Pemanfaatan Kembali Kriptografi Klasik dengan melakukan Modifikasi Metode-Metode Kriptografi yang ada. Bandung : Institut Teknologi Bandung. Astutik, Duwi. 2007. Algoritma Enkripsi One Time Pad untuk Sistem Pengamanan Access Database Server Menggunakan Bahasa Pemrograman Visual Basic. Semerang : Universitas Negeri Semarang. Munir, Rinaldi, 2006, Kriptografi, Bandung: Penerbit Informatika.
17
[4]
[5] [6] [7]
[8]
Lubis, Haris, 2010. Studi Analisis Aplikasi Algoritma One-Time Pad dan AES pada Keamanan Sistem Cloud Computing. Bandung : Institut Teknologi Bandung. Manongga, Danny, 2007, Matematika Diskrit, Salatiga: Fakultas Teknologi Informasi Universitas Kristen Satya Wacana. Airus, Dony, 2008, Pengantar Ilmu Kriptografi, Teori, Analisis dan Implementasi, Yogyakarta: penerbit Andy. Williams, Laurie, 2006, Testing Overview and Black-Box Testing Techniques, http://agile.csc.ncsu.edu/SEMaterials/BlackBox.pdf. Diakses tanggal 11 Mei 2014. Namiesyva, Twindania, 2007, Kriptografi Sebagai Media Pembelajaran dalam Studi Matematika Tingkat Sekolah, http://www.informatika.org/~rinaldi/Matdis/20062007/Makalah/Makalah0607-38.pdf. Diakses tanggal 11 Mei 2014.
18