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

tóm tắt luận án tiến sĩ NGHIÊN CỨU MỘT SỐ KỸ THUẬT phát hiên giả mạo trên wep

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 (1.46 MB, 26 trang )

1
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN
_______________________


Lê Đăng Nguyên


NGHIÊN CỨU MỘT SỐ KỸ THUẬT
PHÁT HIỆN GIẢ MẠO TRÊN WEB

Chuyªn ngµnh : Cơ sở toán học cho Tin học
M· sè: 62 46 01 10


DỰ THẢO TÓM TẮT LUẬN ÁN TIẾN SĨ TOÁN HỌC






Hà Nội - 2014









2
Công trình được hoàn thành tại Khoa Toán – Cơ – Tin học, Trường Đại học Khoa học Tự
nhiên – Đại học Quốc gia Hà Nội



Người hướng dẫn khoa học: PGS. TS Lê Trọng Vĩnh
PGS. TS Đỗ Trung Tuấn


Phản biện: . . . . . . . . . . . . . . . . . . . . . . . . . . …………………………… .
Phản biện: . . . . . . . . . . . . . . . . . . . . . . . . . . . ……………………………
Phản biện: . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Luận án sẽ được bảo vệ trước Hội đồng cấp Đại học Quốc gia chấm luận án
tiến sĩ họp tại . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
vào hồi giờ ngày tháng năm 20




Có thể tìm hiểu luận án tại:
- Thư viện Quốc gia Việt Nam
- Trung tâm Thông tin - Thư viện, Đại học Quốc gia Hà Nội

3

LỜI NÓI ĐẦU

Internet đã mở ra một làn sóng mới về xu hướng phát triển của xã hội - thời đại

của công nghệ thông tin và truyền thông. Nhiều dịch vụ trực tuyến được phát triển
mạnh mẽ trong thương mại điện tử, thanh toán trực tuyến, kinh doanh, tài chính, công
nghiệp, an ninh, y tế,… cho phép người sử dụng truy cập, khai thác và chia sẻ thông
tin mọi lúc mọi nơi. Song song với những tiến bộ và lợi ích mang lại, Internet cũng là
không gian rộng mở cho kẻ xấu lợi dụng thực hiện những vụ tấn công, truy cập trái
phép vào các hệ thống máy tính và mạng của người dùng.
Hệ thống phát hiện xâm nhập mạng IDS (Intrusion Detection System) có nhiệm
vụ phân tích các thông tin, theo dõi, phát hiện và ngăn chặn sự xâm nhập trái phép tài
nguyên làm tổn hại đến tính bảo mật, tính toàn vẹn và tính sẵn sàng của hệ thống. Có
nhiều cách tiếp cận khác nhau trong việc phát triển hệ thống IDS. Trong số đó, so khớp
mẫu là một kỹ thuật được sử dụng phổ biến trong các hệ thống phát hiện và ngăn chặn
xâm nhập mạng. Việc phát hiện các nguy cơ tiềm ẩn trong hệ thống phát hiện xâm nhập
mạng được thực hiện bằng cách so khớp nội dung gói tin với các mẫu đã biết. Với sự đa
dạng về số lượng các đợt tấn công, hình thức tấn công thì việc thu thập đầy đủ các mẫu
làm cho kích thước tập mẫu ngày càng tăng nhanh. Có rất nhiều thuật toán so khớp mẫu
Error! Reference source not found.,50] đã được sử dụng trong hệ thống phát hiện xâm
nhập Snort Error! Reference source not found.,6]. Tuy nhiên, các thuật toán này vẫn
tồn tài một số vấn đề như hiệu năng giảm và tiêu tốn nhiều thời gian thực hiện khi số
lượng các mẫu tăng lên. Do vậy, việc nghiên cứu cải tiến hay đề xuất các thuật toán so
khớp mới đáp ứng việc so khớp đồng thời nhiều mẫu trong các hệ thống phát hiện xâm
nhập là một nhu cầu cấp thiết và đây là mục tiêu thứ nhất của luận án này. Với mục tiêu
này, luận án đã (i) phân tích đánh giá về hiệu năng cũng như thời gian thực hiện các
thuật toán so khớp đơn mẫu trên hệ thống phát hiện thâm nhập Snort; (ii) Đưa ra các cải
tiến cho thuật toán so khớp đa mẫu Aho - Corasick bằng cách sử dụng kỹ thuật nén dòng
và bảng chỉ số nhằm nâng cao hiệu quả của thuật toán, các phân tích và so sánh thực tế
nhằm kiểm nghiệm lý thuyết cũng đã được thực hiện trên hệ thống Snort ; (iii) Luận án
cũng đề xuất một thuật toán so khớp đa mẫu mới bằng cách xây dựng biểu đồ của các
mẫu kết hợp với danh sách liên kết làm giảm thời gian thực hiện việc so khớp đồng thời
đa mẫu. Việc cài đặt thực nghiệm của thuật toán với trong sự so sánh với một số thuật
toán đã tồn tại cũng đã triển khai trên hệ thống Snort.

Một vấn đề khác cũng liên quan đến an toàn đó là vấn đề giả mạo (phishing hay
fake) nói chung và giả mạo web nói riêng. Giả mạo và phát tán trên mạng là một loại
tội phạm kỹ thuật xã hội đáng chú ý trên mạng. Cũng giống như xâm nhập mạng, nhiệm
vụ đầu tiên là phải nhận biết (phát hiện) được các cuộc xâm nhập, việc đầu tiên để ngăn
chặn và xóa bỏ các trang web giả mạo là phát hiện ra chúng. Có rất nhiều các cách tiếp cận
khác nhau để phát hiện các trang web giả mạo.
Một đặc tính nổi bật nhất của trang web giả mạo là nó phải tương tự như trang web
gốc. Điều này có nghĩa là hai trang web gốc và web giả mạo có cấu trúc giống nhau. Mặt
khác, DOM là tên gọi tắt của Document Object Model - tạm dịch Mô hình đối tượng tài
liệu - là một chuẩn được định nghĩa bởi W3C dùng để truy xuất và thao tác trên các tài
4
liệu có cấu trúc dạng HTML hay XML bằng các ngôn ngữ lập trình thông dịch (scripting
language) như Javascript, PHP, Python, Do vậy, để so sánh hai trang web với nhau
chúng ta có thể so sánh hai DOM-Tree tương ứng của chúng. Đây là mục tiêu thứ hai của
luận án.
Cây (Tree) là một dạng đặc biệt của đồ thị (Graph), vì vậy với mục tiêu thứ hai,
luận án đã nghiên cứu bài toán tổng quát hơn đó là so khớp đồ thị. Các kết quả của
luận án đã (i) Đưa ra thuật toán mới dựa trên thuật toán di truyền để so khớp các đồ thị
không chính xác. Thuật toán mới có thể áp dụng đối với lớp đồ thị vô hướng, có
hướng, có trọng số hay gán nhãn. (ii) Áp dụng việc so khớp đồ thị vào việc so khớp
các DOM-Tree để phát hiện các trang web giả mạo.
Với các mục tiêu của luận án như trên, luận án được tổ chức thành ba chương
như sau. Chương 1 trình bày tổng quan về xâm nhập mạng và giả mạo trên mạng.
Chương 2 được dùng để trình về các thuật toán so khớp đơn mẫu và đa mẫu áp dụng
trong việc phát hiện xâm nhập mạng. Chương 3 trình bày về so khớp đồ thị và phát
hiện các trang website giả mạo. Cuối cùng là phần kết luận và hướng phát triển của
luận án.
Chương 1. TỔNG QUAN VỀ THÂM NHẬP VÀ GIẢ
MẠO TRÊN MẠNG
1.1 Giới thiệu

