欢迎关注区块链技术公众号“blocksight”,更多精彩内容!
写在前面
上一节说了基于RSA的VRF实现,继承了RSA算法的简洁性。
本文讲基于椭圆曲线秘钥体制的VRF实现,关于椭圆曲线算法的知识如果不熟悉,可先参考文末“相关阅读”部分。
ECVRF
基于椭圆曲线实现的VRF记为ECVRF,满足可信唯一性,可信抗碰撞性和全伪随机性(trusted uniqueness", "trusted collision resistance", "full pseudorandomness"),关于些安全性要求,在VRF概述章节中均有所介绍。
符号约定
F - 有限域
2n - 域元素字节长度,向上取整
E - F上的椭圆曲线
ptLen - 椭圆曲线点编码成字符串长度
G - E上大素数子群
q - 群G的素数阶
qLen - q的字节长度
cofactor - E曲线点数除q 即谐因子
B - G生成元
suite_string - 标识 ECVRF套件(ciphersuite),包含上述选项参数
SK - VRF私钥
x - VRF秘密整数标量(根据不同的曲线类型,有可能等于SK,也有可能从SK派生)
Y = x*B - VRF 公钥
证明生成过程
方法1: ECVRF_prove(SK, alpha_string)
参数:
SK - VRF 私钥<