1.基于同态加密的区块链交易数据隐私保护方法,其特征在于,包括以下步骤:S1.在交易准备阶段生成密钥对;
S101.认证机构生成认证身份用的公钥、私钥;
S102.交易双方A、B生成加密交易额的公钥、私钥,A为交易发起方,B为交易另一方;
S103.除认证节点外所有节点生成签名用的公钥、私钥;
S2.交易发起方A将交易额分解为n个不同大小的部分,并分别发送给区块链中的n个节点;
S3.接收到分解交易额的节点i验证交易发起方A身份真实性后,分别使用交易方A、B的公钥加密分解的交易额,得到分解交易额密文Cmai、Cmbi,使用节点i的私钥签名,将签名的密文分解交易额发给交易发起方A;
S4.交易发起方A利用节点i的公钥,解密节点i签名的密文分解交易额,验证节点i的真实性,使用自己的私钥对分解交易额密文Cmai进行解密,得到n个分解交易额并求和后验证是否与原始交易额一致;若验证成功,将分解交易额密文数据使用自己的私钥签名后发送给交易方B;
S5.交易方B利用交易方A的公钥解密A签名的分解交易额密文数据,验证A身份真实性,利用自己的私钥对分解交易额密文Cmbi进行解密,得到n个分解交易额并求和后验证是否与原始交易额一致;若验证成功,将A签名的分解交易额密文数据使用自己的私钥签名后发送到记账节点;
S6.记账节点验证交易是否合法;
记账节点利用交易方B的公钥解密交易方B签名的分解交易额密文数据,验证B身份真实性,并利用A的公钥对A签名的分解交易额密文数据进行解密,得到分解交易额密文Cmai、Cmbi,根据同态加密的加同态特性,验证交易额是否大于0且小于A的余额;若验证成功,则记账节点将交易写入新区块中,并更新A与B的钱包余额。
2.根据权利要求1所述的区块链交易数据隐私保护方法,其特征在于,步骤S1中,交易双方A、B采用虚拟身份,交易双方A、B分别向认证机构发送自己的虚拟身份与签名公钥,认证机构使用其私钥skeca处理交易方A的虚拟身份VIDa,生成认证的交易方A的签名向交易方A发送证书 认证机构使用其私钥skeca处理交易方B的虚拟身份VIDb,生成认证的交易方B的签名 向交易方B发送证书 认证机构记录交易方A、B的真实身
份与虚拟身份的对应关系。
3.根据权利要求2所述的区块链交易数据隐私保护方法,其特征在于,步骤S2中,交易发起方A将交易额m分解为不同大小的部分mi,i=1,2,...n,m=m1+m2+m3+...+mn,n表示交易额分解的数量;对分解后的交易额分别编号,得到分解交易额序列{(m1,1),(m2,2),(m3,
3)...(mn,n)},每部分分解交易额附上交易方A的证书C(A);从区块链中随机选出n个节点,将分解交易额数据(C(A),mi,i),i=1,2,...n分别发送给选出的n个节点,(C(A),mi,i)表示第i个带有证书的分解交易额数据。
4.根据权利要求3所述的区块链交易数据隐私保护方法,其特征在于,步骤S3中,节点i收到分解交易额数据(C(A),mi,i)后,使用交易方A的公钥pkea和认证机构的公钥pkeca解密得到交易方A的证书C(A)和交易方A的签名 与原明文进行对比,验证用户身份的真实性;使用交易方A的公钥pkpa加密分解交易额(mi,i),得到密文(cmai,cai),并使用自己的私钥Skei签名,得到 cmai表示使用A的公钥加密的分解交易额,cai表示使用A的公钥加密的分解交易额的编号;使用交易方B的公钥pkpb加密分解交易额(mi,i),得到密文(cmbi,cbi),并使用自己的私钥skei签名,得到 cmbi表示使用B的公钥加密的分解交易额,cbi表示使用B的公钥加密的分解交易额的编号;对密文分解交易额数据 与进行拼接,得到节点i签名的密文数据块
发送给交易方A。
5.根据权利要求4所述的区块链交易数据隐私保护方法,其特征在于,步骤S4中,交易方A收到节点i签名的密文数据块 后,利用节点i的公钥pkei进行解密,验证节点i身份真实性,再使用自己的密钥skpa对密文(cmai,cai)进行解密,得到分解交易额(mi,i),对得到的n个分解交易额mi,i=1,2,...n求和,若分解交易额mi,i=1,2,...n的总和与原始交易额m一致,则验证成功,将接收到的密文数据块使用自己的私钥skea进行签名,得到带有A签名的密文数据块序列 与A的证书C(A)拼接,得到带有A证书的密文分解交易额数据 密文数据块集合c={c1,c2,c3,...,cn},将密文分解交易额数据发送给交易方B。
6.根据权利要求5所述的区块链交易数据隐私保护方法,其特征在于,步骤S5中,交易方B接收到密文分解交易额数据 后,使用A的公钥pkea和认证机构的公钥pkeca解密A的证书C(A),将得到的交易方A的签名 与原明文进行对比,验证交易方A身份真实性,然后使用自己的密钥skpb对密文(cmbi,cbi)进行解密,得到分解交易额(mi,i),对得到的n个分解交易额mi,i=1,2,...n求和,若分解交易额mi,i=1,2,...n的总和与原始交易额m一致,则验证成功;将得到的 使用自己的密钥skeb进行签名,得到带有B签名的密文交易额数据 并与B的证书C(B)拼接,得
到带有B证书的密文交易额数据 发送到记账节点。
7.根据权利要求6所述的区块链交易数据隐私保护方法,其特征在于,步骤S6中,记账节点在接收到带有B证书的密文分解交易额数据 后,使用B的公钥pkeb与认证机构的公钥pkeca解密B的证书C(B),将得到的交易方B的签名与原明文进行对比,验证B身份的真实性;然后使用B的公钥pkeb对带有B签名的密文交易额数据 解密,得到 使用A的公钥
pkea解密 得到密文数据块序列(c1,c2,c3,...,cn);
记账节点根据Paillier同态加密的加同态特性,将密文数据块序列(c1,c2,c3,...,cn)中采用A公钥加密的密文cmai,i=1,2,...n和采用B公钥加密的密文cmbi,i=1,2,...n分别相加,得到:式中ca表示采用A公钥加密的密文交易额,cb表示采用B公钥加密的密文交易额,表示同态运算;
记账节点验证交易是否合法,即验证交易额是否大于0且小于A的余额,具体如下:式中Wpresenta、Wpresentb分别表示当前交易方A、B的钱包余额,Enc(Wpresenta)、Enc(Wpresentb)分别表示当前交易方A、B的钱包余额的密文;Wa、Wb分别表示交易完成后交易方A、B的钱包余额,Enc(Wa)、Enc(Wb)分别表示交易完成后交易方A、B的钱包余额的密文;
若验证成功,则记账节点将交易写入新区块中,并更新交易方A、B的钱包余额。
8.根据权利要求3‑7任意一项所述的区块链交易数据隐私保护方法,其特征在于,n的取值为区块链的节点总数量的1/6向下取整。
9.根据权利要求8所述的区块链交易数据隐私保护方法,其特征在于,认证机构利用Elgamal算法生成认证身份用的密钥对。
10.根据权利要求9所述的区块链交易数据隐私保护方法,其特征在于,交易双方A、B采用Paillier算法生成加密交易额用的密钥对。