《網(wǎng)絡安全》課程實驗指導書_第1頁
《網(wǎng)絡安全》課程實驗指導書_第2頁
《網(wǎng)絡安全》課程實驗指導書_第3頁
《網(wǎng)絡安全》課程實驗指導書_第4頁
《網(wǎng)絡安全》課程實驗指導書_第5頁
已閱讀5頁,還剩15頁未讀 繼續(xù)免費閱讀

付費下載

下載本文檔

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

文檔簡介

1、網(wǎng)絡安全課程實驗指導書 編寫:姚傳茂 審閱:2009年月9月10日實驗一 系統(tǒng)安全設置一、實驗目的及任務:掌握對Window200系統(tǒng)進行安全設置的過程。二、實驗環(huán)境主機操作系統(tǒng)為Windows2000或Windows XP;三、 實驗原理要深入理解操作系統(tǒng)安全的定義,具備一定的操作系統(tǒng)設置技能。四、 實驗步驟 系統(tǒng)登陸用戶賬號保護設置、關閉不必要的服務和端口、開啟各項安全策略。1、停止Guest賬號在計算機管理的用戶里面把Guest賬號禁用。為了保險起見,最好給Guest加一個復雜的密碼。你可以打開記事本,在里面輸入一串包含特殊字符、數(shù)字、字母的長字符串,然后把它作為Guest用戶的密碼拷進

2、去。2、限制用戶數(shù)量去掉所有的Duplicate User用戶、測試用戶、共享用戶等等。用戶組策略設置相應權(quán)限,并且經(jīng)常檢查系統(tǒng)的用戶,刪除已經(jīng)不再使用的用戶。這些用戶很多時候都是黑客們?nèi)肭窒到y(tǒng)的突破口。3、多個管理員賬號、管理員賬號改名創(chuàng)建一個一般權(quán)限用戶用來收信以及處理一些日常事物,另一個擁有Administrators 權(quán)限的用戶只在需要的時候使用。將Administrator管理員用戶名更改為一個一般的用戶名。4、陷阱賬號創(chuàng)建一個名為“Administrator”的本地用戶,把它的權(quán)限設置成最低,什么事也干不了的那種,并且加上一個超過10位的超級復雜密碼。5、更改默認權(quán)限任何時候都不要

3、把共享文件的用戶設置成“Everyone”組,包括打印共享,默認的屬性就是“Everyone”組的,一定不要忘了改。6、安全密碼、屏幕保護密碼設置足夠強度的管理員密碼,并定期更改安全密碼。在桌面上單擊右鍵,“屬性”,“屏幕保護程序”,選擇屏幕保護程序,并點擊“設置”按鈕設置屏保時間和密碼。7、開啟操作系統(tǒng)安全策略審核策略、密碼策略、賬戶策略使用用戶策略,分別設置復位用戶鎖定計數(shù)器時間為20分鐘,用戶鎖定時間為20分鐘,用戶鎖定閾值為3次;注意應用密碼策略,如啟用密碼復雜性要求,設置密碼長度最小值為6位 ,設置強制密碼歷史為5次,時間為42天。8、關閉不必要的服務、端口關閉端口意味著減少功能,在

4、安全和功能上面需要你做一點決策。如果服務器安裝在防火墻的后面,冒險就會少些。但是,永遠不要認為你可以高枕無憂了。用端口掃描器掃描系統(tǒng)已開放的端口,確定系統(tǒng)開放的哪些服務可能引起黑客入侵。在系統(tǒng)目錄中的system32driversetcservices 文件中有知名端口和服務的對照表可供參考。具體方法為:打開“ 網(wǎng)上鄰居/屬性/本地連接/屬性/internet 協(xié)議(TCP/IP)/屬性/高級/選項/TCP/IP篩選/屬性” 打開“TCP/IP篩選”,添加需要的TCP、UDP協(xié)議即可。9、注冊表設置:不顯示上次登陸名、禁止建立空連接。默認情況下,登錄對話框中會顯示上次登錄的用戶名。這使得別人可

