zkSnarks:QAP上构造零知识证明

协议一:抽样验证:prover向验证证明它知道一个d阶多项式

(Prover向verifier证明知道一个基于原电路R1CS约束正确插值形成的多项式p(x),使得p(x)=t(x)h(x))

  • verifier:选取随机数s,发送给prover

  • prover:计算h(x) = P(x)/t(x) ,公开p(s) 、h(s)。

  • verifier:验证等式p(s) = t(s) h(s)是否成立

该证明了prover知道一个整除t(x)的多项式,但存在以下问题:

  • prover 知道s,可以计算出t(s), 随机选取h(s) ,并构造p(s) = t(s) h(s)

  • prover 知道点(s, t(r ) h(r )), 可以构造经过该点的任意多项式

  • prover 即使不知道多项式p(x) ,也可以构造多项式p’(x) = t(x) h’(x) 成立

协议二: 同态隐藏

  • verifier

    • 选取随机数s,计算 E ( s i ) = g s i i = 0 , . . . , d {E(s^i) = g ^{s_i}}_{i=0,...,d} E(si)=gsii=0,...,d (d为多项式的阶)
    • E ( s i ) = g s i i = 0 , . . . , d {E(s^i) = g ^{s_i}}_{i=0,...,d} E(si)=gsii=0,...,d发送给prover
  • prover

    • 计算h(x) = P(x)/t(x)
    • 使用 E ( s i ) E(s^i) E(si)和多项式系数c0,…,cd计算 E ( p ( s ) ) = ∏ i = 0 d ( g s i ) c i E(p(s)) = \prod_{i=0}^{d}{ {(g^{s_i})}^{c_i}} E(p(s))=i=0d(gsi)ci
    • 同理计算 E ( h ( s ) ) E(h(s)) E(h(s))
    • 生成证明{ E ( p ( s ) ) E(p(s)) E(p(s)) E ( h ( s ) ) E(h(s)) E(h(s)) }
  • verifier

    • 验证等式 E ( p ( s ) ) = ( E ( h ( s ) ) ) t ( s ) E(p(s)) = {(E(h(s)))}^{t(s)} E(p(s))=(E(h(s)))t(s)

该协议解决了随机数s暴露的问题,同时限制了多项式的阶数为d,但无法验证 prover 是否是真的使用了 verifier 提供的值来构造证明

协议三: KCA

  • verifier

    • 选取随机数s, α \alpha α
    • 计算 E ( s i ) = g s i i = 0 , . . . , d {E(s^i) = g ^{s_i}}_{i=0,...,d} E(si)=gsii=0,...,d 以及 E ( α s i ) = g α s i i = 0 , . . . , d {E({\alpha}s^i) = g ^{ {\alpha}s_i}}_{i=0,...,d} E ( a si)=gαsii=0,...,d
    • E ( s i ) , E ( α s i ) {E(s^i),E({\alpha}s^i)} E(si)E(αsi )send to prover
  • samples

    • Calculate h(x) = P(x)/t(x)
    • 使用 E ( s i ) , E ( α s i ) {E(s^i),E({\alpha}s^i)} E(si)E(αsi)和多项式系数c0,…,cd计算 E ( p ( s ) ) = ∏ i = 0 d ( g s i ) c i E(p(s)) = \prod_{i=0}^{d}{ {(g^{s_i})}^{c_i}} E(p(s))=i=0d(gsi)ci E ( α p ( s ) ) = ∏ i = 0 d ( g α s i ) c i E({\alpha}p(s)) = \prod_{i=0}^{d}{ {(g^{ {\alpha}s_i})}^{c_i}} E(αp(s))=i=0d(gαsi)ci
    • 同理计算 E ( h ( s ) ) E(h(s)) E(h(s))
    • 生成证明{ E ( p ( s ) ) E(p(s)) E(p(s)) E ( α p ( s ) ) E({\alpha}p(s)) E(αp(s)) E ( h ( s ) ) E(h(s)) E(h(s)) }
  • verifier

    • 验证等式 E ( α p ( s ) ) = ( E ( p ( s ) ) ) α E({\alpha}p(s)) = {(E(p(s)))}^{\alpha} E(αp(s))=(E(p(s)))α

    • 验证等式 E ( p ( s ) ) = ( E ( h ( s ) ) ) t ( s ) E(p(s)) = {(E(h(s)))}^{t(s)} E(p(s))=(E(h(s)))t(s)

The protocol constrains the prover to be constructed using the values ​​provided by the verifier, but this protocol does not protect the prover's knowledge

