Đặt vấn đề Phần mềm quét virus ClamAV có tốc độ quét chậm (khoảng 12. Để tăng tốc hệ thống, các nghiên cứu trên thế giới thường tập trung vào 2 hướng chính. Đó là chỉ dùng phần cứng và phần mềm-phần cứng kết hợp. Ở hướng tiếp cận chỉ dùng phần cứng trong công trình “The Parallel Sieve Method for a Virus Scanning Engine” [1] của nhóm nghiên cứu Hiroki Nakahara, Tsutomu Sasao, 1 Munehiro Matsuura và Yoshifumi Kawamura.
Chúng tôi đánh giá ưu và nhược điểm của hướng tiếp cận này như sau: Ưu điểm: Throughput cao (1.6 Gbps) Sử dụng bộ nhớ hiệu quả. MUC (memory utilization coefficient) : amount of memory per a character = 1.7 Bytes/Char) Khuyết điểm: Phức tạp Tốn công sức Giá thành cao Khó cập nhật cơ sở dữ liệu virus cho hệ thống Ở hướng tiếp cận kết hợp phần cứng và phần mềm trong công trình “Phần mềm- phần cứng kết hợp for high-speed signature-based virus scanning” của nhóm nghiên cứu Ying-Dar Lin, Po-Ching Lin và Yuan-Cheng Lai [4] thì họ đã giảm tải cho chương trình ClamAV bằng cách đẩy một phần xử lý so trung chuỗi xuống hệ thống BFAST (Bloom Filter Accelerated Sublinear Time). BFAST đóng vai trò như bộ lọc tiền xử lý dữ liệu quét. Nếu như BFAST nghi ngờ có virus thì hệ thống sẽ báo lên phần mềm để kiểm tra kĩ hơn.
Chúng tôi đánh giá hướng tiếp cận này như sau: Ưu điểm: Throughput của hệ thống BFAST (151 Mbps) tăng gấp 28 lần so với chương trình gốc ClamAV Ít công sức Giá thành có thể chấp nhận Dễ dàng cập nhật cơ sở dữ liệu virus cho hệ thống 2 Khuyết điểm: Throughput đạt được vẫn còn thấp hơn rất nhiều so với mức độ mô phỏng hardware là 8.79 Gbps Copy dữ liệu từ user space sang DMA buffer thì tiêu tốn rất nhiều thời gian Throughput của toàn hệ thống có thể bị suy giảm do overhead từ việc truyền dữ liệu của DMA. Mục tiêu nghiên cứu Nghiên cứu và thiết kế được framework có tốc độ quét nhanh tối thiểu 4 lần so với phần mềm quét virus ClamAV. Nghiên cứu và thiết kế giải pháp Mục tiêu của chúng tôi là thiết kế 1 framework hoàn chỉnh trong 1 hệ thống quét virus trong 1 doanh nghiệp. Do vậy, framework này ngoài tốc độ cao (khoảng từ 1 Gb/s) thì phải cho phép người dùng thể theo dõi, quan sát, cấu hình, cập nhật hệ thống một cách dễ dàng theo nhu cầu của người dùng.
Để làm điều này thì chúng tôi cần phải kết hợp giữa software và hardware. Software đóng vai trò là tiếp nhận files, tiền xử lý, phân loại file, lọc tách data ra khỏi header. Phần hardware sẽ đóng vai trò tăng tốc hệ thống cho ta biết rằng tốc độ của hardware chuyên dụng thì luôn cao hơn rất nhiều lần so với software. Ngoài ra, để tăng tốc hệ thống hơn nữa, chúng tôi quyết định thiết kế phần cứng sao cho đảm nhận việc quét virus toàn bộ chứ không chỉ đóng vai trò bộ lọc.
Nếu để phần mềm phải quét lại dữ liệu nghi ngờ từ phần cứng gửi lên thì tốc độ quét của hệ thống sẽ chậm đi. Clam Antivirus (ClamAV) là một công cụ quét virut mã mở nguồn, được thiết kế đặc biệt cho việc kiểm tra e-mail trên các e-mail gateways. Nó cung cấp một số tiện ích bao gồm khả năng mở rộng multi-threaded daemon (cung cấp dịch dụ quét qua các socket communications). Hiện tại, tổng số lượng chữ kí trong ClamAV là 2.843 (thống kê theo 23/4/2013) và số lượng chữ kí này vẫn tiếp tục tăng lên theo từng ngày.
Cơ sở dữ 3 liệu của ClamAV được chia thành ba nhóm: mẫu tĩnh, MD5 và mẫu động. Mẫu tĩnh và mẫu MD5 chiếm tới 99. Thời gian so trùng mẫu tĩnh và mẫu động chiếm tới 84% thời gian quét file. Đây chính là phần chạy chậm nhất trong phần mềm ClamAV.
Do đó, chúng tôi tiến hành thay thế các hàm này bằng các hàm giao tiếp socket với phần cứng bên dưới để tăng tốc độ quét virus. Như vậy, ta có thể áp dụng Amdahl’s law bên dưới để có thể tính toán tốc độ truyền DMA để không làm thắt cổ chai hệ thống. 1 𝑆= 𝐹 (1) 1− 𝐹+ 𝐸 Trong đó: F là tỉ lệ phần được cải tiến, E: Speedup của phần cải tiến. S: Speedup của toàn hệ thống Theo kết quả tìm hiểu, chạy thử thì trong phần mềm ClamAV, 2 hàm cli_bm_scanbuff() và cli_ac_scanbuff() chiếm tổng thời gian là 84%.
Theo mục tiêu nghiên cứu, hệ thống framework cần nhanh hơn phần mềm ClamAV ít nhất là 4 lần. Thế vào công thức (1), ta có: 4 = 1/[(1-0.3 Theo đo đạc thực nghiệm, thì tốc độ quét của 2 hàm là khoảng 0. Để hệ thống tăng tốc 5 lần thì phải cải tiến tốc độ quét của 2 hàm lên tối thiểu là 9.3 lần tức là tốc độ của hàm sau khi cải tiến phải đạt được 0. Như vậy tốc độ truyền dữ liệu của DMA phải đạt tối thiểu được 3.7 Gb/s Để có thể giao tiếp được giữa phần cứng và phần mềm mà không bị chi phí overhead nhiều, chúng tôi dùng hiện thực phần giao tiếp dùng RAW socket.
Sau đó, dữ liệu được copy từ user space sang kernel space vào TX buffer. Chúng tôi định nghĩa giao thức bắt 4 tay giữa phần cứng và phần mềm trong từng frame truyền bằng các trường như MAGIC code, loại packet, block ID, cũng như số lượng byte truyền. Tiếp theo, dữ liệu được DMA truyền từ TX bufer tới module quét virus HSVS (High speed virus scanner). DMA có 2 tần số hoạt động là 125 Mhz và 250 Mhz.
Do ở đây chúng tôi cần DMA hoạt động ở tốc độ cao lên hơn 4 Gb/s, nên chúng tôi cấu hình DMA hoạt động ở tần số 250 MHz vì ở tần số 125 MHz thì DMA chỉ đạt throughput tối đa là 2 Gb/s theo kết quả thực nghiệm. Sau khi dữ liệu quét tới HSVS (High speed virus scanner) thì cli_static_scanbuff() (là 1 hàm quét mẫu động được dùng để thay thế cli_bm_scanbuff() của ClamAV) sẽ đợi HSVS trả kết quả quét từng block về: có virus hay không có virus. Nếu có virus thì gửi kèm thông tin số lượng virus, virus ID và cli_static_scanbuff() sẽ kết thúc việc quét ngay lập tức, không quét block tiếp theo. Nếu như không có virus thì cli_static_scanbuff() sẽ gửi block tiếp theo để quét.
Tương tự quá trình xử lý trên khi block dữ liệu được gửi tới cli_dynamic_scanbuff() để quét mẫu động. Khi quét tới block cuối cùng của file thì kết thúc xong việc quét 1 file, và quét file tiếp theo nếu có. Những đóng góp của luận văn Những đóng góp chính của luận văn là: Cải tiến khả năng giao tiếp giữa phần mềm và phần cứng tránh được tình trạng thắt cổ chai. Thiết kế và hiện thực một framework HSAV quét virus tốc độ cao.
Framework của chúng tôi có thể tương thích bất kì server nào cổng PCI-express. Từ đó, cải thiện rõ rệt hiệu suất hoạt động của phần mềm diệt virus ClamAV. 5 Tích hợp được framework của chúng tôi vào ClamAV, phần mềm quét virus mã nguồn mở phổ biến được sử dụng rộng rãi nhất. Đóng góp này chứng tỏ hiện thực của chúng tôi là có tính thực tế và khả thi.
Chạy thử nghiệm và đánh giá hiệu suất của framework theo 2 tiêu chí: là thông lượng (throughput) và độ trễ (latency) 1. Những kết quả đạt được Trong giới hạn thời gian làm luận văn, chúng tôi đã thiết kế framework của hệ thống tăng tốc quét virus phần cứng trên nền phần cứng (gọi tắt là HSAV). Hệ thống gồm có 3 phần chính là : phần cứng so trùng mẫu chữ kí tĩnh, phần giao tiếp giữa phần mềm và phần cứng và phần mềm quản lý bằng giao diện web. Qua thực nghiệm, HSAV có throughput của hệ thống đạt được trung bình là 541.6 Mb/s, nhanh gấp 4.2 lần so với giải pháp dùng phần mềm ClamAV có throughput là 65.
Như vậy, hệ thống của chúng tôi đã gần đạt yêu cầu và nhiệm vụ của đề tài là hệ thống sau khi cải tiến phải nhanh tối thiểu 4 lần so với phần mềm. Cấu trúc của luận văn Chương 2: Trình bày cơ sở lý thuyết của phương pháp so trùng chuỗi bao gồm 3 hướng tiếp cận chính là systolic array, FSM và hashing cũng như khảo sát phần mềm ClamAV. Chương 3: Tổng hợp các công trình nghiên cứu liên quan. Chương này đề cập tới 2 kiểu framework tiêu biểu là kết hợp phần cứng và phần mềm và chỉ dùng phần cứng, đồng thời phân tích ưu và khuyết điểm của mỗi kiểu framework.
Chương 4: Giới thiệu về hệ thống HSVS (High speed virus scanner) dùng để so trùng mẫu chữ kí tĩnh. Phần này sẽ đề cập tới kiến trúc hệ thống, bộ quét kí tự (Character Scanning Unit), bộ so sánh (Comparison Unit). 6 Chương 5: Trình bày framework tăng tốc quét virus trên FPGA (HSAV): gồm các vấn đề như định nghĩa giao thức truyền nhận dữ liệu, thiết kế bộ điều khiển giao tiếp với PCIe. Chương 6: Kết quả và đánh giá khi chạy thực nghiệm hệ thống HSAV Chương 7: Một số kết luận và hướng mở rộng của đề tài.
7 CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 2.1 KHẢO SÁT PHẦN MỀM QUÉT VIRUS CLAMAV Trong phần này, nhóm tiến hành khảo sát phần mềm quét virus mã nguồn mở ClamAV một cách toàn diện bao gồm: Thiết lập môi trường phát triển hệ thống và cài đặt phần mềm ClamAV. Chạy thử nghiệm và cấu hình chức năng của ClamAV. Phân tích giải thuật và hoạt động của ClamAV Phân tích tập chữ ký Virus của ClamAV Phân tích source code, thời gian hoạt động các hàm quét trong ClamAV.1 Giới thiệu ClamAV Clam Antivirus (ClamAV) là một công cụ quét virut mã mở nguồn, được thiết kế đặc biệt cho việc kiểm tra e-mail trên các e-mail gateways. Nó cung cấp một số tiện ích bao gồm khả năng mở rộng multi-threaded daemon (cung cấp dịch dụ quét qua các socket communications), một dòng lệnh máy quét và công cụ tiên tiến cho việc update tự động cơ sở dữ liệu.
Cái chính của gói là một công cụ chống virus có sẵn ở dạng thư viện chia sẻ. ClamAV được phát triển bởi nhiều công ty vừa và nhỏ trong hệ thống email của họ, ví dụ như: Vermont State Government (United States of America) Michigan University (United States of America) Nantes University (France) Webmail.2 Cơ sở dữ liệu chữ ký của ClamAV 2.1 Giới thiệu Gói dữ liệu virus của ClamAV gồm có các file chính như sau main.cvd: là dữ liệu chính, chứa các mẫu virus từ trước đến giờ.cvd: là dữ liệu mới nhất, được cập nhật theo ngày.cvd: là dữ liệu đặc biệt.