5、以很容易地得到系統(tǒng)的一些用戶名,進而做密碼猜測。修改注冊表可以不讓對話框里顯示上次登錄的用戶名。方法為:打開注冊表編輯器并找到注冊表項“HKLMSoftwareMicrosoftWindows TCurrentVersionWinlogonDont-DisplayLastUserName”,把REG_SZ的鍵值改成1。默認情況下,任何用戶都可通過空連接連上服務器,進而枚舉出賬號,猜測密碼。我們可以通過修改注冊表來禁止建立空連接:即把“ Local_MachineSystemCurrentControlSetControlLSA-RestrictAnonymous” 的值改成“1”即可。五、實驗

6、結(jié)果:Window2000操作系統(tǒng)進行了安全設置六、實驗思考題闡述系統(tǒng)安全設置的重要性。實驗二 傳統(tǒng)密碼算法一、實驗目的及任務通過編程實現(xiàn)替代密碼算法和置換密碼算法,加深對古典密碼體制的了解,為深入學習密碼學奠定基礎二、實驗環(huán)境運行Windows操作系統(tǒng)的PC機,具有C語言編譯環(huán)境。三、實驗原理古典密碼算法歷史上曾被廣泛應用,大都比較簡單,使用手工和機械操作來實現(xiàn)加密和解密.它的主要應用對象是文字信息,利用密碼算法實現(xiàn)文字信息的加密和解密.下面介紹兩種常見的具有代表性的古典密碼算法,以幫助讀者對密碼算法建立一個初步的印象.1. 替代密碼 替代密碼算法的原理是使用替代法進行加密,就是將明文中的字

7、符用其它字符替代后形成密文.例如:明文字母a,b,c,d ,用D,E,F,G做對應替換后形成密文. 替代密碼包括多種類型,如單表替代密碼,多明碼替代密碼,多字母替代密碼,多表替代密碼.下面我們介紹一種典型的單表替代密碼,愷撒(caesar)密碼,又叫循環(huán)移位密碼.它的加密方法,就是將明文中的每個字母用此字符在字母表中后面第k個字母替代.它的加密過程可以表示為下面的函數(shù): E(m)=(m+k) mod n 其中:m為明文字母在字母表中的位置數(shù);n為字母表中的字母個數(shù);k為密鑰;E(m)為密文字母在字母表中對應的位置數(shù). 例如,對于明文字母H,其在字母表中的位置數(shù)為8,設k=4,則按照上式計算出來

8、的密文為L: E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L 2. 置換密碼 置換密碼算法的原理是不改變明文字符,只將字符在明文中的排列順序改變,從而實現(xiàn)明文信息的加密.置換密碼有時又稱為換位密碼. 矩陣換位法是實現(xiàn)置換密碼的一種常用方法.它將明文中的字母按照給的順序安排在一個矩陣中,然后用根據(jù)密鑰提供的順序重新組合矩陣中字母,從而形成密文.例如,明文為attack begins at five,密鑰為cipher,將明文按照每行6列的形式排在矩陣中,形成如下形式: a t t a c k b e g i n s a t f i v e 根據(jù)密鑰ciphe

9、r中各字母在字母表中出現(xiàn)的先后順序,給定一個置換: 1 2 3 4 5 6 F= 1 4 5 3 2 6 1根據(jù)上面的置換,將原有矩陣中的字母按照第1列,第4列,第5列,第3列,第2列,第6列的順序排列,則有下面形式: a a c t t k b i n g e s a i v f t e 從而得到密文:abatgftetcnvaiikse 其解密的過程是根據(jù)密鑰的字母數(shù)作為列數(shù),將密文按照列,行的順序?qū)懗?再根據(jù)由密鑰給出的矩陣置換產(chǎn)生新的矩陣,從而恢復明文. 四、 實驗步驟(1)根據(jù)實驗原理部分對替代密碼算法的介紹,自己創(chuàng)建明文信息,并選擇一個密鑰k,編寫替代密碼算法的實現(xiàn)程序,實現(xiàn)加密和

