版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据安全课程设计
指导书
〈数据安全〉课程设计指导书
计算机与控制学院
目的
本课程是信息安全专业所开设的一门基础性的实践课程,主要是
数据安全原理和技术在实践开发中的具体应用。本课程的任务是:经
过本课程的学习实践,使用学生进一步理解数据安全开发的工程化思
想,掌握如何有效集成各种算法设计安全系统,掌握数据安全相关软件
分析、设计和测试方法,面向对象的分析和设计方法的具体应用,熟悉
一些数据安全软件开发流程。
二.题目
任选下列一项目(或者集成其中的数项)进行,查阅相关文献、了
解相关的系统,要求完成系统需求规约文档、系统分析模型文档、系
统设计模型文档、系统测试设计文档、系统编码和测试报告。
1.文件加密系统
2.数字版权保护系统
3.多功能数字签名系统
4.U盘加密系统
5.数据备份与恢复软件
6.基于内容加密系统
7.数字密写系统
(学生可自选课题,但需由教师认可)
的说明。
2.课程设计报告正文字数不少于8000字,概念清楚、叙述正
确、内容完整、书写规范。
3.课程设计中必须按指导书要求,综合应用所学的数据安全知识
解决实际问题,有必要的理论分析,设计要有合理的依据。独立
完成课程设计,不得抄袭她人。即使是同类的题目,能够分在一
组互相交流,可是也不能抄袭,不能雷同,必须有差异,学生最终
提交的电子文档(包括源代码)会经过各种方式的比较的。
4.功能正确、有一定实用性,鼓励创新。
5.阅读一定的源代码,借鉴经典的设计方法。
6.设计时适当考虑程序的可维护性与可扩充性,另外集成一些常
见的功能,软件有适当的帮助,易于使用和操作。
7.积极交流与讨论(经过同学、网络等途径)、善于查阅资料、分
析与借鉴她人编写的软件。
8.软件设计好以后,鼓励遵循开放源代码的思想,将代码和系统在
网络上公开,接受专家和网民的评价。
9.鼓励自己设计算法(比如加密、签名和hash算法的设计)。
io.及时与老师交流,以了解自己的设计是否符合要求,遇到的
各种问题及时联系,课后能够采用email和即时通讯软件联
系。
H.学会搜索网上已有的类似软件,进行分析、比较、集成和
创新。
12.学生应当既把设计当作一个任务,又要注意更要掌握方法,
锻炼多方面的能力,特别是在有限的时间和有限的条件下摸索
的能力
五.工作阶段与考核方法
大致上可分成五个阶段:
1.资料查阅准备阶段(15%)
2.分析设计阶段(35%)
3.编程调试阶段(40%)
4.课程设计报告书写阶段(10%)
5.验收阶段
考核方法:
只有程序驹收经过后,才能按以下方法核定本次课程设计的总成
绩,因未能独立完成设计(特别是抄袭)或概念不清的同学,总
成绩将核定为不及格。总成绩由以下几个部分决定:
1.考勤、纪律、实验室卫生
2.工作量(代码量、功能多少、难芟、经历的曲折)
3.关键技术
4,实用性、创新
5.代码书写规范性(包括注释的质量、详尽程度和明晰性)
6.程序界面、新技术引用、易用性
7.课程设计报告(叙述、书写规范、字数)
8.动手能力、分析问题解决问题能力
9.答辩的情况(答辩时会问关于系统实现和本作品相关的理论
知识的问题)
10.在资源共享和互助协作方面的贡献及其体现的能力
六.任务具体要求
1、文件加密系统
任务:设计一个文件加密系统,能够对不同的文件进行加密解密。
基本要求:
(1)能够正确对文件进行加解密;
⑵加密前先压缩;
⑶对原明文应当能够销毁;
(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.关键词和操作符之间加适当的空格c
2.相对独立的程序块与块之间加空行
3.较长的语句、表示式等要分成多行为写。
4.划分出的新行要进行适应的缩进,使排版整齐,语句可读。
5.长表小式要在低优先级操作符处划分新行,操作符放在新行之
首。
&循环、判断等语句中若有较长的表示式或语句,则要进行适应的
划分。
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.严禁使用未经初始化的变量。声明变量的同时对变量进行初
始化。
1L编程时,要注意数据类型的强制转换。
六、函数、过程
1.函数的规模尽量限制在200行以内。
2.一个函数最好仅完成一件功能。
3,为简单功能编写函数。
4.国数的功能应该是能够预测的,也就是只要输入数据相同就应
产生同样的输出。
5.尽量不要编写依赖于其它因数内部实现的函数。
6.避免设计多参数函数,不使用的参数从接口中去掉。
7.用注释详细说明每个参数的作用、取值范围及参数间的关系。
8.检查函数所有参数输入的有效性。
9.检查M数所有非参数输入的有效性,如数据文件、公共变量
等。
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.要时刻注意易混淆的操作符。当编完程序后,应从头至尾检查
一遍这些操作符。
6不使用与硬件或操作系统关系很大的语句,而使用建议的标准
语句。
16.建议乂吏用第三方提供的软件开发工具包或控件时,要注意以下
几点:
(1)充分了解应用接口、使用环境及使用时注意事项。
(2)不能过分相信其正确性。
(3)除非必要,不要使用不熟悉的第三方工具包与控件。
十、代码编译
1.编写代码时要注意随时保存,并定期备份,防止由于断电、硬盘
损坏等原因造成代码丢失。
2.同一项目组内,最好使用相同的编辑器,并使用相同的设置选
项。
3.合理地设计软件系统目录,方便开发人员使用。
4.打开编译器的所有告警开关对程序进行编译。
5.在同一项目组或产品组中,要统一编译开关选项。
6.使用工具软件(如VisualSourceSafe)对代码版本进行维护?
十一、代码测试、维护
L单元测试要求至少达到语句覆盖。
2,单元测试开始要跟踪每一条语句,并观察数据流及变量的变
化。
3.清理、整理或优化后的代码要经过审查及测试。
4.代码版本升级要经过严格测试。
附录二:课程设计说明书格式要求
除拉林电孑科被火谤
GUILINUNIVERSITYOFELECTRONICTECHNOLOGY
课程设计(论文)说明书
题目:
学院:
专业:
姓名:
学号:
指导教师:
年月日
〈课程设计说明书〉其它格式规定
一、纸张和页面要求
A4纸打印(手写的用学院标准课程设计说明书用纸);页边距要求
如下:左边距为2.5厘米,上、下、右边距各为2厘米彳亍间距取固定值
(设置值为18磅);字符间距为默认值(缩放100%,间距:标准)。
二、装订页码顺序
(1)封面,(2)目录(注明页码),(3)正文,(4)参考文献。装订线要求
在页面左边。
三、章节序号
按照正式出版物的惯例,章节序号的级序规定如下:1、L1、
1.1.1、(1)、①
四、封面
采用统一规格,请参考本文档上一页所给出的封面格式。
五、目录
三号、黑体、居中、目录两字空四格、与目录的正文空一行。
六、正文
正文的页数不少于10页(不包括封面、目录、参考文献等),正
文汉字数不少于8000o
正文的章节目序号按照正式出版物的惯例,章节目序号的层次顺
序依次规定如下:
1、11、1.1.K(1)①
正文一般分5〜7个部分,参考卜面的格式来写:
(1)前言。概述所作题目的意义、本人所做的工作、及系统的主要
功能;
(2)系统分析。分析和描述所设计系统的基本要求与内容;
(3)功能设计。描述及绘制出系统的功能结构框图;
(4)所遇到的问题及分析解决。
(5)系统特色及关键技术。必要时给出关键部分源代码,并准确指
出其在程序中位置(文件名、行号)。
(6)结论。完成情况、有待改进之处、特殊说明、心得体会等。
正文的主要内容必须是对自己所作的设计工作的描述,不得大量
抄录对特定软件技术的说明性文字和程序代码。设计方案图和软件
运行界面的截图的总数不得超过10个,每个图形的大小不得超过1/3
页大小(个别流程图等可适当不受限制)。
正文字体用小四,宋体。各级标题参考附录的毕业设计的范文。
七、参考文献
参考文献要另起一页,一律放在正文后,不得放在各章之后。只列
出作者直接阅读过或在正文中被引用过的文献咨料,作者只写到第二
位,余者写“等“,英文作者超过3人写“etal”o
几种主要参考文献著录表的格式为:
⑴专(译)著:[序号]著者.书名(译者)[M].出版地:出版者,出版年:起〜止页
码.
⑵期刊:[序号]著者,篇名目利名,年,卷号(期号):起~止页码.
⑶论文集:[序号]著者,篇名[A]编者.论文集名[C].出版地:出版者,出版
者.出版年:起〜止页码.
④学位论文:[序号]著者.题名[D].保存地:保存单位才受予年.
⑸专利文献:专利所有者.专利题名叫.专利国别:专利号,出版日期.
⑹标准文献:[序号]标准代号标准顺序号一发布年,标准名称[S].
⑺报纸:责任者.文献题名[N].报纸名,年一月一日(版次).
举例如下:
参考文献(黑体四号、顶格)
LU王传昌.高分子化工的研究对象[JJ.天津大学学报」997,53(3):1〜7.
[2]李阻物理学[M].北京:科学出版社,1977:58~62.
[3]GcdyeR,SmithF,WestawayK,etal.UseofMicrowaveOvensfor
RapidOrbanicSynthesis.TetrahedronLett,1986,27:279.
[4]王健.建筑物防火系统可靠性分析[D].天津:天津大学,1997.
⑸姚光起.一种痒化错材料的制备方法[P].中国专利:,1980-07-03.
[6|GB3100-31020001—1994,中华人民共和国国家标准[S].
(以上,序号用中扩号,与文字之间空两格。如果需要两行的,第二行
文字要位于序号的后边,与第一行文字对齐。中文的用五号宋体,
外文的用五号TimesNewRoman字体。)
附录三信息安全编程指南
1.学会阅读和参考别人的源代码,比如PGRopenSSL,均包含了大量的
信息安全实现的代码,对于这里的大部分题目都已足够。注意读代
码是非常重要的。
2.学会寻找相关的类库、函数、接口、第三方代码以及openSSL之
类的开源产品等,比如cryptoAPI,点net的安全类,由于本科生的水
平,能够尽量使用现成函数和功能库中的功能,不要从底层开始编写
已有的功能。用点net的类比用api要简单,一些类集成了许多的
实现过程,包括指导书提出的许多要求均已经集成。推荐的相关的
书籍有:NET安全编程(C#/VB.NET),精通PKI网络安全认证技术与
编程实现,openssl编程。另外,帮助和msdn也是非常重要的资
料。
3.瞄准有商业应用或者应用潜力的产品,这可能会完全改变一个人的
前途,能够多关注一下baidu,腾讯,支付宝等IT业巨头的老板的发
家史,注意只有做第一,才能抢占先机。信息安全蕴含着巨大的商机
尚未得到开发,正等待着第一个发现这些商机的人,这需要有创新精
神。
4.学会调试,学会经过各种方法验证比较发现程序中的错误。调试要
认真,严谨地去找到错误所在。
5.编程过程中出现各种各样的错误种类繁多,有些是已有理论教学无
法讲到的,甚至完全不可预料,前所未见,除了学会自己去发现外,多
请教老师和学生,也要学会在网络上,比如csdn等地方寻求帮助,也
能够在搜索引擎上寻找是否有类似的问题发生。
6.多登陆论坛参与讨论,多加入各种群交流学习。
7.网络是很好的老师,一定要善用网络,由于网络的平民化特点,网络
资源不但丰富多样化,而且非常通俗,详尽,有些网友对操作或问题
的描述非常细致清楚,这是书籍教材无法比较的。
&编程的学习和实践应该紧密结合,不可能等完全学会了再去编程,首
先掌握基本的方法和理论,然后一边学习一边编程,现学现用,要用
的时候去查手册和资料,无需死记硬背。由于编程涉及到的知识非
常多,一定要有选择性的学习,按需学W。
9.理论课的学习与实践各自有其侧重点,有时候是脱节的,比如密钥的
处理就需要很多额外的知识,这些知识需要自己临时去掌握,临时想
办法,有时候办法是很多的。
以上说法仅为个人意见,仅供参考,欢迎批评指正和补充完善。信息安
全不但在我校刚刚开办,而且在国内也是属于较新的专业,许多资源需
要积累,同学们有好的资源和想法也能够交流共享。希望大家注重创
新和实用性,要有创业精神,只有设计开发有应用潜力的作品,才能推广
信息安全技术的应用。信息安全技术只有得到了广泛的应用,学生的
就业前景才更加广阔。
附录四信息安全和编程网站
首推搜索引擎,要学会用搜索引擎。
校园网图书馆的电子资源:搜索信息安全相关的设计与实现、开发,编
程实现等论文。
.net
看雪论坛
.com
附录五重要的参考文献
l.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.(美)JessGarmsDanielSomeifieldjava安全性编程指南,北京:电子
工业出版社,
12.梁洋洋,VisualC++黑客编程揭秘与防范,人民邮电出版社,
13.KeithBrown译者:刘涛李一舟,windows安全性编程,中国电力出版
社,
14.openssl编程(提供电子文档)
15.看雪学院,软件加密技术内幕,电子工业出版社,(提供电子文档)
16.软件与技术研发小组,VisualC#程序设计实例教程,冶金工业出版
社,
17.注意更好的参考文献在网络,还有许多网络空间,纳米盘、趣盘、
iask等都提供了丰富的资源下载,比图书馆的书更容易获取,电子文档
处理起来更方便。
附录六提交材料的要求
1.采用统一设计报告用纸与封面,打印前先检查好,验收的时候需要检
查文档。
2.写清楚学号、班级、题目(即设计题目)、日期等
3.写作内容强调自己的创新与特色;如果得到了其它的同学的帮助,增
加谢辞部分,谢辞位于参考文献之前,写明得到哪个同学帮助以及具
体的帮助内容。
4.要有充分的代码注释,否则视为抄袭,文档应当尽量详尽,包括理论
依据、理由等等。
5.必须有目录页和参考文献说明
6,应当提交源代码和报告,源代码为电子版,报告同时提供电子版和
打印稿。为了便于各种雷同比较、字数统计、打分、错误修订等
工作,所有提交的资料均必须同时提交电子版。
7.选择性提交材料,能够只提供电子版:D设计过程中的摸索和学习的
心得和历程,越具体越好。2)在设计过程中阅读的源代码的注释文
档。3)其它证明自己的工作量和设计过程中成败与曲折过程的文
档。4)推荐的优质资料和资源。5)能够下载到比较好的电子书籍
也能够提交。
附录七验收与答辩
1.验收时可能会提问,包括如何实现的。
2.自己需要对创新性的说明,而且会有对应的提问。
3.验收的时候同时检查课程设计说明书的电子版。
4.强调自己做的内容、采用的技术,背景等相对简略。
5.提前验收同等条件相对分数会高
一种基于关键词替换的密写方法
引言
Steganography(密写术、隐写术)是一门关于信息隐藏的技巧与科
学,所谓信息隐藏(informationhiding)指的是不让除预期的接收者之外
的任何人知晓信息的传递事件或者信息的内容。现代的密写技术主
要是依靠在图像、音频、视频等大容量的文件中隐臧信息川。还有
一种特殊的信息隐藏技术,是1983年Simmons提出的阈下信道
(subliminalchannel),狭义的阈下信道主要采用数字签名等来实现消息
隐匿⑵,可是阈下信道能够被封闭,而且利用数字签名传输的阈下消息
往往很短。可见,当前的信息隐藏技术要么需要依靠大文件作为载体,
要么只能传输很短消息,伪装文本(载体,covertext)和隐秘文本
(stegotext,这里称为原文)相比较大很多,信道利用率不高。一旦被禁
止发送图片音频、视频等大容量的文件,不允许进行数字签名的情况
下,秘密消息的隐匿就无法实现,而信息隐藏和阈下信道问题往往是针
对被监视的囚犯之类的背景的,监管人完全能够禁止任何可能隐匿消
息的行为。本文在提出的低密钥可信度密码体制的基础上提出一类
新的密写方法。
关键词替换的密写原理
笔者曾经设计而且软件实现了针对软磨硬泡攻击的加密方法,该加
密方法采用类似选择题的方法进行加密叫该加密方法配备一个关键
词数据库,每个关犍词和它相类似、相反的词构成一组,比如,睛、
雨、雪等构成一组,今天则和明天、后天、昨天等构成一个组,好比选
择题,分别加以编号,形如[(0)晴⑴雨⑵雪],这里[和]分别代表一个扩
充项的起始和结束标志,在实际实现的时候,这个标志应该是明文文本
中不出现的。而(和)分别代表一个标号的起始和结束标志,同样这个
标志应该是明文文本中不出现的,这是为了保证可靠地解密。标号类
似选择题的abed的编号,是为了便于进行密码处理而设计的连续的数
字编号,能够是从整数0至n-1,这里的n指的是一组关键词的关键词
的数目。
该算法的特点是,能够很容易找到伪密钥,而且应用伪密钥得到的
明文可能和原文的意义是相近、相反的,因而更能够采用伪密钥去误
导攻击者。而传统的算法由于伪密钥很难寻找,面对软磨硬泡之类的
攻击就存在隐患,因为传统算法很难找到伪密钥,因此,如果持有人给
出能够得到有意义明文的密钥,这使得攻击者会很相信密钥是正确的,
因此传统的算法的密钥可信度高,而上面的原理设计的算法很容易找
到伪密钥,因而,该算法的密钥可信度低。
能够采用类似的方法进行密写,可是为了防止对方看出密写的存在,
伪装文本中应该不出现前面提到的各种用于解密的标志,也不对关键
词进行扩充,而是直接将敏感的关键词用其它的关键词代替。密写的
时候,针对文本中的关键词,进行识别,然后根据双方事先共享的密钥
结合文本中的那个关键词在数据库中对应的标号进行计算,根据计算
结果对应的标号来确定替换的关键词。这样原来的今天是晴天,就可
能被替换为明天不是晴天之类的伪装文本,而且具有一定的误导性。
基于关键词替换的密写方法设计
由于该密写方法直接对文本内容进行替换,因此,对于文档的密写
需要先打开文档,比如先打开word文档,读取里面的文本内容,再对文
本内容进行伪装替换,最后将替换后的文本进行保存,而提取隐秘信息
的过程类似。
图1对文档的密写流程
这里我们不考虑对文档的打开、读取和保存,直接设计对于文本内
容的密写方法。对文本内容的密写方法如下:
对文本进行逐一扫描,根据关键词数据库来发现文本中的关键词,
如果是,将关键词在数据库中对应的一组关键词的数目n,以及这个关
键词在数据库中对应的标号a读出来,至于替换成同一组的哪个关键
词,根据密钥来确定。假设双方都共享了密钥k,能够用流密码算法来
对关键词进行替换。假设数据库中所有的关键词组的最大数目不超
过2?则每一次遇到一个关键词就从流密码序列中依次取m个二进
制数,假设第s次的二进制数转换为十进制数为出,则遇到第s个关键
词时计算出替换关键词的标号为b=(a+ds)modn,这样就在关键词对应
的组中找出对应的标号的词,对文本内容进行替换,然后继续扫描而且
替换。
原文的提取也相对简单,凡是在未遇到关键词的时候都是直接采用
同样的文本内容,遇到关键词以后,就依次根据密钥进行替换,这个替
换和密写时的替换是相反的。
由于双方密钥一样,采用流密码算法每一次得到的对应的段是一样
的值,对于第s次刈应的密码序列值为小,查询关键词数据库,能够得到
对应的标号为b,此时能够求得a=(bd)modn,然后查找在数据库中这
一组关键词中对应的标号为a关键词,就能够恢复原来的关键词,因此
就能够提取原文。
为了保证同步,无论是在密写和信息提取的过程中对于关键词的替
换是按照词在文本中的顺序依次进行计算和替换的。之因此采用流
密码算法,是为了防止利用明文和密文对实施攻击,得出密钥,虽然其
中的标号运算也采用了模运算,可是流密码算法能够防止潜在的攻击
提取信息的可逆性条件
在上述的密写方法中,如果关键词有包含关系,比如关键词数据库
中有中华,也有中华人民共和国。另外,如果一个关键词出现在数据库
的两组关键词中,比如,班长能够和团支书、生活委员、学习委员等构
成一组,也能够和团长、排长等构成一组,则加密和解密也会遇到歧义
而无法得到确定的结果的问题。如果出现以上情况,则可能需要对算
法进行改进。在此算法中,在设计关键词数据库时,每一个关键词只在
关键词数据库中出现一次,即不出现在两组关键词中,另外关键词之间
互相不存在包含关系。
信息空写与加密不一样,为了保留伪装的文本不露破绽,相比以前
采用的加密算法在密文中采用了各种标记,能够将没有被替换的和已
经被替换的进行有效的区分,从而防止解密出现错误,而密写方法去掉
了这些标记,带来的隐患在于:可能没有被替换的部分和替换的部分在
交界的地方交叉组成一个新的关键词,这会导致提取出来的文本与原
文不一致。这种情况比较少见,可是,能够认为是关键词交叉导致的,
如果关键词没有交叉的,则不可能出现这样的情况。对于这个问题,能
够采用多种方法来解决:第一,由于这种情况比较罕见,因此,能够不对
关键词做更多的限定,而是在密写后,发送者对原文进行提取,比较原
文和提取的文本是否一致,如果一致才发给接收者,否则,进行改进或
者放弃。第二,能够在提取原文时对关键词进行连续搜索,比如对于”
不是她“,如果“不是“是关键词,而“是她“也是关键词,则能够同
时给出两种提取结果,进行分析确定哪个是原文。第三,能够对关键词
进行限定,不允许交叉的情况出现,这种情况对于英文之类的关键词以
单词为主的语言更加有效,对于中文则会大大限制关键词的数目,导致
密写在一定程度上失效。第四,能够利用语言本身蕴含的冗余来消除
这种歧义,比如能够利用空格、同义词、同义替换等,嵌入时是能够利
用连续搜索进行检查,将出现这种交叉的情况根据冗余数据进行编码
来向接收者指明到底哪个是关键词,可是,比较繁琐。第五,以上都是
假定接收双方只是在事先共享密钥,事后不共享密钥的情况,在许多情
况下,接收双方不但事先共享了一定的密钥,发送完密写的消息后也能
够发送另外的密铜供对方有效解密,则此时能够用事后发送的密钥来
编码相关的歧义的信息,保证对方得到正确的原文。
根据的原理,在伪装文本的未替换段显然没有完整的关键词,而前
面给定的限制条件规定关键词之间不互相包含,而上面一段考虑到伪
装文本的未替换段与被替换的关键词的交叉部分出现的关键词的情
况被避免或者进行有效处理,因此,不会再出现其它的关键词误判的情
况,也能够保证本密写方法的可逆性。
本方法在不同场合的应用
本密写方法适用于阈下信道的情形,当两个囚犯试图进行通信,又
不希望能够看到她们通信内容的管理员看到真正的内容的时候,能够
采用这种密写方法进行替代,而且管理员看到的消息可能是相反、相
近的,更符合语境,更容易误导对方。针对阈下信道中的签名,本方法
能够增加一个签名及其验证程序。
除了直接用该方法外误导对方外,本密写方法能够加上一个外层的
传统的对称加密,因为在一些场合对手更相信发送者会对重要的涉密
信息进行加密,加密反而容易让对方相信,此时能够用故意泄漏等一些
方法让对方获取外层的密钥,诱使对方解密而误导对方。在软磨硬泡
攻击中,密钥持有人能够只交出外层的密钥来,对方会误以为是明文。
以上介绍了几种特殊用途,另外,本方法更加适用于机器之间的通
信的加密以及发起攻击,比如,在网络中,根据网络协议和系统的通信
机制,对相应的关键词进行有效的代替,比如能够将url,ip地址、命
令、文件名等等进行替换。这样经过密写修改的数据依然能够符合
相应的机制和协议,能够被操作,这样能够有两种用途:第一,如果通信
双方都进行相应的密写和提取,则能够防止网络上的监听,而且能够误
导监听者。第二,网络上的主动攻击者能够利用该密写方法对网络上
的数据进行篡改,而且接收者很难发现数据是错误的,篡改的数据可能
导致错误的操作而带来危害。
本方法的优缺点分析
在密码分析中,有一种和受到监管的囚徒背景有点类似的攻击称为
软磨硬泡(Rubber.hose)攻击。在此分析中密码分析者威胁、勒索,或
者折磨某人,直到她给出密钥为止,类似的还有行贿购买密钥攻击。这
些是非常有效的攻击,而且经常是破译算法的最好途径。不但仅是在
密钥持有人在控制的情况下,有时候,密铁持有人碍于情面、权威和利
益,也不得不给希望得到密钥的人一个密铜。一般现代的密码算法,能
够解密得到有意义明文的伪密钥很少,而且彳艮难找到伪密钥。随着密
文的增加,伪密钥的数量会逐步减少⑸。密码算法多以比特作为运算
的单元,经过复杂的运算后很难找到伪密钥。这就意味着在面对软磨
硬泡攻击的时候,密钥持有人如果随便给出一个密钥,绝大多数情况卜,
得到的明文是没有意义的,这样密码分析者显然很容易发现是错误的
密钥。假如抵挡不住软磨硬泡攻击,则密钥持有人不得不交出真正的
密钥来。本密写方法最大的意义在于,它的密写数据是有意义的,与通
信的语境相关,而且可能与原来的意义相反,因而容易被认为是明文,
而且具有误导性。本方法中,用正确的密钥提取的消息是原文,而用错
误密钥提取的消息也是有意义的,伪装文本也是有意义的彳艮容易误导
对方,即使对方知道可能被误导,她也不能断定哪个密钥是正确的,因
为错误密钥也能够得出有意义的文本,而传统的算法则很难找到伪密
钥。其它的密写方法需要大容量的载体,相比而言,本方法的原文(隐
秘文本)和伪装文本(载体)的长度平均而言是一样的。另外,其它的密
写方法和阈下信道是能够被禁止和封闭的,比如禁止发生图像、视
频、音频文件,封闭阈下信道,禁止采用数字签名等都能有效防止隐秘
消息的发送。
当然算法也有局限性,比如关键词的误判,替换的词可能与原词一
样,泄漏一定信息,运算复杂等等,能够在本算法基础上进行改进,比如
替换的词能够在改进后与原来的词保持不一致,可是,这在分析者知道
密写方法以及数据库的情况下是泄漏一定信息的,她们能够得出该载
体中出现的关键词必然不同于原文。鉴于该方法有一定的局限性,也
能够和传统的加密算法结合起来使用。
结束语
本文提出了一种基于关键词替换的密写方法,主要是将文本中
敏感的关键词进行替换,而且对其可逆性的保证条件进行了分析和
确定。该方法有着较为广泛的应用价值,本文仅仅是抛砖引玉,采用
类似的关键词替换方法,能够设计许多相关的改进的密写和加密算
法,使之适应不同的条件,而且能够减少对于关键词的限制。当然这
个方法当作密写,广义的阈下信道都是能够的,也能够作为加密算法来
使用。由于没有采用标记,本密写方法依然具有一定的局限性,受到语
言、关键词的各种限制,既能够误导对方,也可能泄漏一定的信息,能够
采取各种措施加以改进。
基于内容加密的密码算法
摘要:本文针对软磨硬泡攻击和唯密文攻击等攻击,提出密钥可信性的
概念,而且设计了一种密钥可信度低的密码体制,应用该算法模型加密
能够很容易得到伪密钥,从而能够误导和迷惑密码分析者。
关键词:软磨硬泡攻击;密码学;自然语言处理;分组密码
Abstract:Thepaperbringsouttheconceptofkeyauthenticdegreeinthe
lightoftherubber-hoseattackandciphertextonlyattack.Atthesame
time,anewcryptosystemthathaslowkeyauthenticdegreeisdesigned.
Whenitisusedtoencrypt,itiseasytofindpseudokeysthatcanconfuse
andmisleadcryptanalyst.
Keywords:rubber-hoseattack,cryptography,naturelanguageprocessing,
blockcipher
密码系统的安全性能够分为计算安全性(又称为实际保密性)和无
条件安全性(又称为完善保密性)。随着计算能力的逐步提高以及具有
并行能力的量子计算机的逐步发展,无条件安全已经越来越显得重
要。现在经常讨论的密码攻击有已知条件有唯密文攻击、已知明文
攻击、选择明文攻击和选择密文攻击。其中唯密文攻击最为困难,具
有足够的计算能力就能够有效实施唯密文攻击。唯密文攻击中伪密
钥的数目影响了密码体制的安全性,伪密钥数目越多,密码体制对于唯
密文攻击越安全。即使在有限计算能力情况下,密码分析者也能够利
用部分的穷举攻击等攻击方法以某种概率成功攻破密码体制。本文
在考虑现有攻击基础上提出一种新的以语义识别为基础的密码体
制。
1.密钥可信性
在密码分析中,有一种软磨硬泡(Rubber・hose)攻击Q在此分析中
密码分析者威胁、勒索,或者折磨某人,直到她给出密钥为止,类似的还
有行贿购买密钥攻击。这些是非常有效的攻击,而且经常是破译算法
的最好途径。常见的密码分析已知明文攻击、选择明文和选择密文
攻击都需要非常巨大的资源而且必须拥有一些难于获取的已知信息,
往往在现实上不可能实现,可是软磨硬泡攻击却非常容易实现。抗击
软磨硬泡攻击并没有最好途径,只能给一个伪密钥或者让密码分析者
不信任密钥。
由于加密中运用了大量的混淆扩散和加上语义信息的高度冗余,
现代密码体制中的分组密码或者流密码体制中若采用错误密钥进行
解密的时候往往得到的是没有意义的乱码,能够被排除。虽然大量的
密钥中存在伪密钥,能够解密出有意义的为“明文”来,可是密码分析
者对于大部分伪明文可能根据已经知道的信息和接受发送双方的情
况来判断它们不是真正的明文。实际上能够让密码分析者考虑的伪
密钥非常少。这导致密码分析者非常相信能够解密得到有实际意义
和符合通信语境的"明文”的密钥,实际上一个密钥如果符合上述条
件,它是真正密钥的概率非常大。在软磨硬泡攻击情形下,给出的密钥
对于密码分析者具有可信性,因为密钥持有者想要伪造一个符合通信
语境,能够被密码分析者信赖的伪密钥非常困难,而且在被劫持等情形
中彳艮短时间内没有计算设备的情况下她无法计算出来。为了能够很
容易找到伪密钥,而且能够有意误导密码分析者,有必要加密时对于文
件内容予以识别而且以语言的字、词等结构为单位根据语义进行加
密。
在一般的特别是现代密码分析中,普遍认定密钥是唯一需要保密的
信息,也就是说密码系统的安全性就寓于密钥的安全性中。这点源于
荷兰人A.Kerckhoffs最早在19世纪阐明密码分析的一个基本假设,这
个假设就是秘密必须全寓于密钥中,且Kerckhoffs假设密码分析者已
有密码算法及其实现的全部详细资料。密码分析也普遍以密钥未知
情况下推算密钥、解密出明文、获取密钥和明文信息等为目标,而密
码算法设计正是在充分考虑已有的密码分析的基础上进行的,可是这
些具有很高安全性的算法对于软磨硬泡这样的攻击根本没有办法。
在密码系统中密钥是一个关键,而且密钥的截获就意味着它加密的所
有密文都被攻破,在这里另辟蹊径,研究如何使得密码体制能够很容易
地利用能够信赖的伪密钥来误导密码分析者,同时,即使密码分析者知
道可能被误导的问题,她也不能够再相信软磨硬泡的攻击或者行贿获
取密钥的可靠性。另外即使她具有巨大的计算能力能够得到的有实
际意义和符合语境的明文,由于这样的明文非常多而且意义相似或者
相反,她也将很迷惑而不能决定是否是真正明文。
在此给出密钥可信度的概念,它是衡量一个密码系统中在软磨硬
泡等攻击中密钥可能泄漏时候的能够验证和能够相信获得的密钥的
程度,它相关的指标有:找到伪密钥的难度(计算量)、语言的冗余度、
伪密钥数量及其比例、密码体制的明文遍历率、语义遍历程度和相
关概率、伪明文消息集合与先验消息集合的一致度等。加密解密方
式、语言特点和语境(密码分析者的先验信息)等也同密钥可信度密切
相关。实际中的可信度还与现实中的能够运用的计算能力以及时间
限制有关系。密钥可信度越低,密码体制的安全性越高。
密钥可信度和新加密方式的提出并不违背密码学的思想,并不是
一种钻牛角尖,在现代密码学中的一些分析如选择明文分析等等都是
以密码机被缴获而且密钥来不及销毁等特殊情况为背景的,而且一些
密码分析方法需要很多的明文密又对,它们的背景也主要针对这样的
情形。实际上密钥持有者被截获和被收买的可能性远远大于密码机
被缴获且密钥没有被销毁的情况,而且密钥被截获后明又就轻易被解
密,而密码机被缴获的情形下还需要具有足够的计算能力以及运用密
码分析方法。
另外,在密钥的分配和管理等环节中往往也难于保证密钥的安全,
在加密、解密等情况下如果磁盘等媒体中的密钥信息没有被多次覆
盖而导致密钥信息的存留也可能导致密钥泄漏。如果能够用伪密钥
作为诱饵,则能够误导密码分析者。即使密码分析者知道可能是伪密
钥,她也迷惑于不知道密钥的真伪,因此也不知道解密明文的真伪。由
此可见对于密钥可信度以及相应的密码体制研究与设计具有重大意
义。
在此给出密钥可信度的概念,它是衡量一个密码系统中在软磨硬泡
等攻击中密钥可能泄漏时候的能够验证和能够相信获得的密钥的程
度,它相关的指标有:找到伪密钥的难度(计算量)、语言的冗余度、伪
密钥数量、伪明文消息集合与先验消息集合的一致度等。加密解密
方式、语言特点和语境(密码分析者的先验信息)等同密钥可信度密切
相关。实际中的可信度还与现实中的能够运用的计算能力以及时间
限制有关系。密钥可信度越低,密码体制的安全性越高。
在文献中山中提出了采用类似完形选择题加密方式,加密时候把
关键词替换成为一个扩充项,扩充项把许多相近、相正确关键词放在
一起,用标号加以标记,正确的选择项给予正确的标号,解密时进行运算
判断哪个选择项是真正的关键词。显然这样的加密具有上述的迷惑
和误导作用,而且很容易寻找到伪密钥,具有密钥可信度低的优点。
密钥可信度和新加密方式的提出并不违背密码学的思想,并不是一
种钻牛角尖,在现代密码学中的一些分析如选择明文分析等等都是以
密码机被缴获而且密钥来不及销毁为背景的,而且一些密码分析方法
需要很多的明文密文对,它们的背景也主要针对这样的情形。实际上
密钥持有者被截获和被收买的可能性远远大于密码机被缴获且密钥
没有被销毁的情况,而且密钥被截获后明文就轻易被解密,而密码机被
缴获的情形下还需要具有足够的计算能力以及运用密码分析方法。
另外,在密钥的分配和管理等环节中往往也难于保证密钥的安全,在加
密、解密等情况下如果磁盘等媒体中的密钥信息没有被多次覆盖而
导致密钥信息的存留也可能导致密钥泄漏。如果能够用伪密钥作为
诱饵,则能够误导密码分析者。即使密码分析者知道可能是伪密钥,她
也迷惑于不知道密钥的真伪,因此也不知道解密明文的真伪。由此可
见对于密钥可信度以及相应的密码体制研究与设计具有重大意义。
2.基于迷惑与误导的加密(内层加密)
2.1加密方法
在进行本层加密时,对句子语法结构、语义等进行分析,找到数据
库中己定义的关键词,象编完形填空中的选择题一样,根据数据库的设
置把和这些关键词类似的词嵌入到该词的前后,而且对于每个“选
项”根据子密钥打上不同标号,如对于“是“能够增加不是、可能
是、很可能是、不大可能是等等选项并加上标号(能够认为标号是类
似于选择题中A、B、C、D这样的选项标识),如果子密钥不同,解密
时候就会根据子密钥与标号的关系选择一个正确的关键词,而密钥计
算能够确定了一个答案的序列,如选择题有一个随机的正确答案的
A、B、C、D序列,考虑到序列安全性需要应用密码算法或者类似函
数来生成。根据上述方法进行的加密我们称为基于迷惑与误导的加
密,考虑到明文消息的存在形式可能是输入的消息,也可能是一种格式
的文档,如文本文档和word文档。首先,如果是输入的消息,能够直接
输入到编辑(输入庵;如果消息保存在word和文本等格式的文档中,需
要打开相应文档,读取消息内容,然后对消息的一个字进行扫描,而且查
询关键词数据库,而且判断是否和后边的几个字构成真正的关键词:如
果是关键词就在输出时进行一个扩充项内替换,而且跳过关键词,继续
扫描后边的字;如果不构成关键词就直接输出,而且扫描下一个字。=
2.2关键词的判定
由于自然语言处理的复杂性,为了简化加密过程,采用比较简单的
关键词判定规则。关键词的判断方法如不:对于扫描的字,首先判断关
键词数据库中是否有这个字为首的关键词,其中分两种情形:第一,若关
键词数据库中没有这个字为首的关键词,就判定该字不会构成关键词,
就把这个字作为加密变换的输出,而且继续扫描下边一个字;第二,若有
这个字为首的关键词,把这个字和它后边的几个字一起读出来,查询这
个字以及后边的几个字是否构成对应在数据库中的关键词,也分为两
种情形:其一,若没有,就判定为不构成关键词,把该字作为加密变换的
输出;其二,若构成关键词就按照一个规则根据上下文来判定它是否是
真正的关键词。揩关键词的判定规则存放在一个关键词判定规则数
据库中,实际应用中能够将此数据库和关键词数据库合并起来,会减少
系统复杂性。在此设计的判定规则是比较关键词前后的字词,符合一
定规则能够判定不是关键词或者必须符合一定规则才能作为关键词,
如当“中华“后边存在“人民共和国,,则中华就不是关键词,能够
把“中华人民共和国”作为关键词,因此当以一个字为首的词构成两
个以上的关键词的时候,一般需要以较长的关键词为真正关键词,可是
实际中有可能存在极少数需要根据上下文判定哪个是关键词的情况
在此忽略,再如当“是“后边存在“不是“(即“是不是“)则它不是
真正关键词。经判定如果不是关键词,就输出第一个字作为密文,然后
扫描下一个字;如果是真正的关键词,输出就不是关键词本身而要进行
一个关键词对应的扩充项(扩充项的标号需要根据密钥进行运算),然
后跳过关键词扫描后边的字。
由于自然语言的复杂性,处理过程中不可避免存在误判的可能,这
导致了有些密钥能够经过分析被排除,且一些信息被泄漏,可是由于密
钥量非常大,排除一部分依然是能够保证存在有意义的伪密钥的。如
果有产生足够长的真随机数而且具有进行保密传送的条件能够采取
一次一密加密体制,安全性将会更高,而且能够根据需要确定伪军钥使
得解密的明文为指定的消息,达到预定的误导作用。本文主要是针对
中文而言,对于英文等外语需要根据其特点来设计判定方式和规则,方
法类似可是需要有变动。
图1关键词的判定和处理流程图示
2.3扩充项的处理
为了便于解密,需要对于扩充项、选择项和标号加以标记和区分,
可选择4个在中文中不出现的符号分别作为扩充项的起始标记和结
束标记、选择项标号的起始标记和结束标记。扩充项的处理过程如
下:当遇到某个关铤词如“今天”而且在数据库中查实它是关键词,那
么就根据数据库的数据,将与之相关的明天、今天、后天、昨天、前
天等作为一个扩充项,为了便于解密,需要对于扩充项和每一个其中的
关键词用标号加以标记,进行标记后形成一个完整的扩充项,好比一个
选择题中,用()分别代表选择的起始位置,而abed则对答案进行标记。
如果给出答案的序列,就能够恢复正确的答案c在数据库中,对于正确
的关键词今天,已经定义了它的相关的一些词,能够在它们前面前边给
予数字标号:以4标记明天,0标记今天,1标记后天,2标记昨天,3标记
前天。在数据库中正确的关键词标号为零,当从数据库读出来的时候,
需要根据密钥进行重新标记,然后在将扩充项填充到原来正确关键词
的位置。在扩充项中为S使于解密还要在关键词的前后增加相应的
起始标记,所有的起始标记都是一致的,而且起始标记能够采用明文中
不出现的符号。如采用在明文中可能出现的符号,则需要进行一定的
处理。扩充项的结构如下:扩充项起始标记+第一个选择项标号起始
标记+第一个选择项标号+第一个选择项标号结束标记+第一个选
择项选择项+第二个选择项标号起始标记+第二个选择项标号+第
二个选择项标号结束标记+第二个选择项选择项+…+扩充顼结束
标记(其中+仅仅表示衔接,不在扩充项中出现)。
数据库中,相关的一些关键词互相对其中的一个关键词进行扩充,
她们的按照一个固定的顺序排列,根据它口的总数目进行标号:数目为
N的一组用。至N-1的标号进行标记。比如对于明天、今天、后
天、昨天和前天这几个关键词,首先确定一个顺序,能够依次是明天、
今天、后天、昨天和前天。如果明天作为正确项时候,在数据库中对
应的就是:0标记明天」标记今天,2标记后天,3标记昨天,4标记前天0
如当今天作为关键词的时候,将这些标号相应加4取模5,则对于今天
的标号就是。,其它关键词依此类推。
为了让正确项与密钥相关,在加密时候对扩充项的选择项(关键词)
的标号进行处理。为了安全性,希望用真随机数进行处理,比如能够采
用一次一密体制。考虑实际中密钥产生困难,能够根据流密码和分组
密码生成的伪随机数据序列将根据一定长度进行截取,把数据序列划
分为数据段组成的序列。明文中有许多关键词,加密时根据扩充项中
所有组中关键词(选择项)最多的一组的关键词数目来确定一个对于密
钥流的截取长度。在进行加密的时候,遇到第一个关键词的时候,利用
密钥流的第一个截取下来的密钥流数据段(比如为137),假设这个关键
词对应的扩充项中选择项的数目为n,对于截取的数据段作取模n的
运算,比如一个扩充项有5个词,就把流密码产生的数字取模5得到
2(137取模5得到的是2),用这个数字2再与关键词今天对应的数据库
中的扩充项中的每一个关键词原来的数字标号相加,取模n(这里是5),
得到的数字就是加密后这个选择词的标号,在数据库中查询原始标号
为:4-明天,0-今天,1-后天,2-昨天,3-前天,经过运算就变成了1-
明天,2-今天,3-后天,4-昨天,0-前天。遇到第二个关键词时候,揩
用第二个数据段来进行处理,依此类推。解密时每遇到一个扩充项的
标记,就计算出密钥流序列中相应的数据段,进行取模运算,得到的数据
用来依次比较在选择起始标记之间的每一个标号数据,直到找到相同
的标号数据。将她后边的选择项剥离出来作为该段对应的明文,其它
的选择项以及所有的标记则去掉。
流密码的产生方式能够采用流密码算法,由于分组密码具有良好
的伪随机性,也能够采用分组密码算法来实现,如密码反馈模式能够实
现自同步流密码,输出反馈模式能够将分组密码用于同步流密码等。
为了方便程序中实现,我们采用简化的密码分组链接模式。在密码分
组链接(CBC)模式中,明又被加密之前要与前面的密文进行异或运
算。第一个分组明文被加密后,其结果也被存在反馈寄存器中,在下一
明文分组加密之前,它将与反馈寄存器进行异或作为下一次加密的输
入,其结果又被存进反馈寄存器,再与下一分组明文进行异或,如此这般
直到消息结束。每一分组的加密都依赖于所有前面的分组。为S方
便程序中实现,在这里采用的是简化的模式,将明文所有比特都看
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年高一数学暑假讲义教师版 (A版)板块二
- 豆血红蛋白lba基因在衣藻叶绿体中的表达及其对产氢效能影响的探究
- 谱负Lévy过程关键问题剖析与应用拓展研究
- 调脊通督针法:神经根型颈椎病治疗的新视角与疗效探究
- 北京市部分事业单位定向招聘2026年合同期满乡村振兴协理员210人笔试模拟试题及答案详解
- 2026重庆两江新区大竹林社区卫生服务中心非编人员招聘5人(第一批)笔试模拟试题及答案详解
- 语篇功能视角下的阅读理解能力提升路径研究
- 语用关联理论视域下大学英语阅读理解的认知与提升策略研究
- 语文教学中语言能力培养的多维探索与实践
- 语境教学:解锁独立学院英语阅读的新钥匙
- 消化内镜设备维护管理手册
- YY/T 1274-2025腹膜透析设备
- 2025年及未来5年中国通讯终端行业市场运营现状及投资研究建议报告
- 《土木工程智能施工》课件 第5章 钢筋混凝土工程-预应力混凝土工程
- 卫校招聘护理教师题库及答案解析
- 烧伤患者心理护理指导
- 《红楼梦情节梗概》课件
- 红楼梦第四十回赏析
- 食材配送服务响应方案
- 2026年高考数学一轮复习策略《指向深度学习的高中数学教学策略》讲座
- 初中数学教学反馈机制计划
评论
0/150
提交评论