Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

27
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

Transcript of Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

Page 1: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

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

Page 2: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

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

Page 3: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...
Page 4: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...
Page 5: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...
Page 6: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...
Page 7: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...
Page 8: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...
Page 9: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

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]

2

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

Page 10: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

1

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

Page 11: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

2

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)

Page 12: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

3

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]

1. Bentuk inisial P-array sebanyak 18 buah (P1, P2, .............. P18) masing-

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.

Page 13: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

4

4. Hasil pengambilan pada langkah 3 dibagi 2, 32-bit pertama disebut XL, 32-

bit yang kedua disebut XR.

5. Selanjutnya lakukan operasi XL = XL xor Pi dan XR = F(XL) xor XR

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.

Tabel 1 Tabel Kebenaran XOR [8]

p q ⊕

F F F

F T T

T F T

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.

.

Page 14: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

5

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.

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

Identifikasi Masalah, dan Pengumpulan Data

Perancangan Sistem meliputi Perancangan Proses

Enkripsi, dan Proses Dekripsi pada Database

Implementasi Sistem

Pengujian Sistem dan Analisis Hasil Pengujian

Page 15: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

6

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

Page 16: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

7

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 = (beban tugas x jumlah hadir x Rp. 1,4850,000)/

(12*4) + biaya transport

Honor Netto

= 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

Page 17: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

8

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

Ubah PLAIN ke BYTE_ARRAY

PLAIN=nilai fieldKEY=kunci rahasiaINFOPADDING=0

Pecah PLAIN ke dalam blok berukuran masing-masing 8 byte

Tambahkan padding dibagian belakang, pada

blok tersebut

Jika blok terakhir panjangnya kurang

dari 8 byteTrue

INFOPADDING = banyaknya padding yang

ditambahkani=0

False

Jika i kurang dari banyaknya blok

CIPHER = Enkripsi(KEY, BLOK ke i)

True

i=i+1

Gabung kembali semua blok yang telah terenkripsi

End

Letakkan nilai INFOPADDING dibagian paling depan dari

gabungan blok

Simpan ke database

False

Start

CIPHER=nilai fieldKEY=kunci rahasiaINFOPADDING=0

Pecah CIPHER ke dalam blok berukuran masing-

masing 8 byte

i=0

Jika i kurang dari banyaknya blok

PLAIN = DEKRIPSI(KEY, BLOK ke i)

True

i=i+1

Gabung kembali semua blok PLAIN

End

Gunakan 8 byte pertama sebagai nilai INFOPADDING

(nilai padding)

Ubah gabungan PLAIN ke bentuk String

False

Hapus Padding sesuai jumlah INFOPADDING

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.

Page 18: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

9

blok 1 f a k u l t a s blok 2 t e k n o l o blok 3 g i i n f o r blok 4 m a s i \0 \0 \0 \0 padding 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.

Page 19: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

10

Kode Program 1: Pseudocode untuk Proses Menyimpan Data 1. Inisialisi KONEKSI

2. Set CIPHER = hasil enkripsi

3. Set SQL = “INSERT INTO dosen (nama) VALUE (cipher)”

4. 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. Inisialisi KONEKSI

2. Set CIPHER = “”

3. Set SQL = “SELECT nama FROM dosen”

4. Set RESULT = hasil eksekusi SQL menggunakan KONEKSI

5. 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

Page 20: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

11

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. byte[] key = Encoding.Default.GetBytes(Koneksi.Kunci);

2. conn.Open();

3. MySqlCommand command = new MySqlCommand();

4. command.Connection = conn;

5. command.CommandText =

6. "INSERT INTO dosen VALUES (@k, @n, @a);";

7. command.Parameters.Add("@n",

8. MySqlDbType.VarBinary, 128).Value

9. = BlowfishCipher.Encrypt(

10. Encoding.Default.GetBytes(p.Nama), key); 11. ...

12. command.ExecuteNonQuery();

Kode Program 3 merupakan perintah yang digunakan untuk menyimpan

data ke dalam database. Sebelum data disimpan, dilakukan proses enkripsi

Page 21: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

12

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).

Page 22: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

13

