RSA加密算法与数字签名

RSA加密算法与数字签名

RSA加密算法
该算法于1977年由美国麻省理工学院MIT(Massachusetts Institute of Technology)的Ronal Rivest,

Adi Shamir和Len Adleman三位年轻教授提出,并以三人的姓氏Rivest,Shamir和Adlernan命名为RSA算

法。该算法利用了数论领域的一个事实,那就是虽然把两个大质数相乘生成一个合数是件十分容易的事

情,但要把一个合数分解为两个质数却十分困难。合数分解问题目前仍然是数学领域尚未解决的一大难

题,至今没有任何高效的分解方法。与Diffie-Hellman算法相比,RSA算法具有明显的优越性,因为它无

须收发双方同时参与加密过程,且非常适合于电子函件系统的加密。

RSA公共密钥加密算法的核心是欧拉(Euler)函数ψ。对于正整数n,ψ(n)定义为小于n且与n互质的正整

数的个数。例如ψ(6) = 2,这是因为小于6且与6互质的数有1和5共两个数;再如ψ(7) = 6,这是因为

互质数有1,2,3,5,6共6个。

欧拉在公元前300多年就发现了ψ函数的一个十分有趣的性质,那就是对于任意小于n且与n互质的正整数

m,总有mψ(n) mod n = 1。例如,5ψ(6) mod 6 = 52 mod 6= 25 mod 6 =1。也就是说,在对n求余的

运算下,ψ(n)指数具有周期性。也就是说,在对n求余的运算下,ψ(n)指数具有周期性。

当n很小时,计算ψ(n)并不难,使用穷举法即可求出;但当n很大时,计算ψ(n)就十分困难了,其运算

量与判断n是否为质数的情况相当。不过在特殊情况下,利用ψ函数的两个性质,可以极大地减少运算量



性质1:如果p是质数,则ψ(p) = (p-1)。

性质2:如果p与q均为质数,则ψ(p·q) = ψ(p)·ψ(q) = (p-1)(q-1)。

RSA算法正是注意到这两条性质来设计公共密钥加密系统的,p与q的乘积n可以作为公共密钥公布出来,

而n的因子p和q则包含在专用密钥中,可以用来解密。如果解密需要用到ψ(n),收信方由于知道因子p和

q,可以方便地算出ψ(n) = (p-1)(q-1)。如果窃听者窃得了n,但由于不知道它的因子p与q,则很难

求出ψ(n)。这时,窃听者要么强行算出ψ(n),要么对n进行因数分解求得p与q。然而,我们知道,在大

数范围内作合数分解是十分困难的,因此窃密者很难成功。

有了关于ψ函数的认识,我们再来分析RSA算法的工作原理:

(1) 密钥配制。设m是要加密的信息,任选两个大质数p与q,使得 ;选择正整数e,使得e与ψ(n) = (p

-1)(q-1)互质。

利用辗转相除法,计算d,使得ed mod ψ(n) = ,即ed = kψ(n) +1,其中k为某一正整数。

公共密钥为(e,n),其中没有包含任何有关n的因子p和q的信息。

专用密钥为(d,n),其中d隐含有因子p和q的信息。

(2) 加密过程。使用公式(12-3)对明文m进行加密,得密文c。

(3) 解密过程。使用(d,n)对密文c进行解密,计算过程为:

cd mod n = (me mod n)d mod n

= med mod n

= m(kψ(n) + 1) mod n

= (mkψ(n) mod n)·(m mod n)

= m

m即为从密文c中恢复出来的明文。

例如,假设我们需要加密的明文代码信息为m = 14,则:

选择e = 3,p = 5,q = 11;

计算出n = p·q = 55,(p-1)(q-1) = 40,d = 27;

可以验证:(e·d) mod (p-1)(q-1) = 81 mod 40 = 1;

加密:c = me mod n = 143 mod 55 = 49;

解密:m = cd mod n = 4927 mod 55 = 14。

关于RSA算法,还有几点需要进一步说明:

(1) 之所以要求e与(p-1)(q-1)互质,是为了保证 ed mod (p-1)(q-1)有解。

(2) 实际操作时,通常先选定e,再找出并确定质数p和q,使得计算出d后它们能满足公式(12-3)。常用

的e有3和65537,这两个数都是费马序列中的数。费马序列是以17世纪法国数学家费马命名的序列。

(3) 破密者主要通过将n分解成p·q的办法来解密,不过目前还没有办法证明这是唯一的办法,也可能有

更有效的方法,因为因数分解问题毕竟是一个不断发展的领域,自从RSA算法发明以来,人们已经发现了

不少有效的因数分解方法,在一定程度上降低了破译RSA算法的难度,但至今还没有出现动摇RSA算法根

基的方法。

(4) 在RSA算法中,n的长度是控制该算法可靠性的重要因素。目前129位、甚至155位的RSA加密勉强可解

,但目前大多数加密程序均采用231、308甚至616位的RSA算法,因此RSA加密还是相当安全的。

