IT评测·应用市场-qidao123.com技术社区

标题: Bulletproof范围证明之优化 [打印本页]

作者: 民工心事    时间: 2024-11-8 10:31
标题: Bulletproof范围证明之优化
主页

微信公众号:密码应用技能实战
博客园首页:https://www.cnblogs.com/informatics/
GIT地址:https://github.com/warm3snow
简介

Bulletproof将范围证明转换为二次多项式表达\(t(X) = t_0 + t_1 \cdot X + t_2 \cdot X^2\),并通过多项式承诺和内积承诺的验证,完成了范围证明。回顾《Bulletproof范围证明之原理》,我们具体先容了Bulletproof范围证明的构造和验证流程。本文将进一步先容Bulletproof范围证明的优化技能 - 折半算法
本文构造如下:
术语界说

Bulletproof复杂度分析

在上一篇文章《Bulletproof范围证明之原理》中,我们先容了Bulletproof向量内积证明,Bulletproof利用向量内积证明来进行范围证明,流程如下:

分析上图中的通信数据包可以发现,交互式Bulletproof向量内积证明过程中,Prover和Verifier必要发送的数据包包括:
综上,未优化版本的Bulletproof向量内积证明通信复杂度为\(O(2n)\)。复杂度主要来自于Prover发送的相应\((\mathbf{l}, \mathbf{r})\),此中\(\mathbf{l}\)和\(\mathbf{r}\)是长度为\(n\)的向量。
Bulletproof折半算法

Bulletproof折半算法是Bulletproof的一种优化技木,主要用于淘汰Bulletproof范围证明的通信复杂度,并实现了\(O(2\log_2{n})\)的通信复杂度。Bulletproof折半算法的核心思想是通过递归的方式,不断将向量\(\mathbf{l}\)和\(\mathbf{r}\)折半,直到两个向量长度都为1,最终发送\(O(2\log_2{n})\)个长度为1的数据包,从而实现了数据的压缩。
折半算法

Bulletproof折半算法基于改进的向量内积证明,下面我们将具体先容Bulletproof折半算法的优化原理。
改进的向量内积

假设\(\mathbf{g}\)和\(\mathbf{h}\)是两个独立的\(G\)生成元,标量\(c \in Z_p\),并有\(P \in G\),向量内积证明的目的是Prover向Verifier证明本身知道向量\(\mathbf{a}, \mathbf{b} \in Z_p^n\), 满足以下关系:

\[P = {\mathbf{g}}^{\mathbf{a}}{\mathbf{h}}^{\mathbf{b}} \quad and \quad c = \langle \mathbf{a}, \mathbf{b} \rangle\]
此中:
以上的向量关系可以转换为下面的证明系统

\[\{(\mathbf{g},\mathbf{h} \in G^n, P \in G, c \in Z_p; \mathbf{a}, \mathbf{b} \in Z_p^n): P = {\mathbf{g}}^{\mathbf{a}}{\mathbf{h}}^{\mathbf{b}} \land c = \langle \mathbf{a}, \mathbf{b} \rangle \}\]
在上述证明系统中:
在Bulletproof中,将以上证明系统转换为以劣等价的证明系统:

\[\{(\mathbf{g},\mathbf{h} \in G^n, u, P \in G, c \in Z_p; \mathbf{a}, \mathbf{b} \in Z_p^n): P = {\mathbf{g}}^{\mathbf{a}}{\mathbf{h}}^{\mathbf{b}} \cdot u^{\langle \mathbf{a}, \mathbf{b} \rangle} \}\]
此中\(u\)是\(G\)的独立且公开的生成元。
折半算法

H函数

在Bulletproof折半算法中,引入了一个特殊的功能函数\(H: Z_p^{2n+1} \rightarrow G\)

\[H(\mathbf{w}, \mathbf{x}, \mathbf{y}, \mathbf{z}, c) = {\mathbf{g}}_{[:n']}^{\mathbf{w}} \cdot {\mathbf{g}}_{[n':]}^{\mathbf{x}} \cdot {\mathbf{h}}_{[:n']}^{\mathbf{y}} \cdot {\mathbf{h}}_{[n':]}^{\mathbf{z}} \cdot u^c \in G\]
此中:
上述\(H\)函数有一个重要性质: 加法同态。即:

\[H(\mathbf{w1}, \mathbf{x1}, \mathbf{y1}, \mathbf{z1}, c1) \cdot H(\mathbf{w2}, \mathbf{x2}, \mathbf{y2}, \mathbf{z2}, c2) = H(\mathbf{w1 + w2}, \mathbf{x1 + x2}, \mathbf{y1 + y2}, \mathbf{z1 + z2}, c1 + c2)\]
同态性证明

\[H(\mathbf{w1}, \mathbf{x1}, \mathbf{y1}, \mathbf{z1}, c1) \cdot H(\mathbf{w2}, \mathbf{x2}, \mathbf{y2}, \mathbf{z2}, c2)\]

