李若菲
摘 要:AES算法是一種對稱密碼算法,對稱密碼算法又稱傳統(tǒng)密碼算法,最常見的對稱密鑰算法是DES、AES和RC5。由于DES算法由于密鑰較短,難以抵抗現(xiàn)有的攻擊,因而不再作為加密標(biāo)準(zhǔn),換做AES算法作為一種高級加密標(biāo)準(zhǔn)。
關(guān)鍵詞:AES算法;DES算法;偽代碼
一、AES算法的簡介
AES算法是一個迭代型分組密碼,它不同于信息摘要,它是對稱加密算法的典型。我們知道,對稱加密算法是可逆的,其主要功能是確保用戶的私有信息不被公開。
AES算法可以理解為是DES和3DES的一個替代版本,DES現(xiàn)在已經(jīng)被破解,所以十分不安全,雖然3DES還沒有被破解,但是它的效率十分低,不是十分的安全,AES現(xiàn)在對我們來說,在已經(jīng)公開的對稱加密算法里面,是效率最高并且安全級別最高的一種對稱加密算法,也是當(dāng)今最流行的對稱加密算法之一。
二、AES算法與DES算法的比較
1.相同點
密碼算法包含對稱加密算法,非對稱加密算法,流密碼算法等等。在對稱加密算法中,最典型的是AES算法和DES算法。它們都屬于分組密碼,分組密碼是將明文進(jìn)行分組,當(dāng)A向B傳送信息,傳送的信息為“我是小明”,則信息中的“我是小明”將會被分組,分成一個一個的整體,然后對這些整體進(jìn)行編碼,將“我是小明”這個人們能夠理解的信息,轉(zhuǎn)化成人們不能理解的信息,也就是亂碼,對各種數(shù)據(jù)進(jìn)行加密。
2.區(qū)別
DES:分組長度為64bits,換算成byte是8,密文報組長度也是64bits,密鑰長度為64bits,奇偶校驗有8bites,有56bits的有效密鑰長度[2]。在安全性方面,DES密鑰長度過短,不足以抵御攻擊,它是一個F函數(shù)并且S-box的設(shè)計原理未知,可能含有陷阱,S盒的設(shè)計原理至今未公布。DES算法在1993年已被破譯,故而退出歷史舞臺。
AES:我們可以改變分組長度和密鑰長度,因為這兩個長度是相互獨立的,可以輸入的密鑰的長度有三種:128、192以及256比特,并且每次能加密128比特長的輸入明文[3]。AES的密鑰長度長,足以抵御現(xiàn)有的攻擊。
三、AES算法的價值與實現(xiàn)
1.設(shè)計思想(技術(shù)描述)
AES算法是一個簡單的設(shè)計,可以在多個平臺上實現(xiàn)的時候比較容易、運行的時候速度快,并且編碼緊湊,我們現(xiàn)今知道的所有攻擊它都能抵抗。因為分組長度和密鑰長度是相互獨立的,所以我們可以改變分組和密鑰的長度?,F(xiàn)今的大多數(shù)分組密碼,它們的輪函數(shù)結(jié)構(gòu)是Feistel,也就是說,AES沒有這種結(jié)構(gòu)。
現(xiàn)今的大多數(shù)分組密碼的中間狀態(tài)的部分比特,可以位于其他位置,并且沒有改變。而AES的輪函數(shù)由三個不同的可逆均勻變換(指狀態(tài)的每個bit都用類似的方法處理)構(gòu)成的,稱為三個層[4]。
2.三個層
所謂的“均勻變換”意味著狀態(tài)的每一點都是以類似的方式處理的。不同的層都有其規(guī)定好的選擇,而且大部分選擇是建立在“寬軌跡策略”的基礎(chǔ)上應(yīng)用的。也就是說,“寬軌跡策略”的設(shè)計就是用來分析抗線性密碼、分析差分密碼。
三個層中的每一層都有不同的功能,這些不同的功能最終都服務(wù)于“寬軌跡策略”,這三個層具體如下
線性混合層:為了確保多輪之上的高度擴散;
非線性層:將并行使用具有最佳“最壞情況非線性”的S盒;
密鑰加層:將密鑰加入到中間狀態(tài)上,并掩蓋其原來的狀態(tài)。
3.輪函數(shù)
AES的輪函數(shù)包括:字節(jié)代換、行移變換、列混淆、輪密鑰加。
字節(jié)代換:也就是S盒,是一個非線性代換,獨立于狀態(tài)的每個字節(jié)。在解密過程中,我們用的是逆S盒。
行移變換:狀態(tài)數(shù)組的行移位是直接周期性地移動的,行移位的數(shù)量在每一行之間都是不同的。行0不移動。第1行向左挪動1字節(jié),第2行向左挪動2字節(jié),第3行向左挪動3字節(jié),一樣,逆行移位與行移位相反。
列混淆:將狀態(tài)數(shù)組的每一列考慮為GF(28)上的多項式,然后用固定的多項式c(x)執(zhí)行模x4+1乘法。列混淆也可以寫成矩陣乘法,同樣,逆列混淆是列混淆變換的逆。
輪密鑰加:將輪密鑰和密鑰狀態(tài)進(jìn)行運算,經(jīng)由過程簡略的異運算和或運算,由種子密鑰經(jīng)由過程密鑰編排算法獲得,輪密鑰長度與分組長度不異,輪密鑰加的逆與輪密鑰加是一樣的[5]。
4.安全性。
對AES算法的要求是,長度只有三種,分別是16字節(jié)、24字節(jié)、32字節(jié),換做比特位分別是128比特、192比特、256比特,也就是AES128、AES192、AES256,這三種不同長度的密鑰,在使用效果上也有所不同。從安全性的角度來看,AES256具備最高的安全性,在性能方面,AES128具備最高的性能。之所以有這么大的差別,其基本原因是加密處理的數(shù)量差異。
5.偽代碼(實現(xiàn))
a.AES加密過程的偽代碼
Rijndael(State,CipherKey)
{
KeyExpansion(CipherKey,ExpandedKey);
AddRoundKey(State,ExpandedKey);
for(i=1;i Round(State,ExpandedKey+Nb*i); FinalRound(State,ExpandedKey+Nb*Nr) } b.AES解密過程的偽代碼 InvRound(State,RoundKey) { InvByteSub(State); InvShiftRow(State); InvMixColumn(State); AddMixColumn(State); AddRoundKey(State,RoundKey) } 四、總結(jié) 盡管AES算法相對于DES而言,運算速度提高了,資源消耗也相對減少,安全性提高,但是AES算法仍然是雙方之間的通信。明文經(jīng)過對稱對稱加密算法處理后,變成了不可讀的密文,也就是我們所謂的“亂碼”。 如果我們想要解釋原始文本,我們需要使用相同的加密算法和密鑰來解密它。也就是說,信息的加密過程和解密過程使用相同的算法,使用相同的密鑰。 因此,由于通信雙方都使用相同的密鑰,如果通信雙方之中存在著惡意用戶,就會使得上述密碼的安全性得不到保證,即存在密鑰的安全問題。所以,密鑰需要時常更換。 雖然AES算法已經(jīng)在DES算法上升級,成為了最新的高級加密標(biāo)準(zhǔn),從實現(xiàn)到應(yīng)用,已經(jīng)深入到了信息安全技術(shù)各個領(lǐng)域。但是AES算法仍存在上述的缺陷,因此公開密鑰算法應(yīng)運而生。但是,如今我們還在繼續(xù)研究開發(fā)新的AES,以達(dá)到我們更高的要求。因此,無論是理論上還是實踐上,AES的意義對我們來說具有很大,它將有一個很好的發(fā)展前景。