AES加密算法在條件接收系統(tǒng)中的應(yīng)用

AES加密算法加解密速度快,算法安全性能好。是目前密碼學(xué)界較為流行的算法。那么AES加密算法在條件接收系統(tǒng)中有哪些應(yīng)用呢?我今天就給大家介紹一下。

一、加密算法介紹

1、基本概念

AES加密算法是一種分組加密算法,加密分組為128bits.密鑰長度可以為128bits、192bits、256bits三種,分別稱為AES-128.AES-192,AES-256。加密過程循環(huán)的次數(shù)根據(jù)密鑰長度的不同而不同。

下面給出相關(guān)的幾個定義:

(1)分組(block):是輸入,輸出、循環(huán)密鑰的二進制序列。分組的長度就是序列的bit數(shù),AES中為128bits。

(2)Word:用Wi表示一個word,32bits為一個word。128bits的數(shù)據(jù)序列可以表示成4個word。

(3)Nb:數(shù)據(jù)的word數(shù),在128bis的AES中,Nb為4。

(4)Nk:密鑰的word數(shù),密鑰為128bits、192bits、256bits時.Nk分別為4、6、8。

(5)Nr:循環(huán)次數(shù),循環(huán)次數(shù)隨著密鑰長度的不同而不同。對予密鑰長度為128bits,192bits、256bits的情況時,Nr分別為10、12、14。

(6)矩陣表示方法:

在AES中基本處理單元為一個字節(jié)。128bits可以分為16個字節(jié),用a0-a15表示每個字節(jié)-AES中把輸入表示為矩陣的形式:

AES加密算法在條件接收系統(tǒng)中的應(yīng)用

其中ao={bo, b1,b2,b3,b4,b5,b6,b7},a1={b8,b9,b10,b11,b12,b13,b14,b15},(其中ai表示一個字節(jié),bi表示一個bit)依此類推。W0=a1,a2,a3。W1=a4,a5,a6 ,a7,W2=a8,a9,a10,a11,w3=a12,a13,a14,a15,每個word為32bits,共四列,所以Nb=40整個矩陣就是一個block。

(7)AES-128,AES-192,AES-256三種標準的密鑰長度和循環(huán)次數(shù):

AES加密算法在條件接收系統(tǒng)中的應(yīng)用

2、加密算法描述

AES加密算法的每一輪變換都由三個不同的玎逆一致變換組成,且每一層都有自己的函效,他們分別是:非線性層,進行Subbyte變換;線性混合層,進行ShiftRow運算和MixColumn運算;密鑰加法層,進行AddRoundKey運算。

(1)Subbyte變換:S盒變換oS盒是一個非線性的字節(jié)替代變換,輸人為8bits,輸出仍為8bit80例如,輸入字節(jié)為Ioioiooii)轉(zhuǎn)換為十六進制表示為{53},行為5,列為3,查S盒得輸出為led},即輸出為{11101101)0十六字節(jié)逐一變換,得到128bits的輸出o在S盒中變換過的結(jié)果仍然成矩陣排列o矩陣的乘法在運算中遠不如查表來得快。因此,編寫程序時通常采用查S盒列表o S盒是非線性變換,在這里通過混亂的方式隱蔽明文消息中的冗余度。

(2)ShiftRow轉(zhuǎn)換:矩陣的第0行不做變換,第一行循環(huán)左移1個字節(jié),第2行循環(huán)左移2個字節(jié),第3行循環(huán)左移3個字節(jié)。

(3)MixColurnri轉(zhuǎn)換:在MixColumn轉(zhuǎn)換中,把狀態(tài)中的每一列看作是GF(28)上的多項式a(x)。與固定多項式c(x)之‘03 'x3+‘01’x2+‘Ol'x+‘02’相乘。

(4)AddRoundKey運算:輪密鑰與狀態(tài)中的對應(yīng)字節(jié)按位異或。

a、密鑰擴展

輪密鑰的生成由密飼擴展和輪密鑰選擇兩部分構(gòu)成,其基本原則是:

(1)輪密鑰的總位數(shù)等于分組長乘以(1+Nr),如分組長為128bit,輪數(shù)為10。則輪密鑰的總長為128x(10+1)=1408bit;

(2)種子密鑰(由用戶輸入或算法自行產(chǎn)生)擴展為擴展密鑰,種子密鑰長度為4xNk個字節(jié);

(3)輪密鑰由以下方法從擴展密鑰中獲得:對第1輪密鑰由前Nb個宇構(gòu)成;第2輪密鑰由第二個Nb個字即Nb+l個字到第2Nb個字構(gòu)成;以下依此類推。

對于密鑰長度為128位的AES,加密過程的每一次循環(huán)都需要不同的密鑰,密鑰的總數(shù)為11個,也就是4x11=44個words。密鑰擴展過程的基本單位是WoIdo由種子密鑰生成擴展密鑰的過程包括如下變換:

