RSA加密过程分析

RSA加密过程分析

1.RSA简单介绍

1.1 RSA用法

简单说就是服务端创建公钥给到客户端,客户端通过公钥进行加密处理,把密文发送给服务端,然后服务端通过私钥进行解密。

那么公钥和私钥是怎么来的,又是怎么利用公钥加密,私钥解密的,且看下文分析。

2.RSA加密算法推导分析

2.1 欧拉φ函数和费马小定理以及欧拉费马定理介绍

算法推导参考这个视频(素数(六)基于欧拉函数的RSA算法加密原理是什么?RSA算法详解),讲的非常不错,以至于我照抄了一遍,建议直接看视频。

了解RSA算法,首先要了解一个函数,欧拉φ函数。又叫欧拉总计函数

表达形式:φ(n)其中n是正整数

image

φ是小写

具体含义为:

φ(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

这个问题可以表示成

φ(8)=4

再思考一个问题,如果n是一个素数那么φ(n)等于多少?

就等于n-1
比如φ(7)=6,因为小于等于7的自然数中,除了7本身都和7互素。
所有素数都成立,这只是欧拉φ函数的一个基本性质。

那么欧拉为什么要研究这么一个函数,先看一个定理:费马小定理

费马小定理:

apa=p(aZ,P)

如果a是一个整数,p是一个素数,那么a的p次方减a一定是p的倍数

这说明什么呢:

(apa)p

这又说明什么呢:

appap,appap

这就叫做同余。

数论当中一般这么写:

apa(modp)

什么意思呢:

a的p次方与a同余,相对于p来说,≡表示同余

再提取一下

a(ap11)p

因此当a不是p的倍数时,费马小定理也可以写成

ap11=p

那么就能得到

ap11(modp)

a的p-1次方和1同余,相对于p来说。

费马小定理给出的时候并没有给出证明过程,到了1736年,欧拉就开始证明这个费马小定理

欧拉认为费马小定理是对的,但是不够一般化,因为这里p一定得是素数。

欧拉就思考,如果p不是素数呢,或者满足其他条件能不能成立。

最终欧拉给出了一个更一般化的定理

即:

aφ(n)1=n(aZ,nZ,an)

a是一个整数,n是一个整数,且a和n互质,则a的(n)次方减1是n的倍数。⊥表示a和n互质

就可以写成如下形式:

aφ(n)1(modn)

当n是一个素数的时候,φ(n) = n - 1

所以上面的式子可以写成:

an11=n

这个其实就是费马小定理

这个升级过后的定理被称为费马欧拉定理即:

aφ(n)1=n(aZ,nZ,an)

再来看欧拉定理的另一个性质

欧拉φ函数是一个积性函数,什么意思呢
如果有两个数m、n互素,则φ(mn) = φ(m)·φ(n),这种函数就叫积性函数

即:

φ(mn)=φ(m)·φ(n)(mn)

举个例子:
比如想知道小于等于15的数中有多少素数,可以通过如下计算

35

φ(15)=φ(3)·φ(5)

φ(15)=2×4=8

2.2 RSA算法究竟怎么用

Alice想跟Bob之间互发消息,但是网络总是不安全的,这就需要把信息几米之后再去传输。

2.2.1 怎么加密呢

p,q,N=pq

r=φ(N)=φ(p)·φ(q)=(p1)·(q1)

e<r,er

什么意思:

①首先随机选取两个不相等的大质数p和q,计算出两个的乘积记作 N = p·q
②然后通过欧拉函数就可以求出φ(N)得值,也就是在小于等于N的自然数当中,有多少个数和N互素。
φ(N) = φ(p) · φ(q) = (p - 1) · (q - 1)
令r = φ(N)
③再随机选取一个整数e,这个e要小于r,并且e要和r互素

到这里就有了公钥了,公钥是什么呢,就是(N,e)这两个数

那么私钥呢:

de·d1=r

dedr1

ded1(modr)

什么意思:

这里还要再找一个数,叫做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,如果消息过长就截成几段分开发送。

加密过程就是

cmec=N

cme(modN)

什么意思呢:

Bob要找到一个数c,是的m的e次方减去c的值为N的倍数
即c和m的e次方同余。相对于N

其中这个c就是加密后的密文。

然后Bob把c传给Alice,Alice拿到这个c之后只需要做一件事

cd?=N

什么意思呢:

就是Alice要找到一个数,使得c的d次方减掉这个数得到的值是N的倍数

把这个数解出来之后,你就会发现,在小于N的范围内只能找到一个就是m,这样Alice就还原了原消息的值。

那么这具体怎么推导的呢:

me=c+N

c=me+N

cd=med+Nd

cd=m(1+r)+N

cd=m(m(r))+N

cd=m(mφ(N))+N

cd=m(1+N)+Nmφ(N)=1+N

cd=m+N

最后解密的式子就是Alice要解决问题的那个式子

3. 总结:

如果不知道私钥,RSA算法目前只能够通过质因数分解来暴力破解,这要花费很长时间。因此RSA算法才被认为不可破解。

参考文献

欧拉总计函数

素数(六)基于欧拉函数的RSA算法加密原理是什么?RSA算法详解

posted @   cfdroid  阅读(405)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示

目录导航