HashcashHashcah 类似于 Dwork 和 Naor 的防滥发方案,目的也是一样的,但 Back 提出了一些额外的用途,比如抵抗滥用匿名中转商。但就像这个名字暗示的那样,Hashcash 的基础跟 Dwork 和 Naor 所用的不是同一套,它基于哈希算法。 哈希算法是一种密码学工具,它可以接受任意数据 —— 无论是一个字母还是一整本书 —— 作为输入,然后输出一个长度确定的、看起来毫无规律的数字。 举个例子,「This is a sentence」 这个句子的 SHA-256 哈希值,是如下的十六进制数字: 「转换」 为常规的十进制数字为: 二进制形式则是: 但是,「This, is a sentence」 的 SHA-256 哈希值,却是: 如你所见,仅仅只是插入一个标点,产生的哈希值也会完全不同。而且,重要的是,两个句子的哈希值都是完全无法预测的;即使你知道了第一个句子的哈希值,也无法从中推导出第二个句子的哈希值。要想知道,唯一的办法就是实际运行哈希计算。 Hashcash 很聪明地运用了这种数学工具。 在 Hashcash 中,邮件的元数据(如 「发送者地址」、「收件人地址」、发送时间,等)都被形式化为一个协议。此外,电子邮件的发送者必须给这部分元数据加入一个随机数字,称作 「nonce」。所有这些元数据,包括这个 「nonce」,(输入哈希函数后)可得出一个哈希值,这个哈希值看起来也会跟上面所示的随机数一样,毫无章法。 奥妙之处在于:不是随便什么哈希值都可以算作 「有效的」。哈希值的二进制形式,必须以预定数量的 「0」 开头,才算有效;比如说,要有 20 个 「0」 开头。发送者就要找出某个 nonce,使得哈希值的开头要有 20 个 「0」,才行。但是,他是没法预先知道哪个 nonce 能做到这一点的。 因此,要想得出这样的有效的哈希值,发送者只有一种办法:试错(也即 「蛮力计算」)。他只能不断尝试不同的 nonce,直到找出一个有效的组合。否则,TA 的邮件就会被收件人的邮件客户端拒绝。就像 Dwork and Naor 的方案,Hashcash 也要求付出计算资源:这是一种工作量证明系统。 (责任编辑:admin) |