支持分层搜索的加密健康记录的获取方法和系统与流程

文档序号:15625029发布日期:2018-10-09 22:46阅读:261来源:国知局

本发明涉及信息安全技术领域,尤其涉及一种支持分层搜索的加密健康记录的获取方法和系统。



背景技术:

云计算时代,为了数据共享的便捷性及节省本地的管理成本开销,用户外包大量的数据到云计算平台,但是,这种外包方式可能会泄漏用户的数据信息。

基于公钥加密的关键字搜索能够有效保护用户存储在云平台的数据隐私,还能对密文进行搜索,以满足用户的需求并获取到相关的数据信息。但是,使用基于公钥加密的关键字搜索来保障数据隐私还存在一些问题,比如,搜索级别的问题。针对同一个关键字,我们期望某公司董事长能搜索到关于该关键字的所有文档,而某一部门的部长则只能搜索到与该部门相关的文档。然而,目前市场上缺少针对用户的搜索级别,返回不同搜索结果的技术方案。



技术实现要素:

本发明的主要目的在于提供一种支持分层搜索的公钥加密方法和系统,可以解决市场上缺少针对用户的搜索级别,返回不同搜索结果的技术方案的技术问题。

为实现上述目的,本发明第一方面提供一种支持分层搜索的加密健康记录的获取方法,所述方法包括:

用户客户端向服务器发送健康记录的搜索请求,并接收所述服务器发送的搜索权限控制密文,所述搜索权限控制密文包括由数据属主客户端根据所述健康记录划分的访问等级构造的访问策略树;

所述用户客户端根据预设递归算法,利用用户属性集与所述访问策略树进行访问权限验证,得到满足所述用户属性集的访问权限验证结果,所述用户属性集为预先设定的全局属性集中的元素集合;

所述用户客户端获取用户输入的关键词,利用所述关键词及所述访问权限验证结果生成陷门并将所述陷门发送给所述服务器;

所述用户客户端接收所述服务器反馈的基于所述陷门和关键词密文匹配生成的匹配结果,根据所述匹配结果生成标识符并发送给所述服务器,获取所述服务器基于所述标识符匹配的加密健康记录,所述关键词密文是由所述数据属主客户端基于所述关键词对应的二进制长度构造的加密二值树得到的。

为实现上述目的,本发明第二方面提供一种支持分层搜索的加密健康记录的获取系统,所述系统包括:

用户客户端,用于向服务器发送健康记录的搜索请求,并接收所述服务器发送的搜索权限控制密文,所述搜索权限控制密文包括由数据属主客户端根据所述健康记录划分的访问等级构造的访问策略树;

所述用户客户端,还用于根据预设递归算法,利用用户属性集与所述访问策略树进行访问权限验证,得到满足所述用户属性集的访问权限验证结果,所述用户属性集为预先设定的全局属性集中的元素集合;

所述用户客户端,还用于获取用户输入的关键词,利用所述关键词及所述访问权限验证结果生成陷门并将所述陷门发送给所述服务器;

所述用户客户端,还用于接收所述服务器反馈的基于所述陷门和关键词密文匹配生成的匹配结果,根据所述匹配结果生成标识符并发送给所述服务器,获取所述服务器基于所述标识符匹配的加密健康记录,所述关键词密文是由所述数据属主客户端基于所述关键词对应的二进制长度构造的加密二值树得到的。

本发明提供一种支持分层搜索的加密健康记录的获取方法和系统。通过向服务器发送健康记录的搜索请求,并接收服务器发送的搜索权限控制密文,搜索权限控制密文包括由数据属主根据健康记录划分的访问等级构造的访问策略树。又由于根据预设递归算法,利用用户属性集与访问策略树进行访问权限验证,得到满足用户属性集的访问权限验证结果,即得到符合用户属性集的访问等级。因此,基于该访问权限验证结果进行一系列的步骤后,得到的标识符是与用户的访问等级相匹配的,因此,对于不同的用户,得到的加密健康记录是与其访问等级相关的,有效的针对用户的搜索级别返回不同的搜索结果,保障了数据的隐私性。

附图说明

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

图1为本发明第一实施例所提供的一种支持分层搜索的加密健康记录的获取方法的流程示意图;

图2为本发明第一实施例中步骤101之前的追加步骤的流程示意图;

图3为本发明第一实施例中步骤103的细化步骤的流程示意图;

