支持富于表达关键字搜索的公钥加密方法及装置与流程

文档序号:22396790发布日期:2020-09-29 18:06阅读:129来源:国知局
支持富于表达关键字搜索的公钥加密方法及装置与流程

本发明涉及信息安全中的数据加密技术领域,尤其涉及一种支持富于表达关键字搜索的公钥加密方法、装置、计算机设备和计算机可读存储介质。



背景技术:

带关键字搜索的加密技术使得用户能够在不解密的前提下检索密文中是否包含有特定的关键字信息,同时不会泄露相关的明文和被搜索的关键字信息。boneh等人在2003年最先提出了带关键字搜索的公钥加密(publickeyencryptionwithkeywordsearch)方案。带关键字搜索的公钥加密主要包含三个实体,即发送者,接收者以及密文存储服务器。发送者首先使用传统的公钥加密方法来加密需要发送的数据,并附上使用带关键字搜索的公钥加密方法生成与数据相关的关键字的密文形成可搜索的数据密文,然后将可搜索的数据密文发送给密文存储服务器。为了检索密文存储服务器中数据密文,接收者首先生成一个包含需要搜索的关键字陷门,然后将之发送给服务器。服务器接收到关键字陷门后,通过执行一种测试算法来查找与关键字陷门匹配的关键字密文。最后服务器将所有匹配的数据密文返回给接收者。在上述过程中,服务器对数据密文的内容以及被搜索关键词的信息一无所知。

一个数据密文通常包含多个关键字。单关键字搜索仅允许用户每次发送一个关键字的搜索请求,这极不符合现实生活中多词搜索的应用需求。特别是当单关键字无法精确定位到用户所想要的数据密文时,就需要用户使用多个不同关键字进行多轮搜索;或者是经过一轮密文搜索后,对返回结果解密,然后在明文上进行搜索来寻找目标文件。这不仅增加了通信的代价,也降低点了搜索的效率。针对这样的问题,park等人提出了支持连接关键词搜索的带关键字搜索的公钥加密方法来实现多关键字搜索。但是连接关键字搜索并不具有足够的表达能力,因为这种搜索只能表达出关键字的逻辑“与”关系。如果用户想检索满足关键字的逻辑“或”的密文就必须进行多次查询,因而传统方案存在搜索效率低的问题。



技术实现要素:

针对以上问题,本发明提出一种支持富于表达关键字搜索的公钥加密方法、装置、计算机设备和计算机可读存储介质。

为实现本发明的目的,提供一种支持富于表达关键字搜索的公钥加密方法,包括如下步骤:

s10,接收者根据安全参数,生成接收公钥和接收私钥,根据接收公钥、接收私钥和待搜索关键字的布尔表达式,生成关键字陷门,并将接收公钥发送至发送者,将接收公钥和关键字陷门分别发送至密文存储服务器;

s20,发送者根据接收公钥和关键字集合生成关键字密文,将关键字密文发送至密文存储服务器;

s30,密文存储服务器根据接收公钥、关键字密文和关键字陷门,测试关键字密文中的关键字集合是否满足关键字陷门中的关键字布尔表达式。

在一个实施例中,接收者根据安全参数,生成接收公钥和接收私钥包括:

s11,接收者根据选定的安全参数k∈z+确定一个k比特的大素数q,生成两个q阶循环群g和gt,以及定义在群g和群gt上的双线性对e:g×g→gt,其中,z+是正整数集合;双线性对e:g×g→gt是笛卡尔积g×g到群gt的映射,即双线性对e:g×g→gt是指函数z=e(x,y),其中x,y∈g为自变量,z∈gt为因变量;

s12,接收者从群g中选择一个随机生成元g和三个随机元素u、h、w并选择一个随机整数α∈zp,设置sk=α作为接收私钥,并生成接收公钥pk=(q,g,gt,e,g,u,h,w,e(g,g)α)。

在一个实施例中,接收者根据接收公钥、接收私钥和待搜索关键字的布尔表达式,生成关键字陷门包括:

s13,接收者使用接收公钥pk、接收私钥sk和待搜索关键字的布尔表达式p,生成待搜索关键字布尔表达式p的访问结构as;

