首页> 中国专利> 确定查询数据是否属于目标数据集合的方法和装置

确定查询数据是否属于目标数据集合的方法和装置

摘要

本说明书实施例提供一种确定查询数据是否属于目标数据集合的方法和装置,采用多方安全计算技术实现,以实现隐私保护,达到匿名查询的目的。方法包括:第一方确定查询数据在布隆过滤器中对应的预设数目个目标位置,提取从第二方获取的第一密文数组中预设数目个目标位置的加密元素,得到预设数目个加密值;第一密文数组为第二方将目标数据集合映射到布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到的;针对预设数目个加密值进行同态函数运算,得到结果密文;同态函数运算用于汇聚预设数目个目标位置的元素值;将结果密文发送给第二方,以使第二方对结果密文进行解密,根据解密结果确定查询数据是否属于目标数据集合。

著录项

  • 公开/公告号CN114969806A

    专利类型发明专利

  • 公开/公告日2022-08-30

    原文格式PDF

  • 申请/专利权人 蚂蚁区块链科技(上海)有限公司;

    申请/专利号CN202210445779.2

  • 发明设计人 尹栋;王一凡;谭嗣俊;

    申请日2022-04-26

  • 分类号G06F21/62(2013.01);

  • 代理机构北京亿腾知识产权代理事务所(普通合伙) 11309;北京亿腾知识产权代理事务所(普通合伙) 11309;

  • 代理人孙欣欣;周良玉

  • 地址 200010 上海市黄浦区外马路618号8层803室

  • 入库时间 2023-06-19 16:36:32

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-16

    实质审查的生效 IPC(主分类):G06F21/62 专利申请号:2022104457792 申请日:20220426

    实质审查的生效

说明书

技术领域

本说明书一个或多个实施例涉及计算机领域,尤其涉及确定查询数据是否属于目标数据集合的方法和装置,采用多方安全计算技术实现,以实现隐私保护,达到匿名查询的目的。

背景技术

多方安全计算(secure multi-party computation,SMPC)解决一组互不信任的参与方之间保护隐私的协同计算问题,SMPC要确保输入的独立性,计算的正确性,同时不泄露各输入值给参与计算的其他成员。

在目前大数据时代下,隐私保护和数据安全越来越被各方看重。多方安全计算提供了一种方式,即在数据不暴露的情况下,安全的完成计算任务,为数据的安全、合规使用提供了一种强力的支持。

在多方安全计算的一个典型应用场景中,查询数据由第一方持有,目标数据集合由第二方持有,需要确定查询数据是否属于目标数据集合,并满足匿名查询的安全性要求,也就是说,第一方只能获得查询数据是否属于目标数据集合的确定结果,无法获得所述目标数据集合,第二方只能获得查询数据是否属于目标数据集合的确定结果,无法获得所述查询数据。

发明内容

本说明书一个或多个实施例描述了一种确定查询数据是否属于目标数据集合的方法和装置,能够满足匿名查询的安全性要求。

第一方面,提供了一种确定查询数据是否属于目标数据集合的方法,所述查询数据由第一方持有,所述目标数据集合由第二方持有,所述方法由所述第一方执行,包括:

确定其持有的所述查询数据在布隆过滤器中对应的预设数目个目标位置,提取从所述第二方获取的第一密文数组中所述预设数目个目标位置的加密元素,得到预设数目个加密值;其中,所述第一密文数组为所述第二方将其具有的所述目标数据集合映射到所述布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到的;

针对所述预设数目个加密值进行同态函数运算,得到结果密文;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值;

将所述结果密文发送给所述第二方,以使所述第二方对所述结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合。

在一种可能的实施方式中,所述确定其持有的所述查询数据在布隆过滤器中对应的预设数目个目标位置,包括:

针对所述查询数据,通过与所述第二方共享的预设数目个哈希函数计算出预设数目个哈希值,每个哈希值对应于所述布隆过滤器中的1个目标位置。

在一种可能的实施方式中,所述第一数组是将所述目标数据集合中的各目标数据映射到所述布隆过滤器的预设数目个第一位置,并将该预设数目个第一位置的元素取值置为0而得到的。

进一步地,所述针对所述预设数目个加密值进行同态函数运算,包括:

对各个加密值进行同态求和,得到第一密文求和结果;

对所述第一密文求和结果乘以本方选取的随机数,得到所述结果密文。

