Tải bản đầy đủ (.pdf) (26 trang)

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 tt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (457.26 KB, 26 trang )

BỘ GIÁO DỤC VÀ ĐÀO TẠO

VIỆN HÀN LÂM KHOA HỌC
VÀ CÔNG NGHỆ VIỆT NAM

HỌC VIỆN KHOA HỌC VÀ CÔNG NGHỆ

……..….***…………

NGUYỄN VĂN TRƯỜNG

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

Chuyên ngành: Cơ sở Toán học cho Tin học
Mã số: 62 46 01 10

TÓM TẮT LUẬN ÁN TIẾN SĨ TOÁN HỌC

Hà Nội – 2019


Công trình được hoàn thành tại: Học viện Khoa học và Công nghệ Viện Hàn lâm Khoa học và Công nghệ Việt Nam

Người hướng dẫn khoa học 1: PGS. TS Nguyễn Xuân Hoài
Người hướng dẫn khoa học 2: PGS. TS Lương Chi Mai

Phản biện 1: …
Phản biện 2: …
Phản biện 3: ….


Luận án sẽ được bảo vệ trước Hội đồng chấm luận án tiến sĩ, họp tại Học
viện Khoa học và Công nghệ - Viện Hàn lâm Khoa học và Công nghệ
Việt Nam vào hồi … giờ ..’, ngày … tháng … năm 201….

Có thể tìm hiểu luận án tại:
- Thư viện Học viện Khoa học và Công nghệ
- Thư viện Quốc gia Việt Nam


1

MỞ ĐẦU
Tính cấp thiết của luận án
Mạng máy tính phải đối mặt với rất nhiều tấn công. Để đảm bảo an toàn, cần
thiết phải có hệ thống kiểm soát an ninh, chẳng hạn như hệ thống phát hiện xâm nhập
(Intrusion Detection Systems, IDS). Tuy vậy, việc phát hiện xâm nhập lại phải đối phó
với rất nhiều vấn đề như lưu lượng mạng lớn, phân bố dữ liệu không cân bằng, khó nhận
biết ranh giới giữa hành vi bình thường và hành vi bất thường, và yêu cầu thích nghi
thường xuyên với môi trường thay đổi. Hệ quả là các nhà nghiên cứu đã nỗ lực sử dụng
nhiều phương pháp khác nhau để xây dựng các hệ IDS tin cậy.
Một trong những phương pháp dựa trên trí tuệ tính toán cho phát hiện xâm nhập
nổi trội gần đây là hệ miễn dịch nhân tạo (AIS), có nguồn gốc từ hệ miễn dịch sinh học.
Thuật toán chọn lọc âm tính (NSA) của AIS, được sử dụng nhiều trong các IDSs.
Dù cho đã có những ứng dụng thành công, nhưng NSA có một vài điểm yếu: 1-Tỉ lệ lỗi
dương tính và lỗi âm tính còn cao, 2-Thời gian huấn luyện và kiểm tra còn cao, 3-Có mối
quan hệ theo hàm mũ giữa kích thước dữ liệu huấn luyện và số lượng bộ dò có thể được
sinh ra cho kiểm tra, 4- Khó phân biệt được hai khái niệm “dữ liệu bình thường” với “dữ
liệu bất thường” trong môi trường mạng. Để giải quyết được những hạn chế ấy, các xu
hướng nghiên cứu gần đây tập trung theo hướng giải quyết vấn đề cấu trúc phức tạp của
bộ dò miễn dịch, phương pháp so khớp và các hệ AIS lai.


Mục đích nghiên cứu
Do việc biểu diễn dữ liệu là một nhân tố quan trọng ảnh hưởng đến thời gian huấn
luyện và kiểm tra, nên đề tài luận án hướng đến sinh tập bộ dò đầy đủ và thu gọn.
Luận án nghiên cứu các thuật toán tối ưu để sinh bộ dò theo nghĩa tốc độ thực hiện
nhanh cả về huấn luyện và kiểm tra.
Nghiên cứu và đề xuất mô hình hệ phát hiện xâm nhập mạng dựa trên hệ miễn dịch
nhân tạo để phát hiện tấn công, cả loại đã biết và chưa biết. Hệ thống được xây dựng
này có sử dụng hệ miễn dịch nhân tạo kết hợp với thống kê dựa trên dữ liệu định dạng
flow.

Mô tả bài toán
Luận án tập trung nghiên cứu ba bài toán: Bài toán 1: Tìm dạng biểu diễn thu gọn


2

