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的钱包余额;
步骤S1中,交易双方A、B采用虚拟身份,交易双方A、B分别向认证机构发送自己的虚拟身份与签名公钥,认证机构使用其私钥 处理交易方A的虚拟身份 ,生成认证的交易方A的签名 ,向交易方A发送证书 ;认证机构使用其私钥 处理交易方B的虚拟身份 ,生成认证的交易方B的签名,向交易方B发送证书 ;认证机构记录交易方A、B的真实身份与虚拟身份的对应关系。
2.根据权利要求1所述的区块链交易数据隐私保护方法,其特征在于,步骤S2中,交易发起方A将交易额m分解为不同大小的部分 , ,n表示交易额分解的数量;对分解后的交易额分别编号,得 到分解交 易额 序列,每部分分解交易额附上交易方A的证书C(A);从区块链中随机选出n个节点,将分解交易额数据 分别发送给选出的n个节点,表示第i个带有证书的分解交易额数据。
3. 根据权利要求2所述的区块链交易数据隐私保护方法,其特征在于,步骤S3中,节点i收到分解交易额数据 后,使用交易方A的公钥 和认证机构的公钥 解密得到交易方A的证书C(A)和交易方A的签名 ,与原明文进行对比,验证用户身份的真实性;使用交易方A的公钥 加密分解交易额 ,得到密文 ,并使用自己的私钥 签名,得到 , 表示使用A的公钥加密的分解交易额, 表示使用A的公钥加密的分解交易额的编号;使用交易方B的公钥 加密分解交易额 ,得到密文 ,并使用自己的私钥 签名,得到 , 表示使用B的公钥加密的分解交易额, 表示使用B的公钥加密的分解交易额的编号;对密文分解交易额数据与 进行拼接,得到节点i签名的密文数据块,发送给交易方A。
4.根据权利要求3所述的区块链交易数据隐私保护方法,其特征在于,步骤S4中,交易方A收到节点i签名的密文数据块 后,利用节点i的公钥 进行解密,验证节点i身份真实性,再使用自己的密钥 对密文 进行解密,得到分解交易额 ,对得到的n个分解交易额 求和,若分解交易额的总和与原始交易额m一致,则验证成功,将接收到的密文数据块使用自己的私钥 进行签名,得到带有A签名
的密文数据块序列 ,与A的证书 拼接,得到带有A证书的密文分解交易额数据 ,密文数据块集合 ,将密文分解交易额数据
发送给交易方B。
5.根据权利要求4所述的区块链交易数据隐私保护方法,其特征在于,步骤S5中,交易方B接收到密文分解交易额数据 后,使用A的公钥 和认证机构的公钥解密A的证书C(A),将得到的交易方A的签名 与原明文进行对比,验证交易方A身份真实性,然后使用自己的密钥 对密文 进行解密,得到分解交易额 ,对得到的n个分解交易额 求和,若分解交易额 的总和与原始交易额m一致,则验证成功;将得到的 使用自己的密钥 进行签名,得到带有B签名的密文交易额数据 ,并与B的证书 拼接,得到带有B证书的密文交易额数据 ,发送到记账节点。
6.根据权利要求5所述的区块链交易数据隐私保护方法,其特征在于,步骤S6中,记账节点在接收到带有B证书的密文分解交易额数据 后,使用B的公钥 与认证机构的公钥 解密B的证书 ,将得到的交易方B的签名与原明文进行对比,验证B身份的真实性;然后使用B的公钥 对带有B签名的密文交易额数据 解密,得到 ;使用A的公钥
解密 得到密文数据块序列 ;
记账节点根据Paillier同态加密的加同态特性,将密文数据块序列 中采用A公钥加密的密文 和采用B公钥加密的密文 分别相加,得到:式中 表示采用A公钥加密的密文交易额, 表示采用B公钥加密的密文交易额, 表示同态运算;
记账节点验证交易是否合法,即验证交易额是否大于0且小于A的余额,具体如下:式中 、 分别表示当前交易方A、B的钱包余额, 、 分别表示当前交易方A、B的钱包余额的密文; 、 分别表示交易完成后交易方A、B的钱包余额, 、 分别表示交易完成后交易方A、B的钱包余额的密文;
若验证成功,则记账节点将交易写入新区块中,并更新交易方A、B的钱包余额。
7.根据权利要求2‑6任意一项所述的区块链交易数据隐私保护方法,其特征在于,n的取值为区块链的节点总数量的1/6向下取整。
8.根据权利要求7所述的区块链交易数据隐私保护方法,其特征在于,认证机构利用Elgamal算法生成认证身份用的密钥对。
9.根据权利要求8所述的区块链交易数据隐私保护方法,其特征在于,交易双方A、B采用Paillier算法生成加密交易额用的密钥对。