通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案

針對(duì)日前存在的數(shù)據(jù)庫(kù)數(shù)據(jù)加密算法進(jìn)行比較,根據(jù)實(shí)際需要,提出一種通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案,該方案的提出有利于解決在構(gòu)建第三方數(shù)據(jù)庫(kù)托管服務(wù)等通用數(shù)據(jù)庫(kù)方面存在的數(shù)據(jù)安全問題,具有廣闊的應(yīng)用前景。

一、數(shù)據(jù)庫(kù)加密技術(shù)現(xiàn)狀

數(shù)據(jù)庫(kù)加密技術(shù)可分為表加密、記錄加密和字段或?qū)傩约用埽壳俺S玫氖亲侄渭用?。字段加密技術(shù),可分為兩大類:索引和同態(tài)。

索引又可分為:按密文入口地址索引和按密文索引。同態(tài)也可分為:秘密同態(tài)和匹配同態(tài)。不過常用的檢索或處理機(jī)制,都是針對(duì)某一特定類型數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)中某一特定類型的數(shù)據(jù)比較有效,但對(duì)一般類型數(shù)據(jù)庫(kù)或數(shù)據(jù)庫(kù)中一般類型的數(shù)據(jù),處理效果就不夠理想,甚至根本無法處理。

比如,采用密文入口地址索引和密文索引的檢索機(jī)制,對(duì)數(shù)據(jù)庫(kù)中數(shù)值型數(shù)據(jù)檢索比較有效,對(duì)字符型數(shù)據(jù)處理效果就比較差,對(duì)數(shù)值型數(shù)據(jù)進(jìn)行修改(加、減、乘、除)的效果就更不好,而采用秘密同態(tài)處理機(jī)制,對(duì)數(shù)值瓔數(shù)據(jù)進(jìn)行修改(加、減、乘,除)的效果比較理想,因?yàn)榭梢詫?shí)現(xiàn)在不解密的情況下直接對(duì)數(shù)據(jù)進(jìn)行修改,但幾乎無法實(shí)現(xiàn)數(shù)據(jù)檢索。采用匹配同態(tài)的檢索機(jī)制,對(duì)字符型數(shù)據(jù)檢索可以實(shí)現(xiàn)在不解密的情況下直接匹配,效果較好,但在處理數(shù)值型數(shù)據(jù)檢索時(shí)效果無法達(dá)到采用索引方式的檢索機(jī)制。

下面我們就來了解一下上述三種常用的加密機(jī)制。

二、常用加密機(jī)制

1、秘密同態(tài)加密機(jī)制

秘密同態(tài)的基本思想如下:

假設(shè)E和D分別代表加密、解密函數(shù),明文數(shù)據(jù)空間中的元素是有限集合{M1,M2,…,Mn},α和β代表運(yùn)算,若α[(E(M1),E(M2),…,E(Mn))=E(β(M1,M2,….Mn)]
成立,則稱函數(shù)族(E,D,α,β)為一個(gè)秘密同志。

目前,秘密同態(tài)加密機(jī)制在整數(shù)范圍、實(shí)數(shù)范圍都能實(shí)現(xiàn)加密狀態(tài)下的算術(shù)運(yùn)算。

2、密文入口地址表索引機(jī)制

為了與密文B+樹索引機(jī)制區(qū)分,本文中將密文建立人口地址表實(shí)現(xiàn)的索引稱為密文入口地址表索引。下面采用一個(gè)實(shí)倒來說明該加密機(jī)制。

表1是一個(gè)密文表,其中Salary是密文字段,用E(.)和E’(.)表示加密函數(shù),E(data)和E’(data)表示對(duì)明文數(shù)據(jù)data加密后的密文,假設(shè)表中有五條記錄,且每條記錄長(zhǎng)度為1 00,Salary密文字段在記錄中的館移量為30,第1條記錄的入口地址為0000,則第1條記錄中的密文字段Salary地址為0030。

通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案

通過對(duì)表1中的加密字段Salary,用解密函數(shù)D還原成明文,再對(duì)明文進(jìn)行從小到大排序后建立的入口地址索引表如表2所示,對(duì)表2中的入口地址也進(jìn)行了加密,在表1對(duì)Salary進(jìn)行加密的函數(shù)E和表2對(duì)入口地址進(jìn)行加密的函數(shù)E‘可以相同也可以不同。

假設(shè)要檢索的數(shù)據(jù)為1450,用S表示數(shù)據(jù)庫(kù)服務(wù)器,C表示訪同端,使用二分查找算法,檢索過程如下:

(1)C向S發(fā)出訪問請(qǐng)求;

(2)S將索引地址E’(0100)發(fā)送給C;

(3)C解密E’(0100),得到地址0100;

(4)C根據(jù)地址0130取得密文數(shù)據(jù)E(1800)*解密E(1800),得到1800,由于1800>1450,所以請(qǐng)求訪問下一條索引地址E’(0400);

(5)S將索引地址E’(0400)發(fā)送給C,C對(duì)其解密,得到地址0400;

(6)C根據(jù)地址0400取得密文數(shù)據(jù)E(1450),對(duì)其解密得到1450,檢索成功。

3、匹配同態(tài)加密機(jī)制

該機(jī)制也能實(shí)現(xiàn)在不解密的情況下被檢索出來,為了與秘密同態(tài)區(qū)分,本文中以匹配查找為主要思想的加密機(jī)制稱為匹配同態(tài)加密機(jī)制。該加密機(jī)制的基本思想是:加密時(shí),將明文字符串轉(zhuǎn)換成Unicode編碼形式(一個(gè)明文字對(duì)應(yīng)2個(gè)字節(jié),即16位二進(jìn)制數(shù)),將明文字的每一位擴(kuò)展成4位(如0,擴(kuò)展成0000;1擴(kuò)展成1111),這樣每個(gè)明文字由64位組成,以明文字為基本單位進(jìn)行分組,利用IDEA分組密碼算法(由64位明文,產(chǎn)生64位密文)進(jìn)行分組加密,然后順序合成密文。解密時(shí),采用加密時(shí)的逆過程。

對(duì)于IDEA分組加密算法,如果密鑰相同,完全相同的明文分組會(huì)得到相同的密文,不同分組內(nèi)的明文,因?yàn)槭苤車渌?、詞的影響,明文與密文完全沒有對(duì)應(yīng)關(guān)系。這樣,由于明文字符與密文分組有一一對(duì)應(yīng)關(guān)系,對(duì)于字符型數(shù)據(jù)常用的“等于”或“包含”類查詢,可以保持原來的查詢語句不變,直接在密文庫(kù)中查找檢索詞密文即可。這種加密機(jī)制在處理字符型數(shù)據(jù)時(shí),從目前已有的加密技術(shù)看,效率是最高的。但在處理日期顰和數(shù)值型數(shù)據(jù)時(shí),面對(duì)常用的“大于”或“小于”等查詢條件分由于其自身的特點(diǎn),只能通過順序查找法進(jìn)行檢索,這樣在記錄數(shù)較多的情況下,執(zhí)行效率會(huì)非常低。

