一种基于区块链的隐私保护机密交易方法

文档序号:31357818发布日期:2022-08-31 13:59阅读:172来源:国知局
一种基于区块链的隐私保护机密交易方法

1.本发明涉及一种基于区块链的隐私保护机密交易方法,属于区块链应用技术领域。


背景技术:

2.比特币作为一种没有中心发行方和交易处理器的加密货币,是一种公开可验证的分布式账本,它将交易按区块打包,采用链式结构使区块首尾相连。区块链存储了自创世区块以来的所有交易,每笔交易以未花费交易输出(unspent transaction output,utxo)的形式记录,公开显示了交易金额的来源及去向。
3.比特币采用工作量证明(proof of work,pow)共识机制,使整个系统不受单一节点控制,具有去中心化的显著特征。使用数字签名技术,将用户的公钥作为交易地址,使其具有匿名性。采用哈希函数、merkle保证区块完整并能被迅速验证。比特币作为一种支付系统,不需要可信第三方介入即可完成交易。基于去中心化、不可篡改、可溯源的特性,成为了区块链电子支付系统的样板。
4.作为区块链实现的法定货币,可以为社会提供多种好处,包括降低高昂的现金生产处理成本、以匿名交易替代信用卡支付等非匿名数字支付以改善用户隐私、以密码学技术保证银行不能篡改用户数据、提升用户信任度等。
5.然而,对于金融支付系统而言,交易隐私是必须要考虑的技术问题。通常,交易隐私包括两种属性:(1)匿名性,即隐藏交易中发送方和接收方的身份;(2)机密性,即隐藏转账金额。但是,以比特币为蓝本的电子支付系统在交易隐私中存在诸多缺陷。由于交易记录直接存储在区块链中,允许所有用户公开访问并验证交易的正确性,这种模式虽然消除了整个系统受某一中心节点控制的隐患,但是同时也直接或间接暴露了大量信息,一些重要交易(如大额交易)可能与现实事件产生关联,从而暴露用户真实身份。此外,交易记录通常含有个人生活习惯等敏感知识,例如购物习惯可以反映用户收入情况和生活爱好。对于金融领域,交易信息不仅是重要敏感的信息,同时也是宝贵的资源,需要采取必要措施来防止非授权用户查阅。
6.目前,一种解决方式是采取加密算法对交易数据进行加密,从而保护用户交易隐私,但是,加解密高额的计算开销以及密钥托管等安全问题,使其难以在大规模支付系统中应用。此外,区块链支付系统的一个突出问题是监管难,匿名性为监管带来了很大不便,因此,一些数字货币也被非法用于经济犯罪,一定程度上阻碍了数字货币的发展。
7.因此,在实际应用中,保护交易隐私和监管之间是一种相对冲突的要求。例如,使用明文身份和金额的交易处理速度快,易于监管,却不提供隐私保护。化名的使用与比特币交易类似,虽然改善了用户隐私,但又使监管失效。
8.现有技术中,confidential asset和mimblewimble提出了利用加密承诺加强隐私保护,这种交易允许隐藏支付身份和价值,并容易混合交易,但不受监管。prcash提出了一种新的监管机制,使用基于承诺的mimblewimble作为解决方案的出发点,其采用一种零知
识证明结构为交易增加了监管功能,同时具备匿名性和较高的效率,并通过修改交易创建协议来改善mimblewimble的隐私,但是prcash引入了用户间的交互,增加了通信开销。act利用pailliar同态加密和bulletproofs聚合范围证明构造了一种act可审计的机密交易方案,提高了交易创建和验证效率,但又存在加解密计算开销及密钥托管等问题。
9.综上所述,现有的区块链交易技术,或保护了交易隐私而舍弃监管功能,或强调监管功能而舍弃了交易隐私。能够两者兼顾的可行方案很少,有个别方法却又引入复杂的设计和机制,在实际应用中难以实现和落地实施。


技术实现要素:

