http://www.7klian.com

理会 | 区块链里常见的三种“进攻”范例

像比特币、以太坊,矿工的嘉奖大部门是通过事情量证明得到的,只有很少一部门是打包生意业务中的手续费。然而在做哈希运算之前一个矿工要验证对应每个区块是否正确、生意业务是否正确,矿事情为验证者是没有任何嘉奖的。这导致了矿工在举办挖矿时认为做哈希运算是更重要的。资源枯竭进攻又增强了矿工的这种想法。

 

 

已往一年有各类百般的DeFi进攻事件,其实也为大量的区块链开拓者敲醒了警钟,当上线各类新成果之前必然要做好安详审计,只管担保本身上线的成果是没有较大的安详问题。

4、拥塞进攻

在区块链的世界里,除了有粉碎法则的恶意进攻者,尚有许多操作法则的好处最大化者。

 

第一,恶意进攻。这些进攻大多是各人平时打仗到的区块链相关的智能合约进攻。

许多研究者、进攻者会把精神放在怎么通过匿名化、去匿名化生意业务揣度出地点关联性。有哪些人在利用匿名生意业务池呢?

前事不忘后事之师,然而许多时候各人城市遗忘汗青,纵然是跟安详息息相关的。最近的DeFi可能LendF.me的进攻中,又见到了雷同2016年的重入进攻。由于进程其实比之前2016年进攻要巨大许多,这里就简化说明一下。

成果这么强大的漫衍式计较机听起来很酷,可是从安详角度来看,当一个系统支持的逻辑成果越多,其实它的安详隐患是越多的,这也是为什么比特币系统的安详性相对以太坊要好许多的一个原因。

针对扣押进攻,有哪些办理方案?个中一个要领是将同一任务分给多个矿工,一个矿事情弊,另一个矿工假如挖到比特币的区块会向矿池讲述。也可以改变偿付打算可能方法,譬喻给挖到比特币区块的矿工更多的嘉奖,勉励矿工凭据协议举办挖矿。虽然,也可以改变比特币的协议,使得原生挖矿可以支持矿池挖矿。

 

 

针对这些恶意进攻,有哪些防御法子?

第二,理性进攻。平时大概较量少打仗到,也就是进攻者如何操作游戏法则之内的一些要领将本身的好处最大化,详细会以矿池和矿工为例。

 

所有权进攻是指智能合约的函数的所有权被进攻者改动。在一些进攻中,有些函数配置了只有Owner才气看的会见节制。然而,谁可以作为Owner呢?这个函数没有实施会见节制,任何人可以发送生意业务给智能合约把本身配置成Owner,然后就可以哄骗其他函数。

 

图中有几种非凡生意业务:透明生意业务,A发给B,各人知道数目,也知道发送者、吸收者。之后B发给C,举办匿名化。由于有匿名池,C再发给DEFG的匿名生意业务,各人都判别不出来到底谁是真正的吸收者。可是,DEFG有时候大概要去匿名化,把匿名身份转为非匿名身份。

 

 

整体来看,凭据这个箭头一二三四,形成了一个轮回。导致的效果就是恶意合约在提倡挪用之后,可以一直不绝、如此来去地举办转账,把左边智能合约里的余额绵绵不断地转到进攻者的地点,只要左边智能合约的燃料费是足够的以及尚有余额,最终会把所有余额转给对应的进攻者。

 

1、重入进攻

 

本日我将分享一些已往几年区块链碰着的进攻实例,为各人展示一下不太一样的区块链安详和隐私问题。

除了操作智能合约裂痕的进攻外,尚有些进攻其实是操作区块链自己的特性举办进攻。个中最有意思的一类进攻叫做“拥塞进攻”。好比Fomo 3D,前几年Fomo 3D是很风行的彩票游戏,最终得到钥匙的人可以得到该合约的险些所有ETH。游戏法则是奈何的?在每一轮限按时间内各人都可以买钥匙,每轮钥匙价值会一连增高。假如在限按时间内有用户参加买钥匙,那么下一轮就会继承举办。直至当前轮在限按时间内没有人买钥匙,那么上轮的买到钥匙的用户就是最终赢家。

 

像Nonce,可以把“11”开头的分给一个矿工,把“10”开头的分给另一个矿工,每个矿工完成对应的计较后,把对应的功效返回给矿池的打点人。今朝高出90%的矿工插手矿池,矿池的存在使得矿工收入越发不变。譬喻你这边有90个矿工,个中1个矿工挖到了最终区块,那其他90个矿工可以凭据本身的算力拿到对应的嘉奖。

 

5、在上线任何成果之前做第三方安详审计(至少两家)。

各人都知道Monero自己的隐私性不是出格好,在区块链世界里谁的隐私性相对最好?就是Zcash,Zcash是利用零常识证明来掩护发送者和吸收者的身份以及发送金额。

 

通过一些阐明,进攻者发明各人利用Zcash匿名化的进程中有一些很有意思的操纵,譬喻首创人行为。许多环境下首创人入金都是249.999ZEC,出金是250.001ZEC。假如仅从对应的数值来看,各人很容易区别出哪些地点在举办匿名化操纵时候是来自首创人的,哪些去匿名化的地点也是来自于首创人的,因为数值可以举办绑定。

理性进攻

隐私进攻

6、当陈设本身的链上逻辑后,需要对对应的智能合约举办链上监控。这样可以实时发明问题,尽早办理。

重入进攻是很严重,防止法子是奈何呢?其实在做转账之前可以先把内部的状态配置好,譬喻当智能合约要给某个用户转10个ETH,在转账之前提前把用户对应的余额变量,减掉对应的10个ETH再做交互转账,就可以制止这样的进攻了。这就是一个较量好的类型,先去查抄,然后执行,最后再做交互。

 

 

 

 

上图是一个样例。可以看到进攻者发了许多几何生意业务,个中_value的对应值出格大。详细到257行,当_value出格大的时候,cnt假如大于2,amount就直接向上溢出为零,导致之后的安详查抄全部通过。259行的第二个查抄正常来说是不该该通过的,可是由于溢出的amount酿成0了,左边balances[msg.sender]的数值必定大于便是零,导致第二部门的安详查抄也通过了。最终进攻者乐成获取超大数目标数字资产,纵然他自己的余额大概会极其小。

 

 

 

有意思的是Zcash里高出85%的生意业务都是透明的,入金/出金很容易推算出来的。有少于1%的生意业务是匿名生意业务的,Zcash自己利用零常识证明,今朝来讲零常识证明是较量安详的匿名化要领。

 

 

早期Monero没有强制每个发送者都配置安详条件掩护用户隐私。这导致有些粗心的用户觉得Monero的隐私性是默认的,但实际没有。并且由于匿名组不足大,通过一些简朴的推算阐明可以很快推算出许多生意业务的吸收者。如图最下面的紫色箭头,C只殽杂了两笔生意业务,由于上面绿色箭头A已经发给B了,接下来C就不行能发给B,必定是发给D。中间的玄色箭头固然夹杂了许多生意业务,可是由于之前的几笔生意业务已经袒暴露来,我们可以推算出最终的吸收者是E。

本文为万向蜂巢学院线上果真课第13期的内容。在本次分享中,Parity亚洲区技能总监贾瑶琪博士以已往几年区块链碰着的进攻实例,为各人展示了不太一样的区块链安详和隐私问题。蜂巢学院每周四晚城市在B站举行线上技能沙龙,感乐趣的可以在微信里搜索公家号“万向区块链”,获取每周的直播进口和时间。

 

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

相关文章阅读