一种面向密态OLTP任务的SQL查询重写方法技术

技术编号:31089591 阅读:18 留言:0更新日期:2021-12-01 12:50
本发明专利技术公开了一种面向密态OLTP任务的SQL查询重写方法,包括以下步骤:获取客户端发出的明文SQL查询,利用词法语法分析器将所述明文SQL查询转为查询树,根据映射关系加密所述查询树,得加密的查询树,将加密的查询树转换为字符串形式的密文SQL,将所述字符串形式的密文SQL发送给服务器,服务器根据所述字符串形式的密文SQL进行密文查询,该方法的运行效率较高。率较高。率较高。

【技术实现步骤摘要】
一种面向密态OLTP任务的SQL查询重写方法


[0001]本专利技术属于计算机
,涉及一种面向密态OLTP任务的SQL查询重写方法。

技术介绍

[0002]身处大数据时代的背景下,数据已经渗透到当今社会每一个行业领域,人们日常的生活工作等行为都在产生着大量的数据。基于大数据的应用也越来越广泛,各种利用大数据进行决策发展的领域正在协助企业不断创新运营模式,发展新的业务。高速增长的数据使得云计算成为实现有效的数据管理和计算所不可或缺的关键设施。然而,海量私人数据在云端进行存储运算,给我们的工作生活提供方便的同时,势必也会带来不可忽视的隐私安全隐患。传统的数据库技术、密码学技术已经远远不能满足人们日益增长的对新型和复杂数据查询和计算在类别上和效率上的需求。实现密态数据库系统必不可少的功能组件就是将明文SQL转换为密文SQL的转换机制。
[0003]现有专利CN109409129A公开了一种基于SQL改写实现的数据库同台加密的方法,其中包括对客户端发送的请求进行拦截的并改写的代理层,对明文进行加密的模块,以及对服务器返回结果进行解密的模块。其中改写模块具体操作有建表时依据字段的数据类型不同,数值型的字段将被扩展为xxxoEQ,xxxoORDER,xxxoADD,分别表示为相等,比较和加减乘除的同态运算;字符串类型则将同态运算替换为关键词检索运算。依据密文表的扩展结构,对于插入操作来说,将插入语句中的列名进行扩展替换,并对元组中的值采用相应的加密算法进行加密。对于查询操作,此方法根据查询语句中涉及的操作不同,选择查询不同的加密列。其他如删除,更新等操作也大同小异。此方法的不足在于:未对表名,schema以及列名进行加密,导致有泄漏隐私数据的风险。对于建表来说,此方法无法依据让用户自由选择加密列,而是统一扩展为三个加密列。对于同态运算操作来讲,此方法将加减与乘除都放在了一个加密列上,采用全同态加密势必会大幅度降低运行效率。对于可用性来说,此专利并未提供星号表达式,Join子句以及UDF函数(user defined function,用户自定义函数)处理等常用查询的改写。

技术实现思路

