公钥密码系统及RSA公钥算法
第4章公钥密码体制

密钥
为公钥。 不再需要, 以n,e为公钥。私密钥为d。(p, q不再需要, 可以销毁。 可以销毁。)
RSA算法在计算上的可行性
加密和解密
无论是加密还是解密都需要计算某个整数的模n 整数次幂,即C=Me mod n、M=Cd mod n。但不 、 需要先求出整数的幂再对n取模,而可利用模运 算的性质: (a mod n) * (b mod n)= (a*b) mod n 对于Me mod n,可先求出M1 mod n,M2 mod n, M4 mod n……,再求Me mod n
RSA算法 RSA算法
RSA Algorithm
概况
MIT三位年轻数学家, 1979年发现了一种用数 论构造双钥的方法,称作MIT 体制 MIT体制 MIT 体制,后来被 广泛称之为RSA体制 RSA体制 RSA体制。 它既可用于加密、又可用于数字签字。 RSA算法的安全性基于数论中大整数分解的 困难性。 迄今为止理论上最为成熟完善的公钥密码体 制,该体制已得到广泛的应用。
公钥密码体制有4个组成部分
明文:算法的输入,它们是可读信息或数据,用M 表示; 密文:算法的输出。依赖于明文和密钥,对给定的 消息,不同的密钥产生密文不同。用E表示; 公钥和私钥:算法的输入。这对密钥中一个用于加 密,为Ke,此密钥公开;一个用于解密,为Kd,此 密钥保密。加密算法执行的变换依赖于密钥; 加密、解密算法
选p=7,q=17。 求n=p×q=119,φ(n)=(p-1)(q-1)=96。 取e=5,满足1<e<φ(n),且gcd(φ(n),e)=1。确 定满足d·e=1 mod 96且小于96的d,因为 77×5=385=4×96+1,所以d为77。 因此公开钥为{5,119},秘密钥为{77,119}。 设明文m=19,则由加密过程得密文为 C=195 mod 119≡2476099 mod 119=66 解密为6677mod 119=19
第4章公钥密码系统

第4章 公钥密码系统
4.2.3 认证的Diffie-Hellman密钥交换 密钥交换双方通过数字签名和公钥证书相互认证可
以挫败中间人攻击。在密钥交换之前,密钥交换的双 方Alice和Bob各自拥有公钥/私钥对和公开密钥证书。 下面是Alice和Bob产生共享秘密密钥的过程:
(1) Alice产生随机数x并发送给Bob。
(3) 密钥交换:通信双方交换会话密钥,以加密通信 双方后续连接所传输的信息。每次逻辑连接使用一把 新的会话密钥,用完就丢弃。
本章将先讨论RSA密码系统和Diffie-Hellman密钥 交换,最后介绍数字签名。
第4章 公钥密码系统
Alice的 公钥环
Mike
Bob的 私 钥
Joy
Ted Bob
Bob的 公 钥
(4) Bob解密消息并验证Alice的签名。
第4章 公钥密码系统
4.2.4 三方或多方Diffie-Hellman Diffie-Hellman密钥交换协议很容易扩展到三方或多
方的密钥交换。下例中,Alice、Bob和Carol一起产生 秘密密钥,见图4-4。
第4章 公钥密码系统
⑦ k=xayz mod p ④ Z′ =xaz mod p ① X=xamod p Alice
第4章 公钥密码系统
这样可以把e和n作为公开密钥,d作为私人密钥。其 中,p、q、φ (n)和d就是秘密的陷门(四项并不是相互 独立的),这些信息不可以泄露。
RSA加密消息m时(这里假设m是以十进制表示的), 首先将消息分成大小合适的数据分组,然后对分组分 别进行加密。每个分组的大小应该比n小。 设ci为明文分组mi加密后的密文,则加密公式为
第4章 公钥密码系统
下面介绍RSA密码系统的细节。选择两个不同的大 素数p和q(一般都为100位左右的十进制数字),计算乘 积:
现代密码的主要分类

现代密码的主要分类密码是信息安全领域中最基本的保护手段之一。
在现代密码学中,密码被分为多个分类,每种分类都具有不同的特点和应用场景。
下面将介绍现代密码的主要分类。
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

