基于区块链的可修改信誉评价系统及方法、电子支付系统与流程

文档序号:14280116阅读:157来源:国知局
基于区块链的可修改信誉评价系统及方法、电子支付系统与流程
本发明属于电子商务
技术领域
,尤其涉及一种基于区块链的可修改信誉评价系统及方法、电子支付系统。
背景技术
:随着互联网电子商务的快速发展,出于自身利益的考虑自身,商家经常是不可信的。电子支付的在线商务经常是先交钱后发货,消费者出于自身的考虑,以及当前社会的诚信状况,难以对商家的信誉进行判断。因此一个合理的信誉评价系统,应该做到让用户在决定购买商品之前,会浏览商品评价后再决定是否购买,而商家则也可以通过观察用户信誉来做出一些相应的准备,在线交易的信誉评价系统显得越来越重要。目前针对信誉评价系统主要分为三类:分别是基于博弈论的反馈系统、采用可信第三方的信用第三方机制、利用固定团体为最小单位的社区责任系统;三类信誉评价系统主要致力于解决目前的双方信誉无法保证和身份认证困难的问题。针对反馈系统方案,交易双方进行信誉反馈时,都会担心对方对自己做出的评价进行报复,信誉反馈规定一个期限,评价不是立刻公布。权威认证系统是不匿名的,身份认证不充分,信誉评价结果简单笼统,真假难辨;利用固定团体为最小单位的社区责任系统对成员数目有要求,社区寿命有限。基于博弈论的反馈系统:在线信誉系统仅仅充当一种被动的信息反馈存储结构,难以保证反馈的持续性和真实性。缺乏对用户的激励机制,容易导致信誉评价的信息问题。另外,信息评价信息数据标准不统一,难以互相共享利用。通俗来说,就是目前的模型不尽合理,发布机制需要改进。采用可信第三方的信用第三方机制利用固定团体为最小单位的社区责任系统。这种评价机制的核心是以一个团体代替通俗意义上的第三方,将狭义上的一个第三方变为多个。为了保证信誉评价信息有效可靠的产生,需要对社区成语做出大量限制要求,从而才能保证系统的效率和质量。由于成员数量原因,安全熵增加速率较快,因此在一定时间之后,系统越来越趋于不稳定,因此社区寿命有限。利用固定团体为最小单位的社区责任系统采用可信第三方机制的信誉评价系统。这种是最普遍最常见的系统,由一个第三方来做仲裁结构,这种系统的问题也比较普遍,就是第三方权利的分割,如果这个第三方权利过大,那么你就必须假设他完全可信,这种在现实生活中是不太现实的。如果限制第三方的权利,那么必然要增加许多密码协议或安全协定,系统的效率又会大大降低。一般来说,用户评价信息时都想保证自己的匿名性,常见的保障用户匿名性的方式都是用群签名,群主可以知道用户的具体信息,必要时刻可以找到这个匿名的用户,因此,这并不是完备匿名。如果实现完备匿名,又难以对用户的身份做认证,这是目前信誉系统比较突出的一个问题。当前信誉评价系统存在多种问题,如数据库存在漏洞,可能被恶意攻击,从而获取用户信息甚至是修改评价信息,或是用户和商家利用平台漏洞,互相勾结,赚取利益;店铺和用户在交易时是不匿名的,因此店铺可能会泄露用户的信息,给用户的生活造成一些负面影响;相对松散的身份认证,买家无法评估自己的交易风险等。根据现有技术的检索得知现有所有的信誉系统没有完全解决。缺少技能保证用户隐私而又高效的密码算法。还有就是第三方的权利太大,而一旦第三方不可信,或者第三方的数据库被攻破,极易造成问题。并且随着大数据分析技术的进一步发展,用户在网络上越来越透明,一个没有经过训练的用户,及时在网络上匿名,也是很容易被找到的,是社会工程学中需要考虑的问题。评价信息鱼龙混杂,难以分辨信息的真实性和可靠性,都是数据分析所需考虑的问题,原因都是算法不够高效。综上所述,现有技术存在的问题是:当前信誉评价系统存在数据库存在漏洞,容易被恶意攻击;用户和商家利用平台漏洞,互相勾结,赚取利益;店铺泄露用户的信息;松散身份认证,买家无法评估自己的交易风险。技术实现要素:针对现有技术存在的问题,本发明提供了一种基于区块链的可修改信誉评价系统及方法、电子支付系统。本发明是这样实现的,一种基于区块链的可修改信誉评价方法,所述基于区块链的可修改信誉评价方法包括:新评价产生阶段和评价修改阶段;新评价产生阶段:预备阶段:交易已经完成,用户得到了商品收据mr。并验证收据的可靠性。评价撰写阶段:用户撰写评价信息,并对评价信息运行环签名算法,得到参数(m,δ,mr),将其发送给区块链。区块链验证阶段:根据预先约定的智能合约,区块链验证(m,δ,mr)的可靠性,判断是否生成新的区块,完成后数据库更新修改指针。评价修改阶段:修改评价信息生成阶段:用户撰写新评价消息m'(若想撤销则为空值),采用可链接环签名算法生成(m’,δ,δ’),δ为修改前的评价信息的环签名,δ'为修改后的评价信息的环签名。将其发送给区块链;区块链验证阶段:根据预先约定的智能合约,区块链验证(m’,δ,δ’),判断是否是同一用户产生的(δ,δ’)。若是,则产生新的区块,将δ对应的评价信息的状态值标记为无效。数据库进行更新。用新的评价信息覆盖了旧的评价信息。所述新评价产生阶段用户从卖家处收到收据mr,验证收据mr中卖家的签名,再生成评价信息m;在验证完成之后,用户对评价信息mr生成环签名δ(p,c0,r0,r1,...,rn-1,t0,...,tn-1),将(m,δ,mr)发送给区块链;区块链验证收据mr,用户的环签名δ。然后数据库在区块产生之后进行更新;所述评价修改阶段用户通过签名算法选择相同的p′=tp,得到新的签名σ′(p′,c0′,r0′,...,r′n-1,t′0,...,t′n-1),发送(δ,δ')给区块链;区块链验证签名的有效性,判断两个签名是否由同一用户签名完成;验证完成后修改之前消息m的区块对应的指针,将其标记为无效,用消息m'的区块取代之前撤销的信息。进一步,所述新评价产生阶段具体包括:1)参数生成:所有的参与者都根据预先的算法计算自己的参数,卖家在交易完成后,生成交易的收据,用自己的私钥进行签名:mr=φ(mt,δ(sk,mt));其中mr为收据,mt为交易信息,sk为卖家的私钥,δ(sk,mt)是用户对交易的签名,φ表示密码承诺;用户撰写评价信息,对评价信息进行环签名:(1)初始化:随机选择t∈zq和计算:p′=tp和ck+1=h2(l||m||e(a,p)||e(a,p));(2)对非签名者生成环序列:对i=k+1,...,n-1,0,...,k-1,随机选择ri,ti属于域计算ci+1=h2(l||m||e(ri,p)e(cih1(idi),ppub)||e(ti,p)e(cih1(idi),p′));(3)封闭环:计算rk=a-cksidk和tk=a-ckth1(idk),事实上:e(rk,p)e(ckh′,ppub)=e(a-cktsidk,p)e(ckth1(idk),ppub)·c(a-cktsidk,p)e(cktsidk,p)e((ck)tsidk,p)e(cktsidk,p)=e(a,p);(4)输出签名:δ=(p′,c0,r0,r1,...,rn-1,t0,t1,...,tn-1);2)秘密交换:交易完成后,卖家将收据发送给买家,买家在收到收据之后,核对收据的信息,验证卖家的签名;验证算法:如果φ(mt,pk,φ(sk,mt))=1;则签名通过;mt是交易信息,pk是卖家公钥,φ(sk,mt)是卖家对交易的签名;3)信息交换:买家将评价信息,环签名,收据发送给区块链,区块根据预先约定好的算法进行认证;收据认证:根据卖家的公钥验证卖家的签名;验证算法:φ(mt,pk,φ(sk,mt))=1;如果验证通过,则签名有效;环签名认证:验证环签名;验证算法:对于i=k+1,...,n-1,计算:ci+1=h2(l||m||e(ri,p)e(cih′,ppub||e(ti,p)e(cih1(idi)),p′));如果cn=c0,则签名有效;验证无误后,进入下一阶段;4)区块同步本次评价信息,生成新的区块,对应相应的指针。进一步,所述评价修改阶段具体包括:(1)生成签名:用户用相同的p和p',t,对新的评价信息m'生成新的环签名δ',签名方式与之前相同,发给区块链上;(2)秘密交换:区块在收到用户修改评价的请求之后,运行可链接环签名验证算法,f(a,b);验证用户新的环签名δ',在确认之前的环签名δ和δ'是否使用了相同的p和p',f(δ,δ')=1,则进行(3);(3)区块进行共识,更新,数据库进行更新,在确定用户有更改或撤销评价的请求之后,数据库将之前区块的函数f(δ,0)=0,修改为f(δ,δ'),此时f(δ,δ')=1,新的评价信息f(δ',0)=0,是新的有效评价。本发明的另一目的在于提供一种所述的基于区块链的可修改信誉评价方法的基于区块链的可修改信誉评价系统,所述基于区块链的可修改信誉评价系统包括:新评价产生模块,用于实现用户从卖家处收到收据,验证收据中卖家的签名,再生成评价信息;在验证完成之后,用户对评价信息生成环签名,发送给区块链;区块链验证收据,用户的环签名;数据库在区块产生之后进行更新;评价修改模块,用于实现用户通过签名算法选择相同的p′=tp,得到新的签名,发送给区块链;区块链验证签名的有效性,判断两个签名是否由同一用户签名完成;验证完成后修改之前消息的区块对应的指针,标记为无效,用消息m'的区块取代之前撤销的信息。所述新评价产生模块进一步包括:参数生成单元,用于所有的参与者根据预先的算法计算自己的参数,卖家在交易完成后,生成交易的收据,用自己的私钥进行签名:秘密交换单元,用于交易完成后,卖家将收据发送给买家,买家在收到收据之后,核对收据的信息,验证卖家的签名;信息交换单元,用于买家将评价信息,环签名,收据发送给区块链上,区块根据预先约定好的算法进行认证;收据认证:根据卖家的公钥验证卖家的签名。区块同步单元:用于区块同步本次评价信息,生成新的区块。所述评价修改模块进一步包括:生成签名单元,用于对新的评价信息生成新的环签名,发给区块链;秘密交换单元,用于区块在收到用户修改评价的请求之后,运行可链接环签名验证算法,验证用户新的环签名;区块同步单元,用于区块进行共识,更新,数据库进行更新。本发明的另一目的在于提供一种利用所述基于区块链的可修改信誉评价方法的电子支付系统。本发明的用户将自己的评价信息传递到区块链中的节点中,节点根据事先预定的算法对消息进行共识,公示,保证任何人无法对这笔评价信息进行修改;和传统的信息评价系统相比,本发明避免了现有了第三方平台由于不可信原因产生的不公正因素,并且评价信息更透明。本发明引入环签名技术,用户在进行评价时,自己的身份在某个公钥列表中是不可区分的,有效保证了用户的交易隐私;利用了环签名的可链接性,为保证在必要的时刻用户能够修改或者撤销之前进行的评价。本发明通过引入环签名的可连接性,可以是同一签名者生成的可发签名δ1和δ2存在多项式时间算法f证明两个签名是由同一作者签署的。同时,非签名者本人无法将可链接的方案转换,可以保证用户在需要的时刻可以证明自己的身份,将证据提交,再对之前的评价信息进行修改和替换。本发明在保证用户匿名性和交易不可篡改性的同时,让用户可以通过“证明”自己来撤销一笔评价,即保证评价信息的完整,公开,又进一步保证了评价信息的可靠性。本发明的用户可以安心的匿名评价商品,不用担心自己的消息会被泄露从而被威胁被追踪;用户可以安全借鉴网络上的评价信息,不用担心评价信息不可靠而混淆自己的感知;商家可以根据用户的评价信息反馈得知自己商品具体哪里出了问题,而不用担心用户随意的评价对商品造成不应由的影响;用户、商家是直接交易的,不需要平台做保证,大大减少了操作步骤,提高了交易效率,节约了人工和社会资源。附图说明图1是本发明实施例提供的基于区块链的可修改信誉评价方法流程图。图2是本发明实施例提供的新的区块的结构示意图。图3是本发明实施例提供的新的有效评价的示意图。图4是本发明实施例提供的当n固定的情况(n取5时可以看到两条曲线的焦点)下随着数据量增大方案耗时的变化示意图。图5是本发明实施例提供的当数据库大小固定的情况下(数据库大小取100000,由于数据量影响没有n那么大)方案耗时随n的变化示意图。图6是本发明实施例提供的新评价生成的操作效率示意图。图7是本发明实施例提供的随着环签名参数n的增大和数据库中数据量的增大,新评价产生的时间不断增加示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。信誉评价系统将用户对商品的评价进行分析,评价信息公布;信誉评价是用户购买商品前的重要影响因素,也是用户和商家互相判断认证的重要依托。传统信誉评价系统总是需要一个第三方来判定评价信息的有效性和可靠性,但是,完全可信的第三方是不存在的,第三方带来了消息泄露,消息被恶意修改等等。本发明去除了第三方,并且保证了用户评价的匿名性,同时还支持用户修改他们自己的评价信息。实验表明本发明的代价是在可接受的范围内,是完全可行的。下面结合附图对本发明的应用原理作详细的描述。如图1所示,本发明实施例提供的基于区块链的可修改信誉评价方法包括以下步骤:s101:所有的参与者都根据预先的算法计算自己的参数,卖家在交易完成后,生成该交易的收据,用自己的私钥进行签名;用户撰写评价信息,对评价信息进行环签名;交易完成后,卖家将收据发送给买家,买家在收到收据之后,核对收据的信息,验证卖家的签名;买家将评价信息,环签名,收据发送给区块链上,区块根据预先约定好的算法进行认证;区块同步本次评价信息,生成新的区块;s102:对新的评价信息生成新的环签名,发给区块链上;区块在收到用户修改评价的请求之后,运行可链接环签名验证算法,验证用户新的环签名;区块进行共识,更新,数据库进行更新。下面结合附图对本发明的应用原理作进一步的描述。1、区块链(1)双线性对不可忽略:如果函数ε满足:对于||ε(x)||<1/xc;称函数ε是不可忽略函数。设和分别是阶为大素数q的循环加法群和乘法群,p是的生成元。是随机数,假设离散对数问题在和中都是难解的。称映射为一个双线性对,如果满足:1)双线性:e(q+r,s)=e(q,s)e(r,s),e(q,r+s)=e(q,s)e(q,r),2)非退化性:3)可计算性:对于存在有效的算法计算e(q,r)。在群上,可以定义以下几个密码学困难问题:计算diffie-hellman问题(cdhp):对于a,b∈zq,给定p,ap,bp,计算abp;离散对数问题(dlp):给定两个元素p和q,找一个整数n,使得q=np;(2)决策diffie-hellman问题(ddhp):对于a,b,c∈zq,给定p,ap,bp,cp,判断是否满足c≡abmodq;(3)gapdiffie-hellman问题(gdhp):一类cdhp困难而ddhp容易的问题。2、可链接环签名环签名可以实现对消息的安全匿名签名,接收方只能确认签名来自于某个群体,而不能确认到具体签名者,通过对环签名进行可链接化,可以让验证者确认不同签名来自于同一签名者,而不能确认签名者的身份。签名算法:初始化:随机选择t∈zq,计算p′=tp和ck+1=h2(l||m||e(a,p)||e(a,p));对非签名者生成环序列:对i=k+1,...,n-1,0,...,k-1,随机选择ri,ti属于域计算ci+1=h2(l||m||e(ri,p)e(cih1(idi),ppub)||e(ti,p)e(cih1(idi),p′));封闭环:计算rk=a-cksidk和tk=a-ckth1(idk),事实上,e(rk,p)e(ckh′,ppub)=e(a-cktsidk,p)e(ckth1(idk),ppub)·c(a-cktsidk,p)e(cktsidk,p)e((ck)tsidk,p)e(cktsidk,p)=e(a,p);输出签名:δ=(p′,c0,r0,r1,...,rn-1,t0,t1,...,tn-1);验证签名:对于i=k+1,...,n-1,0,...,k-1,计算:ci+1=h2(l||m||e(ri,p)e(cih′,ppub||e(ti,p)e(cih1(idi)),p′))如果cn=c0,则签名有效。其中h1和h2是哈希函数,可链接性:如果对不同消息m1和m2,签名者可生成合法签名δ1和δ2(可选择不同的公钥列表),存在概率多项式算法f,得出(params,m1,m2,δ1,δ2)是同一人签名的概率是不可忽略的;而如果两个签名不是由同一个用户签署,则对任意的概率多项式算法f,得出是同一签名人签署的概率是可忽略的,则称方案为可链接的。3、区块链和智能合约区块链技术是一个基于比特币协议的不需要许可的分布式数据库;智能合约系统根据事先约定好的触发条件,当条件满足时发出事先预定的数字信息。合约内容由人决定,合约本身无法修改自身的内容,智能合约是合约制定者决定的由数字化系统判断执行的承诺。智能合约+区块链的思想给解决现实中存在的问题提供了一种有效的形式,利用区块链技术来转换不同的交易内容,通过交换一笔数字信息来实现不同的功能。基于区块链技术的智能合约可以同时发挥两者的优势,将其应用于评价系统中,可以可靠的保障整个系统有效的存储,读取,执行过程透明和追踪,不可篡改,还可以避免目前中心化因素的影响。4、基于区块链的可修改信誉评价系统。(1)用收据mr保证评价信息是经过用户和商家允许的。使用可链接环签名算法和区块链技术保证评价信息无法被篡改,同时,保证评价信息可以被用户匿名修改,使用了一个外接的数据库提高了搜索评价信息的速度。分为两步:第一种是新评价生成,另外一种是评价信息的修改。保证可修改的信誉评价系统能够保证用户的匿名性,并且保证恶意攻击者不能篡改评价信息。第一种操作是新评价的生成,流程如下所示:用户从卖家处收到收据mr,然后验证收据mr中卖家的签名,再生成评价信息m。在验证完成之后,用户对评价信息m生成环签名δ(p,c0,r0,r1,...,rn-1,t0,...,tn-1),将(m,δ,mr)发送给区块链。然后区块链验证收据mr,用户的环签名δ。然后数据库在区块产生之后进行更新。第二种操作是评价修改,如下所示:用户通过签名算法选择相同的p′=tp,得到新的签名发送(δ,δ')给区块链。区块链验证签名的有效性,判断两个签名是否由同一用户签名完成。由于完成封闭环这步操作,必须使用参数t,任意的非签名者在不知道t时,伪造合法签名的概率是可忽略的。在假设离散对数问题难解的条件下,(δ,δ')来自不同签名者的概率是可忽略的。在验证完成之后,修改之前消息m的区块对应的指针,从而将其标记为无效,用消息m'的区块取代之前撤销的信息,至此,评价修改完成。数据库在新区块产生之后进行同步。(2)安全性需求信息可靠性:对于任意评价信息m,在不知道用户私钥sid的情况下,对于任意多项式时间算法p,输出满足条件的验证p(params,m,δ)=1的概率是可忽略的,则称方案的信息是可靠的。不可篡改性:对于任意公布的评价信息m,对于任意多项式时间算法p,攻击者在算力不超过整个区块链节点51%的情况下,使得p(m)=m'的概率是可忽略的,则称方案是不可篡改的。匿名性:对于任意消息m,攻击者即使非法获取了所有可能签名者的私钥,对于任意算法p,确定出真正的签名者的概率不超过1/n,这里n为所有可能签名者的个数,则方案称为计算匿名的。可撤销性:对于评价m的拥有者,有多项式时间算法p,使得p(m,params)=m'。对于其他人而言,任意的多项式时间算法p,p(m,params)=m'的概率是可忽略的,则称方案是可撤销的。5、参与评价的一共有三方,分别是用户,卖家和区块链;三方的特点如下:区块链节点:区块链按照智能合约执行提前编写好的规则,利用区块链保证所有评价信息都是不可篡改的,区块链是客观的参与者,不与评价产生利益关系,他的所有信息都是透明的。商家:卖家掌握着智能合约中需要的参数,卖家的公钥卖家的公钥是公开的,任何人都可以读取这个公钥。卖家产生收据mr,并发送给用户。收据包含卖家对本次交易的签名δs。用户:用户在交易完成之后拥有收据mr,收据包含卖家对本次交易的签名δs,表示卖家对本次交易认可进而买家有对本次交易评价的权利。买家会将(评价信息m,环签名δ,收据mr)发送给区块上。本发明分为两个阶段:分别是新评价产生阶段和评价修改阶段。一、新评价产生阶段:包含公钥签名算法、环签名算法和区块链技术。1)参数生成:在这个阶段中,所有的参与者都根据预先的算法计算自己的参数。卖家在交易完成后,生成该交易的收据,用自己的私钥进行签名:mr=φ(mt,δ(sk,mt));其中mr为收据,mt为交易信息,sk为卖家的私钥,δ(sk,mt)是用户对交易的签名,φ表示密码承诺。用户撰写评价信息,对评价信息进行环签名,细节如下:(1)初始化:随机选择t∈zq和计算:p′=tp和ck+1=h2(l||m||e(a,p)||e(a,p));(2)对非签名者生成环序列:对i=k+1,...,n-1,0,...,k-1,随机选择ri,ti属于域计算ci+1=h2(l||m||e(ri,p)e(cih1(idi),ppub)||e(ti,p)e(cih1(idi),p′));(3)封闭环:计算rk=a-cksidk和tk=a-ckth1(idk),事实上:e(rk,p)e(ckh′,ppub)=e(a-cktsidk,p)e(ckth1(idk),ppub)·c(a-cktsidk,p)e(cktsidk,p)e((ck)tsidk,p)e(cktsidk,p)=e(a,p)。(4)输出签名:δ=(p′,c0,r0,r1,...,rn-1,t0,t1,...,tn-1)。2)秘密交换:交易完成后,卖家将收据发送给买家,买家在收到收据之后,核对收据的信息,验证卖家的签名。验证算法:如果φ(mt,pk,φ(sk,mt))=1;则签名通过。mt是交易信息,pk是卖家公钥,φ(sk,mt)是卖家对交易的签名。3)信息交换:买家将(评价信息,环签名,收据)发送给区块链上,区块根据预先约定好的算法进行认证。收据认证:根据卖家的公钥验证卖家的签名。验证算法:φ(mt,pk,φ(sk,mt))=1;如果验证通过,则签名有效。环签名认证:验证环签名。验证算法:对于i=0,1,...,n-1,计算:ci+1=h2(l||m||e(ri,p)e(cih′,ppub||e(ti,p)e(cih1(idi)),p′));如果cn=c0,则签名有效。验证无误后,进入下一阶段。4)区块同步:区块同步本次评价信息,生成新的区块。对应相应的指针,如图2所示。区块的结构由四部分组成,分别是前一区块的哈希值,评价信息m,区块状态值和环签名,以及随机数。区块上的所有数据都是公开的,在前面的步骤全部完成之后,换句话说,区块可以确认这笔评价可靠有效。之后区块进行共识,同步,将评价信息永久存储在区块中。任何人都可以通过浏览区块上的信息来翻阅评价。本发明有一个外部的数据库将评价信息和环签名整合起来,方便用户的查找,用户可以通过观察区块链上的信息来确认消息是否真实有效。并且,数据库中有一个可链接环签名验证算法,f(a,b),用来确保这笔评价信息没有被撤销。当评价信息没有被撤销时,函数第二个参数为null,因此f(δ,null)=0,表示该评价信息有效。二、评价修改操作:将描述评价信息在的系统中是如何修改的。可链接环签名算法,区块链技术在这个操作中有应用。(1)生成签名:在这个阶段中,用户用相同的p和p',t,对新的评价信息m'生成新的环签名δ',签名方式与之前相同,然后将其发给区块链上。(2)秘密交换:在这个阶段中,区块在收到用户修改评价的请求之后,运行可链接环签名验证算法,f(a,b);验证用户新的环签名δ',在确认之前的环签名δ和δ'是否使用了相同的p和p',由于在签名时需要用到参数t,对非签名者而言,求解t即解决离散对数问题,所以可以认为新的环签名δ'是之前签署δ的用户签名的。即,若f(δ,δ')=1,则进行下一步。(3)区块同步:在这个阶段中,区块进行共识,更新,数据库进行更新。在确定用户有更改或撤销评价的请求之后,数据库将之前区块的函数f(δ,null)=0,修改为f(δ,δ'),此时f(δ,δ')=1,用户在观察这笔评价的时候,可以认为这笔评价是无效的,新的评价信息f(δ',null)=0,是新的有效评价。由此,完成了评价信息的撤销或修改的操作。如图3所示。下面结合安全性分析和性能分析对本发明的应用效果作详细的描述。1、安全性分析1.1、可修改信誉评价系统的信息满足不可伪造性一方面,开始产生签名时需要用到收据中商家的允许,另一方面攻击者若想要伪造签名,则假设攻击者在获得收据,然后再获得某些消息的签名或者某些用户的私钥的情况下,选择固定的公钥列表l,选择随机t'。生成相应的p'=t'p,从而生成合适的签名δ′(p′,c′0,r′0,r′1,...,r′n-1,t′0,...,t′n-1)为了找到这样的p',t',p,攻击者等价于求解离散对数问题,求解出p'=tp中的t。因此,在假设离散对数问题难解的情况下,签名是不可伪造的。1.2、可修改信誉评价系统的消息满足可修改性修改评价需要用户对不同的消息m,m',利用相同的p和p'进行签名,在签名时的封闭环这一步,需要用到参数t,p'=tp。对于非签名者而言,求解t即相当于求解一个离散对数问题。因此,任意的非签名者在不知道参数t的情况下,伪造合法签名的概率是可忽略的。因此,在假设离散对数问题难解的情况下,评价信息仅能由同一用户进行修改。1.3、可修改信誉评价系统的消息满足匿名性在方案中,虽然评价信息是公开的,用户的签名也是公开的。即使攻击者解出离散对数问题,求解出参数t,也需要解rk=a-cksidk和tk=a-ckth1(idk),未知的元素有三个,攻击者也无法求解出用户的因此方案是完备匿名的,其他人无法得知签名者的具体身份。1.4、可修改信誉评价系统的消息满足可靠性区块链上信息的公开性和可靠性是由区块链的性质决定的。如果攻击者想要通过攻击区块链进行数据的篡改,则他需要掌握至少全网51%的算力,还需要足够多的时间追赶原有区块运算的所有数据,才能够组织区块确认部分或者全部交易,然后进行对数据的修改。随着网络的不断增大,这无疑是难以实现的,所以可以认为区块链的信息是可靠的。同时,的网络是公开的网络,所有人都可以访问区块链,因此所有信息都是公开的。2、性能分析2.1、评价产生:本发明的新评价产生的方案需要卖家生成收据mr,并发送给用户。用户接受到收据后验证卖家的签名,确定收据的真伪,确定无误后,生成评价信息m,对m生成环签名δ,将(δ,m,mr)发送给区块链。区块链根据智能合约编写好的合约,根据用户传递的参数个数判断运行如何的操作,当是评价产生时,验证收据中卖家的签名,验证用户的环签名,验证无误后,区块链产生新的区块,进行同步,共识。当外接数据库探测到新区块产生时,根据区块同步的形式更新数据库,储存新的评价并标记评价在区块中的位置,运行可链接环签名的验证算法f,算法f由两次环签名验证算法和一次数据库更新组成。在评价产生的方案中,卖家需要进行一次公钥签名算法,进行一次通信。用户需要进行一次对公钥签名的验证算法,进行一次环签名算法,进行两次通信。区块链需要进行一次通信,运行智能合约,进行一次公钥签名验证算法,一次环签名验证算法。以及产生一个新的区块。数据库最少需要进行一次数据探测(即数据通信),运行一次可链接环签名的验证算法f,进行一次数据更新。在这个操作中,总计需要5次数据通信,1次公钥签名算法,2次公钥验证算法,1次环签名签名算法,3次环签名验证算法,一次智能合约和区块同步,1次数据库更新。2.2、评价修改:在评价修改方案中,用户需要对新消息m'进行环签名算法,生成环签名δ',然后将(m,m',δ,δ')发送给区块链,区块链根据智能合约编写好的合约,根据用户传递的参数个数判断运行何种操作,当是修改评价时,验证用户的环签名δ',运行可链接环签名验证算法f,当算法通过时,区块链产生新的区块,进行同步,共识。当外部数据库探测到新的区块产生时,根据区块同步形式更新数据库,储存新的评价,根据消息m找到最初标记的位置,修改可链接环签名的验证算法f,使f(δ,δ')=1,对新消息m'运行环签名可链接环签名的验证算法f。在评价修改的方案中,用户需要进行一次通信,进行一次环签名算法。区块链需要进行一次通信,进行一次环签名验证算法,产生一个新的区块。数据库最少需要进行一次数据探测,运行两次可链接环签名的验证算法f,进行一次数据更新。总计需要3次数据通信,1次环签名签名算法,5次环签名验证算法,一次智能合约和区块同步,1次数据库更新。下面结合实验仿真对本发明的应用效果作进一步的描述。1、使用两台电脑来实现本发明,电脑的配置是core(tm)i3-3240cpuwhichclocksat3.40ghzandhas4.0gbofram.使用的系统为linux下的ubuntu14.04。(如下表所示)首先,在两台电脑上用python实现socket协议,从而实现数据通信,数据块的大小为1mb(一个区块的大小),进而模拟数据通信的时间。用户和卖家的签名和验证算法都是用python实现的,公钥签名和验证算法模拟使用的是elgamal加密算法,消息用的是一段16bit的随机数。环签名是使用python编写的,在实现过程中我缩放了一些数值从而使一个变量可以完成应有的功能。判断可链接性的函数是通过首先判断签名合法性,然后通过对比两个签名的p和p'是否一致实现的。数据库的更新,数据的插入修改都是在系统下通过java调用数据库,利用mysql实现的。算法f首先是运行环签名验证算法验证签名合法性,然后对比p和p′是否相等。区块链的同步,共识,更新,智能合约的编写是在以太坊的truffle框架下,过solidity编写智能合约,结合testrpc实现的。智能合约和区块链的操作都是通过创建一个私有链,在私有链上做的实验。2、时耗对比分析模拟了每一步耗时的情况,设tg是新评价生成的总耗时,tr是评价修改的总耗时。t1是通信一次的时间,t2s是公钥签名一次的时间,t2v是公钥验证一次的时间。t3s是环签名签名一次的时间,t3v是环签名验证一次的时间,t41是区块链运行智能合约判断新评价产生并产生一个新区块的时间,t42是区块链运行智能合约判断评价修改并产生一个新区块的时间,t5为数据库插入数据的时间,t6为数据库插入一条数据并修改一条数据的时间。经过仿真,t1在一百次通信情况下的平均耗时为401ms。100次公钥签名算法下t2s的平均耗时为3ms,t2v平均耗时为1ms。由于环签名运行算法的时间与算法中n的取值有关,模拟了n=(1,5,10,15,20,25,30,35,40)情况下t3s和t3v的平均耗时如下表所示,耗时均为100次运行的平均值。在私有链中模拟的区块链产生新的区块和运行智能合约的情况,经过1000次测试t41平均耗时216.262ms,t42平均耗时215.437ms。验证算法f的运行时间由两部分组成,分别是两次环签名的验证算法,和一次数据库的数据插入,或者是一条数据插入和数据更新。结果为100次模拟平均时间。数据库的数据插入,更新操作随着数据量的增大也会发生一些变化,测试结果如下表所示:表一:不同环签名轮数签名的时间开销n1510152025303540t3s(ms)101398758111714631875221625232954t3υ(ms)91385735110614431790216224932844表二:不同数据量数据插入和修改的时间开销数据量1050100500100050001000050000100000t5(ms)11111211152170111191t6(ms)263035415473111162258对于新评价生成阶段:tg=5t1+t2s+2t2v+t3s+3t3v+t41+t5;对于评价修改阶段:tr=3t1+t3s+5t+3v+t42+t6;对比了两种操作的时间,分析了当n固定的情况(n取5时可以看到两条曲线的焦点)下随着数据量增大方案耗时的变化,通过图4可以看到,随着数据量的增大,评价修改的耗时会逐渐超过评价产生的耗时,这是因为随着数据量的增大,评价修改操作需要进行一次数据修改和一次数据插入,耗时会比评价生成操作增长更快。分析了当数据库大小固定的情况下(数据库大小取100000,由于数据量影响没有n那么大)方案耗时随n的变化,如图5所示:通过图可以看到,随着环签名n的增大,评价修改的操作消耗的时间会超过评价生成操作,这是因为评价修改操作中需要进行5次环签名验证算法,而评价生成操作只有三次环签名验证算法。最后,分析了系统的效率,图6是新评价生成的操作:在图6中可以看到,随着环签名参数n的增大和数据库中数据量的增大,新评价产生的时间不断增加。在n为40,数据库大小为100000时,系统的耗时也仅为13903ms,远远小于区块链同步的时间(5分钟),因此,这一步操作是高效的。在图7中可以看到,随着环签名参数n的增大和数据库中数据量的增大,新评价产生的时间不断增加。在n为40,数据库大小为100000时,系统的耗时为18850ms,同样远远小于区块同步时间,因此,这一步操作是高效的。本发明的评价生成和评价修改两种操作。用区块链来确保评价信息的有效性和不可篡改性,用可链接的环签名保证合法用户可以修改他自己的评价。和传统的评价系统不同,不需要一个第三方来保证评价的可靠性,并且,由区块链保证的的方案更加可靠。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1