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

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

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

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

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

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

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

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

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

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

4、字段加密

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

5、不影響合法用戶的操作

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

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

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

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

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

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

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

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

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

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

2、字段加密方式

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

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

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

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

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

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

4、密鑰管理策略

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

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

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

三、方案分析與完善

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

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

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

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

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