K‚t qu£ trong thß nghi»m 1 cho th§y PSA2 cho hi»u su§t tŁt nh§t khi chúng tôi
thi‚t l“p gi¡ bº trị (10, 5, 7, 8, 9) cho c¡c tham sŁ quintuple (r, t1, t2, t3, t4), trong đó t¿
l» lØi là 1.46% và t¿ l» ch‰nh x¡c đ⁄t cao đ‚n 98.79%. Hơn nœa, t¿ l» ph¡t hi»n đưæc x‚p
thø hai với 99.76%. BBNN và SVM có t¿ l» ph¡t hi»n cao nh§t nhưng t¿ l» lØi cıa chúng
không th” so s¡nh với PSA2. Có th” th§y r‹ng, k‚t qu£ tł thß nghi»m 2 cho th§y PSA2
nhanh hơn so với bŁn thu“t to¡n đưæc đ• xu§t bởi Jadidi (2013) v• ba sŁ li»u DR, ACC
và FAR. PSA2 không th” hu§n luy»n dœ li»u không có nh¢n n¶n chúng tôi ch¿ sß dụng
10% t“p dœ li»u đ¢ đưæc g¡n nh¢n gồm 5998 t§n công và 595 flow lo⁄i thường cho giai
đo⁄n hu§n luy»n trong thß nghi»m 3. Trong khi đó, c¡c thu“t to¡n kh¡c sß dụng 100%
dœ li»u hu§n luy»n đ” hu§n luy»n, trong đó 90% dœ li»u không g¡n nh¢n đưæc sß dụng
cho S4VM. K‚t qu£ tł thß nghi»m có th” khflng định t‰nh hi»u qu£ cıa PSA2 so với c¡c
phương ph¡p đ¢ đưæc đ• xu§t trong Jadidi (2015). Trong t§t c£ c¡c thß nghi»m, t¿ l» lØi
cıa PSA2 luôn luôn nhỏ hơn c¡c thu“t to¡n kh¡c. K‚t qu£ này phƒn nào chøng minh sự
phù hæp cıa PSA2 cho NIDS
26 trang |
Chia sẻ: honganh20 | Ngày: 08/03/2022 | Lượt xem: 301 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Tóm tắt Luận án Cải tiến một số thuật toán trong miễn dịch nhân tạo cho phát hiện xâm nhập mạng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
cho bộ dò được sinh ra ngẫu nhiên rồi thực hiện khớp với các mẫu dữ
liệu self từ tập S (biểu diễn các thành phần của hệ thống). Ứng cử viên nào khớp với ít
nhất một phần tử của S thì bị loại bỏ, số còn lại được lưu trong tập bộ dò D. Trong giai
đoạn phát hiện, tập các bộ dò được sử dụng để phân biệt self (thành phần hệ thống) với
nonself (ngoại lai, bất thường). Nếu một đối tượng khớp với bất kì một phần tử nào đó
của tập bộ dò D, thì nó được coi là nonself.
1.2.2 Thuật toán chọn lọc dương tính
Thuật toán chọn lọc dương tính (PSA) cổ điển cũng gồm hai giai đoạn: sinh tập bộ dò
và phát hiện. Trong giai đoạn sinh, các ứng cử cho bộ dò được sinh ra ngẫu nhiên rồi
4thực hiện khớp với các mẫu dữ liệu self từ tập S. Ứng cử viên nào không khớp với bất
kỳ phần tử của S thì bị loại bỏ, số còn lại được lưu trong tập bộ dò D. Trong giai đoạn
phát hiện, tập các bộ dò được sử dụng để phân biệt self với nonself. Nếu một đối tượng
khớp với bất kì một phần tử nào đó của tập bộ dò D, thì nó được coi là self.
1.3 Thuật ngữ và định nghĩa cơ bản
1.3.1 Xâu, xâu con và ngôn ngữ
Bảng chữ cái Σ là tập hữu hạn, khác rỗng các kí hiệu. Một xâu s ∈ Σ∗ là một chuỗi các
kí hiệu thuộc Σ, độ dài của nó được kí hiệu là |s|. Một xâu được gọi là rỗng nếu nó có độ
dài là 0. Cho trước chỉ số i ∈ {1, . . . , |s|}, thì s[i] là kí hiệu tại ví trí i trong s. Cho trước
hai chỉ số i và j, nếu j ≥ i, thì s[i . . . j] là xâu con của s có độ dài j − i+ 1. Nếu j < i, thì
s[i . . . j] là xâu rỗng. Một xâu s′ là tiền tố của s nếu s′ = s[1 . . . j], 1 ≤ j ≤ |s|.
Một tập xâu S ⊆ Σ∗ được gọi là ngôn ngữ. Với hai chỉ số i và j, ta định nghĩa
S[i . . . j] = {s[i . . . j]|s ∈ S}.
1.3.2 Cây tiền tố, DAG tiền tố
Một cây tiền tố T là một cây có gốc với nhãn của cạnh thuộc Σ, mỗi nút trong cây có
nhiều nhất một cạnh đi ra có nhãn là σ, σ ∈ Σ. Với một xâu s, ta viết s ∈ T nếu có một
đường từ gốc của T tới một lá sao cho s dãy các kí tự trong s là nhãn của đường này.
Cấu trúc cây tiền tố được sử dụng trong thuật toán sinh tập bộ dò rcbvl.
Một tiền tố DAG G là một đồ thị có hướng không chu trình với cung có nhãn từ
tập Σ. Mỗi nút có nhiều nhất một cung đi ra có nhãn là σ, σ ∈ Σ. Với một xâu s, ta viết
s ∈ G nếu có một đường từ gốc của G tới một lá sao cho s dãy các kí tự trong s là nhãn
của đường này. Ta kí hiệu L(G) =
⋃
n is root of G L(G, n). Chú ý là mỗi đồ thị tiền tố G có
thể được chuyển về dạng otomat.
1.3.3 Bộ dò
Cho trước bảng chữ cái Σ khác rỗng, gồm các kí hiệu, bộ dò dương tính và bộ dò âm tính
r-chunk, bộ dò r-liên tục và bộ dò rcbvl được định nghĩa như sau:
Định nghĩa 1.1 (Bộ dò dương tính r-chunk). Cho trước tập self S, một bộ (d, i) gồm
xâu d ∈ Σr, r ≤ `, và một số nguyên i ∈ {1...`−r+1} được gọi là bộ dò dương tính r-chunk
nếu tồn tại xâu s ∈ S thỏa mãn d khớp với s[i . . . i+ r − 1].
Định nghĩa 1.2 (Bộ dò âm tính r-chunk). Cho trước tập self S, một bộ (d, i) gồm xâu
5d ∈ Σr, r ≤ `, và một số nguyên i ∈ {1...`− r + 1} được gọi là bộ dò âm tính r-chunk nếu
d không khớp được với bất kỳ s[i . . . i+ r − 1], s ∈ S.
Mặc dù cách tiếp cận được đề xuất trong các chương sau có thể cài đặt với bất kỳ
bảng chữ cái hữu hạn nào, nhưng để tiện theo dõi trong các ví dụ tôi chỉ sử dụng chữ cái
nhị phân, Σ = {0, 1}.
Định nghĩa 1.3 (Phát hiện dựa trên chọn lọc âm tính). Nếu một phần tử so khớp được
với `− r + 1 bộ dò dương tính r-chunk: (dij , i), i = 1, . . . , `− r + 1, thì nó là self, ngược lại
nó là non-self.
Định lý 1.1. Khả năng phát hiện của tập bộ dò dương tính và tập bộ dò âm tính là như
nhau. L(CHUNKp(S, r)) = L(CHUNK(S, r))
Định nghĩa 1.4 (Bộ dò rcbvl). Cho trước số nguyên dương r, một tập S các xâu self độ
dài `. Bộ (d, i, j) gồm một xâu d ∈ Σk, 1 ≤ k ≤ `, một số nguyên i ∈ {1, ..., ` − r + 1} và
một số nguyên j ∈ {i, ..., `− r + 1} được gọi là bộ dò rcbvl nếu d không xuất hiện trong s,
s ∈ S.
Nói cách khác, (d, i, j) là bộ dò rcbvl nếu tồn tại (j − i + 1) bộ dò r-chunk (d1, i),...,
(dj−i+1, j) thỏa mã điều kiện dk[2..r] = dk+1[1..r − 1], k = 1, ..., j − i.
1.3.4 Biểu diễn dạng vòng của dữ liệu
Phần lớn các ứng dụng dựa trên AIS dùng hai loại biểu diễn dữ liệu: xâu và vectơ giá
trị thực. Cả hai loại này được biểu diễn bởi cấu trúc tuyến tính của các ký hiệu hoặc số.
Điều này dẫn đến có thể bỏ sót thông tin biên (đầu và cuối) của những cấu trúc này. Do
vậy, ta có thể sử dụng cấu trúc vòng tròn thay vì tuyến tính để đạt độ chính xác phân
lớp cao hơn. Một cách làm đơn giản để xây dựng cấu trúc vòng đối với xâu là lấy phần
đầu xâu kết nối vào cuối xâu. Cho trước tập các xâu S ⊂ Σ`, kí hiệu Sr ⊂ Σ`+r−1 gồm tất
cả các biểu diễn vòng tròn của mọi xâu trong S.
1.3.5 Cây tần suất
Cho tập D gồm các xâu có độ dài bằng nhau, một cây T trên D ký hiệu TD là một cây
có hướng bắt đầu từ gốc với các cạnh có nhãn trong tập Σ. Mỗi nút có ít nhất một cung
ra có nhãn là σ. Với một xâu s, chúng tôi coi s ∈ T nếu tồn tại một đường đi từ gốc của
T đến một lá sao cho s chứa các nhãn trên đường đi này. Mỗi lá được kết hợp với một số
nguyên đó là tần số của xâu s ∈ D và s là dãy nhãn trên đường đi kết thúc bởi lá này.
61.4 Tập dữ liệu
Trong luận án, tôi chỉ tập trung nghiên cứu dữ liệu dạng flow bởi các lý do: 1 - Cho phép
phát hiện một số tấn công đặc biệt, như DDoS hay RDP Brute Force, một cách hiệu quả
và nhanh hơn cách tiếp cận dựa trên gói tin vì chỉ cần phân tích lượng thông tin ít hơn
so với phân tích gói tin. 2 - Cách phương pháp phát hiện bất thường dựa trên flow chỉ
xử lý header của các gói tin và vì vậy giảm được dữ liệu và thời gian xử lý, phù hợp với
phát hiện tốc độ cao trong các mạng cỡ lớn. Nó giải được vấn đề cân bằng tải trong điều
kiện gia tăng sử dụng mạng.
Tập dữ liệu DARPA-Lincoln: Tập dữ liệu này được thu thập bởi phòng thí nghiệm
Lincoln (MIT), với mục đích dùng cho đánh giá hiệu suất của các công nghệ phát hiện
xâm nhập khác nhau.
Tập dữ liệu UT: Tập dữ liệu này được thu thập thông qua kiểm soát máy chủ dạng
honeypot đặt tại trường Đại học Twente (Hà Lan). Cơ sở dữ liệu này bao gồm các loại
như lưu lượng nguy hiểm, lưu lượng chưa biết và lưu lượng hiệu ứng phụ. Mỗi flow trong
cơ sở dữ liệu có 12 trường: Source IP, Destination IP, Source Port, Destination Port,
Packets, Octets, Start Time, End Time, Flags, and Proto.
Tập dữ liệu Netflow: Cơ sở dữ liệu này thuộc về một địa chỉ IP và cổng cụ thể nhận
nhiều tấn công nhất. Nó chứa 129,571 lưu lượng (gồm cả các tấn công) đến và tới các
nạn nhân. Mỗi flow trong cơ sở dữ liệu có 10 trường: Source IP, Destination IP, Source
Port, Destination Port, Packets, Octets, Start Time, End Time, Flags, and Proto.
7Chương 2
KẾT HỢP CHỌN LỌC ÂM TÍNH VÀ
CHỌN LỌC DƯƠNG TÍNH
2.1 Thuật toán chọn lọc âm tính mới
Đầu tiên, chúng tôi xây dựng ` − r + 1 cây nhị phân (gọi là cây dương tính) tương
ứng với `− r+ 1 tập bộ dò dương tính r-chunk Dpi, i = 1, . . . , `− r+ 1. Sau đó, tất các các
cây con đầy đủ của các cây trên sẽ được loại bỏ để tìm ra được tập bộ dò tối thiểu cho
bộ dò dương tính r-chunk mà vẫn giữ nguyên được khả năng phát hiện. Cuối cùng, với
mỗi cây dương tính thứ i, chúng tôi quyết định xem có nên chuyển đổi sang cây âm tính
hay không, với cây âm tính là tập bộ dò r-chunk Dni. Quyết định này phụ thuộc vào cây
nào là nhỏ gọn hơn. Khi quá trình thực hiện này kết thúc, chúng ta sẽ có `− r+ 1 cây nhị
phân nhỏ nhất trong đó một số cây thuộc loại dương tính và số khác thuộc loại âm tính.
Phương pháp so khớp r-chunk trên cây nhị phân được tiến hành như sau: xâu s cho
trước sẽ được so khớp với cây nhị phân dương tính (âm tính) thứ i khi s[i . . . i+ k] là một
đường đi từ gốc đến lá i = 1, . . . , ` − r + 1, k < r. Giai đoạn phát hiện có thể được thực
hiện bằng cách duyệt các cây nhị phân nhỏ gọn nhất từng bước một: một xâu s được kết
luận là nonself nếu nó khớp được với một cây nhị phân âm tính hoặc không khớp với tất
cả các cây nhị phân dương tính, và s được kết luận là self trong trường hợp ngược lại.
Từ mô tả của thuật toán PNSA, nó sẽ mất |S|(`− r + 1).r bước để xây dựng ra tất
các các cây cần thiết và trong trường hợp tồi nhất cần (`− r+ 1).r bước để so khớp 1 xâu
và kết luận nó là self hay nonself. Độ phức tạp thời gian này tương đương với độ phức
tạp của các thuật toán NSA (PSA) phổ biến.
Định lý 2.1 (Độ phức tạp bộ nhớ PNSA). Cho một tập self S và một số nguyên `, thủ
8Algorithm 2.1 Thuật toán chọn lọc dương tính-âm tính
1: procedure PNSA(S, `, r, D)
2: for i = 1, ..., `− r + 1 do
3: Create an empty prefix tree Ti
4: for s ∈ S do
5: insert every s[i . . . i+ r − 1] into Ti
6: for internal node n ∈ Ti do
7: if n is root of complete binary subtree then
8: delete this subtree
9: if (number of leaves of Ti) > (number of nodes of Ti that have only one child) then
10: for every internal node ∈ Ti do
11: if it has only one child then
12: if the child is a leaf then
13: delete the child
14: create the other child for it
15: Mark Ti as a negative tree
16: flag = true
17: i = 1
18: while (i ≤ `− r + 1) and (flag = true) do
19: if (Ti is positive tree) and (s
∗ does not match Ti) then
20: flag = false;
21: if (Ti is negative tree) and (s
∗ matches Ti) then
22: flag = false
23: i=i+1
24: if flag = false then
25: output “s∗ is non-self”
26: else
27: output “s∗ is self”
9tục PNSA xây dựng cây bộ dò (cây nhị phân) giảm được nhiều nhất là (`− r+ 1).2r−2 nút
so với cây bộ dò được tạo bởi chỉ một thuật toán PSA hay NSA, r ∈ {2, . . . , `− r + 1}.
2.2 Thử nghiệm
Tiếp theo, chúng tôi thử nghiệm các tác động có thể có của việc giảm độ phức tạp
quản lý bộ dò trong PNSA trên thực tế phát hiện (trung bình) thời gian phức tạp trong
so sánh với NSA (PSA). Bảng 2.1 cho thấy kết quả bộ nhớ lưu trữ và thời gian thực hiện
của PNSA so với NSA trên một số bộ S, ` và r.
Bảng 2.1: So sánh mức độ giảm về thời gian và bộ nhớ.
S ` r Bộ nhớ (%) Thời gian (%)
1000 50 12 0 0
2000 30 15 2.5 5
2000 40 17 25.9 42.7
2000 50 20 36.3 50
Chúng tôi tiến hành một thử nghiệm khác bằng cách chọn ` = 40, |S| = 20,000 (S là
tập các xâu nhị phân được sinh ngẫu nhiên độ dài `) và giá trị r khác nhau (15 đến 40).
Sau đó, `− r + 1 cây được tạo sử dụng NSA và `− r + 1 cây khác được tạo bằng PNSA.
Tiếp theo cả hai tập bộ dò được sử dụng để phát hiện mọi xâu s ∈ S. Thử nghiệm này
được xây dựng trên bộ dữ liệu Netflow. Tỉ lệ các nút được giảm thể hiện ở cột cuối cùng.
Bảng 2.2: So sánh nút giảm trên dữ liệu Netflow.
r NSA PNSA Giảm(%)
5 727 706 2.89
10 33,461 31,609 5.53
15 1,342,517 1,154,427 14.01
20 9,428,132 6,157,766 34.68
25 18,997,102 11,298,739 40.52
30 29,668,240 17,080,784 42.42
35 42,596,987 24,072,401 43.48
40 58,546,497 32,841,794 43.90
45 79,034,135 44,194,012 44.08
10
Chương 3
SINH TẬP BỘ DÒ THU GỌN
3.1 Thuật toán NSA mới
Cho một tập khác rỗng S gồm các xâu self độ dài ` và một số nguyên r ∈ {1, . . . , `−
r + 1}, trong phần này trình bày một thuật toán NSA mới dựa trên luật so khớp rcbvl.
Một số cây tiền tố được sử dụng đầu tiên để tạo ra các bộ dò hoàn hảo từ tập S và sau
đó tập này được sử dụng để phân biệt nếu một mẫu mới là self hoặc non-self. Thuật toán
2 đã tóm tắt bước đầu tiên của thuật toán NSA. Từ mô tả của thuật toán cho thấy cần
|S|.(`− r + 1).r bước để tạo (`− r + 1) cây tiền tố và |D|.(`− r + 1).2r bước để tạo tập bộ
dò D.
Ví dụ 3.1. Cho ` = 5, r = 3 và tập self S = {s1 = 010101, s2 = 111010, s3 = 101101, s4
= 100011, s5 = 010111}. Từ các bước trong thuật toán 2 xây dựng một tập bộ dò đầy
đủ (0001,1,2), (00100,1,4), (100,4,4), (011110,1,4), (11000,1,3) như sau:
Bước đầu tập D được tạo như sau: (00,1,1), (011,1,1), (110,1,1). Sau mỗi bước lặp (dòng
13-29) tính lại tập D và D1 như sau: Vòng lặp i=2: D = {(0001,1,2); (0010,1,2); (0111,1,2);
(1100,1,2)} và D1 = ∅. Vòng lặp i=3: D = {(00100,1,3); (01111,1,3); (11000,1,3)} và D1
= {(0001,1,2)}. Vòng lặp i=4: D = {(00100,1,4); (011110,1,4)} và D1 = {(0001,1,2);
(11000,1,3); (100,4,4)}. Và bước cuối cùng D = D
⋃
D1 trong dòng 30, cuối cùng tập bộ
dò đầy đủ là {(0001,1,2), (00100,1,4), (100,4,4), (011110,1,4), (11000,1,3)}
Để phát hiện mỗi xâu s là self hay nonself, chúng tôi chỉ đơn giản là kiểm tra quá
trình khớp theo luận rcbvl giữa xâu s với mỗi bộ dò trong tập D. Nếu khớp thì s là nonself,
ngược lại thì s được kết luận là self.
11
Algorithm 3.1 Thuật toán sinh tập bộ dò rcbvl
1: procedure GenerationDetectors(S, `, r, D)
2: for i = 1, ..., `− r + 1 do Create an empty prefix tree Ti
3: for all s ∈ S do
4: for i = 1, ..., `− r + 1 do
5: insert every s[i . . . i+ r − 1] into Ti
6: for i = 1, ..., `− r + 1 do
7: for all non-leaf node n ∈ Ti and all σ ∈ Σ do
8: if no edge with label σ starts at n then
9: create a new leaf n′ and an edge (n, n′) labeled with σ.
10: delete every node n ∈ Ti from which none of the newly created leaves is reachable.
11: D1 = ∅
12: D = { (s, 1, 1)|s ∈ T1 }
13: for i = 2, ..., `− r + 1 do
14: D2 = ∅
15: for all (s, k, j) ∈ D do
16: if there exists a s′ ∈ Ti where s[i− k + 1...|s|] is prefix of it then
17: D2 = D2
⋃{(s+ s′[|s| − j + k...|s′|], k, i)}
18: delete every node n ∈ Ti from which only nodes in the s′ is reachable
19: for all s′ ∈ Ti where s[i− k + 1...|s|] is prefix of it do
20: if |s| − i+ k < r then
21: D2 = D2
⋃{(s[|s|] + s′, i− 1, i)}
22: else
23: D2 = D2
⋃{(s′, i, i)}
24: delete every node n ∈ Ti from which only nodes in the s′ is reachable
25: else
26: D1 = D1
⋃{(s, k, j)}
27: for all s′ ∈ Ti do
28: D2 = D2
⋃{(s′, i, i)}
29: D = D2
30: D = D
⋃
D1
12
3.2 Thử nghiệm
CSDL NetFlow được sử dụng trong thử nghiệm 1, trong đó một bộ dữ liệu ngẫu
nhiên được sử dụng trong thử nghiệm 2. Dữ liệu NetFlow được chuyển sang xâu nhị phân
thông qua hai bước. Bước một là ánh xạ mỗi thuộc tính sang dạng nhị phân. Sau bước
này, tất cả các thuộc tính dạng xâu được xây dựng cho dữ liệu cả loại bình thường và
bất thường. Bước 2 là nối các thuộc tính này lại. Sau bước này, tập dữ liệu chứa các xâu
nhị phân có độ dài 49. Quá trình phân chia tập dữ liệu huấn luyện và kiểm tra cũng như
giá trị r, ` cho 4 thử nghiệm được mô tả như trong bảng 3.1.
Bảng 3.1: Phân bố của dữ liệu, tham số cho thử nghiệm cùng các kết quả.
` r Huấn luyện Kiểm tra
Kích thước (bit) Thời gian (phút)
r-chunk rcbvl r-chunk rcbvl
Case 1
49 10 119,571 10,000 206,810 42,704 1 0.2
49 8 79,571 50,000 31,672 8,096 0.8 0.18
Case 2
30 12 25,000 25,000 367,092 79,222 4.1 0.75
30 14 40,000 10,000 2,324,056 392,815 8.65 1.4
Kết quả trong bảng 3.1 cho thấy thuật toán chúng tôi đề xuất giảm cả về kích thước
của tập bộ dò và thời gian phân lớp dữ liệu so sánh với thuật toán tốt nhất đã công bố.
13
Chương 4
THUẬT TOÁN CHỌN LỌC NHANH
4.1 Thuật toán chọn lọc âm tính nhanh dựa trên bộ dò loại r-chunk
Bảng 4.1 trình bày kết quả so sánh thu giữa thuật toán đề xuất với các thuật toán
dựa trên bộ dò loại r-chunk đã công bố về mặt thời gian. Mọi thử nghiệm được tiến hành
trên dữ liệu nhị phân. Tham số K = min{|S[i..i + r − 1]|, i = 1, . . . , ` − r + 1}. Tham số
|D|, số lượng bộ dò mong muốn, chỉ thích hợp với các thuật toán sinh bộ dò tường minh.
Thuật toán của chúng tôi và thuật toán đưa ra bởi Textor đạt được kết quả tương ứng
với trường hợp sinh lượng bộ dò tối đa. Chúng tôi đề xuất thuật toán NSA cho phép cải
thiện hiệu xuất đáng kể trong giai đoạn huấn luyện so với thuật toán hiệu quả đưa ra bởi
Textor.
Chúng tôi sử dụng các kí hiệu sau: Một mảng Q, với Q[s][c] là một con trỏ được sử
dụng để tạo nút mới trong cây, s ∈ Σr−1, và c ∈ Σ; Một mảng P với P[i] là một cấu trúc
gồm hai trường, 1 con trỏ P[i].end và 1 xâu P[i].str ∈ Σr−1.
Bảng 4.1: So sánh thời gian chạy của các thuật toán đề xuất với các thuật toán đã công bố.
Luật so khớp Thuật toán Huấn luyện Phát hiện
r-chunk
Stibor et al. (2004) (2r + |S|)(`− r + 1) |D|`
Elberfeld, Textor (2009) r2|S|(`− r) |S|`2r
Elberfeld, Textor (2011) |S|`r `
Luận án này |S|` `
r-contiguous
D’haeseleer et al. (1996) (linear) (2r + |S|)(`− r) |D|`
D’haeseleer et al. (1996) (greedy) 2r|S|(`− r) |D|`
Wierzchon´ (2000) 2r(|D|(`− r) + |S|) |D|`
Elberfeld, Textor 2009) |S|3`3r3 |S|2`3r3
Elberfeld, Textor (2011) |S|`r `
Luận án này |S|`+ (2r −K).`) `r
Ví dụ 4.1. Đặt ` = 5, r = 3. Tập self S gồm 7 xâu như sau S = {s1 = 01111, s2 = 00111,
14
Algorithm 4.1 Thuật toán sinh tập bộ dò dương tính r-chunk
1: procedure GenerationPositiveDetectors(S, `, r, G)
2: Construct T1, P and Q initially
3: for i = r + 1, ..., ` do
4: for j = 1, ..., n do
5: if Q[P [j].str][sj[i]] = NULL then
6: Q[P [j].str][sj[i] = new() . create new end node pointed by Q[P [j].str][sj[i]
7: for j = 1, ..., n do
8: p = P [j].end . p and P [j].end point to the same end node of the tree
9: for c ∈ σ do
10: if (Q[P [j].str][c]! = NULL)&&(edge starts from p with label c does not exist)
then
11: Create the edge starts from p with label c
12: P[j].end=the end note of the edge starts from p with label sj[i]
13: for j = 1, ..., n do
14: for c ∈ Σ do
15: Q[P [j].str][c] = NULL
16: P [j].str = P [j].str[2...r − 1] + sj[i]
s3 = 10000, s4 = 10001, s5 = 10010, s6 = 10110, s7 = 11111}
Algorithm 4.2 Thuật toán sinh tập bộ dò âm tính r-chunk
1: procedure GenerationNegativeDetectors(S, `, r, G)
2: GenerationPositiveDetectors(S, `, r, G) . create an acyclic directed graph G on
prefix trees
3: Create a special node . this node is considered an accept state in corresponding
automaton
4: for every node n ∈ G do
5: if n is a root of a complete sub tree then
6: delete the tree root n, except for n
7: else
8: create new edge from n to the special node
Thuật toán 4.3 là tóm tắt thuật toán đề xuất Chunk-NSA. Trong thuật toán này,
chúng tôi sử dụng một tập self S, một số nguyên r ∈ {1, . . . , ` − r + 1}, mỗi xâu s∗ được
phát hiện bởi một mô hình tiền tố DAG G. Chunk-NSA sẽ phát hiện s∗ là self hay nonself.
Định lý 4.1. Cho S ⊆ Σ` và r ∈ {1, . . . , `}, thuật toán Chunk-NSA xây dựng cây tiền tố
DAG G với L(G) ⊆ S trong thời gian O(|S|.`.|Σ|) và kiểm tra s∗ ∈ L(G) trong thời gian
O(`).
4.2 Thuật toán chọn lọc âm tính nhanh dựa trên bộ dò loại r-contiguous
15
Algorithm 4.3 Thuật toán chọn lọc âm tính nhanh
1: procedure Chunk-NSA(s∗, S, `, r, G)
2: GenerationNegativeDetectors(S, `, r, G) . create an acyclic directed graph G
presenting a NSA
3: if s∗ ∈ L(G) then
4: output ”s∗ is self”
5: else
6: output ”s∗ is nonself”
Hai mảng P và Q được sử dụng với ý nghĩa tương tự như trong phần trước. Ngoài
ra, chúng tôi sử dụng hai tập hợp con trỏ P1 và P2 cho bộ dò r- chunk. Chúng sẽ hoán
đổi vai trò lẫn nhau ở cuối mỗi bước lặp.
Định lý 4.2. Tồn tại một thuật toán mà cho trước tập S ⊆ Σ` và r ∈ {1, . . . , `}, xây dựng
otomat hữu hạn M với L(M) ∩ Σ` = CONT (S, r) trong thời gian O(|S|.`.|Σ|+ (Σr −K).`),
với K= min{|S[i..i+ r − 1]|, i = 1, . . . , `− r + 1}.
4.3 Thử nghiệm
Tôi tôi sử dụng cơ sở dữ liệu NetFlow và một bộ dữ liệu ngẫu nhiên để dùng trong thử
nghiệm 1 và thử nghiệm 2 tương ứng. Trong Bảng 4.2, thời gian chạy của NSA đề xuất
bởi Textor (2011) trong thử nghiệm 1 và thử nghiệm 2 tương ứng trong các cột b và d.
Thời gian chạy của thuật toán đề xuất Chunk-NSA trong thử nghiệm 1 và thử nghiệm 2
tương ứng trong cột c và e. Kết quả thời gian huấn luyện cho thấy thuật toán đề xuất có
thời gian huấn luyện gần như không phụ thuộc vào giá trị ngưỡng so khớp r. Ngoài ra, tỉ
lệ thời gian so khớp giữa thuật toán của Textor và thuật toán đề xuất tăng dần và tiệm
cận với r.
16
Algorithm 4.4 Thuật toán sinh tập bộ dò loại r-contiguous
1: procedure Cont-NSA(S, r, G)
Input: A set of self strings S ⊆ Σ`, a matching threshold r ∈ {1, . . . , `}.
Output: An automaton G presenting negative r-contiguous detectors set.
2: G = P1 = ∅
3: for s ∈ Σr \ S[1 . . . r] do
4: insert s into G and create p.end that points to the leaf node in path s
5: p.str = s[2 . . . r]
6: P1 = P1 ∪ {p}
7: for i = r + 1, ..., ` do
8: for j = 1, ..., |S| do
9: if Q[P [j].str][sj[i]] = NULL then
10: Q[P [j].str][sj[i]] = new()
11: P2 = ∅
12: for each p ∈ P1 do
13: for c ∈ Σ do
14: if (Q[p.str][c] = NULL) then
15: Q[p.str][c] = new()
16: p.str = p.str[2...r − 1] + c
17: p.end = Q[p.str][c]
18: P2 = P2 ∪ {p}
19: else
20: if Q[p.str][c] is newly created in this inner for loop then
21: p.str = p.str[2...r − 1] + c
22: p.end = Q[p.str][c]
23: P2 = P2 ∪ {p}
24: for j = 1, ..., |S| do
25: Q[P [j].str][sj[i]] = NULL
26: P [j].str = P [j].str[2...r − 1] + sj[i]
27: for each p ∈ P1 do
28: for c ∈ Σ do
29: Q[p.str][c] = NULL
30: P1 = P2
31: for each node n ∈ G do
32: if n is not reachable to a leaf node ∈ P1 then
33: delete n
34: turn G into an automaton
17
Bảng 4.2: So sánh Chunk-NSA với NSA bởi Textor.
r Thử nghiệm 1 Thử nghiệm 2
a b c b/c d e d/e
10 1330 454 2.9 1490 482 3.1
11 1395 439 3.2 1633 472 3.5
12 1564 454 3.4 637 360 4.5
13 1767 435 4.1 2134 453 4.7
14 1771 418 4.2 2276 451 5.0
15 2092 486 4.3 2793 450 6.2
16 1985 437 4.5 3086 365 8.5
17 2071 391 5.3 4079 427 9.6
18 2249 410 5.5 4509 422 10.7
19 2345 375 6.3 5312 470 11.3
20 2859 359 7.0 6796 437 15.6
18
Chương 5
HỆ MIỄN DỊCH NHÂN TẠO LAI
CHO AN NINH MẠNG
5.1 Thuật toán lai chọn lọc dương tính bộ dò r-chunk
Cho trước `, r, và tập dữ liệu bình thường N ⊂ Σ`, tập dữ liệu bất thường A ⊂ Σ`.
Thuật toán 5.1 và 5.3 tạo ra các cây self và cây nonself tương ứng. Một đối tượng dữ liệu
mới s ∈ Σ` được phát hiện là self hay nonself bởi thuật toán 5.3..
Algorithm 5.1 Thuật toán sinh các cây self
1: procedure SelfTreesGeneration(N , `, r)
2: for i = 1, ..., ` do
3: Create an empty tree TNi
4: for all s ∈ Nr do
5: for i = 1, ..., ` do
6: insert every s[i . . . i+ r − 1] into TNi
Algorithm 5.2 Thuật toán sinh các cây nonself
1: procedure NonselfTreesGeneration(A, `, r)
2: for i = 1, ..., ` do
3: Create an empty tree TAi
4: for all s ∈ Ar do
5: for i = 1, ..., ` do
6: insert every s[i . . . i+ r − 1] into TAi
Trong thuật toán 5.3, Leaf(s, T ) là hàm trả về tần suất tương ứng với xâu s ∈ Σr,
giá trị này nằm ở lá của cây trên đường đi s. Các tham số d1 và d2 tương ứng tính tổng
tần suất của s trong cây self N và trong cây nonself A. Bốn tham số t1, t2, t3, t4 được sử
dụng trong thuật toán PSA2 nhằm điều chỉnh hiệu suất phát hiện.
19
Algorithm 5.3 Thuật toán PSA2 phát hiện s ∈ Σ` là self hay nonself
1: procedure Detection(N , A, s, `, r)
2: SelfTreesGeneration(N , `, r)
3: NonselfTreesGeneration(A, `, r)
4: d1 = d2 = d3 = 0
5: Create a string sr as ring representation of s
6: for i = 1, ..., ` do
7: s′ = sr[i . . . i+ r − 1]
8: if s′ /∈ TNi then
9: d1 = d1 + 1
10: if s′ /∈ TAi then
11: d2 = d2 + 1
12: if Leaf(s′, TNi) < Leaf(s
′, TAi).t1 then
13: d3 = d3 + 1
14: if d1 > t2 then output s is nonself
15: else if d2 > t3 then output s is self
16: else if d3.t4 > ` then output s is nonself
17: else output s is self
5.2 Thử nghiệm
5.2.1 Cơ sở dữ liệu
Chúng tôi sử dụng hai bộ dữ liệu thử nghiệm là NetFlow và TU. Tương tự như các công
bố trước, chúng tôi sử dụng 4 đặc trưng của NetFlow cho thử nghiệm 1, 5, 6, và 7; 7 đặc
đặc trưng của NetFlow cho thử nghiệm 2 và 3; 4 đặc trưng của UT cho thử nghiệm 4.
Bảng 5.1: Các đặc trưng cho NIDS.
Thử nghiệm Cơ sở dữ liệu Đặc trưng
1 NetFlow Packets, Octets, Duration, Flags
2, 3 NetFlow Packets, Octets, Duration, Scr_port,
Dst_port, Flags, IP protocol
4 UT Packets, Octets, Duration, Flags
5, 6, 7 NetFlow Packets, Octets, Duration, Flags
5.2.2 Tiền xử lý dữ liệu
Phương pháp tiền xử lý cho các tính năng của tập dữ liệu huấn luyện bao gồm hai bước.
Bước đầu tiên là chuyển đổi tất cả các thuộc tính thành chuỗi nhị phân. Sau bước này,
tất cả các thuộc tính của cả dữ liệu bình thường và bất thường đều ở dạng nhị phân.
Bước thứ hai là để ghép những các chuỗi nhị phân biểu diễn các thuộc tính lại với nhau.
Sau bước này, tập dữ liệu huấn luyện chứa các xâu nhị phân độ dài như nhau. Trong giai
đoạn phát hiện, mỗi thuộc tính trong dữ liệu cần phát hiện sẽ được chuyển đổi thành
20
một chuỗi nhị phân sử dụng ánh xạ của dữ liệu huấn luyện. Nếu một giá trị thuộc tính
không có trong phạm vi tương ứng với miền giá trị của dữ liệu huấn luyện, thì dạng biểu
diễn nhị phân của nó sẽ được chọn ngẫu nhiên.
Ví dụ 5.1. Cho tập dữ liệu huấn luyện gồm các flow hai thuộc tính là S = {N,A}, với
N = {n1 = (1; 8);n2 = (0.5; 6)} và A = {a1 = (1; 9); a2 = (1; 6), a3 = (0.5; 9)}. Phạm vi của
thuộc tính đầu tiên và thứ hai tương ứng là {0.5; 1} và {6; 8;9}. Do đó, chúng ta sử dụng
một bit (hai bit) để mã hóa thuộc tính đầu tiên (thứ hai). Một ánh xạ các dãy số {0.5;1}
và {6; 8; 9} được chuyển đổi tương ứng thành xâu nhị phân {0; 1} và {00; 01; 10}. Cuối
cùng, tập huấn luyện chứa các xâu có độ dài 3. S = {N,A}, với N = {n1 = 101;n2 = 000}
và A = {a1 = 110; a2 = 100, a3 = 010}.
Giả sử một flow s = (2; 8) là một bộ dữ liệu test. Thuộc tính thứ nhất (2 /∈ {0.5; 1})
được mã hóa một cách ngẫu nhiên một trong hai giá trị 0 hoặc 1. Trong khi đó, thuộc
tính thứ hai (8 ∈ {6; 8; 9}) nên được mã hóa thành 01. Cuối cùng, dạng nhị phâ
Các file đính kèm theo tài liệu này:
- tom_tat_luan_an_cai_tien_mot_so_thuat_toan_trong_mien_dich_n.pdf