一种具有访问控制功能的数据库查询方法和系统与流程

文档序号:11156609阅读:347来源:国知局
一种具有访问控制功能的数据库查询方法和系统与制造工艺

本发明涉及数据库查询领域,尤其涉及一种具有访问控制功能的数据库查询方法,还涉及一种实现上述方法的系统。



背景技术:

随着云计算的迅速发展,用户开始将数据存储在云服务器上,以避免繁琐地本地数据管理并获得更加便捷的服务。但是在现实生活中,云服务器肯定不会是绝对安全的,黑客会通过各种意想不到的方法入侵云服务器;云服务器管理员可能会受到利益的诱惑,故意向恶意份子泄露数据库中的数据,这些后果是很严重的。为了保护用户数据的隐私,数据一般是以密文的形式存储在云服务器中。对隐私数据加密是保证数据不被泄露的有效方法。但是数据以密文的形式存储在云服务器中也带来了新的问题:如何根据用户访问权限对密文数据进行查询,现有的算法不能在密文数据库下支持具有访问控制功能的查询。例如,无法做到在医疗系统中,病人只能对其本人的病历记录进行查询;医生只能对其诊治的病人的病历记录进行查询;院长可以对该医院诊治的所有病人的病历记录进行查询。



技术实现要素:

为解决现有技术中的问题,本发明提供一种具有访问控制功能的数据库查询方法,还提供一种实现上述方法的系统。

本发明具有访问控制功能的数据库查询方法包括如下步骤:

初始化步骤:数据上传者生成查询密钥;

数据加密步骤:数据上传者对上传至服务器数据库中的每一条记录建立属性索引,并对每一条记录及属性索引加密,得到记录密文和索引密文,然后将查询密钥进行加密,并把加密后的查询密钥发送给数据查询用户;

密钥产生步骤:数据查询用户根据自身的用户属性生成对应的密钥;

陷门生成步骤:数据查询用户采用密钥和加密后的查询密钥解密得到查询密钥,然后通过查询密钥和查询条件生成谓词陷门,发送给服务器;

查询步骤:服务器对数据库的数据进行查询,将符合条件的记录密文数据返回给数据查询用户;

解密步骤:数据查询用户采用密钥解密服务器返回的记录密文数据,得到查询结果。。

本发明作进一步改进,在初始化步骤中,所述数据上传者输入安全参数λ以及属性全集U,通过ABE算法和POE算法,密钥产生中心生成公共参数pp和主密钥msk;数据上传者生成公钥pk和查询密钥sk。

本发明作进一步改进,在数据加密步骤中,数据上传者为每一条记录m建立属性索引并使用公共参数pp、公钥pk和访问控制结构(M,ρ)在本地对每一条记录m和属性索引进行加密,得到记录密文和索引密文(C′,Cp);使用公共参数pp和访问控制结构(M,ρ)对查询密钥sk进行加密得到Csk,并将其发送给系统中的数据查询用户。

本发明作进一步改进,在密钥产生步骤中,数据查询用户将用户属性I发送给密钥产生中心,密钥产生中心使用主密钥msk生成对应的密钥skI并发回给用户。

本发明作进一步改进,在陷门生成步骤中,用户属性I满足访问控制结构(M,ρ)的数据查询用户用密钥skI解密Csk得到查询密钥sk,然后使用sk和查询条件也就是谓词产生谓词陷门并发送给服务器。

本发明作进一步改进,在查询步骤中,服务器根据索引密文Cp和谓词陷门对记录密文数据逐条进行查询,当查询条件和属性索引匹配时,返回记录密文C′,否者返回⊥。

本发明作进一步改进,在解密步骤中,用户属性I满足访问控制结构(M,ρ)的数据查询用户采用密钥skI,解密服务器返回的记录密文C′,获得查询结果m。

本发明作进一步改进,所述数据加密方法采用密文-策略属性加密法和谓词加密法。

本发明作进一步改进,所述密文-策略属性加密法采用的算法包括:

(1)初始化算法:(ABE.pk,ABE.msk)←ABE.Setup(U),输入属性全集U,产生阶为素数p的循环群G0,生成元为g,随机选取元素h1,…,hU∈G0与系统属性集合U相关联,另外随机选择α,a∈Zp,初始化算法输出系统公钥和主密钥:

ABE.pk=(g,ga,e(g,g)α,h1,…,hU);ABE.msk=gα

