《网络安全》课程实验指导书_第1页
《网络安全》课程实验指导书_第2页
《网络安全》课程实验指导书_第3页
《网络安全》课程实验指导书_第4页
《网络安全》课程实验指导书_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、网络安全课程实验指导书 编写:姚传茂 审阅:2009年月9月10日实验一 系统安全设置一、实验目的及任务:掌握对Window200系统进行安全设置的过程。二、实验环境主机操作系统为Windows2000或Windows XP;三、 实验原理要深入理解操作系统安全的定义,具备一定的操作系统设置技能。四、 实验步骤 系统登陆用户账号保护设置、关闭不必要的服务和端口、开启各项安全策略。1、停止Guest账号在计算机管理的用户里面把Guest账号禁用。为了保险起见,最好给Guest加一个复杂的密码。你可以打开记事本,在里面输入一串包含特殊字符、数字、字母的长字符串,然后把它作为Guest用户的密码拷进

2、去。2、限制用户数量去掉所有的Duplicate User用户、测试用户、共享用户等等。用户组策略设置相应权限,并且经常检查系统的用户,删除已经不再使用的用户。这些用户很多时候都是黑客们入侵系统的突破口。3、多个管理员账号、管理员账号改名创建一个一般权限用户用来收信以及处理一些日常事物,另一个拥有Administrators 权限的用户只在需要的时候使用。将Administrator管理员用户名更改为一个一般的用户名。4、陷阱账号创建一个名为“Administrator”的本地用户,把它的权限设置成最低,什么事也干不了的那种,并且加上一个超过10位的超级复杂密码。5、更改默认权限任何时候都不要

3、把共享文件的用户设置成“Everyone”组,包括打印共享,默认的属性就是“Everyone”组的,一定不要忘了改。6、安全密码、屏幕保护密码设置足够强度的管理员密码,并定期更改安全密码。在桌面上单击右键,“属性”,“屏幕保护程序”,选择屏幕保护程序,并点击“设置”按钮设置屏保时间和密码。7、开启操作系统安全策略审核策略、密码策略、账户策略使用用户策略,分别设置复位用户锁定计数器时间为20分钟,用户锁定时间为20分钟,用户锁定阈值为3次;注意应用密码策略,如启用密码复杂性要求,设置密码长度最小值为6位 ,设置强制密码历史为5次,时间为42天。8、关闭不必要的服务、端口关闭端口意味着减少功能,在

4、安全和功能上面需要你做一点决策。如果服务器安装在防火墙的后面,冒险就会少些。但是,永远不要认为你可以高枕无忧了。用端口扫描器扫描系统已开放的端口,确定系统开放的哪些服务可能引起黑客入侵。在系统目录中的system32driversetcservices 文件中有知名端口和服务的对照表可供参考。具体方法为:打开“ 网上邻居/属性/本地连接/属性/internet 协议(TCP/IP)/属性/高级/选项/TCP/IP筛选/属性” 打开“TCP/IP筛选”,添加需要的TCP、UDP协议即可。9、注册表设置:不显示上次登陆名、禁止建立空连接。默认情况下,登录对话框中会显示上次登录的用户名。这使得别人可

5、以很容易地得到系统的一些用户名,进而做密码猜测。修改注册表可以不让对话框里显示上次登录的用户名。方法为:打开注册表编辑器并找到注册表项“HKLMSoftwareMicrosoftWindows TCurrentVersionWinlogonDont-DisplayLastUserName”,把REG_SZ的键值改成1。默认情况下,任何用户都可通过空连接连上服务器,进而枚举出账号,猜测密码。我们可以通过修改注册表来禁止建立空连接:即把“ Local_MachineSystemCurrentControlSetControlLSA-RestrictAnonymous” 的值改成“1”即可。五、实验

6、结果:Window2000操作系统进行了安全设置六、实验思考题阐述系统安全设置的重要性。实验二 传统密码算法一、实验目的及任务通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础二、实验环境运行Windows操作系统的PC机,具有C语言编译环境。三、实验原理古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密.它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密.下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象.1. 替代密码 替代密码算法的原理是使用替代法进行加密,就是将明文中的字

7、符用其它字符替代后形成密文.例如:明文字母a,b,c,d ,用D,E,F,G做对应替换后形成密文. 替代密码包括多种类型,如单表替代密码,多明码替代密码,多字母替代密码,多表替代密码.下面我们介绍一种典型的单表替代密码,恺撒(caesar)密码,又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数: E(m)=(m+k) mod n 其中:m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数. 例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来

8、的密文为L: E(8) = (m+k) mod n = (8+4) mod 26 = 12 = L 2. 置换密码 置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密.置换密码有时又称为换位密码. 矩阵换位法是实现置换密码的一种常用方法.它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文.例如,明文为attack begins at five,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式: a t t a c k b e g i n s a t f i v e 根据密钥ciphe

