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