一种基于SQL改写实现的数据库同态加密方法技术

技术编号:20485959 阅读:57 留言:0更新日期:2019-03-02 19:24
本发明专利技术公开一种基于SQL语句改写实现的数据库同态加密方法。该方法采用前置代理的方式,改造Proxy,对应用程序的SQL请求进行拦截并做透明化处理。当应用程序写数据时,Proxy将根据用户配置的敏感字段,对数据加密,然后存储到云数据库上。用户读数据时,Proxy从云数据库中获取密文数据,对数据解密,然后回复给应用程序。Proxy改写SQL语句采用了同态加解密的算法,支持字段级别的加密粒度,将优化措施应用到密文数据。满足用户存储安全的需求,同时利用了云服务器的计算能力,而且整个过程对于应用程序是透明的。

【技术实现步骤摘要】
一种基于SQL改写实现的数据库同态加密方法
本专利技术属于信息安全
,涉及一种数据库敏感信息保护技术,尤其是一种基于SQL语句改写实现的数据库同态加密方法。
技术介绍
随着云服务器的发展,越来越多的企业和个人把数据外包到公有云的数据库系统上进行管理。但是,云服务器数据泄露事件时有发生,数据安全成为用户采用云计算和云数据库的重大顾虑。数据库加密是解决数据安全问题的重要手段,目前有一种主流的数据库加密方案,也就是数据库产品自带的透明数据加密TDE(TransparentDataEncryption),但是TDE存在一个问题,无法支持对加密后的密文进行运算,也就是原先在云数据库上对于明文的操作无法正常运用。考虑一种很常见的场景,在云数据库中检索符合某些条件的记录。云数据库加密存储数据后,这个问题的处理方式一般是:应用程序从云数据库获取所有密文状态的记录,在本地全部进行解密,然后对明文检索,过滤出符合条件的记录。这显然会存在严重的性能问题,在数据规模大的情况下,这种方式基本不可使用。也就是说,上面的方式仅仅利用了云服务器的存储能力,并没有利用云服务器的计算能力。另外一方面,应用程序需要比较大的改动,在代码中进行加密解密操作,这部分的代码修改是侵入性的,对应用程序不透明。为了利用云服务器的计算能力,本专利技术使用同态加密技术来支持对密文进行运算。同态加密作为一种加密手段,支持直接对密文进行运算,运算的结果解密后等于对明文做同样操作的结果。换句话说,同态方案对操作和加密具有交换律,即先对明文进行加密后做同态运算,与先对明文进行运算后进行加密,得到的结果是等价的。比如,具有同态性质的加密函数a、b满足Dec(En(a)⊙En(b))=a的加密函数,其中En是加密运算,Dec是解密运算,⊙分别对应明文和密文域上的运算。当代表加法时,称该加密为加同态加密,⊙表示密文域上的加法运算;当代表乘法时,称该加密为乘同态加密,⊙表示密文域上的乘法运算。为了支持对应用程序是透明的,本专利技术采用前置代理的方式,在应用程序和数据库系统DBMS之间增加一层代理Proxy,对Proxy进行改造。Proxy截取客户端的SQL请求,进行SQL改写,转发给DBMS,从DBMS获取到结果后,对结果进行处理,回复给应用程序。整个过程对于应用程序是透明的。
技术实现思路
本专利技术的目的在于解决现有技术的不足,提出一种设计合理、安全高效的方法,即提供一种基于SQL语句改写实现的数据库同态加密,利用了云服务器的计算能力,同时对应用程序是透明的。本专利技术解决其技术问题所采用的技术方案是:应用程序向Proxy发送SQL请求,在Proxy对原始SQL语句解析,然后进行改写。改写后的SQL语句满足密文运算的功能。目前的全同态加密算法(全同态的“全”指的是能够满足对任意函数进行计算),由于效率问题,无法在实际项目上应用。已知成熟的加密算法,可以在某一方面满足密文的同态运算,也就是部分同态加密。比如说OPE(Order-PreservingEncryption,OPE)支持保序的同态加密算法,Paillier支持加法的同态加密算法。因此,本专利技术使用多种加密算法来支持密文的同态运算,在请求密文运算的时候,选取支持该运算的同态加密算法。为了支持SQL语句的同态运算,需要对表的字段进行扩展,用于支持不同的同态运算。在实际的应用场景中,用户往往只有部分信息是敏感信息,对这部分数据(对应表的字段)才有加密的需求。同时加解密会带来一定的性能损耗,如果所有的字段都进行加密,会带来比较大的性能损耗。考虑到这些因素,本专利技术支持字段级别的加密粒度。在创建表的时候,通过关键字enc修饰字段,表示这个字段是敏感信息,需要加密处理。考虑SQL支持的运算,对于数值类型(int、float等),支持的密文运算有:相等、大小比较、加减乘除,对于字符串类型,支持的密文运算有:相等、大小比较、关键词检索。在创建表的时候,假定原始字段名为xxx。如果加密的字段是数值类型,扩展后的三个字段分别为:xxxoEQ,xxxoORDER,xxxoADD,这三个字段分别用于相等,大小比较,加减乘除的密文同态运算。如果加密的类型是字符串,扩展后的三个字段分别为:xxxoEQ,xxxoORDER,xxxoSWP,这三个字段分别用于相等,大小比较,关键词检索的同态运算。对于insert操作,Proxy将请求中的加密字段,分别调用加密算法对该字段的明文数据进行加密,加密后的结果作为扩展字段的取值,插入到数据库中。对于select操作,Proxy首先改写查询的字段,如果是相等运算,使用xxxoEQ,如果是大小比较运算,使用xxxoORDER,如果是加减乘除,使用xxxoADD。然后改写查询条件where,将查询条件改写为对应扩展字段的密文运算。对于update操作,Proxy首先改写加密字段更新的值,分别调用加密算法对该字段的明文数据进行加密,加密后的结果作为扩展字段的更新值,更新到数据库中。然后改写查询条件where,将查询条件改写为对应扩展字段的密文运算。对于delete操作,Proxy将查询条件where中与加密字段相关的条件,改写为对应扩展字段的密文运算。对于创建index操作,由于原始的字段扩展为多个字段,Proxy将在多个字段创建index,用于提高查询效率。Proxy将改写后的SQL语句,发给DBMS执行,DBMS上执行密文的运算,并且将执行结果发给Proxy。对于select操作,Proxy获取查询的结果集,将查询字段中涉及到加密字段的数据,进行解密处理,然后将解密后的结果集回复给应用程序。对于insert、update、delete操作,没有结果集需要处理,Proxy直接转发DBMS的处理结果给应用程序。整个过程对于应用程序是透明的。在实际的项目中,用户为了提高查询性能,往往采取一些优化手段,典型的做法是根据查询条件,在相应字段创建索引。对于这种场景,Proxy对创建索引的请求进行处理,改写为在扩展字段上建立索引,当查询的时候,能够利用扩展字段的索引大大提高查询效率。通过本专利技术提出的方案,取得了以下的技术效果:利用云服务器的计算能力,支持的密文运算包括排序/加减乘除/关键词搜索;对应用程序是透明的;支持字段级别的加密粒度;创建索引的优化手段应用到密文数据。附图说明图1为一种基于SQL语句改写实现的数据库同态加密方法示意图图2为创建table请求的改写流程图图3为insert请求的改写流程图图4为select请求的改写流程图图5为update请求的改写流程图图6为delete请求的改写流程图图7为创建index请求的改写流程图具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。如图1所示是一种基于SQL语句改写实现的数据库同态加密方法,在Proxy进行改造,内部包含了SQL语句改写模块和结果处理模块。应用程序的SQL请求,处理的具体步骤如下:步骤一:应用程序发送原始的SQL请求给Proxy;步骤二:Proxy截取到SQL请求,在内部通过SQL语句改写模块对语句进行改写,然后转发给数据库系统;步骤三:数据库系统收到改写后的SQL请求,内部处理后,返回结本文档来自技高网
...

