Đồ án Nghiên cứu spam và xây dựng ứng dụng ngăn chặn spam cho chương trình Microsoft Outlook

Vấn đề ngăn chặn thư rác thực sự được quan tâm chú ý của những người sử dụng mạng Internet nói chung và những chuyên gia phòng chống thư rác nói riêng. Có thời điểm người ta lo ngại với mức độ phát triển nhanh chóng thư rác có thể xóa sổ thư điện tử vì sự phiền phức. Nhưng với các giải pháp hiện tại nếu áp dụng rộng khắp và triệt để có thể làm giảm đáng kể lượng thư rác. Hi vọng tương lai có một giải pháp triệt để làm thư rác hoàn toàn biến mất. Lời khuyên hiện tại cho người sử dụng thư điện tử là tuyệt đối không mua hàng qua các quảng cáo của thư rác dẫn đến cắt giảm nguồn kinh phí cho những kẻ phát tán thư rác. Trong thời gian thực hiện đồ án là 15 tuần, với sự nỗ lực của bản thân và sự giúp đỡ nhiệt tình của thầy giáo Ths. Ngô Văn Dũng về cơ bản đồ án đã hoàn thành các vấn đề sau:  Về lý thuyết: Tìm hiểu về các giao thức gửi nhận thư điện tử nói chung và các vấn đề về thư rác điện tử nói riêng. Đồ án tập chung nghiên cứu các thủ đoạn kĩ thuật những kẻ phát tán thư rác sử dụng và đặc biệt quan trong là các giải pháp phòng tránh thư rác. Việc đi sâu nghiên cứu các giải pháp phòng tránh thư rác đã giúp đưa ra nhìn nhận khả năng hiện tại của các phương pháp này đồng thời tạo nền tảng để có thể thiết kế thành công một ứng dụng lọc thư rác hiệu quả.  Về thực nghiệm: Thiết kế một bộ lọc có khả năng lọc thư rác triệt để, có khả năng tự nâng cấp cho phù hợp với sự biến đổi của thư rác nhằm vượt qua bộ lọc. Thiết kế cũng đã dự phòng các giải pháp cũng như đưa ra hướng phát triển tiếp theo của chương trình. Sau khi triển khai chương trình có khả năng lọc thư mềm dẻo và rất thân thiện với người sử dụng.