Internet đã mở ra một làn sóng mới về xu hướng phát triển của xã hội - thời đại
của công nghệ thông tin và truyền thông. Nhiều dịch vụ trực tuyến được phát triển
mạnh mẽ trong thương mại điện tử, thanh toán trực tuyến, kinh doanh, tài chính, công
nghiệp, an ninh, y tế,… cho phép người sử dụng truy cập, khai thác và chia sẻ thông
tin mọi lúc mọi nơi. Tất cả các dịch vụ này làm cho mạng máy tính trở thành mục tiêu
hấp dẫn cho sự lạm dụng và tổn thương đến cộng đồng người sử dụng. Nói cách khác,
song song với những tiến bộ và lợi ích mang lại, Internet cũng là không gian rộng mở
cho kẻ xấu lợi dụng thực hiện những vụ tấn công, đột nhập, truy cập trái phép vào các
hệ thống máy tính và mạng của người dùng. Vì thế, bên cạnh việc phát triển các dịch
vụ và ứng dụng trên mạng, an ninh thông tin và an toàn hệ thống là một vấn đề hết sức
quan trọng cần được quan tâm nghiên cứu thường xuyên. Vấn đề an ninh thông tin và
an toàn hệ thống bao gồm rất nhiều chủ đề, do vậy luận án này chỉ tập trung nghiên
cứu chính về phát hiện xâm nhập mạng và sự giả mạo trên mạng.
1.2 Xâm nhập trái phép
1.2.1 Một số kỹ thuật xâm nhập trái phép
Tấn công (attack) là sự vi phạm chính sách an toàn bảo mật của hệ thống đó. Có rất
nhiều kỹ thuật được dùng để xâm nhập mạng như: - Trap-door; Logic Bomb; Trojan
Horse; Worm; Zombies; Man-in-the-Middle; Eavesdropping;IP Address Spoofing/ Identity
Spoofing
1.2.2 Một số giải pháp kỹ thuật ngăn chặn xâm nhập
Các biện pháp ngăn chặn đột nhập được sử dụng khá phổ biến gồm tường lửa,
xác thực, mã hóa,
Tường lửa (Firewall): Mã hóa dữ liệu (Data Encryption); Xác thực
(Authentication); Quyền truy cập (Access Rights):
1.2.3 Hệ thống phát hiện xâm nhập trái phép
1.2.3.1. Hệ thống phát hiện xâm nhập mạng
1.2.3.2. Phân loại hệ thống phát hiện xâm nhập mạng
5
Người ta thường phân loại các hệ thống IDS dựa trên nguồn cung cấp dữ liệu
cho phát hiện đột nhập. Có hai loại hệ thống phát hiện đột nhập (IDS) cơ bản:

- Hệ thống phát hiện đột nhập cho mạng (NIDS: Network – based IDS)
- Hệ thống phát hiện đột nhập cho host (HIDS: Host – based IDS)
1.2.3.3. Hệ thống phát hiện xâm nhập Snort
1.2.3.3.1. Kiến trúc của Snort
Snort bao gồm nhiều thành phần (module), với mỗi module có một chức năng
riêng. Các module chính đó là: Giải mã gói tin (Packet Decoder); Tiền xử lý
(Preprocessors); Phát hiện (Detection Engine); Truy cập và cảnh báo (Logging and
Alerting System); Kết xuất thông tin (Output Module)
1.2.4 Một số nghiên cứu liên quan đến hệ thống phát hiện xâm nhập
Có hai phương pháp chính để phát hiện xâm nhập mạng: dựa trên trên đặc trưng
(signature-based) và dựa trên bất thường (anomaly- based). Trong cách tiếp cận đầu
tiên, mô hình tấn công hay hành vi của kẻ xâm nhập được mô hình hóa (dấu hiệu tấn
công được mô hình hóa). Ở đây, hệ thống sẽ báo hiệu xâm nhập xảy ra mỗi khi một
phép so khớp trùng nhau được xác định. Trong cách tiếp cận thứ hai, hành vi bình
thường của mạng là được mô hình hóa. Trong cách tiếp cận này, hệ thống sẽ đưa ra
các cảnh bảo khi hành vi mạng không khớp với bình thường.
Cách tiếp cận của chúng tôi: Sử dụng các thuật toán so khớp đơn mẫu, so
khớp đa mẫu và ứng dụng so khớp đa mẫu trong việc phát hiện xâm nhập mạng. Áp
dụng của thuật toán so khớp đồ thị vào việc phát hiện trang web giả mạo dựa vào cấu
trúc DOM của chúng.
1.3 Giả mạo
1.3.1. Giới thiệu
Giả mạo là một hành vi giả mạo ác ý nhằm lấy được các thông tin nhạy cảm
như tên người dùng, mật khẩu và các chi tiết thẻ tín dụng bằng cách giả dạng thành
một chủ thể tin cậy trong một giao dịch điện tử. Do vậy, việc nghiên cứu và phát hiện
các trang web giả mạo là một nhu cầu cấp thiết hiện nay.
1.3.2. Một số kỹ thuật
Sử dụng thư điện tử giả mạo; Sử dụng các trang web giả mạo; Bắt trước URL;
Cập nhật thông tin cá nhân; Che giấu URL; Nhiễm độc DNS: Tuy nhiên, trong khuôn
khổ của luận án này, chúng tôi chỉ tập trung nghiên cứu về giả mạo web.

1.3.3. Một số nghiên cứu liên quan đến giả mạo web
Phần lớn các trang web giả mạo đều cố gắng bắt trước các trang web hợp lệ đến
mức tốt nhất có thể để người dùng có đủ tự tin tiết lộ những thông tin nhạy cảm. Hầu
hết các trang lừa đảo đều làm tốt việc tạo giao diện hợp lệ bằng cách sao chép cách bố
trí trang, font, kiểu, logo và thậm chí các thông tin bảo mật của trang hợp lệ. Thực tế,
nhiều liên kết trong trang lừa đảo vẫn thực sự kết nối đến trang hợp lệ, điều này khiến
nó giống với các trang hợp lệ hơn.
Nhìn chung, cách tiếp cận để phát hiện các trang web giả mạo bước đầu là kiểm
tra xem “hình dáng” hay cấu trúc của chúng có giống nhau không, nếu giống thì sẽ sử
dụng thêm một số kỹ thuật khác để làm rõ các chi tiết kỹ thuật để phát hiện đó là trang
web giả mạo hay trang web hợp lệ. Mặt khác, DOM là tên gọi tắt của Document
Object Model - tạm dịch Mô hình đối tượng tài liệu - là một chuẩn được định nghĩa
bởi W3C Error! Reference source not found. dùng để truy xuất và thao tác trên các
tài liệu có cấu trúc dạng HTML hay XML bằng các ngôn ngữ lập trình thông dịch
6
(scripting language) như Javascript, PHP, Python, Do vậy, hướng tiếp cận của chúng
tôi là sẽ chuyển các trang web về cấu trúc DOM của chúng dưới dạng cây (Tree), sau
đó so sánh xem hai trang web có giống nhau hay không bằng cách so sánh các DOM-
Tree. Nếu hai trang web có cấu trúc giống nhau thì có thể nghi ngờ, tiếp theo chúng tôi
sử dụng các thuật toán so khớp để so sánh các thành phần chi tiết của chúng để phát
hiện trang web giả mạo. Và đây là mục tiêu thứ hai của luận án.
1.4 Mục tiêu và cấu trúc của luận án
i) Nghiên cứu về hệ thống phát hiện xâm nhập. Phát triển và áp dụng các thuật
toán so khớp mẫu vào việc xây dựng các hệ thống phát hiện xâm nhập.
ii) Nghiên cứu về giả mạo web. Phát triển các thuật toán so khớp có cấu trúc
(đồ thị) vào việc phát hiện các trang web giả mạo.
Với các mục tiêu của luận án như trên, ngoài phần mở đầu, luận án được tổ
chức thành ba chương như sau.
Chương 1: Trình bày tổng quan về xâm nhập mạng và giả mạo trên mạng.
Chương 2: Trình về các thuật toán so khớp đơn mẫu và đa mẫu áp dụng trong