cho dữ liệu nhằm không chỉ cực tiểu hóa bộ nhớ lưu trữ dữ liệu mà còn giảm thời gian
phát hiện. Bài toán 2: Đề xuất thuật toán giảm thời gian huấn luyện so với các công trình
đã công bố. Bài toán 3: Cải tiến hiệu suất phát hiện theo hướng giảm lỗi cảnh báo sai
trong khi vẫn giữ được tỉ lệ phát hiện và độ chính xác cao nhất có thể.
Vấn đế tìm ra một thuật toán tối ưu có thể vừa giảm được độ phức tạp thời gian,
bộ nhớ vừa có hiệu suất phát hiện tốt nhất là không khả thi. Những khía cạnh đó luôn
mâu thuẫn với nhau. Do vậy, trong mỗi chương chúng tôi chỉ tập trung giải quyết một
bài toán tương đối độc lập.
Bài toán phát hiện xâm nhập trong luận án có thể được phát biểu không hình thức
như sau: Cho trước tập hữu hạn các luồng mạng S có gắn nhãn là self (bình thường) hay
nonself (bất thường). Mục tiêu là xây dựng mô hình phân lớp trên S có khả năng phân
lớp một luồng không gắn nhãn s.


Tổng quan về luận án
Chương đầu tiên giới thiệu kiến thức nền tảng cần thiết cho các giải thuật sẽ được
trình bày ở các chương kế tiếp.
Chương 2 trình bày về kết hợp thuật toán chọn lọc. Kỹ thuật đưa ra nhằm giảm bộ
nhớ lưu trữ các bộ dò trong giai đoạn huấn luyện. Do bộ nhớ này giảm, nên hệ quả tất
yếu là thời gian kiểm tra cũng giảm đi. Cấu trúc cây được sử dụng để cải thiện độ phức
tạp thời gian và bộ nhớ.
Tập bộ dò đầy đủ và không dư thừa là cần thiết để đạt được khả năng bao phủ chấp
nhận được của bộ phân lớp cho seft và nonself. Một thuật toán sinh tập bộ dò như vậy
được đề xuất trong chương 3.
Chương 4 bao gồm hai thuật toán chọn lọc cho huấn luyện nhanh. Các thuật toán
tối ưu có thể sinh tập bộ dò trong thời gian tuyến tính với kích thước dữ liệu huấn luyện.
Về mặt thời gian phát hiện, thuật toán thứ nhất và thuật toán thứ hai có độ phức tạp
lần lượt là tuyến tính và đa thức.
Chương 5 giới thiệu về một cách tiếp cận lai của thuật toán chọn lọc với thống kê.
Tần suất của dữ liệu seft và nonself được lưu trong lá của cấu trúc cây biểu diễn bộ dò.
Phương pháp này đóng vai trò quan trọng trong cải tiến hiệu suất của thuật toán. Cách
tiếp cận lai này có thể được coi như kỹ thuật phân loại hai lớp được huấn luyện dựa trên
dữ liệu thuộc cả hai loại là seft và nonself.


3

Chương 1
KIẾN THỨC CHUẨN BỊ
1.1 Hệ miễn dịch người
Hệ miễn dịch con người là một kiến trúc bảo vệ nhiều tầng, bao gồm tầng vật lý, tầng
sinh lý và hệ miễn dịch (thích nghi và bẩm sinh). Hệ miễn dịch thích nghi có khả năng
nhận diện các tác nhân gây bệnh, và ghi nhớ chúng để tăng khả năng phản hồi về sau.
Nó chính là nguồn gốc ý tưởng của hệ miễn dịch nhân tạo.


1.2 Các thuật toán chọn lọc
Cách tiếp cận chọn lọc âm tính dựa trên phân biệt giữa self và nonself trong các hệ thống
sinh học. Tính chất này của chọn lọc âm tính được các nhà nghiên cứu về an ninh máy
tính và an ninh mạng quan tâm. Một khảo sát trong sáu năm 2008-2013 cho thấy thuật
toán chọn lọc âm tính (NSA) phổ biến hơn các cách tiếp cận khác của AIS về số lượng
bài đăng tải trong lĩnh vực an ninh mạng và phát hiện bất thường.

1.2.1 Thuật toán chọn lọc âm tính
NSA cổ điển gồm hai giai đoạn: sinh tập bộ dò và phát hiện. Trong giai đoạn sinh tập
bộ dò, các ứng cử 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


4

thự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


