數(shù)據(jù)庫(kù)加密之四層結(jié)構(gòu)

計(jì)算機(jī)和網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,給信息安全提出了更高的要求,在信息系統(tǒng)開(kāi)發(fā)設(shè)計(jì)過(guò)程中,安全性能總是被放在首要的位置,成為信息系統(tǒng)生存的關(guān)鍵。為此我們?cè)跀?shù)據(jù)庫(kù)加密基礎(chǔ)上,設(shè)計(jì)了一種基于B/S結(jié)構(gòu)四層次的敷椐庫(kù)加密應(yīng)用系統(tǒng)。

一、數(shù)據(jù)庫(kù)加密的要求

數(shù)據(jù)庫(kù)系統(tǒng)能夠快捷和有效地完成各種數(shù)據(jù)操作是網(wǎng)絡(luò)信息系統(tǒng)正確運(yùn)行的前提。因此,對(duì)數(shù)據(jù)庫(kù)進(jìn)行加密處理應(yīng)滿足如下某本要求:

(1)由于效據(jù)庫(kù)效據(jù)保存的時(shí)限相對(duì)較長(zhǎng),數(shù)據(jù)能加密存放在數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)數(shù)據(jù)的加密技術(shù)對(duì)加密算法強(qiáng)度的要求是第一位的;

(2)數(shù)據(jù)庫(kù)中數(shù)據(jù)最大量的使用方式是隨機(jī)訪問(wèn),因此加解密效率要求較高,不能引起效據(jù)庫(kù)系統(tǒng)的性能大幅度下降;

(3)數(shù)據(jù)庫(kù)組織結(jié)構(gòu)對(duì)于數(shù)據(jù)庫(kù)管理系統(tǒng)而言不能有大的變動(dòng),應(yīng)盡可能做到明文和密文長(zhǎng)度相等或至少相當(dāng);

(4)用戶授權(quán)機(jī)制和密鑰管理機(jī)制要保證用戶限的完整性和一致性;

密文數(shù)據(jù)庫(kù)在增加安全性的同時(shí),降低了數(shù)據(jù)的效率。這主要是由于加解密操作要占用額外的間,以及難以對(duì)加密后的數(shù)據(jù)建立索引。這些問(wèn)題密文數(shù)據(jù)庫(kù)的設(shè)計(jì)提出了更高的要求。

二、加密系統(tǒng)的設(shè)計(jì)

在傳統(tǒng)的三層B/S結(jié)構(gòu)的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)中,瀏覽器與Web服務(wù)器之間及Web服務(wù)器與數(shù)據(jù)庫(kù)服務(wù)器之間沒(méi)有專門的體系與機(jī)制來(lái)保證效據(jù)的安全性。針對(duì)該問(wèn)題,提出了四層體系結(jié)構(gòu),通過(guò)在傳統(tǒng)三層B/S結(jié)構(gòu)的應(yīng)用系統(tǒng)基礎(chǔ)上的擴(kuò)展,引人加,解密模塊和安全認(rèn)證模塊來(lái)實(shí)現(xiàn)系統(tǒng)的總體加密。

1、系統(tǒng)的總體設(shè)計(jì)

基于B/S結(jié)構(gòu)的網(wǎng)絡(luò)系統(tǒng),其應(yīng)用程序都在服務(wù)器靖,客戶端只需要Web瀏覽器,不需開(kāi)發(fā)專用的應(yīng)用程序,用戶通過(guò)瀏覽囂實(shí)現(xiàn)與服務(wù)器的信息傳遞和訪問(wèn)。因此數(shù)據(jù)加密在Web服務(wù)器與后臺(tái)效據(jù)庫(kù)之間實(shí)現(xiàn),加密系統(tǒng)結(jié)構(gòu)如圖l所示。

圖1給出了基于B/S結(jié)構(gòu)的數(shù)據(jù)庫(kù)四層體系結(jié)構(gòu)。如圖l所示,系統(tǒng)被面為四層,即表示層,功能層,數(shù)據(jù)層,安全層。各模塊的主要功能和實(shí)現(xiàn)描述如下。

數(shù)據(jù)庫(kù)加密之四層結(jié)構(gòu)

(l)表示層的功能定義

在采用B/S模式的系統(tǒng)中,客戶請(qǐng)求(User Request)經(jīng)IntemeL上傳至服務(wù)器(Sewer),服務(wù)器接收到用戶請(qǐng)求后啟動(dòng)系統(tǒng)程序進(jìn)行處理,再將結(jié)果數(shù)據(jù)封裝為HTML文檔返回給客戶。

(2)功能層的功能定義

