当前位置:首页 » 密码管理 » 双陷门加密

双陷门加密

发布时间: 2023-07-25 06:30:52

⑴ 在加密算法中属于公钥密码体制的是什么

算法介绍:
现有矩阵M,N和P,P=M*N。如果M(或N)的行列式为零,则由P和M(或P和N)计算N(或M)是一个多值问题,特别是M(或N)的秩越小,N(或M)的解越多。
由以上问题,假设Tom和Bob相互通信,现做如下约定:
1. 在正式通信之前,二人约定一个随机奇异矩阵M。
2. Tom和Bob各自选取一个n*n的随机矩阵作为他们的私有密钥,设Tom的为A,Bob的为B。
3. 然后Tom计算矩阵Pa=A*M作为他的公钥,Bob计算矩阵Pb=M*B作为他的公钥。
4. 当Tom向Bob发送消息时,计算加密矩阵K=A*Pb,用K对消息加密后发送到Bob端,Bob收到消息后,计算解密矩阵K’= Pa*B,由以上代数关系可以看出,K= K’,也既加密和解密是逆过程,可以参照对称加密标准AES。
5. Bob向Tom发送消息时,计算解密矩阵K= Pa*B,加密。Tom收到消息后计算解密矩阵K=A*Pb,原理同上。
算法分析:
由以上介绍可容易看出,此算法比RSA和ECC的加密效率要高4-6个数量级,且加密强度在增大n的基础上,可获得与以上两算法相当的加密强度。
该算法仍在论证阶段,欢迎此方面高手携手参与或提出缺点.
email:[email protected]

⑵ 公钥密码系统及RSA公钥算法

公钥密码系统及RSA公钥算法

本文简单介绍了公开密钥密码系统的思想和特点,并具体介绍了RSA算法的理论基础,工作原理和具体实现过程,并通过一个简单例子说明了该算法是如何实现。在本文的最后,概括说明了RSA算法目前存在的一些缺点和解决方法。

关键词:公钥密码体制 , 公钥 ,私钥 ,RSA

§1引言

随着计算机联网的逐步实现,Internet前景越来越美好,全球经济发展正在进入信息经济时代,知识经济初见端倪。计算机信息的保密问题显得越来越重要,无论是个人信息通信还是电子商务发展,都迫切需要保证Internet网上信息传输的安全,需要保证信息安全。信息安全技术是一门综合学科,它涉及信息论、计算机科学和密码学等多方面知识,它的主要任务是研究计算机系统和通信网络内信息的保护方法以实现系统内信息的安全、保密、真实和完整。其中,信息安全的核心是密码技术。密码技术是集数学、计算机科学、电子与通信等诸多学科于一身的交叉学科。它不仅能够保证机密性信息的加密,而且能够实现数字签名、身份验证、系统安全等功能。是现代化发展的重要科学之一。本文将对公钥密码系统及该系统中目前最广泛流行的RSA算法做一些简单介绍。

§2公钥密码系统

要说明公钥密码系统,首先来了解一下不同的加密算法:目前的加密算法按密钥方式可分为单钥密码算法和公钥密码算法。

2.1.单钥密码

又称对称式密码,是一种比较传统的加密方式,其加密运算、解密运算使用的是同样的密钥,信息的发送者和信息的接收者在进行信息的传输与处理时,必须共同持有该密码(称为对称密码)。因此,通信双方都必须获得这把钥匙,并保持钥匙的秘密。

单钥密码系统的安全性依赖于以下两个因素:第一,加密算法必须是足够强的,仅仅基于密文本身去解密信息在实践上是不可能的;第二,加密方法的安全性依赖于密钥的秘密性,而不是算法的秘密性,因此,我们没有必要确保算法的秘密性(事实上,现实中使用的很多单钥密码系统的算法都是公开的),但是我们一定要保证密钥的秘密性。

从单钥密码的这些特点我们容易看出它的主要问题有两点:第一,密钥量问题。在单钥密码系统中,每一对通信者就需要一对密钥,当用户增加时,必然会带来密钥量的成倍增长,因此在网络通信中,大量密钥的产生﹑存放和分配将是一个难以解决的问题。第二,密钥分发问题。单钥密码系统中,加密的安全性完全依赖于对密钥的保护,但是由于通信双方使用的是相同的密钥,人们又不得不相互交流密钥,所以为了保证安全,人们必须使用一些另外的安全信道来分发密钥,例如用专门的信使来传送密钥,这种做法的代价是相当大的,甚至可以说是非常不现实的,尤其在计算机网络环境下,人们使用网络传送加密的文件,却需要另外的安全信道来分发密钥,显而易见,这是非常不智是甚至是荒谬可笑的。