莫尔定律: 芯片微处理器速度每18个月增长一 倍 1993,世界各地600多个研究人员和爱好者 通过Internet协调工作,RSA129用近一 年的时间被分解成两个素数,一个长64位,一 个长65位,当时在密码界引起了很大的震动 教训1,129位的公钥还不够大。 教训2,任何人对算法的安全性不应过分的 肯定
数论基础——RSA算法的基础
数论研究的重点是素数 1 素数 合数 任意的合数能唯一的被素数因 子分解 2 互为素数 gcd(a,b)表示a,b的最大公因 子——计算可采用欧基米德算法。 gcd(6,4) 6的因子:1 2 3 6 gcd(4,6)=2 4的因子:1 2 4 同理 gcd(6,5)=1 如果gcd(a,b)=1 则称a,b互素
– 选择互异素数p,q,计算n=p*q, ϕ (n)=(p-1)(q-1), – 选择整数e使 gcd(ϕ (n),e)=1, – 公钥Pk={e,n} – 私钥Sk={d,n}
1<e<ϕ (n),
– 计算d,使d=e-1mod ϕ (n),即e*d≡1mod ϕ (n)
加密 (用e,n)
– 明文:M<n
密文:C=Me(mod n)
d
解密 (用d,n)
RSA的例子
若Bob选择了p=7和q=17 则n=119, ϕ (n)=6×16=96=25×3,一个正整数e能用作加密指 数,当且仅当e不能被2,3所整除 假设Bob选择e=5,那么用辗转相除法将求得: d=e -1 ≡ 77(mod 96) Bob的解密密钥d={77,119},公开{5,119} 现假设Alice想发送明文19给Bob
P,Q的选择
要求:若使RSA安全,p与q必为足够大的素数,使 分析者没有办法在有效时间内将n分解出来。建议选择 p和q大约是100位的十进制素数。 模n的长度要求至少是 512比特。 为了抵抗现有的整数分解算法,对RSA模n的素因子 p和q还有如下要求: (1)|p-q|很大,通常 p和q的长度相同; (2)p-1 和q-1分别含有大素因子p1和q1 (3)gcd(p1-1,q1-1)应该很小。 为了提高加密速度,通常取e为特定的小整数,如EDI国际标 准中规定 e=216+1,ISO/IEC9796中甚至允许取e=3。这时加密 速度一般比解密速度快10倍以上。
公钥密码体制(RSA)算法及安全性

