首页> 中国专利> 分布式数据仓库的可代理查询方法、系统、设备及介质

分布式数据仓库的可代理查询方法、系统、设备及介质

摘要

本发明提供一种分布式数据仓库的可代理查询方法、系统、设备及介质,该方法包括:生成公私钥对;将公钥通过代理端转发至n个数据仓库,使得数据仓库采用布隆过滤器对本地数据集合进行处理得到n个布隆过滤器数组列表之后,采用公钥对各布隆过滤器数组列表进行逐位同态加密以得到n个布隆过滤器数组列表密文,而后通过代理端对各列表密文进行同态加法运算得到列表密文和;采用布隆过滤器中的各哈希函数分别对待查询数据进行哈希运算;从代理端查询与每个哈希运算结果对应的列表密文和;采用私钥对每个查询到的列表密文和进行同态解密;当各解密结果相同时输出解密结果。本发明能够解决分布式数据仓库通过代理方式查询导致的隐私泄漏问题。

著录项

  • 公开/公告号CN113157778A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 富算科技(上海)有限公司;

    申请/专利号CN202110639947.7

  • 发明设计人 孙小超;陈立峰;卞阳;

    申请日2021-06-09

  • 分类号G06F16/2458(20190101);G06F16/27(20190101);G06F21/60(20130101);G06F21/62(20130101);

  • 代理机构31283 上海弼兴律师事务所;

  • 代理人杨东明;余中燕

  • 地址 200135 上海市浦东新区自由贸易试验区浦东大道1200号2层A区

  • 入库时间 2023-06-19 11:57:35

说明书

技术领域

本发明涉及数据查询领域,尤其涉及一种分布式数据仓库的可代理查询方法、系统、设备及介质。

背景技术

在传统的数据查询应用中,如图1所示,数据分布式地存储于多个实体数据仓库D

因此,本发明亟待提供一种能够在不改变现有架构的前提下实现隐私保护的方案。

发明内容

为了解决现有技术中分布式数据仓库通过代理方式对外提供数据服务时存在的数据隐私泄漏问题,本发明提供一种分布式数据仓库的可代理查询方法、系统、设备及介质。

为了实现上述目的,本发明采用如下技术方案实现:

第一方面,本发明提供一种分布式数据仓库的可代理查询方法,包括:

生成公私钥对,所述公私钥对包括公钥和私钥;

将所述公钥通过代理端转发至n个数据仓库,使得n个所述数据仓库分别采用预设布隆过滤器的k个哈希函数对本地的数据集合进行处理以得到n个布隆过滤器数组列表之后,采用所述公钥对各所述布隆过滤器数组列表中的每个列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文,而后通过所述代理端对各所述布隆过滤器数组列表密文进行同态加法运算,得到布隆过滤器数组列表密文和,其中所述布隆过滤器数组列表密文和包括k个布隆过滤器列表密文和;

采用所述布隆过滤器中的各所述哈希函数分别对待查询数据进行哈希运算,得到k个哈希运算结果;

对于每个所述哈希运算结果,从所述代理端得到的对应所述布隆过滤器列表密文和中查询与该哈希运算结果位置对应的密文和;

采用所述私钥对每个查询到的密文和分别进行同态解密,得到k个解密结果;

当k个所述解密结果相同时,输出所述解密结果。

优选地,所述采用所述公钥对各所述布隆过滤器数组列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文,包括:

将各所述布隆过滤器数组列表中每个列表不同位置的数值分别映射为椭圆曲线上的点;

根据EC-ElGamal同态加密算法,采用所述公钥对映射至所述椭圆曲线上的点进行加密,得到与各所述布隆过滤器数组列表分别对应的布隆过滤器数组列表密文。

优选地,所述采用所述私钥对每个查询到的密文和分别进行同态解密,得到k个解密结果,包括:

根据EC-ElGamal同态解密算法,采用所述私钥将每个查询到的密文和分别解密为所述椭圆曲线上的点;

对解密得到的所述椭圆曲线上的点进行逆映射,得到所述解密结果。

优选地,所述方法还包括:当k个所述解密结果不完全相同时,输出查询失败信息。

第二方面,本发明提供一种分布式数据仓库的可代理安全方法,适用于代理端,该方法包括:

将客户端生成的公私钥对中的公钥转发至n个数据仓库,使得n个数据仓库分别采用预设布隆过滤器的k个哈希函数对本地的数据集合进行处理以得到n个布隆过滤器数组列表之后,采用所述公钥对各所述布隆过滤器数组列表中的每个列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文;