s14,接收者产生访问结构as的线性秘密分享方案ls及一个随机向量其中y2,...,yn∈zp,计算分享向量其中ma是线性秘密分享方案ls中的分享生成矩阵;

s15,接收者选择l个随机数t1,t2,...,tl∈zp,对每个τ∈[l]计算其中[l]={1,2,…,l};然后将tp=(ma,{kτ,0,kτ,1,kτ,2}τ∈[l])作为关键字陷门。

在一个实施例中,发送者根据接收公钥和关键字集合生成关键字密文,将关键字密文发送至密文存储服务器包括:

发送者选择k+1个随机数(s,r1,r2,...,rk)∈zp,根据接收公钥pk和关键字集合ws={w1,w2,...,wk},计算c=e(g,g)αs和c0=gs;对每个τ∈[k]计算其中[k]={1,2,…,k};将sews=(c,c0,{cτ,1,cτ,2}τ∈[k])作为关键字密文附加在数据密文上发送给密文存储服务器。

在一个实施例中,密文存储服务器根据接收公钥、关键字密文和关键字陷门,测试关键字密文中的关键字集合是否满足关键字陷门中的关键字布尔表达式包括:

s31,密文存储服务器收到关键字陷门tp=(ma,{kτ,0,kτ,1,kτ,2}τ∈[l])后,采用接收公

钥pk对关键字密文sews=(c,c0,{cτ,1,cτ,2}τ∈[k])进行测试;

s32,密文存储服务器根据关键字陷门中的分享生成矩阵ma产生满足对应访问结构as的所有最小子集i,将所有最小子集i构成集合ias;其中最小子集i满足存在数组ω使得∑i∈iωimai=(1,0,...,0),mai是矩阵ma的第i行,ωi是数组ω的第i个元素;

s33,密文存储服务器检查是否存在i∈ias使得关键字密文sews=(c,c0,{cτ,1,cτ,2}τ∈[k])满足等式如果存在i∈ias满足等式,测试成功,将相应的数据密文发送给接收者;否则,测试失败。

一种支持富于表达关键字搜索的公钥加密装置,包括设于接收者的第一生成模块、设于发送者的第二生成模块和设于密文存储服务器的测试模块:

所述第一生成模块用于根据安全参数,生成接收公钥和接收私钥,根据接收公钥、接收私钥和待搜索关键字的布尔表达式,生成关键字陷门,并将接收公钥发送至发送者,将接收公钥和关键字陷门分别发送至密文存储服务器;

所述第二生成模块用于根据接收公钥和关键字集合生成关键字密文,将关键字密文发送至密文存储服务器;

所述测试模块用于根据接收公钥、关键字密文和关键字陷门,测试关键字密文中的关键字集合是否满足关键字陷门中的关键字布尔表达式。

一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例的支持富于表达关键字搜索的公钥加密方法的步骤。

一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例的支持富于表达关键字搜索的公钥加密方法的步骤。

上述支持富于表达关键字搜索的公钥加密方法、装置、计算机设备和计算机可读存储介质,其中接收者根据安全参数,生成接收公钥和接收私钥,根据接收公钥、接收私钥和待搜索关键字的布尔表达式,生成关键字陷门,并将接收公钥发送至发送者,将接收公钥和关键字陷门分别发送至密文存储服务器,发送者根据接收公钥和关键字集合生成关键字密文,将关键字密文发送至密文存储服务器,密文存储服务器根据接收公钥、关键字密文和关键字陷门,测试关键字密文中的关键字集合是否满足关键字陷门中的关键字布尔表达式,将通过测试的数据密文发送给接收者,其可以同时支持多关键字密文和富于表达的关键字陷门的产生,因此具有比现有带关键字搜索的公钥加密方法更加高效的效率,此外,由于支持富于表达的关键字搜索,因此使得密文存储服务器难以从用户的搜索过程中推断出用户密文的相关信息,更加有效地保护了用户数据的隐私性。

附图说明

图1是一个实施例的支持富于表达关键字搜索的公钥加密方法流程图;

图2是另一个实施例的支持富于表达关键字搜索的公钥加密方法流程图;

图3是一个实施例的密码系统执行的操作流程图;

图4是一个实施例的支持富于表达关键字搜索的公钥加密装置结构示意图;