(2)密钥产生算法:ABE.sk←ABE.KeyGen(ABE.msk,I),输入主密钥ABE.msk以及某个用户的用户属性集I,随机选择t∈Zp,密钥产生算法输出:

(3)加密算法:CT←ABE.Encrypt(ABE.pk,m,M,ρ),输入消息记录m、系统公钥ABE.pk以及访问控制结构(M,ρ),其中M为l×n矩阵,ρ是一个函数,它为矩阵M的行向量与用户属性集中的属性建立一一对应的关系。随机选择向量则有随机选择r1,…,rl∈Zp,加密算法输出密文:

(4)解密算法:m←ABE.Decrypt(ABE.sk,CT),输入访问控制结构为(M,ρ)的密文CT,属性集合为I的用户密钥,如果属性集合满足访问控制结构,设定义S={i:ρ(i)∈I},其中则可以找到属性集合{ωi∈Zp}i∈S使得∑i∈Sωiλi=s,通过以下解密算法得到记录m:

C/e(g,g)αs=m·e(g,g)αs/e(g,g)αs=m。

本发明作进一步改进,所述谓词加密法采用的算法包括:

(1)初始化算法:(POE.pk,POE.sk)←POE.Setup(λ),输入安全参数λ,得到(p,q,r,G,GT),其中G=Gp·Gq·Gr且p,q,r都为素数,Gp,Gq,Gr的生成元分别为gp,gq,gr,对于1≤i≤n,随机选择R1,i,R2,i∈Gr、h1,i,h2,i∈Gp和R0∈Gr,初始化算法输出:

(2)谓词加密算法:输入xi∈Zn和公钥POE.pk,加密算法随机选择s,α,β∈Zn,R3,i,R4,i∈Gr,其中1≤i≤n,谓词加密算法输出密文:

(3)谓词陷门生成算法:输入密钥POE.sk和谓词密钥生成算法随机的选择r1,i,r2,i∈Zn,R5∈Gr,f1,f2∈Zn,Q6∈Gq,密钥生成算法输出谓词陷门:

(4)查询算法:输入密文C和谓词陷门谓词陷门算法计算以下值:

如果y=1,则算法输出查询结果1;否则,输出0。

本发明还提供了一种实现上述方法的系统,包括

密钥产生中心:用于生成主密钥、查询密钥,并将生成的查询密钥发送给数据上传者,根据数据查询用户提供的用户属性生成密钥并发送给数据查询用户;

数据上传者:对上传至服务器数据库中的每一条记录建立属性索引,并对每一条记录及属性索引加密,得到记录密文和索引密文,然后将查询密钥进行加密,并把加密后的查询密钥发送给数据查询用户;

数据查询用户:采用密钥和加密后的查询密钥解密得到查询密钥,然后通过查询密钥和查询条件生成谓词陷门,发送给服务器,并采用密钥解密服务器返回的记录密文数据,得到查询结果;

服务器:用于对数据库的数据进行查询,将符合条件的记录密文数据返回给数据查询用户。

与现有技术相比,本发明的有益效果是:本发明利用密文-策略属性加密对用户的查询权限进行控制;利用谓词加密建立索引,以实现查询的功能,其中,密文-策略属性加密能保证数据的机密性;谓词加密具有属性隐藏的特性,可保证查询条件的机密性。因此,本发明既能够对数据查询用户访问数据库的权限进行控制,又能够保证数据和查询条件的机密性。

附图说明

图1为本发明系统结构示意图;

图2为本发明方法流程示意图。

具体实施方式

下面结合附图和实施例对本发明做进一步详细说明。

如图1所示,本例提供一种数据库查询系统,包括:

(1)密钥产生中心:用于生成主密钥msk、查询密钥sk,并将生成的查询密钥sk发送给数据上传者,根据数据查询用户提供的用户属性I生成密钥skI并发送给数据查询用户;

(2)数据上传者:对上传至服务器数据库中的每一条记录m建立属性索引并对每一条记录m及属性索引加密,得到记录密文和索引密文(C′,Cp),然后将查询密钥sk进行加密,并把加密后的查询密钥发送给数据查询用户,此处,用户属性与属性索引中的属性相同;

(3)数据查询用户:采用密钥skI和加密后的查询密钥解密得到查询密钥sk,然后通过查询密钥sk和查询条件生成谓词陷门发送给服务器,并采用密钥skI解密服务器返回的记录密文数据C′,得到查询结果;

