現(xiàn)代密碼學(xué)實(shí)驗(yàn)報(bào)告_第1頁
現(xiàn)代密碼學(xué)實(shí)驗(yàn)報(bào)告_第2頁
現(xiàn)代密碼學(xué)實(shí)驗(yàn)報(bào)告_第3頁
現(xiàn)代密碼學(xué)實(shí)驗(yàn)報(bào)告_第4頁
現(xiàn)代密碼學(xué)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、現(xiàn)代密碼學(xué)實(shí)驗(yàn)報(bào)告學(xué)生姓名 學(xué) 號(hào) 專業(yè)班級(jí) 計(jì)算機(jī)科學(xué)與技術(shù)指導(dǎo)教師 段桂華 學(xué) 院 信息科學(xué)與工程學(xué)院 完成時(shí)間 2016年4月實(shí)驗(yàn)一 密碼算法實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?.掌握密碼學(xué)中經(jīng)典的對(duì)稱密碼算法AES、RC4的算法原理。2.掌握AES、RC4的算法流程和實(shí)現(xiàn)方法。實(shí)驗(yàn)預(yù)備1.AES算法的基本原理和特點(diǎn)。2.流密碼RC4的密鑰流生成以及S盒初始化過程。 實(shí)驗(yàn)內(nèi)容1. 分析AES、RC4的實(shí)現(xiàn)過程。2. 用程序設(shè)計(jì)語言將算法過程編程實(shí)現(xiàn)。3. 完成字符串?dāng)?shù)據(jù)的加密運(yùn)算和解密運(yùn)算輸入十六進(jìn)制明文:11223344556677889900AABBCCDDEEFF 輸入十六進(jìn)制密鑰:13579BDF02

2、468ACE1234567890ABCDEF 實(shí)驗(yàn)步驟1. 預(yù)習(xí)AES、RC4算法。2. 寫出算法流程,用程序設(shè)計(jì)語言將算法過程編程實(shí)現(xiàn)。3. 輸入指定的明文、密鑰進(jìn)行實(shí)驗(yàn),驗(yàn)證結(jié)果。4. 自己選擇不同的輸入,記錄輸出結(jié)果。寫出所編寫程序的流程圖和運(yùn)行界面、運(yùn)行結(jié)果。一、AES算法1、AES算法簡介AES 是一種可用來保護(hù)電子數(shù)據(jù)的新型加密算法。特別是,AES 是可以使用 128、192 和 256 位密鑰的迭代式對(duì)稱密鑰塊密碼,并且可以對(duì) 128 位(16 個(gè)字節(jié))的數(shù)據(jù)塊進(jìn)行加密和解密。與使用密鑰對(duì)的公鑰密碼不同的是,對(duì)稱密鑰密碼使用同一個(gè)密鑰來對(duì)數(shù)據(jù)進(jìn)行加密和解密。由塊密碼返回的加密數(shù)據(jù)

3、與輸入數(shù)據(jù)具有相同的位數(shù)。迭代式密碼使用循環(huán)結(jié)構(gòu)來針對(duì)輸入數(shù)據(jù)反復(fù)執(zhí)行排列和置換運(yùn)算。2、 算法實(shí)現(xiàn)及流程以加密函數(shù)為例,如下所示,首先對(duì)密鑰進(jìn)行預(yù)處理密鑰擴(kuò)展,然后明文進(jìn)行Nr(Nr與密鑰長度有關(guān))次迭代運(yùn)算,包括字節(jié)替換SubBytes、 移位行運(yùn)算ShiftRows、混合列運(yùn)算MixColumns、以及輪秘鑰加密AddRoundKey。void Cipher() int i,j,round=0; / 把明文賦值到狀態(tài)數(shù)組中 for(i=0;i<4;i+) for(j=0;j<4;j+) stateji = ini*4 + j; / 先與初始輪密鑰相加 AddRoundKey(

4、0); / 第一輪至(Nr-1)輪的迭代運(yùn)算,第Nr輪不用進(jìn)行列混合運(yùn)算 for(round=1;round<Nr;round+) SubBytes(); /字節(jié)代換 ShiftRows(); /行移位 MixColumns(); /列混合 AddRoundKey(round); /密鑰加 SubBytes(); ShiftRows(); AddRoundKey(Nr); / 加密結(jié)束,將機(jī)密結(jié)果填入數(shù)組out中以便輸出 for(i=0;i<4;i+) for(j=0;j<4;j+) outi*4+j=stateji; 解密函數(shù)的流程和加密函數(shù)是一致的,只是對(duì)于行變換、列變換