2.2公钥密码

正因为单钥密码系统存在如此难以解决的缺点,发展一种新的﹑更有效﹑更先进的密码体制显得更为迫切和必要。在这种情况下,出现了一种新的公钥密码体制,它突破性地解决了困扰着无数科学家的密钥分发问题,事实上,在这种体制中,人们甚至不用分发需要严格保密的密钥,这次突破同时也被认为是密码史上两千年来自单码替代密码发明以后最伟大的成就。

这一全新的思想是本世纪70年代,美国斯坦福大学的两名学者Diffie和Hellman提出的,该体制与单钥密码最大的不同是:

在公钥密码系统中,加密和解密使用的是不同的密钥(相对于对称密钥,人们把它叫做非对称密钥),这两个密钥之间存在着相互依存关系:即用其中任一个密钥加密的信息只能用另一个密钥进行解密。这使得通信双方无需事先交换密钥就可进行保密通信。其中加密密钥和算法是对外公开的,人人都可以通过这个密钥加密文件然后发给收信者,这个加密密钥又称为公钥;而收信者收到加密文件后,它可以使用他的解密密钥解密,这个密钥是由他自己私人掌管的,并不需要分发,因此又成称为私钥,这就解决了密钥分发的问题。

为了说明这一思想,我们可以考虑如下的类比:

两个在不安全信道中通信的人,假设为Alice(收信者)和Bob(发信者),他们希望能够安全的通信而不被他们的敌手Oscar破坏。Alice想到了一种办法,她使用了一种锁(相当于公钥),这种锁任何人只要轻轻一按就可以锁上,但是只有Alice的钥匙(相当于私钥)才能够打开。然后Alice对外发送无数把这样的锁,任何人比如Bob想给她寄信时,只需找到一个箱子,然后用一把Alice的锁将其锁上再寄给Alice,这时候任何人(包括Bob自己)除了拥有钥匙的Alice,都不能再打开箱子,这样即使Oscar能找到Alice的锁,即使Oscar能在通信过程中截获这个箱子,没有Alice的钥匙他也不可能打开箱子,而Alice的钥匙并不需要分发,这样Oscar也就无法得到这把“私人密钥”。

从以上的介绍可以看出,公钥密码体制的思想并不复杂,而实现它的关键问题是如何确定公钥和私钥及加/解密的算法,也就是说如何找到“Alice的锁和钥匙”的问题。我们假设在这种体制中, PK是公开信息,用作加密密钥,而SK需要由用户自己保密,用作解密密钥。加密算法E和解密算法D也都是公开的。虽然SK与PK是成对出现,但却不能根据PK计算出SK。它们须满足条件:

①加密密钥PK对明文X加密后,再用解密密钥SK解密,即可恢复出明文,或写为:DSK(EPK(X))=X

②加密密钥不能用来解密,即DPK(EPK(X))≠X

③在计算机上可以容易地产生成对的PK和SK。

④从已知的PK实际上不可能推导出SK。

⑤加密和解密的运算可以对调,即:EPK(DSK(X))=X

从上述条件可看出,公开密钥密码体制下,加密密钥不等于解密密钥。加密密钥可对外公开,使任何用户都可将传送给此用户的信息用公开密钥加密发送,而该用户唯一保存的私人密钥是保密的,也只有它能将密文复原、解密。虽然解密密钥理论上可由加密密钥推算出来,但这种算法设计在实际上是不可能的,或者虽然能够推算出,但要花费很长的时间而成为不可行的。所以将加密密钥公开也不会危害密钥的安全。

这种体制思想是简单的,但是,如何找到一个适合的算法来实现这个系统却是一个真正困扰密码学家们的难题,因为既然Pk和SK是一对存在着相互关系的密钥,那么从其中一个推导出另一个就是很有可能的,如果敌手Oscar能够从PK推导出SK,那么这个系统就不再安全了。因此如何找到一个合适的算法生成合适的Pk和SK,并且使得从PK不可能推导出SK,正是迫切需要密码学家们解决的一道难题。这个难题甚至使得公钥密码系统的发展停滞了很长一段时间。

为了解决这个问题,密码学家们考虑了数学上的陷门单向函数,下面,我们可以给出它的非正式定义:

