CN109104413B - 用于安全多方计算的私有数据求交集的方法及验证方法 - Google Patents
用于安全多方计算的私有数据求交集的方法及验证方法 Download PDFInfo
- Publication number
- CN109104413B CN109104413B CN201810783528.9A CN201810783528A CN109104413B CN 109104413 B CN109104413 B CN 109104413B CN 201810783528 A CN201810783528 A CN 201810783528A CN 109104413 B CN109104413 B CN 109104413B
- Authority
- CN
- China
- Prior art keywords
- intersection
- party
- data
- solving
- private data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/12—Applying verification of the received information
- H04L63/123—Applying verification of the received information received data contents, e.g. message integrity
Abstract
本发明提供一种用于安全多方计算的私有数据求交集及验证的方法,包括:被求交集方根据求交集方的私有数据集对应的位数组以及得到该位数组所使用的哈希函数,从自己的私有数据集中过滤出第一集合;求交集方根据被求交集方的私有数据集对应的位数组以及得到被求交集方的私有数据集对应的位数组所使用的哈希函数,从自己的私有数据集中过滤出第二集合;求交集方根据第一集合对应的位数组以及得到第一集合对应的位数组所使用的哈希函数,从自己的私有数据集中过滤出第三集合,作为参与双方私有数据集的交集;以及,根据所述第二集合和第三集合判断被求交集方是否存在作假行为。本发明的求交集结果准确性较高,并且求交集过程安全高效。
Description
技术领域
本发明涉及网络安全领域,更具体地,涉及用于安全多方计算的私有数据求交集的方法,以及对求交集过程中提供的数据的真实性进行验证的方法。
背景技术
安全多方计算(SMC)是一组互不信任的参与方之间保护隐私的协同计算问题,两方私有数据求交集是SMC的一个重要研究方向,其中涉及两个参与方P1和P2,拥有数量分别为m1和m2的私有数据集M1和M2,每个参与方在数据保密的情况下计算与另一个参与方的私有数据集的交集。目前,两方私有数据求交集广泛应用于:两个安全机构希望在不透露其他嫌疑人信息的情况下求出嫌疑人名单的交集;两家商业公司想对彼此拥有的客户列表进行交集运算从而进行对应的商业活动,但是不泄漏自己的其他客户信息等等。
现有的两方私有数据求交集的方法主要利用了Bloom Filter(即布隆过滤器)技术,方法包括:想要计算私有数据交集的参与方请求对方的Bloom Filter,对方通过加密通信等方式发送其Bloom Filter,想要计算私有数据交集的参与方利用对方的Bloom Filter过滤自己的私有数据集,从而得出与对方私有数据的交集。其中,每次计算交集都需要求交集方发送请求并且需要被求交集方返回其Bloom Filter,这导致数据传输冗余;在求交集时仅进行一次过滤,得到的粗略交集误差比较大,影响了结果的准确性,并且可能削弱参与双方的信任程度以及合作的利益关系;此外,求交集方无法对被求交集方提供的数据的真实性进行验证,这样也会影响结果的准确性。
发明内容
为克服上述现有技术中存在的缺陷,根据本发明的一个实施例,提供一种用于安全多方计算的私有数据求交集的方法,其中参与双方为求交集方和被求交集方,所述方法包括:
步骤11)求交集方经由哈希计算将自己的私有数据集转换成位数组,作为求交集方当前的位数组;
步骤12)被求交集方根据所述求交集方当前的位数组以及得到所述求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第一集合,并且经由哈希计算将所述第一集合转换成位数组;
步骤13)求交集方根据第一集合对应的位数组以及得到所述第一集合对应的位数组所使用的哈希函数,从自己的私有数据集中过滤出第三集合,所述第三集合为参与双方私有数据集的交集。
上述方法中,步骤11)还包括:参与双方利用基数统计算法获得用于计算各自的私有数据集的基数的注册器;以及步骤12)包括:
步骤121)被求交集方根据所述求交集方当前的位数组以及得到所述求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第一集合;
步骤122)被求交集方比较参与双方私有数据集交集的基数估计值与所述第一集合的基数,在两者差值在一个预定范围内的情况下,被求交集方经由哈希计算将所述第一集合转换成位数组;其中,根据求交集方和被求交集方各自的注册器计算参与双方私有数据集交集的基数估计值。
上述方法中,步骤11)包括:参与双方利用Hyperloglog算法获得用于计算各自的私有数据集的基数的注册器;以及在步骤12)中,计算参与双方私有数据集交集的基数估计值包括:
根据求交集方的注册器和被求交集方的注册器构造参与双方私有数据集并集的注册器;
由求交集方的注册器得到求交集方的私有数据集的基数,由被求交集方的注册器得到被求交集方的私有数据集的基数,并且由参与双方私有数据集并集的注册器得到参与双方私有数据集并集的基数;
根据所述求交集方的私有数据集的基数、所述被求交集方的私有数据集的基数以及所述参与双方私有数据集并集的基数得到参与双方私有数据集交集的基数估计值。
上述方法中,步骤11)包括:求交集方使用哈希函数对自己的私有数据集构造布隆过滤器,作为求交集方当前的布隆过滤器;以及步骤12)包括:被求交集方根据构造所述求交集方当前的布隆过滤器所使用的哈希函数对自己的私有数据集中的数据进行哈希计算,根据哈希计算结果查找所述求交集方当前的布隆过滤器中的对应位置,并且根据查找结果判断该数据是否包含在第一集合内。
上述方法还可以包括:
步骤14)在达到预定的重复次数前,求交集方比较所述参与双方私有数据集交集的基数估计值与所述第三集合的基数,在两者差值在一个预定范围内的情况下,求交集方经由哈希计算将所述第三集合转换成位数组,作为求交集方当前的位数组并且返回步骤12)。
上述方法中,步骤11)还包括:参与双方在智能合约中约定各自需要使用的哈希函数,并且将智能合约部署到区块链上;参与双方将各自的注册器注册到区块链并得到全网共识认证,并且求交集方将求交集方当前的位数组注册到区块链并得到全网共识认证。以及,步骤12)还包括:被求交集方将所述第一集合对应的位数组注册到区块链并得到全网共识认证。
根据本发明的一个实施例,还提供一种私有数据求交集中的数据真实性验证方法,其中求交集方为验证方并且被求交集方为被验证方,所述方法包括:
步骤21)求交集方经由哈希计算将自己的私有数据集转换成位数组,作为求交集方当前的位数组;被求交集方经由哈希计算将自己的私有数据集转换成位数组,作为被求交集方当前的位数组;
步骤22)求交集方根据所述被求交集方当前的位数组以及得到所述被求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第二集合;被求交集方根据所述求交集方当前的位数组以及得到所述求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第一集合,并且经由哈希计算将所述第一集合转换成位数组;
步骤23)求交集方根据第一集合对应的位数组以及得到所述第一集合对应的位数组所使用的哈希函数,从自己的私有数据集中过滤出第三集合,所述第三集合为参与双方私有数据集的交集;
步骤24)根据所述第二集合和第三集合判断被求交集方是否存在作假行为。
上述方法中,步骤21)还包括:参与双方利用基数统计算法获得用于计算各自的私有数据集的基数的注册器,创建各自的私有数据集的梅克尔树得到各自的梅克尔根;步骤22)包括:
步骤221)求交集方根据所述被求交集方当前的位数组以及得到所述被求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第二集合;被求交集方根据所述求交集方当前的位数组以及得到所述求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第一集合;
步骤222)被求交集方比较参与双方私有数据集交集的基数估计值与所述第一集合的基数,在两者差值在一个预定范围内的情况下,被求交集方经由哈希计算将所述第一集合转换成位数组;其中,根据求交集方和被求交集方各自的注册器计算参与双方私有数据集交集的基数估计值;以及,步骤24)包括:
步骤241)求交集方判断所述第二集合是否包含所述第三集合,如果不包含,则执行步骤242),否则执行步骤243);
步骤242)求交集方选取属于所述第三集合并且不属于所述第二集合的数据a,将数据a以及数据a的梅克尔路径发送至区块链,由区块链判断被求交集方是否存在作假行为;
步骤243)求交集方从所述第三集合中选取一个或多个数据,将所述一个或多个数据中的每个数据经由哈希计算得到的哈希结果发送至区块链,区块链通知被求交集方在规定时间内返回与所述哈希结果对应的数据和该数据的梅克尔路径,如果被求交集方没有在规定时间内返回则区块链判定被求交集方存在作假行为,如果被求交集方在规定时间内返回则区块链根据被求交集方返回的数据和该数据的梅克尔路径判断被求交集方是否存在作假行为。
上述方法中,在步骤242)中,由区块链判断被求交集方是否存在作假行为包括:区块链判断由数据a和数据a的梅克尔路径是否能够计算得到求交集方的梅克尔根,如果能够得到,则用过滤出所述第二集合的位数组以及过滤出所述第三集合的位数组来过滤数据a,以分别判断数据a是否属于被求交集方的私有数据集以及所述第一集合,如果数据a属于所述被求交集方的私有数据集并且不属于所述第一集合,则判定被求交集方存在作假行为,否则判定被求交集方不存在作假行为。
上述方法中,在步骤243)中,区块链根据被求交集方返回的数据和该数据的梅克尔路径判断被求交集方是否存在作假行为包括:区块链对被求交集方返回的数据进行哈希计算,并且判断由被求交集方返回的数据和该数据的梅克尔路径是否能够计算得到被求交集方的梅克尔根,如果对被求交集方返回的数据进行哈希计算的哈希计算结果与求交集方发送的哈希结果匹配并且能够得到所述被求交集方的梅克尔根,则判定被求交集方不存在作假行为,否则判定被求交集方存在作假行为。
与现有技术相比,本发明具有如下的有益效果:
1.在求得粗略交集的基础上进一步计算精确交集,提高了求交集结果的准确性;
2.利用区块链技术,求交集方可以从区块链上直接获取被求交集方的BloomFilter等数据,解决了数据传输冗余的问题,降低了参与双方多次通信带来的开销,同时降低了数据在传输过程中被篡改、重播等风险,从而使得求交集过程更加安全和高效;
3.本发明提供了一种新的Challenge协议,结合区块链技术,在不泄露原始数据的同时实现了数据真实性的验证;此外,利用区块链技术对作假方进行惩罚,有利于减少参与双方的作假行为。
附图说明
以下参照附图对本发明实施例作进一步说明,其中:
图1是根据本发明一个实施例的用于安全多方计算的私有数据求交集以及数据真实性验证的方法流程图;
图2是根据本发明一个实施例的利用Hyperloglog算法获得注册器的示意图;
图3是根据本发明一个实施例的构造Bloom Filter的示意图;
图4是根据本发明一个实施例的构造Merkle树的示意图;
图5是根据本发明一个实施例的对被验证方使用数据的真实性进行验证的方法流程图;
图6是根据本发明一个实施例的在对被验证方使用数据的真实性进行验证期间参与双方及区块链的通信示意图。
具体实施方式
为了使本发明的目的,技术方案及优点更加清楚明白,以下结合附图通过具体实施例对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
发明人在研究中发现,私有数据求交集的参与方可以将自己的Bloom Filter存储在可信第三方,从而解决数据传输冗余的问题。然而在现实中,参与双方往往很难找到一个共同信任的主体,发明人发现可以利用区块链技术来解决这一问题。区块链本质上是一种互联网共享数据库,其基于密码学算法来保证价值的安全转移,基于哈希链及时间戳机制来保证数据的可追溯和不可篡改特性,并且基于共识算法来保证节点间区块数据的一致性。
在区块链技术的基础上,根据本发明的一个实施例,提供一种用于安全多方计算的私有数据求交集及数据真实性验证方法,该方法包括预处理阶段、数据上链阶段、求粗略交集阶段、求精确交集阶段以及真实性验证阶段。下面结合图1详细描述该方法的每个阶段,其中,以参与双方为求交集方B和被求交集方A为例展开描述。
预处理阶段
在本阶段,A和B创建智能合约并且将智能合约部署到区块链,部署智能合约指的是通过发送交易将智能合约的代码写到区块链上。
具体地,智能合约主要包括:A、B选取的各个Hash函数,A、B双方协商好的条件(如惩罚用的押金),参与双方将各自在本地的计算结果注册到区块链上的逻辑,执行真实性验证的过程以及惩罚机制等。
数据上链阶段
在本阶段,参与双方A和B构造用于统计自己的私有数据集基数的注册器、自己的私有数据集的Bloom Filter以及自己的私有数据集的Merkle根(梅克尔根)。根据本发明的一个实施例,包括以下步骤:
步骤S101.A将自己的私有客户信息(包括但不限于:电话号码、身份证号码、家庭住址等)进行编码,其中编码方式包括但不限于:对私有客户信息进行散列、执行MD5算法等,从而将私有客户信息整合成确定长度的前缀形式的集合A1(即A的私有数据集);接着,A利用Hyperloglog算法获得用于统计集合A1的基数的注册器Ha,构造集合A1的BloomFilter Ba1,并且计算集合A1的Merkle根Ma。下面将详细描述获得Ha、Ba1、Ma的过程。
参见图2,假设注册器是长度为m的数组,初始注册器中的每个元素V[i](i=0,1,…,m-1)设置为0,则构造用于统计A1基数的注册器Ha的方法包括:使用(在智能合约中)预定的Hash函数对A1中的每个数据进行哈希计算,分别得到长度为d的位字符串,根据位字符串的r位前缀(其中,m=2r且d>r)计算出注册器的下标i,并且在位字符串的d-r部分从右至左计算第一次出现1的位置记作V’[i],将注册器中的V[i]更新为V[i]与V’[i]之间的较大值,最终得到用于统计A1基数的注册器Ha。由注册器Ha可以得到A1的基数|Ha|。
参见图3,假设已知w位的初始Bloom Filter(一种位数组,w是先前协商好的并且初始Bloom Filter的每一位置的元素都为0),以及用于构造Bloom Filter的预定的h个Hash函数,则构造集合A1的Bloom Filter Ba1的方法包括:使用h个Hash函数中的每个Hash函数对A1中的每个数据进行Hash计算,并将得到的结果对w取余得到(0≤i≤h-1,i表示使用的是第几个Hash函数;以及,1≤j≤|Ha|,j表示的是集合A1中的第几个数据,|Ha|表示集合A1的基数),其值的范围是0~w-1,将初始Bloom Filter中对应于的位置设置为1,最终形成的Bloom Filter为Ba1。
参见图4,计算私有数据集A1的Merkle根Ma的方法包括:将集合A1中的每个数据利用预定的Hash函数(应理解,计算Merkle根、构造注册器、构造Bloom Filter所使用的Hash函数可以各不相同)进行Hash计算,将得到的哈希值作为叶子节点并构建Merkle树,其中从叶子节点开始将同一层次的节点两两进行哈希得到父节点,向上持续此过程,直到得到Merkle树的根节点,即Ma。
在本步骤中,B也将自己的私有客户信息进行编码,从而将私有客户信息整合成确定长度的前缀形式的集合B1(即B的私有数据集)。接着,利用Hyperloglog算法(与计算Ha的方法相同,并且使用的哈希函数也相同)构造用于统计集合B1的基数的注册器Hb(其中Ha与Hb长度相同),利用预定的h个Hash函数(可以使用A构造Ba1时使用的哈希函数,也可以使用不同的哈希函数)对集合B1构造Bloom Filter Bb1,并且计算私有数据集B1的Merkle根Mb(其中,可以使用A构造Ma时使用的哈希函数,也可以使用不同的哈希函数)。
步骤S102.A通过发起一笔交易将Ha、Ba1以及Ma注册到区块链,并得到全网共识认证(共识是区块链的节点对数据内容达成一致性的算法)。另外,B也发起一笔交易将Hb、Bb1以及Mb注册到区块链,并得到全网共识认证。
求粗略交集阶段
根据本发明的一个实施例,本阶段包括如下步骤:
步骤S201.A从区块链获取B的Bloom Filter Bb1,利用Bb1过滤自己的私有数据集A1,得到粗略交集SA1。B从区块链获取A的Bloom Filter Ba1,利用Ba1过滤自己的私有数据集B1,得到粗略交集SB1。其中,在本发明的一个实施例中,利用Bb1过滤A1得到粗略交集SA1的过程包括:对于A1中的数据,利用构造Bloom Filter Bb1时使用的h个Hash函数对该数据进行Hash计算并将得到的结果对w取余,从而得到h个位置;如果Bb1中这h个位置都是1,则表示该数据可能也在集合B1中,将该数据计入粗略交集SA1,只要h个位置中有一位是0,则表示该数据一定不在集合B1中。B通过类似的方法可以得到SB1。
步骤S202.A从区块链上获取B的私有数据集B1的注册器Hb(即用于统计集合B1的基数的注册器Hb),并且根据自己的私有数据集A1的注册器Ha计算交集的大致基数(或称基数估计值);将该大致基数与SA1的基数进行比较,如果两者的误差(差值)在预定范围内,则A对于SA1构造Bloom filter Ba2,将Ba2注册到区块链,并且得到全网的共识认证。
在本发明的一个实施例中,A计算交集的大致基数的方法如下:
首先,根据注册器Ha和Hb得到A1和B1的基数|Ha|和|Hb|(也可以在构造注册器Ha时计算得到|Ha|),计算私有数据集基数的公式如下:
如上所述,m表示注册器的长度,V[i]表示注册器中的元素,E表示集合的基数。
然后,根据注册器Ha和Hb构造集合A1和B1的并集的注册器Hc,注册器Hc的长度和Ha和Hb相同(长度为m),且每个元素的初始值为0,对于Hc中的每个位置,将注册器Ha和Hb的相同位置处的值进行比较,取较大者作为在注册器Hc该位置处的元素的值。在构造了注册器Hc之后,计算并集的基数|Hc|。
最后,根据|Ha|+|Hb|-|Hc|计算出交集的大致基数。
求精确交集阶段
参与方B(求交集方)计算两方私有数据集的精确交集,在本发明的一个实施例中,本阶段包括:
B从区块链寻找A的Bloom filter Ba2,如果找到则利用Ba2过滤自己的私有数据集B1,得到精确交集SB2;如果没找到,则结束求交集。
真实性验证阶段
在本阶段,对A在求交集过程中两次使用的私有数据集的真实性(即A在步骤S101中使用的私有数据集以及步骤S201中使用的私有数据集是否是同一份数据)进行验证并且对作假方进行惩罚,根据本发明的一个实施例,提供一种Challenge协议进行真实性验证和惩罚,如图5所示,本阶段包括如下的步骤:
步骤S401.B将得到的粗略交集SB1与精确交集SB2进行比较(鉴于SB1是B使用A1对应的Bloom Filter Ba1对自己的私有数据集B1行过滤得到的,而SB2是B使用SA1对应的BloomFilter Ba2对自己的私有数据集B1进行过滤得到的,因此,如果A在构造Ba1以及计算交集SA1时使用的数据集没有出入,那么SB2必定是SB1的一个子集),如果则进入步骤S402,否则(即)进入步骤S403。
步骤S402.B可以判定A在步骤S101中使用的私有数据集与在步骤S201中使用的私有数据集不同,即A有作假行为,则B可以向区块链提交惩罚A的请求,由区块链确定是否惩罚A。
具体地,B从SB2中选取不属于SB1的数据a,将a以及求Merkle根Mb时a在Merkle树中的Merkle路径(例如,参见图4,即构建好的Merkle树,某个数据的哈希值为H5,且其Merkle路径为H6->H77->H1234,根据此路径和H5经过Hash计算可得到Merkle根)发送至区块链上的智能合约,智能合约首先根据构造Mb时使用的哈希函数对a进行哈希计算并且使用Merkle路径判断是否能够计算得到Mb(即判断B是否拥有a),如果判定B不拥有a则认为B误报惩罚信息并对B惩罚,如果判定B拥有a则分别用Ba1和Ba2过滤a(即,分别利用构造Ba1和Ba2的Hash函数对a进行哈希计算并将得到的结果对w取余,从而分别得到h个位置,根据Ba1和Ba2中这h个位置的值,判断出a是否属于集合A1和SA1),只有在a属于A1但是不属于SA1时可以判定A作假,则对A进行惩罚(例如扣除押金),而在其他情况下则认为B误报惩罚信息,则对B进行惩罚。
步骤S403.如果则需要判断其中的误差是由于A的作假行为还是BloomFilter本身的误差(根据上文的描述可知,误差的原因在于Bloom Filter能够准确判断一个数据不在数据集内,但不能准确判断一个数据在数据集内)造成的,参见图6,根据本发明的一个实施例,其包括以下子步骤:
①B随机选取SB2中的n个数据,并且向区块链发送相应的n个请求消息,其中每个请求消息与n个数据中的一个数据相对应,并且每个请求消息包括:相应数据经过(A构造Bloom Filter Ba1或Ba2时使用的)h个Hash函数后得到的h个位置。
②智能合约开启计时器,通知A在规定时间内将与B发送的n个请求消息中的每个请求消息相对应的数据及数据对应的Merkle路径注册到区块链上。如上所述,每个请求消息包括h个位置,A需要在自己的私有数据集A1中查找经过h个Hash函数(即构造BloomFilter Ba1或Ba2时使用的Hash函数)后所得到的h个位置与该请求消息中包含的h个位置一致的一个或多个数据,并且A需要向区块链发送(注册)这些数据,以及这些数据中每个数据对应的Merkle路径(构造Ma时得到的Merkle路径)。
③如果A在规定时间内没有注册到区块链,则直接判定A作假,对A执行惩罚;如果A在规定时间内注册到区块链上,则计时器重置;智能合约对双方注册的数据进行计算和比较,如果A注册的数据和B的请求消息匹配,并且计算出的Merkle根和A注册的一致,则结束真实性验证,否则对A进行惩罚。
在本发明的一个实施例中,智能合约对双方注册的数据进行计算和比较包括:对A注册的数据(利用h个Hash函数,即构造Bloom Filter Ba1或Ba2时使用的Hash函数)进行Hash计算,将得到的结果与B的n个请求消息中的数据进行比较,并且根据A注册的数据以及该数据对应的Merkle路径计算Merkle根,如果经由Hash计算得到的结果与B的请求消息中的数据匹配(即对于B的每个请求消息,A相应返回的数据的哈希计算结果与其一致),并且计算出的Merkle根和A注册在区块链上的Ma一致,那么判定A两次使用的私有数据集相同,即A使用的数据真实(也就是说,误差是由于Bloom Filter自身的误差造成的),否则判定A有作假行为,对A进行惩罚。
在上文描述的实施例中,在求精确交集阶段,B利用Ba2过滤私有数据集,从而得到精确交集。而在另一个实施例中,为进一步提高求交集结果的精确度,B可以将两方私有数据集交集的大致基数与SB2的基数进行比较,如果两者的误差在预定范围内,则B根据当前得到的精确交集SB2构造Bb2,注册到区块链上并得到全网共识,然后A使用Bb2求粗略交集以及B随后求精确交集,即多次执行求粗略交集阶段和求精确交集阶段,直到满足结束条件(如达到预定的重复次数)。其中,重复次数可以在预处理阶段通过智能合约来约定。
在上文描述的实施例中,求交集的过程是在A和B本地执行的,在另一个实施例中,求交集的过程可以以智能合约的形式部署在区块链上,即在智能合约中包括求交集的程序,参与方通过发送交易来触发智能合约的执行。这样,求交集过程能够完整地记录在区块链上,从而保证了求交集过程的安全高效。
上文的实施例以Hyperloglog算法为例进行数据集的基数统计、获取基数统计的中间数据结构——注册器,然而本领域技术人员应理解,其他一些基数估计工具也是适用的,如Linear Counting、LogLog Counting、Adaptive Counting等。并且,除了BloomFilter(利用位数组来表示数据集),其他适用于表示数据集并且能够用于判断元素是否属于该数据集的随机数据结构也可适用于本发明,例如,可以使用现有的Bloom Filter的一些变种。另外,区块链在对一方进行惩罚的同时,也可以对另一方进行奖励,例如扣除作假方的押金并支付给另一方。
应注意到一些示例性方法被描绘为流程图。虽然流程图将操作表述为顺序执行,但可以理解的是,许多操作可以并行、同时或同步地执行。另外,可以重新排列操作的顺序。处理可以在操作完成时终止,但是也可以具有并未包括在图中或实施例中的另外的步骤。
上述方法可以通过硬件、软件、固件、中间件、伪代码、硬件描述语言或者它们的任意组合来实现。当以软件、固件、中间件或伪代码实施时,用来执行任务的程序代码或代码分段可以被存储在计算机可读介质中,诸如存储介质,处理器可以执行该任务。
应理解,软件实现的示例性实施例通常在一些形式的程序存储介质上进行编码或者在一些类型的传输介质上实现。程序存储介质可以是任意的非瞬态存储介质,诸如磁盘(例如,软盘或硬盘)或光盘(例如,紧凑盘只读存储器或“CD ROM”),并且可以是只读的或者随机访问的。类似地,传输介质可以是双绞线、同轴线缆、光纤,或者本领域已知的一些其它适用的传输介质。
虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所做出的各种改变以及变化。
Claims (10)
1.一种用于安全多方计算的私有数据求交集的方法,其中参与双方为求交集方和被求交集方,所述方法包括:
步骤11)求交集方经由哈希计算将自己的私有数据集转换成位数组,作为求交集方当前的位数组;
步骤12)被求交集方根据所述求交集方当前的位数组以及得到所述求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第一集合,并且经由哈希计算将所述第一集合转换成位数组;
步骤13)求交集方根据第一集合对应的位数组以及得到所述第一集合对应的位数组所使用的哈希函数,从自己的私有数据集中过滤出第三集合,所述第三集合为参与双方私有数据集的交集;
其中,经由哈希计算将数据集转换成位数组包括:使用哈希函数对数据集中的每个数据进行哈希计算并且将哈希计算结果对位数组的位数取余,将位数组中对应于取余结果的位置处的元素设置为1;其中位数组的每一位置处的元素初始值为0;
其中,根据位数组以及得到该位数组所使用的哈希函数,从数据集A中过滤出数据集B包括:对于数据集A中的数据,使用得到该位数组所使用的哈希函数对该数据进行哈希计算并且将哈希计算结果对该位数组的位数取余,如果该位数组中对应于取余结果的位置处的元素为1,则将该数据计入数据集B。
2.根据权利要求1所述的方法,其中,步骤11)还包括:
参与双方利用基数统计算法获得用于计算各自的私有数据集的基数的注册器;以及步骤12)包括:
步骤121)被求交集方根据所述求交集方当前的位数组以及得到所述求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第一集合;
步骤122)被求交集方比较参与双方私有数据集交集的基数估计值与所述第一集合的基数,在两者差值在一个预定范围内的情况下,被求交集方经由哈希计算将所述第一集合转换成位数组;其中,根据求交集方和被求交集方各自的注册器计算参与双方私有数据集交集的基数估计值。
3.根据权利要求2所述的方法,其中,步骤11)包括:
参与双方利用Hyperloglog算法获得用于计算各自的私有数据集的基数的注册器;以及在步骤12)中,计算参与双方私有数据集交集的基数估计值包括:
根据求交集方的注册器和被求交集方的注册器构造参与双方私有数据集并集的注册器;
由求交集方的注册器得到求交集方的私有数据集的基数,由被求交集方的注册器得到被求交集方的私有数据集的基数,并且由参与双方私有数据集并集的注册器得到参与双方私有数据集并集的基数;
根据所述求交集方的私有数据集的基数、所述被求交集方的私有数据集的基数以及所述参与双方私有数据集并集的基数得到参与双方私有数据集交集的基数估计值。
4.根据权利要求1所述的方法,其中步骤11)包括:
求交集方使用哈希函数对自己的私有数据集构造布隆过滤器,作为求交集方当前的布隆过滤器;以及步骤12)包括:
被求交集方根据构造所述求交集方当前的布隆过滤器所使用的哈希函数对自己的私有数据集中的数据进行哈希计算,根据哈希计算结果查找所述求交集方当前的布隆过滤器中的对应位置,并且根据查找结果判断该数据是否包含在第一集合内。
5.根据权利要求2-4中任一项所述的方法,还包括:
步骤14)在达到预定重复次数前,求交集方比较所述参与双方私有数据集交集的基数估计值与所述第三集合的基数,在两者差值在一个预定范围内的情况下,求交集方经由哈希计算将所述第三集合转换成位数组,作为求交集方当前的位数组并且返回步骤12)。
6.根据权利要求2-4中任一项所述的方法,其中,步骤11)还包括:
参与双方在智能合约中约定各自需要使用的哈希函数,并且将智能合约部署到区块链上;
参与双方将各自的注册器注册到区块链并得到全网共识认证,并且求交集方将求交集方当前的位数组注册到区块链并得到全网共识认证;以及步骤12)还包括:
被求交集方将所述第一集合对应的位数组注册到区块链并得到全网共识认证。
7.一种私有数据求交集中的数据真实性验证方法,其中求交集方为验证方并且被求交集方为被验证方,所述方法包括:
步骤21)求交集方经由哈希计算将自己的私有数据集转换成位数组,作为求交集方当前的位数组;被求交集方经由哈希计算将自己的私有数据集转换成位数组,作为被求交集方当前的位数组;
步骤22)求交集方根据所述被求交集方当前的位数组以及得到所述被求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第二集合;被求交集方根据所述求交集方当前的位数组以及得到所述求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第一集合,并且经由哈希计算将所述第一集合转换成位数组;
步骤23)求交集方根据第一集合对应的位数组以及得到所述第一集合对应的位数组所使用的哈希函数,从自己的私有数据集中过滤出第三集合,所述第三集合为参与双方私有数据集的交集;
步骤24)根据所述第二集合和第三集合判断被求交集方是否存在作假行为;
其中,经由哈希计算将数据集转换成位数组包括:使用哈希函数对数据集中的每个数据进行哈希计算并且将哈希计算结果对位数组的位数取余,将位数组中对应于取余结果的位置处的元素设置为1;其中位数组的每一位置处的元素初始值为0;
其中,根据位数组以及得到该位数组所使用的哈希函数,从数据集A中过滤出数据集B包括:对于数据集A中的数据,使用得到该位数组所使用的哈希函数对该数据进行哈希计算并且将哈希计算结果对该位数组的位数取余,如果该位数组中对应于取余结果的位置处的元素为1,则将该数据计入数据集B。
8.根据权利要求7所述的方法,其中,步骤21)还包括:
参与双方利用基数统计算法获得用于计算各自的私有数据集的基数的注册器,创建各自的私有数据集的梅克尔树得到各自的梅克尔根;步骤22)包括:
步骤221)求交集方根据所述被求交集方当前的位数组以及得到所述被求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第二集合;被求交集方根据所述求交集方当前的位数组以及得到所述求交集方当前的位数组所使用的哈希函数,从自己的私有数据集中过滤出第一集合;
步骤222)被求交集方比较参与双方私有数据集交集的基数估计值与所述第一集合的基数,在两者差值在一个预定范围内的情况下,被求交集方经由哈希计算将所述第一集合转换成位数组;其中,根据求交集方和被求交集方各自的注册器计算参与双方私有数据集交集的基数估计值;以及步骤24)包括:
步骤241)求交集方判断所述第二集合是否包含所述第三集合,如果不包含,则执行步骤242),否则执行步骤243);
步骤242)求交集方选取属于所述第三集合并且不属于所述第二集合的数据a,将数据a以及数据a的梅克尔路径发送至区块链,由区块链判断被求交集方是否存在作假行为;
步骤243)求交集方从所述第三集合中选取一个或多个数据,将所述一个或多个数据中的每个数据经由哈希计算得到的哈希结果发送至区块链,区块链通知被求交集方在规定时间内返回与所述哈希结果对应的数据和该数据的梅克尔路径,如果被求交集方没有在规定时间内返回则区块链判定被求交集方存在作假行为,如果被求交集方在规定时间内返回则区块链根据被求交集方返回的数据和该数据的梅克尔路径判断被求交集方是否存在作假行为。
9.根据权利要求8所述的方法,在步骤242)中,由区块链判断被求交集方是否存在作假行为包括:
区块链判断由数据a和数据a的梅克尔路径是否能够计算得到求交集方的梅克尔根,如果能够得到,则用过滤出所述第二集合的位数组以及过滤出所述第三集合的位数组来过滤数据a,以分别判断数据a是否属于被求交集方的私有数据集以及所述第一集合,如果数据a属于所述被求交集方的私有数据集并且不属于所述第一集合,则判定被求交集方存在作假行为,否则判定被求交集方不存在作假行为。
10.根据权利要求8所述的方法,在步骤243)中,区块链根据被求交集方返回的数据和该数据的梅克尔路径判断被求交集方是否存在作假行为包括:
区块链对被求交集方返回的数据进行哈希计算,并且判断由被求交集方返回的数据和该数据的梅克尔路径是否能够计算得到被求交集方的梅克尔根,如果对被求交集方返回的数据进行哈希计算的哈希计算结果与求交集方发送的哈希结果匹配并且能够得到所述被求交集方的梅克尔根,则判定被求交集方不存在作假行为,否则判定被求交集方存在作假行为。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810783528.9A CN109104413B (zh) | 2018-07-17 | 2018-07-17 | 用于安全多方计算的私有数据求交集的方法及验证方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810783528.9A CN109104413B (zh) | 2018-07-17 | 2018-07-17 | 用于安全多方计算的私有数据求交集的方法及验证方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109104413A CN109104413A (zh) | 2018-12-28 |
CN109104413B true CN109104413B (zh) | 2020-07-31 |
Family
ID=64846551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810783528.9A Active CN109104413B (zh) | 2018-07-17 | 2018-07-17 | 用于安全多方计算的私有数据求交集的方法及验证方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109104413B (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109766479B (zh) * | 2019-01-24 | 2020-06-09 | 北京三快在线科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN110086717B (zh) * | 2019-04-30 | 2021-06-22 | 创新先进技术有限公司 | 用于进行数据安全匹配的方法、装置和系统 |
CN110263555A (zh) * | 2019-05-15 | 2019-09-20 | 苏宁易购集团股份有限公司 | 两方数据安全碰撞方法和系统 |
CN111046409B (zh) * | 2019-12-16 | 2021-04-13 | 支付宝(杭州)信息技术有限公司 | 一种私有数据多方安全计算方法和系统 |
CN112073444B (zh) * | 2020-11-16 | 2021-02-05 | 支付宝(杭州)信息技术有限公司 | 数据集的处理方法、装置和服务器 |
CN112737772B (zh) * | 2020-12-25 | 2022-10-25 | 山东师范大学 | 私有集合交集数据的安全统计方法、终端设备及系统 |
CN112907252B (zh) * | 2021-02-02 | 2023-10-31 | 中国科学院计算技术研究所 | 一种基于多人链下通道的区块链交易方法及系统 |
CN113065155A (zh) * | 2021-03-26 | 2021-07-02 | 杭州宇链科技有限公司 | 一种基于可信执行环境辅助的隐私集合求交方法 |
CN113079176B (zh) * | 2021-04-14 | 2022-04-05 | 西安交通大学 | 一种适用于海量数据的高速网络流量异常检测系统 |
CN113158253B (zh) * | 2021-05-14 | 2023-05-12 | 深圳前海微众银行股份有限公司 | 一种隐私求并集方法及装置 |
CN113518092B (zh) * | 2021-07-22 | 2022-08-26 | 西安电子科技大学 | 实现多方隐私的集合交集方法 |
CN113761570B (zh) * | 2021-08-16 | 2024-01-30 | 高语澈 | 一种面向隐私求交的数据交互方法 |
CN115017458B (zh) * | 2022-04-29 | 2023-06-09 | 北京龙腾佳讯科技股份公司 | 安全多方计算数据中位数的方法及系统 |
CN117938406A (zh) * | 2022-10-14 | 2024-04-26 | 腾讯科技(深圳)有限公司 | 一种基于区块链的数据处理方法、设备以及可读存储介质 |
CN116112168B (zh) * | 2023-04-10 | 2023-06-20 | 极术(杭州)科技有限公司 | 多方隐私求交中的数据处理方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103410660A (zh) * | 2013-05-14 | 2013-11-27 | 湖南工业大学 | 基于支持向量机的风力发电变桨距自学习控制方法 |
CN103927397A (zh) * | 2014-05-05 | 2014-07-16 | 湖北文理学院 | 一种基于区块树的Web页面链接块的识别方法 |
CN106682907A (zh) * | 2016-12-10 | 2017-05-17 | 江苏恒为信息科技有限公司 | 区块链数据对比及共识方法 |
CN108080749A (zh) * | 2018-02-05 | 2018-05-29 | 重庆机床(集团)有限责任公司 | 带在线检测机构的高精度蜗轮加工机床及其测量控制系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20170288862A1 (en) * | 2016-03-31 | 2017-10-05 | Ubimo Ltd. | Securely exchanging lists of values without revealing their full content |
-
2018
- 2018-07-17 CN CN201810783528.9A patent/CN109104413B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103410660A (zh) * | 2013-05-14 | 2013-11-27 | 湖南工业大学 | 基于支持向量机的风力发电变桨距自学习控制方法 |
CN103927397A (zh) * | 2014-05-05 | 2014-07-16 | 湖北文理学院 | 一种基于区块树的Web页面链接块的识别方法 |
CN106682907A (zh) * | 2016-12-10 | 2017-05-17 | 江苏恒为信息科技有限公司 | 区块链数据对比及共识方法 |
CN108080749A (zh) * | 2018-02-05 | 2018-05-29 | 重庆机床(集团)有限责任公司 | 带在线检测机构的高精度蜗轮加工机床及其测量控制系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109104413A (zh) | 2018-12-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109104413B (zh) | 用于安全多方计算的私有数据求交集的方法及验证方法 | |
Wang et al. | A blockchain based privacy-preserving incentive mechanism in crowdsensing applications | |
CN108389047B (zh) | 区块链中母链与子链交易的方法及区块链网络 | |
US11799660B2 (en) | Optimizations for verification of interactions system and method | |
CN107220820B (zh) | 资源转移方法、装置及存储介质 | |
WO2019232880A1 (zh) | 一种基于生物特征标记认证的区块链安全交易方法及装置 | |
CN111464518B (zh) | 一种跨链通信数据的发送、验证方法及装置 | |
CN110741372A (zh) | 用于管理区块链网络上的交易的计算机实现的系统和方法 | |
CN110945548A (zh) | 用于管理区块链网络中大型分布式存储池的计算机实现的系统和方法 | |
CN109636599A (zh) | 基于群签名的许可区块链隐私保护和监管方法 | |
CN108876365A (zh) | 一种生成区块发布机制的智能合约 | |
KR20190093012A (ko) | 블록 체인 시스템에서의 블록 생성 및 검증 방법 | |
US11468044B2 (en) | Optimizations for verification of interactions system and method using probability density functions | |
KR102332226B1 (ko) | 블록체인 원장에 대한 검증 가능한 블록체인 네트워크 시스템 및 상기 블록체인 네트워크에서의 블록체인 원장 검증 방법 | |
CN109274501A (zh) | 基于盲签名的许可区块链隐私保护方法 | |
CN109872156A (zh) | 一种联盟链共识系统及方法 | |
CN117112196A (zh) | 用于区块链网络中一致分布式内存池的方法和系统 | |
US7929689B2 (en) | Call signs | |
CN112801778B (zh) | 联盟式不良资产区块链系统 | |
US20200204338A1 (en) | Securing public key cryptographic algorithms | |
CN115270145A (zh) | 一种基于联盟链和联邦学习的用户窃电行为检测方法及系统 | |
CN109242666A (zh) | 基于区块链获取个人征信方法、装置及计算机设备 | |
CN112511350A (zh) | 联盟链多级共识方法、设备及存储介质 | |
CN115208628B (zh) | 基于区块链的数据完整性验证方法 | |
JP6911231B1 (ja) | デジタル資産データパケットの信頼性検証システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |