數(shù)據(jù)庫(kù)文件加密在網(wǎng)絡(luò)考試系統(tǒng)中的應(yīng)用

網(wǎng)絡(luò)考試系統(tǒng)—般采用目的主流的中小型企業(yè)級(jí)數(shù)據(jù)庫(kù)MS SQL Server,它提供了身份驗(yàn)證、權(quán)限驗(yàn)證、訪問(wèn)控制。數(shù)據(jù)庫(kù)備份和恢復(fù)以及審計(jì)等安全管理機(jī)制,但對(duì)數(shù)據(jù)庫(kù)文件本身仍然缺乏有效的保護(hù)措施,對(duì)數(shù)據(jù)庫(kù)敏感數(shù)據(jù)進(jìn)行加密保護(hù)是目的解決問(wèn)題的最佳辦法。

一、數(shù)據(jù)庫(kù)文件加密在網(wǎng)絡(luò)考試系統(tǒng)中的基本要求

網(wǎng)絡(luò)考試系統(tǒng)中涉及的人員眾多,大致可以分為兩類(lèi)人員:管理人員和考生,其中考生數(shù)量眾多,流動(dòng)性火,而且很多考生可能參加了一次考試就不會(huì)再參加考試了。此外,考試過(guò)程中用戶(hù)對(duì)系統(tǒng)的實(shí)時(shí)性要求很高。針對(duì)系統(tǒng)的特點(diǎn),其數(shù)據(jù)庫(kù)文件加密應(yīng)滿(mǎn)足以下基本要求:

1、密鑰動(dòng)態(tài)管理

數(shù)據(jù)庫(kù)客體之聞隱含著復(fù)雜的邏輯關(guān)系,一個(gè)邏輯結(jié)構(gòu)可能對(duì)應(yīng)著多個(gè)數(shù)據(jù)庫(kù)物理客體,所以數(shù)據(jù)庫(kù)文件加密不僅密鑰量大,而且組織和存儲(chǔ)工作比較復(fù)雜,需要對(duì)密鑰實(shí)現(xiàn)動(dòng)態(tài)管理。

2、合理處理數(shù)據(jù)

首先要恰當(dāng)?shù)靥幚頂?shù)據(jù)類(lèi)型,否則DBMS將會(huì)因加密后的數(shù)據(jù)文件不符合定義的數(shù)據(jù)類(lèi)型而拒絕加密。

3、加密強(qiáng)度大

理論上數(shù)據(jù)文件加密后應(yīng)該是安全的或者破解的難度很大。

4、字段加密

考慮到系統(tǒng)的性能和實(shí)時(shí)性要求,應(yīng)該只對(duì)關(guān)鍵字段加密。如果加密和解密的粒度是文件將降低系統(tǒng)的可靠性,而且會(huì)因加密和解密時(shí)間過(guò)長(zhǎng)而令用戶(hù)無(wú)法忍受。

5、不影響合法用戶(hù)的操作

加密系統(tǒng)影響數(shù)據(jù)文件操作響應(yīng)時(shí)間應(yīng)盡量短,在現(xiàn)階段,平均延遲時(shí)問(wèn)不應(yīng)超過(guò)1/10秒。

此外,對(duì)數(shù)據(jù)庫(kù)的合法用戶(hù)來(lái)說(shuō),數(shù)據(jù)的錄入、修改和檢索操作應(yīng)該是透明的,不需要考慮數(shù)據(jù)文件加密和解密問(wèn)題。

二、數(shù)據(jù)庫(kù)文件加密策略設(shè)計(jì)

1、數(shù)據(jù)庫(kù)文件加密的模型

對(duì)數(shù)據(jù)庫(kù)文件進(jìn)行加密,可選擇的層次主要有操作系統(tǒng)層、DBMS內(nèi)核層和DBMS外圍層,三種方案各有優(yōu)缺點(diǎn)。