对各所述布隆过滤器数组列表密文进行同态加法运算,得到布隆过滤器数组列表密文和,其中所述布隆过滤器数组列表密文和包括k个布隆过滤器列表密文和;

接收所述客户端发送的k个查询请求,各所述查询请求分别携带所述客户端采用所述布隆过滤器中的相应所述哈希函数对待查询数据进行哈希运算得到的哈希运算结果;

向所述客户端返回各所述布隆过滤器列表密文和中与相应哈希运算结果位置对应的密文和,以使所述客户端采用所述公私钥对中的私钥对每个查询到的密文和分别进行同态解密得到k个解密结果,并在k个所述解密结果相同时,输出所述解密结果。

第三方面,本发明提供一种分布式数据仓库的可代理查询系统,适用于客户端,该系统包括:

密钥生成模块,配置为生成公私钥对,所述公私钥对包括公钥和私钥;

发送模块,配置为将所述公钥通过代理端发送至n个数据仓库,使得n个数据仓库分别采用预设布隆过滤器的k个哈希函数对本地的数据集合进行处理以得到n个布隆过滤器数组列表后,采用所述公钥对各所述布隆过滤器数组列表中的每个列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文,而后通过所述代理端对各所述布隆过滤器数组列表密文进行同态加法运算,得到布隆过滤器数组列表密文和,其中所述布隆过滤器数组列表密文和包括k个布隆过滤器列表密文和;

哈希运算模块,配置为采用所述布隆过滤器中的各所述哈希函数分别对待查询数据进行哈希运算,得到k个哈希运算结果;

查询模块,配置为对于每个所述哈希运算结果,从所述代理端得到的对应所述布隆过滤器列表密文和中查询与该哈希运算结果位置对应的密文和;

解密模块,配置为采用所述私钥对每个查询到的密文和分别进行同态解密,得到k个解密结果;

输出模块,配置为当k个所述解密结果相同时,输出所述解密结果。

优选地,所述数据仓库进行同态加密的过程如下:

将各所述布隆过滤器数组列表中每个列表不同位置的数值分别映射为椭圆曲线上的点;

根据EC-ElGamal同态加密算法,采用所述公钥对映射至所述椭圆曲线上的点进行加密,得到与各所述布隆过滤器数组列表分别对应的布隆过滤器数组列表密文。

优选地,所述解密模块具体配置为:

根据EC-ElGamal同态解密算法,采用所述私钥将每个查询到的密文和分别解密为所述椭圆曲线上的点;

对解密得到的所述椭圆曲线上的点进行逆映射,得到所述解密结果。

优选地,所述输出模块还配置为:当k个所述解密结果不完全相同时,输出查询失败信息。

第四方面,本发明提供一种分布式数据仓库的可代理查询系统,适用于代理端,该系统包括:

转发模块,配置为将客户端生成的公私钥对中的公钥转发至n个数据仓库,使得n个数据仓库分别采用预设布隆过滤器的k个哈希函数对本地的数据集合进行处理以得到n个布隆过滤器数组列表后,采用所述公钥对各所述布隆过滤器数组列表中的每个列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文;

同态加法模块,配置为对各所述布隆过滤器数组列表密文进行同态加法运算,得到布隆过滤器数组列表密文和,其中所述布隆过滤器数组列表密文和包括k个布隆过滤器列表密文和;

请求接收模块,配置为接收所述客户端发送的k个查询请求,各所述查询请求分别携带所述客户端采用所述布隆过滤器中的相应哈希函数对待查询数据进行哈希运算得到的哈希运算结果;

返回模块,配置为向所述客户端返回各所述布隆过滤器列表密文和中与相应哈希运算结果位置对应的密文和,以使所述客户端采用所述公私钥对中的私钥对每个查询到的密文和分别进行同态解密得到k个解密结果,并在k个所述解密结果相同时,输出所述解密结果。

为了实现上述目的,本发明还提供一种电子设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述方法的步骤。

为了实现上述目的,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述方法的步骤。

通过采用上述技术方案,本发明具有如下有益效果:

