一種數(shù)據(jù)庫加密策略在網(wǎng)絡考試系統(tǒng)中的應用
網(wǎng)絡考試系統(tǒng)是隨著計算機技術的普及而開始的新興事務,實現(xiàn)了傳統(tǒng)考試與現(xiàn)代科技的完美結合,同時也使考試變得更公平公正、更具權威性和可靠性。網(wǎng)絡考試系統(tǒng)—般采用目前主流的中小型企業(yè)級數(shù)據(jù)庫MS SQL Server,它提供了身份驗證、權限驗證、訪問控制、數(shù)據(jù)庫備份和恢復以及審計等安全管理機制,但對數(shù)據(jù)庫文件本身仍然缺乏有效的保護措施,為此我們結合網(wǎng)絡考試系統(tǒng)的特點提出了一種基于字段加密、動態(tài)分配密鑰的數(shù)據(jù)庫加密策略。
一、網(wǎng)絡考試系統(tǒng)中數(shù)據(jù)庫加密的要求
網(wǎng)絡考試系統(tǒng)中涉及的人員眾多,大致可以分為兩類人員:管理人員和考生,其中考生數(shù)量眾多、流動性大,而且很多考生可能參加了一次考試就不會再參加考試了;此外,考試過程中用戶對系統(tǒng)的實時性要求很高。針對系統(tǒng)的特點,其數(shù)據(jù)庫加密應滿足以下基本要求:
(1)字段加密。考慮到系統(tǒng)的性能和實時性要求,應該只對關鍵字段加密。如果加,解密的粒度是文件將降低系統(tǒng)的可靠性,而且會因加密、解密時間過長而令用戶無法忍受。
(2)加密強度大。理論上數(shù)據(jù)加密后應該是安全的或者破解的難度很大。
(3)密鑰動態(tài)管理。數(shù)據(jù)庫客體之間隱含著復雜的邏輯關系,一個邏輯結構可能對應著多個數(shù)據(jù)庫物理客體,所以數(shù)據(jù)庫加密不僅密鑰量大,而且組織和存儲工作比較復雜,需要對密鑰實現(xiàn)動態(tài)管理。
(4)合理處理數(shù)據(jù)。首先要恰當?shù)靥幚頂?shù)據(jù)類型,否則DBMS將會因加密后的數(shù)據(jù)不符合定義的數(shù)據(jù)類型而拒絕加載,其次,需要處理數(shù)據(jù)的存儲問題,實現(xiàn)數(shù)據(jù)庫加密后,應基本上不增加空間開銷。另外,數(shù)據(jù)庫關系運算中的匹配字段,如表問連接碼、索引字段等數(shù)據(jù)不宜加密。
(5)不影響合法用戶的操作。加密系統(tǒng)影響數(shù)據(jù)操作響(3)密鑰動態(tài)管理。數(shù)據(jù)庫客體之間隱含著復雜的邏輯關系,一個邏輯結構可能對應著多個數(shù)據(jù)庫物理客體,所以應時間應盡量短,在現(xiàn)階段,平均延遲時間不應超過1/10秒。此外,對數(shù)據(jù)庫的合法用戶來說,數(shù)據(jù)的錄入、修改和檢索操作應該是透明的,不需要考慮數(shù)據(jù)的加密、解密問題。
二、網(wǎng)絡考試系統(tǒng)數(shù)據(jù)庫加密策略設計
1、網(wǎng)絡考試系統(tǒng)數(shù)據(jù)庫加密的模型
對網(wǎng)絡考試系統(tǒng)數(shù)據(jù)庫進行加密,可選擇的層次主要有操作系統(tǒng)層、DBMS內(nèi)核層和DBMS外圍層,三種方案各有優(yōu)缺點。比較實際的做法是在DBMS外層實現(xiàn)加密,就是在數(shù)據(jù)庫外圍構造一個數(shù)據(jù)庫系統(tǒng)的加密、解密工具。采用這種加密方式時,加密、解密運算可以放在客戶端進行,其優(yōu)點是不會加重數(shù)據(jù)庫服務器的負載并可實現(xiàn)網(wǎng)上傳輸加密,缺點是加密功能會受到一些限制,與數(shù)據(jù)庫管理系統(tǒng)之間的耦合性稍差。
該模型采用B/S結構,在服務器端的加,解密引擎處理從客戶端發(fā)來的對加密數(shù)據(jù)庫的訪問請求并將結果返回給客戶端。對數(shù)據(jù)庫的合法用戶來說,數(shù)據(jù)的錄入、修改和檢索操作是透明的,不需要考慮數(shù)據(jù)的加密,解密問題。
加密字典中記載了用戶對數(shù)據(jù)庫信息具體的加密要求,它是數(shù)據(jù)庫加密系統(tǒng)的基礎信息。加密字典管理程序是數(shù)據(jù)庫管理員定義加密數(shù)據(jù)項的工具,提供了創(chuàng)建加密字典、刪除加密字典、表加密、表解密、表修復、加密字典權限管理等功能,它利用數(shù)據(jù)庫加密引擎、解密引擎完成對已有數(shù)據(jù)的加密或解密處理。
加密引擎、解密引擎位于瀏覽器和數(shù)據(jù)庫服務器之間的Web服務器上,是數(shù)據(jù)庫加密系統(tǒng)的核心部件,負責在后臺完成數(shù)據(jù)的加密和解密處理。
2、字段加密方式
本文對不同記錄的相同字段采用不同的密鑰加密,雖然安全性好,也可以靈活選擇需要加密的字段值,但其密鑰的數(shù)量是非常龐大的。如果一個表中有M條記錄,一個記錄中有N個需要加密的字段,那么這個表需要的加密密鑰數(shù)量是M*N,整個數(shù)據(jù)庫系統(tǒng)中密鑰數(shù)量則更多,隨著數(shù)據(jù)庫中記錄的增加,這個問題會越來越突出。為了減少時空消耗,本文的方案中對不同記錄的相同字段采用相同的密鑰加密,即一個加密字段對應一個數(shù)據(jù)密鑰,一個數(shù)據(jù)密鑰為多個授權用戶共享。但這樣又會帶來一定的不安全性,容易被統(tǒng)計攻擊。例如:對于不同記錄p和q上屬性相同的兩個數(shù)據(jù)項xpj和xqj,若xpj=xqj,則加密后的密文是相同的,即cpj=cqj,這樣,如果cpj和cqj中的任意一個被破譯,那么xpj和xqj就會同時被泄漏,由于同一屬性中數(shù)據(jù)項的取值在一定范圍之內(nèi),且往往呈現(xiàn)一定的概率分布,,攻擊者甚至可以不用求原文,而直接通過統(tǒng)計方法,就可以得到有關的原文信息。對于考試系統(tǒng)來說,需要加密的字段的取值范圍一般較寬,特別是重要的試題內(nèi)容,黑客根本不可能進行統(tǒng)計攻擊。選擇題的答案范圍最小,一般在A、B、C和D四個取值范圍內(nèi),很容易被統(tǒng)計攻擊,、但只要加密算法的強度夠大,黑客就不可能輕易破解得到明文。
3、加密算法AES選擇與改進
有人認為使用一個不公開的加密算法可以增加系統(tǒng)安全性,其實不然,未經(jīng)驗證的加密算法很可能存在漏洞,有逆向工程分析經(jīng)驗的人員利用Ollydbg之類的跟蹤調(diào)試工具就可以輕易地破解其加密算法。由于考試系統(tǒng)會被反復使用,所以僅靠加密算法的保密很難保證信息的安全。因此,選取的加密算法應該是公開的,其安全性應該只基于密鑰的長度,而不是基于算法或控制的秘密。數(shù)據(jù)庫加密算法一般采用算法公開、計算量小、加密速度快、加密效率高的對稱加密算法。目前常用的對稱加密算法有DES,3DES和AES等。DES加密算法運行速度最快,而128位AES的加密算法對數(shù)據(jù)進行加密保護。
AES算法中,當數(shù)據(jù)分組長度和密鑰長度均為128位時,要加密的數(shù)據(jù)郎明文被分成128位一紐。如果明文分組的長度不是128位的整數(shù)倍時,最后一個明文分組的長度就小于128位。如果采用填充“00”或其他數(shù)據(jù)使其長度也為128位,加密后的數(shù)據(jù)就大于明文的長度,不符合數(shù)據(jù)庫加密算法的要求。為使加密后的數(shù)據(jù)長度不變,我們采用“密碼挪用法”來解決。。
第一個整組(1~16碼)加密后截取第9—16碼的密文與尾部(17—24碼)組成一個整組進行加密,加密所得密碼接在前—組的第8個密碼之后。其中,第9—16碼實際上進行了二次加密,在解密時也應該進行二次解密。這一改進既保證了128位分組加密,同時也保證了數(shù)據(jù)庫加密以后,數(shù)據(jù)長度不會變化。
4、密鑰管理策略
密鑰管理方案雖然能夠充分地保證加密的強度,然而它有兩個明顯的缺點,一是沒有提出很好的主密鑰保護方案,一旦主密鑰泄露或被攻破,所有被加密的數(shù)據(jù)就將暴露無遺;一是主密鑰的更換將花大量的時間,因為每一次更換主密鑰,都要解密所有的密文數(shù)據(jù),然后再用新的主密鑰加密這些被解密的數(shù)據(jù)。一種好的加密數(shù)據(jù)庫加密機制,應盡量減少密鑰生成、分派、存取、更換時的工作量和降低可能的安全風險,同時還應盡可能考慮用戶的使用習慣,保證用戶易于使用。
考試系統(tǒng)中,考生的特點就是數(shù)量眾多、流動性大。這里我們可以為每位考試系統(tǒng)的用戶分配一個用戶密鑰,用用戶口令對用戶密鑰進行加密,用用戶密鑰對數(shù)據(jù)密鑰進行加密,最終用數(shù)據(jù)密鑰對數(shù)據(jù)進行加密和解密。具體實施方案如下:
在用戶注冊成功時,由系統(tǒng)采用投幣法為其產(chǎn)生56位的二進制密鑰,即用戶密鑰,并以用戶口令的Hash值為密鑰用AES算法加密后存儲在用戶信息表中,系統(tǒng)為用戶分配權限時,以用戶密鑰為密鑰用AES算法加密授權字段的數(shù)據(jù)密鑰(系統(tǒng)隨機產(chǎn)生)后存儲在用戶權限表中,數(shù)據(jù)密鑰對明文數(shù)據(jù)用AES算法進行加密得到密文數(shù)據(jù)存儲在數(shù)據(jù)庫中。
這個密鑰管理方案的安全問題最終集中在用戶口令的安全上。為提高系統(tǒng)的安全性,用戶需要不定期更換用戶口令,這時只要用舊口令的MD5值解密該用戶的用戶密鑰,再用新口令加密用戶密鑰即可。不必進行大量數(shù)據(jù)的加密和解密,大大提高了系統(tǒng)的性能。
三、網(wǎng)絡考試系統(tǒng)數(shù)據(jù)庫加密方案分析與完善
本文提出的數(shù)據(jù)庫加密方案能夠保證授權用戶正常訪問數(shù)據(jù),也允許授權用戶之間對加密數(shù)據(jù)共享訪問,密鑰管理方便、有效。為了進一步提高系統(tǒng)性能,減少不必要的開銷,對以下兩種情況要特別處理:
一是用戶登錄后可能要多次訪問巳授權的加密字段,可以在用戶登錄后將解密得到的用戶密鑰的明文存儲在應用程序上下文中,以后每次要用到時直接在應用程序上下文中取出,這樣一次完整的訪問密文數(shù)據(jù)的過程最多需要執(zhí)行3次AES,從第二次訪問開始只需執(zhí)行兩次AES,而AES的速度是非常快的,對系統(tǒng)的影響用戶幾乎感覺不到。
二是數(shù)據(jù)庫表的數(shù)據(jù)加密后,密文數(shù)據(jù)將不再保持明文數(shù)據(jù)原有的順序關系,如果加密建立在某個索引字段上。而用戶的查詢條件又剛好涉及到該加密字段,就不能實現(xiàn)快速查詢了。改進的辦法之一是將查詢條件加密后再進行密文查詢,最后將得到的查詢結果解密返回給用戶。
小知識之網(wǎng)絡考試系統(tǒng)
網(wǎng)絡考試是延伸了傳統(tǒng)考試考場的涵義,它利用網(wǎng)絡的無限廣闊空間,把考場從學校延伸到了家中、計算機房、辦公室及其它任何網(wǎng)絡所覆蓋的區(qū)域,并可隨時對考生進行考試,加上數(shù)據(jù)庫技術的利用,使考試變得更公平公正、更具權威性和可靠性。網(wǎng)絡考試實現(xiàn)了傳統(tǒng)考試與現(xiàn)代科技的完美結合,符合現(xiàn)代教育體制的要求,代表著現(xiàn)代教育考試的發(fā)展方向。




