《网络安全与应用技术》 课程设计指导书
计算机科学与技术学院
********************
一.目的
本课程是网络工程专业选修课《网络安全与应用技术》的实践环节,主要要求学生掌握网络安全原理和技术在实践中的应用。本课程设计的目的是使学生在理论学习的基础上,动手编写程序,通过应用所学习的知识,来解决一些实际网络安全应用问题。在此基础上,真正理解和掌握网络安全的相关理论,具备程序设计的能力。
二.题目
任选下列一项目进行,查阅相关文献、了解相关的系统,要求完成规定的各项任务。
1. VPN软件
2. 安全的即时通讯软件
3. 安全数据库系统
4. 安全网络身份认证系统
5. CA系统
6. 网络内容安全过滤系统
7. 基于代理签名的代理销售软件
8. 安全电子商务(政务)网站设计
9.安全电子锁
10.各种网络攻击防护软件
11.入侵检测系统
(学生可自选课题,但需由教师认可,必须符合网络安全方向)三.任务完成形式
1. 完整的软件系统
1
最终必须向指导老师提交完整的电子版程序源代码、可执行程序、数据文件以及使用说明文件等。源代码文件要特别注意编程规范、代码风格,关键代码需有合理的注释,不含任何无用代码;数据文件内要求有一定数量的“真实”数据(如对于记录文件,需要有5条以上记录); 使用说明文件的第一行,需要给出设计者的学号、姓名,后面为其它说明。
2. 课程设计报告(详细要求请参考附录二)
课程设计报告总体上主要包括以下几个部分:
1)封面
2)目录
3)课程设计报告正文
4)软件安装、使用或者配置说明
5)参考文献
四.总体要求
根据所给的实验指导书的要求,从中选择项目,应用所学的知识,完成题目所规定的各项要求。总体要求如下:
1. 程序代码总量不少于500行(其中不包括编译器自动生成的代码),关键代码必须有合理注释。
2
2. 课程设计报告正文字数不少于8000汉字,概念清楚、叙述正确、内容完整、书写规范。
3. 课程设计中必须按指导书要求,综合应用所学的网络安全知识解决实际问题,有必要的理论分析,设计要有合理的依据。独立完成课程设计,不得抄袭他人。
4. 功能正确、有一定实用性,鼓励创新。
5. 程序界面友好,便于交互。
6. 在设计过程中要考虑用户使用的便利,提供一些多样化的选择,比如在算法的安全性和便利方面做出折衷。
7. 积极交流与讨论(通过同学、网络等途径)、善于查阅资料、分析与借鉴他人编写的软件和源代码。
五.工作阶段与考核方法
大体上可分成五个阶段:
1.资料查阅准备阶段(15%)
2.分析设计阶段(35%)
3.编程调试阶段(40%)
3
4.课程设计报告书写阶段(10%)
5.验收阶段
考核方法:
只有程序验收通过后,才能按以下方法核定本次课程设计的总成绩,因未能独立完成设计(尤其是抄袭)或概念不清的同学,总成绩将核定为不及格。总成绩由以下几个部分决定:
1. 考勤、纪律、实验室卫生
2. 工作量(代码量、功能多少、难度、经历的曲折)
3. 关键技术
4. 实用性、创新
5. 代码书写规范性(包括注释的质量、详尽程度和明晰性)
6. 程序界面、新技术引用、易用性
7. 课程设计报告(叙述、书写规范、字数)
8. 动手能力、分析问题解决问题能力
9. 在资源共享和互助协作方面的贡献及其体现的能力
4
六. 任务具体要求
以下题目任选,但是要达到工作量和代码量的要求,如果不能达到,可以融合几部分的内容。一些功能如果有其他的方法实现,也可以不按照指导书的要求。此外,还可以对常用的安全软件的功能延伸和改进。
1、VPN软件
任务:设计一个虚拟专用网系统,可以在虚拟环境下利用公网进行保密通信。
基本要求:
(1)可以产生公钥密钥对;
(2)可以采用共享对称密钥或者公钥建立安全连接;
(3)进行通信的身份认证,认证对方来自虚拟网的某个局域网;
2、安全的即时通讯软件
任务:采用加密、数字签名技术技术对即时通讯软件的通信进行保护。
功能要求:
5
1.可以进行通信的身份验证,登陆时需要对密码进行加密;
2.采用公钥密码技术验证和签名;
3.采用公钥密码和对称密码结合来进行消息加密,每一次会话产生一个对称加密的会话密钥,会话密钥用公钥建立;
4.具备正常的密钥管理功能,自己的私钥要加密,对方好友的公钥要加以存储和管理,具备导入导出功能。
5.验证完整性,确保消息在传输过程中没有被更改。
6.文件传输的安全,防止病毒文件的传播,防止有害内容的传播,包括一些病毒、恶意程序,甚至防止窃取密码的木马。
3、安全数据库系统
任务:该系统实现一个安全的数据库系统,对数据库进行数字签名保证完整性,数据加密保证隐秘性。
功能要求:
1.数据库的数据要进行加密;
2. 对数据库的完整性进行保护;
6
3.防止用户根据部分明文密文对恢复出数据库总密钥;
4.数据采用一个密钥以某种形式衍生子密钥进行加密;
5.保证密钥的安全性。
说明:可以采用总密钥,根据hash函数,以及每一个数据的各种属性来产生子密钥。
4、安全网络身份认证系统
任务:实现一个安全的网络身份系统,用于身份验证,能够抵抗大多数的攻击。
功能要求:
1.抵抗重放攻击,可采用序列号、时间戳、应答响应、流密码、密钥反馈机制;
2.认证信息在网络上应当进行加密;
3.利用公钥机制共享身份验证信息。
5、CA系统
任务:实现一个ca系统,可以接受用户的认证请求,安全储存用户信息,记录储存对用户的一些认证信息,给用户颁发证书,可以吊销。
功能要求:
7
1.接受用户的提交申请,提交时候让用户自己产生公钥对;
2.接受用户的申请,包括用户信息的表单提交,公钥的提交;
3.在对用户实施认证的过程中,储存相应的电子文档,比如证书、营业执照的扫描文档;
4.通过验证的给予颁发证书;
5.用户密钥丢失时,可以吊销证书,密钥作废。
6、网络内容安全过滤系统
任务:设计针对邮件、网页以及文件进行过滤的软件。
功能要求:
1.对文本内容、url、网址、ip进行过滤;
2.可以自动去一些网址下载黑名单;
3.软件本身设置一定的安全保护措施,防止被篡改、非法访问等;
4.可以根据需要增加其他的过滤和功能设置,比如限时上网、超时下线、黑屏警告一些非法行为等。
5.增加一定的自学习功能,通过非法信息的特征来升级特征库。
8
7、基于代理签名的代理销售软件
任务:设计一个基于代理签名的代理销售软件,解决电子商务中的一些信任问题。
功能要求:
1.采用代理签名算法或者用多重数字签名构建代理签名;
2.供货商、代理商和客户之间可以相互进行加密的、可以验证身份的通信,即使在对代理商无法信任的情况下,可以通过对供货商的信任来建立对销售的信任,签名可以针对一些承诺、质量保证等做数字签名,以保证客户可以直接追溯责任至供货商;
3.签名部分可以和原文件合成一个新文件,也可以另外单独生成一个小签名文件;
8、安全电子商务(政务)网站设计
任务:实现一个安全电子商务(政务)网站
功能要求
1.网站登录采用SSL之类的安全协议,密码的保存采用hash函数,或者加密技术。
2.客户访问采用sll加密所有通信数据。
3.数据库设计一定的备份恢复机制以及完整性验证机制。
9
商务网站可以增加网上拍卖、电子货币,电子支付,还有类似支付宝之内的功能。密钥管理软件。
电子政务网站可以增加具有数字签名的审批功能,电子投票、电子选举功能。
9、安全电子锁
任务:实现一个安全的电子锁。
功能要求
此题目要求较高,可以只完成一部分。要求熟悉硬件编程、hash算法设计,具体的要求,
1. 设计简化的hash算法,用于锁和钥匙之间的认证。
2. 防止重放攻击,采用应答响应机制。
3. 钥匙关锁的时候,锁验证钥匙的身份,通过则开启锁。
4. 锁关好后发出一个信息,钥匙予以确认身份,并且发出声音等提示。
10、各种网络攻击防护软件
任务:针对于一种或者几种病毒、木马以及各种攻击工具的攻击,设计相应的防护软件。
功能要求
10
自己针对相应的攻击和威胁进行设计,保证工作量和代码量,如果工作量不足,应当增加其他的攻击和威胁的防范。
11、入侵检测系统
任务:实现一个入侵检测系统
功能要求
1. 具有嗅探功能。
2. 能够分析数据包,甚至能够对系统日志进行检测和分析。
3. 设定检测的规则,可以参考snort的规则。
4. 可以根据用户自己设置的规则进行报警、记录、甚至响应。
5. 能够生成入侵检测系统的日志,记录各种检测到的事件。
选做内容:创新性研究
一、 目的与要求
通过培养学生的动手能力,创新能力,自学能力和摸索的能力。二、 基本原理
11
根据选择的内容,搜索资料,自学和掌握其原理。
三、 实验内容和步骤
(1)首先根据自己的判断,选择一个有发展空间,适合自己,具有理论或者实践意义的题目,搜索相关资料,要充分利用搜索引擎和图书馆电子资源,自学相关内容。
(2)了解目前常用的方法和理论,目前别人研究的现状如何了,分析现有理论的局限性,或者是值得研究但是尚未研究的领域,提出新的问题。
(3)在现有的基础上进行突破和创新,可以是:解决新的问题;在别人的基础上进行改进,得出更好的结果;提出新的问题,并且尝试解决;将已有的技术应用在新的领域;集成现有的技术,解决新的问题。
(4)参考图书馆电子资源中的论文形式,整理成系统的论文或者制作一个软件。一般论文以引言开始,介绍目前研究现状,引出你的论文内容为什么值得研究,然后是正文,介绍自己的成果,要有说服力,最后是结束语,做一个总结和展望。
四、 实验报告要求
(1)根据自己完成的情况,整理出一份报告,论文或者软件。
(2)注意写出自己做研究时的历程,包括自己的曲折和失败,是如何找到新资料的,如何突破困难,如何克服各种限制,如何处理创新与其他课程学习之间的关系,在多个选择中是如何决策的等等,以总结经验教训,也能让老师充分估算工作量,合理评价。
12
(3)创新性研究注重过程,而不是结果,注重能力的锻炼,允许失败,即如果实验没有完成,也可以提交一个没有完成或者失败的报告。
(4)可以提交电子文档,无需纸质报告。
(5)禁止抄袭,报告尽量详尽、通俗、务实,过程尽量清楚,便于工作量的认定和评分。
附录一:课程设计说明书格式要求
课程设计(论文)说明书
题 目:
学 院: 专 业:
姓 名:
学 号:
13
指导教师:
年 月 日
《课程设计说明书》其它格式规定
一、纸张和页面要求
A4纸打印(手写的用学院标准课程设计说明书用纸);页边距要求如下:左边距为2.5厘米,上、下、右边距各为2厘米;行间距取固定值(设置值为18磅);字符间距为默认值(缩放100%,间距:标准)。
二、装订页码顺序
(1)封面,(2) 目录(注明页码),(3) 正文,(4) 参考文献。 装订线要求在页面左边。
三、章节序号
按照正式出版物的惯例,章节序号的级序规定如下:1、1.1、1.1.1、(1)、①
四、封面
采用统一规格,请参考本文档上一页所给出的封面格式。
五、目录
14
三号、黑体、居中、目录两字空四格、与目录的正文空一行。
六、正文
正文的页数不少于10页(不包括封面、目录、参考文献等),正文字数不少于8000。
正文的章节目序号按照正式出版物的惯例,章节目序号的层次顺序依次规定如下:
1、 1.1、 1.1.1、 (1) ①
正文一般分5~7个部分,参考下面的格式来写:
(1)前言。概述所作题目的意义、本人所做的工作、及系统的主要功能;
(2)系统分析。分析和描述所设计系统的基本要求与内容;
(3)功能设计。描述及绘制出系统的功能结构框图;
(4)所遇到的问题及分析解决。
(5)系统特色及关键技术。 必要时给出关键部分源代码,并准确指出其在程序中位置(文件名、行号)。
(6)测试。从多方面对软件功能和性能的测试,说明功能的实现情况。
(7)结论。完成情况、有待改进之处、对未来改进的展望、特殊说明、心得体会等。
15
正文的主要内容必须是对自己所作的设计工作的描述,不得大量抄录对特定软件技术的说明性文字和程序代码。设计方案图和软件运行界面的截图的总数不得超过10个,每个图形的大小不得超过1/3页大小(个别流程图等可适当不受限制)。
正文字体用小四,宋体。各级标题参考附录的毕业设计的范文。
所有的图的下方都要编号和命名, 比如 图2-2 系统结构图,其中前一个数字是代表章,后一个代表这一章的所有图中的序号。
所有的表的上方都要编号和命名,比如 表2-2 证书结构,数字用法如上。
正文的页眉统一采用“桂林电子科技大学课程设计(论文)报告用纸”。注意,要在正文和前面部分之间分节,这样才能保证页眉不出现在封面。
文中格式应当统一,首行都要缩进两个汉字位置。
七、谢辞
如果得到了同学的帮助,需要写出详细的谢辞,必须指出名字、帮助的内容和工作量。这些工作将计入这些同学的平时成绩。
鼓励去答疑,老师给予的帮助是本职工作,所以无需专门写谢辞,可以省略这一部分。
八、参考文献
参考文献要另起一页,一律放在正文后,不得放在各章之后。只列出作者直接阅读过或
16
在正文中被引用过的文献资料,作者只写到第三位,余者写“等”,英文作者超过3人写“et al”。
几种主要参考文献著录表的格式为:
⑴专(译)著:[序号]著者.书名(译者)[M].出版地:出版者,出版年:起~止页码.
⑵期 刊:[序号]著者.篇名[J].刊名,年,卷号(期号):起~止页码.
⑶论 文 集:[序号]著者.篇名[A]编者.论文集名[C] .出版地:出版者,出版者. 出版年:起~止页码.
⑷学位论文:[序号]著者.题名[D] .保存地:保存单位,授予年.
⑸专利文献:专利所有者.专利题名[P] .专利国别:专利号,出版日期.
⑹标准文献:[序号]标准代号 标准顺序号—发布年,标准名称[S] .
⑺报 纸:责任者.文献题名[N].报纸名,年—月—日(版次).
请同学们参考一下的例子写:
参考文献(黑体四号、顶格)
[1] 王传昌.高分子化工的研究对象[J].天津大学学报,1997,53(3):1~7.
17
[2] 李明.物理学[M].北京:科学出版社,1977:58~62.
[3] Gedye R,Smith F,Westaway K,et al.Use of Microwave Ovens for Rapid Orbanic Synthesis.Tetrahedron Lett,1986,27:279.
[4] 王健.建筑物防火系统可靠性分析[D].天津:天津大学,1997.
[5] 姚光起.一种痒化锆材料的制备方法[P].中国专利:891056088,1980-07-03.
[6] GB3100-3102 0001—1994,中华人民共和国国家标准[S].
(以上,序号用中扩号,与文字之间空两格。如果需要两行的,第二行文字要位于序号的后边,与第一行文字对齐。中文的用五号宋体,外文的用五号Times New Roman字体。)
九、附录
1.安装说明,安装的必须环境,比如.Net的版本,必需的一些dll,环境和平台,操作系统的版本。
2.使用说明。
3. 软件开发进程日志,版本和功能更新情况。
4.必要的支持文献和资料。
5.其他。
18
附录二 常用的学术搜索引擎
1、http://scholar.google.com/
虽然还是Beta版,但个人已觉得现在已经是很好很强大了,Google学术搜索滤掉了普通搜索结果中大量的垃圾信息,排列出文章的不同版本以及被其它文章的引用次数。略显不足的是,它搜索出来的结果没有按照权威度(譬如影响因子、引用次数)依次排列,在中国搜索出来的,前几页可能大部分为中文的一些期刊的文章。
2、http://www.scirus.com
Scirus是目前互联网上最全面、综合性最强的科技文献搜索引擎之一,由Elsevier科学出版社开发,用于搜索期刊和专利,效果很不错!Scirus覆盖的学科范围包括:农业与生物学,天文学,生物科学,化学与化工,计算机科学,地球与行星科学,经济、金融与管理科学,工程、能源与技术,环境科学,语言学,法学,生命科学,材料科学,数学,医学,神经系统科学,药理学,物理学,心理学,社会与行为科学,社会学等。
3、http://www.base-search.net/
BASE是德国比勒费尔德(Bielefeld)大学图书馆开发的一个多学科的学术搜索引擎,提供对全球异构学术资源的集成检索服务。它整合了德国比勒费尔德大学图书馆的图书馆目录和大约160 个开放资源(超过200 万个文档)的数据。
4、http://www.vascoda.de/
Vascoda是一个交叉学科门户网站的原型,它注重特定主题的聚合,集成了图书馆的收
19
藏、文献数据库和附加的学术内容。
5、http://www.goole.com/
与google比较了一下发现,能搜索到一些google搜索不到的好东东 。它界面简洁,功能强大,速度快,YAHOO、网易都采用了它的搜索技术。各位可以一试。
6、http://www.a9.com
Google在同一水平的搜索引擎。是Amazon.com推出的,Web result部分是基于Google的,所以保证和Google在同一水平,另外增加了Amazon的在书本内搜索的功能和个性化功能:主要是可以记录你的搜索历史。现在还是Beta,不过试用后感觉很好,向大家推荐一试 ,不过缺憾是现在书本内搜索没有中文内容。
7、http://www.ixquick.com
严格意义上讲不是搜索引擎,是连接搜索引擎和网络用户的信息立交桥。新一代的搜索引擎应运而生,Ixquick meta-search正是目前最具光芒的新星。但是对于大多数国内用户来说,Ixquick还很陌生。Ixquick众多独特的功能我不一一介绍了,只介绍我们最关心的,搜索数据库密码。
使用方法:先进入Ixquick,以“Proquest”数据库为例。填入Proquest Username Password History Online后点击search,看看出来的结果,第一页中第6个,proquest的username和password赫然在目,别急,再看第4个结果“HB Thompson Subscription Online
Databases”
,
即
20
http://homework.syosset.k12.ny.us/onlinedbs/HBTDatabases/,进入后发现这是一个密码页,选择Magazines & Journals栏,就有 EBSCO、Electric Library Elementary、Electric Library Elementary、ProQuest Platinum (in school)、ProQuest Platinum (remote)等众多数据库的密码,都有uesrname和password,随便试一下EBSCO,OK,成功登陆。
8、http://vivisimo.com/
cmu的作品,对搜索的内容进行分类,这样可以有效地做出选择,比较有特色。可实现分类检索,检索速度也很好,如EBSCO 密码几分钟就可找一大堆 .
9、http://www.findarticles.com/
一个检索免费paper的好工具。 进入网页以后,可以看到他有三个功能,driectory web article ,其中article对我们很有帮助,你可以尝试输入你要找的文章,会有很多发现的!
10、http://www.ojose.com/
OJOSE (Online JournalSearch Engine,在线期刊搜索引擎)是一个强大的免费科学搜索引擎,通过OJOSE,你能查找、下载或购买到近60个数据库的资源。
11、http://citeseer.ist.psu.edu/
一个关于计算机和信息科学的搜索引擎。
针对于一些疑问的回答
21
1.据说许多同学编程不熟练:多上网,上论坛,熟悉编程。这个我就不直接做讲解或者补充资料了。自己向同学请教,或者是学习,要熟悉基本的面向对象的理论和方法,熟悉c++,c#之类的语言,写代码的时候要认真,小心地检查错误,可能错误自己很难发现,就互相查错。学会自己去摸索解决问题。
2.信息安全的编程: 就目前的安全实现,采用点net最为方便,而且对两个课程设计都有用,建议多用net中的system.security.cryptography命名空间。多看源代码,这一点我经常强调,而目前做的快的学生也是这么说的:看的多了,别人的代码就是你的了。一些同学不喜欢读代码,写代码,读代码首先是要有基础,熟悉编程语言和编译器。根据目前的情况, 有同学对一些安全原理没有掌握好,加上目前的知识面不宽广,信息安全编程很容易出现各种安全缺陷和漏洞,及时和老师同学交流。
3.系统功能难:可以根据自己的能力实现,最后的验收和答辩不是为了抓人,只要自己真的努力了就不用担心。PGP的标准和源代码也是一个很好的参考。有问题多问老师,多答疑 ,多看别人是怎么答疑的,学习别人的问题。
4.功能的如何实现:首先是学会查找相关的资料,查找相关的类库,函数,api,接口等等,多参考网上的资料,实际上网上的资料很多,如果自己不去查,只能怪自己。针对这样的问题,多去答疑,或者是网上问老师,不要逃避答疑。一个问题有许多方法,一个方法有问题,可以试一试其他的方法。
5.调试:调试要掌握方法,可以观察产生的值是不是有问题,看密文的长度是不是恰当等,也可以在程序里面用新的方法产生一个结果,或者是现实各种值,通过计算发现是哪个地方出了问题。再就是要学会从程序运行的结果观察程序中的错误。代码调试可以互相检查,效果会比较好。必要时候,重新学习一下编程的基本知识。编程过程中不出现错误是不可能的,
22
即使几个做的很好的同学,他们也是经历了失败的,也不断调整和更换方法,如果自己只是经历一次失败就说这个很难,只能说是自己根本没有努力。学会通过各种测试缩小错误的范围,特别是用一些特别的数据进行测试可以很容易判断问题出现在哪一段代码。学会通过一些信息,比如文件长度、文件的数据来发现问题。一些软件,比如winhex,六进制的文件编辑软件来查看文件的数据,通过各种对比发现问题所在。
6.随后会补充一些资料包括代码,鼓励学生之间互相帮助,鼓励去答疑,如果得到了同学的帮助,在说明书上增加谢辞,明确说明某同学给你何种帮助,我们也会考虑纳入平时成绩。在最后或者是下一个课程设计的时候,会考虑让一些做的很好的同学讲解自己的经验和心得,包括自己的作品,希望做的好的同学积极参与,纳入平时成绩。鼓励写一些经验,日记之类的东西,也可以作为加分的依据。附了一篇毕业设计的论文,可以作为说明书的格式参考,也有一定的源代码。
23
因篇幅问题不能全部显示,请点此查看更多更全内容