上一節是目錄整理,可以方便地找到你感興趣的內容。
本文開始講隨機可驗證函數(VRF)的內容。
VRF基本概念可驗證隨機函數(VRF)是公鑰密碼學與哈希函數結合的另外一種應用方式。
只有私鑰的持有者才能計算哈希。
但是任何擁有公鑰的人都可以驗證哈希的正確性。VRF有助於防止枚舉基於哈希的數據結構攻擊。
區塊鏈中,大部分的共識算法,無論是 POW、POS,或是由他們衍生出來的 DPOS,都需要選出一堆或者一個節點來參與共識或者打包區塊,這個過程雖然會有持幣情況、設備配置、信譽等各種因素影響,但必須是隨機的、無法被預測的。這時候就可能會用到隨機算法。
可驗證隨機函數可以看作是一個隨機預言機(Random Oracle,RO),通過任意的一個輸入,獲得一個隨機數輸出。可驗證隨機函數比隨機預言機多了一個非交互的零知識證明,可以用來驗證該隨機數輸出的正確性,表明這個隨機數的確是某個人或者節點生成的。
使用 VRF,達到的目的跟 POW 的過程有些類似,就是為了隨機而又安全地抽取出塊節點。
目前有兩個體制,一個VRF使用RSA,另一個VRF使用橢圓曲線(EC)。
VRF算法框架VRF包含了一個密鑰生成算法,它可以生成一個公共VRF密鑰PK和私有的VRF密鑰SK。
圖中,M代表原始輸入消息,總體分為生成證明(generation)和驗證(verify)兩部分。
生成過程P = VRF_proof(SK, M) 生成證明P,
R = VRF_proof_to_hash(P) 將證明轉化成hash值,有時簡寫成 R = VRF_P2H(P)
VRF_hash(SK, M) = VRF_proof_to_hash(VRF_proof(SK, M))
驗證過程VRF_verify(PK, M, P) 利用公鑰對檢驗證明P是否是基於原始消息M產生的證明,如果是返回合法,否則非法。
VRF滿足的安全屬性 唯一性要求唯一性是指,對於任何確定的VRF公鑰和任何輸入M,有一個唯一的的VRF輸出P,可以證明有效的。即使是一個惡意的證明者知道VRF私鑰SK,也產生不了更多的有效證明。
抗碰撞性像其他任何密碼學散列函數一樣,VRF需要抗碰撞性, 即使對於知道VRF私鑰SK的惡意證明者,Collison抵抗也必須成立。
更確切地說,「完全抗碰撞」表現在計算上,對手無法找到兩個不同的VRF輸入M1和M2具有相同的VRF散列P,即使對方知道VRF密鑰SK。
稍微弱一點的抗碰撞性,稱為「可信抗碰撞」,即在 PK和SK在一種安全可信的方式下生成。
隨機性要求偽隨機性確保了當一個對手驗證者看到一個VRF散列輸出R,而沒有相應的VRF證明P時,R與隨機值無法區分,即看到的R就像隨機值一樣(也就是hash函數的隨機性)。
更準確地說,假設公共和私有VRF密鑰(PK,SK)是以值得信賴的方式產生。偽隨機性保證了對於任何計算力有限的惡意對手,VRF散列在任何惡意對手選擇的「目標」VRF輸入M看起來都無法區分。
即不能從不同的輸入中提取到任何有效信息。
「選擇性偽隨機性」是一種相對較弱的安全屬性,在許多應用中已經足夠了。在這裡,對手必須選擇目標VRF輸入M獨立於公共VRF密鑰PK,以及在它觀察VRF輸出R和證明輸入M上的P之間的聯繫。
需要指出的是,VRF輸出R對於證明人來說不是隨機的,並且對於知道與VRF輸入M與對應的有效VRF證明P的一方來說也不是隨機的。 這很容易理解,因為對證明人而言,相同的輸入只會得到相同的輸出,這一點無「隨機性」。
小結本文主要介紹了VRF的概念和算法結構,隨機性體現在外部看來,找不到輸出證明結果與輸入之間的關係,給人一種「隨機性」輸出的感覺。
下一節繼續說基於RSA公鑰體制的VRF算法具體內容。
歡迎關注&在看, 疑問請留言!
相關閱讀:區塊鏈中的數學(四十) 目錄整理,一目了然!
區塊鏈中的數學(三十九) Uniwap核心算法解析-完結篇
區塊鏈中的數學(三十八) Uniwap核心算法解析(下)
區塊鏈中的數學(三十七) Uniwap核心算法解析(中)
區塊鏈中的數學(三十六) Uniwap自動化做市商核心算法解析(上)
區塊鏈中的數學(三十五) 何為交易可鍛性?
區塊鏈中的數學(三十四) Miller Rabin算法」憑證「解讀與實現
區塊鏈中的數學(六) secp256k1籤名和驗證過程
區塊鏈中的數學(五) 橢圓曲線加密原理和實例演練