版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、信息安全专业综合实践设计报告专业: 信息安全 班级: 小组成员: 指导教师: 职 称: 中国矿业大学计算机科学与技术学院 年 月 徐州设计日期 年 月 日至 年 月 日小组成员在本次设计中承担的任务成绩指导教师签字: 年 月 日前言为了提高学生的动手能力,培养同学们的学习兴趣,同时对所学知识进行全面的复习,特在第7学期开设本课程。信息安全专业综合实践是信息安全专业的集中性实践环节课程。本课程的任务是训练学生综合利用所学理论知识和实践技能解决实际问题,提高学生独立钻研及团队合作能力,为适应今后的工作打下扎实的基础。通过该课程实践,使学生能够利用密码学知识实现通信系统的机密性、完整性;能够评估系统
2、的安全性,能够利用弱点攻破远程系统,能够有效地防御远程攻击;对Web服务、Email服务能够熟练地管理和配置,增强系统的安全性;能够综合利用认证、授权、访问控制设计一个安全、高效的信息系统。本实验报告主要分为四个部分:第一篇,网络通信安全;第二篇,网络攻击;第三篇,系统管理与配置;第四篇,信息系统安全。目录实验一 网络通信安全1.1实验目的1.2实验内容1.3相关知识1.4实验成果1.5实验小结实验二 网络攻防2.1实验目的2.2实验内容2.3实验原理2.4实验步骤2.5实验小结实验三 Web服务器配置3.1实验目的3.2实验要求3.3实验内容3.4实验小结实验四 信息系统安全4.1实验目的4
3、.2实验内容4.3开发环境4.4系统实现 4.5实验小结实验一 网络通信安全1.1实验目的通过本章的学习,使学生掌握密码学在通信安全中的具体应用。基本要求能够实现客户服务器通信,能够使用AES算法实现消息的加密与解密,对优秀的学生要求能够实现数字签名的生成与验证1.2实验内容(1)实现客户服务器之间的通信;(2)发送方传输的消息使用AES加密,接收方对消息解密获取明文;(3)发送方传输的消息使用HMAC处理,接收方验证消息的完整性;(4)发送方对传输的消息使用RSA进行签名,接收方验证数字签名。1.3相关知识1.3.1对称密码AES 1997年美国国家标准和技术委员会NIST宣布征集一个新的对
4、称密钥分组密码算法,以取代DES作为新的加密标准,新的算法被命名为高级加密标准AES。经过角逐,由比利时密码学家Daemen和Rijment共同设计的Rijndael算法成为最后赢家。目前的AES算法是一个迭代型分组密码,其分组长度和密钥长度都可变,各自支持128比特、192比特、256比特。与DES相同,AES也是由最基本的变换单位“轮”多次迭代而成的,当分组长度和密钥分组长度均为128bit时,轮数为N=10。AES的轮(除最后一轮)变换由四个不同的变换组成,这些变化被称之为内部轮函数,可以表示成如下形式:Round(State,RoundKey)SubBytes(State);Shift
5、Rows(State);MixColumns(State);AddRoundKey(State,RoundKey);State表示消息矩阵;RoundKey表示轮密钥矩阵;SubBytes(State)为字节代替变换、ShiftRows(State)为行移位变换、MixColumns(State)为列混合变换、AddRoundKey(State,RoundKey)为与子密钥异或。最后一轮略微不同,将其记为FinalRoundKey(State,RoundKey),相当于前面的Round(State,RoundKey)去掉MixColumns(State)。对于加密来说,输入到第一轮的State
6、就是明文消息矩阵,最后一轮输出的State就是对应的密文消息矩阵。AES的解密变换和加密变换时互逆的,轮函数也分为4层,分别为InvShiftRow(State)逆行移位变换、InvByteSub(State)逆字节代替变换、AddRoundKey(State,RoundKey)与子密钥位异或和InvMixColumn(State)逆列混合变换,可表示为:InvRound(State,RoundKey)InvShiftRow(State);InvByteSub(State);AddRoundKey(State,RoundKey);InvMixColumn(State);明文明文State化Ro
7、undKeySubBytes(State)ShiftRows(State)MixColumns(State)AddRoundKey(State,RoundKey)RoundKeySubBytes(State)ShiftRows(State)AddRoundKey(State,RoundKey)RoundKeyAES加密过程1.3.2公钥密码RSARSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。RSA取名来自开发他们三者的名字。RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推
8、荐为公钥数据加密标准。RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。算法描述:(1)密钥的产生选择两个保密的大素数p和q;计算n=p*q,(n)=(p-1)(q-1),其中,(n)是n的欧拉函数值;选一整数e,满足1<e<(n),且gcd(n),e)=1;计算d,满足de=1mod(n),即d是e在模(n)下的乘法逆元;以e,n为公开钥,以d,n为秘密钥。(2)加密加密时首先将明文比特串分组,是的每个分组对应的十进制数小于n,然后对每个明文分组m,做加密运算:c=m mod n。(3)解密对
9、密文分组的解密运算为:m=c mod n。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。1.4实验成果我们使用JAVA语言完成实验。1.4.1代码分析思路分析:首先完成客户服务器通信模块,然后插入加密模块下面贴出部分代码以供分析发送部分:public class UDPSend extends Frame implements ActionListener/图形界面Panel p1=new Panel();Panel p2=new Panel();TextField textField1=new TextFi
10、eld();Button button1=new Button();Button button2=new Button();public UDPSend()tryjbInit();catch(Exception e)e.printStackTrace();public void actionPerformed(ActionEvent e)Component com=(Component)e.getSource();if(com.equals(button1)sendData();else if(com.equals(button2)System.exit(0);elsesendData();/
11、发送数据void sendData()try/添加DES加密部分String secr="123456789" DESPlus des = new DESPlus(secr);/自定义密钥String msg=textField1.getText();/明文msgif(msg.equals("")return;msg=des.encrypt(msg);/msg=crypt(msg);textField1.setText("");InetAddress address=InetAddress.getByName("58.218
12、.3.2");/通信方的IP地址int len=msg.length();bytemessage=new bytelen;msg.getBytes(0, len, message, 0);DatagramPacket packet=new DatagramPacket(message,len,address,9999);DatagramSocket socket=new DatagramSocket();socket.send(packet);catch(Exception e)private void jbInit()throws Exceptionthis.setTitle(&q
13、uot;发送数据报");button1.setLabel("发送");button2.setLabel("退出");this.add(textField1,BorderLayout.NORTH);this.add(button1,BorderLayout.CENTER);this.add(button2,BorderLayout.SOUTH);button1.addActionListener(this);button2.addActionListener(this);textField1.addActionListener(this);接收部
14、分:public class UDPGet extends Frame implements ActionListenerTextArea textArea1=new TextArea();Button button1=new Button();public UDPGet()tryjbInit();catch(Exception e)e.printStackTrace();void waitForData()trybytebuffer=new byte1024;DatagramPacket packet=new DatagramPacket(buffer,buffer.length);Data
15、gramSocket socket=new DatagramSocket(9999);while(true)socket.receive(packet);String s=new String(buffer,0,0,packet.getLength();String test2="123456789"DESPlus des = new DESPlus(test2);/自定义密钥s=des.decrypt(s);textArea1.append(s+"n");packet=new DatagramPacket(buffer,buffer.length);c
16、atch(Exception e)private void jbInit()throws Exceptionthis.setTitle("接受数据报");textArea1.setText("");button1.setLabel("退出");this.add(textArea1,BorderLayout.CENTER);this.add(button1,BorderLayout.SOUTH);button1.addActionListener(this);public void actionPerformed(ActionEvent
17、 e)Component com=(Component)e.getSource();if(com.equals(button1)System.exit(0);加密模块:public class DESPlus private static String strDefaultKey = "national" private Cipher encryptCipher = null; private Cipher decryptCipher = null; public static String byteArr2HexStr(byte arrB) throws Exceptio
18、n int iLen = arrB.length; / 每个byte用两个字符才能表示,所以字符串的长度是数组长度的两倍 StringBuffer sb = new StringBuffer(iLen * 2); for (int i = 0; i < iLen; i+) int intTmp = arrBi; / 把负数转换为正数 while (intTmp < 0) intTmp = intTmp + 256; / 小于0F的数需要在前面补0 if (intTmp < 16) sb.append("0"); sb.append(Integer.toSt
19、ring(intTmp, 16); return sb.toString(); public static byte hexStr2ByteArr(String strIn) throws Exception byte arrB = strIn.getBytes(); int iLen = arrB.length; / 两个字符表示一个字节,所以字节数组长度是字符串长度除以2 byte arrOut = new byteiLen / 2; for (int i = 0; i < iLen; i = i + 2) String strTmp = new String(arrB, i, 2)
20、; arrOuti / 2 = (byte) Integer.parseInt(strTmp, 16); return arrOut; public DESPlus() throws Exception this(strDefaultKey); /Window -> Preferences -> Java -> Compiler -> Errors/Warnings -> Deprecated and restricted API -> Forbidden reference (access rules) -> Warnings,或者在项目上修改编译选
21、项。 public DESPlus(String strKey) throws Exception Security.addProvider(new vider.SunJCE(); Key key = getKey(strKey.getBytes(); encryptCipher = Cipher.getInstance("DES"); encryptCipher.init(Cipher.ENCRYPT_MODE, key); decryptCipher = Cipher.getInstance("DES"); dec
22、ryptCipher.init(Cipher.DECRYPT_MODE, key); public byte encrypt(byte arrB) throws Exception return encryptCipher.doFinal(arrB); public String encrypt(String strIn) throws Exception return byteArr2HexStr(encrypt(strIn.getBytes(); public byte decrypt(byte arrB) throws Exception return decryptCipher.doF
23、inal(arrB); public String decrypt(String strIn) throws Exception return new String(decrypt(hexStr2ByteArr(strIn); private Key getKey(byte arrBTmp) throws Exception / 创建一个空的8位字节数组(默认值为0) byte arrB = new byte8; / 将原始字节数组转换为8位 for (int i = 0; i < arrBTmp.length && i < arrB.length; i+) arr
24、Bi = arrBTmpi; / 生成密钥 Key key = new javax.crypto.spec.SecretKeySpec(arrB, "DES"); return key; 1.4.2成果展示(加密在通信过程中完成,接收方直接显示得到的明文)1.5实验小结通过本次实验,我们学习了socket()编程,复习了java的应用,了解了网络编程及通讯技术。由于技术有限,实验成果比较简陋,并没有加入签名验证模块。实验二 网络攻防 利用135端口入侵个人计算机 2.1实验目的评估操作系统的安全性,利用工具或独立编程发现系统漏洞,利用工具或独立编程攻破指定的系统,增强系统的
25、安全性。2.2实验内容 了解系统漏洞,通过实践提高学生网络攻防能力,包括漏洞发现,利用脚本攻击远程系统。2.3实验原理通过135端口入侵实际上是利用RPC漏洞来攻击计算机的。一般情况下135端口主要用于使用RPC(Remote Procedure Call,远程过程调用)协议并提供DCOM(分布式组件对象模型)服务,通过RPC能确保在一台计算机上运行的程式能顺利地 执行远程计算机上的代码,使用DCOM能通过网络直接进行通信,能够跨包括HTTP协议在内的多种网络传输。RPC本身在处理通过TCP/IP的消息交换部分有一个漏洞,该漏洞是由于错误地处理格式不正确的消息造成的。会影响到RPC和DCOM之
26、间的一个接口,该接口侦听的端口就是135。2.4实验步骤1、通过135端口入侵,攻击者首先需要查找网络上存在135端口漏洞的主机地址,在查找此类主机过程中,能使用一些扫描工具,比如SuperScan就是典型的端口工具之一。在SuperScan“开始”文本框中输入需要扫描的起始地址,然后在“结束”文本框里填写好扫描结束的IP地址,在“扫描类型”选项中选择“所有端口定义”单选按钮,并在右侧的文本框中输入“135”。再点击“开始”按钮即可开始扫描。扫描结束后,在下方的列表中能查看目标主机打开的端口。然后再点击“Save”按钮选好保存路径,把里面有漏洞的IP整理下即可。利用SuperScan扫描查找存
27、在135端口漏洞的主机2、得到有漏洞后,我们更有一个功能强大的扫描工具,比如NTScan汉化版。然后在“主机文件“处点击“打开”按钮找到我们刚才保存的IP路径,在连接共享$处选择“WMI扫描”,在“扫描打开端口的主机”处填写135端口。最后点击“开始”即可。要不了多久就会有结果显示。 使用NTscan再次扫描漏洞主机3、获得漏洞主机用户名以后,我们需要一个开启的工具,那就是Recton v2.5。好了,万事具有之欠那“东风”拉。把刚刚扫描的IP输入TELNET界面的“远程主机”处,及用户名和密码,不过一般情况下密码都是空。下一步点击“开始执行”按钮等待把TELNET打开吧。打开后按WIN+R输
28、入CMD进入再输入Telnet IP 回车,会提示让你输入用户名,把用户名输入后,回车即可进入主机。而且得到的还是SYSTEM权限。 使用Recton开启telnet服务telnet到目标主机4、下一步就是为我们加了拥有管理员权限的用户,这样我们就轻松的获取了一台肉机。最后我们能上传一些远程性木马软件作为后门,比如灰鸽子,冰河等。在这里我就不在展示。2.5实验小结 通过本次实验使我对与网络攻防有了更加深入的了解,也学会了如何抓到自己的肉鸡,但是更深层的网络攻防技术还需要熟悉更多的工具和方法,我需要更深入的学习和运用。实验三 Web服务器配置3.1实验目的操作系统的配置与管理、Web服务器的管理
29、与配置、邮件服务器的管理与配置3.2实验目的通过本章的学习,使学生熟悉Windows与Linux操作系统的配置与管理。操作系统的安装、系统文件的配置、帐号管理、服务管理、配置安全策略、安全审核;IIS安全和Apeach安全。安装Web服务、配置访问控制、使用文件完整性检查;MICROSOFT EXCHANGE和SENDMAIL的管理与配置。3.3实验内容3.3.1 IIS配置1.首先打开Win7控制面板,单击“程序和功能”,然后选择左侧的“打开或关闭Windows功能”。2.现在出现了安装Windows功能的选项菜单,注意选择的项目,我们需要手动选择需要的功能,下面这张图片把需要安装的服务都已
30、经选择了,大家可以按照图片勾选功能。3.安装完成后,再次进入控制面板,选择“管理工具”,进入后双击 Internet(IIS)管理器选项,进入IIS设置。4.选择左边小窗口的 Default Web Site,单击几下qinpeng-PC(电脑的型号)就可以看到Default Web Site,然后双击中间窗口出现的“ASP”选项。5.IIS中ASP“父路径”是没有启用的,要开启父路径,选择True,搞定父路径选项。6.配置IIS的站点。单击右边的“高级设置”选项,则可以设置网站的目录(最好将其设置在某一盘符的根目录下)。7.点击右侧的“绑定”,设置网站的端口。至此,Win7旗舰版的IIS设置
31、已经基本完成了,ASP+Access程序可以调试成功。8.在编辑权限中实现安全控制3.3.2 FTP服务器配置1首先在控制面板->删除程序->打开或关闭windows功能->internet信息服务里面->FTP服务2、控制面板-系统和安全-管理工具-Internet 信息服务(IIS)管理器-右键点你计算机名称那里,选择添加FTP站点;3、FTP站点名称输入:"demo"-选择你的FTP目录物理路径,点下一步-Ip地址选“全部未分配”,端口可以自己设,但不能用80,勾上“自动FTP站点”,SSL选“允许”,点下一步-身份验证选“匿名”,允许访问选“
32、匿名用户”,权限勾“读取”,点完成。4.配置FTP站点 5. 测试站点是否正常工作 3.3.3帐户管理1、 打开控制面板,用户帐户2、新建一个帐户,配置用户名2、 选择用户类型4、在用户帐户中可以更改用户名称,创建密码,更改账户类型等5、创建用户密码6、查看用户类型7、安全设置:打开控制面板管理工具中的本地安全设置8、配置帐户策略密码策略】9、策略配置10、配置IP安全策略 3.3.4邮件服务器配置1、 启动OUTLook2、 安装SMTP服务器3、 在工具电子邮件帐户中创建帐户4、 选择服务器类型5、EMON设定6、创建邮件3.4实验
33、小结 在本次实验中,对IIS的安装及使用都有了基本的了解,在实现操作系统(Windows/Linux)、Web服务器或应用服务器(IIS/Apache)、邮件服务器(Exchage)的管理与配置过程中,通过自己的操作对他们的配置也有了一定程度的熟悉。实验四 信息系统安全会员系统的设计实现4.1实验目的掌握构建安全信息系统的整个流程4.2实验内容实现一个安全的信息系统,包括用户注册、认证、授权、访问控制等功能。4.3开发环境编译环境:VS2005数据库:SQL20004.4系统实现 见源代码。 4.4.1功能设计1、基于角色的访问控制,会员登陆和管理员登陆2、会员注册,让访问者注册使用此系统3、
34、密码提示,可以让会员找回自己的密码4、为了安全性,对于某些信息加了限制,比如账号、密码不得少于6个字符。4.4.2、数据库设计1、数据表共有三个表:会员表(customer)、管理员表(admin)、城市表(city)会员表和管理员表信息字段相同,创建会员表,管理员表一样。城市表主要有id和name两个字段,存储会员,管理员城市信息。2、存储过程有很多存储过程:注册信息,获取城市信息,验证身份合法性,修改信息,密码提示等。这里主要介绍实现访问控制存储过程,注册信息存储过程、修改信息存储过程。3、访问控制存储过程验证是否是合法的用户和合法的管理员,管理员和会员的验证存储过程的相似,只是从admi
35、n表里取字段。这个存储过程实现从数据库读数据和提交给服务器的数据对比,以验证是否是合法的会员或者管理员4.4.3中间层根据前面介绍,系统可以划分为4个模块:登陆,注册,修改,密码提示。要实现这些模块的功能,就需要中间层的支持才能实现。主要有几个类组成,来实现获得数据库连接,获取数据以及实现数据的处理。ConnStr类ConnStr类,实现从Web.config文件中的appSettings的节点中的key=Conn的Value中获得连接数据库的字符串。Web.config文件中的appSettings节点内容如下:<!-数据库连接字符串 -><appSettings>&
36、lt;add key="Conn" value="server=localhost;uid=sa;pwd=;database=master"/></appSettings>SQLDataReaderResult类SQLDataReaderResult类实现了获取一个SqlDataReader,并可以对SqlDataReader进行关闭的功能。MemberDetail类MemberDetail类,描述一个会员应该包含哪些信息。可以理解为将一条会员信息抽象为一个MemberDetail类实例化后的对象。MemberMgr类MemberMgr
37、类,是整个中间层里最重要的类,会员信息的增加、修改和验证,都是在该类成员函数里实现的。1、需要使用的命名空间using System;using System.Data;using System.Data.SqlClient;2、先声明的类里的全局变量ConnStr ConnStr=new ConnStr();SqlCommand mycmd;SqlDataReader Sqldr;3、成员函数protected int RegNMod(int op,ref MemberDetail user)根据条件用注册或修改会员信息。注册会员信息调用了函数库中的“Register”存储过程,会员信息调用
38、了数据库中的“Modify”存储过程。代码略。4、成员函数public int Register(ref MemberDetail user)用于MemberMgr类被实例化以后,对外注册会员信息的方法。5、成员函数public int Modify(ref MemberDetail user)用于MemberMgr类被实例化以后,对外实现修改会员信息的方法。6、成员函数public MemberDetail GetDetailByID(int ID)和GetDetailByPIN(string PIN)根据ID或者PIN帐号获得会员信息。都调用了内部方法GetDetail(int op,object obj)。7、成员函数protected MemberDetail GetDetail(int op,object obj)Me
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国庆升旗讲话稿范文(5篇)
- 信息素在性别识别中的作用-洞察分析
- 药物支架在肝癌治疗中的作用-洞察分析
- 疫苗接种伦理与法规探讨-洞察分析
- 油气行业智能化升级-洞察分析
- 云平台互操作性研究-洞察分析
- 污染土壤生物修复技术-洞察分析
- 乡村文化景观旅游开发-洞察分析
- 宇宙射线多信使天文学-洞察分析
- 网络谣言传播机制研究-洞察分析
- 木门安装说明指导书指导手册图文介绍(附图)
- 外科护理学全套课件
- 工程经济学完整版课件全套ppt教程
- 华海医药智慧园区方案
- 高中日语 授受关系 课件
- 入库单(标准样本)
- 上海市长宁区2022年高考英语一模试卷(含答案)
- 软件工程课程设计_《网上购物系统项目》软件设计说明书
- 两级CMOS运算放大器设计
- 新《行政处罚法》修订对比解读PPT课件
- 水电站课程设计 40
评论
0/150
提交评论