第五章分組密碼(51-53)_第1頁(yè)
第五章分組密碼(51-53)_第2頁(yè)
第五章分組密碼(51-53)_第3頁(yè)
第五章分組密碼(51-53)_第4頁(yè)
第五章分組密碼(51-53)_第5頁(yè)
已閱讀5頁(yè),還剩188頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第五章分組密碼5.1分組密碼基本概念5.2數(shù)據(jù)加密標(biāo)準(zhǔn)DES5.3高級(jí)加密標(biāo)準(zhǔn)AES5.4國(guó)際數(shù)據(jù)加密算法IDEA5.5SMS4密碼算法5.6分組密碼的工作模式5.7分組密碼分析技術(shù)5.1分組密碼基本概念分組密碼是將明文消息劃分成長(zhǎng)為L(zhǎng)(L的值通常為64或128)的分組M各個(gè)長(zhǎng)為L(zhǎng)的分組分別在密鑰K的控制下變換成與明文組等長(zhǎng)的一組密文C5.1分組密碼基本概念對(duì)于分組密碼兩個(gè)設(shè)計(jì)原則是擴(kuò)散和混淆。擴(kuò)散原則:1)明文中的每一位影響密文中的許多位,這樣可以隱蔽明文的統(tǒng)計(jì)特性;2)使得密鑰的每一位影響密文的許多位分組密碼基本概念混淆原則:設(shè)計(jì)的密碼算法應(yīng)使得密鑰和明文以及密文之間的依賴(lài)關(guān)系變得盡可能復(fù)雜??梢允褂脧?fù)雜的非線(xiàn)性代替變換來(lái)達(dá)到較好的混淆效果。

擴(kuò)散例子分組密碼的基本要求分組密碼的原理—乘積密碼擴(kuò)散和混混(淆)亂兩種基本密碼操作的組合變換(乘積密碼)現(xiàn)代分組密碼都屬于乘積密碼,它們可分為:Feistel密碼:同時(shí)使用了可逆和不可逆的基本變換部件。非Feistel密碼:只使用了可逆的基本變換部件2023/2/47乘積密碼的實(shí)現(xiàn)—SPN網(wǎng)絡(luò)SPN網(wǎng)絡(luò)是由多重S變換和P變換組合成的變換網(wǎng)絡(luò)基本操作是S變換(代換)和P變換(置換),前者稱(chēng)為S盒,后者稱(chēng)為P盒S盒起到混亂作用,P盒起到擴(kuò)散的作用2023/2/48乘積密碼的實(shí)現(xiàn)—SPN網(wǎng)絡(luò)2023/2/49S變換起混淆的作用;P變換起擴(kuò)散的作用SPN結(jié)構(gòu)的性質(zhì)SPN具有雪崩效應(yīng):輸入(明文或密鑰)即使只有很小的變化,也會(huì)導(dǎo)致輸出有很大的變化2023/2/4102023/2/4112023/2/412Feistel網(wǎng)絡(luò)2023/2/413Feistel網(wǎng)絡(luò)Feistel網(wǎng)絡(luò)的結(jié)構(gòu)特點(diǎn)定義變換f稱(chēng)為對(duì)合變換(或稱(chēng)為自反變換),如果其反變換還是f。(對(duì)任何x滿(mǎn)足f(f(x))=x)我們看到,F(xiàn)eistel網(wǎng)絡(luò)的第(1)步是對(duì)合變換;Feistel網(wǎng)絡(luò)的第(2)步也是對(duì)合變換;Feistel網(wǎng)絡(luò)本身不是對(duì)合變換。Feistel網(wǎng)絡(luò)的這種結(jié)構(gòu)使它能夠組合成安全強(qiáng)度高的分組密碼算法。2023/2/414Feistel網(wǎng)絡(luò)Feistel網(wǎng)絡(luò)能否直接用作分組密碼算法?不能。首先,明文(L(0),R(0))和密文(L(1),R(1))之間有一個(gè)明顯的關(guān)系R(0)=

L(1),即密鑰只覆蓋了明文的一半。其次,設(shè)攻擊者Eve獲得了明文(L(0),R(0))和密文(L(1),R(1))。Eve知道R(1)=L(0)‘+’F(R(0),k),即F(R(0),k)=R(1)‘+’L(0)。在方程中,Eve僅僅不知道密鑰k。如果函數(shù)F設(shè)計(jì)得不好,就可能在方程中解出密鑰k,或猜測(cè)出密鑰k。這就是說(shuō),算法的安全性完全依賴(lài)于函數(shù)F,安全性依靠過(guò)于單薄。2023/2/415Feistel網(wǎng)絡(luò)多輪迭代與輪函數(shù):迭代型分組密碼就是用簡(jiǎn)單的、安全性弱的加密算法進(jìn)行多輪迭代以獲得強(qiáng)的安全性。單輪加密算法稱(chēng)為輪函數(shù),所用的密鑰稱(chēng)為單輪子密鑰。比如,把Feistel網(wǎng)絡(luò)作為輪函數(shù),將迭代型分組密碼的加密算法構(gòu)造如下:Feistel網(wǎng)絡(luò)→Feistel網(wǎng)絡(luò)→…Feistel網(wǎng)絡(luò)→左右對(duì)換。則(1)克服了Feistel網(wǎng)絡(luò)的安全性缺陷;(2)分組密碼是“加解密相似的”。5.2

數(shù)據(jù)加密標(biāo)準(zhǔn)DES1973年5月15日,美國(guó)國(guó)家標(biāo)準(zhǔn)局NBS(NationalBureauofStandards)開(kāi)始公開(kāi)征集標(biāo)準(zhǔn)加密算法,并公布了它的設(shè)計(jì)要求:(1)算法必須提供高度的安全性;(2)算法必須有詳細(xì)的說(shuō)明,并易于理解;(3)算法的安全性取決于密鑰,不依賴(lài)于算法;(4)算法適用于所有用戶(hù);(5)算法適用于不同應(yīng)用場(chǎng)合;(6)算法必須高效、經(jīng)濟(jì);(7)算法必須能被證實(shí)有效;(8)算法必須是可出口的。2023/2/4175.2

數(shù)據(jù)加密標(biāo)準(zhǔn)DES美國(guó)國(guó)家標(biāo)準(zhǔn)局(NBS)于1977年公布了由IBM公司研制的一種加密算法,并批準(zhǔn)把它作為非機(jī)要部門(mén)使用的數(shù)據(jù)加密標(biāo)準(zhǔn)(DataEncryptionStandard),簡(jiǎn)稱(chēng)DES。自從公布以來(lái),它一直超越國(guó)界成為國(guó)際上商用保密通信和計(jì)算機(jī)通信的最常用的加密算法。當(dāng)時(shí)規(guī)定DES的使用期為10年。后來(lái)美國(guó)政府宣布延長(zhǎng)它的使用期,其原因大概有兩條:一是DES尚未受到嚴(yán)重的威脅,二是一直沒(méi)有新的數(shù)據(jù)加密標(biāo)準(zhǔn)問(wèn)世。DES超期服役了很長(zhǎng)時(shí)間,在國(guó)際通信保密的舞臺(tái)上活躍了20年。2023/2/4185.2

