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

上一篇介绍了什么是同态隐藏。假设取,则可以通过和计算出来:

实际上,不仅仅支持加法,支持所有"线性组合"的同态隐藏,比如:

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

假设现在有一个d次多项式,其中的系数是Alice需要保护的秘密。根据上面的特性,我们可以计算出:

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

然后Alice就可以根据上面的公式计算的值:

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

下面举个例子来加深理解,假设:

Bob想验证这一点上的的值,那么他需要提供这2个值:

然后Alice根据这3个值计算的值然后返回给Bob:

最后,我们来看一下是不是真的等于5:

实际上,这背后依赖的理论基础是Schwartz-Zippel引理:在一个很大的集合中随机选择一组数,满足某个多项式取值的概率几乎为0。因此,随机选一个点,然后在Alice不知道该点的值的情况下,提供多项式的值以供Bob验证。

那么问题来了:Bob怎么验证Alice提供的的值对不对呢?且听下回分解。

转载于:https://juejin.im/post/5cdb8a2ff265da035f6ffb4f

你可能感兴趣的:(零知识证明 | 2.什么是多项式盲计算?)