据专家测算,攻破512位密钥RSA算法大约需要8个月时间;而一个768位密钥RSA算法在2004年之前无法攻

破。现在,在技术上还无法预测攻破具有2048位密钥的RSA加密算法需要多少时间。美国Lotus公司悬赏1

亿美元,奖励能破译其Domino产品中1024位密钥的RSA算法的人。从这个意义上说,遵照SET协议开发的

电子商务系统是绝对安全的。

利用前面讲解的加密方法,尤其是基于双钥技术的现代加密方法,我们针对网络安全可以实现多种具体

的手段及方法,如数字签名、数字时间戳、数字凭证及认证中心等,而且这些方法和手段常常结合在一

起使用,长短互补,从而构成了网上安全防范的实用体系。WAP的无线网络在寻求安全技术时,也借用了

普通Internet网络的安全手段和方法,并将它们进一步调整和优化,以适应无线网络的特殊要求。

 

RSA加密算法与数字签名

数字签名
上一节介绍的密钥对与数字摘要也可以结合起来使用,数字签名就是它们结合的结果。下面我们就讲解

一下数字签名是怎么一回事。

日常生活中,我们常把在书面文件上签名作为确认文件的一种手段。签名的作用有两点,一是因为自己

的签名难以否认,从而可以确认文件已经签署的事实,即保证文件的不可否认性;二是因为签名不易仿

冒,从而可以确定文件是真的这一事实,即保证文件的真实性。网络安全防范中的数字签名(Digital

Signature)与书面文件签名有相同之处,它也能确认两点:其一,信息是由签名者发送的;其二,信息

自签发后到收到为止未曾作过任何修改。

这样,数字签名就可以用来防止网上电子信息因容易修改而被人破坏或作伪,或冒用别人名义发送信息

,或者,在发出或收到信件后又加以否认等情况发生。

网上的数字签名并不是使用“手书签名”类型的图形标志,因为这样也是极易复制的。为此,数字签名

另辟蹊径,采用了双重加密的方法来实现加密文件的防伪与防赖。其原理及处理过程如下:

(1) 使用SHA编码将发送文件加密产生128bit(位)的数字摘要;

(2) 发送方用自己的专用密钥对摘要再加密,这样就形成了数字签名;

(3) 将原文和加密的摘要同时传给对方;

(4) 接收方用发送方的公共密钥对摘要解密,同时对收到的文件用SHA编码加密产生又一摘要;

(5) 将解密后的摘要和收到的文件在接收方重新加密产生的摘要相互对比,如果两者一致,则说明传送

过程中信息没有破坏和篡改。否则,则说明信息已失去其安全性及保密性。图12.2说明了数字签名的过

程。

 12.2.2  数字时间戳

时间是网络传输中的一项非常重要的信息。在书面合同中,文件签署的日期和签名一样都是十分重要的

防止文件伪造和篡改的关键性证据。

在网络安全防范中,同样需要对传输资料文件的日期和时间信息采取安全措施,这是通过数字时间戳服

务DTS(Digital Time-stamp Service)实现的,它可以对电子文件提供发表时间的安全保护。该服务是

Internet网上的安全服务项目,由专门的网络服务机构提供。

时间戳(Time-stamp)是一个经过加密而形成的凭证文档,由3部分组成:

(1) 需要加载时间戳的文件摘要;

(2) DTS收到文件的日期和时间;

(3) DTS的数字签名。

时间戳的产生过程是这样的:用户首先将需要加时间戳的文件用Hash编码加密形成摘要,然后将该摘要

发送到DTS,DTS在加入该文件摘要的收到日期和时间信息后再对该文件加密,即进行数字签名,最后送

回用户。

此外,Bellcore创造了DTS的另一种处理方法,过程如下:加密时先将摘要信息归并到二叉树的数据结构

,然后再将二叉树的根值发表在报纸上,这样就更能有效地为文件发表时间提供辅助证据。

需要注意的是,书面签署文件的时间是由签署人自己写上的,而数字时间戳则不然,它是由认证服务机

构DTS来加的,以DTS收到该文件的时间为依据。因此,时间戳也可以作为各种科技文献的发表证明。

12.2.3  数字凭证
数字凭证(Digital Certificate或Digital ID)又称为数字证书或数字标识,是Internet上使用电子手段

证实用户身份和用户访问网络资源权限的一种安全防范手段。网上活动的当事双方如果都出示了各自的

数字凭证,并且用它们进行各种操作,那么双方都不必为对方身份的真伪而担心。也就说,数字凭证保

证了信息处理参与各方的身份真实性。

数字凭证可广泛应用于电子函件、网上交易、群件、电子基金转移等各种网络信息环境。

数字凭证的内部格式
数字凭证的内部格式是由CCITT X.509国际标准规定的,包含以下6项内容:

(1) 凭证拥有者的姓名;

(2) 凭证拥有者的公共密钥;

