RPL Tabanlı IOT Cihazları Zafiyetinin Tespiti İçin Makine Öğrenmesi Algoritmalarının Karşılaştırılması

Ham Verilerin Anlamlı Hale Getirilmesi

Bir önceki bölümde, taşma saldırısı, azaltılmış rank saldırısı ve sürüm numarası artırma saldırısını contiki cooja ile simüle etmiştik. Bu simülasyonları hem normal düğümlerle hem de zafiyetli güğümlerle icra etmiştik. Simülasyonlardan toplam 6 adet ham veri seti ortaya çıkmıştı.

Ham veri setinde aşağıdaki sütunlar bulunmaktadır:

No : Satır numarası

Time : İşlem zamanı (ms)

Source : Kaynak IP adresi (IPV6)

Destination: Hedef IP adresi (IPV6)

Protocol : Protokol

Length : Paket uzunluğu

Info : Bilgi (DIO, DIS, DAO, Ack mesajları)

 

Ham veride bulunan sütunlar

Ham veri kümesinden elde edilen bilgiler, makine öğrenimini uygulamak için yeterli olmayacaktır. Zayıf düğümler içeren simülasyonlardan elde edilen ham veriler, normal düğümler içeren simülasyonlardan elde edilen ham verilerden tamamen farklıdır. Bu farkın paket sayısı, mesaj türleri, toplam paket uzunlukları ve oranları olduğu gözlemlenmiştir. Bu anormalliği algılamak için, ham veriler 1 saniyelik karelere bölünmüştür. Her saniyenin çerçeveleri içinde aşağıdaki değerler hesaplanmış ve yeni bir veri kümesi oluşturulmuştur.

  • Kaynak Düğüm: Her düğüm için benzersiz bir sayı oluşturulmuştur.
  • Hedef Düğüm: Kaynak düğüm için oluşturulan sayının aynısıdır.
  • Paket Sayısı: 1 saniyelik çerçevedeki tüm kaynak düğümlerin sayısıdır.
  • Kaynak Düğüm Oranı: (Kaynak Düğüm Sayısı / Paket Sayısı).
  • Hedef Düğüm Oranı: (Hedef Düğüm Sayısı / Paket Sayısı).
  • Kaynak Düğüm Süresi: 1 saniyelik çerçevede kaynaktan hedefe gönderilen tüm paket sürelerinin toplamıdır.
  • Hedef Düğüm Süresi: Hedef tarafından 1 saniyelik çerçevede alınan tüm paket sürelerinin toplamıdır.
  • Toplam Paket Süresi: 1 saniyelik çerçevedeki tüm paket sürelerinin toplamıdır.
  • Toplam Paket Uzunluğu: 1 saniyelik çerçevedeki tüm paket uzunluklarının toplamıdır.
  • Kaynak Paket Oranı: (Kaynak Paket uzunluklarının Toplamı / Toplam Paket Uzunluğu).
  • Hedef Paket Oranı: (Hedef Paket uzunluklarının Toplamı / Toplam Paket Uzunluğu).
  • DIO Mesaj Sayısı: 1 saniyelik çerçevedeki DIO mesajlarının sayısı.
  • DIS Mesaj Sayısı: 1 saniyelik çerçevedeki DIS mesajlarının sayısı.
  • DAO Mesaj Sayısı: 1 saniyelik çerçevedeki DAO mesajlarının sayısı
  • Diğer Mesaj Sayısı: DIO, DIS ve DAO dışındaki mesajların sayısı.
  • Etiket: 0 veya 1 (Zafiyetli veri seti 1, normal veri seti 0’dır).

 

