本文首发公众号 VenusBlockChain,关注公众号后可免费阅读!VenusBlockChain 致力于区块链技术研究,传播区块链技术和解决方案、区块链应用落地、区块链行业动态等。

1.VRF是什么

可验证随机函数(Verifiable Random Function,VRF)是一种将输入映射为可验证的伪随机输出的加密方案。首先,VRF所得是一个随机数,其次由于包含生成者的私钥签名,验证者可以通过公钥确定随机数的合法性。VRF具有三大特性:可验证性、唯一性和随机性。

值得注意的是,在分布式网络中,VRF无法完成固定数量的抽签任务,原因是VRF的一个Input是节点私钥,这使得每个节点产生的随机值均不相同,全网只能验证结果是否合法,但无法设计统一的标准使得某个随机结果唯一性地符合某个条件。

2.引入VRF的优势

优势一:防攻击

在VRF出现之前,为了满足选举信息的可验证,通常采用公开的信息作为输入,通过公开的随机函数得出随机结果,以随机结果作为依据进行抽签。由于所有信息均为公开,故所有节点都可以在本地计算出抽签结果。但是,上述抽签方案有一个很大的问题:攻击者有一定的时间窗口能够预测出抽签结果,及时对被选举人实施攻击。

VRF很好地解决了这个问题:由于使用节点私钥作为Input,VRF的结果无法被预测。其它节点只有通过网络接收到随机结果后才能对其合法性进行验证,即攻击者在得知选举结果时,选举人已经做出行动了。

(1)VRF的输出值除了随机值外,还包含一个proof,提供了随机值验证的零知识证明,即不必知道某人私钥即可证明该随机值是由某人产生的。

(2)使用VRFs的方式,矿工只需要公布自己的R表明自己的出块权,当出完块的时候再公布P,那么攻击者就无法在出块之前知道谁具有出块权,因此也就无法实施针对性的攻击。

优势二:低能耗

VRF基于可验证随机选点的抽签,抽签过程不需要与其它节点通信,直接在本机就能够的到这个抽签结果,不需要节点之间来回确认,而且其它节点能够依据抽签信息和附带的证明来验证另一个节点是否为Leader节点(准确的说是验证抽签输出的随机数的正确性)。

优势三:抽签结果唯一性与防伪造抽签结果

由于使用节点私钥作为Input,针对同一个输入而输出value是固定的,因此无法通过多次尝试来改变抽签结果。验证抽签结果时利用私钥对应的公钥来进行验证,因此这个抽签结果是无法被伪造的。

3.基于椭圆曲线的VRF实现


4.VRF应用-密码抽签技术

密码抽签是一种在分布式网络中,通过去中心化的方式,利用密码学技术完成可信、可认证的抽签选举的技术。图灵奖得主 Sivio Micali 的 Algorand 区块链协议将密码抽签技术运用到了区块链中。在 Algorand 中,系统需要创建并不断更新一个参数,称为种子,种子不可能被攻击者顶测,也不可能被其控制。在每一轮共识过程中, Algorand 根据种子公布一个可验证的随机函数( verifiable random functions ,简称 VRF )。每个用户利用自己的私钥执行 VRF ,得到一个对应的凭证。凭证满足一定条件的用户被认定为此共识轮的验证者,每个验证者完成一个区块,并随自己的凭证一起公布。此轮中,凭证的字典序最小的验证者被认定为领导者。最后,所有的验证者针对领导者的区块运行拜占庭协议。密码抽签在区块链中的应用主要有以下优势。

  • VRF 的随机性质决定了验证者和领导者的选举过程很难被预测和操纵;
  • 验证者的选举过程是秘密进行的,只有当用户公布自己的凭证时才能证明自己的验证者身份,但是此时区块信息已经公布,即使攻击者可以瞬间腐化验证者,但是公布的区块信息已经不能撤回;
  • 领导者的产生是在所有的验证者公布自己的凭证后,通过比较产生的,可以认为是公共选举产生。

5.VRF应用-Leader选举[11]^{[11]}[11]