數(shù)據(jù)加密標(biāo)準(zhǔn)DESDES扮演的突出角色首先,DES的結(jié)構(gòu)閃爍著人類(lèi)設(shè)計(jì)思想的精華,其優(yōu)點(diǎn)和缺點(diǎn)被密碼學(xué)界淋漓盡致地討論,供后人借鑒。舉例如下:(1)DES使用了S盒,而S盒現(xiàn)在已經(jīng)是幾乎所有分組密碼算法不可缺少的部件。(2)迭代分組密碼是分組密碼的主流設(shè)計(jì)。(3)DES輪函數(shù)結(jié)構(gòu)是Feistel網(wǎng)絡(luò),這種結(jié)構(gòu)現(xiàn)在已經(jīng)是輪函數(shù)的經(jīng)典結(jié)構(gòu)之一。2023/2/4195.2

數(shù)據(jù)加密標(biāo)準(zhǔn)DES(4)DES算法的第一個(gè)和最后一個(gè)部件沒(méi)有密鑰的參與,在已知明文攻擊之下不起任何安全性作用。以后設(shè)計(jì)的分組密碼都糾正了這個(gè)缺點(diǎn)。(5)DES的S盒設(shè)計(jì)細(xì)節(jié)始終沒(méi)有公布,因此被人們懷疑設(shè)有陷門(mén)(即密碼設(shè)計(jì)者為自己預(yù)留的破譯通道)。這種不透明的設(shè)計(jì)顯然會(huì)影響其商用前景。這一缺點(diǎn)引出了商用分組密碼設(shè)計(jì)的一個(gè)準(zhǔn)則“透明性”,即密碼的使用者能夠確知該密碼的安全強(qiáng)度。

2023/2/4205.2

數(shù)據(jù)加密標(biāo)準(zhǔn)DES其次,對(duì)DES的各種攻擊方法紛紛被提出。窮舉搜索仍然是對(duì)分組密碼實(shí)用攻擊的主角。但進(jìn)入90年代后,基于數(shù)學(xué)分析的攻擊方法逐漸興起,如以色列密碼專(zhuān)家Shamir等人提出了差分密碼分析,日本密碼學(xué)家Matsui等人提出了線(xiàn)性密碼分析,這些數(shù)學(xué)攻擊方法都首先被用于破譯DES,并且可以說(shuō)取得了局部的成功。(比如,有人在個(gè)人計(jì)算機(jī)上用差分密碼分析方法,幾分鐘就破譯了8輪DES(標(biāo)準(zhǔn)的DES算法為16輪迭代)。又比如,據(jù)稱(chēng)使用243個(gè)明文/密文對(duì)就可以由線(xiàn)性密碼分析方法破譯DES。243已經(jīng)不是天文數(shù)字了,據(jù)稱(chēng)數(shù)十臺(tái)工作站協(xié)同工作,經(jīng)過(guò)十多天就可完成。

)2023/2/4215.2

數(shù)據(jù)加密標(biāo)準(zhǔn)DES為抵抗對(duì)DES的各種攻擊,產(chǎn)生了強(qiáng)化版的三重DES。三重DES的安全強(qiáng)度高于DES,但似乎不夠簡(jiǎn)潔。2000年5月,美國(guó)國(guó)家標(biāo)準(zhǔn)技術(shù)研究所(NIST)最終確定了DES的替代標(biāo)準(zhǔn)AES(AdvancedEncryptionStandard),才使DES基本上完成了自己的歷史使命。AES的算法名稱(chēng)是Rijndael。5.2.1DES加密算法概述DES的加密過(guò)程可簡(jiǎn)單描述為三個(gè)階段:2023/2/423DES的計(jì)算部件

初始置換IP與其逆置換IP

-1IP是對(duì)64比特課文進(jìn)行位置重排。IP

-1是IP的反變換。設(shè)m=(m1,m2,…,m64);c=(c1,c2,…,c64);使得IP(m)=c,或者IP-1(c)=m。則c1=m58,c2=m50,…,c64=m7。2023/2/424DES的計(jì)算部件

下表詳細(xì)給出IP(m)的下標(biāo)序號(hào)與m的下標(biāo)序號(hào)的對(duì)應(yīng)關(guān)系,其中IP(m)的下標(biāo)按順序排列。2023/2/425DES的計(jì)算部件

下表詳細(xì)給出IP

-1(c)的下標(biāo)序號(hào)與c的下標(biāo)序號(hào)的對(duì)應(yīng)關(guān)系,其中IP

-1(c)的下標(biāo)按順序排列。2023/2/426DES的計(jì)算部件

擴(kuò)充變換E

擴(kuò)充變換E的作用是將32比特的課文膨脹為48比特。設(shè)

m=(m1,m2,…,m32);c=(c1,c2,…,c48);使得E(m)=c。則c1=m32,c2=m1,…,c48=m1。下表詳細(xì)給出E(m)的下標(biāo)序號(hào)與m的下標(biāo)序號(hào)的對(duì)應(yīng)關(guān)系,其中E(m)的下標(biāo)按順序排列。(注意:下表的中間4列恰好是m的第1~第32比特)2023/2/427DES的計(jì)算部件

E:2023/2/428DES的計(jì)算部件

8個(gè)S盒S1、S2、…、S8

每個(gè)S盒Sj都是將6比特的課文縮減為4比特;8個(gè)S盒總共將48比特的課文縮減為32比特。(請(qǐng)不要忘記S盒的作用是獲得高度的非線(xiàn)性)設(shè)一個(gè)S盒的輸入為6比特串m=(m1,m2,m3,m4,m5,m6),輸出為4比特串c=(c1,c2,c3,c4)。將比特串m1m6、m2m3m4m5、c1c2c3c4都用10進(jìn)制數(shù)來(lái)表示,則在表中位于m1m6行m2m3m4m5列的數(shù)就是S盒的輸出c1c2c3c4

。2023/2/429S1

0123456789101112131415014413121511831061259071015741421311061211953824114813621115129731050315128249175113141006132023/2/430S20123456789101112131415015181461134972131205101313471528141201106911520147111041315812693215313810131542116712051492023/2/431S30123456789101112131415010091463155113127114281137093461028514121115121364981530111212510147311013069874151431152122023/2/432S40123456789101112131415071314306910128511124151138115615034721211014921069012117131513145284331506101138945111272142023/2/433S50123456789101112131415021241710116853151301491141121247131501510398624211110137815912563014311812711421361509104532023/2/434S60123456789101112131415012110159268013341475111101542712956113140113829141552812370410113116343212951510111417608132023/2/435S70123456789101112131415041121415081331297510611130117491101435122158621411131237141015680592361113814107950151423122023/2/436S80123456789101112131415013284615111109314501271115138103741256110149227114191214206101315358321147410813151290356112023/2/437DES的計(jì)算部件

