paint-brush
确保不可预测的情况:Web3 游戏中的随机数技术经过@felixarpa
1,065 讀數
1,065 讀數

确保不可预测的情况:Web3 游戏中的随机数技术

经过 Felix Xu6m2024/01/16
Read on Terminal Reader

太長; 讀書

在本文中,我们将探讨随机性在 Web3 中扮演的角色、是否有可能击败随机数生成器 (RNG),以及如何破解 RNG。
featured image - 确保不可预测的情况:Web3 游戏中的随机数技术
Felix Xu HackerNoon profile picture
0-item

每个玩家都想战胜困难。但实际上很少有人这么做。您是否想过如何打败赌场的老虎机?或者说如何在靠运气的Web3游戏中取胜?在本文中,我们将探讨随机性在 Web3 中扮演的角色、是否有可能击败随机数生成器 (RNG),以及如何破解 RNG。


在浩瀚的 Web3 领域,随机性不仅仅是偶然。它是各种场景中的关键元素,影响从游戏体验到关键区块链功能的结果。

随机性在 Web3 中发挥作用的地方

在 Web3 中,随机性是影响各个方面的基本力量。一个突出的领域是游戏领域,在特定位置揭开稀有游戏内物品的机会取决于随机数生成器的机制。


这些随机遭遇通常决定了玩家击败对手后的奖励体验。


彩票是随机性的典型例子,需要一个明确透明且可验证的随机过程,尤其是在公平和开放至关重要的 Web3 生态系统中。如果没有,抽签可能只对特定群体或球员有利。


此外,通过 RNG 随机选择区块生产者在某些第一层区块链中至关重要。如果这个选择过程缺乏可验证的随机性并表现出可辨别的模式,区块生产者可能会利用这一点来发挥自己的优势,战略性地生产符合其利益的区块。此类行为损害了网络的安全,凸显了真正随机和公正的选择机制在 Web3 区块链操作中的关键作用。


虽然随机性在 Web3 游戏和自治世界中发挥着如此重要的作用,但区分伪随机数生成器 (PRNG) 和真随机数生成器 (TRNG) 至关重要,伪随机数生成器使用可以生成可预测模式的算法,而真随机数生成器则使用物理过程为了更高的安全性。 Web3 中的大多数 RNG 漏洞源于 PRNG 的确定性本质。

为什么可以预测随机数

由于 PRNG 中的特定漏洞和模式,预测随机数是一项看似合理的壮举。如果生成器的初始种子(起点)和状态(当前条件)已知,PRNG 的生成过程遵循可以利用的模式。


让我们更深入地了解“种子”和“状态”在这种情况下的含义。种子是一个关键输入,启动随机数生成过程。它可以是像当前时间一样简单的东西。状态是指生成器的当前状况,它随着生成的每个数字而演变。因此,如果您知道初始状态,您就可以预测接下来的整个数字序列。这种确定性性质在需要高安全随机性的场景中带来了重大风险。


RNG 的运作方式


此外,使用集中式 RNG 源会带来额外的漏洞。集中式系统成为单点故障,使其成为恶意攻击的主要目标。历史事件表明,暴力攻击可能会损害这些系统。


攻击者可以用大量随机猜测淹没中央服务器,并进行增量调整来微调他们的预测,最终提高猜测下一个生成的随机数的准确性。


这些漏洞强调了在各种应用程序中需要更安全和去中心化的 RNG 解决方案,特别是在数据完整性和随机性至关重要的 Web3 领域。

利用 RNG 漏洞:理论方法

通过假设检验寻找种子

利用 RNG 的第一步是发现种子,这是数字生成的起点。这个过程涉及制定和测试有关潜在种子来源的各种假设。例如,如果种子的假设是 RNG 运行的时间,那么在一致的时间生成数字并分析输出的模式可以证实或反驳该假设。可以应用先进的统计技术来检测可能不会立即显现的微妙模式,从而提高种子预测的准确性。


状态分析和逆向工程

