贝叶斯中毒如何工作?

信息安全 电子邮件 垃圾邮件
2021-08-15 06:48:40

这个答案顺便提到了贝叶斯中毒,我已经阅读了维基百科页面,但觉得我没有完全掌握它。

第一种情况,垃圾邮件发送者发送带有有效负载(链接、恶意文件等)的垃圾邮件并包含许多非垃圾邮件的“安全”字眼,这似乎很明显。目的是提高单个电子邮件的评级,以便垃圾邮件过滤器将其归类为“非垃圾邮件”。

第二种情况更微妙并且(对我来说)令人困惑:

垃圾邮件发送者还希望通过在贝叶斯数据库中将以前无害的词变成垃圾词(统计类型 I 错误)来使垃圾邮件过滤器具有更高的误报率,因为训练垃圾邮件过滤器处理中毒消息的用户将向过滤垃圾邮件发送者添加的单词是垃圾邮件的良好指示。

这对垃圾邮件发送者有何帮助?当然,误报(如果我正确理解这意味着合法电子邮件被错误地归类为垃圾邮件)很烦人,但它们会非常普遍地完全禁用垃圾邮件过滤器。看起来这不会改变真正垃圾词的评级,还是只会影响它们的相对评级?

最后,这种方法或任何其他方法是否可以帮助个别垃圾邮件发送者使用他们想偷偷通过过滤器的几个垃圾邮件词,或者它可能会帮助所有垃圾邮件发送者?

有人可以提供或链接到基于示例的解释吗?

3个回答

Martijn Sprengers发表了一篇名为“学士论文”的好论文:不同贝叶斯毒药方法对贝叶斯垃圾邮件过滤器“SpamBayes”质量的影响。

我会尝试制作 TL;DR:

贝叶斯垃圾邮件过滤器尝试通过查看电子邮件中的关键字来确定电子邮件是否为垃圾邮件。它所做的是查看正常和垃圾邮件中出现的单词并更新每个单词的分数。这些分数用于推断电子邮件是否为垃圾邮件,方法是根据电子邮件中出现的单词的总体分数进行评分。

单词被重新评分,这意味着如果“伟哥”出现在几封正常的电子邮件中,随着时间的推移,它会得到一个较低的分数。这被垃圾邮件发送者滥用,他们生成带有几个低分词的电子邮件,这些词常见于合法电子邮件中,并添加一个坏词。因为电子邮件的分数总体上会被认为是好的,所以“伟哥”会随着时间的推移而获得较低的分数,使其成为一个合法的词,并导致垃圾邮件通过垃圾邮件过滤器。

本文讨论了三种攻击:

随机词:这种攻击方法基于 Gregory 等人的研究。[6]。它可以被视为一种弱统计攻击,因为它使用纯随机数据添加到垃圾邮件中。

常用词:这种攻击方法是基于 Stern 等人的研究。[7]。他们在垃圾邮件中添加了常用的英语单词,以混淆垃圾邮件过滤器。这种攻击可以被视为比随机词方法更强的统计攻击,因为使用的数据随机性较小,并且它包含的词比之前攻击添加的词更有可能出现在电子邮件中。

火腿短语:这种攻击是在这项研究中开发的,并针对其他两种进行了测试。它基于大量的业余电子邮件。从该集合中,只有组合概率最低的火腿电子邮件被用作毒药。然后将业余电子邮件添加到原始垃圾邮件的末尾。大多数人向下阅读,因此信息的有效性得以保持。这也是一种强大的统计攻击,甚至可能比 Common Words 攻击更强,因为这些词的随机性更小。

论文结论的亮点:

从垃圾邮件发送者的角度来看,“HamPhrases”技术似乎效果最好。它确实会降低垃圾邮件过滤器的性能。... 从垃圾邮件发送者的角度来看,“随机”和“常用词”技术的得分似乎更差。…当我们用这些毒药方法训练垃圾邮件过滤器时,性能甚至比正常情况还要好。

然而,这项研究中使用的 HamPhrases 方法有点作弊。这是因为垃圾邮件过滤器用于测试和训练的垃圾邮件和垃圾邮件都可用于该算法。真正的垃圾邮件发送者没有真正用户的业余电子邮件。

卢卡斯考夫曼回答解释得很好,至于为什么:

如果用户没有收到重要的电子邮件,结果他们被垃圾邮件过滤器抓住了,那么他们就会对他们的管理员生气。误报可能会带来非常高的成本。

当很多用户对管理员生气时,管理员可能会改变一些事情,以便垃圾邮件过滤器更加宽容,这可能最终让更多的垃圾邮件通过,这对垃圾邮件发送者来说是件好事。

我在一篇旧博客文章中有一个很好的例子,说明贝叶斯中毒的垃圾邮件

贝叶斯垃圾邮件过滤器基本上跟踪每条消息中使用的每个单词。当邮件被标记为垃圾邮件时,过滤器会将邮件中的单词视为垃圾邮件的代表。通过使用此信息,过滤器可以非常准确地确定特定邮件是否为垃圾邮件。

然而,贝叶斯过滤器使用每封邮件中的单词来确定邮件是否为垃圾邮件这一事实使其容易受到规避此过程的技术的影响。

垃圾邮件可以插入无意义的单词,以人类可读(但不是机器可读)的方式将单词分开(例如,在垃圾邮件的每个字母之间插入“不可见的”小写字母),使用重音符号或 HTML 实体使很难通过过滤器来区分,或者使用 HTML 表单代替链接。这本质上就是贝叶斯中毒,所有这些技术都在我的博客文章中进行了演示和解释。

特别是,“无意义的词”可以仔细选择为正常消息中常见的词。用户将包含这些词的垃圾邮件标记为垃圾邮件实际上是在告诉过滤器将它们视为垃圾邮件的指示。有了足够多的此类消息,过滤器将认为这些词代表垃圾邮件,并开始将包含这些词的合法消息标记为此类。

博客文章中的第一张图片演示了这是如何完成的:

Firefox 页面检查器中的垃圾邮件:“废话”字样
查看全尺寸

虽然完整的句子没有多大意义,但它们看起来有些连贯。“对那个微笑”、“上帝知道他在等”和“在床后”都是可以出现在正常消息中的短语和词。如果此类短语在垃圾邮件中出现的频率足够高,并且用户将其标记为垃圾邮件,那么过滤器最终可能会认为带有这些短语的合法邮件是垃圾邮件。