Alice的公开加密函数应该是容易计算的,而计算其逆函数(即解密函数)应该是困难的(对于除Alice以外的人)。许多形式为Y=f(x)的函数,对于给定的自变量x值,很容易计算出函数Y的值;而由给定的Y值,在很多情况下依照函数关系f (x)计算x值十分困难。这样容易计算但难于求逆的函数,通常称为单向函数。在加密过程中,我们希望加密函数E为一个单项的单射函数,以便可以解密。虽然目前还没有一个函数能被证明是单向的,但是有很多单射函数被认为是单向的。

例如,有如下一个函数被认为是单向的,假定n为两个大素数p和q的乘积,b为一个正整数,那么定义f:

f (x )= x b mod n

(如果gcd(b,φ(n))=1,那么事实上这就是我们以下要说的RSA加密函数)

如果我们要构造一个公钥密码体制,仅给出一个单向的单射函数是不够的。从Alice的观点来看,并不需要E是单向的,因为它需要用有效的方式解密所收到的信息。因此,Alice应该拥有一个陷门,其中包含容易求出E的你函数的秘密信息。也就是说,Alice可以有效解密,因为它有额外的秘密知识,即SK,能够提供给你解密函数D。因此,我们称一个函数为一个陷门单向函数,如果它是一个单向函数,并在具有特定陷门的知识后容易求出其逆。

考虑上面的函数f (x) = xb mod n。我们能够知道其逆函数f -1有类似的形式f (x ) = xa mod n,对于合适的取值a。陷门就是利用n的因子分解,有效的算出正确的指数a(对于给定的b)。

为方便起见,我们把特定的某类陷门单向函数计为?。那么随机选取一个函数f属于?,作为公开加密函数;其逆函数f-1是秘密解密函数。那么公钥密码体制就能够实现了。

根据以上关于陷门单向函数的思想,学者们提出了许多种公钥加密的方法,它们的安全性都是基于复杂的数学难题。根据所基于的数学难题,至少有以下三类系统目前被认为是安全和有效的:大整数因子分解系统(代表性的有RSA)、椭园曲线离散对数系统(ECC)和离散对数系统(代表性的有DSA)。

§3 RSA算法

3.1简介

当前最着名、应用最广泛的公钥系统RSA是在1978年,由美国麻省理工学院(MIT)的Rivest、Shamir和Adleman在题为《获得数字签名和公开钥密码系统的方法》的论文中提出的。它是一个基于数论的非对称(公开钥)密码体制,是一种分组密码体制。其名称来自于三个发明者的姓名首字母。它的安全性是基于大整数素因子分解的困难性,而大整数因子分解问题是数学上的着名难题,至今没有有效的方法予以解决,因此可以确保RSA算法的安全性。RSA系统是公钥系统的最具有典型意义的方法,大多数使用公钥密码进行加密和数字签名的产品和标准使用的都是RSA算法。

RSA算法是第一个既能用于数据加密也能用于数字签名的算法,因此它为公用网络上信息的加密和鉴别提供了一种基本的方法。它通常是先生成一对RSA密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册,人们用公钥加密文件发送给个人,个人就可以用私钥解密接受。为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。

该算法基于下面的两个事实,这些事实保证了RSA算法的安全有效性:

1)已有确定一个数是不是质数的快速算法;

2)尚未找到确定一个合数的质因子的快速算法。

3.2工作原理

1)任意选取两个不同的大质数p和q,计算乘积r=p*q;

2)任意选取一个大整数e,e与(p-1)*(q-1)互质,整数e用做加密密钥。注意:e的选取是很容易的,例如,所有大于p和q的质数都可用。

3)确定解密密钥d:d * e = 1 molo(p - 1)*(q - 1) 根据e、p和q可以容易地计算出d。

4)公开整数r和e,但是不公开d;

5)将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为:

C = Pe molo r

6)将密文C解密为明文P,计算方法为:

P = Cd molo r

然而只根据r和e(不是p和q)要计算出d是不可能的。因此,任何人都可对明文进行加密,但只有授权用户(知道d)才可对密文解密。

3.3简单实例

为了说明该算法的工作过程,我们下面给出一个简单例子,显然我们在这只能取很小的数字,但是如上所述,为了保证安全,在实际应用上我们所用的数字要大的多得多。

例:选取p=3, q=5,则r=15,(p-1)*(q-1)=8。选取e=11(大于p和q的质数),通过d * 11 = 1 molo 8,计算出d =3。