第二方面,提供了一种确定查询数据是否属于目标数据集合的方法,所述查询数据由第一方持有,所述目标数据集合由第二方持有,所述方法由所述第二方执行,包括:

在准备阶段,将所述目标数据集合映射到布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到第一密文数组;将所述第一密文数组提供给所述第一方;

在查询阶段,从所述第一方接收结果密文,所述结果密文是第一方针对预设数目个加密值进行同态函数运算得到的;所述预设数目个加密值是第一方将其持有的所述查询数据映射到所述布隆过滤器中的预设数目个目标位置,从所述第一密文数组中所述预设数目个目标位置提取加密元素得到的;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值;

对所述结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合;将确定结果通知所述第一方。

在一种可能的实施方式中,所述将所述目标数据集合映射到所述布隆过滤器中得到第一数组,包括:

针对所述目标数据集合中的任一目标数据,通过与所述第一方共享的预设数目个哈希函数计算出预设数目个哈希值,每个哈希值对应于布隆过滤器中的1个第一位置;所述布隆过滤器包括m个位置的元素,各位置元素的初始取值均为1;

将所述布隆过滤器中任一目标数据对应的预设数目个第一位置的元素取值置为0,得到m位的第一数组。

在一种可能的实施方式中,所述对第一数组中的各个元素进行同态加密,包括:

针对第一数组中的各个元素进行支持加法同态的同态加密。

在一种可能的实施方式中,所述根据解密结果确定所述查询数据是否属于所述目标数据集合,包括:

若所述解密结果为0,确定所述查询数据属于所述目标数据集合;

若所述解密结果不为0,确定所述查询数据不属于所述目标数据集合。

在一种可能的实施方式中,所述查询数据为待查询用户的用户标识,所述目标数据集合为具有目标类别的用户标识的集合。

第三方面,提供了一种确定查询数据是否属于目标数据集合的装置,所述查询数据由第一方持有,所述目标数据集合由第二方持有,所述装置设置于所述第一方,包括:

确定单元,用于确定其持有的所述查询数据在布隆过滤器中对应的预设数目个目标位置,提取从所述第二方获取的第一密文数组中所述预设数目个目标位置的加密元素,得到预设数目个加密值;其中,所述第一密文数组为所述第二方将其具有的所述目标数据集合映射到所述布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到的;

运算单元,用于针对所述确定单元得到的预设数目个加密值进行同态函数运算,得到结果密文;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值;

发送单元,用于将所述运算单元得到的结果密文发送给所述第二方,以使所述第二方对所述结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合。

第四方面,提供了一种确定查询数据是否属于目标数据集合的装置,所述查询数据由第一方持有,所述目标数据集合由第二方持有,所述装置设置于所述第二方,包括:

映射单元,用于在准备阶段,将所述目标数据集合映射到布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到第一密文数组;将所述第一密文数组提供给所述第一方;

接收单元,用于在查询阶段,从所述第一方接收结果密文,所述结果密文是第一方针对预设数目个加密值进行同态函数运算得到的;所述预设数目个加密值是第一方将其持有的所述查询数据映射到所述布隆过滤器中的预设数目个目标位置,从所述第一密文数组中所述预设数目个目标位置提取加密元素得到的;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值;

确定单元,用于对所述接收单元接收的结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合;将确定结果通知所述第一方。

第五方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面或第二方面的方法。

第六方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面或第二方面的方法。

通过本说明书实施例提供的方法和装置,首先第一方确定其持有的所述查询数据在布隆过滤器中对应的预设数目个目标位置,提取从所述第二方获取的第一密文数组中所述预设数目个目标位置的加密元素,得到预设数目个加密值;其中,所述第一密文数组为所述第二方将其具有的所述目标数据集合映射到所述布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到的;然后第一方针对所述预设数目个加密值进行同态函数运算,得到结果密文;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值;最后第一方将所述结果密文发送给所述第二方,以使所述第二方对所述结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合。由上可见,本说明书实施例,第一方只能从第二方获取对第一数组中的各个元素进行同态加密得到的第一密文数组,第一方通过该第一密文数组无法推断出目标数据集合中包括的任一项数据,第一方将结果密文发送给所述第二方,该结果密文是第一方针对预设数目个加密值进行同态函数运算得到的,所述同态函数运算用于汇聚所述预设数目个目标位置的元素值,第二方对结果密文进行解密,根据解密结果只能够确定所述查询数据是否属于所述目标数据集合,无法倒推出所述预设数目个目标位置的元素值,因此无法确定所述查询数据,从而能够满足匿名查询的安全性要求。

