利用join函数进行两表查询装置及方法与流程

文档序号:30070698发布日期:2022-05-18 02:00阅读:101来源:国知局
利用join函数进行两表查询装置及方法与流程

1.本发明属于数据加密技术领域,具体涉及一种利用join函数进行两表查询装置及方法。


背景技术:

2.当双方分别持有一系列数据时,通常将拥有数据较多的一方称为数据供应方,将拥有数据相对较少的一方称为数据请求方。但是对于自身来说,由于数据供应方和数据请求方分别持有一系列数据,当数据查询进行时,他们都希望能够安全地求出交集,而全体集合的交集外的数据不能被任意一方获取,从而实现自身数据的保密。
3.在一般的场景中,数据供应方拥有一批数据,诚实的数据请求方会根据自己的需求发起查询请求。在遇到不诚实的数据请求方时,传统的数据库查询不加密,可能会暴露数据供应方查询请求之外的数据,造成数据供应方隐私数据的泄漏。随着各种大数据的普及以及社会各界隐私保护意识的提高,隐私数据查询愈加重要。
4.目前的按列进行隐私数据查询都基于全同态加密,但是全同态加密因其计算开销较大,速度比较慢,效率比较低,无法应用在高效的sql查询中。


技术实现要素:

5.本发明是为了解决上述问题而进行的,目的在于提供一种利用join函数进行两表查询装置及方法。
6.本发明为了实现上述目的,采用了以下方案:
7.《方案一》
8.本发明提供了一种利用join函数进行两表查询装置,具有这样的特征,包括:相互通信连接的数据供应端及数据需求端,其中,数据供应端包括供方存储部、公开参数提取部、供方构造部、向量发送部;数据需求端包括需方存储部、公开参数接收部、查询指令输入部、需方第一构造部、向量接收部、需方第二构造部、结果输出部;供方存储部存储有供方集合及公开参数;需方存储部存储有需方集合;公开参数提取部从需方存储部中提取公开参数发送给数据需求端,公开参数接收部用于接收公开参数;查询指令输入部用于输入查询指令;一旦数据需求端输入查询指令,供方构造部根据公开参数及供方集合构造供方布隆过滤器,需方第一构造部根据公开参数及查询指令构造需方布隆过滤器;向量发送部用于向数据需求端发送包含第一向量及第二向量的向量组;向量接收部用于使用需方布隆过滤器对应的接收第一向量或第二向量,需方第二构造部,将第一向量或第二向量按照顺序放置形成需方混淆布隆过滤器;结果输出部,利用需方混淆布隆过滤器检查需方集合中的元素是否在交集中。
9.在本发明提供的利用join函数进行两表查询装置中,还可以具有这样的特征:其中,公开参数包括供方布隆过滤器的长度m,供方布隆过滤器中各比特串的长度λ,需方布隆过滤器的长度m,哈希函数的个数k及哈希族h:{h1,h2,...,hk}:{0,1}
*

[m]。
[0010]
在本发明提供的利用join函数进行两表查询装置中,还可以具有这样的特征:其中,数据供应端为半可信的数据供应端,数据需求端为半可信的数据需求端。
[0011]
在本发明提供的利用join函数进行两表查询装置中,还可以具有这样的特征:其中,供方布隆过滤器为零分享混淆布隆过滤器。
[0012]
在本发明提供的利用join函数进行两表查询装置中,还可以具有这样的特征:其中,零分享混淆布隆过滤器记为zgbf,对于y∈y,y为供方集合,中,零分享混淆布隆过滤器记为zgbf,对于y∈y,y为供方集合,其他位置都是随机值,对应hk(y)位置是0的秘密分享值。
[0013]
《方案二》
[0014]
本发明还提供了一种利用join函数进行两表查询方法,具有这样的特征,包括以下步骤:
[0015]
步骤s1,数据供应端将公开参数发送给数据需求端,公开参数包含供方布隆过滤器的长度m,供方布隆过滤器中各比特串的长度λ,需方布隆过滤器的长度m,哈希函数的个数k,哈希族h:{h1,h2,...,hk}:{0,1}
*

