【比特币】比特币史话

【比特币】比特币史话

《【比特币】比特币史话》

20世纪80年代,欧盟启动了“RACE(欧洲先进通信技术研发)计划”,并于1992年启动了“RIPE项目”。其中项目名“RIPE”的具体含义是“RACE完整性原语求值”(RACE Integrity Primitives Evaluation)。从这个名字我们就能读出“哈希”的味道,因为对给定内容求哈希值这一计算机指令(术语叫“原语”)正好可以用来验证内容的完整性,也就是没有被篡改。如果发生了篡改,即使再微小,也会导致哈希值的剧烈变化,从而很容易被发现。在“RIPE项目”的执行过程中,一个哈希算法被设计出来了,它的名字叫做RIPEMD(RIPE消息摘要, RIPE Message Digest)。

RIPEMD家族也有一系列所求摘要长度不等的哈希函数。其中摘要长度小于160比特的,被认为安全性不够,而摘要长度大于160比特的,其实际安全强度也就只有160比特,超出的部分只是为了凑够长度。所以,就余下一个RIPEMD-160不长不短刚刚好。根据我们对哈希算法命名的了解,RIPEMD-160计算出来的哈希值长度为160比特币,这个长度和SHA-1是一样的,都比SHA-256要短。中本聪说,“为了让比特币地址更短,它们是公钥的哈希,而不是(椭圆曲线电子签名算法的)公钥”[2]。事实上,中本聪不是用了一个哈希函数,而是两个。他先对公钥做了SHA-256哈希,然后把结果又做了一次RIPEMD-160哈希,得到了比特币地址。这种双层哈希的设计,是中本聪的一个独特手法。在比特币区块挖矿中,也是这样的双层哈希结构,只不过换成了两层SHA-256。

中本聪没有解释过如此设计的原因。今天的我们已经知道,MD5、SHA-1、SHA-2这一系列的哈希算法,当然也就包括中本聪选用的SHA-256哈希算法,由于都使用了一种称之为“默克尔-丹加德”构造(Merkle–Damgård construction)的方法,而对一种称之为“长度扩展攻击”(length extension attack)的攻击方法敏感[4]。通过使用这种攻击方法,攻击者可以在无需知道原文、只需知道原文长度的情况下,向原文后附加攻击文本并计算出正确的哈希值。今天我们能够查到的最早有关该攻击方法的文献,只能追溯到2012年。至于中本聪在2008年前后设计比特币时,是如何觉察到单层哈希可能会对某种特别的攻击方法敏感,从而在使用时小心翼翼的加了一层,形成双层哈希设计,我们就不得而知了。也许,他是受到了NIST(美国国家标准技术局)在2006年举办的哈希函数设计大赛的启发吗?

2006年,NIST举办了一场后来旷日持久的哈希函数设计大赛,赛题是设计一种不使用“默克尔-丹加德”构造的崭新的哈希函数,称之为SHA-3。彼时,SHA-3的设计目标并非为了取代SHA-2,因为后者并未被攻破。但是因为MD5和SHA-1在2005年被王小云教授团队成功攻破了,NIST感觉需要未雨绸缪,于是希望提早着手,为SHA-2准备“备胎”。这个大赛,可以称之为SHA-2的“备胎计划”。

这个“备胎计划”的推进一波三折。2010年12月,一个称之为keccak-256的哈希函数最终胜出。NIST希望在标准化时对其设计进行微调和修订,却被2013年突发的“棱镜门”事件和斯诺登的“吹哨”打乱了节奏。公众失去了对NIST的信任,对NIST修订哈希函数的提案进行了强烈抵制。就这样一直僵持到2015年,NIST才最终完成了修订并发布了FIPS 202标准。另外一个由俄裔加拿大程序员维塔利克·布特林(Vitalik Buterin,人称“V神”,时年仅19岁)于2013年发起的知名公链项目,以太坊(Ethereum),大量使用了keccak-256哈希函数,但是,他们使用的是重写的原始版keccak算法,而不是NIST的修订版算法。由于keccak算法没有使用“默克尔-丹加德”构造,而是使用了另外一种称之为“海绵构造”(sponge construction)的新方法,所以对“长度扩展攻击”免疫。也因为此,以太坊的地址就是单层哈希结构,只对公钥做了一次keccak-256哈希(并截取了后20位以缩短长度)。

 

以上就是小编分享关于”【比特币】比特币史话”的相关文章,感谢读者的耐心阅读,觉得不错动动小手收藏转发吧!想了解更多相关新闻敬请关注小柚财经!

小柚财经QQ专线:97876780(带你加入更多行业交流群)
小柚财经微信公众号:搜索【今日币有约】关注即可

文章标题:【比特币】比特币史话
文章链接 http://www.yunquezhai.com/index.php/2021/03/20/10720/
小编申明:本站所提供文章资讯,均由互联网整理。

点赞