Filtrage bayésien du spam

Un article de Wikipédia, l'encyclopédie libre.

Le filtrage bayésien du pourriel (en référence à Thomas Bayes), est une technique de détection du pourriel utilisant les réseaux bayésiens et permettant le filtrage du courrier électronique.


Le filtrage bayésien fut proposé par Sahami et al. en 1998[1] mais fut reconnu en 2002 lorsqu'il fut décrit dans un article de Paul Graham[2]. C'est ensuite devenu une méthode populaire pour départager le courrier indésirable (spam) du courrier légitime (ham). Certains agents de courriers électronique modernes mettent en œuvre des filtres bayésiens antipourriels, et il est généralement possible à l'utilisateur d'installer des logiciels tiers spécialisé dans ce travail. Il est également possible de déployer ce type de filtres sur les serveurs à l'aide de logiciels spécialisés (comme SpamAssassin, SpamBayes, Bogofilter ou encore ASSP) ou lorsque le logiciel serveur supporte nativement cette fonctionnalité.

L'empoisonnement bayésien (bayesian poisoning) est une technique utilisée par les polluposteurs pour tenter de dégrader l'efficacité des filtres antipourriels bayésiens. Elle consiste à inclure dans le courrier une grande quantité de texte anodin (provenant de site d'actualités ou de la littérature par exemple) pour noyer le texte indésirable et tromper le filtre.

Sommaire

[modifier] Explication mathématique

Les filtres antipourriels bayésiens reposent sur le théorème de Bayes. Le théorème de Bayes appliqué aux pourriels indique que la probabilité qu'un courrier soit un pourriel, compte tenu qu'il contienne certains mots, est égale à la probabilité de trouver ces mots dans un pourriel multipliée par la probabilité qu'un courrier soit un pourriel, divisé par la probabilité de trouver ces mots dans un courrier :

\Pr(\mathrm{pourriel}|\mathrm{mots}) = \frac{\Pr(\mathrm{mots}|\mathrm{pourriel})\Pr(\mathrm{pourriel})}{\Pr(\mathrm{mots})}

[modifier] Procédure

Certains mots ont une probabilité d'apparaître dans un pourriel et dans un courrier légitime. Par exemple, la plupart des gens rencontreront fréquemment le mot Viagra dans leurs pourriels, mais ils le rencontreront rarement dans leurs courriers légitimes. Le filtre ne connaît pas à l'avance ces probabilités, c'est pourquoi il lui faut un temps d'apprentissage pour les déterminer. L'apprentissage est à la charge de l'utilisateur, il suffit généralement d'indiquer dans son agent de courrier électronique les courriers qui sont des pourriels. Pour chaque mot de chaque courrier, le filtre ajustera les probabilités de rencontrer ce mot dans un pourriel ou un courrier légitime et les stockera dans sa base de données. Par exemple les filtres bayésiens ont de fortes chances d'avoir une forte probabilité de pourriel pour le mot « Viagra », mais une très faible probabilité pour les mots rencontrés dans les courriers légitimes, comme ceux de vos amis ou parents.

Après l'apprentissage, les probabilités des mots sont utilisées pour calculer la probabilité qu'un courrier (l'ensemble de ces mots) soit un pourriel. Chaque mot du courrier contribue à la probabilité du courrier, cette contribution est calculé en utilisant le théorème de Bayes. Une fois que le calcul pour le courrier en entier est terminé, on la compare à une valeur arbitraire (95% par exemple) pour marquer ou non un courrier comme pourriel.

[modifier] Avantages

L'avantage du filtre bayésien est qu'il s'adapte à son utilisateur.

Par exemple, un pharmacologiste travaillant sur le Viagra recevra les courriels contenant le mot « Viagra », parce qu'il se trouve associé à d'autres mots comme le nom de ses confrères, des projets pour lesquels il travaille ou tout simplement du jargon technique. Il peut néanmoins signaler comme inopportun les pourriels publicitaires pour le Viagra. Ceux-ci seront éliminés, non parce qu'ils contiennent le mot « Viagra », mais parce qu'ils sont associés à d'autres mots que le filtre apprend à reconnaître comme indésirables.

On peut dire que le filtre bayesien s'adapte aux biais de l'utilisateur et non à ceux de l'auteur du logiciel ou de l'administrateur système.

C'est ainsi par exemple qu'un antipourriel par filtre bayésien peut apprendre, d'ailleurs assez rapidement, à éliminer une infolettre à la quelle on s'est abonné par erreur, à ne pas éliminer le courrier provenant de l'entreprise pour laquelle on travaille, ou à éliminer le courriel contenant le mot « Nigeria » (qui apparait souvent dans les pourriels) à l'exception de ceux qui contiendraient aussi, par exemple, le nom du conjoint.

La plupart des filtres antipourriel combinent les résultats d'un filtrage bayésien et des règles prédéfinies pour obtenir un meilleur résultat.

[modifier] Contre-attaques et parades

Les polluposteurs combattent le filtrage statistique en insérant de grandes quantité de texte anodin ou de salade textuelle, c'est-à-dire des séquences aléatoires de mots qui semblent cohérentes mais qui ne veulent rien dire. De telles séquences sont produite aléatoirement à partir d'un dictionnaire, ou par un processus de Markov, dans le but de tromper la détection en respectant les loi de la linguistique statistique comme la loi de Zipf et les algorithmes de traitement automatique des langues. Ces séquences viennent créer un bruit de fond que le filtre a de plus en plus de mal à distinguer des vrais indicateurs de courrier indésirable.

En conséquence les utilisateurs qui reçoivent du pourriel contenant de la salade textuelle, devraient enlever celle-ci avant de le signaler à leur filtre antipourriel.

[modifier] Notes et références de l'article

  1. (en) M. Sahami, S. Dumais, D. Heckerman, E. Horvitz, A Bayesian Approach to Filtering Junk E-Mail, AAAI'98 Workshop on Learning for Text Categorization, 1998.
  2. (en) Paul Graham, « A Plan for Spam », 2002. Consulté le 20 avril 2007.

[modifier] Voir aussi