RSA加密过程分析
RSA加密过程分析
1.RSA简单介绍
1.1 RSA用法
简单说就是服务端创建公钥给到客户端,客户端通过公钥进行加密处理,把密文发送给服务端,然后服务端通过私钥进行解密。
那么公钥和私钥是怎么来的,又是怎么利用公钥加密,私钥解密的,且看下文分析。
2.RSA加密算法推导分析
2.1 欧拉φ函数和费马小定理以及欧拉费马定理介绍
算法推导参考这个视频(素数(六)基于欧拉函数的RSA算法加密原理是什么?RSA算法详解),讲的非常不错,以至于我照抄了一遍,建议直接看视频。
了解RSA算法,首先要了解一个函数,欧拉φ函数。又叫欧拉总计函数
表达形式:φ(n)其中n是正整数
φ是小写
具体含义为:
φ(n)表示在小于或等于n的正整数中,与n互素的数的个数。
什么是互素呢?
也叫作互质。如果两个整数的最大公约数是1,那么就成两个数互素。
比如6和8,最大公约数是2,所以6和8不互素。
7和8最大公约数是1,7和8就互素。
现在思考一个问题:
在小于等于8的数中,有多少数和8是互素的。
那我们就找和8的最大公约数是1的数有多少就可以了。
首先1,1和任意自然数都互素,1算一个
2呢?2和8的最大公约数是2,不算。
以此类推,最终结果就是1,3,5,7
这个问题可以表示成
再思考一个问题,如果n是一个素数那么φ(n)等于多少?
就等于n-1
比如φ(7)=6,因为小于等于7的自然数中,除了7本身都和7互素。
所有素数都成立,这只是欧拉φ函数的一个基本性质。
那么欧拉为什么要研究这么一个函数,先看一个定理:费马小定理
费马小定理:
如果a是一个整数,p是一个素数,那么a的p次方减a一定是p的倍数
这说明什么呢:
这又说明什么呢:
这就叫做同余。
数论当中一般这么写:
什么意思呢:
a的p次方与a同余,相对于p来说,≡表示同余
再提取一下
因此当a不是p的倍数时,费马小定理也可以写成
那么就能得到
a的p-1次方和1同余,相对于p来说。
费马小定理给出的时候并没有给出证明过程,到了1736年,欧拉就开始证明这个费马小定理
欧拉认为费马小定理是对的,但是不够一般化,因为这里p一定得是素数。
欧拉就思考,如果p不是素数呢,或者满足其他条件能不能成立。
最终欧拉给出了一个更一般化的定理
即:
a是一个整数,n是一个整数,且a和n互质,则a的(n)次方减1是n的倍数。⊥表示a和n互质
就可以写成如下形式:
当n是一个素数的时候,φ(n) = n - 1
所以上面的式子可以写成:
这个其实就是费马小定理
这个升级过后的定理被称为费马欧拉定理即:
再来看欧拉定理的另一个性质
欧拉φ函数是一个积性函数,什么意思呢
如果有两个数m、n互素,则φ(mn) = φ(m)·φ(n),这种函数就叫积性函数
即:
举个例子:
比如想知道小于等于15的数中有多少素数,可以通过如下计算
2.2 RSA算法究竟怎么用
Alice想跟Bob之间互发消息,但是网络总是不安全的,这就需要把信息几米之后再去传输。
2.2.1 怎么加密呢
什么意思:
①首先随机选取两个不相等的大质数p和q,计算出两个的乘积记作 N = p·q
②然后通过欧拉函数就可以求出φ(N)得值,也就是在小于等于N的自然数当中,有多少个数和N互素。
φ(N) = φ(p) · φ(q) = (p - 1) · (q - 1)
令r = φ(N)
③再随机选取一个整数e,这个e要小于r,并且e要和r互素
到这里就有了公钥了,公钥是什么呢,就是(N,e)这两个数
那么私钥呢:
什么意思:
这里还要再找一个数,叫做e关于r的模逆元,记作d。说白了就是要找一个数d,满足ed - 1 = r的倍数
再换句话说就是d要满足ed除以r的余数等于1,这个d就叫做模逆元
现在私钥也有了,私钥就是(N,d)
2.2.2 怎么解密呢
现在公钥,私钥都有有了
公钥(N, e)
私钥 (N, d)
现在Alice想要Bob给他发加密消息,Alice先把公钥(N,e)发给Bob,Bob通过公钥来加密
现在假设Bob要给Alice发一个消息m,这个m需要小于整数N,如果消息过长就截成几段分开发送。
加密过程就是
什么意思呢:
Bob要找到一个数c,是的m的e次方减去c的值为N的倍数
即c和m的e次方同余。相对于N
其中这个c就是加密后的密文。
然后Bob把c传给Alice,Alice拿到这个c之后只需要做一件事
什么意思呢:
就是Alice要找到一个数,使得c的d次方减掉这个数得到的值是N的倍数
把这个数解出来之后,你就会发现,在小于N的范围内只能找到一个就是m,这样Alice就还原了原消息的值。
那么这具体怎么推导的呢:
最后解密的式子就是Alice要解决问题的那个式子
3. 总结:
如果不知道私钥,RSA算法目前只能够通过质因数分解来暴力破解,这要花费很长时间。因此RSA算法才被认为不可破解。