VRF(Verifiable Random Functions)算法是MIT教授Micali于1999年提出的一个可验证的随机函数。针对的主要问题是,在传统的随机函数中,如果要验证就需要暴露随机函数的种子,举个简单的例子就是,一个带seed的hash函数。如果种子暴露了,那么别人就可以计算所有点上的值,而不只是你想给别人看的那一个点x
。VRF就是提供了这样一个功能,在不暴露种子的情况下,提供一个可验证的随机函数。可以理解为,一个hash函数,不告诉我的种子,但是别人可以验证我的输出确实是输入x
的hash。
在接下来的内容中,简单的分析,如何通过RSA来构建一个VRF的。但是不会涉及任何安全证明,只有构建过程。 [ 原文地址]
1、基本观点
- 如何从VUF( Verifiable Unpredictable Function)构建VRF
- 如何构建一个VUF
2、从VUF到VRF
2.1 From Unpredictability to Pseudorandomness
Proposition 1 (from VUF to VRF)
If there is a VUF with input length a(k) a ( k ) , output length b(k) b ( k ) , and security s(k) s ( k ) , then, for any a′(k)≤a(k) a ′ ( k ) ≤ a ( k ) , there is a VRF with input length a′(k) a ′ ( k ) , output length b(k)=1 b ( k ) = 1 , and security s′(k)=s(k)1/3=(poly(k)×2a′(k)) s ′ ( k ) = s ( k ) 1 / 3 = ( p o l y ( k ) × 2 a ′ ( k ) ) .
假设 f(.) f ( . ) 是一个VUF,我们可以从 f(.) f ( . ) 中构建出VRF f′(.)=<f(.),r> f ′ ( . ) =<