附图说明

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

图1为本说明书披露的一个实施例的实施场景示意图;

图2示出根据一个实施例的确定查询数据是否属于目标数据集合的方法交互示意图;

图3示出根据一个实施例的布隆过滤器的映射示意图;

图4示出根据一个实施例的同态加密示意图;

图5示出根据一个实施例的确定查询数据是否属于目标数据集合的装置的示意性框图;

图6示出根据另一个实施例的确定查询数据是否属于目标数据集合的装置的示意性框图。

具体实施方式

下面结合附图,对本说明书提供的方案进行描述。

图1为本说明书披露的一个实施例的实施场景示意图。该实施场景涉及确定查询数据是否属于目标数据集合,查询数据由第一方持有,目标数据集合由第二方持有,需要确定查询数据是否属于目标数据集合,并满足相应的安全性要求,第一方只能获得查询数据是否属于目标数据集合的确定结果,无法获得所述目标数据集合,第二方只能获得查询数据是否属于目标数据集合的确定结果,无法获得所述查询数据。可以理解的是,查询数据属于第一方的隐私数据,目标数据集合属于第二方的隐私数据。如图1所示,确定查询数据是否属于目标数据集合的场景涉及参与方A和参与方B,或称为第一方和第二方,或称为查询方和数据方。各个参与方可以实现为任何具有计算、处理能力的设备、平台、服务器或设备集群。双方要在保护数据隐私的情况下,联合确定查询数据是否属于目标数据集合。

查询方持有查询数据x1,数据方持有目标数据集合Y={y1,y2...},在不暴露各自持有数据的前提下,确定查询数据是否属于目标数据集合,也就是说,确定x1是否属于Y。举例来说,查询数据为小明,目标数据集合Y={小明,小红,小云,小兰},则查询数据属于目标数据集合;查询数据为小刚,目标数据集合Y={小明,小红,小云,小兰},则查询数据不属于目标数据集合。

本说明书实施例,通过多方安全计算来确定查询数据是否属于目标数据集合。该方案用于两方,两方的输入分别表示为x1和Y,两方一起想要计算x1是否属于Y,而不泄露各自的隐私数据,其中,当确定出查询数据属于目标数据集合时,数据方也仍然不能够确定出查询数据。

可以理解的是,隐私数据可以是任何不便于公开的数据,可以但不限于代表用户的个人信息的数据,或者商业秘密等。

安全多方计算又称为多方安全计算,即多方共同计算出一个函数的结果,而不泄露这个函数各方的输入数据,计算的结果公开给其中的一方或多方。

本说明书实施例,针对在确定查询数据是否属于目标数据集合时,能够满足相应的安全性要求,提出相应的解决方案。

图2示出根据一个实施例的确定查询数据是否属于目标数据集合的方法交互示意图,该方法可以基于图1所示的实施场景,所述查询数据由第一方持有,所述目标数据集合由第二方持有。如图2所示,该实施例中确定查询数据是否属于目标数据集合的方法包括以下步骤:步骤21,第二方将所述目标数据集合映射到布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到第一密文数组;步骤22,第二方将所述第一密文数组提供给所述第一方;步骤23,第一方确定其持有的所述查询数据在布隆过滤器中对应的预设数目个目标位置,提取从所述第二方获取的第一密文数组中所述预设数目个目标位置的加密元素,得到预设数目个加密值;步骤24,第一方针对所述预设数目个加密值进行同态函数运算,得到结果密文;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值;步骤25,第一方将所述结果密文发送给所述第二方;步骤26,第二方对所述结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合;步骤27,第二方将确定结果通知所述第一方。下面描述以上各个步骤的具体执行方式。

首先在步骤21,第二方将所述目标数据集合映射到布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到第一密文数组。可以理解的是,布隆过滤器用于代表整个目标数据集合,而不仅仅是目标数据集合中的一项数据。

本说明书实施例,第一方和第二方可以预先约定好加密方案的参数及布隆过滤器的参数。例如,可以约定好采用半同态的加密方案或者全同态的加密方案,还可以约定好布隆过滤器对应的数组包含的元素个数、前述映射所采用的哈希函数等。

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法。其中,上述二进制向量还可以称为数组,随机映射函数具体可以为哈希函数。

在一个示例中,所述将所述目标数据集合映射到所述布隆过滤器中得到第一数组,包括:

针对所述目标数据集合中的任一目标数据,通过与所述第一方共享的预设数目个哈希函数计算出预设数目个哈希值,每个哈希值对应于布隆过滤器中的1个第一位置;所述布隆过滤器包括m个位置的元素,各位置元素的初始取值均为1;

将所述布隆过滤器中任一目标数据对应的预设数目个第一位置的元素取值置为0,得到m位的第一数组。

该示例中,与一般的实现略有不同,布隆过滤器的各位置元素的初始取值全部为1,插入目标数据时将布隆过滤器相应位置的元素取值置为0,可以理解的是,插入目标数据时,如果相应位置的元素取值已经为0,则保持该元素取值不变。

图3示出根据一个实施例的布隆过滤器的映射示意图。参照图3,布隆过滤器是一个数组,假定其包括10个元素,映射过程中需要用到hash1和hash2两个哈希函数,元素的初始取值均为1,可以将集合中的数据按照同样的映射方式依次映射到布隆过滤器。以目标数据id1为例,hash1(id1)=2,hash2(id1)=7,得到的两个位置分别为位置2和位置7,将这两个位置的元素取值置为0,这就是针对id1的映射过程,可以采用同样的方式将集合中的其他数据映射到布隆过滤器中,映射结束后的布隆过滤器可以代表整个集合,通过一个数据对应于布隆过滤器相应位置的元素取值是否为0,可以用来判断该数据是否存在于集合中。

同态加密(homomorphic encryption)是一种加密形式,它允许对密文进行特定形式的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样。换言之,这项技术可以在加密的数据中进行诸如检索、比较等操作,得出正确的结果,而在整个处理过程中无需对数据进行解密。与普通的加密相比,同态加密具备同态这一性质,即可以对加密状态下的数据进行计算。比如,对a的同态加密密文E(a)和b的同态加密密文E(b)进行某种运算,可以得到a+b的密文E(a+b),且操作过程中不会泄露a、b或a+b,也不需要使用解密的密钥,该运算可称为同态加法运算。

在一个示例中,所述对第一数组中的各个元素进行同态加密,包括:

针对第一数组中的各个元素进行支持加法同态的同态加密。

该示例中,后续可以针对同态加密得到的密文进行同态加法运算,以实现对元素值的汇聚。

图4示出根据一个实施例的同态加密示意图。参照图4,在将集合中的数据按照同样的映射方式依次映射到布隆过滤器后,得到的第一数组包括的各元素的取值为0或1,例如,第一数组中位置2和位置7这两个位置的元素取值为0,其余位置的元素取值为1,对该第一数组中每个位置的元素分别加密就得到第一密文数组,例如,第一数组中一个位置的元素取值为1时,在第一密文数组中该位置的元素取值为E(1);第一数组中一个位置的元素取值为0时,在第一密文数组中该位置的元素取值为E(0),其他方并不能够知道E(1)或E(0)所代表的含义。

然后在步骤22,第二方将所述第一密文数组提供给所述第一方。本说明书实施例,第二方可以在获知第一方有查询需求的时候,再将所述第一密文数组提供给所述第一方,也可以在获知第一方有查询需求之前,就预先将所述第一密文数组提供给所述第一方。

其中,第二方将第一密文数组发送给第一方,第一方可以对收到的第一密文数组进行存储,该方案的存储效率高。

接着在步骤23,第一方确定其持有的所述查询数据在布隆过滤器中对应的预设数目个目标位置,提取从所述第二方获取的第一密文数组中所述预设数目个目标位置的加密元素,得到预设数目个加密值。可以理解的是,第一方可以采取与第二方同样的映射方式来确定所述预设数目个目标位置。

在一个示例中,所述确定其持有的所述查询数据在布隆过滤器中对应的预设数目个目标位置,包括:

针对所述查询数据,通过与所述第二方共享的预设数目个哈希函数计算出预设数目个哈希值,每个哈希值对应于所述布隆过滤器中的1个目标位置。

可以理解的是,第一方与第二方采用相同的哈希函数来确定上述目标位置;第一方在得到各个目标位置后,可以不必重置布隆过滤器中相应位置的元素值,而仅用于提取所述第一密文数组中各个目标位置的加密元素,得到各个加密值。

以图3和图4为例,若第一方的查询数据为id1,则第一方与第二方采用相同的哈希函数来确定上述目标位置为位置2和位置7,接着提取所述第一密文数组中位置2和位置7的加密元素,得到位置2的加密值E(0)和位置7的加密值E(0)。