[m],进入步骤s2;
[0016]
步骤s2,数据需求端发起查询请求,进入步骤s3;
[0017]
步骤s3,数据供应端根据公开参数及供方集合y构造供方布隆过滤器zgbf,进入步骤s4;
[0018]
步骤s4,数据需求端根据公开参数及及查询指令构造需方布隆过滤器bf,进入步骤s5;
[0019]
步骤s5,数据供应端及数据需求端执行m轮不经意传输协议(ot协议,oblivious transfer),在第i轮不经意传输协议中,i=1,2,3,...,m,数据供应端将(ri,zgbf[i])作为第一向量及第二向量一起发送,数据需求端作为接收方,利用bf[i]选择向量,在第i轮不经意传输协议执行完毕后,当bf[i]=0,数据需求端获得第一向量ri,当bf[i]=1时,数据需求端获得第二向量zgbf[i],进入步骤s6;
[0020]
步骤s6,数据需求端将不经意传输中接收到的第一向量ri和第二向量zgbf[i]按照顺序放置形成需方混淆布隆过滤器zgbf',进入步骤s7;
[0021]
步骤s7,对于x∈x,数据需求端利用需方混淆布隆过滤器检查需方集合x中的元素x是否在交集中。
[0022]
在本发明提供的利用join函数进行两表查询方法中,还可以具有这样的特征:其中,步骤s7中,对于x∈x,数据需求端检查是否等于0,如果等于0,x在交集中,否则x不在交集中。
[0023]
在本发明提供的利用join函数进行两表查询方法中,还可以具有这样的特征:其中,步骤s4中,对于x∈x,bf[hi(x)]=1,其他位置置为0。
[0024]
在本发明提供的利用join函数进行两表查询方法中,还可以具有这样的特征:其中,步骤s3中,对于y∈y,中,步骤s3中,对于y∈y,其他位置都是随机值,对应hk(y)位置是0的秘密分享值。
[0025]
发明的作用与效果
[0026]
根据本发明所提供的利用join函数进行两表查询装置及方法,装置包括数据供应
端及数据需求端,数据供应端持有供方集合,数据需求端持有需方集合。当数据需求端输入查询指令后,供方构造部根据公开参数及供方集合构造供方布隆过滤器,需方第一构造部根据公开参数及查询指令构造需方布隆过滤器;向量发送部向数据需求端发送包含第一向量及第二向量的向量组;向量接收部使用需方布隆过滤器对应的接收第一向量或第二向量,需方第二构造部将第一向量或第二向量按照顺序放置形成需方混淆布隆过滤器;结果输出部利用需方混淆布隆过滤器检查需方集合中的元素是否在交集中。由于数据供应端构造了供方布隆过滤器,数据需求端构造了需方零分享混淆布隆过滤器,供方布隆过滤器中的元素不为数据需求端所知,同样的,需方混淆布隆过滤器中的元素不为数据供应端所知,因此,除了二者共同的交集,其他持有的本地数据不为对方所知,实现了保密性极强的安全查询。
附图说明
[0027]
图1是本发明的实施例中的数据供应端的结构框图;
[0028]
图2是本发明的实施例中的数据需求端的的结构框图;以及
[0029]
图3是本发明的实施例中的利用join函数进行两表查询方法的步骤流程图。
[0030]
附图编号说明:数据供应端100、供方存储部101、公开参数提取部102、供方构造部103、向量发送部104、供方控制部105、数据需求端200、需方存储部201、公开参数接收部202、查询指令输入部203、需方第一构造部204、向量接收部205、需方第二构造部206、结果输出部207、需方控制部208。
具体实施方式
[0031]
为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下结合实施例及附图对本发明利用join函数进行两表查询装置及方法作具体阐述。
[0032]
《实施例》
[0033]
图1是本发明的实施例中的数据供应端的结构框图;图2是本发明的实施例中的数据需求端的的结构框图。
[0034]
如图1、2所示,利用join函数进行两表查询装置包括网络连接的数据供应端100及数据需求端200。数据供应端100由数据供应方所持有,数据需求端200由数据需求方所持有。
[0035]
数据供应端100包括供方存储部101、公开参数提取部102、供方构造部103、向量发送部104、供方控制部105。供方控制部105用于控制数据供应端100中各部的运行。
[0036]
数据需求端200包括需方存储部201、公开参数接收部202、查询指令输入部203、需方第一构造部204、向量接收部205、需方第二构造部206、结果输出部207、需方控制部208。需方控制部208用于控制数据需求端200中各部的运行。
[0037]
数据供应100为半可信的数据供应端,数据需求端200为半可信的数据需求端。
[0038]
供方存储部101存储有数据供应100的本地集合即供方集合y以及公开参数;需方存储部201存储有数据需求端200的本地集合即需方集合x。
[0039]
公开参数提取部102从供方存储部101中提取公开参数。公开参数接收部202用于接收公开参数。公开参数包括供方布隆过滤器的长度m,供方布隆过滤器中各比特串的长度
λ,需方布隆过滤器的长度m,哈希函数的个数k及哈希族h:{h1,h2,...,hk}:{0,1}
*

