随机数在区块链中的应用和生成机制_区块链:区块链币种类

编者按:本文来自巴比特资讯,作者:黄连金,著名区块链专家,核聚链首席科学家、美国DistributedAppsCEO、中国电子学会区块链分会专家委员、NULS顾问;向文波,Java软件工程师,Cryptotech-Writer,NULSCoreTeam成员,Odaily星球日报经授权转载。

在人们的生活中,很多场景都需要用到随机数,例如福利彩票,车牌摇号,公共用房分配等。互联网的发展,让人们对随机数的运用越来越依赖中心化系统,但是绝大多数中心化系统,生成的随机数都是伪随机数,并且存在作弊的风险。区块链的出现,让人们看到了生成更公平的随机数的可能。而随机数对于区块链本身也有着非常重要的作用,那到底随机数在区块链中有哪些应用场景?区块链又是如何产生更可靠的随机数的呢?随机数在区块链中的应用

私钥拥有加密货币的人都知道私钥的重要性,谁拥有你的私钥,谁就拥有了你的加密资产。私钥的生成都需要依赖随机数,所以能否保证随机数的不可预测和破解,关系着加密资产的安全。比特币私钥使用的是SHA-256生成的256位随机数,这个随机数的取值范围是0~22??-1。2的256次方近似于10的77次方,这是一个取值范围非常大的数,以现有的计算能力,想要暴力破解,几乎不可能。不能暴力破解,但是如果生成随机数的随机数生成器可以被操控,生成的随机数可以被预测,那你的私钥就有可能被解密,加密资产的安全就得不到保障了。竞猜类应用在竞猜应用里,需要使用随机数,来保证结果的随机性,避免人为干预,影响结果的公平性。在中心化环境下,参与竞猜的用户需要向系统提交竞猜订单,系统根据规则收集用户的信息,然后生成竞猜结果。在整个过程中,客户端不会参与竞猜结果的计算,竞猜结果本质上是由系统生成的一串随机数。当出现巨大利益诱惑时,系统可能会作弊,让自己从中得利。在去中心化环境下,没有唯一的中心,可以让所有节点共同参与随机数的生成,可以有效的保证随机数的公平性。但是在去中心化环境中,黑客可以更方便的对随机数发起攻击,从中获得利益。到目前为止,区块链随机数的安全性仍然是一个需要突破的技术问题。在2018年8月,曾火爆一时的Fomo3D游戏,就被黑客利用其随机数漏洞,在游戏中获得了巨额的利益。继Fomo3D之后,EOS上的众多热门DAPP,尤其是竞猜类游戏,如EOS.WIN、EOSDice等,也先后因随机数生成的缺陷遭到了黑客攻击。POS共识机制区块链是一种去中心化的分布式记账技术,在去中心化的环境里,要实现正确的记账,随机的选出记账人,是非常关键的。因为只有在随机的条件下,才能保证公平的分配记账权,合理分配挖矿奖励。采用POW的共识机制,是通过算力竞争,计算一个非常有难度的哈希值,来随机确定由谁来记账。采用POS的共识机制,则需要通过随机数,随机选举出一个节点来进行记账。大多数POS协议都会根据持有者的代币数量,选出一组矿工和验证者,共同完成对链上交易的验证和出块。为了能够随机的选出矿工和验证者,保证公平分配奖励,算法必须融入一些公平、无偏倚的随机数源。所以在许多POS共识机制中,随机数是一个非常关键的技术。真随机数和伪随机数

动态 | EOS竞猜游戏HiGold Game遭随机数攻击:今天中午,11:57至12:01之间,PeckShield安全盾风控平台DAppShield监测到黑客向EOS竞猜类游戏HiGold Game发起连续攻击,已实现获利。针对异常获利情况,PeckShield安全人员随即和项目方取得联系,及时暂停了游戏合约,避免了进一步资产损失。PeckShield安全人员在此提醒,开发者应在合约上线前做好安全测试,特别是要排除已知攻击手段的威胁,必要时可寻求第三方安全公司协助,帮助其完成合约上线前攻击测试及基础安全防御部署。[2019/7/3]

