一种基于区块链的竞争排名方法及装置与流程

文档序号:18406554发布日期:2019-08-10 00:26阅读:176来源:国知局
一种基于区块链的竞争排名方法及装置与流程

本发明实施例涉及科技金融技术领域,尤其涉及一种基于区块链的竞争排名方法及装置。



背景技术:

随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(finteh)转变,区块链技术也不例外,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。目前,在对各竞争方进行排名时,依赖可信的第三方机构,第三方机构从所有竞争方收集并验证敏感值v的明文,确定各竞争方的排名,然后使用一定的密码学运算产生v不同的密文,并发回到各个竞争方。该方案中,第三方机构可以获得所有竞争方的敏感值v以及各竞争方的排名,而对于竞争方案来说,敏感值v以及排名是很隐私的数据,这样可能导致竞争方的隐私数据泄露。



技术实现要素:

由于依赖第三方进行竞争排名时,容易导致竞争方的隐私数据泄露的问题,本发明实施例提供了一种基于区块链的竞争排名方法及装置。

一方面,本发明实施例提供了一种基于区块链的竞争排名方法,包括:

在接收到区块链广播的第一消息时,从所述区块链中下载所有竞争密文对,竞争密文对中的两个竞争密文由相同的公钥加密,每个竞争密文中包括竞争属性值,一个竞争属性值中包括所述公钥对应的竞争方的敏感属性值,另一个竞争属性值中包括除所述公钥对应的竞争方以外的任一竞争方的敏感属性值;

从所有竞争密文对中确定由第一公钥加密的目标竞争密文对;

针对每个目标竞争密文对,采用第一私钥对所述目标竞争密文对中的竞争密文进行解密,确定目标竞争属性对,所述第一公钥和所述第一私钥是由第一竞争方生成的;

依次比较每个目标竞争属性对中两个目标竞争属性值的大小,确定所述第一竞争方的排名。

可选地,所述竞争密文对是采用以下方式生成的:

在接收到所述区块链广播的第二消息时,从所述区块链中下载所有竞争方的公钥和密文;

针对除所述第一竞争方之外的任意一个第二竞争方,选取第一随机数和第二随机数;

采用所述第一随机数、所述第二随机数对所述第一竞争方的敏感属性值进行混淆,确定第一竞争属性值;

采用所述第二竞争方的公钥对所述第一竞争属性值进行加密,确定第一竞争密文;

采用所述第二竞争方的公钥对所述第二随机数进行加密,并根据所述第一随机数、所述第二竞争方的密文以及加密后的第二随机数,确定第二竞争密文,所述第二竞争密文中包括第二竞争属性值,所述第二竞争属性值是对所述第二竞争方的敏感属性值进行混淆之后的属性值;

将由所述第一竞争密文和所述第二竞争密文组成的竞争密文对通过匿名网络发送至所述区块链。

可选地,所述在接收到所述区块链广播的第二消息时,从所述区块链中下载所有竞争方的公钥和密文之前,还包括:

采用所述第一公钥对所述第一竞争方的敏感属性值进行加密,确定所述第一竞争方的密文;

将所述第一公钥和所述第一竞争方的密文通过匿名网络发送至所述区块链。

可选地,还包括:

采用第一签名私钥对所述第一公钥和所述第一竞争方的密文进行签名,确定所述第一竞争方的标签;

采用所述第一公钥对所述第一竞争方的标签进行加密,确定所述第一竞争方的加密承诺;

将所述第一竞争方的加密承诺通过匿名网络发送至所述区块链。

可选地,还包括:

向所述区块链发送验证请求,所述验证请求中携带第二竞争方的标识,以使所述区块链从所述第二竞争方获取第二竞争方的标签和第二公钥,采用所述第二公钥对所述第二竞争方的标签进行加密,确定所述第二竞争方的临时加密承诺;在确定所述临时加密承诺与保存的第二竞争方的加密承诺匹配,且对所述第二竞争方的标签验证通过时,确定所述第二竞争方验证通过并返回验证通过消息;

接收所述区块链发送的验证通过消息。

可选地,所述在确定所述临时加密承诺与保存的第二竞争方的加密承诺匹配,且对所述第二竞争方的标签验证通过时,确定所述第二竞争方验证通过并返回验证通过消息,包括:

从所述第二竞争方获取所述第二竞争方生成每个竞争密文对时使用的随机数以及所述第二竞争方生成的临时密文,所述临时密文是采用除所述第二竞争方以外的其他任一竞争方的公钥对所述第二竞争方的敏感属性值进行加密后确定的,根据所述随机数、所述临时密文、保存的公钥和密文生成所述第二竞争方对应的临时竞争密文对,在确定所述临时加密承诺与保存的第二竞争方的加密承诺匹配,所述临时竞争密文对与保存的所述第二竞争方生成的竞争密文对匹配,且对所述第二竞争方的标签验证通过时,确定所述第二竞争方验证通过并返回验证通过消息。

一方面,本发明实施例提供了一种基于区块链的竞争排名装置,包括:

下载模块,用于在接收到区块链广播的第一消息时,从所述区块链中下载所有竞争密文对,竞争密文对中的两个竞争密文由相同的公钥加密,每个竞争密文中包括竞争属性值,一个竞争属性值中包括所述公钥对应的竞争方的敏感属性值,另一个竞争属性值中包括除所述公钥对应的竞争方以外的任一竞争方的敏感属性值;

