+HomElG Zero-knowledge Proof Protocol for Privacy Protection of Consortium Blockchain Transfer
-
摘要: 在联盟链转帐交易中,账本对联盟参与方是透明的,交易隐私保护是面临的最大挑战之一。针对联盟链隐私保护研究中保护账户余额、交易金额存在的交易合法性验证策略不完善、基础加密算法Paillier效率较低的问题,提出了一种面向联盟链转帐隐私保护的+HomElG零知识证明协议。基于PBFT构造了一种联盟链转账隐私保护应用,论述了同态加密的零知识证明的共识交互场景;通过+HomElG算法加密交易金额及账户余额,根据Σ协议设计密文的零知识证明;通过Fiat-Shamir算法的思想,设计了非交互式零知识证明的相等性证明、范围证明中交易的金额大于零和转账方余额不小于零等过程,并在DDH安全前提下证明它们具有正确性、完备性、零知识性。基于Hyperledger Fabric构建了一个联盟链转账隐私保护原型系统,测试结果验证了该协议在非交互式零知识证明条件下能实现保护账户余额、交易金额的密文交易;当密钥长度为3 072 bit,测试数据长度为12 bit的十进制整数时,+HomElG算法的效率是150.3 ms,交易金额相等、交易金额大于零以及交易余额不小于零等零知识证明过程的效率(证据生成和验证)分别是482.3、209.3和261.3 ms。测试结果表明,与现有协议相比,该协议的+HomElG算法的效率较高,相等性证明、范围证明等交易合法性验证策略更加完善和高效,满足联盟链转账交易隐私保护需求。Abstract: In order to solve the problems of imperfect transaction legitimacy verification strategies for protecting account balances and transaction amounts in privacy protection of consortium blockchain, and the low efficiency of the basic encryption algorithm Paillier, a +HomElG zero-knowledge proof protocol for consortium blockchain transfer privacy protection was proposed. A consortium blockchain transfer privacy protection application was constructed based on PBFT, which expounded the consensus interaction scenario of zero-knowledge proof of homomorphic encryption. The transaction amount and balance of account were encrypted by the +HomElG algorithm, and the zero-knowledge proof of the ciphertext was designed with the Σ protocol. The non-interactive zero-knowledge was designed through the idea of the Fiat-Shamir algorithm processes such as the proof of equality, the amount of the transaction greater than zero and the balance of the transfer party not less than zero in the proof of range. The protocol was proved to be correct, complete and zero-knowledge under the DDH. A consortium blockchain transfer privacy protection prototype system based on Hyperledger Fabric was constructed. The results verified that the protocol can realize ciphertext transactions to protect balance of account and transaction amount under the condition of non-interactive zero-knowledge proof. When the key length is 3072 bit and the data length is a 12-bit decimal integer, the efficiency of the +HomElG algorithm is 150.3 ms, and the efficiency of the proof of equality, the amount of the transaction greater than zero and the balance of the transfer party not less than zero in the proof of range are 482.3 ms, 209.3 ms and 261.3 ms respectively. Compared with the existing protocols, the proposed +HomElG algorithm is more efficient, and its transaction legitimacy verification strategies such as equality proof and range proof are more perfect and efficient. The proposed protocol can meet the privacy protection requirements of consortium blockchain transfer transactions.
-
Keywords:
- consortium blockchain /
- zero-knowledge proof /
- privacy protection /
- homomorphic encryption /
- +HomElG
-
作为区块链的应用模式之一,联盟链由多个机构组成的联盟构成,联盟指定的成员生成、共识、维护联盟链账本,节点的进入与退出需要满足一定条件并得到许可[1]。联盟链有灵活的智能合约[2]定制机制可以满足实际应用中复杂多变的业务需求。联盟链的账本对联盟所有参与方是透明的,当用户通过联盟链执行交易时,用户的资金、交易金额等隐私信息均可能被暴露。因此,研究联盟链隐私保护机制对于促进联盟链的应用、推广具有重要的意义。
目前,国内外学者关于区块链隐私保护研究已经取得一些成果。Wang等[3]使用Paillier算法加密交易金额,通过承诺证明输入总额与输出总额相等实现交易合法性验证,但是密文和公钥过长导致效率较低且没有交易金额相关区间验证。刁一晴等[4]基于群签名和同态加密算法实现一种联盟链双重隐私保护方法,使用Paillier算法和零知识证明实现交易金额的隐私保护,但Paillier算法效率相对较低且仅进行了交易金额大于零的区间验证。Narula等[5]使用Pedersen承诺和Schnorr型非交互式零知识证明方法实现交易金额的隐私保护,但没有交易余额大于零的区间验证。She等[6]通过将敏感数据用Paillier加密后上传到联盟链,实现了同态加状态下的共识,保护敏感数据的隐私,但Paillier算法效率相对较低。张小艳等[7]基于椭圆曲线同态加密的特性,根据公开可验证承诺和零知识证明技术提出一种交易金额保密验证方法,但仅能验证交易金额相等,无法进行区间验证。李龚亮等[8]在Paillier算法的基础上,提出了一种基于零知识证明的隐私保护算法,在应用端生成交易密文和零知识证明证据发送给智能合约端进行合法性验证,但基于复合剩余类困难问题,效率较低。综上可以看出,现有文献虽声称以区块链为研究对象,但本质上主要应用模式采用联盟链;虽然实现了隐私保护,但大都存在没有同时对交易金额相等,交易金额、交易余额的范围进行校验,交易合法性验证策略不够完善,以及主要选用效率较低的加同态Paillier作为基础加密算法等问题。
针对上述问题,面向联盟链转账中需要保护账户余额、交易金额等隐私的需求,本文提出一种+HomElG零知识证明协议。首先,面向联盟链转账的需求,基于PBFT构造具有拜占庭容错的同态加密零知识证明共识交互场景;然后,根据联盟链共识场景,设计一种同态加密的零知识证明协议,基础加密算法选用高效的+HomElG算法,基于Σ协议和Fiat-Shamir算法的思想,构造可以实现交易金额相等、交易金额大于零和交易余额不小于零的非交互式零知识证明,使得交易合法性验证策略更加完善;最后,基于Hyperledger Fabric实现一个联盟链转账隐私保护原型系统,对协议进行测试与分析。
1. 预备知识
G表示拥有大素数阶p的乘法群,g为G的生成元,
$ {Z_p} $ 表示模p的剩余类环,$ Z_p^* $ 表示$ {Z_p} $ 中对乘法可逆的元素构成的乘法群,$ {\log _g}\;h $ 表示在乘法群G中以g为底h的离散对数,a$ \circ $ b表示做Hadamard乘积,H为安全哈希函数。1.1 ElGamal承诺方案
ElGamal承诺方案[9]是一个给定公钥pk的承诺方案,构造过程是在DDH(decisional Diffie-Hellman)困难问题的组
$ (G,g,p) $ 中对于给定公钥$ pk = ({g_i},{h_i}) $ 执行指数ElGamal加密,假设给定的消息$ m \in M $ ,随机数$ r \in {Z_p} $ ,计算$ {E_{pk}}(m;r) = (c,d) $ ,其中,$ c = g_i^r $ ,$ d = {g^m}h_i^r $ 。该承诺方案的主要性质包括:1)无条件绑定,即使给定pk对应的sk,一个ElGamal承诺不能打开成两个不同的消息;2)计算隐藏,对于任意两个消息$ {m_0}{\text{、}} {m_1} $ ,对手无法区分$ {E_{pk}}({m_0};{r_0}) $ 和$ {E_{pk}}({m_1};{r_1}) $ ;3)加性同态,对于两个相同公钥的承诺满足$ {E_{pk}}(m) \circ {E_{pk}}({m_0}) = {E_{pk}}(m + {m_0}) $ 。1.2 DL关系的Σ协议
关系R的Σ协议[10–11]定义了NP(noun phrase)语言
$ L{}_{\rm R} $ ,是一个由证明者和验证者共同执行的三轮证明系统,证明了证明者知道一个共同输入$ x \in L{}_{\rm R} $ 期望的知识,具有完备性、特殊合理性和诚实验证者零知识性。Damgard[12]提出了一种关系R为离散对数(discrete logarithm,DL)关系的Σ协议,DL关系式为:$$ DL\{ (x,w)|x = (p,q,g,h),ord(g) = ord(h) = q,h = {g^w}\} 。$$ 式中,p为大素数,q为p–1的最大素数因子,g为
$ Z_p^* $ 中阶为q的元素,w为仅证明者可知的私有输入,$ h = {g^w}\bmod p $ ,$ x = (p,q,g,h) $ 是对证明者和验证者均可见的公共输入。Σ协议的具体流程为:1)证明者选择随机数
$ r \in {Z_q} $ ,计算$ a = {g^r}\bmod p $ 并将a发送给验证者;2)验证者选择t比特位的随机数挑战$ e \in {Z_{{2^t}}}({2^t} \lt q) $ 并将e发送给证明者;3)证明者计算$ {\textit{z}} = (r + ew)\bmod {\text{ }}q $ ,并将z发送给验证者判断$ {g^{\textit{z}}} = a{h^e}\bmod p $ 是否成立,若成立,则验证者相信证明者知道正确的w值。1.3 范围协议
Bünz等[13]提出的Bulletproofs是最常用的范围零知识证明方法之一,主要要求是有一个DL关系未知的公开承诺密钥
$ (g,h) $ ,使用Fiat-Shamir[14]算法,可以转化为一个安全的、在随机预言模式下完全零知识的非交互式协议。在DDH困难问题的组$ (G,g,p) $ 中,对于$ (V,g,h \in G;v,r \in {Z_p};V = {g^v}{h^r}\bmod p; $ $ v \in [0,{2^n} - 1]) $ ,其中g、h的DL关系是未知的,$ V = {g^v}{h^r}\bmod p $ 可以被看作是一个Pedersen承诺[15],Bulletproofs协议将会使验证者相信$ v \in [0,{2^n} - 1] $ 。1.4 +HomElG算法
+HomElG[16]算法包含3个过程,具体如下:
1) 密钥生成
首先,选择大素数q和正整数
$ \kappa $ ,使$ p = {2^\kappa }q + 1 $ ,选择生成元g,使g生成一个q阶子群$ Z_p^* $ ;然后,从$ {Z_q} $ 中随机选择一个私钥x,并计算相应的公钥$ y = {g^x}\bmod p $ ;最后,输出系统公共参数$ (p,q,g) $ ,返回公私钥对$ (y,x) $ 。2)加密过程
明文空间
$ M = \{ 0,1, \cdots ,\left\lfloor { {\text{lb }}p} \right\rfloor \} $ ,密文空间$ C = Z_p^* \cdot Z_p^* $ 。对于明文
$ m \in M $ ,随机选择$ r \in {Z_q} $ ,加密过程如式(1)所示,得到密文$ C = ({c_1},{c_2}) $ 。$$ {c_1} = {g^r}\bmod p,{c_2} = {y^r}{2^m}\bmod p $$ (1) 3)解密过程
对于密文
$ C = ({c_1},{c_2}) $ ,解密过程下:$$ m = {\text{lb}}({c_2}/c_1^x\bmod p) $$ (2) 2. 基于PBFT的联盟链转账隐私保护应用
假设联盟链中用户Alice需要向用户Bob转账v枚硬币,需要联盟链上节点共识但是都不希望其他成员知道v及Alice、Bob的账户余额等敏感信息。目前,主流研究是利用同态加密[17–18]和零知识证明[19–21]技术来实现。主要流程包括:首先,Alice用自己的公钥
$ p{k_A} $ 和Bob的公钥$ p{k_B} $ 分别加密v得到CA和CB。然后,Alice为转账生成满足以下条件的零知识证明证据$ \pi $ :1)在$ p{k_A} $ 和$ p{k_B} $ 下,CA和CB隐藏着相同的秘密值;2)转账金额大于零;3)转账后他的余额是不小于零的。最后,联盟链上节点通过智能合约利用系统参数和零知识证明证据$ \pi $ ,检验此次交易的有效性,但联盟链中可能存在拜占庭节点,拜占庭故障节点的行为是任意的,可能导致产生错误的交易合法性验证结果。实用拜占庭容错算法(practical Byzantine fault algorithm,PBFT)是一种确保分布式系统与拜占庭故障节点一致性的通用解决方案[22]。与传统的拜占庭容错算法相比,PBFT效率大大提高,可以抵抗一定数量的拜占庭节点[23]。由于无法排除联盟链转账中拜占庭节点的存在,为了确保交易过程的合法性、交易结果的可靠性,本文协议在应用层共识[24]中采用PBFT算法,设计基于PBFT的联盟链转账隐私保护应用如图1所示。
基于PBFT的联盟链转账隐私保护应用的交易流程包括:
1)交易发起阶段。交易发起节点通过客户端INIT CLIENT将交易信息发送给智能合约ENC CONTRACT,如图1中的步骤①所示。
2)零知识证明证据生成阶段。交易发起节点通过智能合约ENC CONTRACT加密交易敏感信息,生成相关零知识证明证据
$ \pi $ ;生成PBFT共识请求消息$ \langle {\text{REQUEST,}}t{\text{,}}d{\text{,}}h{\text{,}}c\rangle $ ,其中,t为时间戳,d为主体发送的包含交易密文信息及零知识证明证据$ \pi $ 等请求内容,h为d的消息摘要,c为主体的身份信息;将请求消息发布到联盟链中,如图1中的步骤②所示。3)PBFT请求阶段。除交易发起节点外,联盟链其他节点可从联盟链中获取PBFT共识请求消息
$ \langle {\text{REQUEST,}}t{\text{,}}d{\text{,}}h{\text{,}}c\rangle $ ;获得请求消息的节点向事先由全网节点选举出的主节点0发送确认消息;主节点0根据确认消息统计参与本次共识的节点个数,确定允许的最大拜占庭节点数f,如图1中的步骤③所示。在图1中,假设参与本次共识的节点个数为4,因此允许最大的拜占庭节点数为1。4)PBFT预准备阶段。主节点0为本次请求d分配一个编号n,开始对本次请求交易的合法性进行判决,如图1中虚框中所示。
首先,节点0的客户端PEER0 CLIENT根据请求消息中的d获取交易密文及相关零知识证明证据
$ \pi $ ,并发送给智能合约VER CONTRACT,如图1中的步骤④所示。然后,智能合约VER CONTRACT从联盟链中获取相关系统参数,利用交易密文、零知识证明证据
$ \pi $ 及系统参数进行零知识证明,校验交易的合法性,如图1中的步骤⑤所示。最后,智能合约VER CONTRACT将校验结果发送给节点0的客户端PEER0 CLIENT,如图1中的步骤⑥所示。
本次请求交易的合法性判决完成后,向其他参与本次共识的从节点1、2、3发送预准备消息
$ \langle {\text{PRE-}} $ ${\text{PREPARE,}}v{\text{,}}n{\text{,}}t{\text{,}}h{\text{,}}f{\text{,}}i{\text{,}}r\rangle $ ,其中,v为当前视图编号,i为当前节点的编号,r为交易的合法性判决结果,如图1中的步骤Pre-prepare所示。5)PBFT准备阶段。收到主节点0发送的预准备消息后,从节点1、2、3首先对比请求信息与预准备消息的h、t,确保消息的完整性。其次,与主节点0的判决过程相同,判决本次请求交易的合法性。然后,向其他节点发送准备消息
$ \langle {\text{PREPARE,}}v{\text{,}}n{\text{,}}h{\text{,}}i{\text{,}}r\rangle $ 。最后,收到其他从节点的准备消息后,节点验证准备消息与预准备消息中v、n、r、h一致性;当有2f+1个一致时,进入确认阶段,如图1中的步骤Prepare所示。6)PBFT确认阶段。每个节点向其他节点发送确认消息
$ \langle {\text{COMMIT,}}v{\text{,}}n{\text{,}}i{\text{,}}S{\text{(}}r{\text{)}}\rangle $ ,其中,S(r)为本节点使用私钥对交易合法性校验结果的签名;收到其他节点的确认消息后,通过i查找本地索引表中相应节点的公钥,各节点验证确认消息的签名、v、n、r;当有2f+1个确认消息一致时,验证通过,如图1中的步骤Commit所示。7)PBFT响应阶段。各节点生成响应消息
$ \langle {\text{REPLY,}} v{\text{,}}t{\text{,}}n{\text{,}}h{\text{,}}c{\text{,}}i{\text{,}}f{\text{,}}q\rangle $ ,其中,q为本次交易合法性验证结果,即确认阶段2f+1个一致的确认消息中的r,并将响应消息发布到联盟链上,如图1中的步骤Reply所示。8)共识结果判定。记账节点从联盟链收集各节点的响应消息,当收集到至少f+1个相同的响应消息时,则根据响应消息中的q判定本次交易合法性验证是否通过,如图1中的步骤⑦所示。
9)账本更新。当共识结果判定为通过时,记账节点根据密文同态运算更新账本和状态数据库;否则,拒绝本次交易,向交易发起节点发送本次交易失败信息,如图1中的步骤⑧所示。
3. 基于Σ协议的+HomElG零知识证明协议
在基于PBFT的联盟链转账隐私保护应用中,采用同态加密技术保护转账交易双方的交易敏感信息。与加法同态Paillier算法相比,在相同的安全级别下,+HomElG算法获得了接近86.7%的加密加速比和接近73.4%的解密加速比,是综合性能较优的加法同态算法,因此,本文选择+HomElG算法作为基础密码算法。
为了验证转账的合法性,需要联盟链成员采用零知识证明技术在应用层对转账交易过程进行PBFT共识。在PBFT共识过程中,验证节点需要在隐私条件下验证转账双方的交易金额相等、交易金额大于零、转账方的交易余额不小于零等,所以需要为最基本的转账正确性策略构造出相应的零知识证明证据[25]。Σ协议能够以模块化的方式为事务的基本正确性设计零知识证明,且可通过Fiat-Shamir算法转换为非交互式零知识证明。因此,本文提出基于Σ协议+HomElG零知识证明协议,满足基于PBFT的联盟链转账隐私保护应用的需求。
3.1 初始化
1)系统参数生成
由联盟链CA中心选择大素数q和正整数
$ \kappa $ ,使$ p = {2^\kappa }q + 1 $ ;选择生成元g,使g生成一个q阶子群$ Z_p^* $ ;选择拥有大素数阶$ {p_0} $ 的乘法群G,并选择生成元$ h {\text{、}} {g_0} $ ,h和$ {g_0} $ 的DL关系未知;将$ (p,q,g,{g_0},h,{p_0}) $ 作为系统公共参数写入CA中心的证书,其中,$ (p,q,g) $ 用于加解密,$ ({g_0},h,{p_0}) $ 用于零知识证明生成ElGamal承诺。2)节点密钥对的生成与分发
联盟链节点从
$ {Z_q} $ 中随机选择私钥x,计算公钥$ y = {g^x}\bmod p $ 。以安全的方式将公钥提交给CA中心,以便将公钥写入节点的证书,实现公钥的安全分发。私钥由节点安全保存。3)账户初始化
联盟链用户使用自己的公钥加密账户余额,发送给记账节点。在联盟链账本中,以(用户公钥,用户账户余额密文)对的形式存储。
3.2 零知识证明
在基于PBFT的联盟链转账隐私保护应用中,应用端(发起方的客户端)为智能合约端(联盟链节点)产生密文交易信息,并提供零知识证明证据;智能合约端基于PBFT共识算法验证交易的合法性。对于给定的消息
$ m \in M $ ,随机数$ r \in {Z_q} $ ,经+HomElG算法加密得到密文$ {C_{pk}}(m;r) $ 。因为+HomElG算法满足如下条件:1)给定pk对应的sk,$ {C_{pk}}(m;r) $ 不能被解密成两个不同的消息;2)对于任意两个消息$ ({m_0},{m_1}) $ ,对手无法区分$ {C_{pk}}({m_0};{r_0}) $ 和$ {C_{pk}}({m_1};{r_1}) $ ;3)相同公钥下的密文满足$ {C_{pk}}({m_0}) \circ {C_{pk}}({m_1}) = {C_{pk}}({m_0} + {m_1}) $ 。因此,经+HomElG加密后密文满足绑定性、隐藏性和加性同态。3.2.1 相等性证明
应用端使用交易双方的公钥和系统参数,从Zq中选择加密过程中的随机数
$ {r}_{0vA} {\text{、}} {r}_{0vB} $ ,加密交易金额v得到密文$ {C_{vA}} = ({c_{1vA}},{c_{2vA}}) $ 和$ {C_{vB}} = ({c_{1vB}},{c_{2vB}}) $ 。基于Σ协议思想的相等性证明过程如下:应用端从M中随机选择
$ v' $ ,从Zq中随机选择$ {r_x} {\text{、}} r_{0vB}' $ ,分别使用$ {r_x} {\text{、}} r_{0vB}' $ 加密$ v' $ ,得到$ ({e_1},{f_1}) = ({g^{{r_x}}},{2^{v'}}c_{1vA}^{{r_x}}) $ 和$ ({e_2},{f_2}) = ({g^{r_{0vB}'}},{2^{v'}}y_B^{r_{0vB}'}) $ ;采用Fiat-Shamir算法思想,使用安全哈希函数生成$ \eta = H({c_{1vA}},{c_{2vA}},{c_{1vB}},{c_{2vB}},{e_1},{f_1}, {e_2},{f_2}) $ ,以η替代智能合约端的随即挑战,使零知识证明转换为非交互式;利用η计算$ ({Z_v},{Z_x},{Z_{{r_1}}}) = \eta (v,x,{r_{0vB}}) + (v',{r_x},r_{0vB}') $ ,将$ ({e_1},{f_1},{e_2},{f_2},{Z_v},{Z_x},{Z_{{r_1}}},\eta ) $ 发给智能合约端。智能合约端根据接收到的数据使用安全哈希函数生成
$ \eta ' = H({c_{1vA}},{c_{2vA}},{c_{1vB}},{c_{2vB}},{e_1},{f_1},{e_2},{f_2}) $ ,验证η与$ \eta ' $ 是否相等,防止应用端欺骗智能合约端;若相等,继续验证式(3)是否均成立;若成立,则相信密文$ {C_{vA}} {\text{、}} $ $ {C_{vB}} $ 中隐藏着同一秘密值;否则,本次交易不合法。$$ \left\{ \begin{array}{l} {g^{{Z_x}}}\bmod p = y_A^\eta \cdot {e_1}\bmod p{\text{,}} \\ {2^{{Z_v}}}c_{1vA}^{{Z_x}}\bmod p = c_{2vA}^\eta \cdot {f_1}\bmod p, \\ {g^{{Z_{r1}}}}\bmod p = c_{1vB}^\eta \cdot {e_2}\bmod p, \\ {2^{{Z_v}}}y_B^{{Z_{r1}}}\bmod p = c_{2vB}^\eta \cdot {f_2}\bmod p \\ \end{array}\right. $$ (3) 3.2.2 范围证明
本文将+HomElG加密后的密文
$ C = ({c_1},{c_2}) $ 的范围证明归约到全局公钥$ (g,h) $ 下的ElGamal承诺的范围证明。根据可证明安全理论,基于Bulletproofs证明ElGamal承诺的秘密值满足范围证明,从而证明$ C = ({c_1},{c_2}) $ 中隐藏的秘密值满足范围证明。1)交易金额大于零
应用端使用系统参数
$ ({g_0},h,{p_0}) $ ,交易金额v,选择$ {r_{vE}} \in {Z_{{p_0}}} $ ,对v做出在公钥$ ({g_0},h) $ 下的ElGamal承诺$ {E_v} = ({c_v},{d_v}) = (g_0^{{r_{vE}}},g_0^v{h^{{r_{vE}}}}) $ 。根据Σ协议思想将交易金额密文归约到ElGamal承诺的过程:应用端从M中随机选择
$ {r_v} $ ,从Zq中随机选择$ {r_{x1}} $ ,从$ {Z_{P0}} $ 中随机选择$ r_{0vE}' $ ,使用$ {r_{x1}} $ 加密$ {r_v} $ ,使用$ r_{0vE}' $ 对$ {r_v} $ 生成ElGamal承诺,得到$ ({e_{11}},{f_{11}}) = ({g^{{r_{x1}}}},{2^{{r_v}}}c_{1vA}^{{r_{x1}}}) $ 和$ ({e_{21}},{f_{21}}) = (g_0^{{r_{vE}'}},g_0^{{r_v}}{h^{r_{vE}'}}) $ ;采用Fiat-Shamir算法思想,使用安全哈希函数生成$ {\eta _1} = H({c_{1vA}},{c_{2vA}},{c_v},{d_v},{e_{11}},{f_{11}},{e_{21}},{f_{21}}) $ ;利用$ {\eta _1} $ 计算$ (Z_v',{Z_{x1}},{Z_{rv}}) = {\eta _1}(v,x,{r_{vE}}) + ({r_v},{r_{x1}},r_{vE}') $ ,将$ ({e_{11}},{f_{11}}, {e_{21}}, {f_{21}},Z_v',{Z_{x1}},{Z_{rv}},{\eta _1}) $ 发给智能合约端。智能合约端根据接收到的数据使用安全哈希函数生成
$ {\eta '_1} = H({c_{1vA}},{c_{2vA}},{c_v},{d_v},{e_{11}},{f_{11}},{e_{21}},{f_{21}}) $ ,验证$ {\eta _1} $ 与$ {\eta '_1} $ 是否相等,防止应用端作假欺骗智能合约端;若相等,继续验证式(4)是否均成立;若成立,则相信密文$ {C_{vA}} $ 与公开承诺密钥$ ({g_0},h) $ 下的ElGamal承诺$ {E_v} $ 包含相同的秘密值;否则,本次交易不合法。$$ \left\{ \begin{array}{l} {g^{{Z_{x1}}}}\bmod p = y_A^{{\eta _1}} \cdot {e_{11}}\bmod p{\text{,}} \\ {2^{Z_v'}}c_{1vA}^{{Z_{x1}}}\bmod p = c_{2vA}^{{\eta _1}} \cdot {f_{11}}\bmod p, \\ g_0^{{Z_{rv}}}\bmod {p_0} = c_v^{{\eta _1}} \cdot {e_{21}}\bmod {p_0}, \\ g_0^{Z_v'}{h^{{Z_{rv}}}}\bmod {p_0} = d_v^{{\eta _1}} \cdot {f_{21}}\bmod {p_0} \\ \end{array}\right. $$ (4) 在将交易金额密文归约到ElGamal承诺基础上,交易金额大于零的证明过程包括:应用端对公开承诺密钥
$ (g,h) $ 下的ElGamal承诺$ {E_v} $ 运行Bulletproofs,产生范围证明的证据$ {\pi _{\text{v}}} $ 发送给智能合约端。智能合约端根据$ {\pi _{\text{v}}} $ 验证$ {E_v} $ 隐藏秘密值的范围,若验证通过,则交易金额大于零;否则,本次交易不合法。2)交易余额不小于零
应用端获取转账方的输入金额密文
$ {C_{in}} $ 及转账金额密文$ {C_{vA}} $ ,根据加密算法的加性同态性计算交易余额的密文,得到$ {C_{bA}} = {C_{in}} \circ C_{vA}^{ - 1} $ ;使用转账方的私钥x及相关系统参数解密出交易余额b,选择$ {r_{bE}} \in {Z_{{p_0}}} $ 和相关系统参数对b做出在公钥$ ({g_0},h) $ 下的ElGamal承诺$ {E_b} = ({c_b},{d_b}) = (g_0^{^{{r_{bE}}}},g_0^b{h^{{r_{bE}}}}) $ 。根据Σ协议的思想,将交易余额密文归约到ElGamal承诺的过程:应用端从M中随机选择
$ {r_b} $ ,从Zq中随机选择$ {r_{x2}} $ ,从$ {Z_{P0}} $ 中随机选择$ r_{0bE}' $ ,使用$ {r_{x2}} $ 加密$ {r_b} $ ,使用$ r_{0bE}' $ 对$ {r_b} $ 生成ElGamal承诺,得到$ ({e_{12}},{f_{12}}) = ({g^{{r_{x2}}}},{2^{{r_b}}}c_{1vB}^{{r_{x2}}}) $ 和$ ({e_{22}},{f_{22}}) = (g_0^{r_{bE}'},g_0^{{r_b}}{h^{r_{bE}'}}) $ ;采用Fiat-Shamir算法思想,使用安全哈希函数生成$ {\eta _2} = H({c_{1bA}},{c_{2bA}},{c_b},{d_b},{e_{12}},{f_{12}},{e_{22}},{f_{22}}) $ ;利用$ {\eta _2} $ 计算$ ({Z_b},{Z_{x2}},{Z_{rb}}) = {\eta _2}(b,x,{r_{bE}}) + ({r_b},{r_{x2}},r_{bE}') $ ,将$ ({e}_{12},{f}_{12}, {e}_{22},{f}_{22},{Z}_{B},{Z}_{x2},{Z}_{rb},{\eta }_{2}) $ 发给智能合约端。智能合约端根据接收到的数据使用安全哈希函数生成
$ {\eta '_2} = H({c_{1bA}},{c_{2bA}},{c_b},{d_b},{e_{12}},{f_{12}},{e_{22}},{f_{22}}) $ ,验证$ {\eta _2} $ 与$ {\eta '_2} $ 是否相等,防止应用端作假欺骗智能合约端;若相等,继续验证式(5)是否均成立;若成立,则相信密文$ {C_{bA}} $ 与公开承诺密钥$ ({g_0},h) $ 下的ElGamal承诺$ {E_b} $ 包含相同的秘密值;否则,本次交易不合法。$$ \left\{ \begin{array}{l} {g^{{Z_{x2}}}}\bmod p = y_A^{{\eta _2}} \cdot {e_{12}}\bmod p{\text{,}} \\ {2^{{Z_b}}}c_{1bA}^{{Z_{x2}}}\bmod p = c_{2bA}^{{\eta _2}} \cdot {f_{12}}\bmod p, \\ g_0^{{Z_{rb}}}\bmod {p_0} = c_b^{{\eta _2}} \cdot {e_{22}}\bmod {p_0}, \\ g_0^{{Z_b}}{h^{{Z_{rb}}}}\bmod {p_0} = d_b^{{\eta _2}} \cdot {f_{22}}\bmod {p_0} \\ \end{array}\right. $$ (5) 在将交易余额密文归约到ElGamal承诺基础上,交易余额不小于零的证明过程包括:对公开承诺密钥
$ (g,h) $ 下的ElGamal承诺$ {E_b} $ 运行Bulletproofs,产生范围证明的证据$ {\pi _b} $ 发送给智能合约端;智能合约端根据$ {\pi _b} $ 验证$ {E_b} $ 隐藏秘密值的范围,若验证通过,则相信交易余额大于0;否则,本次交易不合法。3.3 协议分析
3.3.1 正确性分析
定理1 在联盟链共识时通过执行本文协议,验证者可以确信密文
$ {C_{vA}} {\text{、}} {C_{vB}} $ 下隐藏着同一秘密值。证明:应用端向智能合约端发送证据
$ ({e_1},{f_1}, {e_2},{f_2},{Z_v},{Z_x},{Z_{{r_1}}},\eta ) $ ,并执行零知识证明式(6)。智能合约通过证据和系统参数验证式(3),过程如式(7)所示。若$ {C_{vA}} {\text{、}} {C_{vB}} $ 隐藏着同一秘密值,式(7)中各等式均会成立,则诚实验证者确信密文$ {C_{vA}} {\text{、}} {C_{vB}} $ 下隐藏着同一秘密值。$$ PK\{ v,{r_{0vA}},{r_{0vB}}:{C_{vA}} = ({c_{1vA}},{c_{2vA}}) \wedge {C_{vB}} = ({c_{1vB}},{c_{2vB}})\} $$ (6) $$ \left\{ \begin{array}{l} y_A^\eta \cdot {e_1}\bmod p = {g^{x\eta }} \cdot {g^{{r_x}}}\bmod p = \\ \qquad {g^{x\eta + {r_x}}}{\text{mod }}p = {g^{{Z_x}}}\bmod p, \\ c_{2vA}^\eta \cdot {f_1}\bmod p = {2^{\eta v}}y_A^{\eta \cdot {r_{0vA}}}\bmod p \cdot {2^{v'}}c_{1vA}^{{r_x}}\bmod p = \\ \qquad {2^{\eta v + v'}}{g^{{r_{0vA}}(\eta x + {r_x})}}\bmod p = {2^{{Z_v}}}c_{1vA}^{{Z_x}}\bmod p, \\ c_{1vB}^{{\eta}} \cdot {e_{2}}\bmod p = {g^{{\eta}{r_{0vB}}}} \cdot {g^{r_{0vB}'}}\bmod p = \\ \qquad {g^{{\eta{r_{0vB}} + r_{0vB}'}}\bmod p = {g^{{Z_{r1}}}}\bmod p, \\ c_{2vB}^\eta \cdot {f_2}\bmod p = {2^{\eta v}}y_B^{\eta \cdot {r_{0vB}}}\bmod p \cdot {2^{v'}}y_B^{r_{0vB}'}\bmod p = \\ \qquad {2^{\eta v + v'}}y_B^{\eta \cdot {r_{0vB}} + r_{0vB}'}\bmod p = {2^{{Z_v}}}y_B^{{Z_{r1}}}\bmod p \\ \end{array}\right.$$ (7) 定理2 在联盟链共识时通过执行本文协议,验证者可以确信密文
$ {C_{vA}} $ 与承诺$ {E_v} $ 下隐藏着同一秘密值,$ {C_{bA}} $ 与承诺$ {E_b} $ 下隐藏着同一秘密值。证明:应用端向智能合约端发送证据
$ ({e_{11}},{f_{11}}, {e_{21}},{f_{21}},Z_v',{Z_{x1}},{Z_{rv}},{\eta _1}) $ ,并执行零知识证明式(8)。智能合约端验证式(8),通过证据和系统参数验证式(4),过程如式(9)所示。若密文$ {C_{vA}} $ 与承诺$ {E_v} $ 下隐藏着同一秘密值,式(9)中各等式均会成立,则诚实的验证者确信密文$ {C_{vA}} $ 与承诺$ {E_v} $ 下隐藏着同一秘密值。同理可验证零知识证明式(10),使诚实的验证者确信密文$ {C_{bA}} $ 与承诺$ {E_b} $ 下隐藏着同一秘密值。$$ PK\{ v,{r_{vE}},x:{C_{vA}} = ({c_{1vA}},{c_{2vA}}) \wedge {E_v} = ({c_v},{d_v})\} $$ (8) $$ \left\{ \begin{array}{l} y_A^{{\eta _1}} \cdot {e_{11}}\bmod p = {g^{x{\eta _1}}} \cdot {g^{{r_{x1}}}}\bmod p = \\ \qquad {g^{x{\eta _1} + {r_{x1}}}}{\text{mod }}p = {g^{{Z_{x1}}}}\bmod p, \\ c_{2vA}^{{\eta _1}} \cdot {f_{11}}\bmod p = {2^{{\eta _1}v}}y_A^{{\eta _1} \cdot {r_{0vA}}}\bmod p \cdot {2^{{r_v}}}c_{1vA}^{{r_{x1}}}\bmod p = \\ \qquad {2^{{\eta _1}v + {r_v}}}{g^{{r_{0vA}}(x{\eta _1} + {r_{x1}})}}\bmod p = {2^{Z_v'}}c_{1vA}^{{Z_{x1}}}\bmod p, \\ c_{v}^{\eta_1} \cdot {e_{21}}\bmod {p_0} = g_0^{{\eta_1} {r_{vE}}} \cdot g_0^{{{r}_{vE}'}}\bmod {p_0} = \\ \qquad g_0^{{\eta_1} {r_{vE}} + {{r}_{vE}'}}\bmod {p_0} = g_0^{{Z_{rv}}}\bmod {p_0}, \\ d_v^{{\eta _1}} \cdot {f_{21}}\bmod {p_0} = g_0^{v{\eta _1}}{h^{{r_{vE}}{\eta _1}}}\bmod {p_0} \cdot g_0^{{r_v}}{h^{{{r}_{vE}'}}}\bmod {p_0} = \\ \qquad g_0^{v{\eta _1} + {r_v}}{h^{{r_{vE}}{\eta _1} + {{r}_{vE}'}}}\bmod {p_0} = g_0^{{Z_v'}}{h^{{Z_{rv}}}}\bmod {p_0} \\ \end{array}\right. $$ (9) $$ PK\{ b,{r_{bE}},x:{C_{bA}} = ({c_{1bA}},{c_{2bA}}) \wedge {E_b} = ({c_b},{d_b})\} $$ (10) 定理3 在联盟链共识时通过执行本文协议,验证者可以确信承诺
$ {E_v} $ 中隐藏秘密值大于零,承诺$ {E_b} $ 中隐藏秘密值不小于零。证明:应用端向智能合约端发送证据
$ {\pi _v} $ 并执行式(11)。智能合约端通过证据$ {\pi _v} $ 和系统参数验证式(11),若承诺$ {E_v} $ 中隐藏秘密值大于零,由于Bulletproofs范围证明是完备的[13],则诚实的验证者确信承诺$ {E_v} $ 隐藏秘密值大于零。同理可验证式(12),若承诺$ {E_b} $ 中隐藏秘密值不小于零时,则诚实的验证者确信承诺$ {E_b} $ 隐藏秘密值不小于零。$$\begin{aligned}[b] & pk\{{E}_{v},{g}_{0},h\in G;{{g,h}}\in {G}^{n};(v,{r}_{vE}\in {Z}_{p})\text{ }:{E}_{v}=\\&\qquad {g}_{0}^{v}{h}^{{r}_{vE}}\wedge v\in [0,{2}^{n}-1]\}\end{aligned} $$ (11) $$ \begin{aligned}[b]& pk\{{E}_{b},{g}_{0},h)\in G;{{g,h}}\in {G}^{n};(b,{r}_{bE}\in {Z}_{p})\text{ }:{E}_{b}=\\&\qquad {g}_{0}^{b}{h}^{{r}_{bE}}\wedge b\in [0,{2}^{n}-1]\}\end{aligned} $$ (12) 定理4 本文协议同态加法运算是正确的,即在密文条件下的同态加法运算与明文加法运算结果一致。
证明:由
$ {C_{bA}} = {C_{in}} \circ C_{vA}^{ - 1} $ 得到转账方更新后的密文$ {C_{bA}} $ ,使用转账方私钥x解密。在密文状态下同态运算后解密过程如式(13)所示,先解密再计算的过程如式(14)所示。$$ \begin{aligned}[b] {b_A} \equiv & {\text{lb}}({c_{2bA}}/c_{1bA}^x) \equiv {\text{lb}}\left( {\frac{{{{({g^x})}^{{r_{in}} - {r_{0vA}}}}{2^{{v_{in}} - v}}}}{{{{({g^{{r_{in}} - {r_{0vA}}}})}^x}}}} \right) \equiv \\& {\text{ }}{\text{lb}}({2^{{v_{in}} - v}}) \equiv {v_{in}} - v \\ \end{aligned} $$ (13) $$ \begin{aligned}[b] {b_A} \equiv& {\text{lb}}({c_{2in}}/c_{1in}^x) - {\text{lb}}({c_{2vA}}/c_{1vA}^x) \equiv \\& {\text{lb}}\left( {\frac{{{{({g^x})}^{{r_{in}}}}{2^{{v_{in}}}}}}{{{{({g^{{r_{in}}}})}^x}}}} \right) - {\text{lb}}\left( {\frac{{{{({g^x})}^{{r_{0vA}}}}{2^v}}}{{{{({g^{{r_{0vA}}}})}^x}}}} \right) \equiv \\& {\text{lb}}({2^{{v_{in}}}}) - {\text{lb}}({2^v}) \equiv {v_{in}} - v \end{aligned}$$ (14) 由式(13)、(14)可以看出,在密文状态下同态运算后解密的明文与先解密再计算得到的明文是一致的,因此,本文协议同态加法运算是正确的。
3.3.2 完备性分析
诚实的证明者执行本文协议未能通过验证概率为零知识证明式(6)、(8)、(10)、(11)或(12)失败的概率,根据正确性分析,诚实的证明者执行协议,零知识证明式(6)、(8)、(10)、(11)和(12)一定能被诚实验证者验证通过。
证明者欺骗验证者需要找到一组(
$ v',r' $ ),使$ v' \in M $ 且$ {2^v}{y^r}\bmod p = {2^{v'}}{y^{r'}}\bmod p $ 成立,然后用$ v' $ 代替v执行零知识证明式(6)、(8)、(10);或者使$ v' \in M $ 且$ g_0^v{h^r}\bmod {p_0} = g_0^{{v'}}{h^{r'}}\bmod {p_0} $ 成立,用$ v' $ 代替v执行零知识证明式(8)、(10)、(11)、(12)。它们都属于离散对数困难性问题,因此在计算上是不可行的。假设上述情况证明者不能欺骗验证者时,证明者要攻破零知识证明式(6)、(8)、(10)、(11)和(12)才能成功欺骗诚实的验证者,即:证明者破解了安全哈希函数,在计算上是不可行的,因此证明者很难成功欺骗验证者。
3.3.3 零知识性分析
定理5 攻击者由交易双方公钥推导出私钥是困难的,根据密文和已知参数恢复相应的明文信息也是困难的。
证明:由于本文协议选取的+HomElG算法的生成元
$ g \in Z_p^* $ ,且p–1包含大素数因子,若攻击者可由交易双方公钥y求出对应的私钥x,则说明其攻破了在$ Z_p^* $ 上的离散对数困难问题,在计算上并不可行。因此验证者由交易双方的公钥推导出私钥是困难的。由式(1)可以看出,从
$ {g^{{r_{}}}} $ 和y求出$ {y^{{r_{}}}} $ 是DDH困难问题[16]。在没有私钥的条件下,若攻击者根据密文和已知参数恢复了相应的明文信息,则相当于破解了DDH困难问题。因此,验证者根据密文和已知参数恢复相应的明文信息也是困难的。定理6 通过公开承诺密钥
$ (g,h) $ 的ElGamal承诺,攻击者根据已知参数求出隐藏的明文信息是困难的。证明:协议选取的生成元
$ {g_0},h \in G $ ,其中$ ({g_0},h) $ 的DL关系是未知的。以$ {E_v} = ({c_v},{d_v}) $ 为例,可以得到$ {d_v} = g_0^v{h^{{r_{vE}}}} $ ,攻击者选取随机数和秘密值$ (r',v') $ ,若$ {d_v} $ 能被打开为两个不同消息$ (r',v') $ 和$ ({r_{bE}},v) $ ,则有:$$ \begin{aligned}[b] {d_v} =& g_0^v{h^{{r_{bE}}}}\bmod {p_0} = g_0^{{v'}}{h^{r'}}\bmod {p_0} \Rightarrow \\&{h^{{r_{bE}} - r'}} = g_0^{{v - v'}}\bmod {p_0} \Rightarrow \\&h = g_0^{{(v - v')/({r_{bE}} - r')}}\bmod {p_0} \end{aligned} $$ (15) 由式(15)可知,
$ {\log _{{g_0}}}\;h $ 可被计算,而$ ({g_0},h) $ 的DL关系是未知的。在多项式算法中,根据已知参数求解离散对数大概需要$ O(\sqrt {{p_0} - 1} ) $ 次群运算,因此验证者从已知参数和公开承诺密钥$ ({g_0},h) $ 下ElGamal承诺求出隐藏的明文信息是困难的。零知识证明式(6)、(8)、(10)都是类似的相等性证明,下面将以零知识证明式(6)为例分析零知识性。攻击者可获得的公开数据为
$ \eta $ 、$ {C_{vA}} $ 、$ {C_{vB}} $ 、$ ({e_1},{f_1}) $ 、$ ({e_2},{f_2}) $ 、$ {Z_v} $ 、$ {Z_{r1}} $ 、$ {Z_{r2}} $ 以及相应的系统参数,由定理5可知,攻击者从$ {C_{vA}} $ 、$ {C_{vB}} $ 、$ ({e_1},{f_1}) $ 、$ ({e_2},{f_2}) $ 获取关于$ v $ 的相关知识是困难的;$ \eta $ 为安全哈希函数,攻击者从$ \eta $ 中获取关于v的有效信息是困难的;$ {Z_{r1}} $ 、$ {Z_{r2}} $ 是关于未知数$ ({r_{0vA}},{r'_1}) $ 和$ ({r_{0vB}},{r'_2}) $ 的式子,$ {Z_v} $ 是关于未知数v和$ v' $ 的式子,攻击者很难从一个含有两个未知数的式子确定其中一个未知数的值。因此验证者从零知识证明式(6)的证明中获得关于v的更多信息是困难的。在零知识证明式(8)、(10)中,由定理6可知,攻击者从公开承诺密钥$ ({g_0},h) $ 下的ElGamal承诺中获取关于v的相关知识是困难的,因此验证者从零知识证明式(8)、(10)的证明中获得关于$ v $ 的更多信息是困难的。零知识证明式(11)、(12)是两个Bulletproofs范围证明,由于Bulletproofs是统计零知识证明[13],因此验证者从零知识证明式(11)、(12)的证明中获得关于v的更多信息同样是困难的。
综上,本文协议在随机预言模式下是统计零知识证明。
4. 测试与分析
4.1 测试环境
1)系统环境:ubuntu虚拟机18.04,8 GB内存,50 GB存储磁盘,处理器内核总数为4,带宽为1 000 Mb/s。
2)联盟链网络:使用Hyperledger Fabric 1.4.0搭建;部署peer0.coop.itcast.cn、peer1.coop.itcast.cn、peer0.nz.itcast.cn、peer1.nz.itcast.cn等4个peer节点充当记账节点,部署节点Orderer为排序节点;状态数据库采用levelDB;区块的最大交易数为10笔,最大打包时间间隔为2 s,最大字节数为10 MB。
3)共识协议:采用corgi-kx的PBFT算法(具体请查阅 https://github.com/corgikx/blockchain_consensus_algorithm,2019–12–01),N0、N1、N2、N3充当验证节点。
4)Bulletproofs范围证明采用yjjnls的包(具体请查阅 https://github.com/yjjnls/awesome-blockchain/tree/master/src/ConfidentialTx/zkproofs),其他运算主要采用go自带的math和math/big包。
5)编程语言:GO语言。
4.2 功能测试
假设联盟链的两个用户Alice和Bob之间存在一笔交易,即Alice向Bob转账100。首先,分别为Alice和Bob初始化500的账户余额;其次,Alice需要为交易生成零知识证明证据并上传到联盟链;然后,联盟链节点从链上获取零知识证明证据,通过PBFT算法共识交易合法性,共识交易合法通过后,记账节点更新Alice和Bob账户密文;最后,检查Alice和Bob的账户更新情况。
1)账户初始化。
在测试过程中,对链码实例化时,会为Alice和Bob初始化500的账户余额,经+HomElGamal加密后上传到联盟链,账户结构为账户标识(用户公钥)和账户余额密文,如图2所示。
由图2可以看出,在链码mycc-1.0的Log中输出了初始化后Alice和Bob的账户情况,用户Alice的账户标识为Alice的公钥,账户余额为密文(c1,c2),用户Bob的账户同理。
2)Alice为交易生成零知识证明证据并上传到联盟链。Alice从联盟链CA中心获取系统公共参数,从CABob获取Bob的公钥,根据自己的公、私钥和账户余额、Bob的公钥、系统公共参数、转账金额等,按照第3.2节的过程,生成本次交易相关零知识证明证据并上传到联盟链,包括EqualEvidence(交易双方交易金额相等证据)、AmountEqualEvidence(交易金额大于零中相等性证明证据)、AmountRangeEvidence(交易金额大于零中Bulletproof范围证明证据)、BalanceEqualEvidEnce(交易余额不小于零中相等性证明证据)、Balance-RangeEvidence(交易余额不小于零中Bulletproof范围证明证据),如图3所示。
3)联盟链节点从链上获取零知识证明证据,通过PBFT算法共识交易合法性。
首先,联盟链节点获取本次交易的相关零知识证明证据,如图4所示。
由图4可以看出,通过链上交易TXID,Alice从“864bca7d7ed5c81b8843cc9dcbb5901d919f68123fc6f810e74ac2219d78a203”获得本次交易Transcation1的相关零知识证明证据。
然后,调用PBFT算法对交易合法性进行共识。联盟链节点根据相关零知识证明证据验证交易合法性时包括5个部分:VerifyEqual(交易双方交易金额相等验证)、VerifyAmountEqual(交易金额大于零中相等性证明验证)、VerifyAmountRange(交易金额大于零中Bullet-proof范围证明验证)、VerifyBalanceEqual(交易余额不小于零中相等性证明验证)、VerifyBalanceRange(交易余额不小于零中Bulletproof范围证明验证)。每个部分验证通过返回1,验证失败返回0;若节点的响应消息为“11111”时,则本节点验证本次交易合法。
参与本次共识测试的节点共4个,分别为N0、N1、N2、N3,允许的最大拜占庭节点数f为1,其中N0为主节点。由于共识过程中节点处理过程类似,下面以N0节点为例分析共识过程:
①主节点N0在获取到Request之后,根据零知识证明证据判决此次交易合法性并处理后生成Pre-prepare消息后,广播给其他从节点,如图5(a)所示。
②从节点在接受到Pre-prepare消息后,首先,比对Request与Pre-prepare的消息摘要,确保消息完整性;然后,根据零知识证明证据判决此次交易合法性并处理后,生成Prepare消息并广播给其他节点,如图5(b)所示。
③N0节点在收到其他节点(N1,N2)发送的Prepare消息后,首先,比对消息中的交易合法性验证结果,如果至少3(即2f+1,本次测试f=1)个节点的Prepare消息的交易合法性验证结果一致(包括本地节点),使用自己的私钥对交易合法性验证结果签名;然后,经过处理生成Commit消息,广播给其他节点,如图5(c)所示。
④N0节点在收到其他发送节点(N1,N3)的Commit消息后,根据各节点公钥验证确认消息的签名,至少3个节点的Commit消息的验证通过后(包括本地节点),确认本次交易合法性验证结果,经处理生成Reply消息,回复到联盟链上,如图5(d)所示。
⑤当记账节点收集到的Reply消息中至少2(即f+1,本次测试f=1)个合法性验证结果为“11111”时,本次交易合法性验证通过,记账节点根据密文同态运算更新账本和状态数据库。
4)检查Alice和Bob账户更新。
分别通过Alice和Bob的公钥查询账户余额密文,私钥解密判断账户是否已经更新。获取Alice的账户余额密文结果并解密,如图6所示。
由图6可以看出,通过链上交易TXID,“ab35eeb31426f93711fc798b8698c6738968cc34d9799b192b6a4a99c9e39b02”是上一次Alice账户的链上交易TXID,Alice从“f9039bb9b6c2124ed33195497ebc7ca6cbdd1f123f5f263a8c19a26c2773c914”获得本次交易账户更新后自己的账户余额密文C(c1,c2)。Alice根据获取到的密文C(c1,c2)和自己的私钥x解密账户余额,得到账户余额为400。
获取Bob的账户余额并解密过程与获取Alice账户余额并解密过程类似,得到账户余额为600,如图7所示。
4.3 性能测试与分析
4.3.1 不同密钥长度下的性能测试
使用不同密钥长度测试本文协议的效率如表1所示。为了降低实验偶然性,表1中数据均为50次测试的平均值,密钥长度越长,表明协议安全性越高。
表 1 不同密钥长度下的效率对比Table 1 Comparison efficiency under the different key length密钥
长度/
bit算法
效率/
ms交易金额相等
证明时间/ms交易金额大于
0证明时间/ms交易余额不小于
0证明时间/ms证据生成 验证 证据生成 验证 证据生成 验证 1 024 66.2 26.4 22.5 43.0 34.1 44.2 31.3 2 048 124.1 75.1 61.0 87.4 83.2 88.7 86.1 3 072 150.3 295.1 187.2 102.6 106.7 156.4 104.9 4 096 208.6 404.2 272.1 187.7 190.6 214.8 178.3 8 192 506.2 1038.6 756.4 358.0 312.1 438.6 382.4 由表1可以看出,随着密钥长度的增大,协议各阶段效率都会降低,但总体时间均在ms级,可根据实际情况选择合适的安全参数,一般情况下设置密钥长度为3 072位。
4.3.2 与其他协议性能的对比与分析
协议[3–4]的基础加密算法采用Paillier的效率为1 500.6 ms;协议[3]交易合法性通过验证交易输入输出金额相等实现,即交易金额相等性零知识证明;协议[4]验证交易合法性时仅验证交易金额大于零[8]。协议[5]通过Pedersen承诺实现交易金额的隐藏,交易合法性通过验证交易金额相等和交易金额大于零实现。协议[7]基础加密算法采用椭圆曲线同态加密,交易合法性通过交互式零知识证明验证交易金额相等实现。协议[8]基础加密算法采用改进型paillier算法,验证交易合法性时需验证交易金额相等、交易金额大于零和交易余额大于零。为了方便比较性能,统一选择密钥长度为3 072 bit,测试数据为12 bit的十进制整数,保密算法效率包括密钥生成时间以及加、解密时间;将本文协议的范围证明的证据生成和验证时间相加后表示各阶段的范围证明时间。在相同密钥长度下,各协议的效率对比结果如表2所示。
表 2 相同密钥长度下的效率对比Table 2 Comparison efficiency under the same key length协议 密钥长
度/bit基础保密算法 保密算法
效率/ms交易金额相等零
知识证明时间/ms交易金额大于0零
知识证明时间/ms交易余额不小于0零
知识证明时间/ms证据生成 验证 证据生成 验证 证据生成 验证 协议[3] 3 072 Paillier 1 500.6 598.6 618.1 — — — — 协议[4] 3 072 Paillier 1 500.6 — — 2 043.1 1 556.4 — — 协议[5] 3 072 Pedersen承诺 — 79.0 100.1 29.4 18.6 — — 协议[7] 3 072 椭圆曲线算法 844.6 缓慢 缓慢 — — — — 协议[8] 3 072 改进型paillier 271.0 598.6 618.1 2 043.1 1 556.4 2 037.1 1 556.4 本文协议 3 072 +HomElG 150.3 295.1 187.2 102.6 106.7 156.4 104.9 由表2可以看出:与协议[3–5,7]相比,本文协议不仅对交易金额相等进行零知识证明,而且对交易金额大于零、交易余额不小于零进行了零知识证明,交易合法性验证策略更完善;与协议[3–4,7–8]相比,本文协议在加解密算法效率、验证交易合法性的零知识证明效率均有优势。
5. 结 论
本文提出了一个面向联盟链转帐隐私保护的+HomElG零知识证明协议。首先,设计了基于PBFT的联盟链转账隐私保护应用,详细论述了共识交互场景,通过同态加密和零知识证明技术,将交易敏感信息加密并生成相关零知识证明证据公布到联盟链上,供联盟链验证节点在共识过程中公开验证。然后,选用高效的+HomElG同态加密算法,基于Σ协议和Fiat-Shamir算法的思想,构造一种非交互式零知识证明协议,通过+HomElG算法加密交易金额及账户余额,根据密文生成相关零知识证明证据,可以对转账双方的交易金额相等、交易金额大于零、转账方的交易余额不小于零进行零知识证明,使得交易合法性验证策略更完善;在DDH前提下的分析可以看出,本文协议具有正确性、完备性、零知识性。最后,通过构建联盟链转账交易隐私保护原型系统,测试结果表明本文协议可以保护联盟链用户交易金额、交易余额等隐私信息,与同类协议相比,本文协议的效率更高、策略更完善。因此,本文协议可应用于联盟链转账隐私保护场景中,对于促进联盟链的应用与推广具有重要意义。
本文所设计零知识证明协议,在范围证明时使用了Bulletproofs,但采用了可证明安全理论,规约过程增加了相等性证明。联盟链转账过程中的隐私保护应包括身份信息的保护,是下一步的研究方向。
-
表 1 不同密钥长度下的效率对比
Table 1 Comparison efficiency under the different key length
密钥
长度/
bit算法
效率/
ms交易金额相等
证明时间/ms交易金额大于
0证明时间/ms交易余额不小于
0证明时间/ms证据生成 验证 证据生成 验证 证据生成 验证 1 024 66.2 26.4 22.5 43.0 34.1 44.2 31.3 2 048 124.1 75.1 61.0 87.4 83.2 88.7 86.1 3 072 150.3 295.1 187.2 102.6 106.7 156.4 104.9 4 096 208.6 404.2 272.1 187.7 190.6 214.8 178.3 8 192 506.2 1038.6 756.4 358.0 312.1 438.6 382.4 表 2 相同密钥长度下的效率对比
Table 2 Comparison efficiency under the same key length
协议 密钥长
度/bit基础保密算法 保密算法
效率/ms交易金额相等零
知识证明时间/ms交易金额大于0零
知识证明时间/ms交易余额不小于0零
知识证明时间/ms证据生成 验证 证据生成 验证 证据生成 验证 协议[3] 3 072 Paillier 1 500.6 598.6 618.1 — — — — 协议[4] 3 072 Paillier 1 500.6 — — 2 043.1 1 556.4 — — 协议[5] 3 072 Pedersen承诺 — 79.0 100.1 29.4 18.6 — — 协议[7] 3 072 椭圆曲线算法 844.6 缓慢 缓慢 — — — — 协议[8] 3 072 改进型paillier 271.0 598.6 618.1 2 043.1 1 556.4 2 037.1 1 556.4 本文协议 3 072 +HomElG 150.3 295.1 187.2 102.6 106.7 156.4 104.9 -
[1] 曾诗钦,霍如,黄韬,等.区块链技术研究综述:原理、进展与应用[J].通信学报,2020,41(1):134–151. doi: 10.11959/j.issn.1000-436x.2020027 Zeng Shiqin,Huo Ru,Huang Tao,et al.Survey of blockchain:Principle,progress and application[J].Journal on Communications,2020,41(1):134–151 doi: 10.11959/j.issn.1000-436x.2020027 [2] 赵辉,李星,谭嘉诚,等.智能合约安全问题与研究现状[J].信息技术与网络安全,2021,40(5):1–6. doi: 10.19358/j.issn.2096-5133.2021.05.001 Zhao Hui,Li Xing,Tan Jiacheng,et al.Research status of smart contract security[J].Information Technology and Network Security,2021,40(5):1–6 doi: 10.19358/j.issn.2096-5133.2021.05.001 [3] Wang Qin,Qin Bo,Hu Jiankun,et al.Preserving transaction privacy in bitcoin[J].Future Generation Computer Systems,2020,107:793–804. doi: 10.1016/j.future.2017.08.026 [4] 刁一晴,叶阿勇,张娇美,等.基于群签名和同态加密的联盟链双重隐私保护方法[J].计算机研究与发展,2022,59(1):172–181. doi: 10.7544/issn1000-1239.20200576 Diao Yiqing,Ye Ayong,Zhang Jiaomei,et al.A dual privacy protection method based on group signature and homomorphic encryption for alliance blockchain[J].Journal of Computer Research and Development,2022,59(1):172–181 doi: 10.7544/issn1000-1239.20200576 [5] Narula N,Vasquez W,Virza M.Zkledger:Privacy-preserving auditing for distributed ledgers[C]//NSDI’18:Proceedings of the 15th USENIX Conference on Networked Systems Design and Implementation.Berkeley:USENIX Association,2018:65–80. [6] She Wei,Gu Zhihao,Lyu Xukang,et al.Homomorphic consortium blockchain for smart home system sensitive data privacy preserving[J].IEEE Access,2019,7:62058–62070. [7] 张小艳,李秦伟,付福杰.基于数字承诺的区块链交易金额保密验证方法[J].计算机科学,2021,48(9):324–329. doi: 10.11896/jsjkx.200800123 Zhang Xiaoyan,Li Qinwei,Fu Fujie.Secret verification method of blockchain transaction amount based on digital commitment[J].Computer Science,2021,48(9):324–329 doi: 10.11896/jsjkx.200800123 [8] 李龚亮,贺东博,郭兵,等.基于零知识证明的区块链隐私保护算法[J].华中科技大学学报(自然科学版),2020,48(7):112–116. doi: 10.13245/j.hust.200719 Li Gongliang,He Dongbo,Guo Bing,et al.Blockchain privacy protection algorithms based on zero-knowledge proof[J].Journal of Huazhong University of Science and Technology(Natural Science Edition),2020,48(7):112–116 doi: 10.13245/j.hust.200719 [9] Fauzi P,Meiklejohn S,Mercer R,et al.Quisquis:A new design for anonymous cryptocurrencies[EB/OL].[2021–11–20].https://eprint.iacr.org/2018/990#. [10] Cramer R.Modular design of secure yet practical cryptographic protocol[D].Amsterdam:University of Amsterdam,1996. [11] Bagherpour B,Zaghian A,Sajadieh M.Sigma protocol for faster proof of simultaneous homomorphism relations[J].IET Information Security,2019,13(5):508–514. doi: 10.1049/iet-ifs.2018.5167 [12] Damgård I.On Σ-protocols[EB/OL].[2021–11–20].https://cs.au.dk/~ivan/Sigma.pdf. [13] Bünz B,Bootle J,Boneh D,et al.Bulletproofs:Short proofs for confidential transactions and more[C]//Proceedings of the 2018 IEEE Symposium on Security and Privacy.San Francisco:IEEE,2018:315–334. [14] Bellare M,Rogaway P.Random oracles are practical:A paradigm for designing efficient protocols[C]//CCS’93:Proceedings of the 1st ACM Conference on Computer and Communications Security.New York:ACM,1993:62–73. [15] Pedersen T P.Non-interactive and information-theoretic secure verifiable secret sharing[M]//Advances in Cryptology—CRYPTO’91.Berlin:Springer,1992:129–140. [16] Wang Licheng,Wang Lihua,Pan Yun,et al.Discrete logarithm based additively homomorphic encryption and secure data aggregation[J].Information Sciences,2011,181(16):3308–3322. doi: 10.1016/j.ins.2011.04.002 [17] Rivest R L,Adleman L,Dertouzos M L.On data banks and privacy homomorphisms[J].Foundations of Secure Computation,1978,4(11):169–180. [18] 杨亚涛,赵阳,张卷美,等.同态密码理论与应用进展[J].电子与信息学报,2021,43(2):475–487. doi: 10.11999/JEIT191019 Yang Yatao,Zhao Yang,Zhang Juanmei,et al.Recent development of theory and application on homomorphic encryption[J].Journal of Electronics & Information Technology,2021,43(2):475–487 doi: 10.11999/JEIT191019 [19] Rackoff C,Simon D R.Non-interactive zero-knowledge proof of knowledge and chosen ciphertext attack[M]//Advances in Cryptology—CRYPTO’91.Berlin:Springre,1992:433–444. [20] Wang Ruijin,Tang Yucheng,Pei Xikai,et al.Block-chain privacy protection scheme based on lightweight homomorphic encryption and zero-knowledge proof[J].Computer Science,2021,48(增刊2):547–551 王瑞锦,唐榆程,裴锡凯,等.基于轻量级同态加密和零知识证明的区块链隐私保护方案[J].计算机科学,2021,48(Supp2):547–551. [21] 李一聪,周宽久,王梓仲.基于零知识证明的区块链隐私保护研究[J].空间控制技术与应用,2022,48(1):44–52. doi: 10.3969/j.issn.1674-1579.2022.01.007 Li Yicong,Zhou Kuanjiu,Wang Zizhong.A survey of block chain privacy protection research based on zero-knowledge proof[J].Aerospace Control and Application,2022,48(1):44–52 doi: 10.3969/j.issn.1674-1579.2022.01.007 [22] Wang Yuhao,Cai Shaobin,Lin Changlong,et al.Study of blockchains’s consensus mechanism based on credit[J].IEEE Access,2019,7:10224–10231. doi: 10.1109/ACCESS.2019.2891065 [23] Wan Shaohua,Li Meijun,Liu Gaoyang,et al.Recent advances in consensus protocols for blockchain:A survey[J].Wireless Networks,2020,26(8):5579–5593. doi: 10.1007/s11276-019-02195-0 [24] 周艺华,方嘉博,贾玉欣,等.基于PBFT的联盟链共识算法[J].计算机科学,2021,48(11):133–141. doi: 10.11896/jsjkx.201200148 Zhou Yihua,Fang Jiabo,Jia Yuxin,et al.Consortium blockchain consensus algorithm based on PBFT[J].Computer Science,2021,48(11):133–141 doi: 10.11896/jsjkx.201200148 [25] Chen Yu,Ma Xuecheng,Tang Cong,et al.PGC:Decentralized confidential payment system with auditability[M]//Computer Security—ESORICS 2020.Cham:Springer,2020:590–610.