việc phát hiện xâm nhập mạng.
Chương 3: Trình bày về so khớp đồ thị và phát hiện các trang web giả mạo.
Cuối cùng là phần kết luận và hướng phát triển của luận án.
1.5 Các kết quả của luận án
Với mục tiêu áp dụng các thuật toán so khớp trong việc phát triển các hệ thống
phát hiện xâm nhập trái phép, luận án đã đạt được các kết quả như sau:
(i) Phân tích đánh giá về hiệu năng cũng như thời gian thực hiện các thuật toán
so khớp đơn mẫu trên hệ thống phát hiện thâm nhập Snort;
(ii) Đưa ra các cải tiến cho thuật toán so khớp đa mẫu Aho – Corasick bằng
cách sử dụng kỹ thuật nén dòng và bảng chỉ số nhằm nâng cao hiệu quả của
thuật toán, các phân tích và so sánh thực tế nhằm kiểm nghiệm lý thuyết
cũng đã được thực hiện trên hệ thống Snort ;
(iii) Luận án cũng đề xuất một thuật toán so khớp đa mẫu mới bằng cách xây
dựng biểu đồ của các mẫu kết hợp với danh sách liên kết làm giảm thời gian
thực hiện việc so khớp đồng thời đa mẫu. Việc cài đặt thực nghiệm của
thuật toán với trong sự so sánh với một số thuật toán đã tồn tại cũng đã triển
khai trên hệ thống Snort.
Với mục tiêu phát hiện các trang web giả mạo, luận án đã đạt được các kết quả như
sau:
(iv) Đưa ra thuật toán mới dựa trên thuật toán di truyền để so khớp các đồ thị
không chính xác. Thuật toán mới có thể áp dụng đối với lớp đồ thị vô
hướng, có hướng, có trọng số hay gán nhãn.
(v) Áp dụng việc so khớp đồ thị vào việc so khớp các DOM-Tree để phát hiện
các trang web giả mạo.
1.6 Kết chương
Trong chương này, luận án đã trình bày chi tiết việc phát hiện xâm nhập trái
phép và giả mạo trên mạng. Về phát hiện xâm nhập trái phép, luận án đã trình bày lại
các kỹ thuật xâm nhập trái phép hiện đã được sử dụng bởi kẻ tấn công; các giải pháp
kỹ thuật nhằm ngăn chặn các kỹ thuật xâm nhập trái phép được biết; kiến trúc tổng
quát của một hệ thống phát hiện xâm nhập và chi tiết một hệ thống phát hiện xâm nhập

trái phép dựa trên mã nguồn mở Snort – cái sẽ là nền tảng để triển khai thử nghiệm các
7
thuật toán đề xuất trong các chương tiếp theo. Các cách tiếp cận của cộng đồng khoa
học trong nước và trên thế giới cho việc nghiên cứu và phát triển hệ thống phòng
chống xâm nhập được phân tích và trình bày tóm tắt. Dựa vào sự phân tích này, luận
án cũng xác định được mục tiêu thứ nhất của luận án. Tiếp theo, luận án đã trình bày
về vấn nạn giả mạo đặc biệt là giả mạo web. Các cách tiếp cận của cộng đồng khoa
học trong nước và trên thế giới cho việc nghiên cứu và phát triển hệ thống phát hiện
web giả mạo được phân tích và trình bày tóm tắt. Từ đó, luận án cũng đã xác định
được mục tiêu thứ hai.

Chương 2. SO KHỚP TRONG PHÁT HIỆN XÂM
NHẬP MẠNG
2.1 Bài toán so khớp chuỗi
Các thuật toán so khớp chuỗi có thể phân loại theo hai tiêu chí:
- Dựa trên số lượng mẫu, có hai loại: so khớp đơn mẫu (Single Pattern) và so
khớp đa mẫu (Multiple Patterns).
- Dựa trên cơ sở thiết kế thuật toán, có ba loại: so khớp dựa trên tiền tố
(prefix), so khớp hậu tố (suffix) và so khớp thừa số (factor).
Tất cả các thuật toán so khớp chuỗi đều có 2 giai đoạn là: tiền xử lý và tìm
kiếm. Việc đánh giá các thuật toán được thực hiện dựa trên dung lượng bộ nhớ sử
dụng và tốc độ so khớp. Các thuật toán so khớp được phân loại theo cách tiếp cận xây
dựng thuật toán và số lượng mẫu được cho trong hình 2.4.
Thuật toán so khớp đầu tiên được biết đến là Brute ForceError! Reference
source not found
Void Brute_Force ( char *x, int m, char y, int n)
{
/* Searching */
For ( int j = 0 ; j <= n – m ; j++ )
{

For (int i = 0; i < m && x[i] == y [ y + j ]; i++ )
{
If ( i >= m )
OUTPUT (j);
}
}
}
2.2 Các thuật toán so khớp đơn mẫu
2.2.1 Thuật toán Knuth-Morris-Pratt (KMP)
Thuật toán tính mảng Next như sau:
int* InitNext(char *p,int m)
{ int i,j,*kmpNext;
i = -1; j = 0;
*kmpNext = -1;
while (j < m )
{
while (i > -1)&&( p[i] != p[j])
i = *(kmpNext + i);
i++; j++;
8
if (p[i]== p[j])
*( kmpNext + j) = *( kmpNext + i);
else *( kmpNext + j) = i;
}
return kmpNext;
}
Thuật toán Knuth - Morris – Pratt
int KMP(char *p, char *t)
{ int i, j, M = strlen(p), N = strlen(t);
InitNext(p);

for (i = 0, j = 0; j < M && i < N; i++, j++)
while ((j >= 0) && (t[i] != p[j]))
j = next[j];
if (j == M) return i - M;
else return i;
}
2.2.2 Thuật toán Boyer-Moore (BM)
Phát biểu thuật toán: Thuật toán sẽ lưu cách dịch thứ nhất trong mảng gs kích
thước m + 1 và cách dịch thứ hai được lưu trong mảng bc với kích thước 256 (tương
ứng với 256 ký tự của bảng mã ASCII).
Mảng bc được tính như sau:
int* PreBC (char *x,int m)
{ int i,j,*bc;
for (j=0;j<256;j++)
*(bc[j]) = m;
for (i=0;i<=m-2;i++)
*(bc[x[i]]) = m – i - 1;
return bc;
}
Việc tính mảng gs khá phức tạp, ta tính gián tiếp qua một mảng suff
int* Suffixes (char *x,int m)
{ int f,g,i,*suff;
*(suff + m - 1) = m ;
g = m - 1;
for (i=m-2;i>=0;i )
{if(( i > g)&& (*(suff+i+m–1–f)!= i–g))
*(suff+i)=min{*(suff+i+m–1–f),i–g};
else
{if (i < g) g = i;
f= i;

while ((g>=0) && (x[g]==x[g+m–1–f])) g ;
*(suff+i) = f – g;
}
}
return suff;
}

int* PreGS (char *x,int m)
{ int *suff,*gs,i,j;
9
suff= Suffixes(x,m);
for (i=0;i<m;i++) *(gs+i)=m;
j=0;
for (i=m-1;i>=-1;i )
if ((i==-1)||(*(suff+i)==i+1))
while (j<m-1-i)
{if (*(gs+j)==m) *(gs+j)= m-1–i;
j++; }
for (i=0;i<=m-2;i++)
*(gs+m-1– *(suff+i)) = m–1-i;
return gs;
}
Thuật toán Boyer – Moore
int Boyer_Moore(char *x,int m,char *y,int n)
{ int *gs, *bc, i, j, kq;
gs= PreGS(x,m);
bc=PreBC(x,m);
j= 0;
while (j<=n-m)
{ i= m -1;

while ((i >=0)&&(x[i]==y[i + j])) i ;
if (i<0)
{ kq=j; j=j+gs[0];}
else j=j+max{gs[i],bc[y[i+j]] – m +i +1};
}
return kq;
}
2.2.3 Thuật toán Karp-Rabin
Phát biểu thuật toán
int ReHash(int a,int b,int h,int d)
{
return((h–a*d) << 1 ) + b;
}

