随机数和分散网络:实际应用

引言


“随机数的生成非常重要,不能遗漏任何机会”
罗伯特·卡夫尤(Robert Cavyu),1970年


本文致力于在不可信环境中使用集体生成随机数的解决方案的实际应用。 简而言之-在区块链中如何以及为什么使用随机数,以及关于如何区分“好”随机和“坏”的一些知识。 即使在单独的计算机上,生成真正的随机数也是一个非常困难的问题,并且密码学家长期以来一直对其进行研究。 嗯,在分散式网络中,随机数的产生甚至更加复杂和重要。


在参与者之间彼此不信任的网络中,生成不可否认的随机数的能力可以有效解决许多重要问题并显着改善现有方案。 此外,这里的赌博和彩票根本不是第一目标,因为乍看之下没有经验的读者可能会喜欢。


随机数生成


计算机本身不知道如何产生随机数,因此,它们需要外部帮助。 计算机可以使用例如鼠标移动,使用的内存量,处理器触点上的杂散电流以及称为熵源的许多其他源来获得一些随机值。 这些值本身并不完全是随机的,因为它们在一定范围内或具有可预测的变化性质。 为了将这样的数字变成给定范围内的真正随机数,对它们应用密码转换,以便从熵源的不均匀分布值中获得均匀分布的伪随机值。 所获得的值称为伪随机值,因为它们并不是真正的随机值,而是确定性地从熵得出的。 任何能够对数据进行加密的良好加密算法都会产生与随机序列在统计上不可区分的密文,因此,为了产生随机性,您可以使用一个熵源,即使在很小的范围内,它也只能提供良好的可重复性和值的不可预测性,其余的工作是对位进行分散和混合结果值将由加密算法接管。


为了完成简短的教育计划,我要补充一点,即使在一个设备上生成随机数也是确保数据安全的支柱之一,生成的伪随机数用于在各种网络中建立安全连接,生成加密密钥,平衡负载,控制完整性,以及更多用途。 许多协议的安全性取决于从外部生成可靠的,不可预测的随机数据,进行保存,然后在协议的下一步之前不打开它的能力,否则安全性将受到损害。 攻击伪随机值生成器非常危险,并且威胁到所有使用随机生成的软件。


如果您已学习了基本的密码学课程,则应该了解所有这些内容,因此让我们继续使用分散式网络。


区块链随机


首先,我将讨论支持智能合约的区块链,正是它们可以充分利用高质量不可否认的随机性提供的机会。 此外,为简便起见,我将此技术称为“可公开验证的随机信标 ”或PVRB。 由于区块链是任何参与者都可以在其中验证信息的网络,因此名称的关键部分是“可公开验证”,即 任何在计算帮助下的人都可以证明放置在区块链上的结果数字具有以下属性:


  • 结果应具有可证明的均匀分布,即基于可证明的强密码学。
  • 无法控制结果的任何位。 结果,结果不能被预先预测。
  • 您不能通过不参与协议或通过向网络过载攻击消息来破坏生成协议
  • 以上所有内容均应避免串通协议中允许的不诚实参与者(例如,参与者的1/3)。

一个极小的小组参与者产生甚至受控的偶数/奇数随机数的任何机会都是安全漏洞。 该组织停止发行随机房屋的任何机会都是安全漏洞。 总的来说,有很多问题,这个任务并不容易...


看来PVRB最重要的应用是各种游戏,彩票,以及通常在区块链上进行的任何赌博。 确实,这是一个重要的方向,但是区块链中的随机之家具有应用程序,并且更为重要。 考虑他们。


共识算法


PVRB对于达成网络共识至关重要。 区块链中的交易受电子签名保护,因此,“对交易的攻击”始终是一个区块(或多个区块)中交易的包含/排除。 共识算法的主要任务是就这些事务的顺序以及包括这些事务的块的顺序达成共识。 另外,真正的区块链的必要属性是终结性-网络同意终结块的链是终结性的能力,并且永远不会因为出现新的叉子而被排除。 通常,为了同意一个块是有效的并且最重要的是最终的,您需要从大多数块生产者(以下简称BP-块生产者)收集签名,这要求至少将块链交付给所有BP,并在所有BP之间分配签名。 随着BP数量的增加,网络上所需消息的数量呈指数增长;因此,从数十个BP开始,需要终结性的共识算法(例如Hyperledger的pBFT共识中使用的算法)就无法以正确的速度工作,需要大量的连接。


