上一篇介紹了盲計算,所謂盲計算,就是Alice在不知道s的狀況下完成多項式計算。測試
那麼,Bob如何肯定Alice的計算結果是正確的呢?要實現這一目標,須要先介紹一個概念:α對。.net
在有限循環羣G中,若是,那麼就稱爲一個α對。cdn
也就是說,b是a的α倍(模p)。有了這個概念,就能夠進行一項"係數知識測試":blog
Bob祕密選一個隨機的α值,生成一個α對:ci
Bob把這個α對發送給Aliceit
Alice須要回覆一個不一樣的α對:io
Bob驗證是否是一個α對,若是是則接受該回復class
乍一看有點迷糊,既然,那Alice不就是能夠反推出α等於多少了嗎?請注意:這裏的乘法是模p乘法。舉個例子就清楚了:bfc
假設Bob選定,那麼,因此最終生成的α對是,Alice無法反推出α的值是多少(在p很是大的狀況下,這是一個離散對數難題)。循環
既然Alice不知道α,那麼她就只有一種方法能夠生成新的α對:給a和b各乘上同一個係數。
舉個例子,假設Alice祕密選定,那麼新生成的α對:
Bob收到這個新的α對以後,驗證,接受該回復。
也就是說,Alice祕密持有,Bob祕密持有。跟上一篇文章中的圖拼到一塊兒:
這就是所謂的"係數知識假設",英文是"Knowledge of Coefficient Assumption",簡稱KCA。一句話歸納:所謂KCA,指的是若是Alice成功回覆了一個α對,那麼她必定持有某個使得。