10.本发明的目的是针对现有技术存在的缺陷和不足,为解决区块链交易系统中无法有效同时实现隐私保护和监管性的技术问题,创造性地提出一种基于区块链的隐私保护机密交易方法。
11.首先,对本发明涉及的内容进行说明。
12.定义1:区块链
13.是指利用分布式存储、数字签名等技术实现的具有去中心化、不可篡改、可溯源的分布式账本。
14.定义2:银行
15.是指发起和接收转账交易的机构,银行是转账交易的主体,在转账交易中银行将资金转移至其他银行,或接收来自其他银行的转入资金,银行不创造和销毁资金;
16.定义3:监管方
17.是指对转账交易进行监管的机构或部门,能与银行交互,询问银行必要的私有数据并进行审计,如询问某银行某一时刻的资产情况,并将其与账本数据进行比对验证,以此实现对交易系统的监管;
18.定义4:账本
19.是指利用区块链技术实现的公共可见的账本,具体存储转账交易,银行将交易请求提交到账本,账本验证后将交易打包上链并全局广播,此时银行即可认为交易请求得到许可;
20.定义5:交易
21.是指某银行向其他银行发起资产转移的行为,本方法所提及的交易均为转账交易,交易可以是一对一转账,也可以是一对多转账,为了简明阐述方法的核心思想,本方法默认交易是一对一转账。
22.定义6:零知识证明
23.是指一种协议,这种协议的一方称为证明者(prover),它试图使被称为验证者(verifier)的另一方相信某个论断是正确的,却不向验证者泄露任何有用的信息;
24.定义7:数字签名
25.是指利用公钥密码技术对数字信息进行署名,生成只有信息发送者才能产生的无法伪造的一段数字串,这段数字串同时也是对信息发送者发送信息真实性的有效证明;
26.定义8:pederson承诺
27.是指涉及两方的二阶段交互协议,双方分别为承诺方和接收方。第一阶段为承诺
级阶段,承诺方选择一个消息m,以密文的形式发送给接收方,意味着自己不会更改m。第二阶段为打开阶段,承诺方公开消息m与盲化因子,接收方以此来验证其与承诺阶段所接收的消息是否一致;
28.定义9:范围证明
29.是指利用代数和密码学技术,生成对值v的证明,该证明能够使任意验证者相信v的值在某一区间[a,b]之间,但不泄露v值的其他任何信息。
[0030]
本发明采用以下技术方案实现。
[0031]
一种基于区块链的隐私保护机密交易方法,包括以下步骤:
[0032]
步骤1:初始化。
[0033]
监管方确定系统参数。银行向监管方注册生成公私钥对。账本存储银行公私钥对,并计算存储部分参数,用于后续验证。
[0034]
步骤2:发起交易,银行生成交易请求。
[0035]
具体地,步骤2包括以下步骤:
[0036]
步骤2.1:生成交易承诺和审计令牌
[0037]
交易发起方银行生成自己和其他所有银行的承诺。
[0038]
其中,承诺方式可以采用pederson承诺,将转账方金额设置为负,接收方金额设置为正,非参与方金额设置为0。生成审计令牌,用于监管方审计。
[0039]
由于交易承诺隐藏了交易金额,因此,交易发起方银行需要生成若干证明,用以说明发起交易的合理性。这些证明可以包括:
[0040]
证明1,用于证明所承诺的交易保持了资产不变,即交易没有凭空地产生或者销毁资产。
[0041]
证明2,用于证明所承诺的交易非无效交易,即交易金额不全为0。
[0042]
证明3,用于证明金额为负值的承诺所对应的银行必须为交易发起方,即交易发起方不能伪造其他银行对自己的转账。
[0043]
证明4,用于证明交易发起方银行有足够的资产用于发起转账交易,即转账金额不能高于交易发起方自身资产。
[0044]
步骤2.2:提交交易请求。
[0045]
交易发起方银行将交易承诺和所有的证明,均提交给账本。
[0046]
步骤3:交易处理,对交易进行验证,验证通过后进行上链。
[0047]
账本对所有证明进行验证,如全部证明均获验证通过,则账本将交易打包上链并全局广播,即认为交易请求得到了许可。否则,终止交易。
[0048]
步骤4:审计。监管方根据实际需求对银行进行审计。
[0049]
例如,可以包括资产审计、支出审计和收入审计。
[0050]
其中,资产审计,是监管方询问银行其截止某一时刻有多少资产,银行给出答复,监管方通过账本中的交易记录进行计算并验证。
[0051]
支出审计,是监管方询问银行某一时间段内转出多少资产,银行给出答复,监管方通过账本中的交易记录进行计算并验证。
[0052]
收入审计,是监管方询问银行某一时间段内接收多少资产,银行给出答复,监管方通过账本中的交易记录进行计算并验证。
[0053]
至此,通过上述方法,能够同时实现隐私保护和监管性要求。
[0054]
有益效果
[0055]
本发明方法,与现有技术相比,具有如下有益效果:
[0056]
1.本方法能够有效保护交易隐私。对于非交易方银行的其他各方银行而言,其既不能掌握交易的具体金额,也不能区分交易方的具体身份,很好地保护了交易隐私。
[0057]
2.本方法能够有效实施监管。监管方能够识别交易发起方身份,并对各银行的资产、支出和收入情况进行审计,具有很高的可监管性。
[0058]
3.本方法能够节省链上存储空间和带宽。交易由发起方生成,不许要与其他银行交互,也无需账本参与计算,有效地节省了链上存储空间和带宽。
附图说明
[0059]
图1为本发明方法的交易示意图。
[0060]
图2为本发明方法的账本示意图。
具体实施方式
[0061]
下面结合附图对本发明方法的具体实施过程做进一步详细说明。
[0062]
如图1所示,详细阐述了发起交易请求、账本进行交易验证和监管方对交易进行监管的全部过程。
[0063]
一种基于区块链的隐私保护机密交易方法,包括以下步骤:
[0064]
步骤1:初始化。监管方确定系统参数。银行向监管方注册生成公私钥对。账本存储银行公私钥对,并计算存储一部分参数,用于后续验证。
[0065]
具体地,监管方选择素数p和q,计算:
[0066]
n=pq
[0067][0068]
其中,n为计算交易承诺所需模数,为欧拉函数。素数p和q的取值根据具体的安全需要来确定。
[0069]
银行banki向监管方注册得到公私钥对(pki,ski),满足其中,pk代表公钥,sk代表私钥,下标i代表属于第i家银行。
[0070]
账本存储各银行的ski,计算存储参数用于后续验证。g表示zn中某一个子群的生成元,zn表示对全体整数z取模n后运算结果的集合。
[0071]
步骤2:发起交易,银行生成交易请求。
[0072]
如图2所示,设共有n家银行,包括以下步骤:
[0073]
步骤2.1:生成交易承诺和审计令牌。
[0074]
当银行bank1向银行bank2转账时,银行bank1计算自己和其他所有银行的承诺及审计令牌:
[0075][0076]
其中,代表交易t中banki的交易承诺,代表交易t中banki的交易金额,
代表交易t中banki的盲化因子。
[0077]
具体地,交易金额是指在交易t中,bank1转出金额设为v,在计算承诺时取对于bank2,该笔交易中接收金额v,在计算承诺时取对于其他银行,不参与该笔交易,在计算承诺时取
[0078]
盲化因子对于交易发起方bank1,对于其他银行,bank1选择随机数作为并使它们满足
[0079]
审计令牌代表交易t中banki的审计令牌,其具体构造是:对于交易发起方bank1,选择随机数r
t
(t为交易序号),其token为其他非交易发起方banki,其token为
[0080]
由于交易承诺隐藏了交易金额,因此,交易发起方银行需要生成若干证明,用以说明发起交易的合理性。具体包括:
[0081]
证明1,记为π1,用于说明所承诺的交易必须保持资产不变,即交易没有凭空地产生或者销毁资产。本方法在验证交易是否符合该性质时,直接通过对账本中承诺进行计算加以验证,因此,设置π1为空字符串。
[0082]
证明2,记为π2,用于证明所承诺的交易非无效交易,即交易金额不全为0。本方法在验证交易是否符合该性质时,直接通过对账本中承诺进行计算加以验证,因此,设置π2为空字符串。
[0083]
证明3,记为π3,用于证明金额为负值的承诺所对应的银行必须为交易发起方,即交易发起方不能伪造其他银行对自己的转账。本方法在验证交易是否符合该性质时,直接通过对账本中承诺进行计算加以验证,因此设置π3为空字符串。
[0084]
证明4,记为π4,用于证明交易发起方银行有足够的资产用于发起转账交易,即转账金额不能高于交易发起方自身资产。记为记为j表示第j个交易,则π4具体为:和对应的范围证明。范围证明可以采用如bulletproofs等通用方法生成。
[0085]
步骤2.2:提交交易请求。
[0086]
交易发起方银行将所有交易承诺及其对应的证明π1、π2、π3、π4均提交账本。
[0087]
步骤3:交易处理,对交易进行验证,验证通过后进行上链。
[0088]
账本对所有证明进行验证,如全部证明均获验证通过,则账本将交易打包上链并全局广播,即认为交易请求得到了许可。否则,终止交易。
[0089]
具体地,账本对证明π1进行验证,计算:
[0090]
[0091]
验证计算结果是否为1,若为1,则证明π1获得验证通过,否则终止交易。
[0092]
账本对证明π2进行验证,验证过程为:从1到n进行遍历,如果进行验证,验证过程为:从1到n进行遍历,如果则继续验证;若过程中某一i使得则此交易为无效交易,终止交易请求;若所有则证明π2获得验证通过,否则终止交易。
[0093]
账本对证明π3进行验证,逐一计算比较和g
q-1
,若相等,则该交易承诺对应银行为交易发起方,则证明π3获得验证通过;若均不相等,则说明交易为故意伪造,终止交易请求。
[0094]
账本对证明π4进行验证,计算:
[0095][0096]
将其与证明π4中比较是否相等,若相等,则进一步验证的范围证明是否正确,如果正确,则证明π4获得验证通过,否则终止交易。
[0097]
当账本通过全部证明验证后,将交易打包上链并全局广播,即认为交易请求得到许可。
[0098]
步骤4:审计。监管方根据实际需求对银行进行审计。
[0099]
具体地,包括资产审计、支出审计和收入审计。
[0100]
资产审计,是监管方询问银行其截止某一时刻有多少资产,银行给出答复,监管方通过账本中的交易记录进行计算并验证。
[0101]
资产审计可以采用以下方法实现:
[0102]
监管方询问银行banki如“到t时刻你有多少资产”,将banki在t时刻的资产用表示,此时银行进行如下操作:
[0103]
首先,将序号1开始到序号t账本中banki所对应承诺相乘,计算:记为c1,其中,t时刻对应的交易序号为t。
[0104]
然后,将账本中banki所对应交易token从序号1开始相乘,直到交易t,计算记为c2。
[0105]
之后,向监管方发送
[0106]
此后,监管方进行验证,包括:
[0107]
计算并验证:
[0108][0109]
其中,表示计算并判断是否相等。
[0110]
计算并验证:
[0111]
[0112]
计算并验证:
[0113][0114]
如果验证通过,则监管方相信银行banki给出的资产是正确的。
[0115]
支出审计,是监管方询问银行某一时间段内转出多少资产,银行给出答复,监管方通过账本中的交易记录进行计算并验证。
[0116]
支出审计可以采用以下方法实现。
[0117]
监管方询问银行bank
i“t1~t2时间内你一共转出了多少资金”,将banki在t1~t2时间内转出的资金用表示,此时银行进行如下操作:
[0118]
首先,银行banki找出t1~t2内发起的全部交易承诺j的全部取值设为k1,k2,
···
,ku,u表示该类交易的个数。
[0119]
计算记为c3。之后,向监管方发送
[0120]
监管方进行如下验证:
[0121]
利用π3找出t1~t2时间内banki发起的全部交易,其承诺设为j