比較實(shí)際的做法是在DBMS外層實(shí)現(xiàn)加密,就是在數(shù)據(jù)庫(kù)外圍構(gòu)造一個(gè)數(shù)據(jù)庫(kù)系統(tǒng)的加密軟件和解密軟件。采用這種加密方式時(shí),加密和解密運(yùn)算可以放在客戶(hù)端進(jìn)行,其優(yōu)點(diǎn)足不會(huì)加重?cái)?shù)據(jù)庫(kù)服務(wù)器的負(fù)載并可實(shí)現(xiàn)網(wǎng)上傳輸加密,缺點(diǎn)足加密功能會(huì)受到一些限制,與數(shù)據(jù)庫(kù)管理系統(tǒng)之問(wèn)的耦合性稍差。

本方案中加密數(shù)鋸庫(kù)文件的模型如圖1 所示。該模型采用B/S結(jié)構(gòu),在服務(wù)器端的加密,解密引擎處理從客戶(hù)端發(fā)來(lái)的對(duì)加密數(shù)據(jù)庫(kù)文件的訪問(wèn)請(qǐng)求并將結(jié)果返回給客戶(hù)端。對(duì)數(shù)據(jù)庫(kù)的合法用戶(hù)來(lái)說(shuō),數(shù)據(jù)的錄入,修改和檢索操作是透明的,不需要考慮數(shù)據(jù)文件加密和解密問(wèn)題。

數(shù)據(jù)庫(kù)文件加密在網(wǎng)絡(luò)考試系統(tǒng)中的應(yīng)用

加密字典中記載了用戶(hù)對(duì)數(shù)據(jù)庫(kù)文件信息具體的加密要求,它是數(shù)據(jù)庫(kù)文件加密系統(tǒng)的基礎(chǔ)信息。

加密字典管理程序是數(shù)據(jù)庫(kù)管理員定義加密數(shù)據(jù)項(xiàng)的工具,提供了創(chuàng)建加密字典、刪除加密字典、表加密、表解密、表修復(fù)、加像字典權(quán)限管理等功能,它利用數(shù)據(jù)庫(kù)文件加密和解密引擎完成對(duì)已有數(shù)據(jù)文件的加密或解密處理。加密和解密引擎位于瀏覽器和數(shù)據(jù)庫(kù)服務(wù)器之間的Web服務(wù)器上,是數(shù)據(jù)庫(kù)文件加密系統(tǒng)的核心部件,負(fù)責(zé)后臺(tái)完成數(shù)據(jù)文件加密和解密處理。

2、字段加密方式

本文對(duì)不同記錄的相同字段采用不同的密鑰加密,雖然安全性好,也可以靈活選擇需要加密的字段值,但其密鑰的數(shù)量是非常龐大的。如果一個(gè)表中有M條記錄,一個(gè)記錄中有N個(gè)需要加密的字段,那么這個(gè)表需要的加密的字段是M*N,整個(gè)數(shù)據(jù)庫(kù)系統(tǒng)中密鑰數(shù)量則更多,隨著數(shù)據(jù)庫(kù)中記錄的增加,這個(gè)問(wèn)題會(huì)越來(lái)越突出。為了減少時(shí)空消耗,本文的方案中對(duì)不同記錄的相同字段采朋相同的密鑰加密,即一個(gè)加密字段對(duì)應(yīng)一個(gè)數(shù)據(jù)密鑰,一個(gè)數(shù)據(jù)密鑰為多個(gè)授權(quán)用戶(hù)共享。但這樣又會(huì)帶來(lái)一定的不安全性,容易被統(tǒng)計(jì)攻擊。例如:對(duì)于不同記錄p和q上屬性相同的兩個(gè)數(shù)據(jù)項(xiàng)xpj和xqj,若xpj=xqj,則加密后的密文是相同的,即cpj=cqj,這樣,如果cpj和cqj中的任意一個(gè)被破譯,那么xpj和xqj就會(huì)同時(shí)被泄露。由于同一屬性中數(shù)據(jù)項(xiàng)的取值在一定范圍之內(nèi),且往往呈現(xiàn)一定的概率分布,攻擊者甚至可以不用求原文,而直接通過(guò)統(tǒng)計(jì)方法,就可以得到有關(guān)的原文信息。對(duì)于考試系統(tǒng)來(lái)說(shuō),需要加密的字段的取值范圍一般較寬,特別是重要的試題內(nèi)容,黑客根本不可能進(jìn)行統(tǒng)計(jì)攻擊I選擇題的答案范圍最小,一般在A、B、C和D四個(gè)取值范圍內(nèi),很容易被統(tǒng)計(jì)攻擊,但只要加密算法的強(qiáng)度夠大,黑客就不可能輕易破解得到明文。

