APP下载

一种区块链交易信息的隐私保护方案

2022-12-28于金霞穆瑞杰秦榕霞

关键词:敌手发送给账户

于金霞,穆瑞杰,秦榕霞,张 静

(河南理工大学 计算机科学技术学院,河南 焦作 454000)

0 引 言

随着区块链[1]的发展,区块链技术广泛应用于金融[2]、医疗[3]、物联网[4]、云计算[5]以及农业[6]等领域。区块链具有去中心化、分布式数据存储和防篡改等特点,任何人都可以对区块链上的交易信息进行监督和验证,保证诚实节点状态的一致性。因此,越来越多的研究人员和设计者将诸如电子拍卖、电子投票等金融交易部署在区块链上。区块链公开透明的特点,使拍卖和投票的交易记录对每个参与方公开,交易记录中包含用户的个人敏感信息和交易金额等隐私信息,因此,如何实现既保证交易信息的公开透明,又保证区块链上用户隐私信息不被泄露是亟待解决的问题。

目前,解决区块链上交易金额隐私泄露问题的方案有很多,大部分方案采用承诺技术[7]、零知识证明[8]、同态加密[9]和数字签名技术[10]或者几种技术混合实现。文献[11-12]通过改进的匿名交易方案,采用FO承诺对交易金额进行隐藏和验证,并通过构建秘密账户实现系统和交易者之间交易的信息交互。文献[13-14]通过既支持隐私保护又可审计的分布式账本,使用Pedersen承诺隐藏金额,将银行所有的交易保存在一个账本上,而对于未参与交易的银行,发送方计算关于金额的承诺值,可使交易不被第三方知道。文献[15]提出一种基于比特币时间承诺的公平支付协议,利用比特币时间承诺和区块链去中心化的特性对交易金额进行保护,实现交易过程的公平性,证明参与者在支付过程中诚实行为。以上方案虽然通过不同的承诺方案对交易金额进行隐藏,防止交易金额的隐私泄露,但是方案存在验证时间长、效率低等问题。为了减少验证时间,文献[16-18]借用多项式承诺和零知识证明方案防止区块链交易金额泄露,同时利用向量内积承诺减少证据长度,实现区块链交易金额的有效性。文献[19]为了解决区块链交易的保密问题,利用Pedersen多项式承诺隐藏交易细节,并对Bulletproof证明修改,降低使用Bulletproof证明的计算效率。虽然多项式承诺能有效提高验证速度,但存在交易结束后无法完成交易双方账户更新的缺陷。

针对上述问题,本文提出了一种基于多项式承诺的交易隐私保护方案(transaction privacy protection scheme based on polynomial commitments,TPP-PC),将用户的交易过程部署在链下执行,链上存储双方交易结果。方案借助多项式上点值唯一的思想,通过用户对多项式随机点值的承诺,将区块链交易金额与承诺值相关联,一方面可以保证交易金额在交易过程中的隐私性与合法性;另一方面可以降低承诺开销。

1 相关知识

1.1 多项式承诺

多项式承诺[18]允许承诺者发布一个含特定秘密值的多项式,在不泄露多项式的情况下,计算多项式的承诺值。承诺者根据绑定秘密的多项式计算打开承诺值正确性的证据,供验证者验证多项式中存在的秘密值与证据的一致性。假设承诺者拥有多项式f(x)=a0+a1x+a2x2…ad-1xd-1,则多项式承诺由5元组Π=(Setup,Commit,VerifyPoly,Open,Verify)组成,具体多项式承诺方案Π如下。

1.2 零知识证明

零知识证明[9]是证明者与验证者两方参与的密码学协议,指的是证明者P向验证者V证明并使其相信自己知道或拥有某一消息,但证明过程中不能向验证者V泄漏任何关于被证明的信息。假设证明者P拥有多项式f(x)=a0+a1x+a2x2+…+ad-1xd-1,多项式f(x)的值在集合S⊂上,给定多项式r(x)∈<|s|[x],对于每个z∈S,存在f(z)=r(z)。根据描述,零知识证明方案的交互过程如下。

证明阶段:证明者P完成对承诺值C的证明。

1)P←V:V选择随机数γ∈发送给P。

3)P←V:V选择随机数z′∈作为挑战发送给P。

验证阶段:验证者V验证证明者P的证据。

2 系统模型

2.1 系统模型

本文针对区块链用户交易金额的隐私性问题,提出一种区块链交易信息的隐私保护方案。为了减少链上的交易成本,方案将用户Alice和Bob的交易过程部署在区块链链下进行,并将双方更新后的交易结果存储在区块链上。首先,用户加密交易信息,保证金额的隐私性;其次,用户需要为智能合约产生交易信息的承诺值和验证交易金额的相等性提供证据,保证交易的合法性;最后,用户将交易金额的密文结果和证据发送给智能合约,使智能合约完成交易的合法性验证。如果验证通过,双方更新各自的账户信息,并将交易结果写入区块链,交易结束;否则,拒绝交易,向用户返回交易失败的信息。系统模型总体设计如图1所示。

图1 模型设计Fig.1 Design model