5
d ∈ Σ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(CHU N Kp (S, r)) = L(CHU N K(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.


6

1.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.


7

Chươ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ủ


8

Algorithm 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:
f lag = true
17:
i=1
18:
while (i ≤ − r + 1) and (f lag = true) do
19:
if (Ti is positive tree) and (s∗ does not match Ti ) then
20:
f lag = false;
21:
if (Ti is negative tree) and (s∗ matches Ti ) then
22:
f lag = false
23:
i=i+1
24:
if f lag = false then
25:

output “s∗ is non-self”
26:
else
27:
output “s∗ is self”


9

tụ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
1000
2000
2000
2000


50
30
40
50

r Bộ nhớ (%) Thời gian (%)
12
0
0
15
2.5
5
17
25.9
42.7
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
5
10
15
20

25
30
35
40
45

NSA
727
33,461
1,342,517
9,428,132
18,997,102
29,668,240
42,596,987
58,546,497
79,034,135

PNSA
Giảm(%)
706
2.89
31,609
5.53
1,154,427
14.01
6,157,766
34.68
11,298,739
40.52
17,080,784

42.42
24,072,401
43.48
32,841,794
43.90
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

49 10
49 8

119,571
79,571

10,000
50,000

30 12
30 14

25,000
40,000

25,000
10,000


Kích thước (bit)
Thời gian
r-chunk
rcbvl
r-chunk
Case 1
206,810
42,704
1
31,672
8,096
0.8
Case 2
367,092
79,222
4.1
2,324,056 392,815
8.65

(phút)
rcbvl
0.2
0.18
0.75
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
r-chunk

r-contiguous

Thuật toán
Huấn luyện
Stibor et al. (2004)
(2r + |S|)( − r + 1)
Elberfeld, Textor (2009)
r2 |S|( − r)
Elberfeld, Textor (2011)

|S| r
Luận án này
|S|
r
D’haeseleer et al. (1996) (linear)
(2 + |S|)( − r)
D’haeseleer et al. (1996) (greedy)
2r |S|( − r)
r
Wierzcho´
n (2000)
2 (|D|( − r) + |S|)
Elberfeld, Textor 2009)
|S|3 3 r3
Elberfeld, Textor (2011)
|S| r
Luận án này
|S| + (2r − K). )

Phát hiện
|D|
|S| 2 r

|D|
|D|
|D|
|S|2 3 r3
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]] = N U LL 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]! = N U LL)&&(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] = N U LL
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)
presenting a NSA
3:
if s∗ ∈ L(G) then
4:
output ”s∗ is self”
5:
else
6:
output ”s∗ is nonself”

create an acyclic directed graph G

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 ) ∩ Σ = CON T (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]] = N U LL 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] = N U LL) 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]] = N U LL
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] = N U LL
30:
P 1 = 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:
r
a
10
11
12
13
14
15
16
17
18
19
20

So sánh Chunk-NSA với NSA bởi Textor.
Thử nghiệm 1 Thử nghiệm 2
b
c
b/c
d
e
d/e
1330 454 2.9 1490 482 3.1
1395 439 3.2 1633 472 3.5
1564 454 3.4 637 360 4.5
1767 435 4.1 2134 453 4.7

1771 418 4.2 2276 451 5.0
2092 486 4.3 2793 450 6.2
1985 437 4.5 3086 365 8.5
2071 391 5.3 4079 427 9.6
2249 410 5.5 4509 422 10.7
2345 375 6.3 5312 470 11.3
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
1
2, 3

Cơ sở dữ liệu
NetFlow
NetFlow

4
5, 6, 7

UT
NetFlow

Đặc trưng
Packets, Octets, Duration, Flags
Packets, Octets, Duration, Scr_port,
Dst_port, Flags, IP protocol
Packets, Octets, Duration, Flags
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ân của xâu
s là 001 hoặc 101.

5.2.3 Mêtric hiệu suất
Phân phối các giá trị tham số và số lượng các flow cho các thử nghiệm được trình bày ở
Bảng 5.2.
Bảng
Thử nghiệm
1

2

3

4
5
6
7

5.2: Phân phối các giá trị tham số và các flow cho thử nghiệm.
Flow bình thường
Flow tấn công
r t1 t2 t3 t4
105,033
24,538
49 10 5 7 8 9
59,980 cho huấn 5,952 cho huấn 65 10 7 9 14 7
luyện, 45,053 cho luyện, 18,586 cho
phát hiện
phát hiện
59,980 cho huấn 5,952 cho huấn 53 9 7 12 16 8
luyện, 45,053 cho luyện, 18,586 cho
phát hiện
phát hiện
5,968
10,000
41 10 3 7 6 10
70,022 for training, 16,359 for training, 49 14 3 37 11 4
35,011 for testing
8,179 for testing

52,516 for training, 12,269 for training, 48 12 4 19 7 5
52,517 for testing
12,269 for testing
35,011 for training, 8,179 for training, 46 11 2 30 8 3
70,022 for testing
16,359 for testing

Chúng tôi sử dụng kỹ thuật 10-fold cross-validation để đánh giá cách tiếp cận trong
thử nghiệm 1 và 4. Trong các thử nghiệm 2, 3 và 5-7, thì chúng tôi sử dụng phương pháp


21

hold-out validation.