doc75 trang | Chia sẻ: aloso | Lượt xem: 2673 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đồ án Nghiên cứu spam và xây dựng ứng dụng ngăn chặn spam cho chương trình Microsoft Outlook, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
gười. Tuy nhiên các chương trình tìm kiếm địa chỉ thư cũng có thể dùng phương pháp phân tích đoạn mã này nhưng là rất phức tạp. Một cách nữa cũng thường sử dụng để khống chế các chương trình lần tìm điạ chỉ thư là dùng các đoạn mã CGI (Common Gateway Interface) gửi nội dung địa chỉ thư đến các địa chỉ đến các hòm thư của người muốn nhận địa chỉ này. Cung cấp địa chỉ giả Phương pháp này có tên tiếng Anh là Spider trap, là trang web chứa một lượng lớn các địa chỉ thư giả để lừa những kẻ gửi thư rác. Trong nhưng trang này lại có đường dẫn tới các trang spider trap khác làm cho danh sách mà những kẻ phát tán thư rác nạn không có ích cho chúng. Một số còn có thể tự tạo ra các đoạn mã sinh ra một lượng lớn thư không có thật cho những máy tìm kiếm. Các đoạn mã này còn tạo ra đường dẫn quay ngược lại chính đoạn mã làm cho quá trình tìm kiếm chỉ chứa toàn các địa chỉ vô ích với spammer. Một số phần mềm chống lại các máy tìm kiếm địa chỉ thư bằng cách chứa địa chỉ thư vào nơi đánh dấu không truy cập được. Robotcop là một chương trình mã nguồn mở thường được các quản trị web sử dụng để làm nhiệm vụ này. Các máy chủ tìm kiếm (search engine) thường dựa trên các máy lưu giữ thông tin web (web crawler). Các web crawler lưu thông tin truy cập vào tất cả các trang web và lấy ghi lại các thông tin nhưng nó phải tuân theo các luật trong file robots.txt. Nếu như các luật này không được các máy tìm kiếm địa chỉ tuân thủ thì nó xem như là các máy này có ý định lấy thông tin nhậy cảm và sẽ chặn lại kèm theo việc ghi vào file log. Có một số phần mềm còn chỉ các chương trình tìm kiếm thư điện tử vào thư mục toàn thư không có ích. Hệ thống thu phí thư điện tử và chữ kí điện tử. Một số hệ thống để chống lại thư rác mong muốn sử dụng hình thức thu phí điện tử với mô hình như tem thư trong thư tín thông thông thường. Lấy ý tưởng từ thư tín bình thường nhưng thực sự thì giá thành của thư điện tử chỉ có thể tính bằng chi phí cho tính toán của CPU. Các thư để gửi được thì máy tính phải tính toàn một số phép toán tốn khoảng vài chục chu kì CPU. Việc này là không đáng kể với người dùng thông thường nên họ dễ chấp nhận. Nhưng đối với những kẻ phát tán thư số lượng phép toán mà họ phải tính toán là quá lớn. Sử dụng mobile agent Một cách tiếp cận chống thư rác khác mới được công bố là dùng các agent. Cách làm này được Li Cheng và Wang Weinong, đại học Thượng Hải giới thiệu năm 2002, nguyên tắc như sau: Trong hệ thống thư điện tử SMTP khi máy chủ và máy người dùng (cụ thể là MTA-Mail Trafer Agent) muốn trao đổi sẽ mở kênh truyền. Để thông báo mở một kênh truyền bên gửi gửi lệnh MAIL. Đây là thời điểm đưa vào một agent tham ra vào, nó sẽ thông báo “OK” cho bên gửi. Agent sẽ kiểm tra và lọc thư rác để quyết định bỏ qua hay chuyển thư đó cho bên nhận. Gánh nặng việc xử lý thư rác này chuyển sang các agent này là tránh tốn phí xử lý của các máy chủ chuyển tiếp thư, khi nó phải xử lý hàng nghìn thư rác có cùng nội dung gửi cho những người dùng khác nhau. Một điểm mạnh kèm theo của hệ thống này là nó còn có thể kiểm tra virus và ngăn không để tấn công từ bên trong mạng khi kẻ tấn công gưi virus thông qua các gói tin đính kèm. Nhưng điểm khó khăn với giải pháp này là làm sao để đảm bảo an toàn an ninh cho cả agent và máy chủ. Các phương pháp khác. Một xu hướng gần đây của các phần mềm lọc thư là kết hợp các phương pháp lọc khác nhau. TDMA-Tagged Message Delivery Agent là chương trình ứng dụng theo chuẩn OSI nó kết hợp các phương pháp danh sách trắng, danh sách đen, các phương pháp mã hóa. Các thư gửi đến từ những người gửi chưa xác định thì được đặt ở trong một hàng đợi đến khi có xác nhận của người nhận. Khi xác nhận thư là hợp lệ nó cho vào danh sách trắng và không cần phải xử lý ở lần tiếp theo. SpamAssasin là một chương trình rất phổ biến cho phép kiểm tra thư với các tiêu chuẩn thư rác xác định nó là thư rác. Nó sử dụng phân tích nội dung và một vài danh sách đen tức thì (real time backlist). Mỗi một tiêu chuẩn đánh giá được gắn với một trọng số. Các trọng số này được biểu diễn bằng một đại lượng là ngưỡng, và dựa vào đại lượng này để xác định thư rác. Sử dụng các luật và một số các hàm lượng giá để kiểm tra tiêu đề và phần thân của thư. Ví dụ một tiêu chuẩn của nó là việc địa chỉ đến và đi của nó là giống nhau, hoặc một đặc điểm là các thư rác thì thường dùng các chữ có font lớn và nhiều màu sắc. Một tiêu chuẩn nữa là nó sử dụng cơ sở dữ liệu Razor (gồm hàng nghìn thư rác) để so sánh các thư có nội dung giống hoặc tương tự. Phương pháp lọc nội dung Bayes. Áp dụng phương pháp lọc Bayes cho việc lọc thư rác. Để áp dụng cho việc phân loại thư rác thì người ta tiếp cận theo phương án làm đơn giản lý thuyết Bayes. Paul Grahams tiếp cận theo cách đơn giản và đưa ra lược đồ minh họa bằng đoạn mã (LISP) như sau: (let ((g (* 2 (or (gethash word good) 0))) (b (or (gethash word bad) 0))) (unless (< (+ g b) 5) (max .01 (min .99 (float (/ (min 1 (/ b nbad)) (+ (min 1 (/ g ngood)) (min 1 (/ b nbad))))))))) Ông dùng hai bảng băm một chứa các từ tốt (good-trong thư hợp lệ) và một chứa các từ xấu (bad-trong thư rác) dùng để phân loại thư rác. Các bảng này ánh xạ các từ xấu và tốt với số các từ xấu và tốt trong thư. Với nbad, ngood tương ứng là số các thư hợp lệ và thư rác. Trong giải thuật này sử dụng số thư hợp lệ được nhân đôi để bảo đảm giảm tỉ lệ nhầm thư hợp lệ với thư rác. Chỉ có những từ xuất hiện trong thư rác và thư hợp lệ hơn 5 lần mới được xem xét. Công thức trên được viết lại như sau: Công thức 21 Công thức Paul Graham áp dụng Với g là số dấu hiệu tìm thấy trong thư rác, b là số dấu hiệu tìm thấy trong thư hợp lệ. B là số thư rác, G là số thư hợp lệ và p là khả năng thư này là thư rác. Với một chú ý là mỗi loại thư nên để thành một dòng văn bản liên tục để đếm số lần suất hiện của từ, số thư trong mỗi loại thay vì trộn thông thường các thư này, hay là chia nhỏ việc tính xác suất từng phần rồi cộng lại (theo Paul Graham). Một dạng đơn giản của công thức Bayes ta có: Công thức 22 Công thức Bayes Trong đó là xác suất thư chứa từ khóa là thư rác, là khả năng spam với điều kiện nó chứa từ khóa, là xác suất một thư bất kì là spam. là xác suất thư hợp lệ với điều kiện nó chứa từ khóa và là xác suất thư bất kì là hợp lệ. Dựa vào nhận định trên ta biến đổi từ công thức 2-2 ra công thức sau: Công thức 23 Công thức sau khi biến đổi Việc đơn giản này dựa trên giả định là số thư rác và số thư hợp lệ là bằng nhau (). Ưu điểm của phương pháp lọc thư rác Bayes Bộ lọc Bayes có khả năng tự cập nhật sửa chữa trong việc học thư rác và thư hợp lệ. Khác với các bộ lọc thông thường dùng phương pháp tìm các từ mẫu trong thư, việc cập nhật mẫu là do người dùng thực hiện và để đạt được hiệu quả thì việc tạo ra các mẫu này phải là chuyên gia. Trong khi đó bộ lọc Bayes trong quá trình tự học các từ khóa mới, nó có thể từ nâng cấp và cập nhật. Ví dụ khi spammer thay các từ như “porn” bằng “P0rn” thì có thể vượt qua các hệ thống lọc theo mẫu dễ dàng vì từ này không có trong cơ sở dữ liệu. Còn hệ thống lọc Bayes có thể tự động cập nhật thủ đoạn này. Phương pháp Bayes có thể dùng dữ liệu của nhiều người để phát hiện thư rác hiệu quả hơn. Khi đó số từ khóa và các biểu hiện của thư rác bị lộ hết thì rất dễ dàng cho bộ lọc Bayes xử lý. Và cũng rất khó khăn cho các spammer trong việc thay đổi các từ khóa vì mục đích thương mại và quảng cáo của thư. Kết luận Qua chương này có thể thấy là có rất nhiều phương pháp dự án chống lại hình thức phát tán thư rác. Những phương pháp này sử dụng đến kiến thức của nhiều lĩnh vực về kĩ thuật như mã hóa, kĩ thuật mạng, trí tuệ nhân tạo. Về mặt xã hội áp dụng kiến thức chuyên gia như kinh tế, và cả tâm lý học ví như phân tích xem khách hàng của thư rác thích các loại thư nào và thuộc đối tượng nào. Những điều trên chứng tỏ việc chống lại thư rác là không phải đơn giản. Nó không đơn giản bởi vì thư rác là vấn đề liên quan đến xã hội, kinh tế. Việc phát tán thư rác giúp cho nhứng người thực hiện nó thu được lợi nhuận khá dễ dàng hầu như không phải đầu tư nên lượng thư rác có phản hồi là rất nhỏ cũng đem lại lợi nhuận cho họ. Một giải pháp triệt để là áp dụng luật chống thư rác. Nhưng việc tạo ra luật chống thư rác và áp dụng nó triệt để hiện này là không khả thi. Về phương diện kĩ thuật, hiện này có một số các ứng dụng rất thành công việc chặn thư giác điển hình là các chương trình như Spamsleuth, Spamassassin, CRM114 hoặc một vài chương trình ứng dụng. Các chương trình này đạt được tỉ lệ lọc thư rác đến 99% và tỉ lệ mất thư hầu như là không có. Xu hướng của các bộ lọc thư rác này là phối hợp nhiều phương pháp để tạo ra bộ lọc tuyệt đối. Việc lọc triệt để thư rác chắc rằng sẽ đạt được trong một ngày gần đây nếu như kĩ thuật phát tán thư rác không có những tiến bộ đáng kể. Thiết kế chương trình chống thư rác. Giới thiệu. Dựa trên những phân tích khá đầy đủ về mọi xu hướng mọi kĩ thuật của những kẻ phát tán thư rác cũng như của người chống lại thư rác, tác giả sẽ tiếp tục phần thực nghiệm của đồ án là xây dựng một ứng dụng có khả năng chống lại thư rác hiệu quả và thân thiện với người sử dụng. Phân tích yêu cầu chương trình. Phân tích chung về yêu cầu của chương trình. Vấn đề chống thư rác đang là vấn đề nóng lên các nước trên thế giới ứng dụng về vấn đề này phổ biến. Ở Việt Nam chương trình lọc thư rác hầu như chưa có ai thực hiện, do đó đối tượng nhắm tới của ứng dụng là người Việt. Thực chất tất cả các nguồn thư rác chính thường đến từ ngoài Việt Nam, thư rác bằng tiếng Việt thực sự có một số lượng ít và chưa làm lo lắng người dùng trong nước. Nên mục đích của chương trình là có khả năng chống thư rác nước ngoài tuyệt đối, kèm theo là không mất thư bằng tiếng Việt, ứng dụng sẽ được thiết kế dự phòng cho khả năng phát sinh một lượng lớn thư rác bằng tiếng Việt. Các ứng dụng lọc thư rác thường có hai cấp độ sau: Ở cấp độ cao là lọc phía máy chủ gửi thư. Mục đích của cấp độ này là hạn chế tối đa lượng thư rác gửi qua máy chủ thư điện tử và người dùng không cần bận tâm đến vấn đề này. Ở cấp độ thấp hơn là các chương trình cài đặt ở các máy trạm. Các chương trình này đảm bảo cách ly người dùng khỏi thư rác và đây thường là các bộ lọc. Bộ lọc ở mức máy chủ thì có thể đảm bảo là chặn được lượng lớn thư không tốn băng thông truyền đến các máy trạm nhưng có điểm yếu lớn nhất là làm mất thư của khách hàng và sử dụng các phương pháp, có thể xâm phạm đến tính riêng tư của khách hàng. Bộ lọc ở phía máy trạm không có các điểm yếu trên nhưng nó không có được cơ sở dữ liệu lớn thông tin về thư rác. Việc này có thể khắc phục bằng mô hình các máy trạm liên kết trao đổi thông tin với nhau và liên kết với máy chủ chứa cơ sở dữ liệu thư rác. Từ những phân tích trên, mục đích là xây dựng một hệ thống lọc thư hiệu quả nên ứng dụng sẽ được xây dựng ở phía máy trạm. Chương trình sẽ được xây dựng làm hai giai đoạn: Giai đoạn một: Xây dựng một chương trình độc lập ở phía người dùng có khả năng thực hiện các chức năng lọc thư rác hiệu quả. Giai đoạn hai: Kết nối các Chương trình dùng ở mức người dùng thành mạng có liên kết chia sẻ cơ sở dữ liệu với máy chủ có thể tích hợp hoặc độc lập với máy chủ thư điện tử. Trong khuôn khổ đồ án tốt nghiệp chương trình sẽ thực hiện giai đoạn một. Nhưng được thiết kế nằm trong tổng thể để dễ dàng phát triển chương trình lên giai đoạn hai. Phân tích chi tiết yêu cầu của chương trình. Ứng dụng sẽ áp dụng bộ lọc Bayes kết hợp với các phương pháp khác như danh sách trắng danh sách đen. Hiện tại ở Việt nam trình duyệt thư được dùng phổ biến nhất là Microsoft Outlook, nằm trong bộ phần mềm Office của hãng Microsoft. Chương trình này cung cấp khả năng duyệt thư rất mạnh, bên cạnh đó có các chế độ lập lịch và tác vụ kèm theo thư điện tử khá mạnh và thân thiện. Office nói chung và Outlook nói riêng cung cấp một nền tảng khá mạnh để những người phát triển thứ ba có thể tham gia. Đây cũng là một xu hướng mới giống như việc phát triển chương trình trên hệ điều hành, ở đây là phát triển các ứng dụng trên nền một bộ, hoặc một phần mềm có sẵn. Ứng dụng sẽ xây dựng cho phần mềm Outlook với mục đích: Thứ nhất tiếp cận với một lượng lớn người dùng để có cơ hội phát triển tiếp chương trình. Thứ hai mục đích của chương trình là lọc thư rác vì vậy không cần bận tâm các chức năng duyệt thư. Tiếp theo chương trình khi được xây dựng thành công sẽ tích hợp vào các trình duyệt thư khác như Eudora hoặc trình duyệt riêng tự xây dựng từ đầu. Chương trình Outlook bản thân nó cũng cung cấp khả năng lọc thư rác, nhưng bộ lọc dựa trên phương pháp lọc theo mẫu và lọc theo danh sách. Chương trình chống thư rác được tích hợp vào có tên là Bkas (Bach Khoa anti-spam). Chương trình xây dựng dựa trên bộ lọc Bayes có kèm các phương pháp khác. Nhưng yêu cầu chính là: Khi một thư được nhận về thì bộ lọc được kích hoạt và tiến hành lọc thư đó ngay tùy theo loại của thư để có thể chuyển nó vào các thư mục liên quan do người dùng tạo ra. Bộ lọc do có khả năng tự cập nhật và nâng cấp để có thể theo kịp với sự thay đổi thủ đoạn của những kẻ phát tán thư. Như việc huấn luyện cho bộ lọc. Cho phép người dùng có thể tự cấu hình bộ lọc theo ý muốn của mình. Có thể thay đổi các thông số tùy chọn cho phù hợp. Có giao diện dễ sử dụng phù hợp với môi trường có sẵn của Micosoft Outlook. Phân tích thiết kế hệ thống Mô hình phân cấp chức năng. Sau khi xem xét yêu cầu chương trình, chương trình được phân rã thành các chức năng nhỏ sau (Hình 3.1 minh họa biểu đồ phân cấp chức năng): Giao tiếp với người dùng: Cho phép quản lí tất cả các tác vụ người dùng yêu cầu, và hiển thị kết quả người dùng yêu cầu. Chức năng này chia làm hai chức năng nhỏ hơn là: chức năng giao tiếp với chương trình Outlook và chức năng xử lí yêu cầu người dùng. Lọc thư: Chức năng này xác định một thư là rác hay không, dựa vào việc tính xác suất qua mạng nơ-ron và một số các phương pháp khác. Chức năng này chia làm các chức năng nhỏ hơn như sau: xử lý yêu cầu người dùng, phân tích cấu trúc thư, và tính xác suất. Huấn luyện mạng: Chức năng này cho phép tạo ra bộ lọc và cập nhật bộ lọc là một mạng trí tuệ nhân tạo. Chức năng này gồm các chức năng nhỏ hơn như sau: phân tích mẫu thư rác, thư hợp lệ và đào tạo mạng. Hình 3.1 Biểu đồ phân cấp chức năng. Thiết kế tổng thể: Từ nhưng yêu cầu phân tích ở trên chúng ta tiến hành thiết kế hệ thống. Do đặc thù của chương trình là tích hợp vào chương trình Outlook, chương trình sử dụng giao diện và đối tượng của Office được gọi thông qua một lớp chuyển đổi RCW (runtime callable wrapper). Chương trình được phân chia làm hai phần như hình 3.2. Hình 3.2 Kiến trúc kĩ thuật tổng thể của chương trình Phần một: đảm nhiệm toàn bộ các giao tiếp với chương trình Microsoft Outlook đây cũng là phần giao tiếp trực tiếp với người sử dụng. Trên hình 3.2 là phần bên phải có tên là Bkas. Việc thực hiện chức năng bộ lọc của nó được gọi thông qua thư viện BkasLib. Việc thiết kế phần này được thực hiện theo hướng phân tích một phần mềm ứng dụng. Phần hai: thư viện cung cấp chức năng lọc thư cho phần Bkas. Trên hình 3.2 là phần phía dưới. Mục đích của phần này là tính xác suất của một thư đưa vào trên cơ sở phân tích thư này dựa vào bộ lọc được xây dựng từ nguồn thư rác, thư hợp lệ. Bộ lọc này có khả năng tự nâng cấp khi có mẫu thư rác và thư hợp lệ thay đổi. Thiết kế giao tiếp với người dùng . Xây dựng lược đồ trường hợp sử dụng (Use Case -UC ) . Lược đồ USE-CASE: Hình 3.3 Biểu đồ trường hợp sử dụng của phần giao tiếp với người dùng. Lược đồ hình 3.3 biểu diễn tương tác giữa người sử dụng và chương trình lọc thư rác Bkas. Các hành động người dùng có thể tác động vào gồm có: chuyển đổi chế độ học và lọc thư, học thông tin thư rác và thư hợp lệ, cập nhật thuộc tính cho các phương pháp lọc khác. Trường hợp sử dụng “Học thông tin thư rác và thư hợp lệ”. Tác nhân kích hoạt: Người sử dụng chương trình Outlook đồng thời sử dụng ứng dụng Bkas. Tiền điều kiện: Đã có bộ thư rác và thư hợp lệ mẫu. Các bước trong UC này là: Người dùng thực hiện việc lựa chọn bộ các thư mẫu và thực hiện yêu cầu học các thư rác này thông qua giao diện người dùng. Mỗi thư sau đó được phân tích thành các từ khóa sau đó được ghi vào cơ sở dữ liệu từ khóa, nếu trong cơ sở dữ liệu chưa có từ khóa. Nếu từ khóa đã có trong cơ sở dữ liệu thì số lần xuất hiện sẽ tự động tăng lên sau mỗi lần. Việc học các thư hợp lệ cũng thực hiện y hệt chỉ khác ghi vào cơ sở dữ liệu thư hợp lệ. Trường hợp sử dụng “Chuyển đổi chế độ”. Tác nhân kích hoạt: Người sử dụng ứng dụng Bkas. Tiền điều kiện: Đã thực hiện việc huấn luyện bộ lọc. Các bước trong UC này: Sử dụng giao diện người dùng có thể chuyển đổi chế độ học với người đã được trình bày ở trên sang chế độ tự học. Chế độ này được thực hiện khi bộ lọc đã đạt đến mức độ chính xác cao nó sẽ tự học từ những thư mà nó đã quyết định là thư rác hay thư hợp lệ. Trường hợp sử dụng “Cập nhật thông tin bộ lọc”. Tác nhân kích hoạt: Người sử dụng ứng dụng Bkas. Tiền điều kiện: không có. Các bước trong UC này: Bộ lọc được thiết kế trên cở sở bộ lọc nội dung theo phương pháp Bayes có bổ sung các phương pháp khác. Ở đây người dùng có thể chỉ vào thư rồi bấm nút thêm vào danh sách bạn và danh sách thù. Hoặc có thể soạn danh sách này từ bàn phím. Xây dựng biểu đồ tương tác Hình 3.4 Các đối tượng của Bkas. Để có ứng dụng Bkas có thể phản hồi được các tác động mà người sử dụng thực hiện nó được thiết kế gồm bị các sự kiện mà người dùng mong đợi thực hiện và để đảm bảo cho add-in phù hợp với kiến trúc của Microsoft Outlook, chúng ta sẽ phân chia thành các đối tượng chính sau (Các đối tượng minh họa trên hình 3.4): Connect: Đối tượng này quản lý các sự kiện mà chương trình Outlook phát sinh như bắt đầu được khởi tạo, khởi tạo thành công, bắt đầu kết thúc chương trình Outlook… BkasInit: Đối tượng này thực hiện khởi tạo cho các sự kiện mà người dùng mong đợi. BlasUI: Thực hiện việc vẽ và quản lý về đồ họa với các nút, các thanh cuộn của chương trình. BkasEvents: Quản lý các sự kiện và tương ứng các sự kiện này kích hoạt các hành động mà người dùng mong đợi. BkasActions: Thực hiện các hành động được gọi bởi lớp BkasEvents. BkasCore: Cung cấp các hàm, các thủ tục cơ bản cho BkasActions. Khi khởi động Outlook: sau khi Outlook hoàn thành khởi tạo, nó sẽ kích hoạt đối tượng Connect. Quá trình khởi tạo bắt Bkas bắt đầu (hình 3.5). Hình 3.5 Biểu đồ trình tự thời điểm khởi tạo. Đối tượng Connect thực hiện yêu cầu bắt đầu Start() đến đối tượng BkasInit, đợi nhận về thông báo thành công InitCompleted. Đối tượng sau BkasInit sau khi thực hiện yêu cầu tạo giao diện đến đối tượng BkasUI, tiếp tục gửi yêu cầu khai báo các sự kiện bấm nút trên thanh cuộn RegisterMenuEvents() và sự kiện có thư mới đến RegisterEmailEvents(), và đợi trả về thông báo thành công. Quá trình thực hiện tương tác người dùng và chương trình: Hình 3.6 Biểu đồ trình tự tương tác người dùng. Ở đây tùy theo tác vụ, người dùng mong muốn sẽ kích hoạt các nút, quá trình chung cho tất cả các hành động kích hoạt nút của người dùng minh họa trên hình 3.6. Sau đây là cụ thể quá trình người dùng bấm nút tạo bộ lọc: Người sử dụng bấm nút Tạo bộ lọc yêu cầu đến BkasEvent, đối tượng này tùy vào yêu cầu sẽ kích hoạt đối tượng BkasAction yêu cầu tạo bộ lọc. BkasAction sẽ thực hiện yêu cầu này thực hiện các công việc chuẩn bị cho phần liên quan đến chương trình Outlook như đọc nguồn thư rác, thư hợp lệ…Sau đó nó gửi yêu cầu đến đối tượng BkasCore nơi giao tiếp trực tiếp với thư viện BkasLib. Quá trình khi có sự kiện có thư mới: Hình 3.7 Biểu đồ trình tự cho sự kiện có thư mới. Khi có có thư mới đến hòm thư của người sử dụng sẽ gửi ID đến cho BkasEvents đối tượng này kích hoạt đối tượng BkasAcitons. BkasAction truy cập vào thư rồi từ các số liệu thư gửi sang đối tượng BkasCore yêu cầu lọc thư này MailFilter(Mail). Đối tượng này trả về xác suất thư rác của thư nói trên về cho BkasAction. BkasAction tùy theo số liệu này sẽ quyết định chuyển vào thư mục tương ứng và thông báo cho người sử dụng. Xây dựng biểu đồ lớp Sau khi xây dựng biểu đồ tương tác, các lớp được ánh xạ từ các đối tượng, gồm các lớp sau (hình 3.8): Gói Bkas BkasCore BkasUI BkasEvents BkasInit BkasActions Connect Hình 3.8 Thành phần gói Bkas. Tiến hành thực hiện triển khai biểu đồ lớp thành các lớp. Thiết kế các lớp trên sẽ không trình bày ở trong đồ án. Sau khi thực hiện các biểu đồ lớp, sẽ triển khai thực hiện viết mã chương trình. Thiết kế giao diện. Giao diện đồ họa của chương trình được thiết kế với hai mục đích đảm bảo thực hiện đơn giản và tiện lợi các chức năng của chương trình. Giao diện sau khi được thiết kế và triển khai có dạng như hình 3.9. Vì là một ứng dụng gắn vào một chương trình có sẵn nên phải đảm bảo có giao diện phù hợp với chương trình Outlook. Giao diện sau khi cài đặt hiển thị các thư mục được gắn vào bảng quản lý cac thư mục gồm: Bkas_Spam (chứa các thư bị coi là thư rác) và Bkas_Spam_Review (chứa các thư bị nghi ngờ là thư rác sau khi thực hiện lọc) Hình 3.9 Thanh công cụ của chuơng trình gắn vào Outlook. Hình 3.10 Thanh công cụ của Bkas. Hình 3.10 chỉ ra các nút trên thành công cụ của chương trình nút “Lấy” Thực hiện việc chuyển một thư bất kì về thư mục mà người dùng chứa các thư hợp lệ mà ngầm định là thư mục Inbox. Nút “Bỏ” thực hiện việc chuyển một thư mà người dùng cho rằng nó là thư rác và chuyển vào thư mục ngầm định là Bkas_Spam. Hình 3.11 Thanh cuộn chính của Bkas Hình 3.11 là giao diện của thanh cuộn chính gồm có các nút “Tùy chọn” để kích hoạt bảng giao diện tùy chọn. Tiếp theo là nút “Lọc thư mục hiện tại” thực hiện việc lọc các thư mà con trỏ đang trỏ đến thư mục chứa nó. Tiếp theo là nút “Soạn danh sách đen” cho phép người dùng có thể thêm vào danh sách “Bạn” hoặc “Thù” mà con trỏ chỉ vào thư đó. Tiếp theo các các nút cho phép hiển thị các thông tin thống kê, thông tin về tác giả và trợ giúp người sử dụng. Hình 3.12 Bảng cấu hình chính. Bảng cấu hình (hình 3.12) được kích họat từ nút “Tùy chọn” có các chức năng chính là thay đổi nguồn thư rác và thư hợp lệ dùng cho bộ lọc, và vị trí chuyển các thư sau khi lọc. Hình 3.13 Bảng cấu hình bộ lọc. Bảng cấu hình bộ lọc (hình 3.13) cung cấp các khả năng thay đổi thư mục chứa thư rác và thư hợp lệ. Bảng này còn cho phép chỉnh sửa xác suất để quyết định một thư được chuyển vào thư mục tương ứng nào. Hình 3.14 Bảng cấu hình danh sách “Bạn” và “Thù” Bảng cấu hình danh sách bạn thù (hình 3.14) kích hoạt từ nút “Soạn danh sách đen” cho phép người dùng cấu hình danh sách bạn (danh sách địa chỉ thư luôn hợp lệ) và danh sách thù (danh sách các địa chỉ thư bị coi là thư rác) Xây dựng bộ lọc chính Quá trình lọc một thư rác. Hình 3.15 Biểu đồ chức năng của bộ lọc Quá trình lọc một thư có thứ tự như hình 3.15. Nếu sau bất kì bước nào có thể xác định là thư rác hay không thì thông báo xác suất (1 hoặc 0). Đến bước cuối vẫn chưa xác định được bắt đầu tiến hành bộ lọc chính. Cấu trúc bộ lọc chính. Do bộ lọc là một mạng trí tuệ nhân tạo gồm 1 lớp đầu vào, 1 lớp đầu ra và 2 lớp ẩn, quá trình lọc thư gồm hai phần dùng mạng nơ-ron để tính xác suất thư rác và huấn luyện mạng: Quá trình lọc gồm các bước sau: Quá trình phân tích một thư thành các từ khóa. Từ các đặc điểm lựa chọn để xác định thư rác tính ra các xác suất của các đặc điểm này của thư đưa vào. Đưa tập các xác suất vừa tính được làm đầu vào của mạng trí tuệ nhân tạo phản hồi ngược. Mạng này sau khi tính toán đưa ra xác suất thư là rác. Qua trình huấn luyên mạng:Để có bộ lọc yêu cầu quá trình huấn luyện mạng từ hai bộ mẫu thư rác và thư hợp lệ. Các bước của quá trình này như sau: Phân tích hai bộ mẫu thư hợp lệ thành các từ khóa. Từ các đặc điểm để xác định thư rác tính ra tập các xác suất của mỗi thư chọn làm mẫu trong hai nguồn thư rác và thư hợp lệ. Đưa tập các xác suất này làm đầu vào, với xác suất đầu ra mong đợi với thư rác là 1, xác suất đầu ra mong đợi với thư hợp lệ là 0. Thực hiện tính toán đến khi đạt được sai số cho phép. Cấu trúc bộ phân tích từ khóa Để bóc tách được các từ khóa và ghi vào cơ sở dữ liệu bộ phân tích từ khóa có cấu trúc như sau: Thư theo chuẩn RFC822 Bóc tách từ khóa Lọc từ khóa Ghi vào CSDL từ khóa Hình 3.16 Cấu trúc bộ phân tích từ khóa Bộ phân tích từ khóa làm nhiệm vụ tách các từ khóa thành các từ đơn và ghi vào cơ sở dữ liệu từ khóa. Quá trình như hình 3.16 thư nhận được theo chuẩn RFC822 tách thành các từ khóa theo tiêu chuẩn đặt ra rồi lọc để cho phù hợp với việc tra cứu sau này sau đó nó được ghi vào cơ sở dữ liệu của từng loại. Outlook đã cung cấp khả năng bóc tách theo chuẩn RFC822 thành các đối tượng nhỏ hơn, nên chúng sẽ bỏ qua bước này. Cấu tạo mạng nơ ron. Hình 3.17 Cấu tạo mạng nơ-ron Hình 3.17 mô tả cấu tạo của mạng nơ-ron áp dụng cho bộ lọc. Mạng gồm có một lớp vào, một lớp ra, và hai lớp ẩn. Các đặc điểm sau được chọn làm đầu vào cho mạng: Thư đó có định dạng email HTML không? Sở dĩ chúng ta chọn xác suất này, như phân tích ở chương 2 spammer rất thích sử dụng định dạng HTML, bởi lẽ định dạng này cho phép thêm ảnh làm hấp dẫn người đọc và nó cho phép giấu đi các đoạn mã người đọc thư không nhìn thấy nhưng lại có thể dùng mã này để đánh lừa bộ lọc. Với những lý do trên thư có định dạng HTML có nhiều khả năng là thư rác hơn. Thư có định dạng đúng các thẻ HTML không? Spammer ẩn đi một số câu hoặc bộ các từ khóa, người dùng không đọc được nhưng bộ lọc đọc ra và làm hỏng bộ lọc. Bằng cách sử dụng các thẻ HTML không hợp lệ cho phép kẻ phát tán thư giác có thể làm được điều này. Thư có chứa đường dẫn tới ảnh không? Kẻ phát tán thư rác có thể gửi cho người dùng thư chưa rất ít dòng văn bản nhưng chứa ảnh tải qua mạng. Khi kết nối mạng internet, hiển thị ảnh này thì máy chủ của những kẻ phát tán thư rác sẽ được báo và họ biết người dùng có quan tâm đến thư này và coi người dùng này là khách hàng tiềm năng. Trong khi đó thì thư hợp lệ ít khi có ảnh liên kết đến một trang điện tử. Thư có chứa các đoạn dữ liệu văn bản ẩn không ? (người dùng không nhìn thấy) Một số lượng lớn các thư rác chứa các đoạn văn bản không nhìn được bởi người dùng ví dụ như nó đặt ở ngoài khung nhìn của thư, người dùng không thể nhìn thấy bằng trình duyệt thư nhưng có tác dụng giảm hiệu quả bộ lọc. Hoặc đơn giản hơn có thể dùng màu của chữ trùng với màu nền. Thường thì các phần này chứa số lượng lớn các từ thường không xuất hiện trong thư rác. Thư có chứa nhiều địa chỉ gửi đến không? Một trong những đặc điểm điểm dùng để đánh giá thư rác là thư có số người nhận lớn. Tỉ lệ đường dẫn trên tỉ lệ số từ trong thư? Để tránh các bộ lọc nội dung một trong những thủ đoạn là dùng thư có các đường dẫn đến các trang web. Do đó tỉ lệ đường dẫn trên tỉ lệ số từ trong thư cũng là một tỉ lệ quyết định thư có là thư rác hay không. Sử dụng xác suất Bayes. Các xác suất trên đảm bảo phương pháp Bayes cho kết quả đúng. Nó sẽ tính xác suất thư rác từ các từ nó thống kê được trong các mẫu thư rác và thư hợp lệ. Xây dựng biểu đồ thành phần Dựa vào chức năng có thể phân chia ứng dụng thành các gói chính sau (hình 3.18): Hình 3.18 Biểu đồ thành phần của thư viện Các gói trên có chức năng chính sau: Gói Utility: Cung cấp hàm cho phép huấn luyện mạng Nơ-ron. Và hàm cho phép xác định xác suất một thư là thư rác thông qua mạng nơ-ron. Gói NeuralNet: Cung cấp hàm cho việc thiết lập và thực hiện một mạng nơ-ron. Gói MsgProcessors: Cung cấp các hàm để phân tích bóc tách dữ liệu của thư thành các từ khóa. Gói DataObjects: Cung cấp các lớp cho phép lưu trữ các loại dữ liệu cho mạng. Xây dựng biểu đồ lớp Gói DataObjects gồm các lớp: Gói DataObject Message ChromosomHist Corpus Chromosome Dictionary AddressList Hình 3.19 Thành phần của gói DataObject AddressList- Biểu diễn tập các địa chỉ và tên miền. Chromosome - Tập hợp các đặc điểm gien của một thư. ChromosomeHistory - Tập hợp các đặc điểm gien đã sử dụng. Corpus – Tập các từ, số lần xuất hiện các từ trong mỗi loại thư, và số lượng thư trong mỗi loại thư rác hoặc thư hợp lệ. Dictionary –Bao gồm các từ trong từ điển tiếng Anh sử dụng để kiểm tra lỗi chính tả. Message – Dữ liệu đại diện cho các thư. Gói MsgProcessors Gói MsgProcessors TokenParser HTMLParse BayesianAnalyze Hình 3.20 Thành phần của gói MsgProcessors BayesianAnalyzer –Tính toán xác suất Bayes nếu một thư có trong phần thân. HTMLParser–Phân tích cấu trúc HTML của thư để tạo ra các đặc điểm gien cho thư. TokenParser– Phân tích một thư thành chuỗi các dấu hiệu và ghi kết quả này vào tập các loại thư. Gói NeuralNet: Gói NeuralNet NNSpamAware NNMLP Neuron Hình 3.21 Thành phần của gói NeuralNet Neuron –Cấu trúc nơron cho mạng. NNMLP – Kiểu cấu hình mạng nơron được áp dụng. NNSpamAware – Tạo ra mạng nơron cho bộ lọc thư rác. Gói Utility: Gói Utility ANNTrainer ChromosomeGen Hình 3.22 Thành phần của gói Utility ChromosomeGen – Cho phép tạo ra các gien dựa trên các đặc điểm cho mỗi thư. ANNTrainer– Cho phép thực hiện huấn luyện mạng. Thực hiện và triển khai chương trình Cụ thể việc triển khai chương trình có những đoạn mã đặc thù, và các vấn đề nảy sinh khi thiết kế được điều chỉnh lại như sau: Đối với phần giao tiếp với người sử dụng: Vấn đề: Các nút trên thanh công cụ khi thực hiện gọi đến các tác vụ cần ít tài nguyên bộ nhớ thì có thể thực hiện nhưng khi gọi đến các tác vụ cần nhiều tài nguyên hơn ví dụ như gọi đến một bảng công cụ (form) thì không thực hiện được. Nguyên nhân như sau: Sau khi người dùng bấm vào nút thực hiện một tác vụ. Nó thực hiện các tác vụ đòi hỏi nhiều bộ nhớ như tải form. Lúc đó chuơng trình quản lý sẽ thu hồi bộ nhớ ở một số đối tượng mà nó cho là không được dùng đến nữa. Do nó không thu hồi được ở giao diện đồ họa nên nó sẽ hủy các đối tượng gắn sự kiện cho nút đó. Sau đó người dùng thực hiện nhấn phím lần thứ hai thì không thực hiện được tác vụ. Giải quyết: Có thể giải quyết vấn để bằng cách sử dụng khai báo tĩnh static. Lúc này thì các đối tượng tồn tại cùng với thời gian sống của add-in và không bị thu hồi khi thiếu bộ nhớ. Đối với phần thư viện cho chương trình: Có các đoạn mã chương trình đặc thù sau: Thực hiện huấn luyện mạng: Trước khi sử dụng mạng được huấn luyện từ nguồn thư rác và thư hợp lệ. Quá trình được cài đặt như sau: public static NNSpamAware GenerateNetwork(Message [] hamMsgs, Message [] spamMsgs,Corpus hamCorpus, Corpus spamCorpus,ChromosomeHistory hist, Dictionary dict,string strPath) { //Đầu tiên thêm các từ khóa vào cơ sở dữ liệu thư hợp lệ. for (int i = 0; i < hamMsgs.Length; i++) { TokenParser.AddMsgTokensToCorpus(hamMsgs[i].Subject,hamMsgs[i].Body, hamCorpus); } //Lưu bkasLib.DataObjects.Corpus.Save(hamCorpus,strPath+"\\hamCopus.bin"); //Lưu từ khóa vào cơ sở dữ liệu từ rác. for (int i = 0; i < spamMsgs.Length; i++) { TokenParser.AddMsgTokensToCorpus(spamMsgs[i].Subject, spamMsgs[i].Body, spamCorpus); } //Lưu bkasLib.DataObjects.Corpus.Save(spamCorpus,strPath+"\\spamCopus.bin"); // // Tạo các nhiễm sắc thể cho các thư hợp lệ for (int i = 0; i < hamMsgs.Length; i++) { Chromosome chromosome =ChromosomeGen.GenerateChromosome(hamMsgs[i], dict, hamCorpus, spamCorpus, 0); hist.AddChromosome(hamMsgs[i].Id.ToString(), chromosome); } // Tạo các nhiễm sắc thể cho các thư rác for (int i = 0; i < spamMsgs.Length; i++) { Chromosome chromosome = ChromosomeGen.GenerateChromosome(spamMsgs[i], dict, hamCorpus, spamCorpus, 1); hist.AddChromosome(spamMsgs[i].Id.ToString(), chromosome); } //Lưu bkasLib.DataObjects.ChromosomeHistory.Save(hist,strPath+"\\hist.bin"); // Thực hiện huấn luyện mạng NNSpamAware ann = new NNSpamAware(); // Để đơn giản chỉ thực hiện tính toán 1000 lần. for (int epoch = 0; epoch < 1000; epoch++) { for (int i = 0; i < hist.Count; i++) { ann.TrainPreNet(hist[i]); ann.TrainFullNet(hist[i]); } } return ann; } Các nguồn vào là : nguồn thư rác hamMsgs, nguồn thư hợp lệ spamMsgs, cơ sở dữ liệu các từ khóa hamCopus và spamCopus. Cơ sở dữ liệu các đặc điểm thư. Việc thực hiện gồm ba bước. Đầu tiên đưa các từ khóa vào cơ sở dữ liệu từ khóa tương ứng. Tiếp theo tạo ra các đặc điểm cho các thư và đưa vào cơ sở dữ liệu. Cuối cùng đưa đặc điểm này vào mạng thực hiện huấn luyện mạng. Quá trình huấn luyện được làm đơn giản chỉ tính 1000 lần. Tính xác suất thư rác từ mạng đã huấn luyện: public static Chromosome GenerateChromosomeAndCheck(Message msg, Dictionary dict, Corpus ham, Corpus spam, NNSpamAware net) { string body = msg.Body; Chromosome stats = new Chromosome(); // Đổi thành chữ thường. body = body.ToLower(); // HTML? stats.IsHTML = Chromosome.ConvertBoolToDouble(HTMLParser.IsHTML(body)); //Có chứa đường dẫn ảnh? stats.ContainsImgLinks = Chromosome.ConvertBoolToDouble(HTMLParser.ContainsImgLinks(body); // Định dạng HTML có đúng không? stats.IsValidHTMLBody = Chromosome.ConvertBoolToDouble(HTMLParser.IsHTMLBodyValid(body)); // Có chứa đoạn mã ẩn không? stats.ContainsHiddenText = Chromosome.ConvertBoolToDouble(HTMLParser.ContainsInvisibleHTMLText(body)); // Tỉ lệ đường dẫn trên số từ stats.LinkDegree = Chromosome.CalcLinkDegree(HTMLParser.GetLinkCount(body)); //Chứa nhiều địa chỉ người nhận không? stats.RecipientDegree = Chromosome.CalcRecipientDegree(msg.GetRecipients()); // Trước tiên tính xác suất đối với mạng đơn giản stats.SpamProbability = net.RunPreNet(stats); // Sở dĩ tính xác suất mạng đơn giản trước để giảm thiểu thời gian tính toán Bayes. if (stats.SpamProbability < .66) { string parsedBody = ""; if (stats.IsHTML > .5) { parsedBody = HTMLParser.CleanHTML(body); } else { parsedBody = body; } //Tính tỉ lệ từ sai chính tả stats.MisspelledWordRatio = TokenParser.GetMisspelledWordRatio(parsedBody, dict); // Tính xác suất Bayes. stats.BayesianSpamProbability = BayesianAnalyzer.CalcSpamProbabiliy(msg.Subject + " " + parsedBody, ham, spam); // Tính xác suất với mạng phức tạp. stats.SpamProbability = net.RunFullNet(stats); } return stats; } Hàm trên thực hiện tính ra xác suất thư đưa vào nhờ một mạng đã được huấn luyện. Thư sau khi phân tích và tính toán xác suất các đặc điểm được đưa vào đầu vào mạng tiền xử lý (mạng này mục đích làm giảm thời gian tính toán, các xác suất không chứa xác suất Bayes). Nếu xác suất thư rác bé hơn 0.66 tiếp tục đưa và mạng đầy đủ để tính xác suất thư rác. Đánh giá chương trình Cách thức đánh giá chương trình Sau khi triển khai chương trình, chương trình được đóng gói để tiện cho việc cài đặt với người dùng. Sau khi đưa cho một số bạn bè, và đồng nghiệp dùng thử thò nhận được phản hồi giao diện hợp lý, tương đối dễ sử dung. Áp dụng lọc thư đã đạt được một số các yêu câu cơ bản. Để có một đánh giá chất lượng của ứng dụng, tác giả tiến hành đánh giá như sau: Đánh giá khả năng lọc thư rác, với các thư nhận được từ hai hòm thư it5@hinet.net.vn, và hòm thư vietict@gmail.com. Hòm thư thứ nhất đã được đăng kí trên các trang quảng cáo công bố ở các điểm công công, tham ra diễn đàn… và nhận được số thư rác khoảng 30 thư trong một ngày. Hòm thư thứ hai nhận các thư hợp lệ dùng cho học tập và công việc. Kết quả đưa ra đánh giá chung. Tiến hành lọc số thư rác với số lương tăng dần để đưa ra đánh giá chi tiết. Các thư này có số lượng thư là 2, 10, 30, 50, 100, 200, 500. Tiến hành so sánh các số liệu với một chương trình hiện đang được sử dụng có cùng môi trường tích hợp vào Outlook. Chương trình Outlook dùng để cài đặt kiểm thử là Microsoft Outlook 2003 phiên bản tiếng Anh. Máy tính dùng để đánh giá là máy tình Pentium 4 tốc độ 1.8 GHz, bộ nhớ trong 256Mb. Bộ mẫu thư rác để tiến hành bao gồm các nguồn sau: Các thư nhận được từ hai hòm thư trên. Các thư lấy từ địa chỉ lưu thư rác “lingspam archives” Bộ thư hợp lệ được lấy từ nguồn thư của bản thân. Tuy nhiên số thư hợp lệ gặp phải có số lượng nhỏ hơn thư rác. Bộ lọc được huấn luyện với số thư rác là 300 thư, thư hợp lệ là 100 thư. Thời gian để huấn luyện bộ lọc khá lớn khoảng 15 phút mặc dù bộ lọc đã được đơn gian chỉ thực hiện tính toán trong 1000 lần. Bộ lọc cần phải giảm thời gian này xuống bằng cách đơn giản việc tính các xác suất. Tiến hành kiểm thử chất lượng của chương trình. Sở dĩ chọn sô lượng thư để lọc nhỏ không xác định chính xác tỉ lệ lọc thư rác mà mục đích chỉ để kiểm định sự ổn định của bộ lọc. Tỉ lệ thư rác thư hợp lệ là 50:50. Sau khi tiến hành lọc ta có các số liệu sau (số liệu lọc được như sau tỉ lệ thư rác/ tỉ lệ thư hợp lệ) 2 10 30 50 100 200 500 1/1 5/5 15/14 25/23 49/46 99/93 246/230 Từ số liệu thấy bộ lọc tỉ lệ lọc của thư hợp lệ trong khoảng 98:100%. Đây là tỉ lệ khá tốt vì quan trọng nhất với bộ lọc là tỉ lệ mất thư hợp lệ nhỏ. Tỉ lệ thử hợp rác là 93:100% tỉ lệ này chưa cao cần cải tiến để có bộ lọc hiệu quả hơn. So sánh với phần mềm cùng loại. Phần mềm được sử dụng để so sánh là phần mềm thương mại Outlook Spam Filter 2.0 (Osfilter20). Sở dĩ phần mềm này được chọn vì có có cùng môi trường làm việc giống với Bkas (cũng là phần mềm add-in vào Outlook) và nó cho phép dùng thử trong thời gian 30 ngày. Về giao diện ứng dụng và khả năng cung cấp các tiện ích ứng dụng Osfilter20 đơn giản hơn ví dụ như chỉ cho phép tạo một thư mục chứa thư rác trong thư mục Inbox, chỉ phân biệt thư rác và thư hợp lệ nên nó không mềm dẻo bằng Bkas. Cũng có thể do chương trình này nhắm vào người dùng không chuyên. Về chất lượng chương trình có so sánh sau: Thực hiện lọc với 100 thư rác và 50 thư hợp lệ cho số liệu như sau: Chương trình Thư rác bị lọc Thư hợp lệ bị lọc Thư rác lọt Thư hợp lệ lọt Bkas 93% (93) 98%(49) 7%(7) 2%(1) Osfilter20 95%(95) 98%(49) 5%(5) 2%(1) Hình 3.23 Biểu đồ so sánh Bkas và Osfilter2.0 Bộ lọc Bkas có chất lượng thấp hơn Osfilter do bộ lọc chọn lựa số lượng thư rác và thư hợp lệ làm mẫu để lọc chưa đủ lớn chưa nghiên cứu để tạo ra các thư rác đặc thù do đó có chất lượng kém hơn bộ lọc Osfilter. Nếu có thời gian nhiều hơn cho việc chọn mẫu và phân tích hi vọng bộ lọc sẽ đạt được tỉ lệ lọc thư rác là 99%. Bộ lọc Bkas quan trong đã phân loại được thư rác làm các lớp thư rác thư hợp lệ và thư nghi ngờ và tỉ lệ làm mất thư hợp lệ là bằng với bộ lọc Osfilter là rất khả quan vì một bộ lọc quan trọng nhất là tỉ lệ mất thư hợp lệ là thấp nhất có thể. Vấn đề gặp phải của Bkas Khi chương trình được mang cho một số người dùng thử thì gặp phải vấn đề sau nó xác định là thư rác đối với thư người dùng cho là hợp lệ nhưng lại vi phạm hầu hết các tiêu chuẩn của bộ lọc. Như một người làm ở công ty TPF thường xuyên nhận được thư gửi cho cả nhóm có nội dung chỉ một dòng lại kèm theo các đường dẫn ảnh. Trường hợp này bộ lọc Bkas xác định thường xác suất thư rác là 0.7 và đưa vào thư mục nghi ngờ là thư rác Bkas_Spam_Review. Giải pháp đưa ra là người dùng sử dụng chức năng thêm vào danh sách các từ khóa cho phép xác định luôn đó là thư hợp lệ không cần lọc. Ví dụ như người làm ở công ty TPF thì nhóm làm việc thường có chứa tiêu đề nhóm là TPF, anh ta chỉ cần thêm từ này vào từ xác định thư hợp lệ. Đề xuất triển vọng hướng phát triển. Hướng phát triển bộ lọc. Các hướng phát triển bộ lọc: Phương pháp mới cho bộ lọc Cho đến thời điểm đồ án hoàn thành là tháng 5 năm 2005, các xu hướng phát triển các phương pháp lọc được minh họa trên hình 4.1 (qua 10 năm) Hình 4.1 Xu hướng các bộ lọc cho đến nay Một phương pháp xuất hiện sau phương pháp Bayes là phương pháp Mắc-kốp. Phương pháp này thực chất là mở rộng của phương pháp Bayes. Phương pháp này cho phép bộ lọc thực hiện phương pháp Bayes với một chuỗi các từ. Nó cho phép gán cho các từ này các trọng số khi đứng cạnh nhau nhằm xác định chính xác thư rác. Phương pháp huấn luyện bộ lọc Một cải tiến hiện nay đã bắt đầu sử dụng cho việc huấn luyện bộ lọc là có thêm một bộ sinh ra các thư rác từ các thư rác hiện có để huấn luyện mạng và tìm ra điểm yếu của bộ lọc. Với phương pháp này có thể tạo ra bộ lọc khá hoàn thiện tránh khả năng spammer cũng dùng các bộ sinh thư rác để đánh lừa bộ lọc. Cụ thể mô hình này được minh họa trên hình 4.2. Nguồn thư rác từ bên ngoài hệ thống được cách ly với người dùng bằng bộ lọc. Nhưng từ chính nguồn thư rác này là nguồn dữ liệu sinh ra các thư rác mới từ nguồn thư rác. Phương pháp này làm công việc giống như các spammer là tìm cách vượt qua bộ lọc. Nguồn thư được sinh ra này là một nguồn để nâng cấp bộ lọc. Hình 4.2 Phương pháp sinh thư rác. Đề xuất hướng phát triển. Từ các phân tích về xu hướng trên chúng ta đưa ra các nhận xét sau. Bộ lọc Bayes vẫn có có một số khuyết điểm nhưng áp dụng với các phương pháp lọc khác như chương trình đã thực hiện vẫn tương đối hiệu quả. Thêm vào đó thời gian để huấn luyện bộ lọc ở mức người dùng thông thường vẫn chiếm một thời gian tương đối lớn. Nên tiếp theo chỉ dùng các phương pháp trên với máy chủ rồi cung cấp kết quả cho máy trạm. Nếu ở mức ứng dụng người dùng hiện còn cần làm đơn giản bộ lọc để có thời gian huấn luyện mạng ngắn hơn và cung cấp khả năng khống chế tài nguyên bộ lọc dùng của hệ thống đảm bảo người dùng vẫn thực hiện các tác vụ quan trọng khác trong thời gian thực hiện huấn luyện mạng. Để xuất về qui mô chương trình. Qui mô phát triển Bkas. Hình 4.3 Mô hình Bkas phát triển cộng đồng. Hướng phát triển của chương trình như trong thiết kế chương trình (giai đoạn 2). Ở phía máy trạm chương trình sẽ xây dựng khả năng lọc thư ở gắn vào các chương trình khác nhau và gắn vào trình duyệt riêng tự xây dựng. Ở phía máy chủ Bkas cho phép nhận thư chuyển tiếp và lọc thư cho người sử dụng nếu được yêu cầu. Lưu các file cho phép cấu hình bộ lọc để nâng cấp bộ lọc của các máy trạm. Các máy trạm có thể chia sẻ thư rác với máy chủ. Hoặc nếu không muốn lộ thông tin của mình có thể cung cấp các file sau khi huấn luyện mạng cho máy chủ để nâng cấp khả năng của máy chủ. Qui mô phát triển Bkas cho doanh nghiệp. Hình 4.4 Mô hình Bkas cho doanh nghiệp. Hướng phát triển của Bkas cho doanh nghiệp như sau: Máy chủ Bkas sẽ làm nhiệm vụ ngăn chặn thư rác từ bên ngoài hệ thống xâm nhập thông đông thời nó đánh dấu vào lưu vào cơ sở dữ liệu tất cả các thư để tiện tra cứu bởi người sử dụng. Máy chủ thư BkMail chứng thực cho các thư trong hệ thống, thư từ trong gửi ra sẽ kiểm tra nếu có nội dung nhạy cảm sẽ bị chặn lại và có thể thực hiện yêu cầu mã hóa thư. Kết luận Vấn đề ngăn chặn thư rác thực sự được quan tâm chú ý của những người sử dụng mạng Internet nói chung và những chuyên gia phòng chống thư rác nói riêng. Có thời điểm người ta lo ngại với mức độ phát triển nhanh chóng thư rác có thể xóa sổ thư điện tử vì sự phiền phức. Nhưng với các giải pháp hiện tại nếu áp dụng rộng khắp và triệt để có thể làm giảm đáng kể lượng thư rác. Hi vọng tương lai có một giải pháp triệt để làm thư rác hoàn toàn biến mất. Lời khuyên hiện tại cho người sử dụng thư điện tử là tuyệt đối không mua hàng qua các quảng cáo của thư rác dẫn đến cắt giảm nguồn kinh phí cho những kẻ phát tán thư rác. Trong thời gian thực hiện đồ án là 15 tuần, với sự nỗ lực của bản thân và sự giúp đỡ nhiệt tình của thầy giáo Ths. Ngô Văn Dũng về cơ bản đồ án đã hoàn thành các vấn đề sau: Về lý thuyết: Tìm hiểu về các giao thức gửi nhận thư điện tử nói chung và các vấn đề về thư rác điện tử nói riêng. Đồ án tập chung nghiên cứu các thủ đoạn kĩ thuật những kẻ phát tán thư rác sử dụng và đặc biệt quan trong là các giải pháp phòng tránh thư rác. Việc đi sâu nghiên cứu các giải pháp phòng tránh thư rác đã giúp đưa ra nhìn nhận khả năng hiện tại của các phương pháp này đồng thời tạo nền tảng để có thể thiết kế thành công một ứng dụng lọc thư rác hiệu quả. Về thực nghiệm: Thiết kế một bộ lọc có khả năng lọc thư rác triệt để, có khả năng tự nâng cấp cho phù hợp với sự biến đổi của thư rác nhằm vượt qua bộ lọc. Thiết kế cũng đã dự phòng các giải pháp cũng như đưa ra hướng phát triển tiếp theo của chương trình. Sau khi triển khai chương trình có khả năng lọc thư mềm dẻo và rất thân thiện với người sử dụng. Kết quả đạt được của đồ án mang lại cho sinh viên cái nhìn khá sâu sắc và chi tiết về các giải pháp phòng tránh thư rác. Sau khi thực hiện thành công đồ án về thực nghiệm cũng như lý thuyết tôi cảm thấy tự tin vào khả năng làm việc độc lập trong việc nghiên cứu các công nghệ giải pháp mới đồng thời có thêm kinh nghiệm xây dựng một ứng dụng cụ thể. Các kiến thức và kinh nghiệm này là rất quý báu cho công việc trong lĩnh vực công nghệ thông tin của tôi sau này. Mặc dù đã rất cố gắng nhưng vì các vấn đề phòng chống thư rác khá đa dạng và biến đổi rất nhanh và thời gian thực hiện là có hạn nên đồ án không tránh khỏi sai sót rất mong được sự đóng góp của thầy cô giáo cũng như bạn bè trong lĩnh vực công nghệ thông tin để có được kết quả tốt đẹp hơn nữa. Tôi xin cảm ơn! Phụ lục A Tài liệu tham khảo: .Các bài báo về chuyên đề spam từ trang web vietnam express. .Friedman, N.; Geiger, D.; and Goldszmidt, M. 1997. Bayesian networclassiers. Machine Learning. .Wikipeda, Spamming, 2005. .Spamassassin, Statistics report for Spamassassin rule set, 2005 .Yahoo, Yahoo domain keys, Spam town, 2005. .SPAM archive 2005. .Paul Graham, A plan for spam. .Graham, P. Better Spam Filtering .Microsoft, Caller ID for E-Mail: The Next Step to Deterring Spam. .The Register .RFC - 822: Standard for the format of ARPA Internet text messages. .RFC - 2045: Multipurpose Internet Mail Extensions (MIME) .Spam Law. .Microsoft, Outlook 2003 Add-in .Top 10 spam. Thuật ngữ và viết tắt. VIẾT TẮT tỪ GÔC Ý nghĩa CGI Common Gateway Interface. Hệ giao tiếp cổng vào chung DNS  Domain Name System. Hệ thống tên miền DSS Desktop Server software. Chương trình đánh cắp tài nguyên EDI  Electronic Data Interchange Hệ thống trao đổi dữ liệu điện tử HTML  Hyper-text Makup Language Ngôn ngữ đánh dấu siêu văn bản IMAP Internet Mail Access Potocol Giao thức thư điện tử IP Internet Protocol Giao thức mạng ISP Internet Service Provider Nhà cung cấp dịch vụ MAPS  Mail Abuse Prevention System Hệ thống bảo vệ thư điện tử  MIME Multimedia Mail Extensions Định dạng đa phương tiện mở MTA Mail Transfer Agent Trạm truyền thông điệp OSI Graphical User Interface Giao diện người sử dụng OSI  Open Systems Interconnection Liên kết các hệ thống mở POP3  Post Office Protocol Giao thức thư điện tử RBL Real-time blacklist Danh sách đen thời gian thực RFC  Request For Comment Chuẩn khuyến nghị ROKSO Register of known spam operation Cơ chế đăng kí thư rác SBL Spamhaus Block List Danh sách đen SMTP Simple Mail Transfer Protocol Giao thức thư điện từ SPF Sender Policy Framework Cơ chế chứng thực người gửi SVM Support Vector Machine TCP Transion Communication Protocol Tầng truyền tải  TDMA Tagged Message Delivery Agent VOIP Voice Over IP Thoại qua Internet  Phụ lục B (Hướng dẫn sử dụng chương trình Bkas) Cài đặt chương trình: Chương trình được cài đặt từ file bkasSetup.msi, trước khi cài đặt chương trình yêu cầu phải đóng chương trình Microsoft Outlook. Sau khi cài đặt chương trình, khởi động Microsoft Outlook, Bkas trong lần khởi tạo đầu tiên tạo ra hai thư mục là Bkas_Spam_Review và Bkas_Spam, một thanh công cụ. Trên thanh công cụ này có hai nút “Bỏ” và “Lấy”, và một thanh cuộn. Sử dụng chương trình Thư mục Bkas_Spam_Review và Bkas_Spam: Trong lần đầu tiên khởi tạo ứng dụng Bkas sẽ tạo ra hai thư mục là Bkas_Spam_Review và Bkas_Spam. Trên hình vẽ chỉ ra hai thư mục này. Phụ lục B. Hình 1 Ví trí các thư mục. Khi thực một thư được nhận về, đầu tiên nó sẽ được Outlook kiểm tra bằng các luật mà bạn định nghĩa, sau đó Bkas sẽ kiểm tra thư. Nếu là thư hợp lệ nó giữ nguyên tại thư mục Inbox. Nếu là thư rác nó chuyển vào thư mục Bkas_Spam, khi không chắc là thư rác hay không nó sẽ chuyển vào thư mục Bkas_Spam_Review. Bạn nên thường xuyên kiểm tra các thư mục này để nâng cao độ chính xác cho bộ lọc. Các nút “Lấy” và “Bỏ”: Bkas tạo ra các nút “Lấy” và “Bỏ” như hình vẽ sau: Phụ lục B. Hình 2 Các nút trên thanh công cụ. Nút “Lấy” có tác dụng với các thư bị đưa vào thư mục Bkas_Spam và Bkas_Spam_Review nhưng các thư này đối với bạn là thư hợp lệ. Trong trường hợp này khi bấm nút bạn sẽ chuyển thư đó trở lại thư mục Inbox. Việc này làm tăng chất lượng bộ lọc. Nút “Bỏ” có tác dụng với các thư trong thư mục Inbox và thư mục Bkas_Spam_Review nhưng đối với bạn nó là thư rác. Khi bấm nút này thư đó sẽ được chuyển sang thư mục Spam_Review. Các nút trên thanh cuộn: Sau khi cài đặt trên thanh công cụ có một thanh cuộn Bkas gồm các nút cho phép cấu hình chương trình: Phụ lục B. Hình 3 Thanh cuộn chính. Thứ tự trình bày các nút trên thanh cuộn này được đánh số tương ứng với chữ số màu đỏ trên hình 3 Nút tùy chọn kích hoạt form tùy chọn cho phép cấu hình người dùng ưa thích (hình 3 phần (1)) Phụ lục B. Hình 4 Form tùy chọn chính. Phần (1.1) trên hình 4 thực hiện chức năng tạo bộ lọc. Nút “Thay đổi” cho phép chọn thư mục chứa nguồn thư rác và thư hợp lệ mẫu là đầu vào cho bộ lọc. Sau khi chỉ ra vị chỉ bộ lọc có thể bắt đầu tạo bộ lọc (hình 6). Quá trình này đòi hỏi thời gian để tính toán. Phụ lục B. Hình 5 Cấu hình bộ lọc Phụ lục B. Hình 6 Tạo bộ lọc Phần (1.2, 1.3) trên hình 4 thực hiện chỉ ra nơi chưa thư rác thư hợp lệ sau khi lọc. Phụ lục B. Hình 7 Tùy chọn cho bộ lọc. Vùng đánh dấu đỏ trên hình 7 cho phép cấu hình xác suất để quyết định chuyển vào thư mục thư rác thư hợp lệ và thư nghi ngờ. Phụ lục B. Hình 8 Tùy chọn Tab tùy chọn trên hình 8 cho phép thiết lập một số các thông số như: Không thực hiện lọc với thư tiếng Việt (Luôn coi là thư hợp lệ), thiết lập thời gian xóa thư rác và thời gian bao nhiêu giây sau khi nhận thư sẽ thực hiện lọc thư đó. Nút lọc thư mục hiện tại: cho phép lọc thư mục mà con trỏ đang trỏ đến (hình 3 phần (2)) Nút Soạn danh sách đen (hình 3 phần (3): Cho phép kích hoạt form (hình 8) cho phép cấu hình danh sách đen (danh sách các địa chỉ chặn không cân kiểm tra) và danh sách trắng (danh sách các điạ chỉ là hợp lệ không cần kiểm tra) đối vơi thư mà con trỏ đang chỉ tới. Phụ lục B. Hình 9 Soạn danh sách đen Các nút Thống kê, trợ giúp và thông tin tác giả (phần 4,5,6 trên hình 3) cho biết thông tin về số thư đã lọc, trợ giúp người dùng và thông tin liên hệ với tác giả.

Các file đính kèm theo tài liệu này:

  • doc24802.doc