\[= {\mathbf{g}}_{[:n']}^{\mathbf{w1}} \cdot {\mathbf{g}}_{[n':]}^{\mathbf{x1}} \cdot {\mathbf{h}}_{[:n']}^{\mathbf{y1}} \cdot {\mathbf{h}}_{[n':]}^{\mathbf{z1}} \cdot u^{c1} \cdot {\mathbf{g}}_{[:n']}^{\mathbf{w2}} \cdot {\mathbf{g}}_{[n':]}^{\mathbf{x2}} \cdot {\mathbf{h}}_{[:n']}^{\mathbf{y2}} \cdot {\mathbf{h}}_{[n':]}^{\mathbf{z2}} \cdot u^{c2}\]

\[= {\mathbf{g}}_{[:n']}^{\mathbf{w1} + \mathbf{w2}} \cdot {\mathbf{g}}_{[n':]}^{\mathbf{x1} + \mathbf{x2}} \cdot {\mathbf{h}}_{[:n']}^{\mathbf{y1} + \mathbf{y2}} \cdot {\mathbf{h}}_{[n':]}^{\mathbf{z1} + \mathbf{z2}} \cdot u^{c1 + c2}\]

\[= H(\mathbf{w1 + w2}, \mathbf{x1 + x2}, \mathbf{y1 + y2}, \mathbf{z1 + z2}, c1 + c2)\]
等价转换

按照\(H\)函数的界说,我们可以将证明系统中的\(P\)重写为:

\[P = {\mathbf{g}}^{\mathbf{a}}{\mathbf{h}}^{\mathbf{b}} \cdot u^{\langle \mathbf{a}, \mathbf{b} \rangle} = H(\mathbf{a_{[:n']}}, \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}, \mathbf{b_{[n':]}, \langle \mathbf{a}, \mathbf{b} \rangle} }) \in G\]
等式证明

\[P =  {\mathbf{g}}^{\mathbf{a}}{\mathbf{h}}^{\mathbf{b}} \cdot u^{\langle \mathbf{a}, \mathbf{b} \rangle} = \prod g_i^{a_i} \cdot \prod h_i^{b_i} \cdot u^{\langle \mathbf{a}, \mathbf{b} \rangle}\]

\[= \prod_{i=1}^{n'} g_i^{a_i} \cdot \prod_{i=n'+1}^{n} g_i^{a_i} \cdot \prod_{i=1}^{n'} h_i^{b_i} \cdot \prod_{i=n'+1}^{n} h_i^{b_i} \cdot u^{\langle \mathbf{a}, \mathbf{b} \rangle}\]

\[=  {\mathbf{g}}_{[:n']}^{\mathbf{a_{[:n']}}} \cdot {\mathbf{g}}_{[n':]}^{\mathbf{a_{[n':]}}} \cdot {\mathbf{h}}_{[:n']}^{\mathbf{b_{[:n']}}} \cdot {\mathbf{h}}_{[n':]}^\mathbf{b_{[n':]}} \cdot u^{\langle \mathbf{a}, \mathbf{b} \rangle}\]

\[= H(\mathbf{a_{[:n']}}, \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}, \mathbf{b_{[n':]}, \langle \mathbf{a}, \mathbf{b} \rangle} }) \in G\]
折半算法构造

Bulletproof折半算法的构造流程如下:


\[L = H(\mathbf{0}^{n'}, \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}},\mathbf{0}^{n'}, \langle \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}} \rangle)\]

\[= {\mathbf{g}}_{[:n']}^{\mathbf{0}^{n'}} \cdot {\mathbf{g}}_{[n':]}^{\mathbf{a_{[:n']}}} \cdot {\mathbf{h}}_{[:n']}^{\mathbf{b_{[:n']}}} \cdot {\mathbf{h}}_{[n':]}^{\mathbf{0}^{n'}} \cdot u^{\langle \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}} \rangle}\]

\[R = H(\mathbf{a_{[n':]}}, \mathbf{0}^{n'}, \mathbf{0}^{n'}, \mathbf{b_{[:n']}}, \langle \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}} \rangle)\]

\[= {\mathbf{g}}_{[:n']}^{\mathbf{a_{[n']}}} \cdot {\mathbf{g}}_{[n':]}^{\mathbf{0}^{n'}} \cdot {\mathbf{h}}_{[:n']}^{\mathbf{0}^{n'}} \cdot {\mathbf{h}}_{[n':]}^{\mathbf{b_{[:n']}}}\cdot u^{\langle \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}} \rangle}\]

\[\mathbf{a'} = x\mathbf{a_{[:n']}} + x^{-1}\mathbb{a_{[n':]}} \in Z_p^{n'}\]

\[\mathbf{b'} = x^{-1}\mathbf{b_{[:n']}} + x\mathbf{b_{[n':]}} \in Z_p^{n'}\]

\[L^{x^2} \cdot P \cdot R^{x^{-2}} \stackrel{?}{=} H(x^{-1}\mathbf{a'}, x\mathbf{a'}, x^\mathbf{b'}, x^{-1}\mathbf{b'}, \langle \mathbf{a'}, \mathbf{b'} \rangle)\]
正确性验证

已知:

\[L = H(\mathbf{0}^{n'}, \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}},\mathbf{0}^{n'}, \langle \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}} \rangle)\]