intKarp_Rabin(char *x,int m,char *y,int n)
{ int d,hx,hy,i,j,kq;
d= 1;
for (i=1;i<=m-1;i++)
d=d<<1;
hx=hy=0;
for (i=0;i<=m-1;i++)
{
hx= ((hx<<1) + x[i]);
hy= ((hy<<1) + y[i]);
}
if ((hx == hy)&&(x== y[0 . . m – 1])) kq=0;
j= m;
while (j < n)
{
10

hy = ReHash(y[j–m],y[j],hy,d);
if ((hx==hy)&&(x==y[j–m+1 j])) kq=(j – m + 1);
j++;
}
return kq;
}
2.2.4 Thuật toán Boyer-Moore Horspool (BMH)
2.2.5 Thuật toán BDM và BOM
2.3 Các thuật toán so khớp đa mẫu
2.3.1 Thuật toán Aho-Corasick (AC)
Algorithm 1 Aho-Corasick Algorithm
1: procedure AC (y,n,q
0
)
 Input
 y ← array of n bytes representing the text input
 n ← integerrepresenting the text leght
 q
0
← initial state
2: state ← q
0

3: For i = 1 → n do → Matching
4: While g(state, y[i]) = fail do → whileg(state, y[i]) is
undefined
5: state ← f(state) → use the failure function
6: end while
7: state←g(state, y[i])
8: Ifo(state) ≠ then

9: output I → This an accepting state, i.e. state
A
10: end if
11:end for
12:end procedure
2.3.2 Thuật toán Commentz-Walter (CW)
1. Procedure CW(y,n,m,p,root)
 Input:
 y ← array of n bytes representing the text input
 n ← integer representing the text length
 m ← array of keyword lengths
 p ← number of keywords
 root ← root node of the trie
2. v ← root The current node
3. i ← min {m[0], m[1], . . . , m[p-1]} i point to the current position in
y
4. j ← 0 j indicates depth of the current
node v
5. while i ≤ n do
6. while v has child v’ labeled y[i – j] do
7. v ← v’
8. j ← j + 1
11
9. if out(v) ≠ Ø then
10. Output i – j Path from v to root matches y[i-j] to
y[i]
11. end if
12. end while Shifting
13. i ← i + min {shift2(v), max { shift1(v), char(y[ i - j] – j – 1}}
14. j ← 0

15. end while
16. end procedure
2.3.3 Thuật toán Wu & Manner (WM)
Algorithm 3 Wu and Manner Algorithm
procedure WM (y,n,B, B’, SHIFT, HASH, PREFIX, PAT_POINT)
 Input
 y ← array of n bytes representing the text input
 B ← integer representing the suffix block length
 B’ ← integer representing the prefix block lenght
 SHIFT ← SHIFT table (see description above)
 HASH ← HASH table (see description above)
 PREFIX ← PREFIX table (see description above)
 PAT_POINT ← table of pointers to keywords (like our x it has m keywords)
m ← min {length of all keywords} minlen
i ← m-1
While i ≤ n do → Matching
h ← hash (y[i – B + 1], … , y[i]) → hash over B bytes back from index i in
y
shift ← SHIFT[h]
If shift = 0 then → Suffix block matches
text_prefix ← hash(y[i – m + 1], . . . , y [i – m + 1+ B’])
p ← HASH[h] → a C style pointer
p_end ← HASH[h + 1] → a C style pointer
while p < p_end do→ Matching
if text_prefix = PREFIX[p] then → Prefix matches
px ← PAT_POINT[p] → Pointer to the current
keyword
len ← length of px → Length of current keyword
j ← 0
while j < len and y[i –len + 1 + j] = px[j] do

j ← j + 1
end while
if j ≥ len then
output i – len + 1
end if
end if
p ← p + 1
end while
i ← i + 1 → Shift only by one place
else
i ← i + shift → Skip part of the text
end if
12
end while
end procedure
2.3.4 Thuật toán RSI (Recursive Shift Indexing)và MDH (Multi-Phase Dynamic
Hash)
2.3.5 Một số thuật toán khác
2.3.6 Các kết quả thực nghiệm
Để đánh giá thời gian thực thi và yêu cầu bộ nhớ của các thuật toán với các
hướng tiếp cận khác nhau, chúng tôi đã triển khai cài đặt các thuật toán AC, AC-BM,
SBMH, SBOM, WM, RSI, MDH trên ngôn ngữ lập trình C. Điều kiện thực nghiệm
kiểm chứng trên các máy tính có bộ xử lý Intel Pentium 4 tốc độ 3.0 GHz Dual Core,
bộ nhớ cache 512 KB, Ram dung lượng 2 GB. Số lượng mẫu thực nghiệm là 1000
mẫu, chiều dài các mẫu từ 8 đến 30 ký tự, độ dài chuỗi kiểm tra là 1000 ký tự (trong
đó có 500 ký tự được gieo ngẫu nhiên, sau khi gieo nhẫu nhiên chúng tôi chèn thêm
các ký tự vào cho đủ độ dài 1000). Bảng chữ cái thực hiện là |S|=256.
Kết quả thu được đánh giá theo tiêu chí về thời gian thực thi như hình 2.8



Hình 2.1 Đánh giá thời gian thực thi
của các thuật toán
Hình 2.2 Đánh giá yêu cầu bộ
nhớ của các thuật toán

2.3.7 Phân tích và đánh giá các thuật toán so khớp chuỗi
2.4 Ứng dụng so khớp đa mẫu trong phát hiện thâm nhập mạng
2.4.1. Biểu diễn không gian lưu trữ và tối ưu hóa bằng kỹ thuật nén dòng
Mô hình NFA của AC biểu diễn tập mẫu P={hers, she, his, he} được cho trong hình
2.13.

(a) Hàm Goto
i
1
2
3
4
5
6
7
8
9
f(i)
0
0
0
7
0
7
0

1
2
13
(b) Hàm Failure
i
2
9
6
4
Output(i)
he
she, he
his
hers
c) Hàm Output
Trạng
thái
Đầu vào
e
h
i
r
s
0
0
1
0
0
7
1

2
0
5
0
0
2
0
0
0
3
0
3
0
0
0
0
4
5
0
0
0
0
6
7
0
8
0
0
0
8

9
0
0
0
0
(d) Ma trận chuyển cho hàm Goto
Hình 2.3 Không gian trạng thái của AC với tập mẫu P
Rõ ràng, khi tập mẫu lớn với nhiều mẫu thì số trạng thái sẽ tăng lên rất nhanh.
Thêm nữa, chúng ta thấy trong ma trận trạng thái của NFA có rất nhiều thành phần có
giá trị 0. Do vậy, ý tưởng chính ở đây là sử dụng các kỹ thuật nén dòng (CSR:
Compressed Row Storage) Error! Reference source not found. để giảm bớt không
gian lưu trữ. Với tập mẫu P ở trên, không gian trạng thái của AC sau khi sử dụng kỹ
thuật CSR được trình bày trong bảng 3.
Bảng 1 : Nén ma trận chuyển hàm Goto với CSR
Giá trị
1
7
2
5
3
4
6
8
9
Cột
2
5
1
3
4

5
5
2
1
Dòng
1
1
2
2
3
4
5
6
7
Bảng 2 : Nén hàm failure của AC dùng bảng chỉ số
Giá trị
7
7
1
2
Chỉ số
4
6
8
9
(a) Nén hàm Failure dùng bảng chỉ số 2 chiều
8
4
7
6