Protocol Four: Zero Knowledge

  • verifier

    • Choose a random number s, α \alphaa
    • 计算 E ( s i ) = g s i i = 0 , . . . , d {E(s^i) = g ^{s_i}}_{i=0,...,d} E(si)=gsii=0,...,d 以及 E ( α s i ) = g α s i i = 0 , . . . , d {E({\alpha}s^i) = g ^{ {\alpha}s_i}}_{i=0,...,d} E ( a si)=gαsii=0,...,d
    • E ( s i ) , E ( α s i ) {E(s^i),E({\alpha}s^i)} E(si)E(αsi)发送给prover
  • prover

    • 计算h(x) = P(x)/t(x), 选择随机数 δ \delta δ
    • 使用 E ( s i ) , E ( α s i ) {E(s^i),E({\alpha}s^i)} E(si)E(αsi)和多项式系数c0,…,cd计算 E ( δ p ( s ) ) = ∏ i = 0 d ( g s i ) δ c i E({\delta}p(s)) = \prod_{i=0}^{d}{ {(g^{s_i})}^{ {\delta}c_i}} E ( δ p ( s ) )=i=0d(gsi)c _i E ( δ α p ( s ) ) = ∏ i = 0 d ( g α s i ) δ c i E({\delta}{\alpha}p(s)) = \prod_{i=0}^{d}{ {(g^{ {\alpha}s_i})}^{ {\delta}c_i}} E(δαp(s))=i=0d(gαsi)c _i
    • Calculate E ( δ h ( s ) ) E({\delta}h(s)) in the same wayE(δh(s))
    • Proof of generation { E ( δ p ( s ) ) E({\delta}p(s))E(δp(s)) E ( δ α p ( s ) ) E({\delta}{\alpha}p(s)) E(δαp(s)) E ( h ( s ) ) E(h(s)) E(h(s)) }
  • verifier

    • 验证等式 E ( δ α p ( s ) ) = ( E ( δ p ( s ) ) ) α E({\delta}{\alpha}p(s)) = {(E({\delta}p(s)))}^{\alpha} E(δαp(s))=(E(δp(s)))α

    • 验证等式 E ( δ p ( s ) ) = ( E ( δ h ( s ) ) ) t ( s ) E({\delta}p(s)) = {(E({\delta}h(s)))}^{t(s)} E(δp(s))=(E(δh(s)))t(s)

该协议通过引入 δ \delta δ 变换 实现了prover的零知识,但该证明是一个交互式证明,即该证明只对此verifier有效,要想所有的 verifier 都相信该证明,需要构造一个可以被重复使用,公开,可信,又不会被滥用的秘密参数

