密码学基础(三):非对称加密(RSA算法原理)

什么是RSA加密

加密和解密使用的是两个不一样的秘钥,这种算法叫作非对称加密。非对称加密又称为公钥加密,RSA只是公钥加密的一种。算法

数字签名 && 数字证书

现实生活中有签名,互联网中也存在签名。签名的做用有两个,一个是身份验证,一个是数据完整性验证。数字签名经过摘要算法来确保接收到的数据没有被篡改,再经过签名者的私钥加密,只能使用对应的公钥解密,以此来保证身份的一致性。安全

数字证书是将我的信息和数字签名放到一块儿,经由CA机构的私钥加密以后生成。固然,不通过CA机构,由本身完成签名的证书称为自签名证书。CA机构做为互联网密码体系中的基础机构,拥有至关高级的安全防范能力,全部的证书体系中的基本条件就是CA机构的私钥不被窃取。bash

CA证书的生成过程以下: 函数

CA机构颁发的数字证书

证书参与信息传递完成加密和解密的过程以下: 加密

加密和解密

欧拉函数

互质关系:互质是公约数只有1的两个整数,1和1互质,13和13就不互质了。 欧拉函数:表示任意给定正整数 n,在小于等于n的正整数之中,有多少个与 n 构成互质关系,其表达式为:spa

euler函数
其中,若P为质数,则其表达式能够简写为:

状况一:φ(1)=1;
1和任何数都互质,因此φ(1)=1;3d

状况二:n 是质数, φ(n)=n-1;
由于 n 是质数,因此和小于本身的全部数都是互质关系,因此φ(n)=n-1;code

状况三:若是 n 是质数的某一个次方,即 n = p^k ( p 为质数,k 为大于等于1的整数),则φ(n)=(p-1)p^(k-1);
由于 p 为质数,因此除了 p 的倍数以外,小于 n 的全部数都是 n 的质数;cdn

状况四:若是 n 能够分解成两个互质的整数之积,n = p1 × p2,则φ(n) = φ(p1p2) = φ(p1)φ(p2);
好比,φ(30)=φ(5×6)=φ(5)×φ(6)=4×2=8。此种状况能够经过"中国剩余定理"证实,证实过程再也不本文讨论范围内。blog

状况五:基于状况四,若是 p1 和 p2 都是质数,且 n=p1 × p2,则φ(n) = φ(p1p2) = φ(p1)φ(p2)=(p1-1)(p2-1)
例如,φ(39) = φ(3×13) = φ(3)φ(13)=2 × 12 = 14;

而 RSA 算法的基本原理就是欧拉函数中的第五种状况,即: φ(n)=(p1-1)(p2-1);

模反元素

若是两个正整数 a 和 n 互质,那么必定能够找到整数 b,使得 ab-1 被 n 整除,或者说ab被n除的余数是1。这时,b就叫作a的“模反元素”。欧拉定理能够用来证实模反元素必然存在。

模反元素

能够看到,a的 φ(n)-1 次方,就是a对模数n的模反元素。

RSA算法原理

一、随机选择两个质数并计算乘积

n=p x q = 3233,3233写成二进制是110010100001,一共有12位,因此这个密钥就是12位。

在实际使用中,通常场景下选择1024位长度的数字,更高安全要求的场景下,选择2048位的数字,这里做为演示,选取p=61和q=53;

二、计算n的欧拉函数φ(n)。

由于n、p、q都为质数,因此φ(n) = (p-1)(q-1)=60×52= 3120

三、随机选择一个整数e,条件是1< e < φ(n),且e与φ(n) 互质。

1< e <3120,注意,这里是和φ(n) 互互质而不是n!假设选择的值是17,即 e=17;

四、计算e对于φ(n)的模反元素 d

模反元素就是指有一个整数 d,可使得 ed 被 φ(n) 除的余数为1。表示为:(ed-1)=φ(n)y --> 17d=3120y+1,算出一组解为(2753,15),即 d=2753,y=-15,也就是(172753-1)/3120=15。

注意,这里不能选择 3119,不然公私钥相同.

五、生成结果

公钥:(n,e)=(3233,2753) 私钥:(n,d)=(3233,17)

为何没法破解

公钥是公开的,也就是说 m=p*q=3233 是公开的,那么怎么求 e ?e 是经过模反函数求得,17d=3120y+1,e是公开的等于 17,这时候想要求d就要知道 3120,也就是 φ(n),也就是 φ(3233),说白了,3233 是公开的,你能对 3233 进行因数分解,你就能知道 d,也就能破解私钥。

正常状况下,3233 咱们能够因数分解为 61*53,可是对于很大的数字,人类只能经过枚举的方法来因数分解,因此RSA安全性的本质就是:对极大整数作因数分解的难度决定了 RSA 算法的可靠性。换言之,对一极大整数作因数分解愈困难,RSA 算法愈可靠。

人类已经分解的最大整数是:

分解质因数

这我的类已经分解的最大整数为 232 个十进制位,768 个二进制位,比它更大的因数分解,尚未被报道过,所以目前被破解的最长RSA密钥就是 768 位。因此实际使用中的 1024 位秘钥基本安全,2048 位秘钥绝对安全。

RSA的加密和解密过程

已经得出公私钥的组成: 公钥:(n,e)=(3233,2753) 私钥:(n,d)=(3233,17) 加密的过程就是

m^e ≡ c (mod n)
复制代码

解密过程以下:

c^d ≡ m (mod n)
复制代码

其中 m 是要被加密的数字,c 是加密以后输出的结果,且 m < n ,其中解密过程必定成立能够证实的,这里省略证实过程。

总而言之,RSA的加密就是使用模反函数对数字进行加密和求解过程,在实际使用中由于 m < n必须成立,因此就有两种加密方法:

  • 分段加密

  • 使用对称加密加密原文,使用RSA加密对称加密中使用的秘钥

对称加密和非对称加密的区别和联系

对称加密存在虽然快速,可是存在致命的缺点就是秘钥须要传递。非对称加密虽然不须要传递秘钥就能够完成加密和解密,可是其致命缺点是速度不够快,不能用于高频率,高容量的加密场景。因此才有了二者的互补关系,在传递对称加密的秘钥时采用非对称加密,完成秘钥传送以后采用对称加密,如此就能够完美互补。

欢迎关注
相关文章
相关标签/搜索