3、AES加密算法的選擇與改進(jìn)

有人認(rèn)為使用一個(gè)不公開(kāi)的加密算法可以增加系統(tǒng)安全性,其實(shí)不然,未經(jīng)驗(yàn)證的加密算法很可能存在漏洞,有逆向工程分析經(jīng)驗(yàn)的人員利用Ollydbg之類(lèi)的跟蹤調(diào)試工具就可以輕易地破解其加密算法。由于考試系統(tǒng)會(huì)被反復(fù)使用,所以?xún)H靠加密算法的保密很難保征信息的安全。因此,選取的加密算法應(yīng)該是公開(kāi)的,其安全性應(yīng)該只基于密鑰的長(zhǎng)度,而不是基于算法或控制的秘密。數(shù)據(jù)庫(kù)加密算法一般采用算法公開(kāi)、計(jì)算曼小、加密速度快、加密效率高的對(duì)稱(chēng)加密算法。目前常用的對(duì)稱(chēng)加密算法有DES、3DES和AES等。DES加密算法運(yùn)行速度最快,而128位AES的加密算法對(duì)數(shù)據(jù)進(jìn)行加密保護(hù)。

AES加密算法中,當(dāng)數(shù)據(jù)分組長(zhǎng)度和密鑰長(zhǎng)度均為128位時(shí),要加密的數(shù)據(jù)即明文被分成128位一組。如果明文分組的長(zhǎng)度不是128位的整數(shù)倍時(shí),最后一個(gè)明文分組的長(zhǎng)度就小于128位。如果采用填充"00”或其他數(shù)據(jù)使其長(zhǎng)度也為128位,加密后的數(shù)據(jù)文件就大于明文的長(zhǎng)度,不符合數(shù)據(jù)庫(kù)加密算法的要求。為使加密后的數(shù)據(jù)文件長(zhǎng)度不變,我們采用“密碼挪用法”來(lái)解決。當(dāng)待加密數(shù)據(jù)的長(zhǎng)度為24碼(即192位)時(shí),密碼挪用法加密過(guò)程如圖2所示。

數(shù)據(jù)庫(kù)文件加密在網(wǎng)絡(luò)考試系統(tǒng)中的應(yīng)用

第一個(gè)整組(1~16碼)加密后截取第9~16碼的密文與尾部(17~24碼)組成—個(gè)整組進(jìn)行加密,加密所得密碼接在前一組的第8個(gè)密碼之后。其中,第9~16碼實(shí)際上進(jìn)行了二次加密,在解密時(shí)也應(yīng)該進(jìn)行二次解密。這一改進(jìn)既保證了128位分組加密,同時(shí)也保證了數(shù)據(jù)庫(kù)文件加密以后,數(shù)據(jù)長(zhǎng)度不會(huì)變化。

4、密鑰管理策略

密鑰管理方案雖然能夠充分地保證加密的強(qiáng)度,然而它有兩個(gè)明顯的缺點(diǎn),一是沒(méi)有提出很好的主密鑰保護(hù)方案,一旦主密鑰泄露或被攻破,所有被加镥的數(shù)據(jù)就將暴露無(wú)遺,二是主密鑰的更換將純大量的時(shí)間,因?yàn)槊恳淮胃鼡Q主密鑰,都要解密所有的密文數(shù)據(jù),然后再用新的主密鑰加密這些被解密的數(shù)據(jù)。一種好的加密數(shù)據(jù)庫(kù)加密機(jī)制,應(yīng)盡量減少密鑰生成。分派、存取、更換時(shí)的工作量和降低可能的安全風(fēng)險(xiǎn),同時(shí)還應(yīng)盡可能考慮用戶(hù)的使用習(xí)慣,保征用戶(hù)易于使用。

考試系統(tǒng)中,考生的特點(diǎn)就是數(shù)量眾多,流動(dòng)性大。這里我們可以為每位考試系統(tǒng)的用戶(hù)分配一個(gè)用戶(hù)密鑰,用戶(hù)口令對(duì)用戶(hù)密鑰進(jìn)行加密,用用戶(hù)密鑰對(duì)數(shù)據(jù)密鑰進(jìn)行加密,最終用數(shù)據(jù)密鑰對(duì)數(shù)據(jù)進(jìn)行加密和解密。具體實(shí)施方案如下:

