用 Python 的 hashcash 打击垃圾邮件
关 键 词:CA 垃圾邮件
阅读提示:本文讲解如何利用 Python 下的 hashcash 打击垃圾邮件,还将介绍这项技术在邮
件过滤方面的应用,并将提供它在其他一些方面的应用。
是一个拒绝服务()计数器度量工具。当前它的主要作用是
帮助 用户避免因为使用了基于内容和基于黑名单的()反垃
圾邮件系统而丢失邮件。
hashcash 基础知识
的灵感来自于这样一个想法,即一些数学结果难于发现而易于校验。一个众所
周知的例子是因数分解一个大的数字(尤其是因数较少的数字)。将一些数字相乘来获得
它们的积的代价是低廉的,但首先找到那些因数,而这项操作的代价却要高得多。
公钥密码系统就是基于这种因数分解特性的。如果应答者能够回答因数分解质询
(),则说明他已经做了相当多的工作(或者偷偷地从生成那个组合的人那里
得到了因数)。
对 交互式质询来说,因数分解足以胜任。比如,我有一个在线资源,希望您能象征性地为
其付出代价。我可以向您发送一个消息,说“只要您能因数分解这个数,我将 让您得到这
个资源”。没有诚意的人将无法得到我的资源,只有那些能够证明自己有足够的兴趣、付出
一些 周期来回答这个质询的人才能得到这个资源。
非交互式质询
不过,有一些资源无法很方便地进行交互式协商。
我的电子邮件收件箱是我非常重视的一个资源。但不期而至的消息占用了我的一些磁盘空
间和带宽,最糟糕的是,它们吸引了我的注意力。我并不介意陌生人给我写信,但是,我
希望他们能以稍微认真的态度,亲自通过对我有价值的邮件与我取得联系。 至少,我不希
望他们是垃圾邮件制造者,那些人向我和上百万的其他人发送包含同样消息的邮件,期望
我们中的某些人能购买某种产品或陷入一个骗局。
为了实现非交互式的“支付()”,让我向所有想给我发送电子邮件的
人都分发一个标准质询。在您的消息头中,必须包括一个合法的 戳记
();具体地说,该标志中包含我的收件人地址。
提出质询的方式是,当通过安全散列算法()进行散
列时,要求“生成一个字符串(戳记,),在它们的散列中有很多前导零。