图4为本发明第一实施例中步骤104的细化步骤的流程示意图;

图5为本发明第二实施例所提供的一种支持分层搜索的加密健康记录的获取系统的结构示意图。

具体实施方式

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而非全部实施例。基于本发明中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

由于现有技术中存在市场上缺少针对用户的搜索级别,返回不同搜索结果的技术方案的技术问题。

为了解决上述技术问题,本发明提出一种支持分层搜索的加密健康记录的获取方法和系统。通过向服务器发送健康记录的搜索请求,并接收服务器发送的搜索权限控制密文,搜索权限控制密文包括由数据属主根据健康记录划分的访问等级构造的访问策略树。又由于根据预设递归算法,利用用户属性集与访问策略树进行访问权限验证,得到满足用户属性集的访问权限验证结果,即得到符合用户属性集的访问等级。因此,基于该访问权限验证结果进行一系列的步骤后,得到的标识符是与用户的访问等级相匹配的,因此,对于不同的用户,得到的加密健康记录是与其访问等级相关的,有效的针对用户的搜索级别返回不同的搜索结果,保障了数据的隐私性。

请参阅图1,为本发明第一实施例所提供的一种支持分层搜索的加密健康记录的获取方法的流程示意图。具体的:

步骤101:用户客户端向服务器发送健康记录的搜索请求,并接收服务器发送的搜索权限控制密文,搜索权限控制密文包括由数据属主客户端根据健康记录划分的访问等级构造的访问策略树;

需要说明的是,本支持分层搜索的加密健康记录的获取方法可以基于移动医疗网络。用户客户端向服务器发送健康记录的搜索请求时,服务器会发送搜索权限控制密文,该搜索权限控制密文包括数据属主客户端根据健康记录划分的访问等级构造的访问策略树。进一步的,请参阅图2,为本发明第一实施例中步骤101之前的追加步骤的流程示意图。具体的:

步骤201:第三方公证客户端获取第三方公证客体输入的安全参数和全局属性集,生成系统公钥和主密钥,并根据系统公钥和主密钥以及用户属性集生成用户密钥;

步骤202:数据属主客户端利用对称加密算法对上传的健康记录进行加密,并利用公钥加密算法对从健康记录中提取到的关键词建立索引密文,索引密文包括搜索权限控制密文和关键词密文。

需要说明的是,第三方公证客体包括专业的检测机构、监督机构等,数据属主包括健康记录的持有者等。具体的:

预先建立全局属性集n={a1,a2,…,an},表示系统有n个属性,预先设置一个阶为素数p、生成元为g的双线性群g0,建立e:g0×g0→gt的双线性映射e,并建立系统集合zp={0,1,2,…,p-1}、拉格朗日系数(i∈zp,s为系统集合zp中的元素集合)、第一哈希函数h1:{0,1}*→g0、第二哈希函数h2:{0,1}*→{0,1}λ和第三哈希函数h3:{0,1}*→{0,1}κ,其中λ和κ表示安全参数。

执行系统初始化函数setup(1κ,l)→(pk,msk)。系统初始化函数由第三方公证客体输入安全参数κ和全局属性集n,得到系统公钥pk和主密钥msk。具体的,系统随机选择两个元素α,β∈zp,对于全局属性集n中的每个元素aj,选择一个随机数vj∈zp,计算生成系统公钥pk和主密钥msk。其中,系统公钥pk和主密钥msk的计算公式为:

msk={α,gβ,{vj|aj∈n}}

