观点

拿什么来保护你,我的币?

字号+作者: 来源: 2018-05-14 02:51 我要评论() 收藏成功收藏本文

“黑客”这个词,相信大家再熟悉不过了。自从互联网诞生以来,黑客就成了以高超手段盗取用户信息的代名词。 然而,现在黑客也越来越与时俱进了:'...

 

“黑客”这个词,相信大家再熟悉不过了。自从互联网诞生以来,黑客就成了以高超手段盗取用户信息的代名词。

然而,现在黑客也越来越与时俱进了:美国甲骨文公司旗下的 PeopleSoft 软件公司,不久前就发生了黑客袭击事件。按照常理来说,一般用户系统被侵入后,都会发生数据泄露。

数据泄露……咦,这怎么听起来有点像Facebook?

blob.png

小扎:老子国会都道完歉了好吗!你还有完没完!

话说这黑客侵入系统以后,转了一圈,竟然没动数据!

啥情况?

紧接着,这个叫 PeopleSoft 的公司发现自己的电费突然开始猛增。原来,这名黑客利用这家公司的CPU挖了611 个门罗币,价值22多万美元!

这个“笑话”似乎告诉我们,未来世界最值钱的可能不是数据,而是算力哦!

看来,这传统意义上的数据安全,在区块链的世界要被重新定义了。那么针对于区块链,会存在哪些层面的安全问题?目前又有哪些可以解决得措施?

今天,小探请到了位于硅谷的丹华资本董事总经理 Judy Yan, 来给大家讲讲区块链世界的安全问题。

区块链:我招谁惹谁了?

话说区块链自从出现以来,关于区块链安全问题产生的奇葩故事就不少。除了交易所被盗,许多区块链项目自身的 Bug 也层出不穷。作为区块链投资人的 Judy,对这些故事可谓如数家珍。

最著名的黑客攻击事件要数The DAO。早在2016年,这个平台被盗了高达1.5个亿美金的ETH。攻击者利用了递归调用 splitDAO 函数这一技术层面的漏洞,这起事件同时也暴露了智能合约安全性的早期缺陷。

而去年 Parity Multisig 电子钱包版本1.5 的漏洞被发现,使得攻击者从三个高安全的多重签名合约中窃取到超过15万ETH(约3000万美元)。而这个漏洞竟然是工程师一不小心在编程时写了一个不闭合的函数。

而另一个项目 IOTA 前一阶段被诟病大跌的原因是底层最关键的哈希加密函数不工作。

就在今年三月,BEC(美链)爆出 ERC20 协议安全漏洞,攻击者利用整数溢出BUG,可无限生成代币,直接导致BEC币值跳水,几乎归零。

blob.png

如此种种的事件的发生,让人们不得不重新面对区块链的安全问题。

据 Judy 回忆,菩提去年在 Qtum 上进行合约部署时,虽然当时有很多人质疑Qtum能不能上线(后来上线成功),合约部署是否会使得运行机制瘫痪等问题,但是Judy只问了菩提和量子一个最简单问题:

用户会不会丢币?

这个问题听着很简单,实际上反映了所有区块链都是建立在安全信任的基础上,吞吐量等问题都可以被牺牲,慢慢改进;但如果丢币,整个系统就不会再有人使用。

“安全,是唯一不能牺牲的因素。”

在Judy看来,公链的安全、智能合约的安全、云安全这三个层面都是未来最值得关注的区块链安全层面。

其实在做区块链安全的项目有很多。比如:Zeppelin 是一个社区驱动项目,它构建了安全智能合约的开源架构,目的在于实现安全智能合约的开发。目前有很多优质的海外区块链项目都采用了 Zeppelin 的智能合约安全服务。

Quantstamp 是一家智能合约的安全审计平台,而且还是为数不多的、被 YC 录取的区块链公司哦!小探也在之前名为《错过了区块链第一波淘金热?这家公司“卖铲子”被YC相中》的文章中介绍过。

区块链公司 Axoni 不是一家专门做智能合约安全的公司。但他们最近也在专注与形式化验证技术。开发了专门服务于形式化验证的智能合约语言 Axlong。

其中,Certik 是一家用形式化验证为智能合约和区块链应用提供安全性服务的公司。形式化应用?这个听起来好像很有故事!在讲故事之前,咱们先看看为什么智能合约和公链容易出现安全问题?

公链、智能合约的安全谁能承包?

我们先来看智能合约为什么容易出现安全问题。

第一,不可逆性:智能合约一旦发布在区块链上,合约的源代码是无法被修改的。

第二,代码开源:在平时不公开源代码的情况下都能被黑客攻击,更何况大多数区块链项目的代码都是开源的。开源只会让黑客的攻击将变得更加容易。

第三,成本高:如果将智能合约放在区块链上进行不断的安全测试,资产的不断转换会是一笔很大的开销。

