本文简单分析一下ietf-vrf方案的实现原理。
所谓VRF就是指给定一个消息和一个私钥,可以计算出一个唯一确定的值,这个值唯一确定且不可预测,且可以验证。
传统的签名算法不具有唯一确定的特性,私钥持有者可以计算出多个合法解。
前置技能树:需了解椭圆曲线的基本运算法则。
1. 简单的多项式:
t = ( r − s ∗ k ) m o d p t = (r - s * k) \bmod p t=(r−s∗k)modp
这个等式就是普通的整数运算,r
,t
,s
,k
,n
均为大整数,p
为常量。
k
为私钥,r
为随机数,二者不可泄露。
2. 椭圆曲线上的多项式
把上面的等式和椭圆曲线的基点 G G G相乘,可以得到下面的等式:
T = t ∗ G = ( r − s ∗ k ) ∗ G = r ∗ G − s ∗ k ∗ G = R − s ∗ K \begin{aligned} T &= t*G \\ &= (r - s * k)*G \\ &= r*G - s*k*G \\ &= R-s*K \end{aligned} T=t∗G=(r−s∗k)∗G=r∗G−s∗k∗G=R−s∗K
小写字母为整数,对应的大写字母为该整数映射到曲线上的点
当选取不同的基点 G x G_x G<