《网络安全》课程实验指导书编写:姚传茂审阅:2009年月9月10日实验一系统安全设置一、实验目的及任务:掌握对Window200系统进行安全设置的过程。二、实验环境主机操作系统为Windows2000或WindowsXP;三、实验原理要深入理解操作系统安全的定义,具备一定的操作系统设置技能。四、实验步骤系统登陆用户账号保护设置、关闭不必要的服务和端口、开启各项安全策略。1、停止Guest账号在计算机管理的用户里面把Guest账号禁用。为了保险起见,最好给Guest加一个复杂的密码。你可以打开记事本,在里面输入一串包含特殊字符、数字、字母的长字符串,然后把它作为Guest用户的密码拷进去。2、限制用户数量去掉所有的DuplicateUser用户、测试用户、共享用户等等。用户组策略设置相应权限,并且经常检查系统的用户,删除已经不再使用的用户。这些用户很多时候都是黑客们入侵系统的突破口。3、多个管理员账号、管理员账号改名创建一个一般权限用户用来收信以及处理一些日常事物,另一个拥有Administrators权限的用户只在需要的时候使用。将Administrator管理员用户名更改为一个一般的用户名。4、陷阱账号创建一个名为“Administrator”的本地用户,把它的权限设置成最低,什么事也干不了的那种,并且加上一个超过10位的超级复杂密码。。5、更改默认权限任何时候都不要把共享文件的用户设置成“Everyone”组,包括打印共享,默认的属性就是“Everyone”组的,一定不要忘了改。6、安全密码、屏幕保护密码设置足够强度的管理员密码,并定期更改安全密码。在桌面上单击右键,“属性”,“屏幕保护程序”,选择屏幕保护程序,并点击“设置”按钮设置屏保时间和密码。7、开启操作系统安全策略—审核策略、密码策略、账户策略使用用户策略,分别设置复位用户锁定计数器时间为20分钟,用户锁定时间为20分钟,用户锁定阈值为3次;注意应用密码策略,如启用密码复杂性要求,设置密码长度最小值为6位,设置强制密码历史为5次,时间为42天。8、关闭不必要的服务、端口关闭端口意味着减少功能,在安全和功能上面需要你做一点决策。如果服务器安装在防火墙的后面,冒险就会少些。但是,永远不要认为你可以高枕无忧了。用端口扫描器扫描系统已开放的端口,确定系统开放的哪些服务可能引起黑客入侵。在系统目录中的\system32\drivers\etc\services文件中有知名端口和服务的对照表可供参考。具体方法为:打开“网上邻居/属性/本地连接/属性/internet协议(TCP/IP)/属性/高级/选项/TCP/IP筛选/属性”打开“TCP/IP筛选”,添加需要的TCP、UDP协议即可。9、注册表设置:不显示上次登陆名、禁止建立空连接。默认情况下,登录对话框中会显示上次登录的用户名。这使得别人可以很容易地得到系统的一些用户名,进而做密码猜测。修改注册表可以不让对话框里显示上次登录的用户名。方法为:打开注册表编辑器并找到注册表项“HKLM\Software\Microsoft\WindowsT\CurrentVersion\Winlogon\Dont-DisplayLastUserName”,把REG_SZ的键值改成1。默认情况下,任何用户都可通过空连接连上服务器,进而枚举出账号,猜测密码。我们可以通过修改注册表来禁止建立空连接:即把“Local_Machine\System\CurrentControlSet\Control\LSA-RestrictAnonymous”的值改成“1”即可。五、实验结果:Window2000操作系统进行了安全设置六、实验思考题阐述系统安全设置的重要性。实验二传统密码算法一、实验目的及任务通过编程实现替代密码算法和置换密码算法,加深对古典密码体制的了解,为深入学习密码学奠定基础二、实验环境运行Windows操作系统的PC机,具有C语言编译环境。三、实验原理古典密码算法历史上曾被广泛应用,大都比较简单,使用手工和机械操作来实现加密和解密.它的主要应用对象是文字信息,利用密码算法实现文字信息的加密和解密.下面介绍两种常见的具有代表性的古典密码算法,以帮助读者对密码算法建立一个初步的印象.1.替代密码替代密码算法的原理是使用替代法进行加密,就是将明文中的字符用其它字符替代后形成密文.例如:明文字母a,b,c,d,用D,E,F,G做对应替换后形成密文.替代密码包括多种类型,如单表替代密码,多明码替代密码,多字母替代密码,多表替代密码——.下面我们介绍一种典型的单表替代密码,恺撒(caesar)密码,又叫循环移位密码.它的加密方法,就是将明文中的每个字母用此字符在字母表中后面第k个字母替代.它的加密过程可以表示为下面的函数:E(m)=(m+k)modn其中:m为明文字母在字母表中的位置数;n为字母表中的字母个数;k为密钥;E(m)为密文字母在字母表中对应的位置数.例如,对于明文字母H,其在字母表中的位置数为8,设k=4,则按照上式计算出来的密文为L:E(8)=(m+k)modn=(8+4)mod26=12=L2.置换密码置换密码算法的原理是不改变明文字符,只将字符在明文中的排列顺序改变,从而实现明文信息的加密.置换密码有时又称为换位密码.矩阵换位法是实现置换密码的一种常用方法.它将明文中的字母按照给的顺序安排在一个矩阵中,然后用根据密钥提供的顺序重新组合矩阵中字母,从而形成密文.例如,明文为attackbeginsatfive,密钥为cipher,将明文按照每行6列的形式排在矩阵中,形成如下形式:attackbeginsatfive根据密钥cipher中各字母在字母表中出现的先后顺序,给定一个置换:123456F=1453261根据上面的置换,将原有矩阵中的字母按照第1列,第4列,第5列,第3列,第2列,第6列的顺序排列,则有下面形式:aacttkbingesaivfte从而得到密文:abatgftetcnvaiikse其解密的过程是根据密钥的字母数作为列数,将密文按照列,行的顺序写出,再根据由密钥给出的矩阵置换产生新的矩阵,从而恢复明文.四、实验步骤(1)根据实验原理部分对替代密码算法的介绍,自己创建明文信息,并选择一个密钥k,编写替代密码算法的实现程序,实现加密和解密操作.(2)根据实验原理部分对置换密码算法的介绍,自己创建明文信息,并选择一个密钥,编写置换密码算法的实现程序,实现加密和解密操作.五:实验结果:1:L2:abatgftetcnvaiikse六、实验思考题1:替代密码的原理是什么?2:置换密码的原理是什么?实验三DES加解密算法的实现一、实验目的及任务:掌握DES加密算法的加解密过程。二、实验环境VC或TC编程环境;主机操作系统为Windows2000或WindowsXP;三、实验原理要深入理解对称加密算法,掌握DES加密过程。具备一定的C语言编程技能。DES(DataDES(DataEncryptionStandard)算法,于1977年得到美国政府的正式许可,是一种用56位密钥来加密64位数据的方法。DES算法以被应用于许多需要安全加密的场合。(一)、密钥生成1、变换密钥取得64位的密钥,每个第8位作为奇偶校验位。2、变换密钥。(1)、舍弃64位密钥中的奇偶校验位,根据下表(PC-1)进行密钥变换得到56位的密钥,在变换中,奇偶校验位以被舍弃。(2)、将变换后的密钥分为两个部分,开始的28位称为C[0],最后的28位称为D[0]。(3)生成16个子密钥,初始I=1。(i)、同时将C[I]、D[I]左移1位或2位,根据I值决定左移的位数。(ii)、将C[I]D[I]作为一个整体按下表(PC-2)变换,得到48位的K[I](iii)、从1-2-3-1处循环执行,直到K[16]被计算完成。(二)、处理64位的数据1、取得64位的数据,如果数据长度不足64位,应该将其扩展为64位(例如补零)2、将64位数据按下表变换(IP)3、将变换后的数据分为两部分,开始的32位称为L[0],最后的32位称为R[0]。4、用16个子密钥加密数据,初始I=1。(1)、将32位的R[I-1]按下表(E)扩展为48位的E[I-1](2)、异或E[I-1]和K[I],即E[I-1]XORK[I](3)、将异或后的结果分为8个6位长的部分,第1位到第6位称为B[1],第7位到第12位称为B[2],依此类推,第43位到第48位称为B[8]。(4)、按S表变换所有的B[J],初始J=1。所有在S表的值都被当作4位长度处理。(i)将B[J]的第1位和第6位组合为一个2位长度的变量M,M作为在S[J]中的行号。(ii)、将B[J]的第2位到第5位组合,作为一个4位长度的变量N,N作为在S[J]中的列号。(iii)、用S[J][M][N]来取代B[J]。(iv)、从(i)处循环执行,直到B[8]被替代完成。(5)、将B[1]到B[8]组合,按下表(P)变换,得到P。(6)、异或P和L[I-1]结果放在R[I],即R[I]=PXORL[I-1]。(7)、L[I]=R[I-1](8)、从2-4-1处开始循环执行,直到K[16]被变换完成。5、、组合变换后的R[16]L[16](注意:R作为开始的32位),按下表(IP-1)变换得到最后的结果。四、实验步骤利用编程语言实现DES加解密算法。1、编程:包含的功能函数有:staticvoidDES(charOut[8],charIn[8],constSUBKEY_Ppskey,boolType);//标准DES加/解密staticvoidSETKEY(constchar*Key,intlen);//设置密钥staticvoidSet_SubKey(SUBKEY_Ppskey,constcharKey[8]);//设置子密钥staticvoidF_FUNCTION(boolIn[32],constboolKi[48]);//f函数完成扩展置换、S-盒代替和P盒置换staticvoidS_BOXF(boolOut[32],constboolIn[48]);//S-盒代替函数staticvoidTRANSFORM(bool*Out,bool*In,constchar*Table,intlen);//变换函数staticvoidXOR(bool*InA,constbool*InB,intlen);//异或函数staticvoidCYCLELEFT(bool*In,intlen,intloop);//循环左移函数staticvoidByteToBit(bool*Out,constchar*In,intbits);//字节组转换成位组函数staticvoidBitToByte(char*Out,constbool*In,intbits);//位组转换成字节组函数2、调试3、运行结果4、存盘五、实验结果加密:Key:0x300x300x300x30......0x30(8个字节)Data:0x310x310x310x31......0x31(8个字节)Mode:Encryption结果:655ea628cf62585f解密:Key:0x310x31......0x31(8个0x31)Data:655ea628cf62585fMode:Decryption结果:0x310x31......0x31(8个0x31)六、实验思考题DES算法主要有哪几部分?可以画出流程七、DES源程序(仅供参考)///summary///DES加密////summary///paramname=Data被加密的明文/param///paramname=Key密钥/param///paramname=Vector向量/param///returns密文/returnspublicstaticByte[]DESEncrypt(Byte[]Data,StringKey,StringVector){Byte[]bKey=ne