我們發(fā)現(xiàn),每一個(gè)S盒的每一行數(shù)字都是0~15的一個(gè)排列。換句話(huà)說(shuō),每一個(gè)S盒,當(dāng)輸入值m1m6固定時(shí),輸出值c1c2c3c4都是輸入值m2m3m4m5的可逆函數(shù)。為什么要這樣設(shè)計(jì)?為了使擴(kuò)充變換E→8個(gè)S盒(32比特→32比特)整體是一個(gè)可逆函數(shù),必須使得8個(gè)S盒總體輸出是8個(gè)S盒總體輸入的第2~5、8~11、14~17、20~23、26~29、32~35、38~41、44~47比特的可逆函數(shù)。(回顧擴(kuò)充變換E:擴(kuò)充變換E的作用是將32比特的課文膨脹為48比特,且擴(kuò)充變換后的第1、6、7、12、13、18、19、24、25、30、31、36、37、42、43、48比特為擴(kuò)充部分。)2023/2/438DES的計(jì)算部件

置換P:將32比特的課文改變位置順序。見(jiàn)下表。2023/2/439DES的計(jì)算部件

32比特輸入/32比特輸出的鑰控非線(xiàn)性函數(shù)F鑰控非線(xiàn)性函數(shù)記為Y=F(X,k),其中X

32為比特輸入,k為48比特密鑰,Y為32比特輸出。F是擴(kuò)充變換E、群加密、8個(gè)S盒、置換P的組合,具體的步驟如下。(1)X為32比特輸入。(2)對(duì)X進(jìn)行擴(kuò)充變換E,得到48比特課文U。(3)計(jì)算U‘+’k=V,其中k是48比特密鑰。(4)將V分為8段,分別進(jìn)行8個(gè)S盒變換,得到32比特課文W。(5)對(duì)W進(jìn)行置換P,得到32比特輸出Y。2023/2/4402023/2/441輪函數(shù):輪函數(shù)是Feistel網(wǎng)絡(luò),輸入、輸出均為64比特:2023/2/442DES是迭代型分組密碼,明文分組長(zhǎng)度為64比特。加密算法步驟如下。(1)對(duì)明文分組進(jìn)行初始置換IP。(2)進(jìn)入16輪迭代,輪函數(shù)就是如前所述的Feistel網(wǎng)絡(luò),其中第m輪迭代所用的子密鑰為k(m),m=1~16;第16輪迭代是特殊的一輪,只進(jìn)行“覆蓋”,不進(jìn)行“左右交換”。(3)進(jìn)行初始置換IP的逆變換IP-1。2023/2/444DESDES的用戶(hù)密鑰(密鑰種子)是64比特長(zhǎng),而其中的第8、16、24、32、40、48、56、64比特是奇偶校驗(yàn)位。因此,真正有效的用戶(hù)密鑰(密鑰種子)是56比特長(zhǎng)。然而DES的加密密鑰總長(zhǎng)度是48×16=766比特。因此,56比特的用戶(hù)密鑰需要擴(kuò)展為48×16=768比特的加密密鑰。密鑰擴(kuò)展算法描述如下。DES加密算法的密鑰擴(kuò)展算法需要用到兩個(gè)縮減變換PC-1和PC-2,其中PC-1是將64比特長(zhǎng)的串縮減為56比特;PC-2是將56比特長(zhǎng)的串縮減為48比特。2023/2/445

PC-1:2023/2/446PC-2:2023/2/447密鑰擴(kuò)展算法還需要用到循環(huán)左移變換LSj,j=1~16。其中LSj表示生成第j輪子密鑰k(j)時(shí)的循環(huán)左移變換。這里規(guī)定:當(dāng)j=1,2,9,16時(shí),LSj為循環(huán)左移1位;當(dāng)j=3~8或10~15時(shí),LSj為循環(huán)左移2位。每一個(gè)循環(huán)左移變換的輸入和輸出都是28比特串。

2023/2/4482023/2/449DES的解密DES的解密算法與加密算法相同,也是IP→16輪迭代(最后一輪是特殊輪)→IP-1。僅僅各輪迭代所用的子密鑰不同。若加密算法各輪迭代所用的子密鑰為{k(1),k(2),~,k(16)},則解密算法各輪迭代所用的子密鑰為{k(16),k(15),~,k(1)}。2023/2/451對(duì)DES評(píng)價(jià)的現(xiàn)有結(jié)果DES簡(jiǎn)單快速,所使用的計(jì)算部件都是計(jì)算機(jī)的最常用操作。DES是加解密相似的。DES加密算法的第一個(gè)計(jì)算部件是IP,最后一個(gè)計(jì)算部件是IP-1,都沒(méi)有密鑰的參與。在已知明文攻擊之下,IP和IP-1都可以剝?nèi)?,沒(méi)有任何安全性功能。DES的S盒的設(shè)計(jì)細(xì)節(jié)沒(méi)有公開(kāi)。DES的用戶(hù)密鑰長(zhǎng)度(有效長(zhǎng)度)是56比特,對(duì)于越來(lái)越快速的窮舉搜索攻擊,安全強(qiáng)度似乎已經(jīng)不夠了。2023/2/452設(shè)DES的加密算法為y=DES(x,k),其中k為密鑰種子,則當(dāng)x和k都取補(bǔ)時(shí),函數(shù)值取補(bǔ)。對(duì)于密鑰種子k,如果DES-1(·,k)=DES(·,k),則稱(chēng)k為一個(gè)弱密鑰。根據(jù)DES的密鑰擴(kuò)展算法,不難看出有4個(gè)弱密鑰:k=(0,…,0);k=(1,…,1);k=(0,…,0,1,…,1);k=(1,…,1,0,…,0)。如果有兩個(gè)密鑰種子k1和k2,使得DES(·,k1)=DES(·,k2),則稱(chēng)(k1,k2)為一個(gè)半弱密鑰對(duì)。已經(jīng)發(fā)現(xiàn)DES有12個(gè)半弱密鑰對(duì)。

(以上三條說(shuō)明,明文、密鑰、密文之間存在一些簡(jiǎn)單的關(guān)系,隨機(jī)性不足)2023/2/453研究表明,要使密文每個(gè)比特都是明文所有比特和密鑰所有比特的復(fù)合函數(shù),需要將DES的輪函數(shù)進(jìn)行5輪以上的迭代。人們用χ2檢驗(yàn)證明,用隨機(jī)密鑰種子并8輪迭代,就能使明文和密文基本上不相關(guān)。從這一角度來(lái)看,DES算法的16輪迭代是足夠了。2DESMeet-in-the-middleattack!Effectivekeylengthisjust57bits!EXDX1X2X256…m1m2m256…Tryallpossiblekeys=?Forkeylengthn,

totalworkis“only”

2n+2n=2n+1mm三重DES加密加密:C=Ek1[Dk2[Ek1[P]]]解密:P=Dk1[Ek2[Dk1[C]]]三重DES加密

