1
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
2
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
3
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
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-XOR-
kan 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.
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 :
Karakter Nilai ASCII Biner
Inputan A 65 0100 0001
Kunci b 98 0110 0010
Hasil XOR 0010 0011
𝑐𝑖 = 𝑘𝑖 ⊕ 𝑚𝑖 , for 𝑖 = 0,1,…,𝑁
4
Masukan Kunci
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.
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 M
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 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,
Inputan 01001110 01000001 01001101 01000001
Kunci 01100010 01100101 01110100 01100101
Hasil XOR 00101100 00100100 00111001 00100100
N : 0100 1110
A : 0100 0001
M : 0100 1101
A : 0100 0001
b : 0110 0010
e : 0110 0101
t : 0111 0100
e : 0110 0101
5
(2) Perancangan sistem, (3) Perancangan aplikasi/program, (4) 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
Perancangan Aplikasi/Program
Implementasi dan Pengujian Sistem
Analisis Kebutuhan dan Pengumpulan Data
Perancangan Sistem meliputi Perekayasaan Perangkat
Lunak, Perancangan Database dan Perancangan
Antarmuka dan Database
6
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.
Gambar 3 Flowchart Proses Pengenkripsian Data
Tidak
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 = “
Simpan Hasil
End
Berhasil
disimpan?
Ya
7
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
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
8
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
1001101
1011000
1010011
1011011
1001000
1011010
1010110
Hasil enkripsi 9’/% 1#/D; MXS[HZV
Tabel 1 menjelaskan perhitungan tentang penggunaan algoritma
kriptografi one time pad dan substitusi kode geser. Dimana ketiga inputan
9
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
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. 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. }
1. class kodegeser { 2. public static string Encrypt(string plainText, int key) 3. { 4. char[] plainChar = plainText.ToCharArray(); 5. int[] ascii = new int[plainChar.Length]; 6. for (int count=0;count < plainChar.Length; count++){ 7. ascii[count] = Convert.ToInt32(plainChar[count]); 8. if (ascii[count] >= 65 && ascii[count] <= 90){ 9. ascii[count] = ((ascii[count] - 65 + key) % 26) + 65;}
10
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. 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. }
11
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)))));
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
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.
12
Gambar 11 Hasil Dekripsi
Pemanggilan fungsi untuk proses dekripsi data gaji, ditunjukkan pada
Kode Program 2.
Kode Program 2 Fungsi Dekripsi
Kode Program 2 merupakan perintah untuk medekripsikan data yang telah
terenkripsi dengan membuat list database yang sama dengan database dengan
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
1. dgvgaji.DataSource = null; 2. Dao.DAO d = new Dao.DAO(); 3. List<Model.Gaji> ld = new List<Model.Gaji>(); 4. DataGridViewRow rw = new DataGridViewRow(); 5. ld = d.getGajiPegawaiList(); 6. dgvgaji.ColumnCount = 8; 7. dgvgaji.Columns[0].Name = "NIP"; 8. dgvgaji.Columns[1].Name = "Gaji Bulan"; 9. dgvgaji.Columns[2].Name = "Gaji Pokok"; 10. dgvgaji.Columns[3].Name = "Tun Anak"; 11. dgvgaji.Columns[4].Name = "Tun Beras"; 12. dgvgaji.Columns[5].Name = "Pot Pajak"; 13. dgvgaji.Columns[6].Name = "Pot Lain"; 14. dgvgaji.Columns[7].Name = "Gaji Bersih"; 15. for (int i = 0; i < ld.Count; i++) { 16. String no = i + 1 + ""; 17. String nip = ld[i].getNip()+""; 18. string gaji_bulan = OTP.otp(ld[i].getGaji_Bulan() + "",
(kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23))); 19. String gaji_pokok = OTP.otp(ld[i].getGajiPokok() + "",
(kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); 20. String tun_anak = OTP.otp(ld[i].getTunAnak() + "",
(kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); 21. String tun_beras = OTP.otp(ld[i].getTunBeras() + "",
(kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); 22. String pot_pajak = OTP.otp(ld[i].getPotPajak() + "",
(kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); 23. String pot_lain = OTP.otp(ld[i].getPotLain() + "",
(kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); 24. String gaji_bersih = OTP.otp(ld[i].getGaji_bersih() + "",
(kodegeser.Encrypt(tbadmin.Text, Convert.ToInt32(23)))); 25. string[] row = new string[] { nip, gaji_bulan,
gaji_pokok, tun_anak, tun_beras, pot_pajak, pot_lain, gaji_bersih };
26. dgvgaji.Rows.Add(row);} 27. MessageBox.Show(this, "Data Berhasil Di Dekripsi");}
28.
13
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
14
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 :
Password :
Sistem akan
menampilkan pesan
“Selamat Datang” dan
juga menampilkan
halaman utama Sistem.
Sesuai
Data Salah Memasukkan
Username :
Password :
Sistem tidak akan
menampilkan halaman
utama dan akan muncul
pesan kesalahan
“Periksa Username dan
Password”
Sesuai
2. Manage Normal Menyimpan dan Sistem akan Sesuai
15
Data
Pegawai
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
3.
Manage
Data Gaji
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
16
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
Kunci
(karakter)
Panjang
Nominal Gaji
(karakter)
Rata-rata Waktu
Proses
(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 :
17
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. Daftar Pustaka
[1] Primanio, 2007. Pemanfaatan Kembali Kriptografi Klasik dengan
melakukan Modifikasi Metode-Metode Kriptografi yang ada. Bandung :
Institut Teknologi Bandung.
[2] Astutik, Duwi. 2007. Algoritma Enkripsi One Time Pad untuk Sistem
Pengamanan Access Database Server Menggunakan Bahasa Pemrograman
Visual Basic. Semerang : Universitas Negeri Semarang.
[3] Munir, Rinaldi, 2006, Kriptografi, Bandung: Penerbit Informatika.
18
[4] Lubis, Haris, 2010. Studi Analisis Aplikasi Algoritma One-Time Pad dan
AES pada Keamanan Sistem Cloud Computing. Bandung : Institut
Teknologi Bandung.
[5] Manongga, Danny, 2007, Matematika Diskrit, Salatiga: Fakultas Teknologi
Informasi Universitas Kristen Satya Wacana.
[6] Airus, Dony, 2008, Pengantar Ilmu Kriptografi, Teori, Analisis dan
Implementasi, Yogyakarta: penerbit Andy.
[7] Williams, Laurie, 2006, Testing Overview and Black-Box Testing
Techniques, http://agile.csc.ncsu.edu/SEMaterials/BlackBox.pdf. Diakses
tanggal 11 Mei 2014.
[8] Namiesyva, Twindania, 2007, Kriptografi Sebagai Media Pembelajaran
dalam Studi Matematika Tingkat Sekolah,
http://www.informatika.org/~rinaldi/Matdis/2006-
2007/Makalah/Makalah0607-38.pdf. Diakses tanggal 11 Mei 2014.
Top Related