随机性在日常生活中扮演着重要的角色,虽然随机性看起来非常明显,但创建随机性实际上具有惊人的挑战性。所需的随机性程度取决于所使用的应用程序。较弱形式的随机性可用于简单的应用程序(如从列表中随机选择音乐曲目),而许多加密应用程序需要更高程度的随机性。创建随机性就是生成和使用随机数的过程。
随机数应用广泛
随机数在生活中应用广泛,彩票、竞猜、车牌摇号、股票打新、抽奖等都需要用到随机数。一个好的随机数应该是安全的(Secure)、公平的(Equitable)、不可预测的(Unpredictable)。然而常见的随机数都是经过公式和程序计算而来,无法实现真正意义上的安全和不可预测。
传统随机数黑客攻击频发
除了现实生活之外,开发程式也经常需要使用随机数。目前活跃度较高的几个公链上存在为数众多的竞猜类DAPP。竞猜类游戏的逻辑就是生成无法预测的随机数,玩家公平竞猜。安全的随机数生成器可以保证所有玩家在游戏中的竞猜是公平的,玩家的获胜概率也是相同的。但是近期多个EOS和以太坊平台DAPP因为随机数生成漏洞被黑客攻击,如EOS的Luckyos、EOS.Win、EosDice,Dice3D,以太坊上的Fomo3D等,造成巨大的损失。
传统随机数是中心化的,易被操纵
在以区块链为代表的去中心化公共账本提出之前,数据都是私有的,中心化的。因此在此之前的随机数发生器也都是中心化的。目前来看,以太坊和EOS都没有办法提供原生的随机数生成接口,并且单纯使用基于链上数据编写的伪随机数生成器都有可能被攻击。以太坊官方推荐使用Oraclize (第三方的oracle 服务)来产生随机数,但去中心化的区块链要依赖中心化的第三方提供随机数,完全就是本末倒置,而且Oraclize取到的随机数是中心化的,如何确保Oraclize不作弊,如何保证其信任度都是巨大的挑战。对于EOS,官方还没提供或者推荐较好的随机数获取方案。
Unpred分布式随机数,不可操纵,不可预测
Unpred近期推出分布式随机数算法和生成方案,为计算机IT领域的首次,促进了底层技术的发展。Unpred的关键技术在于把当前计算机硬件发展成果与传统区块链技术相结合以生具有高可靠性的随机序列。在整体架构上,采用了一种公链和许可链的混合方案。许可链部分由多个超级节点共同维护分布式随机序列生成链。这些超级节点需要运行一个特殊的安全硬件,如 Intel SGX。 超级节点生成随机序列并在许可链上达成随机序列共识。
对于许可链,超级节点拥有一个安全的 TEE (Trusted Execution Environment) 特权区域。即使黑客物理接触该区域也无法获得其中的保密信息,即共享秘钥。TEE 特权区域只负责生成随机序列并通过密码算法承诺、签名、加密的方式传输给上层。许可链使用密码学工具可验证的随机数以实现共享秘钥更新,为随机序列的生成提供一个可验证的基础。将共享秘钥封装在硬件 TEE 中,使得常规的窃听方式无法获取其任何状态。
据悉,Unpred的分布式随机数算法方案,由中日美等国际一流的概率量化、计算机算法、硬件领域专家团队领衔,方案融合改进了多个图灵奖成果,如对两方Diffie-Hellman密钥交换协议进行扩展为多方Diffie-Hellman密钥交换协议,使得各个超级节点能够逐个保密的加入到随机数的共同生成过程,最后输出达成共识的分布式随机数。
Unpred首推的分布式随机数算法创新性非常高,实现过程也相当复杂,离实际使用尚需时间。据了解,Unpred正在积极努力的开展研发,预计在今年内会推出测试使用产品,让我们拭目以待。