零知识证明学习(六)— zkSNARKs(小结)

zkSNARK-密码学基础

本节主要整合前几节学习的知识

简洁非交互式的多项式知识论证

英文:Succinct Non-Interactive Argument of Knowledge of Polynomial (zk-SNARKOP)

现在我们整理一下最终的zk-SNARKOP协议,为了简单起见,我们将使用花括号来表示由旁边的下标填充的一组元素,例如: ( s i ) i ∈ [ d ] {(s^i)}_{i \in [d]} (si)i[d]表示一个数组 s 1 , s 2 , . . . , s d s^1,s^2,...,s^d s1,s2,...,sd。使用目标多项式 t ( x ) t(x) t(x)和证明者 d d d次多项式:

  • 初始化:
    • 抽取随机值 s , α s,\alpha s,α
    • 加密计算 g α g^{\alpha} gα { g s i } i ∈ [ d ] \{g^{s^i}\}_{i \in [d]} { gsi}i[d] { g α s i } i ∈ [ 0 , . . . , d ] \{g^{\alpha s^i}\}_{i \in [0,...,d]} { gαsi}i[0,...,d]
    • 证明者密钥 ( { g s i } i ∈ [ d ] , { g α s i } i ∈ [ 0 , . . . , d ] ) (\{g^{s^i}\}_{i \in [d]},\{g^{\alpha s^i}\}_{i \in [0,...,d]}) ({ gsi}i[d],{ gαsi}i[0,...,d])
    • 验证者密钥: ( g α , g t ( s ) ) (g^{\alpha},g^{t(s)}) (gα,gt(s))
  • 证明:
    • 分配系数(知识) { c i } i ∈ { 0 , . . . , d } \{c_i\}_{i \in \{0,...,d\}} { ci}i{ 0,...,d} p ( x ) = c d x d + . . . + c 1 x 1 + c 0 x 0 p(x)=c_dx^d+...+c_1x^1+c_0x^0 p(x)=cdxd+...+c1x1+c0x0
    • 计算多项式 h ( x ) = p ( x ) t ( x ) h(x)= \frac {p(x)}{t(x)} h(x)=t(x)p(x)
    • 使用 { g s i } i ∈ [ d ] \{g^{s^i}\}_{i \in [d]} { gsi}i[d]计算加密多项式 g p ( s ) , g h ( s ) g^{p(s)},g^{h(s)} gp(s),gh(s)
    • 使用 { g α s i } i ∈ [ 0 , . . . , d ] ) \{g^{\alpha s^i}\}_{i \in [0,...,d]}) { gαsi}i[0,...,d])计算加密偏移值多项式 g α p ( s ) g^{\alpha p(s)} gαp(s)
    • 随机抽取 δ \delta δ
    • 设置随机证明 π = ( g δ p ( s ) , g δ h ( s ) , g δ α p ( s ) ) \pi = (g^{\delta p(s)},g^{\delta h(s)},g^{\delta \alpha p(s)}) π=(gδp(s),gδh(s),gδαp(s))
  • 验证:
    • 解析证明 π \pi πj和 ( g p , g h , g p ′ ) (g^p,g^h,g^{p'}) (gp,gh,gp)
    • 检查多项式限制 e ( g p ′ , g ) = e ( g p , g α ) e(g^{p'},g)=e(g^p,g^{\alpha}) e(gp,g)=e(gp,gα)
    • 检查多项式余子式 e ( g p , g ) = e ( g t ( s ) , g h ) e(g^p,g)=e(g^{t(s)},g^h) e(gp,g)=e(gt(s),gh)

结论

对于多项式知识的问题,我们得到了知识协议的简洁无交互论证的零知识,这是一个小众用例。虽然我们可以断言,一个证明者可以很容易地构造出这样的多项式 p ( x ) p(x) p(x),只需要将 t ( x ) t(x) t(x)乘以另一个有界多项式,使其通过检验,但这种构造仍然是有用的。验证者知道证明者有一个有效的多项式,但不知道是哪一个。我们可以加上多项式的其他性质的额外证明,例如:被多个多项式除,是多项式的平方。可能有一种服务可以接受、存储和奖励所有经过验证的多项式,或者需要对必要形式的未知多项式进行加密评估。然而,拥有通用的方案将允许应用无数的程序。

链接

[1] 零知识证明学习(一)—— 初始零知识证明
[2] 零知识证明学习(二)—— 零知识证明多项式问题
[3] 零知识证明学习(三)—— 非交互式零知识证明(zkSNARKs)
[4] 零知识证明学习(四)— zkSNARKs(引入密码学)
[5] 零知识证明学习(五)— zkSNARKs(构造多项式)

猜你喜欢

转载自blog.csdn.net/YM_1111/article/details/125097145
今日推荐