利用RSA算法实现数字签名毕业论文.docx
- 文档编号:10920655
- 上传时间:2023-02-23
- 格式:DOCX
- 页数:35
- 大小:191.98KB
利用RSA算法实现数字签名毕业论文.docx
《利用RSA算法实现数字签名毕业论文.docx》由会员分享,可在线阅读,更多相关《利用RSA算法实现数字签名毕业论文.docx(35页珍藏版)》请在冰豆网上搜索。
利用RSA算法实现数字签名毕业论文
摘要
当今世界信息技术获得了前所未有的大发展,因而信息的安全性必将变得越来越受到人们的重视。
而数字签名技术是目前网络安全领域的研究热门方向。
RSA算法是第一个能同时用于加密和数字签名的算法,易于应用和理解。
RSA从提出一直到现在,它经历了各种考验。
它通过认证技术来分辨真与假。
RSA数字签名体制使用地是RSA公开密钥算法进行得数字签名。
本文主要是对RSA公开密钥密码体制的研究,并在此基础上实现了RSA的数字签名的体制。
本文的主要容包括:
关键词:
加密解密RSA算法RSA数字签名
Abstract
Nowtheinformationoftheworldisdevelopingfastly.Sothesecurityoftheinformationisbecomingmoreandmoreimportantly.Digitalsignaturefiledwillbecomehotspotsinfuture.
Itisthefirstalgorithmforbothdataencryptionanddigitalsignature.Itcanbeunderstoodeasilybypeople.RSAhasundergonevarioustestswhenitisputout.RSAasthepublickeycryptosystemrepresentativeapproveddataintegrityisakindofinformationtechnology.Itisthroughtheauthenticationtechniquestodistinguishtrueandfalse.RSAdigitalsignaturesystemusingaRSApublickeyalgorithmfordigitalsignature.
ThetextisaboutthestudyofRSApublickeyencryption,basedonthisgeneratingRSAdigitalsignature.including:
Firstlyonthebasisofpreviousresearch,asystembasedonellipticalcurveproxysignature,TheadvantageofpublickeyencryptionandthesecurityofRSAdigitalsignature(attack)Secondly,itanalyzestheprincipleofRSA,includinghowtogenerataprimenumber,howtogeneratthesecretkeysandhowtoencryptionaswellasdecrypt,Thirdly,itstatestheprincipleofMD5indetail.Fourthly,itstatesdesignandrealizationofRSAdigitalsignatureindetail.ThemainmodulesincludesproducingRSAsecretkeys,implementationofRSAencryptionalgorithmanddecryptionalgorithm,producingmessagedigestandrealizingdigitalsignatureandverificationbyRSA.
Keywords:
RSAalgorithm;encryption;decryption;RSAdigitalsignature
1绪论
1.1研究背景
当今社会是信息化社会,电子计算机和通信网络己经广泛的应用于社会的各个领域,以此为基础建立起来的各种信息系统,给人们的生活、工作带来了巨大变革。
大型信息系统将众多的计算机和只能化设备连在一个四通八达的通信网络中,共享丰富的数据库信息和计算机资源,储存大量的数据文件,完成异地之间的数据交换与通信。
信息系统的应用,加速了社会自动化的进程,减轻了日常繁杂的重复劳动,同时也提高了生产率,创造了经济效益。
信息时代虽然给我们带来了无限商机与方便,但同时也充斥着隐患与危险。
由于网络很容易受到攻击,导致信息的泄漏,引起重大损失。
由于信息技术已经成为综合国力的一个重要组成部分,因此信息安全己成为保证国民经济信息化建设健康有序发展的保障。
当今网络社会技术众多,目前在电子商务、电子政务、电子系统、电子银行等方面必备的关键技术就是数字签名。
数字签名又称为数字签字,电子签章等。
“数字签名”用来保证信息传输过程息的完整和提供信息发送者的身份认证和不可抵赖性,数字签名技术的实现基础是公开密钥加密技术,是用某人的私钥加密的消息摘要用于确认消息的来源和容。
为保证数据在网络传递中的安全性和完整性从技术上,主要考虑一下情况:
(1)如果需要使用一种方法验证数据在传输过程中是否被修改,可以使用哈希值。
(2)如果需要证明实体知道但不来回发送,或者想使用简单的哈希值以防止在传输过程中被截获,可以使用加密的哈希值。
(3)如果要隐藏通过不安全的媒介发送的数据或者永久保留数据,可以使用加密
(4)如果要验证声称是公钥所有者的人员的身份,可以使用证书。
(5)如果双方事先共享密钥,可以使用对称加密以提高速度。
(6)如果想通过不安全的媒介安全的交换数据可以使用非对称加密
(7)如果要进行身份验证和实现不可否认性,可以使用数字签名
(8)如果为了防穷举搜素而进行的攻击,可以使用加密技术产生的随机数[1]
RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。
它易于理解和操作,也十分流行。
随着越来越多的商业应用和标准化工作,RSA已经成为最具代表性的公钥加密技术。
VISA、MasterCard、IBM、Microsoft等公司协力制定的安全电子交易标准(SecureElectronicTransactions,SET)就采用了标准RSA算法,这使得RSA在我们的生活中几乎无处不在。
网上交易加密连接、网上银行身份验证、各种信用卡使用的数字证书、智能移动和存储卡的验证功能芯片等,大多数使用RSA技术。
1.2研究现状
实现数字签名的算法有很多,目前数字签名采用较多的是公钥加密技术,如DSA(DigitalSignatureAlgorithm),x.509,POP(PrettyGoodPrivacy)。
1994年美国标准与技术协会公布了数字签名标准(DSS)而使公钥加密技术广泛应用。
RSA已经成为最具代表性的公钥加密技术。
VISA、MasterCard、IBM、Microsoft等公司协力制定的安全电子交易标准(SecureElectronicTransactions,SET)就采用了标准RSA算法,这使得RSA在我们的生活中几乎无处不在。
网上交易加密连接、网上银行身份验证、各种信用卡使用的数字证书、智能移动和存储卡的验证功能芯片等,大多数使用RSA技术。
(1)研究主要成果
RSA作为最重要的公开密钥算法,在各领域的应用数不胜数。
RSA在硬件方面,以技术成熟的IC应用于各种消费类电子产品。
RSA在软件方面的应用,主要集中在Internet上。
加密连接、数字签名和数字证书的核心算法广泛使用RSA。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
RSA目前是最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
RSA的缺点主要有:
(1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
(2)分组长度太大,为保证安全性,n至少也要600bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级。
(2)发展趋势
当今社会是信息化社会,电子计算机和通信网络己经广泛的应用于社会的各个领域,以此为基础建立起来的各种信息系统,给人们的生活、工作带来了巨大变革。
信息系统的应用,加速了社会自动化的进程,减轻了日常繁杂的重复劳动,同时也提高了生产率,创造了经济效益。
信息安全技术在信息化迅速发展的今天己进入了高速发展的新时期,形成了密码技术、可信计算技术、电磁辐射泄露防护技术、系统入侵检测技术和计算机病毒检测消除技术等多个安全防护技术门类。
(3)存在问题
目前普遍采用的数字签名算法,都是基于下面三个数学难题的基础之上:
(1)整数的因式分解(IntegerFactorization)问题,如RSA算法。
(2)离散对数(DiscreteLogarithm)问题,如ElGamal,DSA,Schnorr等算法;(3)椭圆曲线(EllipticCurve)问题,如ECDSA算法。
[2]
2密码学基本概念
密码学包括两个方面:
密码编码学和密码分析学。
密码编码学就是研究对数据进行变换的原理、手段和方法的技术和科学。
密码分析学是为了取得秘密的消息,而对密码系统与其流动数据进行分析,是对密码原理、手段和方法进行分析、攻击的技术和科学。
密码学的理论基础是数学,其基本思想是隐藏、伪装信息,使XX者不能得到消息的真正含义。
伪装(变换)之前的信息是原始信息,成为明文;伪装之后的消息,看起来是一串无意义的乱码,称为密文。
把明文伪装成密文的过程称为(encryption),该过程使用的数学变换就是加密算法。
把密文还原成明文的过程称为解密(decryption),该过程使用的数学变换,通常是加密时数学变换的逆变换,就是解密算法。
加密与解密通常需要参数控制,我们把该参数称为密钥,有时也称为密码。
加密时使用的为加密密码(加密密钥),解密时使用的为解密密码(解密密钥)。
[3]加密密钥与解密密钥可能一样也可能不同。
一样时称为对称型或单钥的,不一样时称为非对成型或双钥的。
那么一个密码系统或称其为密码体制,是由明文空间、密文空间、密钥空间、加密算法与解密算法五个部分组成。
明文、密文、密钥空间分别表示全体明文、全体密文、全体密钥的集合;加密与解密算法通常是一些公式、法则或程序,规定了明文与密文之间的数学变换规则。
下面用字母分别表示这个概念,密钥K=
把明文加密为密文:
C=E(M,Ke)密文解密为明文:
M=D(C,Kd)=D(E(M,Ke),Kd)。
上述的讲解可用下图
图2-1加密过程与密码分析
2.1公钥密码基本概念
公钥密码与以前所有的密码方法都大相径庭:
一是以前的密码算法都基于代换与置换操作,而公钥密码使用数学数进行变换;二是公钥密码体制使用非对称的方式,使用两个密钥(加密密钥与解密密钥),而传统密码算法仅仅使用一个密钥。
公钥密码体制的提出首先是为了解决利用传统密码体制进行密钥分发时遇到的问题,数字签名也是其重要应用之一。
[3]
从1976年起,学者们提出了许多种公钥加密方法,它们的安全性都是基于复杂的数学难题。
根据所基于的数学难题来分类,有以下三类系统目前被认为是安全和有效的:
(1)基于大整数因子分解的:
RSA和Rabin-Williams。
(2)基于离散对数问题的:
DSA和EIGamal。
(3)基于椭圆曲线离散对数问题的:
椭圆曲线密码系统。
公开密钥加密算法与对称密钥加密算法相比来说,安全性能更好,密钥管理、分配都容易实现,其中有些加密算法还能应用在数字签名上,但是它们相对于对称密钥加密算法运行速度要慢得多,所以不能加密大量的数据。
2.1.1公钥密码原理
公开密钥密码常用的、成熟的公钥算法是RSA。
它与传统的对称密钥算法有本质的区别,对称密钥算法常用的是DES算法,加/解密时用的是同一个密钥。
而公钥算法利用的是非对称的密钥,即利用两个足够大的质数与被加密原文相乘生产的积来加/解密。
这两个质数无论是用哪一个与被加密的原文相乘(模乘),即对原文件加密,均可由另一个质数再相乘来进行解密。
但是,若想用这个乘积来求出另一个质数,就要进行对大数分解质因子,分解一个大数的质因子是十分困难的,若选用的质数足够大,这种求解几乎是不可能的。
公、密钥对的用法是,当发方向收方通信时发方用收方的公钥对原文进行加密,收方收到发方的密文后,用自己的私钥进行解密,其中他人是无法解密的,因为他人不拥有自己的私钥,这就是用公钥加密,私钥解密用于通信;而用私钥加密文件公钥解密则是用于签名,即发方向收方签发文件时,发方用自己的私钥加密文件传送给收方,收方用发方的公钥进行解密。
但是,在实际应用操作中发出的文件签名并非是对原文本身进行加密,而是要对原文进行所谓的“哈希”(Hash)运算,即对原文作数字摘要。
该密码算法也称单向散列运算,其运算结果称为哈希值,或称数字摘要,也有人将其称为“数字指纹”。
哈希值有固定的长度,运算是不可逆的,不同的明文其哈希值是不同的,而同样的明文其哈希值是一样并且是唯一的,原文的任何改动,其哈希值就要发生变化。
数字签名是用私钥对数字摘要进行加密,用公钥进行解密和验证[4]
公钥密码算法使用两个密钥,其中一个用于加密(加密密钥),另外一个用于解密(解密密钥)。
公钥密码算法具有如下特征:
加密密钥与解密密钥时本质上不通的,也就是说如果仅仅知道密码算法和加密密钥,而要确定解密密钥,在计算上是不可行的;大多数公钥密码算法的加密密钥与解密密钥具有互换的性质。
如RSA算法,密钥对中的一个用于加密,另一个用于解密。
2.1.2公钥密码的理论基础
公钥密码体制的安全性主要取决于构造公钥算法所依赖的数学问题,通常要求加密函数具有单向性,即求逆很困难。
因此,公钥密码的理论基础是陷门单向函数。
1单向函数
(1)对于所有属于f定义域的任一x,可以很容易算出f(x)=y.
(2)对于几乎所有属于f值域的任一y,则在计算上不可能求出x,使得y=f(x).
2单向陷门函数
设f是一个函数,t是与f有关的一个参数,对于任一给定的x。
计算y,使得y=f(x)是容易的。
如果当不知道参数t是,计算的f逆函数是难解的,但但知道参数t时,计算f的逆函数是容易的,则称f是一个单向陷门函数,参数称为陷门。
[5]
2.2对称加密体制
对称加密算法,又称私钥加密算法,就是加密密钥能够从解密密钥中推出来,反过来也成立,在大多数对称算法中,加密解密密钥是一样的。
对称算法的加密和解密表示为:
(2-1)
对称加密算法的典型代表有:
DES,AES,3DES,RC2,RC4,RCS,RC6,IDEA等。
以DES为代表的对称密钥加密算法的设计原则主要基于信息论的混乱和扩散。
混乱指的是密钥和明文与密文之间的依赖关系应该尽量复杂,以破坏分组间的统计规律,通常依靠多轮迭代来实现;扩散则应使密钥和明文的每一位影响密文中尽可能多的位数,这样可以防止逐段破译,并通过S盒的非线性变换来实现。
实际上,所有的对称密钥加密算法都采用Feistel网、S盒与多次迭代等思想。
对称加密有速度上的优点,用软件实现,对称密钥比非对称密钥快100-1000倍。
然而,如果一个消息想以密文的形式传到接收者,我们应该找到一个方法安全传输密钥。
对称加密系统用键长来衡量加密强度,40比特的键长被认为比较脆弱,128比特比较健壮。
对称加密算法的缺点则是密钥分发困难,密钥管理难,无法实现数字签名。
对称加密算法的优点是强度高,加解密速度快,适合加密大量数据。
攻击者如果对加密后的数据进行破译,唯一的办法就是对每个可能的密钥执行穷搜索。
而采用这种加密技术,即使使用最快的计算机执行这种搜索,耗费的时间也是相当的长。
如果使用较大的密钥,破译将会更加的困难。
[6]
3数字签名的基本概念和理论
3.1数字签名概念
数字签名是一种类似写在纸上的普通的物理签名,但是使用了公钥加密领域的技术实现,用于鉴别数字信息的方法。
一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。
数字签字由公钥密码发展而来,它在网络安全,包括身份认证、数据完整性、不可否认性以与匿名性等方面有着重要应用。
特别是在大型网络安全通信中的密钥分配、认证以与电子商务系统中都有重要的作用,数字签名的安全性日益受到高度重视。
数字签名是指用户用自己的私钥对原始数据的哈希摘要进行加密所得的数据。
信息接收方使用信息发送方的公钥对附在原始信息后的数字签名进行解密后获得哈希摘要,并通过与自己用收到的原始数据产生的哈希摘要对照,便可确信原始数据信息是否被篡改。
这样就保证了消息来源的真实性和数据传输的完整性。
[7]
3.2数字签名理论
数字签名的实现通常采用非对称密码与对称密码体系。
不同的是,非对称密码体系的加密和解密过程分别通过两个不同的密钥来实现,其中一个密钥以公开,称为公开密钥,简称公钥,另一个有用户自己秘密保管,称为密钥,简称私钥。
只有相应的公钥能够对用私钥加密的信息进行解密,反之亦然。
以现在的计算机运算能力,从一把密钥推算出另一把密钥是不大可能的。
所以,数字签名具有很大的安全性,这是它的一个优点。
数字签名的基本方式主要是:
信息发送方首先通过运行散列函数生成一个欲发送报文的信息摘要,然后用其私钥对这个信息摘要进行加密以形成发送方的数列签名,这个数字签名将作为报文的附件和报文一起发送给报文的接收方。
接收方在收到信息后首先运行和发送一样的散列函数生成接收报文的信息摘要,然后再用发送方的公钥进行解密,产生原始报文的信息摘要,通过比较两个信息摘要是否一样就可以确认发送方和报文的准确性。
当然,上述过程只是对报文进行了签名,对其传送的报文本身并未。
为了同时实现数字签名和秘密通信,发送者可以用接收方的公钥对发送的信息进行加密,这样,只有接收方才能通过自己的私钥对报文进行接么,其它人即使获得报文并知道发送者的身份,由于没有接收方的密钥也无法理解报文。
3.3数字签名过程
为了实现网络环境下的身份鉴别、数据完整性认证和抗否认的功能,数字签名应满足以下要求:
(1)签名者发出签名的消息后,就不能再否认自己所签发的消息;
(2)接收者能够确认或证实签名者的签名,但不能否认;
(3)任何人都不能伪造签名;
(4)第三方可以确认收发双方之间的消息传送,但不能伪造这一过程,这样,当通信的双方关于签名的真伪发生争执时,可由第三方来解决双方的争执。
[8]
对于一个典型的数字签名体系而言,它必须包含2个重要的组成部分:
即签名算法(SignatureAlgorithm)和验证算法(VerificationAlgorithm)。
为了满足上述4点要求,数字签名体系必须满足2条基本假设:
(1)签名密钥是安全的,只有其拥有者才能使用。
(2)使用签名密钥是产生数字签名的唯一途径。
3.3.1.发送方签名过程
(1)为保证签名的速度,A先将原文进行单向HASH运算生成定长的消息摘要A
图3-1生产摘要
(2)利用自己的私钥加密消息摘要得到数字签名A,并将数字签名附在原消息后面
图3-2加密摘要
(3)通讯时用户A将自己的名文一起通过网络送给通讯对方即用户B
图3-3发送原文和摘要
3.3.2.接收方验证过程
接收方B接收到发送方A的签名消息后,对A的签名消息进行验证的过程如下:
(1)将消息中的原消息与数字签名分离出来
图3-4分离明文和数字签名
(2)使用A的公钥解密数字签名得到摘要
图3-5得到摘要
(3)利用与发送方A一样的散列函数重新计算原消息的摘要
图3-6接受方计算摘要
(4)比较解密后获得的消息摘要A与重新计算产生的消息摘要B,若相等则说明消息在传输过程中没有被篡改,否则消息不可靠。
图3-7验证数字签名
3.3.3数字签名过程
图3-8数字签名流程图
4数字签名常见的算法与其数字签名
数字签名的方法有很多,现在主要应用的数字签名主要有:
RSA,DSA以与椭圆曲线数字签名。
4.1DSA数字签名算法
.DSA是SChnorr和ELGAmal签名算法的变种,被美NIST作为DSS是一种公开密钥算法,它不能用作加密,只能用作数字签名。
DSA使用公开公钥,为接受者验证数据的完整性和数据发送者的身份。
它也用作于由第三方去确定签名和所签收数据的真实性。
信息交流中,接受方希望收到的信息未被篡改,还希望收到的信息确实是自己认定的发送方所发,那么接受方和发送方就可以约定,共同使用DSA来实现。
4.1.1DSA数字签名实现的三个步骤
(1)参数与密钥生成
(2)签名的算法(3)签名的验证算法
1.初始过程
(1)系统参数:
大素数p,q且q为p-1的因子,并满足2^511
g∈Zp,且满足g=h^(p-1)/qmodp,其中h是一整数,1
p,q,g作为系统参数,供所有用户使用,在系统公开。
(2)用户私钥:
用户选取一个私钥x,1 (3)用户公钥: 用户的公钥y,y=g^xmodp,公开。 2.签名过程 对待签消息m,设0 (1)生成一随机整数k,k∈Zp*; (2)计算r=(g^kmodp)modq; (3)计算s=k^-1*(h(m)+x*r)modq。则(r,s)为签名人对m的签名。 3.验证过程 (1)首先检查r和s是否属于[0,q],若不是,则(r,s)不是签名; (2)计算t=s^-1modq,r’=(g^h(m)tmodq(y^r*tmodq)modp)modq; (3)比较r’=r是否成立? 若成立,则(r,s)为合法签名,则(r,s)为签名人对m的签名 4.1.2DSA的安全性 DSA的安全性主要依赖于整数有限域离散对数难题。 其安全性与RSA相比差不多,DSA的一个重要特点是两个素数公开,这样,当使用别人的P和Q是,即使不知道私钥,你也能确认他们是否是随机产生的,还是做了手脚的。 RSA算法是做不到的。 素数P必须足够大,且p-1至少包含一个大素数因子以抵抗Pohlig&hellman算法的攻击。 M一般都应采用信息HASH的值。 DSA安全性主要依赖于p和g,若选取不当则签名容易伪造,应保证g对于p-1的大素数因子不可约。 DSA的一个主要特点是两个素数公开,这样,当使用别人的p和g,即使不知道私钥,你也能确认他们是随机产生的。 [9] 4.2椭圆曲线代理签名体制 4.2.1椭圆曲线数字签名ECDSA 椭圆曲线签名算法ECDSA是基于椭圆曲线密码体制(ECC)的数字签名算法。 DSA是美国国家标准局制定的数字签名算法,他是建立在有限域乘法群上的。 对于有限域上的椭圆曲线密码系统,数字签名标准建议采用椭圆曲线数字签名算法ECDSA,下面给出该算法的过程。 假设一组椭圆曲线的参数组为(q,FR,a,b,G,n,h)。 其中q是域的阶,FR指示域中元素的表示方法,a,b是两个系数,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 利用 RSA 算法 实现 数字签名 毕业论文