(1)在共识节点群中的所有节点执行Leader抽取算法,算法输入输出为(r,proof,result)=VRF_Result(s,SK),s是Leader抽取算法的种子,可以利用当前节点的公钥的散列值作为种子,SK是节点自己的私钥。

为了确保VRF结果无法被预测,需要在seed中植入无法被预测且难以被篡改的值,比如最近一次的区块哈希值,或者区块高度。

(2)节点根据result判断自己是否Leader节点。判断依据:依据r计算抽取结果并与阈值比较,其中hash函数为sha256密码杂凑算法,hashlen是sha256算法的输出长度,如果hash(r)2hashlen>λ\frac{hash(r)}{2^{hashlen}} > \lambda2hashlenhash(r)​>λ,返回(r,proof,yes);否则返回(r,proof,no)。

(3)如果判断自己为Leader,就以channel为单位广播抽签结果,广播消息内容(r,proof,bool,node_name)。

(4)其它节点收到消息后,验证随机数的合法性且是否满足阈值条件。验证函数result = Verify(s,r,PK)。继续验证是否满足阈值条件,如果resultresultresult与hash(r)2hashlen>λ\frac{hash(r)}{2^{hashlen}} > \lambda2hashlenhash(r)​>λ都为True,返回yes,否则返回no。

6. 往期回顾

数字签名系列

  • 图解 ECDSA 签名与验签基本原理
  • 图解 BLS 签名与验签基本原理
  • BLS 签名理论原理和工程实现
  • 基于 RSA 的实用门限签名算法
  • 门限密钥共享技术原理
  • 隐私保护利器之环签名实现原理
  • 多重签名 MultiSig:Schnorr 协议与 ECDSA 协议
  • Schnorr 协议:零知识身份证明和数字签名

智能合约隐私计算

  • 智能合约隐私计算:开篇
  • 智能合约隐私计算:同态加密应用举例
  • 智能合约隐私计算之再谈Paillier同态加密算法
  • 智能合约隐私计算之基于FO承诺的零知识证明

密码学承诺系列

  • Pedersen commitment
  • FO commitment

同态加密系列

  • 智能合约隐私保护技术之同态加密

安全多方计算系列

  • 基于同态加密体制的安全多方计算
  • 基于可验证密钥共享体制的安全多方计算

7. 参考资料

[1] Algorand论文1: Algorand: Scaling Byzantine Agreements for Cryptocurrencies
[2] Algorand论文2: Algorand*:https://arxiv.org/pdf/1607.01341.pdf
[3] VRF论文: https://people.csail.mit.edu/silvio/Selected%20Scientific%20Papers/Pseudo%20Randomness/Verifiable_Random_Functions.pdf
[4] 区块链中VRF应用与原理分析:https://www.odaily.com/post/5133096
[5] IRTF提出的VRF标准草案1:https://tools.ietf.org/html/draft-irtf-cfrg-vrf-06
[6] IRTF提出的VRF标准草案2:https://datatracker.ietf.org/doc/draft-irtf-cfrg-vrf/?include_text=1
[7] Goldberg可验证随机函数(VRF)的实现:https://eprint.iacr.org/2017/099.pdf
[8] VRF抽签与投票的思考:https://zhuanlan.zhihu.com/p/61221662
[9] VRF与Algorand的共识算法:https://www.qukuaiwang.com.cn/news/15426.html
[10] 出块者选择算法:https://m.8btc.com/article/414959
[11] Hyperledger Fabric共识机制优化方案:https://kns.cnki.net/kcms/detail/11.2109.TP.20200103.0929.001.html

