AES加密算法

AES加密算法

AES加密算法是密碼學中的高級加密標準(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標準。這個標準用來替代原先的DES,已經被多方分析且廣為全世界所使用。經過五年的甄選流程,高級加密標準由美國國家標準與技術研究院(NIST)於2001年11月26日發布於FIPS PUB 197,並在2002年5月26日成為有效的標準。

基本信息

概述

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

沿革

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

形成過程

1997年4月15日,美國ANSI發起徵集AES(advancedencryptionstandard)的活動,並為此成立了AES工作小組。
1997年9月12日,美國聯邦登記處公布了正式徵集AES候選算法的通告。對AES的基本要求是:比三重DES快、至少與三重DES一樣安全、數據分組長度為128比特、密鑰長度為128/192/256比特。
1998年8月12日,在首屆AES候選會議(firstAEScandidateconference)上公布了AES的15個候選算法,任由全世界各機構和個人攻擊和評論。
1999年3月,在第2屆AES候選會議(secondAEScandidateconference)上經過對全球各密碼機構和個人對候選算法分析結果的討論,從15個候選算法中選出了5個。分別是RC6、Rijndael、SERPENT、Twofish和MARS。
2000年4月13日至14日,召開了第3屆AES候選會議(thirdAEScandidateconference),繼續對最後5個候選算法進行討論。
2000年10月2日,NIST宣布Rijndael作為新的AES。經過3年多的討論,Rijndael終於脫穎而出。
Rijndael由比利時的JoanDaemen和VincentRijmen設計。算法的原型是Square算法,它的設計策略是寬軌跡策略(widetrailstrategy)。算法有很好的抵抗差分密碼分析及線性密碼分析的能力。

基本內容

AES加密算法流程圖AES加密算法流程圖
對稱密碼體制的發展趨勢將以分組密碼為重點。分組密碼算法通常由密鑰擴展算法和加密(解密)算法兩部分組成。密鑰擴展算法將b位元組用戶主密鑰擴展成r個子密鑰。加密算法由一個密碼學

上的弱函式f與r個子密鑰疊代r次組成。混亂和密鑰擴散是分組密碼算法設計的基本原則。抵禦已知明文的差分和線性攻擊,可變長密鑰和分組是該體制的設計要點。AES是美國國家標準技術研究所NIST旨在取代DES的21世紀的加密標準。

AES的基本要求是,採用對稱分組密碼體制,密鑰長度的最少支持為128、192、256,分組長度128位,算法應易於各種硬體和軟體實現。1998年NIST開始AES第一輪分析、測試和徵集,共產生了15個候選算法。1999年3月完成了第二輪AES2的分析、測試。2000年10月2日美國政府正式宣布選中比利時密碼學家Joan Daemen 和 Vincent Rijmen 提出的一種密碼算法RIJNDAEL 作為 AES. 在套用方面,儘管DES在安全上是脆弱的,但由於快速DES晶片的大量生產,使得DES仍能暫時繼續使用,為提高安全強度,通常使用獨立密鑰的三級DES。但是DES遲早要被AES代替。流密碼體制較之分組密碼在理論上成熟且安全,但未被列入下一代加密標準。

AES加密數據塊大小最大是256bit,但是密鑰大小在理論上沒有上限。AES加密有很多輪的重複和變換。大致步驟如下:1、密鑰擴展(KeyExpansion),2、初始輪(Initial Round),3、重複輪(Rounds),每一輪又包括:SubBytes、ShiftRows、MixColumns、AddRoundKey,4、最終輪(Final Round),最終輪沒有MixColumns。

算法原理

AES算法基於排列和置換運算。排列是對數據重新進行安排,置換是將一個數據單元替換為另一個。AES 使用幾種不同的方法來執行排列和置換運算。
AES是一個疊代的、對稱密鑰分組的密碼,它可以使用128、192 和 256 位密鑰,並且用 128 位(16位元組)分組加密和解密數據。與公共密鑰密碼使用密鑰對不同,對稱密鑰密碼使用相同的密鑰加密和解密數據。通過分組密碼返回的加密數據的位數與輸入數據相同。疊代加密使用一個循環結構,在該循環中重複置換和替換輸入數據。

加密模式

ECB模式

C語言實現AES加密算法C語言實現AES加密算法
優點:

1.簡單;
2.有利於並行計算;
3.誤差不會被傳送;
缺點:
1.不能隱藏明文的模式;
2.可能對明文進行主動攻擊;

CBC模式

優點:
1.不容易主動攻擊,安全性好於ECB,適合傳輸長度長的報文,是SSL、IPSec的標準。
缺點:
1.不利於並行計算;
2.誤差傳遞;
3.需要初始化向量IV

CFB模式

優點:
1.隱藏了明文模式;
2.分組密碼轉化為流模式;
3.可以及時加密傳送小於分組的數據;
缺點:
1.不利於並行計算;
2.誤差傳送:一個明文單元損壞影響多個單元;
3.唯一的IV;

ofb模式

優點:
1.隱藏了明文模式;
2.分組密碼轉化為流模式;
3.可以及時加密傳送小於分組的數據;
缺點:
1.不利於並行計算;
2.對明文的主動攻擊是可能的;
3.誤差傳送:一個明文單元損壞影響多個單元;

相關搜尋

熱門詞條

聯絡我們