零知识证明|2.什么是多项式盲计算?

Posted TurkeyCock

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了零知识证明|2.什么是多项式盲计算?相关的知识,希望对你有一定的参考价值。

上一篇介绍了什么是同态隐藏。假设取 E ( x ) = g x E(x) = g^x E(x)=gx,则 E ( x + y ) E(x+y) E(x+y)可以通过 E ( x ) E(x) E(x) E ( y ) E(y) E(y)计算出来:

E ( x + y ) = E ( x ) ⋅ E ( y ) E(x+y) = E(x) \\cdot E(y) E(x+y)=E(x)E(y)

实际上,不仅仅支持加法,支持所有"线性组合"的同态隐藏,比如 E ( a x + b y ) E(ax + by) E(ax+by)

E ( a x + b y ) = g a x + b y = g a x ⋅ g b y = ( g x ) a ⋅ ( g y ) b = E ( x ) a ⋅ E ( y ) b E(ax+by) = g^ax+by = g^ax \\cdot g^by = (g^x)^a \\cdot (g^y)^b = E(x)^a \\cdot E(y)^b E(ax+by)=gax+by=gaxgby=(gx)a(gy)b=E(x)aE(y)b

需要注意的是,上面的加法和乘法运算都是模p运算。

假设现在有一个d次多项式 P ( X ) = a 0 + a 1 ⋅ X + a 2 ⋅ X 2 + … + a d ⋅ X d P(X) = a_0 + a_1 \\cdot X + a_2 \\cdot X^2 + … + a_d \\cdot X^d P(X)=a0+a1X+a2X2++adXd,其中的系数 a 0 , … , a d ∈ 0 , p − 1 a_0,…,a_d \\in \\0, p-1\\ a0,,ad0,p1是Alice需要保护的秘密。根据上面的特性,我们可以计算出 E ( P ( X ) ) E(P(X)) E(P(X))

E ( P ( X ) ) = E ( 1 ) a 0 ⋅ E ( X ) a 1 ⋅ E ( X 2 ) a 2 … ⋅ E ( X d ) a d E(P(X)) = E(1)^a_0 \\cdot E(X)^a_1 \\cdot E(X^2)^a_2 … \\cdot E(X^d)^a_d E(P(X))=E(1)a0E(X)a1E(X2)a2E(Xd)ad

现在Bob想来验证Alice是不是真的知道这些秘密,于是他决定随机指定一个数 s s s,要求Alice计算 E ( P ( s ) ) E(P(s)) E(P(s))等于多少。但是,Bob不想直接把 s s s的值告诉Alice,也就是说,这个 s s s是Bob的秘密。显然,这又需要一次同态隐藏,也就是说,Bob把下面这些值提供给Alice:

E ( s ) , E ( s 2 ) , E ( s 3 ) , … , E ( s d ) E(s), E(s^2), E(s^3), …, E(s^d) E(s),E(s2),E(s3),,E(sd)

然后Alice就可以根据上面的公式计算 E ( P ( s ) ) E(P(s)) E(P(s))的值:

E ( P ( s ) ) = E ( 1 ) a 0 ⋅ E ( s ) a 1 ⋅ E ( s 2 ) a 2 … ⋅ E ( s d ) a d E(P(s)) = E(1)^a_0 \\cdot E(s)^a_1 \\cdot E(s^2)^a_2 … \\cdot E(s^d)^a_d E(P(s))=E(1)a0E(s)a1E(s2)a2E(sd)ad

最终的效果是:在Bob不知道P(X)中的系数是多少,而Alice也不知道s等于多少的情况下,完成多项式的验证。这就是所谓的"多项式盲计算"。

下面举个例子来加深理解,假设 P ( X ) = 1 + 2 X + 3 X 2 , E ( x ) = 3 x , p = 7 P(X) = 1 + 2X + 3X^2, E(x) = 3^x, p = 7 P(X)=1+2X+3X2,E(x)=3x,p=7

Bob想验证 s = 2 s=2 s=2这一点上的 E ( P ( s ) ) E(P(s)) E(P(s))的值,那么他需要提供这2个值: E ( s ) = 2 , E ( s 2 ) = 4 E(s) = 2, E(s^2) = 4 E(s)=2,E(s2)=4

然后Alice根据这3个值计算 E ( P ( s ) ) E(P(s)) E(P(s))的值然后返回给Bob:

E ( P ( s ) ) = E ( 1 ) 1 ⋅ E ( s ) 2 ⋅ E ( s 2 ) 3 = 3 ⋅ 4 ⋅ 64 ∣ m o d 7 = 768 ∣ m o d 7 = 5 E(P(s)) = E(1)^1 \\cdot E(s)^2 \\cdot E(s^2)^3 = 3 \\cdot 4 \\cdot 64 |_mod7 = 768|_mod7 = 5 E(P(s))=E(1)1E(s)2E(s2)3=3464mod7=768以上是关于零知识证明|2.什么是多项式盲计算?的主要内容,如果未能解决你的问题,请参考以下文章

零知识证明|3.什么是KCA系数知识假设?

零知识证明|3.什么是KCA系数知识假设?

零知识证明|4.如何验证多项式盲计算的值?

零知识证明|4.如何验证多项式盲计算的值?

安全多方计算 同态密文计算 零知识证明 是什么对比优缺点

零知识证明|1.什么是同态隐藏?