(3) 公共密钥的有效期;

(4) 颁发数字凭证的单位;

(5) 数字凭证的序列号(Serial Number);

(6) 颁发数字凭证单位的数字签名。

数字凭证的一般类型
普通Internet网络的数字凭证主要有以下3种类型:

(1) 个人凭证(Personal Digital ID)。这种类型的数字凭证仅仅可以为单个用户提供凭证,以帮助用户

在网上证明自己的身份,并从事各种网络活动,如收发E-mail、网上购物等。个人身份的数字凭证通常

是安装在客户端的Internet浏览器内,并通过安全的多用途网际邮件扩充协议S/MIME

(Secure/Multipurpose Internet Mail Extension protocol)控制操作。

(2) 企业服务器凭证(Server ID)。这是为网上的企业的Web服务器提供凭证的数字凭证类型,拥有Web服

务器的企业可以使用具有凭证的Internet网络站点进行各种网络活动。有凭证的Web服务器会自动地将其

与客户端通信的信息进行加密。

(3) 软件开发者凭证(Developer ID)。这是为Internet中被下载的软件提供的凭证,主要用于与

Microsoft公司Authenticode技术(指“合法化软件”)结合的软件,以使用户在下载软件时能够获得需要

的信息。

WAP系统中的数字凭证
WAP系统中使用的数字凭证采用了普通Internet网络数字凭证的基本思想。因为WAP实现安全防范的专门

协议就是无线传输层安全协议WTLS(Wireless Transport Layer Security),所以WAP针对WTLS用户提供

了两种数字凭证,另外还针对WAP网关制定的数字凭证。

(1) WTLS服务器数字凭证。这是为WAP服务器提供的数字凭证,可以用来验证WTLS服务器到WTLS用户(如

手机等手持设备)的通信,同时提供了一个通过密钥加密的客户服务对话机制。WTLS服务器使用的数字凭

证和SSL服务器使用的凭证有些类似,不同的地方在于,SSL的数字凭证属于X.509类型,相对来说规模比

较大(即数字凭证的电子文件规模),而WTLS使用的是一个小型化的数字凭证,与X.509型的凭证很像,但

更加简单小巧。另外,WTLS服务器的认证是强制性的,而SSL服务器的认证是可选的。

(2) WTLS客户端数字凭证。该数字凭证用于验证一个WTLS用户到服务器的通信和对话。它可以是X.509型

的凭证,也可以是小型化的凭证。

WAP系统中也定义了一个基于双密钥技术的加密和解密功能,能使WAP客户端对某一事务处理进行数字签

名。但它不能提供权威的凭证,因为它是为那些不需要名誉保证的用户来使用的。

(3) 网关数字凭证。一个无线网关通常就是一个网络服务的提供者,能给无线环境和有线Internet之间

提供连接。这种情况下,网关担当的角色就如同是内容的传输者(图12.3),能够将WAP/WTLS转换成

HTTP/SSL,等等。出于安全考虑,WAP服务和网关提供商合作,还推出了针对网关的数字凭证,以便实现

网关的安全认证和防范。


微型凭证
WAP服务器、客户端及网关使用的数字凭证,大都属于小型化的凭证,我们称这种凭证为微型凭证(Mini

-Certificate)。由于这些凭证需要在无线网络中传输,需要在具有有限资源的无线用户端进行处理,所

以它的格式非常重要,采用普通有线网络的数字凭证格式显然不能满足要求,所以针对无线网络的传输

特点,以及手机等无线设备的内存小、屏幕小、速度慢的特点,数字凭证的提供商优化了传统的凭证格

式,在密钥长度、凭证序列号、数字签名大小以及密钥有效期等方面都作了调整,使得微型凭证既能满

足实际需求,又能有效抵挡攻击、破解和伪证等。

下面提供两个大素数:

素数1:

十六进制:

98A3DF52AEAE9799325CB258D767EBD1F4630E9B9E21732A4AFB1624BA6DF911466AD8DA

960586F4A0D5E3C36AF099660BDDC1577E54A9F402334433ACB14BCB

十进制:

79944120977161105481272117333316005229337767570467076499636739626862008384

32950239103981070728369599816314646482720706826018360181196843154224748382

211019

素数2:

十六进制:

93E8965DAFD9DFECFD00B466B68F90EA68AF5DC9FED915278D1B3A137471E65596C37FED0C

7829FF8F8331F81A2700438ECDCC09447DC397C685F397294F722BCC484AEDF28BED25AAAB

35D35A65DB1FD62C9D7BA55844FEB1F9401E671340933EE43C54E4DC459400D7AD61248B8

3A2624835B31FFF2D9595A5B90B276E44F9

十进制:

103864912054654272074839999186936834171066194620139675036534769616693904589

884931513925858861749077079643532169815633834450952832125258174795234553238

258030222937772878346831083983624739712536721932666180751292001388772039413

446493758317344413531957900028443184983069698882035800332668237985846170997

572388089
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值