本文TPP-PC方案具体模型由密钥生成、金额生成、加密算法、验证算法和账户更新组成,记为TPP-PC(KeyGen,insum,Encrypt,verify,update)。方案模型描述如下。

1)密钥生成:KeyGen(p,q,λ)。输入大素数p和q,以及安全参数λ,分别输出Alice和Bob的公私钥:(pkA,skA),(pkB,skB)。

2.2 具体方案

2.2.1 密钥生成

区块链系统管理员为参与交易的用户计算公私钥,将公钥存储在区块链中,作为交易地址使用;私钥由每个用户保存[6]。因此,选取大素数p和q, 分别计算Alice和Bob的公私钥(pkA,skA)、(pkB,skB)。其中,pkA=(nA,gA),pkB=(nB,gB),skA=lcm((p-1),(q-1)),skB=lcm((p-1)·(q-1))。

系统根据多项式上的随机点α生成另一个公钥PK={g,gα,…,gαd,h,hα,…,hαd},使Alice用于计算多项式f(x)的承诺值。

2.2.2 金额生成

Alice和Bob输入转账前的账户金额mA和mB,执行以下步骤。

2.2.3 加密算法

2.2.4 验证算法

b)Bob验证等式C=C′=gf(x),如果等式成立,Bob执行c),否则,交易结束。

c)Bob选择随机数γ∈发送给Alice,Alice随机选取z∈S,并构造等式计算h(x)=f′(x)/(x-z),w=h(x)·g,记w为交易金额的相等性证据。

d)Bob发送随机数z′∈作为挑战发送给Alice。

2.2.5 账户更新

交易双方账户更新结束后,将账户中现有的金额数据存入区块链数据库中,交易结束。

3 方案分析

3.1 正确性分析

定理1方案TPP-PC是正确的。

证明在密钥生成阶段,区块链系统管理员分别为用户Alice和Bob分配公私钥(pkA,skA),(pkB,skB)。区块链系统根据多项式的随机点α产生另一个公钥PK={g,gα,…,gαd,h,hα,…,hαd},供Alice用于计算多项式f(x)的承诺,在整个交易过程中,随机点α在承诺的计算过程中以PK={g,gα,…,gαd,h,hα,…,hαd}的形式出现,即使敌手知道PK,也无法获得多项式的随机点α,故该步骤是正确的。

为了验证输出金额与输入金额的一致性,在验证阶段,借用多项式承诺技术,通过引入对多项式在随机点α上值的承诺,保证交易金额的正确性。根据域内的d次多项式f(x),随机给x赋值域中的一个元素,其为0的概率为d/,当多项式的阶数小于域的范围时,该概率可以忽略。因此,在承诺前,Alice选择多项式上的随机点α发送给区块链系统,由系统计算随机点α的加密形式{g,gα,…,gαt,h,hα,…,hαt}作为Alice计算承诺值的公钥,而多项式f(x)承诺的计算过程为

(gα0)f0(gα1)f1…(gαf)ff=

(g)a0(gα1)a1x…(gαd)ad-1xd-1=gf(x)

由此可知,通过对随机点α的加密,不仅可以保证多项式的完整性,而且知道随机点α伪造多项式f′(x)的概率是可忽略的,故该步骤正确。

对于交易金额的合法性和正确性,智能合约验证等式e(F,h)=e(w′,(x-si)h)是否成立,此时需要获取证据w和w′,而证据w和w′是Bob通过选取随机数,根据多项式的整除关系构造得到的。证据生成的过程中,零知识证明可以有效防止恶意者篡改数据,保证数据的真实性和正确性,而智能合约验证交易金额是否相等的计算过程为

根据双线对的运算性质:e(aS,bT)=e(S,T)ab(a,b∈Z)和e(S,T)=e(T,S)可知,等式e(F,h)=e(w′,(x-z)h)成立,故验证阶段的步骤正确。

在本文方案中,为了保证用户在链下交易信息完整地存储在区块链上,用户Alice和Bob根据智能合约的验证结果在密文状态下更新各自的账户信息,并将交易结果存储在区块链上。链下交易可以降低链上的交易成本,同时可以提高区块链上交易的隐私性。

综上可知,方案TPP-PC是正确的。

3.2 安全性分析

定理2如果敌手无法获取任何有关交易金额的正确信息,则方案TPP-PC是安全的。

证明敌手获取交易金额的相关信息主要从3个方面考虑。

b)敌手伪造f′(x)(f′(x)≠f(x)),使得C和C′不可区分,敌手获胜。

c)敌手获胜的概率为

Pr[Awin]=Pr[C(f(x))=

C(f′(x))∧f(x)≠f′(x)]=

且(gα)fhr/hr′=(gα)f ′modn。

从挑战实验可以看出,求解f′的难度等同于求解离散对数问题。另一方面,承诺值的计算根据多项式上的随机点计算得到,而多项式上随机点以指数形式当作公钥使用,即PK={g,gα,…,gαd,h,hα,…,hαd},因此,敌手无法获取随机点α的真实值来伪造公钥PK。从而可知,敌手获胜概率可以忽略不计。