兩個(gè)密鑰的三重DES稱(chēng)為加密-解密-加密方案,簡(jiǎn)記為EDE(encrypt-decrypt-encrypt)。此方案已在ANSIX9.17和ISO8732標(biāo)準(zhǔn)中采用,并在保密增強(qiáng)郵遞(PEM)系統(tǒng)中得到利用。破譯它的窮舉密鑰搜索量為21125×1035量級(jí),而用差分分析破譯也要超過(guò)1052量級(jí)。此方案仍有足夠的安全性。三個(gè)密鑰的三重DES已在因特網(wǎng)的許多應(yīng)用(如PGP和S/MIME)中被采用2023/2/463AES-分組密碼Rijndael高級(jí)加密標(biāo)準(zhǔn)AES1997年4月5日:NIST發(fā)起征集AES(AdvancedEncryptionStandard)算法,要求具有128比特的分組長(zhǎng)度,并支持128、192和256比特的密鑰長(zhǎng)度,且要求AES能在全世界范圍內(nèi)免費(fèi)使用1998年8月20日:NIST召開(kāi)了第一次AES候選會(huì)議,并公布了15個(gè)AES候選算法。后來(lái),NIST又篩選出5個(gè)AES候選算法(MARS,RC6,Rijindael,SERPENT,Twofish)2000年10月:NIST宣布由比利時(shí)的密碼專(zhuān)家JoanDaemen博士和VincentRijmen博士開(kāi)發(fā)的Rijndael算法做為AES的最終算法2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院64AES的評(píng)估準(zhǔn)則安全性評(píng)估準(zhǔn)則中最重要因素,包括下述要點(diǎn):算法抗密碼分析的強(qiáng)度穩(wěn)定的數(shù)學(xué)基礎(chǔ)算法輸出的隨機(jī)性與其他候選算法比較的相對(duì)安全性代價(jià)主要包括:許可要求,在各種平臺(tái)上的計(jì)算效率(速度)和內(nèi)存空間的需求算法和實(shí)現(xiàn)特性主要包括:靈活性、硬件和軟件適應(yīng)性、算法的簡(jiǎn)單性等2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院65AES的設(shè)計(jì)者JoanDaemen(1965-)

:比利時(shí)密碼學(xué)家。還參與設(shè)計(jì)設(shè)計(jì)了MMB,Square,SHARK,NOEKEON,3-Way,和

BaseKing等分組密碼1988年,Daemen畢業(yè)于魯汶大學(xué)(KatholiekeUniversiteitLeuven)土木工程系.隨后參加了COSIC研究小組并進(jìn)行分組密碼,流密碼和密碼散列函數(shù)的設(shè)計(jì)和分析工作1995年Daemen完成了他的PhD2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院66VincentRijmen(1970-),比利時(shí)密碼學(xué)家。也是hash函數(shù)WHIRLPOOL和分組密碼Anubis,KHAZAD,Square,NOEKEON和SHARK的設(shè)計(jì)者之一1993年獲得魯汶大學(xué)電子工程專(zhuān)業(yè)學(xué)位1997年獲得魯汶大學(xué)ESAT/COSIC實(shí)驗(yàn)室的博士學(xué)位,并繼續(xù)在實(shí)驗(yàn)室做博士后工作RIJNDAEL的數(shù)學(xué)基礎(chǔ)有限域GF(28);系數(shù)在GF(28)上的多項(xiàng)式。群.環(huán).域群的定義: 一些數(shù)字組成的集合一個(gè)加法運(yùn)算,運(yùn)算結(jié)果屬于此集合(封閉性)服從結(jié)合律。有單位元,逆元如果是可交換的,則成為abelian群環(huán)環(huán):

abelian群,及一個(gè)乘法運(yùn)算滿(mǎn)足結(jié)合律與加法的分配律如果加法滿(mǎn)足交換律,則稱(chēng)交換環(huán)例:整數(shù)modN(foranyN)域域:abelian加群abelian乘群(ignoring0)

環(huán)例:integersmodP(P為素?cái)?shù))Galois域如果p是素?cái)?shù),則模運(yùn)算modulop

形成GaloisFieldmodulop.記為:GF(p)許多加密運(yùn)算需要指數(shù)運(yùn)算,GF(p)中的指數(shù)運(yùn)算b=aemodp重復(fù)乘法運(yùn)算eg.75=7.7.7.7.7

計(jì)算指數(shù)的快速有效算法思想:重復(fù)平方運(yùn)算計(jì)算最終結(jié)果的乘法運(yùn)算2023/2/472分組密碼Rijndael有限域GF(28)

GF(28)上的元素通常采用字節(jié)值來(lái)表示。但為了更方便地運(yùn)算,此處對(duì)GF(28)上的元素采用傳統(tǒng)的多項(xiàng)式表示法。由b7b6b5b4b3b2b1b0構(gòu)成的一個(gè)字節(jié)b看成系數(shù)在{0,1}中的多項(xiàng)式:b7x7+b6x6+b5x5+b4x4+b3x3+b2x2+b1x+b0。在多項(xiàng)式表示中,GF(28)上兩個(gè)元素的和仍然是一個(gè)次數(shù)不超過(guò)7的多項(xiàng)式,其系數(shù)是原來(lái)兩個(gè)元素對(duì)應(yīng)系數(shù)的模2加(比特異或)。要計(jì)算GF(28)上的乘法,必須先確定一個(gè)GF(2)上的8次不可約多項(xiàng)式;GF(28)上兩個(gè)元素的乘積就是這兩個(gè)多項(xiàng)式的重模積。(次數(shù)模此8次不可約多項(xiàng)式,系數(shù)模2)。2023/2/473分組密碼Rijndael此8次不可約多項(xiàng)式稱(chēng)為模多項(xiàng)式。對(duì)于RIJNDAEL密碼,模多項(xiàng)式確定為m(x)=x8+x4+x3+x+1

。模多項(xiàng)式的二進(jìn)制表示為9比特100011011,十六進(jìn)制表示為“11B”。以下是一個(gè)乘法的例子:

(x6+x4+x2+x+1)×(x7+x+1)=x7+x6+1(mod2,modm(x));或者“01010111”ד10000011”=“11000001”;或者“57”ד83”=“C1”。舉例(x6+x4+x2+x+1)(x7+x+1)=x13+x11+x9+x8+x7+x7+x5+x3+x2+x+x6+x4+x2+x+1=x13+x11+x9+x8+x6+x5+x4+x3+x+1(x13+x11+x9+x8+x6+x5+x4+x3+1)modm(x)=x7+x6+11000110111010110111100110001101110000001100110001101111000001(x6+x4+x2+x+1)·(x7+x+1)=x7+x6+12023/2/475分組密碼Rijndael另外,對(duì)于u∈GF(28),u≠0,計(jì)算u的乘法逆元v可直接采用GF(2)上多項(xiàng)式的歐幾里德擴(kuò)充算法得u(x)u(x)+m(x)h(x)=1(mod2),或u(x)u(x)=1(mod2,modm(x)),其中u=u(x),v=v(x)。所計(jì)算出的v就是u的乘法逆元,即u(x)×v(x)=1或者u×v=1。

2023/2/476分組密碼Rijndael系數(shù)在GF(28)上的多項(xiàng)式

4個(gè)字節(jié)的向量可以表示為系數(shù)在GF(28)上的次數(shù)小于4的多項(xiàng)式。多項(xiàng)式的加法就是對(duì)應(yīng)系數(shù)相加;換句話(huà)說(shuō),多項(xiàng)式的加法就是4字節(jié)向量的逐比特異或。多項(xiàng)式的乘法運(yùn)算必須要取模M(x)=x4+1,這樣使得次數(shù)小于4的多項(xiàng)式的乘積仍然是一個(gè)次數(shù)小于4的多項(xiàng)式。即(a3x3+a2x2+a1x+a0)×(b3x3+b2x2+b1x+b0)=c3x3+c2x2+c1x+c0