(4)服务器:用于对数据库的数据进行查询,将符合条件的记录密文数据C′返回给数据查询用户。

本发明的采用的服务器优选为信息存储量大的云服务器。

本发明还提供了一种基于上述系统的数据库查询方法,本例的数据库查询方法采用密文-策略属性加密法和谓词加密法。其中,本例的密文-策略属性加密法中的策略是指本发明采用的基于访问控制结构(M,ρ)的访问控制策略。下面对其详细说明。

1、本例密文-策略属性加密法包括以下四个算法:

(1)初始化算法:(ABE.pk,ABE.msk)←ABE.Setup(U),输入属性全集U,产生阶为素数p的循环群G0,生成元为g。随机选取元素h1,…,hU∈G0与系统属性集合U相关联,另外随机选择α,a∈Zp,初始化算法输出系统公钥和主密钥:

ABE.pk=(g,ga,e(g,g)α,h1,…,hU);ABE.msk=gα

(2)密钥产生算法:ABE.sk←ABE.KeyGen(ABE.msk,I),输入主密钥ABE.msk以及某个用户的用户属性集I,随机选择t∈Zp,密钥产生算法输出:

(3)属性加密算法:CT←ABE.Encrypt(ABE.pk,m,M,ρ),输入消息记录m、系统公钥ABE.pk以及访问控制结构(M,ρ),其中,设M为l×n矩阵,ρ是一个函数,它为矩阵M的行向量与用户属性集中的属性建立一一对应的关系。随机选择向量则有随机选择r1,…,rl∈Zp,属性加密算法输出密文:

(4)解密算法:m←ABE.Decrypt(ABE.sk,CT),输入访问控制结构为(M,ρ)的密文CT,属性集合为I的用户密钥,如果属性集合满足访问控制结构,设定义S={i:ρ(i)∈I},其中则可以找到属性集合{ωi∈Zp}i∈S使得∑i∈Sωiλi=s,通过以下解密算法得到记录m:

C/e(g,g)αs=m·e(g,g)αs/e(g,g)αs=m。

采用所述密文-策略属性加密法的算法时,数据上传者需要对其正确性进行验证,具体验证方法为:

顺序执行以上四个算法,要求对于所有的用户属性U和被ABE.Setup(U)产生的(ABE.pk,ABE.msk)、所有的I和被ABE.KeyGen(ABE.msk,I)产生的ABE.sk以及任意的(M,ρ),如果满足以下两个条件,则说明此密文-策略属性法加密成功。

A、当用户属性I满足访问控制结构(M,ρ)时,

ABE.Decrypt(ABE.sk,ABE.Encrypt(ABE.pk,m,M,ρ))=m;

B、当用户属性I不满足访问控制结构(M,ρ)时,

ABE.Decrypt(ABE.sk,ABE.Encrypt(ABE.pk,m,M,ρ))≠m;

2、本例谓词加密法包括以下四个算法:

(1)初始化算法:(POE.pk,POE.sk)←POE.Setup(λ),输入安全参数λ,得到(p,q,r,G,GT),其中G=Gp·Gq·Gr且p,q,r都为素数,Gp,Gq,Gr的生成元分别为gp,gq,gr,对于1≤i≤n,随机选择R1,i,R2,i∈Gr、h1,i,h2,i∈Gp和R0∈Gr,初始化算法输出:

(2)谓词加密算法:输入xi∈Zn和公钥POE.pk,加密算法随机选择s,α,β∈Zn,R3,i,R4,i∈Gr,其中1≤i≤n,谓词加密算法输出密文:

(3)谓词陷门生成算法:输入密钥POE.sk和谓词密钥生成算法随机的选择r1,i,r2,i∈Zn,R5∈Gr,f1,f2∈Zn,Q6∈Gq,密钥生成算法输出谓词陷门:

(4)查询算法:输入密文C和谓词陷门谓词陷门算法计算以下值:

如果y=1,则算法输出查询结果1;否则,输出0。

采用所述谓词加密法的算法时,数据上传者需要对其正确性进行验证,具体验证方法为:

顺序执行以上四个算法,要求对于所有的安全参数λ和被POE.Setup(λ)产生的(POE.pk,POE.sk)、所有的谓词,也就是查询条件和被产生的以及任意的属性索引如果满足以下两个条件,说明本谓词加密法加密成功。

A、当数据属性索引和谓词满足时,

B、当时,

如图2所示,综合上述两种方法,本例的数据库加密及查询方法具体如下:

