BAB II DASAR TEORI Bab kedua ini berisi penjelasan tentang dasar teori dalam pelaksanaan tugas akhir ini. Dalam bab ini akan dibahas gambaran umum kriptografi berikut algoritmaalgoritma kriptografi khususnya algoritma RC4. Selain itu juga terdapat pembahasan tentang basis data berikut pembahasan keamanan basis data dan bahasa SQL (Structured Query Language), kemudian membahas keamanan jaringan.
2.1
Kriptografi
2.1.1 Definisi Kriptografi Kriptografi memiliki berbagai macam pengertian, secara etimologis kata kriptografi berasal dari bahasa Yunani yang terdiri atas dua kata yaitu κρυπτο (baca : krupto) yang berarti tersembunyi atau rahasia dan γραφη (baca: grafh) yang berarti tulisan. Karena itu kriptografi dapat diartikan sebagai tulisan rahasia, sedangkan menurut istilah ada beberapa pengertian, diantaranya yaitu : 1. Kriptografi adalah ilmu sekaligus
seni untuk menjaga kerahasiaan pesan
dengan cara menyandikannya ke dalam bentuk yang tidak dapat dimengerti lagi maknanya. 2. Kriptografi adalah ilmu dan seni untuk menjaga keamanan pesan[SCH96]. 3. Kriptografi adalah cara dan ilmu untuk mengkodekan (enkripsi dan dekripsi) data
sehingga
data
tersebut
hanya
dapat
didekodekan
oleh
orang
tertentu[DEN07] . Sistem kriptografi (Cryptosystem) adalah sebuah sistem yang terdiri atas algoritma kriptografi yang berfungsi untuk mengacak data plainteks dengan satu atau beberapa kunci yang berupa angka atau string yang hanya diketahui oleh pihak pengirim dan penerima. Hasil akhir dari proses ini berupa cipherteks. Keamanan dari suatu sistem kriptografi biasanya terletak pada kerahasiaan beberapa kunci daripada menjaga kerahasiaan algoritma kriptografi. Sistem kriptografi yang kuat memiliki kemungkinan jangkauan kunci yang sangat besar sehingga sistem ini tidak mungkin dipecahkan dengan mencoba semua kemungkinan kunci secara brute II‐1
force. Sistem kriptografi yang kuat juga akan menciptakan cipherteks yang acak untuk semua standar tes statistik. Pesan adalah data atau informasi yang dapat dibaca dan dimengerti maknanya. Ada dua jenis pesan yaitu plainteks dan cipherteks. Plainteks adalah pesan yang dapat langsung dibaca dan dimengerti artinya, sedangkan cipherteks adalah pesan yang telah disandikan sehingga tidak bermakna lagi. Cipherteks bertujuan agar pesan tidak dapat dibaca oleh pihak yang tidak berhak. Dalam kriptografi terdapat proses enkripsi (encryption) yaitu proses menyandikan plainteks menjadi cipherteks atau disebut juga enciphering. Proses lain yaitu dekripsi (decryption) yaitu proses mengembalikan cipherteks menjadi plainteks semula atau disebut juga deciphering. Berikut ilustrasi proses enkripsi dan dekripsi dapat dilihat pada gambar II-1. Kunci
Kunci
Plainteks
Cipherteks Enkripsi
Dekripsi
Plainteks
Gambar II-1 Proses enkripsi dan dekripsi
Secara matematis enkripsi dapat digambarkan sebagai : C = cipherteks P = plainteks Fungsi enkripsi E memetakan P ke C, E(P) = C Fungsi dekripsi D memetakan C ke P, D(C) = P Fungsi enkripsi dan dekripsi harus memenuhi sifat : D(E(P)) = P
II‐2
2.1.2 Layanan Kriptografi Kriptografi menyediakan beberapa layanan, yaitu [MUN06]: 1. Kerahasiaan (confidentiality) Layanan yang digunakan untuk menjaga isi pesan dari siapapun yang tidak berhak untuk membacanya. 2. Integritas data (data integrity) Layanan yang menjamin bahwa pesan masih asli/utuh atau belum pernah dimanipulasi selama pengiriman. 3. Otentikasi (authentication) Layanan untuk mengidentifikasi kebenaran pihak-pihak yang berkomunikasi (user authentication) dan mengidentifikasi kebenaran sumber pesan (data origin authentication). 4. Nirpenyangkalan (non-repudiation) Layanan untuk mencegah entitas yang berkomunikasi melakukan penyangkalan, yaitu pengirim pesan menyangkal melakukan pengiriman atau penerima pesan menyangkal telah menerima pesan.
2.1.3 Algoritma Kriptografi Algoritma kriptografi adalah aturan untuk enciphering dan deciphering atau fungsi matematika yang digunakan untuk enkripsi dan dekripsi pesan [MUN06]. Algoritma kriptografi berkembang terus dan terbagi atas dua bagian yaitu algoritma kriptografi klasik dan algoritma kriptografi modern. Pada Algoritma klasik, kriptografer menggunakan algoritma sederhana, yang memungkinkan cipherteks dapat dipecahkan dengan mudah. Pemecahan algoritma klasik seperti penggunaan statistik kemunculan huruf pada bahasa tertentu, terkaan, intuisi dan sebagainya, sedangkan algoritma kriptografi modern dibuat sedemikian kompleks sehingga kriptanalis sangat sulit memecahkan cipherteks tanpa mengetahui kunci. Ciri khas umum algoritma modern yaitu beroperasi dalam mode bit.
II‐3
Berdasarkan jenis kunci yang digunakan, algoritma kriptografi modern dapat dibedakan menjadi dua kategori yaitu : 1. Algoritma kriptografi simetris. Algoritma kriptografi simetris yaitu algoritma yang menggunakan hanya satu kunci untuk enkripsi dan dekripsi [MUN06]. Contoh algoritma simetris yaitu DES (Data Encryption Standard), Rijndael, Blowfish, IDEA, GOST, Serpent, RC2, RC4, RC5, dan lain-lain. Skema algoritma simetris dapat dilihat pada gambar II-2. Kunci privat, K
Kunci privat, K
Plainteks, P
Enkripsi E K (P) = C
Cipherteks, C
Dekripsi D K (C) = P
Plainteks, P
Gambar II-2 Algoritma simetris
2. Algoritma kriptografi nir-simetris atau algoritma kunci publik. Algoritma kriptografi nir-simetris yaitu algoritma yang menggunakan kunci publik untuk proses enkripsi dan privat untuk proses dekripsi [MUN06]. Contoh algoritma Nir-Simetris yaitu RSA. Skema algoritma nir-simetris dapat dilihat pada gambar II-3. Kunci privat, K2
Kunci publik, K1
Plainteks, P
Enkripsi E K1 (P) = C
Cipherteks, C
Dekripsi D K2 (C) = P
Plainteks, P
Gambar II-3 Algoritma nir-simetris
Algoritma kriptografi simetri dapat dikelompokkan menjadi dua kategori yaitu : 1. Cipher Aliran (stream cipher) Cipher aliran adalah algoritma kriptografi yang beroperasi pada plainteks atau cipherteks dalam bentuk bit tunggal, yang dalam hal ini rangkaian bit dienkripsikan atau didekripsikan bit per bit [MUN06]. Contoh stream cipher adalah RC4, Seal, A5, Oryx, dan lain-lain
II‐4
2. Cipher blok (block cipher) Cipher blok adalah algoritma kriptografi yang beroperasi pada plainteks atau cipherteks dalam bentuk blok bit, yang dalam hal ini rangkaian bit dibagi menjadi blok-blok bit yang panjangnya sudah ditentukan sebelumnya [MUN06]. Contoh block cipher adalah Blowfish, DES, GOST, IDEA, RC5, Safer, Square, Twofish, RC6, Loki97, dan lain-lain.
2.1.4 Fungsi Hash MD5 Fungsi hash satu arah adalah fungsi hash yang bekerja dalam satu arah : pesan yang sudah diubah menjadi message digest tidak dapat dikembalikan lagi menjadi pesan semula. Dua pesan yang berbeda akan selalu menghasilkan nilai hash yang berbeda pula. Sifat-sifat fungsi hash satu arah adalah sebagai berikut : 1.
Fungsi H dapat diterapkan pada blok data berukuran berapa saja.
2.
H menghasilkan nilai (h) dengan panjang tetap.
3.
H(x) mudah dihitung untuk setiap nilai x yang diberikan.
4.
Untuk setiap h yang diberikan, tidak mungkin menemukan x sedemikian sehingga H(x) = h. Itulah sebabnya fungsi H dikatakan fungsi satu-arah.
5.
Untuk setiap x yang diberikan, tidak mungkin mencari y ≠ x sedemikian sehingga H(y) = H(x).
6.
Tidak mungkin (secara komputasi) mencari pasangan x dan y sedemikian sehingga H(x) = H(y).
Keenam sifat di atas penting sebab sebuah fungsi hash seharusnya berlaku seperti fungsi acak. Sebuah fungsi hash dianggap tidak aman jika (i) secara komputasi dimungkinkan menemukan pesan yang bersesuaian dengan pesan ringkasnya, dan (ii) terjadi kolisi, yaitu terdapat beberapa pesan berbeda yang mempunyai pesan ringkas yang sama. Fungsi hash adalah publik (tidak dirahasiakan) dan keamanannya terletak pada sifat satu arahnya. Skema fungsi hash ditunjukkan gambar II-4.
II‐5
Gambar II-4 Skema fungsi hash satu arah
MD5 adalah fungsi hash satu arah yang dibuat oleh Ronald Rivest pada tahun 1991. MD5 merupakan perbaikan dari MD4 setelah MD4 berhasil diserang oleh kriptanalis. Algoritma MD5 menerima masukan berupa pesan dengan ukuran sembarang dan menghasilkan message digest yang panjangnya 128 bit.
2.1.5 Algoritma Kriptografi RC4 Algoritma kriptografi Rivest Code 4 (RC4) merupakan salah satu algoritma kunci simetris dibuat oleh RSA Data Security Inc (RSADSI) yang berbentuk stream chipper. Algoritma ini ditemukan pada tahun 1987 oleh Ronald Rivest dan menjadi simbol keamanan RSA(merupakan singkatan dari tiga nama penemu: Rivest Shamir Adleman). RC4 menggunakan panjang kunci dari 1 sampai 256 byte yang digunakan untuk menginisialisasikan tabel sepanjang 256 byte. Tabel ini digunakan untuk generasi yang berikut dari pseudo random yang menggunakan XOR dengan plainteks untuk menghasilkan cipherteks. Masing-masing elemen dalam tabel saling ditukarkan minimal sekali. RC4 merupakan salah satu jenis stream cipher sehingga RC4 memproses unit atau input data, pesan atau informasi pada satu saat. Unit atau data pada umumnya sebuah byte atau bahkan kadang kadang bit (byte dalam hal RC4)[BUD98] sehingga dengan cara ini enkripsi atau dekripsi dapat dilaksanakan pada panjang yang variabel. Algoritma ini tidak harus menunggu sejumlah input data, pesan atau informasi tertentu sebelum diproses, atau menambahkan byte tambahan untuk mengenkrip. RC4 digunakan secara luas pada beberapa aplikasi dan umumnya dinyatakan sangat
aman.
Sampai
saat
ini
diketahui
tidak
ada
yang
dapat
memecahkan/membongkarnya, hanya saja versi ekspor 40 bitnya dapat dibongkar dengan cara "brute force" (mencoba semua kunci yang mungkin) [BUD98]. RC4 tidak dipatenkan oleh RSADSI, hanya saja tidak diperdagangkan secara bebas (trade secret). II‐6
Algoritma RC4 menggunakan dua buah S-Box yaitu array sepanjang 256 yang berisi permutasi dari bilangan 0 sampai 255, dan S-Box kedua, yang berisi permutasi merupakan fungsi dari kunci dengan panjang yang variabel. Cara kerja algoritma RC4 yaitu inisialisasi S-Box pertama, S[0],S[1],...,S[255], dengan bilangan 0 sampai 255. Pertama isi secara berurutan S[0] = 0, S[1] = 1,...,S[255] = 255. Kenudian inisialisasi array lain (S-Box lain), misal array K dengan panjang 256. Isi array K dengan kunci yang diulangi sampai seluruh array K[0], K[1],...,K[255] terisi seluruhnya. Proses inisialisasi S-Box (Array S) for i = 0 to 255 S[i] = i
Proses inisialisasi S-Box (Array K) Array Kunci // Array dengan panjang kunci “length”. for i = 0 to 255 K[i] = Kunci[i mod length]
Kemudian lakukan langkah pengacakan S-Box dengan langkah sebagai berikut : i = 0 ; j = 0 for i = 0 to 255 { j = (j + S[i] + K[i]) mod 256 swap S[i] dan S[j] }
Setelah itu, buat pseudo random byte dengan langkah sebagai : i = ( i + j = ( j + swap S[i] t = (S[i] K = S[t]
1 ) mod 256 S[i] ) mod 256 dan S[j] + S[j]) mod 256
Byte K di-XOR-kan dengan plainteks untuk menghasilkan cipherteks atau diXOR-kan dengan cipherteks untuk menghasilkan plainteks. Enkripsi sangat cepat kurang lebih 10 kali lebih cepat dari DES.
II‐7
Berikut adalah implementasi algoritma RC4 dengan mode 4 byte (untuk lebih menyederhanakan). Inisialisasi S-Box dengan panjang 4 byte, dengan S[0]=0, S[1]=1, S[2]=2 dan S[3]=3 sehingga array S menjadi : 0
1
2
3
Inisialisasi 4 byte kunci array, Ki. Misalkan kunci terdiri dari 2 byte yaitu byte 1 dan byte 7. Ulang kunci sampai memenuhi seluruh array K sehingga array K menjadi 1
7
1
7
Berikutnya mencampur operasi dimana kita akan menggunakan variabel i dan j ke index array S[i] dan K[i]. pertama kita beri nilai inisial untuk i dan j dengan 0. Operasi Pencampuran adalah pengulangan rumusan ( j + S[i]+ K[i]) mod 4 yang diikuti dengan penukaran S[i] dengan S[j]. Untuk contoh ini, karena kita menggunakan array dengan panjang 4 byte maka algoritma menjadi : for i = 0 to 4 j = (j + S[i] + K[i]) mod 4 swap S[i] dan S[j]
Dengan algoritma seperti di atas maka dengan nilai awal i = 0 sampai i = 3 akan menghasilkan array S seperti di bawah ini : iterasi pertama : i = 0, j = (j = (j = (0 = 1
maka + S[i] + K[i]) mod 4 + S[0] + K[0]) mod 4 + 0 + 1 ) mod 4
swap S[0] dan S[1] sehingga menghasilkan array S : 1
0
2
3
iterasi kedua : i = 1, j = (j = (j = (1 = 0
maka + S[i] + K[i]) mod 4 + S[1] + K[1]) mod 4 + 0 + 7 ) mod 4
II‐8
Swap S[1] dan S[0] sehingga menghasilkan array S : 0
1
2
3
iterasi ketiga : i = 2, j = (j = (j = (0 = 3
maka + S[i] + K[i]) mod 4 + S[2] + K[2]) mod 4 + 2 + 1 ) mod 4
Swap S[2] dan S[3] sehingga menghasilkan array S : 0
1
3
2
iterasi keempat : i = 3, j = (j = (j = (3 = 0
maka + S[i] + K[i]) mod 4 + S[3] + K[3]) mod 4 + 2 + 7 ) mod 4
Swap S[3] dan S[0] sehingga menghasilkan array S : 2
1
3
0
Berikutnya adalah proses enkripsi yaitu meng-XOR-kan pseudo random byte dengan plainteks, misalnya plaintetks “HI”. Plainteks terdiri dari dua karakter maka terjadi dua iterasi. Berikut iterasi 1 : Inisialisasi i dan j dengan 0 sehingga i = 0; j = 0. i = 0; j = 0 i = ( i + 1 ) mod 4 = (0 + 1) mod 4 = 1
dan j = ( j + S[i] ) mod 4 = ( 0 + 2 ) mod 4 = 2
swap S[i] dan S[j] yaitu S[1] dan S[2] sehingga array S menjadi 2
3
1
0
t = = = K =
(S[i] + S[j]) mod 4 (3 + 1) mod 4 0 S[t] = S[0] = 2
Byte K di-XOR-kan dengan plainteks “H”. Kemudian iterasi 2 : i = 1; j = 2 i = ( i + 1 ) mod 4 = (1 + 1) mod 4 = 2
dan II‐9
j = ( j + S[i] ) mod 4 = ( 2 + 2 ) mod 4 = 0
swap S[i] dan S[j] yaitu S[2] dan S[0] sehingga array S menjadi 1
3
2
0
t = = = K =
(S[i] + S[j]) mod 4 (2 + 1) mod 4 3 S[t] = S[3] = 2
Byte K di-XOR-kan dengan plainteks “I”. Proses XOR pseudo random byte dengan plainteks, dapat dilihat pada tabel II-1. Tabel II-1 Proses XOR pseudo random byte dengan plainteks pada enkripsi
H
I
Plainteks
0 1 0 0 1 0 0 0
0 1 0 0 1 0 0 1
Pseodo Random byte
0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 0
Cipherteks
0 1 0 0 1 0 1 0
0 1 0 0 1 0 1 1
Pesan dikirim dalam bentuk cipherteks sehingga setelah sampai di penerima pesan dapat kembali diubah menjadi plainteks dengan meng-XOR-kan dengan kunci yang sama. Berikut pemrosesan pesan setelah sampai pada penerima dapat dilihat pada tabel II-2 : Tabel II-2 Proses XOR pseudo random byte dengan plainteks pada dekripsi
H
I
Cipherteks
0 1 0 0 1 0 1 0
0 1 0 0 1 0 1 1
Pseodo Random byte
0 0 0 0 0 0 1 0
0 0 0 0 0 0 1 0
Plainteks
0 1 0 0 1 0 0 0
0 1 0 0 1 0 0 1
Berdasarkan hasil pengujian performansi RC4 pada Intel E4500 2.2GHz memori 1GB, diperoleh hasil seperti terlihat pada tabel II-3. Hasil pengetesan pada tabel II-3 didapat dengan enkripsi 4 kbyte sebanyak 3200 kali, atau setara dengan 100 Mb data.
II‐10
Tabel II-3 Kecepatan Enkripsi RC4
Jumlah
Kecepatan Thread ke (dalam Mbps)
Thread
1
2
3
4
5
1
91.42
2
87.67
86.48
3
58.71
61.53
58.71
4
41.29
56.63
48.48
50.39
5
36.99
37.42
43.53
41.02
36.36
10
17.77
25.09
17.97
20.64
19.16
6
7
8
9
10
Total 91.42 174.15 178.95 196.79 195.32
24.24
19.1
20
20.77
30.47
215.21
Algoritma RC4 memiliki beberapa kelebihan dan kekurangan. Berikut kelebihan algoritma RC4 [BUD98]: 1. Kesulitan mengetahui sebuah nilai dalam tabel. 2. Kesulitan mengetahui lokasi mana di dalam tabel yang digunakan untuk menyeleksi masing-masing nilai. 3. Kunci RC4 tentu hanya dapat digunakan sekali 4. Model enkripsi ini 10 kali lebih cepat dari DES Disamping memiliki kelebihan tersebut, algoritma RC4 juga memiliki kelemahan. Berikut kelemahan algoritma RC4 [BUD98]: 1. Algoritma RC4 lebih mudah diserang dengan menggunakan analisis dari bagian dalam tabel. 2. Salah satu dari 256 kunci dapat menjadi kunci yang lemah. Kunci ini diidentifikasi oleh kriptanalis yang dapat menemukan keadaan dimana salah satu dari bit yang dihasilkan mempunyai korelasi yang kuat dengan sedikit bit kunci.
2.2
Basis Data
2.2.1 Definisi Basis Data Secara etimologi basis data terdiri dari dua kata yaitu basis dan data yang dapat diartikan sebagai markas atau gudang, tempat bersarang atau berkumpul. Data adalah representasi fakta dunia nyata yang mewakili suatu objek seperti manusia, barang dan
II‐11
sebagainya yang direkam dalam bentuk angka, huruf, simbol , teks, gambar, atau kombinasinya [FAT99]. Basis data dapat didefinisikan dalam sejumlah sudut pandang seperti [FAT99] : 1. Himpunan kelompok data (arsip) yang saling berhubungan dan diorganisasi sedemikian rupa sehingga dapat dimanfaatkan kembali dengan cepat dan mudah. 2. Kumpulan data yang saling berhubungan yang disimpan secara bersama sedemikian rupa dan tanpa pengulangan (redudansi) yang tidak perlu, untuk memenuhi berbagai kebutuhan. 3. Kumpulan file / tabel / arsip yang saling berhubungan yang disimpan dalam media penyimpanan elektronis. Sistem basis data adalah suatu sistem yang mengintegrasikan kumpulan dari data yang saling berhubungan satu dengan lainnya dan membuatnya tersedia untuk beberapa aplikasi yang bermacam-macam[DIC05].
2.2.2 Structured Query Language (SQL) Suatu basis data mempunyai bahasa khusus yang diperlukan untuk melakukan interaksi dengan basis data itu sendiri. Bahasa basis data yang menjadi standar adalah SQL (bahasa query yang terstruktur). Basis data menyediakan Data Definition Language (DDL) yang menspesifikasiskan skema basis data dan Data Manipulation Language (DML) yang mengekspresikan query basis data dan meng-update basis data. Pada praktiknya DDL dan DML bukanlah dua bagian yang terpisah , tetapi DDL dan DML itu merupakan suatu bagian bentuk sederhana dari suatu basis data. 1. Data Definition Language (DDL) DDL digunakan untuk menspesifikasikan skema basis data, antara lain : membuat tabel baru, membuat indeks, mengubah struktur tabel dan sebagainya. Berikut contoh pernyataan dalam bahasa SQL untuk mendefinisikan tabel data_pelanggan
II‐12
create
table
data_pelanggan
(no_pelanggan
integer,
nama
char(20), alamat char(20))
Selain menspesifikasikan relasi, DDL juga menspesifikasikan informasi dari tiap relasi, seperti domain tipe, primary key, dan batasan lain sehingga sistem basis data harus selalu mengecek pada batasan tersebut sewaktu terjadi penambahan atau pengubahan data. SQL standar mendukung berbagai domain tipe, diantaranya yaitu char(n), varchar(n), int, smallint, numeric(p,d), real, float(n), date, time dan timestamp. 2. Data Manipulation Language(DML) Manipulasi data adalah : a. Mengambil informasi yang tersimpan dalam basis data. b. Menyisipkan informasi baru ke dalam basis data. c. Menghapus informasi dari basis data. d. Mengubah informasi yang tersimpan dalam basis data. DML adalah suatu bahasa yang dapat digunakan untuk mengakses dan memanipulasi data yang terorganisir oleh suatu model data[SIL02]. DML terbagi atas dua tipe, yaitu : 1. DML prosedural, dimana pengguna harus menspesifikasikan data apa yang dibutuhkan dan bagaimana mendapatkan data tersebut 2. DML deklaratif atau Non-prosedural DML, dimana pengguna hanya menspesifikasikan
data
yang
dibutuhkan
tanpa
menspesifikasikan
bagaimana cara mendapatkan data itu. DML jenis ini adalah DML yang secara umum dikenal, contohnya adalah SQL language. Query adalah suatu pernyataan permintaan untuk mengambil suatu informasi. Bagian dari DML yang dapat digunakan untuk mengambil informasi disebut query language. Meskipun secara teknis kata query language tidak sama dengan DML tetapi pada praktiknya kedua istilah ini sama.
II‐13
Berikut beberapa contoh penggunaan query languages : select nama from data_pelanggan where no_pelanggan = 7
Query di atas berfungsi untuk menampilkan data dari tabel data_pelanggan dengan atribut no_pelanggan = 7. insert
into
data_pelanggan
(no_pelanggan,
nama,
alamat)
values (7, “Mr.X”, “Jalan Ganesha No. 1000”)
Query di atas berfungsi untuk menyisipkan data baru ke tabel data_pelanggan. Kolom yang akan ditambah datanya adalah kolom no_pelanggan, nama, alamat dengan nilai no_pelanggan = 7 nama = “Mr.X” dan alamat “Jalan Ganesha No. 1000”. update
data_pelanggan
set
alamat=”Jalan
Taman
Sari
No.
50/56” where no_pelanggan = 7.
Query di atas berfungsi untuk melakukan update atribut alamat untuk baris pada tabel data_pelanggan dengan no_pelanggan = 007. delete from data_pelanggan where no_pelanggan = 7
Query di atas berfungsi untuk menghapus data pada baris yang mengandung atribut no_pelanggan = 7. Data query merupakan data dalam query language yang bersifat rahasia, dalam hal ini yang rahasia merupakan nilai data yang akan dimasukkan, diubah atau dihapus pada basis data, sedangkan hasil query merupakan nilai yang di-retrieve akibat adanya permintaan dari query. Pada contoh query language : select nama from data_pelanggan where no_pelanggan = 7.
Data query pada query language itu adalah nomor pelanggan yaitu 7, dan hasil query adalah seluruh nama pelanggan yang akan di-rertrieve basis data. Pada tugas akhir ini data dan hasil query itu yang akan dienkripsi dengan menggunakan algoritma kriptografi RC4 untuk menjamin keamanannya selama dalam transmisi di jaringan. II‐14
2.2.3 Keamanan Basis Data Jenis kejahatan pada basis data yaitu [SIL02]: pembacaan informasi pemodifikasian dan perusakan data oleh orang yang tidak memiliki otoritas. Keamanan basis data berarti menjaga basis data dari ancaman tersebut. Persoalan keamanan pada basis data dapat dikategorikan menjadi beberapa level, yaitu [SIL02]: 1. Sistem Basis Data Sistem basis data yang digunakan harus dapat menjamin setiap pengguna basis data tidak melanggar otoritas yang dimiliki masing-masing pengguna. Penguna basis data hanya dapat memakai basis data sesuai dengan wewenang yang dimiliki dan diatur oleh Administrator basis data. 2. Sistem Operasi Apabila tingkat keamanan pada sistem basis data telah terjamin, hal lain yang perlu diperhatikan adalah keamanan pada sistem operasi yang digunakan. Sistem operasi yang tidak aman dapat menyebabkan pengguna yang tidak memiliki otoritas ke basis data dapat mengakses basis data. 3. Jaringan Pada umumnya, suatu sistem basis data digunakan secara luas melalui jaringan. Keamanan jaringan yang dipakai oleh sistem basis data menjadi hal yang penting untuk diperhatikan. Tugas akhir ini membahas tentang keamanan basis data dari level jaringan, yaitu dengan cara mengenkripsi data-data yang ditransmisikan dari server basis data dengan client. 4. Fisik Keamanan level ini menyangkut keamanan yang berkaitan dengan tempat dimana sistem basis data berada. Tempat tersebut harus dilindungi dari ancaman secara fisik, seperti dirusak pencuri atau bencana alam. 5. Manusia Setiap pengguna basis data harus diatur otoritasnya sedemikian rupa sehingga setiap pengguna hanya dapat mengakses data yang berhak diakses oleh pengguna yang bersangkutan.
II‐15
2.3
Serangan pada Jaringan Berikut serangan yang dapat terjadi pada jaringan termasuk yang bisa terjadi
pada jaringan yang menghubungkan antara client yaitu server web dengan server yaitu server basis data. Berdasarkan bagaimana cara dan posisi seseorang mendapatkan pesan-pesan dalam saluran komunikasi, penyerangan dapat dikategorikan menjadi: 1. Sniffing Sniffing secara harfiah berarti mengendus, tentunya dalam hal ini yang diendus adalah pesan (baik yang belum ataupun sudah dienkripsi) dalam suatu saluran komunikasi. Hal ini umum terjadi pada saluran publik yang tidak aman. Sang pengendus dapat merekam pembicaraan yang terjadi. 2. Replay attack Jika seseorang bisa merekam pesan-pesan handshake (persiapan komunikasi), ia mungkin dapat mengulang pesan-pesan yang telah direkamnya untuk menipu salah satu pihak. 3. Spoofing Penyerang dengan modus menyamar menjadi salah satu pihak yang berinteraksi. Misalnya C – bisa menyamar menjadi A. Semua orang dibuat percaya bahwa C adalah A. Penyerang berusaha meyakinkan pihak-pihak lain bahwa tak ada salah dengan komunikasi yang dilakukan, padahal komunikasi itu dilakukan dengan penyerang. Contohnya jika orang memasukkan PIN ke dalam Card Acceptance Device (CAD), yang benar-benar dibuat seperti CAD asli, tentu sang penipu bisa mendapatkan PIN pemilik smartcard. Pemilik smartcard tidak tahu bahwa telah terjadi kejahatan. 4. Man-in-the-middle Saat A hendak berkomunikasi dengan B, C dimata A seolah-olah adalah B, dan C dapat pula menipu B sehingga C seolah-olah adalah A. C dapat berkuasa penuh atas jalur komunikasi ini, dan bisa membuat berita fitnah. Kabel koaksial yang sering digunakan pada jaringan sangat rentan terhadap serangan vampire tap, yakni perangkat keras sederhana yang bisa menembus bagian dalam kabel koaksial sehingga dapat mengambil data yang mengalir tanpa perlu memutuskan komunikasi data yang sedang berjalan. Seseorang dengan vampire tap dan komputer portable dapat melakukan serangan pada bagian apa saja dari kabel koaksial. II‐16