本发明涉及数据加密领域,具体涉及一种数据库传输加密方法。
背景技术:
目前市面上常用的数据库传输加密方式是采用ssl连接的方式进行的,这需要的是前期对程序设计的时候就采用了ssl的连接方式进行,而如果程序设计初期就没考虑到采用ssl加密连接方式,而采用普通的连接方式,后期修改程序的复杂度将非常大。采用ssl连接方式还需要配置秘钥,复杂度也非常的大。目前市面上解决此问题的方案大多是在中间加入物理的加密网关,需要增加一台设备,且成本较高。现有技术中针对数据库进行加密多采用加入一个物理的加密网关实现,虽然并不需要求改服务器和客户端的任何代码就能实现传输加密,但是成本较高,且需要串接到网络上,一旦网关出现问题,整个数据库连接就可能断掉。
技术实现要素:
本发明为了克服以上技术的不足,提供了一种不需要额外增加新的物理设备、成本低、实施简单的数据库传输加密方法。
本发明克服其技术问题所采用的技术方案是:
一种数据库传输加密方法,包括如下步骤:
a).将netfilter钩子驱动加载到服务器Linux系统内核中形成服务器驱动;
b).客户端采用API HOOK方式加载驱动形成客户端驱动;
c).客户端驱动判断连接服务器端的流量是否为X端口,如果是X端口,客户端驱动将抓取到的数据包包体采用加密算法进行加密,如果不是X端口则直接放行;
d).服务器驱动判断加密后的数据包是否为X端口,如果是服务器驱动将数据包的包体按照与加密算法对应的解密算法进行解密,如果不是X端口则直接放行;
e)服务器端对需要返回客户端的数据包判断端口是否为X端口,如果是服务器驱动对数据包包体采用加密算法进行加密,如果不是X端口则直接放行;
f)客户端对服务器返回的数据包判断是否为X端口,如果是客户端驱动按照与加密算法相对于的解密算法进行解密,如果不是X端口则直接放行。
端口X为1024-65535范围区间的任意一端口。
上述加密算法采用tea加密的方式进行,加密密钥为一个固定的key值。
上述加密算法采用DES方式进行加密。
本发明的有益效果是:本数据库传输加密方法除了满足数据在网络传输中加密的功能外,不需要更改客户的网络环境,也不需要修改客户已经实现的客户端和服务器程序,仅仅需要在客户端和服务器端加载数据加解密的驱动即可实现访问数据库的数据在网络传输中是加密的,保证了数据的安全性。
具体实施方式
下面对本发明做进一步说明。
一种数据库传输加密方法,包括如下步骤:
a).将netfilter钩子驱动加载到服务器Linux系统内核中形成服务器驱动,netfilter钩子驱动使用insmod将驱动加载到Linux系统内核中。b).客户端采用API HOOK方式加载驱动形成客户端驱动,驱动程序会将socket的send函数和recv函数进行HOOK。API HOOK技术是一种用于改变API执行结果的技术,Microsoft 自身也在Windows操作系统里面使用了这个技术,如Windows兼容模式等。c).客户端驱动判断连接服务器端的流量是否为X端口,如果是X端口,客户端驱动将抓取到的数据包包体采用加密算法进行加密,如果不是X端口则直接放行。d).服务器驱动判断加密后的数据包是否为X端口,如果是服务器驱动将数据包的包体按照与加密算法对应的解密算法进行解密,如果不是X端口则直接放行。e)服务器端对需要返回客户端的数据包判断端口是否为X端口,如果是服务器驱动对数据包包体采用加密算法进行加密,如果不是X端口则直接放行。f)客户端对服务器返回的数据包判断是否为X端口,如果是客户端驱动按照与加密算法相对于的解密算法进行解密,如果不是X端口则直接放行。其中客户端对数据包进行加解密过程中并不是所有的数据包都需要进行缓存,只有符合X端口的数据包才需要将其包头去除,将包体提取出来进行缓存,缓存的包体按照加解密算法进行加解密,同时替换原报文中的包体,将数据包accept。其中服务器对数据包进行加解密过程中并不是所有的数据包都需要进行缓存,只有符合X端口的数据包才需要将其包头去除将包体提取出来进行缓存,缓存的包体按照加解密算法进行加解密,同时替换原报文中的包体,将数据包accept。除了满足数据在网络传输中加密的功能外,不需要更改客户的网络环境,也不需要修改客户已经实现的客户端和服务器程序,仅仅需要在客户端和服务器端加载数据加解密的驱动即可实现访问数据库的数据在网络传输中是加密的,保证了数据的安全性。
进一步的,端口X为1024-65535范围区间的任意一端口。对数据包的加解密的重点是要可逆,因此加密算法采用tea加密的方式进行,加密密钥为一个固定的key值。如果要简单的加解密方式,加密算法也可采用DES方式进行加解密。