Một số nghiên cứu liên quan về ứng dụng thuật toán so khớp trong phát hiện xâm nhập mạng

Một phần của tài liệu Phát triển một số kỹ thuật so khớp ứng dụng trong quá trình phát hiện xâm nhập và giả mạo trên mạng (Trang 29 - 38)

CHƯƠNG 1. TỔNG QUAN VỀ SO KHỚP

1.1.6 Một số nghiên cứu liên quan về ứng dụng thuật toán so khớp trong phát hiện xâm nhập mạng

Năm 2000, thuật toán Navarro and Raffinot được xây dựng dựa trên mô hình automat sử dụng hậu tố tương thích với so khớp chính xác [62]. Thuật toán cho phép tìm kiếm đơn giản với các mẫu phức tạp.

Thuật toán so khớp chuỗi loại trừ (Exclusion based String Matching Algorithm). Mục đích chung của vấn đề so khớp chuỗi là ứng dụng trong các hệ thống phát hiện xâm nhập mạng có chi phí thực thi cao khi tính toán so khớp. Trong

[15] đã có nhiều kỹ thuật so khớp chuỗi được thiết kế như: E2xB để giải quyết một số đặc trưng của hệ thống phát hiện xâm nhập mạng và làm tăng hiệu quả và khả năng hoạt động của hệ thống. Kỹ thuật đầu tiên được đề xuất là E2xB [16] để nhanh chóng phủ định các chuỗi cần tìm không tồn tại trong nội dung gói tin. Những sự cải tiến chính là để loại bỏ các liên hệ bước đầu liên quan đến việc khởi tạo các biến cố và danh hơn giai đoạn tiền xử lý. Ý tưởng cơ bản của E2xB là kiểm tra các gói dữ liệu nhận được có chứa các toàn bộ chuỗi bit của mẫu virus cho trước không nhưng không xem xét các bit một cách tuần tự hay giống các thuật toán đã có. E2xB khai báo các mẫu không khớp, nếu một chuỗi bit của mẫu virus không xuất hiện trong gói tin. E2xB tạo một bản đồ bit các biến cố, đánh dấu mỗi mẫu bằng cách cố định kích thước chuỗi bit tồn tại trong gói tin. Những bản đồ chuỗi bit được so khớp với các chuỗi bit của từng mẫu kết quả là tập không khớp hay tập đại lượng dương sai như sau: giả thiết S là một chuỗi nhỏ và I là chuỗi đầu vào, nếu S chứa ít nhất một ký tự không nằm trong I thì S không là chuỗi con của I. Trong trường hợp khác ở đó tất cả các ký tự của S thuộc I nhưng S không là chuỗi con của I thì S là một đại lượng dương sai. Phép kiểm tra này được thực hiện với sự trợ giúp của bản đồ biến cố. Để hạn chế các giá trị dương sai họ đưa ra các cặp ký tự. Ví dụ: thay vì ghi lại các biến cố của các ký tự đơn trong chuỗi I, chúng ta ghi lại các cặp ký tự liên tiếp trong chuỗi I. Trong quá trình xử lý so khớp, thay vì xác định các ký tự đơn xuất hiện trong I, E2xB kiểm tra các cặp ký tự được xuất hiện trong I.

Năm 2003, thuật toán Yuebin Bai and Hidetsune Kobayashi được Yuebin Bai và Hidetsune Kobayashi đề xuất dựa trên thuật toán BMH (Boyer-Moore-Horspool) [14]. BMH được thiết kế dựa trên việc tìm kiếm ký tự lỗi với hai thủ tục tìm kiếm đơn giản dùng để tìm ký tự đầu tiên (SFC- search for first character) và quét ký tự có tần suất xuất hiện ít nhất (SLFC- scan for lowest frequency character) nhằm hỗ trợ thuật toán Boyer-Moore để quá trình tìm kiếm được thực hiện không phụ thuộc vào trạng thái của chuỗi. Ngoài ra còn có các thuật toán AKC (2003), Simplified BNDM (2003), Long BNDM (2003), Shift-Vector Matching (2003), Fast-Search (2003) dựa trên mô hình xử lý song song các bit.

Năm 2005, thuật toán Character Index Aho-Corasick được đề xuất nhằm nâng cao hiệu quả về bộ nhớ cho NIDS thông qua kiểm tra số các ký tự trong một tập mẫu ít