本发明首先通过客户端生成公私钥对,并将公钥通过代理端转发至n个数据仓库,使得n个数据仓库分别采用预设布隆过滤器的k个哈希函数对本地的数据集合进行处理以得到n个布隆过滤器数组列表后,采用所述公钥对各所述布隆过滤器数组列表中的每个列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文,而后通过所述代理端对各所述布隆过滤器数组列表密文进行同态加法运算,得到布隆过滤器数组列表密文和;而后,客户端采用所述布隆过滤器中的各哈希函数分别对待查询数据进行哈希运算,得到k个哈希运算结果,并且对于每个所述哈希运算结果,从所述代理端查询与该哈希运算结果对应的密文和;最后采用私钥对每个查询到的密文和分别进行同态解密,得到k个解密结果,当k个解密结果相同时,输出所述解密结果,该解密结果即表示所有数据仓库中存储有待查询数据的数据仓库数量。可见,采用本发明的查询方法进行数据查询时,代理端无法获取数据仓库的任何明文数据,同时也无法获取客户端的任何查询请求数据明文,从而能够在不改变传统可代理查询服务的底层架构的基础上,解决分布式数据仓库通过代理方式对外提供数据服务时遇到的数据隐私泄漏问题。

附图说明

图1为传统分布式数据仓库的可代理查询系统的系统架构图;

图2为本发明实施例1提供的分布式数据仓库的可代理查询方法的流程示意图;

图3为本发明实施例1提供的分布式数据仓库的可代理查询方法的原理图;

图4为本发明实施例1中布隆过滤器的工作原理图;

图5为本发明实施例1中同态加密过程的原理图;

图6为本发明实施例1中同态解密过程的原理图;

图7为本发明实施例2提供的分布式数据仓库的可代理安全查询方法的流程示意图;

图8为本发明实施例3提供的分布式数据仓库的可代理安全查询系统的结构框图;

图9为本发明实施例4提供的分布式数据仓库的可代理安全查询系统的结构框图;

图10为本发明实施例5提供的电子设备的硬件架构图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

在本发明使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本公开。在本公开和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。

实施例1

如图2和3所示,本实施例提供一种分布式数据仓库的可代理查询方法,适用于客户端,该方法具体包括以下步骤:

S11,生成公私钥对(pk,sk),所述公私钥对包括公钥pk和私钥sk。

在本实施例中,具体可以通过同态加密密钥生成器来生成公私钥对(pk,sk)。

S12,将所述公钥pk通过代理端P转发至n个数据仓库D

在本实施例中,布隆过滤器可以用于检索一个元素是否在一个集合中。下面结合图4,介绍布隆过滤器的工作原理如下:

首先,进行初始化:选取

而后,对于输入布隆过滤器的数据集合

再而后,将列表

最后,输出最终的

当需要查询某个数据是否属于数据集合

在本实施例中,如图5所示,数据仓库采用所述公钥pk对各所述布隆过滤器数组列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文的过程如下:

首先,采用映射器将各所述布隆过滤器数组列表中每个列表不同位置的数值

而后,采用现有的EC-ElGamal(椭圆曲线-厄格玛尔)加密器,根据EC-ElGamal同态加密算法,采用所述公钥pk对映射至所述椭圆曲线上的点

例如,对于布隆过滤器数组列表

当得到n个布隆过滤器数组列表密文后,代理端P对各所述布隆过滤器数组列表密 文进行同态加法运算,得到布隆过滤器数组列表密文和

S13,采用所述布隆过滤器中的各哈希函数

S14,对于每个所述哈希运算结果,采用安全查询方式从所述代理端P得到的对应所述布隆过滤器列表密文和中查询与该哈希运算结果位置对应的密文和。

例如,对于第1个哈希运算结果

S15,采用所述私钥对每个查询到的密文和分别进行同态解密,得到k个解密结果;

在本实施例中,优选采用如图6所示的步骤进行同态解密:

首先,利用据EC-ElGamal解密器,根据EC-ElGamal同态解密算法,采用所述私钥sk将每个查询到的密文和

而后,采用逆映射器对解密得到的所述椭圆曲线上的点X进行逆映射,得到所述解密结果x。

如前所述,经过k次查询将得到k个密文和,对k个密文和分别进行同态解密,即可 得到列表

S16,当k个所述解密结果相同时,输出其中一个所述解密结果。

在本实施例中,该解密结果表示所有数据仓库中存储有待查询数据的数据仓库数量。根据如前所述的布隆过滤器的查询原理可知,只有当k个解密结果相同,才认为结果是准确的,只要其中有一个不相同,则表明查询结果不准确。

S17,当k个所述解密结果不完全相同时,输出相应的查询错误信息。

采用本实施例的查询方法进行数据查询时,能够得到所有数据仓库中存储有待查询数据的数据仓库数量,在查询过程中代理端无法获取数据仓库的任何明文数据,同时也无法获取客户端的任何查询请求数据明文,从而能够在不改变传统可代理查询服务的底层架构的基础上,解决分布式数据仓库通过代理方式对外提供数据服务时遇到的数据隐私泄漏问题。

