![点击分享此内容可以赚币 分享](/master/images/share_but.png)
数据安全课程设计指导书.doc
《数据安全课程设计指导书.doc》由会员分享,可在线阅读,更多相关《数据安全课程设计指导书.doc(53页珍藏版)》请在咨信网上搜索。
1、数据安全课程设计指导书 课程设计指导书 计算机与控制学院 一目的本课程是信息安全专业所开设的一门基础性的实践课程,主要是数据安全原理和技术在实践开发中的具体应用。本课程的任务是:经过本课程的学习实践,使用学生进一步理解数据安全开发的工程化思想,掌握如何有效集成各种算法设计安全系统,掌握数据安全相关软件分析、设计和测试方法,面向对象的分析和设计方法的具体应用,熟悉一些数据安全软件开发流程。二题目任选下列一项目(或者集成其中的数项)进行,查阅相关文献、了解相关的系统,要求完成系统需求规约文档、系统分析模型文档、系统设计模型文档、系统测试设计文档、系统编码和测试报告。1. 文件加密系统2. 数字版权
2、保护系统3. 多功能数字签名系统4. U盘加密系统5. 数据备份与恢复软件6. 基于内容加密系统7. 数字密写系统(学生可自选课题,但需由教师认可)三任务完成形式1 完整的软件系统 最终必须向指导老师提交完整的电子版程序源代码、可执行程序、数据文件以及使用说明文件等。源代码文件要特别注意编程规范、代码风格,关键代码需有合理的注释,不含任何无用代码;数据文件内要求有一定数量的”真实”数据(如对于记录文件,需要有5条以上记录); 使用说明文件的第一行,需要给出设计者的学号、姓名,后面为其它说明。2 课程设计报告(详细要求请参考附录二)课程设计报告总体上主要包括以下几个部分:1)封面2)目录3)课程
3、设计报告正文4)软件安装、使用或者配置说明5)参考文献四总体要求 根据所给的实验指导书的要求,从中选择项目,应用所学的知识,完成题目所规定的各项要求。总体要求如下:1 程序代码总量不少于600行(其中不包括编译器自动生成的代码),要求基本上逐行注释,关键代码必须有合理注释以及相应的说明。2 课程设计报告正文字数不少于8000字,概念清楚、叙述正确、内容完整、书写规范。3 课程设计中必须按指导书要求,综合应用所学的数据安全知识解决实际问题,有必要的理论分析,设计要有合理的依据。独立完成课程设计,不得抄袭她人。即使是同类的题目,能够分在一组互相交流,可是也不能抄袭,不能雷同,必须有差异,学生最终提
4、交的电子文档(包括源代码)会经过各种方式的比较的。4 功能正确、有一定实用性,鼓励创新。5 阅读一定的源代码,借鉴经典的设计方法。6 设计时适当考虑程序的可维护性与可扩充性,另外集成一些常见的功能,软件有适当的帮助,易于使用和操作。7 积极交流与讨论(经过同学、网络等途径)、善于查阅资料、分析与借鉴她人编写的软件。8 软件设计好以后,鼓励遵循开放源代码的思想,将代码和系统在网络上公开,接受专家和网民的评价。9 鼓励自己设计算法(比如加密、签名和hash算法的设计)。10 及时与老师交流,以了解自己的设计是否符合要求,遇到的各种问题及时联系,课后能够采用email和即时通讯软件联系。11 学会搜
5、索网上已有的类似软件,进行分析、比较、集成和创新。12 学生应当既把设计当作一个任务,又要注意更要掌握方法,锻炼多方面的能力,特别是在有限的时间和有限的条件下摸索的能力。五工作阶段与考核方法大致上可分成五个阶段: 1资料查阅准备阶段(15%)2分析设计阶段(35%)3编程调试阶段(40%)4课程设计报告书写阶段(10%)5验收阶段 考核方法: 只有程序验收经过后,才能按以下方法核定本次课程设计的总成绩,因未能独立完成设计(特别是抄袭)或概念不清的同学,总成绩将核定为不及格。总成绩由以下几个部分决定:1 考勤、纪律、实验室卫生2 工作量(代码量、功能多少、难度、经历的曲折)3 关键技术4 实用性
6、、创新5 代码书写规范性(包括注释的质量、详尽程度和明晰性)6 程序界面、新技术引用、易用性7 课程设计报告(叙述、书写规范、字数)8 动手能力、分析问题解决问题能力9 答辩的情况(答辩时会问关于系统实现和本作品相关的理论知识的问题)10 在资源共享和互助协作方面的贡献及其体现的能力 六任务具体要求1、文件加密系统任务:设计一个文件加密系统,能够对不同的文件进行加密解密。基本要求: (1)能够正确对文件进行加解密; (2)加密前先压缩; (3)对原明文应当能够销毁;(4)密钥无论是存储在内存还是文件中均应能销毁; (5)对密钥能够进行备份,比如用口令字进行加密备份。 2、数字版权保护系统任务:
7、采用加密、数字签名技术和信息隐藏技术对电子类的文档、视频音频文件、软件进行版权保护,防止非授权的的访问和应用,或保存证据。功能要求:1.读取授权机器的硬件信息,比如cpu、网卡mac地址、硬盘序列号等硬件信息生成hash值;2.用用户名和以上hash值产生一个新的hash值,采用数字签名技术产生序列号;3.受版权保护的文档能够对序列号进行认证;4.能够对受保护的内容进行加密,在经过认证,输入密码后才能解密。5.可增加其它的比如做阅读、访问次数限制的功能。6.能够采用数字水印和信息隐藏技术保护。3、多功能数字签名系统任务:该系统实现一个多功能的数字签名系统。功能要求:1对文件进行签名,生成一个独
8、立于原文的签名文件;2. 能够对文件进行签名,在文件后追加签名信息;3能够比对已经实施的签名,防止进行重复的签名,这里指的是进行hash以后的值,或者说是签名得到的最后的签名值,以防止重放攻击;4具有密钥管理的功能,比如密钥的生成、导入、导出;5对私钥加密保护;6选择性功能:能够对word文档实施操作,设计一定的格式,对word文档的内容进行签名,而签名的值也最终存放在word文档的特定标识后。说明:功能各方面越完善越好4、U盘加密系统任务:实现一个对u盘进行完全加密或者部分加密的系统。功能要求:1对u盘进行部分或者全部加密;2采用对称加密算法进行u盘数据加密;3对对称加密算法的密钥要用口令或
9、者公钥加密;4能够将部分加密的u盘文件加载为一个新的虚拟磁盘;5、数据备份与恢复软件任务:制作一个能够备份磁盘数据、恢复丢失数据的软件。基本要求:1能够对删除文件进行恢复。2能够备份整个分区。3.能够恢复磁盘格式化的文件。(对学生的要求,熟悉汇编,熟悉相应的api,多参考数据安全与编程技术。)6、基于内容加密系统功能:实现一个能够针对文件内容进行加密的系统要求具体的实现参考附录论文。7、数字密写系统功能:实现一个数字密写系统要求具体的实现参考附录论文。附录一:编程规范随着软件产品的功能增加和版本的提高,代码越来越复杂,源文件也越来越多,对于软件开发人员来说,除了保证程序运行的正确性和提高代码的
10、运行效率之外,规范风格的编码会对软件的升级、修改、维护带来极大的方便性,也保证程序员不会陷入”代码泥潭”中无法自拔。开发一个成熟的软件产品,除了有详细丰富的开发文档之外,必须在编写代码的时候就有条不紊,细致严谨。 以下的编码规范包含了程序排版、注释、命名、可读性、变量、程序效率、质量保证、代码编译、代码测试和版本控制等注意事项。 一、排版: 1.关键词和操作符之间加适当的空格。 2.相对独立的程序块与块之间加空行 3.较长的语句、表示式等要分成多行书写。 4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。 5.长表示式要在低优先级操作符处划分新行,操作符放在新行之首。 6.循环、判断等语
11、句中若有较长的表示式或语句,则要进行适应的划分。 7.若函数或过程中的参数较长,则要进行适当的划分。 8.不允许把多个短语句写在一行中,即一行只写一条语句。 9.函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格。 10.C/C+语言是用大括号和界定一段程序块的,编写程序块时和各独占一行而且位于同一列,同时与引用它们的语句左对齐。在函数体的开始、类的定义、结构的定义、枚举的定义以及if、for、do、while、switch、case语句中的程序都要采用如上的缩进方式。 二、注释 1.注释要简单明了。 2.边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性
12、。 3.在必要的地方注释,注释量要适中。注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。 4.对代码的注释应放在其上方相邻位置,不可放在下面。 5.对数据结构的注释应放在其上方相邻位置,不可放在下面;对结构中的每个域的注释应放在此域的右方;同一结构中不同域的注释要对齐。 6.变量、常量的注释应放在其上方相邻位置或右方。 7.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。 8.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间
13、的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。 9.在每个函数或过程的前面要有必要的注释信息,包括:函数或过程名称;功能描述;输入、输出及返回值说明;调用关系及被调用关系说明等。 三、命名 1.较短的单词可经过去掉”元音”形成缩写; 2.较长的单词可取单词的头几发符的优先级,并用括号明确表示式的操作顺序,避免使用默认优先级。 3.使用匈牙利表示法 四、可读性 1.避免使用不易理解的数字,用有意义的标识来替代。 2.不要使用难懂的技巧性很高的语句。 3.源程序中关系较为紧密的代码应尽可能相邻。 五、变量 1.去掉没必要的公共变量。 2.构造仅有一个模块或函数能够修改
14、、创立,而其余有关模块或函数只访问的公共变量,防止多个不同模块或函数都能够修改、创立同一公共变量的现象。 3.仔细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。 4.明确公共变量与操作此公共变量的函数或过程的关系,如访问、修改及创立等。 5.当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。 6.防止局部变量与公共变量同名。 7.仔细设计结构中元素的布局与排列顺序,使结构容易理解、节省占用空间,并减少引起误用现象。 8.结构的设计要尽量考虑向前兼容和以后的版本升级,并为某些未来可能的应用保留余地(如预留一些空间等)。 9.留心具体语言及编译器处理不同数据类型
15、的原则及有关细节。 10.严禁使用未经初始化的变量。声明变量的同时对变量进行初始化。 11.编程时,要注意数据类型的强制转换。 六、函数、过程 1.函数的规模尽量限制在200行以内。 2.一个函数最好仅完成一件功能。 3.为简单功能编写函数。 4.函数的功能应该是能够预测的,也就是只要输入数据相同就应产生同样的输出。 5.尽量不要编写依赖于其它函数内部实现的函数。 6.避免设计多参数函数,不使用的参数从接口中去掉。 7.用注释详细说明每个参数的作用、取值范围及参数间的关系。 8.检查函数所有参数输入的有效性。 9.检查函数所有非参数输入的有效性,如数据文件、公共变量等。 10.函数名应准确描述
16、函数的功能。 11.避免使用无意义或含义不清的动词为函数命名 12.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。 13.明确函数功能,精确(而不是近似)地实现函数设计。 14.减少函数本身或函数间的递归调用。 15.编写可重入函数时,若使用全局变量,则应经过关中断、信号量(即P、V操作)等手段对其加以保护。 七、可测性 1.在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调测开关及相应测试代码如打印函数等。 2.在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时仔细分析并优化测试用例,以提高测试效率。 八、程序效率 1.编程时要经常注意代码的
17、效率。 2.在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。 3.不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影响。 4.编程时,要随时留心代码效率;优化代码时,要考虑周全。 5.要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。 6.经过对系统数据结构划分与组织的改进,以及对程序算法的优化来提高空间效率。 7.在多重循环中,应将最忙的循环放在最内层。 8.尽量减少循环嵌套层次。 9.避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。 10.尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。 九、质量保证 1.在软件设计过程
18、中构筑软件质量。 代码质量保证优先原则 (1)正确性,指程序要实现设计要求的功能。 (2)稳定性、安全性,指程序稳定、可靠、安全。 (3)可测试性,指程序要具有良好的可测试性。 (4)规范/可读性,指程序书写风格、命名规则等要符合规范。 (5)全局效率,指软件系统的整体效率。 (6)局部效率,指某个模块/子模块/函数的本身效率。 (7)个人表示方式/个人方便性,指个人编程习惯。 2.只引用属于自己的存贮空间。 3.防止引用已经释放的内存空间。 4.过程/函数中分配的内存,在过程/函数退出之前要释放。 5.过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出前要关闭。 6.防止内存
19、操作越界。 7.时刻注意表示式是否会上溢、下溢。 8.认真处理程序所能遇到的各种出错情况。 9.系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用。 10.系统运行之初,要对加载到系统中的数据进行一致性检查。 11.严禁随意更改其它模块或系统的有关设置和配置。 12.不能随意改变与其它模块的接口。 13.充分了解系统的接口之后,再使用系统提供的功能。 14.要时刻注意易混淆的操作符。当编完程序后,应从头至尾检查一遍这些操作符。 15.不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句。 16.建议:使用第三方提供的软件开发工具包或控件时,要注意以下几点: (1)充分了
20、解应用接口、使用环境及使用时注意事项。 (2)不能过分相信其正确性。 (3)除非必要,不要使用不熟悉的第三方工具包与控件。 十、代码编译 1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成代码丢失。 2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选项。 3.合理地设计软件系统目录,方便开发人员使用。 4.打开编译器的所有告警开关对程序进行编译。 5.在同一项目组或产品组中,要统一编译开关选项。 6.使用工具软件(如Visual SourceSafe)对代码版本进行维护。 十一、代码测试、维护 1.单元测试要求至少达到语句覆盖。 2.单元测试开始要跟踪每一条语句
21、,并观察数据流及变量的变化。 3.清理、整理或优化后的代码要经过审查及测试。 4.代码版本升级要经过严格测试。附录二:课程设计说明书格式要求 课程设计(论文)说明书题 目: 学 院: 专 业: 姓 名: 学 号: 指导教师: 年 月 日其它格式规定一、纸张和页面要求A4纸打印(手写的用学院标准课程设计说明书用纸);页边距要求如下:左边距为2.5厘米,上、下、右边距各为2厘米;行间距取固定值(设置值为18磅);字符间距为默认值(缩放100%,间距:标准)。二、装订页码顺序(1)封面,(2) 目录(注明页码),(3) 正文,(4) 参考文献。 装订线要求在页面左边。三、章节序号按照正式出版物的惯例
22、,章节序号的级序规定如下:1、1.1、1.1.1、(1)、四、封面采用统一规格,请参考本文档上一页所给出的封面格式。五、目录三号、黑体、居中、目录两字空四格、与目录的正文空一行。六、正文正文的页数不少于10页(不包括封面、目录、参考文献等),正文汉字数不少于8000。正文的章节目序号按照正式出版物的惯例,章节目序号的层次顺序依次规定如下: 1、 1.1、 1.1.1、 (1) 正文一般分57个部分,参考下面的格式来写:(1)前言。概述所作题目的意义、本人所做的工作、及系统的主要功能;(2)系统分析。分析和描述所设计系统的基本要求与内容;(3)功能设计。描述及绘制出系统的功能结构框图;(4)所遇
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 安全 课程设计 指导书
![提示](https://www.zixin.com.cn/images/bang_tan.gif)
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【丰****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【丰****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。