匹配模块,用于从所有竞争密文对中确定由第一公钥加密的目标竞争密文对;

解密模块,用于针对每个目标竞争密文对,采用第一私钥对所述目标竞争密文对中的竞争密文进行解密,确定目标竞争属性对,所述第一公钥和所述第一私钥是由第一竞争方生成的;

处理模块,用于依次比较每个目标竞争属性对中两个目标竞争属性值的大小,确定所述第一竞争方的排名。

可选地,还包括发送模块;

所述下载模块还用于,在接收到所述区块链广播的第二消息时,从所述区块链中下载所有竞争方的公钥和密文;

所述处理模块还用于,针对除所述第一竞争方之外的任意一个第二竞争方,选取第一随机数和第二随机数;采用所述第一随机数、所述第二随机数对所述第一竞争方的敏感属性值进行混淆,确定第一竞争属性值;采用所述第二竞争方的公钥对所述第一竞争属性值进行加密,确定第一竞争密文;采用所述第二竞争方的公钥对所述第二随机数进行加密,并根据所述第一随机数、所述第二竞争方的密文以及加密后的第二随机数,确定第二竞争密文,所述第二竞争密文中包括第二竞争属性值,所述第二竞争属性值是对所述第二竞争方的敏感属性值进行混淆之后的属性值;

所述发送模块具体用于,将由所述第一竞争密文和所述第二竞争密文组成的竞争密文对通过匿名网络发送至所述区块链。

可选地,所述处理模块还用于,在接收到所述区块链广播的第二消息时,从所述区块链中下载所有竞争方的公钥和密文之前,采用所述第一公钥对所述第一竞争方的敏感属性值进行加密,确定所述第一竞争方的密文;

所述发送模块还用于,将所述第一公钥和所述第一竞争方的密文通过匿名网络发送至所述区块链。

可选地,所述处理模块还用于,采用第一签名私钥对所述第一公钥和所述第一竞争方的密文进行签名,确定所述第一竞争方的标签;采用所述第一公钥对所述第一竞争方的标签进行加密,确定所述第一竞争方的加密承诺;

所述发送模块还用于,将所述第一竞争方的加密承诺通过匿名网络发送至所述区块链。

可选地,所述发送模块还用于,向所述区块链发送验证请求,所述验证请求中携带第二竞争方的标识,以使所述区块链从所述第二竞争方获取第二竞争方的标签和第二公钥,采用所述第二公钥对所述第二竞争方的标签进行加密,确定所述第二竞争方的临时加密承诺;在确定所述临时加密承诺与保存的第二竞争方的加密承诺匹配,且对所述第二竞争方的标签验证通过时,确定所述第二竞争方验证通过并返回验证通过消息;

所述下载模块还用于,接收所述区块链发送的验证通过消息。

可选地,所述发送模块具体用于,向所述区块链发送验证请求,所述验证请求中携带第二竞争方的标识,以使所述区块链从所述第二竞争方获取所述第二竞争方生成每个竞争密文对时使用的随机数以及所述第二竞争方生成的临时密文,所述临时密文是采用除所述第二竞争方以外的其他任一竞争方的公钥对所述第二竞争方的敏感属性值进行加密后确定的,根据所述随机数、所述临时密文、保存的公钥和密文生成所述第二竞争方对应的临时竞争密文对,在确定所述临时加密承诺与保存的第二竞争方的加密承诺匹配,所述临时竞争密文对与保存的所述第二竞争方生成的竞争密文对匹配,且对所述第二竞争方的标签验证通过时,确定所述第二竞争方验证通过并返回验证通过消息。

一方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现基于区块链的竞争排名方法的步骤。

一方面,本发明实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行基于区块链的竞争排名方法的步骤。

本发明实施例中,由于将所有竞争方的敏感属性值隐藏在竞争属性值中,通过依次比较每个竞争属性对中两个竞争属性值的大小,确定竞争方的排名,保证了任一竞争方不能获知其他竞争方的敏感属性值。其次,竞争密文对是采用公钥进行加密后获得的,而基于公钥并不能确定竞争方的身份,故采用竞争密文对中的竞争属性值确定排名时,任一竞争方只能得到自身在所有竞争方的排名,而不能知道其他竞争方的排名,从而有效保护了各个竞争方的隐私数据。

附图说明

为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例适用的一种系统架构图;

图2为本发明实施例提供的一种基于区块链的竞争排名方法的流程示意图;

图3为本发明实施例提供的一种确定竞争密文对的方法的流程示意图;

图4为本发明实施例提供的一种验证方法的流程示意图;

图5为本发明实施例提供的一种基于区块链的竞争排名装置的结构示意图;

图6为本发明实施例提供的一种计算机设备的结构示意图。

具体实施方式

为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

为了方便理解,下面对本发明实施例中涉及的名词进行解释。

区块链是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的hash值,通过这种方式组成一条链。区块链的核心理念有两个,一个是密码学技术,另一个是去中心化思想,基于这两个理念做到区块链上的历史信息无法被篡改。一个区块由块头和块体组成,其中块头定义包括该区块高度h,上一个区块的hash值等重要字段,而块体主要存储交易数据。

竞争方:参与排名的主体。