(1)SubWord變換:與加密過程中的SubByte8變換相同,是一個返回4個字節(jié)的函數(shù)。每個字節(jié)都是它輸入字中相應(yīng)位置字節(jié)通過S盒作用后的結(jié)果。

(2)Rotword變換:密鑰擴展過程中的循環(huán)變換,返回的是這4個字節(jié)經(jīng)循環(huán)置換后的字,例如當(dāng)輸入為word[ao,a1,a2,a3]時,結(jié)果為word[a1,a2,a3,a0]。

(3)Rcon變換:它的值為[xH,OO,OO,OOJ,其中Xo為{01},X為102]。X:z為1041。x,為108),依此類推。

b、輪密鑰的選擇

由于在進行密鑰加法時,密鑰長必須與分組長相等,因此第i輪的密鑰與分組長有關(guān),并且由擴展密鑰的字w[Nbxi],wfNbxi+ll,.,.w[Nb×(i+1)]構(gòu)成。這種算法的優(yōu)點在于占有的存儲空間不大,并且輪密鑰的計算只需要運用Nk個字就可以了,并不需要進行預(yù)計算。

整個過程生成44個words,在DES中有弱密鑰和半弱密鑰,而在AES中無弱密鑰和半弱密碼。

AES算法的解密過程和加密過程基本類似,只是把順序稍做變換。

二、加密算法的實現(xiàn)

本文主要以AES-128為倒,研究了AES算法的加解密過程并在vC環(huán)境下實現(xiàn)了該算法。加密過程程序流程圖如下所示:

AES加密算法在條件接收系統(tǒng)中的應(yīng)用

首先將消息進行分組,每個分組長度為128bits。與輸入的128bits的密鑰進行按位異或操作。然后進入第一輪循環(huán),在這個循環(huán)體中包括前面講到的查S盒表、行變換、列變換、與每輪的128bits的子密鑰異或,共循環(huán)9次。最后再查S盒表、行變換、異或變換,實際上它比循環(huán)體少了列變換這一過程。循環(huán)9次共9個子密鑰再加上首尾兩個子密鑰,因此共需128bits的密鑰11個。

為了測試AES算法的加解密速度,并且直接說明了的顯示加解密前后的明文和密文的對比變換情況,本文還在VC環(huán)境下做出了實用的加解密對話框,如圖2所示。

AES加密算法在條件接收系統(tǒng)中的應(yīng)用

在這個對話框中。直接輸入或選擇已存在的文件作為要加密的明文,然后選擇所需的密鑰長度,輸入對應(yīng)的密鑰,按¨加密計鍵,就會顯示出加密后的密文,同時在“加密時間”編輯框中會顯示加密文件所使用的時間。同樣,按解密鍵后,就會顯示出解密后的明文,同時顯示解密時間。這樣我們就可以計算出算法的加密、解密速度。

為了保證測試結(jié)果的準確性和穩(wěn)定性,我們對多個文件進行了加解密操作。最后得出AES算法的加解密速度如表2所示。

AES加密算法在條件接收系統(tǒng)中的應(yīng)用

通過測試結(jié)果可以看出,AES加密算法的加密解密速度比3DES加密算法的加密解密速度快得多,并且軟件加密解密的速度就完全可以滿足視音頻流傳輸?shù)耐叫砸蟆?/p>

三、加密算法的安全性

目前對加密算法的攻擊最常用的方法是窮舉攻擊法。它是一種已知明文的攻擊,它需要少量的密文及相應(yīng)的明文。為預(yù)防窮舉攻擊,密鑰必須足夠長以至使攻擊不可行。有兩個參數(shù)決定了窮舉攻擊的速度:需測試的密鑰量及每個測試的速度,如果從算法的復(fù)雜性理論考慮一個密碼系統(tǒng)的窮舉攻擊問題,這種攻擊的時間復(fù)雜性與可能的密鑰總數(shù)成比例,它是密鑰長度的指數(shù)函數(shù)。到目前為止,還沒有比窮舉攻擊更有效的方法,已經(jīng)公布的思想并不能形成有效的攻擊。但是,以目前的計算機運行速度來說,想用窮舉法攻破燦洛是不可能的。

差分和線性分析方法是到目前為止兩種最有用的通用密碼分析方法。對予這些攻擊提供輪致低的復(fù)雜度是在設(shè)計Rijndael密碼時的最基本準則。目前已經(jīng)證明對于一個4輪的Rijndael密碼來說,差分分析方法的概率上限是2的-150次方,線性分析方法的概率上限是2的-75次方,而實際的128位燦皓算法的輪數(shù)是10輪,這些輪效對于抵抗
上述攻擊能夠提供足夠的安全性。

不可能差分攻擊:差分密碼攻擊是利用高概率特征或差分恢復(fù)密鑰,不可能差分攻擊是利用概率為似或非常?。┑奶卣骰虿罘?,其基本思想是排除那些導(dǎo)致概率為0(或非常小)的特征或差分的候選密鑰o對5輪的Rijndael密碼,可以用不可能差分攻擊方法,它要求229.5個選擇明文、231個密文、242個存儲字和225小時的預(yù)先處理時間,它可以攻擊6輪的Rijndael密碼。但是對于輪數(shù)更高的Rijndael密碼,采用該方法攻擊則沒有更好的效果。

