1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu hiện thực bộ so trùng chuỗi động trong clamav dựa trên nền tảng phần cứng

128 26 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 128
Dung lượng 8,99 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mô hình B-FSM trong [4] có thêm tính năng chuyển bảng băm khi có sự xung đột, cho ra được kết quả với hiệu suất và hiệu quả sử dụng bộ nhớ cao.Tuy nhiên, với những cải tiến này, giải phá

Trang 1

ĐẠI HỌC QUỐC GIA TP HCM

TRƯỜNG ĐẠI HỌC BÁCH KHOA

-

NGUYỄN KIM ĐIỀN

NGHIÊN CỨU HIỆN THỰC BỘ SO TRÙNG CHUỖI ĐỘNG TRONG CLAMAV DỰA TRÊN

Trang 2

CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA –ĐHQG -HCM

Cán bộ hướng dẫn khoa học : TS Trần Ngọc Thịnh

Cán bộ chấm nhận xét 1 : TS Trần Mạnh Hà

Cán bộ chấm nhận xét 2 : TS Trương Quang Vinh

Luận văn thạc sĩ được bảo vệ tại Trường Đại học Bách Khoa, ĐHQG Tp HCM ngày 8 tháng 1 năm 2015 Thành phần Hội đồng đánh giá luận văn thạc sĩ gồm: (Ghi rõ họ, tên, học hàm, học vị của Hội đồng chấm bảo vệ luận văn thạc sĩ) 1 TS Lê Lam Sơn……

2 TS Phạm Hoàng Anh

3 TS Nguyễn Thanh Bình

4 TS Trần Mạnh Hà

5 TS Trương Quang Vinh

Xác nhận của Chủ tịch Hội đồng đánh giá LV và Trưởng Khoa quản lý chuyên ngành sau khi luận văn đã được sửa chữa (nếu có) CHỦ TỊCH HỘI ĐỒNG TRƯỞNG KHOA…………

Trang 3

NHIỆM VỤ LUẬN VĂN THẠC SĨ

Họ tên học viên: Nguyễn Kim Điền MSHV: 11070443

Ngày, tháng, năm sinh: 23/09/1988 Nơi sinh: TP Hồ Chí Minh Chuyên ngành: Khoa học máy tính Mã số : 604801

I TÊN ĐỀ TÀI:

NGHIÊN CỨU HIỆN THỰC BỘ SO TRÙNG CHUỖI ĐỘNG TRONG

CLAMAV DỰA TRÊN NỀN TẢNG PHẦN CỨNG

II NHIỆM VỤ VÀ NỘI DUNG:

 Tìm hiểu và đề xuất phương pháp so trùng mẫu cho tập mẫu động của chương

trình Clam Antivirus

 Thiết kế và hiện thực hệ thống so trùng chuỗi động trên nền tảng phần cứng

FPGA

 Xây dựng công cụ phân tích và xử lý chuỗi động từ tập mẫu của Clam antivirus

III NGÀY GIAO NHIỆM VỤ : 20/01/2014

IV NGÀY HOÀN THÀNH NHIỆM VỤ: 21/11/2014

Trang 4

Lời cám ơn

Đầu tiên, tôi xin gửi lời cám ơn chân thành tới Thầy hướng dẫn của tôi TS Trần Ngọc Thịnh Trong suốt qua trình thực hiện luận văn, Thầy đã luôn quan tâm theo sát và hỗ trợ tôi Những lời động viên và hướng dẫn tận tình của Thầy là nguồn động lực lớn nhất cho tôi hoàn thành luận văn này

Tôi cũng xin gửi lời cám ơn đến bạn Trần Trung Hiếu, anh Trần Huy Vũ, anh Nguyễn Duy Thái những người bạn đã động viên và hỗ trợ tôi rất nhiều trong thời gian học tập

và nghiên cứu tại trường Bên cạnh đó tôi cũng xin gửi lời cám ơn đến các bạn học viên cao học khóa 2011, các em sinh viên khóa 2010,làm thực tập và luận văn trên NetFPGA platform, về những hỗ trợ và chia sẻ trong suốt quá trình tôi thực hiện luận văn này

Và cuối cùng, tôi xin gửi lời cám ơn sâu sắc đến gia đình, bạn bè và những người thân

đã luôn là chỗ dựa tinh thần vững chắc, cổ vũ cho tôi trong suốt quá trình học tập, nghiên cứu

TP Hồ Chí Minh tháng 12/2014

Nguyễn Kim Điền

Trang 5

Tóm tắt luận văn

So trùng mẫu đóng một vai trò quan trọng trong các ứng dụng bảo mật hiện đại như quét virus, hệ thống phát hiện xâm nhập mạng, và tường lửa Bằng cách so sánh dòng

dữ liệu đầu với các mẫu chứa các chuỗi byte được xác định trước, các đoạn mã độc hại

có thể được phát hiện Mặc dù có rất nhiều cải tiến trong mô hình thuật toán so trùng mẫu, quá trình này vẫn chiếm một số lượng đáng kể tài nguyên và làm giảm hiệu suất hệ thống Ngoài ra, do số lượng ngày càng tăng và sự phức tạp của mẫu virus, là nguyên nhân chính tạo ra tắc nghẽn cổ chai trong ứng dụng chống virus dựa trên phần mềm Nhu cầu quét virus tốc độ cao dẫn đến các nỗ lực xây dựng các công cụ so trùng mẫu dựa trên phần cứng Luận văn trình bày một kiến trúc hiệu quả cho việc so trùng mẫu động với tập mẫu virus của chương trình Clam AntiVirus (ClamAV) trên nền tảng công nghệ có khả năng cấu hình FPGA Luận văn cũng áp dụng phương pháp bộ lọc Bloom

để lọc dữ liệu đầu vào và bộ lọc Bloomier cho việc kiểm tra dữ liệu khả nghi Phương pháp tiếp cận được đề xuất trong luân văn có thể hỗ trợ các mẫu virus có chiều dài lên đến 256 byte và phương pháp này có thể áp dụng được cho mẫu động và cả mẫu tĩnh Thiết kế thử nghiệm được trình bày trong luận văn có thể hỗ trợ lên đến 8K số lượng mẫu động của ClamAV (chiếm 84.75% toàn bộ tập mẫu động)

Trong phương pháp phân tích và tổng hợp tập mẫu, luận văn trình bày quy trình và phát triển các công cụ cho phép tự động phân tích, xử lý tập mẫu virus của ClamAV và xây dựng các tham số cho bộ so trùng mẫu động

Kiến trúc phần cứng được kiểm tra với tập mẫu động của ClamAV Các bước kiểm tra được thực hiện thành công cả trên phần mềm với công cụ mô phỏng của Xilinx và trên phần cứng với nền tảng phát triển ứng dụng mạng NetFPGA

Trang 6

ABSTRACT

Signature scanning plays an important role on modern security application such as virus scanners, intrusion detection/prevention systems, and firewalls By comparing an input data stream against a set of predefined byte-string patterns, malicious activities can

be detected Although there are many improvements in pattern matching algorithms, this process still occupies a significant amount of resources and slowdown system performance In addition, due to the growing number and the complexity of virus signatures, it has become a bottle-neck task in software-based antivirus program

High demand of scanning throughput gives rise to recent efforts on hardware-based matching engine This thesis proposed an efficient architecture for matching Clam Antivirus (ClamAV) signatures on reconfigurable platform (FPGA) Thesis utilize Bloom filter technique for filtering input data and Bloomier filter technique for one round check suspect data Thesis proposed approach supports up to 256 byte length signatures and can handle both basic and regular expression signatures Implemented prototype on NetFPGA platform could handle up to 8K regular expression signatures (84.75% in total)

The pattern analyzer and complier provide an automatic and fully configurable approach to analyze ClamAV signature set and construct parameter for regular expression scan engine

The proposed multi-pattern matching architecture has been evaluated using ClamAV regular expression signature set Experimental system has been verified on software using Xilinx simulation tool and deployed on NetFPGA platform

Trang 7

Lời cam đoan

Tôi xin cam đoan rằng, ngoài những tài liệu tham khảo và các tài liệu khác như đã chú thích nguồn gốc đính kèm thì toàn bộ nội dung trong báo cáo này đều là kết quả nghiên cứu của chính tôi và do tôi tự soạn thảo