敏感属性值:每个竞争方都有一个敏感属性值v,竞争方想了解自身的敏感属性值v在所有的竞争方中的排名。敏感属性值v可以是一个正整数,或者是其他任意一个可以通过合适的编码方式转化成一个正整数的数据类型。比如,字符串“123”可以转化成整数123进行比较;字符串“a”,“b”,可以转化成数值1,2进行比较。浮点数3.14可以转化成整数314进行比较。向量或其他复合数据类型<a,b>,可以通过编码公式a*1000+b转化成整数进行比较,假定b的最大值<1000。字符串“a”,“b”,“top”,可以通过非线性编码公式v=1if字符串=“top”else0转化成整数进行比较。

数据存证智能合约:数据存证智能合约是的一个部署在区块链上的智能合约,提供以下数据存证功能:

1、从网络中接收数据,将收到的数据写入到防篡改的区块数据中。

2、上一步写入的区块数据可以通过网络被读取和验证。

数字证书:数字证书是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名)。它是由权威机构——ca机构,又称为证书授权(certificateauthority)中心发行的,可以用它来识别对方的身份。

加法同态密码算法:加法同态密码算法产生的密文对于加法操作有同态性,即满足以下条件:

e(p)+e(q)=e(p+q)

e(k*p)=k*e(p)

以上e(x)表示x在加密后生成的密文,加法同态性指使用同一密钥加密的密文在经过加法求和之后获得的密文,等同于将对应的明文先进行加法求和,然后再对和值加密获得的密文。paillier密码算法是一种经典的加法同态密码的实现,同时还是一种可证明安全的非对称密码算法。该算法会为每位使用者产生一对公钥和私钥,用其公钥加密的密文满足加法同态性,经过加法运算的密文可以被对应的私钥正确地解密。

匿名网络:匿名网络是一种隐藏网络消息发送方的身份(包括ip和其他可间接用于识别发送方身份的信息)的网络技术。匿名网络可以有多种实现方式,最常见的是使用洋葱路由协议,在到最终的接收方之前,发送方发出的消息,在多个匿名网络节点中以密文的形式被多次转发。最终接收方可以解密发送的原文以及上一个转发网络节点的ip,但无法追踪最初发送方的ip。

本发明实施例中的基于区块链的竞争排名方法可以应用于在无可信第三方的情况下,对多个竞争方进行排名,其系统架构如图1所示,分布式网络中包括多个竞争方101以及区块链102,区块链102上包括数据存证智能合约。每个竞争方101保存一个竞争属性值。每个竞争方101通过与区块链102进行交互获得自身在所有竞争方中的排名,同时满足以下要求:

任一竞争方都不透露自己竞争属性值v给其他竞争方。任一竞争方都不透露自己竞争属性值给不参与排名的第三方。任一竞争方都不透露自己的竞争属性值的排名给其他竞争方。任一竞争方都不透露自己的竞争属性值的排名给不参与排名的第三方。

基于图1所示的系统架构,本发明实施例提供了一种基于区块链的竞争排名方法的流程,该方法的流程可以由第一竞争方对应的基于区块链的竞争排名装置执行,基于区块链的竞争排名装置可以是图1所示的竞争方101,如图2所示,包括以下步骤:

步骤s201,在接收到区块链广播的第一消息时,从区块链中下载所有竞争密文对。

具体地,竞争密文对是由各竞争方生成并发送至区块链的数据存证智能合约的。当所有的竞争方将生成的竞争密文对发送至数据存证智能合约时,数据存证智能合约向所有的竞争方广播第一消息。每个竞争密文对包括两个竞争密文,竞争密文对中的两个竞争密文由相同的公钥加密,每个竞争密文中包括竞争属性值,一个竞争属性值中包括公钥对应的竞争方的敏感属性值,另一个竞争属性值中包括除公钥对应的竞争方以外的任一竞争方的敏感属性值。

步骤s202,从所有竞争密文对中确定由第一公钥加密的目标竞争密文对。

步骤s203,针对每个目标竞争密文对,采用第一私钥对目标竞争密文对中的竞争密文进行解密,确定目标竞争属性对。

第一公钥和第一私钥是由第一竞争方生成的,具体地,第一竞争方采用约定的非对称加法同态密码算法生成一个新的临时密钥对,该密钥对包括第一公钥和第一私钥,其他竞争方也可以采用该方法生成密钥对,此处不再赘述。第一公钥和第一私钥无法关联到第一竞争方的验证自身身份的签名私钥和签名公钥。第一私钥只有第一竞争方知道,除了第一竞争方自己,其他竞争方法不能解密由第一公钥加密的竞争密文对。

步骤s204,依次比较每个目标竞争属性对中两个目标竞争属性值的大小,确定第一竞争方的排名。

竞争属性值是将敏感属性值混淆后获得的,因此第一竞争方只知道自身的敏感属性值,而不知道任意一个第二竞争方的敏感属性值。第一竞争方可以通过比较目标竞争属性值来间接比较敏感属性值,然后确定排名。

由于将所有竞争方的敏感属性值隐藏在竞争属性值中,通过依次比较每个竞争属性对中两个竞争属性值的大小,确定竞争方的排名,保证了任一竞争方不能获知其他竞争方的敏感属性值。其次,竞争密文对是采用公钥进行加密后获得的,而基于公钥并不能确定竞争方的身份,故采用竞争密文对中的竞争属性值确定排名时,任一竞争方只能得到自身在所有竞争方的排名,而不能知道其他竞争方的排名,从而有效保护了各个竞争方的隐私数据。