协议五: 非交互式(多项式的零知识证明)

  • setup

    • 选取随机数s, α \alpha α
    • 计算 g α g ^{\alpha} gα { g s i } i = 1... d \{g^{s^i}\}_{i=1...d} { gsi}i=1...d { g α s i } i = 1... d \{g^{ {\alpha}s^i}\}_{i=1...d} { gαsi}i=1...d
    • 生成proving key { { g s i } i = 1... d \{g^{s^i}\}_{i=1...d} { gsi}i=1...d { g α s i } i = 1... d \{g^{ {\alpha}s^i}\}_{i=1...d} { gαsi}i=1...d }
    • Generate verification key { g α g ^{\alpha}gα g t ( s ) g ^{t(s)} gt(s)}
  • samples

    • Calculate h(x) = P(x)/t(x), choose a random number δ \deltad
    • 使用 E ( s i ) , E ( α s i ) {E(s^i),E({\alpha}s^i)} E(si)E(αsi)和多项式系数c0,…,cd计算 E ( δ p ( s ) ) = ∏ i = 0 d ( g s i ) δ c i E({\delta}p(s)) = \prod_{i=0}^{d}{ {(g^{s_i})}^{ {\delta}c_i}} E(δp(s))=i=0d(gsi)δci E ( δ α p ( s ) ) = ∏ i = 0 d ( g α s i ) δ c i E({\delta}{\alpha}p(s)) = \prod_{i=0}^{d}{ {(g^{ {\alpha}s_i})}^{ {\delta}c_i}} E(δαp(s))=i=0d(gαsi)c _i
    • Calculate E ( δ h ( s ) ) E({\delta}h(s)) in the same wayE(δh(s))
    • Proof of generation { E ( δ p ( s ) ) E({\delta}p(s))E ( δ p ( s ) )E ( δ α p ( s ) ) E({\delta}{\alpha}p(s))E(δαp(s)) E ( h ( s ) ) E(h(s)) E(h(s)) }
  • verifier

    • 证明简写为{ g p , g p ′ , g h g^p,g^{p'}, g^h gp,gp,gh }

    • 验证等式 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)

该协议实现了一个非交互式零知识证明,需要说明的是:要想所有的 verifier 都相信该证明,需要在setup阶段构造一个可以被重复使用,公开,可信,又不会被滥用的秘密参数,也即CRS

协议六: 扩展到一般运算(即QAP上的零知识证明)

∑ i = 0 n { ( v i ∗ l i ( x ) ) ( v i ∗ r i ( x ) ) − ( v i ∗ o i ( x ) ) } = t ( x ) h ( x ) \sum_{i=0}^{n}\{(v_i*l_i(x))(v_i*r_i(x))-(v_i*o_i(x))\}=t(x)h(x) i=0n{ (vili(x))(viri(x))(vioi(x))}=t(x)h(x)

  • setup

    • 选取随机数s, α \alpha α
    • 计算 g α g ^{\alpha} gα { g s k } k = 1... d \{g^{s^k}\}_{k=1...d} { gsk}k=1...d
    • 计算 { g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l i ( s ) , g α r i ( s ) , g α o i ( s ) } i = 1... n \{ {g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}l_i(s)},g^{ {\alpha}r_i(s)},g^{ {\alpha}o_i(s)}}\}_{i=1...n} { gli(s),gri(s),goi(s),gαli(s),gαri(s),ga oi(s)}i=1...n
    • 生成proving key { g s k , g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l i ( s ) , g α r i ( s ) , g α o i ( s ) } \{g^{s^k},{g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}l_i(s)},g^{ {\alpha}r_i(s)},g^{ {\alpha}o_i(s)}}\} { gsk,gli(s),gri(s),goi(s),gαli(s),gαri(s),gαoi(s)}
    • 生成verification key { g α g ^{\alpha} gα g t ( s ) g ^{t(s)} gt(s)}
  • prover

    • 计算h(x) = {L(x)*R(x) -O(x)}/t(x)
    • 计算 g L ( s ) = ∏ i = 0 n ( g l i ( s ) ) v i g^{L(s)} = \prod_{i=0}^{n}{ {(g^{l_i(s)})}^{v_i}} gL(s)=i=0n(gli(s))vi, g α L ( s ) = ∏ i = 0 n ( g α l i ( s ) ) v i g^{ {\alpha}L(s)} = \prod_{i=0}^{n}{ {(g^{ {\alpha}l_i(s)})}^{v_i}} gαL(s)=i=0n(gαli(s))viwhere v i is the solution of the linear combination
    • Calculate g R ( s ) g^{R(s)} in the same waygR(s), g O ( s ) g^{O(s)} gO(s), g α R ( s ) g^{ {\alpha}R(s)} gαR(s), g α O ( s ) g^{ {\alpha}O(s)} gαO(s)
    • 利用 g s k g^{s^k} gsk , calculategh ( s ) g^{h(s)}gh(s)
    • Proof of generation { gh ( s ) g^{h(s)} gh(s), g L ( s ) g^{L(s)} gL(s), g R ( s ) g^{R(s)} gR(s), g O ( s ) g^{O(s)} gO(s), g α L ( s ) g^{ {\alpha}L(s)} gαL(s), g α R ( s ) g^{ {\alpha}R(s)} gαR(s), g α O ( s ) g^{ {\alpha}O(s)} gαO(s) }
  • verifier

    • 证明简写为 { g h g^{h} gh, g L g^{L} gL, g R g^{R} gR, g O g^{O} gO, g α L g^{ {\alpha}L} gαL, g α R g^{ {\alpha}R} gαR, g α O g^{ {\alpha}O} gαO }

    • 验证等式 e ( g L , g α ) = e ( g α L , g ) e(g^L,g^{\alpha})=e(g^{ {\alpha}L},g) e(gL,gα)=e(gαL,g), e ( g R , g α ) = e ( g α R , g ) e(g^R,g^{\alpha})=e(g^{ {\alpha}R},g) e(gR,gα)=e(gαR,g), e ( g O , g α ) = e ( g α O , g ) e(g^O,g^{\alpha})=e(g^{ {\alpha}O},g) e(gO,gα)=e(gαO,g)

    • 验证等式 e ( g L , g R ) = e ( g t , g h ) e ( g O , g ) e(g^L,g^R)=e(g^t,g^h)e(g^O,g) e(gL,gR)=e(gt,gh)e(gO,g)

该协议实现了一个简单的QAP证明,存在以下两个问题:

  • 操作数和输出的不可交换性

    • L(x)采用R(x)/O(x)的多项式: L′(s) = o₁(s) + r₁(s) + r₁(s) +
    • 输入/输出换位:O(s) * R(s) = L(s)
    • 重用:L(s) * L(s) = O(s)
  • 变量一致性: 保证L(x)、R(x)、O(x) 使用的变量(vi)是相同的