用户密钥生成函数keygen(pk,msk,n')→sk。由第三方公证客体输入系统公钥pk和主密钥msk,选择用户属性集选择随机数r∈zp,生成用户密钥sk:

进一步的,若数据属主需要上传个健康记录到服务器上,个健康记录分为η个访问等级。则,在数据属主上传个健康记录之前,需为每个健康记录hrj(其中,)分配一个标识符idj,并从个健康记录中提取出2d个关键词其中,标识符和关键词所对应的二进制长度分别为和d。使用对称加密算法对每个健康记录进行加密,如使用高级加密标准(advancedencryptionstandard,aes)进行加密,得到加密健康记录。令表示与关键词wj在第i个访问等级相关联的标识符集,令其中,服务器在接收到数据属主上传的加密健康记录后,需进行以下内容:

定义一个d维向量b=(1,…,1)、第一伪随机函数prf1:{0,1}λ×{0,1}d→{0,1}d和第二伪随机函数prf2:{0,1}κ×{0,1}*→{0,1}κ,随机选择k∈{0,1}λ,对于每个关键词wj∈w,计算b+prf1(k,wj)→bj,并将hr(wj)中的文件添加到相应的桶元素bj中,每个bj对应η个二进制串其中,j=1,…,2d,所有的二进制串的长度相等,且每一位都初始化为0。

随机选择一个数ti∈zp,计算其中,i=1,…,η。

构造访问策略树的目的是用于控制用户的搜索权限。对于访问策略树t的每个节点x,选择多项式qx,从根节点r开始,以自顶向下的方式选择多项式,对于访问策略树t中的每个节点x,阈值tx仅需要比多项式qx的阶dx多1,即tx=dx+1。

对于访问策略树t,设置分级节点xi,并随机选择β、si∈zp,计算其中,i=1,…,η。

从根节点r开始,设定随机选择dr个其他节点来完整的定义多项式qr,其中,dr个其他节点由两种类型的节点组成,一种是根节点r的子节点包含的等级节点,另一种是剩余的随机选择的节点。

对于每个非根节点x,如果x是等级节点,则设定否则设定qr(0)=qparent(x)(index(x))。多项式qx的剩余dx个其他节点由该节点的子节点包含的等级节点和随机选择的节点构成。

在访问策略树中,令y表示与叶子节点相对应的属性构成的集合,对于所有的att(x)∈y,计算

搜索权限控制密文为:该搜索权限控制密文为数据属主生成的并上传保存在服务器中。

构造加密二值树用于关键字搜索。加密二值树的深度为d=log|w|。令n00表示二值树的根节点,nlh表示第l层的第h个节点。连接父节点nlh和子节点nl+1,h'的边对应着数el+1,h'∈{1,2}。每个叶子节点对应一个桶元素,假设桶元素bj与叶子节点ndj相关联,其中,j=1,…,2d。则加密二值树的构造如下:

1、每一个非叶子节点nlh对应于密文clh={c'lh,c”lh},其中,clh计算如下:

对于根节点n00,选择随机数y00∈zp,计算

对于其他节点nlh,选择随机数ylh∈zp,计算其中,h=1,…,2l;l=1,…,d-1。

2、对于叶子节点ndj。其中,j=1,…,2d;i=1,…,η。

依次将标识符集中的标识符{idζ}串联起来,并从右至左代替原中的0,得到新的二进制串

计算

其中,的长度与的长度相等。

选择随机数u∈zp,计算u=gu其中,i=1,…,η。

令m表示所有下标为(l,h)对的密文集合。输出关键词密文:

索引密文为:ci={scc,ebt},发送索引密文ci和加密健康记录chr存储于医疗健康服务器hpi和hpr,其中,hpi和hpr分别表示存储索引密文和加密健康记录的服务器。

即:预先设置一个阶为素数p、生成元为g的双线性群g0,建立e:g0×g0→gt的双线性映射e,并建立系统集合zp={0,1,2,…,p-1}、第一哈希函数h1:{0,1}*→g0、第二哈希函数h2:{0,1}*→{0,1}λ、第三哈希函数h3:{0,1}*→{0,1}κ、第一伪随机函数prf1:{0,1}λ×{0,1}d→{0,1}d及第二伪随机函数prf2:{0,1}κ×{0,1}*→{0,1}κ,其中λ和κ表示安全参数;

其中,系统公钥与主密钥及用户密钥的计算公式如下:

msk={α,gβ,{vj|aj∈n}}

其中,pk表示系统公钥,α、β、r、和vj均属于系统集合zp中的元素,msk表示主密钥,sk表示用户密钥,d表示第一密钥,aj表示用户属性集n'中的元素,其中,用户属性集n'为全局属性集n中的元素集合,dj表示第二密钥;

其中,索引密文的计算公式如下:

ci={scc,ebt}

其中,ci表示索引密文,scc表示搜索权限控制密文,ebt表示关键词密文;

其中,搜索权限控制密文的计算公式如下:

其中:

其中,scc表示搜索权限控制密文,t表示访问策略树,表示第一节点密文,ci表示第二节点密文,ki表示第三节点密文,η表示访问等级的个数,catt(x)表示叶子节点x密文,att(x)表示在访问策略树中,与叶子节点x相对应的属性构成的集合y中的任一个元素,ti、β和si表示系统集合zp中的元素,k表示集合{0,1}λ中的元素,vatt(x)表示访问策略树中的节点x对应的属性值的指数,qx(0)表示访问策略树中的节点x对应的多项式qx常数项的取值;

其中,关键词密文的计算公式如下:

u=gu

其中,ebt表示关键词密文,u表示第一加密元素,si表示第二加密元素,η表示访问等级的个数,clh表示第三加密元素,m表示下标为(l,h)对的密文集合,其中(l,h)对表示加密二值树中第l层的第h个节点,u、ti、y00和ylh属于系统集合zp中的元素,表示0,1构成的字符串,可以截断成多个标识符,wj表示多个关键词中的一个。

步骤102:用户客户端根据预设递归算法,利用用户属性集与访问策略树进行访问权限验证,得到满足用户属性集的访问权限验证结果,用户属性集为预先设定的全局属性集中的元素集合;

需要说明的是,当用户客户端首次向服务器发送健康记录的搜索请求时,服务器会发送搜索权限控制密文,然后用户客户端运行验证算法来检测用户是否有权限搜索加密健康记录。如果用户属性集不满足嵌入在搜索权限控制密文中的访问策略树,则解密之后得到null,表示用户无权限搜索加密健康记录;若用户属性集满足嵌入在搜索权限控制密文中的访问策略树,则生成访问权限验证结果,以便构造陷门。具体的:

在步骤101的基础上,搜索权限验证公式:decryptval(pk,scc,sk)→vr。用户输入系统公钥pk、搜索权限控制密文scc和用户密钥sk,得到访问权限验证结果vr。需要定义预设递归算法decvalnode(scc,sk,x)用以验证用户是否有权限搜索加密的健康记录,其中,scc表示搜索权限控制密文,sk表示用户密钥,x表示访问策略树t中的节点。

1、若x为叶子节点,则令aj=att(x)。

如果则decvalnode(scc,sk,x)=null,否则,计算:

2、若x为非叶子节点,则递归算法decvalnode(scc,sk,x)的定义如下,对于节点x的所有子节点z,执行fz=decvalnode(scc,sk,z)。设sx是任意的kx个子节点z构成的集合。如果sx不存在,则fz=null;如果sx存在,则fz≠null,计算:

其中,j=index(z),s'x={index(z):z∈sx}。

用户客户端调用访问策略树t的根节点r的函数decvalnode(scc,sk,r),如果用户属性集满足部分或者整个访问策略树,即用户属性集满足访问策略树的第i个等级节点,则计算得到访问权限验证结果vr={ki,ai},其中:

用户保存访问权限验证结果vr={ki,ai}。

其中,访问权限验证的相关内容由用户客户端执行并输出。

即:用户客户端根据预设递归算法,利用用户属性集与访问策略树进行访问权限验证,按照如下公式得到满足用户属性集的访问权限验证结果:

vr={ki,ai}

其中,vr表示访问权限验证结果,ki表示第三节点密文,ai表示验证元素;

其中,预先设置一个阶为素数p、生成元为g的双线性群g0,建立e:g0×g0→gt的双线性映射e,并建立系统集合zp={0,1,2,…,p-1};

其中,验证元素ai的计算公式如下:

其中,fi表示递归结果值,decvalnode(scc,sk,xi)表示预设递归算法,scc表示搜索权限控制密文,sk表示用户密钥,xi表示访问策略树中的第i个等级节点,α、β、r、ti和si均属于系统集合zp中的元素,表示第i个等级节点所对应的多项式常数项的取值,表示第一节点密文,d表示第一密钥,ci表示第二节点密文。

步骤103:用户客户端获取用户输入的关键词,利用关键词及访问权限验证结果生成陷门并将陷门发送给服务器;

具体的,请参阅图3,为本发明第一实施例中步骤103的细化步骤的流程示意图。该步骤103的细化步骤具体包括:

步骤301:用户客户端获取用户输入的关键词,生成与关键词对应的桶元素集合;

步骤302:用户客户端利用桶元素集合和访问权限验证结果,生成陷门,陷门包括第一陷门元素、第二陷门元素、第三陷门元素和第四陷门元素。

需要说明的是,若用户想要搜索包含关键词w~的加密健康记录,需运行陷门生成算法来生成与关键词w~相关联的陷门td。该陷门生成算法输入用户密钥sk、访问权限验证结果vr和关键词w~,得到陷门td。具体的:

在步骤101与步骤102的基础上,计算其中表示异或算法,公式与公式等价,ki表示第三节点密文。计算桶元素得到桶元素的集合其中,j=1,2,…,d。

对于每个桶元素选择随机数τj∈zp,计算其中,j=1,2,…,d。

计算

输出陷门

其中,陷门生成的相关内容由用户客户端执行并输出。

即:预先设置一个阶为素数p、生成元为g的双线性群g0,建立e:g0×g0→gt的双线性映射e,并建立系统集合zp={0,1,2,…,p-1}、第一哈希函数h1:{0,1}*→g0、第二哈希函数h2:{0,1}*→{0,1}λ及第一伪随机函数prf1:{0,1}λ×{0,1}d→{0,1}d,其中λ表示安全参数;

其中,桶元素集合的计算公式如下:

j=1,2,…,d

其中,k表示集合{0,1}λ中的元素,ki表示第三节点密文,ti表示系统集合zp中的元素,表示桶元素的集合,表示桶元素,表示关键词,d表示关键词对应的二进制长度;

其中,陷门的计算公式如下:

其中:

其中,td表示陷门,表示第一陷门元素,s'表示第二陷门元素,表示第三陷门元素,表示第四陷门元素,d表示关键词对应的二进制长度,ti、τj和α表示系统集合zp中的元素且τ1为τj中的一个元素,表示桶元素。

步骤104:用户客户端接收服务器反馈的基于陷门和关键词密文匹配生成的匹配结果,根据匹配结果生成标识符并发送给服务器,获取服务器基于标识符匹配的加密健康记录,关键词密文是由数据属主客户端基于关键词对应的二进制长度构造的加密二值树得到的。

具体的,请参阅图4,为本发明第一实施例中步骤104的细化步骤的流程示意图。该步骤104的细化步骤包括:

步骤401:用户客户端接收服务器反馈的基于陷门和关键词密文匹配生成的匹配结果,根据匹配结果生成标识符并发送给服务器;

步骤402:用户客户端获取服务器基于标识符匹配的加密健康记录。

需要说明的是,索引密文是在数据属主生成并上传保存在服务器中。具体的:

在步骤101、步骤102及步骤103的基础上,

当用户客户端输出陷门后,服务器接收到陷门,执行以下算法来搜索匹配的密文。

匹配算法search(ci,td)→searchresult。匹配算法以索引密文ci和陷门td作为输入,通过计算匹配得到searchresult:

对于根节点,计算:

对每个i∈{1,…,d-1},计算:

服务器从上到下遍历加密二值树经过上述算式得到的边ei+1(i=0,1,…,d-1),直至到达对应的叶子节点。

判断公式e(g,si)=e(s',u)是否成立,若成立,则发送匹配结果给用户客户端,匹配结果为:若不成立,则返回结果为null。

当用户客户端接收到匹配结果后,运行检索算法来得到加密的健康记录,具体的,检索算法以匹配结果权限验证结果vr和关键词作为输入,进行如下操作:

计算以获得所有的标识符{idζ}。

发送所有的标识符{idζ}给服务器hpr,接收服务器hpr发送的相关加密健康记录{chrζ}。

即:预先设置一个阶为素数p、生成元为g的双线性群g0,建立e:g0×g0→gt的双线性映射e,并建立系统集合zp={0,1,2,…,p-1}、第一哈希函数h1:{0,1}*→g0、第三哈希函数h3:{0,1}*→{0,1}κ及第二伪随机函数prf2:{0,1}κ×{0,1}*→{0,1}κ,其中κ表示安全参数;

其中,匹配结果的计算公式如下:

其中,表示匹配结果,h表示构造的加密二值树中第d层中的一个节点,i表示用户客户端满足的访问等级;

其中,标识符的计算公式如下:

其中,表示由0,1构成的字符串,可以截断成多个标识符,表示匹配结果,ti表示系统集合zp中的元素,表示关键词。

在本发明实施例中,提出一种支持分层搜索的加密健康记录的获取方法。通过向服务器发送健康记录的搜索请求,并接收服务器发送的搜索权限控制密文,搜索权限控制密文包括由数据属主根据健康记录划分的访问等级构造的访问策略树。又由于根据预设递归算法,利用用户属性集与访问策略树进行访问权限验证,得到满足用户属性集的访问权限验证结果,即得到符合用户属性集的访问等级。因此,基于该访问权限验证结果进行一系列的步骤后,得到的标识符是与用户的访问等级相匹配的,因此,对于不同的用户,得到的加密健康记录是与其访问等级相关的,有效的针对用户的搜索级别返回不同的搜索结果,保障了数据的隐私性。

请参阅图5,为本发明第二实施例所提供的一种支持分层搜索的加密健康记录的获取系统的结构示意图。该系统包括第三方公证客户端501、用户客户端502、服务器503和数据属主客户端504,其中箭头的指向表示信息的发送方向。具体的:

用户客户端502,用于向服务器503发送健康记录的搜索请求,并接收服务器503发送的搜索权限控制密文,搜索权限控制密文包括由数据属主客户端504根据健康记录划分的访问等级构造的访问策略树;

用户客户端502,还用于根据预设递归算法,利用用户属性集与访问策略树进行访问权限验证,得到满足用户属性集的访问权限验证结果,用户属性集为预先设定的全局属性集中的元素集合;

用户客户端502,还用于获取用户输入的关键词,利用关键词及访问权限验证结果生成陷门并将陷门发送给服务器503;

用户客户端502,还用于接收服务器503反馈的基于陷门和关键词密文匹配生成的匹配结果,根据匹配结果生成标识符并发送给服务器503,获取服务器503基于标识符匹配的加密健康记录,关键词密文是由数据属主客户端504基于关键词对应的二进制长度构造的加密二值树得到的。

进一步的,用户客户端502向服务器503发送健康记录的搜索请求之前还包括:

第三方公证客户端501,用于获取第三方公证客体输入的安全参数和全局属性集,生成系统公钥和主密钥,并根据系统公钥和主密钥以及用户属性集生成用户密钥;

数据属主客户端504,用于利用对称加密算法对上传的健康记录进行加密,并利用公钥加密算法对从健康记录中提取到的关键词建立索引密文,索引密文包括搜索权限控制密文和关键词密文;

其中,预先设置一个阶为素数p、生成元为g的双线性群g0,建立e:g0×g0→gt的双线性映射e,并建立系统集合zp={0,1,2,…,p-1}、第一哈希函数h1:{0,1}*→g0、第二哈希函数h2:{0,1}*→{0,1}λ、第三哈希函数h3:{0,1}*→{0,1}κ、第一伪随机函数prf1:{0,1}λ×{0,1}d→{0,1}d及第二伪随机函数prf2:{0,1}κ×{0,1}*→{0,1}κ,其中λ和κ表示安全参数;

其中,系统公钥与主密钥及用户密钥的计算公式如下:

msk={α,gβ,{vj|aj∈n}}

其中,pk表示系统公钥,α、β、r、和vj均属于系统集合zp中的元素,msk表示主密钥,sk表示用户密钥,d表示第一密钥,aj表示用户属性集n'中的元素,其中,用户属性集n'为全局属性集n中的元素集合,dj表示第二密钥;

其中,索引密文的计算公式如下:

ci={scc,ebt}

其中,ci表示索引密文,scc表示搜索权限控制密文,ebt表示关键词密文;

其中,搜索权限控制密文的计算公式如下:

其中:

其中,scc表示搜索权限控制密文,t表示访问策略树,表示第一节点密文,ci表示第二节点密文,ki表示第三节点密文,η表示访问等级的个数,catt(x)表示叶子节点x密文,att(x)表示在访问策略树中,与叶子节点x相对应的属性构成的集合y中的任一个元素,ti、β和si表示系统集合zp中的元素,k表示集合{0,1}λ中的元素,vatt(x)表示访问策略树中的节点x对应的属性值的指数,qx(0)表示访问策略树中的节点x对应的多项式qx常数项的取值;

其中,关键词密文的计算公式如下:

u=gu

其中,ebt表示关键词密文,u表示第一加密元素,si表示第二加密元素,η表示访问等级的个数,clh表示第三加密元素,m表示下标为(l,h)对的密文集合,其中(l,h)对表示加密二值树中第l层的第h个节点,u、ti、y00和ylh属于系统集合zp中的元素,表示0,1构成的字符串,可以截断成多个标识符,wj表示多个关键词中的一个。

进一步的,用户客户端502,还用于根据预设递归算法,利用用户属性集与访问策略树进行访问权限验证,按照如下公式得到满足用户属性集的访问权限验证结果:

vr={ki,ai}

其中,vr表示访问权限验证结果,ki表示第三节点密文,ai表示验证元素;

其中,预先设置一个阶为素数p、生成元为g的双线性群g0,建立e:g0×g0→gt的双线性映射e,并建立系统集合zp={0,1,2,…,p-1};

其中,验证元素ai的计算公式如下:

其中,fi表示递归结果值,decvalnode(scc,sk,xi)表示预设递归算法,scc表示搜索权限控制密文,sk表示用户密钥,xi表示访问策略树中的第i个等级节点,α、β、r、ti和si均属于系统集合zp中的元素,表示第i个等级节点所对应的多项式常数项的取值,表示第一节点密文,d表示第一密钥,ci表示第二节点密文。

进一步的,用户客户端502,还用于获取用户输入的关键词,生成与关键词对应的桶元素集合;

用户客户端502,还用于利用桶元素集合和访问权限验证结果,生成陷门,陷门包括第一陷门元素、第二陷门元素、第三陷门元素和第四陷门元素;

其中,预先设置一个阶为素数p、生成元为g的双线性群g0,建立e:g0×g0→gt的双线性映射e,并建立系统集合zp={0,1,2,…,p-1}、第一哈希函数h1:{0,1}*→g0、第二哈希函数h2:{0,1}*→{0,1}λ及第一伪随机函数prf1:{0,1}λ×{0,1}d→{0,1}d,其中λ表示安全参数;

其中,桶元素集合的计算公式如下:

j=1,2,…,d

其中,k表示集合{0,1}λ中的元素,ki表示第三节点密文,ti表示系统集合zp中的元素,表示桶元素的集合,表示桶元素,表示关键词,d表示关键词对应的二进制长度;

其中,陷门的计算公式如下:

其中:

其中,td表示陷门,表示第一陷门元素,s'表示第二陷门元素,表示第三陷门元素,表示第四陷门元素,d表示关键词对应的二进制长度,ti、τj和α表示系统集合zp中的元素且τ1为τj中的一个元素,表示桶元素。

进一步的,用户客户端502,还用于接收服务器503反馈的基于陷门和关键词密文匹配生成的匹配结果,根据匹配结果生成标识符并发送给服务器503;

用户客户端502,还用于获取服务器503基于标识符匹配的加密健康记录;

其中,预先设置一个阶为素数p、生成元为g的双线性群g0,建立e:g0×g0→gt的双线性映射e,并建立系统集合zp={0,1,2,…,p-1}、第一哈希函数h1:{0,1}*→g0、第三哈希函数h3:{0,1}*→{0,1}κ及第二伪随机函数prf2:{0,1}κ×{0,1}*→{0,1}κ,其中κ表示安全参数;

其中,匹配结果的计算公式如下:

其中,表示匹配结果,h表示构造的加密二值树中第d层中的一个节点,i表示用户客户端满足的访问等级;

其中,标识符的计算公式如下:

其中,表示由0,1构成的字符串,可以截断成多个标识符,表示匹配结果,ti表示系统集合zp中的元素,表示关键词。

需要说明的是,有关对第二实施的说明可参阅对第一实施例的相关说明,这里不再赘述。

在本发明实施例中,提出一种支持分层搜索的加密健康记录的获取系统。通过向服务器发送健康记录的搜索请求,并接收服务器发送的搜索权限控制密文,搜索权限控制密文包括由数据属主根据健康记录划分的访问等级构造的访问策略树。又由于根据预设递归算法,利用用户属性集与访问策略树进行访问权限验证,得到满足用户属性集的访问权限验证结果,即得到符合用户属性集的访问等级。因此,基于该访问权限验证结果进行一系列的步骤后,得到的标识符是与用户的访问等级相匹配的,因此,对于不同的用户,得到的加密健康记录是与其访问等级相关的,有效的针对用户的搜索级别返回不同的搜索结果,保障了数据的隐私性。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,所述模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。

需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。

以上为对本发明所提供的一种支持分层搜索的加密健康记录的获取方法和系统的描述,对于本领域的技术人员,依据本发明实施例的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理解为对本发明的限制。

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