沈阳工程学院
课 程 设 计
设计题目: 简单的保密通信系统
院 系 信息学院 班级 信安本111
学生姓名 学号
指导教师 祝世东、王素芬 职称 工程师、副教授
起止日期:2014 年1月6日起——至 20## 年1月10日止
沈 阳 工 程 学 院
课程设计任务书
课程设计题目: 简单的保密通信系统
院 系 信息学院 班级 信安本111
学生姓名 卢宁 学号 20114161204
指导教师祝世东、王素芬 职称工程师、副教授
课程设计进行地点: f605
任务下达时间: 2013年 12 月 25 日
起止日期:20##年1月6日起——至20##年1月10日止
教研室主任 年 月 日批准
一、课程设计的原始资料及依据
以DES、AES、RC4、移位密码、仿射密码或维吉尼亚密码为加密算法;以RSA为密钥传输加密算法;以数据认证算法或MD5杂凑算法为消息认证算法;以DSS为数字签字方法;选择不同的密钥管理方案,实现一简单的保密通信系统。
二、课程设计主要内容及要求
设计内容:
设计一简单的保密通信系统,系统配置从以下表格中选择。并模拟一次信息传输过程。
表1 保密通信系统配置表
发送消息的内容为:由学号、姓名、班级构成的字符串。
设计要求:
(1)每人选择一种系统配置,每名同学的配置必须有所不同;
(2)对加密、消息认证、数字签字等算法要给出具体的设置,包括参数、密钥等;
(3)根据算法的设置,在“信息安全实验教学系统”上进行计算,并保留截图;
(4)公钥分配、共享密钥策略等需根据具体设计进行模拟;
(5)使用指定的消息内容,模拟一次完整的消息发送过程,包括:密钥分配、消息加密、消息认证和数字签字的生成、消息认证和数字签字的验证、消息解密等。
三、对课程设计说明书撰写内容、格式、字数的要求
1.课程设计说明书是体现和总结课程设计成果的载体,主要内容包括:设计题目、设计目的、设备器材、设计原理及内容、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。一般不应少于3000字。
2.在适当位置配合相应的实验原理图、功能模块图、算法流程图等图表进行说明。应做到文理通顺,内容正确完整,书写工整,装订整齐。
3.设计总结部分主要写本人完成工作简介以及自己的设计体会,包括通过课程设计学到了什么,哪里遇到了困难,解决的办法以及今后的目标。
4.课程设计说明书手写或打印均可。手写要用学校统一的课程设计用纸,用黑或蓝黑墨水工整书写;打印时采用A4纸,页边距均为20mm,正文采用宋体小四号字,行间距18磅。文中大标题采用黑体小三号字,一级节标题采用黑体四号字,二级节标题采用黑体小四号字,表题与图题采用宋体五号字。
5.课程设计说明书装订顺序为:封面、任务书、成绩评定表、目录、正文、参考文献。
四、设计完成后应提交成果的种类、数量、质量等方面的要求
1.完成“任务书”中指定的功能,运行结果正确。
2.课程设计说明书。
五、时间进度安排
六、主要参考资料(文献)
[1] 杨波.《现代密码学》. 北京:清华大学出版社
[2] 张福泰.《密码学教程》. 武汉:武汉大学出版社
[3] 刘嘉勇. 《应用密码学》.北京:清华大学出版社
[4] 卢开澄.《计算机密码学》(第2 版). 北京:清华大学出版社
[5] 宋震.《密码学》. 中国水利水电出版社
沈阳工程学院
应用密码学技术 课程设计成绩评定表
院(系): 信息学院 班级: 信安本111 学生姓名: 卢宁
摘要
随着科学技术的发展信息化速度急剧加快,信息安全显得尤为重要,社会对信息安全技术人才的要求也非常高。为了能符合社会对这类人才标准要求大学的教育的重点也就很明显了,我们要培养具有研究和实践能力的高层次的计算机专业技术人才已成为我们计算机教育的重点目标。也就是在这个目标的指引下我们在进行应用密码学的课程教学后,在第二学期就进行了一周的课程设计。这样可以很好锻炼我们的实践和研究能力,这对当代就要面临就业压力的计算机专业大学生是非常有必要的。
数据摘要是实现网上信息安全的重要手段,而数据摘要又是密码学中占有非常重要的地位。在数据摘要的算法中哈希函数又是关键。密码学是研究编制和密码破解的技术科学,它的客观变化规律应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学,总称为密码学。它是在编码和破译的斗争中发展起来的,并随着先进科学技术的应用已成为一门综合性的尖端技术科学。它与语言学、数学、电子学、声学、信息论、计算机科学有着广泛而密切的联系。
本次课程设计的题目是模拟保密通信的过程,通过模拟整个过程来体会密码学的强大功能。首先确定发送方要发送的消息,通过对称加密,得到密文,接受方再通过一系列的解密处理过程得到发送的原始数据。先对整个系统的执行流程进行了分析,根据据执行流程对、每个部分再进行设计,过程是首先是共享密钥的分配,在这一阶段采用RSA加密算法和公钥证书分配方式以及具有保密性的共享密钥分配策略,接着再消息认证过程中采用MD5算法,发送方要对发送的信息采用RC4算法进行加密,最后DSS进行数字签名。对每一步中的相关信息进行具体的设置,使其能够成功的发送和接收。通过具体的设计之后,对自己所选题中所使用的算法进行具体深入研究和掌握。也加深了对简单的保密通信系统的工作过程的了解。
关键词 密码学 编码学 破译学 保密通信 数字签名
摘要........................................................................................................................................................ I
第一章 绪 论................................................................................................................................... - 1 -
1.1密码学概述.................................................................................................................................. - 1 -
1.3 密码学分类........................................................................................................................... - 2 -
.1.3.2不对称密码学.............................................................................................................. - 2 -
第2章 保密通信系统原理设计........................................................................................................... - 4 -
2.1 保密通信系统原理................................................................................................................ - 4 -
2.4共享密钥分配........................................................................................................................ - 5 -
2.4.1 RSA算法......................................................................................................................... - 5 -
非对称密码体制又称为公钥密码体制,加解密使用公私钥密钥对,私钥由密钥拥有者保管,公钥可以公开,基于公开渠道进行分发,解决了对称密钥体制中密钥管理、分发和数字签名等难题。........................ - 6 -
2.4.3具有保密性分配.......................................................................................................... - 7 -
第3章 具体设计步骤....................................................................................................................... - 10 -
3.1 信息加密............................................................................................................................ - 10 -
3.2共享密钥分配....................................................................................................................... - 10 -
3.2.1 公钥分配........................................................................................................................ - 10 -
3.3消息认证.............................................................................................................................. - 17 -
3.4数字签字.............................................................................................................................. - 18 -
数字签字是证明发送方发送过某一消息,接收方需要保存数字签字,本次的数字签字选取密钥长度为512bit,如图3.4.1.................................................................................................................................... - 18 -
3.4 密文传输............................................................................................................................ - 19 -
第4章 遇到的问题及解决方法......................................................................................................... - 20 -
4.1 遇到的问题......................................................................................................................... - 20 -
4.2 解决方法............................................................................................................................. - 20 -
结 论............................................................................................................................................. - 21 -
致谢................................................................................................................................................. - 22 -
参考文献.......................................................................................................................................... - 23 -
第一章 绪 论
1.1密码学概述
密码学(Cryptogra phy)在希腊文用Kruptos(hidden)+graphein(to write)表达,现代准确的术语为“密码编制学”,简称“编密学”, 与之相对的专门研究如何破解密码的学问称之为“密码分析学”。密码学是主要研究通信安全和保密的学科,他包括两个分支:密码编码学和密码分析学。密码编码学主要研究对信息进行变换,以保护信息在传递过程中不被敌方窃取、解读和利用的方法,而密码分析学则于密码编码学相反,它主要研究如何分析和破译密码。这两者之间既相互对立又相互促进。密码的基本思想是对机密信息进行伪装。一个密码系统完成如下伪装:加密者对需要进行伪装机密信息(明文)进行伪装进行变换(加密变换),得到另外一种看起来似乎与原有信息不相关的表示(密文),如果合法者(接收者)获得了伪装后的信息,那么他可以通过事先约定的密钥,从得到的信息中分析得到原有的机密信息(解密变换),而如果不合法的用户(密码分析者)试图从这种伪装后信息中分析得到原有的机密信息,那么,要么这种分析过程根本是不可能的,要么代价过于巨大,以至于无法进行。
在计算机出现以前,密码学的算法主要是通过字符之间代替或易位实现的,我们称这些密码体制为古典密码。其中包括:易位密码、代替密码(单表代替密码、多表代替密码等)。这些密码算法大都十分简单,现在已经很少在实际应用中使用了。由于密码学是涉及数学、通讯、计算机等相关学科的知识,就我们现有的知识水平而言,只能初步研究古典密码学的基本原理和方法。但是对古典密码学的研究,对于理解、构造和分析现代实用的密码都是很有帮助。以下介绍我们所研究的古典密码学。
1.2密码学的发展简介
密码学作为保护信息的手段,经历了三个发展时期。它最早应用在军事和外交领域,随着科技的发展而逐渐进入人们的生活中。在手工阶段,人们只需通过纸和笔对字符进行加密。密码学的历史源远流长,人类对密码的使用可以追溯到古巴比伦时代。下图的Phaistos圆盘是一种直径约为160mm的粘土圆盘,它始于公元前17世纪,表面有明显字间空格的字母。近年有研究学家认为它记录着某种古代天文历法,但真相仍是个迷。随着工业革命的兴起,密码学也进入了机器时代、电子时代。与人手操作相比电子密码机使用了更优秀复杂的加密手段,同时也拥有更高的加密解密效率。其中最具有代表性的就是下图所示的ENIGMA。ENIGMA是德国在1919年发明的一种加密电子器,它被证明是有史以来最可靠的加密系统之一。二战期间它开始被德军大量用于铁路、企业当中,令德军保密通讯技术处于领先地位。在这个时期虽然加密设备有了很大的进步,但是密码学的理论却没有多大的改变,加密的主要手段仍是--替代和换位。计算机的出现使密码进行高度复杂的运算成为可能。直到1976年,为了适应计算机网络通信和商业保密要求产生的公开密钥密码理论,密码学才在真正意义上取得了重大突破,进入近代密码学阶段。近代密码学改变了古典密码学单一的加密手法,融入了大量的数论、几何、代数等丰富知识,使密码学得到更蓬勃的发展。到了现在,世界各国仍然对密码的研究高度重视,已经发展到了现代密码学时期。密码学已经成为结合物理、量子力学、电子学、语言学等多个专业的综合科学,出现了如“量子密码”、“混沌密码”等先进理论,在信息安全中起着十分重要的角色。
1.3 密码学分类
.1.3.1 基本分类
有二大类的密码系统。第一类为对称金钥(Symmetric Key)密码系统,第二类为非对称金钥(Public Key) 密码系统。 首先密码学是由万维网的嬉皮士所研究,而且涉及钥匙传送问题。60年代?请保安传送钥匙;70年初,发 现这个不是好辨法,费时浪费时间。
1965年,美国史丹福大学电机工程系--默克尔、迪菲、赫尔曼等三人研究密码学可惜并未有所发现。 另外在英国通讯电子保安组(CESG)秘密机构的切尔纳姆发现了还原密码式,但是由于属于秘密机构,所以不能公开。直到1977年麻省理工研究生--里夫斯,阿德曼发现和切尔曼差不多的式。他们成立RSA Security Company (RSA是他们名字的字头)现时值25亿美元,在传送信用卡时起了很大作用。RSA已安装了5亿套产品在IE , Netscape下的小锁就是RSA的产品。数学挂销第一个发现不是美国,但是第一个公开。数学挂锁上锁易,还原难,所以受广氾使用,亦即是信息编码保密。
.1.3.2不对称密码学
传统的对称加密算法遇到了密钥分发管理的难题,最优秀的算法,如果密钥在分发、传发泄漏,则整个安全体系则毁于一旦。不对称加密算法则有效的避免了其分发管理密钥的难题。不对称密码学中使用到一对公钥(public key)和私钥(private key)组合。用公钥加密的密文只能用私钥解密,反之,用私钥加密的密文只能用公钥解密。在操作过程中,人们把公钥向外界发布,让外界都知道,自己保存私钥,只有自己才能知道。如果A要发一份秘密信息给B,则A只需要得到B的公钥,然后用B的公钥加密秘密信息,此加密的信息只有B能用其保密的私钥解密。反之,B也可以用A的公钥加密保密信息给A。信息在传送过程中,即使被第三方截取,也不可能解密其内容。
(I)RSA
RSA(取Ron Rivest,Adi Shamir和Leonard Adleman三创始人字句首字母)几乎已经成为了公开密钥密码体制的代名词。RSA是一种公开密钥加密体系,它的应用原理是:先由密钥管理中心产生一对公钥 (public-key)和私钥(Private-key),称为密钥对。方法如下:先产生两个足够大的强质数p、q。可得p与q的乘积为 n=p×q。再由p和q算出另一个数z=(p-1)×(q-1),然后再选取一个与z互素的奇数e,称e为公开指数;从这个e值可以找出另一个值d,并能 满足e×d=1 mod (z)条件。由此而得到的两组数(n,e)和(n,d)分别被称为公开密钥和秘密密钥,或简称公钥和私钥。
公钥密码算法都是基于一些复杂的数学难题,例如广泛使用的RSA算法就是基于大整数因子分解这一著名的数学难题。公钥密码体系的优点是能适应网络的开放性要求,密钥管理简单,并且可方便地实现数字签名和身份认证等功能,是电子商务等技术的核心基础。其缺点是算法复杂,加密数据的速度和效率较低。因此在实际应用中,通常将对称加密算法和非对称加密算法结合使用,利用对称加密算法来进行大容量数据的加密,而采用RSA等非对称加密算法来传递对称加密算法所使用的密钥,通过这种方法可以有效地提高加密的效率并能简化对密钥的管理。
(II) 鉴别与签名
对称密码学解决了数据机密性的功能要求,不对称密码学则相应的解决了签别和不可否认性等功能需求。在不对称密码学中,用自己公钥加密的数据只有自己才能打开,人们就可以把自己的公钥放在网上,通信的对方可以用自己的公钥加密数据,密文只有自己才能打开,达到了加密数据而不需要通过一种十分可靠的方式来传递对称密钥的作用。反之,如果使用私钥来加密消息,通信的对方用公钥来解密消息,就可以达到鉴别的作用。因为能用公钥解密消息,说明数据一定是自己加密的,前提是这些加密并不为保护数据内容,只为确认、鉴别身份而用。这样可以用对称算法作数字签名 (digital signature),用私钥加密报文,就可以让对方确认身份。如果A用其私钥加密了某信息,B用A的公钥钥密后“阅读”A的信息,则A就不能否认其给A发过过信息。
(III)CA (Certification Authrity)
公钥加密体系理论上非常安全,操作过程中有可能会受到中间人攻击(man-in-the-middle attack)。比如B要发一个保密信息给A,所以第一步A把自己的公钥Ka发给B。在这一过程中,如果窃听者H 截取到其公钥,然后伪装成A,将自己的公钥Kh发给B。B将敏感信息用Kh加密后发给A,此过程中,窃听者H截取密文后用H的私钥解密得到信息内容,然后用A的公钥Ka加密得到密文,自己伪装成B发给A,A用自己的私钥顺利的解开了密文。在此过程中,A与B通讯顺利,也感觉不到H的存在,但A与B的信息却被窃听者窃取。
CA的出现有效的解决了中间人的攻击。CA(certification authrity)把一个特定的实体和公钥绑在一起。人们把信任建立在一个大家都信任的第三方,从信任第三方来达到信任对方的目的。如果人们想发放自己的公钥,则用自己的相关身份信息和自己的公钥到一家权威机构(比如像派出所这样的机构)办一个数据证书。权威机构核实你的身份以后,用其权威机构的私钥来加密你的数据证书。如果你要把你的公钥传送给对方,只需要将自己的数据证书传递给对方,对方用权威机构的公钥解密即可得到你身份的相关信息和公钥。而权威机构的公钥则更加透明,比如可以刊登在报纸上让大家都知道。系统本身也带有一些权威机构的公钥,这些在人们装好系统就已经存在了。
第2章 保密通信系统原理设计
2.1 保密通信系统原理
数据通信的迅速发展带来了数据失密问题。信息被非法截取和数据库资料被窃的事例经常发生。数据失密会造成严重后果,所以数据保密成为十分重要的问题。
数据保密技术包括:用户身份标志。不同的用户享有不同的权利,可以对不同的数据库或数据库的不同部分进行访问,用户身份标志最常用的方法是口令学。物理性保护。一般保密性较高的数据库除了用户身份标志外,还需要数据加密,如信用卡。使用权。数据库的每一个受保护部分保持一份各个用户使用权的清单。
在数据通信中的传统的保密方法是采用通信双方协定的密钥字(定期或不定期变换),在通信开始时先验证对方身份。传输的信号也是经过加密的。
公开密钥理论,其基本要领是给每一用户分配一对密钥,其中一个是只有使用者本人掌握秘密密钥,另一个是可以公开的密钥,两个密钥通过算法结成一定的关系。公开密钥只用于加密密钥通过算法结成一定的关系。公开密钥只用于加密,秘密密钥只用于解密,因而要想从一个密钥导出另一个密钥事实上是不可能的,即从数字观点来看,函数是单向的,而且只有惟一的解。这一方法的特点是把经过加密的报文发送出去而无需双方进行密钥互换、分配或同步。
RSA法的数字签名验证法,可以确证对方用户身份。数字签名可以由公开密钥系统产生出来,其前提是公开密钥和秘密密钥是互逆的,就是说,假使一个明文报文是用某个秘密密钥“解密”的,则公开密钥“加密”就可以将报文恢复为明文格式。
2.2设计内容
表2.2 保密通信系统配置表
2.3 RC4流密码算法
流密码(stream cipher)也称为序列密码,每次加密处理数据流的一位或一个字节,加解密使用相同的密钥,是对称密码算法的一种。1949年Shannon证明只有一次一密密码体制是绝对安全的,为流密码技术的研究提供了强大的支持,一次一密的密码方案是流密码的雏形。流密码的基本思想是利用密钥K产生一个密钥流k1k2…kn对明文流M=m1m2…mn进行如下加密:C=c1c2…cn=Ek1(m1)Ek2(m2)…Ekn(mn)。若流密码所使用的是真正随机产生的、与消息流长度相同的密钥流,则此时的流密码就是一次一密的密码体制。
流密码分为同步流密码和自同步流密码两种。同步流密码的密钥流的产生独立于明文和密文;自同步流密码的密钥流的产生与密钥和已经产生的固定数量的密文字符有关,即是一种有记忆变换的序列密码。
RC4是1987年Ron Rivest为RSA公司设计的一种流密码,是一个面向字节操作、具有密钥长度可变特性的流密码,是目前为数不多的公开的流密码算法。目前的RC4至少使用128为的密钥。RC4的算法可简单描述为:对于n位长的字,有共N=2n个可能的内部置换状态矢量S=S[0],S[1],…,S[N-1],这些状态是保密的。密钥流K由S中的2n个元素按一定方式选出一个元素而生成,每生成一个密钥值,S中的元素就重新置换一次,自始至终置换后的S包含从0到N-1的所有n比特数。
RC4有两个主要算法:密钥调度算法KSA和伪随机数生成算法PRGA。KSA算法的作用是将一个随机密钥变换成一个初始置换,及相当于初始化状态矢量S,然后PRGA利用KSA生成的初始置换生成一个伪随机数出序列。
密钥调度算法KSA的算法描述如下:
fori=0 to N-1 do
S[i]=i;
j=0;
fori=0 to N-1 do
j=(j+S[i]+K[i mod L]) mod N;
swap(S[i],S[j]);
初始化时,S中元素的值被设置为0到N-1,密钥长度为L个字节,从S[0]到S[N-1]对于每个S[i]根据有密钥K确定的方案,将S[i]置换为S中的另一个元素。
伪随机数生成算法PRGA的算法描述如下:
i=0;
j=0;
while(true)
i=(i+1) mod N;
j=(j+S[i])mod N;
swap(S[i],s[j]);
output k=S[(S[i]+S[j])mod N];
PRGA算法主要完成密钥流的生成,从S[0]到S[N-1],对每个S[i],根据当前S的值,将S[i]与S中的另一个元素置换,,当S[N-1]完成置换后,操作再从S[0]开始重复。
加密时将K值与下一个明文字节异或;解密时将K值与下一密文字节异或。
2.4共享密钥分配
2.4.1 RSA算法
非对称密码体制又称为公钥密码体制,加解密使用公私钥密钥对,私钥由密钥拥有者保管,公钥可以公开,基于公开渠道进行分发,解决了对称密钥体制中密钥管理、分发和数字签名等难题。
RSA公钥算法由Rivest、Shamir、Adleman于1978年提出的,是目前公钥密码的国际标准。算法的数学基础是Euler定理,是基于Deffie-Hellman的单项陷门函数的定义而给出的第一个公钥密码的实际实现,其安全性建立在大整数因子分解的困难性之上。
RSA算法的明文空间M=密文空间C=Zn整数,其算法描述如下:
密钥生成:
随机选择两个大素数p和q,计算n=p ? q,ψ(n) = (p-1)?(q-1);选择一个随机整数e<ψ(n),满足gcd(e,ψ(n))=1,计算整数d = e-1modψ(n),即ed ≡ 1 modψ(n);公开公钥(n,e),安全的销毁p、q和ψ(n),并保留(d,n)作为私钥。
加密:
C ≡ Me mod n,M < n
解密:
M ≡ Cd mod n
使用中国剩余定理可以加速RSA密码算法的实现。
2.4.2 公钥证书
用户互相交换自己的公钥而无须与公钥管理机构联系由证书管理机构CA(certificate authority)为用户建立其中的数据项有与该用户的秘密钥相匹配的公开钥及用户的身份和时戳等所有的数据项经CA用自己的秘密钥签字后就形成证书CA=ESKCA[T,IDA,PKA],其中IDA是用户A的身份,PKA是A的公钥,T是当前时戳,SKCA是CA的秘密钥,CA即是为户A产生的证书用户将自己的公开钥通过公钥证书发给另一用户接收方可用CA的公钥PKCA对证书加以验证,即DPKCA[CA]=DPKCA[ESKCA[T,IDA,PKA]]=(T,IDA,PKA)
图2.4.1 证书的产生过程
2.4.3具有保密性分配
公开钥分配完成后,用户就可用公钥加密体制进行保密通信。然而由于公钥加密的速度过慢,以此进行保密通信不太合适,但用于分配单钥密码体制的密钥却非常合适。
用这种方法分配密钥主要有简单分配和具有保密性的分配两种方式。这里主要介绍后者。
具有保密性的密钥分配既可防止被动攻击,又可防止主动攻击。假设A、B已完成公钥交换,有如图2.2的分配过程。这种分配方式比简单分配多了两个过程,一是有A与B相互确认。二是当A给B发送密钥KS时不似乎简单的用B的公钥进行加密而是先用自己的私钥加密再用B的公钥加密,这样保证了KS只有A能发送且只有B能解开,很大程度上增加了安全性。
图2.4.2具有保密性分配密钥过程
2.5 MD5消息认证
2.5.1 MD5算法
MD5(Message-Digest Algorithm 5)即信息-摘要算法,是MD4算法的改进;算法的输入为任意长度的消息,分为512比特长的分组,输出为128比特的消息摘要。处理过程如下:
1:对消息进行填充,使其比特长度为n512+448(n为正整数),填充方式是固定的:第一位为1,其后各位为0。
2:附加消息长度,使用上一步骤留出的64比特以小端(最低有效字节/位存储于低地址字节/位)方式来表示消息被填充前的长度,若消息长度大于264,则以264为模数取模。
3:对消息摘要缓冲区初始化,算法使用128比特长的缓冲区来存储中间结果和最终散列值,将缓冲区表示成4个32比特长的寄存器A、B、C、D,每个寄存器以小端方式存储数据,初始值为(十六进制,低位字节在前)A=01234567,B=89ABCDEF,C=FEDCBA98,D=76543210。
4:以分组为单位对消息进行处理,每一个分组都经过压缩函数HMD5处理;HMD5有4轮处理过程,每轮有16步迭代,4轮处理过程的处理结构一样,所用逻辑函数不同,分别表示为F、G、H、I;每轮的输入为当前处理的消息分组和缓冲区当前的值,输出仍存放在缓冲区中。最后第四轮的输出与第一轮输入的缓冲区值V相加,相加时将V看做4个32比特的字,每个字与第四轮输出的对应的字按模232相加,相加结果为HMD5的输出。
5:消息的所有分组均被处理完后,最后一个HMD5的输出即为产生的128位消息摘要。
图2.5 MD5杂凑算法
2.6 DSS数字签字
数字签名是针对数字文档的一种签名确认方法,目的是对数字对象的合法性、真实性进行标记,并提供签名者的承诺。数字签名应具有与数字对象一一对应的关系,即签名的精确性;数字签名应基于签名者的唯一特征,从而确定签名的不可伪造性和不可否认性,即签名的唯一性;数字签名应具有时间特征,从而防止签名的重复使用,即签名的时效性。数字签名的执行方式分为直接方式和可仲裁方式。
DSA签名算法
数字签名标准(Digital Signature Standard,DSS)是由美国国家标准技术研究所(NIST)于1994年正式公布的联邦信息处理标准FIPS PUB 186。DSS目前新增了基于RSA和ECC的数字签名算法,但是最初只支持DSA(Digital Signature Algorithm)数字签名算法,该算法是ElGamal签名算法的改进,安全性基于计算离散对数的难度。
DSA算法由美国国家安全局NSA指导设计,用来提供唯一的数字签名函数;它虽然是一种公钥技术,但是只能用于数字签名。DSA中规定了使用安全散列算法(SHA-1),将消息生成固定长度的散列值,与一随机数k一起作为签名函数的输入;签名函数还需使用发送方的密钥x和供所有用户使用的全局公开密钥分量(p,q,g),产生的两个输出(r,s)即为消息的签名。接收方收到消息后再产生出消息的散列值,将散列值与收到签名中的s一起输入验证函数;验证函数还需输入全局公开密钥分量(p,q,g)和发送方的公钥y,产生的输出若与收到的签名中
过程如图2.6所示。
图2.6 DSS签字
加密:
假设用户A要对消息M进行数字签名,然后发送给用户B.
① 发送方A秘密选取随机整数k,0<k<q;
② 发送方计算
r=(gk mod p) mod q;
;其中x为签名方A的私钥。
其中H(M)是使用SHA-1生成的消息M的散列码,(r,s)就是消息M的数字签名,k-1是k模q的乘法逆元,为了安全起见,每次签名应当随机选取不同的k。若r=0或s=0则返回①重新计算。
解密:
如果接收者收到消息M,r,s后,首先验证0<r<q,0<s<q,如果通过则计算:
w=s-1 mod q;
u1= H(M)w mod q;
u2= r w mod q;
;其中y为签名方A的公钥。
如果v=r则确定签名合法,可以认为收到的消息是可信的,否则消息可能被篡改。
第3章 具体设计步骤
3.1 信息加密
加密算法:RC4 明文:由学号、姓名、班级构成的字符串“2011416104luningxinanben111”转化为十六进制为31546007B239232236EA29B69CD0E313B04C26066A9063C44D5C85
密钥:19900125
图3.1 RC4加密
3.2共享密钥分配
3.2.1 公钥分配
步骤1:生成A方的密钥对如图3.2.1
图3.2.1 A的密钥对
名文: 19900125
Modulus:8F7F551DA595EFB36EF6E754192C18A14EA6ABD7A619A1694D94A1B7A7C764744CDCAD7B349FBF1D6F0DC6EACB05EBDC917FE7B21B6106D0EE70C366979CD6D5
公钥:10001
私钥:86840BCB15DD3EED4A9903734F8189B934DC82FC4D857B4D165FBD55475F5FE749543C3DB87B435E417F252E24331A7A3421903C1E3FEB23F7E6EE870B505F01
步骤2:生成B方的密钥对如图3.2.2
图3.2.2 B的密钥对
明文:19921108
Modulus:BCC4F8A85C8388AE39496B76345D40FFC6AC366857AC23CEED3D8ADBF5049FFDD004E129204A042D747D5AC0E30761C9120EE790AB7B80C88D5F2205EC2D34EB
公钥:10001
私钥:465BB83EB074CA3DFDD632BA951BE8FD2CA4C586B09ED59DEBE91357968489C8E0F6085EE3509DB2B3F2D5380EC12CDD6A6FB4F5CB6E5CA91B9AA730D4235431
步骤3:生成CA方的密钥对如图3.2.3
图3.2.3 CA的密钥对
Modulus:BED655379BF6258890134D842F33D1F35432076D89D454AFCC9F1E67ABB2586D7387DE6094850839B1D2303B770FA4355DFDEE6DDBB9E7BA9CB0B502EC37F203
公钥:10001
私钥:8B98B5958C1CAEB00AD453EBD1AB9274F0ADF80904BDB18537A55DD4702071D5BA4AEF196B5C22A81DD5B013AB09AC8ABC5E96608F7B7DD30F85685440813FE1
步骤4:将A的公钥和姓名A发送给证书管理机构CA,由CA的私钥加密生成A的证书,如图3.3.4
图3.3.4 A的证书
A证书:BB97F06CF4C7FDA1799039AC0BE7F4436C0A3C63B7C2816072EE8774802C982A060784657C1BF790640520ADE17CCC00B6436431FE0CACF1064DB4E9E86FCBA3
明文:19900125201141610410001
步骤5:将B的公钥和姓名B发送给证书管理机构CA,由CA的私钥加密生成B的证书,如图3.3.5
图3.3.5 B的证书
B证书:782B31E8E31EBBEBA6E99DC801969DEDF4320A63A2CAB77A08E718840AC70D77E41E813F96C552787D83D7639715DDB39B73D1E289BB65AFB7CE5A6B0E2B7339
明文:19921108201141610310001
3.2.2共享密钥策略
这里我们运用了具有保密性的密钥分配方式,该过程具有保密性和认证性,因此既可以防止被动攻击,也可以防止主动攻击。
上边A、B已经完成了公钥的交换,可以按照下列步骤建立共享会话密钥。
步骤1:用户A用用户B的公钥PKB加密A的身份IDA和一个一次性随机数N1后发往B如图3.3.6
图3.3.6标示业务
N1||IDA=199001252011416103
Epkb[N1||IDA]= 4754FD34734B382892828391C3516C75E16A1D64DBB8A47B733BE5633A9E6F9A7D256A552CC276F029D1D5FB9C1EA4FFCE0BB4E6E19F8241337038392C12E28A
步骤2:用户B用用户A的公钥PKA加密A的一次性随机数N1和B新产生的一次随机数N2后发往A。因为只有B能解读由B公钥加密的内容,所以B发来的消息中N1的存在可是A相信对方的确是B,如图3.3.7
图3.3.7反馈信息
N1||N2=1990012519921108
EpkA[N1||N2]= 23C84C7E6C4331E48BF08DEEE357353373391E35FB1EE1BF0BB34667AC59B37A1656D4186EEB77014714B877DD74903BF0B8184AA67FFBE8C344B7AA311D6403
步骤3:用户A用B的公钥PKB对N2加密后返回给B,以使B相信对方的确使A,如图3.3.8
图3.3.8 反馈信息
N2=19921108
EpkB[N2]= 4ED9FF263178B1F0773881081609F95A863A1AECB827D8B78975BBBEED8F80C9D15CCF4EBFBEB138A4521B94589F0A6D86B0FF0B8F06911617F78A6B450B89C5
步骤4:用户A选择会话密钥KS,然后将M=EPKB[ESKA[KS]]发送给B。用A的私钥加密如图3.3.9
图3.3.9
Ks=19900125
Eska[Ks]=
2ACDFC3C3619292E69280FBBFB43D14610839910576
AF7D53F848C17C6E45E8419412A73340964F0E16CF
1451D172594792F7CA8698B3758916378A2EC3F30B6
步骤5:用B的公钥加密是为保证只有B能解读加密结果,用A的私钥加密是保证该加密结果只有A能发送用户B以DPKA[DSKB[M]]恢复会话密钥。如图3.3.10
A的公钥解密结果为“19900125”。此时,用户B得到了A的会话密钥,并可以接受A的消息了。
图3.3.10 A的公钥解密
Epkb[Eska[Ks]1]= 228690C9E7D5ADC5AA2988F8937F1A2721ACFEE72976FE01020E4E7A80EA6F930E3AE828A0812351D3BADF32389F6ACEEB77CE567DEE2522C87CBA7B67F7581C
Epkb[Eska[Ks]2]= 3BFCE81873E8418749743221DE254F71C7667CEE38624B65A650278A9663C83DE4CC7BAAF8E02681861EAEDB5383114C59FD34E2353E5B6A0FF99DE672668AC9
Epkb[Eska[Ks]3]=
5D7DBD473146323EC8663C0BCB9E131CE91A5F81D13CCDB6BAA6F12DE56827CC243308004B99EA9D541D1F8BF0AC1CE4A8294883EA0835992B7DB5A54AFE8AA0
3.3消息认证
确保信息密文的安全与正确,会在密文后添加消息认证(MD5),计算MD5值如图3.3.1
图3.3.1消息认证
3.4数字签字
数字签字是证明发送方发送过某一消息,接收方需要保存数字签字,本次的数字签字选取密钥长度为512bit,如图3.4.1
图3.4.1数字签字
明文:
2011416104luningxinanben111
SHA(M)=F559C53A9E843BCE7DC466D7F694BBC8B0507EB6
G=58A21E5D77C8560F1B7E4ADED71E4E16C550C9045E363E0F901F7E942915782717184214A57F7842B6F14B2167203B347B18C512B7879E41253B82B1B8B3AEF2
P=C40C70160C21ACB642E531615C22B8021A3632F1F5F2F26AC3E9A980AF77C9E39FA33D55E0DFD7F97F143C73064C0740280FBBE83D1F3969047D902539D93645
Q=BFDA9941EB6CB06F5DF645FE2BEC15CCFACF0BE1
r=62992640E4BC2A1D7F93022AA2EC2EA3686C0EF6
s=7E5F40718DFF0C028760FD2D99C69233F144332A
3.4 密文传输
传输的密文包括信息的密文、消息认证、数字签字和间隔符四部分。
信息认证前的分隔符为MD5;数字签字前的分隔符为DSS;数字签字的R值和S值前分别加分隔符R和S。
接收方将接收到的信息通过分隔符区分出信息的密文、消息认证和数字签字部分,做信息密文的MD5与接受到的MD5对比,确保信息的正确;再做MD5的数字签字得到的R和S值与接收到的R和S值比较,确保签字产生者的身份和证实被签消息的内容。
第4章 遇到的问题及解决方法
4.1 遇到的问题
本次实训遇到了一些问题,主要是在算法的理解上。
遇到的问题主要有:
1.算法步骤紊乱,先后顺序关系搞错。
2.在系统描述中,很难将自己所选择的保密通信系统流畅的设计出来,具体各个模块之间很难完美的链接。
3.最初没能理解整个设计的运行过程,导致部分功能不能实现。
4.读不懂公钥分配过程整体的过程描述图
4.2 解决方法
本次实训通过我们全班同学与老师交流帮助我们解决了实训中遇到的种种问题。
问题的解决方法:
1.认真阅读实验任务书及实验平台上的原理及步骤。
2.查看教科书明白各部分原理。
3.及时与同学和老师沟通,理清思路。
4.上网查找有关资料。
结 论
从老师提供的题目中我选择的保密通信系统课程设计构架由RC4、RSA加密算法;公钥分配的公钥证书;共享密钥策略的具有保密性的分配策略;消息认证的MD5认证;数字签字的DSS。本次课程设计加深了我对多种加密算法和加密过程的学习,尤其是RC4与RSA加密算法的学习和对相应软件的使用。虽然我知道自己选择的题目是比较有难度的,我也是想考验一下自己。
在这次课设中,使我感受最深的就是,虽然只有短短的几天时间,我却感触很深。学习并不是一件容易的事,要想学有所用,在学习中就不能有一点马虎的地方,对待学问就要一丝不苟,每个问题都要研究得明明白白,这样才能学以致用,活学活用。在学习上也要有坚强的毅力和信心。不能遇到挫折就轻言放弃,要努力去克服它,最后战胜它。遇到困难或不懂的地方要虚心向别人请教。遇到麻烦,要保持心态平静,静下心来才能尽快的想出办法。课设中,面对着复杂的通信过程,不免让人烦躁,但我们也深刻感受到烦躁解决不了问题只会带来更大的麻烦,要想做点什么,总要付出代价的。只要有一个数据输错结果就会出现错误。只要有一个步骤忽略,就会影响结果或浪费时间,所以我们要谨慎的对待每一步操作,不要只想着速度,而速度换来的往往是一个接一个的错误,最后不仅没有其他同学做的快,反而让自己更烦乱,自信心受到打击。
但当一个个问题和困难在研究和探讨后解决后,心理是很开心的。这次的任务的完成与老师,同学的帮助是离不开的。合作力量是不可估量的。
致谢
虽然安排课程设计时间是一周,但是由于期末了我们考试和复习占用了时间。所以真正用于可时间只有几天,但是我们还是充分利用这短短的几天时间从选题到设计方案到实施设计方案最后得出结论都是非常认真仔细对待。每一步的设计、分析、实施都要保证准确无误。但是在课程设计过程中由于经验的匮乏在这过程中遇到困难和问题是必然的的,同学的帮忙让我解决了不少问题但还有一些问题是我们解决不了的问题,这时候我们就去请教指导老师,老师也很忙一边监考一边帮我们解决了遇到的问题。这才能让我们的设计顺利进行。
过程中我也遇到不少问题,这时我们发现小组内的讨论的力量是巨大的,团队中互相协作和提出的有建设性的建议和意见都是非常有帮助的,让我少走了弯路节约的时间。当然也要学习很多已经忘记的知识,应为应用密码学课程是在上学期学的,很多知识要点都有点忘记了。所以这次课程设计是有难度和挑战性的,这种具有难度和困难的任务多提高我的实践和动手能力非常有用。我们也想抓住这次机会来提升自己,因为我们都很清楚现在的就业压力和市场对计算机专业人才的要求,我们都还很不成熟还需要经历系统的学习和实践来提高自己的实力。
经过这次密码学的课程设计,我们学到了很多关于密码学的知识。让我们深层次的了解我们生活中通信的原理,了解了保密信息系统通信的设计步骤和通信过程。
最后感谢学校给我们安排这次实训,最重要的是指导老师祝老师的耐心仔细的辅导让我的眼界开阔了很多,学到了很多书本上学不到的东西。同学的热心帮助也很让我感动。总之这次实训达到了预期的目标,从中也体会和学习到了很多。
参考文献
1] 杨波.《现代密码学》. 北京:清华大学出版社
[2] 张福泰.《密码学教程》. 武汉:武汉大学出版社
[3] 刘嘉勇. 《应用密码学》.北京:清华大学出版社
[4] 卢开澄.《计算机密码学》(第2 版). 北京:清华大学出版社
[5] 宋震.《密码学》. 中国水利水电出版社