一种基于SQL改写实现的数据库同态加密方法[发明专利]

(19)中华人民共和国国家知识产权局
人脸识别门
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201811281751.X
(22)申请日 2018.10.23
(71)申请人 杭州弗兰科信息安全科技有限公司
地址 310051 浙江省杭州市滨江区西兴街
道滨盛路1505号银丰大厦1801室
(72)发明人 牛自宾 杨万年 李卫明 
(51)Int.Cl.
G06F  21/62(2013.01)
G06F  16/22(2019.01)
土著菌
(54)发明名称一种基于SQL改写实现的数据库同态加密方法(57)摘要本发明公开一种基于SQL语句改写实现的数据库同态加密方法。该方法采用前置代理的方式,改造Proxy,对应用程序的SQL请求进行拦截并做透明化处理。当应用程序写数据时,Proxy将根据用户配置的敏感字段,对数据加密,然后存储到云数据库上。用户读数据时,Proxy从云数据库中获取密文数据,对数据解密,然后回复给
应用程序。Proxy改写SQL语句采用了同态加解密的算法,支持字段级别的加密粒度,将优化措施应用到密文数据。满足用户存储安全的需求,同时利用了云服务器的计算能力,而且整个过程对于
应用程序是透明的。权利要求书1页  说明书7页  附图7页CN 109409129 A 2019.03.01
C N  109409129
A
1.一种基于SQL语句改写实现的数据库同态加密方法,其特征在于包含以下步骤:步骤一:应用程序发送原始的SQL请求给Proxy;
步骤二:Proxy截取到SQL请求,在内部通过SQL语句改写模块对语句进行改写,然后转发给数据库系统;
步骤三:数据库系统收到改写后的SQL请求,内部处理后,返回结果给Proxy;
步骤四:Proxy收到结果,在内部调用结果处理模块对结果进行处理,然后转发给应用程序。
2.根据权利要求1所述的一种基于SQL语句改写实现的数据库同态加密方法,其特征在于,步骤二创建表的SQL请求,通过关键字enc设置需要加密的字段。
3.根据权利要求1所述的一种基于SQL语句改写实现的数据库同态加密方法,其特征在于,步骤二创建表的SQL请求,根据加密字段的类型,扩展为多个字段,用于支持不同的密文同态运算
4.根据权利要求1所述的一种基于SQL语句改写实现的数据库同态加密方法,其特征在于,步骤二增删改查操作的SQL请求,将原始字段的运算,改写为对扩展字段的密文同态运算。
5.根据权利要求1所述的一种基于SQL语句改写实现的数据库同态加密方法,其特征在于,步骤二创建索引的SQL请求,对原始字段创建索引,改写为对扩展字段分别建立索引,提高查询效率。
权 利 要 求 书1/1页CN 109409129 A
一种基于SQL改写实现的数据库同态加密方法
技术领域
[0001]本发明属于信息安全技术领域,涉及一种数据库敏感信息保护技术,尤其是一种基于SQL语句改写实现的数据库同态加密方法。
背景技术
[0002]随着云服务器的发展,越来越多的企业和个人把数据外包到公有云的数据库系统上进行管理。但是,云服务器数据泄露事件时有发生,数据安全成为用户采用云计算和云数据库的重大顾虑。
活动防盗窗[0003]数据库加密是解决数据安全问题的重要手段,目前有一种主流的数据库加密方案,也就是数据库产品自带的透明数据加密TDE(Transparent Data Encryption),但是TDE 存在一个问题,无法支持对加密后的密文进行运算,也就是原先在云数据库上对于明文的操作无法正常运用。
[0004]考虑一种很常见的场景,在云数据库中检索符合某些条件的记录。云数据库加密存储数据后,这个问题的处理方式一般是:应用程序从云数据库获取所有密文状态的记录,在本地全部进行解密,然后对明文检索,过滤出符合条件的记录。这显然会存在严重的性能问题,在数据规模大的情况下,这种方式基本不可使用。也就是说,上面的方式仅仅利用了云服务器的存储能力,并没有利用云服务器的计算能力。
[0005]另外一方面,应用程序需要比较大的改动,在代码中进行加密解密操作,这部分的代码修改是侵入性的,对应用程序不透明。
[0006]为了利用云服务器的计算能力,本发明使用同态加密技术来支持对密文进行运算。同态加密作为一种加密手段,支持直接对密文进行运算,运算的结果解密后等于对明文做同样操作的结果。换句话说,同态方案对操作和加密具有交换律,即先对明文进行加密后做同态运算,与先对明文进行运算
后进行加密,得到的结果是等价的。比如,具有同态性质的加密函数a、b满足Dec(En(a)⊙En(b))=a的加密函数,其中En是加密运算,Dec是解密运算,⊙分别对应明文和密文域上的运算。当代表加法时,称该加密为加同态加密,⊙
表示密文域上的加法运算;当代表乘法时,称该加密为乘同态加密,⊙表示密文域上的乘
法运算。
[0007]为了支持对应用程序是透明的,本发明采用前置代理的方式,在应用程序和数据库系统DBMS之间增加一层代理Proxy,对Proxy进行改造。Proxy截取客户端的SQL请求,进行SQL改写,转发给DBMS,从DBMS获取到结果后,对结果进行处理,回复给应用程序。整个过程对于应用程序是透明的。
发明内容
[0008]本发明的目的在于解决现有技术的不足,提出一种设计合理、安全高效的方法,即提供一种基于SQL语句改写实现的数据库同态加密,利用了云服务器的计算能力,同时对应用程序是透明的。
[0009]本发明解决其技术问题所采用的技术方案是:
谷氨酰胺合成酶[0010]应用程序向Proxy发送SQL请求,在Proxy对原始SQL语句解析,然后进行改写。改写后的SQL语句满足密文运算的功能。
[0011]目前的全同态加密算法(全同态的“全”指的是能够满足对任意函数进行计算),由于效率问题,无法在实际项目上应用。已知成熟的加密算法,可以在某一方面满足密文的同态运算,也就是部分同态加密。比如说OPE(Order-Preserving Encryption,OPE)支持保序的同态加密算法,Paillier支持加法的同态加密算法。因此,本发明使用多种加密算法来支持密文的同态运算,在请求密文运算的时候,选取支持该运算的同态加密算法。
[0012]为了支持SQL语句的同态运算,需要对表的字段进行扩展,用于支持不同的同态运算。
故障检测晶塔[0013]在实际的应用场景中,用户往往只有部分信息是敏感信息,对这部分数据(对应表的字段)才有加密的需求。同时加解密会带来一定的性能损耗,如果所有的字段都进行加密,会带来比较大的性能损耗。考虑到这些因素,本发明支持字段级别的加密粒度。[0014]在创建表的时候,通过关键字enc修饰字段,表示这个字段是敏感信息,需要加密处理。
[0015]考虑SQL支持的运算,对于数值类型(int、float等),支持的密文运算有:相等、大小比较、加减
乘除,对于字符串类型,支持的密文运算有:相等、大小比较、关键词检索。[0016]在创建表的时候,假定原始字段名为xxx。如果加密的字段是数值类型,扩展后的三个字段分别为:xxxoEQ,xxxoORDER,xxxoADD,这三个字段分别用于相等,大小比较,加减乘除的密文同态运算。如果加密的类型是字符串,扩展后的三个字段分别为:xxxoEQ,xxxoORDER,xxxoSWP,这三个字段分别用于相等,大小比较,关键词检索的同态运算。[0017]对于insert操作,Proxy将请求中的加密字段,分别调用加密算法对该字段的明文数据进行加密,加密后的结果作为扩展字段的取值,插入到数据库中。
[0018]对于select操作,Proxy首先改写查询的字段,如果是相等运算,使用xxxoEQ,如果是大小比较运算,使用xxxoORDER,如果是加减乘除,使用xxxoADD。然后改写查询条件where,将查询条件改写为对应扩展字段的密文运算。
[0019]对于update操作,Proxy首先改写加密字段更新的值,分别调用加密算法对该字段的明文数据进行加密,加密后的结果作为扩展字段的更新值,更新到数据库中。然后改写查询条件where,将查询条件改写为对应扩展字段的密文运算。
[0020]对于delete操作,Proxy将查询条件where中与加密字段相关的条件,改写为对应扩展字段的密文运算。
[0021]对于创建index操作,由于原始的字段扩展为多个字段,Proxy将在多个字段创建index,用于提高查询效率。
[0022]Proxy将改写后的SQL语句,发给DBMS执行,DBMS上执行密文的运算,并且将执行结果发给Proxy。对于select操作,Proxy获取查询的结果集,将查询字段中涉及到加密字段的数据,进行解密处理,然后将解密后的结果集回复给应用程序。对于insert、update、delete 操作,没有结果集需要处理,Proxy直接转发DBMS的处理结果给应用程序。整个过程对于应用程序是透明的。
[0023]在实际的项目中,用户为了提高查询性能,往往采取一些优化手段,典型的做法是
根据查询条件,在相应字段创建索引。对于这种场景,Proxy对创建索引的请求进行处理,改写为在扩展字段上建立索引,当查询的时候,能够利用扩展字段的索引大大提高查询效率。[0024]通过本发明提出的方案,取得了以下的技术效果:
[0025]利用云服务器的计算能力,支持的密文运算包括排序/加减乘除/关键词搜索;[0026]对应用程序是透明的;
[0027]支持字段级别的加密粒度;
[0028]创建索引的优化手段应用到密文数据。
附图说明
[0029]图1为一种基于SQL语句改写实现的数据库同态加密方法示意图
[0030]图2为创建table请求的改写流程图
[0031]图3为insert请求的改写流程图
[0032]图4为select请求的改写流程图
[0033]图5为update请求的改写流程图
[0034]图6为delete请求的改写流程图
[0035]图7为创建index请求的改写流程图
具体实施方式
[0036]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。
[0037]如图1所示是一种基于SQL语句改写实现的数据库同态加密方法,在Proxy进行改造,内部包含了SQL语句改写模块和结果处理模块。
[0038]应用程序的SQL请求,处理的具体步骤如下:
[0039]步骤一:应用程序发送原始的SQL请求给Proxy;
植物细胞培养[0040]步骤二:Proxy截取到SQL请求,在内部通过SQL语句改写模块对语句进行改写,然后转发给数据库系统;
[0041]步骤三:数据库系统收到改写后的SQL请求,内部处理后,返回结果给Proxy;[0042]步骤四:Proxy收到结果,在内部调用结果处理模块对结果进行处理,然后转发给应用程序。
[0043]以现实场景中的一个实例来详细说明SQL语句的改写流程,考虑在数据库中创建表staff,用于保存员工的薪水信息,员工姓名和薪水是敏感信息,需要进行加密。在创建表的时候,通过enc关键字设置员工姓名name和薪水salary字段加密。
[0044]图2所示,创建表的SQL请求:
[0045]create table staff(id int,name enc varchar(64),salary enc float);[0046]在步骤s201,Proxy收到创建table的请求;
[0047]在步骤s202,Proxy解析创建table的SQL语句;
[0048]在步骤s203,遍历创建表的字段,检查字段是否为敏感信息;
[0049]在步骤s204,检查字段是否有enc修饰;
[0050]在步骤s205,存在enc修饰字段,对字段扩展。在本实例中,name是字符串类型,扩

本文发布于:2024-09-22 14:29:23,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/107324.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:加密   改写   同态   数据库   运算   进行
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议