Abstrak
Keamanan data
merupakan salah satu tantangan yang sel alu dihadapi dalam
industri dan
penelitian basis data. Data yang tersimpan di dalam basis data harus dapat
terjamin keamanannya sehingga tidak menimbulkan informasi yang tidak benar, ambigu
maupun membingungkan. Pengamanan data dapat dilakukan melalui dua cara. Cara
pertama ialah pengaturan hak akses setiap pengguna oleh administrator basis
data. Cara kedua ialah pengamanan data dari sisi kandungan data yang tersimpan
pada basis data.
Penelitian ini mengimplementasi
pengamanan data pada basis data dengan cara
pengamanan data
dari sisi kandungan data yang tersimpan pada basis data. Teknik
pengamanan data
dilakukan dengan menggunakan teknik kriptografi RC4. Studi yang
dilakukan dalam penelitian ini adalah untuk mencari cara agar RC4 dapat
dimanfaatkan untuk mengamankan data serta memberi kemudahan bagi pemilik data
untuk mengamankan datanya tanpa perlu mengetahui query – querynya.
Kata kunci:
basis data, keamanan, kriptografi, RC4
1. PEDAHULUAN
Basis data saat
ini sudah banyak digunakan di berbagai organisasi, perusahaan, atau pun pihak –
pihak lain telah memanfaatkan teknologi basis data untuk menyimpan danmengelola
data organisasi atau perusahaannya. Saat ini, keamanan terhadap data yang tersimpan
dalam basis data sudah menjadi persyaratan mutlak. Dengan banyaknya
seranganserangan terhadap jaringan komputer yang terhubung dengan basis data
maka sudah tidak lagi menjamin keamanan data. Hal tersebut dikarenakan bahwa
kebocoran data dapat disebabkan oleh berbagai hal seperti “orang dalam” atau
pihak–pihak yang langsung berhubungan dengan basis data seperti administrator
basis data. Dengan keadaan seperti tersebut diatas menyebabkan pengguna basis
data harus menemukan cara untuk mengamankan data tanpa campur tangan
administrator basis data. Kriptografi merupakan
salah satu cara
yanga dapat digunakan untuk mengamankan data. Untuk itu, pengguna basis data
membutuhkan bantuan keamanan untuk memenuhi kebutuhan keamanan data yang
disimpan.
Dalam penelititian
ini penerapan kriptografi akan difokuskan bagaimana
kriptografi
dapat mengamankan data sampai pada level baris (row) dan kolom (field)
dengan tetap memperhatikan integritas data dan kewenangan setiap pengguna basis
data. Algoritma kriptografi yang akan digunakan ialah algoritma kriptografi
simetris dan bersifat stream cipher sehingga data hasil enkripsi (cipherteks)
mempunyai ukuran yang sama dengan data asli (plainteks). Teknik
kriptografi simetris dipilih karena diharapkan dengan algoritma ini proses
enkripsi terhadap data dapat dilakukan dengan waktu yang lebih cepat
dibandingkan dengan algoritma kriptografi kunci publik (asimetris).
2. KRIPTOGRAFI
Kriptografi
berasal dari dua kata Yunani, yaitu Crypto yang berarti rahasia dan Grapho
yang berarti menulis. Secara umum kriptografi dapat diartikan sebagai ilmu
dan seni penyandian yang bertujuan untuk menjaga keamanan dan
kerahasiaan suatu pesan.
Kriptografi pada
dasarnya sudah dikenal sejak lama. Menurut catatan sejarah, kriptografi sudah
digunakan oleh bangsa Mesir sejak 4000 tahun yang lalu oleh raja-raja Mesir
pada saat perang untuk mengirimkan pesan rahasia kepada panglima perangnya
melalui kurir-kurinya. Orang yang melakukan penyandian ini disebut kriptografer,
sedangkan orang yang mendalami ilmu dan seni dalam membuka atau memecahkan
suatu algoritma kriptografi tanpa harus mengetahui kuncinya disebut kriptanalis.
Seiring dengan perkembangan teknologi, algoritma kriptografi pun mulai berubah
menuju ke arah algoritma kriptografi yang lebih rumit dan kompleks. Kriptografi
mau tidak mau harus diakui mempunyai peranan yang paling penting dalam
peperangan sehingga algoritma kriptografi berkembang cukup pesat pada saat
Perang Dunia I dan Perang Dunia II.
Menurut catatan
sejarah, terdapat beberapa algoritma kriptografi yang pernah digunakan dalam
peperangan, diantaranya adalah ADFVGX yang dipakai oleh Jerman pada Perang
Dunia I, Sigaba/M-134 yang digunakan oleh Amerika Serikat pada Perang
Dunia II, Typex oleh Inggris, dan Purple oleh Jepang. Selain itu
Jerman juga mempunyai mesin legendaris yang dipakai untuk memecahkan sandi yang
dikirim oleh pihak musuh dalam peperangan yaitu, Enigma.
Algoritma
kriptografi yang baik tidak ditentukan oleh kerumitan dalam mengolah data atau
pesan yang akan disampaikan. Yang penting, algoritma tersebut harus memenuhi 4
persyaratan berikut :
1. Kerahasiaan.
Pesan (plaintext) hanya dapat dibaca oleh pihak yang memliki
kewenangan.
2. Autentikasi.
Pengirim pesan harus dapat diidentifikasi dengan pasti, penyusup
harus dipastikan
tidak bisa berpura-pura menjadi orang lain.
3. Integritas.
Penerima pesan harus dapat memastikan bahwa pesan yang dia terima
tidak
dimodifikasi ketika sedang dalam proses transmisi data.
4. Non-Repudiation.
Pengirim pesan harus tidak bisa menyangkal pesan yang dia
kirimkan. Kriptografi
pada dasarnya terdiri dari dua proses, yaitu proses enkripsi dan proses dekripsi.
Proses enkripsi adalah proses penyandian pesan terbuka menjadi pesan rahasia (ciphertext).
Ciphertext inilah yang nantinya akan dikirimkan melalui saluran
komunikasi terbuka. Pada saat ciphertext diterima oleh penerima pesan,
maka pesan rahasia tersebut diubah lagi menjadi pesan terbuka melalui proses
dekripsi sehingga pesan tadi dapat dibaca kembali oleh penerima pesan. Secara
umum, proses enkripsi dan dekripsi dapat digambarkan sebagai berikut :
Dalam sistem
komputer, pesan terbuka (plaintext) diberi lambang M, yang merupakan
singkatan dari Message. Plaintext ini dapat berupa tulisan, foto,
atau video yang berbentuk data biner. Plaintext inilah yang nantinya
akan dienkripsi menjadi pesan rahasia atau ciphertext yang dilambangkan
dengan C (Ciphertext). Secara matematis, fungsi enkripsi ini dinotasikan
dengan :
E(M) = C
Sedangkan fungsi
dekripsi adalah proses pembalikan dari ciphertext menjadi plaintext kembali.
Secara matematis dinotasikan sebagai berikut :
D(C) = M
D(E(M)) = M
2.1 Algoritma Kriptografi RC4
Algoritma
kriptografi RC4 merupakan salah satu algoritma berjenis stream cipher.
Stream Cipher adalah
algoritma enkripsi yang mengenkripsi data persatuan data, seperti bit, byte,
nible atau per 5 bit. Setiap mengenkripsi satu satuan data digunakan kunci yang
merupakan hasil pembangkitan dari kunci sebelumnya. Algoritma ini akan
memproses data dalam ukuran byte demi byte (1 byte = 8 bit).
Algoritma ini dapat melakukan enkripsi dan dekripsi pada panjang data yang
variabel atau dinamis tanpa perlu adanya penambahan byte (padding).
Pada kriptografi
dengan algoritma RC4 mempunyai sebuah S-Box, S0, S1, ... ,
S255, yang
berisi permutasi dari bilangan 0 sampai 255, dan permutasi merupakan fungsi
dari kunci K dengan panjang yang berubah-ubah (variabel). Algoritma
kriptografi RC4 dilakukan dengan langkah sebagai berikut :
1. Inisialisasi S-Box
- Isi S-Box secara
berurutan, yaitu S0=0, S1=1,... , S255=255.
- Lakukan
penambahan (padding) kunci K sehingga panjang kunci K = 256.
- Lakukan
pertukaran dan pengisian pada S-Box dengan kunci K, sebagai berikut :
j = 0
for i
= 0 to 255
j =
(j + Si + Ki) mod 256
swap
Si dan Sj
pada kunci K
diatas, Fungsi swap merupakan fungsi yang menukarkan nilai S ke-i
dengan nilai S
ke-j
2. Proses
enkripsi atau dekripsi RC4 :
i = 0
j = 0
for
idx = 0 to len-1
i =
(i + 1) mod 256
j =
(j + Si) mod 256
swap
Si dan Sj
t =
(Si + Sj) mod 256
k =
St
buffidx
= k XOR buffidx
Keterangan:
- buff merupakan
pesan yang akan dienkripsi atau dekripsi
- len merupakan
panjang dari buff
Hasil akhir dari
proses di atas ialah buff yang berisi pesan yang telah dienkripsi atau
dekripsi.
3. ANALISIS
Dalam penelitian
ini, perangkat lunak yang dikembangkan memberi penekanan
pada kemudahan
bagi pengguna umum basis data di dalam pemanfaatan perangkat lunak. Untuk
melakukan pengamanan data melalui proses enkripsi dan dekripsi pada data yang
dimiliki pengguna tanpa perlu melalui penulisan bahasa query tetapi
cukup dengan melakukan “klik” pada tombol – tombol yang disediakan. Deskripsi
umum sistem kerja perangkat lunak yang dibangun dapat dilihat pada gambar 1.
Gambar
1. Gambaran Umum Sistem Kerja Perangkat Lunak
Perangkat lunak
yang dibangun dinamakan MSSQL_CRYPT.
Seperti terlihat
pada gambar 1, perangkat lunak yang dibangun terletak di antara server basis
data dan web browser. Hasil akhir dari perangkat lunak ini ialah
aplikasi berbasis web. Pada dasarnya, perangkat lunak ini akan melakukan
dua fungsi utama, yaitu :
1. Melakukan
enkripsi – dekripsi data pada level kolom atau field.
2. Melakukan
enkripsi – dekripsi data pada level baris atau row.
Perangkat lunak
menerima masukan dari pengguna melalui antarmuka yang
disediakan dan
mengolah masukan dari pengguna tersebut serta mengubahnya menjadi query tertentu.
Query ini kemudian dijalankan pada sistem basis data yang terdapat di server.
Kemudian hasil dari query ini diberikan kembali kepada pengguna melalui
antarmuka perangkat lunak.
Perangkat lunak MSSQL_CRYPT
dapat digunakan oleh beberapa kelompok pengguna, adapun pengguna dapat
dikelompokkan sebagai berikut :
1. Administrator
basis data
Administrator
basis data merupakan pihak yang bertanggung jawab untuk melakukan pengaturan
basis data antara lain: pembuatan basis data dan pengaturan pengguna basis data
serta hak akses dari setiap pengguna tersebut.
2. Pemilik data
Pemilik data
merupakan pihak yang memiliki data yang terdapat pada basis data.
Memiliki artinya
pihak tersebut berhak melakukan pengubahan pada data seperti
melakukan
penambahan data baru, atau pun menghapus data, jadi bukan hanya
memiliki hak
untuk melihat isi dari data. Pemilik data merupakan pihak yang akan
dan ingin
melakukan perlindungan terhadap data yang dimilikinya dengan cara
enkripsi maupun
dekripsi terhadap data tersebut.
4. PERANCANGAN
Perancangan
merupakan proses pengolahan hasil analisis perangkat lunak
menjadi rencana
pengembangan perangkat lunak dan batasan – batasan perangkat lunak atau masalah
yang mungkin dihadapi dalam pengembangan perangkat lunak. Perancangan yang
dilakukan meliputi perancangan arsitektur, perancangan modul, dan perancangan
antarmuka.
4.1 Perancangan
Arsitektur
Perancangan
aritektur merupakan perancangan dari proses yang akan di kerjakan pada sistem
yang akan dibangun. Pada perancangan arsitektur ini perangkat lunak terdiri
atas tiga buah proses utama, yaitu :
1). Pemrosesan
Otentikasi dan Kewenangan Data Otentikasi dan kewenangan data diproses
berdasarkan nama pengguna (user id) dan password yang diterima
sistem dan dicocokan dengan data dan wewenang pada server basis data.
Otentikasi merupakan pemrosesan wewenang pengguna untuk melakukan koneksi
dengan server basis data sedangkan kewenangan data merupakan pemrosesan
wewenang pengguna untuk melakukan manipulasi terhadap basis data dan tabel.
2). Pemrosesan Query
Query – query yang
diproses antara lain :
1. Mendapatkan
struktur tabel.
2. Mendapatkan
data yang tersimpan pada tabel. c. Mengubah data yang tersimpan.
3. Mengubah
struktur tabel.
3). Pemrosesan
Pesan
Pemrosesan pesan
adalah proses untuk melakukan enkripsi–dekripsi pesan yang diterima berdasarkan
kunci.
4.2 Perancangan
Modul Perangkat Lunak
Pada penelitian
ini, perangkat lunak yang akan dibangun disusun atas lima modul utama, yaitu :
1. Modul
Antarmuka
Modul ini
menyusun antarmuka perangkat lunak, menyediakan tempat dan template
bagi modul lain
untuk meletakkan hasil proses modul tersebut.
2. Modul
Otentikasi
Modul ini
dirancang untuk implementasi dari proses konfirmasi login dan proses
otentikasi
pengguna.
3. Modul
Pemrosesan Query
Modul ini
dirancang untuk implementasi pemrosesan query.
4. Modul
Enkripsi – Dekripsi
Modul ini
dirancang untuk implementasi dari proses enkripsi – dekripsi.
5. Modul
kriptografi RC4
Modul ini
dirancang untuk implementasi algoritma kriptografi RC4.
4.3 Perancangan
Antarmuka
Antarmuka
merupakan salah satu cara bagaimana sistem ini akan berinteraksi dengan
pengguna atau pemakai sistem. Antarmuka perangkat lunak pada penelitian ini
terdiri atas dua halaman utama yaitu halaman login dan halaman aplikasi. Hasil
dari implementasi perancangan antarmuka dapat dilihat pada bagian 5.
5. IMPLEMENTASI
Tahap
implementasi adalah tahap dimana perancangan diwujudkan dalam bentuk aplikasi.
Pada implementasi ini, hal–hal yang menjadi batasan pada tahap implementasi
adalah :
1) Perangkat
lunak hanya akan diimplementasikan pada satu macam sistem basis
data relasional
yaitu Microsoft SQL Server 2000 (MSSQL-Server).
2) Hasil
perancangan di implementasikan pada komputer yang berfungsi sebagai
server basis
data dan server aplikasi web.
5.1 Implementasi
Modul Kriptografi RC4
Pada
implementasi modul kriptografi RC4, modul ini terdiri atas tiga buah
prosedur utama,
yaitu :
1. Prosedur RC4_swap,
untuk menukarkan nilai dua buah variabel.
2. Prosedur RC4_PrepareKey,
untuk menyiapkan S-Box sebelum proses enkripsi
atau dekripsi
dilakukan.
3. Prosedur RC4,
untuk melakukan enkripsi –dekripsi dengan algoritma RC4.
5.2 Implementasi
Modul Otentikasi
Modul otentikasi
adalah modul yang digunakan untuk melakukan ontentikasi terhadap data yang ada
di MSSQL-Server. Modul ini terdiri atas dua prosedur utama, yaitu :
1. Fungsi connect,
untuk membuka koneksi dan melakukan otentikasi ke MSSQLServer.
2. Prosedur get_database_table,
untuk mendapatkan daftar basis data dan tabel
pengguna (user).
5.3 Implementasi
Modul Pemrosesan Query
Modul pemrosesan
query digunakan untuk memroses query pada MSSQL-Server. Modul ini terdiri atas
dua prosedur utama, yaitu :
1. Prosedur view_structure,
untuk mendapatkan struktur dari suatu tabel.
2. Prosedur view_data,
untuk mendapatkan data (baris) dari suatu tabel.
5.4 Implementasi
Modul Enkripsi – Dekripsi
Modul Enkripsi
digunakan untuk mengenkripsi query yang diberikan sedangkan
modul Deskripsi
digunakan untuk mendekrip kembali data yang telah di enkrip kedalam bentuk
aslinya. Modul ini terdiri atas empat fungsi utama, yaitu :
1. Fungsi encrypt_col,
untuk melakukan enkripsi data secara kolom.
2. Fungsi encrypt_row,
untuk melakukan enkripsi data secara baris.
3. Fungsi decrypt_col,
untuk melakukan dekripsi secara kolom.
4. Fungsi decrypt_row,
untuk melakukan dekripsi secara baris.
5.5 Implementasi
Penanganan Integritas Data
Integritas data
yang ada dalam basis data tetap harus terjaga, untuk itu diperlukan
penangan
integrritas data yang baik. Untuk menangani integritas tipe data, ada beberapa
tipe data yang membutuhkan penanganan atau batasan tertentu, yaitu sebagai
berikut :
1. Kelompok tipe
data teks (character strings), terdiri atas : char, varchar,
text, nchar, nvarchar, dan ntext.
MSSQL_CRYPT tidak
berhasil melakukan enkripsi maupun dekripsi pada tipe data ntext. Untuk
tipe data teks lainnya, proses enkripsi dan dekripsi dapat berjalan dengan baik
dengan syarat ukuran kolom mempunyai ukuran 33% lebih besar dari panjang data
terbesar yang tersimpan pada kolom tersebut. Hal ini disebabkan karena proses
enkripsi akan menghasilkan data yang setiap karakternya dapat bernilai
keseluruhan kode ASCII yang ada sedangkan tipe data teks pada MSSQL tidak
dapat menyimpan semua karakter ASCII sehingga perlu dilakukan konversi
terhadap data acak hasil enkripsi dengan cara melakukan pengkodean data
tersebut secara Base 64 (Base64 Encoding) terlebih dahulu sebelum
dilakukan update (pengubahan) data pada basis data. Hasil dari
pengkodean data secara Base 64 ialah data dengan karakter yang dapat
disimpan pada field dengan tipe data teks MSSQL dengan ukuran 33%
lebih panjang dari data aslinya (data sebelum dikodekan).
2. Kelompok tipe
data biner (binary strings), terdiri atas : binary, varbinary,
dan image. Tidak ada penanganan dan batasan khusus untuk kelompok tipe
data ini.
3. Kelompok tipe
data numerik, terdiri atas : bigint,int, , tinyint, bit,
decimal, numeric, money, smallmoney, float, real,
datetime, dan smalldatetime.
MSSQL_CRYPT tidak
melakukan enkripsi dan dekripsi pada tipe data bit karena ukuran data bit
hanya satu bit sedangkan proses enkripsi dan dekripsi hanya dapat
dilakukan pada data dengan ukuran minimal satu byte. Untuk
mempertahankan tipe data pada setiap kolom, MSSQL_CRYPT akan melakukan
enkripsi dekripsi tanpa mengubah tipe data tetapi data yang dienkripsi akan
disimpan pada satu tabel tambahan sedangkan tabel yang mengalami enkripsi data,
data bersangkutan akan diubah (update) menjadi nol. Tabel ini berfungsi
sebagai tabel internal aplikasi MSSQL_CRYPT dan akan digunakan oleh
semua data bertipe numerik yang akan dienkripsi. Tabel disimpan pada satu basis
data internal dengan nama basis data “mcrypt” dan nama tabel “ud”. Struktur
dari tabel “ud” dapat dilihat pada gambar 2.
Gambar 2
Struktur Tabel ud (basis data internal "mcrypt")
4. Kelompok tipe
data khusus, yaitu cursor, sql_variant, table, timestamp,
dan
uniqueidentifier
serta
tipe data yang didefinisikan oleh pengguna sendiri (user defined type).
MSSQL_CRYPT tidak
menangani kelompok tipe data ini. Penanganan kelompok tipe data ini memerlukan
studi secara khusus. Selain itu, kelompok tipe data ini jarang digunakan.
Selain penanganan integritas tipe data, MSSQL_CRYPT juga menangani constraint
pada data. Constraint yang dimaksud adalah primary key, foreign
key, dan unique key.
MSSQL_CRYPT akan
mengunci kolom yang memiliki salah satu constraint tersebut sehingga
pengguna tidak dapat melakukan enkripsi ataupun dekripsi baik secara kolom
maupun baris. MSSQL_CRYPT tidak menangani kolom yang memiliki constraint
check karena constraint check dapat mengandung berbagai macam
parameter sehingga sulit untuk diolah dan ditangani
5.6 Implementasi
Antar Muka
Tahap
implementasi antarmuka menggambarkan bagaimana sistem ini digunakan
dalam penanganan
keamanan basis data. Hasil dari implementasi perancangan antarmuka dapat
dilihat pada gambar 3 dan gambar 4.
Gambar 3 Tampilan Halaman Login
Gambar 4 Tampilan Halaman
Aplikasi
6. KESIMPULAN
Dari penelitian
yang dilakukan pada kasus pengamanan basisdata dengan kriptografi stream
cipher RC4 ini maka dapat diberikan beberpa kesesimpulan. Beberapa
kesimpulan yang dapat diambil dari penelitian ini, yaitu :
1. sistem ini
berhasil mendiskripsi atau dekripsi dengan baik, untuk tipe data antara lain :
a. Kelompok tipe
data teks (character strings), antara lain: char, varchar,
text, nchar, dan nvarchar.
b. Kelompok tipe
data biner (binary strings), antara lain : binary, varbinary,
dan image.
c. Kelompok tipe
data numerik, antara lain : bigint, int, smallint, tinyint, decimal,
numeric, money,
smallmoney, float, real, datetime, dan smalldatetime.
2. sistem ini
tidak bisa melakukan mengenkripsi atau mengdekripsi tipe data , antara lain :
a. Kelompok tipe
data teks, antara lain : ntext.
b. Kelompok tipe
data numerik, antara lain : bit.
c. Kelompok tipe
data khusus, antara lain : cursor, sql_variant, table, timestamp, dan
uniqueidentifier serta tipe data yang didefinisikan oleh pengguna sendiri(user
defined type).
3. dari hasil
implementasi terdapat batasan – batasan dari perangkat lunak yang dihasilkan,
antara lain :
a. Tabel yang
bisa di enkripsi dan di dekripsi hanya tabel yang mempunyai primary key dengan
satu atribut (atribut tunggal).
b. Untuk tabel
atau data yang memiliki constraint check tidak dapat dilakukan
pencegahan
enkripsi dan dekripsi.
c. kevalidan
kunci enkripsi dekripsi yang digunakan tidak dilakukan pengecekan terlebih
dahulu.
7.
DAFTAR
PUSTAKA
1.
Silberschatz.A, Korth. H. F. Dan Sudarshan S.,2002, Database System Concepts,
4th Edition, McGraw – Hill.
2. Trower. B.,
2001, Crypt Data Packaging, Trantor Standard Systems Inc.
3. Fathansyah,
Ir,1999,Basis Data, Informatika, Bandung.
4. Munir, 2004,
Bahan Kuliah IF5054 Kriptografi, Departemen Teknik Informatika, ITB.
5. Rahmani,2003,
Implementasi Teknik Kriptografi Blowfish untuk Pengamanan Basis Data, Tesis
Magister Departemen Teknik Informatika, ITB.
6.
Schneier,1996, Applied Cryptography: Protocols, Algorithms, and Source Code in C,
2nd Edition, John Wiley & Sons, Inc.
7.
Sukmawan,1998, RC4 Stream Cipher.
8. Supono, 2007.
Algoritma MD5, http://supono.wordpress.com/2007/06/04/algoritma-md5/.
Terakhir diakses
pada tanggal 2 November 2008 pada pukul 14.00 WIB
9. Tamatjita,
2006. Kriptografi Untuk Perlindungan Data, http://www.smeapgritng.
sch.id/sekolah/html/?tab=amik§ion=artikel&num=001&PHPSESSID=90305d3781d3f6b0.
Terakhir diakses pada tanggal 10 Desember 2008 pada pukul 12.00 WIB.
No comments:
Post a Comment