\[P = H(\mathbf{a_{[:n']}}, \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}, \mathbf{b_{[n':]}, \langle \mathbf{a}, \mathbf{b} \rangle}})\]

\[R = H(\mathbf{a_{[n':]}}, \mathbf{0}^{n'}, \mathbf{0}^{n'}, \mathbf{b_{[:n']}}, \langle \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}} \rangle)\]
根据\(H\)函数的同态性质,容易盘算:

\[L^{x^2} \cdot P \cdot R^{x^{-2}}\]

\[= H(x^2\mathbf{0}^{n'} + \mathbf{a_{[:n']}} + x^{-2}\mathbf{a_{[n':]}}, x^2\mathbf{a_{[:n']}} + \mathbf{a_{[n':]}} + x^{-2}\mathbf{0}^{n'}, x^2\mathbf{b_{[n']}} + \mathbf{b_{[:n']} + x^{-2}\mathbf{0}^{n'}}, x^2\mathbf{0}^{n'}+\mathbf{b_{[n':]}}+x^{-2}\mathbf{b_{[:n']}}, x^2 \langle \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}} \rangle + \langle \mathbf{a}, \mathbf{b} \rangle + x^{-2}\langle \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}} \rangle)\]

\[= H(\mathbf{a_{[:n']}} + x^{-2}\mathbf{a_{[n':]}},  x^2\mathbf{a_{[:n']}} + \mathbf{a_{[n':]}}, x^2\mathbf{b_{[n']}} + \mathbf{b_{[:n']}}, \mathbf{b_{[n':]}}+x^{-2}\mathbf{b_{[:n']}}, x^2 \langle \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}} \rangle + \langle \mathbf{a}, \mathbf{b} \rangle + x^{-2}\langle \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}} \rangle)\]

\[= H(x^{-1}\mathbf{a'}, x\mathbf{a'}, x^\mathbf{b'}, x^{-1}\mathbf{b'},  x^2 \langle \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}} \rangle + \langle \mathbf{a}, \mathbf{b} \rangle + x^{-2}\langle \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}} \rangle)\]
由于:

\[\langle \mathbf{a'}, \mathbf{b'} \rangle = \langle x\mathbf{a_{[:n']}} + x^{-1}\mathbb{a_{[n':]}}, x^{-1}\mathbf{b_{[:n']}} + x\mathbf{b_{[n':]}} \rangle\]

\[= (x\mathbf{a_{[:n']}} + x^{-1}\mathbb{a_{[n':]}}) \cdot (x^{-1}\mathbf{b_{[:n']}} + x\mathbf{b_{[n':]}})\]

\[= x^2 \langle \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}} \rangle + \mathbf{a_{[:n']}}\mathbf{b_{[:n']}} + \mathbf{a_{[n':]}}\mathbf{b_{[n':]}} + x^{-2}\langle \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}}\rangle\]

\[= x^2 \langle \mathbf{a_{[:n']}}, \mathbf{b_{[n':]}} \rangle + \langle \mathbf{a}, \mathbf{b} \rangle + x^{-2}\langle \mathbf{a_{[n':]}}, \mathbf{b_{[:n']}} \rangle\]
因此,我们可以得出:

\[L^{x^2} \cdot P \cdot R^{x^{-2}} = H(x^{-1}\mathbf{a'}, x\mathbf{a'}, x^\mathbf{b'}, x^{-1}\mathbf{b'}, \langle \mathbf{a'}, \mathbf{b'} \rangle)\]
综上,verifier可以成功验证步骤4中的等式,即折半算法的正确性。
复杂度分析

通过折半算法,在通信过程中,Prover只发送了\((P, L, R, \mathbf{a'}, \mathbf{b'}\)), 此中
因此通过一轮折半算法,可以将直接发送\(\mathbf{a}, \mathbf{b} \in Z_p^{n}\)的复杂度减半。
递归折半算法

通过递归折半的方式,我们可以进一步降低复杂度:
由于交互式证明可以通过Fiat-Shamir方法转换为非交互式证明,因此在整个递归折半算法中,Prover仅必要发送以下消息给Verifier:

\[(L_1, R_1), ..., (L_{\log_2n}, R_{\log_2n}), a, b\]
因此Bulletproof通过递归折半算法,成功将通信复杂度降低为\(2\log_2n\)。
结语

本文具体分析了Bulletproof范围证明的优化技能 - 折半算法。通过引入\(H\)函数和递归折半算法,Bulletproof成功将通信复杂度降低为\(O(2\log_2n)\)。折半算法的优化思想可以应用于其他范围证明系统,从而进一步提高范围证明的服从。除了以上优化技能外,Bulletproof的多个范围证明也可以通过批量验证等技能进一步提高服从。
本文未对Bulletproof递归折半算法构造进行具体证明,感兴趣的读者可以参考《Bulletproofs: Short Proofs for Confidential Transactions and More》进行深入学习。
参考文献

转载请注明原文链接:https://www.cnblogs.com/informatics/p/18525971 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则生存追究法律责任的权利。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com技术社区 (https://dis.qidao123.com/) Powered by Discuz! X3.4