1.一种具有访问控制功能的数据库查询方法,其特征在于包括如下步骤:
初始化步骤:数据上传者生成查询密钥;
数据加密步骤:数据上传者对上传至服务器数据库中的每一条记录建立属性索引,并对每一条记录及属性索引加密,得到记录密文和索引密文,然后将查询密钥进行加密,并把加密后的查询密钥发送给数据查询用户;
密钥产生步骤:数据查询用户根据自身的用户属性生成对应的密钥;
陷门生成步骤:数据查询用户采用密钥和加密后的查询密钥解密得到查询密钥,然后通过查询密钥和查询条件生成谓词陷门,发送给服务器;
查询步骤:服务器对数据库的数据进行查询,将符合条件的记录密文数据返回给数据查询用户;
解密步骤:数据查询用户采用密钥解密服务器返回的记录密文数据,得到查询结果。
2.根据权利要求1所述的数据库查询方法,其特征在于:在初始化步骤中,所述数据上传者输入安全参数λ以及属性全集U,通过ABE算法和POE算法,密钥产生中心生成公共参数pp和主密钥msk;数据上传者生成公钥pk和查询密钥sk。
3.根据权利要求2所述的数据库查询方法,其特征在于:在数据加密步骤中,数据上传者为每一条记录m建立属性索引并使用公共参数pp、公钥pk和访问控制结构(M,ρ)在本地对每一条记录m和属性索引进行加密,得到记录密文和索引密文(C′,Cp);使用公共参数pp和访问控制结构(M,ρ)对查询密钥sk进行加密得到Csk,并将其发送给系统中的数据查询用户。
4.根据权利要求3所述的数据库查询方法,其特征在于:在密钥产生步骤中,数据查询用户将用户属性I发送给密钥产生中心,密钥产生中心使用主密钥msk生成对应的密钥skI并发回给用户。
5.根据权利要求4所述的数据库查询方法,其特征在于:在陷门生成步骤中,用户属性I满足访问控制结构(M,ρ)的数据查询用户用密钥skI解密Csk得到查询密钥sk,然后使用sk和查询条件也就是谓词产生谓词陷门并发送给服务器。
6.根据权利要求5所述的数据库查询方法,其特征在于:在查询步骤和解密步骤中,服务器根据索引密文Cp和谓词陷门对记录密文数据逐条进行查询,当查询条件和属性索引匹配时,返回记录密文C′,否者返回⊥,当返回记录密文C′时,数据查询用户采用密钥skI,解密所述记录密文C′,获得查询结果m。
7.根据权利要求1-6任一项所述的数据库查询方法,其特征在于:所述数据加密方法采用密文-策略属性加密法和谓词加密法。
8.根据权利要求7所述的数据库查询方法,其特征在于:所述密文-策略属性加密法采用的算法包括:
(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矩阵,随机选择向量则有随机选择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。
9.根据权利要求8所述的数据库查询方法,其特征在于:所述谓词加密法采用的算法包括:
(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和谓词vi∈Zn,密钥生成算法随机的选择r1,i,r2,i∈Zn,R5∈Gr,f1,f2∈Zn,Q6∈Gq,密钥生成算法输出谓词陷门:
(4)查询算法:输入密文C和谓词陷门谓词陷门算法计算以下值:
如果y=1,则算法输出查询结果1;否则,输出0。
10.一种实现权利要求1-9任一项所述数据库查询方法的系统,其特征在于包括:
密钥产生中心:用于生成主密钥、查询密钥,并将生成的查询密钥发送给数据上传者,根据数据查询用户提供的用户属性生成密钥并发送给数据查询用户;
数据上传者:对上传至服务器数据库中的每一条记录建立属性索引,并对每一条记录及属性索引加密,得到记录密文和索引密文,然后将查询密钥进行加密,并把加密后的查询密钥发送给数据查询用户;
数据查询用户:采用密钥和加密后的查询密钥解密得到查询密钥,然后通过查询密钥和查询条件生成谓词陷门,发送给服务器,并采用密钥解密服务器返回的记录密文数据,得到查询结果;
服务器:用于对数据库的数据进行查询,将符合条件的记录密文数据返回给数据查询用户。