下面具体介绍确定竞争密文对的过程,如图3所示,包括以下步骤:

步骤s301,在接收到区块链广播的第二消息时,从区块链中下载所有竞争方的公钥和密文。

具体地,各竞争方生成公钥和密文并发送至区块链的数据存证智能合约。当所有的竞争方将生成的公钥和密文发送至数据存证智能合约时,数据存证智能合约向所有的竞争方广播第二消息。

针对第一竞争方,首先生成第一公钥和第一私钥,采用第一公钥对第一竞争方的敏感属性值进行加密,确定第一竞争方的密文,然后将第一公钥和第一竞争方的密文通过匿名网络发送至区块链。其他竞争方生成公钥和密文的过程与第一竞争方生成公钥和密文的过程相同,此处不再赘述。

示例性地,设定竞争方采用约定的非对称加法同态密码算法生成一个新的临时密钥对,该密钥对包括第一公钥pk_i_ephemeral和第一私钥sk_i_ephemeral。采用pk_i_ephemeral对第一竞争方的敏感属性值v_i进行加密,获得第一竞争方的密文e_pk_i_ephemeral(v_i),将pk_i_ephemeral和e_pk_i_ephemeral(v_i)通过匿名网络发送至区块链。

步骤s301,针对除第一竞争方之外的任意一个第二竞争方,选取第一随机数和第二随机数。

具体地,第一随机数和第二随机数为两个独立且互不相干的随机数,第一竞争方选取第一随机数和第二随机数之后,只有自己知道,不会透露给其他竞争方。

步骤s302,采用第一随机数、第二随机数对第一竞争方的敏感属性值进行混淆,确定第一竞争属性值。

步骤s303,采用第二竞争方的公钥对第一竞争属性值进行加密,确定第一竞争密文。

具体实施中,采用第一随机数和第二随机数对第一竞争方的敏感属性值进行混淆,得到第一竞争属性值:d1_ij*v_i+d2_ij,其中,v_i为第一竞争方的敏感属性值,d1_ij为第一随机数,d2_ij为第二随机数。

然后采用第二竞争方的公钥e_pk_j_ephemeral对第一竞争属性值进行加密,确定的第一竞争密文:e_pk_j_ephemeral(d1_ij*v_i+d2_ij)。

步骤s304,采用第二竞争方的公钥对第二随机数进行加密,并根据第一随机数、第二竞争方的密文以及加密后的第二随机数,确定第二竞争密文。

具体实施中,第二竞争密文中包括第二竞争属性值,第二竞争属性值是对第二竞争方的敏感属性值进行混淆之后的属性值。采用第二竞争方的公钥对第二随机数进行加密,获得e_pk_j_ephemeral(d2_ij)。根据第一随机数、第二竞争方的密文以及加密后的第二随机数,确定第二竞争密文:d1_ij*e_pk_j_ephemeral(v_j)+e_pk_j_ephemeral(d2_ij)。进一步地,根据加法同态密码算法的特征,第二竞争密文可以为:e_pk_j_ephemeral(d1_ij*v_j+d2_ij),其中,d1_ij*v_j+d2_ij为第二竞争属性值,第二竞争属性值是采用第一随机数d1_ij和第二随机数d2_ij对第二竞争方的敏感属性v_j值进行混淆之后获得的属性值。

密码算法的输入输出值的值域都是在z_n环上,设定z_n的最大值为n。为了避免溢出,n需要大于v_max*d1_max+d2_max,为了保证足够的混淆强度,d1_max和d2_max不能小于v_max,因此,基于上述几点,所有竞争方需要预先约定好v_max、d1_max、d2_max、n值。

步骤s305,将由第一竞争密文和第二竞争密文组成的竞争密文对通过匿名网络发送至区块链。

具体地,将<pk_i_ephemeral,e_pk_j_ephemeral(d1_ij*v_i+d2_ij)>和<pk_j_ephemeral,e_pk_j_ephemeral(d1_ij*v_j+d2_ij)>组成的竞争密文对通过匿名网络发送至区块链,其中,pk_i_ephemeral和pk_j_ephemeral用于标记第一竞争密文和第二竞争密文中对应的敏感属性值为v_i和v_j。

由于各竞争方采用随机数将敏感属性值进行混淆,获取竞争属性值,然后通过匿名网络发送至区块链网络,故在进行排名时,任一竞争方不能获得其他竞争方的敏感属性值,其次,竞争密文对中的竞争密文由公钥加密并通过匿名网络发送至区块链,因此竞争密文对不能关联到竞争方的身份,使得在竞争排名时,任一竞争方不能获得其他竞争方的排名,从而有效保护了各竞争方的敏感数据。

可选地,为了便于后续对各竞争方进行验证,确定出作假的竞争方,每个竞争方需要发送加密承诺至区块链,便于区块链后续基于加密承诺对竞争方进行验证。