协议七: 不可交换性

  • setup
    • 选取随机数s, α l {\alpha}_l αl α r {\alpha}_r ar, α is {\alpha}_oao
    • Calculate g α lg ^{ {\alpha}_l}gal g α r g ^{ {\alpha}_r} gar g α o g ^{ {\alpha}_o} gao { g s k } k = 1... d \{g^{s^k}\}_{k=1...d} { gsk}k=1...d
    • 计算 { g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l l i ( s ) , g α r r i ( s ) , g α o o i ( s ) } i = 1... n \{ {g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}_ll_i(s)},g^{ {\alpha}_rr_i(s)},g^{ {\alpha}_oo_i(s)}}\}_{i=1...n} { gli(s),gri(s),goi(s),galli(s),garri(s),gaooi(s)}i=1...n
    • 生成proving key { g s k , g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l l i ( s ) , g α r r i ( s ) , g α o o i ( s ) } \{g^{s^k},{g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}_ll_i(s)},g^{ {\alpha}_rr_i(s)},g^{ {\alpha}_oo_i(s)}}\} { gsk,gli(s),gri(s),goi(s),galli(s),garri(s),gaooi(s)}
    • Generate verification key { g α lg ^{ {\alpha}_l}gal g α r g ^{ {\alpha}_r} gar g α o g ^{ {\alpha}_o} gao g t ( s ) g ^{t(s)} gt(s)}
  • samples
    • 计算h(x) = (L(x) · R(x) -O(x))/t(x)
    • 计算 g L ( s ) = ∏ i = 0 n ( g l i ( s ) ) v i g^{L(s)} = \prod_{i=0}^{n}{ {(g^{l_i(s)})}^{v_i}} gL(s)=i=0n(gli(s))vi, g α l L ( s ) = ∏ i = 0 n ( g α l l i ( s ) ) v i g^{ {\alpha}_lL(s)} = \prod_{i=0}^{n}{ {(g^{ {\alpha}_ll_i(s)})}^{v_i}} galL(s)=i=0n(galli(s))viwhere v i is the solution of the linear combination
    • Calculate g R ( s ) g^{R(s)} in the same waygR(s), g O ( s ) g^{O(s)} gO(s), g α r R ( s ) g^{ {\alpha}_rR(s)} garR ( s ) ,g α o O ( s ) g^{ {\alpha}_oO(s)}gaoO(s)
    • 利用 g s k g^{s^k} gsk , calculategh ( s ) g^{h(s)}gh(s)
    • Proof of generation { gh ( s ) g^{h(s)} gh(s), g L ( s ) g^{L(s)} gL(s), g R ( s ) g^{R(s)} gR(s), g O ( s ) g^{O(s)} gO(s), g α l L ( s ) g^{ {\alpha}_lL(s)} gαlL(s), g α r R ( s ) g^{ {\alpha}_rR(s)} gαrR(s), g α o O ( s ) g^{ {\alpha}_oO(s)} gαoO(s) }
  • verifier
    • 证明简写为 { g h g^{h} gh, g L g^{L} gL, g R g^{R} gR, g O g^{O} gO, g α l L g^{ {\alpha}_lL} gαlL, g α r R g^{ {\alpha}_rR} gαrR, g α o O g^{ {\alpha}_oO} gαoO }
    • 验证等式 e ( g L , g α l ) = e ( g α l L , g ) e(g^L,g^{ {\alpha}_l})=e(g^{ {\alpha}_lL},g) e(gL,gαl)=e(gαlL,g), e ( g R , g α r ) = e ( g α r R , g ) e(g^R,g^{ {\alpha}_r})=e(g^{ {\alpha}_rR},g) e(gR,gαr)=e(gαrR,g), e ( g O , g α o ) = e ( g α o O , g ) e(g^O,g^{ {\alpha}_o})=e(g^{ {\alpha}_oO},g) e(gO,gαo)=e(gαoO,g)
    • 验证等式 e ( g L , g R ) = e ( g t , g h ) e ( g O , g ) e(g^L,g^R)=e(g^t,g^h)e(g^O,g) e(gL,gR)=e(gt,gh)e(gO,g)

该协议对li(s),ri(s),oi(s)使用不同的 α {\alpha} α保证了操作数和输出的不可交换性

