零知識證實 | 3.什麼是KCA係數知識假設?

上一篇介紹了盲計算,所謂盲計算,就是Alice在不知道s的狀況下完成多項式計算。測試

那麼,Bob如何肯定Alice的計算結果是正確的呢?要實現這一目標,須要先介紹一個概念:α對.net

在有限循環羣G中,若是\alpha, \beta \neq 0 且 b = \alpha \cdot a,那麼就稱(a,b)爲一個α對。cdn

也就是說,b是a的α倍(模p)。有了這個概念,就能夠進行一項"係數知識測試":blog

  • Bob祕密選一個隨機的α值,生成一個α對:(a,b) = (a,\alpha \cdot a)ci

  • Bob把這個α對(a,b)發送給Aliceit

  • Alice須要回覆一個不一樣的α對:(a', b')io

  • Bob驗證(a',b')是否是一個α對,若是是則接受該回復class

乍一看有點迷糊,既然b=\alpha \cdot a,那Alice不就是能夠反推出α等於多少了嗎?請注意:這裏的乘法是模p乘法。舉個例子就清楚了:bfc

假設Bob選定a=2, \alpha=4,那麼b=\alpha \cdot a=4 \cdot 2|_{mod7}=1,因此最終生成的α對是(2,1),Alice無法反推出α的值是多少(在p很是大的狀況下,這是一個離散對數難題)。循環

既然Alice不知道α,那麼她就只有一種方法能夠生成新的α對:給a和b各乘上同一個係數\gamma

舉個例子,假設Alice祕密選定\gamma = 5,那麼新生成的α對:

(a',b')=(\gamma \cdot a, \gamma \cdot b)=(5 \cdot 2|_{mod7}, 5 \cdot 1|_{mod7}) = (3, 5)

Bob收到這個新的α對(a',b')以後,驗證\alpha \cdot a' = 4 \cdot 3|_{mod7} = 12|_{mod7} = 5 = b',接受該回復。

也就是說,Alice祕密持有\gammaBob祕密持有\alpha。跟上一篇文章中的圖拼到一塊兒:

這就是所謂的"係數知識假設",英文是"Knowledge of Coefficient Assumption",簡稱KCA。一句話歸納:所謂KCA,指的是若是Alice成功回覆了一個α對,那麼她必定持有某個\gamma使得a'=\gamma \cdot a

相關文章
相關標籤/搜索