三、通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案的提出

由于常用加密算法中存在的局限性問題,在通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案中,將融合上述三種方案的優(yōu)點(diǎn),根據(jù)處理字段類型的實(shí)際情況,選擇其中某一種加密算法來進(jìn)行處理。數(shù)據(jù)庫(kù)數(shù)據(jù)文件類型常見的有數(shù)值型、字符型和日期型,其他類型有加密處理要求,可轉(zhuǎn)換成常見類型中的一種進(jìn)行處理。

針對(duì)分布式計(jì)算、電子投票、網(wǎng)上銀行等效據(jù)庫(kù),由于經(jīng)常要求對(duì)已經(jīng)加密的數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算,往往采用秘密同態(tài)加密技術(shù)效率較高,而針對(duì)構(gòu)建第三方數(shù)據(jù)庫(kù)托管服務(wù)的數(shù)據(jù)庫(kù),加密的字段不但有數(shù)值型、日期型,也可能有字符型和其他類型,所以在處理過程中,需要有一種通用的數(shù)據(jù)庫(kù)數(shù)據(jù)加密設(shè)計(jì)方案。

1、通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案思想

通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案的基本思想如下:

根據(jù)加密對(duì)象的實(shí)際情況,針對(duì)不同數(shù)據(jù)類型采用比較合理的加密技術(shù),在不影響安全的前提下,力求提高數(shù)據(jù)的處理效率。該基本思想與數(shù)據(jù)庫(kù)文件加密要求相吻合。為了提高數(shù)據(jù)的處理效率,在處理過程中盡量減少解密和加密的次數(shù)。

通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案的具體實(shí)現(xiàn)如下:不對(duì)表中的主鍵、外鍵進(jìn)行加密,對(duì)加密的數(shù)值型字段,若需要經(jīng)常進(jìn)行算術(shù)運(yùn)算,則采用秘密同態(tài)加密技術(shù),若還需要實(shí)現(xiàn)檢索功能,則在秘密同態(tài)加密基礎(chǔ)上,再對(duì)密文建立人口地址索引表,采用二分查找法實(shí)現(xiàn)檢索,對(duì)檢索量大算術(shù)運(yùn)算很少的數(shù)值型字段,采用密文入口地址索引或密文索引;對(duì)加密的字符型字段,采用匹配同態(tài)加密技術(shù)實(shí)現(xiàn);對(duì)加密的日期型字段,采用密文入口地址索引或密文索引技術(shù)實(shí)現(xiàn);其他類型加密字段,需先轉(zhuǎn)換成前面三種類型中的一種,再進(jìn)行加密處理。

四、通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密案例