具体地,针对第一竞争方,采用第一签名私钥对第一公钥和第一竞争方的密文进行签名,确定第一竞争方的标签,其中,签名私钥和签名公钥由ca机构发行,用于唯一标识竞争方的身份。第一签名私钥进行加密后,可以采用被标识第一竞争方身份的数字证书中的第一签名公钥验证。采用第一公钥对第一竞争方的标签进行加密,确定第一竞争方的加密承诺,然后将第一竞争方的加密承诺通过匿名网络发送至区块链。通过第一公钥对第一竞争方的标签进行加密,使其他竞争方不能将第一竞争方的标签与第一竞争方关联。后续对第一竞争方进行验证时,可以采用第一竞争方的标签、第一竞争方的加密承诺这些无法抵赖的证据确定第一竞争方是否作假,从而保护诚实竞争方的隐私。

在一种可能的实施方式中,可以在区块链中设置自动化的验证服务器或部署自主验证智能合约,实现对竞争方进行验证,验证过程由第一竞争方、第二竞争方和区块链交互执行,具体包括以下步骤,如图4所示:

步骤s401,第一竞争方发送验证请求至区块链,验证请求中携带第二竞争方的标识。

当第一竞争方怀疑第二竞争方作假时,可以向区块链发送验证请求,用于请求验证第二竞争方是否作假。

步骤s402,区块链单独联系第二竞争方。

步骤s403,区块链从第二竞争方获取第二竞争方的标签和第二公钥。

第二竞争方需要提供竞争排名时使用的第二公钥以及第二竞争方的标签。

步骤s404,区块链采用第二公钥对第二竞争方的标签进行加密,确定第二竞争方的临时加密承诺。

步骤s405,区块链在确定临时加密承诺与保存的第二竞争方的加密承诺匹配,且对第二竞争方的标签验证通过时,确定第二竞争方验证通过。

区块链中预先保存了在竞争排名时,第二竞争方发送的加密承诺。将临时加密承诺与保存的加密承诺进行比对,若不一致,则可以说明第二竞争方作假。若一致,为了保证验证的准确性,可以进一步对第二竞争方的标签进行验证。具体地,首先可以采用第二竞争方的数字证书验证第二竞争方法的签名私钥,然后进一步验证第二竞争方的标签中的第二公钥以及第二竞争方的密文是否与保存的第二公钥以及第二竞争方的密文匹配,若全部验证通过,则说明第二竞争方没有作假,否则说明第二竞争方作假。

步骤s406,区块链返回验证通过消息至第一竞争方。

区块链通过比较保存的加密承诺和生成的临时加密承诺以及验证竞争方的标签这些无法抵赖的证据,确定竞争方是否作假,从而保护诚实竞争方的隐私,维护了竞争秩序。

进一步地,区块链在验证第二竞争是否作假时,可以结合第二竞争方的标签、第二竞争方的加密承诺以及第二竞争方生成的竞争密文对进行验证。

具体地,区块链从第二竞争方获取第二竞争方生成每个竞争密文对时使用的随机数以及第二竞争方生成的临时密文,临时密文是采用除第二竞争方以外的其他任一竞争方的公钥对第二竞争方的敏感属性值进行加密后确定的。根据随机数、临时密文、保存的公钥和密文生成第二竞争方对应的临时竞争密文对。具体实施中,第二竞争方生成每个竞争密文对时,使用了两个随机数据,区块链保存的公钥和密文包括第二竞争方在竞争排名时发送的公钥和密文以及其他竞争方在竞争排名时发送的公钥和密文。在确定临时加密承诺与保存的第二竞争方的加密承诺匹配,临时竞争密文对与保存的第二竞争方生成的竞争密文对匹配,且对第二竞争方的标签验证通过时,确定第二竞争方验证通过并返回验证通过消息。

示例性地,区块链从竞争方2中获取竞争方2的标签sig_sk_2_signature(hash(pk_2_ephemeral||e_pk_2_ephemeral(v_2)))和竞争方2的公钥pk_2_ephemeral,采用竞争方2的公钥对竞争方2的标签进行加密,确定竞争方2的临时加密承诺。将竞争方2的临时加密承诺与保存的竞争方2的加密承诺进行比对,若一致,说明竞争方2的临时加密承诺与保存的竞争方2的加密承诺匹配。

进一步,对竞争方2的标签进行验证。具体地,首先可以采用竞争方2的数字证书验证竞争方2的签名私钥sig_sk_2_signature,然后进一步验证竞争方2的标签中的hash(pk_2_ephemeral||e_pk_2_ephemeral(v_2))是否与保存的公钥pk_2_ephemeral以及第二竞争方的密文e_pk_2_ephemeral(v_2)匹配,若全部验证通过,则说明对竞争方2的标签验证通过。

进一步,针对竞争方2在竞争排名时生成的一个竞争密文对a,包括竞争密文1:e_pk_1_ephemeral(d1_21*v_1+d2_2)和竞争密文2:e_pk_1_ephemeral(d1_21*v_2+d2_2)。区块链从竞争方2获取的随机数包括随机数d1_21和随机数d2_21,竞争方2的敏感属性值为v_2,从竞争方2获取的临时密文为e_pk_1_ephemeral(v_2)。

采用保存的竞争方1的公钥对随机数d2_21进行加密,得到e_pk_1_ephemeral(d2_21),然后根据随机数d1_21、加密后的随机数e_pk_1_ephemeral(d2_21)、保存的竞争方1的密文e_pk_1_ephemeral(v_1)生成临时竞争密文1为:

d1_21*e_pk_1_ephemeral(v_1)+e_pk_1_ephemeral(d2_21)