如果网络具有不可否认且诚实的PVRB,则即使以最简单的近似,也可以基于该网络选择一个区块生产者之一,并为其指定一轮协议的“领导者”。 如果我们有N区块生产者,其中M: M > 1/2 N是诚实的,则不审查交易并且不构建叉链以进行“双花”攻击,那么使用统一分配的无可争议的PVRB将使您选择诚实的领导者概率为M / N (M / N > 1/2) 。 如果为每个领导者分配了自己的时间间隔,在该时间间隔内他可以产生一个区块并验证链,并且这些间隔在时间上相等,则诚实BP区块链将比恶意BP所形成的链更长,而共识算法则依赖于链的长度,简单地丢弃“坏”。 这种为每个BP分配相等时间片的原理最早是在Graphene(EOS的前身)中应用的,它允许使用一个签名关闭大多数块,这大大减少了网络负载,并使这种共识可以极其迅速和稳定地工作。 但是,EOS网络现在必须使用特殊的块(最后不可逆块),这由2/3 BP签名确认。 这些块用于确保确定性(分叉链不可能比最后一个“不可逆块”更早开始)。


此外,在实际的实现中,协议方案会更复杂-在多个阶段对提议的块进行投票,以在丢失块和网络问题的情况下维护网络,但是即使如此,PVRB共识算法在BP之间所需的消息也要少得多,这使您可以使其比传统的PBFT或其各种修改更快。


此类算法的最突出代表:卡尔达诺团队的Ouroboros ,如所宣布的那样,在数学上可证明可抵抗BP之间的串通。


在Ouroboros中,PVRB用于定义所谓的“ BP时间表”,即根据时间表为每个BP分配自己的时隙以发布块。 使用PVRB的最大优势是BP拥有完整的“平等权利”(取决于其余额的大小)。 诚实的PVRB确保恶意BP无法控制时隙的调度,因此无法通过预先准备和分析链叉来操纵链,并且选择一个叉就足以简单地依靠链的长度而无需使用棘手的方法来计算BP的“有用性”和块的“权重”。


通常,在所有需要在分散网络中选择随机参与者的情况下,PVRB几乎始终是最佳选择,而不是基于例如块哈希的确定性选项。 没有PVRB,影响参与者选择的能力会导致出现攻击,攻击者可以从未来的多个选项中进行选择,一次选择下一个或多个腐败的参与者,以在决策中提供更大的份额。 使用PVRB可识别这些类型的攻击。


扩展和负载平衡


PVRB在减少工作量和扩大支付规模的任务中也可以带来很大的好处。 对于初学者来说,阅读Rivest的文章 “作为小额支付的电子彩票”是有意义的。 一般的本质是,您可以玩一个诚实的彩票,奖金为1美元= 100c,而不是从付款人向接收者进行1c的付款,在这种情况下,付款人将他的100张“彩票”中的一张在1c中转给银行。 这些票中的一张赢得银行1美元,而收件人可以将这张票固定在区块链上。 最重要的是,其余的99张票证将通过专用通道以任何所需的速度在收款人和付款人之间转移,而无需任何外部参与。 在Emercoin网络中可以找到基于此方案的协议的详细说明。


该方案存在几个问题,例如,接收者在收到中奖彩票后可能会立即停止为付款人提供服务,但是对于许多特殊应用(例如按分钟计费或服务的电子订阅),可以忽略它们。 当然,主要的要求是彩票的诚实性,PVRB是绝对必需的。


