找回密码
 立即注册

QQ登录

只需一步,快速开始

门户 百科 查看内容
  • QQ空间
  • 回复
  • 收藏

为什么 DApp 经常会遭遇随机数攻击?

admin 2019-10-17

9月14日,一款名为“EOSPlay”的DApp游戏遭遇了新型随机数攻击,一共损失了数万个EOS。

或许很多人对「随机数攻击」这个词已经司空见惯了,因为在DApp遭遇黑客攻击的事件中,随机数攻击占了很大一部分,很多DApp的随机数被黑客破解了。

你或许会问,随机数不是随机的吗?随机意味着不可预测,为什么还会被黑客破解呢?

这还得从随机数说起。

随机数可以分为真随机数和伪随机数。真随机数需要同时满足随机性、不可预测性、不可重现性,而伪随机数只需要满足随机性,或者是随机性和不可预测性即可。

真随机数只存在于物理世界中,一般需要通过物理手段(包括量子过程)获得,比如我们日常见到的抛硬币、掷骰子,生成的随机数就是真随机数。但是,抛硬币、掷骰子这种随机数生成方法的缺点非常明显,那就是耗时、耗力,而且也无法满足现代的计算机世界对随机数的需求。

因为效率的缘故,现代的计算机软件主要依赖伪随机数。最早的伪随机数生成器由20世纪最重要的数学家之一冯·诺依曼创造,通过一个确定的随机数种子,由确定的算法生成伪随机数序列。现在的主流计算机编程语言,默认的是将1997年发明的梅森旋转算法作为生成伪随机数的方法。

伪随机数最大的缺陷是,只要种子不变,生成的伪随机数序列也不会变。换句话说,只要你能拿到种子,你就可以破解随机数。

计算机生成伪随机数的过程,或多或少与这台计算机的物理状态或运算状态有关。也就是说,同一套随机数算法,不同的计算机,或是同一台计算机在不同的时刻,生成的随机数是不一样的。

然而,这种传统的计算机伪随机数生成方法虽然足够安全,却并不适用于区块链。区块链是一个分布式的系统,同一个DApp在不同的节点上运行,采用的随机数必须要一致,这样才能让各个节点进行验证。所以,DApp的随机数来源,不能是运行这个DApp的计算机自动生成的,因为这样的话,不同的节点计算机运行的结果就不一样了。


那么,区块链上的DApp随机数从哪里来呢?主要有以下三种方法:

第一种方法是通过可信第三方提供随机数。比如说专门提供随机数的网站random.org,我们可以通过独立于区块链之外的Oraclize预言机为以太坊区块链上的DApp获取随机数。当然,这种依赖可信第三方的方法有违区块链去中心化的精神。

第二种方法是不同的参与者一起合作生成随机数。比如以太坊区块链上的RANDAO,任何人都可以提交一个数字,RANDAO将所有提交的数字集合作为种子,生成随机数,其他DApp可以付费调取RANDAO生成的随机数,这些费用会奖励给那些提交了数字的用户。因为以太坊的去中心化,你不知道别人提交了什么数字,所以要破解RANDAO的随机数种子难度很大。

第三种方法是采集区块链上的信息作为种子。这也是目前大部分DApp所采用的随机数生成方法,缺陷是随机数的种子“几乎是”透明的。以本文开头提到的EOSPlay为例子,这款游戏的随机数采用的是未来某个区块的ID(哈希值)作为随机数的种子。

那么,黑客是如何实现攻击的呢?根据区块链安全公司慢雾科技的分析,可能使用了以下的方法:

1、黑客为自己和项目方租用了大量的CPU;2、黑客发起大量的延迟交易;3、由于以上两点原因,导致CPU价格被拉高,从而导致其它用户CPU不足;4、因为CPU不足的原因,其他用户难以发送交易,黑客得以使用自己的交易占满区块;5、根据提前构造的交易内容,黑客可以成功预测出区块哈希。

也就是说,虽然哈希算法不可逆,但是黑客可以通过控制输入实现输出的控制:控制区块内的交易内容,从而控制区块信息,进而控制区块哈希值,最终达到预测开奖结果的目的。

最后,我们总结一下:

随机数可以分为真随机数和伪随机数,真随机数只存在于物理世界中,一般需要通过物理手段获取。为了效率,计算机主要采用伪随机数,然而由于区块链的分布式特性,足够安全的传统计算机伪随机数生成方法并不适用。大部分DApp采用的是收集区块链上的信息作为伪随机数的种子,而要想设计足够安全的伪随机数,难度非常大,这就是为什么很多DApp经常遭受随机数攻击的原因。
来自: 白话区块链
文章点评
相关文章

热门货币

恒星币XLM
恒星币XLM

恒星币(Stellar),一个由前瑞波币(Ripple)创始人Jed McCaleb

柚子币EOS
柚子币EOS

EOS (Enterprise Operation System)是由 Block.one公司主导开发

比特币BTC
比特币BTC

比特币(BitCoin)的概念最初由中本聪在2009年提出,根据中本聪的

新经币NEM
新经币NEM

新经币(New Economy Movement,缩写 NEM),是一种点对点虚拟货币

艾达币ADA
艾达币ADA

ADA,中文称为艾达币,是Cardano项目的产物,Cardano项目发起于2

交易平台

火币网
火币网

火币网成立于2013年,是中国最大的比特币(btc)、莱特币(ltc)、以

火币pro
火币pro

火币全球专业站,是火币全球旗下服务于全球专业交易者的创新数字

OkCoin国际
OkCoin国际

okcoin国际站是全球着名的数字资产交易平台之一,主要面向全球用

币安Binance
币安Binance

币安交易平台是由赵长鹏(CZ)领导的一群数字资产爱好者创建而成

库币网
库币网

库币网就是以“区块链”为核心上线的数字资产交易平台。库币数字

币圈大佬

V神:以太坊创始人
V神:以太坊创始人

萌萌的天才少年Vitalik Buterin,圈内人一般称他为V神。这个94年

中本聪:比特币创始人
中本聪:比特币创始人

中本聪,比特币创始人,谜一样的人物。2008年中本聪在互联网上一

李笑来:中国比特币首富
李笑来:中国比特币首富

李笑来,原新东方名师,中国比特币首富,著名天使投资人,比特基

老猫:硬币资本联合创始人
老猫:硬币资本联合创始人

老猫,硬币资本联合创始人,现为Bigone交易所的CEO。巴比特专栏

沈波:分布式资本创始人
沈波:分布式资本创始人

沈波,分布式资本合伙人,分布式资本是中国最大的专业投资区块链