再在步骤24,第一方针对所述预设数目个加密值进行同态函数运算,得到结果密文;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值。可以理解的是,汇聚结果取决于预设数目个目标位置的元素值,根据汇聚结果无法推断出单个目标位置的元素值,可以避免额外信息的泄露。

在一个示例中,所述第一数组是将所述目标数据集合中的各目标数据映射到所述布隆过滤器的预设数目个第一位置,并将该预设数目个第一位置的元素取值置为0而得到的;

所述针对所述预设数目个加密值进行同态函数运算,包括:

对各个加密值进行同态求和,得到第一密文求和结果;

对所述第一密文求和结果乘以本方选取的随机数,得到所述结果密文。

举例来说,上述各个加密值具体为位置2的加密值E(0)和位置7的加密值E(0),通过同态求和E(0)+E(0)=E(0),得到第一密文求和结果E(0),然后计算明文和密文乘法r*E(0)获得结果密文E(0)。其中,r为第一方选取的随机数。

该示例中,由于引入了随机数,因此当查询数据不属于目标数据集合时,各个加密值中至少有一个为E(1),从而使得结果密文不能够反映出查询数据的任何信息,第二方无法通过结果密文对查询数据进行推断。

可以理解的是,第二方为被查询方,第一方为查询方,在查询过程中,第二方只从第一方获得了前述结果密文,故无法从该结果密文中获得第一方所查元素的信息,也就是说,第二方无法获得查询数据的信息。

再在步骤25,第一方将所述结果密文发送给所述第二方。可以理解的是,结果密文只有一个,对应于所述预设数目个目标位置的元素值的汇聚结果。

再在步骤26,第二方对所述结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合。可以理解的是,解密结果的数值能够用于确定所述查询数据是否属于所述目标数据集合的确定结果,不会泄露所述查询数据。

在一个示例中,所述根据解密结果确定所述查询数据是否属于所述目标数据集合,包括:

若所述解密结果为0,确定所述查询数据属于所述目标数据集合;

若所述解密结果不为0,确定所述查询数据不属于所述目标数据集合。

该示例对应于本说明书实施例中提供的布隆过滤器的映射方式。

最后在步骤27,第二方将确定结果通知所述第一方。可以理解的是,第一方只能获得所述查询数据是否属于所述目标数据集合的确定结果,不会获得所述目标数据集合。

本说明书实施例,整个处理过程可以分为两个阶段,步骤21和步骤22称为准备阶段,步骤23至步骤27称为查询阶段。可选地,准备阶段离线进行处理,查询阶段在线进行处理,从而使得在线处理的通信量低,查询效率高。

本说明书实施例的应用场景广泛,在一个示例中,所述查询数据为待查询用户的用户标识,所述目标数据集合为具有目标类别的用户标识的集合。

该示例中,如果确定出所述查询数据属于所述目标数据集合,那么也就确定了待查询用户具有目标类别。

举例来说,黑名单查询在数据业务中是一种很常见的查询场景。但随着各类对于个人信息的保护的规定的出台,现有的黑名单查询业务会有一些合规风险。一方面,黑名单本身就是包含个人信息的敏感数据,提供方无法直接给予查询方,因为会带来一些无关的个人数据的泄漏风险。另一方面,对于非黑名单中的用户信息,很多查询方也不愿意泄漏给黑名单提供方,因为会泄漏一些与黑名单无关的业务信息。本说明书实施例提供的方案可以用于该场景下的匿名查询。匿名查询:B方有(key,value)形式的数据库,A方在不向B方泄漏自己key的情况,向B方查询对应的value。本说明书实施例可以看作是当value只有0和1两种取值时的优化方案。存储效率和查询效率都远高于一般的通用方案。

通过本说明书实施例提供的方法,首先第一方确定其持有的所述查询数据在布隆过滤器中对应的预设数目个目标位置,提取从所述第二方获取的第一密文数组中所述预设数目个目标位置的加密元素,得到预设数目个加密值;其中,所述第一密文数组为所述第二方将其具有的所述目标数据集合映射到所述布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到的;然后第一方针对所述预设数目个加密值进行同态函数运算,得到结果密文;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值;最后第一方将所述结果密文发送给所述第二方,以使所述第二方对所述结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合。由上可见,本说明书实施例,第一方只能从第二方获取对第一数组中的各个元素进行同态加密得到的第一密文数组,第一方通过该第一密文数组无法推断出目标数据集合中包括的任一项数据,第一方将结果密文发送给所述第二方,该结果密文是第一方针对预设数目个加密值进行同态函数运算得到的,所述同态函数运算用于汇聚所述预设数目个目标位置的元素值,第二方对结果密文进行解密,根据解密结果只能够确定所述查询数据是否属于所述目标数据集合,无法倒推出所述预设数目个目标位置的元素值,因此无法确定所述查询数据,从而能够满足匿名查询的安全性要求。

