1. 程式人生 > >VRF(可驗證隨機函式)快速理解

VRF(可驗證隨機函式)快速理解

理解VRF之前,需要先理解帶祕鑰的雜湊函式,和傳統的雜湊函式不同,帶祕鑰的雜湊函式在計算HASH數值的時候引入了一個不公開的祕鑰,這樣為從明文到HASH數值計算之間添加了一定的難度,這個難度就是由祕鑰引入的。我們簡單的定義一個帶祕鑰的HASH函式為如下的形式:

hash_value=HASH(pri_key, message)

那麼當我們擁有了計算出來的hash_value和資料message,我們需要知道pri_key才可以驗證hash_value是否由message通過HASH函式生成。一般我們知道祕鑰pri_key對於我們資訊保安的重要性。因此現在引出來如下的問題:

  • 對外只暴露pri_key對應的pub_key
  • 在不暴露pri_key的情況下,驗證hash_value和message之間是匹配的

為了實現上面的目的,於是就有了可驗證隨機函式VRF,現在我們一步一步看其實如何工作的:

step 1 : 生成一對公私鑰,分別為pri_key和pub_key
step 2 :計算hash_value=VRF_HASH(pri_key, message)
step 3 :計算proof_value=VRF_PROOF(pri_key, message)
step 4 : 現在將hash_value和proof_value提供給驗證者
step 5 : 驗證者拿到hash_value和proof_value計算hash_value=VRF_P2H(proof_value)
step 6 : 如果step5成功,則驗證者計算VRF_VERIFY(pub_key, message, proof)
step 7 : 如果step6返回true則表示驗證通過,否則驗證失敗

梳理一下我們可以這樣理解,首先驗證proof是否是由message生成的,然後驗證proof是否可以就散出hash_value,這樣我們就可以推理出hash_value是否由message生成,並且能找到過程中proof是否出現問題。過程中三個關鍵函式

  • VRF_HASH
  • VRF_PROOF
  • VRF_VERIFY

就會我們事先VRF的關鍵