如果你是区块链爱好者,较深入的币圈投资者,你可能听过SHA-2、SHA-3系列的加密算法。如果你是区块链产业内的软件工程师,你可能用过keccak256和sha3加密算法,在0.5.0版本的solidity将sha3函式全面移除,keccak256和SHA-3到底差别在哪里?
SHA系列加密算法
让我们回到1993年的美国,互联网之父Tim Berners-Lee发展的全球资讯网(World Wide Web)带起了大量的网路基础设施和通讯。美国感受到,未来经由互联网传输资讯是势在必行的,但将资讯近乎透明的由HTTP传输协定送出去,是美国不乐见的。由美国国家安全局(NSA)所设计,国家标准技术研究所(NIST)发布的SHA-0加密算法诞生了,SHA-0可以将2⁶⁴位元的讯息,压缩转化成160位元的讯息摘要。它同时具有不可逆推、抗碰撞的特性。抗碰撞特性代表,不会有两个不同的资讯,输入进去之后得到相同的160位元摘要。发布后很快又被NSA修订成SHA-1,修正了一些弱点。
但是,我们都知道永远不会有一个密码是绝对安全的。1998年,CRYPTO98的密码学大会上提出了一种SHA-0攻击方式,能从理论上发现一次碰撞,也就是能够有两个不同的输入值,得到相同的输出值。这代表一个杂凑函式不再具有抵抗攻击所应具备的计算复杂度,你可以想像成我用SHA-0算法和一串密码加密了一个签名,来证明一个东西属于我,但现在有另一个人不知道我的密码,但它可以做出一模一样的签名。
2001年,NIST又发布了SHA-2算法,这次在运算中的混合程度比起SHA-1大幅提升,但是技术架构上SHA-2和SHA-1雷同。(比特币采用SHA-2家族中的SHA256加密算法)
2004年起不断的有专家找到更多SHA-0完整碰撞的结果,而且破解结果不只是在理论上了,还出现了实务上破解,并且改进方法使的破解难度不断地被降低。
2005年起,以王小云为第一作者的论文找到了完整的SHA-1碰撞。在加密演算相关的Wiki页面常常能看到以王小云为首的论文,横跨的时间轴也相当长,让我相当佩服一个人对于一件事情投入的热情。本篇论文也在2020年获得国际密码学会(IACR)的最具时间价值奖(Test-of-Time),本奖项每年会颁发给15年前、对密码学领域有持久影响的论文。这让我觉得蛮有趣的,和科技领域正好相反,因为密码学所需要的持续安全性,大概也只会有密码学领域会有这种限定找古早论文来颁奖的情形。
有感于不断逼近的各方专家,SHA-2算法虽然连理论上的破解都还没有出现,NIST已经未雨绸缪地着手准备SHA-3。在2007年举办了NIST杂凑函式竞赛,这是一个five-year competition,一直到2012年宣布得奖的是Keccak算法。这之后NIST进行了一些必要的标准化步骤,使其可以产生224位、256位、384位等等。这是蛮正常的一件事情。2015年NIST发布了FIPS202标准的SHA-3。
尴尬的事情来了,NIST一直到2015年八月五号才宣布要使用FIPS202版本的SHA-3作为最终的版本,但是以太坊在七月三十号启动了创世区块,所有的account、address 、区块内容使用的依然是当初竞赛版本的Keccak256。竞赛版本的Keccak算法安全性上当然没有问题,只是代表以后Ethereum使用的SHA-3,计算的结果会和其他人的不一样,很容易和其他人搞错,当时以太坊还不像现在有一统江湖的能力,和别人搞混我想应该会是一件麻烦的事情。但是为什么后续没有用升级的手段升级成标准版SHA-3,我想有一部分是因为下面的原因。
SHA-3与Ethereum
Mastering Ethereum是一部面向以太坊生态系软件开发者的专书,由两位作者Antonopoulos, Andreas M.和Wood, Gavin写成,两位作者是Vitalik提出以太坊构想时很感兴趣的开发者,Gavin是以太坊的联合创始人兼CTO,Andreas则因为当时正在写Mastering Bitcoin而较晚加入。我想,这本书的含金量不必质疑。
以下节录自Mastering Ethereum精通以太坊第5章<密钥、地址>:
'''在标准过程完成后,NIST调整了Keccak的一些参数,据称可以提高效率。这与英雄告密者(编:原文使用heroic whistleblower)爱德华斯诺登透露的档案暗示NIST可能受到国家安全局的不当影响同时发生,故意削弱Dual_EC_DRBG随机数生成器标准,有效地在标准随机数生成器中放置一个后门。'''
白话来说,国安局在标准化过程中,放了一个随机数产生器,”有可能”留下缺口使的他看起来随机,但国安局却有方法可以预测。这个加密算法可能会被大型机构采用,来帮你的银行密码加密、大企业的资料数据库加密、跨国支付资讯加密、恐怖份子网路传讯加密,只要有网路的地方都有可能有它的踪迹,那如果留下了这道后门,整个网路世界(或至少用此加密法的资料)都掌控在国安局手上。那问题来了,为什么是”有可能呢”而不是绝对呢?
英雄告密者Edward Snowden
爱德华斯诺登(Edward Snowden),2004年起进入CIA做一名资讯工程师,2009年开始以外包商身分进入NSA,因为他的工作都是被切割成一小份任务的,他很晚才察觉整个计画究竟在做什么。2013年借口离开夏威夷到香港后,Snowden联系媒体开始揭露部分文件,有香港导演找上他留下了短片纪录和访谈。
他揭密的是稜鏡计画(PRISM)和BullRun,稜鏡计画比较知名,白话来说它预计在全球主要光纤网路上安插一个稜鏡,使得经过的资讯都复制一份到政府手中。BullRun则旨在「击败特定网络通信技术中,所使用的加密」,成本是8亿美金。
尽管Snowden选择做一名吹哨者,他并没有公开任何的「内容」,他选择告诉大众「政府正在做这些事情,但是要怎么判断,在于你」他只将文件交给媒体,希望媒体借由他们的公信力报导出来的同时能不揭开这些资料的具体内容。
我找到的最有力的内容是New York Times中,记者的说法是”Snowden的文件显示,Dual_EC_DRBG就是一个Backdoor。”
滞留莫斯科并不是Snowden的选择,他当时在莫斯科转机打算去往欧洲寻求政治庇护,但是有27个国家都受到了压力而没有接受,引述他在影片中说的话,「我不知道你们在机场最久的转机是多久…但我在莫斯科转机了四十天(全场大笑)」,一直到律师协助申请了莫斯科的一年期临时难民。
他的故事后来被翻拍高登李维主演的《神鬼黑客:史诺登》(2016),虽然我跟电影世界不熟,但是它所说的”根据真人故事改编”其可信度… .见仁见智。更推荐的是《第四公民》(2014)这部纪录片。
最新的近况是,稜鏡计画已经确定违宪,但是关于Snowden的泄密,那又是另外一回事了。
另一个问题是”Dual_EC_DRBG”是什么东西,还有它到底有没有后门,这个就涉及更技术性的内容了。我长话短说:它后续已经被证实是有漏洞的,但是究竟是不是NSA选择**故意**留下漏洞已经不可考。
总结:比特币、以太币
比特币使用的是SHA-2,以太币使用的是Keccak256。
时至今日,比特币大量使用的SHA-2算法目前还未出现任何理论上、实务上的破解。但可以说它是有可能发生的,另外量子电脑的发展也逐渐赶上,甚至在特定领域已经领先传统电脑,SHA-2算法终有破解的一天。根据曾可唯在区块势中的说法,量子电脑破解比特币这件事情,在极度乐观下预估出现理论上的破解会在近10–20年,而比特币势必需要一次系统升级,但因为创始人中本聪已经淡出公众视野,比特币开发团队一直是群龙无首、百家争鸣、三国鼎立的情况,在后续的更新上会遇到很多阻力。这也是后续分叉出比特币现金、Bitcoin Gold等等分叉的主要原因。
相较之下,目前由Vitalik主导的以太坊基金会不论是传统电脑或量子电脑攻击前,会有更好的共识决定升级方向,这是我比较看好的。
后记
我觉得为了准备这一篇,我基本上读的资料应该够我写一份密码学科系的大学生小论文(?)我并不是数学、资工领域毕业的学生,比较没有辨别能力的我为了要保证输出品质,这些资料我是能尽量找原文阅读而不屈就于被转译过的媒体文章。这次的主题注定艰涩小众,但我写起来受益良多,对整个区块链底层的密码学有了新的认识,也了解到了到底有多少人在为我们的日常生活不停的努力。
其实这篇文章写完,其实还是有一些不足的地方,以太坊基金会是以社群共识的方式运作的,在2013年应该有很多关于使用哪种加密法的讨论,但是我实在没有办法去翻回2013年的讨论一篇一篇看,就先暂时停在这里吧。
本文链接地址:https://www.wwsww.cn/ytf/7366.html
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。