随机数分为真随机数和伪随机数。真随机数数列是完全不可预测的,只存在真实的物理世界中,例如放射性衰变、电子设备噪音、宇宙射线的触发时间等,我们可以通过采集这些数据,获得真随机数数列。伪随机数是通过获得的真随机数数列,使用随机数算法计算得来的。只要获得随机数种子,就能得到相同的伪随机数数列。所以真随机数只存在真实的物理世界中,计算机中的绝大多数随机数都是伪随机数。想保证伪随机数的安全,就需要有效的随机数种子和安全的随机数生成器。区块链随机数的生成方式

声音 | 慢雾预警:攻击者喊话所有链上伪随机数(PRNG)都可被攻击:攻击者 floatingsnow 向自己的子账号 norealrandom、dolastattack 转账并在 memo 中喊话:hi slowmist/peckshield: not only timer-mix random but all in-chain PRNG can be attack, i suggest b1 export new apis (get_current_blockid/get_blockhash_by_id) instead of prefix/num

从账号名称和 memo 可知攻击者对目前 EOS DApp 链上随机数方案了如指掌,攻击者指出 tapos_block_prefix/tapos_block_num 均不安全,并提议 b1 新增 get_current_blockid / get_blockhash_by_id 接口。[2019/1/16]

区块链是去中心化的系统,理论上,产生的随机数比中心化系统会更公平,但是在去中心化环境里,如果有巨额利益,更容易遭到黑客攻击,所以为了保证区块链随机数的安全性,诞生了各种不同的随机数生成机制。VRFVRF是一种可验证的随机数生成方式。目前主要是基于POS共识算法的区块链项目在使用,包括Algorand、Cardano。在Algorand、Cardano中,VRF是产生随机数的关键。VRF可以根据任意的一个输入,输出一个随机数。在VRF中特别设计了一个非交互的零知识证明过程,可以用来验证随机数的正确性,以及某随机数是由某节点生成的。VRF中主要包含四个环节:生成公私钥对生成随机数输出计算零知识证明验证随机数输出

动态 | EOS竞猜游戏uugame遭随机数攻击:今天下午18:24-18:40之间,PeckShield安全盾风控平台DAppShield监测到黑客向EOS竞猜类游戏uugame发起连续攻击,获利数千EOS ,并已转至币安交易所。PeckShield安全人员在此提醒,新上线部署的游戏合约存在安全问题的可能性较大,开发者应在合约上线前做好安全测试,特别是要排除已知攻击手段的威胁,必要时可寻求第三方安全公司协助,帮助其完成合约上线前攻击测试及基础安全防御部署。[2019/1/10]

生成随机数的节点将自己的私钥,作为生成随机数的输入的一部分,然后在本地输出随机数和零知识证明。其他节点可以利用生成随机数的节点的公钥、输入、输出,验证随机数和生成者身份的真假。

得到随机数之后,就需要用生成的随机数来挑选参与出块的节点。最简单的方式是在全网设置一个公认的临界值M,假设某个节点生成的随机数R大于临界值M,系统就允许节点参与下一步的出块任务。但是这种方案没有办法防止女巫攻击,所以现在大部分VRF抽签方案都会基于权益进行票数分配,然后设计抽签算法,完成后续的共识过程。RandaoRandao基于区块链技术,提供开源、去中心化、可证公平的随机数生成服务。Randao的目标是满足随机数生成不可控制和不可预测的基本特性的同时,使个体可以参与随机数的生成,保证随机数具备可参与性,利用区块链透明和不可逆的特点,保证结果的可证公平性。Randao主要采用了CommitReveal和BLS。CommitReveal其缺点主要是生成随机数的速度较慢。在以太坊中,从接到随机数生成请求,到生成随机数,至少需要10个块以上的时间,目前耗时在3分钟以上;因为需要参与者多次发送交易提交数据,其生产和使用成本较高。但该方案的优势在于,其参与门槛基本为零,任何人都可以随时加入一个随机数的生成过程,在防止串谋和可证公平方面拥有一定优势。BLS签名方案是对CommitReveal的一种补充,因为生成过程在链外组织,响应速度快,通常只需要一个区块的时间就能生成随机数;消费者发起随机数生成请求,生产者在下一个块写入随机数,只需要发送两次交易就可以完成随机数的生成和调用,生产和使用成本都很低,适合用于高频,同时对防串谋要求不高的场景。阈值签名机制Dfinity是一个公链项目,目标是成为“互联网电脑”,实现软件和服务在其公有云的运转。在Dfinity中,随机数是整个共识机制正常运转的核心,其采用的阈值签名机制结合了VRF和BLS签名机制,是生成随机数的一种有效方式。阈值签名机制主要由三部分组成:输入、输出、阈值机制。输入是一组成员的私钥,输出是一个随机数。阈值机制能够保证的是,只要接收来自成员的输入数量超过设定值,就可以得到一个确定的随机数,但是在得到小于设定值的输入数量前,没有人能够预测输出的随机数是多少。输出随机数的过程中使用了VRF,阈值机制中使用了BLS签名机制。阈值签名机制结合了VRF和BLS,VRF使其生成的随机数具备了可验证性,BLS签名机制使签名过程中,没有节点可以提前预知签名结果,实现了随机数的不可操控性,并且很难串谋,是一种不错的随机数生成机制。NULSRNGNULSRNG是全球开源社区项目NULS,根据其POC共识算法,专门为DAPP设计的随机数种子生成机制。NULSRNG的实现方式是基于POC共识的两段式随机种子提交生成机制。即每个节点在出块的同时生成一个随机种子,并对该随机种子进行加密处理,将生成的密文包含在区块头中,同时获取该节点上次出块时生成的256位随机种子明文。结合区块头中的明文和密文,就可以对节点生成的随机数种子进行验证,确保不可篡改。