,2023/2/477分組密碼Rijndael其中c0=a0b0+a1b3+a2b2+a3b1;c1=a0b1+a1b0+a2b3+a3b2;c2=a0b2+a1b1+a2b0+a3b3;c3=a0b3+a1b2+a2b1+a3b0。注意所有的加法和乘法運(yùn)算都是在域GF(28)中的??梢詫⑸鲜鲇?jì)算表示為

2023/2/478分組密碼Rijndael定理

系數(shù)在GF(28)上的多項(xiàng)式b3x3+b2x2+b1x+b0是模(x4+1)可逆的,當(dāng)且僅當(dāng)以下矩陣在GF(28)上可逆。2023/2/479分組密碼RijndaelRIJNDAEL的設(shè)計(jì)標(biāo)準(zhǔn)RIJNDAEL密碼的設(shè)計(jì)力求滿(mǎn)足以下3條標(biāo)準(zhǔn):(1)抗所有已知的攻擊。(2)在多個(gè)平臺(tái)上速度快,編碼緊湊。(3)設(shè)計(jì)簡(jiǎn)單。2023/2/480分組密碼RijndaelRIJNDAEL的算法說(shuō)明

RIJNDAEL的明文分組稱(chēng)為狀態(tài),所有的操作都在狀態(tài)之間進(jìn)行。狀態(tài)可以用以字節(jié)為元素的矩陣陣列圖表示,該陣列有4行,列數(shù)記為Nb,Nb等于分組長(zhǎng)度除以32。密鑰種子(在原文中稱(chēng)為密碼密鑰CipherKey)類(lèi)似地用一個(gè)以字節(jié)為元素的矩陣陣列圖表示,該陣列有4行,列數(shù)記為Nk,Nk等于分組長(zhǎng)度除以32。2023/2/481分組密碼Rijndael下表就是Nb=6的狀態(tài)和Nk=4的密鑰種子。一個(gè)明文分組按a00a10a20a30a01a11a21a31…的順序影射到狀態(tài)陣列中。同理,密鑰種子按k00k10k20k30k01k11k21k31…的順序影射到密鑰種子陣列中。

a00

a01a02a03a04a05a10a11a12a13a14a15a20a21a22a23a24a25a30a31a32a33a34a35k00

k01k02k03k10k11k12k13k20k21k22k23k30k31k32k332023/2/482分組密碼Rijndael

輪函數(shù)

RIJNDAEL的輪函數(shù)由四個(gè)不同的計(jì)算部件所組成,分別是:字節(jié)代替(ByteSub);行移位(ShiftRow);列混合(MixColumn);加密鑰(AddRoundKey)。1.字節(jié)代替(ByteSub)是將狀態(tài)陣列的每個(gè)字節(jié)做相同的變換,該變換由以下兩個(gè)子變換所合成:2023/2/483(1)首先,將字節(jié)看作GF(28)上的元素,映射到自己的乘法逆;0字節(jié)影射到它自身。(2)其次,將字節(jié)看作GF(2)上的8維向量,做如下的(GF(2)上的;可逆的)仿射變換:

2023/2/484以上兩個(gè)子變換所合成的字節(jié)代替采用一個(gè)8比特輸入/8比特輸出的S盒來(lái)實(shí)現(xiàn)。2.行移位(SHiftRow)是將狀態(tài)陣列的各行進(jìn)行循環(huán)移位,不同狀態(tài)行的位移量不同。第0行不移動(dòng),第一行循環(huán)左移C1個(gè)字節(jié),第二行循環(huán)左移C2個(gè)字節(jié),第三行循環(huán)左移C3個(gè)字節(jié)。位移量(C1,C2,C3)的選取與Nb有關(guān),當(dāng)Nb=4或6時(shí)一般取(C1,C2,C3)=(1,2,3)。

3.列混合(MixColumn)是將狀態(tài)陣列的每個(gè)列視為系數(shù)在GF(28)上、次數(shù)小于4的多項(xiàng)式,被同一個(gè)固定的多項(xiàng)式c(x)進(jìn)行模x4+1乘法。當(dāng)然要求c(x)是模x4+1可逆的多項(xiàng)式,否則列混合變換就是不可逆的,因而會(huì)使不同的明文分組具有相同的對(duì)應(yīng)密文分組。RIJNDAEL的設(shè)計(jì)者所給出的c(x)為(系數(shù)用16進(jìn)制數(shù)表示):

2023/2/485c(x)='03'x3+'01'x2+'01'x+'02'c(x)是與x4+1互素的,因此是模x4+1可逆的。由前面的討論知,將狀態(tài)陣列的每個(gè)列視為GF(28)上的4維向量,列混合運(yùn)算可表示為GF(28)上的可逆線(xiàn)性變換:2023/2/486這個(gè)運(yùn)算需要做GF(28)上的乘法。但由于所乘的因子是三個(gè)固定的元素02、03、01,所以這些乘法運(yùn)算仍然是比較簡(jiǎn)單的(注意到乘法運(yùn)算所使用的模多項(xiàng)式為m(x)=x8+x4+x3+x+1)。設(shè)一個(gè)字節(jié)為b=(b7b6b5b4b3b2b1b0),則bב01’=b;bב02’=(b6b5b4b3b2b1b00)+(000b7b70b7b7);bב03’=bב01’+b×’02’。(請(qǐng)注意,加法為取模2的加法,即逐比特異或)2023/2/4874.加密鑰(AddRoundKey)是將單輪子密鑰陣列簡(jiǎn)單地與課文陣列進(jìn)行比特異或。這里當(dāng)然要求子密鑰陣列與課文陣列是同階的。

綜上所述,組成RIJNDAEL輪函數(shù)的計(jì)算部件簡(jiǎn)潔快速,功能互補(bǔ)。輪函數(shù)的偽C代碼如下:Round(State,RoundKey){ByteSub(State)ShiftRow(State)MixColumn(State)AddRoundKey(State,RoundKey)}

AES的分組AES首先將明文按字節(jié)分成列組狀態(tài)(State):密碼運(yùn)算的中間結(jié)果稱(chēng)為狀態(tài)2023/2/488a00a01a02a03a10a11a12a13a20a21a22a23a30a31a32a331.字節(jié)代替(ByteSub)

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院892023/2/4902.行移位(SHiftRow)2023/2/4913.列混合(MixColumn)2023/2/4922023/2/4934.加密鑰(AddRoundKey)2023/2/494結(jié)尾輪是特殊輪,輪函數(shù)與前面各輪不同,將MixColumn這一步去掉。即為FinalRound(State,RoundKey){ByteSub(State)ShiftRow(State)AddRoundKey(State,RoundKey)}在以上的偽C代碼記法中,Round、FinalRound、ByteSub、ShiftRow、MixColumn、AddRoundKey等函數(shù)都在指針State、RounKey所指向的陣列上進(jìn)行運(yùn)算。2023/2/495分組密碼Rijndael迭代的輪數(shù)記為Nr,Nr與Nb和Nk有關(guān),其中Nb是明文陣列的列數(shù),Nk是密鑰種子陣列的列數(shù)。下表給出了Nr與Nb和Nk的關(guān)系。NrNb=4Nb=6Nb=8Nk=4101214Nk=6121214Nk=8141414子密鑰生成算法包括兩個(gè)部分:密鑰擴(kuò)展和輪密鑰選取密鑰比特總數(shù)=分組長(zhǎng)度×(輪數(shù)+1)分組長(zhǎng)度=128和輪數(shù)=10時(shí),輪密鑰長(zhǎng)度為128×(10+1)=1408比特AES首先將種子密鑰輸入到一個(gè)4*4矩陣中,每列組成1個(gè)字2023/2/496K0K4K8K12K1K5K9K13K2K6K10K14K3K7K11K15w[0]w[1]w[2]w[3]密鑰擴(kuò)展2023/2/497w[4i-4]w[4i-3]w[4i-2]w[4i-1]w[4i]w[4i+1]w[4i+2]w[4i+3]