图5是一个实施例的计算机设备示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。

本申请提供的支持富于表达关键字搜索的公钥加密方法可基于双线性对实现,同时方法的构造要借助访问结构和线性秘密共享方案,下面先简要介绍它们基本定义和满足的性质。

双线性对:设g和gt是两个素数q阶乘法循环群,其中g是群g的生成元。假设群g和gt上的离散对数问题都是困难的。如果群g和gt上的一个映射e:g×g→gt满足下面的三个性质,则称该映射为有效的双线性对。其中,双线性对e:g×g→gt是笛卡尔积g×g到群gt的映射,即双线性对e:g×g→gt代表函数z=e(x,y),其中x,y∈g为自变量,z∈gt为因变量。

双线性对应满足以下三条性质:

(1)双线性.对任意的都有e(ga,gb)=e(g,g)ab

(2)非退化性.其中是群gt的单位元。

(3)可计算性.对于任意的存在一个有效的算法来计算e(ga,gb)。

其中,乘法循环群的概念为:设g为群,如果存在一个元素g∈g使得g={gk|k∈z},则称g为循环群,称g是g的生成元。若生成元g的阶为q(即q是使得g的幂等于群g的单位元的最小正整数),则称g为q阶循环群。此外,其中zq是指整数模q的剩余类,即zq={0,1,...,q-1}。

访问结构:设u是关键字全集,关键字集u上的访问结构as是u的非空子集的集合,即一个访问结构是单调的如果对于并且那么c∈as。

访问结构的线性秘密分享方案:设s∈as是访问结构as的授权集合,q是一个大素数,s∈zq是一个秘密。访问结构as的一个线性秘密分享方案满足下列条件:

(1)每个秘密s的分享份额都是zp上的一个向量;

(2)存在一个l行n列的分享生成矩阵和一个函数ρ,使得函数ρ将矩阵ma的每一行都映射到授权集合s中的一个关键字;

(3)若是一个向量,其中r2,...,rn∈zp,则是s的l个分享值;

(4)若maj表示矩阵ma的第j行,则与关键字ρ(j)相关。

根据以上描述,下面结构附图和实现例对本发明提出的支持富于表达关键字搜索的公钥加密方法作进一步说明,但并不作为对本发明的限定。

发明所述方法涉及的实体如下:

(1)发送者:密文发送实体,负责产生数据密文和关键字密文;

(2)密文存储服务器:负责存储系统中用户的数据密文,并负责使用用户提交的关键字陷门对密文数据进行检索;

(3)接收者:密文的接收实体,通过向密文存储服务器发送关键字陷门授权服务器检索其密文。

参考图1所示,图1为一个实施例的支持富于表达关键字搜索的公钥加密方法流程图,包括如下步骤:

s10,接收者根据安全参数,生成接收公钥和接收私钥,根据接收公钥、接收私钥和待搜索关键字的布尔表达式,生成关键字陷门,并将接收公钥发送至发送者,将接收公钥和关键字陷门分别发送至密文存储服务器。

在一个实施例中,接收者根据安全参数,生成接收公钥和接收私钥包括:

s11,接收者根据选定的安全参数k∈z+确定一个k比特的大素数q,生成两个q阶循环群g和gt,以及定义在群g和群gt上的双线性对e:g×g→gt,其中,z+是正整数集合;双线性对e:g×g→gt是笛卡尔积g×g到群gt的映射,即双线性对e:g×g→gt是指函数z=e(x,y),其中x,y∈g为自变量,z∈gt为因变量;

s12,接收者从群g中选择一个随机生成元g和三个随机元素u、h、w并选择一个随机整数α∈zp,设置sk=α作为接收私钥,并生成接收公钥pk=(q,g,gt,e,g,u,h,w,e(g,g)α)。

进一步地,接收者根据接收公钥、接收私钥和待搜索关键字的布尔表达式,生成关键字陷门包括:

s13,接收者使用接收公钥pk、接收私钥sk和待搜索关键字的布尔表达式p,生成待搜索关键字布尔表达式p的访问结构as;

s14,接收者产生访问结构as的线性秘密分享方案ls及一个随机向量其中y2,...,yn∈zp,计算分享向量其中ma是线性秘密分享方案ls中的分享生成矩阵;