假定明文为整数13。则密文C为

C = Pe molo r

= 1311 molo 15

= 1,792,160,394,037 molo 15

= 7

复原明文P为:

P = Cd molo r

= 73 molo 15

= 343 molo 15

= 13

因为e和d互逆,公开密钥加密方法也允许采用这样的方式对加密信息进行"签名",以便接收方能确定签名不是伪造的。

假设A和B希望通过公开密钥加密方法进行数据传输,A和B分别公开加密算法和相应的密钥,但不公开解密算法和相应的密钥。A和B的加密算法分别是ECA和ECB,解密算法分别是DCA和DCB,ECA和DCA互逆,ECB和DCB互逆。 若A要向B发送明文P,不是简单地发送ECB(P),而是先对P施以其解密算法DCA,再用加密算法ECB对结果加密后发送出去。

密文C为:

C = ECB(DCA(P))

B收到C后,先后施以其解密算法DCB和加密算法ECA,得到明文P:

ECA(DCB(C))

= ECA(DCB(ECB(DCA(P))))

= ECA(DCA(P))/*DCB和ECB相互抵消*/

=

P          /*DCB和ECB相互抵消*/

这样B就确定报文确实是从A发出的,因为只有当加密过程利用了DCA算法,用ECA才能获得P,只有A才知道DCA算法,没 有人,即使是B也不能伪造A的签名。

3.4优缺点

3.4.1优点

RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。该算法的加密密钥和加密算法分开,使得密钥分配更为方便。它特别符合计算机网络环境。对于网上的大量用户,可以将加密密钥用电话簿的方式印出。如果某用户想与另一用户进行保密通信,只需从公钥簿上查出对方的加密密钥,用它对所传送的信息加密发出即可。对方收到信息后,用仅为自己所知的解密密钥将信息脱密,了解报文的内容。由此可看出,RSA算法解决了大量网络用户密钥管理的难题,这是公钥密码系统相对于对称密码系统最突出的优点。

3.4.2缺点

1)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。

2)安全性, RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价,而且密码学界多数人士倾向于因子分解不是NPC问题。目前,人们已能分解140多个十进制位的大素数,这就要求使用更长的密钥,速度更慢;另外,目前人们正在积极寻找攻击RSA的方法,如选择密文攻击,一般攻击者是将某一信息作一下伪装(Blind),让拥有私钥的实体签署。然后,经过计算就可得到它所想要的信息。实际上,攻击利用的都是同一个弱点,即存在这样一个事实:乘幂保留了输入的乘法结构:

( XM )d = Xd *Md mod n

前面已经提到,这个固有的问题来自于公钥密码系统的最有用的特征--每个人都能使用公钥。但从算法上无法解决这一问题,主要措施有两条:一条是采用好的公钥协议,保证工作过程中实体不对其他实体任意产生的信息解密,不对自己一无所知的信息签名;另一条是决不对陌生人送来的随机文档签名,签名时首先使用One-Way Hash Function对文档作HASH处理,或同时使用不同的签名算法。除了利用公共模数,人们还尝试一些利用解密指数或φ(n)等等攻击.

3)速度太慢,由于RSA的分组长度太大,为保证安全性,n至少也要600 bitx以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。为了速度问题,目前人们广泛使用单,公钥密码结合使用的方法,优缺点互补:单钥密码加密速度快,人们用它来加密较长的文件,然后用RSA来给文件密钥加密,极好的解决了单钥密码的密钥分发问题。

§4结束语

目前,日益激增的电子商务和其它因特网应用需求使公钥体系得以普及,这些需求量主要包括对服务器资源的访问控制和对电子商务交易的保护,以及权利保护、个人隐私、无线交易和内容完整性(如保证新闻报道或股票行情的真实性)等方面。公钥技术发展到今天,在市场上明显的发展趋势就是PKI与操作系统的集成,PKI是“Public

Key Infrastructure”的缩写,意为“公钥基础设施”。公钥体制广泛地用于CA认证、数字签名和密钥交换等领域。

公钥加密算法中使用最广的是RSA。RSA算法研制的最初理念与目标是努力使互联网安全可靠,旨在解决DES算法秘密密钥的利用公开信道传输分发的难题。而实际结果不但很好地解决了这个难题;还可利用RSA来完成对电文的数字签名以抗对电文的否认与抵赖;同时还可以利用数字签名较容易地发现攻击者对电文的非法篡改,以保护数据信息的完整性。目前为止,很多种加密技术采用了RSA算法,该算法也已经在互联网的许多方面得以广泛应用,包括在安全接口层(SSL)标准(该标准是网络浏览器建立安全的互联网连接时必须用到的)方面的应用。此外,RSA加密系统还可应用于智能IC卡和网络安全产品。