实施例2

如图7所示,本实施例提供一种分布式数据仓库的可代理安全方法,适用于代理端,该方法具体包括以下步骤:

S21,将客户端生成的公私钥对中的公钥转发至n个数据仓库,使得n个数据仓库分别采用预设布隆过滤器的k个哈希函数对本地的数据集合进行处理以得到n个布隆过滤器数组列表后,采用所述公钥对各所述布隆过滤器数组列表中的每个列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文;

S22,对各所述布隆过滤器数组列表密文进行同态加法运算,得到布隆过滤器数组列表密文和,其中所述布隆过滤器数组列表密文和包括k个布隆过滤器列表密文和;

S23,接收所述客户端发送的k个查询请求,各所述查询请求分别携带所述客户端采用所述布隆过滤器中的相应哈希函数对待查询数据进行哈希运算得到的哈希运算结果;

S24,向所述客户端返回各所述布隆过滤器列表密文和中与相应哈希运算结果位置对应的密文和,以使所述客户端采用所述公私钥对中的私钥对每个查询到的密文和分别进行同态解密得到k个解密结果,并在k个所述解密结果相同时,输出所述解密结果。

采用本实施例的查询方法进行数据查询时,能够得到所有数据仓库中存储有待查询数据的数据仓库数量,在查询过程中代理端无需获取数据仓库的任何明文数据,同时也无需获取客户端的任何查询请求数据明文,从而能够在不改变传统可代理查询服务的底层架构的基础上,解决分布式数据仓库通过代理方式对外提供数据服务时遇到的数据隐私泄漏问题。

本实施例的相关之处参见实施例1的部分说明即可,在此不再赘述。

实施例3

本实施例提供一种分布式数据仓库的可代理查询系统,适用于客户端,如图8所示,该系统包括:密钥生成模块11、发送模块12、哈希运算模块13、查询模块14、解密模块15和输出模块16。

下面分别对上述各个模块的功能进行详细描述:

密钥生成模块11配置为生成公私钥对,所述公私钥对包括公钥和私钥;

发送模块12配置为将所述公钥通过代理端发送至n个数据仓库,使得n个数据仓库分别采用预设布隆过滤器的k个哈希函数对本地的数据集合进行处理以得到n个布隆过滤器数组列表后,采用所述公钥对各所述布隆过滤器数组列表中的每个列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文,而后通过所述代理端对各所述布隆过滤器数组列表密文进行同态加法运算,得到布隆过滤器数组列表密文和,其中所述布隆过滤器数组列表密文和包括k个布隆过滤器列表密文和;

哈希运算模块13配置为采用所述布隆过滤器中的各哈希函数分别对待查询数据进行哈希运算,得到k个哈希运算结果;

查询模块14配置为对于每个所述哈希运算结果,从所述代理端得到的对应所述布隆过滤器列表密文和中查询与该哈希运算结果位置对应的密文和;

解密模块15配置为采用所述私钥对每个查询到的密文和分别进行同态解密,得到k个解密结果;

输出模块16配置为当k个所述解密结果相同时,输出所述解密结果;当k个所述解密结果不完全相同时,输出相应的查询失败信息。

在本实施例中,所述数据仓库进行同态加密的过程如下:

首先,将各所述布隆过滤器数组列表中每个列表不同位置的数值分别映射为椭圆曲线上的点;

而后,根据EC-ElGamal同态加密算法,采用所述公钥对映射至所述椭圆曲线上的点进行加密,得到与各所述布隆过滤器数组列表分别对应的布隆过滤器数组列表密文。

在本实施例中,所述解密模块15具体配置为:

首先,根据EC-ElGamal同态解密算法,采用所述私钥将每个查询到的密文和分别解密为所述椭圆曲线上的点;

而后,对解密得到的所述椭圆曲线上的点进行逆映射,得到所述解密结果。

采用本实施例的查询方法进行数据查询时,能够得到所有数据仓库中存储有待查询数据的数据仓库数量,在查询过程中代理端无需获取数据仓库的任何明文数据,同时也无需获取客户端的任何查询请求数据明文,从而能够在不改变传统可代理查询服务的底层架构的基础上,解决分布式数据仓库通过代理方式对外提供数据服务时遇到的数据隐私泄漏问题。

本实施例的相关之处参见实施例1的部分说明即可,在此不再赘述。

