複製鏈接
請複製以下鏈接發送給好友

高級加密標準

鎖定
密碼學中的高級加密標準(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。
中文名
高級加密標準
外文名
Advanced Encryption Standard
別    名
Rijndael加密法
設    計
Joan Daemen
功    能
替代原先的DES
學科歸屬
密碼學

高級加密標準簡介

這個標準用來替代原先的DES(Data Encryption Standard),已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高級加密標準由美國國家標準與技術研究院 (NIST)於2001年11月26日發佈於FIPS PUB 197,並在2002年5月26日成為有效的標準。2006年,高級加密標準已然成為對稱密鑰加密中最流行的算法之一 [1] 
該算法為比利時密碼學家Joan Daemen和Vincent Rijmen所設計,結合兩位作者的名字,以Rijdael之名命之,投稿高級加密標準的甄選流程。(Rijdael的發音近於 "Rhine doll"。)

高級加密標準解釋

高級加密標準算法從很多方面解決了令人擔憂的問題。實際上,攻擊數據加密標準的那些手段對於高級加密標準算法本身並沒有效果。如果採用真正的128位加密技術甚至256位加密技術,蠻力攻擊要取得成功需要耗費相當長的時間。
雖然高級加密標準也有不足的一面,但是,它仍是一個相對新的協議。因此,安全研究人員還沒有那麼多的時間對這種加密方法進行破解試驗。我們可能會隨時發現一種全新的攻擊手段會攻破這種高級加密標準。至少在理論上存在這種可能性。 [2] 

高級加密標準沿革

SubBytes是AES算法四步驟之一 SubBytes是AES算法四步驟之一
Rijndael是由Daemen和Rijmen早期所設計的Square改良而來;而Square則是由SHARK發展而來。
不同於它的前任標準DES,Rijndael使用的是置換-組合架構,而非Feistel架構。AES在軟件及硬件上都能快速地加解密,相對來説較易於實現,且只需要很少的存儲器。作為一個新的加密標準,目前正被部署應用到更廣大的範圍。

高級加密標準密碼説明

嚴格地説,AES和Rijndael加密法並不完全一樣(雖然在實際應用中二者可以互換),因為Rijndael加密法可以支持更大範圍的區塊密鑰長度:AES的區塊長度固定為128位,密鑰長度則可以是128,192或256位;而Rijndael使用的密鑰和區塊長度可以是32位的整數倍,以128位為下限,256位為上限。加密過程中使用的密鑰是由Rijndael密鑰生成方案產生。
大多數AES計算是在一個特別的有限域完成的。
AES加密過程是在一個4×4的字節矩陣上運作,這個矩陣又稱為“體(state)”,其初值就是一個明文區塊(矩陣中一個元素大小就是明文區塊中的一個Byte)。(Rijndael加密法因支持更大的區塊,其矩陣行數可視情況增加)加密時,各輪AES加密循環(除最後一輪外)均包含4個步驟:

高級加密標準AddRoundKey

將每個狀態中的字節與該回合金鑰做異或 將每個狀態中的字節與該回合金鑰做異或
—矩陣中的每一個字節都與該次回合金鑰(round key)做XOR運算;每個子密鑰由密鑰生成方案產生。
AddRoundKey步驟,回合密鑰將會與原矩陣合併。在每次的加密循環中,都會由主密鑰產生一把回合密鑰(通過Rijndael密鑰生成方案產生),這把密鑰大小會跟原矩陣一樣,以與原矩陣中每個對應的字節作異或(⊕)加法。

高級加密標準SubBytes

—通過一個非線性的替換函數,用查找表的方式把每個字節替換成對應的字節。
在SubBytes步驟中,矩陣中的各字節通過一個8位的S-box進行轉換。這個步驟提供了加密法非線性的變換能力。 S-box與GF(2)上的乘法反元素有關,已知具有良好的非線性特性。為了避免簡單代數性質的攻擊,S-box結合了乘法反元素及一個可逆的仿射變換矩陣建構而成。此外在建構S-box時,刻意避開了固定點與反固定點,即以S-box替換字節的結果會相當於錯排的結果。

高級加密標準ShiftRows

—將矩陣中的每個橫列進行循環式移位。
ShiftRows描述矩陣的行操作。在此步驟中,每一行都向左循環位移某個偏移量。在AES中(區塊大小128位),第一行維持不變,第二行裏的每個字節都向左循環移動一格。同理,第三行及第四行向左循環位移的偏移量就分別是2和3。128位和192比特的區塊在此步驟的循環位移的模式相同。經過ShiftRows之後,矩陣中每一豎列,都是由輸入矩陣中的每個不同列中的元素組成。Rijndael算法的版本中,偏移量和AES有少許不同;對於長度256比特的區塊,第一行仍然維持不變,第二行、第三行、第四行的偏移量分別是1字節、3字節、4位組。除此之外,ShiftRows操作步驟在Rijndael和AES中完全相同 [3] 

高級加密標準MixColumns

—為了充分混合矩陣中各個直行的操作。這個步驟使用線性轉換來混合每內聯的四個字節。最後一個加密循環中省略MixColumns步驟,而以另一個AddRoundKey取代。

高級加密標準旁道攻擊(又稱旁路攻擊、側信道攻擊)

旁道攻擊不攻擊密碼本身,而是攻擊那些實現於不安全系統(會在不經意間泄漏信息)上的加密系統。
2005年4月,D.J. Bernstein公佈了一種緩存時序攻擊法,他以此破解了一個裝載OpenSSL AES加密系統的客户服務器。為了設計使該服務器公佈所有的時序信息,攻擊算法使用了2億多條篩選過的明碼。有人認為,對於需要多個跳躍的國際互聯網而言,這樣的攻擊方法並不實用。
2005年10月,Eran Tromer和另外兩個研究員發表了一篇論文,展示了數種針對AES的緩存時序攻擊法[8]。其中一種攻擊法只需要800個寫入動作,費時65毫秒,就能得到一把完整的AES密鑰。但攻擊者必須在運行加密的系統上擁有運行程序的權限,方能以此法破解該密碼系統。

高級加密標準AES加密模式

對稱/分組密碼一般分為流加密(如OFB、CFB等)和塊加密(如ECB、CBC等)。對於流加密,需要將分組密碼轉化為流模式工作。對於塊加密(或稱分組加密),如果要加密超過塊大小的數據,就需要涉及填充和鏈加密模式。
ECB(Electronic Code Book電子密碼本)模式
ECB模式是最早採用和最簡單的模式,它將加密的數據分成若干組,每組的大小跟加密密鑰長度相同,然後每組都用相同的密鑰進行加密。
優點:
1.簡單; 2.有利於並行計算; 3.誤差不會被傳送; 缺點: 1.不能隱藏明文的模式; 2.可能對明文進行主動攻擊; 因此,此模式適於加密小消息。
CBC(Cipher Block Chaining,加密塊鏈)模式
優點:
1.不容易主動攻擊,安全性好於ECB,適合傳輸長度長的報文,是SSL、IPSec的標準。 缺點: 1.不利於並行計算; 2.誤差傳遞; 3.需要初始化向量IV
CFB(Cipher FeedBack Mode,加密反饋)模式
優點:
1.隱藏了明文模式; 2.分組密碼轉化為流模式; 3.可以及時加密傳送小於分組的數據; 缺點: 1.不利於並行計算; 2.誤差傳送:一個明文單元損壞影響多個單元; 3.唯一的IV;
OFB(Output FeedBack,輸出反饋)模式
優點:
1.隱藏了明文模式; 2.分組密碼轉化為流模式; 3.可以及時加密傳送小於分組的數據; 缺點: 1.不利於並行計算; 2.對明文的主動攻擊是可能的; 3.誤差傳送:一個明文單元損壞影響多個單元 [4] 
參考資料