本發(fā)明涉及數(shù)據(jù)加密領(lǐng)域,具體涉及一種數(shù)據(jù)庫(kù)傳輸加密方法。
背景技術(shù):
目前市面上常用的數(shù)據(jù)庫(kù)傳輸加密方式是采用ssl連接的方式進(jìn)行的,這需要的是前期對(duì)程序設(shè)計(jì)的時(shí)候就采用了ssl的連接方式進(jìn)行,而如果程序設(shè)計(jì)初期就沒(méi)考慮到采用ssl加密連接方式,而采用普通的連接方式,后期修改程序的復(fù)雜度將非常大。采用ssl連接方式還需要配置秘鑰,復(fù)雜度也非常的大。目前市面上解決此問(wèn)題的方案大多是在中間加入物理的加密網(wǎng)關(guān),需要增加一臺(tái)設(shè)備,且成本較高。現(xiàn)有技術(shù)中針對(duì)數(shù)據(jù)庫(kù)進(jìn)行加密多采用加入一個(gè)物理的加密網(wǎng)關(guān)實(shí)現(xiàn),雖然并不需要求改服務(wù)器和客戶端的任何代碼就能實(shí)現(xiàn)傳輸加密,但是成本較高,且需要串接到網(wǎng)絡(luò)上,一旦網(wǎng)關(guān)出現(xiàn)問(wèn)題,整個(gè)數(shù)據(jù)庫(kù)連接就可能斷掉。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明為了克服以上技術(shù)的不足,提供了一種不需要額外增加新的物理設(shè)備、成本低、實(shí)施簡(jiǎn)單的數(shù)據(jù)庫(kù)傳輸加密方法。
本發(fā)明克服其技術(shù)問(wèn)題所采用的技術(shù)方案是:
一種數(shù)據(jù)庫(kù)傳輸加密方法,包括如下步驟:
a).將netfilter鉤子驅(qū)動(dòng)加載到服務(wù)器Linux系統(tǒng)內(nèi)核中形成服務(wù)器驅(qū)動(dòng);
b).客戶端采用API HOOK方式加載驅(qū)動(dòng)形成客戶端驅(qū)動(dòng);
c).客戶端驅(qū)動(dòng)判斷連接服務(wù)器端的流量是否為X端口,如果是X端口,客戶端驅(qū)動(dòng)將抓取到的數(shù)據(jù)包包體采用加密算法進(jìn)行加密,如果不是X端口則直接放行;
d).服務(wù)器驅(qū)動(dòng)判斷加密后的數(shù)據(jù)包是否為X端口,如果是服務(wù)器驅(qū)動(dòng)將數(shù)據(jù)包的包體按照與加密算法對(duì)應(yīng)的解密算法進(jìn)行解密,如果不是X端口則直接放行;
e)服務(wù)器端對(duì)需要返回客戶端的數(shù)據(jù)包判斷端口是否為X端口,如果是服務(wù)器驅(qū)動(dòng)對(duì)數(shù)據(jù)包包體采用加密算法進(jìn)行加密,如果不是X端口則直接放行;
f)客戶端對(duì)服務(wù)器返回的數(shù)據(jù)包判斷是否為X端口,如果是客戶端驅(qū)動(dòng)按照與加密算法相對(duì)于的解密算法進(jìn)行解密,如果不是X端口則直接放行。
端口X為1024-65535范圍區(qū)間的任意一端口。
上述加密算法采用tea加密的方式進(jìn)行,加密密鑰為一個(gè)固定的key值。
上述加密算法采用DES方式進(jìn)行加密。
本發(fā)明的有益效果是:本數(shù)據(jù)庫(kù)傳輸加密方法除了滿足數(shù)據(jù)在網(wǎng)絡(luò)傳輸中加密的功能外,不需要更改客戶的網(wǎng)絡(luò)環(huán)境,也不需要修改客戶已經(jīng)實(shí)現(xiàn)的客戶端和服務(wù)器程序,僅僅需要在客戶端和服務(wù)器端加載數(shù)據(jù)加解密的驅(qū)動(dòng)即可實(shí)現(xiàn)訪問(wèn)數(shù)據(jù)庫(kù)的數(shù)據(jù)在網(wǎng)絡(luò)傳輸中是加密的,保證了數(shù)據(jù)的安全性。
具體實(shí)施方式
下面對(duì)本發(fā)明做進(jìn)一步說(shuō)明。
一種數(shù)據(jù)庫(kù)傳輸加密方法,包括如下步驟:
a).將netfilter鉤子驅(qū)動(dòng)加載到服務(wù)器Linux系統(tǒng)內(nèi)核中形成服務(wù)器驅(qū)動(dòng),netfilter鉤子驅(qū)動(dòng)使用insmod將驅(qū)動(dòng)加載到Linux系統(tǒng)內(nèi)核中。b).客戶端采用API HOOK方式加載驅(qū)動(dòng)形成客戶端驅(qū)動(dòng),驅(qū)動(dòng)程序會(huì)將socket的send函數(shù)和recv函數(shù)進(jìn)行HOOK。API HOOK技術(shù)是一種用于改變API執(zhí)行結(jié)果的技術(shù),Microsoft 自身也在Windows操作系統(tǒng)里面使用了這個(gè)技術(shù),如Windows兼容模式等。c).客戶端驅(qū)動(dòng)判斷連接服務(wù)器端的流量是否為X端口,如果是X端口,客戶端驅(qū)動(dòng)將抓取到的數(shù)據(jù)包包體采用加密算法進(jìn)行加密,如果不是X端口則直接放行。d).服務(wù)器驅(qū)動(dòng)判斷加密后的數(shù)據(jù)包是否為X端口,如果是服務(wù)器驅(qū)動(dòng)將數(shù)據(jù)包的包體按照與加密算法對(duì)應(yīng)的解密算法進(jìn)行解密,如果不是X端口則直接放行。e)服務(wù)器端對(duì)需要返回客戶端的數(shù)據(jù)包判斷端口是否為X端口,如果是服務(wù)器驅(qū)動(dòng)對(duì)數(shù)據(jù)包包體采用加密算法進(jìn)行加密,如果不是X端口則直接放行。f)客戶端對(duì)服務(wù)器返回的數(shù)據(jù)包判斷是否為X端口,如果是客戶端驅(qū)動(dòng)按照與加密算法相對(duì)于的解密算法進(jìn)行解密,如果不是X端口則直接放行。其中客戶端對(duì)數(shù)據(jù)包進(jìn)行加解密過(guò)程中并不是所有的數(shù)據(jù)包都需要進(jìn)行緩存,只有符合X端口的數(shù)據(jù)包才需要將其包頭去除,將包體提取出來(lái)進(jìn)行緩存,緩存的包體按照加解密算法進(jìn)行加解密,同時(shí)替換原報(bào)文中的包體,將數(shù)據(jù)包accept。其中服務(wù)器對(duì)數(shù)據(jù)包進(jìn)行加解密過(guò)程中并不是所有的數(shù)據(jù)包都需要進(jìn)行緩存,只有符合X端口的數(shù)據(jù)包才需要將其包頭去除將包體提取出來(lái)進(jìn)行緩存,緩存的包體按照加解密算法進(jìn)行加解密,同時(shí)替換原報(bào)文中的包體,將數(shù)據(jù)包accept。除了滿足數(shù)據(jù)在網(wǎng)絡(luò)傳輸中加密的功能外,不需要更改客戶的網(wǎng)絡(luò)環(huán)境,也不需要修改客戶已經(jīng)實(shí)現(xiàn)的客戶端和服務(wù)器程序,僅僅需要在客戶端和服務(wù)器端加載數(shù)據(jù)加解密的驅(qū)動(dòng)即可實(shí)現(xiàn)訪問(wèn)數(shù)據(jù)庫(kù)的數(shù)據(jù)在網(wǎng)絡(luò)傳輸中是加密的,保證了數(shù)據(jù)的安全性。
進(jìn)一步的,端口X為1024-65535范圍區(qū)間的任意一端口。對(duì)數(shù)據(jù)包的加解密的重點(diǎn)是要可逆,因此加密算法采用tea加密的方式進(jìn)行,加密密鑰為一個(gè)固定的key值。如果要簡(jiǎn)單的加解密方式,加密算法也可采用DES方式進(jìn)行加解密。