[m]。
[0040]
查询指令输入部203用于数据需求端200输入查询指令。
[0041]
供方构造部103用于根据公开参数及供方集合构造供方布隆过滤器zgbf。供方布隆过滤器zgbf为零分享混淆布隆过滤器。零分享混淆布隆过滤器(zero-sharing garbled bloom filter)为混淆布隆过滤器和零分享(zero sharing)的结合,也就是将零分享混淆布隆过滤器中对应哈西位置元素取出来,异或为0。
[0042]
需方第一构造部204用于根据公开参数及查询指令构造需方布隆过滤器bf。
[0043]
向量发送部104用于向数据需求端200发送发送由第一向量ri及第二向量zgbf[i]组成的向量组(ri,zgbf[i])。向量接收部205用于使用需方布隆过滤器bf对应的接收第一向量ri或第二向量zgbf[i]。
[0044]
需方第二构造部206将收第一向量ri或第二向量zgbf[i]按照接收顺序放置,形成需方混淆布隆过滤器zgbf',第一向量ri和第二向量zgbf[i]的数量总和为m。需方混淆布隆过滤器为零分享混淆布隆过滤器。
[0045]
结果输出部207利用需方混淆布隆过滤器zgbf'检查需方集合x中的元素是否在交集中。
[0046]
图3是本发明的实施例中的利用join函数进行两表查询方法的步骤流程图。
[0047]
如图3所示,使用利用join函数进行两表查询装置的流程包括以下步骤:
[0048]
步骤s1,数据供应端提取公开参数并将公开参数发送给数据需求端,公开参数包含供方布隆过滤器的长度m,供方布隆过滤器中各比特串的长度λ,需方布隆过滤器的长度m,哈希函数的个数k,哈希族h:{h1,h2,...,hk}:{0,1}
*

[m],进入步骤s2。
[0049]
步骤s2,数据需求端发起查询请求,进入步骤s3。
[0050]
步骤s3,数据供应端根据公开参数及供方集合y构造供方布隆过滤器zgbf,进入步骤s4。
[0051]
步骤s3的具体计算过程为:对于y∈y,步骤s3的具体计算过程为:对于y∈y,其他位置都是随机值,对应hk(y)位置是0的秘密分享值,k=1,2,3,...,k。zgbf[hk(y)]表示对元素y用哈希函数h做哈希,得到的哈希值作为索引值,并取出zgbf中对应索引位置的元素。
[0052]
步骤s4,数据需求端根据公开参数及及查询指令构造需方布隆过滤器bf,进入步骤s5。本步骤中,对于x∈x,bf[hi(x)]=1,其他位置置为0。bf[hi(x)]表示对元素x用hi做哈希,得到的哈希值作为索引,并取出bf中对应位置的元素(其中的元素是0或1)。
[0053]
步骤s5,数据供应端及数据需求端执行m轮不经意传输协议,在第i轮不经意传输协议中,i=1,2,3,...,m,数据供应端将(ri,zgbf[i])作为第一向量及第二向量一起发送,数据需求端作为接收方,利用bf[i]选择向量,在第i轮不经意传输协议执行完毕后,当bf[i]=0,数据需求端获得第一向量ri,当bf[i]=1时,数据需求端获得第二向量zgbf[i],进入步骤s6。本步骤中,bf[i]表示bf中第i位的元素(0或1)。
[0054]
步骤s6,数据需求端将不经意传输中接收到的第一向量ri和第二向量zgbf[i]按照顺序放置形成需方混淆布隆过滤器zgbf',进入步骤s7;
[0055]
步骤s7,对于x∈x,数据需求端利用需方混淆布隆过滤器检查需方集合x中的元素
x是否在交集中。
[0056]
步骤s7的具体操作为:对于x∈x,数据需求端检查是否等于0,如果等于0,x在交集中,否则x不在交集中。其中,k=1,2,3,...,k。zgbf[hk(x)]表示对元素x用哈希函数h做哈希,得到的哈希值作为索引值,并取出zgbf'中对应索引位置的元素。
[0057]
实施例的作用与效果
[0058]
根据本实施例提供的利用join函数进行两表查询装置及方法,装置包括数据供应端及数据需求端,数据供应端持有供方集合,数据需求端持有需方集合。当数据需求端输入查询指令后,供方构造部根据公开参数及供方集合构造供方布隆过滤器,需方第一构造部根据公开参数及查询指令构造需方布隆过滤器;向量发送部向数据需求端发送包含第一向量及第二向量的向量组;向量接收部使用需方布隆过滤器对应的接收第一向量或第二向量,需方第二构造部将第一向量或第二向量按照顺序放置形成需方混淆布隆过滤器;结果输出部利用需方混淆布隆过滤器检查需方集合中的元素是否在交集中。由于数据供应端构造了供方布隆过滤器,数据需求端构造了需方零分享混淆布隆过滤器,供方布隆过滤器中的元素不为数据需求端锁所知,同样的,需方混淆布隆过滤器中的元素不为数据供应端所知,因此,除了二者共同的交集,其他持有的本地数据不为对方所知,实现了保密性极强的安全查询。又由于使用哈希及join函数,速度可从传统的几分钟提高到几秒钟,实现了快速查询。
[0059]
上述实施方式为本发明的优选案例,并不用来限制本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1