公钥密码体制(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。
第四章公钥密码体制

RSA公钥密码算法(续)
如果A要发送信息M给B,A和B之间用以 下方式进行通信: 计算密文 C = EK p (M ) →发送C给B→从A 接收C→计算明文 M = DKs (C) . 一般要求p,q为安全质数,现在商用的 安全要求为n的长度不少于1024位 。
B
B
RSA公钥密码算法(续)
算法的安全性分析 1. 如果密码分析者能分解 n 的因子 p 和 q ,他就可以 求出φ (n ) 和解密的密钥 d ,从而能破译RSA,因此破 译RSA不可能比因子分解难题更困难。 2. 如果密码分析者能够不对 n 进行因子分解而求得,则 可以根据 de ≡ 1 mod φ (n ) 求得解密密钥 d ,从而破译RSA。因为 2 p + q = n − φ (n ) + 1 p − q = ( p + q) − 4n 所以知道φ (n ) 和 n 就可以容易地求得 p 和 q ,从而成 功分解 n ,因此,不对 n 进行因子分解而直接计算 φ (n ) 并不比对 n 进行因子分解更容易。
椭圆曲线算法
1985年Koblitz和Miller提出在密码学中应用椭 圆曲线的思想,使其成为构造公开密钥密码系 统的一个有利工具。其安全性是基于椭圆曲线 上的离散对数计算的困难性。 优点:椭圆曲线上离散对数的计算要比有限域 上离散对数的计算更困难。与RSA相比,椭圆 曲线密码体制能用较短的密钥达到较强的安全 性,这样实现上能节省系统资源。
RSA公钥密码算法
RSA是Rivet,Shamir和Adleman于1978年在美 国麻省理工学院研制出来的,它是一种比较典 型的公开密钥加密算法。 基础 大数分解和素性检测——将两个大素数相乘在 计算上很容易实现,但将该乘积分解为两个大 素数因子的计算量是相当巨大的,以至于在实 际计算中是不能实现的。
《密码学基础》课件第5章

超递增背包问题的解很容易通过以下过程找到:设背包容
量为C,从右向左(从大到小) 依次检查超递增背包向量V中的每 个元素,以确定问题的解。若C≥vn,则vn在解中,对应的bn应 为1,并将C的值更新为C-vn;否则如果C<vn,则vn不在解中, 对应的bn应为0,C的值保持不变。然后对vn-1,vn-2,…,v2,v1 依次重复上述过程,并判断C是否减少到0。若C最终变成0, 则问题的解存在,否则解不存在。
公钥密码体制中的公开密钥可被记录在一个公共数据库里 或者以某种可信的方式公开发放, 而私有密钥必须由持有者妥 善地秘密保存。这样,任何人都可以通过某种公开的途径获得 一个用户的公开密钥,然后进行保密通信,而解密者只能是知 道相应私钥的密钥持有者。用户公钥的这种公开性使得公钥体 制的密钥分配变得非常简单,目前常用公钥证书的形式发放和 传递用户公钥(见7.3节),而私钥的保密专用性决定了它不存在 分配的问题(但需要用公钥来验证它的真实性,以防止欺骗)。
(2) 对于任意的公私钥对k=(pk,sk)∈K,加密变换Epk和解 密变换Dsk都是多项式时间可计算的函数,但由加密变换Epk推 出解密变换Dsk在计算上是不可行的,或者说在知道公钥pk的情 况下推知私钥sk是计算上不可行的。
由上面的基本要求可以看出,公钥密码体制的核心在于加 密变换与解密变换的设计。在密码算法中,加解密变换是互逆 的,但条件(2)说明在公钥密码体制中加解密变换不能简单地直 接互推。上述条件表明公钥密码体制的加解密变换类似于陷门 单向函数,因此可以利用陷门单向函数来构造公钥密码体制。 所谓的陷门单向函数是一个可逆函数f(x),满足对于定义域中的 任何x,计算函数值y=f(x)都是容易的,但对几乎所有的x要由 y=f(x) 求x在计算上不可行(即使已经知道函数f(x)),除非知道 某些辅助信息(称为陷门信息)。这里所说的“容易计算”是指 函数值能在其输入长度的多项式时间内计算出来,比如若输入 长度为n比特,求函数值的计算时间是na的某个倍数,则称此函 数是容易计算的,否则就是不可行的,这里a是一个固定常数。
RSA公钥密码体制简介

32
例:
计算: 152013(mod 2539) 13 23 1 22 0 2 1 1101 B
(e3 , e2 , e1, e0 ) (1,1,0,1)
152013 mod2539
(((1520e3 )2 1520e2 )2 1520e1 )2 1520e0 (mod 2539) ((15202 1520)2 15200 )2 1520 (mod 2539)
14
RSA算法论证
假设截获密文C,从中求出明文M。他知道 M≡Cd mod n ,
因为n是公开的,要从C中求出明文M,必须先求 出d,而d是保密的。但他知道,
ed≡1 mod φ(n), e是公开的,要从中求出d,必须先求出φ(n),而 φ(n)是保密的。但他又知道,
φ(n)=(p-1)(q-1),
9
RSA算法论证
于是,M tφ(n) =bq+1,其中b为某整数。 两边同乘M, M tφ(n)+1 =bqM+M 。 因为M=ap,故 M tφ(n)+1 =bqap+M =abn+M 。 取模n得, M φ(n)+1 =M mod n 。
10
RSA算法论证
第二种情况:M=0 当M=0时,直接验证,可知命题成立。
加密过程:c=me mod n 解密过程:m=cd mod n
3
2、工作原理
定义:任给一个正整数m,如果用m去除任意两个整 数a、b所得的余数相同,称a、b对模m同余。记 为: a bmodm,若余数不同,则a、b对模m不同余。 记为: a b modm。
定理: a bmodm ,当且仅当m|(a-b)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
公钥密码系统及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是不可能的。