原文链接:Algorand Releases First Open-Source Code: Verifiable Random Function
可验证随机函数(Verifiable Random Function),简称为VRF,是一种加密原语,可将输入映射到可验证的伪随机输出。 在1999年,Micali(Algorand的创始人),Rabin和Vadhan推出了VRF。 如今,VRF算法被用在各种加密方案,协议和系统中。
Algorand率先使用VRF进行秘密地加密抽签,以选举委员会来运行共识协议。 这使得Algorand区块链能够实现支持数百万用户所需的规模和性能。 到目前为止,其他区块链项目也在共识协议中使用同样的想法来执行领导者或委员会选举。
在本文中,我们将介绍VRF的基础知识; 并讨论其关键属性如何在Algorand区块链中进行独特和安全的委员会选举,并扩展我们选择在Algorand实施的特定VRF。
VRF语法和属性
VRF算法包含三个步骤:Keygen, Evaluate, and Verify。
- Keygen(r) → (VK, SK). 在一个随机输入上,密钥生成算法产生验证公钥VK和私钥SK对。
- Evaluate(SK, X) → (Y, ⍴). 评估算法以私钥SK和消息X作为输入,输出一个伪随机字符串Y和证据⍴。
- Verify(VK, X, Y, ⍴) → 0/1. 验证算法将验证公钥VK,消息X,输出Y和证据⍴作为输入,当且仅当它验证Y是评估算法在输入SK和X上产生的输出时,输出1。
结论:对于固定密钥对和输入X,VRF产生唯一的伪随机可验证输出。
更具体一点:
- 输出Y是唯一的。 也就是说,对于给定的密钥对(VK,SK)和输入X,不可能找到另一个输出(连同有效的证明)。
- 输出Y是伪随机的,这意味着它对任何没有看到相关证明的第三方看起来都是“随机的”。 (注意,给出证明⍴,通过调用验证算法并检查结果,很容易将Y与随机输出区分开来)。
- 即使用户故意选择了特定的密钥对(VK,SK),上述属性也应该成立。
值得注意的是,虽然VRF类似于签名方案,但它具有至关重要的区别:
a)在签名方案中,对于给定的输入可能存在许多可能的有效签名,并且
b)整体上签名是不可预测的,但是一些签名位可能是高度可预测的。 VRF输出满足更强的伪随机性。
Algorand区块链中使用VRF
回想一下,Algorand区块链的核心是一个快速的拜占庭共识协议。 但是,它不在网络中的所有用户之间执行共识协议, 相反,它仅限于每轮从用户中随机选举的小型委员会。
现在,Algorand网络中的每个用户都拥有一个私钥SK,而他的验证公钥VK是众所周知的。 参与Algorand网络的每个用户都想确定她是否应该在委员会中为区块r运行拜占庭协议,她需要做以下事情:
- 计算评估(SK,Qr)→(Y,⍴)。 在这里,Qr是一个“魔术”种子字符串,可供系统中的每个人使用。
- 检查Y是否落在某个范围[0,P]内,该范围取决于用户在系统中抵押的资金数量。
如果上述检查通过,则用户持有由(Y,⍴)组成的证明,该证明验证了区块r的委员会成员资格。 给定(Y,⍴)和用户的验证公钥VK,任何人都可以验证Y是有效的唯一输出并且它落在期望的范围内(因此,验证持有VK的用户确实被选择在委员会中服务于区块R)。
通过加密抽签随机自选举小型委员会其他说明:
- VRF的唯一性和伪随机性对于确保没有用户可以通过多个输出Y强行落在她想要的范围内的特性是至关重要的。 VRF的唯一性属性减轻了这种攻击,因为一旦种子Qr固定,VRF功能只能用于产生单个输出。此外,验证公钥VK必须在区块r之前进入系统,此时种子Qr基本上是不可预测的。总而言之,用户不能将输出Y偏置到其期望范围内,这是伪随机性发挥作用的地方。
- 上述计算非常便宜。每个用户只需要执行一次评估函数计算,以确定他们是否被选中在委员会中。 (实际上,计算类似于计算消息的签名)。
- 每轮拜占庭协议都选择一个新的独立委员会。这是可能的,因为Algorand拜占庭协议的独特属性称为玩家可替换性。简而言之,不同的用户能够参与不同轮次的拜占庭协议,而不必传递任何状态。这允许Algorand满足高级别的安全性,允许用户在作为协议的一部分发送的任何消息之后被动态损坏。
其它信息
- Algorand对VRF进行开源,其代码集成进了libsodium.
- Algorand实现的VRF标准文档链接为:https://tools.ietf.org/html/draft-irtf-cfrg-vrf-03
网友评论