與傳統(tǒng)三層B/S結(jié)構(gòu)數(shù)據(jù)庫(kù)系統(tǒng)的體系結(jié)構(gòu)類似,功能層完成系統(tǒng)的基本業(yè)務(wù)處理。本系統(tǒng)的1PVeb編程采用JSP編程,JSP的腳本語(yǔ)言是Java語(yǔ)育,JSP很方便地存取可重用的JavaBean組件,可以很方便地將JSP頁(yè)面的表現(xiàn)和邏輯處理完全分開(kāi)。

為滿足安全性的要求,新的功能層對(duì)外的接口包括:VVeb接口、安全認(rèn)證接口以及敷據(jù)接口。 Web服務(wù)器通過(guò)CGI、ISAPI或直接的Java程序?qū)崿F(xiàn)用戶請(qǐng)求和數(shù)據(jù)響應(yīng)。

數(shù)據(jù)庫(kù)連接模塊由JavaBean構(gòu)成,主要任務(wù)是和數(shù)據(jù)庫(kù)進(jìn)行連接,并讀取和存人數(shù)據(jù),將用戶數(shù)據(jù)請(qǐng)求轉(zhuǎn)換為相應(yīng)的SQL語(yǔ)句,對(duì)數(shù)據(jù)庫(kù)進(jìn)行查詢、添加、刪除和修改等操作。

加/解密模塊包括SQL語(yǔ)句的語(yǔ)法分析、數(shù)據(jù)加,解密、加密字典和密鑰管理四個(gè)子模塊,數(shù)據(jù)字典子模塊是將初始化時(shí)的一些參數(shù)在加,解密時(shí)提供給加,解密子模塊使用,這些參數(shù)一般是單獨(dú)保存在數(shù)據(jù)字典表中.?dāng)?shù)據(jù)內(nèi)容主要包括待加密表內(nèi)行列信息、待加密字段、效據(jù)類型、是否加密等。為了保證加密數(shù)據(jù)有更高的安全性,選擇加密強(qiáng)度比較高的AES加密算法。SQL語(yǔ)句分析子模塊是根據(jù)數(shù)據(jù)字典的內(nèi)容對(duì)用戶提交的SQL語(yǔ)句進(jìn)行分析。加,解密子模塊是整個(gè)功能層的核心部件,通過(guò)它來(lái)保障敏感數(shù)據(jù)的加,解密操作。

(3)數(shù)據(jù)層的功能定義

本系統(tǒng)中數(shù)據(jù)層包括數(shù)據(jù)數(shù)據(jù)庫(kù)和密鑰數(shù)據(jù)庫(kù)。數(shù)據(jù)數(shù)據(jù)庫(kù)專門用來(lái)存放明文和密文數(shù)據(jù):密鑰數(shù)據(jù)庫(kù)中存放有用戶的基本信息.比如用戶名、口令、數(shù)據(jù)密鑰、用戶密鑰對(duì)(公鑰和私鑰)以及用戶的權(quán)限、待加密字段等,其中口令(MD5加密)、數(shù)據(jù)密鑰、用戶私鑰均以加密形式存放在密鑰數(shù)據(jù)庫(kù)中。數(shù)據(jù)密鑰是被用戶公鑰加密過(guò)的密文形式,此時(shí)只有用戶私鑰才能解開(kāi)獲得數(shù)據(jù)庫(kù)密鑰,為了保證用戶私鑰的安全。通過(guò)用戶口令加密私鑰,并且用戶口令也通過(guò)MD5加密算法進(jìn)行加密,這樣密鑰的安全性可以得到有效保證。從而保障了整個(gè)系統(tǒng)的安全性。在安全性上,數(shù)據(jù)層提供了與JavaBean連接模塊進(jìn)行數(shù)據(jù)交換的普通數(shù)據(jù)接口和與安全認(rèn)證模塊進(jìn)行用戶身份認(rèn)證信息和密鑰交換的安全接口。

(4)安全認(rèn)證層的功能定義

安全認(rèn)證層在整個(gè)B/S結(jié)構(gòu)的數(shù)據(jù)庫(kù)系統(tǒng)的業(yè)務(wù)處理過(guò)程中,處于重要的地位。安全認(rèn)證模塊與9Veb服務(wù)器和數(shù)據(jù)庫(kù)通過(guò)安全接口連接,提供安全服務(wù)。該模塊通過(guò)Intemet直接與客戶進(jìn)行對(duì)話。其功能是對(duì)用戶身份進(jìn)行驗(yàn)證,防止未授權(quán)人員使用系統(tǒng)。如果用戶注冊(cè)成功,則從密鑰數(shù)據(jù)庫(kù)中獲得該用戶密鑰Key,做為全局變量供后續(xù)數(shù)據(jù)庫(kù)操作使用。該模塊另一功能是對(duì)合法用戶的數(shù)據(jù)庫(kù)操作進(jìn)行識(shí)別,決定哪些數(shù)據(jù)需要進(jìn)行加密處理。