5、、以及相關(guān)s盒子為加密的逆過程。 字節(jié)替換SubBytes是非線形置換,獨(dú)立地對(duì)狀態(tài)的每個(gè)字節(jié)進(jìn)行。移位行運(yùn)算ShiftRows是將狀態(tài)陣列的各行進(jìn)行循環(huán)移位,不同狀態(tài)行的位移量不同。第0行不移動(dòng),第1行循環(huán)左移C1個(gè)字節(jié),第2行循環(huán)左移C2個(gè)字節(jié),第3行循環(huán)左移C3個(gè)字節(jié)。位移量C1、C2、C3的取值與Nb有關(guān)?;旌狭羞\(yùn)算MixColumns是將狀態(tài)陣列的每個(gè)列視為多項(xiàng)式,再與一個(gè)固定的多項(xiàng)式c(x)進(jìn)行模x4+1乘法。Rijndael的設(shè)計(jì)者給出的c(x)為(系數(shù)用十六進(jìn)制數(shù)表示):c(x)=03x3+01x2+01x+02。輪秘鑰加密AddRoundKey是將輪密鑰簡單地與狀態(tài)進(jìn)行逐比特

6、異或。輪密鑰由種子密鑰通過密鑰編排算法得到,輪密鑰長度等于分組長度Nb。 程序流程圖128位明文秘鑰初始輪秘鑰加密產(chǎn)生輪秘鑰輪函數(shù)S盒變換Nr輪迭代控制 Nr個(gè)圈秘鑰行移位與列混合 輪秘鑰加密128位密文 AES流程圖3、 運(yùn)行結(jié)果 首先,輸入指定密鑰13579BDF02468ACE1234567890ABCDEF ,輸入指定明文11223344556677889900AABBCCDDEEFF,進(jìn)行實(shí)驗(yàn),結(jié)果如圖所示。 選擇不同的輸入,輸入秘鑰11223344556677889900AABBCCDDEEFF,輸入明文13579BDF02468ACE1234567890ABCDEF ,輸出結(jié)果如

7、圖所示。二、RC4算法1、RC4算法簡介 RC4加密算法是大名鼎鼎的RSA三人組中的頭號(hào)人物Ron Rivest在1987年設(shè)計(jì)的密鑰長度可變的流加密算法簇。首先,用從1到256個(gè)字節(jié)的可變長度密鑰初始化一個(gè)256個(gè)字節(jié)的狀態(tài)盒S256。然后,通過S盒子對(duì)密鑰按字節(jié)進(jìn)行變換。最后可以得到變換后的密鑰。對(duì)于加密,只要讓密鑰按字節(jié)與明文進(jìn)行異或。而解密,只要讓密鑰按字節(jié)與密文進(jìn)行異或。2、 算法實(shí)現(xiàn)開始時(shí),S中元素的值被置為按升序從0到255,即S0=0,S1=1, ,S255=255。同時(shí)對(duì)密鑰keykey_len的進(jìn)行填充到隨機(jī)序列密鑰rc4key256中,(key_len為key的字節(jié)長度,

8、且不大于256)。循環(huán)重復(fù)用key,直到rc4key的所有字節(jié)都被賦值。然后根據(jù)密鑰re4key去對(duì)S盒進(jìn)行變換。這些預(yù)操作可概括如下: /S盒先初始化為s0=0,s1=1.s255=255 for(i = 0; i < 255; i+) Si=i; /初始化序列化密鑰 for(i = 0; i < 256; i+) j = i % key_len rc4keyi = key_dataj; /根據(jù)密鑰rc4key,填充S盒 for( j = 0, i = 0; i < 256; i+) j = (rc4keyi + Si + j) % 256; swap(&Si, &

9、amp;Sj); /交換Si和Sj的數(shù)值 矢量S一旦完成初始化,輸人密鑰就不再被使用密鑰流的生成是從s0到S255,對(duì)每個(gè)Si,根據(jù)當(dāng)前S的值,將Si與S中的另一字節(jié)置換當(dāng)S255完成置換后,操作繼續(xù)重復(fù),從S0開始。操作如下:/生成隨機(jī)序列密鑰 for(counter = 0; counter < buffer_len; counter+) i = (i + 1) % 256; j = (Si + j) % 256; swap(&Si, &Sj); t = (Si + Sj) % 256; rc4keycounter = St;這兩個(gè)過程使用同樣的函數(shù)即可,加密中,將k