10、解密操作. (2)根據(jù)實驗原理部分對置換密碼算法的介紹,自己創(chuàng)建明文信息,并選擇一個密鑰,編寫置換密碼算法的實現(xiàn)程序,實現(xiàn)加密和解密操作.五:實驗結(jié)果:1:L2:abatgftetcnvaiikse六、實驗思考題1:替代密碼的原理是什么?2:置換密碼的原理是什么?實驗三 DES加解密算法的實現(xiàn)一、實驗目的及任務:掌握DES加密算法的加解密過程。二、實驗環(huán)境VC或TC編程環(huán)境;主機操作系統(tǒng)為Windows2000或Windows XP;三、 實驗原理要深入理解對稱加密算法,掌握DES加密過程。具備一定的C語言編程技能。DES( Data DES( Data Encryption Standard

11、)算法,于1977年得到美國政府的正式許可,是一種用56位密鑰來加密64位數(shù)據(jù)的方法。DES算法以被應用于許多需要安全加密的場合。(一)、密鑰生成1、變換密鑰 取得64位的密鑰,每個第8位作為奇偶校驗位。 2、變換密鑰。 (1)、舍棄64位密鑰中的奇偶校驗位,根據(jù)下表(PC-1)進行密鑰變換得到56位的密鑰,在變換中,奇偶校驗位以被舍棄。 (2)、將變換后的密鑰分為兩個部分,開始的28位稱為C0,最后的28位稱為D0。(3)生成16個子密鑰,初始I=1。 (i)、同時將CI、DI左移1位或2位,根據(jù)I值決定左移的位數(shù)。(ii)、將CIDI作為一個整體按下表(PC-2)變換,得到48位的KI (

12、iii)、從1-2-3-1處循環(huán)執(zhí)行,直到K16被計算完成。 (二)、處理64位的數(shù)據(jù) 1、取得64位的數(shù)據(jù),如果數(shù)據(jù)長度不足64位,應該將其擴展為64位(例如補零) 2、將64位數(shù)據(jù)按下表變換(IP) 3、將變換后的數(shù)據(jù)分為兩部分,開始的32位稱為L0,最后的32位稱為R0。4、用16個子密鑰加密數(shù)據(jù),初始I=1。 (1)、將32位的RI-1按下表(E)擴展為48位的EI-1 (2)、異或EI-1和KI,即EI-1 XOR KI (3)、將異或后的結(jié)果分為8個6位長的部分,第1位到第6位稱為B1,第7位到第12位稱為B2,依此類推,第43位到第48位稱為B8。 (4)、按S表變換所有的BJ,

13、初始J=1。所有在S表的值都被當作4位長度處理。 (i)將BJ的第1位和第6位組合為一個2位長度的變量M,M作為在SJ中的行號。 (ii)、將BJ的第2位到第5位組合,作為一個4位長度的變量N,N作為在SJ中的列號。(iii)、用SJMN來取代BJ。 (iv)、從(i)處循環(huán)執(zhí)行,直到B8被替代完成。(5)、將B1到B8組合,按下表(P)變換,得到P。 (6)、異或P和LI-1結(jié)果放在RI,即RI=P XOR LI-1。 (7)、LI=RI-1 (8)、從2-4-1處開始循環(huán)執(zhí)行,直到K16被變換完成。 5、組合變換后的R16L16(注意:R作為開始的32位),按下表(IP-1)變換得到最后的

14、結(jié)果。 四、 實驗步驟利用編程語言實現(xiàn)DES加解密算法。1、 編程:包含的功能函數(shù)有:static void DES(char Out8, char In8, const SUBKEY_P pskey, bool Type);/標準DES 加/解密static void SETKEY(const char* Key, int len);/ 設置密鑰static void Set_SubKey(SUBKEY_P pskey, const char Key8);/ 設置子密鑰static void F_FUNCTION(bool In32, const bool Ki48);/ f 函數(shù)完成擴展置

15、換、S-盒代替和P 盒置換static void S_BOXF(bool Out32, const bool In48);/ S-盒代替函數(shù)static void TRANSFORM(bool *Out, bool *In, const char *Table, int len);/ 變換函數(shù)static void XOR(bool *InA, const bool *InB, int len);/異或函數(shù)static void CYCLELEFT(bool *In, int len, int loop);/ 循環(huán)左移函數(shù)static void ByteToBit(bool *Out, con

16、st char *In, int bits);/ 字節(jié)組轉(zhuǎn)換成位組函數(shù)static void BitToByte(char *Out, const bool *In, int bits);/ 位組轉(zhuǎn)換成字節(jié)組函數(shù)2、 調(diào)試3、 運行結(jié)果4、 存盤五、實驗結(jié)果加密:Key: 0x30 0x30 0x30 0x30.0x30(8個字節(jié))Data: 0x31 0x31 0x31 0x31.0x31(8個字節(jié))Mode: Encryption結(jié)果:65 5e a6 28 cf 62 58 5f解密:Key: 0x31 0x31.0x31(8個0x31)Data: 65 5e a6 28 cf 62 5

17、8 5fMode: Decryption結(jié)果:0x31 0x31.0x31(8個0x31)六、實驗思考題DES算法主要有哪幾部分?可以畫出流程七、DES源程序(僅供參考) / <summary> / DES加密 / </summary> / <param name="Data">被加密的明文</param> / <param name="Key">密鑰</param> / <param name="Vector">向量</param> /

18、<returns>密文</returns> public static Byte DESEncrypt(Byte Data, String Key, String Vector) Byte bKey = new Byte8; Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length), bKey, bKey.Length); Byte bVector = new Byte8; Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(bVector.Length), b