2、系統(tǒng)工作流程

(1)用戶在瀏覽器上發(fā)出數(shù)據(jù)存取請(qǐng)求,這些請(qǐng)求通過(guò)HTTP協(xié)議送到Web服務(wù)器上。

(2)Web服務(wù)器收到請(qǐng)求后,對(duì)請(qǐng)求用戶的身份和類型進(jìn)行驗(yàn)證。若用戶請(qǐng)求合法,則自動(dòng)從認(rèn)證模塊(第一次登錄)下載公鑰證書(shū),對(duì)于非常重要的數(shù)據(jù),用戶可使用私鑰對(duì)數(shù)據(jù)進(jìn)行簽名,然后用公鑰加密,密文傳送到XVeb服務(wù)器,確保敏感數(shù)據(jù)在客戶端瀏覽器和Web服務(wù)器之間傳遞的安全。

(3)Web服務(wù)器在接受到用戶請(qǐng)求后,將請(qǐng)求交給加,解密模塊進(jìn)行處理。

(4)SQL語(yǔ)句的語(yǔ)法分析子模塊對(duì)Web服務(wù)器傳過(guò)來(lái)的SQL語(yǔ)句進(jìn)行分析,對(duì)照數(shù)據(jù)字典子模塊中的信息分析該語(yǔ)句中是否涉及到待加密字段。如果有,則執(zhí)行加密操作,加密的密鑰通過(guò)安全認(rèn)證模塊從密鑰數(shù)據(jù)庫(kù)中下載,并通過(guò)安全認(rèn)證模塊和加/解密模塊之問(wèn)的安全接口進(jìn)行密鑰傳輸:如果沒(méi)有,則將數(shù)據(jù)通過(guò)JavaBean連接模塊直接存入數(shù)據(jù)數(shù)據(jù)庫(kù)。

(5)加,解密子模塊對(duì)數(shù)據(jù)加密完之后,通過(guò)JavaBean連接數(shù)據(jù)庫(kù)存入數(shù)據(jù)數(shù)據(jù)庫(kù)。

(6)對(duì)于需要解密的數(shù)據(jù),解密的密鑰也需要通過(guò)安全認(rèn)證模塊從密鑰數(shù)據(jù)庫(kù)中下載,并通過(guò)安全認(rèn)證模塊和加,解密模塊之間的安全接口進(jìn)行密鑰傳輸。加,解密子模塊對(duì)數(shù)據(jù)通過(guò)數(shù)據(jù)密鑰解密之后,將數(shù)據(jù)傳遞給Web服務(wù)器。Web服務(wù)器通過(guò)安全認(rèn)證模塊下載用戶的公鑰和私鑰,并通過(guò)它們之間的安全接口傳遞,先用私鑰對(duì)數(shù)據(jù)進(jìn)行解密。然后再用公鑰進(jìn)行核實(shí)簽名,最后,Web服務(wù)器將明文數(shù)據(jù)傳遞給客戶端瀏覽器顯示。

(7)對(duì)于不需要解密的數(shù)據(jù),加,解密子模塊直接將數(shù)據(jù)傳遞給Web服務(wù)器。Web服務(wù)器通過(guò)安全認(rèn)證模塊下載用戶的公鑰和私鑰,并通過(guò)它們之間的安全接口傳遞。先用私鑰對(duì)數(shù)據(jù)進(jìn)行解密然后再用公鑰進(jìn)行核實(shí)簽名,最后,Web服務(wù)器將明文數(shù)據(jù)傳遞給客戶端瀏覽器顯示。

小知識(shí)之B/S結(jié)構(gòu)

B/S結(jié)構(gòu)(Browser/Server,瀏覽器/服務(wù)器模式),是WEB興起后的一種網(wǎng)絡(luò)結(jié)構(gòu)模式,WEB瀏覽器是客戶端最主要的應(yīng)用軟件。這種模式統(tǒng)一了客戶端,將系統(tǒng)功能實(shí)現(xiàn)的核心部分集中到服務(wù)器上,簡(jiǎn)化了系統(tǒng)的開(kāi)發(fā)、維護(hù)和使用??蛻魴C(jī)上只要安裝一個(gè)瀏覽器(Browser英 ['bra?z?]美 ['bra?z?]),如Netscape Navigator或Internet Explorer,服務(wù)器安裝SQL Server、Oracle、MYSQL等數(shù)據(jù)庫(kù)。瀏覽器通過(guò)Web Server 同數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)交互。