Nếu có bất cứ sai phạm nào so với lời cam kết, tôi xin chịu các hình thức xử lý theo quy định

Nguyễn Kim Điền

Trang 8

MỤC LỤC

Lời cám ơn i

Tóm tắt luận văn ii

ABSTRACT iii

Lời cam đoan iv

CHƯƠNG 1 GIỚI THIỆU 1

1.1 Tính cấp thiết của đề tài 1

1.2 Phát biểu vấn đề 2

1.3 Đóng góp của luận văn 2

1.4 Cấu trúc luận văn 3

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG 4

2.1 So trùng mẫu 4

2.2 Tổng quan các nghiên cứu trước đây 5

2.2.1 Phương pháp máy trạng thái 6

2.2.2 Hash checksum 10

2.2.3 Bộ lọc Bloom 12

2.2.4 Perfect Hash 15

2.2.5 Bộ lọc Bloomier 17

2.3 Bộ so trùng mẫu đơn Bloom và Bloomier 20

2.3.1 Bộ lọc Bloom và Bloomier 20

2.3.2 Hàm Hash 21

2.3.3 Kiến trúc bộ so trùng mẫu BBF 23

2.4 NetFPGA Platform 27

Trang 9

CHƯƠNG 3 TỔNG QUAN 29

3.1 Tập cơ sở dữ liệu chữ ký mẫu virus của ClamAV 29

3.1.1 Phân loại mẫu 31

3.1.2 Thống kê mẫu động 33

3.2 So trùng mẫu động trên phần cứng 36

3.2.1 Phân tích và tổng hợp tập mẫu virus 37

3.2.2 Kiến trúc phần cứng 39

CHƯƠNG 4 HIỆN THỰC PHẦN CỨNG 41

4.1 Tổng quan 41

4.2 Khối Arbiter 43

4.3 Event Buffer 44

4.4 Sub-pattern Metadata 44

4.5 Khối Trace Validate 45

4.6 Trace Metadata 47

4.7 Pattern Reassembly Controller 48

CHƯƠNG 5 PHÂN TÍCH VÀ XỬ LÝ TẬP MẪU 53

5.1 Signature Classification 54

5.2 Wildcard Extraction 55

5.2.1 Ký tự wildcard Byte-Or 55

5.2.2 Loại bỏ trường hợp đặc biệt 57

5.2.3 Segmentation 57

5.2.4 Wildcard Conversation 58

5.3 Fragmentation 60

Trang 10

5.4 Tạo Metadata 61

5.4.1 Tìm kiếm hàm Hash 61

5.4.2 Tính toán dữ liệu cho mỗi fragment 63

5.4.3 Sub-pattern Metadata 65

CHƯƠNG 6 ĐÁNH GIÁ VÀ KIỂM NGHIỆM HỆ THỐNG 66

6.1 Đánh giá kiến trúc hệ thống 66

6.1.1 Thống kê đánh giá phân tích tập mẫu 66

6.1.2 Hiện thực thử nghiệm hệ thống trên FPGA 69

6.2 Thử nghiệm hệ thống 66

CHƯƠNG 7 TỔNG KẾT 77

7.1 Kết quả luận văn 77

7.2 Định hướng phát triển 77

Tài liệu tham khảo 78

Trang 11

MỤC LỤC HÌNH

