ARTIFICIAL NEURAL NETWORK
PENGERTIAN
ANN
Artificial Neural Network (Jaringan Saraf Tiruan) sudah mulai
banyak dimanfaatkan sebagai solusi terhadap berbagai macam kasus
yang
muncul beberapa dekade terakhir, sejarah ANN (Artificial Neural
Network)
menunjukan pembahasan terhadap masalah ini muncul sekitar awal
tahun
1900-an namun implementasinya baru banyak muncul beberapa dekade
terakhir.
Pemanfaatan ANN juga mulai merambah dunia security khususnya untuk
memecahkan masalah-masalah yang sifatnya tidak tetap sehingga
sulit untuk
di pecahkan dengan menggunakan tehnik pemrograman konvensional
yang ada
saat ini.
Artificial Neural Network merupakan suatu jaringan saraf tiruan
yang
dibangun untuk meniru cara kerja otak manusia. Dengan jaringan
saraf tiruan
maka kita dapat memberikan semacam kecerdasan pada sistem, dimana
sistem
tersebut akan diberikan waktu untuk 'belajar' dan kemudian
diharapkan dari
proses belajarnya, sistem bisa memberikan solusi dari suatu kasus.
Analoginya seperti mengajarkan seorang anak kecil untuk mengetahui
bentuk
kursi, kita akan menunjukan pada anak tersebut berbagai macam
bentuk kursi
dan bukan kursi. Kita akan memperlihatkan mana saja yang termasuk
kursi dan
mana yang bukan, proses ini disebut proses training. Setelah
proses training
selesai, maka tiba waktunya untuk melakukan test terhadap anak
tersebut
dengan menunjukan suatu bentuk kursi dan menanyakan apakah itu
termasuk kursi
atau bukan. Hal yang menarik adalah pada saat kita menunjukan
suatu bentuk
kursi yang belum pernah diajarkan pada anak tersebut dan apabila
itu memang
variasi dari kursi (dengan ciri misalnya: kakinya ada 4, ada
pegangan
tangannya, bentuknya seperti angka 4, dll) maka dia dapat
mengambil
kesimpulan bahwa benda tersebut adalah kursi, apabila jawaban si
anak salah
maka kita kembali melatihnya (proses training) dengan memasukan
bentuk kursi
yang baru tadi kedalam data latih, sehingga si anak dapat
mengambil
kesimpulan bahwa benda tersebut (dan yang mirip benda tersebut
dimasa yang
akan datang) adalah kursi.
PENERAPAN AAN PADA SECURITY
Pemanfaatan ANN juga sudah mulai banyak dibicarakan pada dunia
security, salah satu impelementasinya diterapkan pada IDS
(Intrusion
Detection System). Teknik
IDS yang umumnya digunakan saat ini adalah
menggunakan signature serangan untuk menentukan apakah suatu paket
termasuk
dalam jenis serangan tertentu atau bukan, misalnya rule Snort yang
merupakan
salah satu IDS opensource yang sangat populer:
"alert icmp
$EXTERNAL_NET any <> $HOME_NET any (msg:"DDOS Stacheldraht
handler->agent
(ficken)"; content:"ficken"; itype:0;icmp_id:6667;
reference:url,staff.washington.edu/dittrich/misc/stacheldraht.analysis;
classtype:attempted-dos;
sid:1856; rev:2;)"
apabila ada paket yang melintasi jaringan dan ditangkap oleh IDS
(dalam hal
ini Snort) dan packet tersebut memenuhi kriteria rules diatas maka
IDS akan
dapat langsung memutuskan bahwa telah terjadi suatu jenis serangan
DDOS yang
memanfaatkan tools stacheldracht, dan snort akan langsung
mengambil tindakan
yang telah ditetapkan sebelumnya (misal: mengirimkan pesan alert
via sms/mail
ke administrator sistem).
Yang menjadi masalah
adalah jenis serangan akan terus berkembang dan
umumnya signature serangan tersebut baru akan diketahui apabila
telah jatuh
'korban' oleh serangan baru tersebut, hal ini disebabkan jenis
serangan baru
belum terdapat datanya di database signature IDS. Untuk mengatasi
masalah
tersebut maka saat ini mulai banyak dikembangkan suatu IDS yang
menggunakan
teknologi ANN sehingga diharapkan IDS dapat mengenali suatu jenis
serangan
baru (walaupun sifatnya baru 'memperkirakan') dan mengambil
langkah yang
sesuai, sehingga sistem dapat lebih terlindungi dari jenis
serangan baru
tersebut.
ANN sifatnya
memperkirakan, yang artinya sistem akan diberikan suatu
kecerdasan sehingga apabila ada jenis serangan baru yang belum
pernah
dilatihkan pada sistem, dia bisa berpikir "sepertinya ini
termasuk dalam
kategori jenis serangan DOS stacheldracht" misalnya. Dan
kecerdasan sistem
tergantung pada proses trainingnya, semakin baik jenis data yang
dilatihkan
maka semakin baik kecerdasan sistem tersebut.
DASAR-DASAR
ALGORITMA AAN
Dasar teori yang
menjelaskan implementasi ANN sangat banyak di
Internet, intinya...mesin ANN bekerja pada 2 mode, yang pertama
adalah
'training' dan yang kedua adalah 'execution'. Pada saat proses
training,
kita akan melatih sistem dengan memberikannya sebanyak mungkin
contoh
data 'input' serta 'output' yang akan dihasilkan oleh data input
tersebut.
Contoh paling mudah adalah mengajarkan sistem operasi penjumlahan:
input ke-1 = 0.1
input ke-2 = 0.2
output = 0.3
pada contoh tersebut, kita mengajarkan pada sistem apabila inputan
terdiri
dari angka "0.1" dan "0.2" maka outputnya
adalah "0.3". Jika hanya diberikan
satu contoh maka sistem tidak akan belajar dengan baik, untuk itu
sistem
sebaiknya diberikan contoh data dengan jumlah yang sangat besar
sehingga
kecerdasan sistem bisa lebih handal.
Konsep pertama yang
harus di pahami sebelum masuk pada tahap coding
adalah layer. ANN umumnya terdiri dari 3 layer, yaitu "input
layer", "hidden
layer", dan "output layer". Ketiga layer inilah
yang akan membentuk topologi
ANN. Tiap layer terdiri dari unit-unit node yang jumlahnya dapat
kita
tentukan sendiri, bisa dibayangkan bahwa tiap node pada ANN
ibaratnya seperti
neuron pada otak manusia. Jumlah node pada input layer tergantung
pada jumlah
data input yang akan masuk pada sistem, misalnya pada operasi
penjumlahan
diatas maka jumlah node pada input layer sebanyak 2 buah.
Jumlah node pada
hidden layer bervariasi, dan terdapat banyak
teori yang dapat menjelaskan bagaimana mencari jumlah node yang
tepat
pada hidden layer, namun pada umumnya 5 buah node pada hidden
layer suatu
ANN sudah mencukupi untuk
memecahkan berbagai macam kasus. Node pada
output layer tergantung dari jumlah output pada sistem, pada
contoh
operasi penjumlahan diatas dapat dilihat bahwa jumlah node di
output
layernya sebanyak 1 buah.
Konsep kedua yang
penting adalah nilai Error minimum yang diharapkan.
Pada saat ANN di inisialisasi akan dibangkitkan nilai random untuk
koneksi
antar node dari suatu layer dengan layer sesudahnya, jadi antar
node-node
di hidden layer saling terkoneksi satu sama lain dengan node-node
di hidden
layer, dan antar node-node di hidden layer akan saling terkoneksi
satu sama
lain dengan node-node pada output layer. Nilai koneksi antar node
tersebut
sering disebut 'bobot'. Nilai bobot inilah yang akan menentukan
kecerdasan
suatu sistem. Pada saat proses training, nilai bobot tersebut akan
terus
berubah sehingga didapatkan kesesuaian antara input dengan output
dengan
Error minimum. Dengan kata lain, pada proses training kita akan
menentukan
nilai minimum error yang bisa di tolerir oleh sistem....seperti
yang
disampaikan diatas bahwa sistem tidak akan memberikan kepastian
jawaban untuk
suatu kasus yang tidak pernah dilatihkan kepadanya, pasti ada
nilai Error
dari jawaban sistem dengan jawaban yang seharusnya, nah nilai
Error tersebut
yang harus di definisikan oleh kita sebelum melatih sistem sehingga
sistem
bisa menjawab dengan tingkat kebenaran semaksimal mungkin (misal:
tingkat
kebenaran sistem 99,9999% dengan nilai Error 0.0001).