查看原文
其他

比特币史话·92 | 随机(6): 可验证随机性

刘教链 刘教链 2023-01-30

(库尔特·哥德尔,数学家、逻辑学家和哲学家。图片来源于网络)
前情回顾:
比特币史话·87 | 随机(1): 真伪随机数
比特币史话·88 | 随机(2): 脑钱包
比特币史话·89 | 随机(3): 破解索尼
比特币史话·90 | 随机(4): 香农熵
比特币史话·91 | 随机(5): 生日攻击

正文:

计算机中的随机数函数,通常叫做random或者rand,由于是确定性算法,因而只能产生伪随机数。这些随机数函数所产生的的结果的随机性将取决于外部给它的随机性,比如通过所谓的“种子”参数。一旦知道了种子,它所计算出来的随机数序列就是确定性的。这种伪随机数序列,表面上看起来没有什么规律,而且统计上可以很好的符合预设的分布,因而可以广泛用于统计模拟等对于随机性的安全性要求不高的场景,但若误用在安全性要求严格的密码学应用场景中就会发生灾难性的严重后果,在实践中造成几千到几亿美元不等的损失。

在密码学上,随机性是非常重要的,无论是资产控制私钥的安全性,还是椭圆曲线数字签名算法的签名过程安全性,都需要良好的随机数。因而密码学安全的随机数,比用于统计模拟的随机数,对随机性的要求就要更高、更严格。考虑起来,其分布需要均匀,且不可被操纵导致出现分布偏差,其发生不可预测,每次发生之间保证良好的独立性。在密码学里,我们把这种随机数(的来源)叫做“高阶最小熵”(high min-entropy)。其要求统计学上“均匀分布”的“独立同分布”(Independent and identically distributed, i.i.d.)。

比如扔一个两面均匀的硬币的最小熵是以2为底2的对数,等于1比特,扔一个6面均匀骰子的最小熵以2为底6的对数,等于2.585比特,而大家知道的比特币私钥的长度是256比特,足够强壮的私钥其最小熵应该可以高达256比特,也就是黑客随便猜一下只有2的256次方分之一的概率能猜中,这么高的最小熵就叫做高阶最小熵,意思就是非常非常不容易被猜中。

计算机随机数函数的伪随机数算法是确定性算法(受停机问题约束),因而并不能为结果增加最小熵,也就是说,其输出结果的最小熵等于输入的最小熵。如果输入被人为控制或猜中,那么输入的熵就减小到0,结果也就完全在黑客的预料之中了。

很多安全研究人员会说,“区块链的世界没有真正的随机数”,甚至更进一步的,“计算机的世界没有真随机数”。

如果我们深入思考一下就会发现,“随机性”和“可验证”其实是相互矛盾的。出块节点声称的真随机数其他节点和用户完全无法验证。如果不可验证,就意味着其他节点和用户需要无条件信任出块节点的随机数是真的,这又和区块链非信任模型相矛盾!

这就是比特币系统中第三处随机性发挥关键作用的地方,对于分散全球的上万甚至未来十几万出块节点的去中心化随机选择问题。与前两处私钥和签名均需要外部随机源不同,这一处随机性是内源性的、系统自发的、涌现出来的结果。这一处去中心化涌现的随机性,替代掉了传统共识协议中领导节点选举的方案,是解决比特币去中心化记账共识问题的“题眼”,是打开比特币通向去中心化货币大门的“钥匙”。在这里,比特币不仅解决了计算机无法产生密码学安全的随机数的问题(单独解决这一问题可以像前两处那样引入外部熵源,但其他人无法验证其真实性),并且成功解决了“随机性”和“可验证”的矛盾。

让我们仔细考察一下比特币的全球一万多个出块节点的随机选择问题吧。我们会惊奇地发现:

1、比特币系统没有办法禁止节点操纵任何它能够操纵的输入,包括但不限于时间戳恶意改写、交易集刻意选择、nonce是不是特意选择的,以及,伪造随机数,等等。
2、比特币系统不要求节点安装特别的随机数硬件。
3、比特币系统不需要依赖外部的随机数提供接口。
4、比特币系统不需要一个中心的、权威的随机数发生节点。
5、比特币系统的代码和数据完全公开,人人可见。

然而,比特币系统实现了对于出块节点的公平、公正、公开的随机选择,这一选择结果透明上链任何人都可以验证,并且其分布情况与算力的分布相一致。

也就是说,如果我们把整个比特币系统看作一个函数:VRF(区块高度) = 出块节点,那么这个函数VRF有一个很奇妙的特点,那就是,在没有被“看见”的时候,它的结果是真随机的,而一旦被“看见”,随机性就会迅速“坍缩”成为一个确定的结果,而且这个结果可以被其他节点独立验证。了解过量子力学的朋友此刻脑海中可能会浮现出“薛定谔的猫”的场景。那么这里的“看见”,则是后续出块节点通过新区块不断加持和见证的过程。

我们把这个VRF函数叫做“可验证的随机函数”(Verifiable Random Function)。这个函数的奇妙特点是,结果未产生时具有充分随机性从而无人可以预测,一旦产生则可以公开记录下来被任何人反复确证,这种“薛定谔随机性”才是最适合区块链的随机性。

并且这个随机性是足够“真”的。因为如果它可以被“拉偏”,那么操纵者就可以获得出块的极大优势,进而赚取超额的比特币奖励!显然,比特币已经如此值钱的情况下,这一情况并未发生。非不愿也,实不能也。

那么随机性的来源到底在哪儿呢?比特币系统自发涌现出的、去中心化的、用于选择出块节点的真随机性,恰恰就是诞生于竞争性挖矿,也就是耗费电力和算力寻找工作量证明(PoW)的过程。可以说,比特币去中心化的安全随机性,正是PoW共识机制的结果。挖矿所用的双层SHA-256哈希函数不会增加任何随机性。随机性的来源是无需许可的(permissionless)自由竞争。

任何对这一共识机制的弱化和放弃,都将减少熵的导入,进而弱化安全随机性,以及因此而带来的中心化依赖程度的增加又会增加系统脆弱性。

这一必然性由计算机的停机问题所限定,并在数学上,最终由哥德尔不完备定理所约束。

任何试图减少PoW对能量消耗的设计,都会给系统增加确定性,并节省黑客尝试攻破随机数的代价,从而给予黑客更多的时间和空间来完成破解。

PoW本质上是一个映射函数,把物理世界的热力学过程映射成数字世界的比特过程,是一个连接两个世界的“虫洞”。

黑客无法逆转物理世界的热力学第二定律,也就无法逆转数字世界的比特过程。只能重演,不能反演。这也正是时间之矢的单向性。

去中心化的随机性,以及去中心化的时间之矢,这两点正是比特币系统中深藏不露的秘密武器,也是比特币自发明十几年以来其他竞品始终无法超越的高度。

【未完待续】(公众号:刘教链)

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存