的全部取值设为k
′1,k
′2,
···
,k
′w,w表示该类交易的个数。
[0122]
计算并验证:
[0123][0124]
其中,表示计算并判断是否相等。
[0125]
计算并验证:
[0126][0127]
如果验证通过,则监管方相信银行banki给出的正确的。
[0128]
收入审计。是监管方询问银行某一时间段内接收多少资产,银行给出答复,监管方通过账本中的交易记录进行计算并验证。
[0129]
收入审计可以采用以下方法实现。
[0130]
监管方询问银行bank
i“t3~t4时间内你一共接收了多少资金”,将banki在t3~t4时间内转出的资金用表示,此时银行进行如下操作:
[0131]
首先,banki找出t3~t4内接收转账的全部交易承诺,设为j的全部取值设为k
″1,k
″2,
···
,k
″z,z表示该类交易的个数。
[0132]
计算:
[0133]
记为c4[0134]
计算:
[0135]
记为c5[0136]
之后,向监管方发送
[0137]
最后,监管方进行如下验证:
[0138]
设t3~t4时间内账本中banki的交易承诺为
[0139]
监管方利用ski解密得到得到
[0140]
找出t3~t4时间内与banki无关的交易。因为与banki无关的交易其为0,因此,
[0141]
监管方逐一计算并验证j的全部取值设为t3,t3+1,
···
,t4,满足该等式的对应的交易即为与banki无关的交易,将这些交易对应的记作x表示该类交易的个数。
[0142]
找出t3~t4时间内banki发起的交易,找到交易发起方的方法同步骤2.4。对逐一运用步骤3所述方法得到banki发起的交易,记作y表示该类交易的个数。
[0143]
找出t3~t4时间内banki接收转账的交易:
[0144]
在中除去banki不相关的交易不相关的交易和banki发起的交易剩下的交易即为banki接收转账的交易,记为n表示该类交易的个数。
[0145]
计算并验证:
[0146][0147]
计算并验证:
[0148][0149]
如果验证通过,则监管方相信银行banki给出的转入资金是正确的。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1