版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
密碼學(xué)
第四講對稱分組密碼AESwzy@武漢大學(xué)高級加密標(biāo)準(zhǔn)AESAES的概況總體結(jié)構(gòu)AES數(shù)學(xué)基礎(chǔ)算法描述算法的實現(xiàn)安全性及評價補(bǔ)充內(nèi)容:AES數(shù)學(xué)基礎(chǔ)代數(shù)群、環(huán)、域模運(yùn)算與剩余類多項式運(yùn)算F2運(yùn)算代數(shù)結(jié)構(gòu)除法與余數(shù)剩余類定義比n小的非負(fù)整數(shù)集合為Zn:Zn={0,1,…,(n-1)}該集合被稱為剩余類集,或模n的剩余類。
Zn是有乘法單位元的交換環(huán)。模8運(yùn)算模7運(yùn)算剩余類Zn是有乘法單位元的交換環(huán)。n為素數(shù)時,Zn中的每個非零元素都有乘法逆元,構(gòu)成有限域。有限域的階(元素的個數(shù))必須是素數(shù)的冪pn,n為正整數(shù),記為GF(pn)Z7對于模7的加法和乘法構(gòu)成有限域GF(7)Z8對于模2的多項式加法和乘法構(gòu)成有限域GF(23)多項式運(yùn)算n次多項式多項式加法乘法12AES數(shù)學(xué)基礎(chǔ)二元域F2運(yùn)算舉例+:0+0=0,0+1=1*:1*1=1/:1-1=1系數(shù)在二元域中的多項式運(yùn)算既約多項式域F上的多項式f(x)被稱為不可約的(既約的)當(dāng)且僅當(dāng)f(x)不能表示為兩個多項式的積(兩個多項式都在F上,次數(shù)都低于f(x)的次數(shù))。與整數(shù)相似,一個不可約多項式也被稱為素多項式。如GF(2)上的多項式f(x)=x4+1是可約的因為x4+1=(x+1)(x3+x2+x+1)
使用有限域GF(2n)的動機(jī)與給定的二進(jìn)制位數(shù)所能表達(dá)的信息對應(yīng)易于軟硬件實現(xiàn)
但是,以2n為模的運(yùn)算不一定構(gòu)成有限域,如模8運(yùn)算。非零元素1234567在Z8中的出現(xiàn)次數(shù)48412484在GF(23)中的出現(xiàn)次數(shù)7777777模8運(yùn)算GF(23)運(yùn)算GF(pn)運(yùn)算有限域GF(pn)的構(gòu)造方法該運(yùn)算遵循基本代數(shù)規(guī)則中的普通多項式運(yùn)算規(guī)則。系數(shù)運(yùn)算以p為模,即遵循有限域Zp上的運(yùn)算規(guī)則。如果乘法運(yùn)算的結(jié)果是次數(shù)大于n-1的多項式,那么必須將其除以某個次數(shù)為n的既約多項式m(x)并取余式。對于多項式f(x),這個余數(shù)可表示為r(x)=f(x)modm(x)。GF(23)運(yùn)算選擇一個3次既約多項式只有兩個滿足條件的多項式:x3+x2+1和x3+x+1本例中選擇既約多項式x3+x+1生成元為010階為q的有限域F的生成元是一個元素,記作g,該元素的前q-1個冪構(gòu)成了F的所有非零元素,即域F的元素為0,g0,…,gq-2。一個不可約多項式的根g是這個不可約多項式定義的有限域的生成元,即f(g)=0
GF(23)運(yùn)算22AES數(shù)學(xué)基礎(chǔ)GF(28)
運(yùn)算GF(2)上的多項式運(yùn)算,模11B:x8+x4+x3+x+
1舉例+:(x2+1)+(x+1)=x2+x*:(x4+1)*(x4+x)=x8+x5+x4+x=x5+x3+1/:x*(x7+x3+x2+1)=x8+x4+x3+x=1映射:101+011=110,10001*10010=10100123AES數(shù)學(xué)基礎(chǔ)F28上的多項式運(yùn)算,模x4+1舉例:101x2+011x2=110x2,101x2*011x2=1111x4=1111AES的數(shù)學(xué)基礎(chǔ)(1)有限域GF(28)上定義了4種運(yùn)算:“+”、“·”、“·xtime”和帶系數(shù)的多項式乘運(yùn)算“”。對字節(jié)b,用多項式表示為:
b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0“+”運(yùn)算:兩個字節(jié)相加,相當(dāng)于字節(jié)的每一位簡單異或。例:’57’+’83’=‘d4’(57)16=(01010111)2→x6+x4+x2+x+1(83)16=(10000011)2→x7+x+1’57’+’83’→(x6+x4+x2+x+1)+(x7+x+1)=x7+x6+x4+x2→(11010100)2=(d4)16AES的數(shù)學(xué)基礎(chǔ)(2)“·”運(yùn)算:選擇一個不可約多項式:m(x)=x8+x4+x3+x+1,“·”運(yùn)算為兩多項式相乘后進(jìn)行模m(x)的運(yùn)算。例:’57’·’83’=‘c1’(57)16=(01010111)2→x6+x4+x2+x+1(83)16=(10000011)2→x7+x+1’57’·’83’→(x6+x4+x2+x+1)·(x7+x+1)mod(x8+x4+x3+x+1)=x13+x11+x9+x8+x7+x7+x5+x3+x2+
x+x6+x4+x2+x+1)mod(x8+x4+x3+x+1)
=(x13+x11+x9+x8+x6+x5+x4+x3+1)mod(x8+x4+x3+x+1)
=x7+x6+1→(11000001)2=(c1)16(x13+x11+x9+x8+x6+x5+x4+x3+1)mod(x8+x4+x3+x+1)
:X5+x3x8+x4+x3+x+1x13+x11+x9+x8+x6+x5+x4+x3+1x13+x9+x8+x6+x5x7+x6+1x11+x4+x3+1x11+x7+x6+x4+x3AES的數(shù)學(xué)基礎(chǔ)(2)倍乘“xtime”運(yùn)算:定義為x·b(x)modm(x)。例:xtime(57)=x(x6+x4+x2+x+1)modx8+x4+x3+x+1=x7+x5+x3+x2+x=’AE’按定義有:等價于:AES的數(shù)學(xué)基礎(chǔ)(2)帶系數(shù)的多項式乘運(yùn)算“”:GF(28)上的多項式a(x)和b(x)相乘模x4+1的積(表示為c(x)=a(x)·b(x)x·b(x)=b2x3+b1x2+b0x1+b3modx4+1
高級加密標(biāo)準(zhǔn)AESAES的概況總體結(jié)構(gòu)AES數(shù)學(xué)基礎(chǔ)算法描述算法的實現(xiàn)安全性及評價一、AES的概況1、歷史時間:1997年美國政府向社會公開征集高級數(shù)據(jù)加密標(biāo)準(zhǔn)(AES);1998年8月20日從應(yīng)征的21個算法中選出15個。1999年8月又選中其中5個算法。2000年10月2日再選出1個算法。2001年11月26日接受其作為標(biāo)準(zhǔn)。2001年12月4日正式公布:FIPS-197。一、AES的概況2、AES產(chǎn)生的背景①1984年12月里根總統(tǒng)下令由國家保密局研制新密碼標(biāo)準(zhǔn),以取代DES。②1991年新密碼開始試用并征求意見。民眾要求公開算法,并去掉法律監(jiān)督。
③1994年頒布新密碼標(biāo)準(zhǔn)(EES)。④1995年5月貝爾實驗室的博士生M.Blaze在PC機(jī)上用45分鐘攻擊法律監(jiān)督字段獲得成功。
⑤1995年7月美國政府放棄用EES加密數(shù)據(jù)。AES產(chǎn)生的背景1997年4月15日,NIST發(fā)起征集高級加密標(biāo)準(zhǔn)(AdvancedEncryptionStandard)AES的活動,活動目的是確定一個非保密的、可以公開技術(shù)細(xì)節(jié)的、全球免費(fèi)使用的分組密碼算法,作為新的數(shù)據(jù)加密標(biāo)準(zhǔn)。對AES的基本要求是:比三重DES快、至少與三重DES一樣安全;無類別的;可公開的;無特權(quán)的;數(shù)據(jù)分組長度為128比特;密鑰長度為128/192/256比特。AES產(chǎn)生的背景1998年6月NIST共收到21個提交的算法,在同年的8月首屆AES會議上指定了15個候選算法。1999年3月22日第二次AES會議上,將候選名單減少為5個,這5個算法是MARS,RC6,Rijndael,SERPENT,和Twofish。AES產(chǎn)生的背景MARS(由IBM公司研究部門的一個龐大團(tuán)隊發(fā)布,對它的評價是算法復(fù)雜、速度快、安全性高)RC6(由RSA實驗室發(fā)布,對它的評價是極簡單、速度極快、安全性低)Rijndael(由JoanDaemen和VincentRijmen兩位比利時密碼專家發(fā)布,對它的評價是算法簡潔、速度快、安全性好)Serpent(由RossAnderson,EliBiham和LarsKnudsen發(fā)布,對它的評價是算法簡潔、速度慢、安全性極高)Twofish(由Counterpane公司一個龐大的團(tuán)隊發(fā)布,對它的評價是算法復(fù)雜、速度極快、安全性高)AES產(chǎn)生的背景從全方位考慮,Rijndael匯聚了安全,性能,效率,易用和靈活等優(yōu)點,使它成為AES最合適的選擇2000年10月NIST宣布Rijndael算法被選為高級加密標(biāo)準(zhǔn)2001年11月發(fā)布為聯(lián)邦信息處理標(biāo)準(zhǔn)(FederalInformationProcessingStandard,F(xiàn)IPS),用于美國政府組織保護(hù)敏感信息的一種特殊的加密算法,即FIPSPUB197標(biāo)準(zhǔn)一、AES的概況⑥美國密碼政策的變化
公開設(shè)計秘密設(shè)計公開設(shè)計3、設(shè)計原則
①安全性:抵抗所有已知攻擊;
②實用性:適應(yīng)各種環(huán)境,速度快;
③擴(kuò)展性:分組長度和密鑰長度可擴(kuò)展。
DESEESAESDES和AES的比較DESAES日期1976年1999年分組大小64b128b、192b、256b密鑰長度56b(有效長度)128b、192b、256b(可能更長)加密原語代替、置換代替、移位、位混合算法公開公開設(shè)計基本原理未公開公開選擇過程保密保密,但接受公開評論來源IBM,由NSA加強(qiáng)比利時密碼學(xué)家一、AES的概況4、整體特點
①分組密碼:明文長度、密文長度、密鑰長度可變(128/192/256等)。現(xiàn)在一般取128。
②面向二進(jìn)制的密碼算法:能夠加解密任何形式的計算機(jī)數(shù)據(jù)。
③不是對合運(yùn)算:加、解密使用不同的算法。④綜合運(yùn)用置換、代替、代數(shù)等多種密碼技術(shù)⑤整體結(jié)構(gòu):基本輪函數(shù)加迭代。圈數(shù)可變,≥10分組長度(bit)128192256密鑰長度(bit)128192256表1.分組長度和密鑰長度的不同取值A(chǔ)ES算法簡介AES算法的輪數(shù)和明文分組長度及密鑰長度的關(guān)系為:除最后一輪不做列混淆變換外,每一輪都經(jīng)過4步相同的操作:輪數(shù)明文128b明文192b明文256b密鑰128b101214密鑰192b121214密鑰256b141414Round(State,RoundKey){ByteSub(State);//S-盒
ShiftRow(State);//行循環(huán)左移
MixColumn(State);//列混淆變換
AddRoundKey(State,RoundKey);//與擴(kuò)展密鑰相異或}一、AES的概況5、應(yīng)用
①許多國際組織采用為標(biāo)準(zhǔn)。②已經(jīng)大范圍應(yīng)用。③產(chǎn)品形式:軟件(嵌入式,應(yīng)用軟件)硬件(單片,插卡) Intel指令集6、結(jié)論只有通過實際應(yīng)用的檢驗才能證明其安全。我們相信:經(jīng)過全世界廣泛分析的AES是不負(fù)眾望的。二、總框圖128位明文初始圈密鑰加S盒變換行移位與列混淆圈密鑰加128位密文迭代控制密鑰圈密鑰產(chǎn)生圈函數(shù)AES算法中的數(shù)據(jù)結(jié)構(gòu)AES算法中進(jìn)行運(yùn)算的單位包括:1個字節(jié)1列1行用字節(jié)數(shù)組表示的整個加密塊加密塊數(shù)組中,n可以是3,5,7,所代表的加密塊分別表示128bit,192bit和256bit。ai,ja0,ja1,ja2,ja3,jai,0ai,1…ai,3a0,2a0,3a1,2a1,3a2,2a2,3a0,0a0,1a1,0a1,1a2,0a2,1a3,0a3,1a3,2a3,3…a0,n…a1,n…a2,n…a3,nAES算法中的數(shù)據(jù)結(jié)構(gòu)1、AES的數(shù)學(xué)基礎(chǔ)是有限域GF(28)一個GF(2)上的8次既約多項式可生成一個GF(28)GF(28)的全體元素構(gòu)成加法群,線性空間。GF(28)的非零元素構(gòu)成乘法循環(huán)群。GF(28)中的元素有多種表示:字節(jié)次數(shù)低于8次的多項式指數(shù)形式
對數(shù)形式
GF(28)的特征為2。
三、數(shù)學(xué)基礎(chǔ)有限域GF(28)上定義了4種運(yùn)算:定義3-2:“+”加法定義3-3:“·”乘法定義3-5:“·xtime”x乘定義3-8:帶系數(shù)的多項式乘運(yùn)算“”三、數(shù)學(xué)基礎(chǔ)49數(shù)學(xué)基礎(chǔ)GF(28)
運(yùn)算GF(2)上的多項式運(yùn)算,模11B:x8+x4+x3+x+
1舉例+:(x2+1)+(x+1)=x2+x*:(x4+1)*(x4+x)=x8+x5+x4+x=x5+x3+1/:x*(x7+x3+x2+1)=x8+x4+x3+x=1映射:101+011=110,10001*10010=101001三、數(shù)學(xué)基礎(chǔ)2、AES的GF(28)表示AES采用的模多項式生成GF(28):
m(x)=x8+x4+x3+x+1AES采用GF(28)的多項式元素表示。
字節(jié)B=b7b6b5b4b3b2b1b0可表示成GF(2)上的多項式:
b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x1+b0
例:字節(jié)57=01010111的多項式表示:
01010111x6+x4+x2+x+1
三、數(shù)學(xué)基礎(chǔ)2、AES的GF(28)表示加法:兩元素多項式的系數(shù)按位模2加例2:57+83=D4(x6+x4+x2+x+1)⊕(x7+x+1)=x7+x6+x4+x2
乘法:兩元素多項式相乘,模m(x)
例3:57×83=C1
(x6+x4+x2+x+1)×(x7+x+1)=x7+x6+1modm(x)
乘法單位元:字節(jié)01多項式1乘法逆元:設(shè)a(x)的逆元為b(x),則a(x)b(x)=1modm(x)。根據(jù)Euclid算法求出。
三、數(shù)學(xué)基礎(chǔ)“·”運(yùn)算:選擇一個不可約多項式:m(x)=x8+x4+x3+x+1,“·”運(yùn)算為兩多項式相乘后進(jìn)行模m(x)的運(yùn)算。例:’57’·’83’=‘c1’(57)16=(01010111)2→x6+x4+x2+x+1(83)16=(10000011)2→x7+x+1’57’·’83’→(x6+x4+x2+x+1)·(x7+x+1)mod(x8+x4+x3+x+1)=x13+x11+x9+x8+x7+x7+x5+x3+x2+
x+x6+x4+x2+x+1)mod(x8+x4+x3+x+1)
=(x13+x11+x9+x8+x6+x5+x4+x3+1)mod(x8+x4+x3+x+1)
=x7+x6+1→(11000001)2=(c1)16三、數(shù)學(xué)基礎(chǔ)(x13+x11+x9+x8+x6+x5+x4+x3+1)mod(x8+x4+x3+x+1)
:X5+x3x8+x4+x3+x+1x13+x11+x9+x8+x6+x5+x4+x3+1x13+x9+x8+x6+x5x7+x6+1x11+x4+x3+1x11+x7+x6+x4+x32、AES的GF(28)表示加法:兩元素多項式的系數(shù)按位模2加例2:57+83=D4(x6+x4+x2+x+1)⊕(x7+x+1)=x7+x6+x4+x2
乘法:兩元素多項式相乘,模m(x)
例3:57×83=C1
(x6+x4+x2+x+1)×(x7+x+1)=x7+x6+1modm(x)
乘法單位元:字節(jié)01多項式1乘法逆元:設(shè)a(x)的逆元為b(x),則a(x)b(x)=1modm(x)。根據(jù)Euclid算法求出。
三、數(shù)學(xué)基礎(chǔ)例:求(x7+x+1)-1modm(x)2、AES的GF(28)表示
x乘法xtime:用x乘GF(28)的元素例:
xtime(57)=x(x6+x4+x2+x+1)=x7+x5+x3+x2+x
xtime(83)=x(x7+x+1)=x8+x2+xmodm(x)=x4+x3+x2+1若x7的系數(shù)=0,則為簡單相乘:系數(shù)左移。若x7的系數(shù)=1,則取模m(x),加x8+x4+x3+x+1
。
三、數(shù)學(xué)基礎(chǔ)倍乘“xtime”運(yùn)算:定義為x·b(x)modm(x)。例:xtime(57)=x(x6+x4+x2+x+1)modx8+x4+x3+x+1=x7+x5+x3+x2+x=’AE’按定義有:等價于:三、數(shù)學(xué)基礎(chǔ)3、AES的字表示一個字=4個字節(jié)一個字表示為系數(shù)取自GF(28)上的次數(shù)低于4次的多項式例:
字:57834AD157x3+83x2+4Ax+D1字加法:兩多項式系數(shù)按位模2加
字乘法:設(shè)a和c是兩個字,a(x)和c(x)是其字多項式,AES定義a和c的乘積為
b(x)=a(x)c(x)modx4+1
三、數(shù)學(xué)基礎(chǔ)60數(shù)學(xué)基礎(chǔ)F28上的多項式運(yùn)算+和,模x4+1定義3-7:101x2+011x2=110x2定義3-8:101x2
011x2=1111x4=1111三、數(shù)學(xué)基礎(chǔ)3、AES的字表示字乘法:設(shè)a(x)=a3x3+a2x2+a1x+a0c(x)=c3x3+c2x2+c1x+c0b(x)=b3x3+b2x2+b1x+b0則c(x)=a(x)b(x)modX4+1的系數(shù):
c0=a0b0+a3b1+a2b2+a1b3c1=a1b0+a0b1+a3b2+a2b3c2=a2b0+a1b1+a0b2+a3b3c3=a3b0+a2b1+a1b2+a0b3
三、數(shù)學(xué)基礎(chǔ)帶系數(shù)的多項式乘運(yùn)算“”:GF(28)上的多項式a(x)和b(x)相乘模x4+1的積(表示為c(x)=a(x)b(x)注意:X4modX4+1=1,X5modX4+1=X,X6modX4+1=X2三、數(shù)學(xué)基礎(chǔ)帶系數(shù)的多項式乘運(yùn)算“”:GF(28)上的多項式a(x)和b(x)相乘模x4+1的積(表示為c(x)=a(x)b(x)modX4+1xb(x)=b2x3+b1x2+b0x1+b3modx4+1
三、數(shù)學(xué)基礎(chǔ)3、AES的字表示字乘法:寫成矩陣形式則
c0b0b3b2b1a0c1
=b1b0b3b2a1c2b2b1b0b3a2c3b3b2b1b0a3注意:1.x4+1是可約多項式,字c(x)不一定有逆;2.在AES中選擇c(x)固定,且有逆。
三、數(shù)學(xué)基礎(chǔ)3、AES的字表示字x乘法:p(x)=xa(x)modx4+1寫成矩陣形式則
p0=00
00
00
01
a0p1=01
00
00
00
a1p2=00
01
00
00
a2p3=00
00
01
00
a3注意:因為模x4+1,字x乘法相當(dāng)于字節(jié)循環(huán)移位;
三、數(shù)學(xué)基礎(chǔ)3、AES的字表示字x乘法:p(x)=xa(x)modx4+1模x4+1,字x乘法相當(dāng)于按字節(jié)循環(huán)移1個字節(jié);推廣——字xn乘法:p(x)=xna(x)modx4+1思考:相當(dāng)于按字節(jié)循環(huán)移?個字節(jié)
三、數(shù)學(xué)基礎(chǔ)四、AES的基本變換1、AES的數(shù)據(jù)處理單位
①字節(jié);②字;③狀態(tài)。2、狀態(tài)
①加解密過程中的中間數(shù)據(jù)。
②以字節(jié)為元素的矩陣,或二維數(shù)組。AES算法加密部分的實現(xiàn)明文分組和密鑰的組織排列方式01234567891011121314150481215913261014371115圖1:以明文分組為128bits為例組成的陣列048121591326101437111504812162015913172126101418223711151923048121620242815913172125292610141822263037111519232731圖2.以明文分組(或密鑰)為128bits、192bits、256bits為例組成的陣列四、AES的基本變換2、狀態(tài)
③符號:Nb-明密文所含的數(shù)據(jù)的字?jǐn)?shù)。
Nk-密鑰所含的數(shù)據(jù)的字?jǐn)?shù)。
Nr-迭代圈數(shù)。④例:Nb=4時的狀態(tài)Nk=4時的密鑰數(shù)組
a0,0a0,1a0,2a0,3k0,0k0,1k0,2k0,3a1,0a1,1a1,2a1,3k1,0k1,1k1,2k1,3a2,0a2,1a2,2a2,3k2,0k2,1k2,2k2,3a3,0a3,1a3,2a3,3k3,0k3,1k3,2k3,3
四、AES的基本變換2、狀態(tài)
⑤Nb、Nk、Nr之間的關(guān)系:
NrNb=4Nb=6Nb=8Nk=4101214Nk=6121214Nk=8141414
分組長度和密鑰長度均為128bits時的Rijndael加密算法框圖Data/KeyAdditionRnd0Rnd1Rnd8FinalRndKeySchedule密文Key明文四、AES的基本變換3、圈變換-加密輪函數(shù)
①標(biāo)準(zhǔn)圈變換:
Round(State,RoundKey)ByteSub(State);S盒變換
ShiftRow(State);行移位變換
MixColumn(State);列混淆變換
AddRoundKey(State,RoundKey)圈密鑰加變換四、AES的基本變換3、圈變換-加密輪函數(shù)
②最后一圈的圈變換:
Round(State,RounKey)ByteSub(State);S盒變換
ShiftRow(State);行移位變換
AddRoundKey(State,RoundKey)圈密鑰加變換注:最后一圈的圈變換中沒有列混淆變換。用偽代碼表示的Rijndael輪變換一般的輪變換Round(State,RoundKey){ByteSubstitution;ByteRotation;MixColumn;AddRounKey;}結(jié)尾輪變換FinalRound(State,RoundKey){ByteSubstituion;ByteRotation;AddRoundKey;}RijndaelRound的構(gòu)成ByteSubstitutionByteRotationMixColumn+RoundKey一般的輪變換ByteSubstitutionByteRotation+RoundKey最后一輪的輪變換四、AES的基本變換4、S盒變換ByteSub(State)
①S盒變換是AES的唯一的非線性變換,是AES安全的關(guān)鍵。②AES使用16個相同的S盒,DES使用8個不相同的S盒。③AES的S盒有8位輸入8位輸出,DES的S盒有6位輸入4位輸出。
S盒(AES)S盒(DES)8864四、AES的基本變換4、S盒變換ByteSub(State)
④S盒變換:a)將輸入字節(jié)用其GF(28)上的逆來代替;
b)對a)的結(jié)果作如下的仿射變換:(以x0-x7作輸入,以y0-y7作輸出。)ByteSubstitution
該變換可以用一個256字節(jié)的表來實現(xiàn)B0,0B0,1B0,2B0,3B1,0B1,1B1,2B1,3B2,0B2,1B2,2B2,3B3,0B3,1B3,2B3,3A0,0A0,1A0,2A0,3A1,0A1,1A1,2A1,3A2,0A2,1A2,2A2,3A3,0A3,1A3,2A3,3取逆仿射變換四、AES的基本變換4、S盒變換ByteSub(State)
y010001111x01y111000111x11y211100011x20y3=11110001x3+0y411111000x40y501111100x51y600111110x61y700011111x70四、AES的基本變換4、S盒變換ByteSub(State)
④S盒變換
注意:S盒變換的第一步是把字節(jié)的值用它的乘法逆來代替,是一種非線性變換。由于系數(shù)矩陣中每列都含有5個1,這說明改變輸入中的任意一位,將影響輸出中的5位發(fā)生變化。由于系數(shù)矩陣中每行都含有5個1,這說明輸出中的每一位,都與輸入中的5位相關(guān)。四、AES的基本變換5、行移位變換ShiftRow(State)①行移位變換對狀態(tài)的行進(jìn)行循環(huán)移位。②第0行不移位,第1行移C1字節(jié),第2行移C2字節(jié),第3行移C3字節(jié)。③C1,C2,C3按表取值
NbC1C2C341236123ByteRotation04812159132610143711150481259131101426153711循環(huán)左移1字節(jié)循環(huán)左移2字節(jié)循環(huán)左移3字節(jié)四、AES的基本變換5、行移位變換ShiftRow(State)④行移位變換屬于置換,本質(zhì)在于把數(shù)據(jù)打亂重排。⑤AES的行移位變換屬于線性變換。四、AES的基本變換6、列混淆變換MixColumn(State)①列混淆變換把狀態(tài)的列視為GF(28)上的多項式a(x),乘以一個固定的多項式c(x),并模x4+1:b(x)=a(x)c(x)modx4+1其中,c(x)=03x3+01x2+01x+02②列混淆變換屬于代替變換。③c(x)與x4+1互素,從而保證c(x)存在逆多項式d(x),而c(x)d(x)=1mod。只有逆多項式d(x)存在,才能正確進(jìn)行解密。MixColumn
這一運(yùn)算作用在每一列上A0,0A0,1A0,2A0,3A1,0A1,1A1,2A1,3A2,0A2,1A2,2A2,3A3,0A3,1A3,2A3,3B0,0B0,1B0,2B0,3B1,0B1,1B1,2B1,3B2,0B2,1B2,2B2,3B3,0B3,1B3,2B3,3×C(X)6、列混淆變換MixColumn(State)b(x)=a(x)c(x)modx4+1寫成矩陣形式
b0=02
03
01
01
a0b1=01
02
03
01
a1b2=01
01
02
03
a2b3=03
01
01
02
a3
四、AES的基本變換MixColumn運(yùn)算舉例87F24D976E4C90EC46E74AC3A68CD8954740A34C37D4709F94E43A42EDA5A6BC×C(X)MixColumn運(yùn)算舉例87F24D976E4C90EC46E74AC3A68CD8954740A34C37D4709F94E43A42EDA5A6BC×C(X)MixColumn運(yùn)算舉例87F24D976E4C90EC46E74AC3A68CD8954740A34C37D4709F94E43A42EDA5A6BC×C(X)MixColumn運(yùn)算舉例87F24D976E4C90EC46E74AC3A68CD8954740A34C37D4709F94E43A42EDA5A6BC×C(X)7、圈密鑰加變換AddRoundKey()①
把圈密鑰與狀態(tài)進(jìn)行模2相加。②圈密鑰根據(jù)密鑰產(chǎn)生算法產(chǎn)生。③圈密鑰長度等于數(shù)據(jù)塊長度。
四、AES的基本變換A0,0A0,1A0,2A0,3A1,0A1,1A1,2A1,3A2,0A2,1A2,2A2,3A3,0A3,1A3,2A3,3K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3+B0,0B0,1B0,2B0,3B1,0B1,1B1,2B1,3B2,0B2,1B2,2B2,3B3,0B3,1B3,2B3,3A3,3+K3,3=B3,3(mod2)①圈密鑰根據(jù)密鑰產(chǎn)生算法通過用戶密鑰得到。②密鑰產(chǎn)生分兩步進(jìn)行:密鑰擴(kuò)展和圈密鑰選擇③密鑰擴(kuò)展將用戶密鑰擴(kuò)展為一個擴(kuò)展密鑰。④密鑰選擇從擴(kuò)展密鑰中選出圈密鑰。
五、圈密鑰生成1、密鑰擴(kuò)展①密鑰擴(kuò)展產(chǎn)生擴(kuò)展密鑰。②用一個字元素的一維數(shù)組W[Nb*(Nr+1)]表示擴(kuò)展密鑰。
③用戶密鑰放在數(shù)組最開始的Nk個字中。④其它的字由它前面的字經(jīng)過處理后得到。⑤有Nk≤6和Nk>6兩種密鑰擴(kuò)展算法。
五、圈密鑰生成1、密鑰擴(kuò)展⑴Nk≤6的密鑰擴(kuò)展①最前面的Nk個字是由用戶密鑰填充的。②之后的每一個字W[j]等于前面的字W[j-1]與Nk個位置之前的字W[j-Nk]的異或。③而且對于Nk的整數(shù)倍的位置處的字,在異或之前,對W[j-1]進(jìn)行Rotl變換和ByteSub變換,再異或一個圈常數(shù)Rcon。
五、圈密鑰生成五、圈密鑰生成W0W1W2…WNk-1WNkWNk+1…
用戶密鑰
當(dāng)j不是Nk的整數(shù)倍時:
Wj=Wj-Nk⊕Wj-1當(dāng)j是Nk的整數(shù)倍時:Wj=Wj-Nk⊕ByteSub(Rotl(Wj-1))⊕Rcon[j/Nk];
Wi-4Wi-3Wi-2Wi-1WiByteSubstituionByteRotate+Rcons+Keyexpansion4=<i<4(Rnd+1)imod4=0imod4!=0說明:
Rotl是一個字里的字節(jié)以字節(jié)為單位循環(huán)左移位函數(shù),設(shè)W=(A,B,C,D),則Rotl(W)=(B,C,D,A)。圈常數(shù)Rcon與Nk無關(guān),且定義為:
Rcon[i]=(RC[i],‘00’,‘
00’,‘
00’)RC[1]=‘01’RC[i]=xtime(RC[i-1])
五、圈密鑰生成密鑰擴(kuò)展K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3K0K1K2K3K0K1K2K3K4K5K6K7+++K0K1K2K3K4K5K6K7ByteSubstitutionByteRotate+Rcon102
KeyExpansion
KeyLength<=192bit2、圈密鑰選擇
根據(jù)分組的大小,依次從擴(kuò)展密鑰中取出圈密鑰。前面的Nb個字作為圈密鑰0,接下來的Nb個字作為圈密鑰1。…
WW0W1
…WNb-1WNb…
W2Nb-1…
第一圈密鑰第二圈密鑰
五、圈密鑰生成
輪密鑰選取W0W1W2W3W4W5W6W7W8W9W10W11W12輪密鑰0輪密鑰1輪密鑰21、密鑰擴(kuò)展⑵Nk>6的密鑰擴(kuò)展說明:與Nk≤6的密鑰擴(kuò)展相比,Nk>6的密鑰擴(kuò)展的不同之處在于:如果j被Nk除的余數(shù)=4,則在異或之前,對W[j-1]進(jìn)行ByteSub變換。
五、圈密鑰生成106
KeyExpansion
KeyLength=256bit六、AES的加密算法AES的加密算法由以下部分組成:①一個初始圈密鑰加變換。②Nr-1圈的圈變換。③最后一圈變換。Rijndael加密及解密的標(biāo)準(zhǔn)結(jié)構(gòu)Block,KeyLength=128bitsPlaintext(128bits)ByteSubstitutionMixColumn+Ciphertext(128bits)K0Kii=10ByteRotationfori=1to10Ciphertext(128bits)K10InvMixCoumnInvByteRotationInvByteSubstitution++Ki+Plaintext(128bits)i=9fori=9to0加密解密六、AES的加密算法Encryption(State,CipherKey)
{
KeyExpansion(CipherKey,RoundKey)AddRoundKey(State,RoundKey)For(I=1;I<Nr;I++)Round(State,RoundKey){ByteSub(State);ShiftRow(State);MixColumn(State);AddRoundKey(State,RoundKey)}六、AES的加密算法FinalRound(State,RoundKey){ByteSub(State);ShiftRow(State);AddRoundKey(State,RoundKey);}}注意:
第一步和最后一步都用了圈密鑰加,因為任何沒有密鑰參與的變換都是容易被攻破的。AES算法的一般描述
算法可逆是對加密算法的基本要求。AES的加密算法不是對合運(yùn)算,解密算法與加密算法不同。AES的巧妙之處:雖然解密算法與加密算法不同,但解密算法與加密算法的結(jié)構(gòu)相同。把加密算法的基本運(yùn)變換成逆變換,便得到解密算法。
七、AES的基本逆變換AES的各個基本變換都是可逆的。1、圈密鑰加變換的逆就是其本身
(AddRoundKey)-1=AddRoundKey2、行移位變換的逆是狀態(tài)的后三行分別移位Nb-C1,Nb-C2,Nb-C3個字節(jié)。
七、AES的基本逆變換3、列混淆變換的逆因為列混淆變換是把狀態(tài)的每一列都乘以一個固定的多項式c(x):b(x)=a(x)c(x)modx4+1所以列混淆變換的逆就是狀態(tài)的每列都乘以c(x)的逆多項式d(x):
d(x)=(c(x))-1modx4+1c(x)=03x3+01x2+01x+02d(x)=0Bx3+0Dx2+09x+0E七、AES的基本逆變換4、S盒變換的逆首先進(jìn)行逆仿射變換;再把每個字節(jié)用其在GF(28)中的逆來代替。
七、AES的基本逆變換S盒的逆仿射變換:
00100101y01x0
10010010y11x101001001y20x210100100y30x3
01010010y4⊕0=x4
00101001y51x510010100y61x601001010y70x7
七、AES的基本逆變換5、解密的密鑰擴(kuò)展解密的密鑰擴(kuò)展與加密的密鑰擴(kuò)展不同;解密的密鑰擴(kuò)展定義如下:①加密算法的密鑰擴(kuò)展。②把InvMixColumn應(yīng)用到除第一和最后一圈外的所有圈密鑰上。七、AES的基本逆變換6、逆圈變換標(biāo)準(zhǔn)逆圈變換
Inv_Round(State,Inv_RoundKey){Inv_ByteSub(State);Inv_ShiftRow(State);Inv_MixColunm(State);AddRoundKey(State,Inv_RoundKey);}七、AES的基本逆變換6、逆圈變換最后一圈的逆變換:
Inv_FinalRound(State,Inv_RoundKey){Inv_ByteSub(State);Inv_ShiftRow(State);AddRoundKey(State,Inv_RoundKey);}
七、AES的基本逆變換八、AES的解密算法加密算法不是對合運(yùn)算:
(AES)-1≠AES解密算法的結(jié)構(gòu)與加密算法的結(jié)構(gòu)相同解密中的變換為加密算法變換的逆變換,且密鑰擴(kuò)展策略稍有不同。八、AES的解密算法Decryption(State,CipherKey){Inv_KeyExpansion(CipherKey,Inv_RoundKey);AddRoundKey(State,Inv_RoundKey);For(I=1;I<Nr;I++)Inv_Round(State,Inv_RoundKey);{Inv_ByteSub(State);Inv_ShiftRow(State);Inv_MixColumn(State);AddRoundKey(State,Inv_RoundKey;}
八、AES的解密算法Inv_FinalRound(State,Inv_RoundKey){InvByteSub(State);InvShiftRow(State);AddRoundKey(State,Inv_RoundKey);}}九、AES的實現(xiàn)適應(yīng)多種環(huán)境,高效,方便是AES的突出優(yōu)點。由于AES的基本運(yùn)算由ByteSub、MixColumn、ShiftRow和AddRoundKey變換構(gòu)成,因此AES的實現(xiàn)主要是這些變換的實現(xiàn)。其中ShiftRow和AddRoundKey的實現(xiàn)比較容易,因此主要是ByteSub和MixColumn變換的實現(xiàn)問題。有了這些基本運(yùn)算的實現(xiàn),便可以有效地實現(xiàn)整個AES。九、AES的實現(xiàn)實現(xiàn)方法:軟件硬件軟件方法:基于算法描述基于查表
九、AES的實現(xiàn)1、基于算法描述的軟件實現(xiàn)AES的算法描述是一種程序化的描述,便于實現(xiàn)。AES的四種基本變換都比較簡單,便于實現(xiàn)。用C語言仿照算法描述,可方便地實現(xiàn)。這種實現(xiàn)的速度不是最快的!九、AES的實現(xiàn)2、基于查表的軟件實現(xiàn)用查表實現(xiàn)算法是一種高效的軟件設(shè)計方法。。時空折換是信息科學(xué)的基本策略。用查表實現(xiàn)算法,就是用空間換取時間。目前計算機(jī)系統(tǒng)的存儲空間大、而且便宜,為查表實現(xiàn)算法提供了物資基礎(chǔ)。九、AES的實現(xiàn)2、基于查表的軟件實現(xiàn)①S盒的實現(xiàn)實現(xiàn)S盒變換的最快方法是,直接計算出S盒的變換的結(jié)果,并存儲造表,使用時時直接查表。因為ByteSub變換是字節(jié)函數(shù),所以表的規(guī)模不大,只含256個元素。注意:解密時用的是逆S盒,因此共需要造兩個S盒表。S盒表逆S盒表
①列混淆變換MixColumn的實現(xiàn)b(x)=a(x)c(x)modx4+1寫成矩陣形式
b0=02
03
01
01
a0b1=01
02
03
01
a1b2=01
01
02
03
a2b3=03
01
01
02
a3主要運(yùn)算是GF(28)上的乘法GF(28)的非零元素構(gòu)成循環(huán)群,可通過加法和查表實現(xiàn)乘法。
九、AES的實現(xiàn)②列混淆變換MixColumn的實現(xiàn)注意:解密需要逆變換a(x)=b(x)d(x)modx4+1d(x)=0Bx3+0Dx2+09x+0E寫成矩陣形式
a0=0E
0B
0D
09
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024屆四川省成都石室天府高三開學(xué)檢測試題數(shù)學(xué)試題
- 基礎(chǔ)教程課件教學(xué)課件
- 2024年上??瓦\(yùn)從業(yè)資格證2024年考試題
- 2024年九江客運(yùn)從業(yè)資格證試題答案
- 2024年拉薩客車駕駛員從業(yè)資格證考試題庫答案
- 吉林省課件教學(xué)課件
- 2024年迪慶駕??荚嚳瓦\(yùn)從業(yè)資格證考試題庫
- 2024年材料員資格考試必考重點練習(xí)題庫及答案(共950題)
- 山東省泰安市東平高級中學(xué)2025屆數(shù)學(xué)高三上期末質(zhì)量跟蹤監(jiān)視模擬試題含解析
- 返貧工作人員合同
- 267條表情猜成語【動畫版】
- 江蘇省無錫市濱湖區(qū)2022-2023學(xué)年七年級上學(xué)期期中語文試題【含答案解析】
- 安徽省小餐飲食品安全承諾書
- 六年級上冊數(shù)學(xué)直接得數(shù)習(xí)題
- 青島版小學(xué)數(shù)學(xué)【三位數(shù)乘兩位數(shù)的筆算】教案
- 大學(xué)動植物檢疫考試(習(xí)題卷7)
- 譯林版九年級上下冊英語單詞表(含音標(biāo))
- 粗粒土大三軸試驗記錄
- 醫(yī)療技術(shù)臨床應(yīng)用動態(tài)評估制度
- 人教版四年級數(shù)學(xué)上冊練習(xí)八課件(含答案)
- 上海市大學(xué)生安全教育(2022級)學(xué)習(xí)通課后章節(jié)答案期末考試題庫2023年
評論
0/150
提交評論