您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 质量控制/管理 > 数据安全课程设计指导书
《数据安全》课程设计指导书计算机与控制学院hellowy@126.com1一.目的本课程是信息安全专业所开设的一门基础性的实践课程,主要是数据安全原理和技术在实践开发中的具体应用。本课程的任务是:通过本课程的学习实践,使用学生进一步理解数据安全开发的工程化思想,掌握如何有效集成各种算法设计安全系统,掌握数据安全相关软件分析、设计和测试方法,面向对象的分析和设计方法的具体应用,熟悉一些数据安全软件开发流程。二.题目任选下列一项目(或者集成其中的数项)进行,查阅相关文献、了解相关的系统,要求完成系统需求规约文档、系统分析模型文档、系统设计模型文档、系统测试设计文档、系统编码和测试报告。1.文件加密系统2.数字版权保护系统3.多功能数字签名系统4.U盘加密系统5.数据备份与恢复软件6.基于内容加密系统7.数字密写系统(学生可自选课题,但需由教师认可)三.任务完成形式1.完整的软件系统最终必须向指导老师提交完整的电子版程序源代码、可执行程序、数据文件以及使用说明文件等。源代码文件要特别注意编程规范、代码风格,关键代码需有合理的注释,不含任何无用代码;数据文件内要求有一定数量的“真实”数据(如对于记录文件,需要有5条以上记录);使用说明文件的第一行,需要给出设计者的学号、姓名,后面为其它说明。2.课程设计报告(详细要求请参考附录二)课程设计报告总体上主要包括以下几个部分:1)封面2)目录3)课程设计报告正文4)软件安装、使用或者配置说明5)参考文献2四.总体要求根据所给的实验指导书的要求,从中选择项目,应用所学的知识,完成题目所规定的各项要求。总体要求如下:1.程序代码总量不少于600行(其中不包括编译器自动生成的代码),要求基本上逐行注释,关键代码必须有合理注释以及相应的说明。2.课程设计报告正文字数不少于8000字,概念清楚、叙述正确、内容完整、书写规范。3.课程设计中必须按指导书要求,综合应用所学的数据安全知识解决实际问题,有必要的理论分析,设计要有合理的依据。独立完成课程设计,不得抄袭他人。即使是同类的题目,可以分在一组互相交流,但是也不能抄袭,不能雷同,必须有差异,学生最终提交的电子文档(包括源代码)会经过各种方式的比较的。4.功能正确、有一定实用性,鼓励创新。5.阅读一定的源代码,借鉴经典的设计方法。6.设计时适当考虑程序的可维护性与可扩充性,另外集成一些常用的功能,软件有适当的帮助,易于使用和操作。7.积极交流与讨论(通过同学、网络等途径)、善于查阅资料、分析与借鉴他人编写的软件。8.软件设计好以后,鼓励遵循开放源代码的思想,将代码和系统在网络上公开,接受专家和网民的评价。9.鼓励自己设计算法(比如加密、签名和hash算法的设计)。10.及时与老师交流,以了解自己的设计是否符合要求,遇到的各种问题及时联系,课后可以采用email和即时通讯软件联系。11.学会搜索网上已有的类似软件,进行分析、比较、集成和创新。12.学生应当既把设计当作一个任务,又要注意更要掌握方法,锻炼多方面的能力,特别是在有限的时间和有限的条件下摸索的能力。五.工作阶段与考核方法大体上可分成五个阶段:1.资料查阅准备阶段(15%)2.分析设计阶段(35%)3.编程调试阶段(40%)4.课程设计报告书写阶段(10%)5.验收阶段考核方法:只有程序验收通过后,才能按以下方法核定本次课程设计的总成绩,因未能独立完成设计(尤其是抄袭)或概念不清的同学,总成绩将核定为不及格。总成绩由以下几个部分决定:1.考勤、纪律、实验室卫生2.工作量(代码量、功能多少、难度、经历的曲折)3.关键技术34.实用性、创新5.代码书写规范性(包括注释的质量、详尽程度和明晰性)6.程序界面、新技术引用、易用性7.课程设计报告(叙述、书写规范、字数)8.动手能力、分析问题解决问题能力9.答辩的情况(答辩时会问关于系统实现和本作品相关的理论知识的问题)10.在资源共享和互助协作方面的贡献及其体现的能力六.任务具体要求1、文件加密系统任务:设计一个文件加密系统,可以对不同的文件进行加密解密。基本要求:(1)可以正确对文件进行加解密;(2)加密前先压缩;(3)对原明文应当能够销毁;(4)密钥无论是存储在内存还是文件中均应能销毁;(5)对密钥可以进行备份,比如用口令字进行加密备份。2、数字版权保护系统任务:采用加密、数字签名技术和信息隐藏技术对电子类的文档、视频音频文件、软件进行版权保护,防止非授权的的访问和应用,或保存证据。功能要求:1.读取授权机器的硬件信息,比如cpu、网卡mac地址、硬盘序列号等硬件信息生成hash值;2.用用户名和以上hash值产生一个新的hash值,采用数字签名技术产生序列号;3.受版权保护的文档可以对序列号进行认证;4.可以对受保护的内容进行加密,在通过认证,输入密码后才能解密。5.可增加其他的比如做阅读、访问次数限制的功能。6.可以采用数字水印和信息隐藏技术保护。3、多功能数字签名系统任务:该系统实现一个多功能的数字签名系统。功能要求:41.对文件进行签名,生成一个独立于原文的签名文件;2.可以对文件进行签名,在文件后追加签名信息;3.能够比对已经实施的签名,防止进行重复的签名,这里指的是进行hash以后的值,或者说是签名得到的最后的签名值,以防止重放攻击;4.具有密钥管理的功能,比如密钥的生成、导入、导出;5.对私钥加密保护;6.选择性功能:可以对word文档实施操作,设计一定的格式,对word文档的内容进行签名,而签名的值也最终存放在word文档的特定标识后。说明:功能各方面越完善越好4、U盘加密系统任务:实现一个对u盘进行完全加密或者部分加密的系统。功能要求:1.对u盘进行部分或者全部加密;2.采用对称加密算法进行u盘数据加密;3.对对称加密算法的密钥要用口令或者公钥加密;4.可以将部分加密的u盘文件加载为一个新的虚拟磁盘;5、数据备份与恢复软件任务:制作一个可以备份磁盘数据、恢复丢失数据的软件。基本要求:1.可以对删除文件进行恢复。2.可以备份整个分区。3.可以恢复磁盘格式化的文件。(对学生的要求,熟悉汇编,熟悉相应的api,多参考数据安全与编程技术。)6、基于内容加密系统功能:实现一个可以针对文件内容进行加密的系统要求具体的实现参考附录论文。57、数字密写系统功能:实现一个数字密写系统要求具体的实现参考附录论文。附录一:编程规范随着软件产品的功能增加和版本的提高,代码越来越复杂,源文件也越来越多,对于软件开发人员来说,除了保证程序运行的正确性和提高代码的运行效率之外,规范风格的编码会对软件的升级、修改、维护带来极大的方便性,也保证程序员不会陷入“代码泥潭”中无法自拔。开发一个成熟的软件产品,除了有详细丰富的开发文档之外,必须在编写代码的时候就有条不紊,细致严谨。以下的编码规范包含了程序排版、注释、命名、可读性、变量、程序效率、质量保证、代码编译、代码测试和版本控制等注意事项。一、排版:1.关键词和操作符之间加适当的空格。2.相对独立的程序块与块之间加空行3.较长的语句、表达式等要分成多行书写。4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。5.长表达式要在低优先级操作符处划分新行,操作符放在新行之首。6.循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。7.若函数或过程中的参数较长,则要进行适当的划分。8.不允许把多个短语句写在一行中,即一行只写一条语句。9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。10.C/C++语言是用大括号‘{’和‘}’界定一段程序块的,编写程序块时‘{’和‘}’各独占一行并且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。二、注释1.注释要简单明了。2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。3.在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。4.对代码的注释应放在其上方相邻位置,不可放在下面。5.对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐。6.变量、常量的注释应放在其上方相邻位置或右方。7.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。68.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。9.在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等。三、命名1.较短的单词可通过去掉“元音”形成缩写;2.较长的单词可取单词的头几发符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。3.使用匈牙利表示法四、可读性1.避免使用不易理解的数字,用有意义的标识来替代。2.不要使用难懂的技巧性很高的语句。3.源程序中关系较为紧密的代码应尽可能相邻。五、变量1.去掉没必要的公共变量。2.构造仅有一个模块或函数可以修改、创建,而其余有关模块或函数只访问的公共变量,防止多个不同模块或函数都可以修改、创建同一公共变量的现象。3.仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。4.明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创建等。5.当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。6.防止局部变量与公共变量同名。7.仔细设计结构中元素的布局与排列顺序,使结构容易理解、节省占用空间,并减少引起误用现象。8.结构的设计要尽量考虑向前兼容和以后的版本升级,并为某些未来可能的应用保留余地(如预留一些空间等)。9.留心具体语言及编译器处理不同数据类型的原则及有关细节。10.严禁使用未经初始化的变量。声明变量的同时对变量进行初始化。11.编程时,要注意数据类型的强制转换。六、函数、过程1.函数的规模尽量限制在200行以内。2.一个函数最好仅完成一件功能。3.为简单功能编写函数。4.函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。5.尽量不要编写依赖于其他函数内部实现的函数。6.避免设计多参数函数,不使用的参数从接口中去掉。7.用注释详细说明每个参数的作用、取值范围及参数间的关系。78.检查函数所有参数输入的有效性。9.检查函数所有非参数输入的有效性,如数据文件、公共变量等。10.函数名应准确描述函数的功能。11.避免使用无意义或含义不清的动词为函数命名12.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。13.明确函数功能,精确(而不是近似)地实现函数设计。14.减少函数本身或函数间的递归调用。15.编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护。七、可测性1.在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调测开关及相应测试代码如打印函数等。2.在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时仔细分析并优化测试用例,以提高测试效率。八、程序效率1.编程时要经常注意代码的效率。2.在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。3.不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影响。4.编程时,要随时留心代码效率;优化代码时,要考虑周全。5.要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。6.通过对系统数据结构划分与组织的改进,以及对程序算法的优化来提高空间效率。7.在多重循环中,应将最忙的循环放在最内层。8.尽量减少循环嵌套层次。9.避免循环体内含判断语句,应将循环语句置于判
本文标题:数据安全课程设计指导书
链接地址:https://www.777doc.com/doc-1263012 .html