10、的值與下一明文字節(jié)異或;解密中/將緩沖區(qū)數(shù)據(jù)和隨機(jī)系列密鑰進(jìn)行異或,則可進(jìn)行加密或者解密 ,將k的值與下一密文字節(jié)異或。操作如下: for(i = 0; i < buffer_len; i+) resulti = buffer_datai rc4keyi; 程序流程圖S盒的初始化:S0=0,S1=1,.,S255=255秘鑰與S盒做預(yù)算,生成序列rc4key得已知密文ciphertext得隨機(jī)秘鑰序列rc4key已知明文plaintext RC4流程圖3、 運(yùn)行結(jié)果 首先,輸入指定密鑰13579BDF02468ACE1234567890ABCDEF ,輸入指定明文112233445566

11、77889900AABBCCDDEEFF,進(jìn)行實(shí)驗(yàn),結(jié)果如圖所示。4、選擇不同的輸入,輸入秘鑰11223344556677889900AABBCCDDEEFF,輸入明文13579BDF02468ACE1234567890ABCDEF ,輸出結(jié)果如圖所示。問題討論1. 改變明文或密鑰中的一個(gè)比特值可能影響AES值中的多少比特?2.在RC4的密鑰流生成中,改變初始密鑰的一個(gè)比特值可能影響輸出中的多少比特?3.分析實(shí)驗(yàn)中在編輯、編譯、運(yùn)行等各環(huán)節(jié)中所出現(xiàn)的問題及解決方法。回答問題1.答:明文和密鑰在S盒置換時(shí),不同的字節(jié)會(huì)替換出不同的結(jié)果。算法過程 中一共進(jìn)行了10輪加密,所以改變一個(gè)比特值可能影響

12、AES值中的80比特(8 x 10)。2.答:初始密鑰的不同會(huì)導(dǎo)致S盒的不同,所以可能影響輸出中的256比特。3.答:在算法的實(shí)現(xiàn)過程中,對(duì)于異或等平時(shí)很難接觸到的位操作不熟悉導(dǎo)致在輪密鑰加密等過程的實(shí)現(xiàn)變得很艱難。最難處理的是字符串對(duì)的補(bǔ)足長度問題,這個(gè)問題在設(shè)計(jì)之初并沒有想到過導(dǎo)致最后測試時(shí)出現(xiàn)了很多問題,最后通過查閱資料等方式解決了這些問題。實(shí)驗(yàn)二 SKEY協(xié)議設(shè)計(jì)實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康?.掌握身份認(rèn)證協(xié)議的原理和基本思想。2.掌握SKEY協(xié)議的機(jī)制和實(shí)現(xiàn)方法。實(shí)驗(yàn)預(yù)備1.SKEY協(xié)議的作用。2.SKEY協(xié)議的安全性分析。3.SKEY協(xié)議的實(shí)現(xiàn)過程。實(shí)驗(yàn)內(nèi)容1. 分析SKEY協(xié)議的實(shí)現(xiàn)過程。2.

