AES加密算法的實(shí)現(xiàn)與應(yīng)用
隨著計(jì)算機(jī)網(wǎng)絡(luò)的不斷發(fā)展,信息的安全性和保密性變得尤為重要。加密技術(shù)是對(duì)通信系統(tǒng)或者存儲(chǔ)系統(tǒng)中的信息數(shù)據(jù)進(jìn)行保護(hù)的一個(gè)很重要的方式。而AES(Advanced Encryption Standard)算法是美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)在21世紀(jì)初正式推出的旨在取代DES算法的高級(jí)加密標(biāo)準(zhǔn)算法。用它對(duì)數(shù)據(jù)文件進(jìn)行加密的運(yùn)算,其優(yōu)勢(shì)在于AES是一種高效、安全的對(duì)稱(chēng)加密算法,具備很強(qiáng)的擴(kuò)散性能,最終形成的密碼有很高的隨機(jī)性。數(shù)據(jù)文件經(jīng)AES算法加密后,信息會(huì)得到有效保護(hù)。
1、AES概述
1.1 AES簡(jiǎn)介
AES是1997年1月美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)發(fā)布征集的新加密算法,是一種分組加密算法。目前,Rijndael算法以其優(yōu)秀的性能和抗攻擊能力是通用標(biāo)準(zhǔn)AES算法。Rijndael算法除具備低成本、高安全性的特性外,最大優(yōu)點(diǎn)在于即使在受限工作環(huán)境下(如較小內(nèi)存空間中)也有較好的加密/解密運(yùn)算效率;而在運(yùn)算子的設(shè)計(jì)上,亦容易抵抗完全搜尋攻擊,如此便能保證AES可有較長(zhǎng)的安全周期。
1.2 AES的算法結(jié)構(gòu)
AES分組密碼擁有128比特的分塊長(zhǎng)度,而且可以使用128、192、256比特大小的密鑰。密鑰的長(zhǎng)度影響著密鑰編排(即在每一輪中使用的自密鑰)和輪的次數(shù),但是不影響每一輪中的高級(jí)結(jié)構(gòu)。
AES算法都是在中間態(tài)基礎(chǔ)上進(jìn)行處理的,其加密、解密算法結(jié)構(gòu)如圖1-1所示,與使用Feistel結(jié)構(gòu)的DES相比,AES本質(zhì)上是一個(gè)代替置換網(wǎng)絡(luò)。在AES的計(jì)算中,有一個(gè)被稱(chēng)為State的4乘4字節(jié)數(shù)組,是通過(guò)多輪操作來(lái)修改的。這個(gè)State的最初設(shè)置和分組密碼的輸入是相等的(注意輸入是128比特,確切的是16字節(jié))。AES算法的主循環(huán)對(duì)State執(zhí)行4個(gè)不同的運(yùn)算:SubBytes(字節(jié)替換)、ShiftRows(行位移變換)、MixColumns(列混合變換)和AddRoundKey(輪密鑰加)。在加密的最后階段,State被變回為128位的線性串。
下面對(duì)四種變換進(jìn)行簡(jiǎn)單的介紹:
(1)SubBytes(字節(jié)替換)是非線形變換,該置換包含一個(gè)作用在狀態(tài)字節(jié)上的S-BOX,用SRD表示,他是由字節(jié)在GF(28)域中求其乘法逆并外加一個(gè)仿射變換實(shí)現(xiàn)。
(2)ShiftRows(行位移變換),在這一步中,狀態(tài)數(shù)組每一行的字節(jié)按如下方式循環(huán)左移:第一行不動(dòng),第二行左移一位,第三行左移兩位,第四行左移三位。所有的移位都是循環(huán)的,例如第二行中第一個(gè)字節(jié)變成了第四個(gè)字節(jié)。它和列混合運(yùn)算相互影響,在多輪變換后,使密碼信息達(dá)到充分的混亂,提高非線形度。
(3)MixColumns(列混合變換),它用State字節(jié)列的值進(jìn)行數(shù)學(xué)域加和域乘的結(jié)果代替每個(gè)字節(jié),是以狀態(tài)的列為單位進(jìn)行的操作。
(4)AddRoundKey(輪密鑰加),加密例程獲取該密鑰數(shù)組并生成一個(gè)名為W[ ]的密鑰調(diào)度表。密鑰調(diào)度表中的前4行對(duì)State實(shí)行一個(gè)字節(jié)一個(gè)字節(jié)的異或(XOR)操作,并用輪密鑰表w[e,r]異或輸入的State[r,c]。
通過(guò)將第2個(gè)和第3個(gè)運(yùn)算一起視為“混合”階段,可看到AES的每一輪都有代替置換網(wǎng)絡(luò)結(jié)構(gòu):某輪的子密鑰首先和當(dāng)前這一輪的輸入進(jìn)行異或;接下來(lái),一個(gè)小的可逆函數(shù)被用在“分塊”上;最后,結(jié)果的比特被混合起來(lái)以得到擴(kuò)散,這里的混合步驟不是由比特的簡(jiǎn)單置換組成的,而是使用比特的可逆線性轉(zhuǎn)換來(lái)完成的。
AES算法采用Square(方形)算法結(jié)構(gòu),主要有以下特點(diǎn):
(1)采用乘積密碼迭代,實(shí)現(xiàn)擴(kuò)散與混淆。
(2)每一輪都使用代換和混淆技術(shù)并行地處理整個(gè)數(shù)據(jù)分組。
(3)無(wú)論是加密還是解密,除了最后一輪少了列混合運(yùn)算外,其他各輪都是按照相同順序依次執(zhí)行四種基本運(yùn)算(解密為四種基本運(yùn)算的逆運(yùn)算)。
(4)解密算法完全是加密算法的倒推,加、解密原理清晰,便于理解。
(5)和其他分組密碼相同,輪密鑰在解密時(shí)顛倒順序使用。
1.3 AES的解密算法
AES的解密算法可直接利用步驟InvSubBytes、InvShiftRows、InvMixCloumns和AddRoundKey的逆并倒置其次序而得到,此算法為直接解密算法。與加密算法相比,主要的不同之處有兩點(diǎn)。一是四種基本運(yùn)算用它們的逆運(yùn)算取代(輪密鑰加運(yùn)算AddRoundKey因是模2加,逆運(yùn)算相同),二是輪密鑰顛倒順序使用。為了便于實(shí)現(xiàn),通常將惟一的非線性驟(SubBytes)放在輪變換的第一步。Rijndael的結(jié)構(gòu)使得有可能定義一個(gè)等價(jià)的解密算法,其中所使用的步驟次序與加密相同,只是將每一步改成它的逆,并改變密鑰編排方案。注意這種結(jié)構(gòu)上的一致性不同于采用Feistes結(jié)構(gòu)的許多密碼中的組件和結(jié)構(gòu)的一致性。
1.4 AES的密鑰擴(kuò)展
AES的密鑰擴(kuò)展運(yùn)算ExpandKey的功能是:根據(jù)種子密鑰(也稱(chēng)主密鑰)k擴(kuò)展出每輪迭代所需要的4個(gè)密鑰字。例如,當(dāng)k為128比特時(shí),除了初始輪密鑰所需要的4個(gè)密鑰字直接用種子密鑰k按列填充構(gòu)成外,1~10輪迭代所需要的輪密鑰字都將由種子密鑰k擴(kuò)展產(chǎn)生。
1.5 AES算法的安全性
AES加密在選擇過(guò)程中承受了大量的審查,并延續(xù)至今。發(fā)現(xiàn)的唯一非平凡的密碼分析攻擊就是針對(duì)輪數(shù)減少的AES。有一些已知攻擊針對(duì)密鑰為128比特的6輪AES(使用約272數(shù)量級(jí)的加密),有的針對(duì)密鑰為192比特的8輪AES(使用約2188數(shù)量級(jí)的加密),有的攻擊針對(duì)密鑰為256比特的8輪AES(使用約2204數(shù)量級(jí)的加密)。上述攻擊是針對(duì)輪數(shù)減少的AES,而且至今沒(méi)有發(fā)現(xiàn)比窮舉密鑰搜索更好的對(duì)完整AES構(gòu)造方案的攻擊。(此外,即使是對(duì)輪數(shù)減少的AES的攻擊的復(fù)雜度也是很高的。)
因此至今為止,對(duì)幾乎所有依賴(lài)偽隨機(jī)置換的密碼學(xué)實(shí)現(xiàn)而言,AES是一個(gè)極好的選擇對(duì)象。它是免費(fèi)的、標(biāo)準(zhǔn)化的、高效的和高度安全的。
2、AES算法的應(yīng)用
高級(jí)加密標(biāo)準(zhǔn)AES(Rijndael)算法在各行業(yè)各部門(mén)中將獲得廣泛的應(yīng)用,成為虛擬專(zhuān)用網(wǎng)、SONET(同步光網(wǎng)絡(luò))、遠(yuǎn)程訪問(wèn)服務(wù)器(RAS)、高速ATM/Ethernet路由器、移動(dòng)通信、衛(wèi)星通信、電子金融業(yè)務(wù)等的機(jī)密算法,并逐漸取代DES在IPSee、SSL和ATM中的使用。IEEE802.11i草案已經(jīng)定義了AES加密的兩種不同運(yùn)行模式,成功解決了無(wú)線局域網(wǎng)(WLAN)標(biāo)準(zhǔn)中的諸多安全問(wèn)題。此外,得益于密碼技術(shù)的高速發(fā)展,政府及軍事通信更多的采用高級(jí)的加密算法,以及網(wǎng)絡(luò)保密系統(tǒng),財(cái)政保密、游戲機(jī)密等方面AES加密算法都得到了廣泛的應(yīng)用。
3、結(jié)語(yǔ)
目前加密強(qiáng)度最高的對(duì)稱(chēng)加密算法是AES算法,其強(qiáng)大的能力正成為加密所有形式電子信息的標(biāo)準(zhǔn),目前來(lái)講沒(méi)有已知的密碼分析攻擊可以解密AES密文,因此我們采用AES算法對(duì)數(shù)據(jù)文件進(jìn)行加密是十分安全的,同時(shí)考慮到AES算法的實(shí)現(xiàn)程序,在計(jì)算效率、內(nèi)存需求、硬件和軟件可適用性、簡(jiǎn)易性、靈活性等方面的優(yōu)勢(shì)可向用戶(hù)提供很高安全保護(hù)。AES算法的應(yīng)用范圍十分廣泛,除了應(yīng)用在數(shù)據(jù)文件加密之外,正廣泛應(yīng)用在通信、網(wǎng)絡(luò)、金融等各個(gè)方面。
知識(shí)點(diǎn):
密碼學(xué)中的高級(jí)加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES),又稱(chēng)Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。經(jīng)過(guò)五年的甄選流程,高級(jí)加密標(biāo)準(zhǔn)由美國(guó)國(guó)家標(biāo)準(zhǔn)與技術(shù)研究院?(NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標(biāo)準(zhǔn)。2006年,高級(jí)加密標(biāo)準(zhǔn)已然成為對(duì)稱(chēng)密鑰加密中最流行的算法之一。










