這篇文章正式介紹一下Bob如何驗證Alice發過來的的值是否正確。實際上,咱們想要實現2個目的:函數
要實現第2個目標,須要用到上一篇文章裏介紹的α對和KCA的概念。.net
上一篇文章裏的KCA只用到了一個α對,咱們能夠擴展一下,讓Bob給Alice發送多個α對(使用同一個α):3d
Alice須要回覆一個α對,根據以前介紹的方法,她能夠從上面的α對中隨機挑選一個,而後各自乘以一個係數:。那麼,除此以外,還有沒有其餘方法生成新的α對呢?答案是確定的,咱們能夠經過"線性組合"來生成。cdn
舉個例子,隨機選2個係數,生成新的α對:。blog
咱們來證實一下:it
能夠發現,確實是一個α對。咱們能夠經過求和符號寫出新α對的通常形式:io
根據上面的分析,能夠引出一個"d階係數知識假設",簡稱d-KCA:class
假設G是一個有限循環羣,g是它的一個生成元。Bob選取一個α和一個s,而後把下面這些α對發送給Alice:擴展
若是Alice成功回覆了一個新的α對,那麼Alice必定持有一組係數,使得。循環
能夠發現,Bob發的這組α對不是隨便給出來的,對應d次多項式的每一項。
有了d-KCA的保證,咱們就能夠來驗證Alice給出的盲計算結果了:
假設G是一個有限循環羣,g是它的一個生成元
選取同態隱藏函數
Bob隨機選擇一個α和一個s,把生成的α對發送給Allice:
… …
Alice須要保守的祕密是的係數:
Alice計算新的α對:
而後把發送給Bob
Bob驗證是不是α對,若是是的話就接受該回復
通過這一過程,Bob就能夠確認Alice確實知道這組係數了(根據d-KCA)。所以,咱們把上一篇文章中的圖改一下,讓Alice知道的2個祕密合二爲一,就能夠獲得下面這張圖了:
最終的效果是:在Bob不知道P(X)中的係數,Alice也不知道α跟s的狀況下,確認了Alice的確知道這組多項式係數。
仍是舉個簡單的實例結束本篇文章,假設:
Bob隨機選擇一組係數,而後把3個α對發送給Alice:
假設Alice持有的多項式爲,在收到Bob的α對以後,計算新的α對:
而後把發送給Bob。
Bob接收到Alice的回覆以後,驗證其是否爲α對:
驗證成功!至此,Bob確信Alice確實知道P(X)的這組係數。