在用戶(hù)注冊(cè)成功時(shí),由系統(tǒng)采用投幣法為其產(chǎn)生56位的二進(jìn)制密鑰,即用戶(hù)密鑰,并以用戶(hù)口令的Hash值為密鑰用AES加密算法加密后存儲(chǔ)在用戶(hù)信息表中1系統(tǒng)為用戶(hù)分配權(quán)限時(shí),以用戶(hù)密鑰為密鑰用AES加密算法加密授權(quán)字段的數(shù)據(jù)密鑰(系統(tǒng)隨機(jī)產(chǎn)生)后存儲(chǔ)往用戶(hù)權(quán)限表中;數(shù)據(jù)密鑰對(duì)明文數(shù)據(jù)用AES加密算法進(jìn)行加密得到密文數(shù)據(jù)存儲(chǔ)住數(shù)據(jù)庫(kù)中。這個(gè)密鑰管理方案的安全問(wèn)題最終集中在用戶(hù)口令的安全上。為提高系統(tǒng)的安全性,用戶(hù)需要不定期更換用戶(hù)口令,這時(shí)只要用IH口令的MD5值解密該用戶(hù)的用戶(hù)密鑰,再用新口令加密用戶(hù)密鑰即可,不必進(jìn)行大量數(shù)據(jù)文件加密和解密,大大提高了系統(tǒng)的性能。

三、方案分析與完善

本文提出的數(shù)據(jù)庫(kù)文件加密方案能夠保證授權(quán)用戶(hù)正常訪問(wèn)數(shù)據(jù),也允許授權(quán)用戶(hù)之間對(duì)加密數(shù)據(jù)共享訪問(wèn),密鑰管理方便、有效。為了進(jìn)一步提高系統(tǒng)性能,減少不必要的開(kāi)銷(xiāo),對(duì)以下兩種情況要特別處理:

一是用戶(hù)登錄后可能委多次訪問(wèn)巳授權(quán)的加密字段,可以在用戶(hù)登錄后將解密得到的用戶(hù)密鑰的明文存儲(chǔ)在應(yīng)用程序上下文中,以后每次要用到時(shí)直接在應(yīng)用程序上下文中取出,這樣一次完整的訪問(wèn)密文數(shù)據(jù)的過(guò)程最多需要執(zhí)行3次AES,從第二次訪問(wèn)開(kāi)始只需執(zhí)行兩次AES,而AES的速度是非??斓?,對(duì)系統(tǒng)的影響用戶(hù)幾乎感覺(jué)不到。

二是數(shù)據(jù)庫(kù)表的數(shù)據(jù)文件加密后,密文數(shù)據(jù)將不再保持明文數(shù)據(jù)原有的順序關(guān)系,如果加密建立在某個(gè)索引字段上,而用戶(hù)的查洵條件又剛好涉及到該加密字段,就不能實(shí)現(xiàn)快速查詢(xún)了。改進(jìn)的辦法之一是將查詢(xún)條件加密后再進(jìn)行密文查詢(xún),最后將得到的查詢(xún)結(jié)果解密返回給用戶(hù)。

小知識(shí)之網(wǎng)絡(luò)考試系統(tǒng)

網(wǎng)絡(luò)考試是延伸了傳統(tǒng)考試考場(chǎng)的涵義,它利用網(wǎng)絡(luò)的無(wú)限廣闊空間,把考場(chǎng)從學(xué)校延伸到了家中、計(jì)算機(jī)房、辦公室及其它任何網(wǎng)絡(luò)所覆蓋的區(qū)域,并可隨時(shí)對(duì)考生進(jìn)行考試,加上數(shù)據(jù)庫(kù)技術(shù)的利用,使考試變得更公平公正、更具權(quán)威性和可靠性。網(wǎng)絡(luò)考試實(shí)現(xiàn)了傳統(tǒng)考試與現(xiàn)代科技的完美結(jié)合,符合現(xiàn)代教育體制的要求,代表著現(xiàn)代教育考試的發(fā)展方向。