13、用程序設(shè)計(jì)語言將算法過程編程實(shí)現(xiàn)。3. 演示SKEY協(xié)議的身份鑒別過程。 實(shí)驗(yàn)步驟1. 預(yù)習(xí)SKEY協(xié)議的機(jī)制。2. 選擇和實(shí)現(xiàn)相應(yīng)的摘要算法MD5或SHA。3. 寫出算法流程,用程序設(shè)計(jì)語言將協(xié)議過程編程實(shí)現(xiàn)。4. 驗(yàn)證SKEY協(xié)議的身份鑒別過程。寫出所編寫程序的流程圖和運(yùn)行界面、運(yùn)行結(jié)果。1、 SKEY協(xié)議的原理及作用 SKEY是一種鑒別程序,它依賴于單向函數(shù)的安全性。 為了設(shè)置系統(tǒng),輸入隨機(jī)數(shù)R,計(jì)算機(jī)計(jì)算f(R), f(f(R), f(f(f(R)等等大約100次。調(diào)用x1 ,x2 ,x3 ,。,x100這些數(shù)。計(jì)算機(jī)打印出這些數(shù)的列表,Alice把這些數(shù)放入口袋妥善保管,計(jì)算機(jī)也順利

14、地在登錄數(shù)據(jù)庫中Alice的名字后面存儲(chǔ)x101的值。當(dāng)Alice第一次登錄時(shí),她輸入她的名字和x100,計(jì)算機(jī)計(jì)算f(x100),并把它和x101比較,如果它們匹配,那么證明Alice身份是真的。然后,計(jì)算機(jī)用x101代替數(shù)據(jù)庫中的x100。Alice將從她的列表中取消x100。 Alice每次登錄時(shí),都輸入她的列表中未取消的最后的數(shù)xI,計(jì)算機(jī)計(jì)算f(xI),并和存儲(chǔ)在它的數(shù)據(jù)庫中的xI+1比較。因?yàn)槊總€(gè)數(shù)只被用一次,并且這個(gè)函數(shù)是單向的,所以Eve不可能得到任何有用的信息。同樣的,數(shù)據(jù)庫對(duì)攻擊者也毫無用處。當(dāng)然,當(dāng)Alice用完了她的列表上面的數(shù)后,她必須重新初始化系統(tǒng)。作用:身份認(rèn)證,

15、是任何網(wǎng)絡(luò)安全方案的一個(gè)基礎(chǔ)。如在大部分情況下, 需要認(rèn)證的實(shí)體是通信的發(fā)送者,即需要確定訪問者的合法性問題。 S/KEY協(xié)議主要是用于身份認(rèn)證。2、 用MD5實(shí)現(xiàn)加密1、 算法簡介 MD5即Message-Digest Algorithm 5(信息-摘要算法 5),用于確保信息傳輸完整一致。是計(jì)算機(jī)廣泛使用的雜湊算法之一(又譯摘要算法、哈希算法),主流編程語言普遍已有MD5實(shí)現(xiàn)。將數(shù)據(jù)(如漢字)運(yùn)算為另一固定長度值,是雜湊算法的基礎(chǔ)原理,MD5的前身有MD2、MD3和MD4。MD5的作用是讓大容量信息在用數(shù)字簽名軟件簽署私人密鑰前被"壓縮"成一種保密的格式(就是把一個(gè)任意

16、長度的字節(jié)串變換成一定長的十六進(jìn)制數(shù)字串)。2.原理以及流程圖 MD5以512位分組來處理輸入的信息,且每一分組又被劃分為16個(gè)32位子分組,經(jīng)過了一系列的處理后,算法的輸出由四個(gè)32位分組組成,將這四個(gè)32位分組級(jí)聯(lián)后將生成一個(gè)128位散列值。 在MD5算法中,首先需要對(duì)信息進(jìn)行填充,使其位長對(duì)512求余的結(jié)果等于448。因此,信息的位長(Bits Length)將被擴(kuò)展至N*512+448,N為一個(gè)非負(fù)整數(shù),N可以是零。填充的方法如下,在信息的后面填充一個(gè)1和無數(shù)個(gè)0,直到滿足上面的條件時(shí)才停止用0對(duì)信息的填充。然后,在這個(gè)結(jié)果后面附加一個(gè)以64位二進(jìn)制表示的填充前信息長度。經(jīng)過這兩步的處

17、理,現(xiàn)在的信息的位長=N*512+448+64=(N+1)*512,即長度恰好是512的整數(shù)倍。這樣做的原因是為滿足后面處理中對(duì)信息長度的要求。MD5中有四個(gè)32位被稱作鏈接變量(Chaining Variable)的整數(shù)參數(shù),他們分別為:A=0x67452301,B=0xefcdab89,C=0x98badcfe,D=0x10325476。當(dāng)設(shè)置好這四個(gè)鏈接變量后,就開始進(jìn)入算法的四輪循環(huán)運(yùn)算。循環(huán)的次數(shù)是信息中512位信息分組的數(shù)目。 將輸入消息按512-位分組,最后要填充成為512位的整數(shù)倍,且最后一組的后64位用來填充消息長度(填充前)。填充方法為附一個(gè)1在消息后,后接所要求的多個(gè)0。

18、這樣可以確保不同消息在填充后不相同。 由于留出64位用來表示消息長度,那么消息的長度最多可達(dá)264字節(jié),相當(dāng)于4G×4G字節(jié),文件的長度是不可能達(dá)到這么大,因此通常都是只采用64位中的低32位來表示消息長度,高32位填充0。 l 初始化MD變量。由于每輪輸出128位,這128位可用下面四個(gè)32位字A,B,C,D來表示。CVqYqDCBAF,T116,XiG,T1732,Xp2 iH,T3348,Xp3 iL,T4964,Xp4i+CVq+1 其初始值設(shè)為: A=0x01234567 B=0x89ABCDEF C=0xFEDCBA98 D=0x76543210 開始進(jìn)入算法主循環(huán),循環(huán)的次數(shù)是消息中512位消息分組的數(shù)目。先將上面A、B、C、D四個(gè)變量分別復(fù)制到另外四個(gè)變量a、b、c、d中去。主循環(huán)有四 輪,每輪很相似。每輪進(jìn)行16次操作,每次操作對(duì)a、b、c、d四個(gè)變量中的三個(gè)作一次非線性函數(shù)運(yùn)算,然后將所得結(jié)果加上第四個(gè)變量,消息的一個(gè)子分組 和一個(gè)常數(shù)。再將所得結(jié)果向右環(huán)移一個(gè)

溫馨提示

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

評(píng)論

0/150

提交評(píng)論