AES加密算法的實現(xiàn)與應(yīng)用

隨著計算機網(wǎng)絡(luò)的不斷發(fā)展,信息的安全性和保密性變得尤為重要。加密技術(shù)是對通信系統(tǒng)或者存儲系統(tǒng)中的信息數(shù)據(jù)進行保護的一個很重要的方式。而AES(Advanced Encryption Standard)算法是美國國家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)在21世紀(jì)初正式推出的旨在取代DES算法的高級加密標(biāo)準(zhǔn)算法。用它對數(shù)據(jù)文件進行加密的運算,其優(yōu)勢在于AES是一種高效、安全的對稱加密算法,具備很強的擴散性能,最終形成的密碼有很高的隨機性。數(shù)據(jù)文件經(jīng)AES算法加密后,信息會得到有效保護。

1、AES概述

1.1 AES簡介

AES是1997年1月美國國家標(biāo)準(zhǔn)和技術(shù)研究所(NIST)發(fā)布征集的新加密算法,是一種分組加密算法。目前,Rijndael算法以其優(yōu)秀的性能和抗攻擊能力是通用標(biāo)準(zhǔn)AES算法。Rijndael算法除具備低成本、高安全性的特性外,最大優(yōu)點在于即使在受限工作環(huán)境下(如較小內(nèi)存空間中)也有較好的加密/解密運算效率;而在運算子的設(shè)計上,亦容易抵抗完全搜尋攻擊,如此便能保證AES可有較長的安全周期。

1.2 AES的算法結(jié)構(gòu)

AES分組密碼擁有128比特的分塊長度,而且可以使用128、192、256比特大小的密鑰。密鑰的長度影響著密鑰編排(即在每一輪中使用的自密鑰)和輪的次數(shù),但是不影響每一輪中的高級結(jié)構(gòu)。

AES算法都是在中間態(tài)基礎(chǔ)上進行處理的,其加密、解密算法結(jié)構(gòu)如圖1-1所示,與使用Feistel結(jié)構(gòu)的DES相比,AES本質(zhì)上是一個代替置換網(wǎng)絡(luò)。在AES的計算中,有一個被稱為State的4乘4字節(jié)數(shù)組,是通過多輪操作來修改的。這個State的最初設(shè)置和分組密碼的輸入是相等的(注意輸入是128比特,確切的是16字節(jié))。AES算法的主循環(huán)對State執(zhí)行4個不同的運算:SubBytes(字節(jié)替換)、ShiftRows(行位移變換)、MixColumns(列混合變換)和AddRoundKey(輪密鑰加)。在加密的最后階段,State被變回為128位的線性串。

下面對四種變換進行簡單的介紹:

(1)SubBytes(字節(jié)替換)是非線形變換,該置換包含一個作用在狀態(tài)字節(jié)上的S-BOX,用SRD表示,他是由字節(jié)在GF(28)域中求其乘法逆并外加一個仿射變換實現(xiàn)。

(2)ShiftRows(行位移變換),在這一步中,狀態(tài)數(shù)組每一行的字節(jié)按如下方式循環(huán)左移:第一行不動,第二行左移一位,第三行左移兩位,第四行左移三位。所有的移位都是循環(huán)的,例如第二行中第一個字節(jié)變成了第四個字節(jié)。它和列混合運算相互影響,在多輪變換后,使密碼信息達到充分的混亂,提高非線形度。

(3)MixColumns(列混合變換),它用State字節(jié)列的值進行數(shù)學(xué)域加和域乘的結(jié)果代替每個字節(jié),是以狀態(tài)的列為單位進行的操作。

(4)AddRoundKey(輪密鑰加),加密例程獲取該密鑰數(shù)組并生成一個名為W[ ]的密鑰調(diào)度表。密鑰調(diào)度表中的前4行對State實行一個字節(jié)一個字節(jié)的異或(XOR)操作,并用輪密鑰表w[e,r]異或輸入的State[r,c]。

通過將第2個和第3個運算一起視為“混合”階段,可看到AES的每一輪都有代替置換網(wǎng)絡(luò)結(jié)構(gòu):某輪的子密鑰首先和當(dāng)前這一輪的輸入進行異或;接下來,一個小的可逆函數(shù)被用在“分塊”上;最后,結(jié)果的比特被混合起來以得到擴散,這里的混合步驟不是由比特的簡單置換組成的,而是使用比特的可逆線性轉(zhuǎn)換來完成的。

AES算法采用Square(方形)算法結(jié)構(gòu),主要有以下特點:

(1)采用乘積密碼迭代,實現(xiàn)擴散與混淆。

(2)每一輪都使用代換和混淆技術(shù)并行地處理整個數(shù)據(jù)分組。

(3)無論是加密還是解密,除了最后一輪少了列混合運算外,其他各輪都是按照相同順序依次執(zhí)行四種基本運算(解密為四種基本運算的逆運算)。