hơn nhiều tổng số các ký tự gọi là thuật toán so khớp chuỗi đánh chỉ số ký tự (CIAC:

Character Index Aho-Corasick) sử dụng mô hình DFA. Việc tìm kiếm trên DFA nhanh hơn quá trình tìm kiếm trên NFA. Thủ tục so khớp chuỗi của thuật toán bao gồm hai bước. Bước tiền xử lý, mô hình DFA được xây dựng dựa trên thuật toán AC, việc tìm kiếm trong DFA sẽ tìm các cột có giá trị bằng 0 trong ma trận. Chuyển đổi ma trận thành Aho-Corasick DFA bằng cách dịch các nút trạng thái thành các nút ký tự, với mỗi nút ký tự có n mục trạng thái tiếp theo ứng với tất cả các trạng thái. Tiếp theo các cột đã được tìm kiếm có giá trị 0 trên các dòng sẽ được trộn lại thành một dòng. Một bảng chỉ số các ký tự sẽ tạo ra với các con trỏ trỏ đến tất cả các nút ký tự. Ở giai đoạn tìm kiếm sẽ đọc ký tự để trỏ đến nút ký tự trong CIAC DFA tương ứng trong bảng chỉ số ký tự. Sau đó sẽ đọc trạng thái hiện thời để nhảy đến giá trị trạng thái mới bằng cách kiểm tra nút ký tự. Bây giờ tập các trạng thái được tìm thấy trước đó là trạng thái hiện thời. Kiểm tra trạng thái hiện thời để quyết định việc so khớp có khớp hay không và tiếp tục xử lý đến khi tất cả các ký tự đã được hoàn tất [11].

Bo Xu, Xin Zhou và Jun Li đưa ra thuật toán RSI (Recursive Shift Indexing) [16]. RSI kiểm tra theo heuristic trên một ký tự 1, 2 hoặc 4 ký tự với đơn và đa mẫu sử dụng cấu trúc đệ qui để thu hẹp số lượng các mẫu được so khớp để đạt được sự kết hợp giữa yêu cầu bộ nhớ và thời gian. RSI thực hiện qua ba giai đoạn: Giai đoạn một là sinh ra các bảng BLT#1 và BLT#2 (Block Leap Table). Giai đoạn hai sinh ra bảng FLT (Further Leap Table) và giai đoạn ba sinh ra bảng PTM (Potential Match Table).

Thuật toán RSI giảm số lượng phép so sách giữa các ký tự nhờ cấu trúc chỉ số đệ qui cho thời gian thực hiện nhanh trên một tập mẫu lớn. RSI sử dụng heuristic với sự kết hợp của hai khối ký tự hậu tố kề nhau trong cửa sổ trượt. Thuật toán này sử dụng ánh xạ bit và bảng đệ qui để nâng cao hiệu quả so khớp. Các ý tưởng này là được sử dụng cho các thuật toán so khớp chuỗi kích thước lớn.

Năm 2006, thuật toán Boyer-Moore-Horspool kết hợp sử dụng mô hình xác suất được đề xuất áp dụng cho các mẫu với bảng chữ cái là các ký hiệu. Với ý tưởng chính là so sánh các vị trí không khớp theo sự ưu tiên của các ký hiệu có xác suất lớn.

Trong [11], các tác giả đã trình bày q-Grams dựa trên thuật toán Boyer-Moore-Horspool (BMH). Thuật toán này chia một mẫu vào vài khối độ dài q và xây dựng bảng q-Grams để tính toán giá trị dịch chuyển trong của sổ trượt. Thuật toán này chỉ ra có hiệu năng tốt

