㈠ 什麼是AES演算法
加密演算法分為單向加密和雙向加密。
單向加密 包括 MD5 , SHA 等摘要演算法。單向加密演算法是不可逆的,也就是無法將加密後的數據恢復成原始數據,除非採取碰撞攻擊和窮舉的方式。像是銀行賬戶密碼的存儲,一般採用的就是單向加密的方式。
雙向加密 是可逆的,存在密文的密鑰,持有密文的一方可以根據密鑰解密得到原始明文,一般用於發送方和接收方都能通過密鑰獲取明文的情況。雙向加密包括對稱加密和非對稱加密。對稱加密包括 DES 加密, AES 加密等,非對稱加密包括 RSA 加密, ECC 加密。
AES 演算法全稱 Advanced Encryption Standard ,是 DES 演算法的替代者,也是當今最流行的對稱加密演算法之一。
要想學習AES演算法,首先要弄清楚三個基本的概念:密鑰、填充、模式。
密鑰是 AES 演算法實現加密和解密的根本。對稱加密演算法之所以對稱,是因為這類演算法對明文的加密和解密需要使用同一個密鑰。
AES支持三種長度的密鑰:
128位,192位,256位
平時大家所說的AES128,AES192,AES256,實際上就是指的AES演算法對不同長度密鑰的使用。從安全性來看,AES256安全性最高。從性能來看,AES128性能最高。本質原因是它們的加密處理輪數不同。
要想了解填充的概念,我們先要了解AES的分組加密特性。AES演算法在對明文加密的時候,並不是把整個明文一股腦加密成一整段密文,而是把明文拆分成一個個獨立的明文塊,每一個明文塊長度128bit。
這些明文塊經過AES加密器的復雜處理,生成一個個獨立的密文塊,這些密文塊拼接在一起,就是最終的AES加密結果。
但是這里涉及到一個問題:
假如一段明文長度是192bit,如果按每128bit一個明文塊來拆分的話,第二個明文塊只有64bit,不足128bit。這時候怎麼辦呢?就需要對明文塊進行填充(Padding)。AES在不同的語言實現中有許多不同的填充演算法,我們只舉出集中典型的填充來介紹一下。
不做任何填充,但是要求明文必須是16位元組的整數倍。
如果明文塊少於16個位元組(128bit),在明文塊末尾補足相應數量的字元,且每個位元組的值等於缺少的字元數。
比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6個位元組,則補全為{1,2,3,4,5,a,b,c,d,e,6,6,6,6,6,6}
如果明文塊少於16個位元組(128bit),在明文塊末尾補足相應數量的位元組,最後一個字元值等於缺少的字元數,其他字元填充隨機數。
比如明文:{1,2,3,4,5,a,b,c,d,e},缺少6個位元組,則可能補全為{1,2,3,4,5,a,b,c,d,e,5,c,3,G,$,6}
需要注意的是,如果在AES加密的時候使用了某一種填充方式,解密的時候也必須採用同樣的填充方式。
AES的工作模式,體現在把明文塊加密成密文塊的處理過程中。AES加密演算法提供了五種不同的工作模式:
ECB、CBC、CTR、CFB、OFB
模式之間的主題思想是近似的,在處理細節上有一些差別。我們這一期只介紹各個模式的基本定義。
電碼本模式 Electronic Codebook Book
密碼分組鏈接模式 CipherBlock Chaining
計算器模式 Counter
密碼反饋模式 CipherFeedBack
輸出反饋模式 OutputFeedBack
如果在AES加密的時候使用了某一種工作模式,解密的時候也必須採用同樣的工作模式。
AES加密主要包括兩個步驟: 密鑰擴展 和 明文加密 。
密鑰擴展過程說明(密鑰為16位元組):
函數g的流程說明:
輪常量(Rcon)是一個字,最右邊三個位元組總為0。因此字與Rcon相異或,其結果只是與該字最左的那個位元組相異或。每輪的輪常量不同,定位為Rcon[j] = (RC[j], 0, 0, 0)。(RC是一維數組)
RC生成函數:RC[1] = 1, RC[j] = 2 * RC[j – 1]。
因為16位元組密鑰的只進行10輪的擴展,所以最後生成的RC[j]的值按16進製表示為:
十輪的密鑰擴展後,就能生成44個字大小的擴展密鑰。擴展後的密鑰將用於AES對明文的加密過程。
S盒是16×16個位元組組成的矩陣,行列的索引值分別從0開始,到十六進制的F結束,每個位元組的范圍為(00-FF)。
進行位元組代替的時候,把狀態中的每個位元組分為高4位和低4位。高4位作為行值,低4位作為列值,以這些行列值作為索引從S盒的對應位置取出元素作為輸出,如下圖所示:
S盒的構造方式如下:
(1) 按位元組值得升序逐行初始化S盒。在行y列x的位元組值是{yx}。
(2) 把S盒中的每個位元組映射為它在有限域GF中的逆;{00}映射為它自身{00}。
(3) 把S盒中的每個位元組的8個構成位記為(b7, b6, b5, b4, b3, b2, b1)。對S盒的每個位元組的每個位做如下的變換:
ci指的是值為{63}的位元組c的第i位。
解密過程逆位元組代替使用的是逆S盒,構造方式為
位元組d={05}。
逆向行移位將狀態中後三行執行相反方向的移位操作,如第二行向右循環移動一個位元組,其他行類似。
要注意,圖示的矩陣的乘法和加法都是定義在GF(2^8)上的。
逆向列混淆原理如下:
輪密鑰加後的分組再進行一次輪密鑰加就能恢復原值.所以,只要經過密鑰擴展和明文加密,就能將明文加密成密文,進行解密的時候,只需要進行逆向變換即可。
圖[AES加密演算法的流程]中還需要注意,明文輸入到輸入狀態後,需要進行一輪的輪密鑰加,對輸入狀態進行初始化。 前9輪的加密過程,都需要進行位元組替代、行移位、列混淆和輪密鑰加,但是第10輪則不再需要進行列混淆。
進行解密的時候,需要進行逆向位元組替代,逆向行移位、逆向列混淆和輪密鑰加。
㈡ AES加密演算法原理
AES是分組密鑰,演算法輸入128位數據,密鑰長度也是128位。用Nr表示對一個數據分組加密的輪數(加密輪數與密鑰長度的關系如表1所列)。每一輪都需要一個與輸入分組具有相同長度的擴展密鑰Expandedkey(i)的參與。由於外部輸入的加密密鑰K長度有限,所以在演算法中要用一個密鑰擴展程序(Keyexpansion)把外部密鑰K擴展成更長的比特串,以生成各輪的加密和解密密鑰。x0dx0a1.1圈變化x0dx0aAES每一個圈變換由以下三個層組成:x0dx0a非線性層——進行Subbyte變換;x0dx0a線行混合層——進行ShiftRow和MixColumn運算;x0dx0a密鑰加層——進行AddRoundKey運算。x0dx0a① Subbyte變換是作用在狀態中每個位元組上的一種非線性位元組轉換,可以通過計算出來的S盒進行映射。x0dx0ax0dx0a② ShiftRow是一個位元組換位。它將狀態中的行按照不同的偏移量進行循環移位,而這個偏移量也是根據Nb的不同而選擇的[3]。x0dx0ax0dx0a③ 在MixColumn變換中,把狀態中的每一列看作GF(28)上的多項式a(x)與固定多項式c(x)相乘的結果。 b(x)=c(x)*a(x)的系數這樣計算:x0dx0a*運算不是普通的乘法運算,而是特殊的運算,即 b(x)=c(x)·a(x)(mod x4+1) 對於這個運算 b0=02。a0+03。a1+a2+a3 令xtime(a0)=02。a0x0dx0a其中,符號「。」表示模一個八次不可約多項式的同餘乘法[3]。x0dx0ax0dx0a對於逆變化,其矩陣C要改變成相應的D,即b(x)=d(x)*a(x)。x0dx0a④ 密鑰加層運算(addround)是將圈密鑰狀態中的對應位元組按位「異或」。x0dx0ax0dx0a⑤ 根據線性變化的性質[1],解密運算是加密變化的逆變化。
㈢ aes是什麼意思
aes的意思是:
1、密碼學中的高級加密標准(Advanced Encryption Standard,AES),又稱Rijndael加密法,是美國聯邦政府採用的一種區塊加密標准。
2、原子發射光譜原子發射光譜法(Atomic Emission Spectrometry,簡稱AES),是利用物質在熱激發或電激發下,不同元素的原子或離子發射特徵光譜的差別來判斷物質的組成,並進而進行元素的定性與定量分析的方法。
AES加密
AES加密過程又包括一個作為初始輪的初始密鑰加法(AddRoundKey),接著進行9次輪變換(Round),最後再使用一個輪變換(FinalRound),如圖2.1 AES演算法加密實現過程所示。
每一次Round均由SubBytes,ShiftRows,MixColumns和AddRoundKey共4個步驟構成,FinalRound包含除MixColumns這一步外的其他3個步驟。輪變換及其每一步均作用在中間結果上,將該中間結果稱為狀態,可以形象地表示為一個4*4 B的矩陣。
㈣ aes是什麼意思
aes的意思:AES技術是一種對稱的分組加密技術,使用128位分組加密數據,提供比WEP/TKIPS的RC4演算法更高的加密強度。
AES的加密碼表和解密碼表是分開的,並且支持子密鑰加密,這種做法優於以前用一個特殊的密鑰解密的做法。AES演算法支持任意分組大小,初始時間快。特別是它具有的並行性可以有效地利用處理器資源。
AES特點:
AES具有應用范圍廣、等待時間短、相對容易隱藏、吞吐量高等優點,在性能等各方面都優於WEP演算法。利用此演算法加密,WLAN的安全性將會獲得大幅度提高。
AES演算法已經在802.11i標准中得到最終確認,成為取代WEP的新一代的加密演算法。但是由於AES演算法對硬體要求比較高,因此AES無法通過在原有設備上升級固件實現,必須重新設計晶元。