协议八: 变量一致性

  • setup
    • 选取随机数s, α l {\alpha}_l αl α r {\alpha}_r αr α o {\alpha}_o αo β l {\beta}_l βl β r {\beta}_r βr β o {\beta}_o βo
    • Calculate g α lg ^{ {\alpha}_l}gal g α r g ^{ {\alpha}_r} gar g α o g ^{ {\alpha}_o} gao g β l g ^{ {\beta}_l} gbl g β r g ^{ {\beta}_r} gbrg β og ^{ {\beta}_o}gbo { g s k } k = 1... d \{g^{s^k}\}_{k=1...d} { gsk}k=1...d
    • 计算 { g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l l i ( s ) , g α r r i ( s ) , g α o o i ( s ) } i = 1... n \{ {g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}_ll_i(s)},g^{ {\alpha}_rr_i(s)},g^{ {\alpha}_oo_i(s)}}\}_{i=1...n} { gli(s),gri(s),goi(s),galli(s),garri(s),gaooi(s)}i=1...n
    • 计算 g β l l i ( s ) + β r r i ( s ) + β o o i ( s ) g^{ {\beta}_ll_i(s)+{\beta}_rr_i(s)+{\beta}_oo_i(s)} gblli( s ) + brri( s ) + booi(s)
    • 生成proving key { g s k , g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l l i ( s ) , g α r r i ( s ) , g α o o i ( s ) , g β l l i ( s ) + β r r i ( s ) + β o o i ( s ) } \{g^{s^k},{g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}_ll_i(s)},g^{ {\alpha}_rr_i(s)},g^{ {\alpha}_oo_i(s)},g^{ {\beta}_ll_i(s)+{\beta}_rr_i(s)+{\beta}_oo_i(s)}}\} { gsk,gli(s),gri(s),goi(s),galli(s),garri(s),gaooi(s),gblli( s ) + brri( s ) + booi(s)}
    • Generate verification key { g α lg ^{ {\alpha}_l}gal g α r g ^{ {\alpha}_r} gar g α o g ^{ {\alpha}_o} gao g t ( s ) g ^{t(s)} gt(s), g β l g ^{ {\beta}_l} gbl, g β r g ^{ {\beta}_r} gbr, g β og ^{ {\beta}_o}gbo}
  • samples
    • 计算h(x) = (L(x) · R(x) -O(x))/t(x)
    • 计算 g L ( s ) = ∏ i = 0 n ( g l i ( s ) ) v i g^{L(s)} = \prod_{i=0}^{n}{ {(g^{l_i(s)})}^{v_i}} gL(s)=i=0n(gli(s))vi, g α l L ( s ) = ∏ i = 0 n ( g α l l i ( s ) ) v i g^{ {\alpha}_lL(s)} = \prod_{i=0}^{n}{ {(g^{ {\alpha}_ll_i(s)})}^{v_i}} galL(s)=i=0n(galli(s))viwhere v i is the solution of the linear combination
    • Calculate g R ( s ) g^{R(s)} in the same waygR(s), g O ( s ) g^{O(s)} gO(s), g α r R ( s ) g^{ {\alpha}_rR(s)} garR ( s ) ,g α o O ( s ) g^{ {\alpha}_oO(s)}gaoO(s)
    • 利用 g s k g^{s^k} gsk , calculategh ( s ) g^{h(s)}gh(s)
    • 计算 g Z ( s ) = ∏ i = 0 n ( g β l l i ( s ) + β r r i ( s ) + β o o i ( s ) ) v i g^{Z_(s)} = \prod_{i=0}^{n}{(g^{ {\beta}_ll_i(s)+{\beta}_rr_i(s)+{\beta}_oo_i(s)})^{v_i}} gZ(s)=i=0n(gblli( s ) + brri( s ) + booi(s))vi
    • 生成证明 { g h ( s ) g^{h(s)} gh(s), g L ( s ) g^{L(s)} gL(s), g R ( s ) g^{R(s)} gR(s), g O ( s ) g^{O(s)} gO(s), g α l L ( s ) g^{ {\alpha}_lL(s)} gαlL(s), g α r R ( s ) g^{ {\alpha}_rR(s)} gαrR(s), g α o O ( s ) g^{ {\alpha}_oO(s)} gαoO(s), g Z ( s ) g^{Z_(s)} gZ(s) }
  • verifier
    • 证明简写为 { g h g^{h} gh, g L g^{L} gL, g R g^{R} gR, g O g^{O} gO, g α l L g^{ {\alpha}_lL} gαlL, g α r R g^{ {\alpha}_rR} gαrR, g α o O g^{ {\alpha}_oO} gαoO, g Z g^{Z} gZ }
    • 验证等式 e ( g L , g α l ) = e ( g α l L , g ) e(g^L,g^{ {\alpha}_l})=e(g^{ {\alpha}_lL},g) e(gL,gαl)=e(gαlL,g), e ( g R , g α r ) = e ( g α r R , g ) e(g^R,g^{ {\alpha}_r})=e(g^{ {\alpha}_rR},g) e(gR,gαr)=e(gαrR,g), e ( g O , g α o ) = e ( g α o O , g ) e(g^O,g^{ {\alpha}_o})=e(g^{ {\alpha}_oO},g) e(gO,gαo)=e(gαoO,g)
    • 验证等式 e ( g L , g β l ) ⋅ e ( g R , g β r ) ⋅ e ( g O , g β o ) = e ( g Z , g ) e(g^L,g^{ {\beta}_l}) ·e(g^R,g^{ {\beta}_r}) ·e(g^O,g^{ {\beta}_o})=e(g^Z,g) e(gL,gβl)e(gR,gβr)e(gO,gβo)=e(gZ,g)
    • 验证等式 e ( g L , g R ) = e ( g t , g h ) e ( g O , g ) e(g^L,g^R)=e(g^t,g^h)e(g^O,g) e(gL,gR)=e(gt,gh)e(gO,g)

该协议对li(s),ri(s),oi(s)使用不同的 β {\beta} β保证了变量的一致性;
ps:为什么要使用不同的 β {\beta} β ? 如果使用同一个 β {\beta} β,当存在l(s)=r(s)时,设l(s)、r(s)和o(s) 对应的系数变量分别为vl、vr和vo,并令vl=2vo -vr也能通过验证,如下:

  • ​ setup

    • 生成proving key { . . . , g β ( l i ( s ) + r i ( s ) + o i ( s ) ) } \{...,g^{ {\beta}(l_i(s)+r_i(s)+o_i(s))}\} { ...,gβ(li(s)+ri(s)+oi(s))}
    • Generate verification key {…, g β g ^{ {\beta}}gb }
  • samples

    • 计算 g Z ( s ) = ∏ i = 0 n ( g β ( l i ( s ) + r i ( s ) + o i ( s ) ) ) v o i = ∏ i = 0 n ( g β ( 2 l i ( s ) + o i ( s ) ) ) v o i = ∏ i = 0 n ( g β ( 2 v o i l i ( s ) − v r i l i ( s ) + v r i r i ( s ) + v o i o i ( s ) ) ) = ∏ i = 0 n ( g β ( ( 2 v o i − v r i ) l i ( s ) + v r i r i ( s ) + v o i o i ( s ) ) ) = ∏ i = 0 n ( g β ( v l i l i ( s ) + v r i r i ( s ) + v o i o i ( s ) ) ) g^{Z_(s)} = \prod_{i=0}^{n}{(g^{ {\beta}(l_i(s)+r_i(s)+o_i(s))})^{v_{o_i}}} = \prod_{i=0}^{n}{(g^{ {\beta}(2l_i(s)+o_i(s))})^{v_{o_i}}} = \prod_{i=0}^{n}{(g^{ {\beta}(2v_{o_i}l_i(s)-v_{r_i}l_i(s)+v_{r_i}r_i(s)+v_{o_i}o_i(s))})} \\= \prod_{i=0}^{n}{(g^{ {\beta}((2v_{o_i}-v_{r_i})l_i(s)+v_{r_i}r_i(s)+v_{o_i}o_i(s))})} = \prod_{i=0}^{n}{(g^{ {\beta}(v_{l_i}l_i(s)+v_{r_i}r_i(s)+v_{o_i}o_i(s))})} gZ(s)=i=0n(gβ(li(s)+ri(s)+oi(s)))voi=i=0n(gβ(2li(s)+oi(s)))voi=i=0n(gβ(2voili(s)vrili(s)+vriri(s)+voioi(s)))=i=0n(gβ((2voivri)li(s)+vriri(s)+voioi(s)))=i=0n(gβ(vlili(s)+vriri(s)+voioi(s)))