trên các tập mẫu có kích thước vừa phải. Tuy nhiên, khi kích thước tập mẫu tăng lên, thuật toán là không đủ tốt cho cả thời gian tìm kiếm và không gian nhớ. Ngoài ra, một vài tác gả đã đưa ra các thuật toán Backward kết hợp từ ý tưởng của thuật toán BM và otomat trong AC. Trong [50], C. Coit, S. Staniford, và J. Mc Alerney đã trình bày thuật toán AC_BM. Thuật toán này xây dựng một cây tiền tố của tất cả các mẫu trong giai đoạn tiền xử lý, và sau đó sử dụng cả phương pháp heuristic của BM để tính giá trị dịch chuyển. Một thuật toán đơn giản gọi là Setwise Boyer Moore Horspool (SBMH)[13] được đề xuất bời M. Fisk và G. Varghese. Nó sử dụng một cấu trúc phân tầng theo các tiền tố của tất cả các mẫu và tính giá trị chuyển dịch chỉ sử dụng các hậu tố tồi. Tuy nhiên, hai thuật toán này cũng có nhược điểm tiêu thụ bộ nhớ nhiều khi kích thược tập mẫu là lớn.

Năm 2007, Z. W. Zhou,Y. B. Xue, J. D. Liu, W. Zhang, and J. Li, MDH [18] đã giới thiệu nhiều pha của hàm băm để hạn chế bộ nhớ được sử dụng được đưa ra dựa trên ý tưởng tăng tốc độ của thủ tục tìm kiếm dùng hàm Heuristic cắt động là MDH (Multi-Phase Dynamic Hash). Thuật toán này được mở rộng từ thuật toán WM. Các mục trong bảng HASHPREFIX có mối quan hệ một-một, thuật toán MDH sử dụng hai bảng nén HASH, bảng các mẫu so khớp khả dĩ PMT (Possible matching patterns) kết hợp với bảng SHIFT. Bảng HASH đầu tiên giống bảng HASH ở trên và bảng HASH thứ hai, MDH băm lại giá trị trong bảng SHIFT và lưu chúng trong bảng PTM. Trong giai đoạn tìm kiếm, kích thước b của cửa sổ sẽ được trượt từ trái sang phải. Với mỗi cửa sổ ký tự có kích thước b, tính toán hàm băm và kiểm tra các mục liên quan trong bảng SHIFT. Nếu giá trị của SHIFT là 0 thì di chuyển cửa sổ sang phải. Ngược lại, băm các ký tự trong cửa sổ lần nữa sử dụng hàm băm thứ hai, bây giờ sử dụng giá trị băm mới để định danh sách mục trong bảng PMT. Bước cuối cùng, cần xác minh tất cả các mẫu thích hợp khả dĩ được liên kết trong các mục và di chuyển cửa sổ văn bản sang phải để khởi động lại thủ tục một lần nữa. Theo kết quả thực nghiệm của Zhou hiệu năng của MDH là cao hơn WM và một vài thuật toán khác.

Năm 2008, C. Allauzen và M. Raffinot đã đề xuất thuật toán Set Backward Oracle Matching (SBOM) trong [17]. Ý tưởng cơ bản của nó là xây dựng một cấu trúc dự liệu nhiều “trọng lượng” gọi là factor oracle, cái được xây dựng chỉ trên tất cả các

hậu tố đảo ngược của mẫu ngắn nhất. Thuật toán này sử dụng bộ nhớ hợp lý khi kích thước tập mẫu tương đối lớn.

