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

可验证随机函数(Verifiable Random Function, VRF),顾名思义是一种具有可验证性随机输出的一种函数,看名字大概也能理解。

一、通俗理解VRF

通俗理解为:以私钥 s k sk sk和随机种子 m m m作为输入,输出伪随机数 r r r和该伪随机数的证明 p r o o f proof proof

任何人都可以使用 s k sk sk对应的公钥和证明 p r o o f proof proof来验证伪随机数 r r r,是否是由私钥 s k sk sk持有者算出来的,并且伪随机数、私钥和种子都是唯一确定,任何人都不能根据随机种子和伪随机数推导出私钥。

三大特征

  • 1)可验证性:任何人可以通过 p r o o f proof proof验证随机数 r r r s k sk sk m m m对应的输出;
  • 2)唯一性 s k sk sk m m m不变的情况下,输出的伪随机数 r r r是唯一的;
  • 3)随机性:不给定证明 p r o o f proof proof的情况下,VRF的输出的伪随机数 r r r与另一个伪随机数对于敌手来说是不可区分的。

二、伪随机和真随机

由以上可以看出,都是提到输出的随机数是伪随机的,但是什么是伪随机数呢,为什么不直接叫随机数呢?

通过调研发现,首先要明白随机数需要满足三大特征:

  • 1)随机性
  • 2)不可推测性
  • 3)不可重复性

其次,计算机不会产生绝对的随机数,而只能根据一些特定的算法或规律产生“伪随机数”。而绝对随机的数一般是理想的随机数。

伪随机一般指某件事发生的概率,真随机一般指几率,这两者有所区别。

下面举个例子:

  • 1)伪随机事件:假如有10个人,面前有个箱子,里面有10张卡片,其中2张是中奖卡片,每个人随机抽取一张,不放回。我们知道中奖的概率就为20%,那么第一个人中奖的概率为20%。若他没中,后一个人的中奖概率就变成了22.2%了,以此类推,会随着抽取次数的变化,中奖概率也会变化,因此这是伪随机的。
  • 2)真随机事件:同样这10个人,随机抽取卡片后,放回。无论前面的人是否中奖,而后面中奖的几率还是20%,每个人每次随机抽取的几率都是20%,相互独立,互不影响,这种随机就是真随机的。

三、VRF发展

目前VRF用于区块链中的共识算法比较多,一般有基于RSA困难问题的VRF,和基于椭圆曲线的VRF等。

你可能感兴趣的:(密码学相关小知识,伪随机,VRF,可验证随机函数,随机性)