网络安全期末大论文 您所在的位置:网站首页 网络安全专业分析论文 网络安全期末大论文

网络安全期末大论文

2023-08-16 08:27| 来源: 网络整理| 查看: 265

 

 

桂林理工大学

 

 

《网络安全》

 

 

 

 

学生姓名       张识虔        

学    号    3162052051116   

所属学院  信息科学与工程学院

专    业       软件工程      

班    级       16-1班        

教    师       张攀峰       

 

桂林理工大学教务处

 

 

 

 

《网络安全》课程论文

 

作者 张识虔

 

[摘  要:随着计算机技术和网络技术的发展, 网络安全问题, 在今天已经成为网络世界里最为人关注的问题之一 危害网络安全的因素很多, 它们主要依附于各种恶意软件, 其中病毒和木马最为一般网民所熟悉。针对这些危害因素, 网络安全技术得以快速发展, 这也大大提高了网络的安全性。文章分析了几种常见的网络入侵方法以及在此基础上探讨了网络安全的几点策略。关键词:网络安全  计算机网络  入侵检测

1. 前 言         一、 计算机网络安全的含义     计算机网络安全的具体含义会随着使用者的变化而变化,使用者不同,对网络安全的认识和要求也就不同。例如从普通使用者的角度来说,可能仅仅希望个人隐私或机密信息在网络上传输时受到保护, 避免被窃听、篡改和伪造; 而网络提供商除了关心这些网络信息安全外,还要考虑如何应付突发的自然灾害、 军事打击等对网络硬件的破坏,以及在网络出现异常时如何恢复网络通信, 保持网络通信的连续性。从本质上来讲,网络安全包括组成网络系统的硬件、软件及其在网络上传输信息的安全性,使其不致 因偶然的或者恶意的攻击遭到破坏,网络安全既有技术方面的问题,也有管理方面的问题,两方面相互补充,缺一不可。    二、 常见的几种网络入侵方法   由于计算机网络的设计初衷是资源共享、分散控制、分组交换,这决定了互联网具有大跨度、分布式、无边界的特征。这种开放性使黑客可以轻而易举地进入各级网络,并将破坏行为迅速地在网络中传播。同时,计算机网络还有着自然社会中所不具有的隐蔽性:无法有效识别网络用户的真实身份;由于互联网上信息以二进制数码,即数字化的形式存在,所以操作者能比较容易地在数据传播过程中改变信息内容。计算机网络的传输协议及操作系统也存在设计上的缺陷和漏洞,从而导致各种被攻击的潜在危险层出不穷,这使网络安全问题与传统的各种安全问题相比面临着更加严峻的挑战,黑客们也正是利用这样的特征研发出了各种各样的攻击和入侵方法:    1.通过伪装发动攻击    2.利用开放端口漏洞发动攻击    3.通过木马程序进行入侵或发动攻击     4.嗅探器和扫描攻击     为了应对不断更新的网络攻击手段,网络安全技术也经历了从被动防护到主动检测的发展过程。主要的网络安全技术包括:防火墙、VPN、防毒墙、入侵检测、入侵防御、漏洞扫描。其中防病毒、防火墙和VPN属早期的被动防护技术,入侵检测、入侵防御和漏洞扫描属主动检测技术,这些技术领域的研究成果已经成为众多信息安全产品的基础。 1.1论文的目的和意义

我们是软件工程的本科生,《网络安全》是我们重要的课程。当代社会学要大学培养出理论扎实,动手实践能力强的大学生。所以,本次课程大作业的目的就在于通过一次实践性的活动加深对这门课程的理解,使我们在感性的认识上进一步升华为理性的认识。为后继课程的学习打下坚实的基础。

马克思主义唯物辩证法认为,实践是连接客观实在和人主观意识的通道和桥梁。物质对意识的作用以及意识对物质的反作用都蕴含在实践活动当中。也就是,实践是检验真理的唯一标准。对这门课的学习状况的好坏,用一次课程大作业便可以检验出来。而这,就是本次我们课程大作业的意义之所在。

 

1.2大论文的目标

本次课程大作业主要是通过对上机软件如下的几点的认真落实:

1、 利用sniffer抓包软件,分析IP头的结构。

2、 利用sniffer工具,分析TCP头的结构,并分析TCP的三次握手过程。

3、 实现加解密程序。(详见《密码学及应用实验部分》,实验一)

4、 已知RSA算法中,素数p=5,q=7,模数n=35,公钥e=5,明文为bed,对明文进行加解密,使用手工完成RSA公开秘钥密码体制算法加密运算。

5、 安装一款杀毒软件,分析该软件从哪些方面对计算机进行防护,这些功能与

2. 论文任务

2.1利用sniffer抓包软件,分析IP头的结构。(请附上截图)

 

根据IP数据报 来分析IP

 

由抓包结果可知 IP包 红框内 灰色部分

 “45”,其中“4”是IP协议的版本(Version),说明是IP4。“5”是IHL位,表示IP头部的长度,是一个4bit字段,最大就是1111了,值为15(表示有15行,一行有32bit),IP头部的最大长度就是60字节。而这里为“5”,说明是20字节,这是标准的IP头部长度,头部报文中没有发送可选部分数据。

 

“00”,为服务类型(Type of Service)。这个8bit字段由3bit的优先权子字段

“00 3C”,为IP数据报文总长,包含头部以及数据,这里表示60字节。这60字节由20字节的IP头部以及40字节的TCP头构成(最后的一个字节为数据)。因此目前最大的IP数据包长度是65535字节。

 

“01 29” 两个字节为数据包封装标识信息,与后面的偏移量一起用,这个是让目的主机来判断新来的分段属于哪个分组。

 

“00 00”其中前三位表示标志位,后面13位表示片段偏移地址。其中第一位是IP协议目前没有用上的,为0。接着的是两个标志DF和MF。DF为1表示不要分段,MF为1表示还有进一步的分段(本例为0)。然后的“0 0000”是分段便移(Fragment Offset)。

 

“80” 这个字节就是TTL(Time To Live)了,表示一个IP数据流的生命周期,用Ping显示的结果,能得到TTL的值50(将十六进制的80转化为十进制得48)。

 

“01” 这个字节表示传输层的协议类型(Protocol)。在RFC790中有定义,1表示传输层是ICMP协议

 

“7d 44” 这个16bit是头校验和(Header Checksum)。

 

“c0 a8 9d 80”表示源地址,也就是PC的IP地址,转换为十进制的IP地址就是:192.168.157.128。

 

“c0 a8 9d 82”表示目标IP地址,转换为十进制的IP地址就是:192.168.1.130

 

2.2利用sniffer工具,分析TCP头的结构,并分析TCP的三次握手过程。(请附上截图)

抓包结束后 可以获得TCP头

根据TCP头结构对获得的TCP头进行分析

TCP包头占有20个字节,后00 00 6e 6f 6f 70 0d 0a部分是可选项和数据部分。

 

“00 15”表示目的端口号为:21,可知用了FTP文件文件传输。

 

“68 47 e2 37”表示数据包顺序号(Sequence Number)。

 

“d7 44 7c a2”表示(Acknowledgment Number),简写为ACKNUM。在此为不全0,表示连接成功,有确认。

 

“50 18”两字节中,前4位为头部长度,用十进制表示为7,转化为字节,总共有7×4=28字节;中间六位为保留,都为0,在TCP协议没有用上;后面6位为000010,是重要的6个标志位,此时SYN=1,ACK=0,连接响应时,表示连接向应超时。

 

“f9 78”两个字节表示窗口大小为63864。

 

“6c 67”这个16bit是头校验和(Header Checksum)。

 

“00 00”为紧急指针,此时表示没有,当且仅当URG同时置1才有效。

TCP的三次握手过程

第一次握手:192.168.157.128发送位码syn=1,随机产生SEQ number =1384476279的数据包到192.168.157.130 ,192.168.157.130由SYN=1知道192.168.157.128要求建立联机;

第二次握手:192.168.157.130收到请求后要确认联机信息,向192.168.157.128发送ACK number =1384476280,SYN=1,ACK=1,随机产生SEQ number =337715159741的包;

第三次握手:192.168.157.128收到后检查ACK是否正确,即第一次发送的SEQ number + 1,以及位码ACK是否为1,若正确,192.168.157.128会再发送ACK number =3377159742,ACK=1,192.168.157.130收到后确认SEQ = SEQ + 1,ACK=1则连接建立成功。

 

 

2.3实现加解密程序。(详见《密码学及应用实验部分》,实验一)(附截图)

 

代替算法(JAVA实现)

import java.util.Scanner; class Encryption{ public void Encryption() {     char l;     System.out.println("请输入要加密的明文");     Scanner input = new Scanner(System.in);     String str1 = input.nextLine();     System.out.println("请输入要加密的密钥");     int k = input.nextInt();         System.out.print("加密后的明文为: ");     for(int i = 0 ; i < str1.length() ; i ++) {        int n = (int)(str1.charAt(i));        if(n > 96 && n < 123) {            n = (n - 97 + k) % 26;             l = (char)(n + 97);            System.out.print(l);        }     } } } class Decrypt{ public void Decrypt() {     char l ;         System.out.println("请输入需要解密的密文");     Scanner input = new Scanner(System.in);     String str3 = input.nextLine();     System.out.println("请输入解密的密钥");     int k = input.nextInt();         System.out.println("解密的明文是: ");     for(int i = 0 ; i < str3.length() ; i ++) {        int n = (int)(str3.charAt(i));               if(n > 96 && n < 123) {            n = (n - 97 - k) % 26;            if(n == -1)               n = 25;            l = (char)(n + 97);            System.out.print(l);        }     } } } public class Substitution {     public static void main(String[] args) {               while(true) {            System.out.println("\n选择功能");            System.out.println("1. 加密功能");            System.out.println("2. 解密功能");            Scanner input = new Scanner(System.in);            int c = input.nextInt();            switch(c) {                          case 1 :{                   Encryption encryption  = new Encryption();                   encryption.Encryption();                   break;               }                             case 2 : {                   Decrypt decrypt = new Decrypt();                   decrypt.Decrypt();                   break;               }                              }        }     } }

置换算法(JAVA实现)

import java.util.Arrays; import java.util.Scanner; public class zhihuan4 {  private String sourceString = "attack begins at five";  private String keyString = "cipher";  private int[] secretMatrix;  private char groupedSource[][];  private void getSource(){//获取源字符串   Scanner scan = new Scanner(System.in);   System.out.print("请输入要加密的字符串:\t");   sourceString = scan.nextLine();   System.out.print("请为您输入密钥字符串:\t");   keyString = scan.next();  }  public zhihuan4(){//此类的构造函数   getSource();  }  private void groupSourceString(){//根据keystring为sourcestring创建组   int sourceLen = sourceString.length();   int keyLen = keyString.length();   groupedSource = new char[sourceLen/keyLen+1][keyLen];   if (sourceLen%keyLen!=0){    for (int i = 0;i < (keyLen - sourceLen%keyLen);i++){     sourceString += "#";    }   }   sourceLen = sourceString.length();   for(int i = 6,j=0;i


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有