Thuật toán CCSH (Contents Correction Signature Hashing): Các tác giả trong [13] đề xuất một thuật toán so khớp chuỗi dựa trên hàm băm để chính xác hóa nội dung kiểm tra trên một phạm vi rộng với tập các mẫu phát hiện những gói tin nguy hiểm trong mạng ở tốc độ cao. Để áp dụng thuật toán CCSH, họ xây dựng cấu hình bảng băm cho các mẫu. Thuật toán này có hai bước: xây dựng cửa sổ byte và luật so khớp. Trong cửa sổ byte, các so sánh sẽ được thực hiện giữa cửa sổ và nội dung gói dữ liệu cần duyệt. Cửa sổ thực hiện xác thực dựa trên giá trị 2 byte được tham chiếu. Giá trị được tham chiếu trong cửa sổ byte được lấy từ mẫu với một lược đồ lựa chọn ngẫu nhiên các vị trí. Lược đồ này được thiết kế tùy theo môi trường mạng với những cảnh báo, các loại sâu, virus mạng khác nhau được sinh ra mỗi ngày. Đa số các mẫu cảnh báo và virus đều có sự tương tự nhất định, nghĩa là chúng ta có thể tìm ra được mối quan hệ giữa các mẫu đó. Điều này giúp tăng độ chính xác của hàm băm dựa trên các vị trí cố định trong phương pháp lựa chọn các giá trị cho 2 byte tham chiếu. Từ đó cho phép giá trị mỗi lần băm có thể dài hơn danh sách các chữ ký. Với 2 byte chúng ta có cần phải sinh ra 65536 giá trị với tất cả các luật đang có. Quá trình tính toán giá trị băm trong cửa sổ byte là sự so sánh với các giá trị trong bảng băm mẫu. Nếu tăng kích thước cửa sổ lên, nó sẽ làm giảm chất lượng hàm băm và làm tăng kích thước dữ liệu cần tìm kiếm cho mỗi chuỗi cần so khớp. Sau khi tính toán các giá trị trên cửa sổ byte được hoàn tất thì các luật so khớp sẽ được xem xét để tìm kiếm đảm bảo gói tin theo các luật thực hay không. Trước khi xây dựng luật so khớp, một vài thông tin chi tiết sẽ được sửa đổi, các thông tin đó sẽ được so sánh độ ưu tiên giữa chữ ký và phạm vi dữ liệu. Việc sửa chữa thông tin chi tiết không những hạn chế số lượng cần so khớp mà còn cho phép phát hiện các lỗi sai nhanh hơn. Quá trình xử lý sẽ tiếp tục đến khi tìm được một giá trị khớp hoặc di chuyển đến vị trí cuối cùng của bảng băm. Thuật toán đề xuất có thể được sử dụng bổ sung và nâng cao hiệu quả thực hiện với việc đảm bảo số lượng các luật.

Năm 2009, S. Deusdado và Carvalho đề xuất thuật toán Genomic Oriented Rapid (GRASPm) sử dụng kết hợp phép dịch chuyển trong thuật toán Horspool với

luật bad-character và phương pháp lọc sử dụng bảng băm được tính toán theo mô hình 2-grams trên các mẫu [62].

Năm 2010, Baeza-Yates và Gonnet đã dưa ra kỹ thuật Bit-parallelism [16].

Trong đó, sử dụng lợi ích của việc song song trong các thao tác bít trong các từ máy cho phép giảm số lượng các thao tác mà một thuật toán thực hiện với tỷ số w (là độ dài từ máy của máy tính). Kỹ thuật song song hóa bit là đặc biệt thích hợp cho việc mô phỏng hiệu quả các otomat không đơn định. Tiếp đó, Abdulwahab và cộng sự cũng đề xuất thuật toán BRSS cho so khớp chính xác dựa trên sự kết hợp của Berry-Ravindran và Skip Search.

Năm 2011, Aldwairi và Alansari đã đề xuất thuật toán so khớp nhanh cho các hệ thống phát hiện và ngăn chặn xâm nhập mạng được dứng dụng trong bộ lọc Exscind [59]. Thuật toán cho phép tối thiểu thời gian so sánh các mẫu bằng cách sử dụng các mã tiền tố tương tự như thuật toán Wu-Manber. Bộ lọc này đã được ứng dụng trên mô hình của bộ lọc Bloom với danh sách các mã đặc tả cho các gói tin.

Năm 2012, M. Kharbutli và cộng sự đã đề xuất dữ liệu và hàm thực thi thuật toán Wu-Manber cho hệ thống phát hiện và ngăn chặn xâm nhập mạng NIDS [60].

Trong đó sử dụng 3 khai báo song song cho thuật toán Wu-Manber. Khai báo đầu tiên dùng thuật toán chia sẻ vị trí (Shared Position) cho phép hỗ trợ các cửa sổ quét song song với các biến vị trí được chia sẻ. Khai báo thứ hai sử dụng thuật toán lần vết phân tán (Trace Distribution) dùng để ghi nhận và theo dấu các vết của các luồng đang được xử lý song song đồng thời. Khai báo thứ ba kết hợp cả hai thuật toán chia sẻ vị trí và lần vết phân tán để đưa ra quyết định.