实施例4

本实施例提供一种分布式数据仓库的可代理查询系统,适用于代理端,如图9所示,该系统包括:转发模块21、同态加法模块22、请求接收模块23和返回模块24。

下面分别对上述各个模块的功能进行详细描述:

转发模块21配置为将客户端生成的公私钥对中的公钥转发至n个数据仓库,使得n个数据仓库分别采用预设布隆过滤器的k个哈希函数对本地的数据集合进行处理以得到n个布隆过滤器数组列表后,采用所述公钥对各所述布隆过滤器数组列表中的每个列表分别进行逐位同态加密以得到n个布隆过滤器数组列表密文;

同态加法模块22配置为对各所述布隆过滤器数组列表密文进行同态加法运算,得到布隆过滤器数组列表密文和,其中所述布隆过滤器数组列表密文和包括k个布隆过滤器列表密文和;

请求接收模块23配置为接收所述客户端发送的k个查询请求,各所述查询请求分别携带所述客户端采用所述布隆过滤器中的相应哈希函数对待查询数据进行哈希运算得到的哈希运算结果;

返回模块24配置为向所述客户端返回与各所述布隆过滤器列表密文和中与相应哈希运算结果位置对应的密文和,以使所述客户端采用所述公私钥对中的私钥对每个查询到的密文和分别进行同态解密得到k个解密结果,并在k个所述解密结果相同时,输出所述解密结果。

采用本实施例的查询方法进行数据查询时,能够得到所有数据仓库中存储有待查询数据的数据仓库数量,在查询过程中代理端无需获取数据仓库的任何明文数据,同时也无需获取客户端的任何查询请求数据明文,从而能够在不改变传统可代理查询服务的底层架构的基础上,解决分布式数据仓库通过代理方式对外提供数据服务时遇到的数据隐私泄漏问题。

本实施例的相关之处参见实施例1的部分说明即可,在此不再赘述。

实施例5

本实施例提供一种电子设备,电子设备可以通过计算设备的形式表现(例如可以为服务器设备),包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中处理器执行计算机程序时可以实现实施例1-2提供的分布式数据仓库的可代理查询方法。

图10示出了本实施例的硬件结构示意图,如图10所示,电子设备9具体包括:

至少一个处理器91、至少一个存储器92以及用于连接不同系统组件(包括处理器91和存储器92)的总线93,其中:

总线93包括数据总线、地址总线和控制总线。

存储器92包括易失性存储器,例如随机存取存储器(RAM)921和/或高速缓存存储器922,还可以进一步包括只读存储器(ROM)923。

存储器92还包括具有一组(至少一个)程序模块924的程序/实用工具925,这样的程序模块924包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。

处理器91通过运行存储在存储器92中的计算机程序,从而执行各种功能应用以及数据处理,例如本发明实施例1-2所提供的分布式数据仓库的可代理查询方法。

电子设备9进一步可以与一个或多个外部设备94(例如键盘、指向设备等)通信。这种通信可以通过输入/输出(I/O)接口95进行。并且,电子设备9还可以通过网络适配器96与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。网络适配器96通过总线93与电子设备9的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备9使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理器、外部磁盘驱动阵列、RAID(磁盘阵列)系统、磁带驱动器以及数据备份存储系统等。

应当注意,尽管在上文详细描述中提及了电子设备的若干单元/模块或子单元/模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多单元/模块的特征和功能可以在一个单元/模块中具体化。反之,上文描述的一个单元/模块的特征和功能可以进一步划分为由多个单元/模块来具体化。

实施例6

本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现实施例1-2所提供的分布式数据仓库的可代理查询方法的步骤。

其中,可读存储介质可以采用的更具体可以包括但不限于:便携式盘、硬盘、随机存取存储器、只读存储器、可擦拭可编程只读存储器、光存储器件、磁存储器件或上述的任意合适的组合。

在可能的实施方式中,本发明还可以实现为一种程序产品的形式,其包括程序代码,当所述程序产品在终端设备上运行时,所述程序代码用于使所述终端设备执行实现实施例1-2所述的分布式数据仓库的可代理查询方法的步骤。

其中,可以以一种或多种程序设计语言的任意组合来编写用于执行本发明的程序代码,所述程序代码可以完全地在用户设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户设备上部分在远程设备上执行或完全在远程设备上执行。

虽然以上描述了本发明的具体实施方式,但是本领域的技术人员应当理解,这仅是举例说明,本发明的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本发明的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本发明的保护范围。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号