除了识别种子之外,了解 RNG 算法内的状态转换也至关重要。通过分析状态如何随着生成的每个数字而变化,可以对 RNG 算法进行逆向工程。该方法涉及复杂的数学和计算技术,包括算法分析和潜在的密码逆向工程,具体取决于 RNG 的复杂性。


利用机器学习进行模式识别

机器学习是人工智能 (AI) 的一个子集,擅长破译大型数据集中的复杂模式。此功能超出了简单的模式识别范围,使算法无需显式编程即可学习和适应。一个突出的例子是谷歌的 AlphaGo。这个人工智能系统接受了棋盘游戏围棋的训练,通过学习大量的游戏数据掌握了围棋,最终通过预测世界冠军的走法超越了世界冠军。


该原理直接适用于分析 RNG 输出。机器学习算法可以处理 RNG 生成的大量数字数据集,以检测潜在模式,包括通过传统分析方法可能不明显的细微不规则性和算法重置。


通过在足够大的数据集上进行训练,机器学习模型可以识别这些 RNG 的循环性质,包括它们的重置点和输出模式。了解这些模式可以预测并可能操纵未来的 RNG 输出。当 RNG 用于可预测性可能导致安全漏洞或不公平优势的环境(例如游戏或加密应用程序)时,此功能尤其重要。


摄影:米格尔·阿。帕德里南:https://www.pexels.com/photo/dominoes-585293/


密码分析

RNG 的密码分析是一种多方面的方法,涉及仔细审查其密码设计和实现的各个方面。这个过程从对熵源的彻底检查开始,熵源是随机性的原材料。熵的质量、它的收集方法以及收集的速度是至关重要的因素;低质量的熵或可预测的收集方法可能会削弱 RNG 的输出。


接下来,检查密码算法本身对已知攻击的抵抗力。这包括统计分析以检测随时间推移出现的任何偏差或模式,以及针对已知的密码分析技术(如差分密码分析或线性密码分析)测试算法。这里的目标是确保算法不会产生受到种子或状态的某些位不成比例影响的输出。


此外,RNG 在软件或硬件中的实现可能会引入额外的漏洞。这部分分析涉及代码审核,以查找可能损害随机性的错误或疏忽。攻击者可以利用熵混合不足、状态变量的可预测增量或播种不当等缺陷。密码分析还扩展到 RNG 的操作环境,检查定时攻击或功率分析等旁路漏洞,攻击者可以通过观察系统的间接特征来推断内部状态。

可验证随机且防篡改的 RNG

当 Randcast 适配器合约收到来自 DApp 或 Web3 游戏的随机性请求时,该过程开始。然后,它启动 BLS-TSS(Boneh-Lynn-Shacham 阈值签名方案)任务,将链上事件发送到 ARPA 网络,该网络由多个能够执行这些任务的节点组成。


网络确认此事件并完成任务,随后将签名作为随机种子返回到 Randcast 适配器合约。然后,该种子会转换为所需的随机类型(无论是掷骰子、洗牌数组还是任何其他形式),并在后续 DApp 或 Web3 游戏逻辑中使用。


Randcast 有何不同

Randcast 的方法在可靠随机性至关重要的场景中尤其重要。在区块链的确定性环境中,智能合约的结果取决于输入,可以轻松操纵生成随机数。例如,使用区块哈希或时间戳作为随机源可能会被矿工利用以谋取利益。 Randcast 通过去中心化网络生成随机数来规避这个问题,确保过程的透明度和可验证性。


Randcast 设计的一个重要方面是其抗篡改能力。传统的单实体随机性生成存在被操纵的风险。 Randcast 通过利用 ARPA 网络的集体能力来规避这个问题。通过 BLS Threshold 签名任务,确保任何单个节点都无法影响最终的随机性结果。这种去中心化的方法不仅增强了安全性,而且维护了生成的随机性的完整性和公正性,使 Randcast 成为 Web3 开发人员武器库中不可或缺的工具。


参考链接