可验证随机函数(VRF)原理和应用浅析相关推荐

  1. 对可验证随机函数VRF的简明解释

    因为可验证随机函VRF对设计区块链共识算法有很大帮助,最近就研究了一下VRF,本文随时更新,以分享我对VRF和共识算法的最新理解. 要理解VRF的工作原理,首先要理解哈希函数,这是基础知识,比如SHA ...

  2. 可验证随机函数VRF之Algorand算法

    原文链接:https://zhuanlan.zhihu.com/p/29429006 DFINITY的阈值接力结构与可验证随机函数(VRF)密切相关,VRF算法作为一种基于密码学的新型共识模型被提出, ...

  3. 可验证随机函数 VRF

    可验证随机函数 [30](Verifiable Random Functions,VRF) <基于分片技术的区块链可扩展性研究>

  4. vrf名称_如何使用VRF(可验证随机函数)在以太坊上生成随机数

    Chainlink 如何解决以太坊"随机数问题" 随机数和区块链一直很难达到"一致"(译者注:区块链要求确定性,而随机数正相反).到目前为止,区块链上还没有可验 ...

  5. 区块链知识之 VRF: 可验证随机函数

    区块链知识之 VRF: 可验证随机函数 介绍 可验证随机函数(Verifiable Random Function,简写 VRF)是一种将输入映射为可验证的伪随机输出的加密方案.该方案是由 Mical ...

  6. 密码学小知识(8):可验证随机函数(Verifiable Random Function, VRF)

    可验证随机函数(Verifiable Random Function, VRF),顾名思义是一种具有可验证性和随机输出的一种函数,看名字大概也能理解. 一.通俗理解VRF 通俗理解为:以私钥sksks ...

  7. 区块链新一代共识算法:VRF分布式可验证随机函数

    背景 共识分代 假设一个小岛,没有法币,由101个对等的没有隶属关系的记账人来记录小岛的经济活动(也就是所谓去中心化记账).这样的设计,冗余性应该非常好,某个记账人出问题了不影响整个系统,最大的麻烦是 ...

  8. Google账户两步验证的工作原理【转】

    最近在考虑一些用户登录验证的问题,现阶段在涉及到一些交易时,基本上都使用的是短信验证码验证,但有朋友说,有些时候短信验证码会出现延时,不及时.于是就看了一下Google Authenticator(c ...

  9. 观察验证交换机工作原理

    ** 观察验证交换机工作原理 ** 实验原理: 研究数据链路层 交换机的工作原理 交换机收到数据包,解封装到数据链路层 学习源MAC地址,让它自己的接口一一对应起来 查看目的MAC地址,查看CAM表, ...

最新文章

  1. python字符串find函数实现_python中实现查找字符串的find函数
  2. linux 内核连接跟踪,Linux内核连接跟踪锁的优化分析(1)
  3. 以太主义的创始人维塔利克·布特林(Vitalik嫩模 Butlin)被称为“V神”
  4. 更改应用程序图标_【iOS12人机交互指南】6.2-应用图标
  5. JavaScript之apply()和call()的区别
  6. Magicodes.IE之导入导出筛选器
  7. 安卓注册手机短信验证码验证的案例-02
  8. c++ 显示三维散点图_【无机纳米材料科研制图——OriginLab 0210】Origin多组柱状图3D柱状图及3D散点图...
  9. Windows下nginx的安装及使用方法入门
  10. Linux的Vim编辑器
  11. linux对某个文件进行操作步骤,实验二 Linux系统简单文件操作命令
  12. Git修改已提交的commit
  13. 2018 ideal 链接数据_利用 IDEA HTTP 请求文件访问 API 接口
  14. DreamScene for Windows 7梦幻桌面使用教程
  15. 解决element el-pagination分页最后一页数据清空了页码显示正确,但是列表为空
  16. 常用应届生Java开发笔试面试题(更新中)
  17. 中科磐云 综合渗透测试
  18. Python 获取中文字拼音首个字母
  19. 阿里云创世纪之盘古传奇
  20. Vector-常用CAN工具 - CANoe入门到精通_01

热门文章

  1. uni-app 关于自定义标题栏时状态栏高度在不同手机的适配问题
  2. opporeno3pro可以刷鸿蒙系统吗,OPPO Reno3 Pro刷机教程,卡刷升级更新官方系统包
  3. NSData转为Int
  4. 我的CSDN五周年创作纪念日
  5. impression
  6. iOS 加载第三方字体
  7. 基于汉明软译码和球型译码的通信链路误码率matlab仿真
  8. kotlin中Activity跳转
  9. 【计算机视觉】有限标签的场景图预测
  10. 为什么苹果内购总是失败_ios内购相关问题被拒总结