實(shí)驗(yàn)題目
DES算法與差分攻擊
實(shí)驗(yàn)?zāi)康?/h2>
了解DES算法基本工作原理墓臭,體會(huì)并理解分組密碼算法的混淆和擴(kuò)散概念蘸鲸。了解Sbox工作原理及效果。了解DES的工作模式和填充方式窿锉。了解差分攻擊
的基本原理酌摇。
實(shí)驗(yàn)原理與理論基礎(chǔ)
DES算法簡(jiǎn)介
DES算法為密碼體制中的對(duì)稱密碼體制膝舅,又被稱為美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn)。
DES是一個(gè)分組加密算法窑多,典型的DES以64位為分組對(duì)數(shù)據(jù)加密仍稀,加密和解密用的是同一個(gè)算法。
密鑰長(zhǎng)64位埂息,密鑰事實(shí)上是56位參與DES運(yùn)算(第8技潘、16、24千康、32享幽、40、48拾弃、56琉闪、64位是校驗(yàn)位,使得每個(gè)密鑰都有奇數(shù)個(gè)1)砸彬,分組后的明文組和56位的密鑰按位替代或交換的方法形成密文組。
-
DES算法的主要流程如下圖所示:
image
IP置換
IP置換目的是將輸入的64位數(shù)據(jù)塊按位重新組合斯入,并把輸出分為L(zhǎng)0砂碉、R0兩部分,每部分各長(zhǎng)32位刻两。
表中的數(shù)字代表新數(shù)據(jù)中此位置的數(shù)據(jù)在原數(shù)據(jù)中的位置增蹭,即原數(shù)據(jù)塊的第58位放到新數(shù)據(jù)的第1位,第50位放到第2位磅摹,……依此類推滋迈,第7位放到第64位。置換后的數(shù)據(jù)分為L(zhǎng)0和R0兩部分户誓,L0為新數(shù)據(jù)的左32位饼灿,R0為新數(shù)據(jù)的右32位。
密鑰置換
不考慮每個(gè)字節(jié)的第8位帝美,DES的密鑰由64位減至56位碍彭,每個(gè)字節(jié)的第8位作為奇偶校驗(yàn)位。產(chǎn)生的56位密鑰由下表生成(注意表中沒(méi)有8,16,24悼潭,32,40,48,56和64這8位):
在DES的每一輪中庇忌,從56位密鑰產(chǎn)生出不同的48位子密鑰,確定這些子密鑰的方式如下:
1).將56位的密鑰分成兩部分舰褪,每部分28位皆疹。
2).根據(jù)輪數(shù),這兩部分分別循環(huán)左移1位或2位占拍。每輪移動(dòng)的位數(shù)如下表:
移動(dòng)后略就,從56位中選出48位捎迫。這個(gè)過(guò)程中,既置換了每位的順序残制,又選擇了子密鑰立砸,因此稱為壓縮置換。壓縮置換規(guī)則如下表(注意表中沒(méi)有9初茶,18颗祝,22,25恼布,35螺戳,38,43和54這8位):
置換方法同上
E擴(kuò)展置換
- 擴(kuò)展置置換目標(biāo)是IP置換后獲得的右半部分R0折汞,將32位輸入擴(kuò)展為48位(分為4位×8組)輸出倔幼。
- 擴(kuò)展置換目的有兩個(gè):生成與密鑰相同長(zhǎng)度的數(shù)據(jù)以進(jìn)行異或運(yùn)算;提供更長(zhǎng)的結(jié)果爽待,在后續(xù)的替代運(yùn)算中可以進(jìn)行壓縮损同。
-
擴(kuò)展置換原理如下表:
image.png
表中的數(shù)字代表位,兩列黃色數(shù)據(jù)是擴(kuò)展的數(shù)據(jù)鸟款,可以看出膏燃,擴(kuò)展的數(shù)據(jù)是從相鄰兩組分別取靠近的一位,4位變?yōu)?位何什∽榱ǎ靠近32位的位為1,靠近1位的位為32处渣。表中第二行的4取自上組中的末位伶贰,9取自下組中的首位。
擴(kuò)展置換之后罐栈,右半部分?jǐn)?shù)據(jù)R0變?yōu)?8位黍衙,與密鑰置換得到的輪密鑰進(jìn)行異或。
S盒代替
壓縮后的密鑰與擴(kuò)展分組異或以后得到48位的數(shù)據(jù)荠诬,將這個(gè)數(shù)據(jù)送人S盒们豌,進(jìn)行替代運(yùn)算。替代由8個(gè)不同的S盒完成浅妆,每個(gè)S盒有6位輸入4位輸出望迎。48位輸入分為8個(gè)6位的分組,一個(gè)分組對(duì)應(yīng)一個(gè)S盒凌外,對(duì)應(yīng)的S盒對(duì)各組進(jìn)行代替操作辩尊。
一個(gè)S盒就是一個(gè)4行16列的表,盒中的每一項(xiàng)都是一個(gè)4位的數(shù)康辑。S盒的6個(gè)輸入確定了其對(duì)應(yīng)的輸出在哪一行哪一列摄欲,輸入的高低兩位做為行數(shù)H轿亮,中間四位做為列數(shù)L,在S-BOX中查找第H行L列對(duì)應(yīng)的數(shù)據(jù)(<32)胸墙。
S盒代替時(shí)DES算法的關(guān)鍵步驟我注,所有的其他的運(yùn)算都是線性的,易于分析迟隅,而S盒是非線性的但骨,相比于其他步驟,提供了更好安全性
P盒置換
S盒代替運(yùn)算的32位輸出按照P盒進(jìn)行置換智袭。該置換把輸入的每位映射到輸出位奔缠,任何一位不能被映射兩次,也不能被略去吼野,映射規(guī)則如下表:
表中的數(shù)字代表原數(shù)據(jù)中此位置的數(shù)據(jù)在新數(shù)據(jù)中的位置校哎,即原數(shù)據(jù)塊的第16位放到新數(shù)據(jù)的第1位,第7位放到第2位瞳步,……依此類推闷哆,第25位放到第32位。
IP-1末置換
末置換是初始置換的逆過(guò)程单起,DES最后一輪后阳准,左、右兩半部分并未進(jìn)行交換馏臭,而是兩部分合并形成一個(gè)分組做為末置換的輸入。末置換規(guī)則如下表:
置換方法同上
DES的工作模式和填充模式
實(shí)際應(yīng)用中讼稚,DES是根據(jù)其加密算法所定義的明文分組的大欣ㄈ濉(64bits),將數(shù)據(jù)割成若干64bits的加密區(qū)塊锐想,再以加密區(qū)塊為單位帮寻,分別進(jìn)行加密處理。根據(jù)數(shù)據(jù)加密時(shí)每個(gè)加密區(qū)塊間的關(guān)聯(lián)方式赠摇,可以分為4種加密模式固逗,包括ECB,CBC,CFB及OFB。
- 電碼本模式(ECB)
- ECB模式是DES加密的基本工作模式藕帜。
- 在ECB模式下烫罩,每一個(gè)加密區(qū)塊依次獨(dú)立加密,產(chǎn)生獨(dú)立的密文區(qū)塊洽故,每一加密區(qū)塊的加密結(jié)果不受其他區(qū)塊的影響贝攒。使用此種方式下,可以利用并行處理來(lái)加速加密解密運(yùn)算时甚,且在網(wǎng)絡(luò)傳輸時(shí)任一區(qū)塊有任何錯(cuò)誤發(fā)生隘弊,也不會(huì)影響到其他區(qū)塊傳輸?shù)慕Y(jié)果哈踱。這是該模式的優(yōu)點(diǎn)。
- 該模式的缺點(diǎn)是容易暴露明文的數(shù)據(jù)模式梨熙。
- 密碼分組鏈接模式(CBC)
- 在CBC模式下开镣,第一個(gè)加密區(qū)塊先與初始向量IV做異或運(yùn)算,再進(jìn)行加密咽扇。其他每個(gè)加密區(qū)塊加密之前邪财,必須與前一個(gè)加密區(qū)塊的密文作一次異或運(yùn)算,再進(jìn)行加密肌割。每一個(gè)區(qū)塊的加密結(jié)果均會(huì)受到前面所有區(qū)塊內(nèi)容的影響卧蜓,所以即使在明文中出現(xiàn)多次相同的明文,也會(huì)產(chǎn)生不同的密文把敞。
- 密文內(nèi)容若遭剪貼弥奸、替換,或在網(wǎng)絡(luò)傳輸過(guò)程中發(fā)生錯(cuò)誤奋早,則其后續(xù)的密文將被破壞盛霎,無(wú)法順利解密還原,這是這一模式的的優(yōu)點(diǎn)耽装,也是缺點(diǎn)愤炸。
- 在CBC模式下,加密作業(yè)無(wú)法利用并行處理來(lái)加速加密運(yùn)算掉奄,但其解密運(yùn)算可以利用并行處理來(lái)加速规个。
- 密文反饋方式(CFB)
在CFB模式下,可以將區(qū)塊加密算法當(dāng)作流密碼加密器使用姓建,流密碼加密器可以按照實(shí)際上的需要诞仓,每次加密區(qū)塊大小可以自訂,每一個(gè)區(qū)塊的明文與前一個(gè)區(qū)塊加密后的密文做異或后成為密文速兔。因此墅拭,每一個(gè)區(qū)塊的加密結(jié)果受之前所有區(qū)塊內(nèi)容的影響,也會(huì)使得在明文中出現(xiàn)多次相同的明文均產(chǎn)生不同的密文涣狗。在此模式下谍婉,位了加密第一個(gè)區(qū)塊,也必須選擇一個(gè)初始向量镀钓,且此初始向量必須惟一穗熬,每次加密時(shí)必須不一樣,也難以利用并行處理來(lái)加快加密作業(yè) - 輸出反饋模式(OFB)
OFB與CFB大致相同丁溅,都是每一個(gè)區(qū)塊的明文與之前區(qū)塊加密后的結(jié)果做異或后產(chǎn)生密文死陆,不同的是之前區(qū)塊加密后的結(jié)果為獨(dú)立產(chǎn)生,每一個(gè)區(qū)塊的加密結(jié)果不受之前所有密文區(qū)塊的內(nèi)容的影響,如果有區(qū)塊在傳輸過(guò)程中遺失或發(fā)生錯(cuò)誤措译,將不至于無(wú)法完全解密别凤,在此模式下,為了加密第一個(gè)區(qū)塊领虹,必須設(shè)置一個(gè)初始向量规哪,否則難以利用并行處理來(lái)加快加密作業(yè)。
DES差分攻擊
DES算法其中主要起作用的算法有:矩陣置換塌衰、擴(kuò)展诉稍、左移、異或最疆、左右互換杯巨、s盒作用?。其中對(duì)攻擊者來(lái)說(shuō)最麻煩的要說(shuō)s盒一步努酸,破解des體系關(guān)鍵在s盒服爷。?
乍一看六位輸入與四位輸出貌似沒(méi)什么關(guān)系。但事實(shí)上获诈,對(duì)于同一個(gè)s盒具有相同輸入異或的所有輸入六比特組的輸出四比特異或值有一定規(guī)律仍源。?
具體些說(shuō),對(duì)于輸入異或相同的明文對(duì)B舔涎,B*僅有32組笼踩,而這32組輸出異或卻并不是均勻分布,而是僅分布在很少的幾個(gè)四比特值中亡嫌;也可以說(shuō)具有相同輸入異或且輸出四比特異或也相同的六比特輸入數(shù)量不多且分布不均勻嚎于。正是這種輸入輸出輸出異或間的不均勻性可以被攻擊者利用并破解密鑰。
實(shí)驗(yàn)要求
- 編程實(shí)驗(yàn)DES算法
- 通過(guò)改變DES算法明文和密文內(nèi)容觀察加密后輸出統(tǒng)計(jì)結(jié)果
- 實(shí)現(xiàn)生成指定差分的明文對(duì)挟冠,實(shí)現(xiàn)對(duì)特定差分輸入的Sbox差分輸出分布于购,觀察 DES S-box 輸入差分與密鑰無(wú)關(guān),輸出差分與密鑰相關(guān)特性圃郊。
- 實(shí)現(xiàn) DES 各種工作模式和填充方式,實(shí)現(xiàn)使用DES算法對(duì)數(shù)據(jù)文件加解密(選作 P124)
- 實(shí)現(xiàn)簡(jiǎn)單的GUI界面
實(shí)驗(yàn)過(guò)程和結(jié)果測(cè)試
輸入1女蜈,DES加密
輸入2持舆,改變明文位數(shù)觀察密文改變位數(shù)
-
明文改變2位,密文平均改變位數(shù)為33.70
image.png -
明文改變4位伪窖,密文平均改變位數(shù)為30.90
image.png -
明文改變6位逸寓,密文平均改變位數(shù)為34.30
image.png -
明文改變8位,密文平均改變位數(shù)為31.50
image.png -
明文改變10位覆山,密文平均改變位數(shù)為30.30
image.png -
明文改變20位竹伸,密文平均改變位數(shù)為31.00
image.png -
明文改變40位,密文平均改變位數(shù)為31.00
image.png
結(jié)果表格:
明文改變位數(shù) | 密文改變位數(shù) |
---|---|
2 | 33.70 |
4 | 30.90 |
6 | 34.30 |
8 | 31.50 |
10 | 30.3 |
20 | 31.00 |
40 | 31.00 |
平均數(shù) | 31.8 |
輸入3,改變密鑰位數(shù)觀察明文改變位數(shù)
-
改變密鑰2位勋篓,密文改變33.2位
image.png -
改變密鑰4位吧享,密文改變30.9位
image.png -
改變密鑰6位,密文改變33.4位
image.png -
改變密鑰10位譬嚣,密文改變31.7位
image.png -
改變密鑰20位钢颂,密文改變33.3位
image.png -
改變密鑰40位,密文改變32.3位
image.png
7.改變密鑰50位拜银,密文改變32.3位
image.png
結(jié)果表格:
密鑰改變位數(shù) | 密文改變位數(shù) |
---|---|
2 | 33.20 |
4 | 30.90 |
6 | 33.40 |
10 | 31.70 |
20 | 33.3 |
40 | 32.30 |
50 | 32.3 |
平均數(shù) | 32.44 |