美文网首页
如何对抗随机数攻击(二)

如何对抗随机数攻击(二)

作者: CelesOS研究院 | 来源:发表于2020-03-24 10:45 被阅读0次

    上一期CelesOS研究院讲解了当前区块链技术领域随机数攻击层出不穷,造成巨大损失;主流的三大随机数算法和方案的不足与缺陷是其症结所在,区块链行业急需更加安全可靠的随机数算法和策略。

    而由CelesOS核心技术团队独创研发的【随机数承诺】算法,可有效防止节点操纵随机数、彩虹攻击等问题,让其他人很难预测随机数的值。其算法共分为产生随机数和校验随机数两个部分,最新披露技术内容详解如下:

    产生随机数

    1、随机数消费者

    必须获取未来某个块的随机数,这样才能保证公平性和不可预知性。因为在该算法内,谁都不知道未来某个块的随机数是多少,这也是我们要的结果。

    2、区块生产者

    生成区块的时候需要提供一个承诺next_random_hash。其目的是为了让其他人无法获知区块生产者将要提供的随机数是什么,同时也保证了它自己不能替换自己所提供的随机数。只有在区块生产者公布自己的随机数的时候,其它节点才知道该随机数,并通过承诺去验证该随机数是否正确。 

    为防止彩虹攻击,随机数的承诺是由该随机数和其承诺的前一个区块的特征,通过椭圆函数F计算的结果。因为随机数承诺的前一个区块的特征在一个极大的范围内,所以攻击者就很难提前生成彩虹表,对随机数进行彩虹攻击。

    区块生产者,从当前区块向前遍历X个区块获取所有的随机数(包含当前区块的随机数),最后通过计算得到最终的随机数result_random。因为获取到了尽可能多的区块生产者的随机数,减少了少数节点串通操纵随机数的危险。

    计算随机数 R

    1.从当前块开始往前遍历下一个区块;

    2.如果被遍历的区块存在随机数则把随机数保存起来{PR1,PR2,……};

    3.如果被遍历的块不存在随机数则直接进入第4步;

    4.如果已经累计遍历了X块了,则通过椭圆函数F计算{PR1,PR2,……}的值,生成随机数R并将R写入区块。如果没有累计遍历到X块,则继续1-4步骤。

    随机数验证逻辑

    其它节点验证当前区块生产者节点的随机数是否正确:

    1.收到当前区块生产者节点生产的区块,获取区块中的随机数PR;

    2.在区块链上查询随机数PR的承诺next_random_hash;

    3.在区块链上查询承诺next_random_hash的前一个区块的特征值;

    4.利用随机数PR和其承诺的前一区块特征值通过椭圆函数F计算出v_hash,并比较v_hash和承诺next_random_hash是否一致。如果一致则随机数正确,反之则不正确。

    综上所述,CelesOS【随机数承诺】算法摒除了简单的区块链中的随机数要么是合约自己生成(容易被其他人发现与预测),要么是第三方生成(缺少公信力,难以信服)的尴尬境地。

    CelesOS【随机数承诺】算法,可以实现在即保证随机数的安全生成,也不需要引入一个“可信的第三方”,由区块生产者自行就可以产生一个“安全的”随机数,且其他的验证节点均可以对这个区块生产者的出块行为进行校验,可有效防止区块生产者进行作弊行为。且此随机数将永远的保存在每个区块中,任何人都不会修改这个随机数,保证了随机数不可被操纵。采用承诺的前一区块的特征值和随机数通过椭圆函数F计算出承诺,有效的防止了彩虹攻击。并且,对于随机数消费者来说,它不需要等待一个特别长的时间,在任何时候,都可以以非常快速的时间拿到这个随机数。

    随机数算法 上期回顾:CelesOS研究院丨如何对抗随机数攻击(一)

    技术课题 下期预告:CelesOS在区块链上实现RAM随时间衰减的方法

    CelesOS

    CelesOS作为首个DPOW金融区块链操作系统,采用共识机制3.0突破“不可能三角” 既可提供高TPS,又能兼顾去中心化。致力于打造拥抱监管的金融区块链操作系统,为金融机构和监管链上开发应用提供服务,为监管制定角色和共识生态的监督层协议。

    CelesOS团队致力于为区块链和监管机构/金融业之间搭建桥梁。我们相信只有与监管机构合作的区块链技术才会拥有真正的未来。我们相信并为实现这一目标而做出贡献。

    相关文章

      网友评论

          本文标题:如何对抗随机数攻击(二)

          本文链接:https://www.haomeiwen.com/subject/kdtoyhtx.html