3)敌手对交易金额的相关证据进行篡改攻击,则需要伪造与承诺值相关的证据W和W′,并将证据发送给智能合约,智能合约根据收到的证据W和W′计算验证等式e(F,h)=e(W′,(x-si)h),将验证结果发送给交易双方。

由于承诺的证据需要接收者Bob选择多项式上的随机点发送给敌手,使得伪造的数据通过验证等式的概率是不可忽略的,即

ε(k)

此时,敌手发送证据W和W′给智能合约,使其通过智能合约的验证等式e(F,h)=e(w′,(x-si)h)。由于承诺方案具有绑定性,且交易金额的合法性验证基于零知识证明的零知识性,对于所有非统一多项式时间的交互敌手A,选取多项式上的随机点伪造承诺证据成功是困难的。因此,敌手对交易金额的相关证据进行篡改攻击的概率是可忽略的。

综上所述,在TPP-PC方案中,敌手对方案实施篡改攻击无法获取相关交易信息,因此,方案TPP-PC是安全的。

4 性能分析

4.1 理论分析

本节主要从方案的计算复杂度、通信开销以及是否具备账户更新功能等方面对相关方案进行比较,与文献[17,19]对比的性能分析结果如表1所示。

表1 性能分析Tab.1 Performance analysis

2)通信开销。主要通过通信轮次来进行评估。在TPP-PC方案中,Alice和Bob需要加密自己的账户余额和交易金额,并发送到智能合约,Alice计算承诺值将(C,f(x))发送给Bob,Bob向Alice发送2次随机数生成承诺和零知识证明的证据,智能合约获取证据以及Alice和Bob的参数,共需要6次数据传递完成方案的执行过程。文献[17]需要4次数据传递完成方案的执行过程。文献[19]中证明者计算多项式承诺,并根据验证者提供的随机数计算多项式承诺正确的证据,验证者验证多项式的正确性,在方案的交互过程中,共需要6次数据传递。

可以看出,TPP-PC方案在承诺验证过程的计算复杂度与文献[17]相同,且优于文献[19],这是由于TPP-PC方案通过对多项式上随机点处值的承诺,降低了多项式承诺隐藏交易金额的计算开销,总的计算复杂度优于文献[17],而且具有账户更新功能。TPP-PC方案的通信开销与文献[19]相同,但是高于文献[17],这是因为其账户更新功能,需要智能合约返回验证结果,新功能的增加不仅能够防止交易金额泄露,而且保证了交易的完整性。此外,TPP-PC方案的更新功能在交易金额为密文状态下实现,因此,综合性能更加明显。

4.2 实验分析

本节主要通过实验进行方案分析。方案的测试环境为操作系统Windows10旗舰版64bit,处理器AMD A10-8700P Radeon R6,10 Compute Cores 4C+64G 1.80GHz,Python编译环境。

利用Python语言部署区块链环境,在区块链系统中,通过创建转账方的地址和账户金额,使用Paillier加密算法对转账方Alice的信息进行加密,防止交易金额的泄露。创建接收方Bob的账户地址和账户金额,同样通过Paillier加密Bob账户信息。Alice和Bob通过端口建立连接后,通过智能合约验证交易金额的安全性和正确性,实现交易金额的成功交易,交易成功的结果如图2所示。

图2 交易成功结果Fig.2 Transaction success result

为了进一步对理论分析结果进行验证,本文对不同方案承诺算法的耗时和方案运行总耗时进行实验分析。为方便比较,假设多项式的次数依次取d=100、200、400、800,则不同方案的承诺算法耗时如图3所示,在多项式不同次数下的运行总耗时如图4所示。

由图3可以看出,TPP-PC方案的承诺算法在多项式次数不断增大的情况下,耗时均较优;由图4可以看出,在不同次数的多项式下,TPP-PC方案的计算总开销优于文献[17]和文献[19]。实验结果与理论分析一致。

图4 相关方案运行总耗时Fig.4 Total running times of related schemes

5 结 论

本文针对区块链上交易过程中交易金额的隐私性问题,提出区块链交易信息的隐私保护方案。该方案通过对多项式在随机点处值的承诺隐藏交易金额,保护交易金额的隐私,同时利用智能合约和零知识证明对多项式承诺的证据进行验证,防止交易金额在传输过程中被篡改,并使用Paillier同态加密使交易金额在密文状态下完成交易双方的账户更新。方案不仅实现对交易金额隐私性的保护,而且保证了交易过程的完整性。在区块链交易过程中交易金额的隐私保护方面,本文给出的是防止两方交易过程中交易金额泄露的方案,关于如何实现三方甚至多方交易过程中的隐私保护是下一步研究中需要考虑的重点问题。

猜你喜欢

敌手发送给账户
与“敌”共舞
如何切换Windows 10本地账户与微软账户
探索自由贸易账户体系创新应用
Windows10账户的删除、禁用与启用
外汇账户相关业务
【微信小课堂】:如何向好友发送语音
不带着怒气做任何事
你说我说大家说
公告
我的录梦机