33

区块链中的数学(六十七)--多项式承诺

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzA5NzI4MzkyNA%3D%3D&%3Bmid=2247484479&%3Bidx=1&%3Bsn=7230ebdd158a7cf6c17674a4b2019538
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

写在前面

上一篇介绍了Pedersen 密钥分享, 本文继续讲密码学承诺中重要的成员--多项式承诺诺!

多项式承诺诺在零知识证明中应用比较广泛,且有多种形式。本文介绍Kate版本的多项式承诺。

何为多项式

多项式

首先我们需要知道什么是多项式?这个比较简单,以单变量多项式为例说明:

以上是系数表示形式,系数序列确定多项式也就确定了。

还有一种表示方法是使用n+1点值对表示n次多项式。

同样,这种方法也能唯一确定多项式。

两种表示方法,各有其应用场景,比如系数表示法在计算多项式相加的场合效率高,而点值表示法则应用在多项式相乘计算场合。

由于两种表示法本质是同一个东西,所以二者可以相互转化,其中FFT就是实现系数表达到点值表示的转换方法,而IFFT正好相反。关于FFT和IFFT深入解读超出本文范围,可自行查阅。

多项式承诺

多项式承诺有多种方式,比如最直接的就是把多项式系数承诺出去,这样多项式在承诺后就不能再改变了。 这种方式在系数较少即多项式度数较低时适用。

当系数比较多(比如超过10万)承诺结果就会比较大,增加存储与传输的代价。

能不能用点值方式做承诺呢?最好适用一个点的值,因为点值用的多了同样也会有上述问题。

一个原始的点值承诺方法浮出水面:

点值承诺

  1. 承诺生成(Commit)阶段:

    承诺方选择一个暂不公开的多项式,在某一点r处,计算出对应的承诺c并公开。c = f(r), 将(r,c)公开给验证方

  2. 承诺披露(Reveal)阶段:

    承诺方公布多项式,验证方根据多项式计算r处值c' = f(r),比较c'= c,一致则表示验证成功,否则失败。

这种原始承诺方式有问题吗?仔细想想容易发现有以下问题:

在r处取值为c的多项式存在多个,比如f(r) = c,g(r) = c ,那么承诺方就可以在承诺时候使用多项式f(x),而在打开验证阶段使用g(x)也能通过验证,这样就达不到承诺的目的了。

这种把多项式和盘托出的打开方式成为 全部打开 ,还有一种 部分打开 的方式:

  1. 承诺生成(Commit)阶段:

    承诺方选择一个暂不公开的多项式,在某一点r处,计算出对应的承诺c并公开。c = f(r), 将(r,c)公开给验证方

  2. 挑战(challenge)与证明生成:

    验证方V随机选择一个数z,发给承诺方P, P计算在z处值s = f(z),同时计算出t(x) = f(x)-s / (x-z),计算t(x)在z处的值w = t(z)(w也称为见证witness)

    返回给验证方V(s,w)

  3. 验证阶段:

    验证方验证:s = f(z) --> f(z) - s = 0 --> 方程f(x)-s = 0 有根x=z, 即存在t(x) 使得f(x) - s = t(x)(x - z), 这个方程是恒等式,所以任意点都成立。

    在r处自然也是成立的,所以可以检验f(r) - s = t(r)(r - z) = c - s = w(r - z )

    通过则验证成功,否则失败。

流程图如下:

F7NNBv7.png!mobile

这种方法采用部分打开方式验证,使得多项式增加了隐私性,自始至终没有完全暴露最初的多项式。现在已经比较接近Kate承诺的方案了!

小结

目前为止的方案中, 承诺方造假的问题依然存在,仔细研究会发现 问题关键在于承诺方P知道计算的输入变量r,z , 这样就有机会构造出新的多项式在r,z处取特定的值。如果P不知道r,z,就不能这样作弊了。于是Kate承诺选择在密文空间中进行计算。

好了,下一篇继续Kate承诺的余下部分!

欢迎关注&在看, 疑问请留言!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK