1、计算机信息安全实验指导书1实验一 对称密钥密码加密解密实验实验学时:2 学时实验类型:设计实验要求:必修一 实验目的1、掌握对称密钥密码体制的基本概念;2、掌握对称密钥密码体制加密/解密的工作原理;3、重点掌握 DES 密码算法加密/解密的基本原理;4、通过用 DES 算法对实际的数据进行加密/解密运算来深刻了解 DES 的运行原理。二 实验内容1、根据 DES 密码算法原理,用 Turbo C2.0 或 Visual C+6.0 设计编写符合DES 密码算法思想的加密/解密程序。三 实验环境1、操作系统:Windows9x/NT/2000/XP2、编程软件:Turbo C2.0 或 Visu
2、al C+6.0四 实验原理1、 DES 算 法 工 作 的 基 本 原 理 :DES 是 基 于 Feistel 密 码 结 构 的 分 组 密 码 , 其入 口 参 数 有 三 个 :key、 data、 mode。 其 中 , key 为 加 密 /解 密 时 使 用 的密 钥 ; data 为 加 密 /解 密 的 数 据 ; mode 为 其 工 作 模 式 : 当 模 式 为 加 密 模式 时 , 明 文 按 照 64 位 进 行 分 组 , 形 成 明 文 分 组 , 此 时 key 用 于 对 数 据加 密 ; 当 模 式 为 解 密 模 式 时 , key 用 于 对 64
3、位 的 密 文 分 组 进 行 解 密 ,以恢 复 明 文 。2、 DES 算 法 共 进 行 16 轮 迭 代 操 作 , 每 轮 中 都 使 用 相 同 的 轮 函 数 F, 如 下 :计算机信息安全实验指导书2F(Ri1,Ki)=p_box(S_boxes(Expand(Ri1) Ki)整个算法的流程如图所示:DES 加密算法流程图(一)、密钥生成1、生成种子密钥 K 使用密钥流生成器生成 64 位(8 个字节)的种子密钥 K,每个字节的第 8 位作为奇偶校验位,不参与实际运算中子密钥的生成过程。 2、生成每一轮迭代中使用的子密钥 ki。 (1) 根据 PC-1 置换进行种子密钥 K 的
4、变换,舍弃 64 位种子密钥 K 中的 8 个奇偶校验位,得到 56 位的密钥。(2) 将变换后的密钥分为左右两部分各 28 位,分别称为 C0和 D0,即 PC-1(K)= C0D0。(3) 生成 16 个子密钥 ki,1i16。 (i) 将 Ci、D i循环左移 1 位或 2 位,根据 i 值由“循环左移表”决定循计算机信息安全实验指导书3环左移的位数,即 计算 Ci=LSi(Ci-1)和 Di=LSi(Di-1),其中,LS 表示循环左移。(ii) 将循环左移后的 Ci和 Di作为一个 56 位的整体按置换表 PC-2 进行变换,得到本轮所使用的 48 位子密钥 ki,即 ki=PC-2
5、(CiDi)(1i16) 。(二)、处理 64 位数据 1、取得 64 位明文分组数据 m,如果数据长度不足 64 位,应该将其扩展为 64位(例如补零) 。2、将 64 位明文分组数据 m 按初始置换表 IP 进行变换,获得 64 位的 m0,并将m0分为左右两部分,前面 32 位记为 L0,后面 32 位记为 R0,即 m0=IP(m)=L0R0 。3、用 16 个子密钥 ki(1i16)加密数据。所用变换公式为:F(Ri1,Ki)=p_box(S_boxes(Expand(Ri1) Ki) (1) 将 32 位的 Ri-1按扩展置换 E 扩展成 48 位;(2) 异或 Ri-1和 ki;
6、(3) 将异或后的结果分为 8 个 6 位长的部分,第 1 位到第 6 位称为 S1,第 7 位到第 12 位称为 S2,依此类推,第 43 位到第 48 位称为 S8; (4) 按 S 盒的变换原理变换所有的 Sj,1j8。每一个 S 盒都是将输入的 6 位数据经过处理后转换成 4 位数据输出。(5) 将 S1到 S8的输出组合成 32 位数据,按 P 置换进行变换,变换的结果就是轮函数 F。 (6) 异或轮函数 F 和 Li-1,结果就是 Ri,即 Ri=Li1 F(Ri1,Ki)(7) Li=Ri1 (8) 循环执行轮函数 F,直到 K16被变换完成。 4、第 16 轮迭代结束后左、右部
7、分各是 L16和 R16,将左右部分交换,作为 64 位的预输出,即 L17=R16,R17=L16。5、将变换后的 R16L16按逆初始置换 IP-1进行变换得到最后的结果,即为密文,即c=IP-1(R16L16)。五 实验步骤计算机信息安全实验指导书4本实验为设计型实验,要求学生自己根据实验原理,自行设计实验步骤,利用 Turbo C2.0 或 Visual C+6.0 编程语言,实现对一个文件进行加密和解密。六 实验结果七 思考题1、DES 算法中大量的置换运算的作用是什么?2、DES 算法中 S 盒变换的作用是什么?3、通过查阅相关资料了解目前破解 DES 算法的基本原理或方法。计算机
8、信息安全实验指导书5实验二 公钥密码加密解密实验实验学时:2 学时实验类型:设计实验要求:必修一 实验目的1、掌握公钥密码体制的基本概念;2、掌握公钥密码体制加密/解密的工作原理;3、重点掌握 RSA 密码算法加密/解密的基本原理;4、通过用 RSA 算法对实际的数据进行加密/解密运算来深刻了解 RSA 的运行原理。二 实验内容1、根据 RSA 密码算法原理,用 Turbo C2.0 或 Visual C+6.0 设计编写符合RSA 密码算法思想的加密/解密程序。三 实验环境1、操作系统:Windows9x/NT/2000/XP2、编程软件:Turbo C2.0 或 Visual C+6.0四
9、 实验原理RSA 算法基于数论构造,是迄今理论上最为完善的非对称密钥密码算法,它的安全性是建立在“大整数的质因子分解和素性检测”这个数论难题的基础上,即将两个大素数相乘在计算上容易实现,而将该乘积分解为两个大素数因计算机信息安全实验指导书6子的计算量则相当大。1、RSA 的密钥产生过程如下:选择两个保密的大素数 p 和 q;计算 n=pq(公开) ;(n)=(p-1)(q-1)(保密) ;随机选取一个整数 e,满足 1e(n)且 gcd(n),e)=1(公开) ;计算 d,满足 ed1(mod (n)(保密) ;说明:d 是 e 在模 (n)下的乘法逆元。因为 e 与 (n)互素,所以其乘法逆
10、元一定存在。得到一对密钥:公钥e,n,私钥p,q,d。2、RSA 的加密过程如下:明文数字化,即将明文转换成数字串。将明文比特串分组,使得每个分组对应的十进制数小于 n,即分组长度小于等于 log2n+1。设第 i 个明文分组对应的数字为 mi,对 mi作加密运算。即将消息 mi以加密指数 e 做乘方,并取模 n,即:c i=mie mod n (0m icount0 = context-count1 = 0; context-state0 = 0x67452301; context-state1 = 0xefcdab89;context-state2 = 0x98badcfe;context
11、-state3 = 0x10325476;void MD5Update(MD5_CTX *context,unsigned char *input,unsigned int inputLen)/MD5 块处理函数unsigned int i,index,partLen;index = (unsigned int)(context-count0 3) if (context-count0 += (UINT4)inputLen count1+;context-count1 += (UINT4)inputLen 29);partLen = 64 - index;if (inputLen = part
12、Len)MD5_memcpy(POINTER)MD5Transform (context-state, context-buffer);for (i = partLen; i + 63 state, index = 0;elsei = 0;MD5_memcpy(POINTER)void MD5Final(unsigned char digest16,MD5_CTX *context)/*完成函数,context 指向上面处理过的结构体,digest16是用来存储结果的缓冲区这个函数对未完成的信息先进行填充,然后处理,并把最终结果存储在 digest16中*/unsigned char bits
13、8;unsigned int index, padLen;Encode (bits, context-count, 8);index = (unsigned int)(context-count0 3) padLen = (index state, 16);MD5_memset (POINTER)context, 0, sizeof (*context);计算机信息安全实验指导书163、主函数#include “md5.c“#include #include #include #define RAND_MAX 0x7fffvoid main(void)unsigned char *inputD
14、ata;char *inp = (char *)malloc(sizeof(char)*1024);inputData=(unsigned char*)inp;unsigned char* hashstr;int i,x;time_t t; /这两行保证每次产生的随机数不同int len;srand( (unsigned) time( len = rand()*200/RAND_MAX;inplen=0;for(i=0;i9 printf(“明文字符串是: %snn“,inp);if (hashstr = (unsigned char *) malloc(17) = NULL)printf(“
15、Not enough memory to allocate buffern“);计算机信息安全实验指导书17exit(1); / terminate program if out of memory MD5String(inputData,hashstr); /调用 MD5 算法实现函数printf(“明文经过 MD5 得到的消息摘要是:%sn“,hashstr);七 实验结果由于在程序中使用了语句 int i,x;和 time_t t;,保证了每次产生的明文信息均不同,故经过 MD5 算法运算,得到的消息摘要 MD(x)也是不相同的。八 思考题1、简述消息认证码 MAC 的基本原理。2、分析
16、 MAC 与消息摘要的区别。实验四 软件安全实验实验学时:2 学时计算机信息安全实验指导书18实验类型:设计实验要求:必修一 实验目的计算机系统漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所维护的 Web 服务器的各种 TCP 端口的分配、提供的服务、Web 服务软件版本和这些服务及软件呈现在 Internet上的安全漏洞,从而及时修补漏洞,保障计算机系统的安全。1、了解目前系统存在的典型漏洞。2、学会使用网络扫描和漏洞扫描工具。3、掌握涉及网络安全所采取的防范措施。二 实验内容本次试验所选择的流光漏洞扫描软件不仅仅是操作系统漏洞扫描工具,还是
17、一个功能强大的渗透测试工具。流光自带了猜解器和入侵工具,可以方便地利用扫描出的漏洞进行入侵。通过试验,需要掌握流光漏洞扫描软件的使用。三 实验环境1、操作系统:Windows9x/NT/2000/XP2、两台预装 Windows2000/XP 的计算机,通过网络相连,其中一台计算机安装 Fluxzy5(流光 5) 。四 实验原理计算机系统漏洞扫描技术的工作原理是:首先,要获得计算机系统在网络服务、版本信息、Web 应用等相关信息,采用模拟攻击的方法,对目标主机系统进行攻击性的安全漏洞扫描。如:弱口令测试等。如果模拟攻击成功,则视为系统存在漏洞。其次,也可以根据系统事先定义的系统安全漏洞库对可能
18、存在的、已知的安全漏洞进行逐项检查,按照规则匹配的原则将扫描结果与安全漏洞库进行比对,如果满足匹配条件,则视为系统存在漏洞。计算机信息安全实验指导书19最后,根据检测结果向系统管理员提供安全性分析报告,作为系统和网络安全整体水平的评估依据。五 实验步骤1、安装流光软件在安装流光时,需要关闭本地的病毒防火墙。启动流光工具后可以看到主界面如图 4-1 所示。图 4-1 流光工具启动界面2、选择【文件】【高级扫描向导】命令,打开【设置】对话框,图 4-2 所示。图 4-2 高级扫描向导设置3、在该对话框中的【起始地址】和【结束地址】文本框中填写本地 IP 地址,【目标系统】下拉列表框可以选择 ALL
19、/Windows/Linux/UNIX, 【检测项目】列表计算机信息安全实验指导书20框选择对目标主机的哪些服务进行漏洞扫描,单击【下一步】按钮,打开【PORTS】对话框,如图 4-3 所示。图 4-3 端口设置4、通过图 4-3 所示对话框可以对扫描的端口进行设置,其中自定义端口扫描范围为 065535。对于本次试验,选中【标准端口扫描】复选框,并单击【下一步】按钮,将打开尝试获取 POP3 的版本信息和用户密码的对话框以及获取FTP 的 Banner、尝试匿名登录、尝试用简单字典对 FTP 账号进行暴力破解的对话框。选择这 3 项后单击【下一步】按钮,将弹出询问获取 SMTP、IMAP和操
20、作系统版本信息以及用户信息的提示,并询问是否扫描 Sun OS/bin/login 远程溢出的对话框。5、之后,将出现扫描 Web 漏洞的信息,对按照事先定义的 CGI 漏洞列表选择不同的漏洞对目标主机进行扫描。其中,默认规则有 2448 条,如图 4-4 所示。计算机信息安全实验指导书21图 4-4 漏洞扫描设置6、单击【下一步】按钮,出现对 MS SQL 2000 数据库漏洞、SA 密码和版本信息扫描对象设置的对话框,如图 4-5 所示。图 4-5 MS SQL 2000 数据库漏洞扫描设置7、单击【下一步】按钮,将对计算机系统的 IPC 漏洞进行扫描,查看是否有空连接、共享资源,获得用户
21、列表并猜解用户密码,如图 4-6 所示。计算机信息安全实验指导书22图 4-6 IPC 漏洞扫描设置8、选择需要进行扫描的选项,如果不选择最后一项,则此软件将对所有用户的密码进行猜解,否则只对管理员用户组的用户密码进行猜解。单击【下一步】按钮,打开如图 4-7 所示的对话框。图 4-7 IIS 漏洞扫描设置9、在这个对话框中,将设置对 IIS 漏洞的扫描选项,包括 Unicode 编码漏洞、FrontPage 扩展、尝试获取 SAM 文件、尝试获取 PcAnyWhere 密码文件。然后单击【下一步】按钮,设置 Finger 扫描、对 Sull OS 尝试获得用户列表以及扫描 RPC 服务。再单
22、击【下一步】按钮,进行 BIND 版本扫描、猜解 MySQL计算机信息安全实验指导书23密码和 SSH 版本扫描。之后单击【下一步】按钮,打开如图 4-8 所示的对话框。图 4-8 插件扫描漏洞设置10、在这里,流光提供了对 6 个插件的漏洞扫描,可根据需要进行选择。单击【下一步】按钮,打开如图 4-9 所示的对话框。图 4-9 猜解字典设置11、在这个对话框中,通过“猜解用户名字典”尝试暴力破解,用于除了 IPC之外的项目。 “保存扫描报告”的存放名称和位置,默认情况下文件名以起始 IP-结束 IP.html 为命名规则。单击【完成】按钮,通过打开的【选择流光主机】对话框设置扫描引擎。方法如
23、图 4-10 所示。计算机信息安全实验指导书24图 4-10 选择流光主机12、选择默认的本地主机作为扫描引擎,单击【开始】按钮进行扫描,经过一段时间后会有类似图 4-11 所示的扫描结果。图 4-11 探测结果显示可以看到,扫描结束后屏幕会弹出检测结果窗口,本次漏洞扫描共检测到5 条结果。同时,流光还会生成扫描报告,以网页的形式保存在预设目录之下。该扫描结果显示主机 10.103.0.194 有两个端口开放并提供服务。六 实验结果可以看到,扫描结束后屏幕上会弹出检测结果窗口,显示检测到的结果共有 条。同时,流光还会生成扫描报告,以网页的形式保存在预设目录下。按照以上步骤扫描主机,并查看扫描结果,了解各种系统漏洞和可能造成的危害。下载相应的系统补丁,修补系统漏洞,从而构造一个相对安全的操作系统。在安装完补丁后,重新使用流光来扫描系统漏洞,检查系统漏洞是否已经修补。计算机信息安全实验指导书25七 思考题扫描实验室内部网络的计算机,观测内网中各个计算机打开的端口和其提供的服务, 并进行漏洞分析,提交漏洞分析和解决方案报告。