7
8
1
9
2
(b) Nén hàm Failure dùng bảng chỉ số 1 chiều
Số lượng mục
8
Chỉ số bắt đầu
4
Giá trị
7
0
7
0
1
2
Dải lưu trữ
8
4
7
0
7
0
1
2
(c) Nén hàm Failure dùng bảng chỉ số lưu trữ
Chúng ta hoàn toàn có thể áp dụng cách lưu trữ này cho mỗi dòng trong ma trận
để tối ưu không gian trạng thái, chúng ta biểu diễn bảng dịch chuyển bằng danh sách
các con trỏ vectơ trạng thái.

2.4.2. Cải tiến giai đoạn tiền xử lý của AC
Do otomat đơn định DFA (Deterministic Finite Automata) yêu cầu xác định
duy nhất trạng thái tiếp theo nào ứng với mỗi ký tự vào nên cho hiệu quả thực thi tốt
14
hơn nên trong Snort chúng tôi khai báo thuật toán AC sử dụng DFA. Mô tả cấu trúc dữ
liệu danh sách liên kết của DFA như sau:
struct DFA {
struct State *NextState[256];
struct State *Failurelist;
struct Matched *Matchlist; }
Thuật toán 1. Xây dựng ma trận chuyển trạng thái dựa trên DFA ứng với tập
mẫu P sử dụng cấu trúc bảng chỉ số ký tự.
INPUT: Tập mẫu P có n mẫu.
OUTPUT: Bảng chuyển trạng thái của DFA chấp nhận tất cả các mẫu trong P.
DFA dfaBuild(Patterns P[], int n){
DFA dfa = new DFA();
String w;
State *state, *NextState;
//Cấp phát trạng thái mới
state = dfa.newState();
//Thiết lập trạng thái ban đầu
dfa.setStartState(state);
for (int i = 0; i < n; i++){
w = P[i]; //Xử lý từng mẫu P[i]
state = dfa.getStartState();
for (int j = 0; j < w.length(); i++){
*NextState = dfa.getTransition(*state, w(j))
if (!NextState.isValid()){
// Loại bỏ các trạng thái 0
*NextState = dfa.newState();

//Cấp phát trạng thái mới
// Thêm liên kết chuyển trạng thái các nút với ký tự vào w(j)
dfa.addTransition(*state,w(j),*NextState);}
*state = *NextState; }
dfa.addMatchlist(*state);}
return dfa;}
Trong đó, các hàm addMatchlist, addTransition có nhiệm vụ thêm
các trạng thái mới vào danh sách NextStatevàMatchlist ứng với ký tự đang xét
w(j) của mẫu P[i].
Thuật toán 2. Xây dựng bảng chỉ số con trỏ failure ứng với DFA
INPUT: DFA ứng với tập mẫu P được xây dựng trong thuật toán 1.
OUTPUT: Danh sách các trạng thái lỗi lưu trữ trong *failure.
Void FailureBuild(DFA dfa){
*dfa.Failurelist = new Failure();
Queue q = new Queue();
State state, nextState, s; char ch;
q.add(dfa.getStartState());
*dfa.Failurelist.setFailure(dfa.getStartState(), null);
while (! q.isEmpty()) {
state = q.remove();
for (int i = 0; i < 256; i++) {
ch = *dfa.Nextstate(i);
nextState=dfa.getTransition(state, ch);
if (nextState.isValid()){
s = *dfa.Failurelist.getFailure(state);
while((s!=null)&&!dfa.getTransition(s,ch).isValid()){
s = *dfa.Failurelist.getFailure(s);}
15
if (s ! = null)
{*dfa.Failurelist.setFailure(nextState, dfa.getTransition(s,ch));}

else {*dfa.Failurelist.setFailure(nextState, dfa.getStartState());}
if (f.getFailure(nextState).isMatchlist()){
dfa.addMatchlist(nextState);}
q.add(nextState);}}}}



a) Không gian lữu trữ của thuật toán AC gốc

b) Không gian lữu trữ của thuật toán AC khi tối ưu

Hình 2.4 Không gian trạng thái của AC trước và sau tối ưu
Cải tiến giai đoạn tìm kiếm của thuật toán AC
Thuật toán 3. Tìm kiếm mẫu trên bảng chỉ số ký tự
INPUT: Tập mẫu P có n mẫu. Gói tin cần kiểm soát M.
OUTPUT: Danh sách các mẫu trong P xuất hiện trong nội dung gói tin M
Results Search(Patterns P, Message M){
DFA dfa = dfaBuild(P, n);
FailureBuild(DFA dfa)
State state, nextState; char ch;
Results r = new Results();
state = dfa.getStartState();
while (! M.eof()){
ch = M.getChar();
nextState = dfa.getTransition(state,ch);
if (!NextState.isValid()){
nextState = *dfa.Failurelist.getFailure(state);
while ((nextState!=null) && ! dfa.getTransition(nextState,ch).isValid())
{nextState=*dfa.Failurelist.getFailure(nextState);}
if (nextState ! = null) {

nextState = dfa.getTransition(s,ch);}
else {
nextState = dfa.getStartState();}}
if (nextState.isMatchlist()) {
r.add(M.getPosition(),*dfa.Matchlist);}
state = *dfa.NextState[state.getChar];}
return r;}
2.4.3. Thực nghiệm và đánh giá

16
Bảng 3 : Thống kê không gian trạng thái thực nghiệm trên Snort với các tập luật
chuẩn
Tập luật
Số
lượng
mẫu
Số
lượng
ký tự
Thuật toán AC gốc
Thuật toán AC cải tiến
Tỷ lệ % tổng
số trạng thái
rút gọn được
Số lần
chuyển
trạng thái
Tổng số
trạng
thái

Số lần
chuyển trạng
thái
Tổng số
trạng
thái
Ftp
96
466
402
406
391
375
7.63 %
Smtp
104
989
715
719
613
602
16.27 %
Web-misc
160
2.052
1.420
1.425
1.318
1.259
11.65 %

Oracle
337
11.128
6.793
6.804
4.512
3.957
41.84 %

Hình 2.5 So sánh không gian bộ nhớ của thuật toán AC với các cách tiếp cận lưu trữ
trạng thái khác nhau.
Trong việc làm này, chúng tôi đã phân tích kỹ thuật nén dòng để tối ưu không
gian trạng thái các thuật toán so khớp chuỗi AC dùng bảng chỉ số thay cho bảng chỉ số
trạng thái và thử nghiệm trên hệ thống phát hiện xâm nhập mạng Snort 2.4.2. Các kết
quả thực nghiệm cho thấy thuật toán mà chúng tôi đề xuất cho kết quả bằng và tốt hơn
thuật toán AC gốc và một số thuật toán AC đã được cải tiến AC-OPT Error!
Reference source not found. và AC-RDFError! Reference source not found Việc
hiểu rõ cấu trúc biểu diễn không gian trạng thái của thuật toán sẽ giúp chúng ta xây
dựng các hệ thống an ninh mạng đạt hiệu quả cao trong thực tế đáp ứng được sự phát
triển nhanh và đa dạng của các mẫu virus.
2.5 Thuật toán đề xuất
Để mô phỏng các quá trình của thuật toán, chúng ta quan tâm đến ví dụ sau:
Giả sử, chúng ta có tập mẫu P = {"search", "ear", "arch", "chart"}
Và dữ liệu đầu vào là xâu T= “strcmatecadnsearchof”.
2.5.1 Giai đoạn tiền xử lý
Chúng tôi xây dựng một biểu đồ cấu trúc để biểu diễn tập mẫu P. Biểu đồ cấu trúc
G có n mức (n là độ dài của mẫu dài nhất trong tập mẫu P), tại mỗi mức i (chẳng hạn)
chúng tôi chỉ phải giữ lại các ký tự khác nhau thứ i trong mỗi mẫu của tập P. Biểu đồ
cấu trúc của tập mẫu P = {"search", "ear", "arch", "chart"} được chỉ ra trong hình
2.19:

17