通过协议七和协议八分别解决了不可交换性和变量的一致性,但仍然以下问题:

  • 多项式的延展性:对于证明中的 g L g^{L} gL ,可以计算 g L ⋅ g 5 = g L + 5 g^{L}·g^{5} = g^{L+5} gLg5=gL+5,由于知道 g α l g ^{ {\alpha}_l} gαl,可以计算 g α l L ⋅ g α l 5 = g α l ( L + 5 ) g^{ {\alpha}_lL}·g^{ {\alpha}_l5} = g^{ {\alpha}_l(L+5)} gαlLgαl5=gαl(L+5),从而 e ( g L + 5 , g α l ) = e ( g α l ( L + 5 ) , g ) e(g^{L+5},g^{ {\alpha}_l})=e(g^{ {\alpha}_l(L+5)},g) e(gL+5,gαl)=e(gαl(L+5),g ) Verification passed
  • Quantitative ductility: The same theorem e ( g L + 5 , g β l ) ⋅ e ( g R , g β r ) ⋅ e ( g O , g β o ) = e ( g Z ⋅ g β l 5 , g ) e(g^{L+5},g^{ { \beta}_l}) e(g^R,g^{ { \beta}_r}) e(g^O,g^{ { \ beta}_o})=e(g^Z g^{ {\beta}_l5},g)e ( gL+5,gbl)e ( gR,gbr)e ( gO,gbo)=e ( gZgbl5,g ) Verifiable pass

