CN115982424A - 一种隐私关键词查询方法、装置及电子设备 - Google Patents
一种隐私关键词查询方法、装置及电子设备 Download PDFInfo
- Publication number
- CN115982424A CN115982424A CN202310269239.8A CN202310269239A CN115982424A CN 115982424 A CN115982424 A CN 115982424A CN 202310269239 A CN202310269239 A CN 202310269239A CN 115982424 A CN115982424 A CN 115982424A
- Authority
- CN
- China
- Prior art keywords
- data
- keywords
- plaintext
- ciphertext
- query
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Storage Device Security (AREA)
Abstract
本申请公开了一种隐私关键词查询方法、装置及电子设备,涉及隐私计算技术领域,客户端设备对待查询的多个关键词分组,并使用中国剩余定理进行打包编码,并采用半同态加密算法,通过与服务端设备之间的消息交互进行隐私关键词查询,得到服务端设备返回的查询密文数据,并在解密和解码之后,从得到的解码数据中获得该多个关键词的查询结果,实现了一次性针对批量的多个关键词进行隐私查询,提高了查询效率,并且,基于半同态加密的方法实现隐私查询,降低了计算和通信开销。
Description
技术领域
本申请涉及隐私计算技术领域,尤其涉及一种隐私关键词查询方法、装置及电子设备。
背景技术
隐私关键词查询(Private Keyword Search,PKS)是密码学中隐私计算技术领域及多方安全计算技术领域中近年来兴起的一个重要应用场景。高效地实现隐私关键词查询,可广泛应用于金融、工业等场景下的敏感隐私数据的查询,能够尽可能地保护客户端和服务端的数据隐私安全,使得服务端的数据仅透露单条数据查询结果的信息。
现有的隐私关键词查询方法,在仅有两方参与的情况下,有基于同态加密(Homomorphic Encryption,HE)的方法,和基于不经意传输(Oblivious Transfer,OT)的方法。基于OT的方法虽然计算效率很高,但是需要传输大量的数据,需要将服务端的数据库的数据进行加密,并传输一遍给作为查询方的客户端,占用大量的网络资源,并且查询得到的密文结果仅能直接解密为明文,无法像同态加密一样能在密文状态下对查询结果进行其他运算。
基于同态加密实现PKS的方法,其通讯量较少,在使用广域网进行通信的实际场景中更加合适,但是基于全同态加密(Full Homomorphic Encryption,FHE)的方法,在加密和同态运算中计算开销较大。基于半同态加密(如Paillier半同态加密算法)进行加密和同态运算的计算效率相对较高,但每次只能针对一个关键词进行查询,当需要查询的关键词较多时,查询效率较低。
发明内容
本申请实施例提供一种隐私关键词查询方法、装置及电子设备,用以解决现有技术中存在的隐私关键词查询的计算开销较大以及查询效率较低的问题。
本申请实施例提供一种隐私关键词查询方法,应用于客户端设备,所述方法,包括:
将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
向服务端设备发送所述v×m个密文数据,使得所述服务端设备针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据,还使得所述服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的,并向所述客户端设备发送所述a×v个查询密文数据;
使用私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果;
针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应;
从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
进一步的,所述预设数量的素数的长度大于所述服务端设备持有的被查询数据的数据位数的指定位数。
本申请实施例提供一种隐私关键词查询方法,应用于服务端设备,所述方法,包括:
接收客户端设备发送的v×m个密文数据,所述v×m个密文数据为所述客户端设备采用如下步骤生成的:
所述客户端设备将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
所述客户端设备针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
所述客户端设备针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
所述服务端设备针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据;
所述服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的;
向所述客户端设备发送所述a×v个查询密文数据,使得所述客户端设备使用私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果,并针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应,以及从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
进一步的,所述预设数量的素数的长度大于所述服务端设备持有的被查询数据的数据位数的指定位数。
进一步的,在所述针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据之前,还包括:
针对每份数据,以M作为模数进行插值计算,得到该份数据对应的第一种多项式函数和第二种多项式函数的系数。
本申请实施例提供一种隐私关键词查询装置,应用于客户端设备,所述装置,包括:
关键词分组模块,用于将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
关键词编码模块,用于针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
明文数据加密模块,用于针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
密文数据发送模块,用于向服务端设备发送所述v×m个密文数据,使得所述服务端设备针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据,还使得所述服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的,并向所述客户端设备发送所述a×v个查询密文数据;
查询密文数据解密模块,用于使用私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果;
数据解码模块,用于针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应;
查询结果确定模块,用于从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
进一步的,所述预设数量的素数的长度大于所述服务端设备持有的被查询数据的数据位数的指定位数。
本申请实施例提供一种隐私关键词查询装置,应用于服务端设备,所述装置,包括:
密文数据接收模块,用于接收客户端设备发送的v×m个密文数据,所述v×m个密文数据为所述客户端设备采用如下步骤生成的:
所述客户端设备将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
所述客户端设备针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
所述客户端设备针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
密文数据计算模块,用于针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据;
半同态密文数据计算模块,用于针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的;
查询密文数据发送模块,用于向所述客户端设备发送所述a×v个查询密文数据,使得所述客户端设备使用私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果,并针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应,以及从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
本申请实施例提供一种电子设备,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现上述任一应用于客户端设备的隐私关键词查询方法,或者,实现上述任一应用于服务端设备的隐私关键词查询方法。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一应用于客户端设备的隐私关键词查询方法,或者,实现上述任一应用于服务端设备的隐私关键词查询方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一应用于客户端设备的隐私关键词查询方法,或者,执行上述任一应用于服务端设备的隐私关键词查询方法。
本申请有益效果包括:
本申请实施例提供的方法中,客户端设备对待查询的多个关键词分组,并使用中国剩余定理进行打包编码,并采用半同态加密算法,通过与服务端设备之间的消息交互进行隐私关键词查询,得到服务端设备返回的查询密文数据,并在解密和解码之后,从得到的解码数据中获得该多个关键词的查询结果,实现了一次性针对批量的多个关键词进行隐私查询,提高了查询效率,并且,基于半同态加密的方法实现隐私查询,降低了计算和通信开销。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本申请的进一步理解,并且构成说明书的一部分,与本申请实施例一起用于解释本申请,并不构成对本申请的限制。在附图中:
图1为本申请实施例提供应用于客户端设备的隐私关键词查询方法的流程图;
图2为本申请实施例提供应用于服务端设备的隐私关键词查询方法的流程图;
图3为本申请实施例提供的隐私关键词查询方法的流程图;
图4为本申请实施例提供应用于客户端设备的隐私关键词查询装置的结构示意图;
图5为本申请实施例提供应用于服务端设备的隐私关键词查询装置的结构示意图;
图6为本申请实施例提供的电子设备的结构示意图。
具体实施方式
为了给出提高隐私关键词查询的查询效率,已经降低计算开销的实现方案,本申请实施例提供了一种隐私关键词查询方法、装置及电子设备,以下结合说明书附图对本申请的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本申请,并不用于限定本申请。并且在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本申请实施例提供一种隐私关键词查询方法,应用于客户端设备,如图1所示,该方法包括:
步骤11、将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于预设数量;
步骤12、针对每组关键词,将预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对v组关键词的共计v个明文数据;
步骤13、针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
步骤14、向服务端设备发送v×m个密文数据,使得服务端设备针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个第一种多项式函数和a个第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据,还使得服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,该随机数是模M取随机得到的,并向客户端设备发送a×v个查询密文数据;
步骤15、使用私钥对a×v个查询密文数据进行解密,得到a×v个查询解密结果;
步骤16、针对每个查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,该各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应;
步骤17、从该各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
相应的,本申请实施例还提供了一种隐私关键词查询方法,应用于服务端设备,如图2所示,该方法包括:
步骤21、接收客户端设备发送的v×m个密文数据,v×m个密文数据为客户端设备采用如下步骤生成的:
客户端设备将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于预设数量;
客户端设备针对每组关键词,将预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对v组关键词的共计v个明文数据;
客户端设备针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
步骤22、服务端设备针对每个明文数据,基于第一种多项式函数和第二种多项式函数,计算该明文数据对应的第一半同态密文数据和第二半同态密文数据。
服务端设备针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个第一种多项式函数和a个第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据;
步骤23、服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,该随机数是模M取随机得到的;
步骤24、向客户端设备发送a×v个查询密文数据,使得客户端设备使用私钥对a×v个查询密文数据进行解密,得到a×v个查询解密结果,并针对每个查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应,以及从各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
采用本申请实施例提供的上述方法,客户端设备对待查询的多个关键词分组,并使用中国剩余定理进行打包编码,并采用半同态加密算法,通过与服务端设备之间的消息交互进行隐私关键词查询,得到服务端设备返回的查询密文数据,并在解密和解码之后,从得到的解码数据中获得该多个关键词的查询结果,实现了一次性针对批量的多个关键词进行隐私查询,提高了查询效率,并且,基于半同态加密的方法实现隐私查询,降低了计算和通信开销。
下面结合附图,用具体实施例对本申请提供的方法及装置进行详细描述。
本申请实施例还提供了一种隐私关键词查询方法,其中客户端设备作为查询方,服务端设备作为被查询方,如图3所示,包括:
步骤301、客户端设备生成半同态加密算法的私钥sk和公钥pk,并向服务端设备发送公钥pk。
步骤302、客户端设备与服务端设备之间协商生成预设数量的素数,作为中国剩余定理的参数。
本步骤中,可以是客户端设备生成预设数量的素数,并向服务端设备发送生成的该预设数量的素数;
也可以是服务端设备生成预设数量的素数,并向客户端设备发送生成的该预设数量的素数。
本申请实施例中,该预设数量的素数,后续将用于客户端设备使用中国剩余定理(Chinese Remainder Theorem,CRT)对待查询的关键词进行打包编码,以及服务端设备针对被查询数据生成多项式函数。
进一步的,为了提高后续查询中计算的准确性,以及数据安全性,该预设数量的素数的长度,可以大于服务端设备持有的被查询数据的数据位数的指定位数,具体的,该指定位数可以为统计安全参数,例如,统计安全参数为40bit,被查询数据的数据位数为L,则素数的长度可以为(L+40)bit。
其中,素数的长度越大,计算的准确性和安全性越高,但是计算量也越大,在实际应用中,可以基于实际应用的需求进行灵活设置。
步骤303、将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于预设数量。
在一个示例中,假设待查询的多个关键词的数量为u,预设数量为8,则按照每组包含8个关键词进行分组后,得到v组关键词,前v-1组关键词包含的关键词的数量均为8,第v组关键词包含的关键词的数量可能小于8,也可能等于8。
步骤304、客户端设备针对每组关键词,将预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对v组关键词的共计v个明文数据。
例如,在上述示例中,一组关键词包括关键词x1-x8共计8个关键词,8个素数包括素数p1-p8,针对该组关键词使用中国剩余定理计算该组关键词包含的预设数量的关键词的同余数据,结果满足如下关系式:
y=x1(mod p1)
y=x2(mod p2)
......
y=x8(mod p8)
其中,以y=x1(mod p1)为例,其表示y与x1对p1同余。
本申请实施例中,针对v组关键词得到共计v个同余数据,即v个明文数据,分别记作y1-yv,也可以表示为yi,i取值为从1至v的整数。
其中,v个明文数据都是模M范围内的一个数,即0至M-1范围内的一个数,模数M为预设数量的素数的乘积,即M= p1×p2×... × p8。
步骤305、客户端设备针对每个明文数据,使用公钥pk计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据。
其中,m或n的数值,可以为客户端设备从服务端设备获知的。
本步骤中,针对第i组关键词对应的明文数据yi,该明文数据yi的1至m次幂可以表示为:yi 1-yi m,即yi 1,yi 2,...,yi m;
该明文数据yi的1至m次幂对M取模的结果可以表示为:yi 1mod M -yi mmod M,即yi 1mod M,yi 2mod M,...,yi mmod M,为后续描述方便,将yi 1mod M -yi mmod M,即yi 1mod M,yi 2mod M,...,yi mmod M,表示为:Yi 1-Yi m,即Yi 1,Yi 2,...,Yi m;
使用公钥pk对取模的结果进行加密,得到的m个密文数据可以表示为:
[Yi 1] –[Yi m],即[Yi 1],[Yi 2],...,[Yi m],i取值为从1至v的整数。
本申请实施例中,按照上述示例,一组关键词包括关键词x1-x8共计8个关键词,8个素数包括素数p1-p8,计算出的对应的明文数据为y,则y的i次幂对M取模,满足如下关系式:
yi=x1 imod p1
yi=x2 imod p2
......
yi=x8 imod p8
也就是说,yimod M实际上就是满足x1 imod p1、x2 imod p2、...、x8 imod p8的数,所以,本申请实施例中,通过本步骤,针对每个明文数据,对该明文数据的1至m次幂对M取模,并使用公钥pk对取模结果进行加密,得到该明文数据的1至m次幂对M取模的密文数据。
步骤306、客户端设备向服务端设备发送v×m个密文数据。
步骤307、服务端设备将持有的被查询数据划分为多份数据。
服务端设备持有n条被查询数据,每条被查询数据包括关键词和对应的数据,即是一个键值对,可以表示为(x1,d1),(x2,d2),…,(xn,dn),其中,x1-xn表示n个关键词,d1-dn表示对应的数据。
将n条被查询数据按照每份数据包括m条被查询数据进行划分,其中,m为取其平方最接近n的整数,则n=(a-1)×m+b,其中,0<b≤m,即将n条被查询数据划分为a份,且前a-1份数据包括m条被查询数据,第a份数据包括b条被查询数据,表示如下:
第1份数据D1:(x1,d1),(x2,d2),…,(xm,dm);
第2份数据D2:(xm+1,dm+1),(xm+2,dm+2),…,(x2m,d2m);
……
第a份数据Da:
(x(a-1)×m+1,d(a-1)×m+1),(x(a-1)×m+2,d(a-1)×m+2),…,(xn,dn)。
步骤308、服务端设备针对每份数据生成第一种多项式函数和第二种多项式函数,其中,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据。
在上述示例中,将n条被查询数据划分为a份数据,针对第j份数据,生成的第一种多项式函数为Fj(x),生成的第二种多项式函数为Gj(x),第一种多项式函数和第二种多项式函数的最高次幂均不大于该份数据包含的被查询数据的数量,最高次幂也可以是该份数据包含的被查询数据的数量,例如,包含的被查询数据的数量为m,则第一种多项式函数和第二种多项式函数的最高次幂均不大于m,最高次幂也可以是为m,包含的被查询数据的数量为d(如第a份数据,d小于等于m),则第一种多项式函数和第二种多项式函数的最高次幂均不大于d,最高次幂也可以是为d,但有些多项式系数可以为0,其中,j取值为1-a的整数,即共计得到a个第一种多项式函数,以及a个第二种多项式函数;
第一种多项式函数Fj(x)满足如下关系式:
Fj(xk)=0,其中k=(j-1)×m+1,(j-1)×m+2,…,即xk取遍Dj的所有被查询数据的关键词;
第二种多项式函数Gj(x)满足如下关系式:
Gj(xk)=dk,其中k=(j-1)×m+1,(j-1)×m+2,…,即xk取遍Dj的所有被查询数据的关键词,dk是对应关键词xk的数据;
对于xk,其中k的取值为1-n的整数。
本申请实施例中,生成第一种多项式函数和第二种多项式函数,主要是计算多项式系数,本步骤中,针对每份数据,可以以M作为模数进行插值计算,得到该份数据对应的第一种多项式函数和第二种多项式函数的系数,即在模M的意义下进行插值计算,得到多项式系数,在模M的意义下可以理解为所有运算最后都会对M取模,结果位于0至M-1的范围内。
关于本步骤308中生成第一种多项式函数和第二种多项式函数,如果预设数量的素数为服务端设备生成的,则服务端可以预先生成第一种多项式函数和第二种多项式函数,针对不同的客户端设备的隐私关键词查询的请求,均可以使用预先生成的第一种多项式函数和第二种多项式函数。
上述步骤307-308,与上述步骤303-306之间,没有严格的先后顺序。
步骤309、服务端设备在接收到v×m个密文数据后,该v×m个密文数据对应v个明文数据,即每个明文数据对应m个密文数据,针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,可以是半同态加密算法的同态加法和同态数乘运算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,可以是半同态加密算法的同态加法和同态数乘运算,得到该明文数据对应的a个第二半同态密文数据。
对于一个最高次幂不超过m的多项式函数f(x),若已知Y,Y2,…,Ym的密文[Y],[Y2],…,[Ym],便可以使用公钥并采用半同态加密算法的同态加法和同态数乘运算,计算多项式函数f(x)=c0+c1x+c2x2+…+cmxm在x=Y处的函数值,结果为密文[f(Y)],因为f(x)的各多项式系数为已知的乘数,分别数乘求和即可得到密文的结果。
本申请实施例中,服务端设备接收到v×m个密文数据,可以看作是v组密文数据,每组密文数据包括m个密文数据,v组密文数据与v个明文数据是一一对应的,即也与v组关键词是一一对应的。
针对第i个明文数据,对应的第i组密文数据为[Yi 1],[Yi 2],...,[Yi m],将该组密文数据作为第一种多项式函数Fj(x)的输入,得到半同态密文数据Fj(Yi),为描述方便,将其称作第一半同态密文数据Fj(Yi),j的取值为1-a的整数,所以,共计得到a个第一半同态密文数据Fj(Yi),即[F1(Yi)] , [F2(Yi)], ...,[Fa(Yi)]。
将该组密文数据作为第二种多项式函数Gj(x)的输入,得到半同态密文数据Gj(Yi),为描述方便,将其称作第二半同态密文数据Gj(Yi),j的取值为1-a的整数,所以,共计得到a个第二半同态密文数据Gj(Yi),即[G1(Yi)] , [G2(Yi)], ... , [Ga(Yi)]。
步骤310、服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,随机数是模M取随机得到的。
随机数是模M取随机得到的,可以理解为该随机数在0至M-1的范围内,且取0至M-1的范围内的各整数的概率是相同的。
本步骤中,针对第i个明文数据和第j份数据,使用公钥pk采用同态数乘和同态加法在密文上,采用如下公式计算作为查询密文数据的上述和值:
rj,i×Fj(x) + Gj(x),x取值为Yi;
针对第i个明文数据,j分别取值为1-a的整数,即得到[r1,i×F1(Yi) + G1(Yi)],[r2,i×F2(Yi) + G2(Yi)],...,[ra,i×Fa(Yi) + Ga(Yi)],共计a个查询密文数据;
i分别取值为1-v的整数,则共计得到a×v个查询密文数据。
步骤311、服务端设备向客户端设备发送a×v个查询密文数据。
步骤312、客户端设备使用私钥sk对a×v个查询密文数据进行解密,得到a×v个查询解密结果。
a×v个查询解密结果可以表示为zj,i,j取值为1-a的整数,i取值为1-v的整数。
步骤313、客户端设备针对每个查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,该各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应。
本步骤中,每个查询解密结果均对应1个明文数据,即查询解密结果zj,i与第i个明文数据yi对应,基于对应的该明文数据yi,使用中国剩余定理对该密文解密结果zj,i进行解码,所得到的各解码数据的数量,与第i个明文数据对应的第i组关键词包含的关键词的数量相同,所以,该各解码数据与对应的该组关键词包含的各关键词一一对应。
1个明文数据对应的密文解密结果共计a个,对于该明文数据对应的一组关键词所包含的每个待查询的关键词,在针对每个密文解密结果进行解码得到的各解码数据中,均具有1个解码数据与该关键词对应,则对a个密文解密结果进行解码得到的全部解码数据中,将具有a个解码数据与该关键词对应,针对u个待查询的关键词,将共计得到u×a个解码数据。
按照上述示例,预设数量为8,以1个明文数据对应的1组关键词包括8个关键词为例,8个素数包括素数p1-p8,该明文数据对应的密文解密结果为z,则使用中国剩余定理对该密文解密结果z进行解码,可以采用如下公式进行计算:
z1=z mod p1
z2=z mod p2
......
z8=z mod p8
得到的z1、z2、...、z8即为解码得到的解码数据,其中,以z1=z mod p1为例,z1是z对p1取模的结果。
步骤314、客户端设备从各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
按照上述步骤313,针对每个待查询的关键词,将得到a个解码数据,相应的,可以从该a个解码数据中,将数据位数与被查询数据(即由相对应的关键词和数据组成的键值对中的数据)的数据位数一致的解码数据,作为该关键词的查询结果,如果不存在数据位数一致的解码数据,则表示从服务端设备持有的被查询数据中未查询到与该关键词对应的数据。
例如,如果待查询的该关键词对应的a个解码数据,其数据位数均与素数pi一致,即大于被查询数据指定位数(如上述示例中的40bit),则表示未查询到与该关键词对应的数据。
本申请实施例中,针对一个待查询的关键词,如果存在数据位数一致的解码数据,则仅存在一个数据位数一致的解码数据,不会存在多个,即仅能查询到一个该待查询的关键词对应的数据。
基于同一发明构思,根据本申请上述实施例提供的应用于客户端设备的隐私关键词查询方法,相应地,本申请另一实施例还提供了一种隐私关键词查询装置,应用于客户端设备,其结构示意图如图4所示,具体包括:
关键词分组模块41,用于将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
关键词编码模块42,用于针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
明文数据加密模块43,用于针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
密文数据发送模块44,用于向服务端设备发送所述v×m个密文数据,使得所述服务端设备针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据,还使得所述服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的,并向所述客户端设备发送所述a×v个查询密文数据;
查询密文数据解密模块45,用于使用所述私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果;
数据解码模块46,用于针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应;
查询结果确定模块47,用于从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
进一步的,所述预设数量的素数的长度大于所述服务端设备持有的被查询数据的数据位数的指定位数。
基于同一发明构思,根据本申请上述实施例提供的应用于客户端设备的隐私关键词查询方法,相应地,本申请另一实施例还提供了一种隐私关键词查询装置,应用于服务端设备,其结构示意图如图5所示,具体包括:
密文数据接收模块51,用于接收客户端设备发送的v×m个密文数据,所述v×m个密文数据为所述客户端设备采用如下步骤生成的:
所述客户端设备将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
所述客户端设备针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
所述客户端设备针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
密文数据计算模块52,用于针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据;
半同态密文数据计算模块53,用于针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的;
查询密文数据发送模块54,用于向所述客户端设备发送所述a×v个查询密文数据,使得所述客户端设备使用所述私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果,并针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应,以及从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
进一步的,所述预设数量的素数的长度大于所述服务端设备持有的被查询数据的数据位数的指定位数。
进一步的,密文数据计算模块52,还用于针对每份数据,以M作为模数进行插值计算,得到该份数据对应的第一种多项式函数和第二种多项式函数的系数。
上述各模块的功能可对应于图1至图3所示流程中的相应处理步骤,在此不再赘述。
本申请的实施例所提供的隐私关键词查询装置可通过计算机程序实现。本领域技术人员应该能够理解,上述的模块划分方式仅是众多模块划分方式中的一种,如果划分为其他模块或不划分模块,只要隐私关键词查询装置具有上述功能,都应该在本申请的保护范围之内。
本申请实施例提供一种电子设备,如图6所示,包括处理器61和机器可读存储介质62,所述机器可读存储介质62存储有能够被所述处理器61执行的机器可执行指令,所述处理器61被所述机器可执行指令促使:实现上述任一应用于客户端设备的隐私关键词查询方法,或者,实现上述任一应用于服务端设备的隐私关键词查询方法。
本申请实施例提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一应用于客户端设备的隐私关键词查询方法,或者,实现上述任一应用于服务端设备的隐私关键词查询方法。
本申请实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一应用于客户端设备的隐私关键词查询方法,或者,执行上述任一应用于服务端设备的隐私关键词查询方法。
上述电子设备中的机器可读存储介质可以包括随机存取存储器(Random AccessMemory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质,计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种隐私关键词查询方法,其特征在于,应用于客户端设备,所述方法,包括:
将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
向服务端设备发送所述v×m个密文数据,使得所述服务端设备针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据,还使得所述服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的,并向所述客户端设备发送所述a×v个查询密文数据;
使用私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果;
针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应;
从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
2.如权利要求1所述的方法,其特征在于,所述预设数量的素数的长度大于所述服务端设备持有的被查询数据的数据位数的指定位数。
3.一种隐私关键词查询方法,其特征在于,应用于服务端设备,所述方法,包括:
接收客户端设备发送的v×m个密文数据,所述v×m个密文数据为所述客户端设备采用如下步骤生成的:
所述客户端设备将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
所述客户端设备针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
所述客户端设备针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
所述服务端设备针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据;
所述服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的;
向所述客户端设备发送所述a×v个查询密文数据,使得所述客户端设备使用私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果,并针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应,以及从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
4.如权利要求3所述的方法,其特征在于,所述预设数量的素数的长度大于所述服务端设备持有的被查询数据的数据位数的指定位数。
5.如权利要求3所述的方法,其特征在于,在所述针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据之前,还包括:
针对每份数据,以M作为模数进行插值计算,得到该份数据对应的第一种多项式函数和第二种多项式函数的系数。
6.一种隐私关键词查询装置,其特征在于,应用于客户端设备,所述装置,包括:
关键词分组模块,用于将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
关键词编码模块,用于针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
明文数据加密模块,用于针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
密文数据发送模块,用于向服务端设备发送所述v×m个密文数据,使得所述服务端设备针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据,还使得所述服务端设备针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的,并向所述客户端设备发送所述a×v个查询密文数据;
查询密文数据解密模块,用于使用私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果;
数据解码模块,用于针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应;
查询结果确定模块,用于从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
7.如权利要求6所述的装置,其特征在于,所述预设数量的素数的长度大于所述服务端设备持有的被查询数据的数据位数的指定位数。
8.一种隐私关键词查询装置,其特征在于,应用于服务端设备,所述装置,包括:
密文数据接收模块,用于接收客户端设备发送的v×m个密文数据,所述v×m个密文数据为所述客户端设备采用如下步骤生成的:
所述客户端设备将待查询的多个关键词按照每组包含预设数量个关键词进行分组,得到v组关键词,且第v组关键词包含的关键词的数量小于等于所述预设数量;
所述客户端设备针对每组关键词,将所述预设数量的素数作为中国剩余定理的参数,使用中国剩余定理计算该组关键词包含的所述预设数量的关键词的同余数据,作为针对该组关键词打包编码的明文数据,得到针对所述v组关键词的共计v个明文数据;
所述客户端设备针对每个明文数据,使用公钥计算该明文数据的1至m次幂对M取模的密文数据,得到针对v个明文数据的共计v×m个密文数据,其中,M为所述预设数量的素数的乘积,m为取其平方最接近n的整数,n为服务端设备持有的被查询数据的数量,每条被查询数据包括关键词和对应的数据;
密文数据计算模块,用于针对每个明文数据,将该明文数据对应的m个密文数据作为a个第一种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第一半同态密文数据,以及将该明文数据对应的m个密文数据作为a个第二种多项式函数的输入,使用公钥进行半同态加密计算,得到该明文数据对应的a个第二半同态密文数据,所述a为按照每份数据包括m条数据将n条被查询数据进行划分的份数,a个所述第一种多项式函数和a个所述第二种多项式函数为分别针对每份数据生成的,将一份数据中的关键词作为对应的第一种多项式函数的输入进行计算,结果为0,将一份数据中的关键词作为对应的第二种多项式函数的输入进行计算,结果为该份数据中的关键词对应的数据;
半同态密文数据计算模块,用于针对每份数据和每个明文数据,使用公钥采用同态数乘和同态加法在密文上,计算该份数据和该明文数据对应的随机数乘以该明文数据和该份数据对应的第一半同态密文数据的乘积,与该明文数据和该份数据对应的第二半同态密文数据的和值,作为查询密文数据,共计得到a×v个查询密文数据,所述随机数是模M取随机得到的;
查询密文数据发送模块,用于向所述客户端设备发送所述a×v个查询密文数据,使得所述客户端设备使用私钥对所述a×v个查询密文数据进行解密,得到a×v个查询解密结果,并针对每个所述查询解密结果,基于该查询解密结果对应的明文数据,使用中国剩余定理进行解码,得到各解码数据,所述各解码数据与该查询解密结果对应的明文数据对应的一组关键词所包含的各关键词一一对应,以及从所述各解码数据中,将数据位数与被查询数据的数据位数一致的解码数据,作为对应的关键词的查询结果。
9.一种电子设备,其特征在于,包括处理器和机器可读存储介质,所述机器可读存储介质存储有能够被所述处理器执行的机器可执行指令,所述处理器被所述机器可执行指令促使:实现权利要求1-2任一所述的方法,或者,实现权利要求3-5任一所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-2任一所述的方法,或者,实现权利要求3-5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310269239.8A CN115982424B (zh) | 2023-03-15 | 2023-03-15 | 一种隐私关键词查询方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310269239.8A CN115982424B (zh) | 2023-03-15 | 2023-03-15 | 一种隐私关键词查询方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115982424A true CN115982424A (zh) | 2023-04-18 |
CN115982424B CN115982424B (zh) | 2023-05-12 |
Family
ID=85966877
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310269239.8A Active CN115982424B (zh) | 2023-03-15 | 2023-03-15 | 一种隐私关键词查询方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115982424B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116208316A (zh) * | 2023-04-27 | 2023-06-02 | 蓝象智联(杭州)科技有限公司 | 节约存储空间的半同态加密方法、装置及存储介质 |
CN116303551A (zh) * | 2023-05-16 | 2023-06-23 | 北京信安世纪科技股份有限公司 | 隐匿查询方法及设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080294909A1 (en) * | 2005-03-01 | 2008-11-27 | The Regents Of The University Of California | Method for Private Keyword Search on Streaming Data |
CN112667674A (zh) * | 2021-03-12 | 2021-04-16 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN114124343A (zh) * | 2020-11-16 | 2022-03-01 | 神州融安数字科技(北京)有限公司 | 保护隐私的风险评分信息查询方法、装置、***及设备 |
CN114428972A (zh) * | 2022-01-21 | 2022-05-03 | 深圳市洞见智慧科技有限公司 | 支持外包计算的隐私保护查询方法、装置及相关设备 |
CN114756886A (zh) * | 2022-06-13 | 2022-07-15 | 华控清交信息科技(北京)有限公司 | 一种匿踪查询方法、装置和用于匿踪查询的装置 |
CN114943038A (zh) * | 2022-07-26 | 2022-08-26 | 阿里健康科技(杭州)有限公司 | 查询方法、服务器、查询***、计算机设备及存储介质 |
CN115186145A (zh) * | 2022-09-09 | 2022-10-14 | 华控清交信息科技(北京)有限公司 | 一种隐私关键词查询方法、装置及*** |
-
2023
- 2023-03-15 CN CN202310269239.8A patent/CN115982424B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080294909A1 (en) * | 2005-03-01 | 2008-11-27 | The Regents Of The University Of California | Method for Private Keyword Search on Streaming Data |
CN114124343A (zh) * | 2020-11-16 | 2022-03-01 | 神州融安数字科技(北京)有限公司 | 保护隐私的风险评分信息查询方法、装置、***及设备 |
CN112667674A (zh) * | 2021-03-12 | 2021-04-16 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和用于数据处理的装置 |
CN114428972A (zh) * | 2022-01-21 | 2022-05-03 | 深圳市洞见智慧科技有限公司 | 支持外包计算的隐私保护查询方法、装置及相关设备 |
CN114756886A (zh) * | 2022-06-13 | 2022-07-15 | 华控清交信息科技(北京)有限公司 | 一种匿踪查询方法、装置和用于匿踪查询的装置 |
CN114943038A (zh) * | 2022-07-26 | 2022-08-26 | 阿里健康科技(杭州)有限公司 | 查询方法、服务器、查询***、计算机设备及存储介质 |
CN115186145A (zh) * | 2022-09-09 | 2022-10-14 | 华控清交信息科技(北京)有限公司 | 一种隐私关键词查询方法、装置及*** |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116208316A (zh) * | 2023-04-27 | 2023-06-02 | 蓝象智联(杭州)科技有限公司 | 节约存储空间的半同态加密方法、装置及存储介质 |
CN116303551A (zh) * | 2023-05-16 | 2023-06-23 | 北京信安世纪科技股份有限公司 | 隐匿查询方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN115982424B (zh) | 2023-05-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11159305B2 (en) | Homomorphic data decryption method and apparatus for implementing privacy protection | |
TWI734368B (zh) | 實現隱私保護的數據同態加解密方法及裝置 | |
JP7486529B2 (ja) | プライベート情報検索に応用される準同型暗号化方法 | |
CN106953722B (zh) | 一种全同态加密的密文查询方法和*** | |
Gaborit et al. | Identity-based encryption from codes with rank metric | |
Wang et al. | Secure optimization computation outsourcing in cloud computing: A case study of linear programming | |
Saarinen | HILA5: On reliability, reconciliation, and error correction for Ring-LWE encryption | |
CN115982424B (zh) | 一种隐私关键词查询方法、装置及电子设备 | |
CN106850221B (zh) | 信息加密、解密方法及装置 | |
KR101861089B1 (ko) | 근사 복소수 연산을 지원하는 복수 개의 메시지의 동형 암호화 방법 | |
US20150381349A1 (en) | Privacy-preserving ridge regression using masks | |
CN115186145B (zh) | 一种隐私关键词查询方法、装置及*** | |
Zhang et al. | Efficient and privacy-preserving min and $ k $ th min computations in mobile sensing systems | |
CN112131227A (zh) | 一种基于联盟链的数据查询方法及装置 | |
CN114696990B (zh) | 基于全同态加密的多方计算方法、***及相关设备 | |
CN115834200A (zh) | 基于区块链的属性基可搜索加密数据共享方法 | |
CN114175569A (zh) | 用于在aes计数器模式加密中对用拟群运算加密的整数进行相加和比较的***和方法 | |
Sharma | Fully homomorphic encryption scheme with symmetric keys | |
Feng et al. | Efficient and verifiable outsourcing scheme of sequence comparisons | |
Bai et al. | Privacy‐Preserving Oriented Floating‐Point Number Fully Homomorphic Encryption Scheme | |
CN113364577B (zh) | 一种oprf协议的实现方法、装置及电子设备 | |
Babenko et al. | Euclidean division method for the homomorphic scheme ckks | |
CN115865302A (zh) | 一种具有隐私保护属性的多方矩阵乘法计算方法 | |
Kim et al. | Search condition-hiding query evaluation on encrypted databases | |
CN113645022A (zh) | 一种确定隐私集合交集方法、装置、电子设备及存储介质 |
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 |