VRF
doc
Verifiable Random Functions (VRFs)
基于签名机制,让verifier校验prover拥有某项内容,同时避免hash遍历的问题、字典攻击。典型例如NSEC3/NSEC5/key transparency。
其实校验还是基于pi做的。
VRF Security Properties
Full uniqueness & Trusted Uniqueness
Full collision resistance & Trusted collision resistance
Full pseudorandomness & Selective pseudorandomness
RSA Full Domain Hash VRF (RSA-FDH-VRF)
思路与RSASSA-PSS类似,参考RFC8017
注意 :math::beta_string = Hash(two_string || pi_string)
Elliptic Curve VRF (ECVRF)
思路与EdDSA类似,结合hash_to_curve的基础函数组合处理。
ECVRF_hash_to_curve
ECVRF_hash_to_curve_try_and_increment(Y, alpha_string) 其实就是加一个计数器,参与Y, alpha_string的hash运算,看string_to_point能不能撞到一个valid point。string_to_point的做法参考RFC8032第5.1.3节,string映射到Fp域的x再求解y。
ECVRF_hash_to_curve_h2c_suite(Y, alpha_string) 复用irtf-cfrg-hash-to-curve的设定
ECVRF_nonce_generation
ECVRF_nonce_generation_RFC6979(SK, h_string), 其实就是参考Deterministic ECDSA的做法,基于SK,h_string弄一个PRNG出来
ECVRF_nonce_generation_RFC8032(SK, h_string), 其实就是参考EdDSA的做法…