TT函數(shù)由3部分組成:字循環(huán)、字代替和輪常量異或2023/2/498w[4i-1]SubBytesByteRote+RconT(w[4i-1])+w[4i-4]w[4i]2023/2/499函數(shù)ByteRote(a,b,c,d)=(b,c,d,a),即是輸入字的1字節(jié)循環(huán)K0,0K0,1K0,2K0,3K1,0K1,1K1,2K1,3K2,0K2,1K2,2K2,3K3,0K3,1K3,2K3,3ByteRoteK0,0K0,1K0,2K1,3K1,0K1,1K1,2K2,3K2,0K2,1K2,2K3,3K3,0K3,1K3,2K0,3輪常量Rcon的右邊3個(gè)字節(jié)總是0,記為Rcon[j]=(RC[j],0,0,0)j12345678910RC[j](16進(jìn)制)01020408102040801B36RC[j]的構(gòu)造:RC[1]=0x01;RC[j]=2*RC[j-1];j=2,3,4,5,6,7,8,9,10密鑰的使用:2023/2/4100w0w1w2w3w4w5w6w7w8w9w10輪密鑰0輪密鑰1輪密鑰22023/2/4101針對(duì)Nk≤6,擴(kuò)展算法為KeyExpansion(byteKey[4*Nk]W[Nb*(Nr+1)]){For(j=0;j<Nk;j++)W[j]=(Key[4*j],Key[4*j+1],Key[4*j+2],Key[4*j+3];For(j=Nk;j<Nb*(Nr+1);j++){temp=W[j-1];if(j%Nk==0)temp=SubByte(RotByte(temp))^Rcon[j/Nk];W[j]=W[j-Nk]^temp;}}2023/2/4102針對(duì)Nk>6,擴(kuò)展算法為KeyExpansion(byteKey[4*Nk]W[Nb*(Nr+1)]){For(j=0;j<Nk;j++)W[j]=(Key[4*j],Key[4*j+1],Key[4*j+2],Key[4*j+3];For(j=Nk;j<Nb*(Nr+1);j++){temp=W[j-1];if(j%Nk==0)temp=SubByte(RotByte(temp))^Rcon[j/Nk];elseif(j%Nk==4)temp=SubByte(temp);W[j]=W[j-Nk]^temp;}}2023/2/4103解釋?zhuān)簀%Nk==表示j除以Nk的余數(shù)。SubByte(W)表示輸出字的每一個(gè)字節(jié)都是用RIJNDAEL的S盒作用到輸入字W的對(duì)應(yīng)字節(jié)所得到的。RotByte(W)表示1字節(jié)的循環(huán)移位。Rcon[j/Nk]為輪常數(shù)字,其值為(字節(jié)用16進(jìn)制表示,同時(shí)理解為GF(28)上的元素):Rcon[1]=(01,00,00,00)Rcon[j]=((02)j-1,00,00,00);j=2,3,…。^表示逐比特異或。AES的等價(jià)解密AES的加解密過(guò)程不相同,需要使用相應(yīng)變換的逆變換,并且各個(gè)變換的使用順序也不一樣:逆行移位逆字節(jié)代換輪密鑰加逆列混合這使得AES的加解密使用不同的軟件和硬件模塊能否使得加解密使用相同的順序哪?2023/2/4104等價(jià)的解密過(guò)程交換逆行移位和逆字節(jié)代換逆行移位影響字節(jié)的順序,但不改變自己的內(nèi)容,同時(shí)也不以自己的內(nèi)容決定它的變換逆字節(jié)代換影響自己的內(nèi)容,但不改變字節(jié)的順序,同時(shí)也不依賴(lài)字節(jié)的順序來(lái)進(jìn)行它的變換因此,兩個(gè)操作可以交換交換輪密鑰加和逆列混合輪密鑰加和逆列混合都不改變矩陣中字節(jié)的順序:2023/2/4105例子所以我們得到如下的等價(jià)變形:2023/2/4106輪密鑰求逆等價(jià)操作2023/2/4107逆列混合+AddRoundKey輪密鑰加狀態(tài)矩陣逆列混合+AddRoundKey輪密鑰加狀態(tài)矩陣輪密鑰逆列混合2023/2/4108分組密碼RijndaelRIJNDAEL的解密算法

RIJNDAEL不是加解密相似的。RIJNDAEL密碼的設(shè)計(jì)顯然忽視了解密算法的性能。其中的原因有兩個(gè):一是解密算法性能的重要性遠(yuǎn)不如加密算法性能;在分組密碼的許多應(yīng)用中,解密算法是不使用的,比如消息認(rèn)證碼(MAC)、消息加密的CFB模式或OFB模式等。二是忽視解密算法性能會(huì)使加密算法的性能設(shè)計(jì)更加容易。AddRoundKeyInversemixcolsAddroundkeyInversesubbytesInverseshiftrowsAddroundkeyMixColumnsShiftRowsAddRoundKeyInversesubbytesInverseshiftrowsInversemixcolsAddroundkeyInversesubbytesInverseshiftrowsAddroundkeySubstituteBytesAddroundkeyShiftRowsSubstituteBytesAddroundkeySubstituteBytesShiftRowsMixColumnsExpandKey......w[0,3]w[4,7]w[36,39]w[40,43]PlaintextPlaintextCiphertextCiphertextRound1Round9Round10Round1Round9Round10國(guó)際數(shù)據(jù)加密標(biāo)準(zhǔn)IDEA國(guó)際數(shù)據(jù)加密算法IDEA(InternationalDataEncryptionAlgorithm):1990年由瑞士蘇黎世聯(lián)邦工業(yè)大學(xué)的來(lái)學(xué)嘉和JamesMessey提出,1992年最終完成128位密鑰加密64位明文分組,窮舉分析需要1038次試探,目前尚無(wú)有效破譯方法密碼強(qiáng)度:擾亂:密文以復(fù)雜交錯(cuò)的方式依賴(lài)明文和密鑰擴(kuò)散:每個(gè)明文比特都應(yīng)該影響每個(gè)密文比特2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院110IDEA設(shè)計(jì)思想:基于“相異代數(shù)群上的混合運(yùn)算”

通過(guò)連續(xù)使用三個(gè)“不相容”的群運(yùn)算作用于兩個(gè)16比特子塊來(lái)獲得算法用硬件和軟件實(shí)現(xiàn)都很容易,比DES在實(shí)現(xiàn)上快得多

近年來(lái)提出的分組密碼算法中的一個(gè)很成功的方案,已在PGP中采用2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院111來(lái)學(xué)嘉來(lái)學(xué)嘉(1954-)—國(guó)際著名密碼學(xué)家。瑞士籍華人1978-1982,西安電子科技大學(xué)本科;1982-1984,西安電子科技大學(xué)信息安全研究所碩士研究生;1985到瑞士ETHZurich,SignalandInformationProcessingLaboratory;1988-1992在該實(shí)驗(yàn)室攻讀博士并取得博士學(xué)位主要工作:密碼學(xué),IDEA密碼的共同發(fā)明者(連同J.L.Massey教授)。他的兩位導(dǎo)師是著名密碼學(xué)家肖國(guó)鎮(zhèn)教授和瑞士ETH的Massey教授1992年,博士論文“OntheDesignandSecurityofBlockCiphers”給出了IDEA密碼算法現(xiàn)任上海交通大學(xué)計(jì)算機(jī)科學(xué)與工程系教授2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院112IDEA的三種基本操作IDEA的基本操作是將兩個(gè)16位的值映射成一個(gè)16位的值異或,⊕整數(shù)模216(65536)加?整數(shù)模216+1(65537)乘⊙例如:0000000000000000⊙1000000000000000 =1000000000000001因?yàn)椋?16x215mod(216+1)=215+12023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院113三種運(yùn)算的代數(shù)結(jié)構(gòu)三種運(yùn)算都是交換群運(yùn)算(Abel群運(yùn)算)。運(yùn)算⊕的單位元是(0000000000000000)。運(yùn)算?的單位元是(0000000000000000)。運(yùn)算⊙的單位元是(0000000000000001)。關(guān)于群運(yùn)算⊕,任何非單位元的次數(shù)都是2。關(guān)于群運(yùn)算?,非單位元的次數(shù)有2,22,23,…,216。關(guān)于群運(yùn)算⊙,非單位元的次數(shù)有2,22,23,…,216。三種運(yùn)算的密碼學(xué)性質(zhì)設(shè)z=x⊕y。則z的一個(gè)比特僅僅依賴(lài)于x和y在相同位置上的比特值,毫無(wú)擴(kuò)散能力。設(shè)z=x?y。則z的一個(gè)比特依賴(lài)于x和y在相同位置及以下位置上的比特值,具有單向擴(kuò)散能力。設(shè)z=x⊙y。則z的一個(gè)比特依賴(lài)于x和y在所有位置上的比特值,具有雙向擴(kuò)散能力。⊕與?的結(jié)構(gòu)差異很大;?與⊙雖然具有同構(gòu)關(guān)系,但這種同構(gòu)關(guān)系卻表現(xiàn)為一種“離散對(duì)數(shù)”的關(guān)系。將它們組合在一起使用,可以破壞任何一種群結(jié)構(gòu)。IDEA加密2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院116