【技术保护点】
1.一种基于SQL语句改写实现的数据库同态加密方法,其特征在于包含以下步骤:步骤一:应用程序发送原始的SQL请求给Proxy;步骤二:Proxy截取到SQL请求,在内部通过SQL语句改写模块对语句进行改写,然后转发给数据库系统;步骤三:数据库系统收到改写后的SQL请求,内部处理后,返回结果给Proxy;步骤四:Proxy收到结果,在内部调用结果处理模块对结果进行处理,然后转发给应用程序。

【技术特征摘要】
1.一种基于SQL语句改写实现的数据库同态加密方法,其特征在于包含以下步骤:步骤一:应用程序发送原始的SQL请求给Proxy;步骤二:Proxy截取到SQL请求,在内部通过SQL语句改写模块对语句进行改写,然后转发给数据库系统;步骤三:数据库系统收到改写后的SQL请求,内部处理后,返回结果给Proxy;步骤四:Proxy收到结果,在内部调用结果处理模块对结果进行处理,然后转发给应用程序。2.根据权利要求1所述的一种基于SQL语句改写实现的数据库同态加密方法,其特征在于,步骤二创建表的SQL请求,通过关键字enc设置需要加...

【专利技术属性】
技术研发人员:牛自宾杨万年李卫明
申请(专利权)人:杭州弗兰科信息安全科技有限公司
类型:发明
国别省市:浙江,33

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

1