根据另一方面的实施例,还提供一种确定查询数据是否属于目标数据集合的装置,所述查询数据由第一方持有,所述目标数据集合由第二方持有,所述装置设置于所述第一方,该装置用于执行本说明书图2所示实施例提供的方法中第一方执行的动作。图5示出根据一个实施例的确定查询数据是否属于目标数据集合的装置的示意性框图。如图5所示,该装置500包括:

确定单元51,用于确定其持有的所述查询数据在布隆过滤器中对应的预设数目个目标位置,提取从所述第二方获取的第一密文数组中所述预设数目个目标位置的加密元素,得到预设数目个加密值;其中,所述第一密文数组为所述第二方将其具有的所述目标数据集合映射到所述布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到的;

运算单元52,用于针对所述确定单元51得到的预设数目个加密值进行同态函数运算,得到结果密文;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值;

发送单元53,用于将所述运算单元52得到的结果密文发送给所述第二方,以使所述第二方对所述结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合。

可选地,作为一个实施例,所述确定单元51,具体用于针对所述查询数据,通过与所述第二方共享的预设数目个哈希函数计算出预设数目个哈希值,每个哈希值对应于所述布隆过滤器中的1个目标位置。

可选地,作为一个实施例,所述第一数组是将所述目标数据集合中的各目标数据映射到所述布隆过滤器的预设数目个第一位置,并将该预设数目个第一位置的元素取值置为0而得到的。

进一步地,所述运算单元52包括:

求和子单元,用于对各个加密值进行同态求和,得到第一密文求和结果;

乘法子单元,用于对所述求和子单元得到的第一密文求和结果乘以本方选取的随机数,得到所述结果密文。

根据另一方面的实施例,还提供一种确定查询数据是否属于目标数据集合的装置,所述查询数据由第一方持有,所述目标数据集合由第二方持有,所述装置设置于所述第二方,该装置用于执行本说明书图2所示实施例提供的方法中第二方执行的动作。图6示出根据另一个实施例的确定查询数据是否属于目标数据集合的装置的示意性框图。如图6所示,该装置600包括:

映射单元61,用于在准备阶段,将所述目标数据集合映射到布隆过滤器中得到第一数组,并对第一数组中的各个元素进行同态加密得到第一密文数组;将所述第一密文数组提供给所述第一方;

接收单元62,用于在查询阶段,从所述第一方接收结果密文,所述结果密文是第一方针对预设数目个加密值进行同态函数运算得到的;所述预设数目个加密值是第一方将其持有的所述查询数据映射到所述布隆过滤器中的预设数目个目标位置,从所述第一密文数组中所述预设数目个目标位置提取加密元素得到的;所述同态函数运算用于汇聚所述预设数目个目标位置的元素值;

确定单元63,用于对所述接收单元62接收的结果密文进行解密,根据解密结果确定所述查询数据是否属于所述目标数据集合;将确定结果通知所述第一方。

可选地,作为一个实施例,所述映射单元61包括:

位置确定子单元,用于针对所述目标数据集合中的任一目标数据,通过与所述第一方共享的预设数目个哈希函数计算出预设数目个哈希值,每个哈希值对应于布隆过滤器中的1个第一位置;所述布隆过滤器包括m个位置的元素,各位置元素的初始取值均为1;

取值设置子单元,用于将所述位置确定子单元确定的所述布隆过滤器中任一目标数据对应的预设数目个第一位置的元素取值置为0,得到m位的第一数组。

可选地,作为一个实施例,所述映射单元61,具体用于针对第一数组中的各个元素进行支持加法同态的同态加密。

可选地,作为一个实施例,所述确定单元63包括:

第一确定子单元,用于若所述解密结果为0,确定所述查询数据属于所述目标数据集合;

第二确定子单元,用于若所述解密结果不为0,确定所述查询数据不属于所述目标数据集合。

可选地,作为一个实施例,所述查询数据为待查询用户的用户标识,所述目标数据集合为具有目标类别的用户标识的集合。

根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2所描述的方法。

根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2所描述的方法。

本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。

以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号