网络信息安全RSA密码数字签名技术Word格式文档下载.docx
《网络信息安全RSA密码数字签名技术Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《网络信息安全RSA密码数字签名技术Word格式文档下载.docx(11页珍藏版)》请在冰点文库上搜索。
密码体制的分类有很多,其中一种是根据加密算法和解密算法所使用的密钥是否相同,可以将密码体制分为对称密钥密码体制(单钥密码体制)和非对称密钥密码体制(公钥密码体制),这两种密码体制各有自己的长处和短处,因此现在采用了两种的混合体。
公钥密码体制的特点是:
接收方B产生一对密钥(PK和SK);
PK公开,SK保密;
从PK推出SK是很困难的;
A、B双方通信时,A通过任何途径取得B的公钥,用B的公钥加密信息,加密后的信息可通过任何不安全信道发送。
B收到密文信息后,用自己私钥解密恢复出明文。
公钥密码体制已成为确保信息的安全性的关键技术。
RSA公钥密码体制到目前为止还是一种被认可为安全的体制。
RSA公钥加密算法是第一个既能用于数据加密也能用于数字签名的算法。
它易于理解和操作,也十分流行。
随着越来越多的商业应用和标准化工作,RSA已经成为最具代表性的公钥加密技术。
VISA、MasterCard、IBM、Microsoft等公司协力制定的安全电子交易标准(SecureElectronicTransactions,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(modn)=b(modn),则策划能够两整数a和b模n同余。
也就是n能整除(a-b),即n|(a-b).
同余的性质:
n|(a-b),→a≡bmodn
(amodn)=(bmodn),→a≡bmodn
a≡bmodn,→b≡amodn
a≡bmodn,b≡cmodn,→a≡cmodn
这里要解释一下,≡是数论中表示同余的符号。
公式中,≡符号的左边必须和符号右边同余,也就是两边模运算结果相同。
2.4加法逆、乘法逆
加法逆:
对于加法+,若x+y≡0modn,则y为x的模n加法逆元,也称y为-x。
当x,y∈Z(Z表示模n完全剩余系),有唯一的加法逆元。
乘法逆元:
对于乘法×
,若xy≡1modn,则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)≡1modn,所以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(modn)
解密算法:
D(C)=C^d(modn)
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≡1modf(n),即3×
d≡1mod20。
d怎样取值呢?
可以用试算的办法来寻找。
试算结果见下表:
通过试算我们找到,当d=7时,e×
d≡1modf(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(modn)得
C1≡M1^e(modn)=11^3(mod33)=11
C2≡M2^e(modn)=05^3(mod33)=26
C3≡M3^e(modn)=25^3(mod33)=16
因此,得到相应的密文信息为:
11,26,16。
3.4密文解密
用户B收到密文,若将其解密,只需要计算M≡C^d(modn),即:
M1≡C1^d(modn)=11^7(mod33)=11
M2≡C2^d(modn)=26^7(mod33)=05
M3≡C3^d(modn)=16^7(mod33)=25
用户B得到明文信息为:
根据上面的编码表将其转换为英文,我们又得到了恢复后的原文“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=1mod(p-1)(q-1),公开n和e,将p、q和d保密,则所有的RSA参数为k=(n,p,q,e,d)。
数字签名:
对消息M∈Z定义
S=Sig(M)=M^dmodn
为对M的签名。
签名验证:
对给定的M、S可按下式验证:
设M’=S^emodn,如果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≡1mod20
由上述可知d=7
公开密钥:
k1=(33,3)
私有密钥:
k2=(3,11,7)
5〉签名和加密过程:
签名:
S=Sig(M)=M^dmodn≡mod=2^7mod33=29
6〉验证过程:
M’=S^emodn,判断M是否等于M’。
M’=S^emodn≡29^3mod33≡16*29mod33=2
因为M=M’,所以接受签名。
五.总结
通过这一次小论文的写作,好好的了解以下我们所熟悉使用的数字签名的工作原理.很多电子消费里面都采用了数字签名技术来确保消费的安全性.通过这一次了解,知道了数字签名的安全保障原理.只能是客户自己使用,要发送信息时,比如银行卡号以及密码,用户使用自己的秘密密钥进行加密,为了防止中途信息被窥探,再使用收发端的公开密钥进行多极加密,然后解密时,只能用接收端的秘密密钥进行解密,秘密密钥只能是特定客户拥有.而攻击者拿到接收端的公开密钥和密文是不能推出秘密密钥和明文的.所以,保证了传输过程的绝对安全.
不过我翻了一些资料察看真正的密码学研究,里面的公开密钥和秘密密钥都是特别繁琐的,而不是我上面所涉及的那样简简单单的.要是这样简单的话,那就不安全了.有些密文要求最少由1024个字节组成.所以在没有获得秘密密钥的情况下,去窃取传送信息是不可能的.因为运算量太大了.
想要好好的研究密码学,需要花好多的时间.也有专门的密码学研究课程.所以以上只是简单的理解了一下它们的工作原理.