Hình 2-7 Số lượng các hàm hash và tỷ lệ “false positive” tương ứng Tỷ lệ “false positive” giảm đáng kể với sự gia tăng của các hàm hash: từ 83% (2 hàm

Hình 3-1 các mẫu chữ ký virus trong các tập tin cở sở dữ liệu của ClamAV 30

Hình 3-3 Biểu đồ số lượng mẫu chứa từng loại wildcard 35 Hình 3-4 Mô hình giao tiếp của module xử lý mẫu động 37 Hình 3-5 Mô hình tổng quát phân tích xử lý mẫu động và xây dựng hẹ thống 38 Hình 3-6 Mô hình tổng quát kiến trúc phần cứng của bộ so trùng mẫu động 39 Hình 4-1 Tổng quan kiến trúc so trùng mẫu chữ ký virus động 41 Hình 4-2 Biểu đồ tín hiệu giao tiếp đọc ghi trên FIFO 44 Hình 4-3 Thiết kế pipeline cho xử lý tái ghép mẫu động 50 Hình 5-1 Sơ đồ hoạt động của phần mềm phân tích và xử lý mẫu 54

Hình 6-1 Phân bố số lượng mẫu con trong mẫu động 66

Hình 6-3 Thống kê số phần tử thay thế trong các mẫu có 3 Byte-OR 68

Trang 12

Hình 6-5 Tổng hợp Pattern Reassembly Module 72 Hình 6-6 Tổng hợp Pattern Reassembly Controller 73

Trang 13

MỤC LỤC BẢNG

Bảng 2-1 Hash Table 11

Bảng 2-2 Quá trình so trùng sử dụng Hash 11

Bảng 2-3 So sánh hoạt động của các bộ lọc Bloom, Bloomier và Bloom-Bloomier21 Bảng 2-4 Nội dung của một Fragment 25

Bảng 2-5 Các loại Fragment 26

Bảng 3-1 Kết quả phân tích cơ sở dữ liệu ClamAV 31

Bảng 3-2 Các wildcard xuất hiện trong cở sở dữ liệu ClamAV 34

Bảng 3-3 Một số thống kê tập mẫu động 35

Bảng 4-1 Mô tả chức năng Control Information 43

Bảng 4-2 Nội dung sub-pattern metadata 45

Bảng 4-3 Nội dung Trace Metadata 48

Bảng 4-4 Các trạng thái pipeline của Pattern Reassembly Controller 49

Bảng 5-1 Thống kê số lượng mẫu tĩnh và mẫu động 54

Bảng 5-2 Thống kê số mẫu với từng loại Byte-Or 56

Bảng 5-3 Chuyển đổi wildcard 59

Bảng 5-4 Dữ liệu mã hóa trong Bloomier của mỗi fragment 63

Bảng 5-5 Dữ liệu lưu trữ trong SRAM của mỗi fragment 63

Bảng 6-1 Thống kê theo số mẫu chứa và có thể sinh ra của Byte-Or 67

Bảng 6-2 Thống kê số lương mẫu và mẫu con phát sinh thêm trong trường hợp 3 Byte-Or 69

Bảng 6-3 Giá trị các tham số trong bảng hiện thực thử nghiệm 70

Bảng 6-4 Tài nguyên để hiện thực Pattern Reassembly Module 70

Bảng 6-5 So sánh với các phương pháp khác dựa trên chỉ số PEM 75

Trang 14

CHƯƠNG 1 GIỚI THIỆU

1.1 Tính cấp thiết của đề tài

Ngày nay, mạng máy tính bùng nổ trở thành một phần thiết yếu của cuộc sống hàng ngày cũng như trong công việc kinh doanh Theo thống kê thì số lượng người sử dụng Internet trên toàn thế giới đã tăng gấp đôi trong 5 năm qua và đã vượt qua mốc 2

tỷ trong năm 2010, với phần lớn trong số 226 triệu người dùng mới đến từ các nước đang phát triển

Song song với sự phát triển mạnh mẽ, Internet còn là phương tiện hữu hiệu để phát tán các virus máy tính Những virus mới được viết trong thời gian gần đây không còn thực hiện các trò đùa hay sự phá hoại đối máy tính của nạn nhân bị lây nhiễm nữa,

mà đa phần hướng đến việc lấy cắp các thông tin cá nhân nhạy cảm (các mã số thẻ tín dụng) mở cửa sau cho tin tặc đột nhập chiếm quyền điều khiển hoặc các hành động khác nhằm có lợi cho người phát tán virus Kết quả là, an ninh thông tin, virus máy tính cụ thể hơn, đang trở thành một trong những vấn đề quan trọng nhất với người sử dụng Internet Vì vậy, chương trình chống virus là thành phần thiết yếu trong tất cả các giải pháp bảo mật

So trùng mẫu là quá trình xử lý chính trong các chương trình chống virus, kiểm tra sự xuất hiện của các mẫu virus được biết đến trong nội dung tập tin Điều này tốn một số lượng đáng kể thời gian cũng như tài nguyên hệ thống do số lượng ngày càng tăng của virus Bên cạnh đó, tốc độ của quá trình quét giảm khi số lượng mẫu tăng Đồng thời, hiệu suất của hệ thống mà chạy chương trình chống virus cũng bị ảnh hưởng

Mặc dù có nhiều lợi thế và cải tiến trong chương trình chống virus dựa trên phần mềm, nhưng kích thước và sự đa dạng của virus ngày càng tăng, việc đảm bảo độ ổn định và tính chính xác của hệ thống càng trở lên khó khăn hơn Vì vậy các giải pháp phần cứng (hardware) cho bài toán này là cần thiết và tất yếu Với các đặc điểm thuận

Trang 15

lợi của mình thì việc cải tiến các chương trình anti-virus trên phần cứng, đặc biệt là các thiết bị phần cứng khả lập trình (Field Programable Gate Array- FPGA) đang là một lĩnh vực nghiên cứu ứng dụng rất mới mẻ và có nhiều tiềm năng phát triển trên thế giới

1.2 Phát biểu vấn đề

ClamAV là phần mềm anti-virus, mã nguồn mở nổi tiếng nhất hiện nay trên hệ linux, và được sử dụng trong các công trình nghiên cứu Vì vậy, lựa chọn ClamAV để nghiên cứu cải tiến là thích hợp

Công trình nghiên cứu của Xin Zhou và các cộng sự [1], chứng tỏ rằng hầu hết thời gian trong giai đoạn quét virus chỉ đơn giản là so trùng mẫu (chiếm 73.4% thời gian quét) Trong đó, thời gian so trùng chuỗi động chiếm 25.9%, mặc dù số lượng mẫu động chỉ 3.3% trong tổng số mẫu Bên cạnh đó, tốc độ quét sẽ giảm khi số lượng các mẫu tăng lên Dẫn đến hiệu suất của các chương trình anti-virus bị ảnh hưởng

Vì vậy, đề tài luận văn tập trung vào bài toán so trùng mẫu động trên phần cứng nhằm giảm thời gian quét virus của phần mềm ClamAV Đây là một phần quan trọng đóng vai trò quyết định trong tốc độ và hiệu năng của ClamAV, và các chương trình anti-virus khác

1.3 Đóng góp của luận văn

Luận văn chỉ ra được tính khả thi trong vấn đề tăng tốc độ trong các chương trình antivirus bằng cách sử dụng phần cứng và mở ra tiềm năng trong việc sử dụng các thiết

bị FPGA

Những đóng góp chính của luận văn là:

 Kiến trúc so trùng mẫu động, hỗ trợ các ký tự wildcard

 Phương pháp phân tích, xử lý tập mẫu của ClamAV, tạo ra các file cấu hình cho phần cứng dựa vào lựa chọn của người dùng

Trang 16

 Các kết quả nghiên cứu và thực nghiệm trong giai đoạn luận văn đã được công

bố trong tạp chí khoa học công nghệ năm 2013 và kỷ yếu hội nghị quốc tế FDSE của Springer năm 2014

1.4 Cấu trúc luận văn

Phần còn lại của luận văn có cấu trúc như sau:

Chương 2: Trình bày các kiến thức nền tảng liên quan đến đề tài, bao gồm các giải thuật so trùng mẫu và các kết quả nghiên cứu trước đây

Chương 3: Tổng quan về cơ sở dữ liệu mẫu ClamAV và kiến trúc so trùng mẫu động trên phần cứng

Chương 4: Trình bày thiết kế kiến trúc phần cứng của module so trùng mẫu động Chương 5: Trình bày giải pháp, quy trình tổng hợp và phân tích mẫu, cho phép cập nhật và xây dựng nhanh chóng hệ thống

Chương 6: Đánh giá và kiểm nghiệm hệ thống trên board NetFPGA

Chương 7: Tổng kết các kết quả của luận văn và đề xuất hướng phát triển tiếp theo

Trang 17

CHƯƠNG 2 KIẾN THỨC NỀN TẢNG

Chương này được chia thành bốn phần Phần đầu tiên giới thiệu, cung cấp một cái nhìn tổng quan về vấn đề so trùng mẫu Phần thứ hai giới thiệu các giải pháp phần cứng hiện có Phần ba giới thiệu bộ lọc Bloom-Bloomier và mô hình so trùng mẫu tĩnh trên phần cứng BBFex, mà luận văn sử dụng Phần cuối cùng giới thiệu nền tảng phần cứng netFPGA 10G, được sử dụng để hiện thực hệ thống

2.1 So trùng mẫu

So trùng mẫu là một trong những bài toán cơ bản và quan trọng của ngành máy tính Trong ngữ cảnh của luận văn, so trùng mẫu là tác vụ kiểm tra sự tồn tại của một hay nhiều chuỗi cho trước trong một chuỗi liên tục các ký tự Trong NIDS (hệ thống phát hiện xâm nhập mạng) và các ứng dụng antivirus, mỗi ký tự là một byte Mỗi chuỗi cho trước được gọi là một mẫu Một tập hợp các mẫu được gọi là một cơ sở dữ liệu Mỗi mẫu trong một cơ sở dữ liệu là duy nhất

Do sự phát triển và đa dạng của các virus siêu đa hình (polymorphic), một dạng virus máy tính có thể làm thay đổi diện mạo chữ ký của mình thông qua các kỹ thuật như

mã hóa để tránh các phần mềm chống virus phát hiện, cho nên các mẫu virus trong các ứng dụng antivirus có thể chứa các biểu thức chính qui Các biểu thức chính qui cho phép các mẫu virus được mô tả tổng quát hơn nên làm giảm số lượng mẫu trong cơ sở

dữ liệu

Giải thuật cho so trùng mẫu được chia thành hai loại: so trùng mẫu đơn (single pattern) và so trùng đa mẫu (multi pattern) Trong một lần tìm kiếm virus, so trùng mẫu đơn chỉ thực hiện so trùng với một mẫu duy nhất, trong khi so trùng đa mẫu phải tìm kiếm nhiều mẫu cùng lúc có mối quan hệ ràng buộc lẫn nhau Cả 2 loại thường đòi hỏi các mẫu phải được tiền xử lý, các thông tin phụ sau quá trình tiền xử lý được dùng để tăng tốc quá trình so sánh thực tế sau này Trong một số thuật toán chẳng hạn như Aho-

Trang 18

Corasick [2] toàn bộ tập mẫu phải được xử lý thành một cấu trúc dữ liệu dạng cây, hoàn toàn khác với ban đầu

Các thuật toán so trùng mẫu đơn, như Boyer-Moore hoặc Knuth-Morris-Pratt, sử dụng heuristics để giảm số lượng các ký tự so sánh cần thiết để so trùng Bằng cách lặp

đi lặp lại việc tìm kiếm các mẫu đơn trong các đa mẫu, mô hình thuật toán tìm kiếm mẫu đơn có thể áp dụng để tìm kiếm đa mẫu Tuy nhiên, cách tiếp cận này không áp dụng cho cơ sở dữ liệu có quy mô lớn và có kích thước biến thiên lớn Các thuật toán áp dụng phương pháp này không cần phải lưu kết quả so trùng qua từng giai đoạn tìm kiếm và cũng không lợi dụng đặc điểm của cơ sở dữ liệu

Phần mềm hiện thực tìm kiếm đa mẫu thường tiêu thụ tài nguyên hệ thống lớn hơn so với so trùng mẫu đơn Khi số lượng mẫu càng lớn, vì tính chất tuần tự thuần túy trong bộ xử lý trung tâm của phần mềm, nên tốc độ của hệ thống sẽ giảm đáng kể Kết quả là nhiều công trình nghiên cứu để hiện thực thuật toán so trùng đa mẫu trên phần cứng để tăng tốc quá trình này Tuy nhiên việc so trùng đa mẫu vẫn là bài toán phức tạp đặc biệt là xử lý trên phần cứng

Trong phần tiếp theo chủ yếu giới thiệu các dạng của thuật toán so trùng đa mẫu thực hiện trên phần cứng

2.2 Tổng quan các nghiên cứu trước đây

Phần này nêu ra các phương pháp tiếp cận bài toán so trùng mẫu sử dụng phần cứng Các giải pháp cho bài toán so trùng mẫu sử dụng phần cứng đầu tiên dựa trên CAM (content-addressable memory) và nền tảng phần cứng ASIC (application-specific integrated circuit) Các giải pháp mới sau này sử dụng FPGA

CAM lưu các mẫu virus trong các bảng trong bộ nhớ Quá trình quét tuy diễn ra song song nhưng cần phải so sánh qua toàn bộ các mẫu Các ứng dụng CAM thường tiêu tốn bộ nhớ rất lớn, khi tập dữ liệu gia tăng, ngoài ra ra chi phí bộ nhớ phần cứng của CAM khá lớn và tiêu tốn nhiều năng lượng hơn

Trang 19

Giải pháp ASIC hoạt động như một vi xử lý có thể sử dụng cho nhiều mục đích

Vì vậy giải pháp này không có khả năng đạt được mức độ xử lý song song được cung cấp bởi FPGA

Với những đặc điểm nổi trội, FPGA trở thành công nghệ nền tảng để tăng tốc các

bộ so trùng chuỗi Đặc tính song song của nó giúp cho việc tăng tốc bộ so trùng chuỗi trở nên dễ dàng Quan trọng nhất, khả năng tái lập trình của FPGA cung cấp khả năng cập nhật dễ dàng cho các cơ sở dữ liệu virus thay đổi hằng ngày, của các ứng dụng so trùng chuỗi Với công nghệ FPGA, phần cứng có thể được tối ưu hóa cho sơ sở dữ liệu

có khả năng cập nhật dữ liệu thường xuyên Các hướng tiếp cận bài toán so trùng chuỗi động trên FPGA bao gồm phương pháp máy trạng thái (FSM), và nhóm kỹ thuật hash: Perfect Hash, bộ lọc Bloom, bộ lọc Bloomier

2.2.1 Phương pháp máy trạng thái

Phương pháp sử dụng máy trạng thái hữu hạn là một mô hình bao gồm một số lượng nhất định các trạng thái, sự chuyển trạng thái giữa các trạng thái tương tự như một lưu đồ mô tả hoạt động nào sẽ diễn ra khi điều kiện đầu vào được thỏa mãn Phương pháp tiếp cận này đặc biệt phù hợp cho phần cứng FPGA, do có thể sử dụng các bộ flip flop có sẵn để hiện thực các trạng thái Nhìn chung, phương pháp máy trạng thái thường được nghiên cứu và hiện thực dựa trên thuật toán Aho-Corasick (AC) [2] và các biến thể của nó Đầu tiên, thuật toán sẽ chuyển đổi các mẫu trong tập cơ sở dữ liệu mẫu thành các cây AC (cây trạng thái Aho-Corasick), mỗi cạnh của cây biểu diễn cho một ký tự trong mẫu đang xét Hình 2-1 biểu diễn một cây AC đơn giản

Trang 20

Có hai cách hiện thực cây AC là máy trạng thái hữu hạn đơn định (Deterministic Finite Automata – DFA) và máy trạng thái hữu hạn không đơn định (Non-deterministic Finite Automata)

Điểm khác biệt chính giữa hai cách tiếp cận của máy trạng thái hữu hạn nằm ở chỗ hàm chuyển trạng thái của chúng Hàm chuyển trạng thái của DFA trả về một kết quả là một trạng thái đơn kế tiếp và hàm có chức năng tương tự ở NFA trả về một tập các trạng thái, có thể là một tập rỗng Do đó, trong khi NFA cho phép nhiều hơn một trạng thái cùng tích cực tại một thời điểm, DFA chỉ cho phép một trạng thái tích cực Do

Trang 21

đó, thời gian chuyển trạng thái của DFA ít hơn so với NFA, tuy nhiên DFA lại chịu sự bùng nổ trạng thái hơn so với NFA Chính những ưu khuyết điểm của từng mô hình này tạo nên những thuận lợi và khó khăn khi hiện thực trên các thiết bị phần cứng

Hình 2-2 là ví dụ về DFA và NFA Trạng thái S0 đóng vai trò là trạng thái bắt đầu trong cả hai mô hình Tại trạng thái S0 trong mô hình DFA các tín hiệu chuyển trạng thái có thể là 0 hoặc 1, nhưng trong NFA cho phép các cạnh ra có thể không có nhãn (không có ký tự đầu vào), các cạnh này gọi là chuyển trạng thái epsilon (ɛ-transition)

Trang 22

 Độ phức tạp của giải thuật là một hằng số, nó chỉ phụ thuộc vào chiều dài của mẫu, không phục thuộc vào độ lớn của tập dữ liệu Mặc dù giải thuật

AC thực hiện chậm hơn so với các phương pháp sử dụng heuristic, nhưng trong trường hợp xấu nhất, thời gian thực thi vẫn là một hằng số

 Các biểu thức chính qui có thể ánh xạ dễ dàng vào cây AC Như đã đề cập

ở trên, đặc tính này đặc biệt hữu ích cho các ứng dụng antivirus Tuy nhiên, việc sử dụng có thể dẫn đến sự bùng nổ trạng thái trong các mô hình máy trạng thái NFA và DFA

Tuy nhiên, giải thuật AC tồn tại hai giới hạn lớn:

 Sử dụng nhiều bộ nhớ hơn so với phương pháp sử dụng băm như bộ lọc Bloom, đặc biệt đối với tập mẫu có chiều dài trung bình lớn như ClamAV

 Khi thêm một mẫu mới vào, cần phải xây dựng lại toàn bộ cây AC Hạn chế này có ý nghĩa lớn khi hiện thực trên phần cứng mà các trạng thái sử dụng các bộ flip flop Xây dựng lại cây AC đồng nghĩa với việc phải lập trình lại phần cứng Trong khi với kỹ thuật FPGA, việc tạo ra và kiểm tra các bitstream tốn rất nhiều thời gian và công sức cho mỗi lần cập nhật Dữ liệu virus thay đổi hằng ngày, vì vậy việc cập nhật liên tục là một thách thức không nhỏ khi sử dụng phương pháp này

Nhiều biến thể của thuật toán AC đã được đề xuất để cải thiện hiệu suất và sử dụng bộ nhớ hiệu quả hơn Ví dụ như chia phân vùng trạng thái được giới thiệu trong [3] Mô hình B-FSM trong [4] có thêm tính năng chuyển bảng băm khi có sự xung đột, cho ra được kết quả với hiệu suất và hiệu quả sử dụng bộ nhớ cao.Tuy nhiên, với những cải tiến này, giải pháp xây dựng cây AC dựa trên phần cứng chỉ có thể thực hiện được với hơn vài ngàn mẫu trong Snort trên các dòng FPGA hiện nay Số lượng bộ nhớ tiêu thụ tỷ lệ thuận với số ký tự trong cơ sở dữ liệu

Trang 23

2.2.2 Hash checksum

Hash checksum là một phương pháp dựa trên giải thuật băm (hash) để xác định mẫu bằng cách so sánh giá trị băm (checksum) của chuỗi ký tự đầu vào với các giá trị băm của các mẫu trong cơ sở dữ liệu Đầu tiên, phương pháp này chọn một hàm băm (hash function) bất kỳ để tính toán trước các giá trị băm của toàn bộ mẫu trong tập cơ sở

dữ liệu Sau đó kết quả băm như trên được lưu trữ trong một tập hợp, thường là mảng Với cùng một hàm băm như trên, mẫu có thể xác định có xuất hiện hay không dữ liệu đầu vào, chỉ đơn giản bằng cách tiến hành băm dữ liệu đầu vào và so sánh kết quả giá trị băm đó với các tập giá trị băm của các mẫu đã được tính toán trước Nếu giá trị băm của đầu vào giống với giá trị băm của một mẫu nào đó, ta có thể nói mẫu đó có xuất hiện trong dữ liệu đầu vào

Ưu điểm chính của phương pháp tiếp cận này cho bài toán so trùng mẫu là sự đơn giản của thuật toán, phương pháp này dễ dàng thực hiện trên cả phần mềm và phần cứng Ngoài ra, bởi vì phương pháp này chỉ lưu trữ các giá trị băm và các giá trị băm thường không phụ thuộc vào chiều dài của mẫu và cấu trúc dữ liệu đơn giản hơn, nên các giải pháp lưu trữ thường hiệu quả hơn nhiều so với các phương pháp khác

Tuy nhiên, việc sử dụng hash checksum cũng có hai nhược điểm chính sau:

 Đầu tiên, không giống như FSM thể hiện kết quả chính xác, phương pháp băm chỉ cho câu trả lời gần chính xác với một xác suất nhỏ xảy ra “false positive”, ”false positive” là tên gọi cho trường hợp xảy ra khi trong chuỗi đầu vào không có xuất hiện một mẫu nào trong tập cơ sở dữ liệu, nhưng khi qua bộ so trùng bảo là có xuất hiện “false positive” là một vấn đề phổ biến và không tránh khỏi của các phương pháp sử dụng băm Kết quả là cần thêm một bước so sánh để xác định có thực sự trùng hay không

Trang 24

 Thứ hai, phương pháp này chỉ áp dụng cho đơn mẫu Nếu một virus có khả năng thay đổi nội dung của chính nó có thể vượt qua các bộ máy so trùng một cách dễ dàng

Ví dụ sau mô tả sơ bộ cách thức hoạt động của phương pháp này

Ví dụ: Giả sử tập cơ sở dữ liệu mẫu gồm các mẫu có chung độ dài như sau

 Mẫu P1 = “custom”

 Mẫu P2 = “tomato”

Chuỗi đầu vào T = “tocustomator”

Hàm băm (hash function): H() với input là P1 và P2 Sau khi tính toán H(), chúng

ta có giá trị hash cho mỗi mẫu Các giá trị này cũng là vị trí của các mẫu trong bảng hash

Bảng hash (Hash table): là một mảng của các chuỗi mà độ dài là 10 Chuỗi sẽ được lưu trong phần tử tương ứng với giá trị hash H() của các mẫu Bảng 2-1 là kết quả của bảng băm khi băm hai mẫu P1 và P2

Bảng 2-1 Hash Table

Null Null “custom” Null Null Null “tomato” Null Null Null Chuỗi T sẽ chia thành các chuỗi con có chiều dài là 5 ký tự, tương ứng với chiều dài của tập mẫu, sau đó các chuỗi con sẽ được xem xét để xác nhận có trùng với mẫu P1 hay P2 Bảng 2-2 mô tả quá trình so trùng

Bảng 2-2 Quá trình so trùng sử dụng Hash

Trang 25

“custom” 2 “custom” Trùng

Tại vị trí cuối cùng (được đánh dấu *) mặc dù kết quả thực tế là không trùng nhưng kết quả từ phương pháp trả về là trùng Trường hợp này được gọi là “false positive” như đã mô tả trước đó

2.2.3 Bộ lọc Bloom

Bộ lọc Bloom [5] là một phương pháp áp dụng kỹ thuật băm để giải quyết bài toán so trùng chuỗi, sử dụng mảng có chiều dài là 1 bit để so trùng dữ liệu đầu vào với tập các mẫu Cũng giống như các phương pháp sử dụng kỹ thuật băm, bộ lọc Bloom có cấu trúc đơn giản hơn FSM Tuy nhiên, khác với phương pháp hash checksum, bộ lọc Bloom được thiết kế dành cho so trùng đa mẫu, có thể dùng nhiều hàm băm cùng một lúc

Một trong những đặc điểm của bộ lọc Bloom là chỉ kiểm tra có tồn tại chuỗi ký

tự trong tập mẫu hay không Nếu kết quả là không thì có nghĩa là chuỗi đầu vào không trùng với bất kỳ mẫu nào trong cơ sở dữ liệu Nếu kết quả là có, có thể dữ liệu đầu vào

sẽ trùng với một trong các mẫu trong tập dữ liệu mẫu Tuy nhiên, bộ lọc Bloom không chỉ ra được chính xác là mẫu nào trong tập dữ liệu Khi có kết quả là có trùng xảy ra, một quá trình so trùng chính xác là cần thiết để thực hiện so trùng đa mẫu

Với các hàm băm được lựa chọn phù hợp, bộ lọc Bloom và các hướng tiếp cận sử dụng kỹ thuật băm có thể đưa ra một hình phần cứng đơn giản hơn, và do đó có thể hoạt động ở tần số cao hơn và chi phí thấp hơn

Cách thức xây dựng bộ lọc Bloom cho một cơ sở dữ liệu gồm n mẫu như sau Ban đầu, một bảng băm bao gồm m phần tử được tạo ra Mỗi phần từ trong bảng được khởi

Trang 26

tạo với giá trị là 0 (false) Sau đó, lựa chọn k hàm hash khác nhau Tuy không bắt buộc, thường k lớn hơn 1, và việc chọn k sao cho phù hợp với tài nguyên lưu trữ và xác suất xảy ra “false positive” là thấp nhất có thể, công thức sau tính toán giá trị xác suất “false positive” Ngoài ra, tuy việc chọn hàm băm là tùy ý nhưng kết quả băm phải nằm trong khoảng từ 0 đến m-1 Cuối cùng là băm toàn bộ mẫu trong cơ sở dữ liệu vào bảng băm Thứ tự trong bảng tương ứng với giá trị băm được thiết lập là 1 (true) Bởi vì sử dụng k hàm băm, nên mỗi lần băm một mẫu ta thiết lâp được k vị trí trong bảng Lưu ý chỉ có một bảng băm sử dụng cùng với k hàm băm

𝐹𝑎𝑙𝑠𝑒 𝑃𝑜𝑠𝑖𝑡𝑖𝑣𝑒 𝑃𝑟𝑜𝑏𝑎𝑏𝑖𝑙𝑖𝑡𝑦 ≈ (1 − 𝑒−𝑘𝑛/𝑚)𝑘

Kiểm tra dữ liệu đầu vào với bộ lọc Bloom bao gồm hai bước:

 Bước 1: Băm chuỗi đầu vào với cùng k hàm băm đã chọn trong quá trình xây dựng bảng băm đã được đề cập

 Bước 2: Chuỗi đầu vào qua k hàm băm chỉ đến k vị trí trên bảng băm Các giá trị

trong k vị trí là đầu vào của toán tử logic and Nếu kết quả là 0 (false), chuỗi đang

kiểm tra chắc chắn không có xuất hiện các mẫu trong tập mẫu Nếu kết quả là 1 (true), chuỗi kiểm tra có thể có xuất hiện một mẫu nào đó trong tập cơ sở dữ liệu Cách hoạt động của bộ lọc Bloom được minh họa trong Hình 2-3, với k = 2, m = 10

Trang 27

Hình 2-3 Quá trình hoạt động của bộ lọc Bloom

Bộ lọc Bloom có 3 ưu điểm chính so với phương pháp tiếp cận máy trạng thái:

1 Các quá trình tính toán đơn giản hơn, chỉ đơn thuần là băm chuỗi đầu vào, truy

cập k bộ nhớ và thực hiện toán tử logic AND

2 Sử dụng tài nguyên bộ nhớ ít hơn và hiệu quả hơn rất nhiều Bởi vì bộ lọc Bloom chỉ sử dụng bảng chỉ mục 1 bit, bộ nhớ sử dụng không phụ thuộc vào chiều dài của mẫu

3 Việc cập nhật dữ liệu mới trên tập cơ sở dữ liệu mẫu đơn giản Vì toàn bộ bảng băm nằm trên bộ nhớ

Mặc dù có những ưu điểm như đã nói ở trên, bộ lọc Bloom có những hạn chế như sau:

1 Vì mỗi bộ lọc Bloom chỉ hoạt động trên một chiều dài cụ thể, cho nên các mẫu

có chiều dài khác nhau cần có một bộ lọc Bloom riêng Điều đó dẫn đến việc sử dụng rất nhiều bộ lọc Bloom nếu sử dụng chung với cơ sở dữ liệu của ClamAV (các mẫu trong ClamAV có khoảng cách độ dài lớn)

Trang 28

2 Quá trình so trùng chính xác khi có bộ lọc Bloom cho kết quả là 1, và quá trình này cần phải quét qua toàn bộ tập dữ liệu Vì bộ lọc Bloom vẫn còn tồn tại xác suất “false positive” và chỉ trả về kết quả có hoặc không

3 Việc hỗ trợ biểu thức chính qui gặp nhiều khó khăn so với các phương pháp tiếp cận dựa trên máy trạng thái

Một số nhược điểm của bộ lọc Bloom có thể giải quyết bằng cách kết hợp Bloom với thuật toán AC Trong các mẫu được chia thành các phân mảnh với chiều dài là m, sau

đó các phân mảnh được ánh xá tới m bộ lọc Bloom với chiều dài chuỗi có thể xử lý là m-1 Do đó giảm thiểu đáng kể chiều dài của mẫu và vì thế cũng giảm thiểu số lượng bộ lọc Bloom cần thiết Để liên kết các phân mảnh ngược lại thành một mẫu hoàn chỉnh Cây AC được xây dựng trên những phân mảnh (thay vì những ký tự riêng lẻ) Bảng băm được lưu trữ trên các bộ nhớ nội (nằm trong chip FPGA), nhưng các trạng thái và các chuỗi ký tự đã được phân mảnh thực sự được lưu ở các bộ nhớ ngoài Bất cứ một kết quả

là 1 từ bộ lọc Bloom, bộ so trùng chính xác sẽ tải các phân mảnh tương ứng từ bộ nhớ ngoài Mô hình thử nghiệm trong bài báo chỉ hoạt động với 2,259 mẫu đã chiếm tới vài

MB SRAM Mô hình chỉ tương thích với tập cơ sở dữ liệu giới hạn với chiều dài mẫu là ngắn, nó không phù hợp với cơ sở dữ liệu lớn với chiều dài mẫu có thể lớn hơn 1000 như trong ClamAV

2.2.4 Perfect Hash

Perfect Hash được giới thiệu trong [6], [7], với các tiêu chí thiết kế vẫn duy trì được các lợi thế của bộ lọc Bloom nhưng vẫn giải quyết được các nhược điểm của bộ lọc Bloom là xác xuất “false positive” và chỉ cho ra kết quả “có” hoặc “không” Không giống như bộ lọc Bloom, vẫn có thế thể xảy ra xung đột (collision), Perfect Hash thiết

kế mỗi mục trong bảng băm chỉ được tương ứng với một mẫu duy nhất Do đó, một mẫu chỉ có thể lưu trữ tại một vị trí mà giá trị băm trỏ đến và quá trình so trùng chính xác cuối cùng có thể dễ dàng tìm kiếm được mẫu nghi ngờ trùng với dữ liệu đầu vào đang kiểm tra

Trang 29

Về mặt lý thuyết, Perfect Hash cung cấp toàn bộ ưu điểm của bộ lọc Bloom và

tạo điều kiện cho quá trình so trùng chính xác thực hiện dễ dàng để loại bỏ các trường

hợp “false positive” Tuy nhiên, trên thực tế một Perfect Hash khó hiện thực được cho

dù mảng băm có kích thước lớn Các mẫu không hoàn toàn ngẫu nhiên và các hàm băm

cho ra các giá trị phân bố không đều Nếu các giá trị băm của mẫu xảy ra xung đột, việc

xây dựng Perfect Hash sẽ thất bại Trong trường hợp này, một bảng lớn hơn hoặc một

hàm băm khác được thiết kế sao cho việc băm toàn bộ tập mẫu không xảy ra đụng độ

Hình 2-4 là kiến trúc tổng quát của Phmem [4] Thanh ghi dịch (Shift Register)

nhận dữ liệu từ bên ngoài Module Hash Tree lấy dữ liệu từ thanh ghi dịch để tính toán

các giá trị băm, kết quả của giá trị băm là vị trí của địa chỉ của mẫu tương ứng trong bảng

băm chứa trong “Indirection Memory” Mẫu thực sự được lưu trong “Pattern Memory”

Bộ so sánh sẽ so sánh chuỗi ký tự của mẫu mới lấy được với chuỗi tương ứng trong thanh

ghi dịch, để đảm bảo có trùng hay không

Hình 2-4 Kiến trúc tổng quát PHmem

Việc xây dựng bảng băm khó khăn, chính là nguyên nhân chủ yếu dẫn tới những

hạn chế của phương pháp này:

Trang 30

 Với cùng số lượng các mẫu, phương pháp băm hoàn toàn cần đến bảng băm lớn hơn so với bộ lọc Bloom

 Việc cập nhật các mẫu mới có thể dẫn đến việc thay đổi hàm băm và phải băm lại toàn bộ tập mẫu trước đó

 Như bộ lọc Bloom, Perfect Hash chỉ được thiết kế với chiều dài của mẫu

là cố định

 Toàn bộ ký tự của chuỗi có thể lưu trong các chỉ mục của bảng băm Điều này khá khó khăn nếu bảng băm được lưu trữ thực sự trên bộ nhớ nội rất giới hạn trên phần cứng Tuy nhiên, các giá trị checksum của mẫu có thể được lưu trong bảng băm, điều này có thể dẫn đến sự xuất hiện của “false positive” Một cách tiếp cận khác là toàn bộ ký tự của mẫu được lưu trong

bộ nhớ ngoài, các chỉ mục của bảng băm chỉ chứa các giá trị trỏ đến các ô nhớ của mẫu tương ứng Cách tiếp cận này làm giảm hiệu năng của hệ thống

Bộ lọc Bloomier hoạt động như sau Khi có dữ liệu vào, k hàm băm tính toán trên chuỗi ký tự vào và chỉ đến nhiều chỉ mục cùng lúc Trong bộ lọc Bloom, các chỉ mục trong bảng băm có giá trị là 1 dùng để chỉ một kết quả trùng Nhưng trong bộ lọc Bloomier bảng băm được xây dựng trên một phương thức hoàn toàn khác Thay vì chỉ

sử dụng 1 bit trong mỗi mục trong bảng băm, bộ lọc Bloomier lưu trữ thêm nhiều thông tin trong một mục (entry) Kết quả là, kích thước của mỗi mục tùy thuộc vào thông tin

Trang 31

mã hóa Bởi vì các thông tin mở rộng, bảng băm trong Bloomier được xây dựng phức tạp hơn bộ lọc Bloom

Công thức sau mô tả cách để giải mã các thông tin trong bảng băm của bộ lọc Bloom Cũng giống như bộ lọc Bloom, chuỗi đầu vào sau khi qua k hàm băm chỉ ra k vị trí trong bảng băm Sau đó, thực hiện phép logic XOR cho toàn bộ giá trị trong các vị trí

kể trên Ở giai đoạn này, thông tin được phục hồi về ban đầu

là phép XOR liên tiếp trong mảng từ 1 tới k

Ví dụ trong Hình 2-5 mô tả cách tìm kiếm trong bộ lọc Bloomier

Ví dụ:

Hình 2-5 Ví dụ của bộ lọc Bloomier

Giả sử, tập hợp mẫu gồm 3 phần tử {x,y,z} Sau khi thực thi các bước để xây dựng bảng băm của bộ lọc Bloomier với 2 hàm băm, bảng băm cuối cùng có các giá trị

Trang 32

như trong Hình 2-5 Với dấu mũi tên chỉ ra các vị trí băm của mẫu, thông tin chuỗi ký tự của mẫu được lưu trữ trong các bộ nhớ ngoài

Trong các hoạt động tìm kiếm, giả sử chuỗi đầu vào "y" được băm vào vị trí 1 và

6, giá trị 1001, sau khi XOR hai giá trị 0101 và 1100, là giá trị địa chỉ của bộ nhớ ngoài Khi truy cập vào địa chỉ 1001 mà thực sự có chứa mẫu "y", chúng ta có thể kết luận rằng một kết quả trùng

Trong trường hợp, chuỗi đầu vào "t", vị trí 0100 trong bộ nhớ ngoài không chứa bất kỳ mẫu hợp lệ nào Vì vậy, không có kết quả trùng xảy ra

Một trong những hệ thống sử dụng bộ lọc Bloomier cho cơ sở dữ liệu lớn là PERG [8] PERG sử dụng phương pháp băm, mà cụ thể là kết hợp giữa bộ lọc Bloomier và mô hình CRC, để định địa chỉ mẫu Các chuỗi ký tự ban đầu được xem xét kỹ để tìm ra cách tốt nhất để chia các mẫu thành các phân mảnh (fragment), từ đó tiến hành xây dựng bộ lọc Bloomier với tỷ lệ “false positive” là thấp nhất PERG cũng cần thêm các bộ nhớ cache trong chip để lưu trữ thông tin các fragment trùng nhau và phân tích chúng khi giá trị băm khi các phân mảnh đó trùng với chuỗi đầu vào Sau đó, chuỗi đang xem xét có thể được so sánh với các phân mảnh khác trong mỗi bản siêu dữ liệu (metadata) tương ứng với phân mảnh trùng, để xác định mẫu thực sự Kết quả là, thời gian cần thiết cho quá trình tuần tự này phụ thuộc vào số lượng phân mảnh trùng lặp PERG sử dụng CRC-

8 như là bộ lọc đầu tiên trước khi đọc metadata của các phân mảnh này trong các bộ nhớ ngoài Tuy nhiên, xác suất trùng lặp trong CRC-8 vào khoảng 12,5% là lớn, dẫn đến việc PERG sẽ truy vấn các bộ nhớ ngoài 12,5 lần cho mỗi 100 byte đầu vào Ngoài ra, mặc

dù có tỷ lệ “false possitive” là thấp, một kết quả trùng được công nhận trong PERG phải được kiểm tra bởi phần mềm

Trang 33

2.3 Bộ so trùng mẫu đơn Bloom và Bloomier

Tuy nhiên, bộ lọc Bloomier lại chỉ ra được vị trí của mẫu trong bảng băm Vì vậy, quá trình so trùng chính xác cuối cùng chỉ cần thực hiện một tác vụ so sánh Mặc dù vậy,

bộ lọc Bloomier luôn luôn phải thực hiện quá trình so trùng chính xác Đây cũng là điểm bất lợi lớn nhất khi triển khai trên các hệ thống lưu trữ chuỗi ký tự của mẫu trong các bộ nhớ ngoài Hệ thống phải thực hiện truy cập vào bộ nhớ ngoài trong mỗi chuỗi tìm kiếm Việc truy cập bộ nhớ ngoài liên tục làm giảm hiệu suất của hệ thống đáng kể Chính vì điểm này, mà bộ lọc Bloomier có hiệu năng thấp hơn so với bộ lọc Bloom, bộ lọc Bloom chỉ thực hiện đối chiếu khi tất cả các vị trí mà các giá trị băm trỏ tới có giá trị là “1”

Việc kết hợp bộ lọc Bloom và bộ lọc Bloomier được đề cập trong [9], để giảm thiểu quá trình so trùng chính xác yêu cầu phải truy xuất bộ nhớ ngoài có tốc độ thấp Phương pháp này đòi hỏi phải sử dụng nhiều hơn một bit chỉ mục của bảng băm Các

“Bloom bit” được đặt cạnh các bit của Bloomier Các “Bloom bit” này không phải là một phần các bit thông tin mã hóa của Bloomier Tất cả các “Bloom bit” trong bảng băm hoạt động độc lập với các bit thông tin của Bloomier Bộ lọc Bloom được sử dụng để kiểm tra xem chuỗi đang truy vấn có trong tập hay không Nếu tất cả các bit trong các vị trí băm có giá trị là “1”, sau đó hệ thống sẽ giải mã thông tin từ các bit Bloomier để tìm

ra mẫu tương ứng Ưu điểm chính của sự kết hợp này so với bộ lọc Bloom và Bloomier được thể hiện trong ví dụ sau

Trang 34

Ví dụ

Cho trước tập mẫu P = {a,b,c,d,e,f}

Các giá trị đầu vào T = {w,y,d}

Bảng 2-3 So sánh hoạt động của bộ lọc Bloom, bộ lọc Bloomier và Bloom Bloomier Kết quả cho thấy rằng bộ lọc Bloom-Bloomier có tối thiểu số lần truy cập bộ nhớ off-chip Vì thế, hiệu quả của Bloom-Bloomier là cao nhất so với bộ lọc Bloom Filter và bộ lọc Bloomier

Bảng 2-3 So sánh hoạt động của các bộ lọc Bloom, Bloomier và Bloom-Bloomier

P Kết quả không trùng

Có thể có trong tập

P So sánh “d” với tất cả mẫu trong tập

P Kết quả trùng

Bộ lọc Bloomier So sánh “w” với

mẫu “b” Kết quả không trùng

So sánh “y” với mẫu “e” Kết quả không trùng

So sánh “d” với mẫu “d” Kết quả trùng

Có thể có trong tập

P So sánh “d” với mẫu “d” Kết quả không trùng

2.3.2 Hàm Hash

Do cấu trúc song song và pipeline của hệ thống, bộ so trùng BBF sử dùng add-xor (SAX) là hàm băm của hệ thống [11] Ngoài ra, các BBF sẽ so sánh các chuỗi

Trang 35

Shift-tìm kiếm với các chuỗi ký tự ban đầu của mẫu từ bộ nhớ off-chip khi có một tín hiệu từ các bộ BBU xác nhận là trùng, do đó các thông tin được mã hóa trong các chỉ mục của bảng băm là địa chỉ của mẫu tương ứng trong bộ nhớ off-chip

SAX là một lớp hàm băm, với giá trị băm là chuỗi ký tự, được thể hiện ở công thức sau

𝐻𝑖 = 𝐻𝑖−1 𝑋𝑂𝑅 (( 𝐻𝑖−1 ≪ 𝑆𝐿𝑖) + (𝐻𝑖−1 ≫ 𝑆𝑅𝑖) + 𝐶𝑖) SAX rất dễ dàng hiện thực trên phần cứng Chỉ với các tác vụ dịch (shift), cộng (add) và XOR, phần cứng hiện thực SAX chỉ sử dụng các bộ logic đơn giản mà không cần bất kỳ bộ nhân hay các bộ tốn nhiều chu kỳ clock Ngoài ra, hàm SAX có thể hoàn toàn hiện thực bằng phương pháp pipeline Bằng cách chọn chiều dài của hàm SAX bằng với chiều dài của mẫu lớn nhất, các bộ lọc BBF, có cùng chiều dài với các bộ SAX tương ứng, có thể sử dụng chung các dữ liệu đầu ra Thiết kế này được thể hiện ở Hình 2-6

Hình 2-6 Cấu trúc pipline của hàm hash

Số lượng các hàm băm sử dụng trong BBF có ảnh hưởng lớn đến hiệu suất của hệ thống

vì nó ảnh hưởng đến tỷ lệ “false positive” của bộ lọc Tỷ lệ “false possitive” cao dẫn đến

sẽ có nhiều chuỗi nghi ngờ cần phải được kiểm tra, khả năng tràn các vùng đệm (FIFO) cũng sẽ tăng lên Khi trường hợp này xảy ra, hệ thống sẽ chấm dứt hoạt động, các dữ

Trang 36

liệu trước đó sẽ bị xóa Sơ đồ trong Hình 2-7 mô tả mối liên hệ giữa số lượng hàm băm với tỷ lệ “false positive”

Hình 2-7 Số lượng các hàm hash và tỷ lệ “false positive” tương ứng Tỷ lệ “false positive” giảm đáng kể với sự gia tăng của các hàm hash: từ 83% (2 hàm hash)

đến 0,02% (14 hàm hash)

2.3.3 Kiến trúc bộ so trùng mẫu BBF

Hệ thống BBFex là một hệ thống so trùng chuỗi với tốc độ cao Hệ thống được thiết kế theo phương pháp hashing và có khả năng so trùng cho một cơ sở dữ liệu với nhiều chuỗi tĩnh có độ dài khác nhau, Hình 2-8

Trang 37

Defrag Module 1

Defrag Module 2

Defrag Module 3

Defrag Module 4

Wait-for Compare FIFO String

Buffer

Comparator SRAM

SDRAM

Match ID Offset

Char out

Trang 38

Bloomier bits Nếu các Bloom bit đều bằng 1, thông tin của chuỗi (giá trị hash, fragment type) được đưa tiếp qua khối Arbiter Unit để xử lý

Khối Arbiter Unit gồm năm khối DM (Defrag Module) tương ứng với năm khối BBM ở Character Scanning Unit Vì khối so trùng ký tự có năm bộ BBM chỉ so trùng được các chuỗi có độ dài cố định là 8, 16, 32, 64, 128 nên để có thể so trùng các chuỗi

có độ dài từ 8 đến 256, ta chia mỗi chuỗi này thành hai mảnh có độ dài cố định là 8, 16,

Bảng 2-4 Nội dung của một Fragment

Next hash value 17 Giá trị hash của mảnh được

mong được

Base ID 16 ID của mẫu tạo thành từ 2

mảnh Referenced next

Trang 39

11 Vừa là mảnh thứ nhất trong mẫu này

và là mảnh thứ hai trong mẫu khác

Mỗi khối DM chứa tám khối PE (Processing Element) Tám khối PE cho phép lưu thông tin tám mảnh thứ nhất khác nhau để đợi mảnh thứ hai của chúng trong cùng một lúc Khởi đầu, tám khối PE đều ở trạng thái không hoạt động Một PE chỉ được kích hoạt khi một mảnh thứ nhất được đưa vào Khi một mảnh mới được vào, thông tin mảnh

đó sẽ được so sánh với thông tin lưu trên khối PE Nếu đúng là mảnh cần tìm, thông tin base_ID sẽ được lưu trong một bộ FIFO đợi để được so sánh với mẫu gốc trong khối Comparison Unit, sau đó khối PE sẽ trở lại trạng thái không hoạt động Ngược lại, nếu không phải mảnh cần tìm, thông tin của mảnh sẽ bị loại bỏ, khối PE tiếp tục chờ cho đến khi gặp mảnh phù hợp hoặc mảnh tiếp theo có khoảng cách lớn hơn khoảng cách cho phép giữa hai mảnh (lúc đó khối PE trở lại trạng thái không hoạt động)

Khối Comparison Unit dựa vào base_id làm địa chỉ tra cứu vào SDRAM lấy giá trị mẫu gốc rồi so sánh với chuỗi được so trùng

Nhìn chung, hệ thống BBFex có thể so trùng một chuỗi tĩnh với tốc độ cao và cho biết chính xác được vị trí của chuỗi đó trong tập chuỗi tĩnh cho trước Nhưng nhược điểm

Trang 40

của hệ thống này là vẫn chưa xử lý được các chuỗi virus có chứa wildcard trong tập dữ liệu của chương trình ClamAV

2.4 NetFPGA Platform

NetFPGA là đề tài nghiên cứu của trường đại học Standford, là một platform phần cứng tái cấu hình chi phí thấp chuyên dụng cho mạng tốc độ cao Trên board NetFPGA bao gồm các khối logic, bộ nhớ và các card Gigabit Ethernet để từ đó người sử dụng có thể xây dựng nên một switch, router hay một thiết bị an ninh mạng Bởi vì toàn bộ module truyền/định tuyến gói dữ liệu được hiện thực trên phần cứng, hệ thống có thể hỗ trợ các gói dữ liệu truyền ở tốc độ Gigabit với độ trễ xử lý (processing latency) chỉ trong vài chu

kỳ clock

Hình 2-9 Kiến trúc netFPGA 10G

Hình 2-9 mô tả sơ đồ khối của NetFPGA 10G [10] bao gồm một chip Xilinx FPGA lớn của họ Virtex-5 hoạt động với tần số clock là 250 MHz Chức năng của chip này được lập trình bởi người sử dụng Bên cạnh, NetFPGA cung cấp 8 kênh chuẩn truyền PCI express thế hệ thứ 2, có thể đạt tốc độ 5Gbps cho một kênh

Ngày đăng: 27/01/2021, 00:09

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] B. X. Y. Q. J. L. X. Zhou, MRSI: A Fast Pattern Matching Algorithm for Anti- Virus Applications, In Proceeding of Seventh International Conference on Networking, p.256-261 Sách, tạp chí
Tiêu đề: MRSI: A Fast Pattern Matching Algorithm for Anti- Virus Applications
Tác giả: B. X. Y. Q. J. L. X. Zhou
Nhà XB: Proceeding of Seventh International Conference on Networking
[2] A. Aho and M. Corasick, "Efficent string matching: an aid to bibliographic search," Communication ACM, vol. 18, no. 6, pp. 333-340, 1975 Sách, tạp chí
Tiêu đề: Efficent string matching: an aid to bibliographic search
[3] L. Tan and T. Sherwood, "A high throughput string matching architecture for intrusion detection and prevention," in the 32nd Annual International Symposium on Computer Architecture, 2005 Sách, tạp chí
Tiêu đề: A high throughput string matching architecture for intrusion detection and prevention
Tác giả: L. Tan, T. Sherwood
Nhà XB: 32nd Annual International Symposium on Computer Architecture
Năm: 2005
[4] J. v. Lunteren, "High-performance pattern-matching for intrusion detection," in EEE International, 2006 Sách, tạp chí
Tiêu đề: High-performance pattern-matching for intrusion detection
Tác giả: J. v. Lunteren
Nhà XB: EEE International
Năm: 2006
[5] S. Dharmapurikar, P. Krishnamurthy, T. Sproull and J. Lockwood, "Deep Packet Inspection using Parallel Bloom Filters," Micro IEEE, vol. 24, no. 1, pp. 52-61, 2004 Sách, tạp chí
Tiêu đề: Deep Packet Inspection using Parallel Bloom Filters
Tác giả: S. Dharmapurikar, P. Krishnamurthy, T. Sproull, J. Lockwood
Nhà XB: Micro IEEE
Năm: 2004
[6] G. Papadopoulos and D. Pnevmatikatos, "Hashing + memory = low cost, exact pattern matching," in 15th International Conference on Field-Programmable Logic and Applications, 2005 Sách, tạp chí
Tiêu đề: Hashing + memory = low cost, exact pattern matching
Tác giả: G. Papadopoulos, D. Pnevmatikatos
Nhà XB: 15th International Conference on Field-Programmable Logic and Applications
Năm: 2005
[7] I. Sourdis, J. Bispo, J. Cardoso and S. Vassiliadis, "Regular expression matching for reconfigurable packet inspection," in the IEEE nternational Conference on Field Programmable Technology (FPT’06), 2006 Sách, tạp chí
Tiêu đề: Regular expression matching for reconfigurable packet inspection
[8] G. L. J. Ho, "PERG: A scalable FPGA-based Pattern-matching Engine," in ICECE. In Proceeding of FPT, 2008 Sách, tạp chí
Tiêu đề: PERG: A scalable FPGA-based Pattern-matching Engine
Tác giả: G. L. J. Ho
Nhà XB: ICECE
Năm: 2008
[9] B. T. H. T. N. T. Nguyen Duy Anh Tuan, "High Performance Pattern Matching using Bloom Bloomier Filter," in The 7th IEEE International Conference Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology, 2010 Sách, tạp chí
Tiêu đề: High Performance Pattern Matching using Bloom Bloomier Filter
Tác giả: B. T. H. T. N. T. Nguyen Duy Anh Tuan
Nhà XB: The 7th IEEE International Conference Electrical Engineering/Electronics, Computer, Telecommunications and Information Technology
Năm: 2010
[10] "NetFPGA offical website," [Online]. Available: http://netfpga.org/ Sách, tạp chí
Tiêu đề: NetFPGA offical website
[11] S. C. V. J. J.Hasan, "A Storage efficient, Collision-free Hash-based Network Processing Architecture," in Proceeding of 33rd International Symposium on Computer Architecture Sách, tạp chí
Tiêu đề: A Storage efficient, Collision-free Hash-based Network Processing Architecture
Tác giả: S. C. V. J. J. Hasan
Nhà XB: Proceeding of 33rd International Symposium on Computer Architecture
[12] S. K. a. S. T. T. N. Thinh, "Applying cuckoo hashing for FPGA-based pattern matching in NIDS/NIPS," ICFPT, pp. 121-128, 2007 Sách, tạp chí
Tiêu đề: Applying cuckoo hashing for FPGA-based pattern matching in NIDS/NIPS
Tác giả: S. K. Thinh, S. T. T. N. Thinh
Nhà XB: ICFPT
Năm: 2007
[13] D. P. S. W. a. S. V. I. Sourdis, "A reconfigurable perfect hashing scheme for packet inspection," FPL, pp. 644-647, 2005 Sách, tạp chí
Tiêu đề: A reconfigurable perfect hashing scheme for packet inspection
[14] Y. C. a. W. M-Smith, "Fast reconfiguring deep packet filter for 1+ gigabit network," FCCM, p. 215–224, 2005 Sách, tạp chí
Tiêu đề: Fast reconfiguring deep packet filter for 1+ gigabit network
Tác giả: Y. C., W. M-Smith
Nhà XB: FCCM
Năm: 2005

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w