Dựa vào độ phức tạp Kolmogorov, ta thử nghiệm với URL, trong đó mỗi URL là một xâu. Như vậy, khi chúng ta thực hiện trên tập các xâu, đồng nghĩa với việc ta đang thử nghiệm với một tập các URL.
Độ phức tạp của một xâu s bất kỳ chính là độ dài của chương trình ngắn nhất khi chạy chương trình trên máy Turing cho kết quả là s:
Trong đó : K(s) : là kí hiệu thể hiện độ phức tạp Kolmogorov U(p) : là máy Turing chạy chương trình p
S : là xâu bất kỳ
|p|: Độ dài của chương trình p khi chạy trên máy Turing
Độ phức tạp của một xâu t tính theo s là độ dài chương trình ngắn nhất khi chạy chương trình trên máy Turing với đầu vào là xâu s:
Trong đó : K(t|s) : là kí hiệu thể hiện độ phức tạp Kolmogorov của t tính theo s U(p,s) : là máy Turing chạy chương trình p với đầu vào là sâu s
24
S : là xâu bất kỳ
|p|: Độ dài chương trình p khi chạy trên máy Turing với đầu vào s
Chúng ta không thể tính trực tiếp độ phức tạp Kolmogorov đối với một xâu s, mà tính độ phức tạp Kolmogorov thông qua tính xấp xỉ thông qua độ dài của xâu s được sau khi được nén bởi thuật toán Deflate (là một biến thể của LZ77) trên các URL trong tập.
Để tính xấp xỉ của độ phức tạp Kolmogorov của xâu “st” ( xâu st là xâu nối của s và t) bất kỳ, ta đo độ dài của xâu nén của st (ký hiệu là xâu nén g(st) ) được nén bởi thuật toán nén Deflate.
Trong đó : g(st) : độ dài xâu nén của st
K(st): độ phức tạp Kolmogorov của xâu st g(s | D): độ dài xâu nén s theo xâu D g(Ds): độ dài xâu nén của xâu nối D và s g(D): độ dài xâu nén của D
Để phân loại URL là URL lành tính hay URL độc hại, chúng ta sử dụng hai tập dữ liệu : một tập gồm toàn URL lành tính, và một tập gồm toàn URL độc hại.
Gọi : Xâu Dm : là xâu nối của tất cả các URL độc hại được lựa chọn để thử nghiệm. Xâu Db : là xâu nối của tất cả các URL lành tính được lựa chọn để thử nghiệm. Kịch bản được đưa ra là, nếu mà có một URL mới được gửi từ khách hàng. Làm thế nào để biết đó là URL độc hại hay không. Để trả lời được câu hỏi này, chúng ta đem so sánh URL này lần lượt với Dm và Db, để xem URL này tương đồng với URL độc hại hay lành tính hơn.
Tiếp theo tính :
Độ dài của xâu nén s theo Dm là hiệu của độ dài xâu nén của Dm ( xâu Dm nối với s) và độ dài xâu nén Dm :
25
Độ dài của xâu nén s theo Db là hiệu của độ dài xâu nén của Dbs ( xâu Db nối với s) và độ dài xâu nén Db :
g(s | Db) = g(Dbs) – g(Db)
Để phân loại URL là URL lành tính hay URL độc hại, chúng ta có biểu thức dưới đây. Bằng trực giác, chúng ta có thể thấy nếu độ dài xâu nén s theo Dm mà nhỏ hơn độ dài xâu nén của s theo Db thì có nghĩa là s có đặc trưng gần gũi với các URL độc hại hơn là URL lành tính.
26 Dựa vào biểu thức trên ta thấy rằng :
Nếu M < 0 thì ta dự đoán xâu s là URL độc hại, do s có thể có thành phần tương đồng với Dm hơn.
Nếu M > 0 thì ta dự đóan xâu s là URL lành tính, do s có thể có thành phần tương đồng với Db hơn.
Thuật toán trên, cho ta thấy rằng, hoàn toàn có thể dự đoán được đặc trưng của bất kỳ URL dựa vào phương pháp độ phức tạp Kolmogorov bằng cách sử dụng phương pháp nén và cùng với tập dữ liệu lớn về URL độc hại và URL lành tính.
Dưới đây, là mã giả của thuật toán sử dụng độ phức tạp Kolmogorov để dự đoán một URL bất kỳ là độc hại hay là URL lành tính.
27 Trong đó:
s : là xâu cần dự đoán
Dm : là xâu nối của tập tất cả các URL độc hại thu thập được Db : là xâu nối của tập tất cả các URL lành tính thu thập được Dms: là xâu nối của Dm và s
28
CHƯƠNG 3. CÀI ĐẶT VÀ ĐÁNH GIÁ
Chương này trình bày việc cài đặt và đánh giá thuật toán Kolmogorov áp dụng trong phát hiện quảng cáo độc hại. Hầu hết các nghiên cứu gần đây về URL thu thập và sử dụng dữ liệu về Tập các URL của PhishTank gồm các URL độc hại, và Tập các URL lành tính của Yahoo Directory trong những thử nghiệm của mình đối với web độc hại. Tuy nhiên trong phạm vi khóa luận này, khóa luận chỉ đề cập đến việc phát hiện và ngăn chặn quảng cáo độc hại dựa vào URL, do vậy khóa luận sẽ không sử dụng các tập dữ liệu đã được tổng hợp sẵn, mà sẽ tự xây dựng tập dữ liệu Mẫu để kiểm thử hiệu quả của phương pháp đề xuất. Đồng thời, do trên môi trường Internet không có sẵn bất kỳ kho dữ liệu URL quảng cáo độc tính cũng như kho dữ liệu URL quảng cáo lành tính nào, chúng tôi tự thu thập các URL quảng cáo rồi sử dụng VirusTotal để phân loại URL và tạo lập các kho nêu trên.
Một tập lớn các URL quảng cáo đã được thu thập, sau đó được chia thành hai tập con. Tập con thứ nhất được sử dụng cho cài đặt của thuật toán Kolmogorov. Tập con thứ hai được sử dụng để kiểm thử và đánh giá hiệu quả phát hiện của thuật toán. Quá trình thu thập và phân loại dữ liệu, quá trình kiểm thử hiệu quả của phương pháp và kết quả thử nghiệm, đánh giá thuật toán Kolmogorov được trình bày trong các phần tiếp theo.