一种数据库数据动态加密的方法与流程

文档序号:15446963发布日期:2018-09-14 23:29阅读:1550来源:国知局

本发明涉及数据库安全领域,具体涉及一种数据库数据动态加密的方法。



背景技术:

随着当今网络迅速发展,对于网络的安全及数据库的安全极为重要,越来越多的数据泄露,数据丢失等问题越发严重,虽然大多数的数据库都有各自的安全机制来保护数据,但是黑客会想尽一切办法通过非法途径对数据库进行攻击,从而导致数据的改写和丢失。所以我们需要在原有的数据库安全机制下,在不操作原有数据库的前提下,对客户端和服务端的通信数据进行解析、过滤和加密等方式,保证数据的完整性和一致性。

在现有的解决方案中,我们使用桥接的方式在客户端和数据库服务端中间搭建一台动态监测加密的数据库保护系统,这样保证了用户想要访问数据库,必须将数据发送到我们的数据库保护系统进行过滤中转。当用户访问数据时,首先查看用户权限,目前有超级用户、授权用户和非授权用户。只有超级用户才能访问数据库并显示真实数据,授权用户在访问数据库某个字段的敏感数据时,我们需要将该数据库原有的数据进行解析并将敏感数据以一定的规则进行加密后发送到客户端,但对于非授权用户访问数据库时,我们直接拒绝该类用户访问数据库,保证了数据库的安全性和稳定性。

当今网络迅速发展,大部分公司越来越多的使用oracle数据库来维护数据,因为它的强大和优秀性得到了越来越多人的青睐。但随着数据量的不断增大,数据的安全问题成为了最为关注的话题。虽然oracle自带安全机制,尤其在oracle公司提出“只有oracle可以做到绝对安全”的口号后,英国专家在oracle中发现了漏洞,紧接着很多人都提出了许多oracle程序漏洞的问题,一旦数据库的通信接口暴露后,非法用户可以对数据库进行肆无忌惮的操作,这带来了新的问题:

1.大量的数据泄露,导致非法更改和销毁数据。

2.大量用户攻击,导致数据库整体性能降低。



技术实现要素:

本发明为了克服以上技术的不足,提供了一种保证了数据库的安全性的数据库数据动态加密的方法。

本发明克服其技术问题所采用的技术方案是:

一种数据库数据动态加密的方法,包括如下步骤:

a)设置于oracle服务器相连的加密服务器,在加密服务器后台管理配置oracle服务器需要加密的数据库表名、字段名以及敏感词;

b)在加密服务器上配置超级用户和需要授权的用户权限,没有配置权限的用户认定为非授权用户;

c)用户端使用oracle驱动连接oracle服务器并查询数据表,用户端的ip地址和端口为加密服务器的ip地址和端口相同;

d)加密服务器接收到用户端的连接信息后,加密服务器将解析用户的连接信息数据并通过socket获取用户的ip及用户连接数据库的驱动信息,通过此信息判断当前用户权限;

d-1)加密服务器接收到用户端的连接信息如果判断为超级用户或授权用户,加密服务器将解析到的连接数据转发到oracle服务器并接收oracle服务器返回的连接成功信息,此信息加密服务器不做处理,直接返回给用户并执行步骤f);

d-2)加密服务器接收到用户端的连接信息如果判断为非授权用户,则不需要将数据发送到oracle服务器,加密服务器主动断开与该用户端的通信连接;

f)用户端发送一条select*fromstudent查询指令,加密服务器会通过查询获取select标识(0x730x650x6c0x650x630x74)来查询数据信息并获取数据表名;

g)对于超级用户,解析到查询结果后不做处理,将数据直接发送给用户端,用户端可以看到原始的数据信息,对于授权用户,将数据通过加密算法加密后,然后再将固定长度的数据转成特殊字符后,根据oracle协议将数据组包后发送给用户端,用户端通过oracle驱动解析之后显示的是加密后的数据信息。

优选的,步骤a)中的敏感词为需要加密用户信息表的地址字段。

优选的,步骤c)中oracle驱动为oci和/或occi和/或jdbc的方式。

优选的,步骤d-3)中加密算法为sha1+md5的方式进行加密计算。