Kode Program 4 Perintah Untuk Membaca Data dari Database 1. byte[] key = Encoding.Default.GetBytes(Koneksi.Kunci);

2. conn.Open();

3. MySqlCommand command = new MySqlCommand();

4. command.Connection = conn;

5. command.CommandText = "SELECT * FROM dosen;";

6. MySqlDataReader reader = command.ExecuteReader();

7. while (reader.Read())

8. {

9. var k = BlowfishCipher.Decrypt(

10. (byte[])reader["kode"], key); 11. var n = BlowfishCipher.Decrypt( 12. (byte[])reader["nama"], key); 13. var a = BlowfishCipher.Decrypt( 14. (byte[])reader["asal"], key); 15. list.Add(new Dosen() 16. { 17. Kode = Encoding.Default.GetString(k), 18. Nama = Encoding.Default.GetString(n), 19. Alamat = Encoding.Default.GetString(a) 20. });

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 : 8 GB

Kecepatan harddisk : 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. 10 0,47 0,72 0,25 0,025

2. 20 0,94 1,39 0,45 0,023

3. 30 1,12 1,89 0,77 0,026

4. 40 1,57 2,59 1,02 0,026

5. 50 1,88 3,16 1,28 0,026

Rata-

rata 30 1,196 1,95 0,754 0,0249

Page 23: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

14

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.

Tabel 3 Hasil Pengujian Kecepatan Proses Membaca Record dari Database

No Jumlah

Record

Tanpa

Dekripsi

(detik)

Dengan

Dekripsi

(detik)

Selisih

Waktu

Proses

(detik)

Selisih Waktu

Proses Per

Record

(detik/record)

1. 10 0,63 0,84 0,21 0,021

2. 20 0,76 1,18 0,42 0,021

3. 30 0,88 1,58 0,7 0,023

4. 40 1,05 1,98 0,93 0,023

5. 50 1,19 2,41 1,22 0,024

Rata-

rata 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

Page 24: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

15

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)

Cipher Text Selisih

Jumlah

Padding

Panjang

InfoPadding

Jumlah

Block Total

1 7 1 1 9 7

2 6 1 1 9 6

3 5 1 1 9 5

4 4 1 1 9 4

5 3 1 1 9 3

6 2 1 1 9 2

7 1 1 1 9 1

8 0 1 1 9 8

9 7 1 2 17 7

10 6 1 2 17 6

11 5 1 2 17 5

12 4 1 2 17 4

13 3 1 2 17 3

14 2 1 2 17 2

15 1 1 2 17 1

16 0 1 2 17 8

Page 25: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

16

17 7 1 3 25 7

18 6 1 3 25 6

19 5 1 3 25 6

20 4 2 3 26 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.

Page 26: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

17

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

Page 27: Implementasi Algoritma Blowfish pada Basis Data Honorarium ...

18

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.

[2] Didik, M., Wahyudi, R., 2009. Enkripsi Field Tabel Database dengan

PGP, Yogyakarta: AKPRIND.

[3] 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.

[4] Abdillah, L., 2006. Perancangan Basisdata Sistem Informasi Penggajian

(Studi Kasus pada Universitas ‟XYZ‟). Jurnal Ilmiah MATRIK 8 (2): 135-

152.

[5] Begg, Carolyn, 2005. Database Systems: A Practical Approach to Design,

Implementation, and Management, 4th Edition, Essex: Pearson Education

Limited.

[6] Nadeem, Aamer; "A Performance Comparison of Data Encryption

Algorithms", IEEE 2005.

[7] Schneier, B. 1994. Description of a New Variable-Length Key, 64-Bit

Block Cipher (Blowfish). Springer-Verlag: 191-204.

[8] Davies, Robert. 2002. Exclusive OR And Hardware Random Number

Generator, www.robertnz.net/pdf/xor2.pdf. Diakses Tanggal 26 Mei 2013.

[9] www.lookuptables.com. Diakses Tanggal 26 Mei 2013

[10] Hasibuan, Zainal, A., 2007, Metodologi Penelitian Pada Bidang Ilmu

Komputer Dan Teknologi Informasi : Konsep, Teknik, dan Aplikasi,

Jakarta: Ilmu Komputer Universitas Indonesia.

[11] 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.