采用保存的竞争方1的公钥对随机数d2_21进行加密,得到e_pk_1_ephemeral(d2_21),然后根据随机数d1_21、加密后的随机数e_pk_1_ephemeral(d2_21)、临时密文e_pk_1_ephemeral(v_2)生成临时竞争密文2为:

d1_21*e_pk_1_ephemeral(v_2)+e_pk_1_ephemeral(d2_21)

将临时竞争密文1和临时竞争密文2组成临时竞争密文对a’。然后将临时竞争密文1和竞争密文1进行比对,即d1_21*e_pk_1_ephemeral(v_1)+e_pk_1_ephemeral(d2_21)是否等于e_pk_1_ephemeral(d1_21*v_1+d2_2)。将临时竞争密文2和竞争密文3进行比对,即d1_21*e_pk_1_ephemeral(v_2)+e_pk_1_ephemeral(d2_21)是否等于e_pk_1_ephemeral(d1_21*v_2+d2_2)。若均匹配,则说明临时竞争密文对a’与保存的第二竞争方生成的竞争密文对a匹配,其他竞争密文对也可以采用相同的方法进行匹配,若都匹配,则说明竞争方2对应的临时竞争密文对与保存的竞争方2生成的竞争密文对匹配。

当竞争方2的临时加密承诺与保存的竞争方2的加密承诺匹配,对竞争方2的标签验证通过,且竞争方2对应的临时竞争密文对与保存的竞争方2生成的竞争密文对匹配时,说明竞争方2没有作假,否则,说明竞争方2作假。

在验证竞争方是否作假时,采用竞争方的标签、竞争方的加密承诺这些竞争方法无法抵赖证据判断区块链中的数据是否由竞争方发送,通过对竞争方生成的竞争密文对进行验证,判断竞争方在参与竞争时是否采用了一致的敏感属性值,从而保证了诚实竞争方获得正确的排名,维护了竞争排名的秩序。

为了更好的解释本发明实施例,下面结合具体的实施场景描述本发明实施例提供的一种基于区块链的竞争排名方法,主要包括四个阶段。

设定竞争方为n个,p_i表示竞争方i,v_i表示竞争方i的敏感属性值v,r_i表示竞争方i的敏感属性值v在所有竞争方中的排名,pk_i表示竞争方i产生的公钥,sk_i表示竞争方i产生的对应pk_i的私钥,e_k(m)表示使用密钥k加密消息m,d_k(m)表示使用密钥k解密消息m,sig_k(m)表示使用签名私钥k对消息m进行数字签名,hash(m)表示消息m的哈希值,a||b表示在a字符串之后附加b字符串,例如“ab”||“c”=“abc”。contract_seal表示区块链上的一个具有数据存证功能的智能合约。

第一阶段:

1、竞争方i采用约定的非对称加法同态密码算法生成一个新的临时密钥对,公钥为pk_i_ephemeral,私钥为sk_i_ephemeral。

2、竞争方i使用公钥pk_i_ephemeral加密自己的敏感属性值v_i,获得密文e_pk_i_ephemeral(v_i)。

3、竞争方i使用标识自身身份的签名私钥sk_i_signature对hash(pk_i_ephemeral||e_pk_i_ephemeral(v_i))进行不可抵赖的签名,获得竞争方i的标签sig_sk_i_signature(hash(pk_i_ephemeral||e_pk_i_ephemeral(v_i)))。

4、竞争方i使用公钥pk_i_ephemeral加密sig_sk_i_signature(hash(pk_i_ephemeral||e_pk_i_ephemeral(v_i)))获得不可抵赖的加密承诺hidden_commitment_i=e_pk_i_ephemeral(sig_sk_i_signature(hash(pk_i_ephemeral||e_pk_i_ephemeral(v_i))))。

5、竞争方i将公钥pk_i_ephemeral、密文e_pk_i_ephemeral(v_i)、加密承诺hidden_commitment_i通过匿名网络发送到区块链上的一个数据存证智能合约contract_seal。

第二阶段:当所有竞争方都完成第一阶段之后,contract_seal向所有竞争方广播通知,开始第二阶段。

1、竞争方i从contract_seal中下载所有的公钥和密文。

2、针对除竞争方i之外的任意一个竞争方j,选取两个独立不相干的随机正整数d1_ij和d2_ij。

3、根据随机正整数d1_ij和d2_ij、竞争方i的敏感属性值v_i确定第一竞争属性值d1_ij*v_i+d2_ij,使用竞争方j的公钥e_pk_j_ephemeral加密第一竞争属性值,获得第一竞争密文:e_pk_j_ephemeral(d1_ij*v_i+d2_ij)。

4、使用竞争方j的公钥e_pk_j_ephemeral加密d2_ij,获得e_pk_j_ephemeral(d2_ij)。

5、根据随机正整数d1_ij、竞争方j的密文e_pk_j_ephemeral(v_j)以及加密后的随机正整数e_pk_j_ephemeral(d2_ij),确定第二竞争密文:d1_ij*e_pk_j_ephemeral(v_j)+e_pk_j_ephemeral(d2_ij)。根据加法同态密码算法的特性,可以将第二竞争密文转化为:e_pk_j_ephemeral(d1_ij*v_j+d2_ij)。

6、将第一竞争密文和第二竞争密文组成的竞争密文对<pk_i_ephemeral,e_pk_j_ephemeral(d1_ij*v_i+d2_ij)>,<pk_j_ephemeral,e_pk_j_ephemeral(d1_ij*v_j+d2_ij)>通过匿名网络再次发送到contract_seal。竞争方i采用上述同样的方法可以生成n-1对竞争密文对。

