26
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

NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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

Page 2: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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

Page 3: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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

Page 4: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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

Page 5: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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

Page 6: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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

Page 7: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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++;

Page 8: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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;

Page 9: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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+maxgs[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)

Page 10: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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,q0)

Input

y ← array of n bytes representing the text input

n ← integerrepresenting the text leght

q0← initial state

2: state ← q0

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

Page 11: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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

Page 12: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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

Page 13: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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

Page 14: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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);

Page 15: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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á

Page 16: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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:

Page 17: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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:

Pi 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ỏ Pi (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ỏ Pj

(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)

Page 18: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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ỏ Pi 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

P0← array of keyword lengths P0[j] (j=1…m)

m ← number of patterns

G ← graph of pattern P

S ←Set of Pi

2: S = ∅; 3: for i=1 → n do

4: Init pointer Pi = P0;

5: S = S U Pi

6: If (T[i] in G) and (PjinS) then

7: Pj[position of T[i] in P[j]] = Pj[position of T[i] in P[j]] -1;

8: If (Pj[k] = 0) then

9: Output P[k] detected;

10: Remove Pj;

11: endif

12: If (PjinS) and (Pjnot change) then Remove Pj

13: endif

Page 19: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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,

Page 20: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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, LV, LE, với |V| =n. Đồ thị G được biểu diễn

bởi ma trận kề M = (mi,j)n*n, i, j = , trong đó mii = và mi,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

GM và đồ thị dữ liệu GD 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ị GM = (VM , EM) và GD= (VD,ED) với |VM| =

m, |VD| = n (m < n) ta phải đi tìm một ánh xạ f: VM VD phù hợp nhất biến mỗi cặp

đỉnh của đồ thị GM thành một cặp đỉnh của đồ thị GD. 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 EM , cho ta cặp

(f(u),f(v)) ED. Như vậy cung (f(u),f(v)) là ảnh của cung (u,v) trong đồ thị GD.

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)

Page 21: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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ể

Page 22: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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ị GM Đồ thị GD

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

Page 23: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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 ∀Gi Ω 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: - GP=(VP, EP) and set of templates Ω=G1,..,GN

- Threshold δ

Output: - |ii GR G S

Begin

R ;

for (i=1; i<=N; i++) if (Computing similarity(Gi)>δ)

iR 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

Page 24: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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.

Page 25: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

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.

Page 26: NGHIÊN CỨU MỘT SỐ KỸ THUẬT PHÁT HIỆN GIẢ MẠO TRÊN WEB NCS Le Dang Nguyen.pdf · Internet đã mở ra một làn sóng mới về xu hướng phát triển của

26

DANH MỤC CÁC CÔNG TRÌNH ĐÃ CÔNG BỐ LIÊN QUAN ĐẾN LUẬN ÁN

[1]. Lê Đắc Nhường, Lê Đăng Nguyên, Trịnh Thị Thùy Giang, Lê Trọng Vĩnh.

Phân tích, đánh giá hiệu quả của các thuật toán so khớp chuỗi dùng trong an

ninh mạng, Hội thảo các vấn đề chọn lọc về CNTT & TT lần thứ 14, Tr.451-

463, Cần Thơ 7-8/10/2011. NXB Khoa học kỹ thuật Hà Nội 2012.

[2]. Lê Đắc Nhường, Nguyễn Gia Như, Lê Đăng Nguyên Lê Trọng Vĩnh. Song

song hóa thuật toán so khớp mẫu QuickSearch trong NIDS sử dụng mô hình

chia sẻ bộ nhớ trên OpenMP và Pthreads. Tạp chí Đại học Quốc gia Hà Nội,

tháng 12/2012. Vol 28(4), Tr 255 – 263.

[3]. Lê Đắc Nhường, Nguyễn Gia Như, Lê Đăng Nguyên Lê Trọng Vĩnh, Tối ưu

không gian trạng thái của thuật toán AHO-CORASICK sử dụng kỹ thuật nén

dòng và bảng chỉ số, Bài báo Bưu chính viễn thông 2013 Số 9(29), Tr 23-29.

[4]. Le Dang Nguyen, Dac Nhuong Le, Tran Thi Huong, Le Trong Vinh, A New

Genetic Algorithm Applied to Inexact Graph Matching. International Journal

of Computer Science and Telecommunications, Vol.5(5), pp.1-7, 2014.

[5]. Le Dang Nguyen, Dac Nhuong Le, Le Trong Vinh, A New Multiple-Pattern

Matching Algorithm for the Network Intrusion Detection System – 4th

International Conference on Security Science and Technology (ICSST 2015)

(Accepted) January 15-16, 2015 Portsmouth, UK

[6]. Le Dang Nguyen, Dac Nhuong Le, Le Trong Vinh, Detecting Phishing Web

Pages based on DOM-Tree Structure and Graph Matching Algorithm- The

Fifth International Symposium on Information and Communication

Technologies, SoICT 2014, December 4-5, 2014, Hanoi, Vietnam(Accepted)