(1)初始化步骤(pp,msk,pk,sk)←Setup(λ,U):

数据上传者输入安全参数λ以及属性全集U,通过ABE算法和POE算法,密钥产生中心生成公共参数pp和主密钥msk;数据上传者生成公钥pk和查询密钥sk。

具体地,输入安全参数λ和属性全集U,密钥产生中心执行(ABE.pk,ABE.msk)←ABE.Setup(U)生成公共参数pp=ABE.pk和主密钥msk=ABE.msk;数据上传者执行(POE.pk,POE.sk)←POE.Setup(λ)生成公钥pk=POE.pk和查询密钥sk=POE.sk,公式如下:

pp=(g,ga,e(g,g)α,h1,…,hU);

msk=gα

(2)数据加密步骤

数据上传者为每一条记录m建立属性索引并使用公共参数pp、公钥pk和访问控制结构(M,ρ)在本地对每一条记录m和属性索引进行加密,得到记录密文和索引密文(C′,Cp);使用公共参数pp和访问控制结构(M,ρ)对查询密钥sk进行加密得到Csk,并将其发送给系统中的数据查询用户。

数据拥有者利用ABE.pk加密数据库中的每一条记录m产生C′←ABE.Encrypt(pp,m,(M,ρ)),并使用公钥pk对这条记录m建立密文索引其中(M,ρ)为访问控制策略,为每条记录所对应的属性索引,将(C′,Cp)一起发送给云服务器,然后利用公共参数pp对查询密钥sk进行加密得到密文Csk←ABE.Encrypt(pp,sk,M,ρ),将Csk发送给所有查询用户。最后得到密文(C′,Cp,Csk),算法如下:

C=(C′,Cp,Csk)。

(3)密钥产生步骤skI←KeyGen(msk,I):

数据查询用户将用户属性I发送给密钥产生中心,密钥产生中心使用主密钥msk生成对应的密钥skI并发回给用户,其中,

(4)陷门生成步骤

用户属性I满足访问控制结构(M,ρ)的数据查询用户用密钥skI解密Csk得到查询密钥sk,然后使用sk和查询条件也就是谓词产生谓词陷门并发送给服务器。

具体地,用户属性I满足访问控制策略(M,ρ)的查询用户使用skI就能解密Csk得到查询密钥sk=ABE.Decrypt(skI,Csk)。例如在上述技术背景所提到的例子中,假设加密查询密钥sk所用到的访问控制策略是只有用户属性是医院院长才能解密,那么只有院长才能拿到查询密钥sk。然后数据查询用户使用查询密钥sk和查询条件(谓词)产生谓词陷门最后用户将发送给云服务器,其中,

(5)查询步骤

服务器根据索引密文Cp和谓词陷门对记录密文数据逐条进行查询,结果为如果结果为1,说明查询条件和属性索引匹配,返回所有包含该陷门对应的记录密文C′,否者返回⊥,其中,

(6)解密步骤m←Decrypt(skI,C′):

当数据查询用户的用户属性I满足访问控制结构(M,ρ)时,数据库会返回记录密文C′,数据查询用户采用密钥skI,解密服务器返回的记录密文C′,获得明文查询结果m=ABE.Decrypt(skI,C′),其中,

C/e(g,g)αs=m·e(g,g)αs/e(g,g)αs=m。

本方法的正确性验证:依次执行以上六个步骤,要求对于所有的安全参数λ、属性全集U和被Setup(λ,U)产生的(pp,msk,pk,sk)、所有的I和被KeyGen(msk,I)产生的skI、所有的和被产生的以及任意的和(M,ρ),当数据属性集和谓词满足且用户属性集I满足访问控制结构(M,ρ)时,用户能够得到所有满足查询条件的明文数据;当上述两个条件不能同时满足时,用户不能得到满足查询条件的明文数据;则此方案正确。

本发明利用密文-策略属性加密对用户的查询权限进行控制;利用谓词加密建立索引,以实现查询的功能,其中,密文-策略属性加密能保证数据的机密性;谓词加密具有属性隐藏的特性,可保证查询条件的机密性。因此,本发明既能够对数据查询用户访问数据库的权限进行控制,又能够保证数据和查询条件的机密性。

以上所述之具体实施方式为本发明的较佳实施方式,并非以此限定本发明的具体实施范围,本发明的范围包括并不限于本具体实施方式,凡依照本发明所作的等效变化均在本发明的保护范围内。

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