第三阶段:当所有竞争方都完成第二阶段之后,contract_seal向所有竞争方广播通知,开始第三阶段。

1、竞争方i从contract_seal中下载所有的竞争密文对。

2、竞争方i选出自己临时私钥sk_i_ephemeral可以解密的n-1对的用自己公钥pk_i_ephemeral加密的竞争密文对。设定竞争密文对为:e_pk_i_ephemeral(d1_ji*v_i+d2_ji)和e_pk_i_ephemeral(d1_ji*v_j+d2_ji),竞争方i使用自己私钥sk_i_ephemeral对其解密,得到以下结果:

v_i’=d1_ji*v_i+d2_ji=d_sk_i_ephemeral(e_pk_i_ephemeral(d1_ji*v_i+d2_ji))

v_j’=d1_ji*v_j+d2_ji=d_sk_i_ephemeral(e_pk_i_ephemeral(d1_ji*v_j+d2_ji))

其中,v_i’和v_j’为一对竞争属性值。

3、比较v_i’和v_j’的大小,如果v_i’>v_j’,说明竞争方i的v_i值大于竞争方j的v_j。

4、比较n-1对竞争密文对后,可以得到竞争方i的排名。如果有r_i个竞争属性值大于竞争方i的竞争属性值,则竞争方i可以确定自身的排名为r_i。

第四阶段:

1、竞争方i怀疑竞争方j作假时,向区块链发送验证请求。

