【技术分析】区块链的密码学之二 (2)



     【量子计算的隐忧】

      但如果现有加密方式全部失灵,数字货币世界会变成什么样子?


      这个听起来有点天方夜谈的想法其实离我们并不遥远。当十几年后实用量子计算机出现,算力大幅提升,现有的依靠数学复杂度来保证安全性的非对称密钥的加密方式很可能会全部失灵。郭光灿院士在演讲中就曾提到,基于2000qubit的量子计算机使用shor算法可以在1s完成RSA算法安全性依赖的大数分解计算。


      首先简单讲一下什么是量子计算。量子比特可以制备在两个逻辑态0和1的相干叠加态,换句话讲,它可以同时存储0和1。考虑一个 N个物理比特的存储器,若它是经典存储器,则它只能存储2^N个可能数据当中的任一个,若它是量子存储器,则它可以同时存储2^N个数,而且随着 N的增加,其存储信息的能力将指数上升,例如,一个250量子比特的存储器(由250个原子构成)可能存储的数达2^250,比现有已知的宇宙中全部原子数目还要多。 由于数学操作可以同时对存储器中全部的数据进行,因此,量子计算机在实施一次的运算中可以同时对2^N个输入数进行数学运算。其效果相当于经典计算机要重复实施2^N次操作,或者采用2^N个不同处理器实行并行操作。可见,量子计算机可以节省大量的运算资源(如时间、记忆单元等)。


      量子计算机并不是一种更快的计算机。它在逻辑、输出方式等方面与经典计算机根本不同,其中最本质的就是量子纠缠的存在。在量子信息学的观点中,量子纠缠是与物质、能量、信息并列的一种自然资源,利用好这种资源能使量子计算机发挥出巨大威力。但是,如何用它设计更快的算法,在理论上就是很大的挑战。目前,对绝大多数计算问题,理论家们都还没有找到超过经典算法的量子算法;但在一些特殊问题上确实有了新的发现。哪些问题呢?最早发现的主要有两类:一类可以归结为质因数分解(Shor 算法),比已知最快经典算法有指数加速(准确说是超多项式加速);另一类可以归结为无序搜索(Grove 算法),比经典算法有多项式加速。


      Shor 算法和 Grove 算法分别于1994年和1996年被提出,可以说是它们的发现引起了科学界对量子计算的真正重视——尽管量子计算的初步概念在80年代初就已出现,但十几年来都只是很小圈子内的理论游戏,被认为既无法实现也没有用处;Shor 算法和 Grove 算法终于为量子计算机找到了可能的实际应用。其中 Shor 算法的影响尤其大——现代密码学中,几类常用的公钥系统包括 RSA (Rivest–Shamir–Adleman) 和 ECC (elliptic-curve cryptography) 等的基本加密原理就是大数分解的计算复杂度。因此量子计算机一旦出现,将给现有的信息安全带来巨大威胁,加密货币现有的算法也几乎全部不堪一击。顺带一提,ECC就是比特币使用的加密方式。