表3是一個(gè)企業(yè)員工工資數(shù)據(jù)庫(kù)表,假如要對(duì)該表中的職務(wù)和工資字段進(jìn)行加密,由于職務(wù)是字符型數(shù)據(jù),工資是數(shù)值型數(shù)據(jù),而且工資需要經(jīng)常改動(dòng)和查詢,根據(jù)本文中提出的加密設(shè)計(jì)方案,對(duì)職務(wù)字段采用匹配同態(tài)加密技術(shù),對(duì)工資字段采用秘密同態(tài)加密技術(shù),同時(shí)建立入口地址檢索表。

通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案

對(duì)每個(gè)數(shù)據(jù)庫(kù)表建立一個(gè)“表結(jié)構(gòu)加密方案文件”,如表4所示。該文件記錄了字段的加密情況和加密密鑰,在加密類型中,采用了四位二進(jìn)制數(shù)對(duì)應(yīng)四種加密類型,它們分別是:秘密同態(tài)加密、匹配同態(tài)加密、密文入口地址表索引和密文索引。加密類型為4表示用匹配同態(tài)加密技術(shù),加密類型為A表示用秘密同態(tài)和密文人口地址表索引機(jī)制,如圖1所示。

通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案

當(dāng)每次由客戶端向數(shù)據(jù)庫(kù)服務(wù)器提交操作請(qǐng)求時(shí),先由控制層根據(jù)提交的操作命令,分析其中要訪問的字段,再對(duì)照表結(jié)構(gòu)加密方案文件,若訪問的字段未經(jīng)加密,則可直接執(zhí)行操作命令,否則,根據(jù)字段的加密類型,轉(zhuǎn)向?qū)?yīng)的命令處理模塊。對(duì)處理完的記錄集,經(jīng)過脫密處理,再由通信模塊對(duì)它加密后發(fā)送給客戶端,處理過程如圖2所示。

通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案
在該通用加密設(shè)計(jì)方案處理過程中值得注意的是:每當(dāng)執(zhí)行完工資字段的修改命令后,需要有一次對(duì)該字段密文入口地址表索引的重建工作,用來滿足索引文件同步的需要。

五、通用數(shù)據(jù)庫(kù)數(shù)據(jù)文件加密方案安全性分析

1、僅知密文攻擊

對(duì)秘密同態(tài)加密技術(shù),只要找到一對(duì)足夠大的素?cái)?shù)p和q,并能得到安全存放,那么,假如攻擊者獲取了密文,要想從p×q中獲取p是非常困難的,因?yàn)樾枰獙?duì)p×q進(jìn)行因數(shù)分解I對(duì)密文入口地址表檢索技術(shù),由于對(duì)入口地址進(jìn)行了加密處理,僅僅通過靜態(tài)分析密文表及其對(duì)應(yīng)的索引表,則得不到任何有用的信息,是安全的,假如攻擊者通過動(dòng)態(tài)追蹤數(shù)據(jù)庫(kù)檢索過程,得到密文數(shù)據(jù)與其索引的對(duì)應(yīng)關(guān)系,則安全性稍差。

2、巳知明文攻擊

對(duì)秘密同態(tài)加密技術(shù),如果攻擊者獲取一個(gè)明文密文對(duì)(x,y),攻擊者可以進(jìn)行反復(fù)的試探,以期獲得解密密鑰p,但攻擊者需要進(jìn)行試探運(yùn)算的運(yùn)算量大到不可以接受的地步,對(duì)密文入口地址表檢索技術(shù),巳知部分明文與其對(duì)應(yīng)的密文,那么還需要進(jìn)行巳知明文攻擊,這里的安全性依靠的就是加密算法的強(qiáng)度.可采用NIST最后選定的AES(Advanced encryptstandard)算法,可以有效地抵抗巳知明文攻擊。

3、完整性攻擊

對(duì)于目前巳知的幾種數(shù)據(jù)庫(kù)加密技術(shù),攻擊者都可以任選一個(gè)值來替換一個(gè)已經(jīng)加密的數(shù)據(jù)。也就是說,通用加密設(shè)計(jì)方案無法抵抗完整性攻擊。

根據(jù)目前數(shù)據(jù)庫(kù)加密技術(shù)的現(xiàn)狀,可以這么說,沒有一種加密技術(shù)能完全滿足數(shù)據(jù)庫(kù)中所有數(shù)據(jù)類型的加密需要,特別對(duì)于構(gòu)建第三方數(shù)據(jù)庫(kù)托管服務(wù)方面的數(shù)據(jù)庫(kù)安
全需求,用一種通用數(shù)據(jù)庫(kù)數(shù)據(jù)加密設(shè)計(jì)方案顯得尤為重要,該方案的研究有著廣闊的前景和實(shí)際應(yīng)用價(jià)值。

小知識(shí)之索引

索引,使用索引可快速訪問數(shù)據(jù)庫(kù)表中的特定信息。索引是對(duì)數(shù)據(jù)庫(kù)表中一列或多列的值進(jìn)行排序的一種結(jié)構(gòu),例如 employee 表的姓名列。如果要按姓查找特定職員,與必須搜索表中的所有行相比,索引會(huì)幫助您更快地獲得該信息。