19、Vector, bVector.Length); Byte Cryptograph = null; / 加密后的密文 DESCryptoServiceProvider EncryptProvider = new DESCryptoServiceProvider(); EncryptProvider.Mode = CipherMode.CBC; EncryptProvider.Padding = PaddingMode.Zeros; try / 開辟一塊內(nèi)存流 using (MemoryStream Memory = new MemoryStream() / 把內(nèi)存流對象包裝成加密流對象 usi

20、ng (CryptoStream Encryptor = new CryptoStream(Memory, EncryptProvider.CreateEncryptor(bKey, bVector), CryptoStreamMode.Write) / 明文數(shù)據(jù)寫入加密流 Encryptor.Write(Data, 0, Data.Length); Encryptor.FlushFinalBlock(); Cryptograph = Memory.ToArray(); catch Cryptograph = null; return Cryptograph; / <summary>

21、; / DES解密 / </summary> / <param name="Data">被解密的密文</param> / <param name="Key">密鑰</param> / <param name="Vector">向量</param> / <returns>明文</returns> public static Byte DESDecrypt(Byte Data, String Key, String Vector)

22、Byte bKey = new Byte8; Array.Copy(Encoding.UTF8.GetBytes(Key.PadRight(bKey.Length), bKey, bKey.Length); Byte bVector = new Byte8; Array.Copy(Encoding.UTF8.GetBytes(Vector.PadRight(bVector.Length), bVector, bVector.Length); Byte original = null; DESCryptoServiceProvider CryptoProvider = new DESCrypto

23、ServiceProvider(); CryptoProvider.Mode = CipherMode.CBC; CryptoProvider.Padding = PaddingMode.Zeros; try / 開辟一塊內(nèi)存流,存儲密文 using (MemoryStream Memory = new MemoryStream(Data) / 把內(nèi)存流對象包裝成加密流對象 using (CryptoStream Decryptor = new CryptoStream(Memory, CryptoProvider.CreateDecryptor(bKey, bVector), CryptoS

24、treamMode.Read) / 明文存儲區(qū) using (MemoryStream originalMemory = new MemoryStream() Byte Buffer = new Byte1024; Int32 readBytes = 0; while (readBytes = Decryptor.Read(Buffer, 0, Buffer.Length) > 0) originalMemory.Write(Buffer, 0, readBytes); original = originalMemory.ToArray(); catch original = null;

25、 return original; 實驗四 RSA加解密算法的實現(xiàn)一、實驗目的及任務:掌握RSA加密算法的加解密過程。二、實驗環(huán)境VC或TC編程環(huán)境;主機操作系統(tǒng)為Windows2000或Windows XP;三、 實驗原理RSA加密算法是一種非對稱加密算法。在公鑰加密標準和電子商業(yè)中RSA被廣泛使用。RSA是1977年由羅納德·李維斯特(Ron Rivest)、阿迪·薩莫爾、(Adi Shamir)和倫納德·阿德曼(Leonard Adleman)一起提出的。當時他們?nèi)硕荚诼槭±砉W院工作。RSA就是他們?nèi)诵帐祥_頭字母拼在一起組成的。RSA算法的可靠性基于分

26、解極大的整數(shù)是很困難的。假如有人找到一種很快的分解因子的算法的話,那么用RSA加密的信息的可靠性就肯定會極度下降。但找到這樣的算法的可能性是非常小的。今天只有短的RSA鑰匙才可能被強力方式解破。到2008年為止,世界上還沒有任何可靠的攻擊RSA算法的方式。只要其鑰匙的長度足夠長,用RSA加密的信息實際上是不能被解破的。1、公鑰和私鑰的產(chǎn)生假設Alice想要通過一個不可靠的媒體接收Bob的一條私人訊息。她可以用以下的方式來產(chǎn)生一個公鑰和一個密鑰:隨意選擇兩個大的質(zhì)數(shù)p和q,p不等于q,計算N=pq。 根據(jù)歐拉函數(shù),不大于N且與N互質(zhì)的整數(shù)個數(shù)為(p-1)(q-1) 選擇一個整數(shù)e與(p-1)(q

27、-1)互質(zhì),并且e小于(p-1)(q-1) 用以下這個公式計算d:d× e 1 (mod (p-1)(q-1) 將p和q的記錄銷毀。 e是公鑰,d是私鑰。d是秘密的,而N是公眾都知道的。Alice將她的公鑰傳給Bob,而將她的私鑰藏起來。2、加密消息假設Bob想給Alice送一個消息m,他知道Alice產(chǎn)生的N和e。他使用起先與Alice約好的格式將m轉(zhuǎn)換為一個小于N的整數(shù)n,比如他可以將每一個字轉(zhuǎn)換為這個字的Unicode碼,然后將這些數(shù)字連在一起組成一個數(shù)字。假如他的信息非常長的話,他可以將這個信息分為幾段,然后將每一段轉(zhuǎn)換為n。用下面這個公式他可以將n加密為c:計算c并不復雜。

28、Bob算出c后就可以將它傳遞給Alice。3、解密消息Alice得到Bob的消息c后就可以利用她的密鑰d來解碼。她可以用以下這個公式來將c轉(zhuǎn)換為n:得到n后,她可以將原來的信息m重新復原。解碼的原理是以及ed 1 (mod p-1)和ed 1 (mod q-1)。費馬小定理證明和 這說明(因為p和q是不同的質(zhì)數(shù))四、 實驗步驟1、求素數(shù)p和q2、求公鑰(e,n):e與(n) = (p1)(q1)互質(zhì)3、求私鑰(d,n):d× e 1 (mod (p-1)(q-1)4、加密過程:c=(Me)mod n5、解密過程:m=(Cd)mod n 五、實驗結(jié)果找兩個素數(shù) : p=47 q=59

29、n=p*q=2773 ,t=(p-1)*(q-1)=2668 尋找 e 滿足 e<t 并且 e 和 t 互素,找到 e=63 ,尋找 d 使 e*d%t =1 得到 d=847 1:加密 m 465,得C= 11182:解密C=1118,得m=465六、思考題RSA算法主要有哪幾部分? 七、RSA源程序(僅供參考)#include<stdio.h>#include<string.h>#include<math.h>#include<stdlib.h>#include<algorithm>using namespace std;/

30、存放素數(shù)int prime1305;/用篩選法求素數(shù) int p10005;void PRIME()int i,i2,k; for(i=0;i<=10000;i+=2) pi=0; for(i=1;i<=10000;i+=2) pi=1; p2=1;p1=0; for(i=3;i<=100;i+=2) if(pi=1) i2=i+i; k=i2+i; while(k<=10000) pk=0; k+=i2; prime0=1;prime1=2;for(i=3;i<=10000;i+=2) if(pi) prime+prime0=i;/ 計算逆元素_int64 mo

31、d(_int64 a,_int64 n)return (a%n+n)%n;void gcd(_int64 a,_int64 b,_int64 &d,_int64 &x,_int64 &y)if(b=0) d=a; x=1; y=0; return; gcd(b,a%b,d,y,x); y-=x*(a/b);/a-1 mod n_int64 Inv(_int64 a,_int64 n) / 計算逆元素_int64 d,x,y;gcd(a,n,d,x,y); if(d=1) return mod(x,n);else return -1;/求兩個數(shù)的最大公約數(shù)_int64 G

32、CD(_int64 n,_int64 m)_int64 t,r;if(n<m) t=n; n=m; m=t;while(r=n%m)!=0) n=m; m=r;return m;/x=ab(mod n)_int64 ModPow(_int64 a,_int64 b,_int64 n)_int64 d=1,i=0;while(b>=(1<<i) i+;for(-i;i>=0;-i) d=d*d%n; if(b&(1<<i) d=d*a%n;return d;int main()_int64 i,e,d,n,st,ed,eula;_int64 m,

33、c,ans;PRIME();printf("素數(shù)的個數(shù):%dn",prime0);while(scanf("%I64d%I64d",&st,&ed)!=EOF) n=primest*primeed; printf("%I64dn",n); /切忌加密的數(shù)要比n小 scanf("%I64d",&m); /n的Eula數(shù) eula=(primest-1)*(primeed-1); /找一個與eula互質(zhì)的數(shù) for(i=2;i<eula;i+) if(GCD(eula,i)=1) e=i;

34、 break; /上面找到了公開密鑰n-e d=Inv(e,eula); printf("e=%I64dn",e); printf("d=%I64dn",d); /上面找到了私密鑰n-d printf("明文=%I64dn",m); c=ModPow(m,e,n); printf("密文=%I64dn",c); ans=ModPow(c,d,n); printf("明文=%I64dn",ans); /輸出公鑰 printf("公鑰:%I64d %I64dn",e,n); /輸

35、出密鑰 printf("密鑰:%I64d %I64dn",d,n);return 0;實驗五 認證系統(tǒng)的設計與實現(xiàn)一、實驗目的及任務1、掌握關系數(shù)據(jù)庫系統(tǒng)的基礎知識和基本原理。2、掌握一種關系數(shù)據(jù)庫管理系統(tǒng),如:SQL Server3、掌握一種軟件開發(fā)工具,如VC或VB4、掌握計算機網(wǎng)絡基礎知識及網(wǎng)絡數(shù)據(jù)傳輸協(xié)議:TCP/IP5、能應用VC或VB等開發(fā)工具進行Windows Socket編寫程序6、掌握一種對稱加密算法原理,如:DES,用此算法對數(shù)據(jù)進行加解密,并能編寫程序?qū)崿F(xiàn)7、掌握一種非對稱加密算法原理,如:RSA,用此算法對數(shù)據(jù)進行加解密,并能編程程序?qū)崿F(xiàn)8、掌握客戶

36、/服務器模式的工作原理9、編程實現(xiàn)認證系統(tǒng),調(diào)試所編程序10、觀察程序運行結(jié)果二、實驗環(huán)境1、客戶機(普通PC機,安裝VC或VB等開發(fā)工具) 1臺2、服務器(普通PC機,安裝VC或VB等開發(fā)工具, 關系數(shù)據(jù)庫管理系統(tǒng)SQL Server) 1臺三、實驗原理隨著Internet的飛速發(fā)展,網(wǎng)絡安全的地位日益突出。網(wǎng)絡的安全措施應是能全方位地針對各種不同的威脅,這樣才能確保網(wǎng)絡信息的保密性、完整性和可用性。作為安全服務中的一種-實體認證尤為重要。在一個公開的分布式網(wǎng)絡環(huán)境中,工作站上的用戶希望訪問分布在網(wǎng)絡上的服務器資源。但網(wǎng)絡上的資源僅允許授權(quán)用戶的特定權(quán)限的訪問,因此,在分布式網(wǎng)絡中,必須提供

37、一種機制來對用戶的身份進行認證?,F(xiàn)在常用的一些認證協(xié)議是為TCP/IP網(wǎng)絡設計的基于Client/Server模式的三方驗證協(xié)議,廣泛應用于Internet服務的訪問,網(wǎng)絡中的認證協(xié)議服務起著可信仲裁者的作用。認證協(xié)議基于對稱密碼體制或非對稱密碼體制, 可提供安全的客體認證。用戶在客戶機上登錄,在登錄界面上,輸入用戶名User和密碼Password,用戶名以正常字符顯示,密碼以星號顯示,為了防止密碼在網(wǎng)上傳輸被竊聽者獲取,用戶輸入的密碼在客戶機上加密Ek(Password),所以在網(wǎng)上傳輸?shù)氖墙?jīng)過加密的用戶密碼Ek(Password)。由于偷聽者不知密鑰K,所以即使都到信息Ek(Passwor

38、d),也得不到用戶的密碼Password服務器接收客戶機傳輸過來的信息,提取用戶名User密文Ek(Password),在服務器端對密文解密,Dk(Ek(Password)))= Password,得到用戶的密碼Password。管理員在服務器數(shù)據(jù)庫中,讀出庫中存貯的用戶名與密碼,與接收來的用戶名與密碼相比較,如果相等,則為合法用戶,如果不相等,則為非法用戶。流程圖如下:(1)基于對稱密碼體制 客戶機端 網(wǎng)絡傳輸 服務器端 Password PasswordDEE K EK(Password) K (a) 常規(guī)加密:保密和鑒別(2) 客戶機端 網(wǎng)絡傳輸 Password PasswordDEE

39、 KUb EKUb(Passwor) KRb (b) 公開密鑰加密:保密性此實驗只是認識協(xié)議的簡單模擬,實際應用的網(wǎng)絡安全認證協(xié)議比此復雜的多,特此說明。四、實驗步驟客戶機端:(一):編寫程序,實現(xiàn)用戶登錄界面。(二):編寫程序,實現(xiàn)對用戶密碼的加密 1:選用對稱密碼算法,如DES假定明文m和密鑰k都是64比特的0,1符號串。設m=m1m2m64k=k1k2k64mi,ki=0或1,i=1,2,64加密過程表達如下:DES(m)=IP-1·T16·T15·T2·T1·IP(m)迭代循環(huán)次數(shù)為16輪,其中T是每輪迭代。 2:選用非對稱密碼算法,如

40、RSA使用RSA有三個階段。(1)、RSA階段1:確定公鑰和私鑰1)選擇兩個大素數(shù),P和Q。 2)計算N = P * Q。3)計算f(n) = (P - 1)(Q 1)。4)選擇 e,其中 1 < e < n-1 且 GCD (e, f(n) = 1。5)計算d,其中 ed = 1 mod f(n) (使用擴展的歐幾里德算法) 6) (e,n)作為公鑰,(d,n)作為私鑰。(2)、RSA階段2:加密信息 為了使用RSA加密消息M,你必須進行下列加密運算:C=Memod n,其中C 是你的密文,發(fā)送C。(3)、RSA階段3:解密信息為了使用RSA解密密文C,你必須進行下列解密運算為:M=Cdmod n ,其中M是你的原

溫馨提示

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

評論

0/150

提交評論