Sunday, July 3, 2016

Aplikasi Pengamanan Basis Data dengan Teknik Kriptografi Stream Cipher


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 :


1.PNG
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&section=artikel&num=001&PHPSESSID=90305d3781d3f6b0. Terakhir diakses pada tanggal 10 Desember 2008 pada pukul 12.00 WIB.

No comments:

Post a Comment