本发明的有益效果是:通过桥接的方式安装动态加密服务器,相当于在数据库服务器外层加上了安全壳。如果管理员不想让某一个用户进行访问数据库或者希望该用户看到的数据是加密后的数据时,这时可以配置一下当前用户的权限即可实现。保证了数据库的安全性。

具体实施方式

下面对本发明做进一步说明。

一种数据库数据动态加密的方法,包括如下步骤:

a)设置于oracle服务器相连的加密服务器,在加密服务器后台管理配置oracle服务器需要加密的数据库表名、字段名以及敏感词。

b)在加密服务器上配置超级用户和需要授权的用户权限,没有配置权限的用户认定为非授权用户。

c)用户端使用oracle驱动连接oracle服务器并查询数据表,因为是桥接,所以用户端的ip地址和端口为加密服务器的ip地址和端口相同。

d)加密服务器接收到用户端的连接信息后,加密服务器将解析用户的连接信息数据并通过socket获取用户的ip及用户连接数据库的驱动信息,通过此信息判断当前用户权限。加密服务器接收用户连接数据为:

0x01:连接信息标识

0x480x4f0x530x540x3d0x310x300x2e0x310x300x2e0x160x2e0x310x390x33:该标识是用户连接的ip地址,host=10.10.16.193

0x780x380x360x5f0x360x340x2f0x4c0x690x6e0x750x780x290x320x2e0x340x2e0x780x780x00:该标识是用户连接的数据库驱动的版本号,x86_64/linux2.4.xx。

d-1)加密服务器接收到用户端的连接信息如果判断为超级用户或授权用户,加密服务器将解析到的连接数据转发到oracle服务器并接收oracle服务器返回的连接成功信息,此信息加密服务器不做处理,直接返回给用户并执行步骤f)。

d-2)加密服务器接收到用户端的连接信息如果判断为非授权用户,则不需要将数据发送到oracle服务器,加密服务器主动断开与该用户端的通信连接。

f)用户端发送一条select*fromstudent查询指令,加密服务器会通过查询获取select标识(0x730x650x6c0x650x630x74)来查询数据信息并获取数据表名。之前配置该表的name字段配置为数据加密,则我们在解析数据库服务器回传查询结果的时候要找到相应的字段信息。

该表的name字段是varchar2的数据类型,我们需要解析数据库返回的信息,首先获取数据库返回的列信息数据:

0x100x17:查询select语句返回字段信息的标识

0x51:列信息开始的标识

0x010x80:字段的数据类型

0x800x00:字段的数据类型长度

0x04:标明字段名称的字节长度(name占四个字节)

0x4e0x410x4d0x45:字段名称(name)

0x01:代表当前列序号(从0开始)

之后数据库再次返回具体的字段内容:

0x060x22:查询字段结果的开始标识

0x07:字段开始标识

0x03:获取后面该行显示哪几列信息值的字节长度

0xc20x0b0x02:查询该行需要显示哪几列信息(获取此三位的值并转换成二进制,倒叙查看分析)

0x08:name字段的数据长度

0x730x740x750x640x650x6e0x74:具体的name信息(student)

g)对于超级用户,解析到查询结果后不做处理,将数据直接发送给用户端,用户端可以看到原始的数据信息,对于授权用户,将数据通过加密算法加密后,然后再将固定长度的数据转成特殊字符后,根据oracle协议将数据组包后发送给用户端,用户端通过oracle驱动解析之后显示的是加密后的数据信息。

如果收到0x4f0x520x410x2d0x300x310x340x300x33数据信息后(ora-01403),则认为本次查询已经结束。

虽然oracle数据库的高并发是优势,但是如果有非法用户进行大量的非法连接攻击时,有可能会对数据库进行破坏甚至更改和删除重要的数据信息,当有非法用户进行连接时,动态加密服务器判断之后立即与该用户的通信连接断开即可。因此通过桥接的方式安装动态加密服务器,相当于在数据库服务器外层加上了安全壳。如果管理员不想让某一个用户进行访问数据库或者希望该用户看到的数据是加密后的数据时,这时可以配置一下当前用户的权限即可实现。保证了数据库的安全性。

进一步的,步骤a)中的敏感词为需要加密用户信息表的地址字段。

进一步的,步骤c)中oracle驱动为oci和/或occi和/或jdbc的方式。

进一步的,步骤d-3)中加密算法为sha1+md5的方式进行加密计算。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1