多項式驗證:
在講解新內(nèi)容之前,首先我們看一下如何利用上一節(jié)將的內(nèi)容,做一次技術(shù)驗證:
公式1是我們上一節(jié),將Alice需要證明的問題轉(zhuǎn)換為一個需要證明的多項式P(x)的驗證問題,其中公式2中S是表示問題轉(zhuǎn)換過程中涉及的變量,公式3中A(x)是通過拉格朗日差值算法推理出來的,關(guān)于系數(shù)S的多項式函數(shù)。公式4中Bob可以通過隨機抽樣一個屬于域Fp的變量來檢查該公式的有效性,進而確認(rèn)Alice的相關(guān)信息,這個過程在前面的多項式盲證中解釋過。
需要注意的是,如果A(x),B(x)是d階多項式,那么P(x)是2d階多項式。如果Alice沒有按照公式來生成多項式,而是通過隨便選擇一個與P(x)不等價的多項式P(x)',那么P(x)與P(x)'最多有2d個交點【1】,也就是說,Bob在域Fp的取值范圍是0~p的話,那么Alice選擇一個錯誤的多項式P(x)'而不是P(x),并且Bob又能驗證通過公式4的概率是2d/p,其中d指的是多項式的階,而P是取值范圍,因此當(dāng)P取值范圍很大的時候,Alice在撒謊的情況下不被發(fā)現(xiàn)的概率就很低了。
表達式6是一個驗證P(x)的過程。此驗證過程僅能保證Alice選擇的多項式與真正要驗證的表達式P(x)是等價的。并不能保證P(x)=S.A(x)*S.B(x)-S.C(x)這個表達式中Alice不能找出x=1,2,3時P(x)=0的S的其它值。為了防止這個問題,我們需要用到多項式盲證的可驗證性協(xié)議,這個在前面的章節(jié)中已經(jīng)講過。
多項式盲證的可驗證性。
公式1,2,3,4我們在前面的章節(jié)已經(jīng)講過,這里不再贅述,公式5我們是把這個S.A(x)的點積運算展開,用另一種更準(zhǔn)確的方式表達,我們定義了新的公式6和公式7,其中公式6的意思是使得L,R,O作為x的系數(shù)更精確,因為P(x)的運算決定了,在運算過程中會合并同類項,那么L,R,O與S之間的線性關(guān)系就會丟失。同時定義了公式7,此公式用來提供給Bob做同態(tài)隱藏的運算邏輯公式。
我們通過公式10的證明,F(xiàn)是函數(shù)qi的線性組合,其中i屬于[1,m];
因此通過前面一節(jié)的多項式盲證的可驗證性協(xié)議。
Bob發(fā)送給Alice數(shù)據(jù)是,首先隨機選擇a屬于Fp,
b屬于Fp*。然后發(fā)送E(b*q1(a)), E(b*q2(a)),……
E(b*qm(a)),然后從Alice那里獲得E(b*F(a))并檢查其有效性,就可以驗證Alice采用的s內(nèi)容可以滿足P(x)的同階問題和L,R,O采用錯誤系數(shù)s'的問題。
零知識邏輯,賦值隱藏
在Alice與Bob交互的過程中,存在一種可能就是Bob可以通過對E(L(s)), E(R(s)),E(O(s))的結(jié)果來反向窮舉Alice提供的s的值.為了避免對于簡單運算存在的暴力破解的可能,Alice在計算完L,R,O之后進行再次隱藏:
通過引入非零隨機數(shù)的機制,在不改變線性關(guān)系和隱藏特性的前提一下,做到了Alice參數(shù)的隱藏的特性。
【1】: https://en.wikipedia.org/wiki/Schwartz%E2%80%93Zippel_lemma