s15,接收者选择l个随机数t1,t2,...,tl∈zp,对每个τ∈[l]计算其中[l]={1,2,…,l};然后将tp=(ma,{kτ,0,kτ,1,kτ,2}τ∈[l])作为关键字陷门。

s20,发送者根据接收公钥和关键字集合生成关键字密文,将关键字密文发送至密文存储服务器。

在一个实施例中,发送者根据接收公钥和关键字集合生成关键字密文,将关键字密文发送至密文存储服务器包括:

发送者选择k+1个随机数(s,r1,r2,...,rk)∈zp,根据接收公钥pk和关键字集合ws={w1,w2,...,wk},计算c=e(g,g)αs和c0=gs;对每个τ∈[k]计算其中[k]={1,2,…,k};将sews=(c,c0,{cτ,1,cτ,2}τ∈[k])作为关键字密文附加在数据密文上发送给密文存储服务器。

s30,密文存储服务器根据接收公钥、关键字密文和关键字陷门,测试关键字密文中的关键字集合是否满足关键字陷门中的关键字布尔表达式。

在一个实施例中,密文存储服务器根据接收公钥、关键字密文和关键字陷门,测试关键字密文中的关键字集合是否满足关键字陷门中的关键字布尔表达式包括:

s31,密文存储服务器收到关键字陷门tp=(ma,{kτ,0,kτ,1,kτ,2}τ∈[l])后,采用接收公

钥pk对关键字密文sews=(c,c0,{cτ,1,cτ,2}τ∈[k])进行测试;

s32,密文存储服务器根据关键字陷门中的分享生成矩阵ma产生满足对应访问结构as的所有最小子集i,将所有最小子集i构成集合ias;其中最小子集i满足存在数组ω使得∑i∈iωimai=(1,0,...,0),mai是矩阵ma的第i行,ωi是数组ω的第i个元素;

s33,密文存储服务器检查是否存在i∈ias使得关键字密文sews=(c,c0,{cτ,1,cτ,2}τ∈[k])满足等式如果存在i∈ias满足等式,测试成功,将相应的数据密文发送给接收者;否则,测试失败。

上述支持富于表达关键字搜索的公钥加密方法中,接收者根据安全参数,生成接收公钥和接收私钥,根据接收公钥、接收私钥和待搜索关键字的布尔表达式,生成关键字陷门,并将接收公钥发送至发送者,将接收公钥和关键字陷门分别发送至密文存储服务器,发送者根据接收公钥和关键字集合生成关键字密文,将关键字密文发送至密文存储服务器,密文存储服务器根据接收公钥、关键字密文和关键字陷门,测试关键字密文中的关键字集合是否满足关键字陷门中的关键字布尔表达式,将通过测试的数据密文发送给接收者,其同时支持多关键字密文和富于表达的关键字陷门的产生,因此具有比现有带关键字搜索的公钥加密方法更加高效的效率,此外,由于支持富于表达的关键字搜索,因此使得密文存储服务器难以从用户的搜索过程中推断出用户密文的相关信息,更加有效地保护了用户数据的隐私性。

在一个实施例中,上述支持富于表达关键字搜索的公钥加密方法也可以参考图2、图3所示,其步骤可以描述如下:

步骤a,根据安全参数生成用户的公钥(接收公钥)和私钥(接收私钥):具体步骤如下:

步骤1,接收者根据选定的安全参数k∈z+确定一个k比特的大素数q,生成两个q阶循环群g和gt,以及定义在群g和群gt上的双线性对e:g×g→gt,其中,z+是正整数集合;双线性对e:g×g→gt是笛卡尔积g×g到群gt的映射,即双线性对e:g×g→gt是指函数z=e(x,y),其中x,y∈g为自变量,z∈gt为因变量;

步骤2,接收者从群g中选择一个随机生成元g和三个随机元素u、h、w并选择一个随机整数α∈zp,设置sk=α作为自己的私钥;然后生成自己的公钥pk=(q,g,gt,e,g,u,h,w,e(g,g)α)。

步骤b,根据用户的公钥、用户的私钥和关键字的逻辑表达式生成关键字陷门,具体步骤如下:

