密码学论文
- 格式:doc
- 大小:198.00 KB
- 文档页数:12
破解密码密码学专业毕业论文密码学作为一门应用数学科学,经过多年的发展与探索,已经成为信息安全领域中不可或缺的重要学科。
而在密码学专业的学习中,毕业论文是对学生全面能力的一次综合考核,也是展示学术研究成果的平台。
本文将探讨破解密码的方法与技术,以及密码学专业毕业论文的撰写要点。
一、破解密码的方法与技术破解密码是密码学专业中的核心研究领域之一,旨在通过对密码系统的分析和攻击,揭示其中的安全弱点,以提升密码系统的安全性。
下面将介绍几种常见的密码破解方法和技术。
1.1 暴力破解法暴力破解法是密码破解中最常见的方法之一。
它通过穷举所有可能的密码组合,逐个尝试来找出正确的密码。
该方法的优点是能够保证找到正确的密码,但缺点是耗时较长,特别是对于密码较复杂的情况下。
1.2 字典攻击法字典攻击法是一种基于预先准备好的密码词典的方法。
攻击者通过将密码词典与被破解的密码进行对比,如果匹配成功,即可找到正确的密码。
这种方法相对于暴力破解法而言,耗时较短,特别是在密码使用常见单词或常见组合时。
1.3 差分攻击法差分攻击法是一种特殊的密码分析方法,它通过对密码系统中的特定差异进行观察,从而获取密码信息。
该方法要求攻击者对密码系统的设计和运行机制有一定的理解和专业知识,因此是一种相对高级的密码破解技术。
1.4 混合攻击法混合攻击法是多种密码破解方法的综合应用,其目的是为了提高破解密码的效率和准确性。
通过结合暴力破解、字典攻击和差分攻击等多种技术手段,攻击者能够更快速地找到密码系统的弱点并进行破解。
二、密码学专业毕业论文撰写要点在撰写密码学专业毕业论文时,需要注意以下几个要点:2.1 研究背景与目的毕业论文的引言部分应清晰地阐述研究背景和目的,说明该研究对密码学领域的重要性和意义。
2.2 相关研究综述在论文的文献综述部分,要对相关的密码破解技术、密码系统设计原理等进行全面深入的探讨,分析前人的研究成果,并指出他们的不足之处。
2.3 研究方法与实验设计详细描述自己的研究方法和实验设计,包括使用的工具和算法,实验参数设置等。
数学在密码学中的应用浅析密码学论文写作范例论文-V1正文:密码学作为一种保障隐私和安全的技术,其应用范围愈发广泛。
而在密码学中,数学的应用尤为重要。
本文将就数学在密码学中的应用进行浅析,并给出密码学论文写作范例,以供参考。
一、数学在密码学中的应用密码学的核心问题是保护信息的安全,而数学提供的基础和工具是解决这一问题的关键。
1. 整数论在密码学中,整数论最常见的应用是在RSA加密算法中。
RSA算法基于整数的因式分解难题,通过大数的质因数分解实现加密。
在该算法中,质数是加密和解密过程中的关键因素,因此整数论的相关理论成为RSA 算法可行性的前提。
2. 群论群论是密码学中使用最为广泛的数学分支之一。
在密码学中,群论可以用来描述密码学中各个算法的密钥空间、明文和密文的转换、算法的复杂度等。
例如,Diffie-Hellman密钥交换算法就是基于群论的,用来方便地协商出双方的密钥。
此外,AES对称加密算法也使用了群论的相关理论,其密钥扩展算法利用了有限域的结构。
3. 椭圆曲线椭圆曲线密码学是当前流行的密码学分支之一,在移动终端等资源受限场景下有着十分广泛的应用。
在椭圆曲线密码学中,数学中的椭圆曲线理论是其核心基础。
通过椭圆曲线的相关理论,密钥交换、数字签名等广泛应用的密码学问题都可以得到切实可行的解决方案。
此外,椭圆曲线密码学还具有安全性高、密钥长度短、运算速度快等优点。
二、密码学论文写作范例在密码学研究中,必须得对算法进行一定的改进才能应对攻击,提高其安全性。
在撰写论文的过程中,应着力于解决某个具体问题,清晰表述研究思路,并结合实验结果进行论述。
以下为密码学论文写作范例:第一部分:引言在此部分中,需要对密码学的定义进行解释,并讨论研究算法的重要性和关键问题。
第二部分:问题描述在此部分中,需要详细描述所研究的算法、现有的问题和存在的威胁。
第三部分:技术方案在此部分中,需要介绍自己提出的算法,同时应包括解释和理论的基础,以及应用实现和结果分析。
数学在密码学中的应用浅析密码学论文写作范例论文(一)随着信息技术的发展,网络安全问题日益引起关注。
密码学作为信息安全领域中的一门基础学科,已经成为保护网络信息安全的一种重要手段。
而数学作为密码学的基础,更是不可或缺的一部分。
数学在密码学中的应用主要体现在加密算法、密钥的生成和数字签名等方面。
其中,加密算法是密码学中最基础的部分。
目前,对称加密和非对称加密是应用最广泛的两种加密方式。
对称加密就是指加密和解密使用同一个密钥的方式,非对称加密则是指加密和解密分别使用两个不同的密钥。
而这两种加密方式的安全性都与数学有着密不可分的关系。
对于对称加密,它主要是利用数学运算中的异或(XOR)和同或(XNOR)运算、置换和代换等操作,将明文转换为密文。
例如,DES(Data Encryption Standard)算法就是利用置换和代换操作实现加密的。
而非对称加密主要是利用数学中的大数因式分解和离散对数问题,如RSA 算法和椭圆曲线(Elliptic Curve)算法。
除了加密算法外,数学在密钥的生成和数字签名方面也有着重要的应用。
密钥的生成通常是指生成对称密钥和非对称密钥对的过程。
这个过程需要利用到数学中的大数质因数分解和离散对数问题,以确保生成出来的密钥安全可靠。
而数字签名则是通过数学中的哈希函数、公钥加密和私钥解密等方法,实现对数字文档进行签名认证的过程。
在写密码学论文的时候,我们需要清晰地阐述数学在密码学中的应用,并且采用恰当的数据陈述和相关例子来支撑我们的观点。
我们还需要关注密码学的发展历程和应用现状,以便为我们的论文提供足够的背景信息。
此外,我们可以从需求、流程、应用、安全等角度对密码学进行全面分析,从而更好地展示数学在密码学中的应用。
总之,数学在密码学中的应用不可忽视。
无论是对称加密还是非对称加密,都需要依靠数学的算法和理论来保证加密的安全性。
因此,了解数学在密码学中的应用是我们研究和保护信息安全的必要基础。
数学在密码学中的应用浅析密码学论文写作范例论文(1)密码学是一门保护信息安全的学科,而在密码学中,数学发挥着重要的作用。
本文将从数学在密码学中的应用入手,分析密码学论文写作范例。
首先,密码学中最基本的概念是加密算法,而加密算法的核心就是数学运算。
例如,常见的对称加密算法中,采用的是一些基于数学的算法,如DES和AES。
这些算法采用了一些数学计算来将原文转化为难以识别的密文,可以保护数据不被窃取或篡改。
因此,在写作密码学论文时,要深挖加密算法中数学知识的应用,从算法实现原理这一层面论述加密的必要性,这将有助于提高论文的可信度。
其次,公钥密码学也离不开数学。
如RSA算法就是基于数学的算法,而RSA算法实现的核心原理是基于数论的。
这个算法利用了数学中一些简单的数学概念,但要运用得当却不简单,因为RSA算法中的数学概念也涉及的比较复杂,如大素数和欧拉函数。
因此,在写作密码学论文时,要具备专业的背景知识,从概念阐述和应用运用两个方面来阐述公钥算法以及它的核心原理。
最后,密码学的理论发展也是离不开数学的思想。
密码学的发展需要从数学的角度来看待安全性的问题,并针对安全性问题去创造各种加密算法,使其符合严格的数学证明方法。
因此,在写作密码学论文时,需要重点关注密码学方法的数学基础,如攻击模型和安全证明等,从而使论文更加严谨和可信。
总之,数学在密码学中发挥了重要的作用。
要写好密码学论文,除了对密码学的基本概念有充分的理解外,对数学应用的相关知识也应有一定的熟悉和掌握,从中提炼本质,优化方法,达到优化和理解论文的目的。
第一章绪论AES高级加密标准随着Internet的迅猛发展,基于Internet的各种应用也日新月异,日益增长。
但是,由于Int ernet是一个极度开放的环境,任何人都可以在任何时间、任何地点接入Internet获取所需的信息,这也使得在Internet上信息传输及存储的安全问题成为影响Internet应用发展的重要因素。
正因为如此,信息安全技术也就成为了人们研究Internet应用的新热点。
信息安全的研究包括密码理论与技术、安全协议与技术、安全体系结构理论、信息对抗理论与技术、网络安全与安全产品等诸多领域。
在其中,密码算法的理论与实现研究是信息安全研究的基础。
而确保数据加密算法实现的可靠性和安全性对于算法理论应用到各种安全产品中起到了至关重要的作用。
对各类电子信息进行加密,以保证在其存储,处理,传送以及交换过程中不会泄露,是对其实施保护,保证信息安全的有效措施。
1977年1月数据加密标准DES(Data Encryption Standard)正式向社会公布,它是世界上第一个公认的实用分组密码算法标准。
但DES在经过20年的实践应用后,现在已被认为是不可靠的。
1997年1月2日NIST发布了高级加密标准(AES-FIPS)的研发计划,并于同年9月12日正式发布了征集候选算法公告,NIST希望确定一种保护敏感信息的公开、免费并且全球通用的算法作为AES,以代替DES,用以取代DES的商业应用。
在征集公告中,NIST对算法的基本要求是:算法必须是私钥体制的分组密码,支持128bits分组长度和128,192,256bits密钥长度。
经过三轮遴选,Rijndael最终胜出。
2000年10月2日,NIST宣布采用Rijndael算法作为新一代高级加密标准。
Rijndael的作者是比利时的密码专家Joan Daemon博士和Vincent Rijmen博士。
美国国家标准和技术研究所(NIST)在1999年发布了FIPS PUB 46-3,该标准指出DES只能用于遗留系统,同时3DES将取代DES。
信息安全技术论文密码学密码算法概述摘要:密码学是研究编制密码和破译密码的技术科学。
研究密码变化的客观规律,应用于编制密码以保守通信秘密的,称为编码学;应用于破译密码以获取通信情报的,称为破译学。
总称密码学。
密码是通信双方按约定的法则进行明密特殊变换的一种重要保密手段。
依照这些法则,变明文为密文,称为加密变换;变密文为明文,称为脱密变换。
密码在早期仅对文字或数码进行加、脱密变换,随着通信技术的发展,对语音、图像、数据等都可实施加、脱密变换。
关键字:密码学对称密码学密钥密码学[1](在西欧语文中之源于希腊语kryptós,“隐藏的”,和gráphein,“书写”)是研究如何隐密地传递信息的学科。
在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。
著名的密码学者Ron Rivest解释道:“密码学是关于如何在敌人存在的环境中通讯”,自工程学的角度,这相当于密码学与纯数学的异同。
密码学是信息安全等相关议题,如认证、访问控制的核心。
密码学的首要目的是隐藏信息的涵义,并不是隐藏信息的存在。
密码学也促进了计算机科学,特别是在于电脑与网络安全所使用的技术,如访问控制与信息的机密性。
密码学已被应用在日常生活:包括自动柜员机的芯片卡、电脑使用者存取密码、电子商务等等。
直到现代以前,密码学几乎专指加密(encryption)算法:将普通信息(明文,plaintext)转换成难以理解的资料(密文,ciphertext)的过程;解密(decryption)算法则是其相反的过程:由密文转换回明文;加解密包含了这两种算法,一般加密即同时指称加密(encrypt或encipher)与解密(decrypt或decipher)的技术。
加解密的具体运作由两部分决定:一个是算法,另一个是密钥。
密钥是一个用于加解密算法的秘密参数,通常只有通讯者拥有。
历史上,密钥通常未经认证或完整性测试而被直接使用在密码机上。
密码学网络安全论文2篇今天店铺就要跟大家分享下关于密码学网络安全论文有哪些~那么对此感兴趣的网友可以多来了解了解下。
下面就是具体内容密码学网络安全论文一:1. 引言随着国家网络信息化建设的飞速发展,越来越多的人通过Internet网络来学习与工作,但是,由于因特网的全球性,开放性。
无缝连通性,共享性和动态发展,任何人都可以自由的介入,使得人们在享受网络提供的更加开放的空间和丰富资源的同时,也面临着前所未有的网络安全的威胁。
愈演愈烈的黑客攻击事件以及非法信息的不断蔓延、网络病毒的爆发、邮件蠕虫的扩散,也给网络蒙上了阴影。
因此,网络安全问题已逐渐成为世人关注的社会问题。
2. 密码学的涵义和特点密码学是研究如何隐密地传递信息的学科。
在现代特别指对信息以及其传输的数学性研究,常被认为是数学和计算机科学的分支,和信息论也密切相关。
密码学的基本要素是加密算法和密钥管理,密码就是一组含有参数k的变换E。
设已知信息m,通过变换E得到密文c。
即c=Ek(m)这个过程称之为加密,参数k称为密钥。
不是所有含参数k的变换都可以作为密码,它的要求是计算Ek(m)不困难:而且若第三者不掌握密钥k,即使截获了密文c,他也无法从c恢复信息m。
从密文c恢复明文m的过程称之为解密。
解密算法D是加密算法E的逆运算,解密算法也是含参数k的变换。
密码体制从原理上可分为两大类,即单钥体制和双钥体制。
单钥体制的加密密钥k和解密密钥k相同,采用双钥体制的每个用户都有一对选定的密钥:一个是可以公开的,称为公钥;另一个则是秘密的,称为私钥。
3. 密码学如何促进网络安全(里面可包含几个小点)密码学是计算机网络安全的基础,计算机网络与分布式系统的安全包含两个主要内容:保密性――即防止非法地获悉数据;完整性――即防止非法地修改数据,要想解决这些问题,就需要用到现代密码学。
下面就为大家介绍密码学在网络安全中的常见应用。
3.1 对称加密方式对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立。
密码学是一门古老而深奥的学科,从古代的加密军书到如今的手机解锁,密码研究已有数千年的历史。
密码学也经历了从古典密码学到现代密码学的演变,虽然密码学的科技在不断地进步,古典密码的难度已经不足一提,但是古老的密码学思想奠定了密码学发展的基础,至今仍然被广泛使用。
密码学是信息安全的一门科学,密码技术是信息安全的核心,现代密码学所涉及的学科很广,包括信息论、概率论、数论、计算复杂性理论、近世代数、离散数学、代数几何学和数字逻辑等。
密码学主要包括两大分支,一是密码编码学,二是密码分析学。
密码学是对这两门分支学进行综合分析、系统研究的科学,是保护信息安全最主要的手段之一。
编码学与分析学是相互对立、相互依存,正是因为这种对立统一的关系,才推动了密码学自身的发展,下面将对这两门学科分别进行介绍。
1.密码编码学密码编码学是研究密码体制的设计的一门学问,主要内容是对信息进行编码密码,以实现对信息的加密。
密码编码技术的主要任务是寻求产生安全性高的有效密码算法和协议,以满足对消息进行加密或认证的要求。
2.密码分析学密码分析学是研究如何破解被加密信息的一门学问,即通过破译密码,来获取到所加密的信息。
经历了多个发展阶段。
密码分析技术的主要任务是破译密码或伪造认证信息,实现窃取机密信息或进行诈骗破坏活动。
密码学的基本思想是通过改变原有信息的顺序或者用不同的字母、数字、汉字等字符去替换原有字符,使原始信息变成混乱无章的乱码,保证了即使被非法获得信息后,也无法了解传送双方在信息中想表达的含义。
由于传送双方在事先进行了约定,接收方会根据某种规则,通过乱码来恢复出原始的信息含义。
伴随着信息科技不断地发展,现如今的密码学应用领域也不仅仅局限于信息的加密,也扩展到了对身份的识别和电子的认证等方面,比如日常所使用的手机指纹识别、解锁图案等,都属于密码学的范畴。
综上所述,密码学思想主要分为加密和解密两大部分,常用的方法有顺序法则和替代法则。
《计算机密码学》期末论文学院:计算机科学与技术专业:计算机科学与技术班级:学号:姓名:教师:2016年月日密码学在网络通信加密中的应用摘要:介绍了网络加密方式,分析了DES、RSA等基本的安全技术。
关键词:Internet DES RSA 加密随着科技的发展,Internet的有关技术越来越成熟,现在,Internet在我们的生活中扮演了重要的角色。
Internet对我们的生活越来越重要,人们已经离不开Internet。
随着它的迅猛发展,全球经济和社会生活都产生了巨大变化。
Internet的应用领域极其广阔,如许多高等学校,公司等都已建立自己局域网并与Internet相连。
作为获得信息的重要途径,商业界也在积极地建立企业内部网络并通过Internet向公众提供种类繁多的信息服务,其中最引人注目的当属电子商务,电子商务正是在Internet快速发展的浪潮下应运而生的,它是信息时代社会生产与社会消费之间发生的一次革命。
Internet在为人们带来无限商机的同时,也引起了许多安全问题。
如何保证各种网络应用的安全性,成了我们必须考虑的问题。
例如:电子商务中网上购物是在线付款,用户的信用卡号等许多信息都是敏感信息,而这些网上传输的敏感数据和存放敏感信息的站点正是网络黑客的重点攻击对象。
因此,人们在开展各种网络业务时,首先考虑的是这种网络业务是否能够保证安全,如果不能保证安全,人们也就不会接受这种业务。
网络通信的数据加密包括以下几个方面:(1)数据传输的安全性。
数据传输的安全性即是要保证在公网上传输的数据不被第三方窃。
(2)数据的完整性。
对数据的完整性需求是指数据在传输过程中不被篡改。
通常情况下,网络通信中所采用的安全技术主要有防火墙技术、数据加密技术和身份认证技术等。
本文讨论的重点是数据加密技术在网络通信安全策略中的应用。
一. 开放系统互联参考模型和TCP/ IP分层模型1.1开放系统互连参考模型开放系统互连参考模型(Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT)联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。
传统加密技术对称密码是一种加密使用相同密钥的密码体制,也称为传统密码算法。
对称密码利用密钥和加密算法将明文变成密文。
运用相同的密钥和解密算法,而已从密文恢复出明文。
对密码的两种攻击方法是基于密码算法性质的密码分析和基于穷举密钥的穷举攻击。
传统对称密码(计算机出现前)使用代换和/或置换技术。
代换技术。
代换技术将明文元素(字符、比特)映射为密文元素,置换技术将明文元素的位置进行系统的置换。
转轮技术是计算机出现前使用代换技术的复杂硬件设备。
隐写技术是一种将秘密信息隐藏于其他更大信息中的一种技术,是得其他人无法区分它的存在或隐藏信息的内容。
下面介绍几种经典加密技术。
经典加密主要采用了两种加密技术:替代技术和置换技术。
(1)替代技术替代技术是将明文中的每个元素(字母、比特、比特组合或字母组合)映射为另一个元素的技术。
明文的元素被其他元素所代替而形成密文。
在经典加密技术中使用的元素一般为字母或数字。
下面给出经典加密中几种有代表性的替代技术。
1)凯撒密码凯撒密码是最早使用的替代密码。
定义1 凯撒密码将字母表视为一个循环的表,把明文中的字母用表中该字母后面第3个字母进行替代。
凯撤密码的明文字母和密文字母的对应关系如下:明文字母:a b c d e f g h I j k l m n o p q r s t u v w x y z密文字母:DEFGHIJKLMNOPQRSTUVWXYZABC若让每个字母对应一个数值(a=0,b=1,……,z=25),则该算法可以表示为:。
定义2 将1算法一般化,即密文字母与明文字母的偏移可以是任意值,形成了所谓的移位密码,其算法可以表示为:k就是加密算法的密钥,可以在1到25之间取值。
解密算法可以表示为:。
由于k的取值范围的限制,凯撒密码的密钥空间很小,难以抵御强行攻击密码分析。
攻击者最多尝试25次,就一定能够破译密码。
2)单字母替代密码为了加大凯撒密码的密钥空间,可以采用单字母替代密码。
基于RSA的数字签名技术研究摘要:数字签名是现在网络信息安全的核心技术之一。
通过了解其基本概念、基本原理以及数字签名的重要性和实现思路,实现了对RSA的数字签名技术的分析和理论实现。
在实现了RSA的C++编程实现上,对RSA算法的不足做出了总结。
关键词:数字签名;RSA;C++;不足Abstract:Digital signature is now the core of the network information security technologies. By understanding the basic concepts, basic principles and the importance of digital signature and implementation ideas, realized the RSA digital signature technology, analysis and theory to achieve. On the base of the realization of RSA in programming in C++, the shortcomings of RSA algorithm are summed up.Key words:digital signature; RSA; C++; inadequacy引言Internet的迅猛发展在带给人们的便捷和高效的同时,也导致了网络的安全性受到严重危险。
而数字签名(Digital Signatures)技术正是在这种背景下产生的,它是保证信息传输的保密性、数据交换的完整性、发送信息的不可否认性、交易者身份的确定性的一种有效的解决方案,是目前电子商务、电子政务等应用中技术最成熟的、可操作性最强的一种电子签名方法。
另一个方面,数字签名是网络信息安全的核心技术,在网络传输中显得非常重要。
它在保证数据的完整性、私有性、不可抗抵赖性方面起着重要的作用,通常用于鉴定签名人的身份,验证信息传输有无篡改,确保信息传输的完整性、真实性和不可否认性。
1数字签名基本概念1.1 数字签名定义数字签名是通过一个单向函数对要传送的报文进行处理得到的用以认证报文来源并核实报文是否发生变化的一个字母数字串,并以此来解决数据的否认、伪造、篡改及冒充等问题。
数字签名在ISO7498-2标准中定义为:“附加在数据单元上的一些数据,或是对数据单元所作的密码变换,这种数据和变换允许数据单元的接收者用以确认数据单元来源和数据单元的完整性,并保护数据,防止被人(例如接收者)进行伪造”。
数字签名可以基于公钥密码体制,也可以基于私钥密码体制。
目前主要是基于公钥密码体制的数字签名,包括普通数字签名和特殊数字签名。
普通数字签名算法有:RSA、ElGamal、Fiat-Shamir、Guillou-Quisquarter、Schnor、Ong-Schnorr-Shamir数字签名算法、DeDSA椭圆曲线数字签名算法和有限自动机数字签名算法等。
特殊数字签名有盲签名、代理签名、群签名、不可否认签名、公平盲签名、门限签名、具有消息恢复功能的签名等,它与具体应用环境密切相关。
1.2数字签名的作用数字签名是通过一个单向函数对要传送的报文进行处理,得到的用以认证报文来源并核实报文是否发生变化的一个字母数字串。
数字签名可以解决否认、伪造、篡改及冒充等问题,要实现的功能是我们平常的手写签名要实现功能的扩展平常在书面文件上签名的主要作用。
一是因为对自己的签名本人难以否认,从而确定了文件已被自己签署这一事实;二是因为自己的签名不易被别人模仿,从而确定了文件是真的这一事实。
故数字签名应有以下几个作用:(1)保证数据的保密性用于防止非法用户进入系统及合法用户对系统资源的非法使用;通过对一些敏感的数据文件进行加密来保护系统之间的数据交换,防止除接收方之外的第三方截获数据及即使获取文件也无法得到其内容如在电子交易中,避免遭到黑客攻击丢失信用卡信息的问题。
(2)保证数据的完整性防止非法用户修改交换的数据或因此造成的数据丢失等。
(3)保证数据的不可否认性对数据和信息的来源进行验证,以确保数据由合法的用户发出;防止数据发送方在发出数据后又加以否认,同时防止接收方在收到数据后又否认曾收到过此数据或篡改数据。
2数字签名的实现原理数字签名的过程大致如下:先是对将要发送的消息进行预处理,即通过数学算法由输入的消息数据产生一种消息摘要。
然后再用加密算法对消息摘要进行加密,最后将加密了的消息摘要和要发送的信息一起发送给接受方。
接收方接到数据后,从接收到的原始信息中用同样的算法计算出新的消息摘要,再用发送方的公钥对加了密的消息摘要的进行解密,最后通过对比,得出数据是否被篡改、是否完整等。
下面详细介绍数字签名的实现过程。
2.1 Hash函数单向Hash函数的工作原理如下:(1)通过数学算法,把未做处理的报文(不论是明文还是密文)转换为不定长的待输入字符串,称为预映射值。
(2)将预映射值再次转换为定长(一般更短)的输出字串,称为hash值,又叫消息摘要,预映射值可任意长,但hash值总是定长;报文或预映射值有丝毫改动,则Hash值完全不同这里所谓“单向”,是指不可能由hash值反推出预映射值或报文,但又不是加密,因为不存在解密的问题。
正由于其单向,也就没有了运算速度的障碍最常用的Hash 算法叫做MD5,可以用MD5对消息产生散列值,或用发送者的私钥加密消息散列值(即消息摘要)。
2.2 用加密算法进行数字签名用来数字签名的加密算法主要分为两类:一是对称加密算法,二是非对称加密算法。
本文主要对称加密算法中的RSA进行讨论。
对称加密算法所用的加密密钥和解密密钥通常是相同的,即使不同也可以很容易地由其中的任意一个来推导出另一个在此算法中,加、解密双方所用的密钥都要保守秘密,由于计算速度快而广泛应用于对大量数据如文件的加密过程中常用的加密算法有DES等。
与对称型密钥加密系统不同,非对称型密钥加密系统的特点是:加解密过程使用不同的密钥,并且若仅仅知道加密密钥,也无法推断出解密密钥,这样就可把加密密钥向整个安全通信网公开,用户只须保存解密密钥即可所以,非对称加密算法有时又称为公开密钥加密算法,其中最具有代表性的是RSA公钥密码体制。
2.3 签名和验证过程目前的数字签名是建立在公共密钥体制基础上,它是公用密钥加密技术的一种应用,主要涉及到两方:发送方和接受方。
发送方对发送文档采用特定的算法(如哈希算法)进行运算,得到一个固定长度的数字串,称为消息摘要(Message digest),不同的文档所得到的消息摘要各异,但对相同的文档它的消息摘要却是唯一的。
发送方生成文档的消息摘要,并用自己的私钥对摘要进行加密来形成发送方的数字签名。
这个数字签名将作为文档的附件和文档一起发送给接收方。
接收方首先从接收到的原始文档中用同样的算法计算出新的消息摘要,再用发送方的公钥对文档附件的数字签名进行解密,比较两个消息摘要,如果值相同,接收方就能确认该数字签名是发送方的,这样的签名方法是符合可靠性原则的,即:签字是可以被确认的,签字是无法被伪造的,签字是无法重复使用的,文件被签字以后是无法被篡改的,总之签字具有不可否认性。
3基于RSA的数字签名技术RSA加密算法是由Rivet Shamir和Adleman在1978年提出的,运用于公钥加密系统。
RSA公钥系统的安全性是建立在大整数的因子分解极其困难,而大整数的相乘极其容易之上的。
以两个200位的十进制数相乘为例,在目前的桌面电脑上,使用常用的数学软件Mathematica,结果瞬时就给出;而以目前所知道的最快的因子分解算法来估计,用一台每秒运行一万亿次位的计算机来分解一个200位的十进制数,大约需需要3800年,这就实现了一定时间内的运算上的不可实现性。
下面介绍RSA的加密和解密算法。
(1)随机选取的大素数p和q,还有n,其中n=p*q,p和q保密,n公开。
(2)取Ф(n)=(p- 1)*(q- 1),其中Ф(n)表示比n小的素数的个数,随机选取e ∈N,且(e,Ф(n))=1,e为加密密钥,公开。
(3)计算d,使e*d ≡1(mod (n)),称d为e对Ф(n)模的逆,其中d为解密密钥,保密。
在RSA系统中,设m为明文,且明文块的数值大小小于n,c为密文,则其加密和解密算法如下:加密算法:c=E(m ) ≡m e(mod n)解密算法:m=D(c) ≡c d(mod n)在RSA系统中(e,n)构成加密密钥,即公钥,(d,n)构成解密密钥,即私钥.在RSA的构造过程中,我们应该按照安全素数的要求选择安全素数,这样,RSA的安全性才能达到最高。
下面对RSA签名进行详细分析,RSA签名的整个过程可表示:(1)发送方采用某种摘要算法从报文中生成一个128位的散列值(称为报文摘要);(2)发送方用RSA算法和自己的私钥对这个散列值进行加密,产生一个摘要密文,这就是发送方的数字签名;(3)将这个加密后的数字签名作为报文的附件和报文一起发送给接收方;(4)接收方从接收到的原始报文中采用相同的摘要算法计算出128 位的散列值;(5)报文的接收方用RSA 算法和发送方的公钥对报文附加的数字签名进行解密;(6)如果两个散列值相同,那么接收方就能确认报文是由发送方签名的。
图1无保密机制的 RSA签名过程最常用的摘要算法叫做MD5(Message Digest 5),它的作者R.L.Rivest正是提出RSA公钥密码系统中的R。
MD5采用单向Hash函数将任意长度的字节串变换成一个128位的散列值,并且它是一个不可逆的字符串变换算法,换言之,即使看到MD5的算法描述和实现它的源代码,也无法将一个MD5 的散列值变换回原始的字符串,这一个128位的散列值亦称为数字指纹,就像人的指纹一样,它就成为验证报文身份的指纹了。
数字签名是如何完成与手写签名类同的功能的呢?如果报文在网络传输过程中被修改,接收方收到此报文后,使用相同的摘要算法将计算出不同的报文摘要,这就保证了接收方可以判断报文自签名后到收到为止,是否被修改过。
如果发送方A想让接收方误认为此报文是由发送方B签名发送的,由于发送方A不知道发送方B的私钥,所以接收方用发送方B 的公钥对发送方A加密的报文摘要进行解密时,也将得出不同的报文摘要,这就保证了接收方可以判断报文是否是由指定的签名者发送同时也可以看出,当两个散列值相同时,发送方B无法否认这个报文是他签名发送的。
4RSA算法的C++编程实现4.1 编程代码#include <iostream.h>#include <math.h>#include <stdio.h>typedef long Longtype;Longtype p,q,e;Longtype fn;Longtype MINGWEN,MIWEN;int flag = 0;typedef void (*Msghandler) (void);struct MsgMap {char ch;Msghandler handler;};/* 私钥*/struct Privatekey {Longtype e;Longtype n;} Privatekey;/*公钥*/struct PublicKey {Longtype d;Longtype n;} PublicKey;/* 检查是否为素数*/bool test_prime(Longtype m) {if (m <= 1) {return false;}else if (m == 2) {return true;}else {for(int i=2; i<=sqrt(m); i++) {if((m % i) == 0) {return false;break;}}return true;}}/* 将十进制数转化为二进制*/void switch_to_bit(Longtype b, Longtype bin[32]) {int n = 0;while( b > 0) {bin[n] = b % 2;n++;b /= 2;}}/* 界面*/void Init() {cout<<"*****************************************"<<endl; cout<<"*** RSA encoder ***"<<endl; cout<<"*** 1. 产生密钥***"<<endl;cout<<"*** 2. 加密***"<<endl; cout<<"*** 3. 解密***"<<endl; cout<<"*** 4. 相关***"<<endl;cout<<"*** 5. 退出***"<<endl; cout<<"****************************************"<<endl; cout<<"请选择界面上的数字:"<<endl;}/* 比较两个数的大小并按大小排列*/void order(Longtype &in1, Longtype &in2) {Longtype a = ( in1 > in2 ? in1 : in2);Longtype b = ( in1 < in2 ? in1 : in2);in1 = a;in2 = b;}/* 求两个数的最大公约数*/Longtype gcd(Longtype a, Longtype b) {order(a,b);int r;if(b == 0) {return a;}else {while(true) {r = a % b;a = b;b = r;if (b == 0) {return a;break;}}}}/* 用欧几里德算法求乘法逆元*/Longtype extend_euclid(Longtype m, Longtype bin) { order(m,bin);Longtype a[3],b[3],t[3];a[0] = 1, a[1] = 0, a[2] = m;b[0] = 0, b[1] = 1, b[2] = bin;if (b[2] == 0) {return a[2] = gcd(m, bin);}if (b[2] ==1) {return b[2] = gcd(m, bin);}while(true){if (b[2] ==1) {return b[1];break;}int q = a[2] / b[2];for(int i=0; i<3; i++) {t[i] = a[i] - q * b[i];a[i] = b[i];b[i] = t[i];}}}/* 快速模幂运算*/Longtype modular_multiplication(Longtype a, Longtype b, Longtype n) { Longtype f = 1;Longtype bin[32];switch_to_bit(b,bin);for(int i=31; i>=0; i--) {f = (f * f) % n;if(bin[i] == 1) {f = (f * a) % n;}}return f;}/* 产生密钥*/void produce_key() {cout<<"请输入看两个素数p和q:";cin>>p>>q;while (!(test_prime(p)&&test_prime(q))){cout<<"输入的数字不为素数!"<<endl;cout<<" 请重新输入素数p和q:";cin>>p>>q;};Privatekey.n = p * q;PublicKey.n = p * q;fn = (p - 1) * (q - 1);cout<<"fn = "<<fn<<endl;cout<<"请输入私有密钥:";cin>>e;while((gcd(fn,e)!=1)) {cout<<"e与fn不互质,请重新输入!";cout<<"请再次输入私钥e :";cin>>e;}PublicKey.d = (extend_euclid(fn,e) + fn) % fn;Privatekey.e = e;flag = 1;cout<<"PublicKey.d: "<< PublicKey.d<<" PublicKey.n: "<<PublicKey.n<<endl; cout<<"Privatekey.e: "<< Privatekey.e<<" Privatekey.n: "<<Privatekey.n<<endl; }/* 加密*/void encrypt() {if(flag == 0) {cout<<"ÇëÏÈÉèÖÃÃÜÔ¿:"<<endl;produce_key();}cout<<"请输入明文:";cin>>MINGWEN;MIWEN = modular_multiplication(MINGWEN,Privatekey.e,Privatekey.n);cout<<"加密后密文为:"<<MIWEN<<endl;}/* 解密*/void decrypt() {if(flag == 0) {cout<<"请先设置密钥:"<<endl;produce_key();}cout<<"请输入密文:";cin>>MIWEN;MINGWEN = modular_multiplication(MIWEN,PublicKey.d,PublicKey.n);cout<<"解密后明文为:"<<MINGWEN<<endl;}/* 相关信息*/void about() {cout<<"*********************************************"<<endl; cout<<"*** RSA Encoder ***"<<endl; cout<<"*********************************************"<<endl; cout<<endl<<endl;Init();}/* 消息映射*/MsgMap Messagemap[] = {{'1', produce_key },{'2',encrypt},{'3',decrypt},{'4', about },{'5',NULL}};/* 主函数*/void main() {Init();char d;while((d = getchar())!='5') {int i = 0;while(Messagemap[i].ch) {if(Messagemap[i].ch == d) {Messagemap[i].handler();break;}i++;}}4.2 结果显示与分析图2 RSA加解密程序演示结果从上图可知代码的编写实现了RSA基本的加解密过程,首先是密钥的产生过程,程序自动判断所输入的数字p和q的合法性,然后产出fn值。