公钥密码系统及RSA公钥算法
第4章公钥密码体制
![第4章公钥密码体制](https://img.taocdn.com/s3/m/00405f7702768e9951e73854.png)
密钥
为公钥。 不再需要, 以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章公钥密码系统](https://img.taocdn.com/s3/m/7e25cb274531b90d6c85ec3a87c24028915f8527.png)
第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位左右的十进制数字),计算乘 积:
现代密码的主要分类
![现代密码的主要分类](https://img.taocdn.com/s3/m/ea5a7b05777f5acfa1c7aa00b52acfc789eb9fc9.png)
现代密码的主要分类密码是信息安全领域中最基本的保护手段之一。
在现代密码学中,密码被分为多个分类,每种分类都具有不同的特点和应用场景。
下面将介绍现代密码的主要分类。
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
![公钥密码体制与RSA](https://img.taocdn.com/s3/m/67f0ce60a45177232f60a2e0.png)
莫尔定律: 芯片微处理器速度每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)算法及安全性](https://img.taocdn.com/s3/m/43d39f1a4431b90d6c85c7d0.png)
公钥密码体制(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。
第四章公钥密码体制
![第四章公钥密码体制](https://img.taocdn.com/s3/m/43fa68370b4c2e3f572763e2.png)
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章
![《密码学基础》课件第5章](https://img.taocdn.com/s3/m/031a30a38ad63186bceb19e8b8f67c1cfbd6ee14.png)
超递增背包问题的解很容易通过以下过程找到:设背包容
量为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公钥密码体制简介
![RSA公钥密码体制简介](https://img.taocdn.com/s3/m/f4cd6111b207e87101f69e3143323968001cf410.png)
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)。
密码基础知识(2)以RSA为例说明加密、解密、签名、验签
![密码基础知识(2)以RSA为例说明加密、解密、签名、验签](https://img.taocdn.com/s3/m/a129120efd4ffe4733687e21af45b307e871f905.png)
密码基础知识(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作为输⼊,输出签名。
信息安全概论第四章公钥密码体制
![信息安全概论第四章公钥密码体制](https://img.taocdn.com/s3/m/6d85ad1efc4ffe473368abea.png)
14
Diffie-Hellman密钥交换算法 密钥交换算法
Diffie和Hellman在其里程碑意义的文章中, 虽然给出了密码的思想,但是没有给出真正意 义上的公钥密码实例,也既没能找出一个真正 带陷门的单向函数 然而,他们给出单向函数的实例,并且基于此 提出Diffie-Hellman密钥交换算法
13
常用的公开密钥算法
公钥算法的种类很多,具有代表性的三种密码: 公钥算法的种类很多,具有代表性的三种密码: 基于整数分解难题(IFP)的算法体制 基于整数分解难题(IFP)的算法体制(RSA) 基于离散对数难题(DLP)算法体制 基于离散对数难题(DLP)算法体制(ElGamal) 基于椭圆曲线离散对数难题( ECDLP ) 的算法体制 基于椭圆曲线离散对数难题 ( ECDLP) (ECC)
3
4.1 公钥密码体制的基本原理
对称算法的不足
(1)密钥管理量的困难 传统密钥管理:两两分别用一个密钥时, 传统密钥管理:两两分别用一个密钥时,则n个用户需 C(n,2)=n(n-1)/2个密钥 当用户量增大时, 个密钥, 要C(n,2)=n(n-1)/2个密钥,当用户量增大时,密钥空 间急剧增大。 间急剧增大。如: n=100 时, C(100,2)=4,995 n=5000时 n=5000时, C(5000,2)=12,497,500 (2)密钥必须通过某一信道协商,对这个信道的安全 密钥必须通过某一信道协商, 性的要求比正常的传送消息的信道的安全性要高
7
公开密钥密码的重要特性
加密与解密由不同的密钥完成 Y: X: Y = EKU(X) X = DKR(Y) = DKR(EKU(X))
加密: X 解密: Y
知道加密算法,从加密密钥得到解密密钥在计算上 , 是不可行的 两个密钥中任何一个都可以用作加密而另一个用 作解密(不是必须的) X = DKR(EKU(X))
公钥密码体制及典型算法-RSA
![公钥密码体制及典型算法-RSA](https://img.taocdn.com/s3/m/0a6befb6b0717fd5360cdca8.png)
公钥密码算法应满足的要求
④ 敌手由B的公开钥PKB求秘密钥SKB在计算 上是不可行的。 ⑤ 敌手由密文c和B的公开钥PKB恢复明文m 在计算上是不可行的。 ⑥ 加、解密次序可换,即 EPKB[DSKB(m)]=DSKB[EPKB(m)] 其中最后一条虽然非常有用,但不是对 所有的算法都作要求。
发方首先用自己的秘密钥SKA对消息m加 密,用于提供数字签字。再用收方的公开钥 PKB第2次加密,表示为 c=EPKB[ESKA[m]] 解密过程为 m=DPKA[DSKB[c]] 即收方先用自己的秘密钥,再用发方的公 开钥对收到的密文两次解密。
23
公钥保密和认证体制
为了要同时实现保密性和确证性,要采用双重加、 解密
20
公钥密码体制认证的原理
以上认证过程中,由于消息是由用户自 己的秘密钥加密的,所以消息不能被他人篡 改,但却能被他人窃听。这是因为任何人都 能用用户的公开钥对消息解密。为了同时提 供认证功能和保密性,可使用双重加、解密。 如下图所示。
21
公钥密码体制的认证、保密框图
22
公钥密码体制认证的原理
18
公钥密码体制认证的原理
因为从m得到c是经过A的秘密钥SKA加 密,只有A才能做到。因此c可当做A对m的 数字签字。 另一方面,任何人只要得不到A的秘密 钥SKA就不能篡改m,所以以上过程获得了 对消息来源和消息完整性的认证。
19
公钥密码体制认证的原理
在实际应用中,特别是用户数目很多时,以 上认证方法需要很大的存储空间,因为每个文件都 必须以明文形式存储以方便实际使用,同时还必须 存储每个文件被加密后的密文形式即数字签字,以 便在有争议时用来认证文件的来源和内容。改进的 方法是减小文件的数字签字的大小,即先将文件经 过一个函数压缩成长度较小的比特串,得到的比特 串称为认证符。 认证符具有这样一个性质:如果保持认证符的 值不变而修改文件这在计算上是不可行的。用发送 者的秘密钥对认证符加密,加密后的结果为原文件 的数字签字。
RSA算法公钥加密算法new
![RSA算法公钥加密算法new](https://img.taocdn.com/s3/m/252e1c8f28ea81c759f57800.png)
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比特的密钥。
《网络信息安全》第5-6讲
![《网络信息安全》第5-6讲](https://img.taocdn.com/s3/m/b2b0448eec3a87c24028c4cd.png)
的新方向》,提出了建立“公开密钥密码体制”:若用户A有加
密密钥ka(公开),不同于解秘密钥ka’(保密),要求ka的公开 不影响ka’的安全。若B要向A保密送去明文m,可查A的公开密钥ka,
若用ka加密得密文c,A收到c后,用只有A自己才掌握的解密密钥
ka’对x进行解密得到m。
遵义师范学院
2.4 公钥密码
遵义师范学院
2.5 消息验证和数字签名
1. Hash函数
公钥密码体制最重要的一个应用是数字签名,而数字签名常
常需要和单向散列函数结合起来使用。散列函数(Hash函数)是把 不固定长度输入串(M是变长的消息串)转换成固定长度输出串(散 列值h)的一种函数,即h=H(M),其中h的长度是m。单向散列函 数是在一个方向上工作的散列函数,其安全性主要在于它的单向
也可以被单个用户用来确定他的文件是否已经被改动,或是否被
感染了病毒。
遵义师范学院
2.5 消息验证和数字签名
3.数字签名
数字签名就是附加在数据单元上的一些数据,或是对数据单元所 作的密码变换。这种数据或变换允许数据单元的接收者用以确认数据 单元的来源和数据单元的完整性,并保护数据,防止被人进行伪造。 它是对电子形式的消息进行签名的一种方法,一个签名消息能在通信 网络中传输。基本要求如下:
(5) 加密函数为:E(x)=me mod n,解密函数为:D(x)=cd mod n,其中m是 明文,c是密文。
RSA公钥密码算法
![RSA公钥密码算法](https://img.taocdn.com/s3/m/ca5512dedd3383c4bb4cd2ad.png)
定理2.4.3 (RSA公钥密码算法) 设 p , q 是两个不同的 奇素数,n=pq, a 是满足1≤a < n的整数。
整数 e 满足 1 < e < (n) , 且 (e, (n)) =1 。 那么:1) 存在整数 d , 1≤d< (n) , 使得
ed≡1(mod (n))
例3.2.7 用RSA公钥密码系统对“math”加密、解密。 解密过程:
以两字母为一组对“sagh”编码: “sa”=18 ∙ 26+0=468 ,“gh”=6∙26+7=163。
用私钥Kd=(n, d) = (667, 237)解密“sa”=468 和 “gh”=163,计算: (“sa”) d (mod n) =c1 d=468237(mod 667); (“gh”) d (mod n) =c2 d=163237(mod 667);
私钥Kd=(n, d) = (667, 237) 。
2. RSA公钥密码系统加密/解密过程
例3.2.7 用RSA公钥密码系统对“math”加密、解密。 加密过程:
以两字母为一组对“math”编码: “ma”=12∙26+0=312 ,“th”=19 ∙ 26+7=501。
用公钥Ke=(n, e) = (667, 13) 加密“ma”=312 和 “th”=501,计算: c1=(“ma”) e (mod n)=31213(mod 667); c2=(“th”) e (mod n)=50113(mod 667);
2. RSA公钥密码系统加密/解密过程
例3.2.7 用RSA公钥密码系统对“math”加密、解密。 c2=(“th”) e (mod n)=50113(mod 667);
RSA算法
![RSA算法](https://img.taocdn.com/s3/m/8efb0734f111f18583d05a40.png)
首先, 找出三个数, p, q, r,
其中 p, q 是两个相异的质数, r 是与 (p-1)(q-1) 互质的数......
p, q, r 这三个数便是 private key
接著, 找出 m, 使得 rm == 1 mod (p-1)(q-1).....
这个 m 一定存在, 因为 r 与 (p-1)(q-1) 互质, 用辗转相除法就可以得到了.....
所提高。但这样作是不安全的,对付办法就是e和d都取较大的值。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。RSA是被研究得最广泛的公钥算法,从提出到现在已近二十年,经历了各种攻击的考验,逐渐为人们接受,普遍认为是目前最优秀的公钥方案之 一。RSA的安全性依赖于大数的因子分解,但并没有从理论上证明破译RSA的难度与大数分解难度等价。即RSA的重大缺陷是无法从理论上把握它的保密性能 如何,而且密码学界多数人士倾向于因子分解不是NPC问题。 RSA的缺点主要有:A)产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密。B)分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且随着大数分解技术的发展,这个长度还在增加,不利于数据格式的标准化。目 前,SET( Secure Electronic Transaction )协议中要求CA采用比特长的密钥,其他实体使用比特的密钥。
所以, c == b^r == (a^m)^r == a^(rm) == a^(k(p-1)(q-1)+1) mod pq
1. 如果 a 不是 p 的倍数, 也不是 q 的倍数时,
则 a^(p-1) == 1 mod p (费马小定理) => a^(k(p-1)(q-1)) == 1 mod p
rsa公私钥指数、系数(模数)分解_概述及解释说明
![rsa公私钥指数、系数(模数)分解_概述及解释说明](https://img.taocdn.com/s3/m/82f1ee2c9a6648d7c1c708a1284ac850ad020438.png)
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加密算法所需的密钥对。
公钥用于加密数据,并且只能用于加密操作;而私钥则用于解密已经加密的数据,并且可以进行数字签名等操作。
信息安全导论课程-ch09-公钥密码学和RSA
![信息安全导论课程-ch09-公钥密码学和RSA](https://img.taocdn.com/s3/m/b7ed563db90d6c85ed3ac60d.png)
110
120 129 130 140 150 155 160 174 193 212 $10k 20k 30k withdrawn? $100
Apr. 1992
Jun. 1993 Apr. 1994 (Leutwyler 1994, Cipra 1995) Apr. 10, 1996 Feb. 2, 1999 (te Riele 1999a) Apr. 6, 2004 (Aoki 2004) Aug. 22, 1999 (te Riele 1999b, Peterson 1999) Apr. 1, 2003 (Bahr et al. 2003) Dec. 3, 2003 (Franke 2003) open open
• 用法:pqex <p> <q> <e> <x>
– p和q都是素数 – e和(p-1)(q-1)互素 – x小于pq
• 举例
BRSA实现考虑• Nhomakorabea数– 必须够大,否则对手可能很快分解n – 判定,试除法不可行 – 判定,采用Miller-Rabin概率测试方法 – 强素数
• (p-1)/2和(q-1)/2应是素数
• 选取较小的e(较大的d)
– e:3、65537
• 快速计算 X^Y%Z
B
X^Y%Z模幂乘举例
• 97221 % 2003 (都在模2003意义下) 97221 = 97128+64+16+8+4+1 = 97128 9764 9716 978 974 971 • 依次计算971、 972、 974、 978、 9716… 97128
cd=(me)d=med =mkφ(n)+1 =(mφ(n))km1 =m // 据Euler定理
RSA公钥密码算法
![RSA公钥密码算法](https://img.taocdn.com/s3/m/53461c524693daef5ff73d8b.png)
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算法](https://img.taocdn.com/s3/m/1ab5e530ee06eff9aef8077f.png)
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公钥私钥计算方法](https://img.taocdn.com/s3/m/ccf97e311611cc7931b765ce0508763230127466.png)
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在下互逆,因此公钥用于对数据进行加密,私钥用于对数据进行解密。
- 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是不可能的。