第一篇:密码学总结
班级:信息111姓名:刘秉森学号:201112030119引言
1.1信息安全的重要性
信息安全技术作为一门综合学科,它涉及信息论、计算机科学和密码学等多方面知识,研究计算机系统和通信网络内信息的保护方法以实现系统内信息的安全、保密、真实和完整。21世纪是信息时代,信息的传递在人们日常生活中变得非常重要。如:电子商务,电子邮件,电子政务,银行证券等,无时无刻不在影响着人们的生活。这样信息安全问题也就成了最重要的问题之一。在信息交换中,“安全”是相对的,而“不安全”是绝对的,随着社会的发展和技术的进步,信息安全标准不断提升,因此信息安全问题永远是一个全新的问题。信息安全的核心是密码技术。如今,计算机网络环境下信息的保密性、完整性、可用性和抗抵赖性,都需要采用密码技术来解决。公钥密码在信息安全中担负起密钥协商、数字签名、消息认证等重要角色,已成为最核心的密码。
1.2密码学的研究对象及作用范畴
1.2.1密码学的研究对象
经过一学期的学习,我理解了学习密码学的学习目的,掌握了基本的密码学基础知识,了解了密码算法的多种分类和密码学研究的对象。密码学是主要研究通信安全和保密的学科,他包括两个分支:密码编码学和密码分析学。密码编码学主要研究对信息进行变换,以保护信息在传递过程中不被敌方窃取、解读和利用的方法,而密码分析学则于密码编码学相反,它主要研究如何分析和破译密码。这两者之间既相互对立又相互促进。对于一个密码系统,加密者对需要进行伪装机密信息(明文)进行伪装进行变换(加密变换),得到另外一种看起来似乎与原有信息不相关的表示(密文),如果合法者(接收者)获得了伪装后的信息,那么他可以通过事先约定的密钥,从得到的信息中分析得到原有的机密信息(解密变换)
1.2.2密码学的重要性
长期以来,密码技术总是和政治、经济、军事联系在一起。密码学的发展经历了从古典密码学到现代密码的演变。现代密码是以信息块为基本加密单元的密码。密码在当今社会生活中的作用可以说十分巨大,军事国防方面,现代金融、贸易、生产等无不在大规模使用密码.计算机网络的广泛应用,使人们对密码的依赖达到了新的高
度,在千百万台计算机联结成的因特网上,用户的识别基本上是靠密码.密码被破译就会产生危及安全的极严重的后果.计算机“黑客”的作为,即为密码破译的一个例子,连美国国防部的计算机都未能幸免,可见密码编制的难度了.在如今生物密码技术还不熟练的前提下,我们只有更加注意防范,以免信息泄露,受到伤害。密码学作为信息安全的关键技术,美、欧、亚各洲频繁举行密码学和信息安全学术会议。美国为了获得信息安全领域的控制权,从1997年开始,在世界范围内征集21世纪高级加密算法AES,以代替过时的DES。欧盟各国投资33亿欧元,计划建立自己的分组密码、序列密码、公钥密码等算法标准。我国的密码学研究起步晚,投入不足,总体来说与发达国家存在着较大差距。我国也已经意识到了密码学的重要性,加大了密码研究及产品开发的力度。一些关键密码技术已成为863计划等支持的重点。随着因特网的出现、发展、普及,未来的密码学也必定向这个方向发展。例如网络签名,网上银行的安全,个人邮件信息的保护,都很迫切需要密码学的支持,推动密码学的发展。当然,经过一学期的学习,在老师的指导和同学的帮助下,我理解了密码学的学习目的,掌握了密码学的基础知识,了解了密码学的多种算法。随着信息化和数字化社会的发展,人们对信息安全和保密的重要性认识不断提高。如网络银行、电子购物、电子邮件等正在悄悄地融入普通百姓的日常生活中,人们自然要关注其安全性如何。采用的加密算法有DES算法、IDEA算法、RSA算法等等。
1.3几种古典密码
1.3.1单表代换密码
古典密码是以字符为基本加密单元的密码,主要包括:移位密码、仿射密码、代替密码(单表代替密码、多表代替密码等)。除书本介绍的几种之外,还包括掩格密码、滚桶密码、棋盘密码等等。这些密码算法大都十分简单,非常容易被热破解,现在已经很少在实际应用中使用了。由于密码学是涉及数学、通讯、计算机等相关学科的知识,就我们现有的知识水平而言,只能初步研究古典密码学的基本原理和方法。但是对古典密码学的研究,对于理解、构造和分析现代实用的密码都是很有帮助。古典密码学主要有两大基本方法。第一种是置换密码(又称移位密码):明文的字母保持相同,但顺序被打乱了;第二种是代替密码:就是将明文的字符替换为密文中的另一种的字符,接收者只要对密文做反向替换就可以恢复出明文。置换密码的一个典型代表就是凯撒密码,这种加密方法就是将明文的字母按照字母顺序,往后依次递推相同的字母,就可以得到加密的密文,而解密的过程正好和加密的过程相反
1.3.2多表代换密码
多表代换密码是一系列(两个以上)代换表依次对明文消息的字母进行代换的加密的方法。知识章节小结
2.1公钥密码学
第四章介绍了公钥密码学,是全书的核心内容之一,为后文作了知识基础的铺垫,公钥密码学的核心基础就是数学领域里某些问题的正反对称性,比如说,整数分解问题(RSA),离散对数问题(DL),椭圆曲线问题(ECC),这些与数论有着千丝万缕的关系,本章简要的介绍了密码学中常用的一些数学基础知识,并未对数论做出详细的补充,仅仅与书中的相关内容加以阐述,分别包括欧几里得定理,欧拉函数,费马小定理和欧拉定理,其中对欧几里得定理部分有较为详细的推导和演算,其余均简单的给出结论和使用方法。
2.2信息安全和密码学相关知识的联系
在《密码学》一书中,介绍了信息安全和密码学相关知识,通过实现简单的古典密码算法,理解密码学的相关概念,如明文、密文、加密密钥、解密密钥、加密算法、解密算法等。其中讲解了单表代换密码的几种形式,如凯撒密码,移位变换,仿射变换等。关于分组密码体制,详细讲解了Feistel密码的加密与解密结构,DES,以及分组密码的几种运行模式。在当今社会,信息安全渗透到各个角落,小到个人银行的账户密码,大到承载用户珍贵资料的服务器,都离不开对信息的安全存储和传输,抽象到理论,需要对密码进行研究,当然会涉及到对算法的需求。这本书从整体上看,是对密码学中的各类加密与解密技术的分类介绍,其中着重讲解了加密与解密的具体算法及简单应用。引言是知识背景的介绍,讲述了数学知识的基础内容,模运算及具体运用(几种古典密码学),第五、六、七章对密钥分配与密钥管理,消息认证和杂凑算法,数字签字和密码协议进行了解读,尤其是 Diffie-Hellman密钥交换,数字签字的产生及执行等等,老师做了详细的讲解。
2.3密码学的应用
信息技术改变着人们的生活和工作方式,信息产业已成为新的经济增长点,信息的安全问题已成为社会各界关注的热点。由于军事、数学、通讯等相关技术的发展,特别是两次世界大战中对军事信息保密传递和破获敌方信息的需求,密码学得到了空前的发展,并广泛的用于军事情报部门的决策。像绝大多数领域的科学知识一样,密码学在完整的科学体系建立起来之前,古典密码学仅限于一些简单代替和置换算法,当然,这代替和置换如果经过了几次算法的加密就会一样复杂多变,而现代的算法经过科学体系的整理与发展,更加的完善一些复杂算法的应用和各种应用协议的产生。随着远程通信的发展,特别是计算机网络的发展,密码学面临着两大难题:1.可靠密钥的传输通道问题。2.如何提供与手写签名等效的认证体系。为了解决这些问题,文中提出了公钥密码算法和公钥分配算法,并且把公钥密码算法经过变换成为一个单向认证算法,来解决有效认证问题。现代密码学大致可分为数个领域。现代的研究主要在分组密码与流密码及其应用。分组密码在某种意义上是阿伯提的多字符加密法的现代化。分组密码取用铭文的一个区块和钥匙,输出相同大小的密文区块。由于信息通常比单一区块还长,因此有了各种方式将连续的区块编织在一起。DES和AES是美国联邦政府核定的分组密码标准(AES将取代DES)。DES依然很流行,被使用在非常多的应用上,从自动交易机、电子邮件到远端存取。也有许多其他的区块加密被发明、释出,品质与应用上各有不同,其中不乏被破解者。由此可见,密码学与信息安全、军事、数学、通讯等密切相关,密码技术总是和政治、经济、军事联系在一起。3 心得体会
光阴似箭,日月如梭,在刘益和老师的教导下,本学期,我们完成了密码学的相关学习。老师不仅给我们讲解了书本上的相关知识要点,还拷贝了一些关于密码学的学习资料给我们,增强我们对信息安全的理解和学习密码学知识的兴趣。同时,老师还教育我们,课上认真听讲,积极发言,课后要查找资料,启发思维。这些对我们学习密码学都有一定的好处。密码编码学主要研究对信息进行变换,以保护信息在传递过程中不被敌方窃取、解读和利用的方法。因此,我对编码密码学有浓厚的兴趣,除了密码分析学之外,密码编码学主要致力于信息加密、信息认证、数字签名和密钥管理方面的研究。信息加密的目的在于将可读信息转变为无法识别的内容,使得截获这些信息的人无法阅读,同时信息的接收人能够验证接收到的信息是否被敌方篡改或替换过;数字签名就是信息的接收人能够确定接收到的信息是否确实是由所希望的发信人发出的;密钥管理是信息加密中最难的部分,因为信息加密的安全性在于密钥。数字签名大致包含两个算法:一个是签署,使用私密密钥处理信息或信息的杂凑值而产生签章;另一个是验证,使用公开钥匙验证签章的真实性。我对Diffie,Hellman,RSA算法感兴趣,RSA源于整数因子分解问题;DSA源于离散对数问题。近年发展快速的椭圆曲线密码学则基于和椭圆曲线相关的数学难题,与离散对数相当。密码学的应用更是广泛渗透到各个领域,了解相关的密码学基础知识,学习密码学的相关技术,了解信息的安全性和保密性,和当前所存在的缺陷。兴趣是最
好的老师,对于信息加密、信息认证、数字签名和密钥管理方面的研究,可以着眼于自己感兴趣的部分,可以加以学习,多多查找资料。结论
书山有路勤为径,学海无涯苦作舟。对于知识,我们要有一种正确的态度,学会探究,学以致用。不要在具体运用知识时才发现自己对知识的掌握还不够好,不能很好地解决问题。作为学生,应该把握时间,抓住机遇,做一个更好地自己。
第二篇:现代密码学考试总结
密码主要功能:
1.机密性:指保证信息不泄露给非授权的用户或实体,确保存储的信息和传输的信息仅能被授权的各方得到,而非授权用户即使得到信息也无法知晓信息内容,不能使用。2.完整性:是指信息未经授权不能进行改变的特征,维护信息的一致性,即信息在生成、传输、存储和使用过程中不应发生人为或非人为的非授权篡改(插入、替换、删除、重排序等),如果发生,能够及时发现。
3.认证性:是指确保一个信息的来源或源本身被正确地标识,同时确保该标识的真实性,分为实体认证和消息认证。
消息认证:向接收方保证消息确实来自于它所宣称的源;
实体认证:参与信息处理的实体是可信的,即每个实体的确是它所宣称的那个实体,使得任何其它实体不能假冒这个实体。
4.不可否认性:是防止发送方或接收方抵赖所传输的信息,要求无论发送方还是接收方都不能抵赖所进行的行为。因此,当发送一个信息时,接收方能证实该信息的确是由所宣称的发送方发来的;当接收方收到一个信息时,发送方能够证实该信息的确送到了指定的接收方。
信息安全:指信息网络的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露、否认等,系统连续可靠正常地运行,信息服务不中断。信息安全的理论基础是密码学,根本解决,密码学理论
对称密码技术——分组密码和序列密码——机密性; 消息认证码——完整性,认证性;
数字签名技术——完整性,认证性,不可否认性;
1949年Shannon发表题为《保密系统的通信理论》 1976年后,美国数据加密标准(DES)的公布使密码学的研究公开,密码学得到了迅速发展。1976年,Diffe和Hellman发表了《密码学的新方向》,提出了一种新的密码设计思想,从而开创了公钥密码学的新纪元。
置换密码
置换密码的特点是保持明文的所有字符不变,只是利用置换打乱了明文字符的位置和次序。列置换密码和周期置换密码
使用密码设备必备四要素:安全、性能、成本、方便。
密码体制的基本要求:
1.密码体制既易于实现又便于使用,主要是指加密函数和解密函数都可以高效地计算。2.密码体制的安全性是依赖密钥的安全性,密码算法是公开的。
3.密码算法安全强度高,也就是说,密码分析者除了穷举搜索攻击外再找不到更好的攻击方法。
4.密钥空间应足够大,使得试图通过穷举密钥空间进行搜索的方式在计算上不可行。
密码算法公开的意义:
有利于增强密码算法的安全性; 有利于密码技术的推广应用; 有利于增加用户使用的信心; 有利于密码技术的发展。
熵的性质:H(X,Y)=H(Y)+H(X|Y)=H(X)+H(Y|X)H(K|C)=H(K)+H(P)-H(C)
密码攻击类型
惟密文攻击(Ciphertext Only Attack)(仅仅搭线窃听)密码分析者除了拥有截获的密文外(密码算法是公开的,以下同),没有其它可以利用的信息。
已知明文攻击(Known Plaintext Attack)(有内奸)密码分析者不仅掌握了相当数量的密文,还有一些已知的明-密文对可供利用。选择明文攻击(Chosen Plaintext Attack)(暂时控制加密机)密码分析者不仅能够获得一定数量的明-密文对,还
可以选择任何明文并在使用同一未知密钥的情况下能得到相应的密文。选择密文攻击(Chosen Ciphertext Attack)(暂时控制解密机)密码分析者能选择不同被加密的密文,并还可得到对应的明文,密码分析者的任务是推出密钥及其它密文对应的明文。
选择文本攻击(Chosen Text Attack)(暂时控制加密机和解密机)它是选择明文攻击和选择密文攻击的组合,即密码分析者在掌握密码算法的前提下,不仅能够选择明文并得到对应的密文,而且还能选择密文得到对应的明文。
攻击密码体制的常用方法 穷举攻击 统计分析攻击 数学分析攻击
密码体制安全性:无条件安全性,计算安全性,可证明安全性
分组密码的要求: 分组长度要足够大 密钥量要足够大 密码变换足够复杂 加密和解密运算简单 无数据扩展或压缩
分组密码的设计思想(扩散和混乱)扩散:是指要将算法设计成明文每一比特的变化尽可能多地影响到输出密文序列的变化,以便隐蔽明文的统计特性。形象地称为雪崩效应。扩散的另一层意思是密钥每一位的影响尽可能迅速地扩展到较多的密文比特中去。
混乱:指在加解密变换过程中明文、密钥以及密文之间的关系尽可能地复杂化,以防密码破译者采用解析法(即通过建立并求解一些方程)进行破译攻击。分组密码算法应有复杂的非线性因素。轮函数基本准则:非线性,可逆性,雪崩效应
DES 分组加密算法:明文和密文为64位分组长度。密钥长度:56位 采用混乱和扩散的组合,每个组合先代换后置换,共16轮。互补性会使DES在选择明文攻击下所需的工作量减半。
如果给定初始密钥k,经子密钥产生器产生的各个子密钥都相同,即有k1=k2=…=k16,则称给定的初始密钥k为弱密钥。
若k为弱密钥,则对任意的64bit信息有:Ek(Ek(m))=m和Dk(Dk(m))=m。
若给定初始密钥k,产生的16个子密钥只有两种,且每种都出现8次,则称k为半弱密钥。半弱密钥的特点是成对出现,且具有下述性质:若k1和k2为一对半弱密钥,m为明文组,则有:Ek2(Ek1(m))=Ek1(Ek2(m))=m。
差分分析:是分析一对给定明文的异或(对应位不同的个数称为差分)与对应密文对的异或之间的统计相关性。
3DES特点:
优点:1.密钥长度增加到112位或168位,克服了DES面临的穷举攻击。2.相对于DES,增强了抗差分分析和线性分析等的能力。
3.由于DES已经大规模使用,升级到3DES比更新新算法成本小得多。4.DES比其它任何加密算法受到的分析时间都长的多,相应地,3DES抗 分析能力更强。
不足:1.3DES处理速度较慢。
2.虽然密钥长度增加了,但明文分组长度没变,与密钥长度的增长不匹 配。
AES分组长度、密钥长度、轮数的关系: 分组长度:128位
密钥长度,轮数:128,10;192,12;256,14 每轮由四个阶段组成:字节代换、行位移、列混淆、轮密钥加。DES是面向比特的运算,AES是面向字节的运算。
二重DES并不像人们相像那样可提高密钥长度到112比特,而相当57比特。
分组密码的操作模式 ECB:
模式操作简单,主要用于内容较短且随机的报文的加密传递; 相同明文(在相同密钥下)得出相同的密文,即明文中的
重复内容可能将在密文中表现出来,易实现统计分析攻击、分组重放攻击和代换攻击; 链接依赖性:各组的加密都独立于其它分组,可实现并行处理;
错误传播:单个密文分组中有一个或多个比特错误只会影响该分组的解密结果。
CBC(密文分组和明文分组异或得到下一个密文分组)一种反馈机制在分组密码中的应用,每个密文分组不仅依赖于产生它的明文分组,还依赖于它前面的所有分组; 相同的明文,即使相同的密钥下也会得到不同的密文分组,隐藏了明文的统计特性; 链接依赖性:对于一个正确密文分组的正确解密要求它之前的那个密文分组也正确,不能实现并行处理;
错误传播:密文分组中的一个单比特错误会影响到本组和其后分组的解密,错误传播为两组;
初始化向量IV不需要保密,它可以明文形式与密文一起传送。
CTR: 效率高:能够并行处理多块明(密)文,可用来提供像流水线、每个时钟周期的多指令分派等并行特征;
预处理:基本加密算法的执行并不依靠明文或密文的输入,可预先处理,当给出明文或密文时,所需的计算仅是进行一系列的异或运算;
随机访问:密文的第i个明文组能够用一种随机访问的方式处理;
简单性:只要求实现加密算法而不要求实现解密算法,像AES这类加解密算法不同就更能体现CTR的简单性。
CFB: 消息被看作bit流,不需要整个数据分组在接受完后才能进 行加解密;
可用于自同步序列密码; 具有CBC模式的优点;
对信道错误较敏感且会造成错误传播;
数据加解密的速率降低,其数据率不会太高。
OFB: OFB模式是CFB模式的一种改进,克服由错误传播带来的问题,但对密文被篡改难于进行检测;
OFB模式不具有自同步能力,要求系统保持严格的同步,否则难于解密; 初始向量IV无需保密,但各条消息必须选用不同的IV。
总结:
ECB是最快、最简单的分组密码模式,但它的安全性最弱,一般不推荐使用ECB加密消息,但如果是加密随机数据,如密钥,ECB则是最好的选择。
CBC适合文件加密,而且有少量错误时不会造成同步失败,是软件加密的最好选择。CTR结合ECB和CBC的优点,最近为人们所重视,在ATM网络和IPSec中起了重要作用。CFB通常是加密字符序列所选择的模式,它也能容忍少量错误扩展,且具有同步恢复功能。OFB是在极易出错的环境中选用的模式,但需有高速同步机制。
序列密码属于对称密码体制,又称为流密码。特点:
1.加解密运算只是简单的模二加(异或)运算。2.密码安全强度主要依赖密钥序列的安全性。密钥序列产生器(KG)基本要求:
种子密钥K的长度足够长,一般应在128位以上(抵御穷举攻击); 密钥序列产生器KG生成的密钥序列{ki}具极大周期;
密钥序列{ki}具有均匀的n-元分布,即在一个周期内,某特定形式的n-长bit串与其求反,两者出现的频数大抵相当;
由密钥序列{ki}提取关于种子密钥K的信息在计算上不可行;
雪崩效应。即种子密钥K任一位的改变要引起密钥序列{ki}在全貌上的变化;
密钥序列{ki}不可预测的。密文及相应的明文的部分信息,不能确定整个密钥序列{ki}。只要选择合适的反馈函数才可使序列的周期达到最大值2n-1,周期达到最大值的序列称为m序列。
m-序列特性:0,1平衡性:在一个周期内,0、1出现的次数分别为2n-1-1和2n-1。游程特性:
在一个周期内,总游程数为2n-1;对1≤i≤n-2,长为i的游程有2n-i-1个,且0、1游程各半;长为n-1的0游程一个,长为n的1游程一个。
非线性序列:为了使密钥流生成器输出的二元序列尽可能随机,应保证其周期尽可能大、线性复杂度和不可预测性尽可能高。
RC4是RSA数据安全公司开发的可变密钥长度的序列密码,是世界上使用最广泛的序列密码之一.为了保证安全强度,目前的RC4至少使用128位种子密钥。序列密码特点:
安全强度取决于密钥序列的随机性;
线性反馈移位寄存器理论上能够产生周期为2n-1的伪随机序列,有较理想的数学分析; 为了使密钥流尽可能复杂,其周期尽可能长,复杂度和不可预测尽可能高,常使用多个LFSR构造非线性组合系统;
在某些情况下,譬如缓冲不足或必须对收到字符进行逐一处理时,序列密码就显得更加必要和恰当。
在硬件实施上,不需要有很复杂的硬件电路,实时性好,加解密速度快,序列密码比分组密码更有优势。
公钥密码之前:都是基于代换和换位这两个基本方法,建立在字符或位方式的操作上。公钥密码算法是建立在数学函数基础上的,而不是建立在字符或位方式的操作上的,是以非对称的形式使用加密密钥和解密密钥,这两个密钥的使用对密钥管理、认证等都有着深刻的实际意义。
对称密码缺陷:秘钥分配问题,秘钥管理问题,数字签名问题; 背包算法是第一个公开秘钥算法。
RSA: RSA虽稍后于MH背包公钥系统,但它是到目前为止应用最广的一种公钥密码。RSA的理论基础是数论的欧拉定理,它的安全性依赖于大整数的素因子分解的困难性。
欧拉定理:若整数a 和n 互素,则a≡ 1(mod n)
φ(n)RSA秘钥长度1024位。
ElGamal公钥密码基于有限域上离散对数问题的公钥密码体制。基于有限域的离散对数公钥密码又称ElGamal(厄格玛尔)算法。ElGamal算法的安全性依赖于计算有限域上的离散对数。ElGamal算法的离散对数问题等同RSA的大数分解问题。ElGamal算法既可用于数字签名又可用于加密,但更多地应 用在数字签名中。
目前密钥长度1024位是安全的。
ECC安全性能更高(160位等同RSA的1024位)公钥密码学解决了秘钥分发和不可否认问题。公钥证书较好地解决了公钥的真实性问题。
IBE(基于身份加密)基于身份的密码系统中,用户的公钥是一些公开的可以唯一确定用户身份的信息,一般这些信息称为用户的身份(ID)。在实际应用中,用户的身份可以是姓名、电话号码、身份证号码、IP 地址、电子邮件地址等作为公钥。用户的私钥通过一个被称作私钥生成器PKG(Private Key Generator)的可信任第三方进行计算得到。在这个系统中,用户的公钥是一些公开的身份信息,其他用户不需要在数据库中查找用户的公钥,也不需要对公钥的真实性进行检验。优点: 公钥的真实性容易实现,大大简化了公钥的管理。
不足: 身份确认本来就是一件复杂的事情,尤其用户数量很大时难以保证。也就是说,IBE适合应用于用户群小的场合。可信第三方如何安全地将用户的私钥送到用户的手中。
用户私钥由可信第三方生成和掌握,不具备唯一性,实现不可否认性时易引发争议。公钥密码的优点(与对称密码相比)1.密钥分发简单;
2.需秘密保存的密钥量减少; 3.可以实现数字签名和认证的功能。公钥密码的不足(与对称密码相比)公钥密码算法比对称密码算法慢;
公钥密码算法提供更多的信息对算法进行攻击,如公钥密码算法对选择明文攻击是脆弱的,尤其明文集比较小时; 有数据扩展;
公钥密码算法一般是建立在对一个特定的数学难题求解上,往往这种困难性只是一种设想。
哈希函数:
单向性,输出长度固定,:数据指纹,实现数据完整性和数字签名。性质:
输入:消息是任意有限长度。输出:哈希值是固定长度。
容易计算:对于任意给定的消息,容易计算其哈希值。(正向容易)
单向性:对于给定的哈希值h,要找到M使得H(M)=h在计算上是不可行的。(逆向不可行)
安全性:
抗弱碰撞性:对于给定的消息M1,要发现另一个消息M2,满足H(M1)=H(M2)在计算上是不可行的。抗强碰撞性:找任意一对不同的消息M1,M2,使H(M1)=H(M2)在计算上是不可行的。随机性:当一个输入位发生变化时,输出位将发生很大变化。(雪崩效应)。
MD: MD2(1989)、MD4(1990)和MD5(1991)都产生一个128位的信息摘要。SHA-1接受任何有限长度的输入消息,并产生长度为160比特的Hash值。
消息验证的目的:
验证信息的来源是真实的,而不是冒充的,此为消息源认证。验证消息的完整性,即验证信息在传送或存储过程中是否被修改。
哈希函数分类:
改动检测码MDC:不带密钥的哈希函数,主要用于消息完整性。
消息认证码MAC:带密钥的哈希函数,主要用于消息源认证和消息完整性。
HMAC:算法公式 : HMAC(K,M)=H(K⊕opad∣H(K⊕ipad∣M))K—代表认证密码
HMAC主要应用在身份验证中,它的使用方法是这样的:(1)客户端发出登录请求(假设是浏览器的GET请求)(2)服务器返回一个随机值,并在会话中记录这个随机值
(3)客户端将该随机值作为密钥,用户密码进行HMAC运算,然后提交给服务器
(4)服务器读取用户数据库中的用户密码和步骤2中发送的随机值做与客户端一样的HMAC运算,然后与用户发送的结果比较,如果结果一致则验证用户合法
在这个过程中,可能遭到安全攻击的是服务器发送的随机值和用户发送的HMAC结果,而对于截获了这两个值的黑客而言这两个值是没有意义的,绝无获取用户密码的可能性,随机值的引入使HMAC只在当前会话中有效,大大增强了安全性和实用性。
数字签名与消息认证不同:
数字签名也是一种消息认证技术,它属于非对称密码体制,消息认证码属于对称密码体制,所以消息认证码的处理速度比数字签名快得多。但是,消息认证码无法实现不可否认性。数字签名的安全要求
签名是可以被验证的接受者能够核实签名者对消息的签名。签名是不可伪造的
除了签名者,任何人(包括接受者)不能伪造消息的签名。签名是不可重用的
同一消息不同时刻其签名是有区别的。签名是不可抵赖的 签名者事后不能抵赖对消息的签名,出现争议时,第三方可解决争端。
数字签名的组成:明文空间,密文空间,秘钥空间,签名算法,验证算法 数字签名常见的实现算法
基于RSA的签名算法 基于离散对数的签名算法 基于ECC的签名算法
RSA数字签名算法(初始化)1.选取两个大(满足安全要求)素数p和q,两个数长度接近且相差很大,强素数。2.计算n=p*q, φ(n)=(p-1)(q-1)3.随机选取整数e(1 1.利用一个安全的Hash函数h来产生消息摘要h(m)。 d2.用签名算法计算签名s=Signk(m)≡h(m)mod n。验证算法 1.首先利用一个安全的Hash函数h计算消息摘要h(m)。 e2.用检验等式h(m)mod n≡smod n 是否成立,若相等签名有效,否则,签名无效。假如直接对消息进行私钥加密,攻击者获得两个签名后可以伪造m1*m2的有效签名s1*s2(同态性) Elgamal签名算法(举例)初始化: 假设A选取素数p = 19,Zp* 的生成元g = 2。选取私钥x = 15,计算y ≡gx mod p ≡ 215mod 19 =12,则A的公钥是(p = 19, g = 2, y = 12)。签名过程: 设消息m的Hash值h(m)= 16,则A选取随机数k = 11,计算r ≡ gk mod p≡ 211 mod 19 ≡15,k-1 mod(p-1)= 5。最后计算签名s ≡ [h(m)-xr]k-1 mod(p-1)≡ 5(16-15×15)mod 18 = 17。得到A对m的签名为(15, 17)。验证过程: 接受者B得到签名(15 , 17)后计算yrrs mod p ≡ 12151517mod 19 = 5,gh(m)mod p ≡ 216 mod 19 = 5。验证等式yrrs ≡ gh(m)(mod p)相等,因此B接受签名。Elgamal签名算法(安全性)不能泄露随机数k。 不能使用相同的k对两个不同消息进行签名。签名者多次签名时所选取多个k之间无关联。 整个密码系统的安全性并不取决对密码算法的保密,而是由密钥的保密性决定的。解决的核心问题是密钥管理问题,而不是密码算法问题。密钥的管理水平直接决定了密码的应用水平。密钥管理就是在授权各方之间实现密钥关系的建立和维护的一整套技术和程序。密钥管理括密钥的生成、存储、建立(分配和协商)、使用、备份/恢复、更新、撤销/存档/销毁等。 典型的密钥层次结构 主密钥:对应于层次化密钥结构中的最高层次,它是对密钥加密密钥进行加密的密钥,主密钥应受到严格的保护。密钥加密密钥:一般是用来对传输的会话密钥进行加密时采用的密钥。密钥加密密钥所保护的对象是实际用来保护通信或文件数据的会话密钥。 会话密钥:在一次通信或数据交换的任务中,用户之间所使用的密钥,是由通信用户之间进行协商得到的。它一般是动态地、仅在需要进行数据加密时产生,并在任务完成后立即进行销毁,也称为数据加密密钥。 密钥的生成一般首先通过密钥生成器借助于某种随机源产生具有较好统计分析特性的序列,以保障生成密钥的随机性和不可预测性.密钥存储目的是确保密钥的秘密性、真实性以及完整性。 密钥更新情况:密钥有效期结束;密钥的安全受到威胁;通信成员中提出更新密钥。 对称密码其实就一个密钥(即已知一个密钥可推出另一个密钥),因此,密钥的秘密性、真实性、完整性都必须保护。 公钥的秘密性不用确保,但其真实性、完整性都必须严格保护。公钥密码体制的私钥的秘密性、真实性、完整性都必须保护。 中间人攻击: 1.C将公共目录中B的公钥替换成自己的公钥。 2.A将他认为的B的公钥提取出来,而实际上那是C的公钥。3.C现在可以读取A送给B的加密信息。4.C将A的信息解密并阅读,然后他又用真实的B的公钥加密该信息并将加密结果发送给B。数字证书实现公钥的真实性。 数字证书也称为公钥证书,是将证书持有者的身份信息和其所拥有的公钥进行绑定的文件。证书用途: 签名证书:签名证书主要用于对用户信息进行签名,以保证信息的不可否认性。(私钥不需备份) 加密证书:加密证书主要用于对用户传送信息的密钥进行加密,以保证信息的保密性。(私钥需要备份) CRL:证书撤销列表 在线证书状态协议OCSP:其目的为了克服基于CRL的撤销方案的局限性,为证书状态查询提供即时的最新响应。OCSP使用证书序列号、CA名称和公开密钥的散列值作为关键字查询目标的证书。 为防止攻击者得到密钥,必须时常更新密钥,密码系统的强度依赖于密钥分配技术。 密钥分配中心模式(KDC生成回话密钥): 前提条件:密钥分配中心与每个用户之间有共享密钥。 1.A向密钥分配中心KDC(Key Distribute Center)发出会话密钥请求。请求内容包括A与B的身份以及一次性随机数N1。 2.KDC为A的请求发出应答。应答内容包括:一次性会话密钥Ks、A的请求、用B与KDC的共享密钥加密一次性会话密钥Ks和A的身份,其中应答信息是用A与KDC的共享密钥加密。 3.A存储会话密钥Ks,并向B转发用B与KDC的共享密钥加密的一次性会话密钥Ks和A的身份。 4.B使用会话密钥Ks 加密另一个一次性随机数N2 ,并将加密结果发送给A.5.A使用会话密钥Ks 加密f(N2),并将加密结果发送给B.基于公钥密钥分配(会话密钥): 前提条件:通信双方在CA中拥有自己的证书。 1.A向B发出会话密钥请求,请求内容包括A的身份、一次性随机数N1 以及利用B的公钥加密一次性会话密钥Ks。 2.B使用会话密钥Ks 加密一次性随机数N1 ,并将加密结果发送给A。3.A使用会话密钥Ks加密f(N1),并将加密结果发送给B。 密钥协商是保密通信双方(或更多方)通过公开信道的通信来共同形成秘密密钥的过程。密钥协商的结果是:参与协商的双方(或更多方)都将得到相同的密钥,同时,所得到的密钥对于其他任何方都是不可知的。 密码算法是密码协议的最基本单元,主要包含四个方面: 公钥密码算法,在分布式环境中实现高效密钥分发和认证; 对称密码算法,使用高效手段实现信息的保密性; 散列函数,实现协议中消息的完整性; 随机数生成器,为每个参加者提供随机数,实现唯一性和不可预测性。 零知识证明实际上一种密码协议,该协议的一方称为证明者(Prover),通常用P 表示,协议的另一方是验证者(Verifier),一般用V表示。零知识证明是指P试图使V相信某个论断是正确的,但却不向V提供任何有用的信息,或者说在P论证的过程中V得不到任何有用的信息。也就是说,零知识证明除了证明证明者论断的正确性外不泄露任何其它信息或知识,或者说零知识证明是那种除了论证论题的有效性外不产生任何知识的证明。 盲签名:签名要求签名者能够在不知道被签名文件内容的情况下对消息进行签名。另外,即使签名者在以后看到了被签名的消息及其签名,签名者也不能判断出这个签名是他何时为谁生成的。(隐私性,不可追踪性) SSL:SSL(Secure Socket Layer,即安全套接层)协议是网景(Netscape)公司于1994年最先提出来的。SSL被设计成使用TCP来提供一种可靠的端到端的安全服务,是一种基于会话的加密和认证的Internet协议,它在两实体---客户和服务器之间提供了一个安全的管道。为了防止客户/服务器应用中的监听、篡改、消息伪造等,SSL提供了服务器认证和可选的客户端认证。通过在两个实体间建立一个共享的秘密,SSL提供保密性。提供的主要服务: 加密处理,加密数据以防止数据中途被窃取; 维护数据的完整性,确保数据在传输过程中不被改变。 实体认证服务,认证客户端(可选)和服务器,确保数据发送到正确的客户端(可选)和服务器。 PGP是一个基于RSA公匙加密体系的邮件加密软件,可以用它对邮件保密以防止非授权者阅读,还能对邮件加上数字签名从而使收信人可以确信邮件的发送者。它可以提供一种安全的通讯方式,事先并不需要任何保密的渠道用来传递密匙,并采用了一种RSA和传统加密的混合算法,用于数字签名的邮件利用加密前压缩、哈希算法等技术,功能强大有很快的速度。 “密码学”学习心得 密码可破!人类的智慧不可能造成这样的密码,使得人类本身的才智即使运用得当也无法破开它! ———爱伦·坡所 在我们的生活中有许多的秘密和隐私,我们不想让其他人知道,更不想让他们去广泛传播或者使用。对于我们来说,这些私密是至关重要的,它记载了我们个人的重要信息,其他人不需要知道,也没有必要知道。为了防止秘密泄露,我们当然就会设置密码,保护我们的信息安全。更有甚者去设置密保,以防密码丢失后能够及时找回。密码”一词对人们来说并不陌生,人们可以举出许多有关使用密码的例子。现代的密码已经比古代有了长远的发展,并逐渐形成一门科学,吸引着越来越多的人们为之奋斗。 一、密码学的定义 密码学是研究信息加密、解密和破密的科学,含密码编码学和密码分析学。密码技术是信息安全的核心技术。随着现代计算机技术的飞速发展,密码技术正在不断向更多其他领域渗透。它是集数学、计算机科学、电子与通信等诸多学科于一身的交叉学科。使用密码技术不仅可以保证信息的机密性,而且可以保证信息的完整性和确证性,防止信息被篡改、伪造和假冒。目前密码的核心课题主要是在结合具体的网络环境、提高运算效率的基础上,针对各种主动攻击行为,研究各种可证安全体制。 密码学的加密技术使得即使敏感信息被窃取,窃取者也无法获取信息的内容;认证性可以实体身份的验证。以上思想是密码技术在信息安全方面所起作用的具体表现。密码学是保障信息安全的核心;密码技术是保护信息安全的主要手段。本文主要讲述了密码的基本原理,设计思路,分析方法以及密码学的最新研究进展等内容 密码学主要包括两个分支,即密码编码学和密码分析学。密码编码学对信息进行编码以实现信息隐藏,其主要目的是寻求保护信息保密性和认证性的方法;密码分析学是研究分析破译密码的学科,其主要目的是研究加密消息的破译和消息的伪造。密码技术的基本思想是对消息做秘密变换,变换的算法即称为密码算法。密码编码学主要研究对信息进行变换,以保护信息在传递过程中不被敌方窃取、解读和利用的方法,而密码分析学则于密码编码学相反,它主要研究如何分析和破译密码。这两者之间既相互对立又相互促进。密码的基本思想是对机密信息进行伪装。 二、密码学的发展历程 密码学的发展历程大致经历了三个阶段:古代加密方法、古典密码和近代密码。 1.古代加密方法(手工阶段) 源于应用的无穷需求总是推动技术发明和进步的直接动力。存于石刻或史书中的记载表明,许多古代文明,包括埃及人、希伯来人、亚述人都在实践中逐步发明了密码系统。从某种意义上说,战争是科学技术进步的催化剂。人类自从有了战争,就面临着通信安全的需求,密码技术源远流长。 古代加密方法大约起源于公元前440年出现在古希腊战争中的隐写术。当时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上,待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来,从而实现这两个部落之间的秘密通信。 我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载,一般人只注意诗或画的表面意境,而不会去注意或很难发现隐藏其中的“话外之音”。 比如:我画蓝江水悠悠,爱晚亭枫叶愁。秋月溶溶照佛寺,香烟袅袅绕轻楼 2.古典密码(机械阶段) 古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。3.近代密码(计算机阶段) 密码形成一门新的学科是在20世纪70年代,这是受计算机科学蓬勃发展刺激和推动的结果。快速电子计算机和现代数学方法一方面为加密技术提供了新的概念和工具,另一方面也给破译者提供了有力武器。计算机和电子学时代的到来给密码设计者带来了前所未有的自由,他们可以轻易地摆脱原先用铅笔和纸进行手工设计时易犯的错误,也不用再面对用电子机械方式实现的密码机的高额费用。总之,利用电子计算机可以设计出更为复杂的密码系统 20世纪中叶以前, 由于条件所限, 密码技术的保密性基于加密算法的秘密, 因此称之为古典密码体制或受限的密码算法。尽管古典密码体制受到当时历史条件的限制, 没有涉及非常高深或者复杂的理论, 但在其漫长的发展演化过程中, 已经充分表现出了现代密码学的两大基本思想一“ 代替” 和“换位” , 而且还将数学的方法引人到密码分析和研究中。这为后来密码学成为系统的学科以及相关学科的发展莫定了坚实的基础。 密码学真正成为科学是在19世纪末和20世纪初期,由于军事、数学、通讯等相关技术的发展,特别是两次世界大战中对军事信息保密传递和破获敌方信息的需求,密码学得到了空前的发展,并广泛的用于军事情报部门的决策.小结 从以上密码学的发展历史可以看出,整个密码学的发展过程是从简单到复杂,从不完美到完美,从具有单一功能到具有多种功能的过程。这是符合历史发展规律和人类对客观事物的认识规律的。而且也可以看出密码学的发展受到其它学科如数学、计算机科学的极大促动。这说明,在科学的发展进程中,各个学科互相推动,互相联系,乃至互相渗透,其结果是不断涌现出新的交叉学科,从而达到人类对事物更深的认识。从密码学的发展中还可以看出,任何一门学科如果具有广泛的应用基础,那么这个学科就能从中汲取发展动力,就会有进一步发展的基础。 我们这个社会已进入了信息时代,随着数据库技术和计算机网络应用的不断深入,信息的安全传输也有着广阔的应用前景。虽然密码可以追溯到古代,但密码作为一门学科还非常年轻,还有着更进一步的发展要求。 三、密码学的基础知识 密码学(Cryptogra phy),现代准确的术语为“密码编制学”,简称“编密学”,与之相对的专门研究如何破解密码的学问称之为“密码分析学”。密码学是主要研究通信安全和保密的学科,密码编码学主要研究对信息进行变换,以保护信息在传递过程中不被敌方窃取、解读和利用的方法,而密码分析学则于密码编码学相反,它主要研究如何分析和破译密码。这两者之间既相互对立又相互促进。密码的基本思想是对机密信息进行伪装。一个密码系统完成如下伪装:加密者对需要进行伪装机密信息(明文)进行伪装进行变换(加密变换),得到另外一种看起来似乎与原有信息不相关的表示(密文),如果合法者(接收者)获得了伪装后的信息,那么他可以通过事先约定的密钥,从得到的信息中分析得到原有的机密信息(解密变换),而如果不合法的用户(密码分析者)试图从这种伪装后信息中分析得到原有的机密信息,那么,要么这种分析过程根本是不可能的,要么代价过于巨大,以至于无法进行。 在计算机出现以前,密码学的算法主要是通过字符之间代替或易位实现的,我们称这些密码体制为古典密码。其中包括:易位密码、代替密码(单表代替密码、多表代替密码等)。这些密码算法大都十分简单,现在已经很少在实际应用中使用了。由于密码学是涉及数学、通讯、计算机等相关学科的知识,就我们现有的知识水平而言,只能初步研究古典密码学的基本原理和方法。但是对古典密码学的研究,对于理解、构造和分析现代实用的密码都是很有帮助。以下介绍我们所研究的古典密码学。 小结 像绝大多数领域的科学知识一样,密码学在完整的科学体系建立起来之前,古典密码学仅限于一些简单代替和置换算法,当然,这代替和置换如果经过了几次算法的加密就会一样复杂多变,而现代的算法经过科学体系的整理与发展,更加的完善一些复杂算法的应用和各种应用协议的产生。而由于网络的出现以及发展,未来的密码学也必定向这个方向发展。例如网络签名,网上银行的安全,个人邮件信息的保护,都很迫切需要密码学的支持,推动密码学的发展.四、密码学的作用 现代密码学研究信息从发端到收端的安全传输和安全存储,是研究“知己知彼”的一门科学。其核心是密码编码学和密码分析学。前者致力于建立难以被敌方或对手攻破的安全密码体制,即“知己”;后者则力图破译敌方或对手已有的密码体制,即“知彼”。人类有记载的通信密码始于公元前400年。古希腊人是置换密码的发明者。1881年世界上的第一个电话保密专利出现。电报、无线电的发明使密码学成为通信领域中不可回避的研究课题。 1.用来加密保护信息 利用密码变换将明文变换成只有合法者才能恢复的密文,这是密码的最基本功能。信息的加密保护包括传输信息和存储信息两方面,后者解决起来难度更大。 2.采用数字证书来进行身份鉴别 数字证书就是网络通讯中标志通讯各方身份信息的一系列数据,是网络正常运行所必须的。现在一般采用交互式询问回答,在询问和回答过程中采用密码加密,特别是采用密码技术的带CPU的职能卡,安全性好,在电子商务系统中,所有参与活动的实体都需要用数字证书来表明自己的身份,数字证书从某种角度上说就是“电子身份证”。3.数字指纹 在数字签名中有重要作用的“报文摘要”算法,即生成报文“数字指纹”的方法,近年来备受关注,构成了现代密码学的一个重要侧面。4.采用密码技术对发送信息进行验证 为防止传输和存储的消息被有意或无意的篡改,采用密码技术对消息进行运算生成消息的验证码,附在消息之后发出或信息一起存储,对信息进行验证,它在票房防伪中有重要作用。5.利用数字签名来完成最终协议 在信息时代,电子数据的收发使我们过去所依赖的个人特征都将被数字代替,数字签名的作用有两点,一是因为自己的签名难以否认,从而确定了文件已签署这一事实;二是因为签名不易仿冒,从而确定了文件时真的这一事实。 五、密码学的前景 量子密码学 量子密码体系采用量子态作为信息载体,经由量子通道在合法的用户之间传送密钥。量子密码的安全性由量子力学原理所保证。所谓绝对安全性是指:即使在窃听者可能拥有极高的智商、可能采用最高明的窃听措施、可能使用最先进的测量手段,密钥的传送仍然是安全的。通常,窃听者采用截获密钥的方法有两类:一种方法是通过对携带信息的量子态进行测量,从其测量的结果来提取密钥的信息。但是,量子力学的基本原理告诉我们,对量子态的测量会引起波函数塌缩,本质上改变量子态的性质,发送者和接受者通过信息校验就会发现他们的通讯被窃听,因为这种窃听方式必然会留下具有明显量子测量特征的痕迹,合法用户之间便因此终止正在进行的通讯。第二种方法则是避开直接的量子测量,采用具有复制功能的装置,先截获和复制传送信息的量子态。然后,窃听者再将原来的量子态传送给要接受密钥的合法用户,留下复制的量子态可供窃听者测量分析,以窃取信息。这样,窃听原则上不会留下任何痕迹。但是,由量子相干性决定的量子不可克隆定理告诉人们,任何物理上允许的量子复制装置都不可能克隆出与输入态完全一样的量子态来。这一重要的量子物理效应,确保了窃听者不会完整地复制出传送信息的量子态。因而,第二种窃听方法也无法成功。量子密码术原则上提供了不可破译、不可窃听和大容量的保密通讯体系。 现代密码学与计算机技术、电子通信技术紧密相关。在这一阶段,密码理论蓬勃发展,密码算法设计与分析互相促进,出现了大量的密码算法和各种攻击方法。而且如今“密码学”不仅用于国家军事安全上,而且更多的集中在实际生活中。如在生活中,为防止别人查阅你的文件,可将文件加密;为防止窃取你的钱 财,可在银行账户上设置密码等。随着科学技术的发展和信息保密的需求,密码学的应用将融人到人们的日常生活中。基于密码学有着坚实的应用基础,可以相信,密码学一定能不断地发展,不断地完善,从而会给全人类提供更加安全的各种服务,让我们祝福这一天的到来吧! 随着科学技术的迅猛发展,人们对信息安全和保密的重要性认识不断提高,在信息安全中起着举足轻重作用的密码学也就成为信息安全中不可或缺的重要部分。在今天,密码学仍然是信息技术非常重要的组成部分,它还在多个方面发挥着重要作用。比如对于用户的认证,对于信息的认证,信息的安全以及存储的安全等,但这些对于密码学而言,它需要同其他组件配合,比如管理软件等。密码学是和技术相关。作为一项技术本身有演进的需要,同时还要适应跟它相配合的技术组件发展的需要,要适应用户的新需求以及其他的新应用。密码学同信息技术所包括的组件一样,一直在发展变化中,这就需要我们要不断地发展密码学,使密码学能够适应其他应用的需求,同其他技术的进步齐头并进。信息安全有着众多基础研究的领域,这些基础研究构成了密码学的基础,也构成了通信、安全软件等系统的基础。当我们在实施一个工程项目的时候,不能仅靠一个细分领域技术就能把这个项目完成。 六、学习密码学的感悟 1.密码学家的人生价值 密码学家,也许不为人知。但他们的工作却在我们的生活中发挥 着巨大的作用。他们在现代社会中有着不可替代的作用。有人认为密码学家就像一个黑客,但他们有着本质的不同。黑客是盗取密码保护的信息以获取利益,而密码学家从事的是基础理论研究,是为了评估密码算法的安全性,找到其漏洞,以设计出更安全的密码算法。 我觉得,对于密码学家来说,其实有两重意义上的生命:一是生物意义上的生命,二是学术意义上的生命。两种生命往往并不同步。有的人,生物意义上的生命还活着,学术意义上的生命已经死了。这种情况在我们周围越来越常见。目前充斥着大量名为成果,实为名利敲门砖的所谓学术,没有任何新意和创见,前脚迈出印刷厂,后脚就进造纸厂,白耗费了财力,还增加了环境污染。有的人,生物意义上的生命死了,学术意义上的生命还活着。我想,密码学家就是这样的一类人,他们的研究成果,大到保卫国家,小到维护个人的利益,我想这是他们人生价值的最好体现。 2.总结与体会 密码学充满了神秘性,让我对她产生了浓厚的兴趣和好奇。最近的这次人类战争中,即二战,认识到密码和情报是一件事情。而在当代密码学跟数学,计算机只是一个大背景,因为信息将会以网络为媒介,所以现代密码学更多的是以数字化的信息而非纸质为研究对象。所以密码学归根结底是数学问题,计算能力是数学的一个方面,高性能的计算机可以成为国力的象征,分析情报就是一方面。数学研究等一些自然基础学科的研究才是国家实力的坚定的基石,才是一个自然科学的学生的理想所在。数学研究很广泛,而密码学涉及很有限,大多与计算机学科相关,如离散数学。从数学的分类包括:数论、近世代数、矩阵论、域论,以及其它结合较为紧密地理论:信息论、编码论、量子学、混沌论。 密码学还有许许多多这样的问题。当前,密码学发展面临着挑战和机遇。计算机网络通信技术的发展和信息时代的到来,给密码学提供了前所未有的发展机遇。在密码理论、密码技术、密码保障、密码管理等方面进行创造性思维,去开辟密码学发展的新纪元才是我们的追求。 北京科技大学 班级: 计1102 姓名:杨勇 学号: 41155047 关于密码学技术读书笔记 一.密码学的介绍 密码学(在西欧语文中,源于希腊语kryptós“隐藏的”,和gráphein“书写”)是研究如何隐密地传递信息的学科。在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。密码学是信息安全等相关议题,如认证、访问控制的核心。密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商务等等。 密码是通信双方按约定的法则进行信息特殊变换的一种重要保密手段。依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。二.密码学的发展历史 密码学的发展历程大致经历了三个阶段:古代加密方法、古典密码和近代密码。1.古代加密方法(手工阶段) 古代加密方法大约起源于公元前440年出现在古希腊战争中的隐写术。当时为了安全传送军事情报,奴隶主剃光奴隶的头发,将情报写在奴隶的光头上,待头发长长后将奴隶送到另一个部落,再次剃光头发,原有的信息复现出来,从而实现这两个部落之间的秘密通信。 公元前400年,斯巴达人就发明了“塞塔式密码”,即把长条纸螺旋形地斜绕在一个多棱棒上,将文字沿棒的水平方向从左到右书写,写一个字旋转一下,写完一行再另起一行从左到右写,直到写完。解下来后,纸条上的文字消息杂乱无章、无法理解,这就是密文,但将它绕在另一个同等尺寸的棒子上后,就能看到原始的消息。这是最早的密码技术。 我国古代也早有以藏头诗、藏尾诗、漏格诗及绘画等形式,将要表达的真正意思或“密语”隐藏在诗文或画卷中特定位置的记载。2.古典密码(机械阶段) 古典密码的加密方法一般是文字置换,使用手工或机械变换的方式实现。古典密码系统已经初步体现出近代密码系统的雏形,它比古代加密方法复杂,其变化较小。古典密码的代表密码体制主要有:单表代替密码、多表代替密码及转轮密码。3.近代密码(计算机阶段) 密码形成一门新的学科是在20世纪70年代,这是受计算机科学蓬勃发展刺激和推动的结果。快速电子计算机和现代数学方法一方面为加密技术提供了新的概念和工具,另一方面也给破译者提供了有力武器。 课 程 设 计 报 告 题目: 密码学课程设计 课程名称: 密码学课程设计 专业班级: 信安1904班 学 号: U201912177 姓 名: 段帅杰 指导教师: 路松峰老师 报告日期: 2021/10/12 教师评语: 分数: 网络空间安全学院 目录 一、设计过程 1 1.1 SPN实现 1 1.2线性分析 2 1.3差分分析 3 1.4 SPN增强 4 1.5 RSA参数计算 5 1.6模重复平方 6 1.7中国剩余定理 7 1.8 PKCS7 8 1.9彩虹表 9 二、实验心得 10 三、对课程设计内容和过程的建议 11 一、设计过程 1.1 SPN实现 (1)设计内容 按照课本给出的的S盒和P盒以及密钥编排方案来实现分组密码SPN加解密。有两个输入,分别是32比特的密钥和16比特的明文。要正确输出密文和对明文最后一比特取反解密得到的明文。加密过程主要包括三个部分:代换,置换和轮密钥异或。 (2)设计过程 算法所注意的问题:加密与解密主要在于密钥编排顺序不同,算法过程基本相同。最后一轮没有经过P盒。 解决这道题最直接的思路就是开数组及进行运算,但这样显然速度不够快。后来摒弃这种做法,采用位运算,速度快了不少而且这种做法方便快读快写的程序实现。但还是有几个数据点过不了oj,后面打了一个65536的表,将时间提高至1100ms左右。最后采用了快写才将时间稳定在700ms左右。 (3)小结 采用打表的方式程序速度确实有提高,但是程序很臃肿。程序中还有些算术运算并没有转换为位运算。 图1-1 SPN实现oj结果图示 1.2线性分析 (1)设计内容 线性分析是一种已知明文的分析方法,基于S盒逼近,需要大量的明密文对。oj上给了8000对明密文对。并且只对最后一轮子密钥进行分析。在密钥生成算法固定的情况下,获得最后一轮子密钥可以为分析别的密钥提供可能。遍历可能的密钥空间并进行计数,结束后正确的密钥计数值接近1/2±ϵ,并且应该在一定范围内对计数值较大的可能密钥进行验证。 (2)设计过程 首先使用书中给出的线性分析链,分析出第5轮第2、4部分的密钥。再选择新的偏差较大的线性分析链,在第2、4部分密钥已知的基础上分析出第1、3部分的密钥。接着在已知起始密钥低16位的基础上,穷举高16位密钥对给出的8000个明密文对进行验证。由于在加密过程中进行了5轮的S代换和P置换,其实相同明文在不同密钥下得到相同密文的概率极低,因此并没有验证8000个明密文对是否对应,而仅验证了3个判断密钥是否合适。 程序有两层主循环,第一层主循环遍历可能的第5轮第2、4部分密钥,第二层在已知第5轮第2、4部分密钥的基础上生成并遍历可能的第5轮第1、3部分密钥,同时穷举高16位密钥并进行验证。 (3)小结 为了提高速度,程序中同样采用了打表。但是在oj上仍然差了300ms,最后是开启了03优化才能全部通过(开启这个优化通过oj,算不上很完美)。 #pragma GCC optimize(3,”Ofast“,”inline“) 图1-2 线性分析oj结果图示 1.3差分分析 (1)设计内容 实验目的是实现对SPN网络的差分密码分析。差分密码与线性密码分析相似。主要区别在于它将两个输入的异或与其相对应的两个输出的异或相比较,是一种选择明文攻击。差分攻击的基础是一个非均匀的输出分布。和线性分析进行类似的计数操作并在计数值一定范围内对密钥进行验证。 (2)设计过程 首先使用书中给出的差分链分析出第5轮第2、4部分的密钥。再选择新的差分链分析出第5轮第1、3部分密钥,然后穷举高16位密钥情况,并验证密钥正确性。 与线性分析不同的是,由于差分分析中可以找到一条第5轮仅包含第1、3部分且偏差很大的差分链,因此不需要在已知第5轮第2、4部分的基础上进行差分分析,也因此减小了部分时间开销。 代码实现流程为:快速读入数据并存入数组中;根据已有的明密文对分别对第5轮第2、4部分和第1、3部分进行差分分析,记录每一种密钥对应的count值。在一定范围内遍历第5轮第2、4部分和第1、3部分密钥,穷举高16位密钥并验证正确性,得到正确密钥后快速输出密钥。 (3)小结 程序提交oj的时候最后一个测试点偶尔会出现超时的情况。 图1-3 差分分析oj结果图示 1.4 SPN增强 (1)设计内容 对原始SPN进行改进,自定义密钥长度,分组长度,S盒,P盒等信息,对输入比特流进行加密使输出能够通过oj的随机数检测标准。 (2)设计过程 相比于之前的SPN,做了些改动。采用CBC模式,随便设置一个初始向量,并且将密钥增加到128位,SPN加密长度增加到64位,使用自定义的P盒。这样才通过了随机性检测。 (3)小结 这道题不像之前的题目卡时间那么难受,虽然安全性相比于最初的SPN有所提高,但是真正应用的话,安全性还是不行。 图1-4 SPN增强oj结果图示 1.5 RSA参数计算 (1)设计内容 实验目的是自己利用gmp库提供的大整数基本运算来实现求逆和最大公因数,输出RSA参数d,并检查RSA参数的合法性。 (2)设计过程 首先是利用vcpkg在主机vs2019上搭建好了运行环境。实现了素性检测,gcd的求解以及求逆等过程。主要遇到的问题是在验证安全性上,判断参数是否正确。首先e不能太小,主要为了提高计算的难度;p和q间隔不能太小;p-1和q-1不能太光滑,即gcd(p-1,q-1)应该比较小,经过询问和验证,这个值大概在20以内。 (3)小结 这个实验主要熟悉了gmp库提供的大整数相关的基本函数运算。比较麻烦的是需要自己摸索测试方法,探索p和q的间隔,(p-1)和(q-1)的最大公因数大小等。在运行速度上倒是没遇到什么大问题。 图1-5 RSA参数计算oj结果图示 1.6模重复平方 (1)设计内容 实验目的是利用gmp库提供的加法,减法,乘法,模运算等基本运算来自己实现expmod(a,e,n)。 (2)设计过程 这道题逐步计算就行,需要注意的是递归或者普通的循环是行不通的。为了加快运行速度,要尽量减少循环次数。 (3)小结 这道题主要还是gmp库提供的函数的应用。 图1-6模重复平方 oj结果图示 1.7中国剩余定理 (1)设计内容 实验内容:正确计算c^d(modpq)。利用1.5中的求逆运算从加密密钥e计算解密密钥d。 利用1.6中实现的模幂运算和中国剩余定理计算c^d(modpq)。 (2)设计过程 这道题主题要是与前面两题的结合,使用p,q并运用中国剩余定理解密。为了加快速度解决的问题: 1.避免重复计算,用变量将不会改变的值保存好,避免不必要的计算。 2.在求解模幂时,将解密指数d模除以p-1和q-1,加速计算。 (3)小结 虽然经过改进,运行时间有所提高,但是最后一个测试点还是压着边过的。 图1-7中国剩余定理oj结果图示 1.8 PKCS7 (1)设计内容 PKCS#7是PKI中用于消息加密的语法标准。可以用于给拥有公钥的用户发加密邮件、传送加密文件等。实验目的是解开PKCS#7包装,获取明文消息。 (2)设计过程 这道题首先是查找PKCS#7的相关知识,了解它的用途。算是对上学期所学知识的综合应用的一个实例。然后利用openssl库提供相关的函数进行解密。 (3)小结 这道题时间并不是问题。还是比较轻松的。 图1-8 PKCS7 oj结果图示 1.9彩虹表 (1)设计内容 有一些链头和链尾,每条链从链头开始,依次调用了10000次SHA1和R函数得到链尾。 实验目的是从这些链中找到SHA1值对应的口令。 (2)设计过程 在程序中定义了UnitSHA1函数来寻找SHA1,通过findstr函数判断是否恰当。为了加快运行速度,程序中同样采用了快读快写以及位运算等。 (3)小结 这道题虽然时间限制提高至2000ms,但最后有几个测试点还是开了03优化才过的。 图1-9 彩虹表oj结果图示 二、实验心得 这次试验包含了SPN加解密及其分析,RSA参数,模重复平方,中国剩余定理,PKCS7,彩虹表等九个实验的内容。在实验过程中,要到了许许多多的问题。主要有以下几点: SPN的位运算,最初因为对位运算不够熟悉并没有想着用位运算来实现SPN的加解密,多走了很多弯路。 密码分析问题,线性分析和差分分析否需要自己依据原理来找到最理想的链,而且需要先对概念原理有个清楚的认知,这就迫使我再次回顾密码学课本和网课上的知识点。 运行时间问题,为了缩短运行时间,采取了很多办法。比如打表,快读快写,在某些不改变的变量前面加const,在常用的变量前加register,算术运算转变为位运算等等。实在过不了的开启了02,03优化。 第三方库的安装与链接,在采用了许多方法无果后,采用了vcpkg库管理工具实现了gmp,gmssl,openssl等的安装与链接,减少了许多配置的麻烦。 密码学课程知识的回顾,过了一个暑假,部分密码学的细节知识有所遗忘,为了完成这次实验,需要重新学习一遍。这种回顾知识的机会自高中结束以来很少有了。上学期主要进行理论学习,这次试验弥补了实践的缺失。 总的来说,这次课设给我留下了深刻印象。自己写的代码不能正常运时的焦虑感是做其他实验没有的。大部分问题都要重新回顾之前的密码学知识。通过网上搜索相关概念,询问老师和同学解决。有些细节问题也会与同学交流讨论。这次实验让自己对密码学的认识和自己的编程能力上升了一个台阶。 希望能够在完成人数适当的时候进行一次讲解,这样可以让没有方向的同学知道如何着手,也可以让已经完成的同学进行思路的比对,有所改进。小范围讨论和统一讲解同样重要。 希望oj上的时间增加一点,因为时间而卡在一道题上过不去的滋味并不好受。而且实验是在锻炼我们的思考问题和实践的能力。如果时间太少的话,就只能参考别人的思路来缩短运行速度,同质化严重。不利于学生独立思考,写出各种各样的程序。我们写的程序最终也不会进行应用,更重要的是锻炼,纠结于几百毫秒反而降低了学生的热情。 在课设结束后发出参考样例方便有需要的同学进行改进。 希望实验课能越来越好,通过实验来吸引更多对密码学有兴趣的人。第三篇:密码学学习心得
第四篇:密码学技术读书笔记
第五篇:密码学课程设计报告