随机参与者的选择对于分片协议也非常重要,分片协议的目的是水平扩展区块链,允许不同的BP仅处理其交易范围。 这是一项极其困难的任务,尤其是在合并分片时的安全性方面。 如共识算法那样,诚实地选择随机BP以便将其分配给负责特定分片的人员也是PVRB的任务。 在集中式系统中,分片由平衡器分配,他仅根据请求计算哈希并将其发送给必要的执行者。 在区块链上,影响此分配的能力可能导致对共识的攻击。 例如,交易的内容可以由攻击者控制,攻击者可以控制哪些交易属于他控制的分片并操纵其中的区块链。 在这里可以找到有关在以太坊中使用随机数进行分片的问题的讨论
分片是区块链领域最雄心勃勃,最严峻的任务之一,其解决方案将使您能够构建性能和数量均极高的去中心化网络。 PVRB只是解决此问题的重要措施之一。


游戏,经济协议,仲裁


很难高估随机数在游戏行业中的作用。 对于分散的网络来说,在网上赌场中的明确使用以及隐含在计算玩家的行动效果方面都是非常困难的问题,因为分散的网络无法依靠集中的随机性来源。 但是,随机选择可以解决许多经济问题,并有助于建立更简单,更有效的协议。 假设在我们的协议中,关于为某些廉价服务付费的争议,而且这些争议非常少见。 在这种情况下,如果存在不可否认的PVRB,则客户和卖方可以就争议的随机解决达成协议,但要具有一定的概率。 例如,客户获胜的概率为60%,卖方获胜的概率为40%。 从第一个角度来看,这种荒谬的方法允许人们以准确可预测的赢/输份额自动解决争端,这适用于双方,而无需任何第三方的参与和不必要的时间浪费。 此外,概率比可以是动态的,并且取决于某些全局变量。 例如,如果一家公司运作良好,纠纷数量少且获利能力高,那么该公司可以自动将解决纠纷的可能性转向以客户为导向的问题,例如70/30或80/20,反之亦然,如果纠纷花费很多钱,并且欺诈或不足,您可以将概率转移到另一个方向。


大量有趣的去中心化协议,例如令牌管理的注册表,预测市场,绑定曲线,以及许多其他的经济游戏,会奖励良好行为和精细不良行为。 他们经常遇到安全问题,相互抵触的保护。 受数以十亿计的代币的“鲸鱼”(“巨额股份”)保护免受攻击的事物很容易受到成千上万个余额很小的帐户(“ sybil股份”)的攻击,并且针对一种攻击所采取的措施(例如,为了防止此类攻击而创建的非线性佣金)为了使大块的牛排不利,通常会因另一次攻击而声名狼藉。 由于这是一个经济博弈,因此可以预先计算相应的统计权重,并简单地用具有适当分布的随机佣金代替佣金。 如果区块链具有可靠的随机性来源并且不需要任何复杂的计算,则这样的概率佣金将非常简单地实现,从而使鲸鱼和西比勒鱼的生活变得困难。
有必要继续记住,在此随机化中对单个位的控制使您可以作弊,减少和加倍概率,因此诚实的PVRB是此类协议中最重要的组成部分。


在哪里找到正确的随机数?


从理论上讲,分散网络中诚实的随机选择为几乎任何防止共谋的协议提供了可证明的安全性。 基本原理非常简单-如果网络在0或1位上达成一致,并且参与者中不到一半是不诚实的,那么经过足够的迭代次数,可以保证网络以固定的概率就该位达成共识。 仅仅因为诚实的随机抽样会在51%的案例中从100名参与者中选择51名。 但这是理论上的,因为 在真实网络中,要确保像文章中这样的安全级别,它需要主机之间的大量消息,复杂的多遍加密技术,并且协议的任何复杂性都会立即增加新的攻击向量。
这就是为什么我们还没有在区块链中看到经过验证的PVRB,而该PVRB已经有足够的时间用于真实应用,多次审核,负载以及当然是真实攻击的测试,如果没有它们,很难称其为真正安全的产品。


但是,一次有几种有前途的方法,它们在许多细节上有所不同,其中某些肯定会解决问题。 利用现代的计算资源,密码学理论可以非常熟练地转化为实际应用。 将来,我们将很乐意谈论PVRB的实施:现在有几种,每个实施都有自己的重要属性和功能,每个都有一个好主意。 参与随机活动的团队并不多,每个团队的经验对其他人都非常重要。 我们希望我们的信息将使其他团队在考虑其前任经验的基础上更快地行动。

Source: https://habr.com/ru/post/zh-CN448330/


All Articles