《网络安全》课程论文
作者:
摘 要:随着计算机技术和网络技术的发展, 网络安全问题, 在今天已经成为网络世界里最为人关注的问题之一 危害网络安全的因素很多, 它们主要依附于各种恶意软件,其中病毒和木马最为一般网民所熟悉,还有个人信息的窃取,也给我们的生活带来了很大的安全隐患。针对这些危害因素, 网络安全技术得以快速发展,这也大大提高了网络的安全性。文章分析了几种常见的网络入侵方法和个人信息安全的问题以及在此基础上探讨了网络安全的几点策略。
关键字:网络安全、计算机网络、入侵检测、密码学
1.前言
1.1 计算机网络安全的含义
计算机网络安全的具体含义会随着使用者的变化而变化,使用者不同,对网络安全的认识和要求也就不同。例如从普通使用者的角度来说,可能仅仅希望个人隐私或机密信息在网络上传输时受到保护, 避免被窃听、篡改和伪造; 而网络提供商除了关心这些网络信息安全外,还要考虑如何应付突发的自然灾害、 军事打击等对网络硬件的破坏,以及在网络出现异常时如何恢复网络通信, 保持网络通信的连续性。从本质上来讲,网络安全包括组成网络系统的硬件、软件及其在网络上传输信息的安全性,使其不致 因偶然的或者恶意的攻击遭到破坏,网络安全既有技术方面的问题,也有管理方面的问题,两方面相互补充,缺一不可。
1.2 常见的几种网络入侵方法
由于计算机网络的设计初衷是资源共享、分散控制、分组交换,这决定了互联网具有大跨度、分布式、无边界的特征。这种开放性使黑客可以轻而易举地进入各级网络,并将破坏行为迅速地在网络中传播。同时,计算机网络还有着自然社会中所不具有的隐蔽性:无法有效识别网络用户的真实身份;由于互联网上信息以二进制数码,即数字化的形式存在,所以操作者能比较容易地在数据传播过程中改变信息内容。计算机网络的传输协议及操作系统也存在设计上的缺陷和漏洞,从而导致各种被攻击的潜在危险层出不穷,这使网络安全问题与传统的各种安全问题相比面临着更加严峻的挑战,黑客们也正是利用这样的特征研发出了各种各样的攻击和入侵方法:
1.通过伪装发动攻击
2.利用开放端口漏洞发动攻击
3.通过木马程序进行入侵或发动攻击
4.嗅探器和扫描攻击
为了应对不断更新的网络攻击手段,网络安全技术也经历了从被动防护到主动检测的发展过程。主要的网络安全技术包括:防火墙、VPN、防毒墙、入侵检测、入侵防御、漏洞扫描。其中防病毒、防火墙和VPN属早期的被动防护技术,入侵检测、入侵防御和漏洞扫描属主动检测技术,这些技术领域的研究成果已经成为众多信息安全产品的基础。
1.3 常见的几种加密算法
“加密”,是一种限制对网络上传输数据的访问权的技术。原始数据(也称为明文,plaintext)被加密设备(硬件或软件)和密钥加密而产生的经过编码的数据称为密文(ciphertext)。将密文还原为原始明文的过程称为解密,它是加密的反向处理,但解密者必须利用相同类型的加密设备和密钥对密文进行解密。
数据存储和传输存在的风险:
加密的基本功能包括:
加密类型可以简单地分为三种:
2.论文的目的和意义
我们是软件工程的本科生,《网络安全》是我们重要的课程。当代社会学要大学培养出理论扎实,动手实践能力强的大学生。所以,本次课程大作业的目的就在于通过一次实践性的活动加深对这门课程的理解,使我们在感性的认识上进一步升华为理性的认识。为后继课程的学习打下坚实的基础。
马克思主义唯物辩证法认为,实践是连接客观实在和人主观意识的通道和桥梁。物质对意识的作用以及意识对物质的反作用都蕴含在实践活动当中。也就是,实践是检验真理的唯一标准。对这门课的学习状况的好坏,用一次课程大作业便可以检验出来。而这,就是本次我们课程大作业的意义之所在。
3.论文的目标
1、 利用sniffer工具,分析IP头的结构。(请附上截图)
2、 利用sniffer工具,分析TCP头的结构,并分析TCP的三次握手过程。(请附上截图)
3、 实现一个或几个加解密程序。(详见《密码学及应用实验部分》,实验一)(附截图)
4、 已知RSA算法中,素数p=5,q=7,模数n=35,公钥e=5,明文为bed,对明文进行加解密,使用手工完成RSA公开秘钥密码体制算法加密运算。字母数字映射表如下:
5、 安装一款杀毒软件,分析该软件从哪些方面对计算机进行防护,这些功能与HIDS系统的功能有哪些异同?
6、 (1)结合一到两个最有体会或印象深刻的知识点(可以任选章节或具体算法协议等)谈谈自己对网络安全的学习心得;
(2)从网络安全的整体视角谈谈自己对网络安全的的理解和认识。
4.论文任务
4.1 利用sniffer工具,分析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的优先权子字段,4 bit的TOS子字段以及1 bit的未用字段(现在为0)构成.4 bit的TOS子字段包含:最小延时、最大吞吐量、最高可靠性以及最小费用构成,这四个1bit位最多只能有一个为1,这里都为0,表示是一般服务。
“00 28”为IP数据报文总长,包含头部以及数据,这里表示40字节。这40字节由20字节的IP头部以及20字节的TCP头构成(最后的一个字节为数据)。
“00 1e”两个字节为数据包封装标识信息,与后面的偏移量一起用,这个是让目的主机来判断新来的分段属于哪个分组。
“00 00”其中前三位表示标志位,后面13位表示片段偏移地址。其中第一位是IP协议目前没有用上的,为0。接着的是两个标志DF和MF。DF为1表示不要分段,MF为1表示还有进一步的分段(本例为0)。然后的“00000”是分段便移(Fragment Offset)。
“80” 这个字节就是TTL(Time To Live)了,表示一个IP数据流的生命周期,用Ping显示的结果,能得到TTL的值128(将十六进制的80转化为十进制得128)。
“06” 这个字节表示传输层的协议类型(Protocol)。在RFC790中有定义,6表示传输层是TCP协议。
“da 5f”这个16bit是头校验和(Header Checksum)。
“c0 a8 6f 81”表示源地址,也就是PC的IP地址,转换为十进制的IP地址就是:192.168.111.129。
“c0 a8 6f 80”表示目标IP地址,转换为十进制的IP地址就是:192.168.111.128
4.2 利用sniffer工具,分析TCP头的结构,并分析TCP的三次握手过程。(请附上截图)
TCP包头占有20个字节
“04 12” 表示目的端口号为:1042,可知用了FTP文件文件传输。
“00 15” 表示目标端口,因为我是连接FTP站点,所以,这个就是21,十六进制当然就是“00 15”。
“1d 89 42 0a”表示数据包顺序号(Sequence Number),简写为SEQ,这里等于1383817
“73 9a df 6c”表示确认号(Acknowledgment Number),简写为ACKNUM。在此为不全0,表示连接成功,有确认。
“50 14” 换算成二进制“0101 0000 0001 0100”,两字节中,前4位“0101”TCP为头部长度,用十进制表示为5,转化为字节,总共有5×4=20字节;中间六位为保留,现在TCP协议没有用上,都为0;后面6位为“010100”,是重要的6个标志位
6个标志位:
URG:(Urgent Pointer field significant)紧急指针。用到的时候值为1,用来处理避免TCP数据流中断
ACK:(Acknowledgment fieldsignificant)置1时表示确认号(AcknowledgmentNumber)为合法,为0的时候表示数据段不包含确认信息,确认号被忽略。
PSH:(Push Function),PUSH标志的数据,置1时请求的数据段在接收方得到后就可直接送到应用程序,而不必等到缓冲区满时才传送。
RST:(Reset the connection)用于复位因某种原因引起出现的错误连接,也用来拒绝非法数据和请求。如果接收到RST位时候,通常发生了某些错误。
SYN:(Synchronize sequence numbers)用来建立连接,在连接请求中,SYN=1,ACK=0,连接响应时,SYN=1,ACK=1。即,SYN和ACK来区分Connection Request和Connection Accepted。
FIN:(No more data from sender)用来释放连接,表明发送方已经没有数据发送了。
此时SYN=0,ACK=1,未开始请求连接。
“00 00” 两个字节表示窗口大小,没有打开窗口。
“98 ba” 这个16bit是头校验和(Header Checksum)。
“00 00” 为紧急指针,此时表示没有,当且仅当URG同时置1才有效。
TCP的三次握手过程
第一次握手:192.168.111.129发送位码syn=1,随机产生SEQ number =1952792680的数据包到192.168.111.130 ,192.168.111.130由SYN=1知道192.168.111.129要求建立联机;
第二次握手:192.168.111.130收到请求后要确认联机信息,向192.168.111.129发送ACK number =1952792681,SYN=1,ACK=1,随机产生SEQ number =812886821的包;
第三次握手:192.168.111.129收到后检查ACK是否正确,即第一次发送的SEQ number + 1,以及位码ACK是否为1,若正确,192.168.111.129会再发送ACK number =812886822,ACK=1,192.168.111.130收到后确认ACK = SEQ + 1,ACK=1则连接建立成功
4.3 实现一个或几个加解密程序。(详见《密码学及应用实验部分》,实验一)(附截图)
代替算法(JAVA实现)
import java.util.Scanner;
class Encryption{
public void Encryption() {
char c;
System.out.print("请输入要加密的明文:");
Scanner input = new Scanner(System.in);
String str1 = input.nextLine();
System.out.print("请输入要加密的密钥:");
int k = input.nextInt();
System.out.print("加密后的明文为: ");
for(int i = 0 ; i < str1.length() ; i ++) {
int n = (int)(str1.charAt(i));
if(n >= 97 && n <= 122) {
n = (n - 97 + k) % 26;
c = (char)(n + 97);
str1=str1.substring(0, i)+c+str1.substring(i+1);
}
}
System.out.println(str1);
}
}
class Decrypt{
public void Decrypt() {
char c ;
System.out.print("请输入需要解密的密文:");
Scanner input = new Scanner(System.in);
String str3 = input.nextLine();
System.out.print("请输入解密的密钥:");
int k = input.nextInt();
System.out.print("解密的明文是: ");
for(int i = 0 ; i < str3.length() ; i ++) {
int n = (int)(str3.charAt(i));
if(n >= 97 && n <= 122) {
n = (n - 97 - k);
if(n < 0)
n += 26;
n = n % 26;
c = (char)(n + 97);
str3=str3.substring(0, i)+c+str3.substring(i+1);
}
}
System.out.println(str3);
}
}
public class Main {
public static void main(String[] args) {
boolean n=true;
while(n) {
System.out.println("\n选择功能");
System.out.println("1. 加密功能");
System.out.println("2. 解密功能");
System.out.println("3. 退出");
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;
}
case 3:{
n=false;
System.out.println("已退出");
break;
}
}
}
}
}
4.4 已知RSA算法中,素数p=5,q=7,模数n=35,公钥e=5,明文为bed,对明文进行加解密,使用手工完成RSA公开秘钥密码体制算法加密运算。
(1)英文数字化。
将明文信息数字化。假定明文英文字母编码表为按字母顺序排列数值,即:
则数字化得到的bed的明文信息为:02,05,04。
(2)明文加密
用户加密密钥(5,35) 将数字化明文分组信息加密成密文。由C=me(mod n)得:
C1 = me(mod n) = 025(mod 35) = 32
C2 = me(mod n) = 055(mod 35) = 10
C3 = me(mod n) = 045(mod 35) = 9
用户加密后得到的密文为:32,10,9。
(3)密文解密。
用户B收到密文,若将其解密,只需要计算E=Ce(mod n),即:
E1 = Ce(mod n) = 325(mod 35) = 02
E2 = Ce(mod n) = 105(mod 35) = 05
E3 = Ce(mod n) = 95(mod 35) = 04
用户得到明文信息为:02,05,04。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“bed”。
4.5安装一款杀毒软件,分析该软件从哪些方面对计算机进行防护,这些功能与HIDS系统的功能有哪些异同?
我使用的是德国的小红伞杀毒软件
它的功能:
病毒防护(AntiVir)–病毒、蠕虫、木马的防御。
间谍软件的防护(AntiSpyware)–间谍程序、广告软件、身份盗用(Identity Theft)的防御。
恶意软件防护(AntiRootkit)此功能同免费版本
链接扫描(AntiPhishing)此功能同免费版本
邮件扫描 (AntiSpam) –可以过滤垃圾信件、防止网络诈骗(网络钓鱼)。
小红伞是一款德国著名杀毒软件,自带防火墙。它能有效的保护个人电脑以及工作站的使用,以免受到病毒侵害。它可以检测并移除超过60万种病毒,支持网络更新,资源占用很少,监控能力强
HIDS全称是Host-based Intrusion Detection System,即基于主机型入侵检测系统。作为计算机系统的监视器和分析器,它并不作用于外部接口,而是专注于系统内部,监视系统全部或部分的动态的行为以及整个计算机系统的状态。由于HIDS动态地检查网络数据包这一特性,它可以检测到哪一个程序访问了什么资源以及确保文字处理器(Word-Processor)不会突然的、无缘无故的启动并修改系统密码数据库。同样的,不管是往内存、文件系统、日志文件还是其它地方存储信息,HIDS会一直监控系统状态,并且核对他们是否还预期相同。
HIDS运行依赖与这样一个原理:一个成功的入侵者一般而言都会留下他们入侵的痕迹。这样,计算机管理员就可以察觉到一些系统的修改,HIDS亦能检测并报告出检测结果。
一般而言,HIDS使用一个它们所监视的目标系统以及文件系统(非必需)的数据库,HIDS也可以核对内存中未被非法修改的区域。对于每一个正被处理的目标文件来说,HIDS会记录下他们的属性(如权限、大小、修改时间等)然后,如果该文件有其文件内容的话,HIDS将会创建一个校验码(如SHA1,MD5或类似)。这个校验码信息将储存在一个安全的数据库中,即校验码数据库,以便将来的核对。
原版文档在download.csdn.net/download/shaoNianABin123/13094514
格式完整,排版较好