本发明属于区块链和密码学
技术领域:
,尤其涉及一种隐私可验证的竞拍方法、系统、计算机设备及应用。
背景技术:
:目前,拍卖业作为最有效的市场配置资源的交易方式之一,在促进商品流通、活跃文化市场等许多方面发挥了积极的作用。目前,随着互联网的发展,网上拍卖作为一种崭新的存在形式,在继承传统拍卖优势的同时也迎来了巨大的挑战。随着区块链技术的发展,在技术方面,区块链的确能够改善很多问题,其分布式存储特性将数据存储在呈分布式展开的各个节点上,提高恶意攻击者的攻击成本与攻击难度,降低攻击的成功率;其去中心化特性很好的解决了在交易过程中依赖第三方中介机构的问题,从根源上剔除第三方不可信所带来的各种难题。但结合生产应用实际来看,区块链上的数据对于每个节点而言都是公开可查看的,不符合人们保护自己隐私信息的实际需求,这就需要在应用区块链的基础上结合隐私保护机制,才能更好的发挥区块链的优势。目前已经逐步有人尝试将区块链和竞拍结合起来,但是由于区块链的公开可查验特性,如何保证竞拍参与方的投标隐私;在投标隐私的前提下如何开展比较以及验证比较过程的正确性;如何完全剔除第三方拍卖行的参与,避免拍卖行的暗箱操作,这仍是亟需解决的问题和缺陷。通过上述分析,现有技术存在的问题及缺陷为:(1)区块链上的数据对于每个节点而言都是公开可查看的,不符合人们保护自己隐私信息的实际需求。(2)由于区块链的公开可查验特性,如何保证竞拍参与方的投标隐私;在投标隐私的前提下如何开展比较以及验证比较过程的正确性;如何完全剔除第三方拍卖行的参与,避免拍卖行的暗箱操作,仍是亟需解决的问题和缺陷。解决以上问题及缺陷的难度系数极大,需要很好的将区块链技术和密码学方案相结合且融会贯通,需要掌握区块链搭链技术、智能合约编写技术、数据传输技术、同态加密方法以及零知识证明方法;与此同时,如何在保证竞拍者身份隐私和投标隐私的情况下完成安全比较,且其过程完全没有第三方拍卖行的参与,这是极大的挑战。解决以上问题及缺陷的意义是实现一个基于区块链上的隐私可验证的竞拍方案。具体来说,采用加密算法对每个参与竞拍的竞拍方所提交的竞价进行加密,保证隐私性,同时采用加法同态实现对密文竞价的安全比较计算,得到最高竞价或者最低竞价。采用范围证明等零知识证明算法对比较过程以及比较结果的正确性做出验证。在去中心化的场景中,每个竞拍方都可作为验证方对整个竞拍过程进行相应的验证。该方案的实现对区块链在金融以及拍卖方面都会产生极大的深远影响,降低竞拍者参与竞拍的经济成本,保障竞拍的安全性,消除第三方拍卖行的独裁方式。技术实现要素:针对现有技术存在的问题,本发明提供了一种隐私可验证的竞拍方法、系统、计算机设备及应用。本发明是这样实现的,一种隐私可验证的竞拍方法,所述隐私可验证的竞拍方法包括以下步骤:步骤一,进行系统初始化,拍卖人生成系统必备参数,编写智能合约,确保该竞拍的可执行性;步骤二,竞拍者进行系统注册,为自己生成公钥,再联合另一位竞拍者生成组公钥,竞拍者对自己的基本信息进行初始化以方便对后续投标的隐私处理;步骤三,竞拍者输入竞价,并对竞价进行处理以保障竞价隐私,验证竞价是否符合竞拍规则,确保竞价的隐私处理以及确保隐私处理的正确性;步骤四,两个竞拍者用自己进行隐私处理后的竞价进行比较,验证比较过程是否正确实施,实现竞拍的主要技术即安全比较,保证竞价隐私的前提下完成比较和保证比较正确性;步骤五,得到比较结果后,对比较结果进行去除隐私处理,还原比较结果,并公开,验证比较结果是否正确还原,确保单个竞价者不能对比较结果随意更改。进一步,步骤一中,所述进行系统初始化,拍卖人生成系统必备参数,编写智能合约,包括:所述隐私可验证的竞拍方法中的参与方仅由拍卖人和参与竞拍的竞拍者构成,其中拍卖人负责生成系统参数以及编写智能合约两部分:(1)拍卖人从p阶循环群g中选择生成元g和h,则生成的系统参数包括g,h,p,作为系统中后续拍卖流程的必备条件,系统参数向参与拍卖的所有竞拍者公开;(2)拍卖人使用特定编程语言来编写智能合约;当编码完成后,这份智能合约就上传到区块链网络上并广播给所有竞拍者,即所有竞拍者都会接收到该智能合约,并保存该智能合约的合约地址;智能合约的内容包括竞拍者参与竞拍前的注册流程、竞拍者的竞拍信息,其中竞拍者的竞拍信息包括竞拍者自己的昵称、编号、公钥、投标竞价密文、比较结果密文、比较结果明文;(3)竞拍者通过输入一个匿名昵称完成注册,该昵称不公开仅竞拍者自己知道,参与竞拍的竞拍者不能知道除自己之外其余竞拍者的昵称,相同的昵称在一场拍卖中只能注册一次,不能重复注册,竞拍者通过自己的昵称补充自己的竞拍信息,所述昵称仅竞拍者自己可见;(4)系统会按照智能合约的编码规则自动为每一个竞拍者按照注册顺序分配一个序号,其余竞拍者可以根据该序号访问该竞拍者的部分竞拍信息,包括公钥、投标竞价密文、比较结果密文、比较结果明文。进一步,步骤二中,所述竞拍者进行系统注册,为自己生成公钥,再联合另一位竞拍者生成组公钥,包括:(1)竞拍者执行密钥生成算法,从p阶循环群g中随机选择一个x作为自己的私钥,计算y=hx,将y作为自己的公钥;(2)竞拍者的公钥通过调用智能合约地址执行交易,将公钥上传到区块链上,并广播至所有竞拍者;其中,所述竞拍者的私钥仅自己可见,本地保存在自己的设备之上;(3)两个竞拍者通过执行分布式密钥生成算法,在无可信第三方的情况下共同生成一个共享的组公钥,任何单独一个竞拍者均不能访问私钥,当且仅当这两个竞拍者联合参与解密,此时采用组公钥加密的信息才可揭示。进一步,步骤三中,所述竞拍者输入竞价,并对竞价进行处理以保障竞价隐私,验证竞价是否符合竞拍规则,包括:(1)竞拍者a和b利用这个组公钥y执行ah-elgamal加密算法对自己的投标竞价进行加密,c=e(m)=(c1,c2)=(ykgm,hk),得到经过隐私处理过后的竞价c,其中m为投标明文,k为从循环群g中随机选取的随机数,g和h为系统公开参数;投标竞价密文还包括一个附加证明,其包括范围证明和加密正确性证明;(2)竞拍者提交的竞价必须符合竞拍要求,即竞价形式应为二进制形式;为竞价密文生成一个零知识证明,利用零知识证明算法为竞价进行范围证明;范围证明的输入为pedersen承诺,该竞价密文形式恰好符合该承诺的形式,故对每个竞价密文按位进行范围检查,并且在保证不向其他人泄露竞价信息的情况下,给出每个竞价位非零即一的证明;(3)检查投标的加密正确性,满足提交的竞价密文符合ah-elgamal加密形式,即c1=ykgm,c2=hk,且需保证c1和c2中的指数k是相等的,分别采用零知识证明中的表示证明方法、离散对数证明方法和线性等式证明方法进行证明。进一步,步骤(3)中,所述采用零知识证明中的表示证明方法、离散对数证明方法和线性等式证明方法进行证明,包括:1)证明c1=ykgm,采用表示证明方法,证明过程如下:证明方需要计算承诺vi是从中选取的随机数;计算挑战c=h(c1,t,y,g),其中是一个安全的单向哈希函数;计算响应s1=v1-ck,s2=v2-cm;构造证明(s1,s2,t);验证方需要检查等式是否成立,当且仅当c1=ykgm时等式成立。2)证明c2=hk,采用离散对数证明方法,证明过程如下:证明方需要计算承诺t=hv,计算挑战c=h(c2,h,t)以及计算响应s=v-ck;同时构造证明(s,t);验证方需要检查等式是否成立,当且仅当c2=hk时等式成立。3)证明c1和c2中的指数k是相等的,采用线性等式证明方法,先构造证明且0·v2+1·v1+(-1)·v3=0,即证明k1=k2,证明过程如下:证明方需要计算承诺且满足0·v2+1·v1+(-1)·v3=0;计算挑战c=h(g,y,h,x,t);计算响应s1=v1-ck1,s2=v2-cm,s3=v3-ck2;同时构造证明(s1,s2,s3,t);验证方需要检查等式是否成立,当且仅当时等式成立;检查等式0·s2+1·s1+(-1)·s3=-c·0是否成立,当且仅当k1=k2时等式成立,只有当这两个等式均成立才算验证通过。进一步,步骤四中,所述两个竞拍者用自己进行隐私处理后的竞价进行比较,验证比较过程是否正确实施,包括:(1)当竞拍者调用智能合约地址执行交易将竞价密文上传至区块链之前,首先将关于竞价密文的附加证明广播给参与竞拍的每个竞拍者,所有竞拍者首先对附加证明进行验证,即对范围证明和加密正确性进行验证,只有当验证通过,所有竞拍者达成共识后,说明竞价密文符合加密算法和竞拍要求且没有经过恶意修改,可以上链;若验证不通过,说明该竞拍者存在恶意行为,可能造成恶意竞价,不能通过共识;(2)竞拍者通过调用智能合约获得其他竞拍者的隐私竞价,通过dgk比较协议将自己的竞价和其他竞拍者的竞价进行安全比较,由于竞价形式是二进制格式,故从高位向低位逐位开始比较,当找到第一处不相等的比特位时,该位的比较结果就决定了两个数字的大小关系;(3)当两个比特串按位比较过后会得到一个密文比特串,需要参与比较的两个竞拍者分别对该比特串进行一次置换,防止比较双方知道第一个不相等数的位置,在一定程度上避免泄露竞价隐私,故在比较过程附加一个零知识证明算法中的置换证明来证明置换的正确性,所述置换证明包括:输入置换前后的密文比特串,对置换前的密文先进行二次加密,再进行置换,最后和置换后的密文比特串进行比较,若二者相同则说明置换正确;二次加密时输入的明文为1,保障原来明文比较结果的不变性,但是由于加密的过程中引入了随机数,所以仍保证不会泄露置换顺序;(4)当竞拍者通过调用智能合约地址执行交易将比较密文结果上传至区块链之前,先将置换证明广播至每一个竞拍者,竞拍者对置换证明进行验证,若验证通过,所有竞拍者达成共识,说明密文比较过程中的置换并未发生篡改等恶意行为,比较结果密文可以上链;(5)参与比较的两个竞拍者必须通过联合解密才能揭示比较结果,首先每个竞拍者针对比较结果密文利用自己的私钥生成自己的秘密份额si=(c2)-x=(hk)-x,其次再利用加法同态性质计算s=sa*sb,最后执行解密步骤,得到gm=c1*s,当该比特串中有且仅有一位的解密结果为1时,就说明a<b,否则a≥b。进一步,步骤五中,所述得到比较结果后,对比较结果进行去除隐私处理,还原比较结果,并公开,验证比较结果是否正确还原,包括:(1)给最终的比较结果附加一个解密正确性证明,采用零知识证明算法中的等式证明方法验证竞拍者在解密过程中确实采用的是自己的私钥进行解密,即验证且不向其余竞拍者泄露自己的私钥,以下为等式证明方法的步骤:证明方生成随机数v计算承诺t1=c2v,t2=hv;计算挑战c=h(c2,h,t1,t2,d,y)以及响应s=v-cx;构造证明(s,t1,t2);验证方需要检查等式c2sdc=t1是否成立,当且仅当时等式成立;检查等式hsyc=t2是否成立,当且仅当时等式成立,只有当两个等式均成立验证才能通过;(2)当竞拍者通过调用智能合约地址执行交易将最终比较结果明文上传至区块链之前,先将解密正确性证明广播至每一个竞拍者,竞拍者对解密正确性进行验证,若验证通过,所有竞拍者达成共识,说明在解密过程中,竞拍者采用的私钥确实和生成该竞拍者的公钥过程中使用的私钥一致,那么比较结果明文可以上链,任何竞拍者均可对比较结果进行公开查验。本发明的另一目的在于提供一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如下步骤:进行系统初始化,拍卖人生成系统必备参数,编写智能合约;竞拍者进行系统注册,为自己生成公钥,再联合另一位竞拍者生成组公钥;竞拍者输入竞价,并对竞价进行处理以保障竞价隐私,验证竞价是否符合竞拍规则;两个竞拍者用自己进行隐私处理后的竞价进行比较,验证比较过程是否正确实施;得到比较结果后,对比较结果进行去除隐私处理,还原比较结果,并公开,验证比较结果是否正确还原。本发明的另一目的在于提供一种实施所述隐私可验证的竞拍方法的隐私可验证的竞拍系统,所述隐私可验证的竞拍系统包括:初始化模块,用于拍卖人生成系统参数作为系统初始化必备,编写智能合约,智能合约包括竞拍者的注册规范以及投标规范,拍卖人将智能合约上传至区块链,所有竞拍参与方均可见;注册模块,用于竞拍者填写昵称,完成注册,根据系统参数生成自己的密钥,并联合其余竞拍者共同生成组公钥,用组公钥加密的信息需要这些竞拍者共同参与才能解密,防止个别竞拍者进行恶意操作;投标模块,用于竞拍者输入投标明文,并用注册模块生成的组公钥对投标明文进行隐私处理,同时为隐私处理过程生成正确性证明,防止隐私处理过程中竞拍者更改投标信息;竞价比较模块,用于两个竞拍者按照竞拍规则执行比较协议,同时为比较过程生成正确性证明,防止比较过程中竞拍者进行篡改;竞拍结果公示模块,用于得到比较结果后,联合生成组公钥的竞拍者需要再次联合对比较结果进行隐私还原处理,同时为隐私还原处理生成正确性证明,防止还原过程中竞拍者进行篡改。本发明的另一目的在于提供一种网络拍卖控制终端,所述网络拍卖控制终端应用实现所述的隐私可验证的竞拍方法。结合上述的所有技术方案,本发明所具备的优点及积极效果为:本发明提供的隐私可验证的竞拍方法和竞拍系统,充分利用区块链去中心化的特性,在整个竞拍过程中,无可信第三方参与竞拍过程,即不会有第三方统一掌握所有竞拍者的投标,从根源上解决第三方不可信的问题,保证出价隐私的同时完成竞拍,且能做到每个竞拍者均可作为验证者对竞拍过程及结果进行验证。为了避免恶意竞价,本发明对投标做出相应的隐私处理,并在投标隐私的基础上,进行安全比较,利用同态计算技术和区块链相融合。同时,隐私处理也需要两个竞拍方参与,避免单独的竞拍方对投标做出篡改。本发明提供的基于区块链的隐私可验证的拍卖方法和竞拍系统,整个竞拍过程都是在竞价隐私不可见的基础上展开,针对此,融合零知识证明技术使得整个竞拍过程可验证且不泄露竞价。本发明和现有技术进行对比:现有技术本发明有第三方拍卖人参与比较仅有竞拍者参与比较过程采用高交互的安全多方计算采用基于同态加密的安全比较协议缺少对竞拍过程和结果的验证采用高效的零知识证明方法表1本发明和现有技术对比本发明为多个竞拍者联合生成组公钥,图8展示了成功生成组公钥所需耗费的时间,生成过程需要提供系统参数以及组公钥的保存位置。本发明的比较密文结果必须要有多个竞拍者联合进行解密,图9展示了联合解密比较结果所需耗费的时间,解密过程需要提供系统参数的保存位置。附图说明为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。图1是本发明实施例提供的隐私可验证的竞拍方法流程图。图2是本发明实施例提供的隐私可验证的竞拍系统结构框图。图3是本发明实施例提供的初始化模块的流程图。图4是本发明实施例提供的注册模块的流程图。图5是本发明实施例提供的投标模块的流程图。图6是本发明实施例提供的竞价比较模块的流程图。图7是本发明实施例提供的竞拍结果公示模块的流程图。图8是本发明提供的成功生成组公钥所需耗费的时间图。图9是本发明提供的联合解密比较结果所需耗费的时间图。图10是本发明实施例提供对于竞拍过程的验证效果图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。针对现有技术存在的问题,本发明提供了一种隐私可验证的竞拍方法、系统、计算机设备及应用,下面结合附图对本发明作详细的描述。如图1所示,本发明实施例提供的隐私可验证的竞拍方法包括以下步骤:s101,进行系统初始化,拍卖人生成系统必备参数,编写智能合约;s102,竞拍者进行系统注册,为自己生成公钥,再联合另一位竞拍者生成组公钥;s103,竞拍者输入竞价,并对竞价进行处理以保障竞价隐私,验证竞价是否符合竞拍规则;s104,两个竞拍者用自己进行隐私处理后的竞价进行比较,验证比较过程是否正确实施;s105,得到比较结果后,对比较结果进行去除隐私处理,还原比较结果,并公开,验证比较结果是否正确还原。本发明提供的隐私可验证的竞拍方法业内的普通技术人员还可以采用其他的步骤实施,图1的本发明提供的隐私可验证的竞拍方法仅仅是一个具体实施例而已。如图2所示,本发明实施例提供的隐私可验证的竞拍系统包括:初始化模块1,用于拍卖人生成系统参数作为系统初始化必备,编写智能合约,智能合约包括竞拍者的注册规范以及投标规范,拍卖人将智能合约上传至区块链,所有竞拍参与方均可见;注册模块2,用于竞拍者填写昵称,完成注册,根据系统参数生成自己的密钥,并联合其余竞拍者共同生成组公钥,用组公钥加密的信息需要这些竞拍者共同参与才能解密,防止个别竞拍者进行恶意操作;投标模块3,用于竞拍者输入投标明文,并用注册模块生成的组公钥对投标明文进行隐私处理,同时为隐私处理过程生成正确性证明,防止隐私处理过程中竞拍者更改投标信息;竞价比较模块4,用于两个竞拍者按照竞拍规则执行比较协议,同时为比较过程生成正确性证明,防止比较过程中竞拍者进行篡改;竞拍结果公示模块5,用于得到比较结果后,联合生成组公钥的竞拍者需要再次联合对比较结果进行隐私还原处理,同时为隐私还原处理生成正确性证明,防止还原过程中竞拍者进行篡改。下面结合实施例对本发明的技术方案作进一步的描述。本发明的设计方法整体步骤为:参与竞拍的每个竞拍者各自生成公钥、私钥,再由竞拍者两两联合利用门限密钥生成算法生成组公钥,这两个竞拍者用该组公钥加密竞价,且双方在保证各自竞价隐私的前提下对竞价密文执行比较协议,得到密文比较结果,最后再由这两个竞拍者联合对该密文比较结果进行解密,并将解密后的比较结果公开。在整个竞拍流程中,任何参与竞拍的竞拍人员均可作为验证者对其余竞拍者所提交的竞价密文、比较过程、解密正确性进行验证。本发明的拍卖流程中的参与方仅由拍卖人和参与竞拍的竞拍者构成,其中拍卖人负责为本发明生成所需的系统参数以及编写智能合约两部分,具体的拍卖方法包括如下步骤。拍卖人从p阶循环群g中选择生成元g和h,则生成的系统参数就包括g,h,p,作为系统中后续拍卖流程中的必备条件,系统参数向参与拍卖的所有竞拍者公开。拍卖人使用特定编程语言来编写智能合约,智能合约的内容包括竞拍者参与竞拍前的注册流程、竞拍者的竞拍信息等内容,其中竞拍者的竞拍信息包括竞拍者自己的昵称、编号、公钥、投标竞价密文、比较结果密文、比较结果明文等信息。当编码完成后,这份智能合约就上传到区块链网络上并广播给所有竞拍者,即所有竞拍者都会接收到该智能合约,并保存该智能合约的合约地址以便进行后续交易,如图3所示。竞拍者通过输入一个匿名昵称完成注册,该昵称不公开仅竞拍者自己知道,参与竞拍的竞拍者不能知道除自己之外其余竞拍者的昵称,相同的昵称在一场拍卖中只能注册一次,不能重复注册,竞拍者可以通过自己的昵称补充自己的竞拍信息,这里的昵称就相当于是竞拍者的密码一样仅自己可见。系统会按照智能合约的编码规则自动为每一个竞拍者按照注册顺序分配一个序号,其余竞拍者可以根据该序号访问该竞拍者的部分竞拍信息,包括公钥、投标竞价密文、比较结果密文、比较结果明文。竞拍者执行密钥生成算法,从p阶循环群g中随机选择一个x作为自己的私钥,计算y=hx,将y作为自己的公钥。竞拍者的公钥通过调用智能合约地址执行交易,将公钥上传到区块链上,并广播至所有竞拍者。但是竞拍者的私钥仅自己可见,本地保存在自己的设备之上。两个竞拍者通过执行分布式密钥生成算法,在无可信第三方的情况下共同生成一个共享的组公钥,任何单独一个竞拍者均不能访问私钥,当且仅当这两个竞拍者联合参与解密,此时采用组公钥加密的信息才可揭示。针对具体的实施例进行阐述,竞拍者a的公钥是y1,竞拍者b的公钥是y2,组公钥y=y1*y2modp,如图4所示。竞拍者a和b利用这个组公钥y执行ah-elgamal加密算法对自己的投标竞价进行加密,c=e(m)=(c1,c2)=(ykgm,hk),得到经过隐私处理过后的竞价c,其中m为投标明文,k为从循环群g中随机选取的随机数,g和h为系统公开参数。投标竞价密文还包括一个附加证明,其包括范围证明和加密正确性证明。竞拍者提交的竞价必须符合竞拍要求,即竞价形式应为二进制形式。为了验证竞拍者提交的竞价密文满足要求,为竞价密文生成一个零知识证明,其中具体涉及到的零知识证明算法为范围证明。范围证明的输入为pedersen承诺,该竞价密文形式恰好符合该承诺的形式,故对每个竞价密文按位进行范围检查,并且在保证不向其他人泄露竞价信息的情况下,给出每个竞价位非零即一的证明。除了对竞价密文的范围进行检查外,还要检查投标的加密正确性,即需要满足提交的竞价密文符合ah-elgamal加密形式,即c1=ykgm,c2=hk,且需保证c1和c2中的指数k是相等的。为此分别采用零知识证明中的表示证明方法、离散对数证明方法和线性等式证明方法。首先证明c1=ykgm,采用表示证明方法,证明的具体过程如下:证明方需要计算承诺vi是从中选取的随机数;计算挑战c=h(c1,t,y,g),其中是一个安全的单向哈希函数;计算响应s1=v1-ck,s2=v2-cm;构造证明(s1,s2,t)。验证方需要检查等式是否成立,当且仅当c1=ykgm时等式成立。其次证明c2=hk,采用离散对数证明方法,证明的具体过程如下:证明方需要计算承诺t=hv,计算挑战c=h(c2,h,t)以及计算响应s=v-ck;同时构造证明(s,t);验证方需要检查等式是否成立,当且仅当c2=hk时等式成立。最后证明c1和c2中的指数k是相等的,采用线性等式证明方法,先构造证明且0·v2+1·v1+(-1)·v3=0,即证明k1=k2,证明的具体过程如下:证明方需要计算承诺且满足0·v2+1·v1+(-1)·v3=0;计算挑战c=h(g,y,h,x,t);计算响应s1=v1-ck1,s2=v2-cm,s3=v3-ck2;同时构造证明(s1,s2,s3,t)。验证方需要检查等式是否成立,当且仅当时等式成立;检查等式0·s2+1·s1+(-1)·s3=-c·0是否成立,当且仅当k1=k2时等式成立,只有当这两个等式均成立才算验证通过。当竞拍者调用智能合约地址执行交易将竞价密文上传至区块链之前,首先将关于竞价密文的附加证明广播给参与竞拍的每个竞拍者,所有竞拍者首先对附加证明进行验证,即对范围证明和加密正确性进行验证,只有当验证通过,所有竞拍者达成共识后,说明竞价密文符合加密算法和竞拍要求且没有经过恶意修改,可以上链;若验证不通过,说明该竞拍者存在恶意行为,可能造成恶意竞价,不能通过共识,如图5所示。竞拍者通过调用智能合约获得其他竞拍者的隐私竞价,通过dgk比较协议将自己的竞价和其他竞拍者的竞价进行安全比较,由于竞价形式是二进制格式,故从高位向低位逐位开始比较,当找到第一处不相等的比特位时,该位的比较结果就决定了两个数字的大小关系。以下通过具体实施例对dgk比较算法展开叙述:以两个二进制比特串为例,分别是(al,al-1,…,a2,a1)、(bl,bl-1,…,b2,b1),对二者进行比较。如果存在一个i使得该等式成立,就说明a<b,其中为异或符号,该等式成立就说明等式ai-bi+1=0成立且等式成立,即高位相等且ai<bi,故a<b。当两个比特串按位比较过后会得到一个l位的二进制比特串,需要参与比较的两个竞拍者分别对该比特串进行一次置换,防止比较双方知道第一个不相等数的位置,在一定程度上避免泄露竞价隐私。由于是通过同态加密算法的同态加属性对密文进行计算来完成比较证明,其中需要两次置换,为了避免竞拍者在置换的过程中替换其中的密文部分来破坏竞价规则,此时需要给比较过程附加一个零知识证明算法中的置换证明,以此来证明置换的正确性。以下对置换证明进行具体的解释:置换证明包括三步,首先需要输入置换前后的密文比特串,对置换前的密文先进行二次加密,再进行置换,最后和置换后的密文比特串进行比较,若二者相同则说明置换正确。二次加密时输入的明文为1,这能保障原来明文比较结果的不变性,但是由于加密的过程中引入了随机数,所以仍保证不会泄露置换顺序。当竞拍者通过调用智能合约地址执行交易将比较密文结果上传至区块链之前,先将置换证明广播至每一个竞拍者,竞拍者对置换证明进行验证,若验证通过,所有竞拍者达成共识,说明密文比较过程中的置换并未发生篡改等恶意行为,比较结果密文可以上链,如图6所示。参与比较的两个竞拍者必须通过联合解密才能揭示比较结果,首先每个竞拍者针对比较结果密文利用自己的私钥生成自己的秘密份额si=(c2)-x=(hk)-x,其次再利用加法同态性质计算s=sa*sb,最后执行解密步骤,得到到gm=c1*s,当该比特串中有且仅有一位的解密结果为1时,就说明a<b,否则a≥b。为了防止竞拍者在利用自己的私钥生成秘密份额时未能准确采用自己的私钥,需要给最终的比较结果附加一个解密正确性证明,采用零知识证明算法中的等式证明方法验证竞拍者在解密过程中确实采用的是自己的私钥进行解密,且不向其余竞拍者泄露自己的私钥,以下为等式证明方法的具体步骤:证明方生成随机数v计算承诺t1=c2v,t2=hv;计算挑战c=h(c2,h,t1,t2,d,y)以及响应s=v-cx;构造证明(s,t1,t2)。验证方需要检查等式式c2sdc=t1是否成立,当且仅当时等式成立;检查等式hsyc=t2是否成立,当且仅当时等式成立。当竞拍者通过调用智能合约地址执行交易将最终比较结果明文上传至区块链之前,先将解密正确性证明广播至每一个竞拍者,竞拍者对解密正确性进行验证,若验证通过,所有竞拍者达成共识,说明在解密过程中,竞拍者采用的私钥确实和生成该竞拍者的公钥过程中使用的私钥一致,那么比较结果明文可以上链,如图7所示。任何竞拍者均可对比较结果进行公开查验。综上,本发明在没有可信第三方参与的条件下完成安全比较,并在整个比较过程中不会泄露任何一位竞拍者的投标竞价,且每一位竞拍者均可对竞拍过程和竞拍结果进行验证。本发明对于竞拍过程的验证效果如图10所示,在该图中展示了证明名称及相应的证明所耗费的时间,该证明时间仅为一次证明所产生的时间,在证明过程中展示的竞价位数设定为10位。在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用全部或部分地以计算机程序产品的形式实现,所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输)。所述计算机可读取存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本
技术领域:
的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。当前第1页12