[0004]本专利技术的目的在于克服上述现有技术的缺点,提供了一种面向密态OLTP任务的SQL查询重写方法,该方法的运行效率较高。
[0005]为达到上述目的,本专利技术所述的面向密态OLTP任务的SQL查询重写方法包括以下步骤:
[0006]获取客户端发出的明文SQL查询,利用词法语法分析器将所述明文SQL查询转为查询树,根据映射关系加密所述查询树,得加密的查询树,将加密的查询树转换为字符串形式的密文SQL,将所述字符串形式的密文SQL发送给服务器,服务器根据所述字符串形式的密文SQL进行密文查询。
[0007]明文SQL为create语句、select语句、insert子句或update子句。
[0008]还包括:获取明文SQL的表名及列名与密文SQL中的表名及列名进行映射关系、密态数据库中各字段的映射关系以及密态数据库中各段所需的加密方式。
[0009]加密的方式包括同态加法、同态乘法、可比较加密及等值加密。
[0010]对查询树中所有的叶节点类型均进行加密,其中,包括函数调用、字段名、星号通配符、常量值及表达式。
[0011]本专利技术具有以下有益效果:
[0012]本专利技术所述的面向密态OLTP任务的SQL查询重写方法在具体操作时,利用词法语法分析器将所述明文SQL查询转为查询树,根据映射关系加密所述查询树,得加密的查询树,将加密的查询树转换为字符串形式的密文SQL,支持表名以及表名中字段名的双向映射加密,支持对于不同的操作采用不同的用户自定义函数进行处理,采用对称同态运算,将同态加减与同态乘除区分开,以达到更高的效率。
附图说明
[0013]图1为处理create请求的重写流程图;
[0014]图2为处理insert请求的重写流程图;
[0015]图3为处理select请求的重写流程图;
[0016]图4为处理update请求的重写流程图;
[0017]图5为字段映射模块的结构图;
[0018]图6为字段映射模块GET的流程图。
具体实施方式
[0019]为了使本
的人员更好地理解本专利技术方案,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分的实施例,不是全部的实施例,而并非要限制本专利技术公开的范围。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要的混淆本专利技术公开的概念。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本专利技术保护的范围。
[0020]在附图中示出了根据本专利技术公开实施例的结构示意图。这些图并非是按比例绘制的,其中为了清楚表达的目的,放大了某些细节,并且可能省略了某些细节。图中所示出的各种区域、层的形状及它们之间的相对大小、位置关系仅是示例性的,实际中可能由于制造公差或技术限制而有所偏差,并且本领域技术人员根据实际所需可以另外设计具有不同形状、大小、相对位置的区域/层。
[0021]参考图1,本专利技术所述的面向密态OLTP任务的SQL查询重写方法包括以下步骤:
[0022]查询加密模块获取用户端发出的明文SQL查询,利用词法语法分析器将所述明文SQL查询转为查询树,根据预设映射关系加密所述查询树,得加密的查询树,将加密的查询树转换为字符串形式的密文SQL,再将所述字符串形式的密文SQL发送给服务器,服务器根据所述字符串形式的密文SQL进行密文查询;
[0023]结果解密模块将密文查询的结果进行解密,将解密结果发送给外界的应用程序,其中,解密结果与直接利用明文SQL在数据库上查询的结果相同。
[0024]字段映射模块用于存储明文SQL的表名及列名与密文SQL中的表名及列名进行映射关系、密态数据库中各字段的映射关系以及密态数据库中各段所需的加密方式,其中,CurrentTables用来存储当前查询所涉及的所有表,以此来加速寻找字段名的映射关系。
[0025]查询树中所有的叶节点类型都需要进行加密,包括函数调用、字段名、星号通配符、常量值及表达式。对于函数调用,仅处理需要在本地计算的特殊函数,比如now()函数,在本地将其替换为当前时间的常量;
[0026]字段名涉及到的别名问题,这也是一个需要加密的数据,同样,对于别名也进行随机替换,区别在于不会将别名的映射持久化存储,并且别名后缀会统一添加密文信息;
[0027]对于星号通配符,当不做处理时,则会检出所有的加密列,造成重复,所以将星号在本地展开,从每个字段的加密列中选择一个默认值作为星号通配符的展开项;
[0028]对于常量值,由于没有字段名与之对应,则解密时无法确定采用何种解密方式,解决方法为将加密方式隐藏到别名中即可;
[0029]对于表达式的处本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种面向密态OLTP任务的SQL查询重写方法,其特征在于,包括以下步骤:获取客户端发出的明文SQL查询,利用词法语法分析器将所述明文SQL查询转为查询树,根据映射关系加密所述查询树,得加密的查询树,将加密的查询树转换为字符串形式的密文SQL,将所述字符串形式的密文SQL发送给服务器,服务器根据所述字符串形式的密文SQL进行密文查询。2.根据权利要求1所述的面向密态OLTP任务的SQL查询重写方法,其特征在于,明文SQL为create语句、select语句、insert子句或update子句。3.根据权利要求1...

【专利技术属性】
技术研发人员:李辉李政付艳田琪
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1