公钥密码系统及RSA公钥算法
- 格式:doc
- 大小:46.50 KB
- 文档页数:7
现代密码的主要分类密码是信息安全领域中最基本的保护手段之一。
在现代密码学中,密码被分为多个分类,每种分类都具有不同的特点和应用场景。
下面将介绍现代密码的主要分类。
1. 对称密码对称密码也被称为私钥密码,是最常见的密码类型之一。
在对称密码中,加密和解密使用相同的密钥。
这意味着发送方和接收方需要共享同一个密钥,才能进行加密和解密操作。
对称密码的优势在于加密解密速度快,但其密钥管理与分发会带来一定的安全风险。
常见的对称密码算法有DES、AES和3DES等。
2. 公钥密码公钥密码也被称为非对称密码,是另一种常见的密码类型。
在公钥密码系统中,加密和解密使用不同的密钥。
发送方使用接收方的公钥进行加密,而接收方使用自己的私钥进行解密。
公钥密码的优势在于密钥管理方便,不需要事先共享密钥。
常见的公钥密码算法有RSA、ElGamal和ECC等。
3. 哈希算法哈希算法是一种将任意长度的数据转换为固定长度摘要的密码技术。
它常被用于验证数据的完整性和一致性。
哈希算法的特点是不可逆,即无法通过摘要反推原始数据。
常见的哈希算法有MD5、SHA-1和SHA-256等。
4. 消息认证码(MAC)消息认证码是一种基于密钥的密码操作,用于验证消息的完整性和来源。
它通过对消息进行加密和生成消息验证码来实现身份验证和防篡改功能。
常见的消息认证码算法有HMAC和CMAC等。
5. 数字签名数字签名是一种通过非对称密码算法,为文档或数据附加一个唯一的标记来验证发送方身份和消息完整性的技术。
数字签名可以防止篡改和抵赖,并且不需要发送方和接收方共享密钥。
常见的数字签名算法有RSA和DSA等。
6. 流加密和分组加密流加密和分组加密是对称密码算法的两种不同方式。
在流加密中,数据按位或按字节加密。
流加密的特点在于加密和解密速度快,适用于实时数据传输。
而分组加密将数据分成固定长度的块进行加密处理。
常见的分组加密算法有DES和AES 等。
7. 转身密码置换密码是一种基于置换的加密技术,通过改变数据中的位置或次序来加密数据。
公钥密码体制(RSA)算法及安全性探析□宣克祥【摘要】作为现代经典加密技术,无论是数据加密标准(DES)还是高级加密标准(AES),都是一种私钥密码体制,其安全性是由其密钥的私密性来保证的;而RSA则是一种公钥密码体制,不仅加密算法本身可以公开,甚至加密用的密钥也可以公开。
本文对公钥密码体制RSA算法原理、具体实现过程及安全性进行深入探讨和分析。
【关键词】RSA算法;加密标准;信息安全【作者单位】宣克祥,解放军国际关系学院1976年,美国斯坦福大学的威特菲尔德·笛福(Whit-field Diffie)和马丁·赫尔曼(Martin Hellman)在题为《密码学的新方向》的论文中提出了一种崭新的思想,不仅加密算法本身可以公开,甚至加密用的密钥也可以公开,这种密码体制被称作非对称式公钥密码体制。
1978年,美国麻省理工学院的隆·里维斯特(Ronald L.Rivest)、阿迪·沙米尔(Adi Shamir)和雷奥纳德·阿德曼(Leonard M.Adleman)提出了迄今为止理论上最成熟、最成功的RSA公钥密码体制,它变革了已使用几千年的对称密钥技术。
在公开密钥加密技术中,加密密钥与解密密钥是不一样的。
如果要向对方发送消息,可以先用对方的公开密钥加密要发送的消息;对方收到消息后,可用自己的私钥解密。
加密密钥是公开的,谁都可以找到,然而,以其加密的消息却必须用接收者保留的私钥才能解密,因而别人无法阅读该消息。
一、RSA算法简介RSA公钥密码体制的安全性是基于数论中的大整数因子分解:两个大质数p和q相乘得到乘积n,在min(p,q)与(p-1)(q-1)之间选取另一个数d,该数与(p-1)(q-1)互质,即两者之间没有公因子,然后用如下公式计算出e:ed mod(p-1)(q-1)=1假如明文块用M表示,密文块用C表示,那么RSA的加密过程为:Me mod n=CRSA的解密过程即为:C d mod n=M假如选定了两个小的质数11和23,那么n=11ˑ23= 253。
密码基础知识(2)以RSA为例说明加密、解密、签名、验签⼀、RSA加密简介 RSA加密是⼀种⾮对称加密。
是由⼀对密钥来进⾏加解密的过程,分别称为公钥和私钥。
具体查看⼆,公钥加密算法和签名算法我们从公钥加密算法和签名算法的定义出发,⽤⽐较规范的语⾔来描述这⼀算法,以RSA为例。
2.1,RSA公钥加密体制RSA公钥加密体质包含如下3个算法:KeyGen(密钥⽣成算法),Encrypt(加密算法)以及Decrypt(解密算法)。
1)密钥⽣成算法以安全常数作为输⼊,输出⼀个公钥PK,和⼀个私钥SK。
安全常数⽤于确定这个加密算法的安全性有多⾼,⼀般以加密算法使⽤的质数p的⼤⼩有关。
越⼤,质数p⼀般越⼤,保证体制有更⾼的安全性。
在RSA中,密钥⽣成算法如下:算法⾸先随机产⽣两个不同⼤质数p和q,计算N=pq。
随后,算法计算欧拉函数接下来,算法随机选择⼀个⼩于的整数e,并计算e关于的模反元素d。
最后,公钥为PK=(N, e),私钥为SK=(N, d)。
2)加密算法以公钥PK和待加密的消息M作为输⼊,输出密⽂CT。
在RSA中,加密算法如下:算法直接输出密⽂为3)解密算法以私钥SK和密⽂CT作为输⼊,输出消息M。
在RSA中,解密算法如下:算法直接输出明⽂为。
由于e和d在下互逆,因此我们有: 所以,从算法描述中我们也可以看出:公钥⽤于对数据进⾏加密,私钥⽤于对数据进⾏解密。
当然了,这个也可以很直观的理解:公钥就是公开的密钥,其公开了⼤家才能⽤它来加密数据。
私钥是私有的密钥,谁有这个密钥才能够解密密⽂。
否则⼤家都能看到私钥,就都能解密,那不就乱套了。
2.2,RSA签名体制签名体制同样包含3个算法:KeyGen(密钥⽣成算法),Sign(签名算法),Verify(验证算法)。
1)密钥⽣成算法同样以安全常数作为输⼊,输出⼀个公钥PK和⼀个私钥SK。
在RSA签名中,密钥⽣成算法与加密算法完全相同。
2)签名算法以私钥SK和待签名的消息M作为输⼊,输出签名。
RSA1978年,MIT的Rivest、Shamir、Adleman提出RSA算法非对称加密(公开密钥加密)密码学的一次革命,定义:KA≠KB ,KA、E和D公开特点:基于数论原理(大数分解难题)是目前应用最广泛的公钥加密算法属于块加密算法在数论,对正整数n,欧拉函数是少于或等于n的数中与n互质的数的数目。
此函数以其首名研究者欧拉命名,它又称为Euler's totient function、φ函数、欧拉商数等。
RSA算法原理l 定义:RSA加密算法确定密钥:1. 找到两个大质数,p,q2. Let n=pq3. let m=(p-1)(q-1);Choose e and d such that de=1(%m).4. Publish n and e as public key. Keep d and n as secret key.加密:C=M^e(%n)解密:M=(C^d)%n其中C=M^e(%n) 为C%n=(M^e)%n存在的主要问题是大数计算和大数存储的问题。
什么是RSARSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。
即RSA的重大缺陷是无法从理论上把握它的保密性能如何,而且密码学界多数人士倾向于因子分解不是NPC问题。
RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。
B)分组长度太大,为保证安全性,n 至少也要600 bits以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。
目前,SET(Secure Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。
rsa公私钥指数、系数(模数)分解概述及解释说明1. 引言1.1 概述:在现代密码学中,RSA算法是一种非常重要的加密算法。
它是以其发明者Rivest、Shamir、Adleman三位科学家姓氏命名的,被广泛应用于安全通信、数字签名等领域。
RSA算法基于两个大素数之间的乘积难以分解这一数学问题,通过对其进行适当的加密和解密操作,实现了信息的保密性和完整性。
1.2 文章结构:本文将重点介绍RSA公私钥指数和系数(模数)的概念及其作用,在此基础上详细阐述了如何分解RSA公钥和私钥。
文章主要包括以下几个部分:引言、RSA 公私钥指数、RSA公私钥系数(模数)以及分解RSA公钥和私钥的方法。
1.3 目的:本文主要旨在提供对于RSA公私钥指数与系数(模数)的深入理解,并描述了关键概念及其作用。
同时,将介绍分解RSA公钥和私钥方法,旨在帮助读者更好地理解RSA加密算法,并为进一步研究与应用提供相关背景知识。
以上是"1. 引言"部分的详细内容,希望对你的文章撰写有所帮助。
如有其他问题,请随时提问。
2. RSA公私钥指数2.1 公钥指数在RSA加密算法中,公钥指数是由两个部分组成的:指数e和模数n。
指数e 是一个大于1且小于φ(n)的整数,其中φ(n)表示欧拉函数。
通常情况下,指数e 被选择为一个较小的质数。
模数n则是两个较大的质数p和q的乘积,即n = p * q。
公钥指数用于对数据进行加密。
2.2 私钥指数私钥指数也由两部分组成:指数d和模数n。
与公钥不同的是,私钥指数中的d 需要满足以下条件:(e * d) mod φ(n) = 1。
通过使用扩展欧几里得算法,可以计算得出满足该条件的私钥指数d。
类似地,模数n同样是由两个较大的质数p 和q相乘得到。
RSA公私钥指数组合起来形成了RSA加密算法所需的密钥对。
公钥用于加密数据,并且只能用于加密操作;而私钥则用于解密已经加密的数据,并且可以进行数字签名等操作。
RSA公钥密码算法作者:高嵩来源:《中国新通信》2020年第01期摘要::RSA加密算法是一种非对称加密算法。
是第一个比较完善的公开密钥算法。
所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
在公开密钥密码体制中,加密密钥(即公开密钥)是公开信息,而解密密钥(即秘密密钥)是需要保密的。
加密算法和解密算法也都是公开的。
虽然解密密钥是由公开密钥决定的,由于无法计算出大数n的欧拉函数phi(N),所以不能根据公开密钥计算出秘密密钥。
关键词: RSA;公钥;私钥近十年来信息技术飞速发展,数字信息化给经济社会带来了巨大利益,但是伴随着网络的快速发展与普及,数据通信的逐步开放,通信安全问题逐步的显露出来,信息传输的安全隐患问题日渐严峻。
通信安全问题成为信息安全研究的重点。
RSA是第一个比较完善的非对称公开密鑰算法,它不仅能用于加密,也同样能用于数字签名。
RSA以它的三个发明者Ron Rivest, Adi Shamir, Leonard Adleman的名字首字母命名,这个算法经受住了多年深入的密码分析考验,虽然进行密码分析的人既不能证明RSA的安全性,也不能否定RSA的安全性,但这恰恰说明该算法具有的的可信性。
[1]一、RSA算法结构(1)选择两个不同的、足够大的素数p,q。
(2)计算n=pq。
(3)计算f(n)=(p-1)(q-1),同时对p, q严加保密,绝不能泄露。
(4)计算一个与k(n)互质的数e,并且使1<e<f(n)。
(5)计算出d=e-1(mod(p-1)(q-1)),使得d e≡1 mod f(n)。
公式中,≡符号的左右两边模运算结果相等。
不管k(n)取什么值,1 mod k(n)的运算结果都等于1;符号左边d与e的乘积做的模运算结果也必须等于1。
这就需要计算出d的值,使得这个同余等式能够成立。
(6)公钥GY=(e,n),私钥SY=(d,n)。
RSA算法简介概述RSA公钥加密算法是1977年由Ron Rivest、Adi Shamirh和LenAdleman在(美国麻省理工学院)开发的。
RSA取名来自开发他们三者的名字。
RSA是目前最有影响力的公钥加密算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
RSA算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但那时想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
什么是RSARSA公开密钥密码体制。
所谓的公开密钥密码体制就是使用不同的加密密钥与解密密钥,是一种“由已知加密密钥推导出解密密钥在计算上是不可行的”密码体制。
在公开密钥密码体制中,加密密钥(即公开密钥)PK是公开信息,而解密密钥(即秘密密钥)SK 是需要保密的。
加密算法E和解密算法D也都是公开的。
虽然秘密密钥SK是由公开密钥PK决定的,但却不能根据PK计算出SK。
正是基于这种理论,1978年出现了著名的RSA 算法,它通常是先生成一对RSA 密钥,其中之一是保密密钥,由用户保存;另一个为公开密钥,可对外公开,甚至可在网络服务器中注册。
为提高保密强度,RSA密钥至少为500位长,一般推荐使用1024位。
这就使加密的计算量很大。
为减少计算量,在传送信息时,常采用传统加密方法与公开密钥加密方法相结合的方式,即信息采用改进的DES或IDEA 对话密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。
对方收到信息后,用不同的密钥解密并可核对信息摘要。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
RSA是被研究得最广泛的公钥算法,从提出到现在的三十多年里,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之一。
RSA深入解释此,模数n 必须选大一些,因具体适用情况而定。
RSA的速度由于进行的都是大数计算,使得RSA最快的情况也比DES慢上好几倍,无论是软件还是硬件实现。
rsa公钥私钥计算方法
RSA公钥加密体制包含如下3个算法:KeyGen(密钥生成算法),Encrypt(加密算法)以及Decrypt(解密算法)。
以下是RSA公钥私钥的计算方法:
1. 密钥生成算法:首先随机产生两个不同大质数p和q,计算N=pq。
然后,计算欧拉函数。
接下来,随机选择一个小于N的整数e,并计算e关于φ(N)的模反元素d。
最后,公钥为PK=(N, e),私钥为SK=(N, d)。
2. 加密算法:以公钥PK和待加密的消息M作为输入,输出密文CT。
在RSA中,加密算法如下:算法直接输出密文为。
3. 解密算法:以私钥SK和密文CT作为输入,输出消息M。
在RSA中,解密算法如下:算法直接输出明文为。
由于e和d在下互逆,因此公钥用于对数据进行加密,私钥用于对数据进行解密。
公钥密码系统及RSA公钥算法摘要:本文简单介绍了公开密钥密码系统的思想和特点,并具体介绍了RSA算法的理论基础,工作原理和具体实现过程,并通过一个简单例子说明了该算法是如何实现。
在本文的最后,概括说明了RSA算法目前存在的一些缺点和解决方法。
关键词:公钥密码体制,公钥,私钥, RSA中图分类号:TP309.7§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也就无法得到这把“私人密钥”。
从以上的介绍可以看出,公钥密码体制的思想并不复杂,而实现它的关键问题是如何确定公钥和私钥及加/解密的算法,也就是说如何找到“Alic e的锁和钥匙”的问题。
我们假设在这种体制中, 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 modulo(p - 1)*(q - 1)根据e、p和q可以容易地计算出d。
4) 公开整数r和e,但是不公开d;5) 将明文P (假设P是一个小于r的整数)加密为密文C,计算方法为:C = Pe modulo r6) 将密文C解密为明文P,计算方法为:P = Cd modulo r然而只根据r和e(不是p和q)要计算出d是不可能的。