动态 | EOS竞猜游戏Lucky Nuts因随机数安全问题暂停:据 PeckShield 态势感知平台12月26日数据显示:今天凌晨02:36-05:11之间, 黑客向Lucky Nuts游戏合约(nutsgambling)重放多笔具有相同内容的交易,并持续从中获利。最终将大部分不当EOS获利转向币安交易所账号(binancecleos)。目前游戏合约已暂停交易,截至发稿时还处在维护状态。PeckShield 安全人员初步研究发现,此次是因游戏合约随机数问题被攻破。PeckShield在此提醒广大游戏开发者和游戏玩家,警惕安全风险。[2018/12/26]

NULSRNG基于底层共识实现,由全部共识节点参与,这样的方式增加了节点串谋的难度,采用种子密文和明文两段式提交的方式,能够实现种子可验证和不可篡改。

在NULS上开发的DAPP,可以直接利用底层提供的接口,获取随机种子,然后采用自己的随机算法,生成需要的随机数数列,不仅可以提高随机数的安全性,同时使用上也可以做到灵活方便。结语

动态 | 安比(SECBIT)实验室预警FOMO3D游戏随机数漏洞:经Reddit 用户 karalabe 爆料 ,安比(SECBIT)实验室审计后确认,FOMO3D 游戏的智能合约存在随机数漏洞可被利用,FOMO3D 合约及所有抄袭源码的山寨合约均存在该安全漏洞。原本设计上随机性较大的空投游戏可通过特殊手段操纵,大大提高中奖概率。漏洞细节为:以太坊智能合约环境中难以生成无法预测的随机数,FOMO3D 开发者在其合约中增加了判断调用者是普通人类还是合约的判断逻辑来尝试规避,但此逻辑实现存在漏洞。攻击者利用借助合约提前预测随机数,从而大大增加自身中奖概率。

评级机构Tokeninsight之前曾提示,FOMO3D存在合约安全风险可能性,且后进场玩家有较大投资风险。[2018/7/24]

1、在区块链中,随机数有着非常多的应用场景,随着区块链技术的不断发展和完善,人们对区块链随机数的应用将会不断增加;2、在区块链领域中,目前已经有许多不同的随机数生成机制,它们都有着各自的特点;3、意识到随机数的重要性,越来越多的技术团队和项目方,开始研究更好的随机数生成机制,未来将会有更多完善的区块链随机数生成机制产生。参考文献:《Randao:VerifiableRandomNumberGeneration》;《Veri?ableRandomFunctions》SilvioMicali,MichaelRabiny,SalilVadhanz;《DFINITYTechnologyOverviewSeriesConsensusSystem》TimoHanke,MahnushMovahedi,DominicWilliams。

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

金宝趣谈

[0:15ms0-5:688ms