高級加密標準(aes加密算法)

高級加密標準

aes加密算法一般指本詞條

密碼學中的高級加密標準(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。

基本介紹

  • 中文名:高級加密標準
  • 外文名:Advanced Encryption Standard
  • 設計:Joan Daemen
  • 功能:替代原先的DES
簡介,解釋,沿革,密碼說明,AddRoundKey,SubBytes,ShiftRows,MixColumns,旁道攻擊(又稱旁路攻擊、側信道攻擊),AES加密模式,CTR(Counter,計數)模式,

簡介

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

解釋

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

沿革

Rijndael是由Daemen和Rijmen早期所設計的Square改良而來;而Square則是由SHARK發展而來。
SubBytes是AES算法四步驟之一SubBytes是AES算法四步驟之一
不同於它的前任標準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中完全相同。

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.誤差傳送:一個明文單元損壞影響多個單元。

CTR(Counter,計數)模式

計數模式(CTR模式)加密是對一系列輸入數據塊(稱為計數)進行加密,產生一系列的輸出塊,輸出塊與明文異或得到密文。對於最後的數據塊,可能是長u位的局部數據塊,這u位就將用於異或操作,而剩下的b-u位將被丟棄(b表示塊的長度)。CTR解密類似。這一系列的計數必須互不相同的。假定計數表示為T1, T2, …, Tn。CTR模式可定義如下:
CTR加密公式如下:
Cj = Pj XOR Ek(Tj)
C*n = P*n XOR MSBu(Ek(Tn)) j =1,2… n-1;
CTR解密公式如下:
Pj = Cj XOR Ek(Tj)
P*n = C*n XOR MSBu(Ek(Tn)) j =1,2 … n-1;
AES CTR模式的結構如圖5所示。
圖5 AES CTR的模式結構
Fig 5 Structure of AES CTRMode
加密方式:密碼算法產生一個16 位元組偽隨機碼塊流,偽隨機碼塊與輸入的明文進行異或運算後產生密文輸出。密文與同樣的偽隨機碼進行異或運算後可以重產生明文。
CTR 模式被廣泛用於 ATM 網路安全和 IPSec套用中,相對於其它模式而言,CTR模式具有如下特點:
■ 硬體效率:允許同時處理多塊明文 / 密文。
■ 軟體效率:允許並行計算,可以很好地利用 CPU 流水等並行技術
預處理:算法和加密盒的輸出不依靠明文和密文的輸入,因此如果有足夠的保證安全的存儲器加密算法將僅僅是一系列異或運算,這將極大地提高吞吐量。
■ 隨機訪問:第 i 塊密文的解密不依賴於第 i-1 塊密文,提供很高的隨機訪問能力
■ 可證明的安全性:能夠證明 CTR 至少和其他模式一樣安全(CBC, CFB, OFB, ...)
■ 簡單性:與其它模式不同,CTR模式僅要求實現加密算法,但不要求實現解密算法。對於 AES 等加/解密本質上不同的算法來說,這種簡化是巨大的。
■ 無填充,可以高效地作為流式加密使用。
■ 錯誤不傳播:密文傳輸中每個比特位被錯誤反轉, 僅只影響該密文所在區塊的解密. 在CTR模式下, 經過k+1步的自同步後, 後續密文皆可以正確解密.(k表示區塊長度128)
■ 必須配合訊息驗證碼(MAC)使用.
■ 不能進行完整性校驗: 密文傳輸過程中丟失比特位將導致後續比特位無法正確解密.

相關詞條

熱門詞條

聯絡我們