但目前RSA算法的专利期限即将结束,取而代之的是基于椭圆曲线的密码方案(ECC算法)。较之于RSA算法,ECC有其相对优点,这使得ECC的特性更适合当今电子商务需要快速反应的发展潮流。此外,一种全新的量子密码也正在发展中。

至于在实际应用中应该采用何种加密算法则要结合具体应用环境和系统,不能简单地根据其加密强度来做出判断。因为除了加密算法本身之外,密钥合理分配、加密效率与现有系统的结合性以及投入产出分析都应在实际环境中具体考虑。加密技术随着网络的发展更新,将有更安全更易于实现的算法不断产生,为信息安全提供更有力的保障。今后,加密技术会何去何从,我们将拭目以待。

参考文献:

[1] Douglas R.Stinson.《密码学原理与实践》.北京:电子工业出版社,2003,2:131-132

[2]西蒙.辛格.《密码故事》.海口:海南出版社,2001,1:271-272

[3]嬴政天下.加密算法之RSA算法.http://soft.winzheng.com/infoView/Article_296.htm,2003

[4]加密与数字签名.http://www.njt.cn/yumdq/dzsw/a2.htm

[5]黑客中级教程系列之十.http://www.qqorg.i-p.com/jiaocheng/10.html

⑶ 公钥密码体制的原理

自从1976年公钥密码的思想提出以来,国际上已经提出了许多种公钥密码体制。用抽象的观点来看,公钥密码就是一种陷门单向函数。
我们说一个函数f是单向函数,即若对它的定义域中的任意x都易于计算f(x),而对f的值域中的几乎所有的y,即使当f为已知时要计算f-l(y)在计算上也是不可行的。若当给定某些辅助信息(陷门信息)时则易于计算f-l(y),就称单向函数f是一个陷门单向函数。公钥密码体制就是基于这一原理而设计的,将辅助信息(陷门信息)作为秘密密钥。这类密码的安全强度取决于它所依据的问题的计算复杂度。

目前比较流行的公钥密码体制主要有两类:一类是基于大整数因子分解问题的,其中最典型的代表是RSA体制。另一类是基于离散对数问题的,如ElGamal公钥密码体制和影响比较大的椭圆曲线公钥密码体制。

公钥密码
一般要求:
1、加密解密算法相同,但使用不同的密钥
2、发送方拥有加密或解密密钥,而接收方拥有另一个密钥
安全性要求:
1、两个密钥之一必须保密
2、无解密密钥,解密不可行
3、知道算法和其中一个密钥以及若干密文不能确定另一个密钥

⑷ 想听大家对于一道密码设计的数学建模题

