Implementasi Algoritma Blowfish pada Basis Data Honorarium

advertisement
Implementasi Algoritma Blowfish
pada Basis Data Honorarium Mengajar
Dosen Tidak Tetap FTI UKSW
Artikel Ilmiah
Peneliti :
Wilnic Izaac Maraunuela (672007118)
M. A. Ineke Pakereng, M.Kom.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Salatiga
Mei 2013
Implementasi Algoritma Blowfish
pada Basis Data Honorarium Mengajar
Dosen Tidak Tetap FTI UKSW
Artikel Ilmiah
Diajukan kepada
Fakultas Teknologi Informasi
untuk memperoleh Gelar Sarjana Komputer
Peneliti :
Wilnic Izaac Maraunuela (672007118)
M. A. Ineke Pakereng, M.Kom.
Program Studi Teknik Informatika
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Salatiga
Mei 2013
Implementasi Algoritma Blowfish
pada Basis Data Honorarium Mengajar
Dosen Tidak Tetap FTI UKSW
Wilnic Izaac Maraunuela 1, M. A. Ineke Pakereng 2
Fakultas Teknologi Informasi
Universitas Kristen Satya Wacana
Jl. Diponegoro 52-60, Salatiga 50711, Indonesia
E-mail: [email protected], [email protected]
Abstract
Information systems cannot be separated from the use of the database as
information storage media. A database system in general has been equipped with the
authentication process to gain access to the stored information. But not necessarily those
who have the right to access the database also have the right to read the information in it,
as for example is the data honorarium. In this study designed a cryptosystem to encrypt
records stored in an honorarium database. Encryption process is done by using the
blowfish cipher. The results showed that the cryptosystem capable of storing the data into
the database in the form of cipher text, and able to return to the form of plain text in the
reading process.
Keywords: Cryptography, Blowfish, Database
Abstrak
Sistem informasi tidak dapat dipisahkan dengan penggunaan database sebagai
media penyimpanan informasi. Suatu sistem database pada umumnya telah dilengkapi
dengan proses otentikasi untuk dapat mengakses informasi yang tersimpan. Namun
belum tentu pihak yang memiliki hak untuk mengakses database, juga memiliki hak
untuk membaca informasi di dalamnya, sebagai contohnya adalah data honorarium. Pada
penelitian ini dirancang suatu kriptosistem, untuk menyandikan record yang tersimpan
pada database honorarium mengajar dosen tidak tetap FTI UKSW. Proses enkripsi
dilakukan dengan menggunakan blowfish cipher. Hasil penelitian menunjukkan bahwa
aplikasi kriptosistem yang dirancang dapat menyimpan data ke dalam database dalam
bentuk cipher text, dan dapat mengembalikan ke dalam bentuk plaintext pada proses
pembacaan.
Kata Kunci : Kriptografi, Blowfish, Basis Data
1
Mahasiswa Program Studi Teknik Informatika, Fakultas Teknologi Informasi, Universitas
Kristen Satya Wacana Salatiga
2
Staf Pengajar Fakultas Teknologi Informasi Universitas Kristen Satya Wacana Salatiga
1.
Pendahuluan
Database merupakan bagian penting dari suatu sistem informasi. Data
yang diolah dan disajikan oleh sistem informasi, disimpan dan diorganisasi oleh
sistem database. Pada umumnya sistem database telah dilengkapi dengan proses
otentikasi untuk membatasi akses ke dalamnya. Hal ini berarti hanya pihak-pihak
tertentu yang mengetahui account database, yang dapat login ke dalam sistem
database.
Masalah yang muncul adalah ketika database diakses oleh pihak yang
memiliki otorisasi untuk mengakses, namun tidak memiliki hak untuk membaca
informasi di dalamnya. Sebagai contoh adalah administrator database, yang
memiliki hak akses ke dalam sistem database. Namun informasi rahasia yang
tersimpan di dalamnya belum tentu berhak dilihat oleh administrator database
tersebut.
Untuk mengamankan informasi yang tersimpan, dapat dilakukan dengan
cara menyandikan informasi tersebut, sebelum kemudian disimpan di database.
Proses penyandian berlangsung pada level sistem informasi, yaitu aplikasi yang
menggunakan database. Sebelum data disimpan, oleh aplikasi data tersebut
disandikan terlebih dahulu. Ketika akan digunakan, data dibaca dari database,
kemudian dilakukan proses dekripsi untuk dapat menjadi informasi yang
dimengerti.
Proses penyandian data dapat dilakukan dengan algortima enkripsi. Salah
satu algoritma enkripsi yang terkenal cepat adalah Blowfish [1]. Algoritma
Blowfish memiliki performa yang baik. Block yang digunakan memiliki ukuran
64-bit (8 byte), hal ini memberi keuntungan yaitu proses padding yang dilakukan
berkisar antara satu byte sampai dengan tujuh byte.
Berdasarkan latar belakang masalah tersebut, maka pada penelitian ini
diimplementasikan suatu kriptosistem yang berfungsi untuk menyandikan record
pada database. Database yang digunakan adalah database honorarium mengajar
dosen tidak tetap Fakultas Teknologi Informasi Universitas Kristen Satya
Wacana.
2.
Tinjauan Pustaka
Pada penelitian yang berjudul “Enkripsi Field Tabel Database dengan
PGP”, dibahas mengenai bagaimana mengamankan isi dari tabel database. Hal ini
dilakukan untuk menghindari pencurian data ketika akses ilegal dilakukan ke
dalam database. Informasi disandikan dengan metode PGP. Hasil
enkripsi/dekripsi ditampung sementara ke dalam file, untuk kemudian disimpan ke
dalam tabel atau ditampilkan lewat aplikasi. Kesimpulan yang diperoleh adalah
hasil enkripsi yang besar sehingga membutuhkan media penyimpanan lebih besar
dan waktu proses yang lebih lama karena adanya proses penyimpanan ke file
sementara [2].
Pada penelitian berjudul “DES, AES and Blowfish: Symetric Key
Cryptography Algorithms Simulation Based Performance Analysis”, dibahas
mengenai perbandingan performa tiga algoritma enkripsi, yaitu DES, AES, dan
1
Blowfish. Pada penelitian tersebut disimpulkan bahwa Blowfish memiliki
performa yang sedikit lebih baik dari dua algoritma yang lain [3].
Berdasarkan beberapa penelitian yang pernah dilakukan tersebut, maka
dilakukan penelitian yang menghasilkan sebuah aplikasi kriptosistem, yang
bekerja untuk menyandikan informasi yang tersimpan di database. Proses enkripsi
tidak dilakukan melalui file perantara, namun dilakukan di memory, sehingga
lebih cepat. Algoritma yang dipilih untuk proses penyandian adalah Blowfish,
karena memiliki performa yang baik, dan memiliki block cipher yang kecil yaitu
64-bit. Pada penelitian ini, penerapan kriptosistem dilakukan pada database
honorarium mengajar dosen tidak tetap FTI UKSW. Pengujian dilakukan untuk
melihat kecepatan proses menyimpan dan membaca, dan juga proses pencarian
record di database.
Penelitian yang dilakukan membahas tentang penerapan teknik kriptografi
pada database dalam sistem informasi penggajian, dalam hal ini honorarium.
Sistem informasi merupakan kumpulan komponen yang saling berhubungan untuk
mengolah input (data) menjadi output (informasi) sehingga dapat memenuhi
kebutuhan pemakai. Komponen-komponen utama dalam suatu sistem informasi
berbasiskan komputer terdiri dari: 1) Database, 2) Database software, 3) Aplikasi
software, 4) Hardware komputer termasuk media penyimpanan, dan 5) Personal
yang menggunakan dan mengembangkan sistem [4]. Pada sistem informasi
penggajian, yang menjadi komponen input adalah data karyawan dan data jam
kerja, sedangkan komponen output adalah laporan kehadiran karyawan dan slip
gaji. Komponen input dan output tersebut dapat berkembang sesuai dengan
kebutuhan pengguna sistem.
Pada sistem informasi penggajian/honorarium terdapat database yang
saling berelasi, yang menampung data-data yang diolah menjadi informasi,
dikenal sebagai relational database management system (RDBMS). RDBMS
adalah kumpulan dari relasi yang telah mengalami proses normalisasi dan
memiliki nama relasi yang berbeda [5].
Sistem Informasi penggajian/honorarium berisi data-data tentang
honorarium yang diterima oleh seorang karyawan atau pekerja, dimana tidak
semua orang mempunyai hak untuk mengetahui informasi dalam sistem tersebut.
Oleh karena itu dilakukan penyandian data menggunakan Algoritma Blowfish.
Blowfish dirancang pada tahun 1993 oleh Bruce Schneier sebagai algoritma yang
cepat, dan alternatif yang dapat diakses secara umum, untuk algoritma enkripsi
yang telah ada saat itu. Blowfish tidak dipatenkan dan bebas lisensi, dan tersedia
untuk semua penggunaan. Meskipun rawan dengan masalah weak keys, tidak ada
serangan diketahui berhasil membobol algoritma ini [1] [6].
Blowfish termasuk dalam enkripsi block cipher 64-bit dangan panjang
kunci yang bervariasi antara 32-bit sampai 448-bit. Algoritma Blowfish terdiri atas
dua bagian : 1) Key-Expansion, berfungsi merubah kunci (Minimum 32-bit,
Maksimum 448-bit) menjadi beberapa array subkunci (subkey) dengan total 4168
byte; 2) Enkripsi Data, terdiri dari iterasi fungsi sederhana (Feistel Network)
sebanyak 16 kali putaran. Setiap putaran terdiri dari permutasi key-dependent dan
key-subtition dan data-dependent. Semua operasi adalah penambahan (addition)
2
dan exclusive-OR pada variabel 32-bit. Operasi tambahan lainnya hanyalah empat
penelusuran tabel (table lookup) array berindeks untuk setiap putaran.
Gambar 1 Proses Enkripsi Algoritma Blowfish [7]
Proses enkripsi algoritma Blowfish pada Gambar 1, dijelaskan sebagai
berikut : [7]
Bentuk inisial P-array sebanyak 18 buah (P1, P2, .............. P18) masing1.
masing bernilai 32-bit.
Array P terdiri dari delapan belas kunci 32-bit subkunci :
P1,P2,.......,P18
2.
Bentuk S-box sebanyak 4 buah masing-masing bernilai 32-bit yang
memiliki masukan 256.
Empat 32-bit S-box masing-masing mempunyai 256 entri :
S1,0,S1,1,....................,S1,255
S2,0,S2,1,....................,S2,255
S3,0,S3,1,....................,S3,255
S4,0,S4,1,....................,S4,255
3.
Plaintext yang akan dienkripsi diasumsikan sebagai masukan, Plaintext
tersebut diambil sebanyak 64-bit, dan apabila kurang dari 64-bit, maka
ditambahkan bit-nya, supaya dalam operasi nanti sesuai dengan datanya.
3
Hasil pengambilan pada langkah 3 dibagi 2, 32-bit pertama disebut XL, 32bit yang kedua disebut XR.
Selanjutnya lakukan operasi XL = XL xor Pi dan XR = F(XL) xor XR
5.
6.
Hasil dari operasi pada langkah 4 ditukar, XL menjadi XR, dan XR menjadi
XL.
7.
Lakukan sebanyak 16 kali, perulangan yang ke-16 lakukan lagi proses
penukaran XL dan XR.
8.
Pada proses ke-17 lakukan operasi untuk XR = XR xor P17, dan XL = XL
xor P18.
9.
Proses terakhir satukan kembali XL dan XR sehingga menjadi 64-bit
Salah satu operator logika utama yang digunakan pada proses enkripsi
algoritma Blowfish adalah operator Exclusive-OR (XOR). Exclusive-OR (XOR)
adalah operasi logika pada dua nilai. Hasil operasi akan bernilai BENAR jika
tepat salah satu dari kedua variabel bernilai BENAR. Jika tidak, akan memberikan
hasil SALAH. Hal ini juga berarti bahwa hasil dari operasi 'XOR' akan bernilai
BENAR hanya jika kedua variabel masukan memiliki nilai yang berbeda. Nilai
yang sama akan menghasilkan nilai SALAH [8]. Tabel 1 merupakan tabel
kebenaran operasi XOR.
4.
Tabel 1 Tabel Kebenaran XOR [8]
p
q
⊕
F
F
T
T
F
T
F
T
F
T
T
F
Pada proses enkripsi yang terdapat pada sistem yang dikembangkan ini,
semua karakter pesan diubah ke dalam nilai ASCII sebelum dilakukan proses
enkripsi. ASCII merupakan singkatan dari American Standard Code for
Information Interchange. Komputer hanya dapat memahami nomor, sehingga
kode ASCII digunakan sebagai representasi numerik dari karakter seperti 'a' atau
'@' atau suatu perintah tertentu [9]. Pada Gambar 2 ditampilkan daftar karakter
ASCII termasuk penjelasan dari 32 karakter pertama yang merupakan karakter
non-cetak.
.
4
Gambar 2 ASCII Table [9]
3.
Metode dan Perancangan Sistem
Penelitian yang dilakukan, diselesaikan melalui tahapan penelitian yang
terbagi dalam empat tahapan, yaitu: (1) Identifikasi Masalah, (2) Perancangan
sistem, (3) Implementasi sistem, dan (4) Pengujian sistem dan analisis hasil
pengujian.
Identifikasi Masalah, dan Pengumpulan Data
Perancangan Sistem meliputi Perancangan Proses
Enkripsi, dan Proses Dekripsi pada Database
Implementasi Sistem
Pengujian Sistem dan Analisis Hasil Pengujian
Gambar 3 Tahapan Penelitian [10]
Tahapan penelitian pada Gambar 3, dapat dijelaskan sebagai berikut. Tahap
pertama: identifikasi masalah, yaitu mengidentifikasi masalah-masalah yang akan
dibahas terkait database honorarium dosen tidak tetap FTI UKSW. Masalah yang
ditemukan berupa data honorarium, data yang didapat peneliti bersumber dari
salah satu dosen tetap FTI UKSW yaitu ibu M. A. Ineke Pakereng, M.Kom. Data
honorarium merupakan data yang bersifat rahasia, karena hanya yang memiliki
hak akses yang dapat mengetahuinya, sehingga untuk menyimpannya diperlukan
pengamanan data. Solusi yang dikemukakan pada penelitian ini adalah dengan
5
menyandikan isi dari database honorarium. Detil latar belakang masalah telah
dijabarkan pada bagian Pendahuluan. Kemudian mendapatkan data dan literatur
yang terkait dengan proses penyandian data yaitu dengan menggunakan teknik
kriptografi, yaitu algoritma blowfish. Algoritma blowfish dipilih karena
berdasarkan penelitian terdahulu, blowfish memiliki performa yang lebih baik dari
algoritma enkripsi yang lain; Tahap kedua: perancangan sistem yang meliputi
perancangan database, proses enkripsi pada tabel, dan proses dekripsi pada tabel
menggunakan teknik kriptografi blowfish, pada database dalam sistem yang
dibangun. Perancangan database termasuk di dalamnya perancangan relasi antar
tabel; Tahap ketiga: implementasi sistem, yaitu membuat aplikasi sesuai
perancangan proses pada tahap kedua, yaitu misalnya bagaimana aplikasi/program
berjalan saat database dienkripsi dan didekripsi kembali; dan Tahap keempat:
pengujian sistem dan analisis hasil pengujian, yaitu dilakukan pengujian terhadap
kriptosistem yang dibangun, dengan tujuan untuk mengetahui pengaruh enkripsi
pada proses yang berjalan di sistem, yaitu waktu yang diperlukan untuk
menyimpan dan membaca data, dan juga proses pencarian record di database.
Selain itu pengujian juga dilakukan untuk mengetahui pengaruh enkripsi terhadap
database, yaitu ukuran field, yang juga berarti ukuran database dan pengaruh
terhadap relasi antar tabel.
Perancangan kriptosistem yang dibangun dijelaskan sebagai berikut. Use
case diagram digunakan untuk menjelaskan fungsi-fungsi yang bersentuhan
langsung dengan pengguna, sedangkan flowchart digunakan untuk menjelaskan
proses-proses yang berlangsung dibaliknya.
Gambar 4 Use Case Diagram Sistem
6
Gambar 4 menunjukkan use case diagram sistem, dijelaskan sebagai
berikut. Aktor yang menggunakan sistem adalah Operator. Operator berperan
untuk mengatur data pada sistem, yaitu data Dosen, data Matakuliah, data
Mengajar, dan data Kehadiran Dosen. Keempat use case ini merupakan input
untuk sistem. Pada use case pengaturan data Dosen, terdapat extended use case
Cetak Laporan Honorarium. Use case ini merupakan output dari sistem.
Rancangan Database dalam sistem informasi honorarium yang dibangun,
yang digunakan untuk menyimpan data honorarium memiliki relasi seperti
ditampilkan pada Gambar 5. Database honorarium memiliki empat tabel, yaitu
tabel dosen menyimpan data dosen tidak tetap, tabel mk menyimpan data
matakuliah, tabel mengajar menyimpan data informasi pengajaran tiap dosen,
seorang dosen mengampu matakuliah apa saja. Kemudian yang terakhir adalah
tabel kehadiran, berfungsi untuk menyimpan informasi kehadiran dosen untuk tiap
matakuliah yang diampu oleh dosen. Tabel kehadiran menjadi dasar perhitungan
honorarium untuk tiap dosen tidak tetap.
Gambar 5 Relasi Antar Tabel
Rumus perhitungan honor dosen tidak tetap untuk tiap matakuliah,
didefinisikan sebagai berikut:
Honor Bruto
Honor Netto
= (beban tugas x jumlah hadir x Rp. 1,4850,000)/
(12*4) + biaya transport
= Honor Bruto – pph
= Honor Bruto – (Honor Bruto*5%)
Beberapa proses yang terdapat dalam perancangan kriptosistem dijelaskan
lebih lanjut sebagai berikut.
Proses Menyimpan Data (proses enkripsi database), dijelaskan sebagai
berikut. Input sistem adalah data Dosen, Matakuliah, Mengajar dan Kehadiran
Dosen. Untuk setiap use case, penyimpanan data dilakukan melalui tiga langkah,
yaitu: 1) Mengubah plain data ke byte array; 2) Melakukan proses enkripsi
7
dengan kunci yang tersimpan di aplikasi, 3) Menyimpan cipher data dalam bentuk
varbinary ke dalam database. Proses menyimpan data (proses enkripsi database)
dalam bentuk flowchart, dapat dilihat pada Gambar 6.
Start
Start
PLAIN=nilai field
KEY=kunci rahasia
INFOPADDING=0
CIPHER=nilai field
KEY=kunci rahasia
INFOPADDING=0
Ubah PLAIN ke BYTE_ARRAY
Gunakan 8 byte pertama
sebagai nilai INFOPADDING
(nilai padding)
Pecah PLAIN ke dalam blok
berukuran masing-masing 8 byte
Jika blok terakhir
panjangnya kurang
dari 8 byte
True
False
i=0
Tambahkan padding
dibagian belakang, pada
blok tersebut
INFOPADDING =
banyaknya padding yang
ditambahkan
Pecah CIPHER ke dalam
blok berukuran masingmasing 8 byte
i=0
Jika i kurang dari
banyaknya blok
Jika i kurang dari
banyaknya blok
True
PLAIN = DEKRIPSI(KEY, BLOK ke i)
True
CIPHER = Enkripsi(KEY, BLOK ke i)
False
False
i=i+1
i=i+1
Gabung kembali semua blok yang
telah terenkripsi
Gabung kembali semua blok PLAIN
Letakkan nilai INFOPADDING
dibagian paling depan dari
gabungan blok
Hapus Padding sesuai jumlah
INFOPADDING
Simpan ke database
Ubah gabungan PLAIN ke bentuk
String
End
End
Gambar 6 Proses Enkripsi Database
Gambar 7 Proses Dekripsi Database
Proses Menampilkan Data (proses dekripsi database), dijelaskan sebagai
berikut. Langkah untuk menampilkan data dari database adalah: 1) Menggunakan
perintah SELECT untuk membaca data dari database; 2) Melakukan proses
dekripsi dengan kunci yang tersimpan di aplikasi; 3) Hasil dekripsi yang berupa
byte array diubah ke dalam bentuk teks. Proses menampilkan data (proses
dekripsi database), dalam bentuk flowchart, dapat dilihat pada Gambar 7.
Proses Padding Data, dijelaskan sebagai berikut. Blowfish merupakan
block cipher dengan ukuran block 64-bit. Hal ini berarti tiap plain data dibagi ke
dalam blok-blok dengan ukuran tiap blok adalah 8 byte. Masalah yang timbul
adalah ketika blok terakhir berukuran kurang dari 8 byte. Untuk mengatasinya,
maka ditambahkan padding pada bagian paling belakang blok tersebut. Informasi
tentang banyaknya padding yang ditambahkan, diletakkan pada bagian paling
depan dari cipher data. Proses padding data dalam bentuk diagram, dapat dilihat
pada Gambar 8.
8
blok
blok
blok
blok
1
2
3
4
f
a
t
i
a
g
m
k
e
u
k
i
i
s
l
t
n
o
n
f
\0 \0
padding
a
s
l
o
o
r
\0 \0
4 byte
Gambar 8 Contoh Padding Data
Pada Gambar 8, plain text yang digunakan sebagai contoh adalah “fakultas
teknologi informasi”. Plain text tersebut dipecah ke dalam 4 blok. Pada blok
terakhir ditambahkan padding 4 byte. Proses enkripsi data dan proses menyimpan
data, dijelaskan pada Contoh 1.
Contoh 1: Proses Enkripsi dan Proses Menyimpan Data
Pada Contoh 1 ini dibahas bagaimana data dari bentuk plain text dienkripsi
menjadi cipher text, kemudian disimpan ke dalam database. Pembahasan tidak
meliputi proses di balik algoritma blowfish.
Plain text (9 byte):
plain text
m
a
g
d
a
l
e
n
a
ASCII byte
value
109
97
103
100
97
108
101
110
97
Proses Enkripsi:
plain data
blok 1
109
97
103
100
97
108
101
110
blok 2
97
0
0
0
0
0
0
0
PROSES ENKRIPSI BLOWFISH
cipher data
blok 1
6D
7B
12
D0
82
CE
78
96
blok 2
9C
3E
63
5C
36
82
AE
CE
Proses Penambahan Informasi data Padding, dijelaskan sebagai berikut.
Informasi data padding adalah angka yang menunjukkan banyaknya padding yang
ditambahkan pada block terakhir enkripsi. Angka ini berkisar antara 0 sampai
dengan 7. 0 berarti tidak ada padding, blok terakhir tepat 8 byte. 7 berarti 7
padding ditambahkan pada blok terakhir, karena blok terakhir hanya berjumlah 1
byte.
Pada Contoh 1, blok terakhir hanya berisi 1 byte yaitu byte bernilai 97 (karakter
„a‟). Sehingga jumlah padding yang ditambahkan adalah 7 byte, bernilai 0.
Padding = 7.
Hasil akhir enkripsi = padding + cipher data
07
6D
7B
12
D0
82
CE
78
96
9C
3E
63
5C
36
82
AE
CE
Proses Menyimpan Data pada Tabel di Database, dijelaskan sebagai berikut.
Perintah untuk menyimpan record baru ke dalam tabel pada database ditunjukkan
melalui pseudocode pada Kode Program 1.
9
Kode Program 1: Pseudocode untuk Proses Menyimpan Data
1.
2.
3.
4.
Inisialisi KONEKSI
Set CIPHER = hasil enkripsi
Set SQL = “INSERT INTO dosen (nama) VALUE (cipher)”
Eksekusi SQL menggunakan KONEKSI
Disimpan dalam database dengan nilai:
076D7B12D082CE78969C3E635C3682AECE  17 byte
Selisih dengan plain data adalah : 17 – 9 = 8 byte.
Proses dekripsi data dan proses membaca data, dijelaskan pada Contoh 2.
Contoh 2: Proses Membaca dan Proses Dekripsi Data
Untuk menampilkan data, maka langkah yang dilakukan adalah membaca
data dari tabel, membaca satu byte pertama sebagai nilai banyaknya padding,
melakukan dekripsi byte-byte sisanya, dan terakhir menghilangkan padding.
Proses Membaca Data Dari Database :
Perintah untuk membaca isi tabel dilakukan melalui pseudocode pada Kode
Program 2.
Kode Program 2: Pseudocode untuk Proses Membaca Data
1.
2.
3.
4.
5.
Inisialisi KONEKSI
Set CIPHER = “”
Set SQL = “SELECT nama FROM dosen”
Set RESULT = hasil eksekusi SQL menggunakan KONEKSI
Set CIPHER = baca RESULT kolom “nama”
Proses Membaca byte pertama:
Byte pertama merupakan infomasi banyaknya padding yang ditambahkan. Hasil
proses membaca data dari database, diperoleh cipher data sebagai berikut:
07
6D
7B
12
D0
82
CE
78
96
9C
3E
63
5C
36
82
AE
CE
Byte pertama = 07 yang artinya terdapat 7 padding.
Proses Dekripsi:
cipher data
blok 1
6D
7B
12
D0
82
CE
78
96
blok 2
9C
3E
63
5C
36
82
AE
CE
PROSES DEKRIPSI BLOWFISH
plain data
blok 1
109
97
103
100
97
108
101
110
blok 2
97
0
0
0
0
0
0
0
Proses Menghilangkan Padding:
Dari plain data, dihapus 7 byte paling belakang, sehingga dihasilkan:
109
97
103
100
97
108
101
110
97
Dari kode ASCII ini diterjemahkan ke dalam karakter ASCII
ASCII byte
value
109
97
103
100
97
108
101
110
97
plain text
m
a
g
d
a
l
e
n
a
10
4.
Hasil dan Pembahasan
Hasil implementasi sistem berdasarkan rancangan sistem, dijelaskan
sebagai berikut.
Gambar 9 Form Input Data Dosen
Data dosen dimasukkan dengan menggunakan form seperti ditunjukkan
pada Gambar 9. Pada bagian kanan form, terdapat informasi data dosen dalam
bentuk cipher text. Data terenkripsi inilah yang akan disimpan dalam database.
Hasil penyimpanan dapat dilihat pada Gambar 10. Kotak berwarna merah
menunjukkan cipher data, lingkaran berwarna merah menunjukkan panjangnya
cipher data. Cipher data diawali dengan “0x” yang oleh MySQL digunakan untuk
menunjukkan data dengan format heksadesimal.
Gambar 10 Data Cipher yang Tersimpan pada Database
Kode Program 3 Perintah Untuk Menyimpan Data Dosen Terenkripsi ke Database
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
byte[] key = Encoding.Default.GetBytes(Koneksi.Kunci);
conn.Open();
MySqlCommand command = new MySqlCommand();
command.Connection = conn;
command.CommandText =
"INSERT INTO dosen VALUES (@k, @n, @a);";
command.Parameters.Add("@n",
MySqlDbType.VarBinary, 128).Value
= BlowfishCipher.Encrypt(
Encoding.Default.GetBytes(p.Nama), key);
...
12. command.ExecuteNonQuery();
Kode Program 3 merupakan perintah yang digunakan untuk menyimpan
data ke dalam database. Sebelum data disimpan, dilakukan proses enkripsi
11
terlebih dahulu (perintah pada baris 9). Kemudian perintah pada baris ke 12,
perintah INSERT dieksekusi oleh aplikasi, sehingga data tersimpan ke database.
Data kehadiran merupakan inti dari sistem honorarium yang dibuat pada
penelitian ini. Pada Gambar 11, ditunjukkan tampilan dari form input data
kehadiran dosen. Pada form ini pengguna aplikasi dapat memilih dosen dan
matakuliah, kemudian menentukan tanggal-tanggal kehadiran dosen untuk
matakuliah yang dipilih. Tampilan Laporan Kehadiran Dosen dan Perhitungan
Honorarium, ditunjukkan pada Gambar 12.
Gambar 11 Form Input Data Kehadiran
Gambar 12 Form Laporan Kehadiran Dosen dan Perhitungan Honorarium
Kode Program 4 merupakan perintah yang digunakan untuk membaca data
dari tabel di database. Perintah pada baris 5 merupakan perintah SQL untuk
mengambil data. Kemudian proses dekripsi terhadap data yang diperoleh
dijalankan (perintah pada baris 9-14). Untuk dapat dibaca sebagai data teks, hasil
dekripsi yang berupa byte array harus diubah dengan menggunakan fungsi
GetString pada class Encoding (perintah pada baris 17-19).
12
Kode Program 4 Perintah Untuk Membaca Data dari Database
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
byte[] key = Encoding.Default.GetBytes(Koneksi.Kunci);
conn.Open();
MySqlCommand command = new MySqlCommand();
command.Connection = conn;
command.CommandText = "SELECT * FROM dosen;";
MySqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
var k = BlowfishCipher.Decrypt(
(byte[])reader["kode"], key);
var n = BlowfishCipher.Decrypt(
(byte[])reader["nama"], key);
var a = BlowfishCipher.Decrypt(
(byte[])reader["asal"], key);
list.Add(new Dosen()
{
Kode = Encoding.Default.GetString(k),
Nama = Encoding.Default.GetString(n),
Alamat = Encoding.Default.GetString(a)
});
21. }
Pengujian yang dilakukan terdiri dari pengujian kecepatan proses simpan,
pengujian kecepatan proses membaca data, pengujian kecepatan pencarian data,
dan pengujian ukuran data. Pengujian dilakukan pada komputer dengan
spesifikasi sebagai berikut:
Sistem Operasi
:
Windows 8
Prosesor
:
Intel® Core ™ i5-2410M CPU
@2.30GHz 230GHz
RAM
Kecepatan harddisk
:
:
8 GB
7200rpm
Pengujian dan analisis hasil pengujian terhadap sistem yang dibangun,
dijelaskan sebagai berikut. Pengujian Kecepatan Proses Simpan dilakukan
dengan tujuan untuk mengetahui pengaruh enkripsi terhadap kecepatan proses
penyimpanan data ke database. Pengujian dilakukan dengan cara mencatat selisih
waktu dari proses membaca input, enkripsi, kemudian menyimpan ke database.
Hasil pengujian kecepatan proses simpan dapat dilihat pada Tabel 2. Selisih dari
waktu Tanpa Enkripsi dan waktu Dengan Enkripsi dicatat pada kolom
Perbedaan Waktu Proses. Perbedaan Waktu Proses dengan kata lain
merupakan waktu proses enkripsi.
Tabel 2 Hasil Pengujian Kecepatan Proses Simpan
No
Jumlah
Record
Tanpa Enkripsi
(detik)
Dengan Enkripsi
(detik)
Selisih
Waktu Proses
(detik)
Selisih Waktu Proses
Per Record
(detik/record)
1.
2.
3.
4.
5.
Ratarata
10
20
30
40
50
0,47
0,94
1,12
1,57
1,88
0,72
1,39
1,89
2,59
3,16
0,25
0,45
0,77
1,02
1,28
0,025
0,023
0,026
0,026
0,026
30
1,196
1,95
0,754
0,0249
13
Analisis hasil pengujian kecepatan proses simpan, dijelaskan sebagai
berikut. Seperti dijelaskan pada proses enkripsi database (Gambar 6), pada proses
penyimpanan record terjadi proses enkripsi terlebih dahulu dan kemudian proses
INSERT. Sehingga waktu total = waktu enkripsi+waktu INSERT. Pada Tabel 2,
perbedaan waktu proses diperoleh dari selisih antara waktu proses penyimpanan
“tanpa enkripsi” dan “dengan enkripsi”. Rata-rata selisih waktu tiap record adalah
0,0249 detik. Angka ini merupakan waktu yang diperlukan untuk proses enkripsi
satu data record.
Banyaknya record yang dapat disimpan untuk database tanpa enkripsi
adalah 30 / 1,196 = 25,08 record per detik, dan untuk data terenkripsi adalah 30 /
1,95 = 15,38 record per detik. Kesimpulan yang diperoleh adalah adanya enkripsi,
menambah waktu proses sebesar 0,0249 detik untuk tiap record. Hasil pengujian
kecepatan proses simpan terkait perbedaan waktu simpan untuk record tanpa
enkripsi dan record terenkripsi dalam bentuk grafik ditunjukkan pada Gambar 13.
Gambar 13 Grafik Perbedaan Waktu Simpan
Pengujian Kecepatan Proses Membaca dilakukan dengan tujuan untuk
mengetahui pengaruh enkripsi terhadap kecepatan proses membaca data dari
database. Pengujian dilakukan dengan cara mencatat selisih waktu dari proses
query, dekripsi, kemudian menampilkan pada aplikasi. Hasil pengujian kecepatan
proses membaca dapat dilihat pada Tabel 3. Kesimpulan dari hasil pengujian
adalah proses enkripsi memberikan tambahan waktu proses. Dimana tambahan
waktu proses ini berbanding lurus dengan jumlah record, yang artinya semakin
banyak record yang diproses, semakin lama waktu proses dekripsi.
No
1.
2.
3.
4.
5.
Ratarata
Tabel 3 Hasil Pengujian Kecepatan Proses Membaca Record dari Database
Jumlah
Tanpa
Dengan
Selisih
Selisih Waktu
Record
Dekripsi
Dekripsi
Waktu
Proses Per
(detik)
(detik)
Proses
Record
(detik)
(detik/record)
10
0,63
0,84
0,21
0,021
20
0,76
1,18
0,42
0,021
30
0,88
1,58
0,7
0,023
40
1,05
1,98
0,93
0,023
50
1,19
2,41
1,22
0,024
30
0,902
1,598
0,696
0,023
Analisis hasil pengujian kecepatan proses membaca, dijelaskan sebagai
berikut. Pada proses dekripsi database (Gambar 7), proses menampilkan data
terdiri dari proses SELECT dari database kemudian proses dekripsi, sehingga
14
rumus perhitungan total waktu = waktu SELECT + waktu dekripsi. Pada Tabel 3,
perbedaan waktu proses diperoleh dari selisih antara waktu proses pembacaan
data “tanpa dekripsi” dan “dengan enkripsi”. Rata-rata selisih waktu tiap record
adalah 0,023 detik. Angka ini merupakan waktu yang diperlukan untuk proses
dekripsi satu data record.
Banyaknya record yang dapat dibaca untuk database tanpa enkripsi adalah
30 / 0,902 = 33,25 record per detik, dan untuk database terenkripsi adalah 30 /
1,598 = 18,77 record per detik. Kesimpulan yang diperoleh adalah adanya
enkripsi, menambah waktu proses sebesar 0,023 detik untuk menampilkan
(membaca) tiap record. Hasil pengujian kecepatan proses membaca terkait
perbedaan waktu baca untuk record tanpa enkripsi dan record terenkripsi dalam
bentuk grafik ditunjukkan pada Gambar 14.
Gambar 14 Grafik Perbedaan Waktu Baca
Pengujian Ukuran Data dilakukan dengan tujuan untuk mengetahui
pengaruh enkripsi terhadap ukuran data. Pengujian dilakukan dengan cara
mencatat selisih ukuran plain text dengan cipher text. Hasil pengujian terhadap
ukuran data dapat dilihat pada Tabel 4.
Tabel 4 Hasil Pengujian Ukuran Data
Panjang Plain
text
(karakter/byte)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Selisih
Cipher Text
Jumlah
Padding
7
6
5
4
3
2
1
0
7
6
5
4
3
2
1
0
Panjang
InfoPadding
Jumlah
Block
Total
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
2
2
2
2
2
2
2
2
9
9
9
9
9
9
9
9
17
17
17
17
17
17
17
17
15
7
6
5
4
3
2
1
8
7
6
5
4
3
2
1
8
17
18
19
20
1
1
1
2
7
6
5
4
3
3
3
3
25
25
25
26
7
6
6
0
Analisis pengujian terhadap ukuran data, dijelaskan sebagai berikut.
Panjang padding dihitung dengan rumus Padding=8-(panjang_plain
MOD 8). Khusus untuk panjang data dengan kelipatan 8 (sebagai contoh 16),
maka tidak ditambahkan padding, karena angka tersebut habis dibagi 8, dan blok
paling akhir tepat berukuran 8 byte. Variabel InfoPadding digunakan untuk
menyimpan angka yang menunjukkan banyaknya padding (bukan menyimpan
padding). Variabel InfoPadding ini memiliki ukuran satu byte. Kesimpulan
dari pengujian terhadap ukuran data adalah ukuran cipher text lebih besar dari
plain text dengan perbedaan antara satu byte sampai dengan tujuh byte. Hubungan
antara ukuran plain text dengan jumlah padding ditunjukkan dalam bentuk grafik
pada Gambar 15.
Gambar 15 Grafik Hubungan Panjang Plain data dengan Jumlah Padding
Analisis juga dilakukan terhadap relasi antar tabel pada database, dengan
tujuan untuk mengetahui apakah pengaruh enkripsi terhadap konsistensi dan relasi
tabel. Konsistensi dapat dicapai dengan menggunakan foreign key, yang artinya
perubahan pada tabel utama akan diteruskan ke tabel yang berelasi terhadap tabel
utama tersebut. Relasi antar tabel pada sistem ini dapat dilihat pada Gambar 16.
Contoh foreign key adalah relasi antara tabel dosen dan tabel mengajar, dengan
hubungan one to many, yang artinya satu dosen dapat memiliki banyak data
mengajar, namun satu data mengajar hanya boleh memiliki tepat satu dosen.
Konsistensi berlaku ketika atribut kode pada tabel dosen berubah, maka kode
dosen pada tabel mengajar juga ikut berubah. Pada sistem yang dibuat, enkripsi
dilakukan pada semua field pada setiap tabel. Dengan pengecualian field id pada
tabel mengajar_kehadiran. Field id ini merupakan primary key dan nilai
defaultnya adalah auto-incremental. Kesimpulan dari analisis terkait relasi antar
tabel adalah relasi tabel dapat dipertahankan, demikian juga konsistensi data,
dengan cara, enkripsi diterapkan pada semua tabel yang terelasi. Karena hasil
enkripsi adalah byte array, maka tipe data yang digunakan untuk menyimpan
cipher data adalah varbinary.
16
Gambar 16 Relasi Antar Tabel Database Terenkripsi
Selain analisis relasi antar tabel, juga dilakukan analisis proses pencarian
data. Analisis ini dilakukan untuk mengetahui pengaruh enkripsi terhadap perintah
pencarian SQL. Secara garis besar perintah pencarian SQL adalah sebagai berikut
SELECT [nama field 1, nama field 2, dst]
FROM [nama tabel]
WHERE [kriteria pencarian]
Contoh 3:
SELECT kode, nama, asal FROM dosen WHERE asal=’Salatiga’
Karena isi dari semua field adalah cipher data, maka perintah pada Contoh 3,
tidak dapat dilakukan terhadap database terenkripsi.
5.
Simpulan
Berdasarkan penelitian, pengujian dan analisis terhadap sistem, maka
dapat diambil kesimpulan sebagai berikut: (1) Database untuk sebuah sistem
informasi dapat ditingkatkan keamanannya dengan cara menyandikan isi dari field
pada database tersebut; (2) Algoritma Blowfish dapat digunakan untuk
menyandikan isi field dengan pengaruh kecepatan proses simpan dan membaca
database menjadi bertambah; (3) Data cipher lebih panjang dari data plain dengan
selisih antara satu byte sampai dengan tujuh byte; (4) Konsistensi data
berdasarkan relasi antar tabel dapat dipertahankan dengan cara proses enkripsi
diterapkan pada semua tabel yang terelasi, tidak hanya sebagian tabel. (5) Proses
pencarian menggunakan perintah query WHERE tidak dapat dilakukan karena
data yang tersimpan bukan data plain text. (6) Penggunaan enkripsi pada database
memberikan kelebihan yaitu tingkat keamanan yang bertambah. Ukuran data yang
tujuh byte lebih besar tidak memberikan pengaruh yang signifikan. Kekurangan
yang ditemukan adalah perintah pencarian SQL menjadi terbatas mengingat isi
17
dari tabel merupakan data cipher. Saran pengembangan yang dapat diberikan
untuk penelitian lebih lanjut adalah sebagai berikut: (1) Pada penelitian ini, proses
enkripsi dilakukan pada level aplikasi, artinya proses enkripsi dilakukan oleh
sistem yang menggunakan database, bukan oleh database itu sendiri. Saran yang
dapat diberikan adalah, proses enkripsi dilakukan pada level database, karena
pada sistem database sudah ada beberapa fungsi enkripsi seperti AES dan DES
[11]; (2) Untuk memperkecil ukuran data, dapat ditambahkan proses kompresi
pada data yang akan disimpan pada database.
6.
Daftar Pustaka
[1]
Schneier, B., Kelsey, J., Whiting, D., Wagner, D., Hall C. and Ferguson N.
1999. Performance Comparison of the AES Submissions. NIST: 15-34.
Didik, M., Wahyudi, R., 2009. Enkripsi Field Tabel Database dengan
PGP, Yogyakarta: AKPRIND.
Thakur, J., Kumar, N., , 2011. DES, AES and Blowfish: Symetric Key
Cryptography Algorithms Simulation Based Performance Analysis.
International Journal of Emerging Technology and Advanced Engineering
1(2): 6-12.
Abdillah, L., 2006. Perancangan Basisdata Sistem Informasi Penggajian
(Studi Kasus pada Universitas ‟XYZ‟). Jurnal Ilmiah MATRIK 8 (2): 135152.
Begg, Carolyn, 2005. Database Systems: A Practical Approach to Design,
Implementation, and Management, 4th Edition, Essex: Pearson Education
Limited.
Nadeem, Aamer; "A Performance Comparison of Data Encryption
Algorithms", IEEE 2005.
Schneier, B. 1994. Description of a New Variable-Length Key, 64-Bit
Block Cipher (Blowfish). Springer-Verlag: 191-204.
Davies, Robert. 2002. Exclusive OR And Hardware Random Number
Generator, www.robertnz.net/pdf/xor2.pdf. Diakses Tanggal 26 Mei 2013.
www.lookuptables.com. Diakses Tanggal 26 Mei 2013
Hasibuan, Zainal, A., 2007, Metodologi Penelitian Pada Bidang Ilmu
Komputer Dan Teknologi Informasi : Konsep, Teknik, dan Aplikasi,
Jakarta: Ilmu Komputer Universitas Indonesia.
MySQL, 2012. MySQL 5.5 Reference Manual: 12.13. Encryption and
Compression Functions.
https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html.
Diakses tanggal 16 Februari 2013.
[2]
[3]
[4]
[5]
[6]
[7]
[8]
[9]
[10]
[11]
18
Download