资源描述
信息科学与工程学院
网络信息安全论文
课 程 网络信息安全
课 题: RSA数字署名
姓 名:
学 号:
专 业:
年 级:
指导教师:
年 月 日- 年 月 日
引言
自20世纪40年代计算机在美国诞生以来,计算机应用已逐渐在社会的各个领域中普及。20世纪80年代中期,随着计算机网络技术的成熟,计算机网络应用迅速普及。随着着我国国名经济信息化进程的推动和信息技术的普及,我国各行各业对计算机网络的依赖限度越来越高,这种高度依赖使社会变得十分“脆弱”,一旦计算机网络受到袭击,不能正常工作,就会使整个社会陷入危机。所以信息与信息安全管理,已经成为社会公共安全工作的重要组成部分。
信息安全的基础就是密码理论,信息安全的基密性、完整性和抗否性都依赖于密码算法。密码学重要研究两个方面:密码编码学和密码分析学。密码编码学重要研究对信息进行互换,以保护信息在信道的传递过程中不被别人窃取、解密和运用的方法,而密码分析学则与密码编码学相反,它重要研究如何分析和破译密码。两者之间既互相对立又互相促进。密码体制的分类有很多,其中一种是根据加密算法和解密算法所使用的密钥是否相同,可以将密码体制分为对称密钥密码体制(单钥密码体制)和非对称密钥密码体制(公钥密码体制),这两种密码体制各有自己的长处和短处,因此现在采用了两种的混合体。 公钥密码体制的特点是:接受方B产生一对密钥(PK和SK);PK公开,SK保密;从PK推出SK是很困难的;A、B双方通信时,A通过任何途径取得B的公钥,用B的公钥加密信息,加密后的信息可通过任何不安全信道发送。B收到密文信息后,用自己私钥解密恢复出明文。公钥密码体制已成为保证信息的安全性的关键技术。RSA公钥密码体制到目前为止还是一种被认可为安全的体制。RSA公钥加密算法是第一个既能用于数据加密也能用于数字署名的算法。它易于理解和操作,也十分流行。随着越来越多的商业应用和标准化工作,RSA已经成为最具代表性的公钥加密技术。VISA、MasterCard、IBM、Microsoft等公司合力制定的安全电子交易标准(Secure Electronic Transactions,SET)就采用了标准RSA算法,这使得RSA在我们的生活中几乎无处不在。网上交易加密连接、网上银行身份验证、各种信用卡使用的数字证书、智能移动电话和存储卡的验证功能芯片等,大多数使用RSA技术。
一.公钥密码体制
公钥密码算法的最大特点是采用两个相关密钥将加密和解密能力分开,其中一个密钥是公开的,即公开密钥,用于加密;另一个为用户专用,因而是保密的,称为秘密密钥,用于解密。因此公钥密码体制又被称为双密钥密码体制。算法有以下的重要性:已知密码算法和加密密钥,求解密密钥在计算上是不可行的。
公钥密钥算法应满足以下规定:
(1)接受方B产生密钥对(公开密钥PKB,和秘密钥SKB)在计算上是容易的。
(2)发送方A用接受方的公开密钥对消息m进行加密以产生密文c,获取c在计算上是容易的。
(3)接受方B用自己的秘密密钥对c解密,在计算上也是容易的。
(4)袭击者由B的公开钥PKB求秘密钥SKB在计算上是不可行的。
(5)袭击者由密文c和B公开的密钥PKB恢复明文m在计算上是不可行的。
(6)加密解密的顺序可以更换。
二.数字署名的基本原理
政治,军事,外交等领域的文献,命令和条约,商业中的契约,以及个人之间的书信等,传统上都采用手写或印章,以便在法律上能认证、核准和生效。随着计算机通信的发展,人们希望通过电子设备实现快速、远距离的交易,数字署名便应运而生,并开始用于商业通信系统,如电子邮递、电子转帐和办公自动化等系统中。
数字署名也是一种认证机制,它是公钥密码学发展过程中的一个重要组成部
分,是公钥密码算法的典型应用。数字署名的应用过程是,数据源发送方使用自己的私钥对数据校验和或其他与数据内容有关的信息进行解决,完毕对数据的合法“署名”,数据接受方则运用发送方的公钥来验证收到的消息上的“数字署名”,以确认署名的合法性。
类似手写署名,数字署名也应当满足一下规定:
(1) 收方可以确认或证实发方的署名,但不能伪造。
(2) 发方发出署名的消息送收方之后,就不能再否认他所签发的消息。
(3) 收方对已收到的署名消息不能否认,即收到认证。
(4) 第三者可以确认收发双方之间的消息传送,但不能伪造者以过程。
1. 数字署名与手写署名的区别
数字署名与手写署名的区别在于:手写署名是模拟的,且因人而异;数字署名是0和1的数字串,因消息而异。数字签民与消息认证的区别在于:消息认证使收方能验证消息发送者及所发的消息内容是否被篡改过。当收发者之间没有利害冲突时,这对于防止第三者的破坏来说是足够了。但当收者和发者之间有利害冲突时,单纯用消息认证技术就无法解决他们之间的纠纷,此时需要借助数字署名技术。
为了实现署名的目的,发方需向收方提供足够的非保密信息,以便使其能验证消息的署名,但又不泄露用于生产署名的机密信息,以防止别人伪造署名。因此,署名者和证实者可公用的信息不能太多。任何一种产生署名的算法或函数都应当提供这两种信息,并且从公开的信息很难推测出用于产生署名的机密信息。此外,任何一种数字署名的实现都有赖于精心设计的通信协议。
2.数字署名的分类
数字署名有两种:一种是对整个消息的署名,一种是对压缩消息的署名,它们都是附加被署名信息之后或某一种特定位置上的一段署名图样。若按明、密纹的相应关系划分,每一种又可以分为两个子类:一类是数字性拟定署名,其明文与密文一一相应,它对特定消息的署名不变化(使用署名者的密钥署名),如RSA、ElGamal等署名;另类是随机化的或概率式数字署名,它对同一消息的署名是随机变化的,取决于署名算法中随机参数和取值。
一个署名体制一般包具有两个组成部分,即署名算法和验证算法。对M消息的署名可以简写为Sig(M)= s(有时为了说明密钥K在署名中的作用,也可以将署名写为Sig(M,k),而对s的证实简记为Ver(s)={真,伪}={1,0}。署名算法或署名密钥是秘密的,只有署名人掌握。证实算法应当公开,以便于他们进行验证。
一个署名体制可以由量(M,S,K,V)表达,其中M为明文空间,S是署名的集合,K是密钥空间,V是证实函数的值域,由真,伪构成。
对于每一k∈K,有一署名算法,易于计算s=Sig(k,m)∈S。运用公开的证实算法:
Ver(s,m)∈{真,伪}
可以验证署名的真伪。
它们对每一m∈M,真署名Sig(k,m)∈S为M到S的映射.易于验证S是否为M
的署名.
Ver(s,m)=真,当Sig(s,m)满足验证方程.
Ver(s,m) = 伪,当Sig(s,m)不满足验证方程.
三.RSA密码算法
1.RSA(Rivest-Shamir-Adelman)加密体制是一种公开的密码体制。RSA公匙密码体制是又R.L.Rivest,A.Shamir和L.Adelman于1978年提出的。由于RSA算法很完善,即可用于数据加密,又可用于数字署名,安全性良好,易于实现和理解,所以已经成为一种应用极广的公匙密码算法,它是基于数论的非对称(公开钥)密码体制。目前,RSA在许多场合有广泛的应用。
2.RSA运用的数论基础:
2.1产生素数
(1)反素数n必不能被2- (事实上一个数最大公约数小于或等于 )之间所有素数的整数。
(2)除2以外所有素数为奇数,有素数的定义来决定算法
2.2求最大公约数
设b,c为整数b>0,c>0,b>c,c的最大公约数记作gcd(b,c)可以运用欧几里得算法:每次余数为除数除以上一次的除数直到余数为0为止,则上次的余数为最大公约数,可以现设b为上次的除数,c为余数,按欧几里得算法求出gcd(b,c)。
2.3 互素
互素:假如gcd(a,b)=1,则成a与b互素。例如21与50。
同余:假如a(mod n)=b (mod n),则策划可以两整数a和b模n同余。也就是n能整除(a-b),即n|(a-b).
同余的性质:
n |(a-b),→a≡b mod n
(a mod n)= (b mod n),→a≡b mod n
a ≡ b mod n,→ b≡a mod n
a≡b mod n,b≡c mod n,→a ≡ c mod n
这里要解释一下,≡是数论中表达同余的符号。公式中,≡符号的左边必须和符号右边同余,也就是两边模运算结果相同。
2.4 加法逆、乘法逆
加法逆:对于加法+,若x+y ≡0 mod n ,则y为x的模n加法逆元,也称y为-x。当x,y∈Z(Z表达模n完全剩余系),有唯一的加法逆元。
乘法逆元:对于乘法×,若xy≡1 mod n,则y为x的模n乘法逆元,也称y为x的倒数,记为1/x,或者x^-1。
对于乘法,不一定有逆元。设a∈Z,gcd(a,n)=1,则a在Z中有乘法逆元。
2.5 欧拉函数
设n为一个正整数,小于n且与n互素的正整数的个数为n的欧拉函数,记为∮(n)。
定理:若n是两个互素的整数p和q的乘积,则∮(n)=∮(p)∮(q)。
若p和q为不同的素数,则∮(n)=∮(p)∮(q)=(p-1)(q-1)。
欧拉定理:若a和n互素,则a^∮(n)≡1 mod n,所以a的逆元为a^(∮(n)-1)。
3.RSA公钥密码方案
建立一个RSA密码体制的过程如下:
(1)用户选择一对不同的大素数p和q,将p和q保密。
(2)令n=pq,用户公布n。∮(n)=(p-1)(q-1),此外∮(n)是欧拉函数,保密。
(3)选取正整数d,使其满足gcd(d,∮(n))=1,将d保密。
(4)最后根据公式:ed≡1(mod∮(n)),计算e并公开。
公开密钥:k1=(n,e)
私有密钥:k2=(p,q,d)
RSA是一种发分组密码系统,加密时一方面将明文表达成从0到n-1之间的整数。假如明文太长,可将其变成为n进制的形式,即令
M=M0+M1n+M2n^1+……+Msn^s
然后分别加密(M0,M1,……,Ms)。
(5) 加密算法:C=E(M)≡M^e(mod n)
解密算法:D(C)=C^d(mod n)
3.实例描述
通过一个简朴的例子来理解RSA的工作原理。为了便于计算。在以下实例中只选取小数值的素数p,q,以及e,假设用户A需要将明文“key”通过RSA加密后传递给用户B,过程如下:
3.1设计公私密钥(e,n)和(d,n)
令p=3,q=11,得出n=p×q=3×11=33;f(n)=(p-1)(q-1)=2×10=20;取e=3,(3与20互质)则e×d≡1 mod f(n),即3×d≡1 mod 20。
d如何取值呢?可以用试算的办法来寻找。试算结果见下表:
通过试算我们找到,当d=7时,e×d≡1 mod f(n)同余等式成立。因此,可令d=7。从而我们可以设计出一对公私密钥,加密密钥(公钥)为:KU =(e,n)=(3,33),解密密钥(私钥)为:KR =(d,n)=(7,33)。
3.2英文数字化
将明文信息数字化,并将每块两个数字分组。假定明文英文字母编码表为按字母顺序排列数值,即:
则得到分组后的key的明文信息为:11,05,25。
3.3明文加密
用户加密密钥(3,33) 将数字化明文分组信息加密成密文。由C≡M^e(mod n)得
C1≡M1^e(mod n)=11^3(mod 33)=11
C2≡M2^e(mod n)=05^3(mod 33)=26
C3≡M3^e(mod n)=25^3(mod 33)=16
因此,得到相应的密文信息为:11,26,16。
3.4密文解密
用户B收到密文,若将其解密,只需要计算M≡C^d(mod n),即:
M1≡C1^d(mod n)=11^7(mod 33)=11
M2≡C2^d(mod n)=26^7(mod 33)=05
M3≡C3^d(mod n)=16^7(mod 33)=25
用户B得到明文信息为:11,05,25。根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“key”。
四.基于RSA算法的数字署名技术
1.RSA密码体制的署名实现图:
其中SKA表达A自己的密钥。PKA为A自己公开的密钥。
A用自己的密钥SKA对姚发送的信息m加密,得到加密文c,将c发往B,B用A公用的密钥PKA对c解密。
由于从m到c是通过A的秘密钥SKA加密,只有A才干做到。因此c可作为A对m的数字署名。另一方面,任何人只要得不到A的秘密钥SKA,就不能篡改m,所以以上过程获得了对消息来源和消息完整性的认证。
以上认证过程中,由于信息是有发送者自己的密钥加密的,所以不能被别人篡改,但是却会导致信息被窃听。所以我们使用双重加密、解密。
一方面发送者对信息使用密钥加密,用于提供数字署名,然后又使用接受端产生的公开密钥加密,解密的时候是逆过程,先用接受方自己的密钥解密,然后用发送放的公开密钥解密。
2.RSA署名
安全参数:令n=pq,p和q是大素数,选e并计算出d,使得ed=1 mod (p-1)(q-1),公开n和e,将p、q和d保密,则所有的RSA参数为k=(n,p,q,e,d)。
数字署名:对消息M∈Z定义
S=Sig(M)=M^d mod n
为对M的署名。
署名验证:对给定的M、S可按下式验证:设M’=S^e mod n,假如M'=M,则署名为真;否则,不接受署名。
显然,由于只有署名者知道d,由RSA体制可知,其别人不能伪造署名,但容易证实所给(M,S)对是不是消息M和相应的署名所构成的合法对。RSA体制的安全性依靠于n=pq分解的复杂性。
3.基于RSA密钥算法的数字署名实例举例
发送端输入明文m=2,令p=3,q=11,求其署名以及验证过程。
1〉 n=pq=11*3=33;Z={0,1,……,32}
2〉 ∮(n)=(p-1)(q-1)=(11-1)(3-1)=20;
3〉 取e=3,gcd(d,∮(n))=gcd(3,20)=1;
4〉 ed≡1(mod ∮(n)),计算d。
3d≡1mod 20
由上述可知d=7
公开密钥:k1=(33,3)
私有密钥:k2=(3,11,7)
5〉 署名和加密过程:
署名:S=Sig(M)=M^d mod n≡mod =2^7 mod 33= 29
6〉 验证过程:
M’=S^e mod n,判断M是否等于M’。
M’=S^e mod n≡29^3 mod 33 ≡ 16*29mod 33=2
由于M=M’,所以接受署名。
五.总结
通过这一次小论文的写作,好好的了解以下我们所熟悉使用的数字署名的工作原理.很多电子消费里面都采用了数字署名技术来保证消费的安全性.通过这一次了解,知道了数字署名的安全保障原理.只能是客户自己使用,要发送信息时,比如银行卡号以及密码,用户使用自己的秘密密钥进行加密,为了防止半途信息被窥探,再使用收发端的公开密钥进行多极加密,然后解密时,只能用接受端的秘密密钥进行解密,秘密密钥只能是特定客户拥有.而袭击者拿到接受端的公开密钥和密文是不能推出秘密密钥和明文的.所以,保证了传输过程的绝对安全.
但是我翻了一些资料察看真正的密码学研究,里面的公开密钥和秘密密钥都是特别繁琐的,而不是我上面所涉及的那样简简朴单的.要是这样简朴的话,那就不安全了.有些密文规定最少由1024个字节组成.所以在没有获得秘密密钥的情况下,去窃取传送信息是不也许的.由于运算量太大了.
想要好好的研究密码学,需要花好多的时间.也有专门的密码学研究课程.所以以上只是简朴的理解了一下它们的工作原理.
展开阅读全文