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