5.2.4 Hiệu suất
Bảng 5.3 minh họa kết quả cho các thử nghiệm. Chúng tôi so sánh hiệu suất của PSA2
với một số thuật toán khác công bố gần đây và với một vài thuật toán khác trong công
cụ WEKA (phiên bản 3.6).
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ể khẳng đị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.


22

Bảng 5.3: So sánh thuật toán đề xuât PSA2 và các thuật toán khác.
Thuật toán

ACC

DR

FAR

0.9879
0.9682
0.9273
0.9344
0.9468
0.9614
0.6777
0.9943
0.9941

0.9977
0.9992
0.9992
0.9975

0.9974
0.9974
0.9975
0.9976
0.9977

0.0146
0.0514
0.1223
0.1071
0.0839
0.0871
0.5116
0.0064
0.0067

0.9896
0.9812
0.9796
0.9763
0.9672
0.9655
0.9309
0.7596

0.9676
0.9645
0.9622
0.9564
0.9369


Thử nghiệm 1
PSA2
BBNN
SVM (linear)
SVM (polynomial)
SVM (RBF)
SVM (sigmoid)
Naive Bayes
Random Forest
Random Tree
Thử nghiệm 2
PSA2
PSOGSA-based MLP
Cuckoo-based MLP
GSA-based MLP
PSO-based MLP
EBP-based MLP
Random Forest
Random Tree

0.0013
0.0119
0.0133
0.0155
0.0203
0.0315
0.7634
0
0.1771 0.0001


Thử nghiệm 3
PSA2 (10% labelled data)
S4VM (10% labelled, 90% unlabelled data)
Random Forest (10% labelled data)
Random Tree (10% labelled data)
Thử nghiệm 4
PSA2
Naive Bayes
SVM (linear)
SVM (polynomial)
SVM (RBF)
SVM (sigmoid)
Random Forest
Random Tree
Thử nghiệm 5
PSA2
Random Forest
Thử nghiệm 6
PSA2
Random Forest
Thử nghiệm 7
PSA2
Random Forest

0.9781 0.9626 0.0157
0.9196
0.0384
0.7157 0.0421 0.0063
0.7151 0.0400 0.0065

0.9757
0.6832
0.7315
0.7143
0.6263
0.6263
0.9777
0.9766

0.9634
0.9972
1.0000
0.8788
1.0000
1.0000
0.9675
0.9664

0.0035
0.8668
0.7185
0.5613
0.9998
1.0000
0.0052
0.0062

0.9845 0.9979 0.0186
0.9818 0.9997 0.0868
0.9961 0.9915 0.0028

0.9870 0.9998 0.0636
0.9847 0.9979 0.0183
0.9901 0.9999 0.0490


23

KẾT LUẬN
Đóng góp của luận án
1. Đề xuất dạng biểu diễn vòng tròn, thay vì tuyến tính, cho dữ liệu và bộ dò nhằm
đạt hiệu quả phát hiện tốt hơn.
2. Đề xuất thuật toán PNSA kết hợp hai phương pháp chọn lọc âm tính và dương tính.
Thuật toán đã được thử nghiệm và chứng minh tính đúng đắn.
3. Đề xuất thuật toán sinh tập bộ dò tối ưu (đầy đủ, không dư thừa) rời rạc.
4. Đề xuất thuật toán Chunk-NSA cải tiến của NSA cho thời gian huấn luyện tuyến
tính với dữ liệu đầu vào.
5. Đề xuất thuật toán PSA2 cải tiến PSA dùng hai nhãn dữ liệu và kỹ thuận thống kê
đơn giản.

Hướng phát triển
Tác giả cho rằng việc kết hợp các thuật toán đề xuất với phương pháp học máy khác
sẽ mang lại hiệu quả phát hiện tốt hơn. Nghiên cứu phương pháp tối ưu các tham số, lựa
chọn hàm mục tiêu phù hợp cũng là những ý tưởng hay. Ngoài ra, cải tiến các thuật toán
đã đề xuất để có thể áp dụng được trên các tập dữ liệu tấn công mạng khác cũng là một
hướng nghiên cứu trong tương lai.

Danh mục các công trình đã công bố
A1. N. V. Truong and P. D. Lam, “Improving negative selection algorithm in artificial
immune systems for computer virus detection,” Journal of Science and Technology,
Thai Nguyen University, 72(06):53–58, 2010.

A2. N. V. Truong, V. D. Quang and T. V. Ha, “A fast r-chunk detector-based negative selection algorithm,” Journal of Science and Technology, Thai Nguyen University,90(02):55–
58, 2012.
A3. N. V. Truong and T. V. Ha, “Another look at r-chunk detector-based negative selection
algorithm,” Journal of Science and Technology, Thai Nguyen University, 102(02):45–
50, 2013.


×