1.一种基于垂直划分的密文数据库查询方法,其特征在于:所述方法包括以下步骤:S1、对于数据库中的每个表,根据列数据的结构和特性以及从统计用户查询中获得的关于数据应用的特点进行垂直划分,得到垂直划分的相关列集合;
S2、对垂直划分的相关列集合数据进行加密,得到基于垂直划分的密文列数据;
S3、对基于垂直划分的密文列数据进行不同粒度的授权;
S4、对基于垂直划分的密文列数据的授权进行验证;
S5、对验证通过的基于垂直划分的密文列数据进行相应授权粒度的查询;
S6、对基于垂直划分的密文列数据进行解密。
2.根据权利要求1所述的一种基于垂直划分的密文数据库查询方法,其特征在于:步骤S2中,所述对垂直划分的相关列集合数据进行加密,具体包括:S21、获得垂直划分后的一个明文属性列Ai(i∈{1,...,n});
x y
S22、获得该明文属性列所属用户的公钥X=g 和Y=g ,随机选择r1和r2,调用哈希部件、模求幂部件、异或部件和双线性对部件,对该明文属性列上的每一个明文M计算下面的密文:
x'
其中,X'是垂直划分后另一属性列所属用户的公钥,X'=g ,H1,H2,H3是哈希函数, 是异或操作,||是字符串的连接操作,e是双线性对运算;
S23、传输密文并存储到数据库中。
3.根据权利要求1所述的一种基于垂直划分的密文数据库查询方法,其特征在于:步骤S3中,所述对基于垂直划分的密文列数据进行不同粒度的授权,具体包括:S31、接收不同粒度的授权请求;
S32、针对不同粒度的授权请求,计算相应的授权限门:a、针对用户粒度的授权,利用用户的私钥(x,y)生成基于垂直划分的密文列数据的授权限门:
r
td=x
b、针对密文粒度的授权,利用用户的私钥(x,y),调用模求幂部件,生成基于垂直划分的密文列数据的授权限门:
4.根据权利要求1所述的一种基于垂直划分的密文数据库查询方法,其特征在于:步骤S4中,所述对基于垂直划分的密文列数据的授权进行验证,具体包括:S41、接收不同粒度的授权限门;
S42、对不同粒度的授权限门进行验证:r
a、针对用户粒度的授权,利用垂直划分后属性列所属用户的公钥X对td进行验证:r
其中,td是对垂直划分的密文列数据生成的用户粒度的授权限门;如果该验证通过,则进入步骤S5;否则,向用户输出错误的警告信息;
b、针对密文粒度的授权,利用垂直划分后属性列所属用户的公钥X和密文C=(C1,C2,c
C3,C4)对td进行验证:c
e(g,td)=e(X,C2)c
其中,td是对垂直划分的密文列数据生成的用户粒度的授权限门;如果该验证通过,则进入步骤S5;否则,向用户输出错误的警告信息。
5.根据权利要求1所述的一种基于垂直划分的密文数据库查询方法,其特征在于:步骤S5中,所述对验证通过的基于垂直划分的密文列数据进行相应授权粒度的查询,具体包括:S51、获取分别来自垂直划分后的密文属性列中的两个元组Ci=(Ci,1,Ci,2,Ci,3,Ci,4)和Cj=(Cj,1,Cj,2,Cj,3,Cj,4);
S52、获取查询的类型,进而执行相应的操作:a、当查询的类型是一对一的查询,获得分别来自垂直划分后的密文属性列的授权限门和 做如下的计算:
r c
其中,td是对垂直划分的密文列数据生成的用户粒度的授权限门,td是对垂直划分的密文列数据生成的用户粒度的授权限门,X是明文属性列所属用户的公钥,X'是垂直划分后另一属性列所属用户的公钥,H2是哈希函数,e是双线性对运算;若该等式成立,则进入步骤S6;
b、当查询的类型是一对多的查询,获得分别来自垂直划分后的密文属性列的授权限门和 做如下的计算:
若该等式成立,则进入步骤S6;
c、当查询的类型是多对多的查询,获得来自垂直划分后的密文属性列的授权限门做如下的计算:
或获得来自垂直划分后的密文属性列的授权限门 做如下的计算:若上述两等式之一成立,则进入步骤S6。
6.根据权利要求1所述的一种基于垂直划分的密文数据库查询方法,其特征在于:步骤S6中,所述对基于垂直划分的密文列数据进行解密,具体包括:S61、接收查询结果密文C=(C1,C2,C3,C4),获得该用户的私钥(x,y)和垂直划分后另一属性列所属用户的公钥X';
S62、调用模求幂部件、哈希部件和异或部件,利用用户的私钥(x,y),进行如下的计算,得到M:
S63、利用M和r1进行密文的验证:其中,H1,H2,H3是哈希函数;若上述两等式均成立,则验证通过,输出M;否则,输出错误的警告信息。
7.一种基于垂直划分的密文数据库查询系统,其特征在于:所述系统包括:垂直划分模块,用于对于数据库中的每个表,根据列数据的结构和特性以及从统计用户查询中获得的关于数据应用的特点进行垂直划分,得到垂直划分的相关列集合;
加密模块,用于对垂直划分的相关列集合数据进行加密,得到基于垂直划分的密文列数据;
授权模块,用于对基于垂直划分的密文列数据进行不同粒度的授权;
授权验证模块,用于对基于垂直划分的密文列数据的授权进行验证;
查询执行模块,用于对验证通过的基于垂直划分的密文列数据进行相应授权粒度的查询;
解密模块,用于对基于垂直划分的密文列数据进行解密。
8.根据权利要求7所述的一种基于垂直划分的密文数据库查询系统,其特征在于:所述授权模块,具体如下:
用于接收不同粒度的授权请求,针对不同粒度的授权请求,计算相应的授权限门:a、针对用户粒度的授权,利用用户的私钥生成授权限门,生成基于垂直划分的密文列数据的授权限门,将生成的授权限门发送给授权验证模块;
b、针对密文粒度的授权,利用用户的私钥,调用模求幂部件,生成基于垂直划分的密文列数据的授权限门,将生成的授权限门发送给授权验证模块。
9.根据权利要求7所述的一种基于垂直划分的密文数据库查询系统,其特征在于:所述授权验证模块,具体如下:
用于接收不同粒度的授权限门,对不同粒度的授权限门进行验证:a、针对用户粒度的授权,利用用户的公钥进行验证,其中调用模求幂部件,如果验证通过,则进入查询执行模块,否则,向用户输出错误的警告信息;
b、针对密文粒度的授权,利用用户的公钥和要查询的密文进行验证,其中调用模求幂部件和双线性对部件,如果验证通过,则进入查询执行模块,否则,处理器向用户输出错误的警告信息。
10.根据权利要求7所述的一种基于垂直划分的密文数据库查询系统,其特征在于:所述查询执行模块,具体如下:
用于获取密文数据库中的连接属性列,针对三种不同的查询类型执行相应的操作:a、针对一对一的查询,调用授权模块和授权验证模块接收两个连接属性列上的授权限门,利用这两个密文粒度的授权限门,调用双线性对部件和模求幂部件,对密文进行判断,如果测试通过,则将该密文对传输给解密模块;
b、针对一对多的查询,调用授权模块和授权验证模块接受两个连接属性列上的授权限门,利用这一个密文粒度的授权限门和一个用户粒度的授权限门,调用双线性对部件和模求幂部件,对密文进行判断,如果测试通过,则将该密文对传输给解密模块,否则,继续处理下一密文对,直到所有的密文对处理完一遍;
c、针对多对多的查询,调用授权模块和授权验证模块接受两个连接属性列上的授权限门,利用这两个用户粒度的授权限门,调用双线性对部件和模求幂部件,对密文进行判断,如果测试通过,则将该密文对传输给解密模块,否则,继续处理下一密文对,直到所有的密文对处理完一遍。