为什么 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 人参与讨论)

相关推荐

俄罗斯最大银行购买5,000台可挖矿区块链ATM

暴走时评:俄罗斯最大的银行Sberbank要求向4,917台ATM机提供内置图形卡,以支持“区块链操作”。它在全国设有14,200家分支机构和77,000台ATM。招标的最高出价为108,501,718.05美元,相当于每台ATM的22,066.65美元。他表示区块链技术可用于记录用户的ATM交易。

阿里巴巴与中国港口运营商签署区块链协议

暴走时评:中国最大的港口运营商招商局港口于5月28日与电子商务巨头阿里巴巴集团及其附属公司蚂蚁金服达成了交易。许多中国政府官员于4月27日宣布了中国基于区块链的服务网络。

一个地方区块链项目的“烂尾”尴尬:热情难掩发展短板

但现实是,多数地方的区块链项目推进缓慢,有的甚至已经“烂尾”。公开资料显示,截至目前,全国至少已有22个省市将区块链写入2020年政府工作报告。与此同时,每一个地方,要结合自身的实际情况来发展区块链产业。

V 神最爱的零知识证明为什么可以解决以太坊扩展问题?

像 zk-STARK 这样的密码学证明系统并不是唯一的解决方案。在本文中,我们将解释去中心化的密码学货币当前面临的挑战、各密码学证明系统解决这些问题的路径,以及为什么说 zk-STARK 最适合于解决这个问题。可以借助 ZKP 的零知识属性!

一个地方区块链项目的「烂尾」尴尬:热情难掩发展短板

但现实是,多数地方的区块链项目推进缓慢,有的甚至已经「烂尾」。热情高,短板短各地对区块链项目还是保持着较高的热情。与此同时,每一个地方,要结合自身的实际情况来发展区块链产业。

知名机构富达、文艺复兴已买入矿机生产商嘉楠科技股票

据吴说区块链消息,世界最大的投资管理公司之一富达正在增持嘉楠科技的股票。此外,文艺复兴基金会也购买了 17400 股嘉楠的股票。

数据:区块链相关投资活动数量已连续 7 个月下降

律动 BlockBeats 消息,据 The Block 统计,2020 年 5 月共发生了 44 起与区块链相关的投资交易活动,与去年同期的 104 起相比有了显著下降。

DeFi Builders 忽略了与数据相关的风险,可能导致大规模失败

在接下来的几个月中,他最期待继续支持DeFi,增加Chainlink提供的数据输入量,并加大对节点服务商的激励。Chainlink专注于适当地传输数据,并最大程度地保证数据来源。

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