以太经典(ETC币)|EthereumClassic,新一代数字货币

随机数与区块链

2021-07-30 17:12栏目:区块链
TAG:

随机数是一个尤为重要的密码学定义,日前MYKEY研究部门负责人姚翔老师做客PlatON社区,参加社区快闪活动,为社区解说随机数概念与区块链中随机数策略及有关应用。

在参与抽奖或抽样的过程中,大家常常听到“随机数”这个词。随机数在密码学中有着很基础且要紧的地位,常用于密钥和安全参数生成。而在日常,随机数也是保障公平性的要紧方法,广泛应用于抽样、抽签、抽奖等场景当中。随机数在区块链中也应用广泛,除去密钥生成等传统安全场景,在共识机制、零常识证明等热点场景中也发挥着要紧有哪些用途,保护着区块链的安全。

然而,在实质的应用当中,因为对随机数的理解不到位,达成不严谨,引发了很多的安全风险事件。索尼、YubiKey等知名企业都曾出现过随机数生成器的紧急缺点,不能不紧急进行固件更新,虽然没导致毁灭性后果,但导致的损失也难以评估。而在区块链上,因为开奖随机数可被预测,在近两年里直接导致了成百上千万资产的损失,可以说“历史总在重演”。

看起来容易的随机数这样要紧,又引发这么多问题。研究和开发职员需要理解它的原理和细则,才能防止在应用过程中犯了错误。

那样,啥是随机数?如何判断随机数的水平呢?在区块链中通常生成随机数的办法又有什么?

啥是随机数?

第一大家来讲随机数是什么。随机数并非一个具体的数,而是在通过随机数生成器产生的一个或一组数的序列。这个序列所能出现的元素来自确定的集合,每次选出的元素不可预期,但元素出现的概率恒定的(通常是等概率的)。譬如说扔一枚六面均匀的骰子,结果不可预期,但每一个面的概率都是相等的,每次掷出的结果就可以作为一个随机数生成的办法。

真随机数通常来自物理世界的随机行为,需要进行噪声搜集,而在计算机科学中,通常用确定性的算法来模拟随机数的生成,也称伪随机数。对伪随机数的测试尤为重要,全方位、完备的测试可以防止算法缺点或人为后门导致的风险。现在常见的随机数测试标准有 NIST SP 800-20和GB/T 32915-2021 等。

需要补充的是,在NIST这份标准提供的参考达成中,就曾被怀疑植入过后门。

Dual_EC_DRBG,现在该推荐达成已经被删除。而在马上召开的密码学要紧会议Crypto 2021中,也有一篇对NIST CTR-DRBG这个随机数生成器的安全剖析,指出了其缺点并给出了修复办法。而在会议同意的论文里,研究随机性有关问题的论文多达6篇。这都说明随机数的问题并不容易,也粗心不能。

随机数与区块链

在区块链中,因为较难从物理世界中获得随机噪声,生成随机数的困难程度更大。

现在普通的思路是通过几种不同方案组合用:一是通过多方协同生成;二是通过哈希函数等随机预言机引入随机性;三是通过承诺-揭示协议减少参与方作弊可能;四是引入门限协议或经济约束提升产生随机数的成功率。

多方协同产生指的是随机数的生成依靠多个参与方的输入,如此随机数就较难被单方操纵。

因为每一个输入方的输入可能具备非常强的规律性,随机性不足。需要用随机化的函数,比如哈希函数对输入进行处置。可以将所有参与方的输入作为函数的输入参数,输出的结果作为随机数。

承诺-揭示协议主如果为了防止参与方作恶,参与方需要先将自己想输入的结果做一个承诺,通常也是通过哈希函数完成。承诺发布之后,参与方的输入就不可以再修改了,但应该注意的是,他仍然可以选择不把承诺揭示。

引入门限协议,通过秘密共享或门限签名的方法,可以防止随机数生成策略由于一个参与方没完整实行步骤而失败,拥有肯定的容错性,提升随机数产生的成功率。引入经济约束,可以防止参与方通过拒绝揭示的方法影响随机数结果,对恶意的参与方进行惩罚。

安全多方计算技术正是产生高水平的链上随机数的要紧基础技术。运用安全多方计算技术,可以让多方不可抵赖地协同生成随机数。PlatON基于安全多方计算技术可以更好地为链上随机数提供解决方法。