2、区块链联系竞争方j,从竞争方j中获取hidden_commitment消息中的sig_sk_j_signature(hash(pk_j_ephemeral||e_pk_j_ephemeral(v_j))和临时公钥e_pk_j_ephemeral。

3、区块链使用临时公钥e_pk_j_ephemeral加密获得的sig_sk_j_signature(hash(pk_j_ephemeral||e_pk_j_ephemeral(v_j)),以此重新算出临时加密承诺e_pk_j_ephemeral(sig_sk_j_signature(hash(pk_j_ephemeral||e_pk_j_ephemeral(v_j)))。

4、区块链将临时加密承诺与保存的加密承诺进行比对,采用竞争方j的数字证书验证竞争方j的签名私钥sig_sk_j_signature,然后进一步验证hash(pk_j_ephemeral||e_pk_j_ephemeral(v_j))是否与保存的pk_j_ephemeral和e_pk_j_ephemeral(v_j)匹配,若全部验证通过,则说明区块链中的历史消息确实由竞争方j所发,否则竞争方j作假。

5、根据临时公钥e_pk_j_ephemeral,区块链可以在contract_seal的区块数据中筛选出所有由竞争方j在第二阶段发送的n-1个竞争密文对,<pk_i_ephemeral,e_pk_i_ephemeral(d1_ji*v_i+d2_ji)>,<pk_j_ephemeral,e_pk_i_ephemeral(d1_ji*v_j+d2_ji))>。

6、区块链从竞争方j中获取生成每个竞争密文对时使用的随机数d1_ji和d2_ji,采用临时公钥pk_i_ephemeral加密随机数d2_ji得到e_pk_i_ephemeral(d2_ji)。

7、区块链要求竞争方j使用其他竞争方的临时公钥pk_i_ephemeral加密自己的敏感属性值v_j,并向区块链发送加密之后的n-1个临时密文e_pk_i_ephemeral(v_j)。

8、区块链根据随机数d1_ji、加密后的随机数e_pk_i_ephemeral(d2_ji)、临时密文e_pk_i_ephemeral(v_j)生成临时竞争密文d1_ji*e_pk_i_ephemeral(v_j)+e_pk_i_ephemeral(d2_ji)。根据随机数d1_ji、加密后的随机数e_pk_i_ephemeral(d2_ji)、保存的其他竞争方的密文e_pk_i_ephemeral(v_i)生成临时竞争密文d1_ji*e_pk_i_ephemeral(v_i)+e_pk_i_ephemeral(d2_ji)。将竞争密文对和临时竞争密文对进行验证:

e_pk_i_ephemeral(d1_ji*v_j+d2_ji))=d1_ji*e_pk_i_ephemeral(v_j)+e_pk_i_ephemeral(d2_ji)

e_pk_i_ephemeral(d1_ji*v_i+d2_ji)=d1_ji*e_pk_i_ephemeral(v_i)+e_pk_i_ephemeral(d2_ji)

如果有任意一对竞争密文对和临时竞争密文不匹配,即等式左右不相等,说明竞争方j作假,竞争方在竞争排名时,针对不同的竞争方法采用了不同的敏感属性值,误导了其他竞争方。

本发明实施例中,由于将所有竞争方的敏感属性值隐藏在竞争属性值中,通过依次比较每个竞争属性对中两个竞争属性值的大小,确定竞争方的排名,保证了任一竞争方不能获知其他竞争方的敏感属性值。其次,竞争密文对是采用公钥进行加密后获得的,而基于公钥并不能确定竞争方的身份,故采用竞争密文对中的竞争属性值确定排名时,任一竞争方只能得到自身在所有竞争方的排名,而不能知道其他竞争方的排名,从而有效保护了各个竞争方的隐私数据。

基于相同的技术构思,本发明实施例提供了一种基于区块链的竞争排名装置,如图5所示,包括:

下载模块501,用于在接收到区块链广播的第一消息时,从所述区块链中下载所有竞争密文对,竞争密文对中的两个竞争密文由相同的公钥加密,每个竞争密文中包括竞争属性值,一个竞争属性值中包括所述公钥对应的竞争方的敏感属性值,另一个竞争属性值中包括除所述公钥对应的竞争方以外的任一竞争方的敏感属性值;

匹配模块502,用于从所有竞争密文对中确定由第一公钥加密的目标竞争密文对;

解密模块503,用于针对每个目标竞争密文对,采用第一私钥对所述目标竞争密文对中的竞争密文进行解密,确定目标竞争属性对,所述第一公钥和所述第一私钥是由第一竞争方生成的;

处理模块504,用于依次比较每个目标竞争属性对中两个目标竞争属性值的大小,确定所述第一竞争方的排名。

可选地,还包括发送模块505;

所述下载模块501还用于,在接收到所述区块链广播的第二消息时,从所述区块链中下载所有竞争方的公钥和密文;

所述处理模块504还用于,针对除所述第一竞争方之外的任意一个第二竞争方,选取第一随机数和第二随机数;根据所述第一随机数、所述第二随机数和所述第一竞争方的敏感属性值确定第一竞争属性值;采用所述第二竞争方的公钥对所述第一竞争属性值进行加密,确定第一竞争密文;采用所述第二竞争方的公钥对所述第二随机数进行加密,并根据所述第一随机数、所述第二竞争方的密文以及加密后的第二随机数,确定第二竞争密文;

所述发送模块505具体用于,将由所述第一竞争密文和所述第二竞争密文组成的竞争密文对通过匿名网络发送至所述区块链。

可选地,所述处理模块504还用于,在接收到所述区块链广播的第二消息时,从所述区块链中下载所有竞争方的公钥和密文之前,采用所述第一公钥对所述第一竞争方的敏感属性值进行加密,确定所述第一竞争方的密文;

所述发送模块505还用于,将所述第一公钥和所述第一竞争方的密文通过匿名网络发送至所述区块链。

可选地,所述处理模块504还用于,采用第一签名私钥对所述第一公钥和所述第一竞争方的密文进行签名,确定所述第一竞争方的标签;采用所述第一公钥对所述第一竞争方的标签进行加密,确定所述第一竞争方的加密承诺;

所述发送模块505还用于,将所述第一竞争方的加密承诺通过匿名网络发送至所述区块链。

可选地,所述发送模块505还用于,向所述区块链发送验证请求,所述验证请求中携带第二竞争方的标识,以使所述区块链从所述第二竞争方获取第二竞争方的标签和第二公钥,采用所述第二公钥对所述第二竞争方的标签进行加密,确定所述第二竞争方的临时加密承诺;在确定所述临时加密承诺与保存的第二竞争方的加密承诺匹配,且对所述第二竞争方的标签验证通过时,确定所述第二竞争方验证通过并返回验证通过消息;

所述下载模块501还用于,接收所述区块链发送的验证通过消息。

可选地,所述发送模块505具体用于,向所述区块链发送验证请求,所述验证请求中携带第二竞争方的标识,以使所述区块链从所述第二竞争方获取所述第二竞争方生成每个竞争密文对时使用的随机数以及所述第二竞争方生成的临时密文,所述临时密文是采用除所述第二竞争方以外的其他任一竞争方的公钥对所述第二竞争方的敏感属性值进行加密后确定的,根据所述随机数、所述临时密文、保存的公钥和密文生成所述第二竞争方对应的临时竞争密文对,在确定所述临时加密承诺与保存的第二竞争方的加密承诺匹配,所述临时竞争密文对与保存的所述第二竞争方生成的竞争密文对匹配,且对所述第二竞争方的标签验证通过时,确定所述第二竞争方验证通过并返回验证通过消息。

基于相同的技术构思,本发明实施例提供了一种计算机设备,如图6所示,包括至少一个处理器601,以及与至少一个处理器连接的存储器602,本发明实施例中不限定处理器601与存储器602之间的具体连接介质,图6中处理器601和存储器602之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。

在本发明实施例中,存储器602存储有可被至少一个处理器601执行的指令,至少一个处理器601通过执行存储器602存储的指令,可以执行前述的基于区块链的竞争排名方法中所包括的步骤。

其中,处理器601是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器602内的指令以及调用存储在存储器602内的数据,从而进行竞争排名。可选的,处理器601可包括一个或多个处理单元,处理器601可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。在一些实施例中,处理器601和存储器602可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。

处理器601可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本发明实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。

存储器602作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器602可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(randomaccessmemory,ram)、静态随机访问存储器(staticrandomaccessmemory,sram)、可编程只读存储器(programmablereadonlymemory,prom)、只读存储器(readonlymemory,rom)、带电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、磁性存储器、磁盘、光盘等等。存储器602是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本发明实施例中的存储器602还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。

基于相同的技术构思,本发明实施例提供了一种计算机可读存储介质,其存储有可由计算机设备执行的计算机程序,当所述程序在计算机设备上运行时,使得所述计算机设备执行基于区块链的竞争排名方法的步骤。

本领域内的技术人员应明白,本发明的实施例可提供为方法、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。

显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1