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

区块链资讯白话区块链2019-10-17 14:12:48  阅读 -评论 0

9 月 14 日,一款名为“EOSPlay”的 DApp 游戏遭遇了新型随机数攻击,一共损失了数万个 EOS。
或许很多人对「随机数攻击」这个词已经司空见惯了,因为在 DApp 遭遇黑客攻击的事件中,随机数攻击占了很大一部分,很多 DApp 的随机数被黑客破解了。
你或许会问,随机数不是随机的吗?随机意味着不可预测,为什么还会被黑客破解呢?
这还得从随机数说起。
随机数可以分为真随机数和伪随机数。真随机数需要同时满足随机性、不可预测性、不可重现性,而伪随机数只需要满足随机性,或者是随机性和不可预测性即可。
真随机数只存在于物理世界中,一般需要通过物理手段(包括量子过程)获得,比如我们日常见到的抛硬币、掷骰子,生成的随机数就是真随机数。但是,抛硬币、掷骰子这种随机数生成方法的缺点非常明显,那就是耗时、耗力,而且也无法满足现代的计算机世界对随机数的需求。
因为效率的缘故,现代的计算机软件主要依赖伪随机数。最早的伪随机数生成器由 20 世纪最重要的数学家之一冯·诺依曼创造,通过一个确定的随机数种子,由确定的算法生成伪随机数序列。现在的主流计算机编程语言,默认的是将 1997 年发明的梅森旋转算法作为生成伪随机数的方法。
伪随机数最大的缺陷是,只要种子不变,生成的伪随机数序列也不会变。换句话说,只要你能拿到种子,你就可以破解随机数。
计算机生成伪随机数的过程,或多或少与这台计算机的物理状态或运算状态有关。也就是说,同一套随机数算法,不同的计算机,或是同一台计算机在不同的时刻,生成的随机数是不一样的。

然而,这种传统的计算机伪随机数生成方法虽然足够安全,却并不适用于区块链。区块链是一个分布式的系统,同一个 DApp 在不同的节点上运行,采用的随机数必须要一致,这样才能让各个节点进行验证。所以,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 经常遭受随机数攻击的原因。

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

短短21天,18省市领导人为区块链发声,创业者或迎最大政策红利!

此消息一出,区块链正式被列为国家战略,全国开启新一轮的区块链热潮,短短22天,已有18个省市领导人为区块链发声。11月3日,山东省委书记刘家义表示,山东目前正致力于人工智能、区块链、物联网发展,支持各类创新团队,打造对外开放新高地。11月8日,云南省委常委会召开扩大会议,省委书记陈豪主持会议。11月8日,江西省省长易炼红来到南昌市调研区块链发展情况。

数字货币:泡沫抑或硝烟?

我国的法定数字货币,已经是呼之欲出,央行近几月更是三番四次提及数字货币。国家发行法定数字货币,对于区块链行业势必产生一定影响。我国央行的数字货币采用双层运营体系。央行数字货币引入的双层运营体系,实际是运用了私人和公共部门共同建设数字货币。而国家之间的法定数字货币,带来战场上的硝烟,货币战争已悄然打响。

人均 5.2TB 空间,PoC 硬盘挖矿模式 2020 年能火吗?

人均 5.2TB 空间,PoC 硬盘挖矿模式 2020 年能火吗?

但能源浪费的问题在 PoC 挖矿中并不会出现。另外一个项目是 MASS,它是一个基于 PoC 算法的全新的硬盘挖矿项目,致力于成为共识层基础设施。此外,虽然与 PoW 相比,采用 PoC 挖矿所需要的耗电量已经非常小,但相对抵押代币挖矿的 PoS 项目来说,还是需要消耗一定的电能资源。

墨西哥石油公司遭软件勒索,攻击者要求支付价值500万美元的比特币赎金

区块律动 BlockBeats 消息,墨西哥国有石油公司 Petroleos Mexicanos 近日遭到勒索软件攻击,犯罪分子要求使用比特币支付 500 万美元赎金。周日,墨西哥国有石油公司 Petroleos Mexicanos 遭受了大规模的勒索软件攻击,该攻击对密码进行编码并限制对重要文件的访问。据一封来自管理层的电子邮件显示,Pemex 要求员工断开中央网络的计算机连接,并备份关键信息。路透社 的报道称,攻击者现在已经联系该公司,要求获得价值 500 万美元的比特币。

Kadena 全网算力突破 1T,已有 10 条 PoW 链互联成网

Kadena 全网算力突破 1T,已有 10 条 PoW 链互联成网

区块律动 BlockBeats 消息,区块链平台服务提供商 Kadena 的 PoW 网络总算力已经突破 1T,已经有 10 条 PoW 链连入 chainweb,在 Kadena 区块浏览器中,可以清晰地看见织网状的区块和交易信息。目前,Kadena 的原生代币 KDA 正在 CoinList 公售,并分为价位、解锁规则不同的 Non-US、Global 两个渠道,此次 KDA 代币销售预计持续到 11 月 22 日。

中信银行打造“区块链”信用证结算!

中信银行打造“区块链”信用证结算!

科技不会改变金融的实质,但却能让金融服务更高效,能让资金供、需方信息不对称的问题更好地解决。近期,中信银行首个区块链项目——基于区块链的国内信用证信息传输系统(简称BCLC)(一期)成功上线,这是国内银行业第一次将区块链技术应用于信用证结算领域。 据中信银行国际业务部总经理助理张栩青介绍,将现在流行的区块链技术应用在国内信用证中,改变了银行传统信用证业务模式,信用证的开立、通知、交单、承兑报文

中国信息技术部门成立区块链研究实验室

中国信息技术部门成立区块链研究实验室

暴走时评:本月初,中国政府对国内的ICO和数字货币交易所的打击在世界范围内引起了强大反响,但政府已经多次声明不会将区块链与数字货币划等号,依然非常重视区块链技术在中国的发展。鉴于中国工业和信息化部成立了一个专门研究区块链的实验室,这一论调也得到了进一步的证实。 虽然中国政府最近在大力打击比特币交易所和ICO,但仍然致力于开发区块链在其他领域的潜力。 据财新网报道,中国工业和信息化部已经成立了一

 分布式账本中的生命科学

分布式账本中的生命科学

生物科学是医学领域涉及遗传研究,疾病预防和生活方式治疗(lifestyle treatments)的学科。它已经存在了很长时间,但区块链技术的基础设施应用给该学科提供了重大进步的可能性。 根据Pistoia Alliance进行的2016年6月份高级制药和生命科学领袖调查,83%的受访者表示,他们预计在五年内将全面采用区块链技术。 Pistoia Alliance是一个全球性的非营利组织,致

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