摘 要:加密算法是數據加密技術的核心,數據庫密碼系統的加密算法必須適應數據庫系統的特性。針對網上考試系統加密技術,對DES算法進行分析,并在應用基礎上進行改進。
關鍵詞:密文數據庫;DES算法;密鑰;數據查詢
中圖分類號:TP392
文獻標識碼:A
文章編號:1672-3198(2010)19-0314-02
1 DES算法分析
從整體結構來看,DES加密算法可以分為三個階段:
1.1初始置換
對于給定明文m,通過一個固定的初始置換IP來重新排列m中的所有比特,從而構造比特串m0,我們把64位的比特串拆分成左右兩個部分,即m0=IP(m)=L0R0,這里L0由m0的前32位組成,R0由m0的后32位組成;1.2 十六次迭代變換
所有十六次迭代具有相同的結構。第i次迭代運算以前一次迭代的結果和由用戶密鑰擴展得到的子密鑰Ki作為輸入進行運算;每一次迭代運算只對數據的右半部分Ri-1進行變換,并根據如下規則得到LiRi作為下一輪迭代的輸入:Li=Ri-1 Ri=Li-1⊕f(Ri-1,Ki ),其中⊕表示兩個比特串的異或(按位模2加),f是一個非線性函數;
1.3 末置換
對十六次迭代變換后得到的結果使用IP置換的逆置換IP-1,最后所得到的輸出即為密文。DES的加密運算框圖見圖1。
在DES算法中,每一輪迭代運算都使用了一個子密鑰,子密鑰是從用戶輸入的密鑰產生的。因此,子密鑰的強度是DES算法的安全性的保證,甚至可以說DES算法的安全性完全依賴于所有的密鑰。DES算法子密鑰的生成過程示意見圖2。
實際上,K是長度為64的比特串,其中56比特是密鑰,8比特是奇偶校驗位, 奇偶校驗位分布在位于8﹑16……64位置上。56位密鑰經過置換選擇1﹑循環左移﹑置換選擇2等變換,產生16個子密鑰。
DES算法運用了置換、替代、代數等多種密碼技術,算法結構緊湊,條理清楚,而且加密與解密算法類似,這些特點都便于將DES算法在工程中實現。但自從DES作為數據加密標準起,對它的安全性也有著激烈的爭論。20年來對DES算法的一些主要研究成果有以下多個方面:
互補性:DES具有的性質:若明文組X逐位取補得X,密鑰K逐位取補得K,具有Y=DESK(X),則Y=DESK(X),其中Y是Y的逐位取補,這種特性稱為算法上的互補性。這種互補性表現在選擇明文攻擊下僅需實驗其可能的256個密鑰的一半255個即可。另外互補性告誡人們不要使用互補密鑰。
密文與明文、密文與密鑰的相關性:對它們的研究表明可使每個密文比特都是所有明文比特和所有密鑰比特的復合函數,并且指出要達到這一要求至少需迭代5輪。并有研究證明8輪后輸出和輸入句可以認為是不相關的了。
S-盒的設計:S-盒是DES的心臟,DES靠它實現非線形變換,關于S盒的設計準則還沒有完全公開。許多密碼學家NSA設計S盒時隱藏了“陷門”,使得只有他們才可以破譯算法,但沒有證據能表明這一點。
密鑰搜索機:對DES安全性批評意見中,較為一致的看法是DES的密鑰太短,其密鑰長度為56比特,密鑰量為256≈1017,不能抵抗窮盡搜索攻擊。1997年1月28日,美國的RSA數據安全公司在RSA安全年會上公布了一項“秘密密鑰挑戰”競賽,懸賞100美金破譯長度為56比特的DES算法的相對強度。美國克羅拉州的程序員VERSER用了96天的時間,成功地破譯了DES的密鑰。這一事件表明依靠INTERNET的分布計算能力,用窮盡搜索破譯DES以成為可能,從而使人們認識到隨著計算能力的增強,必須相應地增加算法的密鑰長度。
2 DES算法在考試系統中的實現
DES算法全稱為Data Encryption Standard,即數據加密算法。DES算法的入口參數有三個:Key、Data、Mode。其中Key為8個字節共64位,是DES算法的工作密鑰;Data也為8個字節64位,是要被加密或被解密的數據;Mode為DES的工作方式,有兩種:加密或解密。
2.1 密文數據庫中數據加密設計
以“江財職院網上考試系統”數據庫中的表“考試成績(學號,科目編號,分數)” 為例,用DES算法實現數據加密。為了能在當前選用的SQL SERVER 2000中進行高效的數據查詢,“考試成績”數據表中的“分數”屬性列實現密文存儲,而關鍵字段“學號,科目編號”實現明文存儲。明文存儲的“考試成績”數據表見表1。
用DES算法實現數據加密,加密函數des(明文,k)=密文。按‘分數’加密存儲的“考試成績”數據表見表2。
2.2密文數據庫中的數據查詢操作
就當前我國的數據庫技術現狀,在密文數據庫中實現數據查詢主要有以下兩種方法。
(1)對全表進行解密,然后再實現明文查詢
如當我們要查詢成績在85分以上的學生學號及科目編號,首先將表2中的密文數據進行全表解密還原成明文數據表1,然后在明文表上進行明文查詢,查詢語句為:
select 學號,科目編號 from 考試成績 where 分數>85
由于增加了額外的脫密開銷,這種加密數據庫查詢機制會導致數據庫系統效率大大降低。
(2)由用戶自定義函數實現密文查詢
如當我們要查詢成績在85分以上的學生學號及科目編號,我們可以利用SQL SERVER 2000的用戶自定義函數功能,設計一個解密函數des-1(密文,k),在查詢語句中直接對數據表中的密文列進行解密后實施條件比較,查詢語句為:
select 學號,科目編號 from 考試成績 where des-1(密文,k)>85
3 DES算法的改進
改變對分組密碼算法傳統的應用處理方法,使其加密后密文長度不變,就能滿足1.中提出的數據加密系統對數據庫密碼的要求。
這里以數據加密標準DES為例進行說明。DES算法中數據分組長度、密度長度和輸出密文長度均為64位,明文經過16輪的迭代、乘積變換、壓縮變換等編碼過程輸出密文。一個需要注意的問題是對尾部碎片的處理方法。傳統的做法是填充數據而使其成為一個整組,這種處理方法會使數據擴張,不適用于數據庫加密。因此我們使用了“密碼挪用法”來解決這個問題,見圖3。
圖3 密碼挪用法
在上圖中,待加密的數據的長度為13。第一整組(1-8碼)加密后截取第6-8碼的密文與尾部(9-13碼)組成一個整組進行加密,加密所得密碼接在前一組的第5個密碼之后。其中第6-8碼實際上進行了二次加密,在脫密時也應該進行脫密。這一方法保證了64位分組加密,同時又保證了數據庫加密以后,數據長度不會變化。
綜上所述,算法很多,各有優劣。根據數據庫加密的具體情況,在本系統中數據庫加密算法選擇DES算法作為可密文查詢的加密算法。
4 結語
作為分組密碼的典型代表,DES算法自問世以來,就對密碼學的發展趨勢產生了深刻的影響。本文通過分析序列密碼體制、分組密碼體制,提出用DES算法作為可密文查詢的加密算法,并就加密數據庫的密文索引技術進行了簡單分析。同時設計了一種密鑰管理方案,該方案實行二級密鑰管理,實現對密鑰的安全性保護。此外使用“密碼挪用法”來解決數據加密中的尾部碎片的問題。
參考文獻
[1]謝志強,高鵬飛,楊靜.基于前綴碼的DES算法改進研究[J]. 計算機工程與應用,2009,(9).
[2]王艷,胡鳴.基于DES算法實現文件完整性檢測方法的研究[J]. 武漢科技學院學報,2009,(1).
[3]張健,孟晨.COM技術在軟件可測試性中的應用[J].微計算機信息,2005,(5).
[4]楊靈鑫.數據庫安全技術分析及改進策略[J].河北北方學院學報(自然科學版),2008,(2).
[5]管瑩,敬茂華.DES算法原理及實現[J].電腦編程技巧與維護,2009,(4).