Разработка системы автоматической
■ V V
фильтрации нежелательной электронной
корреспонденции
Д.Д. Мухин,
Инженер-программист, ООО «ТЛМКом».
Предложена архитектура системы автоматической фильтрации нежелательной электронной корреспонденции, основанная на применении комбинации известных алгоритмов подходящим образом.
Ключевые термины: электронная почта, спам, теорема Байеса, принятие решений.
Введение
Компьютерные технологии постоянно развиваются, и в настоящее время использование электронной почты в профессиональной деятельности и в свободное время стало нормой. Электронная почта (сокр. от electronic mail) — это способ передачи информации в компьютерных сетях, в том числе Интернете. В последнее десятилетие (с середины 90-х гг ХХ в. и до настоящего времени) получил распространение термин «спам», непосредственно связанный с электронной почтой, подразумевающий любую нежелательную электронную корреспонденцию, получаемую пользователем.
Спам — не только повседневный раздражитель миллионов пользователей. Они вынуждены тратить больше времени на изучение электронной корреспонденции (ЭК); существует вероятность стать получателем провокационной информации или вредоносного кода. Разработка собственного спам-филь-тра позволит:
^ уменьшить временные затраты на изучение ЭК; ^ увеличить производительность труда людей, непосредственно связанных профессиональ^ автоматизировать процесс выделения из информационного потока нужной ЭК и блокировки нежелательной ЭК;
^ автоматизировать процесс консолидации данных об индивидуальных характеристиках ЭК.
Проблема фильтрации нежелательной ЭК не нова. Сегодня существует множество различных решений предлагаемых для фильтрации спама [1]. Наиболее подходящим по качеству и недорогостоящим по внедрению решением является использование систем автоматической фильтрации, имеющих в своем составе статистические алгоритмы. Такие алгоритмы, первоначально разработанные для решения других задач — классификации текстов (text classification) и машинного обучения (machine learning) — выгодно отличаются от эвристических, поскольку учитывают специфические особенности спама, получаемого конкретным пользователем.
Нами дан обзор архитектуры системы фильтрации спам-сообщений (спам-фильтра), и описан комбинированный метод фильтрации, основанный на сочетании известных алгоритмов.
1. Aрхитектура системы фильтрации
В основе архитектуры — модель клиент-сервера. Клиентами являются пользовательские приложения (почтовые клиенты, веб-браузеры), а сервером — сама система фильтрации. Ниже приведен механизм взаимодействия MS Outlook и системы фильтрации (рис. 1).
Email, parameters
Spam Filtering Client MS Outlook 2007
N Filtering result, statistice
SFP
Client Side
i
Cerver Side
V_y v_y
Spam Filtering System
A
T
POP3
T
IMAP Client Side
Cerver Side
Рис. 1. Взаимодействие системы фильтрации и MS Outlook
Таблица 1
Операции протокола взаимодествия с подсистемой ввода-вывода фильтра
Взаимодействие с клиентами происходит по специальному протоколу (SFP — Spam Filtering Protocol), надстроенному над TCP, что обеспечивает независимость от конкретной платформы, на которой расположен клиент.
Предполагается функционирование системы в двух режимах:
& режим прокси-сервера — позволит запустить систему фильтрации на удаленной машине; при этом не будут расходоваться ресурсы пользовательской машины. Почтовый клиент в данном случае надо настроить, указав в качестве настроек для приема почты (POP3/IMAP сервер) характеристики удаленной машины; & стационарный режим. Почтовый клиент, используемый пользователем, необходимо сконфигурировать для запуска алгоритма класификации при получении нового электронного сообщения. Например, если пользователь работает с MS Outlook, достаточно написать VBA-скрипт для запуска алгоритма фильтрации. В этом режиме возможно использование web-почты, т.е. доступ к почте через web-интерфейс, поскольку возможен доступ в системе через сетевой протокол TCP.
В соответствии с рекомендациями в [2], [4], предлагаемая нами система состоит из следующих основных функциональных блоков (рис. 2):
& подсистема ввода-вывода (input/output system). Обесечивает взаимодействие фильтра с клиентами;
& подсистема принятия решений (analysis engine). Анализирует сообщение и выдает решение является ли сообщение спамом или нет; & лексический анализатор (tokenizer). Разбивает
исходное сообщение на лексемы; & менеджер алгоритмов (classification algorithm); & подсистема извлечения данных (feature combiner). Применяет алгоритм фильтрации от шума входных данных и извлекает данные из БД; & подсистема БД (database framework). Драйвер БД; & подсистема обучения (train engine). Позволяет
пополнять БД «плохих» слов; & подсистема настройки параметров фильтра
(config manager); & подсистема статистики и журналирования (stat manager). Собирает данные о характеристиках работы спам фильтра, также постоянно ведет журнал проводимых действий; & БД (historical dataset). Непосредственно БД — SQLite 3.
Операция Краткое описание
STRT Инициировать сессию с сервером.
STOP Закончить сессию.
NOOP Пустая команда. Сервер знает что клиент не отключился.
STAT Получить статистическую информацию о производительности фильтра.
SETP arg val Установить конфигурационный параметр.
GETP arg Получить значение конфигурационного параметра.
SLVM len msg Проанализировать сообщение на предмет спама.
RETM Проверить почтовый ящик (через POP3, IMAP) и проанализировать сообщение на предмет спама. В ответе на команду пользователю приходит модифицированное фильтром сообщение.
TRNM len msg Обучить фильтр на предоставляемом примере.
Historical Dataset
Classification Feature Datase
Algorihm ** Combiner ** Framework
Tokenizer
Analysis Engine
Train Config Stat
Engine Manager Manager
Input Subsystem
Original email
User Freedback
Рис. 2. Структурная диаграмма системы фильтрации
Система фильтрации решает следующие задачи: ^ разделение информационного потока пользовательской электронной корреспонденции на два класса: спам и легальную почту; ^ настройка индивидуальных параметров
фильтрации входящей корреспонденции; ^ консолидация показателей производительности системы и их использование для автокорректировки алгоритмов фильтрации; ^ предоставление отчетности о производительности системы.
2. Mетод фильтрации
Мы предлагаем в качестве основы метода фильтрации нежелательной ЭК использовать статистический (наивный) алгоритм Байеса ([1], [20]) и дополнить его моделью униграммного языка (Unigram language model) [20]. Этот алгоритм обладает известным недостатком — предположение о независимости входных данных [3]. Но как показывает практика, именно этот алгоритм оптимален в низкобюджетных решениях.
Особенности предлагаемого метода фильтрации:
1. Комплексная предварительная обработка текста сообщения:
1. Раскодирование заголовков писем, раскодирование из Quoted-Printable, Base64, uuen-coding.
ii. Обработка HTML сообщений:
♦ устранение эффекта invisible ink — удаление бесполезных слов которые не будут отображаться при использовании аттрибута font=«white»;
♦ устранение эффекта hypertextus interruptus — удаление HTML-коментариев и неразрешенных тегов;
♦ представление данных, расположенных в HTML-таблицах в виде текста (table-based ob-fuscation).
iii. Декодирование URL. Например, из http%3A // www.somedom.com/%69%6e%64%65%78%2e% 68%74%6d%6c в http://www.somedom.com/ index.html;
iv. Устранение особенностей текста:
♦ эффекты text obfuscation: from — fr[]m, Viagra — Viagra;
♦ эффекты text splitting: F/R/E/E — FREE.
v. Поддержка русских кодировок. Текст сообщения преобразуется в кодировку win-1251 после чего подается на вход алгоритму распознавания.
2. Комплексный алгоритм извлечения данных в статистическом алгоритме [12]. В байесовском фильтре будет использован алгоритм для снижения зашумленности (bayesian noise reduction) входных данных [11]. Данная техника предназначена для отбрасывания из рассмотрения случайных последовательностей в тексте сообщения. Локальные вероятности (те, что используются в формуле Байеса), назначаемые словам из таких последовательностей, в среднем будут небольшими, соответственно, после вычисления по формуле Байеса средняя вероятность того, что сообщение является спамом, будет невелика.
3. Использование требований RFC 2505 ([15]-[19]) — методов проверки (probing) пути доставки письма через обращение к DNS серверу и последующего анализа DNS-записей; проверка особенностей (URL, адрес отправителя, адрес получателя/получателей), найденных в тексте сообщения (fingerprintings).
4. Использование наивного байесовского алгоритма ([1], [3], [5]-[10], [13], [14]) и Unigram language model [20], применение различных методик расчета локальных вероятностей.
5. Использование различных алгоритмов обучения для байесовского классификатора:
i. Train-Everything (TEFT).
ii. Train-on-Error (TOE).
iii. Train-Until-Mature (TUM).
iv. Train-Until-No-Errors (TUNE).
6. Политика автоматического перехода на новый алгоритм обучения после учета численных оценок работы фильтра.
7. Использование атоматических черных списков:
i. При классификации сообщения как спам, адрес отправителя добавляется в черный список адресов. На данный адрес налагается «арест» в течении 24 часов: любое сообщение, пришедшее в течение этого периода, считается спамом.
ii. Ведение списка запрещенных URL.
8. Использование автоматических белых списков:
i. Для каждого адресата хранить запись в БД в виде <адресат> <количество спам сообщений> <количество легальных сообщений>
ii. Использование порогового значения N при достижении которого адресат добавляется в белый список при <количество спам сообщений> = 0.
9. Использование политики перестройки БД при устаревании данных [1]:
i. Для каждой записи в БД (лексема, адресат) хранить время последней модификации записи.
ii. Делать полную проверку данных с последующим удалением из БД, если время последней модификации превышает 2 месяца.
3. Анализ метода фильтрации
В состав современных спам-фильтров входит лексический анализатор поддерживающий простые методы декодирования (например, веделение текста сообщения в соответствии в [18]). Усложнение лексического анализатора крайне важно для статистического алгоритма, для качественной работы которого предполагается наличие хорошо подобранных данных.
В [1] описывается использование алгоритмов фильтрации при помощи автоматических белых и черных списков. В настоящее время распространено составление таких списков вручную, при непосредственном участии пользователя. Поскольку система фильтрации должна автоматически принимать решение при классификации электронного сообщения, то использование автоматически составляемых
списков с возможностью их изменения пользователем должны повысить качество фильтрации.
Использование статистического алгоритма подразумевает применение одного из известных методов машинного обучения. Автоматический переход с одного алгоритма обучения на другой позволит повысить качество фильтрации. Для этого применяются оценки, предложенные в [1] и [15].
В зависимости от содержания спама, приходящего конкретному пользователю, расчет локальной вероятности лексемы может иметь решающее значение в процессе классификации. Для этого поддерживается несколько методик расчетов.
Многие спам-фильтры не делают акцента на более подробном анализе формальных признакоы электронного сообщения. Обычно проверяется соответствие стандартам, тогда как путь доставки сообщения (поле Return-Path), остаётся вне пределов анализа. Данный фильтр реализует часть требований RFC 2505, нацеленных на более полную проверку некоторых аспектов электронного сообщения с помощью посылок запросов DNS-серверу.
4. Реализация
Разработка системы автоматической фильтрации спам-сообщений включает в себя два этапа. На первом этапе решается задача реализации предложенной в разделе «Архитектура системы фильтрации» архитектуры. Результат второго этапа — получение инструмента для конечного пользователя, с помощью которого спам-фильтр можно непосредственно использовать при работе с электроной почтой. В качестве решения для пользователя предлагается реализовать небольшой плагин (макрос) к популярному почтовому агенту MS Outlook. Для реализации системы фильтрации выбран объектно-ориентированный язык программирования С++.
При проектировании широко использовались паттерны проектирования [21]: абстрактная фабрика, строитель, компоновщик (анализ электроно-го сообщения), заместитель, цепочка обязанностей (при реализации цепочки алгоритмов фильтрации), фасад (подсистема ввода/вывода), шаблонный метод, одиночка (подсистема статистики и журналирования, подсистема БД), наблюдатель и посетитель.
Все системно-зависимые сущности (работа с со-кетами, создание потоков управления) выделены в отдельные классы и реализованы с требованием кросспалатформенности (классы Socket, Thread).
В качестве БД выбрана SQLite 3. Достоинства и недостатки этой БД обсуждаются в [1]. К основным достоинствам можно отнести полную поддержку синтаксиса SQL, локальное хранение таблиц в виде файлов и скорость операций над БД. Для поддержки различных кодировок портирована библиотека libiconv.
При создании системы фильтрации также ведется разработка VBA-макроса для MS Outlook [22]. Основное назначение этого макроса — интеграция популярного почтового клиента с системой автоматической фильтрации.
Разработчик Outlook — корпорация Microsoft, и это во многом способствует популярности программы. Outlook Express прекрасно взаимодействует с другими продуктами корпорации Microsoft; предоставляет множество различных удобных в работе инструментов (календарь, составлене индивидуального расписания, органайзер и др.). Почти все продукты Microsoft имеют встроенную поддержку VBA (Visual Basic for Applications), который зарекомендовал себя как язык написания интерактивных приложений при минимальны затратах усилий.
По приходу сообщения Outlook генерирует событие, которое может обработать макрос. Макрос перенаправляет сообщение в спам-фильтр, используя для этой цели небольшого клиента (рис. 1). Клиент — динамическая библиотека DLL — транслирует переданное ему от обработчика Outlook сообщение и передает его по протоколу SFP непосредственно в систему фильтрации.
Получив ответ от клиента, обработчик в зависимости от полученного результата помечает письмо как спам и перемещает его в специальный каталог.
При помощи VBA-макроса пользователь может изменять специфические настройки фильтра по описанной выше схеме.
5. Обсуждение результатов
Разработка система фильтрации состоит из двух этапов. Полная реализация предложенной архитектуры системы фильтрации еще не завершена; не завершена и реализация VBA макроса для MS Outlook.
Для системы фильтрации реализованы и протестированы следующие модули:
^ для подсистемы ввода-вывода реализован
POP3 клиент; ^ для лексического анализатора реализован модуль декодирования сообщения в соответ-
ствии с [18]; также реализован модуль разбора на лексемы исходного сообщения соответствующий Unigram language model; ^ реализован менеджер алгоритмов (применен паттерн цепочка обязанностей). Продолжается реализация алгоритмов фильтрации; ^ реализована подсистема БД; ^ реализована подсистема журналирования для
отслеживания проводимых действий. Разработка VBA макроса — относительно простая задача, но ее выполнение зависит от полной реализации системы фильтрации. Реализованы заглушки для макроса, вызывающиеся при получении электронного письма, а также функции принятия решения — пометить письмо как спам и поместить в специальный каталог, или нет. Пользова-тельсий интерфейс находится в проектировке.
Альтернативой VBA макросу является использование возможностей языка PHP для доступа к спам-фильтру через web-интерфейс. Испольова-ние этой возможности рассматривается как дополнительное пользовательское решение, реализацию которого планируется провести в будущем.
Параллельно с проектированием и реализацией спам-фильтра проделана большая и рутинная задача по сбору исходных данных для составления обучающей выборки для алгоритма обучения спам-фильтра:
^ получен архив, содержащий около 32000 спам-сообщений на русском и английском языках. По временным характеристикам данные соответствуют временному интервалу с ноября 2004 по март 2007 гг.; ^ с января 2007 г. продолжается сбор спама, приходящего на рабочий электронный адрес; ^ за февраль-май 2007 г. расставлено несколько ловушек (honey pots), чтобы получить наиболее полную картину спама. Для этого пришлось заниматься регистрацией электронных ящиков на различных популярных и непопулярных форумах по всему свету.
Разнообразие исходных данных позволит провести более значимые тесты, чем при использовании доступных в Интернет архивов спам-сообщений, которые, по большей части, являются англоязычными сообщениями. Предлагаемый общий подход и конкретные принципы реализации системы фильтрации ЭК обеспечивают эффективную защиту пользователей от спама и повышают эффективность работы пользователей. ■
Литература
1. Jonathan A. Zdziarski, «Ending Spam: Bayesian Content Filtering and the Art of Statistical Language Classification», No Starch Press, 2005. -312 p. - ISBN:1593270526.
2. Вагин В. Н., Головина Е. Ю., Загорянская А. А., Фомина М. В. «Достоверный и равдоподобный вывод в интеллектуальных системах» / Под ред. В.Н. Вагина, Д.А. Поспелова. - М.: ФИЗМАТЛИТ, 2004. - 704 с. - ISBN 5-9221-0474-8, гл. 11 - «Базовые принципы построения систем обучения и принятия решений».
3. А. Л. Тулупьев, С. И. Николенко, А. В. Сироткин, «Байесовские сети: Логико-вероятностный подход». - СПб.: Наука, 2006. - 607 с. -ISBN 5-02-025107-0.
4. W. S. Yerazunis, S. Chhabra, C. Siefkes, F. Assis, D. Gunopulos, «A Unified Model of Spam Filtration», Mitsubishi Electric Research Laboratories, TR2005-085.
5. Paul Graham, «A Plan for Spam», http://paulgraham.com/spam.html.
6. Paul Graham, «Better Bayesian Filtering», http://paulgraham.com/better.html.
7. Paul Graham, «Will Filters Kill Spam?», http://paulgraham.com/wfks.html.
8. Paul Graham, «Stopping Spam», http://paulgraham.com/stopspam.html.
9. Gary Robinson, «Spam Detection», http://www.linuxjournal.com/article/6467.
10. F. Assis, W. S. Yerazunis, C. Siefkes, S. Chhabra, «Exponential Differential Document Count: A Feature Selection Factor For Improving Bayesian Filter Accuracy».
11. Jonathan A. Zdziarski, «Bayesian Noise Reduction: Contextual Symmetry Logic Utilizing Pattern Consistency Analysis».
12. N. Azam, H. A. Dar, S. Marwat, «Comparative Study on Feature Set Reduction for Spam Detection».
13. W. S. Yerazunis, «The Spam-Filtering Accuracy Plateau at 99.9 Percent Accuracy and How to Get Past It», Mitsubishi Electric Research Laboratories, TR2004-091.
14. M. Sahami, S. Dumais, D. Heckerman, E. Horvitz, «A Bayesian Approach to filtering junk E-mail», Learning for Text Categorization: Pa-pres from the 1998 Workshop; Madison, Wisconsin: AAAI Technical Report WS-98-05.
15. I. Androutsopoulos, G. Paliouras, V. Karkaletsis, G. Sakkis, C. D. Spyropoulos, P. Stamatopoulos, «Learning To Filter Spam E-Mail: A Comparison Of A Na?ve Bayesian and Memory-Based Approach», In Proceedings of the Workshop on Machine Learning and Textual Information Access, 4th European Conference on Principles and Practice of Knowledge Discovery in Databases, Lyon, France, 1-13, 2000.
16. RFC 2045.
17. A. Trevino, J. J. Ekstrom, «Spam Filtering Through Header Relay Detection», Brigham Young University, 2007.
18. RFC 2822, 1939, 2045, 2049.
19. RFC 1939.
20. «Simple Language Models and Spam Filtering With Na?ve Bayes», Automated Reasoning 2005: Reasoning with language, Assignment 1, 2005.
21. Э. Гамма, Р. Хелм, Р. Джонсон, Д. Влиссидес, «Приемы объектно-ориентированного проектирования» - СПб.: Питер, 2007. - 366 с.: ил. - ISBN 978-5-469-01136-1.
22. S. Mosher, «Microsoft Outlook 2007 Programming: Jumpstart for Administrators and Power Users», Digital Print, 2007. - 841 p. -ISBN:978-1-55558-346-0.
ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ - ВЫСШАЯ ШКОЛАЭКОНОМИКИ
представляет свои периодические издания
ВЕСТНИК МЕЖДУНАРОДНЫХ ОРГАНИЗАЦИЙ:
образование, наука, новая экономика ИНФОРМАЦИОННО-АНАЛИТИЧЕСКИЙ ЖУРНАЛ
Издается с 2006 г.
Главный редактор -
Марина Владимировна Ларионова
Освещает деятельность ведущих международных организаций и объединений в области образования, науки, новой экономики, а также в области международной и социально-экономической политики, решения вопросов глобального развития. Содержит информацию о международных конференциях, форумах и семинарах, проектах и новых публикациях.
Каталог Агентства «Роспечать» - индекс 20054
Координаты редакции:
101000 Москва, ул. Мясницкая, 20 Тел.: (495) 621-4464, факс: (495) 621-8711 E-mail: [email protected]