步骤3,接收者使用自己的公钥pk、自己的私钥sk和待搜索关键字的布尔表达式p,生成待搜索关键字布尔表达式p的访问结构as;

步骤4,接收者产生访问结构as的线性秘密分享方案ls及一个随机向量其中y2,...,yn∈zp,计算分享向量其中ma是线性秘密分享方案ls中的分享生成矩阵;

步骤5,接收者选择l个随机数t1,t2,...,tl∈zp,对每个τ∈[l]计算其中[l]={1,2,…,l};然后将tp=(ma,{kτ,0,kτ,1,kτ,2}τ∈[l])作为关键字陷门发送给密文存储服务器。

步骤c,根据用户的公钥和关键字集合生成关键字密文,具体步骤如下:

步骤6,发送者选择k+1个随机数(s,r1,r2,...,rk)∈zp,计算c=e(g,g)αs和c0=gs;对每个τ∈[k]计算其中[l]={1,2,…,l};然后将sews=(c,c0,{cτ,1,cτ,2}τ∈[k])作为关键字密文附加在数据密文上发送给密文存储服务器。

步骤d,根据用户公钥、关键字密文和关键字陷门判断关键字陷门中的关键字集合是否满足关键字密文中的关键字逻辑表达式,具体步骤如下:

步骤7,密文存储服务器根据陷门tp=(ma,{kτ,0,kτ,1,kτ,2}τ∈[l])中的分享生成矩阵ma计算满足其对应访问结构as的最小子集的集合ias;

步骤8,密文存储服务器检查是否存在i∈ias使得关键字密文sews=(c,c0,{cτ,1,cτ,2}τ∈[k])满足等式其中,∑i∈iωimai=(1,0,...,0),mai是矩阵ma的第i行。如果存在i∈ias满足等式,测试成功,将相应的数据密文发送给接收者;否则,测试失败。

本实施例具有以下技术效果:

首先,由于同时支持多关键字密文和富于表达的关键字陷门的产生,因此具有比现有带关键字搜索的公钥加密方法更加高效的效率。

此外,由于支持富于表达的关键字搜索,因此使得服务器难以从用户的搜索过程中推断出用户密文的相关信息,更加有效地保护了用户数据的隐私性。

参考图4所示,图4为一个实施例的支持富于表达关键字搜索的公钥加密装置结构示意图,包括设于接收者的第一生成模块10、设于发送者的第二生成模块20和设于密文存储服务器的测试模块30:

所述第一生成模块10用于根据安全参数,生成接收公钥和接收私钥,根据接收公钥、接收私钥和待搜索关键字的布尔表达式,生成关键字陷门,并将接收公钥发送至发送者,将接收公钥和关键字陷门分别发送至密文存储服务器;

所述第二生成模块20用于根据接收公钥和关键字集合生成关键字密文,将关键字密文发送至密文存储服务器;

所述测试模块30用于根据接收公钥、关键字密文和关键字陷门,测试关键字密文中的关键字集合是否满足关键字陷门中的关键字布尔表达式。

关于支持富于表达关键字搜索的公钥加密装置的具体限定可以参见上文中对于支持富于表达关键字搜索的公钥加密方法的限定,在此不再赘述。上述支持富于表达关键字搜索的公钥加密装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,提供了一种计算机设备,其内部结构图可以如图5所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种支持富于表达关键字搜索的公钥加密方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。

本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

基于如上所述的示例,在一个实施例中还提供一种计算机设备,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现如上述各实施例中的任意一种支持富于表达关键字搜索的公钥加密方法。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性的计算机可读取存储介质中,如本发明实施例中,该程序可存储于计算机系统的存储介质中,并被该计算机系统中的至少一个处理器执行,以实现包括如上述支持富于表达关键字搜索的公钥加密方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

据此,在一个实施例中还提供一种计算机存储介质计算机可读存储介质,其上存储有计算机程序,其中,该程序被处理器执行时实现如上述各实施例中的任意一种支持富于表达关键字搜索的公钥加密方法。

以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

需要说明的是,本申请实施例所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序。应该理解“第一\第二\第三”区分的对象在适当情况下可以互换,以使这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。

本申请实施例的术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或模块的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或模块。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1