本发明专利技术涉及一种通用数据库透明加密系统,属于信息安全以及数据库加密技术领域。本发明专利技术首先对已有的数据表进行加密改造:记加密字段P1所在表为T1,首先,基于加密字段P1建立密文索引字段I1;然后,基于保序哈希函数将待加密字段内容映射到哈希值,并将其作为索引值插入I1字段。系统包括SQL网关模块和加密插件模块,SQL网关模块用于接收并重写客户端发起的SQL语句,然后发送到数据库服务器,并将数据库服务器返回的结果转发到客户端;加密插件模块位于数据库内,主要包括一系列用户自定义函数UDF,根据重写后的SQL语句,实现加密、解密、以及密文索引功能。对比现有技术,本发明专利技术实现了真正通用的数据库加密系统。
【技术实现步骤摘要】
一种通用数据库透明加密系统
本专利技术涉及一种网关式数据库透明加密系统,属于信息安全以及数据库加密
技术介绍
目前,数据泄露事件频频发生,各行各领域都不能幸免。明文数据在数据库中的存储是不安全的,攻击者能通过社会工程和技术入侵等手段来进行数据窃取。数据库的安全日益重要,对数据库中的敏感字段进行加密是有效的安全手段。对数据库敏感字段加密可以通过触发器和视图结合的方式来实现,这是一种库内加密的方式。它的核心思想在于利用数据库自己提供的视图和触发器来进行原表数据的隐藏和实现对数据增删改查等操作中的加密和解密,并且利用数据库提供的自定义索引机制来实现加密后对数据的快速检索。但是这种方式受制于数据库自身的自定义索引的机制,仅适用于ORACLE等少数数据库,并不是通用的方案。CRYPTDB是一种网关式数据库加密系统原型,通过改写SQL语句实现了透明加密。它将数据嵌套进多个加密层,每层都使用不同的加密方法以支持不同的查询操作。虽然其理论上可以支持所有的数据库,但是由于其加密解密发生在网关上,使得其不能支持全部的SQL语句,尤其是字段上的运算和函数,所以也不是通用的方案。上述已有的数据库加密技术虽然能在某些数据库上或者对某些SQL请求实现敏感数据的加密,以起到保护用户数据的效果。然而,在具有多类数据库和多种SQL语句的系统下,并不能满足需求。本专利技术的目的是致力于解决上述不能支持通用数据库和通用SQL的技术缺陷,提出一种通用的数据库透明加密系统。
技术实现思路
本专利技术的目的是针对现有数据库加密技术存在的不支持通用数据库类型和通用SQL语句类型的问题,提出一种通用的数据库透明加密系统,该系统能够在不同的数据库上实现,并且能够兼容所有的SQL语句类型。本专利技术的目的是通过以下技术方案实现的:一种通用数据库透明加密系统,基于现有数据库管理系统,首先对已有的数据表进行如下加密改造:记加密字段P1所在表为T1,首先,基于加密字段P1建立密文索引字段I1,然后,基于保序哈希函数将待加密字段内容映射到哈希值H1,并将H1存入T1中的I1字段,此时,映射后的哈希值偏序关系体现了待加密字段内容的偏序关系,基于这种关系,可以实现对加密字段的等值查询和范围查询;包括SQL网关模块和加密插件模块;SQL网关模块与数据库管理系统相连接,数据库管理系统与加密插件模块相连接;SQL网关模块,位于数据库客户端和数据库服务器之间,是客户端访问数据库服务器的代理;用于接收客户端发起的SQL语句,并对客户端发起的SQL请求进行重写,然后发送到数据库服务器;并将数据库服务器返回的结果转发到客户端;所述对客户端发起的SQL请求进行重写就是将客户端发起的SQL语句改写成所述加密插件模块可识别并处理的SQL语句;加密插件模块,位于数据库内,主要包含一系列用户自定义函数UDF,根据重写后的SQL语句,实现加密、解密,以及密文索引功能。作为优选,所述SQL网关模块对接收的SQL请求进行重写,加密插件实现加密解密函数以及索引函数的调用,具体为:(1)对于INSERT请求,SQL网关将请求中加密字段的值替换为加密函数的调用,该函数调用的参数为该字段的明文内容,同时将对应密文索引字段的内容填充为相应的索引函数的调用,该函数调用的参数为字段的明文内容。该重写后的请求在数据库内,由加密插件实现加密函数,根据明文和密钥生成密文,同时,加密插件实现索引函数,根据明文生成索引值。(2)对于SELECT请求,SQL网关将语句中查询条件WHERE前的加密字段替换为解密函数的调用,该函数调用的参数为该字段的密文字段名称,将查询条件WHERE中与加密字段相关的条件,替换为对应的密文索引条件。加密插件实现解密函数,根据密文和密钥,生成明文。加密插件还实现索引函数,根据查询条件生成索引值。该重写后的请求在数据库内,依据已有的密文索引生成满足查询条件的明文记录集。(3)对于UPDATE请求,SQL网关将更新条件WHERE前加密字段的新值替换为加密函数的调用,该函数调用的参数为该字段的明文内容,同时将对应密文索引字段的内容填充为相应的索引值,将WHERE查询条件中与加密字段相关的条件,替换为对应的密文索引条件。该重写后的请求在数据库内,由加密插件实现加密函数,根据明文和密钥生成密文,并根据明文生成索引值,同时,加密插件根据查询条件,依据已有的密文索引生成满足查询条件的记录集。(4)对于DELETE请求,SQL网关将查询WHERE条件中与加密字段相关的条件,替换为对应的密文索引条件。该重写后的请求在数据库内,由加密插件根据查询条件,依据已有的密文索引生成满足查询条件的记录集。作为优选,所述加密插件模块的UDF包括以下内容:(1)ENC():加密函数,根据明文生成密文;(2)DEC():解密函数,根据密文生成明文;(3)IDX():保序索引函数,根据字段的明文数据生成索引值,该索引值体现原文的大小关系,可以根据该索引值实现高速查询。作为优选,所述IDX()为带随机偏置的保序哈希算法,该算法使得同样的明文对应不同的索引值,避免了原文的统计信息被泄漏。(4)IDX_LOW():保序索引函数的下界,根据字段的明文数据生成带随机偏置的索引值的最小值;(5)IDX_UP():保序索引函数的上界,根据字段的明文数据生成带随机偏置的索引值的最大值。有益效果:与现有的透明加密的系统与方法相比,本专利技术具有如下增益效果:(1)经过加密系统的处理,存储在数据库中的敏感数据为密文,可以防止存储丢失或者权限泄露导致的数据泄漏;(2)所述SQL网关和插件模块具有高通用性,能兼容各类数据库,以及各种SQL语句;(3)所述插件模块完全利用数据库自身机制,对用户的数据库本身是零修改;(4)仅需要一种保序索引,不需要多层加密,就能实现对所有SQL语句的支持,包括字段的运算和函数等,减少存储开销。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面对实施例描述中所需要使用的附图做简要介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图,获得其他的附图。图1是本专利技术实施例一种通用数据库透明加密系统的结构原理示意图;图2是本专利技术实施例一种通用数据库透明加密系统对SELECT语句的处理流程示意图。具体实施方式为了使本专利技术的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术作进一步地详细描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域中普通技术员工在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。实施例1如图1所示是一种通用数据库透明加密系统的结构原理图,由图1可见,数据库加密系统由SQL网关和加密插件组成。SQL网关以代理的方式位于数据库入口处,接受对数据库的所有访问,对访问进行重写后转发到数据库实例,数据库实例根据收到的请求,调用加密插件,实现数据库的透明加密和解密。一个SQL请求被处理的具体步骤如下:步骤(1)客户端发送SQL请求;步骤(2)SQL网关接收SQL请求,并根据SQL内容进行重写;步骤(3)SQL网关发送重写后的SQL请求至数据库实例;步骤(4)数据库实例本文档来自技高网...
【技术保护点】
一种通用数据库透明加密系统,其特征在于,基于对已有的数据表进行如下加密改造:记加密字段P1所在表为T1,首先,基于加密字段P1建立密文索引字段I1,然后,基于保序哈希函数将待加密字段内容映射到哈希值,并将该哈希值作为密文索引存入T1中的I1字段,此时,映射后的哈希值偏序关系体现了待加密字段内容的偏序关系,基于这种关系,可以实现对加密字段的等值查询和范围查询;包括SQL网关模块和加密插件模块;SQL网关模块与数据库管理系统相连接,数据库管理系统与加密插件模块相连接;SQL网关模块,位于数据库客户端和数据库服务器之间,是客户端访问数据库服务器的代理;用于接收客户端发起的SQL语句,并对客户端发起的SQL请求进行重写,然后发送到数据库服务器;并将数据库服务器返回的结果转发到客户端;所述对客户端发起的SQL请求进行重写就是将客户端发起的SQL语句改写成所述加密插件模块可识别并处理的SQL语句;加密插件模块,位于数据库内,主要包括一系列用户自定义函数UDF,根据重写后的SQL语句,实现加密、解密、以及密文索引功能。
【技术特征摘要】
1.一种通用数据库透明加密系统,其特征在于,基于对已有的数据表进行如下加密改造:记加密字段P1所在表为T1,首先,基于加密字段P1建立密文索引字段I1,然后,基于保序哈希函数将待加密字段内容映射到哈希值,并将该哈希值作为密文索引存入T1中的I1字段,此时,映射后的哈希值偏序关系体现了待加密字段内容的偏序关系,基于这种关系,可以实现对加密字段的等值查询和范围查询;包括SQL网关模块和加密插件模块;SQL网关模块与数据库管理系统相连接,数据库管理系统与加密插件模块相连接;SQL网关模块,位于数据库客户端和数据库服务器之间,是客户端访问数据库服务器的代理;用于接收客户端发起的SQL语句,并对客户端发起的SQL请求进行重写,然后发送到数据库服务器;并将数据库服务器返回的结果转发到客户端;所述对客户端发起的SQL请求进行重写就是将客户端发起的SQL语句改写成所述加密插件模块可识别并处理的SQL语句;加密插件模块,位于数据库内,主要包括一系列用户自定义函数UDF,根据重写后的SQL语句,实现加密、解密、以及密文索引功能。2.根据权利要求1所述的一种通用数据库透明加密系统,其特征在于:所述SQL网关模块对接收的SQL请求进行重写,加密插件模块实现加密、解密以及密文索引功能,具体为:(1)对于INSERT请求,SQL网关将请求中加密字段的值替换为加密函数的调用,该函数调用的参数为该字段的明文内容,同时将对应密文索引字段的内容填充为相应的索引函数的调用,该函数调用的参数为字段的明文内容;该重写后的请求在数据库内,由加密插件实现加密函数,根据明文和密钥生成密文,同时,加密插件实现索引函数,根据明文生成索引值;(2)对于SELECT请求,SQL网关将语句中查询条件WHERE前的加密字段替换为解密函数的调用,该函数调用的参数为该字段的密文字段名称,将查询条件WHERE中与加密字段相关的条件,替换为对应的密文索引条件;加密插件实现解密函数,根据密文和密钥,生成明文;加密插件还实现索引函数,根据查询条件生成索引值;该重写后的请求在数据库内,依据已有的密文索引生成满足查询条件的明文记录集;(3)对于UPDATE请求,SQL网关将更新条件WHERE前加密字段的新值替换为加密函数的调用,该函数调用的参数为该字段的明文内容,同时将对应密文索引字段的内容填充为相应的索引值,将WHERE查询条件中与加密字段相关的...
【专利技术属性】
技术研发人员:戴林,
申请(专利权)人:戴林,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。