王曉英
(赤峰學(xué)院 數(shù)學(xué)學(xué)院,內(nèi)蒙古 赤峰 024000)
數(shù)據(jù)加密基本方法
王曉英
(赤峰學(xué)院 數(shù)學(xué)學(xué)院,內(nèi)蒙古 赤峰 024000)
本文對(duì)數(shù)據(jù)加密的概念和方法進(jìn)行了介紹,首先概述了數(shù)據(jù)加密的起源和發(fā)展,其次介紹了密碼系統(tǒng)的概念、分類(lèi)以及密碼分析方法,最后對(duì)分組密碼進(jìn)行了全面的概述,包括工作模式、設(shè)計(jì)原則以及現(xiàn)有結(jié)構(gòu)等.
數(shù)據(jù)加密;密碼系統(tǒng);算法;模式
數(shù)據(jù)加密在網(wǎng)絡(luò)安全中起著重要作用.在缺乏保護(hù)的情況下,用戶在網(wǎng)絡(luò)上存儲(chǔ)和傳輸?shù)娜魏涡畔?,都存在被篡改和泄露的可能?這就要求我們不僅需要保護(hù)商業(yè)通信中的經(jīng)濟(jì)信息,而且還需要個(gè)人信息.因此,世界上許多大公司和研究機(jī)構(gòu),都在致力于解決國(guó)際互聯(lián)網(wǎng)上的安全問(wèn)題的研究.
安全問(wèn)題解決不好,小到個(gè)人利益受損,大到國(guó)家巨額財(cái)富流失.鑒于數(shù)據(jù)信息安全越來(lái)越重要,以近代密碼學(xué)為基礎(chǔ)的數(shù)據(jù)加密技術(shù)應(yīng)運(yùn)而生,并快速發(fā)展.從D E S、M D 5到R S A,再到橢圓曲線加密、混沌加密,以及最先進(jìn)的量子加密,無(wú)不說(shuō)明數(shù)據(jù)加密在信息傳輸中的重要地位.
在計(jì)算機(jī)中,我們經(jīng)常需要一種措施來(lái)保護(hù)我們的數(shù)據(jù),防止被一些懷有不良用心的人所看到或者破壞.于是,我們需要對(duì)數(shù)據(jù)進(jìn)行加密處理,使得非法途徑獲得數(shù)據(jù)的人無(wú)法破譯[3].
數(shù)據(jù)加密過(guò)程可以簡(jiǎn)單概括成:“把數(shù)據(jù)A表達(dá)成B”;而反加密過(guò)程(破譯或解密)是:“把數(shù)據(jù)B恢復(fù)成A”.
數(shù)據(jù)加密的術(shù)語(yǔ)包括:“明文”指原始的或未加密的數(shù)據(jù);“密文”指明文加密后的形式,是加密算法的輸出信息,無(wú)密鑰的用戶無(wú)法理解,用于數(shù)據(jù)的存儲(chǔ)以及傳輸.
加密算法通常是公開(kāi)的,如果算法的保密性是基于算法的保密,這種算法稱(chēng)為受限制的算法.受限制的算法具有歷史意義,但按現(xiàn)代密碼學(xué)的標(biāo)準(zhǔn),其保密性遠(yuǎn)遠(yuǎn)不夠.而且,受限制的密碼算法不可能進(jìn)行質(zhì)量控制或標(biāo)準(zhǔn)化.每個(gè)用戶組織必須有他們自己的唯一算法.這樣的組織不可能采用流行的硬件或軟件產(chǎn)品.但竊聽(tīng)者卻可以買(mǎi)到這些流行產(chǎn)品并學(xué)習(xí)算法,于是用戶不得不自己編寫(xiě)算法并予以實(shí)現(xiàn),如果這個(gè)組織中沒(méi)有好的密碼學(xué)家,那么他們就無(wú)法知道他們是否擁有安全的算法.所以受限制加密算法不能廣泛應(yīng)用.
2.1 數(shù)據(jù)加密的起源數(shù)據(jù)加密技術(shù)起源于古代的密碼學(xué).密碼到底產(chǎn)生于何時(shí),很難給出確切時(shí)間,但是在人類(lèi)社會(huì)產(chǎn)生之初,就有了暗號(hào)的使用,它是密碼學(xué)的雛形.密碼的使用和人類(lèi)擁有文字的時(shí)間幾乎一樣長(zhǎng).
在我國(guó)可以考證的文獻(xiàn)里面[4],戰(zhàn)國(guó)時(shí)代己經(jīng)有了密碼的使用,特使在送信的時(shí)候,會(huì)將特殊約定的文書(shū)(已經(jīng)不是明文),拆分成三段,由三個(gè)不同的信使分三路送往目的地,這樣即便其中一部分文書(shū)被截獲,也不會(huì)被識(shí)破其玄機(jī).國(guó)外關(guān)于密碼的應(yīng)用也可追溯到4000年前的古巴比倫.
2.2 密碼的發(fā)展
從古至今,密碼學(xué)的發(fā)展己經(jīng)有幾千年的歷史,隨著密碼學(xué)的發(fā)展其應(yīng)用范圍也越來(lái)越廣,包括軍事、外交、商業(yè)、網(wǎng)絡(luò)以及人們的日常生活的各個(gè)領(lǐng)域.同時(shí)隨著集成電路、計(jì)算機(jī)和通信技術(shù)的飛速發(fā)展以及網(wǎng)絡(luò)技術(shù)的廣泛應(yīng)用,基于公共通信設(shè)施和計(jì)算機(jī)網(wǎng)絡(luò)的個(gè)人通信、多媒體通信、電子郵件、電子自動(dòng)轉(zhuǎn)賬系統(tǒng)和自動(dòng)零售業(yè)務(wù)網(wǎng)得以蓬勃發(fā)展,信息的安全和保護(hù)問(wèn)題顯得愈發(fā)重要.雖然密碼學(xué)的研究已有數(shù)千年的歷史,但是直到1949年,S h a n n o n發(fā)表的“保密系統(tǒng)的信息理論”為私鑰密碼體制建立了理論基礎(chǔ),密碼學(xué)從此成為一門(mén)科學(xué)[5].
密碼學(xué)作為保護(hù)信息的手段,經(jīng)歷了三個(gè)發(fā)展時(shí)期.它最早應(yīng)用在軍事和外交領(lǐng)域,隨著科技的發(fā)展而逐漸進(jìn)入人們的生活中.在手工階段,人們只需通過(guò)紙和筆對(duì)字符進(jìn)行加密.隨著工業(yè)革命的興起,密碼學(xué)也進(jìn)入了機(jī)器時(shí)代、電子時(shí)代.與人手操作相比,電子密碼機(jī)使用了更優(yōu)秀復(fù)雜的加密手段,同時(shí)也擁有更高的加密解密效率.其中最具有代表性的就是E N I G M A.E N I G M A是德國(guó)在1919年發(fā)明的一種加密電子器,它被證明是有史以來(lái)最可靠的加密系統(tǒng)之一.二戰(zhàn)期間它開(kāi)始被德軍大量用于鐵路、企業(yè)當(dāng)中,使德軍保密通訊技術(shù)處于領(lǐng)先地位.在這個(gè)時(shí)期雖然加密設(shè)備有了很大的進(jìn)步,但是密碼學(xué)的理論卻沒(méi)有多大的改變,加密的主要手段仍是替代和換位.
計(jì)算機(jī)的出現(xiàn)使密碼進(jìn)行高度復(fù)雜的運(yùn)算成為可能[6].直到1976年,為了適應(yīng)計(jì)算機(jī)網(wǎng)絡(luò)通信和商業(yè)保密要求產(chǎn)生的公開(kāi)密鑰密碼理論,密碼學(xué)才在真正意義上取得了重大突破,進(jìn)入近代密碼學(xué)階段.近代密碼學(xué)改變了古典密碼學(xué)單一的加密手法,融入了大量的數(shù)論、幾何、代數(shù)等豐富知識(shí),使密碼學(xué)得到更蓬勃的發(fā)展.
到了現(xiàn)在,世界各國(guó)仍然對(duì)密碼的研究高度重視,已經(jīng)發(fā)展到了現(xiàn)代密碼學(xué)時(shí)期.密碼學(xué)己經(jīng)成為結(jié)合物理、量子力學(xué)、電子學(xué)、語(yǔ)言學(xué)等多個(gè)專(zhuān)業(yè)的綜合科學(xué),出現(xiàn)了如“量子密碼”、“混沌密碼”等先進(jìn)理論,在信息安全中起著十分重要的角色.
一個(gè)密碼系統(tǒng)通常由以下幾個(gè)部分組成:
圖1 一般密碼系統(tǒng)的構(gòu)成
(1)明文空間M,它是全體明文的集合. (2)密文空間C,它是全體密文的集合.
(3)密鑰空間K,它是全體密鑰的集合.其中每一個(gè)密鑰K均由加密密鑰K和解密密鑰K'組成,既K=
(4)加密算法E,它是一族由M到C的加密變換. (5)解密算法D.它是一族由C到M的解密變換.
對(duì)于明文空間M中的每一個(gè)明文M,加密算法E在密鑰K的控制下將明文M加密成密文C=E(M,K),而解密算法D在密鑰K'的控制下將密文C解密出同一明文M:M=D (C,K')=D(E(M,K),K').對(duì)于每一個(gè)確定的密鑰,加密算法將確定一個(gè)具體的加密變換,解密算法將確定一個(gè)具體的解密變換,且解密變換是加密變換的逆變換.
4.1 根據(jù)密鑰分
通常,基于密鑰的算法,密碼系統(tǒng)分為兩類(lèi):對(duì)稱(chēng)算法和公開(kāi)密鑰算法.
對(duì)稱(chēng)算法表現(xiàn)為:K=K’,就是加密密鑰能夠從解密密鑰中推算出來(lái),反過(guò)來(lái)也成立.在大多數(shù)對(duì)稱(chēng)算法中,加、解密的密鑰是相同的.這些算法也叫做私鑰算法或單密鑰算法,它要求發(fā)送者和接收者在安全通信之前,商定一個(gè)密鑰.對(duì)稱(chēng)算法的安全性依賴(lài)于密鑰,泄漏密鑰就意味著任何人都能對(duì)消息進(jìn)行加懈密.只要通信需要保密,密鑰就必須保密.對(duì)稱(chēng)算法的原理比較直觀,計(jì)算處理的速度快,有廣泛的應(yīng)用.典型的算法主要有R C 2,R C 4,D E S,T E A等.
公開(kāi)密鑰算法(非對(duì)稱(chēng)算法)用做加密的密鑰不同于用做解密的密鑰,而且解密密鑰不能根據(jù)加密密鑰計(jì)算出來(lái)(至少在合理假定的長(zhǎng)時(shí)間內(nèi)).之所以叫做公開(kāi)密鑰算法,是因?yàn)榧用苊荑€能夠公開(kāi),即陌生者能夠用加密密鑰加密信息,但只有用相應(yīng)的解密密鑰才能解密信息.加密密鑰叫做公開(kāi)密鑰,解密密鑰叫做私人密鑰.公開(kāi)密鑰算法比較復(fù)雜,需要大量的計(jì)算工作,不太適合對(duì)大信息量?jī)?nèi)容進(jìn)行處理.因此,通常僅使用此方法對(duì)重要信息進(jìn)行加密.目前主要使用R S A等公開(kāi)密鑰方法.
對(duì)稱(chēng)加密算法實(shí)現(xiàn)簡(jiǎn)單,處理速度快,但對(duì)密鑰管理的保密性要求很高;公開(kāi)密鑰算法不需要經(jīng)過(guò)安全渠道傳遞密鑰,簡(jiǎn)化了對(duì)密鑰的管理,但運(yùn)算量大、處理速度慢.
4.2 根據(jù)明文的處理方式分
根據(jù)對(duì)明文的處理方式和密鑰的使用不同,可將密碼體制分為分組密碼和序列密碼.
分組密碼是將明文按一定的位長(zhǎng)分組,明文組和密鑰全部經(jīng)過(guò)加密運(yùn)算得到密文組,解密時(shí)密文組和密鑰經(jīng)過(guò)解密運(yùn)算還原成明文組.這個(gè)固定長(zhǎng)度被叫做塊大小,塊越大,保密性能越好,但加解密的算法和設(shè)備就越復(fù)雜,塊的大小一般為64或128字節(jié).典型的分組密碼標(biāo)準(zhǔn)有D E S、I D E A、A E S和T E A等.
序列密碼是一次只對(duì)明文中的單個(gè)位 (有時(shí)對(duì)字節(jié))運(yùn)算的算法.加密時(shí),將一段類(lèi)似于噪聲的偽隨機(jī)序列與明文序列模2加后作為密文序列,這樣即使對(duì)于一段全“0”或全“1”的明文序列,經(jīng)過(guò)序列密碼加密后也會(huì)變成類(lèi)似于隨機(jī)噪聲的混亂序列.在接收端,用相同的隨機(jī)序列與密文序列模2加便可恢復(fù)明文序列.序列密碼的優(yōu)點(diǎn)是運(yùn)算速度快,缺點(diǎn)是密鑰變換過(guò)于頻繁,密鑰分配較難.應(yīng)用最廣泛的序列密碼為R C 4.
序列密碼的加密、解密算法簡(jiǎn)單,適合于硬件實(shí)現(xiàn),但加密時(shí)對(duì)每一位數(shù)據(jù)都進(jìn)行耗時(shí)的位操作,不適合軟件實(shí)現(xiàn).分組密碼由于具有易于標(biāo)準(zhǔn)化和便于軟硬件實(shí)現(xiàn)等固有的特點(diǎn),在網(wǎng)絡(luò)安全中更加通用,但加密算法的保密性及復(fù)雜度受到塊大小的約束.
密碼分析是在不知道密鑰的情況下,恢復(fù)出明文.成功的密碼分析能恢復(fù)出消息的明文或密鑰.密碼分析也可以發(fā)現(xiàn)密碼體制的弱點(diǎn).
常用的密碼分析攻擊有6類(lèi)[4],每一類(lèi)都假設(shè)密碼分析者知道所用的加密算法的全部知識(shí):
5.1 密文攻擊.分析者有一些消息的密文,這些消息都用同一加密算法加密.密碼分析者的任務(wù)是恢復(fù)盡可能多的明文,或者最好是能推算出加密消息的密鑰,以便可采用相同的密鑰解除其他被加密的消息.
5.2 已知明文攻擊.分析者不僅可得到一些消息的密文,而且也知道這些消息的明文.分析者的任務(wù)就是用加密信息推出用來(lái)加密的密鑰或?qū)С鲆粋€(gè)算法,此算法可以對(duì)用同一密鑰加密的任何新的消息進(jìn)行解密.
5.3 選擇明文攻擊.分析者不僅可得到一些消息的密文和相應(yīng)的明文,而且他們也可選擇被加密的明文.這比已知明文攻擊更有效.因?yàn)槊艽a分析者能選擇特定的明文塊去加密,那些塊可能產(chǎn)生更多關(guān)于密鑰的信息,分析者的任務(wù)是推出用來(lái)加密消息的密鑰或?qū)С鲆粋€(gè)算法,此算法可以對(duì)用同一密鑰加密的任何新的消息進(jìn)行解密.
5.4 自適應(yīng)選擇明文攻擊.這是選擇明文攻擊的特殊情況.分析者不僅能選擇被加密的明文,而且也能基于以前加密的結(jié)果修正這個(gè)選擇.在選擇明文攻擊中,密碼分析者還可以選擇一大塊被加密的明文.而在自適應(yīng)選擇密文攻擊中,可選取較小的明文塊,然后再基于第一塊的結(jié)果選擇另一明文塊,以此類(lèi)推.
5.5 選擇密文攻擊.密碼分析者能選擇不同的被加密的密文,并可得到對(duì)應(yīng)的解密的明文,例如密碼分析者存取一個(gè)防竄改的自動(dòng)解密盒,密碼分析者的任務(wù)是推出密鑰.這種攻擊主要用于公開(kāi)密鑰算法,有時(shí)也可有效地用于對(duì)稱(chēng)算法.
5.6 選擇密鑰攻擊.這種攻擊并不表示密碼分析者能夠選擇密鑰,它只表示密碼分析者具有不同密鑰之間的關(guān)系的有關(guān)知識(shí).
衡量一個(gè)密碼系統(tǒng)的安全性有兩種基本方法,一是實(shí)際安全性,二是理論安全性.一個(gè)密碼,如果無(wú)論密碼分析者截獲多少密文,用什么技術(shù)都無(wú)法破譯,則稱(chēng)該密碼系統(tǒng)理論上是安全的.這是香農(nóng)著名的“一次一密”密碼.如果一個(gè)密碼,破譯該系統(tǒng)所需要的努力超過(guò)了敵手的破譯能力(如時(shí)間、空間和資金等資源),或破譯該系統(tǒng)的難度等價(jià)于解數(shù)學(xué)上的某個(gè)已知難題,則稱(chēng)該密碼系統(tǒng)在實(shí)際中是安全的.對(duì)于我們更有意義的是實(shí)際不可破譯的密碼系統(tǒng).
從目前的情況來(lái)看,使用傳統(tǒng)的方法進(jìn)行加密容易被破解.如廣泛使用的m序列,只需知道2 n個(gè)比特(n為寄存器的級(jí)數(shù))的碼元就能破譯該系統(tǒng).再比如,美國(guó)的加密標(biāo)準(zhǔn)D E S(56比特)已經(jīng)于1997年6月17日被攻破.另?yè)?jù)報(bào)道1024比特的R S A也可能在2010年被攻破.由此可見(jiàn),網(wǎng)絡(luò)信息安全領(lǐng)域急切希望擁有更安全、方便、有效的信息保護(hù)手段.目前國(guó)際上正在探討使用一些非傳統(tǒng)的方法進(jìn)行信息加密與隱藏,其中混沌理論就是被采納和得到廣泛研究的方法之一.
密碼技術(shù)是信息安全技術(shù)的核心,它主要由密碼編碼技術(shù)和密碼分析技術(shù)兩個(gè)分支構(gòu)成.密碼編碼技術(shù)的主要任務(wù)是尋求產(chǎn)生安全性高的有效密碼算法和協(xié)議,以滿足對(duì)消息進(jìn)行加密認(rèn)證的要求.密碼分析技術(shù)的主要任務(wù)是破譯密碼或偽造論證信息,實(shí)現(xiàn)竊取機(jī)密信息或進(jìn)行詐騙破壞活動(dòng).根據(jù)被加密明文的處理方式不同,密碼體制可分為分組密碼(B l o c kC i p h e r)和序列密碼(S t r e a m C i p h e r).在應(yīng)用密碼學(xué)中分組密碼顯得更加重要[3],這主要是因?yàn)椋?1)分組密碼容易被標(biāo)準(zhǔn)化,因?yàn)樵诮裉斓臄?shù)據(jù)網(wǎng)絡(luò)通信中,信息通常是被成塊地處理和傳輸?shù)模?2)使用分組密碼容易實(shí)現(xiàn)同步,因?yàn)橐粋€(gè)密文組的傳輸錯(cuò)誤不會(huì)影響其它組,丟失一個(gè)密文組不會(huì)對(duì)隨后組的正確解密產(chǎn)生影響.這就是說(shuō),傳輸錯(cuò)誤不會(huì)擴(kuò)散.而這恰恰是序列密碼的缺陷;(3)由于兩個(gè)數(shù)據(jù)加密標(biāo)準(zhǔn)D E S和A E S的廣泛使用,促進(jìn)了分組密碼的發(fā)展.
分組密碼是一個(gè)密鑰控制下的變換,該變換把一個(gè)明文(密文)分組轉(zhuǎn)換成一個(gè)密文(明文)分組.分組密碼將明文消息P劃分成相繼的數(shù)據(jù)塊P1、P2、…,并將每個(gè)Pi用同一密鑰加密,每組的比特長(zhǎng)度稱(chēng)為分組長(zhǎng)度,通常為8的倍數(shù),譬如D E S和I D E A密碼的分組長(zhǎng)度均為64比特.
6.1 分組密碼的工作模式
在實(shí)際應(yīng)用中,分組密碼體制的安全性往往還取決于加密算法的工作模式,它通常由基本密碼、一些反饋和一些簡(jiǎn)單運(yùn)算組合而成.目前已提出了多種分組密碼的工作模式,比如電子密碼本(E C B)模式、密碼分組鏈接(C B C)模式、密碼反饋(C F B)模式、輸出反饋模式(O F B)、級(jí)聯(lián)模式(C M)、計(jì)數(shù)器模式、分組鏈接模式 (B C)、擴(kuò)散密碼分組鏈接模式( (P C B C)、明文差分的密文分組鏈接模式(C B C P D)和非線性函數(shù)輸出反饋模式(O F B N L F)等,但其中最主要和最基本的模式有4種,即E C B、C B C、C F B、O F B模式.
6.2 分組密碼的設(shè)計(jì)原則
一個(gè)好的分組密碼應(yīng)該是既難破譯又容易實(shí)現(xiàn),加密函數(shù)E(*,k)和解密函數(shù)D(*,k)都必須是很容易計(jì)算的,但是要從方程c=E(p,k)和p=D(c,k)中解出密鑰k是一個(gè)很困難的問(wèn)題.一般而言,在設(shè)計(jì)分組密碼時(shí)應(yīng)遵循以下幾條原則[7]:6.2.1安全性
安全性是分組密碼的最重要的設(shè)計(jì)準(zhǔn)則,它要求即使攻擊者知道分組密碼的內(nèi)部結(jié)構(gòu),仍不能破譯該密碼.這也意味著,不存在針對(duì)該密碼的某種攻擊方法,其工作量小于窮檢索密鑰.概括的說(shuō)就是從任何角度都難以攻破.其中兩個(gè)最重要的角度是:(1)對(duì)于一個(gè)正在使用的加密算法,即使攻擊者獲得許多精心選擇的“明文、密文”對(duì),他仍無(wú)法“接近”密鑰:(2)即使攻擊者獲得許精心選擇的“明文、密文”對(duì),他仍無(wú)法“接近”一個(gè)新密文所對(duì)應(yīng)的明文.
6.2.2 有效性
效率準(zhǔn)則與安全準(zhǔn)則互補(bǔ),它是指在執(zhí)行加、解密時(shí)所需要占用的資源量,是另一個(gè)值得考慮的問(wèn)題.分組密碼算法不是各種計(jì)算部件的任意堆積,而是一種精巧的組合,使其在滿足安全性的同時(shí)盡可能簡(jiǎn)單快速.
6.2.3 透明性和靈活性
透明性是要求算法是可證明安全的,其安全強(qiáng)度與迭代次數(shù)的關(guān)系盡可能地容易分析.這就要求算法盡可能使用通用部件,避免黑盒.靈活性是要求算法的實(shí)現(xiàn)可以適應(yīng)多種計(jì)算環(huán)境;明文分組長(zhǎng)度可以伸縮;算法可以移植和變形. 6.2.4加、解密相似性
加、解密相似即加密算法和解密算法相同,僅僅密鑰編排不同.這就是說(shuō),如果記E(*,K)和D(*,K)為使用密鑰K的加密算法和解密算法,則對(duì)任意密鑰K,存在密鑰K*,使得D(*,K)=E(*,K).加解密相似性的好處是大大節(jié)省存儲(chǔ)空間和其它計(jì)算資源,并大幅降低成本.這也是分組密碼設(shè)計(jì)所追尋的方向.
6.3 分組密碼的結(jié)構(gòu)
分組密碼算法不應(yīng)是各種計(jì)算部件的隨意堆積,而應(yīng)是一種精巧的組合.對(duì)于不同的設(shè)計(jì)思路,有不同的組合方式.設(shè)計(jì)的關(guān)鍵在于如何實(shí)現(xiàn)混亂與擴(kuò)散.分組密碼的結(jié)構(gòu)類(lèi)型通常可分為[8]:
6.3.1 代替置換結(jié)構(gòu)(SPN網(wǎng)絡(luò))
由Feistel等人首先提出代替置換結(jié)構(gòu)(SPN)(如圖2所示),由多個(gè)子代替非線性變換((S盒)迭代輪和簡(jiǎn)單的比特置換組成,能有效的實(shí)現(xiàn)Shannon所描述的混亂與擴(kuò)散.通過(guò)設(shè)計(jì)不同的代替與置換部件,就能很容易的得到不同的密碼系統(tǒng).在這種算法的每一輪中,首先輪輸入被作用于一個(gè)山子密鑰控制的可逆函數(shù)S,然后再被作用于一個(gè)置換(或一個(gè)可逆的線性變換).SPN的結(jié)構(gòu)非常清晰,S一般被稱(chēng)為混淆層,主要起混淆的作用.P一般被稱(chēng)為擴(kuò)散層,勝要起擴(kuò)散作用.在明確S和P的某些密碼指標(biāo)后,設(shè)計(jì)者能估計(jì)SPN型密碼抵抗差分密碼分析和線性密碼分析的能力.許多密碼分析方法對(duì)迭代密碼的第一輪和最后一輪的處理方法與中間輪不一樣,一般都是首先猜測(cè)幾比特密鑰,然后剝?nèi)ッ艽a的第一輪和最后一輪,再將攻擊施加于剩下的輪上.有鑒于此,為提高密碼的安全性,我們認(rèn)為可以對(duì)第一輪和最后一輪特殊對(duì)待,給第一輪加一個(gè)密鑰控制的前期變換,給最后一輪加一個(gè)密鑰控制的后期變換.例如,MARS和E2等算法都采用了這樣的措施.
圖2 三輪SPN結(jié)構(gòu)(分組長(zhǎng)度16比特,4*4S盒)
在傳統(tǒng)的分組密碼算法中,采用SPN結(jié)構(gòu)的比較多,如SAFER、SHARK和SQUARE都是基于SPN結(jié)構(gòu)的分組密碼.
6.3.2 Feistel結(jié)構(gòu)
Feistel密碼是一類(lèi)特殊的迭代分組密碼,是由Horst Feistel在設(shè)計(jì)Lucifer分組密碼時(shí)發(fā)明的.由于DES中也采用了Feistel結(jié)構(gòu)(圖3所示),F(xiàn)eistel密碼有時(shí)也叫DES型密碼.在一個(gè)Feistel密碼中,一個(gè)明文分組被分割成兩部分(在DES中為兩個(gè)相等的部分).在子密鑰的作用下,輪函數(shù)f應(yīng)用于其中的一部分,輪函數(shù)的輸出與另一部分做XOR運(yùn)算,再將這兩部分交換.除第一輪和最后一輪沒(méi)有交換外,其余各輪都做相同的運(yùn)算.Feistel密碼的一個(gè)非常好的特征是具有相同的加密和解密結(jié)構(gòu),只需使用與加密相反順序的子密鑰就可以輕松解密.當(dāng)然也可以設(shè)計(jì)不含F(xiàn)eistel結(jié)構(gòu)的迭代密碼,其加密和解密(使用適當(dāng)幾次重復(fù)次序或計(jì)算)是相同的,如IDEA.
圖3 Feistel結(jié)構(gòu)
許多分組密碼采用了Feistel結(jié)構(gòu),例如FEAL、GOST、LOKI、Blowfish和RC5等.對(duì)一個(gè)分組長(zhǎng)度為2n比特的r輪Feistel型密碼,它的加密過(guò)程如下:
1)給定明文P,記P=L0R0,這里L(fēng)0是P的左邊n比特,R0是P的右邊n比特;
2)進(jìn)行r輪完全相同的運(yùn)算后,在這里數(shù)據(jù)和密鑰相結(jié)合.則第i輪的消息分組LiRi由下式計(jì)算:
其中,茌表示兩個(gè)比特串的異或,F(xiàn):GF(2)n×GF(2)n→GF(2)n是輪函數(shù),K1,…,Kr是由種子密鑰K生成的子密鑰.
3)輸出密文C=RrLr.在加密的最后一輪.為了使算法同時(shí)用于加密、解密,略去“左右交換”.
“加解密相似”是Feistel密碼的實(shí)現(xiàn)優(yōu)點(diǎn),但Feistel密碼的擴(kuò)散比較慢.例如,DES算法需要兩輪才能改變輸入的每個(gè)比特.
6.3.3 其它結(jié)構(gòu)
還有很多運(yùn)用其它結(jié)構(gòu)的分組密碼,其中許多是基于一些有趣的理論基礎(chǔ),如IDEA就是在不同的代數(shù)群上的混合運(yùn)算,BEAR和LION采用的是3輪非平衡Feistel結(jié)構(gòu).最新的高級(jí)數(shù)據(jù)加密標(biāo)準(zhǔn)AES采用的就是一種被稱(chēng)為密鑰交替的結(jié)構(gòu).
〔1〕楊義先,等.網(wǎng)絡(luò)信息安全與保密.北京:北京郵電大學(xué)出版社,1999.
〔2〕馮登國(guó).國(guó)內(nèi)外信息安全研究現(xiàn)狀及其發(fā)展趨勢(shì).網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2001(1):8-13.
〔3〕胡向東,魏琴芳.應(yīng)用密碼學(xué)教程.北京:電子工業(yè)出版社,2005:1-100.
〔4〕章照止.現(xiàn)代密碼學(xué)基礎(chǔ).北京:北京郵電大學(xué)出版社,2004:20-120.
〔5〕C.E.Shannon.Communication theory of secrecy systems.Bell System Technical Journal,1949,28(4):656-715.
〔6〕盧開(kāi)澄.計(jì)算機(jī)密碼學(xué)——計(jì)算機(jī)網(wǎng)絡(luò)中的數(shù)據(jù)保密與安全(第3版).北京:機(jī)械工業(yè)出版社,2003:50-150.
〔7〕楊波.現(xiàn)代密碼學(xué).北京:清華大學(xué)出版社,2003.
〔8〕M.Y.Rhce.Cryptography and Secure Communication,M cGraw-Hill Book Co.,1994.
T P 393.08
A
1673-260X(2010)07-0024-04