(4)解密算法完全是加密算法的倒推,加、解密原理清晰,便于理解。

(5)和其他分組密碼相同,輪密鑰在解密時顛倒順序使用。

1.3 AES的解密算法

AES的解密算法可直接利用步驟InvSubBytes、InvShiftRows、InvMixCloumns和AddRoundKey的逆并倒置其次序而得到,此算法為直接解密算法。與加密算法相比,主要的不同之處有兩點。一是四種基本運算用它們的逆運算取代(輪密鑰加運算AddRoundKey因是模2加,逆運算相同),二是輪密鑰顛倒順序使用。為了便于實現(xiàn),通常將惟一的非線性驟(SubBytes)放在輪變換的第一步。Rijndael的結(jié)構(gòu)使得有可能定義一個等價的解密算法,其中所使用的步驟次序與加密相同,只是將每一步改成它的逆,并改變密鑰編排方案。注意這種結(jié)構(gòu)上的一致性不同于采用Feistes結(jié)構(gòu)的許多密碼中的組件和結(jié)構(gòu)的一致性。

1.4 AES的密鑰擴展

AES的密鑰擴展運算ExpandKey的功能是:根據(jù)種子密鑰(也稱主密鑰)k擴展出每輪迭代所需要的4個密鑰字。例如,當(dāng)k為128比特時,除了初始輪密鑰所需要的4個密鑰字直接用種子密鑰k按列填充構(gòu)成外,1~10輪迭代所需要的輪密鑰字都將由種子密鑰k擴展產(chǎn)生。

1.5 AES算法的安全性

AES加密在選擇過程中承受了大量的審查,并延續(xù)至今。發(fā)現(xiàn)的唯一非平凡的密碼分析攻擊就是針對輪數(shù)減少的AES。有一些已知攻擊針對密鑰為128比特的6輪AES(使用約272數(shù)量級的加密),有的針對密鑰為192比特的8輪AES(使用約2188數(shù)量級的加密),有的攻擊針對密鑰為256比特的8輪AES(使用約2204數(shù)量級的加密)。上述攻擊是針對輪數(shù)減少的AES,而且至今沒有發(fā)現(xiàn)比窮舉密鑰搜索更好的對完整AES構(gòu)造方案的攻擊。(此外,即使是對輪數(shù)減少的AES的攻擊的復(fù)雜度也是很高的。)

因此至今為止,對幾乎所有依賴偽隨機置換的密碼學(xué)實現(xiàn)而言,AES是一個極好的選擇對象。它是免費的、標(biāo)準(zhǔn)化的、高效的和高度安全的。

2、AES算法的應(yīng)用

高級加密標(biāo)準(zhǔn)AES(Rijndael)算法在各行業(yè)各部門中將獲得廣泛的應(yīng)用,成為虛擬專用網(wǎng)、SONET(同步光網(wǎng)絡(luò))、遠程訪問服務(wù)器(RAS)、高速ATM/Ethernet路由器、移動通信、衛(wèi)星通信、電子金融業(yè)務(wù)等的機密算法,并逐漸取代DES在IPSee、SSL和ATM中的使用。IEEE802.11i草案已經(jīng)定義了AES加密的兩種不同運行模式,成功解決了無線局域網(wǎng)(WLAN)標(biāo)準(zhǔn)中的諸多安全問題。此外,得益于密碼技術(shù)的高速發(fā)展,政府及軍事通信更多的采用高級的加密算法,以及網(wǎng)絡(luò)保密系統(tǒng),財政保密、游戲機密等方面AES加密算法都得到了廣泛的應(yīng)用。

3、結(jié)語

目前加密強度最高的對稱加密算法是AES算法,其強大的能力正成為加密所有形式電子信息的標(biāo)準(zhǔn),目前來講沒有已知的密碼分析攻擊可以解密AES密文,因此我們采用AES算法對數(shù)據(jù)文件進行加密是十分安全的,同時考慮到AES算法的實現(xiàn)程序,在計算效率、內(nèi)存需求、硬件和軟件可適用性、簡易性、靈活性等方面的優(yōu)勢可向用戶提供很高安全保護。AES算法的應(yīng)用范圍十分廣泛,除了應(yīng)用在數(shù)據(jù)文件加密之外,正廣泛應(yīng)用在通信、網(wǎng)絡(luò)、金融等各個方面。

知識點:

密碼學(xué)中的高級加密標(biāo)準(zhǔn)(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個標(biāo)準(zhǔn)用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。經(jīng)過五年的甄選流程,高級加密標(biāo)準(zhǔn)由美國國家標(biāo)準(zhǔn)與技術(shù)研究院?(NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標(biāo)準(zhǔn)。2006年,高級加密標(biāo)準(zhǔn)已然成為對稱密鑰加密中最流行的算法之一。