Protocol Nine: Non-malleability

  • setup

    • Choose a random number s, α l {\alpha}_lal α r {\alpha}_r ar, α is {\alpha}_oao, β l {\beta}_lbl β r {\beta}_r βr β o {\beta}_o βo γ {\gamma} γ
    • 计算 g α l g ^{ {\alpha}_l} gαl g α r g ^{ {\alpha}_r} gαr g α o g ^{ {\alpha}_o} gαo g β l g ^{ {\beta}_l} gβl g β r g ^{ {\beta}_r} gβr g β o g ^{ {\beta}_o} gβo { g s k } k = 1... d \{g^{s^k}\}_{k=1...d} { gsk}k=1...d
    • 计算 { g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l l i ( s ) , g α r r i ( s ) , g α o o i ( s ) } i = 1... n \{ {g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}_ll_i(s)},g^{ {\alpha}_rr_i(s)},g^{ {\alpha}_oo_i(s)}}\}_{i=1...n} { gli(s),gri(s),goi(s),gαlli(s),gαrri(s),gαooi(s)}i=1...n
    • 计算 g β l l i ( s ) + β r r i ( s ) + β o o i ( s ) g^{ {\beta}_ll_i(s)+{\beta}_rr_i(s)+{\beta}_oo_i(s)} gβlli(s)+βrri(s)+βooi(s)
    • 生成proving key { g s k , g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l l i ( s ) , g α r r i ( s ) , g α o o i ( s ) , g β l l i ( s ) + β r r i ( s ) + β o o i ( s ) } \{g^{s^k},{g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}_ll_i(s)},g^{ {\alpha}_rr_i(s)},g^{ {\alpha}_oo_i(s)},g^{ {\beta}_ll_i(s)+{\beta}_rr_i(s)+{\beta}_oo_i(s)}}\} { gsk,gli(s),gri(s),goi(s),galli(s),garri(s),gaooi(s),gblli( s ) + brri( s ) + booi(s)}
    • 生成verification key { g α l g ^{ {\alpha}_l} gαl g α r g ^{ {\alpha}_r} gαr g α o g ^{ {\alpha}_o} gαo g t ( s ) g ^{t(s)} gt(s), g β l γ g ^{ {\beta}_l{\gamma}} gβlγ, g β r γ g ^{ {\beta}_r{\gamma}} gβrγ, g β o γ g ^{ {\beta}_o{\gamma}} gβoγ g γ g ^{ {\gamma}} gγ}
  • prover

    • 计算h(x) = (L(x) · R(x) -O(x))/t(x)
    • 计算 g L ( s ) = ∏ i = 0 n ( g l i ( s ) ) v i g^{L(s)} = \prod_{i=0}^{n}{ {(g^{l_i(s)})}^{v_i}} gL(s)=i=0n(gli(s))vi, g α l L ( s ) = ∏ i = 0 n ( g α l l i ( s ) ) v i g^{ {\alpha}_lL(s)} = \prod_{i=0}^{n}{ {(g^{ {\alpha}_ll_i(s)})}^{v_i}} galL(s)=i=0n(galli(s))viwhere v i is the solution of the linear combination
    • Calculate g R ( s ) g^{R(s)} in the same waygR(s), g O ( s ) g^{O(s)} gO(s), g α r R ( s ) g^{ {\alpha}_rR(s)} garR ( s ) ,g α o O ( s ) g^{ {\alpha}_oO(s)}gaoO(s)
    • 利用 g s k g^{s^k} gsk , calculategh ( s ) g^{h(s)}gh(s)
    • 计算 g Z ( s ) = ∏ i = 0 n ( g β l l i ( s ) + β r r i ( s ) + β o o i ( s ) ) v i g^{Z_(s)} = \prod_{i=0}^{n}{(g^{ {\beta}_ll_i(s)+{\beta}_rr_i(s)+{\beta}_oo_i(s)})^{v_i}} gZ(s)=i=0n(gblli(s)+βrri(s)+βooi(s))vi
    • 生成证明 { g h ( s ) g^{h(s)} gh(s), g L ( s ) g^{L(s)} gL(s), g R ( s ) g^{R(s)} gR(s), g O ( s ) g^{O(s)} gO(s), g α l L ( s ) g^{ {\alpha}_lL(s)} gαlL(s), g α r R ( s ) g^{ {\alpha}_rR(s)} gαrR ( s ) ,g α o O ( s ) g^{ {\alpha}_oO(s)}gaoO(s), $g^{Z_(s)} $ }
  • verifier

    • The proof is abbreviated as { ghg^{h} gh, g L g^{L} gL, g R g^{R} gR ,g O g^{O}gO, g α l L g^{ {\alpha}_lL} galL, g α r R g^{ {\alpha}_rR} garR ,g α o O g^{ {\alpha}_oO}gaoO,$g^{Z} $ }

    • Verify the equation e ( g L , g α l ) = e ( g α l L , g ) e(g^L,g^{ {\ alpha}_l})=e(g^{ { \alpha}_lL} ,g)e ( gL,gal)=e ( galL,g), e ( g R , g α r ) = e ( g α r R , g ) e(g^R,g^{ {\alpha}_r})=e(g^{ {\alpha}_rR},g) e ( gR,gar)=e ( garR,g), e ( g O , g α o ) = e ( g α o O , g ) e(g^O,g^{ {\alpha}_o})=e(g^{ {\alpha}_oO},g) e ( gO,gao)=e ( gaoO,g)

    • The functions ( g L , g β l γ ) ⋅ e ( g R , g β r γ ) ⋅ e ( g O , g β o γ ) = e ( g Z , g γ ) e(g^L, g^{ {\beta}_l{\gamma}}) ·e(g^R,g^{ { \beta}_r{\gamma}}) ·e(g^O,g^{ { \beta}_o {\gamma}})=e(g^Z,g^{\gamma})e ( gL,gblc )e ( gR,gbrc )e ( gO,gboc )=e ( gZ,gc )

    • Free function e ( g L , g R ) = e ( gt , gh ) e ( g O , g ) e(g^L,g^R)=e(g^t,g^h)e(g^ O,g)e ( gL,gR)=e ( gt,gh)e(gO,g)