Hình 2.6 Kết quả giai đoạn tiền xử lý trong thuật toán của chúng tôi
Rõ ràng, với cách tiếp cận của chúng tôi, không gian lưu trữ sẽ được giảm do
chỉ lưu trữ các ký tự khác nhau tại mỗi mức.Yêu cầu về bộ nhớ trong thuật toán của
chúng tôi ở giai đoạn này là bằng hoặc nhỏ hơn không gian nhớ của DFA và hàm
trạng thái và hàm goto trong các thuật toán AC, WM, CW. Thêm nữa, thuật toán của
chúng tôi không sử dụng các bảng SHIFT và HASH và do đó giảm thời gian xây dựng
các bảng và không gian lưu trữ của các bảng này.
2.5.2 Giai đoạn tìm kiếm
Để phân tích quá trình tìm kiếm so khớp, chúng tôi giả sử đầu vào là xâu T=
“strcmatecadnsearchof”. Quá trình tìm kiếm của thuật toán AC được thực hiện thông qua
phép chuyển trạng thái của otomat nếu ký tự đang xét là khớp và sẽ làm thay đổi trạng thái
dịch chuyển, ngược lại sẽ kiểm tra hàm failure để tính bước dịch chuyển tiếp theo.
Trong pha tìm kiếm so khớp trong thuật toán của chúng tôi. Chúng tôi sử dụng
một danh sách các con trỏ để tối ưu hóa không gian. Số lượng tối đa các thành phần
trong con trỏ là bằng số lượng các mẫu (bằng lực lượng của tập P). Chúng tôi khởi tạo
giá trị các thành phần này của con trò bằng độ dài tương ứng của các mẫu trong tập
mẫu. Cấu trúc của một con trỏ được chỉ ra như sau:

P
i

6
3
4
5

Trong quá trình duyệt trên dữ liệu vào T, tại mỗi bước chúng tôi khởi tạo một

con trỏ P
i
(i tương ứng với vị trí của ký tự hiện hành đang được xét trong T). Nếu ký tự
hiện hành trùng khớp với ký thứ j trong mẫu thứ k thì thành phần thứ k trong con trỏ P
j

(lưu ý là j luôn luôn nhỏ hơn hoặc bằng i) tương ứng sẽ được giảm đi 1. Các con trỏ sẽ
bị xóa nếu tại bước thứ i mà không có bất cứ thành phần nào của nó bị giảm đi. Ngược
lại, chúng sẽ được duy trì trong các bước duyệt tiếp theo. Khi có một thành phần của
một con trỏ nào đó mà giá trị của nó giảm đến 0 thì mẫu tương ứng được tìm thấy. Các
thao tác tìm kiếm và so khớp của thuật toán được mô tả như sau (hình 2.21)
18


Hình 2.7 Giai đoạn tìm kiếm và so khớp trong thuật toán chúng tôi đề xuất
Số các bước cần thực hiện trong thuật toán của chúng tôi bằng với chiều dài của
xâu vào T. Với một xâu T độ dài n, độ dài của mẫu dài nhất L, và m là số lượng mẫu.
Trong trường hợp xấu nhất, thời gian thực hiện của thuật toán là O(n*m*L). Mặc dù
vậy, các trường hợp trung bình là thường bé hơn nhiều vì rất ít khi có m con trỏ P
i
tồn
tại đồng thời.
2.5.3 Thuật toán đề xuất
Algorithm 4. Our Algorithm
1:
Procedure DNL (T, n, m, p, G)
Input:
 T ← array of n byte representing the text input
 n ← integer represent the text length
 P[j] ← array of patterns

 P
0
← array of keyword lengths P
0
[j] (j=1…m)
 m ← number of patterns
 G ← graph of pattern P
 S ←Set of P
i

2:
S = 
3:
for i=1 → n do
4:
Init pointer P
i
= P
0
;
5:
S = S U {P
i
}
6:
If (T[i] in G) and (P
j
inS) then
7:
P

j
[position of T[i] in P[j]] = P
j
[position of T[i] in P[j]] -1;
8:
If (P
j
[k] = 0) then
9:
Output P[k] detected;
10:
Remove P
j
;
11:
endif
12:
If (P
j
inS) and (P
j
not change) then Remove P
j

13:
endif
19
14:
endif
15:

end for
16:
End procedure
2.5.4 Các kết quả thực nghiệm



Hình 2.8 So sánh về thời gian thực hiện
khi cố định số lượng mẫu
Hình 2.9 So sánh về bộ nhớ sử dụng khi cố
định số lượng mẫu

2.6 Kết chương
Trong chương này, luận án đã trình bày chi tiết các thuật toán so khớp đơn mẫu
như Knuth-Morris-Pratt, Boyer-Moore-Horspool, Karp-Rabin, Backward Dawg
Matching và Backward Oracle Matching sử dụng trong hệ thống phát hiện xâm nhập
Snort verion 2.0. Sau đó, luận án cũng trình bày trong chi tiết các thuật toán so khớp
đa mẫu được sử dụng trong hệ thống Snort version 2.6. Sự đánh giá so sánh bằng lý
thuyết và thực nghiệm của các thuật toán này cũng được triển khai. Tiếp theo luận án
đề xuất một cải tiến cho thuật toán Aho-Corasick bằng kỹ thuật nén dòng và bảng chỉ
số. Các thực nghiệm chỉ ra thuật toán cải tiến đã đạt được hiệu năng tốt hơn thuật toán
ban đầu khi thực nghiệm trên hệ thống Snort. Cuối cùng, luận án trình bày đề xuất
thuật toán mới cho so khớp đa mẫu dựa trên kỹ thuật xây dựng biểu đồ cấu trúc các
mẫu kết hợp với danh sách liên kết. Các kết quả thực nghiệm chỉ ra thuật toán được đề
xuất có hiệu quả tốt hơn một số thuật toán hiện hành cả về không gian và thời gian.
Chương 3. SO KHỚP ĐỒ THỊ VÀ PHÁT HIỆN CÁC
WEBSITE GIẢ MẠO
3.1. Cấu trúc DOM-Tree
3.1.1. Khái niệm
3.1.2. Xây dựng cây DOM

Xây dựng cây DOM từ những trang Web đầu vào là một bước cần thiết trang
nhiều giải thuật trích xuất dữ liệu Error! Reference source not found Có hai
phương pháp cơ bản để xây dựng các cây DOM là Sử dụng các thẻ riêng biệt Sử dụng
các thẻ và các hộp ảo (visual cue)
3.2. So khớp đồ thị
Một trang Web (hay trang HTML) có thể được biểu diễn dưới dạng một DOM
– Tree và ngược lại người ta có thể cập nhật các trang Web dễ dàng bằng việc sửa đổi
DOM-Tree của nó. Do vậy, việc xem xét hai trang web có giống nhau hay không,
chúng ta hoàn toàn có thể so sánh xem hai DOM-Tree tương ứng của chúng. Mặt khác,
20
cây chỉ là một dạng đặc biệt của đồ thị. Vì vậy, tổng quát hơn trong phần này chúng tôi
sẽ nghiên cứu bài toán so khớp đồ thị.
3.2.1. Một số khái niệm về đồ thị
3.2.2. Bài toán so khớp đồ thị
3.2.3. Một số cách tiếp cận
3.2.3.1. Một số định nghĩa và ký hiệu :
Cho đồ thị gán nhãn G ={V, E, L
V
, L
E
, } với |V| =n. Đồ thị G được biểu diễn
bởi ma trận kề M = (m
i,j
)
n*n
, i, j = , trong đó m
ii
= và m
i,j
=