公钥密码又称为双钥密码和非对称密码,是1976年由Daffy和Hellman在其“密码学新方向”一文中提出的,见划时代的文献:
W.Diffie and M.E.Hellman, New Directrions in Cryptography, IEEE Transaction on Information Theory, V.IT-22.No.6, Nov 1976, PP.644-654
单向陷门函数是满足下列条件的函数f:
(1)给定x,计算y=f(x)是容易的;
(2)给定y, 计算x使y=f(x)是困难的。
(所谓计算x=f-1(Y)困难是指计算上相当复杂,已无实际意义。)
(3)存在δ,已知δ 时,对给定的任何y,若相应的x存在,则计算x使y=f(x)是容易的。
注:1*. 仅满足(1)、(2)两条的称为单向函数;第(3)条称为陷门性,δ 称为陷门信息。
2*. 当用陷门函数f作为加密函数时,可将f公开,这相当于公开加密密钥。此时加密密钥便称为公开钥,记为Pk。 f函数的设计者将δ 保密,用作解密密钥,此时δ 称为秘密钥匙,记为Sk。由于加密函数时公开的,任何人都可以将信息x加密成y=f(x),然后送给函数的设计者(当然可以通过不安全信道传送);由于设计者拥有Sk,他自然可以解出x=f-1(y)。
3*.单向陷门函数的第(2)条性质表明窃听者由截获的密文y=f(x)推测x是不可行的。
Diffie和Hellman在其里程碑意义的文章中,虽然给出了密码的思想,但是没有给出真正意义上的公钥密码实例,也既没能找出一个真正带陷门的单向函数。然而,他们给出单向函数的实例,并且基于此提出Diffie-Hellman密钥交换算法。这个算法是基于有限域中计算离散对数的困难性问题之上的:设F为有限域,g∈ F是F的乘法群F*=F\{0}=<g>。并且对任意正整数x,计算gx是容易的;但是已知g和y求x使y= gx,是计算上几乎不可能的。这已问题称为有限域F上的离散对数问题。公钥密码学种使用最广泛的有限域为素域FP.
对Diffie-Hellman密钥交换协议描述:Alice和Bob协商好一个大素数p,和大的整数g,1<g<p,g最好是FP中的本原元,即FP*=<g>。p和g无须保密,可为网络上的所有用户共享。
当Alice和Bob要进行保密通信时,他们可以按如下步骤来做:
(1)Alice送取大的随机数x,并计算
X=gx(mod P)
(2)Bob选取大的随机数x,并计算X  = gx (mod P)
(3)Alice将X传送给Bob;Bob将X 传送给Alice。
(4)Alice计算K=(X )X(mod P);Bob计算K  =(X) X (mod P),易见,K=K  =g xx (mod P)。
由(4)知,Alice和Bob已获得了相同的秘密值K。双方以K作为加解密钥以传统对称密钥算法进行保密通信。
注:Diffie-Hellman密钥交换算法拥有美国和加拿大的专利。
3 RSA公钥算法
RSA公钥算法是由Rivest,Shamir和Adleman在1978年提出来的(见Communitions of the ACM. Vol.21.No.2. Feb. 1978, PP.120-126)该算法的数学基础是初等数论中的Euler(欧拉)定理,并建立在大整数因子的困难性之上。
将Z/(n)表示为 Zn,其中n=pq; p,q为素数且相异。若
Z*n{g∈ Zn|(g,n)=1},易见Z*n为  (n)阶的乘法群,且有 g  (n)1(mod n),而  (n)=(p-1)(q-1).
RSA密码体制描述如下:
首先,明文空间P=密文空间C=Zn.(见P175).
A.密钥的生成
选择p,q,p,q为互异素数,计算n=p*q,  (n)=(p-1)(q-1), 选择整数e使( (n),e)=1,1<e< (n)),计算d,使d=e-1(mod  (n))),公钥Pk={e,n};私钥Sk={d,p,q}。
注意,当0<M<n时,M (n) =1(mod n)自然有:
MK (n)+1M(mod n), 而ed  1 (mod  (n)),易见(Me)d  M(mod n)
B.加密 (用e,n) 明文:M<n 密文:C=Me(mod n).
C.解密 (用d,p,q)
密文:C 明文:M=Cd(mod n)
注:1*, 加密和解密时一对逆运算。
2*, 对于0<M<n时,若(M,n) ≠ 1,则M为p或q的整数倍,假设M=cp,由(cp,q)=1 有 M (q)  1(mod q) M  (q)  (p)  1(mod q)
有M (q) = 1+kq 对其两边同乘M=cp有
有M (q)+1=M+kcpq=M+kcn于是
有M (q)+1  M(mod n)
例子:若Bob选择了p=101和q=113,那么,n=11413,  (n)=100×112=11200;然而11200=26×52×7,一个正整数e能用作加密指数,当且仅当e不能被2,5,7所整除(事实上,Bob不会分解φ(n),而且用辗转相除法(欧式算法)来求得e,使(e, φ(n)=1)。假设Bob选择了e=3533,那么用辗转相除法将求得:
d=e -1  6597(mod 11200), 于是Bob的解密密钥d=6597.
Bob在一个目录中公开n=11413和e=3533, 现假设Alice想发送明文9726给Bob,她计算:
97263533(mod 11413)=5761
且在一个信道上发送密文5761。当Bob接收到密文5761时,他用他的秘密解密指数(私钥)d=6597进行解密:57616597(mod 11413)=9726
注:RSA的安全性是基于加密函数ek(x)=xe(mod n)是一个单向函数,所以对的人来说求逆计算不可行。而Bob能解密的陷门是分解n=pq,知 (n)=(p-1)(q-1)。从而用欧氏算法解出解密私钥d.
4 RSA密码体制的实现
实现的步骤如下:Bob为实现者
(1)Bob寻找出两个大素数p和q
(2)Bob计算出n=pq和 (n)=(p-1)(q-1).
(3)Bob选择一个随机数e(0<e<  (n)),满足(e,  (n))=1
(4)Bob使用辗转相除法计算d=e-1(mod  (n))
(5)Bob在目录中公开n和e作为她的公开钥。
密码分析者攻击RSA体制的关键点在于如何分解n。若分
解成功使n=pq,则可以算出φ(n)=(p-1)(q-1),然后由公
开的e,解出秘密的d。(猜想:攻破RSA与分解n是多项式
等价的。然而,这个猜想至今没有给出可信的证明!!!)
于是要求:若使RSA安全,p与q必为足够大的素数,使
分析者没有办法在多项式时间内将n分解出来。建议选择
p和q大约是100位的十进制素数。 模n的长度要求至少是
512比特。EDI攻击标准使用的RSA算法中规定n的长度为
512至1024比特位之间,但必须是128的倍数。国际数字
签名标准ISO/IEC 9796中规定n的长度位512比特位。
为了抵抗现有的整数分解算法,对RSA模n的素因子
p和q还有如下要求:
(1)|p-q|很大,通常 p和q的长度相同;
(2)p-1 和q-1分别含有大素因子p1和q1
(3)P1-1和q1-1分别含有大素因子p2和q2
(4)p+1和q+1分别含有大素因子p3和q3

为了提高加密速度,通常取e为特定的小整数,如EDI国际标准中规定 e=216+1,ISO/IEC9796中甚至允许取e=3。这时加密速度一般比解密速度快10倍以上。 下面研究加解密算术运算,这个运算主要是模n的求幂运算。着名的“平方-和-乘法”方法将计算xc(mod n)的模乘法的数目缩小到至多为2l,这里的l是指数c的二进制表示比特数。若设n以二进制形式表示有k比特,即k=[log2n]+1。 由l≤ k,这样xc(mod n)能在o(k3)时间内完成。(注意,不难看到,乘法能在o(k2)时间内完成。)

平方-和-乘法算法:
指数c以二进制形式表示为:

c=
Xc=xc0×(x2)c1×…×(x2t-1)ct-1
预计算: x2=xx
x4=x22=x2x2
.
.
.
x2t-1 =x2t-2*x2t-2
Xc计算:把那些ci=1对应的x2i全部乘在一起,便得xc。至
多用了t-1次乘法。请参考书上的177页,给出计算
xc(mod n)算法程序:
A=xc c=c0+c12+..+ct-12t-1= [ct-1,....,c1,c0]2
5 RSA签名方案

签名的基本概念
传统签名(手写签名)的特征:
(1)一个签名是被签文件的物理部分;
(2)验证物理部分进行比较而达到确认的目的。(易伪造)
(3)不容易忠实地“”!!!
定义: (数字签名方案)一个签名方案是有签署算法与验
证算法两部分构成。可由五元关系组(P,A,K,S,V)来刻化:
(1)P是由一切可能消息(messages)所构成的有限集合;
(2)A是一切可能的签名的有限集合;
(3)k为有限密钥空间,是一些可能密钥的有限集合;
(4)任意k ∈K,有签署算法Sigk ∈ S且有对应的验证算法Verk∈V,对每一个
Sigk:p A 和Verk:P×A {真,假} 满足条件:任意x∈ P,y∈ A.有签名方案的一个签名:Ver(x,y)= {
注:1*.任意k∈K, 函数Sigk和Verk都为多项式时间函数。
2*.Verk为公开的函数,而Sigk为秘密函数。
3*.如果坏人(如Oscar)要伪造Bob的对X的签名,在计算上是不可能的。也即,给定x,仅有Bob能计算出签名y使得Verk(x,y)=真。
4*.一个签名方案不能是无条件安全的,有足够的时间,Oscar总能伪造Bob的签名。
RSA签名:n=pq,P=A=Zn,定义密钥集合K={(n,e,p,q,d)}|n=pq,d*e1(mod (n))}
注意:n和e为公钥;p,q,d为保密的(私钥)。对x∈P, Bob要对x签名,取k∈K。Sigk(x) xd(mod n)y(mod n)
于是
Verk(x,y)=真 xye(mod n)
(注意:e,n公开;可公开验证签名(x,y)对错!!也即是否为Bob的签署)
注:1*.任何一个人都可对某一个签署y计算x=ek(y),来伪造Bob对随机消息x的签名。
2*.签名消息的加密传递问题:假设Alice想把签了名的消息加密送给Bob,她按下述方式进行:对明文x,Alice计算对x的签名,y=SigAlice(x),然后用Bob的公开加密函数eBob,算出
Z=eBob(x,y) ,Alice 将Z传给Bob,Bob收到Z后,第一步解密,
dBob(Z)=dBobeBob(x,y)=(x,y)
然后检验
VerAlice(x,y)= 真
问题:若Alice首先对消息x进行加密,然后再签名,结果
如何呢?Y=SigAlice(eBob(x))
Alice 将(z,y)传给Bob,Bob先将z解密,获取x;然后用
VerAlice检验关于x的加密签名y。这个方法的一个潜在问
题是,如果Oscar获得了这对(z,y),他能用自己的签名来
替代Alice的签名
y=SigOscar(eBob(x))
(注意:Oscar能签名密文eBob(x),甚至他不知明文x也能做。Oscar传送(z,y )给Bob,Bob可能推断明文x来自Oscar。所以,至今人么还是推荐先签名后加密。)
6.EIGamal方案

EIGamal公钥密码体制是基于离散对数问题的。设P
至少是150位的十进制素数,p-1有大素因子。Zp为有限域,
若α为Zp中的本原元,有Zp* =<α>。若取β∈Zp*=Zp\{0},
如何算得一个唯一得整数a,(要求,0≤a≤ p-2),满足
αa=β(mod p)
将a记为a=logαβ
一般来说,求解a在计算上是难处理的。
Zp*中的Egamal公钥体制的描述:设明文空间为P=Zp*,密文空
间为C=Zp*×Zp*,定义密钥空间K={(p, α,a, β )|β=αa(mod p)}
公开钥为:p, α ,β
秘密钥(私钥):a
Alice 取一个秘密随机数k∈ Zp-1,对明文x加密
ek(x,k)=(y1,y2)
其中, y1=αk(mod p),y2=xβk(mod p)
Bob解密,
dk(y1,y2)=y2(y1α)-1(mod p)
注:1*.容易验证y2(y1α)-1=x(αa)k(αka)-1=x !!
2*.利用EIGamal加密算法可给出基于此的签名方案:
Alice 要对明文x进行签名,她首先取一个秘密随机数k作
为签名
Sigk(x,k)=( ,  )
其中 =αk(mod p), =(x-a )k-1(mod p-1)
对x, ∈Zp*和 ∈ Zp-1,定义Verk(x, ,)=真等价于
βα=αx(mod p)
要说明的是,如果正确地构造了这个签名,那么验证将
是成功的,因为
βα= αa αk (mod p)= αa+k (mod p)
由上面知道, =(x- a)k-1(mod p-1)可以推出
k=x- a(mod p-1)有a+kx(mod p)
所以 β  = αx (mod p)
该签名方案已经被美国NIST(国家标准技术研究所)确定为签名标准(1985)。

有关RSA方面的内容,请访问网址:
www.RSAsecurity.com

⑸ 如何用通俗易懂的话来解释非对称加密

在采用对称密钥体系时,加密与解密采用相同的算法和密钥,这就说明收发双方需要保存有相同密钥。这就需要一个安全的通道来传递这个密钥,但实际上这样安全的通道是不方便的或者没有的。所以就有了非对称形式的(不同的密钥)。公钥是公开的,私钥则只有接受者才有,这样就不必传递私钥了,更安全了。基本的数学原理?

加解密过程由单向陷门函数实现。单向陷门函数是指由已知的y=f(x)和x求出y是简单的,但是已知y=f(x)和y求出x是困难的。当前工程应用大都基于大数分解,离散对数和椭圆曲线此类数学难题。

热点内容
滑板鞋脚本视频 发布:2025-02-02 09:48:54 浏览:425
群晖怎么玩安卓模拟器 发布:2025-02-02 09:45:23 浏览:550
三星安卓12彩蛋怎么玩 发布:2025-02-02 09:44:39 浏览:736
电脑显示连接服务器错误 发布:2025-02-02 09:24:10 浏览:529
瑞芯微开发板编译 发布:2025-02-02 09:22:54 浏览:139
linux虚拟机用gcc编译时显示错误 发布:2025-02-02 09:14:01 浏览:227
java驼峰 发布:2025-02-02 09:13:26 浏览:645
魔兽脚本怎么用 发布:2025-02-02 09:10:28 浏览:527
linuxadobe 发布:2025-02-02 09:09:43 浏览:205
sql2000数据库连接 发布:2025-02-02 09:09:43 浏览:721