滑铁卢大学量子计算学院的联合创始人Michele Mosca(也是圆周理论物理研究所的研究人员)认为我们现在所用的部分加密工具,到2026年就有1/7的概率遭破解;到了2031年,这个数字又会上升到50%。也就是说,到那个时候,如果我们还在用现在的加密机制,那么即便网络传输的数据经过了加密,也可通过暴力破解来解密——这也是量子计算能够带来的“便利”。


      有人想到既然量子计算可以带来算力提升破解加密算法,那么可不可以用量子算法来直接加密呢?答案是可行但目前一切未知。量子加密设备中必不可少的、同时也是最昂贵的部件是光子探测器,在现有(或者不远的将来)条件下,发起一次量子计算攻击可以带来巨大收益而有人愿意为此买单,但如果说使用量子加密算法的数字货币都采用这个类型的矿机,那又是不可能承受的成本之痛了,不过未来一二十年会发什么样神奇的事情,谁又能预测呢?

 

     【EKT的思考】

      在20世纪70年代,英国情报部门和学术机构的研究人员各自独立发明了非对称加密方法。它使用两个不同的密钥:一个公钥和一个私钥。在一次交易的加密过程中,两个密钥都是必需的。例如,在进行线上购物时,供应商的服务器把公钥发送到消费者的电脑,这个密钥是公开的,可以被所有消费者获取并使用。消费者的电脑用该公钥加密一个密钥,后者将作为与供应商共享的对称密钥。在收到经过加密的对称密钥之后,供应商的服务器将用一个自己独有的私钥对之进行解密。一旦双方安全地共享了对称密钥,就可以用其完成后续交易的加解密。


      非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。公开密钥与私有密钥是一对,如果用公开密钥对数据进行加密,只有用对应的私有密钥才能解密;如果用私有密钥对数据进行加密,那么只有用对应的公开密钥才能解密。因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。 非对称加密算法实现机密信息交换的基本过程是:甲方生成一对密钥并将其中的一把作为公用密钥向其它方公开;得到该公用密钥的乙方使用该密钥对机密信息进行加密后再发送给甲方;甲方再用自己保存的另一把专用密钥对加密后的信息进行解密。


      另一方面,甲方可以使用乙方的公钥对机密信息进行签名后再发送给乙方;乙方再用自己的私匙对数据进行验签。甲方只能用其专用密钥解密由其公用密钥加密后的任何信息。 非对称加密算法的保密性比较好,它消除了最终用户交换密钥的需要。


      在EKT中,我们就使用了公私钥结合的非对称加密和路由策略的机制实现拜占庭容错。我们EKT的多链,采用“多链分而治之”的新方案重新设计了一个保障每个合约都能正常运行的公链,其中就使用到了非对称加密对用户的信息进行保存,同时主链和子链信息共享但是功能隔离。这一创新极大程度上简化了架构,降低了数据处理压力,确保一条链上流量激增不会影响到另一条链的效率,在链上进行的任何业务都不会收到其他业务干扰,有效实现了资源隔离。


      在EKT中Token链是一个并行多链的结构,多链多共识,共享用户基础。EKT的Token是链上的一个属性,就像使用了utxo模型的链utxo有其他Token一样,我们的转账事件也是内置的。


      其实EKT解决的一个核心问题是,目前Dapp的开发难度的问题如果使用以太坊的Solidity开发,需要学习以太坊的一整套逻辑,在复杂应用开发的时候需要考虑各种优化方案,同一个功能使用传统C/S结构一天写完的,用以太坊可能要写几周时间,对开发者来说很不友好。这一套流程若要Dapp/公链开发者写出来,势必在真正开发区块链功能之前就已经被这些繁琐但其实通用的步骤耗费过多精力和资源。


       在EKT中,坚持了这样一个理念,一个货币系统中不需要图灵完备的开发语言,不同的应用间尽可能实现隔离的原则。因此我们在设计的时候,把token的处理和DApp的处理分开了,也就是说在EKT上存在两种类型的链:token链和DApp链。


       token链就是专门用于处理token交易的一条链,鉴于ERC20代币不断曝出的各种漏洞(虽然漏洞的产生是智能合约开发者的问题,但是我们认为是有更好的方案来实现的),在EKT上内置了token对象,开发者只需要定义自己要发的token的数量即可。另外,EKT的token链是一个多链多共识的结构,也就是说不同的token可以放在不同的token链上进行打包,多链并行极大提高交易处理速度。


       EKT的DApp链是供不同开发者开发DApp的一条链。我们从智能合约开发语言、数据存储(带有默克尔证明的和私有的不带默克尔证明的存储空间)、效率三个方面进行了优化。EKT的DApp链基本上可以实现与现在的互联网应用相同甚至更快的开发速度,可实现的功能性也与互联网应用没有太大差异,最重要的是,我们可以实现大部分事件的1秒执行和确认,安全性要求比较高的事件可以实现3秒的确认。


       EKT的中心思想就是设计一个社区的机制,让开发者可以轻易的开发一个可以承载DAPP的主链,其他的交给EKT来处理, EKT 的“一链一主币,多链多共识”的机制为后来的区块链项目开发提供了很大的便利,可以使用于任何区块链适用的应用场景。 EKT 提供了一套底层的区块链机制,其他的区块链项目可以很容易的基于 EKT 的主链代码部署一套自己的主链。在EKT上编写的区块链项目将无需过于担心安全性问题,因为每一个接口都是非常简单并且在许多条并行主链上部署和运行的。部署主链时可以灵活的发行自己主链的代币以及选择共识算法。新部署的主链也可以加入到 EKT 通用积分的整个生态,共享 EKT 生态的用户资源,代币也可以和EKT 主币以及其他主链的代币进行交换和流通。


      在设计EKT的加密制度时,我们团队也曾经认真考虑过SHA-1破解以及未来量子计算技术大发展之后对区块链世界的影响,甚至一度想要立马着手实现这个看似fancy的功能。不过经过深思熟虑之后,我们团队还是决定将现在有限的资源尽可能投入到平台的开发工作当中,同时我以及几个同事都会密切关注加密货币安全方面的进展,保持可以参考和跟紧最新最安全的学术界新动向。


      以上就是我对区块链密码学的一些思考,和一些在设计EKT的多链多共识时对建设非对称加密底层的考虑。欢迎大家提出疑问,共同探讨。


      End


参考阅读:

20160519 计算文件SHA-1值原理

20161225 加密算法之:对称加密与非对称加密扫盲贴

20170119 区块链 - 比特币的共识机制

20170223密码学大事件!研究人员公布第一例SHA-1哈希碰撞实例

20170313 比特币中的SHA256是何方神圣?

20170418 Hash算法总结

20170919 散列算法:SHA-1,SHA-2和SHA-256之间的区别

20180414详解“多链多共识”机制

20180202 区块链和比特币 不过是密码学历史上的一次小高潮?

《History of cryptography》

《BTC whitepaper》

《EKT whitepaper》

 


END


今天关于区块链&密码学二的文章就这里

如果有任何技术上的问题想与我讨论

欢迎加入EKT公链开发QQ群:699726921

项目交流QQ群:173806202

欢迎关注微信公众号:EKT通用积分

猜你喜欢

转载自blog.csdn.net/weixin_42120252/article/details/80987646