với i
j ( V).
Ma trận M không phải là ma trận duy nhất biểu diễn đồ thị G. Nếu ma trận M
biểu diễn đồ thị G thì các ma trận hoán vị của M cũng biểu diễn cho đồ thị G Error!
Reference source not found
3.2.3.2. Tìm đẳng cấu đồ thị và đẳng cấu đồ thị con.
3.2.3.3. Thuật toán SI – COBRA cho bài toán so khớp đồ thị gán nhãn.
Ý tưởng : Cho hai đồ thị gán nhãn G và G’ (tương ứng với hai đồ thị mô hình
G
M
và đồ thị dữ liệu G
D
trong mục phát biểu bài toán) ta phải đi tìm một đồ thị con S
của G sao cho S G. Bài toán này được gọi là bài toán tìm đẳng cấu đồ thị con.
3.2.4. Thuật toán di truyền cho bài toán so khớp đồ thị
Thuật toán di truyền là một trong những thuật toán tiến hóa, hình thành dựa trên
quan niệm cho rằng, quá trình tiến hóa tự nhiên là quá trình hoàn hảo và hợp lý nhất,
tự nó đã mang tính tối ưu
Như đã nói ở mục trên, với hai đồ thị G
M
= (V
M
, E
M
) và G
D
= (V
D
,E

D
) với |V
M
| =
m, |V
D
| = n (m < n) ta phải đi tìm một ánh xạ f: V
M
 V