9、r中各字母在字母表中出现的先后顺序,给定一个置换: 1 2 3 4 5 6 F= 1 4 5 3 2 6 1根据上面的置换,将原有矩阵中的字母按照第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 其解密的过程是根据密钥的字母数作为列数,将密文按照列,行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文. 四、 实验步骤(1)根据实验原理部分对替代密码算法的介绍,自己创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和

10、解密操作. (2)根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作.五:实验结果:1:L2:abatgftetcnvaiikse六、实验思考题1:替代密码的原理是什么?2:置换密码的原理是什么?实验三 DES加解密算法的实现一、实验目的及任务:掌握DES加密算法的加解密过程。二、实验环境VC或TC编程环境;主机操作系统为Windows2000或Windows XP;三、 实验原理要深入理解对称加密算法,掌握DES加密过程。具备一定的C语言编程技能。DES( Data DES( Data Encryption Standard

11、)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。DES算法以被应用于许多需要安全加密的场合。(一)、密钥生成1、变换密钥 取得64位的密钥,每个第8位作为奇偶校验位。 2、变换密钥。 (1)、舍弃64位密钥中的奇偶校验位,根据下表(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。 (2)、将变换后的密钥分为两个部分,开始的28位称为C0,最后的28位称为D0。(3)生成16个子密钥,初始I=1。 (i)、同时将CI、DI左移1位或2位,根据I值决定左移的位数。(ii)、将CIDI作为一个整体按下表(PC-2)变换,得到48位的KI (

12、iii)、从1-2-3-1处循环执行,直到K16被计算完成。 (二)、处理64位的数据 1、取得64位的数据,如果数据长度不足64位,应该将其扩展为64位(例如补零) 2、将64位数据按下表变换(IP) 3、将变换后的数据分为两部分,开始的32位称为L0,最后的32位称为R0。4、用16个子密钥加密数据,初始I=1。 (1)、将32位的RI-1按下表(E)扩展为48位的EI-1 (2)、异或EI-1和KI,即EI-1 XOR KI (3)、将异或后的结果分为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)处循环执行,直到B8被替代完成。(5)、将B1到B8组合,按下表(P)变换,得到P。 (6)、异或P和LI-1结果放在RI,即RI=P XOR LI-1。 (7)、LI=RI-1 (8)、从2-4-1处开始循环执行,直到K16被变换完成。 5、组合变换后的R16L16(注意:R作为开始的32位),按下表(IP-1)变换得到最后的

14、结果。 四、 实验步骤利用编程语言实现DES加解密算法。1、 编程:包含的功能函数有: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 函数完成扩展置

15、换、S-盒代替和P 盒置换static void S_BOXF(bool Out32, const bool In48);/ S-盒代替函数static void TRANSFORM(bool *Out, bool *In, const char *Table, int len);/ 变换函数static void XOR(bool *InA, const bool *InB, int len);/异或函数static void CYCLELEFT(bool *In, int len, int loop);/ 循环左移函数static void ByteToBit(bool *Out, con

16、st char *In, int bits);/ 字节组转换成位组函数static void BitToByte(char *Out, const bool *In, int bits);/ 位组转换成字节组函数2、 调试3、 运行结果4、 存盘五、实验结果加密:Key: 0x30 0x30 0x30 0x30.0x30(8个字节)Data: 0x31 0x31 0x31 0x31.0x31(8个字节)Mode: Encryption结果: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结果: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 / 开辟一块内存流 using (MemoryStream Memory = new MemoryStream() / 把内存流对象包装成加密流对象 usi

20、ng (CryptoStream Encryptor = new CryptoStream(Memory, EncryptProvider.CreateEncryptor(bKey, bVector), CryptoStreamMode.Write) / 明文数据写入加密流 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 / 开辟一块内存流,存储密文 using (MemoryStream Memory = new MemoryStream(Data) / 把内存流对象包装成加密流对象 using (CryptoStream Decryptor = new CryptoStream(Memory, CryptoProvider.CreateDecryptor(bKey, bVector), CryptoS

24、treamMode.Read) / 明文存储区 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加解密算法的实现一、实验目的及任务:掌握RSA加密算法的加解密过程。二、实验环境VC或TC编程环境;主机操作系统为Windows2000或Windows XP;三、 实验原理RSA加密算法是一种非对称加密算法。在公钥加密标准和电子商业中RSA被广泛使用。RSA是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔、(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏开头字母拼在一起组成的。RSA算法的可靠性基于分

26、解极大的整数是很困难的。假如有人找到一种很快的分解因子的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。1、公钥和私钥的产生假设Alice想要通过一个不可靠的媒体接收Bob的一条私人讯息。她可以用以下的方式来产生一个公钥和一个密钥:随意选择两个大的质数p和q,p不等于q,计算N=pq。 根据欧拉函数,不大于N且与N互质的整数个数为(p-1)(q-1) 选择一个整数e与(p-1)(q

27、-1)互质,并且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产生的N和e。他使用起先与Alice约好的格式将m转换为一个小于N的整数n,比如他可以将每一个字转换为这个字的Unicode码,然后将这些数字连在一起组成一个数字。假如他的信息非常长的话,他可以将这个信息分为几段,然后将每一段转换为n。用下面这个公式他可以将n加密为c:计算c并不复杂。

28、Bob算出c后就可以将它传递给Alice。3、解密消息Alice得到Bob的消息c后就可以利用她的密钥d来解码。她可以用以下这个公式来将c转换为n:得到n后,她可以将原来的信息m重新复原。解码的原理是以及ed 1 (mod p-1)和ed 1 (mod q-1)。费马小定理证明和 这说明(因为p和q是不同的质数)四、 实验步骤1、求素数p和q2、求公钥(e,n):e与(n) = (p1)(q1)互质3、求私钥(d,n):d× e 1 (mod (p-1)(q-1)4、加密过程:c=(Me)mod n5、解密过程:m=(Cd)mod n 五、实验结果找两个素数 : 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、存放素数int prime1305;/用筛选法求素数 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;/求两个数的最大公约数_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("素数的个数:%dn",prime0);while(scanf("%I64d%I64d",&st,&ed)!=EOF) n=primest*primeed; printf("%I64dn",n); /切忌加密的数要比n小 scanf("%I64d",&m); /n的Eula数 eula=(primest-1)*(primeed-1); /找一个与eula互质的数 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;实验五 认证系统的设计与实现一、实验目的及任务1、掌握关系数据库系统的基础知识和基本原理。2、掌握一种关系数据库管理系统,如:SQL Server3、掌握一种软件开发工具,如VC或VB4、掌握计算机网络基础知识及网络数据传输协议:TCP/IP5、能应用VC或VB等开发工具进行Windows Socket编写程序6、掌握一种对称加密算法原理,如:DES,用此算法对数据进行加解密,并能编写程序实现7、掌握一种非对称加密算法原理,如:RSA,用此算法对数据进行加解密,并能编程程序实现8、掌握客户

36、/服务器模式的工作原理9、编程实现认证系统,调试所编程序10、观察程序运行结果二、实验环境1、客户机(普通PC机,安装VC或VB等开发工具) 1台2、服务器(普通PC机,安装VC或VB等开发工具, 关系数据库管理系统SQL Server) 1台三、实验原理随着Internet的飞速发展,网络安全的地位日益突出。网络的安全措施应是能全方位地针对各种不同的威胁,这样才能确保网络信息的保密性、完整性和可用性。作为安全服务中的一种-实体认证尤为重要。在一个公开的分布式网络环境中,工作站上的用户希望访问分布在网络上的服务器资源。但网络上的资源仅允许授权用户的特定权限的访问,因此,在分布式网络中,必须提供

37、一种机制来对用户的身份进行认证。现在常用的一些认证协议是为TCP/IP网络设计的基于Client/Server模式的三方验证协议,广泛应用于Internet服务的访问,网络中的认证协议服务起着可信仲裁者的作用。认证协议基于对称密码体制或非对称密码体制, 可提供安全的客体认证。用户在客户机上登录,在登录界面上,输入用户名User和密码Password,用户名以正常字符显示,密码以星号显示,为了防止密码在网上传输被窃听者获取,用户输入的密码在客户机上加密Ek(Password),所以在网上传输的是经过加密的用户密码Ek(Password)。由于偷听者不知密钥K,所以即使都到信息Ek(Passwor

38、d),也得不到用户的密码Password服务器接收客户机传输过来的信息,提取用户名User密文Ek(Password),在服务器端对密文解密,Dk(Ek(Password)))= Password,得到用户的密码Password。管理员在服务器数据库中,读出库中存贮的用户名与密码,与接收来的用户名与密码相比较,如果相等,则为合法用户,如果不相等,则为非法用户。流程图如下:(1)基于对称密码体制 客户机端 网络传输 服务器端 Password PasswordDEE K EK(Password) K (a) 常规加密:保密和鉴别(2) 客户机端 网络传输 Password PasswordDEE

39、 KUb EKUb(Passwor) KRb (b) 公开密钥加密:保密性此实验只是认识协议的简单模拟,实际应用的网络安全认证协议比此复杂的多,特此说明。四、实验步骤客户机端:(一):编写程序,实现用户登录界面。(二):编写程序,实现对用户密码的加密 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)迭代循环次数为16轮,其中T是每轮迭代。 2:选用非对称密码算法,如

40、RSA使用RSA有三个阶段。(1)、RSA阶段1:确定公钥和私钥1)选择两个大素数,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 是你的密文,发送C。(3)、RSA阶段3:解密信息为了使用RSA解密密文C,你必须进行下列解密运算为:M=Cdmod n ,其中M是你的原

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论