Năm 2013, Zhenlong Yuan và các đồng nghiệp đã đưa ra thuật toán so khớp đa mẫu tên là TFD cho việc lọc URL tốc độ cao với kích thước lớn [17]. TFD sử dụng bảng băm hai giai đoạn, otomat hữu hạn và hai mảng lưu trữ để khử nút thắt hiệu năng của bộ lọc danh sách đen. Kamal Alhendawi và Ahmad Baharudin cũng cài đặt và thực nghiệm 5 thuật toán so khớp chuỗi và đánh giá dựa trên hai tiêu chí là kích thước chuỗi vào vào kích thước mẫu để lọc các gói tin trên mạng.

Năm 2014, Gulfishan Firdose Ahmed và Nilay Khare đã đề xuất mô hình cứng hóa các thuật toán so khớp Brute Force, KMP và Aho-Corasicks được cài đặt sẵn trên phần cứng trong ứng dụng lọc gói tin của mình [61][62].

Lọc gói tin là một cơ chế kiểm tra gói dữ liệu đến mạng, và dựa trên các giá trị được tìm thấy trong các trường được chọn, xác định cách xử lý mỗi gói tin [63]. Lọc gói được sử dụng trong nhiều ứng dụng như giám sát mạng, đo lường hiệu suất, giải mã kênh tại điểm đầu cuối trong các giao thức truyền thông, phân loại gói tin trong bộ định tuyến, tường lửa và phát hiện xâm nhập. Thông thường, các ứng dụng này chỉ định nhiều quá trình lọc sẽ được áp dụng cho một gói dữ liệu mạng. Những chỉ định này có thể dưới hình thức mã mệnh lệnh được viết bằng một vài ngôn ngữ lọc đặc biệt.

Mã dành cho một bộ lọc gói bao gồm các quá trình kiểm tra sẽ được thực hiện trên các trường của gói tin và khi các trường này vượt qua tất cả các kiểm tra của bộ lọc. Mã dành cho nhiều bộ lọc gói bao gồm mã của các bộ lọc riêng lẽ được kết hợp bằng các hướng dẫn luồng kiểm soát thích hợp. Rõ ràng, kích thước của mã tăng khi số lượng bộ lọc tăng. Viết các mã bộ lọc như vậy một cách thủ công sẽ rất cồng kềnh và thường bị lỗi. Thêm một bộ lọc hoặc thay đổi giao thức yêu cầu phải viết lại mã để phù hợp.

Do đó, việc duy trì mã của bộ lọc trở nên khó khăn

Một hệ thống lọc gói tin chứa nhiều bộ lọc có thể so khớp một gói tin dựa vào các mẫu theo hai cách. Trong phương pháp đầu tiên, mỗi bộ lọc gói được xem như một thực thể riêng biệt. Hệ thống lọc gói chạy lần lượt mỗi bộ lọc đối với mọi gói tin mạng. Ở đây, mỗi gói tin được so khớp dựa trên tất cả các mẫu mà không sử dụng thông tin đã đạt được về các trường của gói tin đó từ lần so khớp trước. Chi phí xác định mô hình so khớp mẫu (hoặc các mẫu) tăng tuyến tính với số các bộ lọc gói được chỉ định.

Bộ lọc gói tổng hợp được tạo ra bằng cách kết hợp các bộ lọc gói riêng lẻ có ưu điểm là nó sẽ cố gắng sử dụng thông tin được thu thập về các trường của gói tin từ một phần của mỗi lần so khớp thành công cho các lần so khớp tiếp theo. Giảm thiểu không gian lưu trữ và thời gian so khớp của một bộ lọc gói tổng hợp là một vấn đề quan trọng trong việc lọc gói kết hợp. Một chuỗi các mẫu có thể được biên dịch thành một cây hữu hạn tự động nhằm định danh so khớp mẫu một cách hiệu quả. Trong một cây hữu hạn tự động ở mỗi trạng thái, ngoài trừ trạng thái kết thúc, đều kiểm tra các thuộc tính của gói tin mạng. Có một cạnh (edge) cho mỗi lần kiểm tra. Mỗi trạng thái đều có một cạnh mặc định (default edge) được sử dụng khi tất cả các kiểm tra được thực thi trong trạng thái này đều sai. Trạng thái kết thúc (final states) thể hiện rằng mẫu đó đã được

Một phần của tài liệu Phát triển một số kỹ thuật so khớp ứng dụng trong quá trình phát hiện xâm nhập và giả mạo trên mạng (Trang 29 - 38)

Tải bản đầy đủ (PDF)

(135 trang)