1.适合云环境的密文存储与连接查询系统,其特征在于:包括设置在客户端的第一处理器以及设置在数据库服务器端的第二处理器,所述第一处理器包括加密模块、解密模块以及查询代理模块,所述第二处理器包括查询执行模块,其中:所述加密模块,用于对用户待加密的明文属性列进行加密处理,形成密文、完成加密,并将生成的密文发送到密文数据库中进行存储;
所述解密模块,用于对密文数据库或查询执行模块发来的密文进行解密处理,形成明文、完成解密,并对密文进行验证,若验证通过,则将明文输出给用户;否则,向用户输出错误的警告信息;
所述查询代理模块,用于辅助进行加密、解密和查询执行;
所述查询执行模块,用于对用户提交的密文连接查询在密文数据库上进行执行,从密文数据库中获取待连接的两个属性列,在这两个属性列中各取一个密文值,形成待连接的密文对,判断该待连接的密文对是否满足连接条件,若满足则将密文传输给解密模块,通过解密模块向用户传递明文连接查询结果;否则,继续获取下一待连接的密文对进行判断,直到所有的密文对处理完一遍。
2.根据权利要求1所述的适合云环境的密文存储与连接查询系统,其特征在于:所述加密模块具体如下:用于接收用户待加密的明文属性列,调用随机数生成部件、模求幂部件和哈希部件,根据查询代理模块传递过来的该属性列上的秘密值和用户的公钥,对该明文属性列上的每一个明文进行计算生成密文,并将生成的密文发送到密文数据库中进行存储。
3.根据权利要求1所述的适合云环境的密文存储与连接查询系统,其特征在于:所述解密模块具体如下:用于接收密文数据库或查询执行模块发来的密文,调用模求幂部件和哈希部件,根据用户的私钥计算得到明文,并利用查询代理模块传递过来的该密文所在属性列上的秘密值,对密文进行验证,若验证通过,则将明文输出给用户;否则,向用户输出错误的警告信息。
4.根据权利要求1所述的适合云环境的密文存储与连接查询系统,其特征在于:所述查询执行模块具体如下:用于接收用户提交的密文连接查询,从密文数据库中获取待连接的两个属性列,在这两个属性列中各取一个密文值,形成待连接的密文对,利用查询代理模块生成的查询限门,调用双线性对部件和模求幂部件判断该待连接的密文对是否满足连接条件,若满足则将密文传输给解密模块,通过解密模块向用户传递明文连接查询结果;否则,继续获取下一待连接的密文对进行判断,直到所有的密文对处理完一遍。
5.基于权利要求1所述系统的适合云环境的密文存储与连接查询方法,其特征在于所述方法包括:加密过程:加密模块对用户待加密的明文属性列进行加密处理,形成密文、完成加密,并将生成的密文发送到密文数据库中进行存储;
解密过程:解密模块对密文数据库或查询执行模块发来的密文进行解密处理,形成明文、完成解密,并对密文进行验证,若验证通过,则将明文输出给用户;否则,向用户输出错误的警告信息;
查询执行过程:查询执行模块对用户提交的密文连接查询在密文数据库上进行执行,从密文数据库中获取待连接的两个属性列,在这两个属性列中各取一个密文值,形成待连接的密文对,判断该待连接的密文对是否满足连接条件,若满足则将密文传输给解密模块,通过解密模块向用户传递明文连接查询结果;否则,继续获取下一待连接的密文对进行判断,直到所有的密文对处理完一遍。
6.根据权利要求5所述的适合云环境的密文存储与连接查询方法,其特征在于:所述加密过程具体如下:加密模块接收用户待加密的明文属性列,调用随机数生成部件、模求幂部件和哈希部件,根据查询代理模块传递过来的该属性列上的秘密值和用户的公钥,对该明文属性列上的每一个明文进行计算生成密文,并将生成的密文发送到密文数据库中进行存储。
7.根据权利要求5所述的适合云环境的密文存储与连接查询方法,其特征在于:所述解密过程具体如下:解密模块接收密文数据库或查询执行模块发来的密文,调用模求幂部件和哈希部件,根据用户的私钥计算得到明文,并利用查询代理模块传递过来的该密文所在属性列上的秘密值,对密文进行验证,若验证通过,则将明文输出给用户;否则,向用户输出错误的警告信息。
8.根据权利要求5所述的适合云环境的密文存储与连接查询方法,其特征在于:所述查询执行过程具体如下:查询执行模块接收用户提交的密文连接查询,从密文数据库中获取待连接的两个属性列,在这两个属性列中各取一个密文值,形成待连接的密文对,利用查询代理模块生成的查询限门,调用双线性对部件和模求幂部件判断该待连接的密文对是否满足连接条件,若满足则将密文传输给解密模块,通过解密模块向用户传递明文连接查询结果;否则,继续取得下一待连接的密文对进行判断,直到所有的密文对处理完一遍。
9.根据权利要求5-8任一项所述的适合云环境的密文存储与连接查询方法,其特征在于所述方法具体包括以下步骤:
1)加密过程
1.1)用户待加密关系R的明文属性列A传输到加密模块后,加密模块调用查询代理模块获得属性列A上的秘密值(αA,βA);
x
1.2)加密模块获得用户的公钥X=g,调用随机数生成部件得到随机数r1,r2,r3,接着调用模求幂部件和哈希部件,按下式对明文属性列A上的每一个明文进行计算,生成密文:
1.3)将生成的密文发送到密文数据库中进行存储;
2)解密过程
2.1)解密模块接收密文数据库或查询执行模块发来的密文CA=(C1,C2,C3,C4,C5,C6),获得用户的私钥x;
2.2)解密模块调用模求幂部件和哈希部件,利用用户的私钥x,按下式计算得到明文m1:
2.3)解密模块调用查询代理模块得到密文CA=(C1,C2,C3,C4,C5,C6)所在属性列上的秘密值(αA,βA);
2.4)解密模块利用m1,r1,r2,αA,βA对密文CA=(C1,C2,C3,C4,C5,C6)进行验证:
2.5)若上述等式成立,则验证通过,解密模块将明文m1输出给用户;否则,解密模块向用户输出错误的警告信息;
3)查询执行过程
3.1)查询执行模块收到用户提交的待连接关系R的密文属性列A和关系S的密文属性列B上的密文连接查询;
3.2)查询执行模块调用查询代理模块,得到允许后获得执行密文连接查询所需的查询限门trapdoor:trapdoor=(βB/αA,βA/αB)
3.3)查询执行模块取得关系R的密文属性列A上一个密文值CA=(C1,C2,C3,C4,C5,C6),关系S的密文属性列B上的一个密文值CB=(C′1,C′2,C′3,C′4,C′5,C′6),按下式形成待连接的密文对:e(C2,C′4),e(C4,C′2),e(C1,C′3),e(C′1,C3)
3.4)接着查询执行模块利用查询限门trapdoor,调用双线性对部件和模求幂部件对待连接的密文对进行如下的判断:
3.5)若上述等式成立,说明满足连接条件,则查询执行模块将这一密文对传输给解密模块,解密模块按照上述步骤2)的解密过程对该密文对进行解密,并将最终的结果返回给用户;否则,返回步骤3.3)继续取得下一待连接的密文对,对该密文对进行相同的处理,直到所有的密文对处理完一遍。