IDEA輪函數(shù)2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院117X1X2X3X4Z1(i)+Y1Y2Y3Y4Z2(i)Z3(i)Z4(i)Z6(i)Z5(i)+++在每輪中,4個(gè)子塊分別和密鑰的6個(gè)16比特子塊及中間結(jié)果進(jìn)行3種不同的群運(yùn)算,即XOR、加運(yùn)算和乘運(yùn)算在兩輪之間,第2和第3個(gè)子塊進(jìn)行交換在每一輪中,執(zhí)行的過(guò)程如下(1)輸入子塊X1和第1個(gè)子密鑰塊進(jìn)行“乘”運(yùn)算(2)輸入子塊X2和第2個(gè)子密鑰塊進(jìn)行“加”運(yùn)算(3)輸入子塊X3和第3個(gè)子密鑰塊進(jìn)行“加”運(yùn)算(4)輸入子塊X4和第4個(gè)子密鑰塊進(jìn)行“乘”運(yùn)算(5)將第(1)步的結(jié)果和第(3)步的結(jié)果相異或(6)將第(2)步的結(jié)果和第(4)步的結(jié)果相異或(7)第(5)步的結(jié)果與第5個(gè)子密鑰塊進(jìn)行“乘”運(yùn)算(8)第(6)步的結(jié)果和第(7)步的結(jié)果進(jìn)行“加”運(yùn)算(9)第(8)步的結(jié)果與第6個(gè)子密鑰塊進(jìn)行“乘”運(yùn)算(10)第(7)步的結(jié)果和第(9)步的結(jié)果進(jìn)行“加”運(yùn)算(11)第(1)步的結(jié)果和第(9)步的結(jié)果相異或(12)第(3)步的結(jié)果和第(9)步的結(jié)果相異或(13)第(2)步的結(jié)果和第(10)步的結(jié)果相異或(14)第(4)步的結(jié)果和第(10)步的結(jié)果相異或2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院118IDEA最終輸出變換在經(jīng)過(guò)8輪運(yùn)算后,進(jìn)行(1)輸入子塊X1和第1個(gè)子密鑰塊進(jìn)行“乘運(yùn)算(2)輸入子塊X2和第3個(gè)子密鑰塊進(jìn)行“加”運(yùn)算(3)輸入子塊X3和第2個(gè)子密鑰塊進(jìn)行“加”運(yùn)算(4)輸入子塊X4和第4個(gè)子密鑰塊進(jìn)行“乘”運(yùn)算將四步運(yùn)算的結(jié)果連到一起,就構(gòu)成64比特密文2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院119X1X2X3X4Z1(9)Y1Y2Y3Y4Z2(9)Z3(9)Z4(9)++IDEA算法的解密IDEA的解密與加密基本相同,使用的運(yùn)算邏輯相同。但在每一輪迭代所使用的子密鑰上有較大的差別IDEA的解密子密鑰是加密子密鑰的乘法逆(即模216+1乘法逆元)或加法逆(即模216加法逆元)2023/2/4120輪數(shù)加密子密鑰解密子密鑰1k1(1)k2(1)k3(1)k4(1)k5(1)k6(1)(k1(9))-1-k2(9)-k3(9)(k4(9))-1k5(8)k6(8)2k1(2)k2(2)k3(2)k4(2)k5(2k6(2)(k1(8))-1-k3(8)–k2(8)

(k4(8))-1k5(7)k6(7)3k1(3)k2(3)k3(3)k4(3)k5(3)k6(3)(k1(7))-1-k3(7)–k2(7)

(k4(7))-1k5(6)k6(6)4k1(4)k2(4)k3(4)k4(4)k5(4)k6(4)(k1(6))-1-k3(6)–k2(6)

(k4(6))-1k5(5)k6(5)5k1(5)k2(5)k3(5)k4(5)k5(5)k6(5)(k1(5))-1-k3(5)–k2(5)

(k4(5))-1k5(4)k6(4)6k1(6)k2(6)k3(6)k4(6)k5(6)k6(6)(k1(4))-1-k3(4)–k2(4)

(k4(4))-1k5(3)k6(3)7k1(7)k2(7)k3(7)k4(7)k5(7)k6(7)(k1(3))-1-k3(3)–k2(3)

(k4(3))-1k5(2)k6(2)8k1(8)k2(8)k3(8)k4(8)k5(8)k6(8)(k1(2))-1-k3(2)-k2(2)

(k4(2))-1k5(1)k6(1)9k1(9)k2(9)k3(9)k4(9)(k1(1))-1-k2(1)-k3(1)(k4(1))-1IDEA密鑰生成IDEA的種子密鑰為128位,在IDEA加密中,共用了52組16位的子密鑰IDEA子密鑰主要通過(guò)對(duì)初始密鑰進(jìn)行移位得到的2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院121將128位的種子密鑰分成8組,每組16位。其中的前6個(gè)分組作為第1輪迭代的子密鑰,后兩組作為第2輪迭代的前兩個(gè)子密鑰然后將128的密鑰循環(huán)左移25位,再分成8組,得到8個(gè)子密鑰,其中前4組作為第2輪的子密鑰,后4組作為第3輪的子密鑰。重復(fù)這個(gè)過(guò)程,直至產(chǎn)生全部52個(gè)子密鑰2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院122SMS4密碼算法SMS4是用于WAPI(WLANAuthentication&PrivacyInfrastructure)的分組密碼算法,是我國(guó)官方公布的第一個(gè)商用密碼算法是分組密碼算法。分組長(zhǎng)度128比特,密鑰長(zhǎng)度128比特。加密算法與密鑰擴(kuò)展算法都采用32輪非線(xiàn)性迭代結(jié)構(gòu)解密算法與加密算法結(jié)構(gòu)相同,輪密鑰的使用順序相反2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院123SMS4密碼算法結(jié)構(gòu)2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院124基本輪函數(shù)128位明文128位密文密鑰擴(kuò)展128位密鑰迭代控制SMS4的算法描述輸入明文:(X0,X1,X2,X3),128位,四個(gè)字輪密鑰:rki

,i=0,1,…,31,32個(gè)字輸出密文:(Y0,Y1,Y2,Y3),128位,四個(gè)字第i輪的加密變換:

Xi+4=F(Xi,Xi+1,Xi+2,Xi+3,rki)

=Xi⊕T(

Xi+1⊕Xi+2⊕Xi+3⊕rki),i=0,1…31密文輸出:(Y0,Y1,Y2,Y3)=(X35,X34,X33,X32)2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院1252023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院126X0X1X2X3FX4X5X32X33Rk0Frk1X34X35Frk31X31Y0Y1Y2Y3密文明文加密算法輪函數(shù)F(以第一輪為例)2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院127X0X1X2X3rkSSSSX4<<<2<<<10<<<18<<<24字合成變換T輪函數(shù)F:F(X0,X1,X2,X3,rk)=X0⊕T(X1⊕X2⊕X3⊕rk)

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院1288位輸入a08位輸出b0S盒(置換)8位輸入a18位輸出b1S盒(置換)8位輸入a28位輸出b2S盒(置換)8位輸入a38位輸出b3S盒(置換)非線(xiàn)性變換

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院129S盒2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院1300123456789abcdef0d690e9fecce13db716b614c228fb2c0512b679a762abe04c3aa4413264986069929c4250f491ef987a33540b43edcfac623e4b31ca9c908e89580df94fa758f3fa644707a7fcf37317ba83593c19e6854fa85686b81b27164da8bf8eb0f4b70569d3561e240e5e6358d1a225227c3b012178877d40046579fd327524c3602e7a0c4c89e8eabf8ad240c738b5a3f7f2cef96115a19e0ae5da49b341a55ad933230f58cb1e3a1df6e22e8266ca60c02923ab0d534e6fbd5db3745defd8e2f03ff6a726d6c5b51c8d1baf92bbddbc7f11d95c411f105ad8d0ac13188a5cd7bbd2d74d012b8e5b4b0e8969974a0c96777e65b9f109c56ec684f18f07dec3adc4d2079ee5f3ed7cb3948

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院131SMS4密鑰擴(kuò)展算法

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院132

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院133A3B1BAC656AA3350677D9197B27022DC

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院13400070e151c232a31383f464d545b626970777e858c939aa1a8afb6bdc4cbd2d9e0e7eef5fc030a11181f262d343b424950575e656c737a81888f969da4abb2b9c0c7ced5dce3eaf1f8ff060d141b222930373e454c535a61686f767d848b9299a0a7aeb5bcc3cad1d8dfe6edf4fb020910171e252c333a41484f565d646b7279

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院135Ki+1Ki+2Ki+3固定參數(shù)CKiS變換L變換KiKi+4(rKi)SMS4算法輪密鑰的生成

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院13632位的密鑰輸入32位的密鑰輸出SLS13SLS23

5.6分組密碼工作模式137什么是分組密碼工作模式?利用分組密碼構(gòu)造的密碼方案分組密碼KAES、DES、IDEA,……Blockciphermodeofoperation138工作模式的分類(lèi)機(jī)密性:加密模式完整性:認(rèn)證模式機(jī)密性+完整性:認(rèn)證加密模式構(gòu)造Hash函數(shù)……139常規(guī)加密模式

ECB、CBC、CFB、OFB、CTR

加密模式分組密碼≠加密方案EBC模式加密的圖像ECB加密模式圖取自NISTSpecialPublication800-38A141特點(diǎn):最簡(jiǎn)易,可以并行計(jì)算,速度快相同密鑰作用下,相同明文加密后將產(chǎn)生相同密文,易于暴露明文的固有格式和統(tǒng)計(jì)特性各密文塊間缺乏相關(guān)性,信息易于受到塊替換攻擊、分組重放等攻擊2023/2/4142密碼分組鏈接模式(CBC)加密輸入是當(dāng)前明文分組和前一密文分組的異或,形成一條鏈2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院143

m1Ekc1m2Ekc2mnEkcnIV....IV(初始向量)不需要保密,以明文的形式與密文一起發(fā)送2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院144

c1Dkm1c2Dkm2cnDkmnIV....密文組不僅與當(dāng)前明文組有關(guān),而且通過(guò)反饋與以前的明文組有關(guān)CBC的傳播錯(cuò)誤明文有一分組有錯(cuò),會(huì)使以后的密文組都受影響,但經(jīng)解密后,除原來(lái)有誤的一組外,其后各組明文都正確地恢復(fù)若傳送過(guò)程中某組密文組出錯(cuò)時(shí),則該組恢復(fù)的明文和下一組恢復(fù)數(shù)據(jù)出錯(cuò)。再后面的組將不受影響2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院145密碼反饋模式(CFB)2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院146C2CmC164-j比特j比特丟棄64-j比特選j比特DES加密Kj比特64-j比特DES加密KDES加密KP1P2PmCm-1IV(移位寄存器)………丟棄64-j比特選j比特丟棄64-j比特選j比特64-j比特j比特加密圖示

2023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院1472023/2/4計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院148C2CmC164-j比特j比特丟棄64-j比特選j比特DES加密Kj比特64-j比特DES加密KDES加密KP1P2PmCm-1IV(移位寄存器)………丟棄64-j比特選j比特丟棄64-j比特選j比特64-j比特j比特解密圖示CFB的優(yōu)點(diǎn):自同步能力強(qiáng),可以處理任意長(zhǎng)度的消息CFB的缺點(diǎn):明文某一組中有錯(cuò)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論