Protocol 10: Optimization of variable consistency (bilinear pairing operation and verification key optimization)

  • setup
    • Choose a random number s, α l {\alpha}_lal α r {\alpha}_r ar, α is {\alpha}_oao, β {\beta}b ,c {\gamma}γ ,pl , pr , po = pl ⋅ pr p_l,p_r, p_o =p_l·p_rpl,pr,po=plpr
    • set generator gl = gpl g_l = g^{p_l}gl=gpl, g r = g p r g_r= g^{p_r} gr=gpr, g 0 = g p o g_0= g^{p_o} g0=gpo
    • Calculate gl β li ( s ) g_l^{ {\beta}l_i(s)}glβli(s), g r β r i ( s ) g_r^{ {\beta}r_i(s)} grβri(s), go β hi ( s ) g_o^{ {\beta}o_i(s)}gob oi(s)
    • Calculate g α lg ^{ {\alpha}_l}gal g α r g ^{ {\alpha}_r} gar g α o g ^{ {\alpha}_o} gao { g s k } k = 1... d \{g^{s^k}\}_{k=1...d} { gsk}k=1...d
    • 计算 { g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l l i ( s ) , g α r r i ( s ) , g α o o i ( s ) } i = 1... n \{ {g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}_ll_i(s)},g^{ {\alpha}_rr_i(s)},g^{ {\alpha}_oo_i(s)}}\}_{i=1...n} { gli(s),gri(s),goi(s),galli(s),garri(s),gaooi(s)}i=1...n
    • 生成proving key { g s k , g l i ( s ) , g r i ( s ) , g o i ( s ) , g α l l i ( s ) , g α r r i ( s ) , g α o o i ( s ) , g l β l i ( s ) , g r β r i ( s ) , g o β o i ( s ) } \{g^{s^k},{g^{l_i(s)},g^{r_i(s)},g^{o_i(s)},g^{ {\alpha}_ll_i(s)},g^{ {\alpha}_rr_i(s)},g^{ {\alpha}_oo_i(s)},g_l^{ {\beta}l_i(s)}, g_r^{ {\beta}r_i(s)},g_o^{ {\beta}o_i(s)}}\} { gsk,gli(s),gri(s),goi(s),gαlli(s),gαrri(s),gαooi(s),glβli(s),grβri(s),goβoi(s)}
    • Generate verification key { g α lg ^{ {\alpha}_l}gal g α r g ^{ {\alpha}_r} gar g α o g ^{ {\alpha}_o} gao g o t ( s ) g_o ^{t(s)} got(s), g β γ g ^{ {\beta}{\gamma}}gβ γ ,g γ g ^{ {\gamma}}gc }
  • samples
    • 计算h(x) = (L(x) · R(x) -O(x))/t(x)
    • 计算 g L ( s ) = ∏ i = 0 n ( g l i ( s ) ) v i g^{L(s)} = \prod_{i=0}^{n}{ {(g^{l_i(s)})}^{v_i}} gL(s)=i=0n(gli(s))vi, g α l L ( s ) = ∏ i = 0 n ( g α l l i ( s ) ) v i g^{ {\alpha}_lL(s)} = \prod_{i=0}^{n}{ {(g^{ {\alpha}_ll_i(s)})}^{v_i}} galL(s)=i=0n(galli(s))viwhere v i is the solution of the linear combination
    • Calculate g R ( s ) g^{R(s)} in the same waygR(s), g O ( s ) g^{O(s)} gO(s), g α r R ( s ) g^{ {\alpha}_rR(s)} garR(s), g α o O ( s ) g^{ {\alpha}_oO(s)} gαoO(s)
    • 利用 g s k g^{s^k} gsk, 计算 g h ( s ) g^{h(s)} gh(s)
    • 计算 g Z ( s ) = ∏ i = 0 n ( g l β l i ( s ) ⋅ g r β r i ( s ) ⋅ g o β o i ( s ) ) v i g^{Z_(s)} = \prod_{i=0}^{n}{(g_l^{ {\beta}l_i(s)}·g_r^{ {\beta}r_i(s)}·g_o^{ {\beta}o_i(s)})^{v_i}} gZ(s)=i=0n(glβli(s)grβri(s)gob oi(s))vi
    • Proof of generation { gh ( s ) g^{h(s)} gh(s), g L ( s ) g^{L(s)} gL(s), g R ( s ) g^{R(s)} gR(s), g O ( s ) g^{O(s)} gO(s), g α l L ( s ) g^{ {\alpha}_lL(s)} galL(s), g α r R ( s ) g^{ {\alpha}_rR(s)} garR(s), g α o O ( s ) g^{ {\alpha}_oO(s)} gαoO(s), g Z ( s ) g^{Z_(s)} gZ(s) }
  • verifier
    • 证明简写为 { g h g^{h} gh, g L g^{L} gL, g R g^{R} gR, g O g^{O} gO, g α l L g^{ {\alpha}_lL} gαlL, g α r R g^{ {\alpha}_rR} gαrR, g α o O g^{ {\alpha}_oO} gαoO, g Z g^{Z} gZ }
    • Intransformability check for polynomials: e ( g L , g α l ) = e ( g α l L , g ) e(g^L,g^{ {\ alpha}_l})=e(g^{ { \alpha }_lL}, g)e ( gL,gal)=e ( galL,g), e ( g R , g α r ) = e ( g α r R , g ) e(g^R,g^{ {\alpha}_r})=e(g^{ {\alpha}_rR},g) e ( gR,gar)=e ( garR,g), e ( g O , g α o ) = e ( g α o O , g ) e(g^O,g^{ {\alpha}_o})=e(g^{ {\alpha}_oO},g) e ( gO,gao)=e ( gaoO,g)
    • Independent function e ( gl L ⋅ gr R ⋅ go O , g β γ ) = e ( g Z , g γ ) e(g_l^L·g_r^R·g_o^O,g^{ {\beta} { \gamma}}) =e(g^Z,g^{\gamma})e ( glLgrRgoO,gb c )=e ( gZ,gc )
    • Computational validity check e ( gl L , gr R ) = e ( got , gh ) ⋅ e ( go O , g ) e(g_l^L,g_r^R) = e(g_o^t,g^h) e (g_o^O,g)e ( glL,grR)=e ( got,gh)e ( goO,g)

Guess you like

Origin blog.csdn.net/qq_34793644/article/details/123687699