Square攻擊:對Rijndael密碼分析最有效的就是Square攻擊,它是一個選擇明文攻擊,通過研究基于字節(jié)結(jié)構(gòu)的密文來進行攻擊。它對予和Rijndnel密碼的其中一掄有相似結(jié)構(gòu)的任何密文都是有效的。最初的Square攻擊對6—7輪的Rijndael密碼的破解比窮盡密鑰搜索攻擊快。

盡管這些方法能夠?qū)喕腞ijndael密碼進行攻擊,但是這些方法對算法本身的攻擊并沒有任何效果。按照Rijndael密碼的設(shè)計原則,它是用一些比較巧妙的方程表達式來實現(xiàn)的o從單純的數(shù)學(xué)角度來看,要從這些方程組表達式得到密碼的密鑰非常困難,但是密碼分析家們認為也可能利用其他的一些方法比較容易地解決這些問題。已經(jīng)有一些方法利用Rijndael密碼的代數(shù)結(jié)構(gòu)來破解密碼。但是到目前為止還沒有能夠進行有效攻擊的方法。

AES能夠抵御目前已知的所有攻擊,特別是線性分析和差分分析,也能抵抗某些物理攻擊。另外,AES算法的靈活性比較大,它的分組長和密鑰長可以隨著安全性的要求而改變o算法支持任意分組的大小,密鑰的大小為128、192、256位,可以任意組合。這種靈活性的特點使算法的安全性得到大幅度提高,從而能夠有效地防御外界攻擊。

四、AES算法在條件接收系統(tǒng)中的應(yīng)用

數(shù)字電視系統(tǒng)中所傳輸?shù)囊曇纛l數(shù)據(jù)與其他數(shù)據(jù)相比,有著自己不同的特點。首先,它的比特傳輸率要比其他數(shù)據(jù)類型高出許多;其次,視音頻數(shù)據(jù)在傳輸時要求比較離的實時性,對延時、抖動極其敏感。于是,這也就意味著對視音頻數(shù)據(jù)進行加密時,不得不首先考慮加密算法的速度問題,以保證加密所耗費的時間較少,滿足觀眾對所收看節(jié)目的同步性要求o另外,為了滿足付費電視服務(wù)商的利益要求,實現(xiàn)授權(quán)用戶才可以收看節(jié)目的目的,必須保證節(jié)目在傳輸過程中的安全性,因此加密算法的安全性尤其重要。

目前歐洲D(zhuǎn)VB組織在條件接收系統(tǒng)中所使用的加擾算法是CSA算法,這是一種將分組密碼和流密碼相結(jié)合產(chǎn)生的算法。CSA算法是1998年開發(fā)出來的,但是它自從產(chǎn)生以后一直受專利權(quán)的保護,使得算法細節(jié)和代碼都不能公開,人們只是通過專利證書上的一些介紹才了解了一些關(guān)于它的情況。因此,在我國條件接收系統(tǒng)中應(yīng)用GSA算法是不切實際的。美國目前的有線電視系統(tǒng)中使用的加密算法是3DES算法,這也是目前很多國家都采用的一種算法o但是,DES算法已經(jīng)不安全了,很容易就可以破解o而3DES只是DES算法的3輪迭代,并沒有對算法本身做實質(zhì)性的改進,隨著計算機計算水平的提高,用窮舉法攻破3DES是完全可能的。另外,速度慢是3DES算法的致命性弱點,DES是為20世紀70年代的硬件結(jié)構(gòu)設(shè)計的,3DES的速度比DES還要慢幾倍。

AES加密算法首先沒有專利權(quán)方面的問題,任何人都可以通過正常渠道得到并使用這種算法。算法的公開性使得它已經(jīng)經(jīng)受了許多學(xué)者和密碼專家的深入研究,從而使算法更加完善o它可以抵御目前已知的所有攻擊,完全可以保證節(jié)目的安全性。根據(jù)前面的測試結(jié)果,AES的加密解密速度約為38M/8,可以滿足視音頻流的實時性傳輸要求。另外,它可以實用在智能卡上,使用少量的RI蝴,節(jié)省內(nèi)存空間,而且在ROM與效事之間是可以根據(jù)需要傲取舍的。算法的設(shè)計非常簡單,不管是硬件上還是低內(nèi)存環(huán)境下都能快速執(zhí)行,即使在軟件環(huán)境下也可以快速加解密,這樣又可以滿足實際系統(tǒng)的經(jīng)濟性要求。

小知識之AES

密碼學(xué)中的高級加密標準(Advanced Encryption Standard,AES),又稱高級加密標準Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準。這個標準用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。經(jīng)過五年的甄選流程,高級加密標準由美國國家標準與技術(shù)研究院 (NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標準。2006年,高級加密標準已然成為對稱密鑰加密中最流行的算法之一。