D
phù hợp nhất biến mỗi cặp
đỉnh của đồ thị G
M
thành một cặp đỉnh của đồ thị G
D
. Nếu tổng số cặp đỉnh thỏa mãn
ánh xạ f càng lớn thì ánh xạ f càng phù hợp.
Ta nói f là song ánh nếu và chỉ nếu với mỗi cặp đỉnh (u E
M
, cho ta cặp
(f(u),f(v)) E
D
. Như vậy cung (f(u),f(v)) là ảnh của cung (u,v) trong đồ thị G
D
.
Mã giã của một thuật toán di truyền áp dụng cho bài toán so khớp đồ thị như
sau:
Bắt đầu
t=0;
P(0)=initial_Population();// khởi tạo quần thể ban đầu.

P(0).fit=getFit(P(t));// Tính độ thích nghi của tất cả các cá thể trong quần thể ban
đầu.
While(! điều kiện dừng){
rd1=rand()%10/10.000;// Sinh ngẫu nhiên xác suất lai ghép
if (rd1<0.6){
child_c = crossover(P(t));// Lai ghép các cá thể của quần thể P(t) đưa vào
// child_c
child_c.fit =getFit(child_c);// Tính độ thích nghi cho cá thể lai ghép }
rd2 = rand()%10/10.000;// Sinh ngẫu nhiên xác suất đột biến
if (rd2<0.02){
21
child_m = mutation(P(t));// Đột biến các cá thể của quần thể P(t) đưa vào
// child_m
child_m.fit =getFit(child_m);// Tính độ thích nghi cho cá thể đột biến }
// Chọn ra P_SIZE cá thể có độ thích nghi lớn nhất từ quần thể P(t) ở thế hệ
//t, cá thể lai ghép child_c, các cá thể đột biến child_m.
P(t+1) = Chon_loc(P(t), child_c, child_m);
t++;
}
Kết thúc.
3.2.5. Kết quả mô phỏng
Các thuật toán được viết trên môi trường Dev C++ chạy trên hệ điều hành
Windows 7 với cấu hình máy tính: Chip Intel(R) Core(TM) Duo CPU, tốc độ 2.2
GHZ, RAM 2GB. Các kết quả số là kết quả trung bình của 100 lần chạy độc lập các
thuật toán.
Đồ thị vô hướng
Bảng 4 : Kết quả độ thích nghi ở một số thế hệ với số đỉnh nhỏ hơn 10
Số thế hệ đạt cá thể tốt nhất
Số lượng cá thể
Cá thể tốt nhất

Độ thích nghi
G = 1
64
4 5 6 3
0.75
G = 3
32
6 7 2 3
0.75
G = 4
24
4 5 6 3
0.75
G = 7
16
6 7 2 3
0.75
Bảng 5 : Kết quả độ thích nghi ở một số thế hệ với số đỉnh lớn hơn 10 nhỏ hơn 20
Số thế hệ đạt cá thể tốt nhất
Số lượng cá thể
Cá thể tốt nhất
Độ thích nghi
G = 1
128
1 2 3 4
0.75
G = 5
64
10 11 2 9
0.75

G = 12
32
11 2 9 10
0.75
G = 7
16
6 7 2 3
0.75
Bảng 6 : Kết quả độ thích nghi ở một số thế hệ với số đỉnh lớn hơn 20
Số lương quần thể
Thế hệ thứ
Độ thích nghi
Cá thể tốt nhất
24
16
0.50
1 2 3 5 4
32
24
0.50
1 2 3 21 10
64
32
0.75
1 2 3 21 9
128
64
0.75
1 2 3 8 10
265

128
0.833
1 2 3 8 9

3.2.5.1. Đồ thị vô hướng có trọng số
Bảng 7 : Kết quả độ thích nghi ở một số thế hệ với số đỉnh nhỏ hơn 10
Thế hệ thứ
Độ thích nghi
Số cá thể có độ thích nghi cao nhất
2
0.667
Từ 0- 3 cá thể
3
0.75
Từ 0- 5 cá thể
4
0.75
Từ 0-8 cá thể


22
Bảng 8 : Kết quả độ thích nghi ở một số thế hệ với số đỉnh lớn hơn 10 nhỏ hơn 20
Số lương quần thể
Thế hệ thứ
Cá thể tốt nhất
Độ thích nghi
P_Size = 64
G = 8
1 11 3 4
0.5

P_Size = 64
G = 10
10 2 3 4
0.5
P_Size = 128
G = 20
1 2 3 6
0.667
P_Size = 128
G = 24
1 2 3 4
0.75

Bảng 9 : Kết quả độ thích nghi ở một số thế hệ với số đỉnh lớn hơn 20
Số lương quần thể
Thế hệ thứ
Độ thích nghi
Cá thể tốt nhất
24
16
0.50
1 2 3 5 4
32
24
0.50
1 2 3 21 10
64
32
0.75
1 2 3 21 9

128
64
0.75
1 2 3 8 10
265
128
0.833
1 2 3 8 9
3.2.5.2. Đồ thị vô hướng có nhãn.
 Trường hợp 1: Đồ thị vô hướng có nhãn với số đỉnh <10, chúng tôi sử dụng hai
đồ thị trong hình vẽ sau

Đồ thị G
M
Đồ thị G
D
 Các kết quả thực nghiệm:
Bảng 10 : Kết quả độ thích nghi ở một số thế hệ với số đỉnh nhỏ hơn 10
Số lương quần thể
Thế hệ thứ
Cá thể tốt nhất
Độ thích nghi
P_Size = 64
G = 4
1 2 5 3
0.667
P_Size = 64
G = 8
1 2 5 4
0.75

P_Size = 64
G = 10
8 6 5 7
0.75
P_Size = 128
G = 14
1 2 3 4
0.75


23
Bảng 11 : Kết quả độ thích nghi ở một số thế hệ với số đỉnh lớn hơn 10 nhỏ hơn
20
Số lượng quần thể
Thế hệ thứ
Độ thích nghi
Cá thể tốt nhất
32
24
0.50
1 2 5 4
32
64
0.50
1 2 3 5
64
32
0.50
1 2 10 4
128

64
0.75
1 2 3 4
265
64
0.833
1 2 3 4

Bảng 12 : Kết quả độ thích nghi ở một số thế hệ với số đỉnh lớn hơn 20
Số lương quần thể
Thế hệ thứ
Độ thích nghi
Cá thể tốt nhất
24
16
0.50
1 2 3 5 4
32
24
0.50
1 2 3 21 10
64
32
0.75
1 2 3 21 9
128
64
0.75
1 2 3 8 10
265

128
0.833
1 2 3 8 9
3.3. Ứng dụng so khớp đồ thị vào so khớp DOM- Tree.
Hai trang web có DOM- Tree giống nhau sẽ phải có cách bố trí tương tự nhau.
Tuy nhiên nó vẫn có thể xảy ra trường hợp hai trang web có DOM- Tree không hoàn
toàn giống nhau nhưng lại có cùng cách bố trí giống nhau. Điều này là các người quản
trị đã thay đổi một số cấu trúc của trang web đã được sao chép để trông giống với
trang web gốc, nghĩa là, trang web này có thể là một trang lừa đảo. Đưa ra hai DOM-
Tree, chúng ta có thể so sánh sự tương đồng của chúng theo hai cách khác nhau: Thứ
nhất, có thể so sánh các thẻ (tag) của hai trang; Thứ hai, có thể so sánh các đồ thị con
được trích từ hai DOM-Tree đó. Trong việc làm này, chúng tôi tập trung vào cách tiếp
cận thứ hai.
Chúng tôi giả định đưa ra một đồ thị G(V,E) và một bộ các mẫu Ω, tìm các đồ
thị con của G sao cho G
i
Ω các tương đồng lớn hơn ngưỡng δ.
Sau đây là mã giả của thuật toán:
Algorithm 2: Phishing Detect
Input: - G
P
=(V
P
, E
P
) and set of templates Ω={G
1
, ,G
N
}

- Threshold δ
Output: -
 
|
i
iG
R G S



Begin
 
R 
;
for (i=1; i<=N; i++)
if (Computing similarity(G
i
)>δ)

 
i
R R G
;
ReturnR;
End.
Thuật toán của chúng tôi được viết bằng ngôn ngữ C. Chúng tôi kiểm tra cách
tiếp cận của chúng tôi trên một tập 5 trang web ví dụ (ký hiệu là p1,p2, p3, p4 và p5)
với ba kích thước khác nhau (DOM-Tree ít hơn 10 nút, DOM-Tree từ 10 đến 20 nút,
và DOM-Tree lớn hơn 20) và 10 trang web mẫu (ký hiệu là T1,T2, ,T10) với ba
24

kích thước khác nhau (DOM-Tree ít hơn 20 nút, từ 20 đến 50 nút, và lớn hơn 50 nút)
để tính toán sự tương tự giữa các trang ví dụ và trang mẫu. Chúng tôi so sánh thuật
toán của chúng tôi với thuật toán so khớp cây STM (Simple Tree Matching) đưa ra
trong Bảng 13 : Kết quả so sánh giữa GA và STM (%)


P1
P2
P3
P4
P5
GA
STM
GA
STM
GA
STM
GA
STM
GA
STM
T1
72
64
61
61
87
83
93
93

100
100
T2
32
12
23
20
41
34
68
68
54
61
T3
52
43
28
13
76
62
27
18
39
34
T4
65
58
55
40
90

80
54
49
27
18
T5
99
90
29
22
63
57
67
59
83
68
T6
79
68
83
70
76
68
79
70
40
32
T7
71
61

87
80
100
85
76
62
51
43
T8
49
41
91
86
61
51
41
31
92
81
T9
80
71
61
51
78
69
74
62
97
86

T10
88
83
37
29
71
59
91
82
46
33
Chúng tôi cũng thực hiện thuật toán với tập các trang web giả mạo được liệt kê
trên trang phishtank.com Error! Reference source not found. – được biết như là
trang cập nhật các trang web giả mạo thực trên internet. Kết quả chỉ ra trong bảng 16,
ngưỡng cao là nguy hiểm vì kẻ tấn công có thể bắt trước các trang web hợp pháp băng
việc thay đổi sự biếu DOM-Tree của các trang web giả mạo. Trong thực nghiệm,
chúng đôi đặt ngưỡng δ từ 0.1 tới 0.9. Chúng tôi đã phát hiện được 100 web trong tập
dữ liệu phishtank bao gồm: Lừa đảo (valid phishing), không lừa đảo (novalid
phishing) và chưa xác định (unknow)
Bảng 14 : Tỷ lệ % phát hiện đúng, sai với các ngưỡng khác nhau
δ
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9

Nhận dạng đúng (%)
75
63
57
35
22
17
0
0
1
Nhận dạng sai (%)
0
0
0
0
0
0
21
48
92
Chúng ta có thể nhìn từ bảng 16 các kết quả là liên quan chặt chẽ đến việc phát
hiện trang web giả mạo với ngưỡng δ=0.6. Trong thực tế, nếu các trang web hợp pháp
chữa nhiều thành phần đặc biệt trong DOM-Tree, nó dễ dàng được phân biệt từ các
trang web khác.
3.4. Kết chương
Trong chương này, luận án đã trình bày về cấu trúc DOM của trang HTML và
XML và cách xây dựng DOM-Tree. Sau đó, luận án đã trình bày chi tiết bài toán so
khớp đồ thị không chính xác. Một số cách tiếp cận liên quan và những tồn tại của
chúng. Tiếp theo, luận án trình bày một cách tiếp cận mới cho việc so khớp đồ thị dựa
trên thuật toán di truyền trong chi tiết. Thuật toán đề xuất có thể áp dụng trên một số

lớp đồ thị như vô hướng, có hướng, có trọng số hay gán nhãn. Cuối cùng là việc áp
dụng của thuật toán so khớp đồ thị vào việc phát hiện trang web giả mạo dựa vào cấu
trúc DOM của chúng.


25
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
Trong luận án này, với mục tiêu áp dụng các thuật toán so khớp trong việc phát
triển các hệ thống phát hiện xâm nhập trái phép, luận án đã đạt được các kết quả như
sau:
(i) Phân tích đánh giá về hiệu năng cũng như thời gian thực hiện các thuật toán
so khớp đơn mẫu trên hệ thống phát hiện thâm nhập Snort;
(ii) Đưa ra các cải tiến cho thuật toán so khớp đa mẫu Aho – Corasick bằng
cách sử dụng kỹ thuật nén dòng và bảng chỉ số nhằm nâng cao hiệu quả của
thuật toán, các phân tích và so sánh thực tế nhằm kiểm nghiệm lý thuyết
cũng đã được thực hiện trên hệ thống Snort ;
(iii) Luận án cũng đề xuất một thuật toán so khớp đa mẫu mới bằng cách xây
dựng biểu đồ của các mẫu kết hợp với danh sách liên kết làm giảm thời gian
thực hiện việc so khớp đồng thời đa mẫu. Việc cài đặt thực nghiệm của
thuật toán với trong sự so sánh với một số thuật toán đã tồn tại cũng đã triển
khai trên hệ thống Snort.
Những kết quả đạt được ở trên mới chỉ đơn thuần dựa trên giả thiết các mẫu tấn
công đã có các mô hình mà chưa đề cập đến việc phân tích và mô hình hóa các mẫu
tấn công hay hành vi của mạng của các cuộc xâm nhập trái phép. Mặt khác, các cách
tiếp cận dựa trên học máy cũng đa được sử dụng rất nhiều nhưng luận án cũng chưa đề
cập đến hướng này. Vì vậy, đây được xem như là một phần trong kế hoạch tương lai
của luận án.
Với mục tiêu phát hiện các trang web giả mạo, luận án đã đạt được các kết quả như
sau:
(iv) Đưa ra thuật toán mới dựa trên thuật toán di truyền để so khớp các đồ thị

không chính xác. Thuật toán mới có thể áp dụng đối với lớp đồ thị vô
hướng, có hướng, có trọng số hay gán nhãn.
(v) Áp dụng việc so khớp đồ thị vào việc so khớp các DOM-Tree để phát hiện
các trang web giả mạo.
Với kết quả này, luận án mới chỉ dừng lại ở việc so khớp cấu trúc của trang web
và phần nội dung là văn bản trong trang web. Các yếu tố về hình ảnh, âm thanh,…
thường được sử dụng trong các trang web như là những phần không thể thiếu. Việc so
khớp các thành phần này cần phải được thực hiện để so khớp hai trang web được chính
xác hơn. Đây là phần thiếu sót của luận án và cũng là một trong những định hướng
nghiên cứu tiếp của luận án.


×