版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
年5月29日数据安全课程设计指导书文档仅供参考<数据安全>课程设计指导书计算机与控制学院一.目的本课程是信息安全专业所开设的一门基础性的实践课程,主要是数据安全原理和技术在实践开发中的具体应用。本课程的任务是:经过本课程的学习实践,使用学生进一步理解数据安全开发的工程化思想,掌握如何有效集成各种算法设计安全系统,掌握数据安全相关软件分析、设计和测试方法,面向对象的分析和设计方法的具体应用,熟悉一些数据安全软件开发流程。二.题目任选下列一项目(或者集成其中的数项)进行,查阅相关文献、了解相关的系统,要求完成系统需求规约文档、系统分析模型文档、系统设计模型文档、系统测试设计文档、系统编码和测试报告。1.文件加密系统2.数字版权保护系统3.多功能数字签名系统4.U盘加密系统5.数据备份与恢复软件6.基于内容加密系统7.数字密写系统(学生可自选课题,但需由教师认可)三.任务完成形式完整的软件系统最终必须向指导老师提交完整的电子版程序源代码、可执行程序、数据文件以及使用说明文件等。源代码文件要特别注意编程规范、代码风格,关键代码需有合理的注释,不含任何无用代码;数据文件内要求有一定数量的”真实”数据(如对于记录文件,需要有5条以上记录);使用说明文件的第一行,需要给出设计者的学号、姓名,后面为其它说明。课程设计报告(详细要求请参考附录二)课程设计报告总体上主要包括以下几个部分:1)封面2)目录3)课程设计报告正文4)软件安装、使用或者配置说明5)参考文献四.总体要求根据所给的实验指导书的要求,从中选择项目,应用所学的知识,完成题目所规定的各项要求。总体要求如下:程序代码总量不少于600行(其中不包括编译器自动生成的代码),要求基本上逐行注释,关键代码必须有合理注释以及相应的说明。课程设计报告正文字数不少于8000字,概念清楚、叙述正确、内容完整、书写规范。课程设计中必须按指导书要求,综合应用所学的数据安全知识解决实际问题,有必要的理论分析,设计要有合理的依据。独立完成课程设计,不得抄袭她人。即使是同类的题目,能够分在一组互相交流,可是也不能抄袭,不能雷同,必须有差异,学生最终提交的电子文档(包括源代码)会经过各种方式的比较的。功能正确、有一定实用性,鼓励创新。阅读一定的源代码,借鉴经典的设计方法。设计时适当考虑程序的可维护性与可扩充性,另外集成一些常见的功能,软件有适当的帮助,易于使用和操作。积极交流与讨论(经过同学、网络等途径)、善于查阅资料、分析与借鉴她人编写的软件。软件设计好以后,鼓励遵循开放源代码的思想,将代码和系统在网络上公开,接受专家和网民的评价。鼓励自己设计算法(比如加密、签名和hash算法的设计)。及时与老师交流,以了解自己的设计是否符合要求,遇到的各种问题及时联系,课后能够采用email和即时通讯软件联系。学会搜索网上已有的类似软件,进行分析、比较、集成和创新。学生应当既把设计当作一个任务,又要注意更要掌握方法,锻炼多方面的能力,特别是在有限的时间和有限的条件下摸索的能力。五.工作阶段与考核方法大致上可分成五个阶段:1.资料查阅准备阶段(15%)2.分析设计阶段(35%)3.编程调试阶段(40%)4.课程设计报告书写阶段(10%)5.验收阶段考核方法:只有程序验收经过后,才能按以下方法核定本次课程设计的总成绩,因未能独立完成设计(特别是抄袭)或概念不清的同学,总成绩将核定为不及格。总成绩由以下几个部分决定:考勤、纪律、实验室卫生工作量(代码量、功能多少、难度、经历的曲折)关键技术实用性、创新代码书写规范性(包括注释的质量、详尽程度和明晰性)程序界面、新技术引用、易用性课程设计报告(叙述、书写规范、字数)动手能力、分析问题解决问题能力答辩的情况(答辩时会问关于系统实现和本作品相关的理论知识的问题)在资源共享和互助协作方面的贡献及其体现的能力六.任务具体要求1、文件加密系统任务:设计一个文件加密系统,能够对不同的文件进行加密解密。基本要求:(1)能够正确对文件进行加解密;(2)加密前先压缩;(3)对原明文应当能够销毁;(4)密钥无论是存储在内存还是文件中均应能销毁;(5)对密钥能够进行备份,比如用口令字进行加密备份。2、数字版权保护系统任务:采用加密、数字签名技术和信息隐藏技术对电子类的文档、视频音频文件、软件进行版权保护,防止非授权的的访问和应用,或保存证据。功能要求:1.读取授权机器的硬件信息,比如cpu、网卡mac地址、硬盘序列号等硬件信息生成hash值;2.用用户名和以上hash值产生一个新的hash值,采用数字签名技术产生序列号;3.受版权保护的文档能够对序列号进行认证;4.能够对受保护的内容进行加密,在经过认证,输入密码后才能解密。5.可增加其它的比如做阅读、访问次数限制的功能。6.能够采用数字水印和信息隐藏技术保护。3、多功能数字签名系统任务:该系统实现一个多功能的数字签名系统。功能要求:1.对文件进行签名,生成一个独立于原文的签名文件;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、基于内容加密系统功能:实现一个能够针对文件内容进行加密的系统要求具体的实现参考附录论文。7、数字密写系统功能:实现一个数字密写系统要求具体的实现参考附录论文。附录一:编程规范随着软件产品的功能增加和版本的提高,代码越来越复杂,源文件也越来越多,对于软件开发人员来说,除了保证程序运行的正确性和提高代码的运行效率之外,规范风格的编码会对软件的升级、修改、维护带来极大的方便性,也保证程序员不会陷入”代码泥潭”中无法自拔。开发一个成熟的软件产品,除了有详细丰富的开发文档之外,必须在编写代码的时候就有条不紊,细致严谨。以下的编码规范包含了程序排版、注释、命名、可读性、变量、程序效率、质量保证、代码编译、代码测试和版本控制等注意事项。一、排版: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.全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。8.在每个源文件的头部要有必要的注释信息,包括:文件名;版本号;作者;生成日期;模块功能描述(如功能、主要算法、内部各部分之间的关系、该文件与其它文件关系等);主要函数或过程清单及本文件历史修改记录等。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.用注释详细说明每个参数的作用、取值范围及参数间的关系。8.检查函数所有参数输入的有效性。9.检查函数所有非参数输入的有效性,如数据文件、公共变量等。10.函数名应准确描述函数的功能。11.避免使用无意义或含义不清的动词为函数命名12.函数的返回值要清楚、明了,让使用者不容易忽视错误情况。13.明确函数功能,精确(而不是近似)地实现函数设计。14.减少函数本身或函数间的递归调用。15.编写可重入函数时,若使用全局变量,则应经过关中断、信号量(即P、V操作)等手段对其加以保护。七、可测性1.在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调测开关及相应测试代码如打印函数等。2.在进行集成测试/系统联调之前,要构造好测试环境、测试项目及测试用例,同时仔细分析并优化测试用例,以提高测试效率。八、程序效率1.编程时要经常注意代码的效率。2.在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。3.不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影响。4.编程时,要随时留心代码效率;优化代码时,要考虑周全。5.要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。6.经过对系统数据结构划分与组织的改进,以及对程序算法的优化来提高空间效率。7.在多重循环中,应将最忙的循环放在最内层。8.尽量减少循环嵌套层次。9.避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。10.尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。九、质量保证1.在软件设计过程中构筑软件质量。代码质量保证优先原则(1)正确性,指程序要实现设计要求的功能。(2)稳定性、安全性,指程序稳定、可靠、安全。(3)可测试性,指程序要具有良好的可测试性。(4)规范/可读性,指程序书写风格、命名规则等要符合规范。(5)全局效率,指软件系统的整体效率。(6)局部效率,指某个模块/子模块/函数的本身效率。(7)个人表示方式/个人方便性,指个人编程习惯。2.只引用属于自己的存贮空间。3.防止引用已经释放的内存空间。4.过程/函数中分配的内存,在过程/函数退出之前要释放。5.过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出前要关闭。6.防止内存操作越界。7.时刻注意表示式是否会上溢、下溢。8.认真处理程序所能遇到的各种出错情况。9.系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用。10.系统运行之初,要对加载到系统中的数据进行一致性检查。11.严禁随意更改其它模块或系统的有关设置和配置。12.不能随意改变与其它模块的接口。13.充分了解系统的接口之后,再使用系统提供的功能。14.要时刻注意易混淆的操作符。当编完程序后,应从头至尾检查一遍这些操作符。15.不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句。16.建议:使用第三方提供的软件开发工具包或控件时,要注意以下几点:(1)充分了解应用接口、使用环境及使用时注意事项。(2)不能过分相信其正确性。(3)除非必要,不要使用不熟悉的第三方工具包与控件。十、代码编译1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘损坏等原因造成代码丢失。2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选项。3.合理地设计软件系统目录,方便开发人员使用。4.打开编译器的所有告警开关对程序进行编译。5.在同一项目组或产品组中,要统一编译开关选项。6.使用工具软件(如VisualSourceSafe)对代码版本进行维护。十一、代码测试、维护1.单元测试要求至少达到语句覆盖。2.单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。3.清理、整理或优化后的代码要经过审查及测试。4.代码版本升级要经过严格测试。附录二:课程设计说明书格式要求课程设计(论文)说明书题目:学院:专业:姓名:学号:指导教师:年月日<课程设计说明书>其它格式规定一、纸张和页面要求A4纸打印(手写的用学院标准课程设计说明书用纸);页边距要求如下:左边距为2.5厘米,上、下、右边距各为2厘米;行间距取固定值(设置值为18磅二、装订页码顺序(1)封面,(2)目录(注明页码),(3)正文,(4)参考文献。装订线要求在页面左边。三、章节序号按照正式出版物的惯例,章节序号的级序规定如下:1、1.1、1.1.1、四、封面采用统一规格,请参考本文档上一页所给出的封面格式。五、目录三号、黑体、居中、目录两字空四格、与目录的正文空一行。六、正文正文的页数不少于10页(不包括封面、目录、参考文献等),正文汉字数不少于8000。正文的章节目序号按照正式出版物的惯例,章节目序号的层次顺序依次规定如下:1、1.1、1.1.1、正文一般分5~7个部分,参考下面的格式来写:(1)前言。概述所作题目的意义、本人所做的工作、及系统的主要功能;(2)系统分析。分析和描述所设计系统的基本要求与内容;(3)功能设计。描述及绘制出系统的功能结构框图;(4)所遇到的问题及分析解决。(5)系统特色及关键技术。必要时给出关键部分源代码,并准确指出其在程序中位置(文件名、行号)。(6)结论。完成情况、有待改进之处、特殊说明、心得体会等。正文的主要内容必须是对自己所作的设计工作的描述,不得大量抄录对特定软件技术的说明性文字和程序代码。设计方案图和软件运行界面的截图的总数不得超过10个,每个图形的大小不得超过1/3页大小(个别流程图等可适当不受限制)。正文字体用小四,宋体。各级标题参考附录的毕业设计的范文。七、参考文献参考文献要另起一页,一律放在正文后,不得放在各章之后。只列出作者直接阅读过或在正文中被引用过的文献资料,作者只写到第三位,余者写”等”,英文作者超过3人写”etal”。几种主要参考文献著录表的格式为:⑴专(译)著:[序号]著者.书名(译者)[M].出版地:出版者,出版年:起~止页码.⑵期刊:[序号]著者.篇名[J].刊名,年,卷号(期号):起~止页码.⑶论文集:[序号]著者.篇名[A]编者.论文集名[C].出版地:出版者,出版者.出版年:起~止页码.⑷学位论文:[序号]著者.题名[D].保存地:保存单位,授予年.⑸专利文献:专利所有者.专利题名[P].专利国别:专利号,出版日期.⑹标准文献:[序号]标准代号标准顺序号—发布年,标准名称[S].⑺报纸:责任者.文献题名[N].报纸名,年—月—日(版次).举例如下:参考文献(黑体四号、顶格)[1]王传昌.高分子化工的研究对象[J].天津大学学报,1997,53(3):1~7.[2]李明.物理学[M].北京:科学出版社,1977:58~62.[3]GedyeR,SmithF,WestawayK,etal.UseofMicrowaveOvensforRapidOrbanicSynthesis.TetrahedronLett,1986,27:279.[4]王健.建筑物防火系统可靠性分析[D].天津:天津大学,1997.[5]姚光起.一种痒化锆材料的制备方法[P].中国专利:,1980-07-03.[6]GB3100-31020001—1994,中华人民共和国国家标准[S].(以上,序号用中扩号,与文字之间空两格。如果需要两行的,第二行文字要位于序号的后边,与第一行文字对齐。中文的用五号宋体,外文的用五号TimesNewRoman字体。)附录三信息安全编程指南学会阅读和参考别人的源代码,比如PGP,openSSL,均包含了大量的信息安全实现的代码,对于这里的大部分题目都已足够。注意读代码是非常重要的。学会寻找相关的类库、函数、接口、第三方代码以及openSSL之类的开源产品等,比如cryptoAPI,点net的安全类,由于本科生的水平,能够尽量使用现成函数和功能库中的功能,不要从底层开始编写已有的功能。用点net的类比用api要简单,一些类集成了许多的实现过程,包括指导书提出的许多要求均已经集成。推荐的相关的书籍有:NET安全编程(C#/VB.NET),精通PKI网络安全认证技术与编程实现,openssl编程。另外,帮助和msdn也是非常重要的资料。瞄准有商业应用或者应用潜力的产品,这可能会完全改变一个人的前途,能够多关注一下baidu,腾讯,支付宝等IT业巨头的老板的发家史,注意只有做第一,才能抢占先机。信息安全蕴含着巨大的商机尚未得到开发,正等待着第一个发现这些商机的人,这需要有创新精神。学会调试,学会经过各种方法验证比较发现程序中的错误。调试要认真,严谨地去找到错误所在。编程过程中出现各种各样的错误种类繁多,有些是已有理论教学无法讲到的,甚至完全不可预料,前所未见,除了学会自己去发现外,多请教老师和学生,也要学会在网络上,比如csdn等地方寻求帮助,也能够在搜索引擎上寻找是否有类似的问题发生。多登陆论坛参与讨论,多加入各种群交流学习。网络是很好的老师,一定要善用网络,由于网络的平民化特点,网络资源不但丰富多样化,而且非常通俗,详尽,有些网友对操作或问题的描述非常细致清楚,这是书籍教材无法比较的。编程的学习和实践应该紧密结合,不可能等完全学会了再去编程,首先掌握基本的方法和理论,然后一边学习一边编程,现学现用,要用的时候去查手册和资料,无需死记硬背。由于编程涉及到的知识非常多,一定要有选择性的学习,按需学习。理论课的学习与实践各自有其侧重点,有时候是脱节的,比如密钥的处理就需要很多额外的知识,这些知识需要自己临时去掌握,临时想办法,有时候办法是很多的。以上说法仅为个人意见,仅供参考,欢迎批评指正和补充完善。信息安全不但在我校刚刚开办,而且在国内也是属于较新的专业,许多资源需要积累,同学们有好的资源和想法也能够交流共享。希望大家注重创新和实用性,要有创业精神,只有设计开发有应用潜力的作品,才能推广信息安全技术的应用。信息安全技术只有得到了广泛的应用,学生的就业前景才更加广阔。附录四信息安全和编程网站首推搜索引擎,要学会用搜索引擎。校园网图书馆的电子资源:搜索信息安全相关的设计与实现、开发,编程实现等论文。.net看雪论坛.com附录五重要的参考文献1.AdamFreeman,AllenJones著;靳京译,NET安全编程(C#/VB.NET)(学校图书馆有)(提供电子文档-英文版)2.<电脑编程技巧与维护>杂志社编著,VisualC++编程技巧典型案例解析.网络与通信及计算机安全与维护篇3.唐正军著。黑客入侵防护系统源代码分析,机械工业出版社(学校图书馆有)4.袁津生、郭敏哲、滑玉,计算机网络与安全实用编程,人民邮电出版社,5月第一版(学校图书馆有)5.(德)威尔森巴赫著,密码编码学-加密方法的c与c++实现(第二版),电子工业出版社,-6-1(提供电子文档)6.马臣云,王彦编著,精通PKI网络安全认证技术与编程实现,人民邮电出版社,(学校图书馆有)极度推荐此书**7.程序员密码学(提供电子文档-英文版)8.<寒江独钓:Windows内核编程与信息安全>(提供电子文档)9.刘文涛,网络安全编程技术与实例(信息科学与技术丛书·程序设计系列),机械工业出版社,08月10.(美)W.RichardStevens著,范建华等译.TCP/IP详解.机械工业出版社,。三卷-网络安全编程和网络编程推荐,网上能够下载电子文档。11.(美)JessGarmsDanielSomerfield,Java安全性编程指南,北京:电子工业出版社,12.梁洋洋,VisualC++黑客编程揭秘与防范,人民邮电出版社,13.KeithBrown译者:刘涛李一舟,windows安全性编程,中国电力出版社,14.openssl编程(提供电子文档)15.看雪学院,软件加密技术内幕,电子工业出版社,(提供电子文档)16.软件与技术研发小组,VisualC#程序设计实例教程,冶金工业出版社,17.注意更好的参考文献在网络,还有许多网络空间,纳米盘、趣盘、iask等都提供了丰富的资源下载,比图书馆的书更容易获取,电子文档处理起来更方便。附录六提交材料的要求采用统一设计报告用纸与封面,打印前先检查好,验收的时候需要检查文档。写清楚学号、班级、题目(即设计题目)、日期等写作内容强调自己的创新与特色;如果得到了其它的同学的帮助,增加谢辞部分,谢辞位于参考文献之前,写明得到哪个同学帮助以及具体的帮助内容。要有充分的代码注释,否则视为抄袭,文档应当尽量详尽,包括理论依据、理由等等。必须有目录页和参考文献说明应当提交源代码和报告,源代码为电子版,报告同时提供电子版和打印稿。为了便于各种雷同比较、字数统计、打分、错误修订等工作,所有提交的资料均必须同时提交电子版。选择性提交材料,能够只提供电子版:1)设计过程中的摸索和学习的心得和历程,越具体越好。2)在设计过程中阅读的源代码的注释文档。3)其它证明自己的工作量和设计过程中成败与曲折过程的文档。4)推荐的优质资料和资源。5)能够下载到比较好的电子书籍也能够提交。附录七验收与答辩验收时可能会提问,包括如何实现的。自己需要对创新性的说明,而且会有对应的提问。验收的时候同时检查课程设计说明书的电子版。强调自己做的内容、采用的技术,背景等相对简略。提前验收同等条件相对分数会高一种基于关键词替换的密写方法引言Steganography(密写术、隐写术)是一门关于信息隐藏的技巧与科学,所谓信息隐藏(informationhiding)指的是不让除预期的接收者之外的任何人知晓信息的传递事件或者信息的内容。现代的密写技术主要是依靠在图像、音频、视频等大容量的文件中隐藏信息[1]。还有一种特殊的信息隐藏技术,是1983年Simmons提出的阈下信道(subliminalchannel),狭义的阈下信道主要采用数字签名等来实现消息隐匿[2],可是阈下信道能够被封闭,而且利用数字签名传输的阈下消息往往很短。可见,当前的信息隐藏技术要么需要依靠大文件作为载体,要么只能传输很短消息,伪装文本(载体,covertext)和隐秘文本(stegotext,这里称为原文)相比较大很多,信道利用率不高。一旦被禁止发送图片音频、视频等大容量的文件,不允许进行数字签名的情况下,秘密消息的隐匿就无法实现,而信息隐藏和阈下信道问题往往是针对被监视的囚犯之类的背景的,监管人完全能够禁止任何可能隐匿消息的行为。本文在提出的低密钥可信度密码体制的基础上提出一类新的密写方法。关键词替换的密写原理笔者曾经设计而且软件实现了针对软磨硬泡攻击的加密方法,该加密方法采用类似选择题的方法进行加密[3]:该加密方法配备一个关键词数据库,每个关键词和它相类似、相反的词构成一组,比如,晴、雨、雪等构成一组,今天则和明天、后天、昨天等构成一个组,好比选择题,分别加以编号,形如[(0)晴(1)雨(2)雪],这里[和]分别代表一个扩充项的起始和结束标志,在实际实现的时候,这个标志应该是明文文本中不出现的。而(和)分别代表一个标号的起始和结束标志,同样这个标志应该是明文文本中不出现的,这是为了保证可靠地解密。标号类似选择题的abcd的编号,是为了便于进行密码处理而设计的连续的数字编号,能够是从整数0至n-1,这里的n指的是一组关键词的关键词的数目。该算法的特点是,能够很容易找到伪密钥,而且应用伪密钥得到的明文可能和原文的意义是相近、相反的,因而更能够采用伪密钥去误导攻击者。而传统的算法由于伪密钥很难寻找,面对软磨硬泡之类的攻击就存在隐患,因为传统算法很难找到伪密钥,因此,如果持有人给出能够得到有意义明文的密钥,这使得攻击者会很相信密钥是正确的,因此传统的算法的密钥可信度高,而上面的原理设计的算法很容易找到伪密钥,因而,该算法的密钥可信度低。能够采用类似的方法进行密写,可是为了防止对方看出密写的存在,伪装文本中应该不出现前面提到的各种用于解密的标志,也不对关键词进行扩充,而是直接将敏感的关键词用其它的关键词代替。密写的时候,针对文本中的关键词,进行识别,然后根据双方事先共享的密钥结合文本中的那个关键词在数据库中对应的标号进行计算,根据计算结果对应的标号来确定替换的关键词。这样原来的今天是晴天,就可能被替换为明天不是晴天之类的伪装文本,而且具有一定的误导性。基于关键词替换的密写方法设计由于该密写方法直接对文本内容进行替换,因此,对于文档的密写需要先打开文档,比如先打开word文档,读取里面的文本内容,再对文本内容进行伪装替换,最后将替换后的文本进行保存,而提取隐秘信息的过程类似。打开文档打开文档关键词替换保存文档读取文本图1对文档的密写流程这里我们不考虑对文档的打开、读取和保存,直接设计对于文本内容的密写方法。对文本内容的密写方法如下:对文本进行逐一扫描,根据关键词数据库来发现文本中的关键词,如果是,将关键词在数据库中对应的一组关键词的数目n,以及这个关键词在数据库中对应的标号a读出来,至于替换成同一组的哪个关键词,根据密钥来确定。假设双方都共享了密钥k,能够用流密码算法来对关键词进行替换。假设数据库中所有的关键词组的最大数目不超过2m,则每一次遇到一个关键词就从流密码序列中依次取m个二进制数,假设第s次的二进制数转换为十进制数为ds,则遇到第s个关键词时计算出替换关键词的标号为b=(a+ds)modn,这样就在关键词对应的组中找出对应的标号的词,对文本内容进行替换,然后继续扫描而且替换。原文的提取也相对简单,凡是在未遇到关键词的时候都是直接采用同样的文本内容,遇到关键词以后,就依次根据密钥进行替换,这个替换和密写时的替换是相反的。由于双方密钥一样,采用流密码算法每一次得到的对应的段是一样的值,对于第s次对应的密码序列值为ds,查询关键词数据库,能够得到对应的标号为b,此时能够求得a=(b-ds)modn,然后查找在数据库中这一组关键词中对应的标号为a关键词,就能够恢复原来的关键词,因此就能够提取原文。为了保证同步,无论是在密写和信息提取的过程中对于关键词的替换是按照词在文本中的顺序依次进行计算和替换的。之因此采用流密码算法,是为了防止利用明文和密文对实施攻击,得出密钥,虽然其中的标号运算也采用了模运算,可是流密码算法能够防止潜在的攻击[4]。提取信息的可逆性条件在上述的密写方法中,如果关键词有包含关系,比如关键词数据库中有中华,也有中华人民共和国。另外,如果一个关键词出现在数据库的两组关键词中,比如,班长能够和团支书、生活委员、学习委员等构成一组,也能够和团长、排长等构成一组,则加密和解密也会遇到歧义而无法得到确定的结果的问题。如果出现以上情况,则可能需要对算法进行改进。在此算法中,在设计关键词数据库时,每一个关键词只在关键词数据库中出现一次,即不出现在两组关键词中,另外关键词之间互相不存在包含关系。信息密写与加密不一样,为了保留伪装的文本不露破绽,相比以前采用的加密算法在密文中采用了各种标记,能够将没有被替换的和已经被替换的进行有效的区分,从而防止解密出现错误,而密写方法去掉了这些标记,带来的隐患在于:可能没有被替换的部分和替换的部分在交界的地方交叉组成一个新的关键词,这会导致提取出来的文本与原文不一致。这种情况比较少见,可是,能够认为是关键词交叉导致的,如果关键词没有交叉的,则不可能出现这样的情况。对于这个问题,能够采用多种方法来解决:第一,由于这种情况比较罕见,因此,能够不对关键词做更多的限定,而是在密写后,发送者对原文进行提取,比较原文和提取的文本是否一致,如果一致才发给接收者,否则,进行改进或者放弃。第二,能够在提取原文时对关键词进行连续搜索,比如对于”不是她”,如果”不是”是关键词,而”是她”也是关键词,则能够同时给出两种提取结果,进行分析确定哪个是原文。第三,能够对关键词进行限定,不允许交叉的情况出现,这种情况对于英文之类的关键词以单词为主的语言更加有效,对于中文则会大大限制关键词的数目,导致密写在一定程度上失效。第四,能够利用语言本身蕴含的冗余来消除这种歧义,比如能够利用空格、同义词、同义替换等,嵌入时是能够利用连续搜索进行检查,将出现这种交叉的情况根据冗余数据进行编码来向接收者指明到底哪个是关键词,可是,比较繁琐。第五,以上都是假定接收双方只是在事先共享密钥,事后不共享密钥的情况,在许多情况下,接收双方不但事先共享了一定的密钥,发送完密写的消息后也能够发送另外的密钥供对方有效解密,则此时能够用事后发送的密钥来编码相关的歧义的信息,保证对方得到正确的原文。根据的原理,在伪装文本的未替换段显然没有完整的关键词,而前面给定的限制条件规定关键词之间不互相包含,而上面一段考虑到伪装文本的未替换段与被替换的关键词的交叉部分出现的关键词的情况被避免或者进行有效处理,因此,不会再出现其它的关键词误判的情况,也能够保证本密写方法的可逆性。本方法在不同场合的应用本密写方法适用于阈下信道的情形,当两个囚犯试图进行通信,又不希望能够看到她们通信内容的管理员看到真正的内容的时候,能够采用这种密写方法进行替代,而且管理员看到的消息可能是相反、相近的,更符合语境,更容易误导对方。针对阈下信道中的签名,本方法能够增加一个签名及其验证程序。除了直接用该方法外误导对方外,本密写方法能够加上一个外层的传统的对称加密,因为在一些场合对手更相信发送者会对重要的涉密信息进行加密,加密反而容易让对方相信,此时能够用故意泄漏等一些方法让对方获取外层的密钥,诱使对方解密而误导对方。在软磨硬泡攻击中,密钥持有人能够只交出外层的密钥来,对方会误以为是明文。以上介绍了几种特殊用途,另外,本方法更加适用于机器之间的通信的加密以及发起攻击,比如,在网络中,根据网络协议和系统的通信机制,对相应的关键词进行有效的代替,比如能够将url、ip地址、命令、文件名等等进行替换。这样经过密写修改的数据依然能够符合相应的机制和协议,能够被操作,这样能够有两种用途:第一,如果通信双方都进行相应的密写和提取,则能够防止网络上的监听,而且能够误导监听者。第二,网络上的主动攻击者能够利用该密写方法对网络上的数据进行篡改,而且接收者很难发现数据是错误的,篡改的数据可能导致错误的操作而带来危害。本方法的优缺点分析在密码分析中,有一种和受到监管的囚徒背景有点类似的攻击称为软磨硬泡(Rubber-hose)攻击。在此分析中密码分析者威胁、勒索,或者折磨某人,直到她给出密钥为止,类似的还有行贿购买密钥攻击。这些是非常有效的攻击,而且经常是破译算法的最好途径。不但仅是在密钥持有人在控制的情况下,有时候,密钥持有人碍于情面、权威和利益,也不得不给希望得到密钥的人一个密钥。一般现代的密码算法,能够解密得到有意义明文的伪密钥很少,而且,很难找到伪密钥。随着密文的增加,伪密钥的数量会逐步减少[5]。密码算法多以比特作为运算的单元,经过复杂的运算后很难找到伪密钥。这就意味着在面对软磨硬泡攻击的时候,密钥持有人如果随便给出一个密钥,绝大多数情况下,得到的明文是没有意义的,这样密码分析者显然很容易发现是错误的密钥。假如抵挡不住软磨硬泡攻击,则密钥持有人不得不交出真正的密钥来。本密写方法最大的意义在于,它的密写数据是有意义的,与通信的语境相关,而且可能与原来的意义相反,因而容易被认为是明文,而且具有误导性。本方法中,用正确的密钥提取的消息是原文,而用错误密钥提取的消息也是有意义的,伪装文本也是有意义的,很容易误导对方,即使对方知道可能被误导,她也不能断定哪个密钥是正确的,因为错误密钥也能够得出有意义的文本,而传统的算法则很难找到伪密钥。其它的密写方法需要大容量的载体,相比而言,本方法的原文(隐秘文本)和伪装文本(载体)的长度平均而言是一样的。另外,其它的密写方法和阈下信道是能够被禁止和封闭的,比如禁止发生图像、视频、音频文件,封闭阈下信道,禁止采用数字签名等都能有效防止隐秘消息的发送。当然算法也有局限性,比如关键词的误判,替换的词可能与原词一样,泄漏一定信息,运算复杂等等,能够在本算法基础上进行改进,比如替换的词能够在改进后与原来的词保持不一致,可是,这在分析者知道密写方法以及数据库的情况下是泄漏一定信息的,她们能够得出该载体中出现的关键词必然不同于原文。鉴于该方法有一定的局限性,也能够和传统的加密算法结合起来使用。结束语本文提出了一种基于关键词替换的密写方法,主要是将文本中敏感的关键词进行替换,而且对其可逆性的保证条件进行了分析和确定。该方法有着较为广泛的应用价值,本文仅仅是抛砖引玉,采用类似的关键词替换方法,能够设计许多相关的改进的密写和加密算法,使之适应不同的条件,而且能够减少对于关键词的限制。当然这个方法当作密写,广义的阈下信道都是能够的,也能够作为加密算法来使用。由于没有采用标记,本密写方法依然具有一定的局限性,受到语言、关键词的各种限制,既能够误导对方,也可能泄漏一定的信息,能够采取各种措施加以改进。基于内容加密的密码算法摘要:本文针对软磨硬泡攻击和唯密文攻击等攻击,提出密钥可信性的概念,而且设计了一种密钥可信度低的密码体制,应用该算法模型加密能够很容易得到伪密钥,从而能够误导和迷惑密码分析者。关键词:软磨硬泡攻击;密码学;自然语言处理;分组密码Abstract:Thepaperbringsouttheconceptofkeyauthenticdegreeinthelightoftherubber-hoseattackandciphertextonlyattack.Atthesametime,anewcryptosystemthathaslowkeyauthenticdegreeisdesigned.Whenitisusedtoencrypt,itiseasytofindpseudokeysthatcanconfuseandmisleadcryptanalyst.Keywords:rubber-hoseattack,cryptography,naturelanguageprocessing,blockcipher密码系统的安全性能够分为计算安全性(又称为实际保密性)和无条件安全性(又称为完善保密性)。随着计算能力的逐步提高以及具有并行能力的量子计算机的逐步发展,无条件安全已经越来越显得重要。现在经常讨论的密码攻击有已知条件有唯密文攻击、已知明文攻击、选择明文攻击和选择密文攻击。其中唯密文攻击最为困难,具有足够的计算能力就能够有效实施唯密文攻击。唯密文攻击中伪密钥的数目影响了密码体制的安全性,伪密钥数目越多,密码体制对于唯密文攻击越安全。即使在有限计算能力情况下,密码分析者也能够利用部分的穷举攻击等攻击方法以某种概率成功攻破密码体制。本文在考虑现有攻击基础上提出一种新的以语义识别为基础的密码体制。1.密钥可信性在密码分析中,有一种软磨硬泡(Rubber-hose)攻击。在此分析中密码分析者威胁、勒索,或者折磨某人,直到她给出密钥为止,类似的还有行贿购买密钥攻击。这些是非常有效的攻击,而且经常是破译算法的最好途径。常见的密码分析已知明文攻击、选择明文和选择密文攻击都需要非常巨大的资源而且必须拥有一些难于获取的已知信息,往往在现实上不可能实现,可是软磨硬泡攻击却非常容易实现。抗击软磨硬泡攻击并没有最好途径,只能给一个伪密钥或者让密码分析者不信任密钥。由于加密中运用了大量的混淆扩散和加上语义信息的高度冗余,现代密码体制中的分组密码或者流密码体制中若采用错误密钥进行解密的时候往往得到的是没有意义的乱码,能够被排除。虽然大量的密钥中存在伪密钥,能够解密出有意义的伪”明文”来,可是密码分析者对于大部分伪明文可能根据已经知道的信息和接受发送双方的情况来判断它们不是真正的明文。实际上能够让密码分析者考虑的伪密钥非常少。这导致密码分析者非常相信能够解密得到有实际意义和符合通信语境的”明文”的密钥,实际上一个密钥如果符合上述条件,它是真正密钥的概率非常大。在软磨硬泡攻击情形下,给出的密钥对于密码分析者具有可信性,因为密钥持有者想要伪造一个符合通信语境,能够被密码分析者信赖的伪密钥非常困难,而且在被劫持等情形中,很短时间内没有计算设备的情况下她无法计算出来。为了能够很容易找到伪密钥,而且能够有意误导密码分析者,有必要加密时对于文件内容予以识别而且以语言的字、词等结构为单位根据语义进行加密。在一般的特别是现代密码分析中,普遍认定密钥是唯一需要保密的信息,也就是说密码系统的安全性就寓于密钥的安全性中。这点源于荷兰人A.Kerckhoffs最早在19世纪阐明密码分析的一个基本假设,这个假设就是秘密必须全寓于密钥中,且Kerckhoffs假设密码分析者已有密码算法及其实现的全部详细资料。密码分析也普遍以密钥未知情况下推算密钥、解密出明文、获取密钥和明文信息等为目标,而密码算法设计正是在充分考虑已有的密码分析的基础上进行的,可是这些具有很高安全性的算法对于软磨硬泡这样的攻击根本没有办法。在密码系统中密钥是一个关键,而且密钥的截获就意味着它加密的所有密文都被攻破,在这里另辟蹊径,研究如何使得密码体制能够很容易地利用能够信赖的伪密钥来误导密码分析者,同时,即使密码分析者知道可能被误导的问题,她也不能够再相信软磨硬泡的攻击或者行贿获取密钥的可靠性。另外即使她具有巨大的计算能力能够得到的有实际意义和符合语境的明文,由于这样的明文非常多而且意义相似或者相反,她也将很迷惑而不能决定是否是真正明文。在此给出密钥可信度的概念,它是衡量一个密码系统中在软磨硬泡等攻击中密钥可能泄漏时候的能够验证和能够相信获得的密钥的程度,它相关的指标有:找到伪密钥的难度(计算量)、语言的冗余度、伪密钥数量及其比例、密码体制的明文遍历率、语义遍历程度和相关概率、伪明文消息集合与先验消息集合的一致度等。加密解密方式、语言特点和语境(密码分析者的先验信息)等也同密钥可信度密切相关。实际中的可信度还与现实中的能够运用的计算能力以及时间限制有关系。密钥可信度越低,密码体制的安全性越高。密钥可信度和新加密方式的提出并不违背密码学的思想,并不是一种钻牛角尖,在现代密码学中的一些分析如选择明文分析等等都是以密码机被缴获而且密钥来不及销毁等特殊情况为背景的,而且一些密码分析方法需要很多的明文密文对,它们的背景也主要针对这样的情形。实际上密钥持有者被截获和被收买的可能性远远大于密码机被缴获且密钥没有被销毁的情况,而且密钥被截获后明文就轻易被解密,而密码机被缴获的情形下还需要具有足够的计算能力以及运用密码分析方法。另外,在密钥的分配和管理等环节中往往也难于保证密钥的安全,在加密、解密等情况下如果磁盘等媒体中的密钥信息没有被多次覆盖而导致密钥信息的存留也可能导致密钥泄漏。如果能够用伪密钥作为诱饵,则能够误导密码分析者。即使密码分析者知道可能是伪密钥,她也迷惑于不知道密钥的真伪,因此也不知道解密明文的真伪。由此可见对于密钥可信度以及相应的密码体制研究与设计具有重大意义。在此给出密钥可信度的概念,它是衡量一个密码系统中在软磨硬泡等攻击中密钥可能泄漏时候的能够验证和能够相信获得的密钥的程度,它相关的指标有:找到伪密钥的难度(计算量)、语言的冗余度、伪密钥数量、伪明文消息集合与先验消息集合的一致度等。加密解密方式、语言特点和语境(密码分析者的先验信息)等同密钥可信度密切相关。实际中的可信度还与现实中的能够运用的计算能力以及时间限制有关系。密钥可信度越低,密码体制的安全性越高。在文献中[1]中,提出了采用类似完形选择题加密方式,加密时候把关键词替换成为一个扩充项,扩充项把许多相近、相正确关键词放在一起,用标号加以标记,正确的选择项给予正确的标号,解密时进行运算判断哪个选择项是真正的关键词。显然这样的加密具有上述的迷惑和误导作用,而且很容易寻找到伪密钥,具有密钥可信度低的优点。密钥可信度和新加密方式的提出并不违背密码学的思想,并不是一种钻牛角尖,在现代密码学中的一些分析如选择明文分析等等都是以密码机被缴获而且密钥来不及销毁为背景的,而且一些密码分析方法需要很多的明文密文对,它们的背景也主要针对这样的情形。实际上密钥持有者被截获和被收买的可能性远远大于密码机被缴获且密钥没有被销毁的情况,而且密钥被截获后明文就轻易被解密,而密码机被缴获的情形下还需要具有足够的计算能力以及运用密码分析方法。另外,在密钥的分配和管理等环节中往往也难于保证密钥的安全,在加密、解密等情况下如果磁盘等媒体中的密钥信息没有被多次覆盖而导致密钥信息的存留也可能导致密钥泄漏。如果能够用伪密钥作为诱饵,则能够误导密码分析者。即使密码分析者知道可能是伪密钥,她也迷惑于不知道密钥的真伪,因此也不知道解密明文的真伪。由此可见对于密钥可信度以及相应的密码体制研究与设计具有重大意义。2.基于迷惑与误导的加密(内层加密)2.1加密方法在进行本层加密时,对句子语法结构、语义等进行分析,找到数据库中已定义的关键词,象编完形填空中的选择题一样,根据数据库的设置把和这些关键词类似的词嵌入到该词的前后,而且对于每个”选项”根据子密钥打上不同标号,如对于”是”能够增加不是、可能是、很可能是、不大可能是等等选项并加上标号(能够认为标号是类似于选择题中A、B、C、D这样的选项标识),如果子密钥不同,解密时候就会根据子密钥与标号的关系选择一个正确的关键词,而密钥计算能够确定了一个答案的序列,如选择题有一个随机的正确答案的A、B、C、D序列,考虑到序列安全性需要应用密码算法或者类似函数来生成。根据上述方法进行的加密我们称为基于迷惑与误导的加密,考虑到明文消息的存在形式可能是输入的消息,也可能是一种格式的文档,如文本文档和word文档。首先,如果是输入的消息,能够直接输入到编辑(输入)框;如果消息保存在word和文本等格式的文档中,需要打开相应文档,读取消息内容,然后对消息的一个字进行扫描,而且查询关键词数据库,而且判断是否和后边的几个字构成真正的关键词:如果是关键词就在输出时进行一个扩充项的替换,而且跳过关键词,继续扫描后边的字;如果不构成关键词就直接输出,而且扫描下一个字。=2.2关键词的判定由于自然语言处理的复杂性,为了简化加密过程,采用比较简单的关键词判定规则。关键词的判断方法如下:对于扫描的字,首先判断关键词数据库中是否有这个字为首的关键词,其中分两种情形:第一,若关键词数据库中没有这个字为首的关键词,就判定该字不会构成关键词,就把这个字作为加密变换的输出,而且继续扫描下边一个字;第二,若有这个字为首的关键词,把这个字和它后边的几个字一起读出来,查询这个字以及后边的几个字是否构成对应在数据库中的关键词,也分为两种情形:其一,若没有,就判定为不构成关键词,把该字作为加密变换的输出;其二,若构成关键词就按照一个规则根据上下文来判定它是否是真正的关键词。将关键词的判定规则存放在一个关键词判定规则数据库中,实际应用中能够将此数据库和关键词数据库合并起来,会减少系统复杂性。在此设计的判定规则是比较关键词前后的字词,符合一定规则能够判定不是关键词或者必须符合一定规则才能作为关键词,如当”中华”后边存在”人民共和国”则中华就不是关键词,能够把”中华人民共和国”作为关键词,因此当以一个字为首的词构成两个以上的关键词的时候,一般需要以较长的关键词为真正关键词,可是实际中有可能存在极少数需要根据上下文判定哪个是关键词的情况在此忽略,再如当”是”后边存在”不是”(即”是不是”)则它不是真正关键词。经判定如果不是关键词,就输出第一个字作为密文,然后扫描下一个字;如果是真正的关键词,输出就不是关键词本身而要进行一个关键词对应的扩充项(扩充项的标号需要根据密钥进行运算),然后跳过关键词扫描后边的字。由于自然语言的复杂性,处理过程中不可避免存在误判的可能,这导致了有些密钥能够经过分析被排除,且一些信息被泄漏,可是由于密钥量非常大,排除一部分依然是能够保证存在有意义的伪密钥的。如果有产生足够长的真随机数而且具有进行保密传送的条件能够采取一次一密加密体制,安全性将会更高,而且能够根据需要确定伪密钥使得解密的明文为指定的消息,达到预定的误导作用。本文主要是针对中文而言,对于英文等外语需要根据其特点来设计判定方式和规则,方法类似可是需要有变动。是是否否是是否扫描的字是否在关键词数据库中存在输出上该字作为密文并扫描下一个字选择长的词作为真正关键词,运算输出扩充项作为密文,而且跳过关键词,扫描下一个字把它作为真正关键词处理,运算并输出扩充项作为密文,而且跳过关键词,扫描下一个字该字(和它后边的几个字)是否在关键词数据库中是一个关键词判断关键词是否符合真正意义的关键词的规则输出上该字作为密文并扫描下一个字图1关键词的判定和处理流程图示2.3扩充项的处理为了便于解密,需要对于扩充项、选择项和标号加以标记和区分,可选择4个在中文中不出现的符号分别作为扩充项的起始标记和结束标记、选择项标号的起始标记和结束标记。扩充项的处理过程如下:当遇到某个关键词如”今天”而且在数据库中查实它是关键词,那么就根据数据库的数据,将与之相关的明天、今天、后天、昨天、前天等作为一个扩充项,为了便于解密,需要对于扩充项和每一个其中的关键词用标号加以标记,进行标记后形成一个完整的扩充项,好比一个选择题中,用()分别代表选择的起始位置,而abcd则对答案进行标记。如果给出答案的序列,就能够恢复正确的答案。在数据库中,对于正确的关键词今天,已经定义了它的相关的一些词,能够在它们前面前边给予数字标号:以4标记明天,0标记今天,1标记后天,2标记昨天,3标记前天。在数据库中正确的关键词标号为零,当从数据库读出来的时候,需要根据密钥进行重新标记,然后在将扩充项填充到原来正确关键词的位置。在扩充项中为了便于解密还要在关键词的前后增加相应的起始标记,所有的起始标记都是一致的,而且起始标记能够采用明文中不出现的符号。如采用在明文中可能出现的符号,则需要进行一定的处理。扩充项的结构如下:扩充项起始标记+第一个选择项标号起始标记+第一个选择项标号+第一个选择项标号结束标记+第一个选择项选择项+第二个选择项标号起始标记+第二个选择项标号+第二个选择项标号结束标记+第二个选择项选择项+…+扩充项结束标记(其中+仅仅表示衔接,不在扩充项中出现)。数据库中,相关的一些关键词互相对其中的一个关键词进行扩充,她们的按照一个固定的顺序排列,根据它们的总数目进行标号:数目为N的一组用0至N-1的标号进行标记。比如对于明天、今天、后天、昨天和前天这几个关键词,首先确定一个顺序,能够依次是明天、今天、后天、昨天和前天。如果明天作为正确项时候,在数据库中对应的就是:0标记明天,1标记今天,2标记后天,3标记昨天,4标记前天。如当今天作为关键词的时候,将这些标号相应加4取模5,则对于今天的标号就是0,其它关键词依此类推。为了让正确项与密钥相关,在加密时候对扩充项的选择项(关键词)的标号进行处理。为了安全性,希望用真随机数进行处理,比如能够采用一次一密体制。考虑实际中密钥产生困难,能够根据流密码和分组密码生成的伪随机数据序列将根据一定长度进行截取,把数据序列划分为数据段组成的序列。明文中有许多关键词,加密时根据扩充项中所有组中关键词(选择项)最多的一组的关键词数目来确定一个对于密钥流的截取长度。在进行加密的时候,遇到第一个关键词的时候,利用密钥流的第一个截取下来的密钥流数据段(比如为137),假设这个关键词对应的扩充项中选择项的数目为n,对于截取的数据段作取模n的运算,比如一个扩充项有5个词,就把流密码产生的数字取模5得到2(137取模5得到的是2),用这个数字2再与关键词今天对应的数据库中的扩充项中的每一个关键词原来的数字标号相加,取模n(这里是5),得到的数字就是加密后这个选择词的标号,在数据库中查询原始标号为:4-明天,0-今天,1-后天,2-昨天,3-前天,经过运算就变成了1-明天,2-今天,3-后天,4-昨天,0-前天。遇到第二个关键词时候,将用第二个数据段来进行处理,依此类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 南通2025年江苏南通师范高等专科学校长期招聘高层次人才11人笔试历年参考题库附带答案详解
- 南京南京师范大学2025年教学科研岗招聘46人(第三批)笔试历年参考题库附带答案详解
- 北京北京怀柔区教育委员会所属事业单位面向应届毕业生招聘98名教师笔试历年参考题库附带答案详解
- 北京北京体育大学2025年秋季招聘10人笔试历年参考题库附带答案详解
- 北京2025年文化和旅游部直属事业单位招聘(一)笔试历年参考题库附带答案详解
- 北京2025年中国地质科学院招聘应届毕业生(第二批)笔试历年参考题库附带答案详解
- 云南2025年云南省人力资源和社会保障厅招募300名银龄技师笔试历年参考题库附带答案详解
- 2025年大学(预防医学)预防医学心理学试题及答案
- 2025年大学大二(财务管理)财务分析阶段测试题及答案
- 2025年高职财务管理(财务分析方法)试题及答案
- 江苏省2025年普通高中学业水平合格性考试英语试卷(含答案)
- 2020年华为采购物料环保规范?V4
- 绿化养护、保洁服务重点难点分析及解决措施
- 企业管理GoldenSample管理办法
- 湖北大学教职工登记表
- 2020年注册会计师(CPA)16第十六章收入、费用和利润(2020新教材版)课件
- 汇川伺服追剪控制指导说明完整版
- GB∕T 5273-2016 高压电器端子尺寸标准化(高清版)
- GB 190-2009 危险货物包装标志(高清版)
- 寒假学生托管报名登记表
- 梅索尼兰调节阀
评论
0/150
提交评论