第四,思维设限:即使开发者会预想智能合约在哪些情况下会遭攻击,再针对这些情景测试,但黑客的厉害之处在于,可以从程序员预想之外的路径下手。

由于智能合约在安全上存在的这四个方面问题,从而导致区块链上的数字资产很容易被黑客掠夺。

对于公链上产生的问题,Judy 用了一个清晰明了的比方来说明。

Judy 认为,区块链,尤其是在智能合约出现之后,是个两层的结构。其中一层为公链,在其上运行智能合约。 由于公链是一种开源的架构,智能合约的开发者每个人都可以在上面可以写一段脚本。

然而,这也是问题存在的根源:由于每个开发者动能用,所以在公链上书写脚本时,往往会带来意想不到的“副作用”。

这是什么意思呢?Judy 给小探举了个例子:

“假如我要在以太坊上写一个智能合约,我写这段智能合约的目的是A,但是我并不会预料出当A完成时,同时会出现副作用B,而B很有可能会使得公链系统瘫痪掉。”

那有没有办法提前得知是否会出现副作用B而避免悲剧的发生呢?

还真有!Certik使用的形式化验证就是目前解决这一问题的最佳方式。

blob.png

什么是形式化验证呢?

根据 CertiK 联合创始人顾荣辉教授的讲述,形式化验证(Formal Verification)就是:用逻辑语言来描述规范,通过严谨的数学推演来检查给定的系统是否满足要求。

简而言之,形式化验证的作用就是让你只完成A的目的,而不会产生副作用B。

Judy认为,对于形式化验证,我们要从两个维度来看。

在传统维度上,形式化验证是一个统计学的概率问题。

比如说,如果你能计算出在执行A目的时90%的可能性系统不会出问题,那么对于一个手机应用APP的研发可能就足够了。换句话说,传统维度上大家只需要做“计算题”算出安全运行的概率就可以了。

但是在区块链的世界,我们需要的,是确确实实 100% 地确定我们在执行A目的时,不会有副作用B产生,底层系统不会受到任何因素的影响。那么显然需要我们进行完备性验证。

怎么保证100%不会出错呢?有两种办法:用人工检查来证明, 或者用算法证明。目前虽然有许多做人工验证的区块链项目,但是耗时多,成本高 —— 毕竟在现在的人才市场上,有能力、有意愿免费为你检查的白帽黑客很有限。

那么算法证明又怎样呢?我们来看看 CertiK 是怎么做的。

具体来看,CertiK 的验证过程体现了化整为零的解题思想,将一个难以证明的大问题拆分为许多容易证明的小问题,然后再将证明过的小问题重新组合回分解之前的较难的大问题,并且保证其中从端到端的正确性(end-to-end guarantees)。

在这个过程中,这些小问题都将发送给整个社区,社区的开发者们可以利用 CertiK 提供的方法,也可以运用自己的算法来证明这些问题。一旦某个问题通过多方独立的开发者的验证,那么其便可以用来作为建立其他理论的依据,从而形成互助协作的技术机制和良好的社区氛围。

CertiK 背后的团队阵容也十分强大:CertiK 的联合创始人顾荣辉从清华大学本科毕业,耶鲁大学的博士,现为哥伦比亚大学计算机系助理教授。

另一位联合创始人邵中,是形式化验证的最有成就的科学家,耶鲁大学计算机系的主任和 Thomas L. Kempner 冠名教授, 有 20 余年的安全领域经验。

未来:如何保证云上的安全?

说完了如何保证公链和智能合约的安全,我们来看一看目前区块链世界十分流行的云安全。

在讲云安全之前,Judy首先从目前最炙手可热的DPOS(delegated Proof of Stake) 讲起。

我们都知道POW和POS是区块链的两种共识机制。那么共识机制DPOS相比较于这两种共识机制其特点如何呢?

首先,应用DPOS时,社区成员不必再同话语权极大的旷工打交道了,省了不少事。

其次,DPOS上的应用开发进度更快。虽然整个系统牺牲了“去中心化”,但是提高了scalability,从而让DPOS公链上可以做出更多DAPP。

“DPOS在2018年的发展一定会更快,” Judy评论道。

然而这么高效的系统,不是没有问题。由于在DPOS上存在中心化的交易,交易所首先可能会成为黑客们攻击的对象。尤其是超级节点的存在,很可能最先成为攻击的靶子。而这些超级节点大多在云服务器上运行(Cloud)。那么对于整个平台来说,如何保证云安全就显得格外重要了。

1.IFCM遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.IFCM的原创文章,请转载时务必注明文章作者和"来源:IFCM",不尊重原创的行为IFCM或将追究责任;3.作者投稿可能会经IFCM编辑修改或补充。

相关文章
网友点评