首页
学习
活动
专区
工具
TVP
发布

区块链算法有漏洞,交大教授刘志强告诉你如何破!

在11月17日举行的比原链2018全球开发者大会上,上海交通大学密码与计算机安全实验室区块链技术研发团队负责人、博士生导师刘志强为大家带来了主题演讲《隐私保护与数字钱包安全》。

刘志强教授的演讲系统地讲述了区块链底层中的密码技术,隐私保护和安全问题。众所周知,安全和隐私问题是区块链里的关键问题,也是大家十分关心的问题。石榴财经将全文整理如下,与各位读者分享。

以下是演讲全文:

区块链安全问题涉及到很多层面。比如共识机制安全性,智能合约安全性,以及数字钱包、私钥应该怎么样管理,在监管和隐私保护之间怎样达成一个平衡,这些问题都需要考虑。

因为区块链里应用了密码技术,其算法本身理论上是安全的,但有可能在实现上,例如非密码专业的人实现密码算法时会存在相应的漏洞。也有一些扩展机制,比如通过链下的方式保证离链交易安全性。今天我们不会就所有问题展开,而是关注于某些方面探讨隐私保护特性,以及对数字账户安全性做一个非常初步的探讨。

01

假设以Blockchain为例,需要对双方身份隐私以及交易金额进行一定的保护,并且保证交易的不可追踪性。

这是2013年的结果,包括Blockchain,每条边至少代表200个交易,意味着交易可追踪性非常强。目前主流的关于区块链技术,从早期的混币技术,到密码学里的环签名,零知识证明,这是目前比较主流,也是相对安全可靠的技术。此外还有MPC、同态加密,这些属于更加强大的密码学技术和方案,还有待进一步在效率上提升。

基于混币的隐私保护技术一开始会基于可信中介,混币有一个中心系统。之后因为引入可信中介与区块链本身设计思想是有矛盾的,所以引入了去可信中介的机制TurnbieBit,演变到最后是去中介的混币,目前比较有代表性的是CoinShuffie。这种技术在混币里还是非常有效的,它的特性就是把交易的输入输出进行混合,打乱之间的关联性,所以它比较直观,但不隐藏金额,而且混币技术一般来说,要求金额固定切分。

基于环签名的隐私保护比较有代表性的就是门罗币。它的技术特性是使用一次性地址,每次A用户向B用户发送一笔交易时,会根据B用户公开的信息,公钥,产生一次性地址,通过承诺以及环签名,把发送者和接收者地址、交易金额都能隐藏起来,对隐私进行一定保护。

基于零知识证明的隐私保护技术比较有代表性的是Zerocoin,可以完全隐藏输入输出地址和交易金额。这是相对比较强大的,当然它的性能效率目前虽然可以接受,但还是有更进一步的研究空间。

这些隐私保护技术还有哪些问题呢?

如果技术基于第三方,那么第三方会有隐私泄露的风险。如果基于相对去中介,可能在混币层面的内部有隐私泄露风险,同时它的通信复杂度相对偏高,所以只支持少量成员的混币技术。基于环签名,如果对门罗币进行可追踪分析的话,会发现对目前门罗币交易数据事实上已经有匿名性分析结果。对于零知识证明,因为ZK-SNARK本身有一个缺陷,系统需要可信启动,启动过程中产生PK、VK参数时,需要一个可信的实体,这与区块链最初设计理念有些不符。

另外在今年也出现了关于Zerocash由于用户习惯导致的隐私泄露分析。后来又提出ZK-STARK,改进了它的可信启动缺陷,并且可以支持抗量子计算。门罗币隐私保护的不可链接性、不可追踪性、交易金额隐藏,是分别通过不同技术实现的。实践中,它的不可追踪性受到一定挑战。通过对它的数据分析,可以构建输入,与输入之间链式反应,使得它的匿名集变小,可追踪性会受到很大的影响。

在门罗币里还有一种用于构建输入集合的时间攻击。用来混合输入的集合里,一般来说最新的输入就是真实的输入。有人对门罗币交易数据进行了分析,发现这样的概率非常之大。这意味着实际上只要进行简单的时间分析,哪笔交易输入是相对比较近期的,那它就有非常大的概率是真实的输入。

还有ZCash,它的零知识证明技术理论上是非常强的,但是通过ZCash本身交易数据和交易种类的分类发现,它存在一些隐私泄露情况。虽然ZCash本身隐私保护机制非常强,但因为使用不当,隐私泄露的情况比较严重。

区块链里面涉及到密码算法,像hash算法、签名算法等等。算法安全性是理论上可证明安全性,还有在软硬件实现中的安全性。在算法实现里安全问题,比如随机数重用问题,误用问题,很多时候在实现时尾随数生成,没有遵循设计规范,使得随机数有问题,这会使得私钥泄露。

还有算法误用问题,现实的安全目标与理论的安全模型是不是一致,算法的填充是不是符合规范。比如常用的数字签名ECDSA,若(r,s)是对消息m的有效签名,则(r,-s)也是对同一消息m的有效签名,这个问题曾经导致某个交易所的重大问题,此外还有侧信道攻击等。

02

再简单探讨数字钱包的账户安全问题,目前有三种攻击模型。

第一:黑盒模型,敌手能力非常有限,获取资源非常有限,所以它把整个密码算法实现当成黑盒,只能去窃听通信信道。通过理论的分析,获得信息非常有效;

第二:灰盒模型,攻击者资源得到一定扩大,系统在运行过程中,它的运行时间、功耗、电磁辐射,甚至可以通过注入错误来获取一些旁路信息,这些旁路信息对于匿名信息分析和提取非常有帮助;

第三:白盒模型,这时候攻击者能力得到非常大的提升,可以完全访问密码算法执行,可以观测密码算法动态信息,并且对内存进行读取分析,甚至可以插入一些错误改变程序运营结果。

三种攻击模型下,白盒攻击威胁程度非常大。白盒环境并不是危言耸听,在很多不信任终端环境下,特别是软件环境下,敌手可以具有很强大的攻击能力。例如AES,就是非常经典的,应该说也是应用非常广泛的密码算法。在黑盒环境下,目前从1997年提出来到现在20多年了,从理论上分析仍然是安全的。

对于(8/10)的AES,攻击的轮数只能到第8轮,它的安全复杂度只能降到2的100次方而已,黑盒环境下比较安全的。灰盒环境下不加防护,完全不安全。如果是在白盒环境下,它的安全性完全丧失。

数字钱包SM2的算法是国密算法。国家对网络空间安全非常重视,密码技术又是网络空间安全里的支撑技术,所以现在国家《密码法》草案已经出台。以后随着《密码法》推行,国密算法一定会受到越来越多的重视。

以后肯定会考虑区块链里签名算法切换,这是非常有可能的过程。如果是SM2签名算法的话,怎样保护这个签名算法本身在白盒攻击下安全性?

我们希望达到白盒攻击模型下签名不可伪造的安全性。哪怕敌手有非常强的能力,仍然不能把原始私钥恢复出来。实际上是通过无密钥的方式,把密钥藏在表格中,然后基于困难问题可以证明安全性。

这里要保护很多人容易忽略的随机数,因为大部分人认为只要保护好私钥就足够了。事实上在这个签名过程中,如果随机数泄露,那么就可以通过计算过程把私钥推出来。实现了白盒方案之后的数字钱包仍然还存在可能的威胁,那就是会被Code lifting,这时候就会使用到代码混淆技术。

石榴财经

区块链行业的Bloomberg

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181117A1PCP800?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券