Yeni veri setinin oluşturulması, aşağıdaki sözde kod vasıtası ile olmuştur.

				
					START
	Dset=INPUT(RawDataset)
	WHILE Dset Rows Ends
		Duration=time(current_row)-time(previous_row)
		Duration_list=APPEND(Duration)
	ENDWHILE
	
	Dset = Dset + Duration_list
	
	IP_dictionary={IP_Adress :unique_number}
	Crr_scnd=60
	Counter=0
	
	fs=FLOOR(Dset[Duration_list])
	
	WHILE counter < frame_second
		osf= GET(Dset[Time]>= fs and Dset[Time]<= Crr_scnd+1)
		WHILE osf Rows Ends:
			Osf_list=[ src=IP_dictionary[Source IP_Adress],
									dst=IP_dictionary[Dest. IP_Adress],
									pct_cnt=COUNT(rows)
									src_mote_rt= COUNT(src)/pct_cnt
									dst_mote_rt= COUNT(dst)/pct_cnt
									src_mote_dur=SUM(src_duration)
									dst_mote_dur= SUM(dst_duration)
									ttal_pckt_dur= SUM(duration)
									ttal_pckt_lngth= SUM(pckt_lngth)
									src_pckt_rt= SUM(src_pckt_lngth)/ ttal_pckt_lngth
									dst_pckt_rt= SUM(dst_pckt_lngth)/ ttal_pckt_lngth
									dio_msg_cnt= COUNT(dio_messages)
									dis_msg_cnt= COUNT(dis_messages)
									dao_msg_cnt= COUNT(dao_messages)
									other_msg_cnt= COUNT(other_messages)
									IF Dset=”Normal”
										Label=0
									ELSE
										Label=1
									ENDIF								
		ENDWHILE
	New_dset=APPEND(Osf_list)
	ENDWHILE
END
				
			

Yeni oluşan veri setinin örneği aşağıdaki tablodadır.

 

Ham veriden yukarıdaki veriyi elde etmek için oluşturulmuş python kodlarını burada yer almaktadır.Simülasyon esnasında, 12 düğümden oluşan bir sistemin 30’uncu saniyeden sora DODAG yapısının tamamen oluştuğu gözlemlenmiştir. RPL’in doğası gereği DODAG oluşurken cihazlar DIO, DAO ve DAO-ACK mesajlarını birbirlerine gönderecek ve paket trafiği DODAG oluştuktan sonraki trafikten farklı olacaktır. Bu farklılığın makine tarafından öğrenilmesini engellemek için ham veri setinin 60’ıncı saniyesinden sonraki veriler alınarak yeni veri seti oluşturulmuştur.Her saldırı için oluşturulan ve zafiyetli-normal olarak sınıflandırılan veri setleri, farklı makine öğrenmesi algoritmaları ile karşılaştırılmak için hazır hale gelmiştir. Sonuç olarak Taşma Saldırılarına Ait veri seti, Azaltılmış Rank saldırılarına ait veri seti ve Sürüm Numarası Artırma Saldırılarına ait veri seti olmak üzere toplam 3 adet veri seti oluşturulmuştur.

Blog özeti

Ham veri kümesinden elde edilen bilgiler, makine öğrenimini uygulamak için yeterli olmayacaktır. Zayıf düğümler içeren simülasyonlardan elde edilen ham veriler, normal düğümler içeren simülasyonlardan elde edilen ham verilerden tamamen farklıdır. Bu farkın paket sayısı, mesaj türleri, toplam paket uzunlukları ve oranları olduğu gözlemlenmiştir. Bu anormalliği algılamak için, ham veriler 1 saniyelik karelere bölünmüştür. Her saniyenin çerçeveleri içinde aşağıdaki değerler hesaplanmış ve yeni bir veri kümesi oluşturulmuştur.

Yazar Hakkında

Diğer Yazılar

Tezim
Murat Uğur KİRAZ

Sonuç

Bu bölümde, RPL protokolüne yapılan Taşma Saldırısı, Azaltılmış Rank Saldırısı ve Sürüm Numarası Artırma Saldırısı “Karar Ağacı”, “Lojistik Regresyon”, “Rasgele Orman”, “Naive Bayes”, “K En Yakın Komşu” ve “Yapay Sinir Ağları” algoritmaları ile eğitilmiş ve test edilmiştir.

Taşma Saldırılarının tespitinde %97,2 doğruluk oranı ile Yapay Sinir Ağları algoritması, Sürüm Numarası Artırma Saldırılarının tespitinde %81 doğruluk oranı ile K En Yakın Komşu algoritması, Azaltılmış Rank saldırılarının tespitinde %58 doğruluk oranı ile Yapay Sinir Ağları algoritması başarı gösterdiği tespit edilmiştir.

Daha Fazla oku >>
Tezim
Murat Uğur KİRAZ

Makine Öğrenmesi Değerlerinin Yorumlanması

RPL Tabanlı IOT Cihazları Zafiyetinin Tespiti İçin Makine Öğrenmesi Algoritmalarının Karşılaştırılması başlıklı yüksek lisans tezimi nasıl yaptığımı, bu süreçte elde ettiğim tecrübelerimi ve bu tezdeki kodları bir yazı dizisi halinde blog sayfamda paylaşmaya devam ediyorum.

Şimdiye kadar, RPL protokolü ve RPL protokolünde gerçekleşen saldırılarla ilgili detaylı bilgi verdim. Sonrasında, Taşma Saldırıları, Sürüm Numarası Artırma Saldırısı ve Azaltılmış Rank Saldırısı ile ilgili deneyler yapıp, ham verileri elde ettim ve bu ham verileri anlamlı hale getirdim. Zafiyetli düğümlerle yapılan deney sonuçları ile, iyicil düğümlerle yapılan deney sonuçlarını istatistiksel metotlarla karşılaştırdım.

Bu bölümde ise makine öğrenmesi algoritmaları ile tespit ettiğimiz saldırıların sayısal sonuçlarını yorumlayacağım.

Daha Fazla oku >>

Yazıyı paylaşın

LinkedIn
Twitter