RSA主要原理,数学基础

一些关于RSA的了解

RSA是第一个实用的公钥密码系统
关于RSA加密算法的一些讲解,以及自己的了解
RSA自从研发到现在已经经历了20余年的攻击考验,充分
展示了RSA算法的巧妙安全。
最近学校有讲到,了解到RSA,其实许多计算机专业的同学在大一上就有了些了解,为什么RSA能经历如此多的考验,以至于现在为人们广为接受呢?
那么,WHY RSA?

RSA简介

RSA是第一个实用的公钥密码系统,是目前应用最为广泛的公钥密码系统,三位发明者,R.rivest, A.shamir,L.aderman.之后获得了2002年的ACM图灵奖 ,计算机界的最高荣誉,足以看出RSA的强大与巧妙。WHY RSA?
最大的特点是非对称加密,可以在下面了解到非对称加密的特点。

HOW? RSA的步骤

这段内容,网上已经多到爆了QAQ稍微用表格表示一下步骤
稍微用表格表示一下步骤:

先找两个素数p=3,q=11
1.寻找欧拉函数φ(n)φ(n)=(p-1)(q-1)=2*10=20
2.求公钥E1<E<φ(n), 且与φ(n)互质,故取3
3.求公共模数NN=p*q
4.求私钥D(D*E)%φ(n)=1,公钥私钥相乘模φ(n)取余为1
私钥为7
5.加密公式密文=明文^公钥(mod公共模数)
密文C(ciphertext)C=P^E(mod N)
6.解密公式明文=密文^私钥(mod公共模数)
明文P(plaintext)P=C^D(mod N)

表中有好几个重要的量,一共6个步骤,可以十分清楚的看懂RSA的加密步骤,确实,抛开数论的公式,看起来只是简单的数学运算,像求模运算等。RSA加密的步骤显然是没有那么复杂的。

在说下详细的操作,可以跳开,先取两个质数,这里要提到,没
了解的同学,可以看看基础,挨个看看其组成

1.两个质数 与 公共模数

首先寻找两个质数,先命名为p和q,核心也就是质数,接下来想讲
一讲

(1)
p与q的乘积为 公共模数 N。N十分重要,因为明文和密文
在经过加密解密时必须要模公共模数,(mod N)。
同时
(2):
经过p与q的计算可以生成公钥(欧拉公式说)
(3):
p与q相乘得到的公共模数N,转化为二进制数即为其RSA长度位数,
表格中选取的p与q为3与11,33转化为二进制为100001,其长度为6
位实际上,一般场合软件加密需要1024位,重要场合加密要2048位

可以算算2的1024次方是多少,数字是十分巨大的。当然越大也越安全,说到安全之后也会说到,数字大加密起来,自然也存在时间问题,之后在优缺点也会讲到。

2.欧拉公式

 p =3; q=11                       //两个大的质数
  
 φ(n) = (p-1)(q-1)      

即为欧拉函数,实际上,这只是欧拉函数推导的一部分,欧拉公式,φ(n) 这里用于推导1到p和q之内有多少个数与其互质。

其也指出0到p(一个质数)之间,与其互质的数有p-1个。

即,0~5之间与其互质的数字就有(5-1),4个,为1,2,3,4.

同时两个质数其互质数,满足乘法法则。

φ(p*q)=(p-1)(q-1)

该步骤用于寻找,1到 φ(n)之间合适的一个质数。筛选出的质数为公钥E,同时, φ(n)与E的模反函数为私钥。即为:

 (E*D)% φ(n)=1

得到公钥和私钥。
为什么要满足这样的条件呢????

3,公钥与密钥

公钥与密钥可以进行解密,加密。
公钥具体构成为(E,N)其为上文表格中的(公钥,公共模数)
同理。私钥的形式为(私钥,公共模数),加密需要知道公钥和公共模数。同时,只要把公共模数和私钥告诉对方,即可进行解密。

 密文=明文^公钥(mod公共模数)
 明文=密文^私钥(mod公共模数) 

公钥可以放出来,让大家知道,也可以用来考验密码系统的能力。而私钥不能泄露,两个质数p,q也是十分重要的,不能泄露。

RSA的安全性

基本步骤已经放了出来,细看还是比较容易理解,即使不知道数论的知识也能很容易弄懂。

为什么RSA热门,作为密码肯定有其安全性强这一关键因素。
RSA的安全性原理?

看到上面的解密,如果有人获得了密文,他如果想通过密文窃取情报消息,当他把很多数字串,分拣开,并发现是RSA时,他会怎么做呢?首先他会想找密钥,一旦有了密钥,就可以用解密公式解密,如果再轻松一点,连公共模数N也知道了,

该怎么求呢?

他想知道私钥D,由上文的表格很容易找到:

(E*D)%φ(n)=1

即私钥与公钥想乘之后,对φ(n)取余余1.
公钥E已知的话,求出φ(n)就可以很容易得到答案。

φ(n)为前文的欧拉函数,表格中也有:

φ(n)=(p-1)(q-1)=2*10=20
=pq-p-q+1

想知道φ(n),就必须对一个很大的质数,即为p与q的乘积进行因素分解,而大数字的因素分解极为困难,将一个几百位的质数进行分解很难办到,超过1024位的因素分解,更是至今未有人公开声明能办到。这里就构成了其难破解性。

RSA的数学原理与正确性

接下来开始说RSA的正确性,也是数学原理。到现在,大家对RSA已经有了大部分的了解,知道怎么找私钥和公钥以及加解密。

这个太复杂了,想看的人看吧,但过程还是摆在这里,毕竟要说RSA得正确性。

 比如这两个公式,为什么可以实现加密以及还原呢?

  密文=明文^公钥(mod公共模数)
  明文=密文^私钥(mod公共模数) 

网上有很多证明方法,这里说教材上一种比较全面的(我认为。。)

有几个上面提到的重要变量:

  明文:        P      (Plaintext)
  密文:         C      (Cyphertext)
  两个质数:     p与q
  公共模数:     N    =  p * q
  gcd():       求最大公约数

由加密公式:

        C ≡  P^E(mod N)
       取出  P^E(mod N)

由同余式性质:

  P^E mod N    ≡     C^ED mod N   ≡    C^(kφ(n)+1) mod N  --------- (0)

这里推出公式(0)
在第二项直接将P转化为C的D次方
因为P=C^D mod N,可转换。划为C的ED次方。由之前的表格中:(由公钥计算私钥的公式得出)

 (D*E)%φ(n)=1

即D与E的乘积模欧拉函数余1.故DE写为k(φ(n)+1)

现在从(1)式开始推导:

 P^E mod N   =    C^(kφ(n)+1) mod N   --------- (1)

在这里分两种情况讨论:

(一)第一种情况:

C与N互质,即为密文(编码为数字后)与公共模数互质。

这里开始凑一个函数:使用了欧拉定理

 C^φ(n)  =  1 mod N  
 C^kφ(n)  =  1 mod N
 C^(kφ(n) +1) = C  mod N
 于是得出结论:
 P^E mod N = C mod N    -------------(2)

先说前三行,n的x次方模一个数,不论是多少次方其模出的数都不会变。比如2的平方除以3余1, 2的3次方,4次方除以3都余1.不管取多少次方,模数不变。

利用这个特性,凑出 C^kφ(n) = 1 mod N,两边乘C,得到:

C ^ (kφ(n) +1) = C  mod N,

再看看上面推出的公式(1)

P^E mod N   =    C^(kφ(n)+1) mod N   --------- (1)

联立得:

P^Emod N = C mod N    -------------(2)

(二)第二种情况:

C与N不互质。
N等于两个质数p与q的乘积,既然C与N不互质,那么其两数必有公因数,即C与N之间有共同的因数,然而N为两个质数的乘积,因此公因数必为P或Q。

在此,设公因数就为p, 令C为sp,则s在1到q之间。

由费马定理得到:

   C^(q-1) = 1 mod q
   C^k(q-1)(p-1)= 1 mod q
   C^kφ(n)=1 mod q     -------------(3)

另外,由于p为C的因数,则p必整除于C,由q整除于C,
由 C^kφ(n)=1 mod q -------------(3),两边乘C,得到

 C^(kφ(n)+1)=C mod q

由于前面提到,p,q为C的因数,所以

 C mod q =0        ----------------(4)
 C^(kφ(n)+1)=C ^ED   ------- (由(0)式可得)
 C^ED = 0        -------------------(5)

由于p整除于C。所以,推出(4)(5)式

   C^ED=0   ---------------(5)
   C mod p=0  --------------(4)

联立得出:

   C^ED = C  mod  p = 0 --------(6)

由中国剩余定理,以及之前的1,2,3,6式得出:

   C^ED = C mod N
   P^D mod N = C mod N
   C mod N = C----------(7)

好了,到(7)式这里,已经完成了一切的证明,如果你有心从头看到尾的话,这就是最后一步。

将最开始的第(2)式与第(7)式联立:

   P^E mod N = C mod N    -------------(2)
   C mod N = C----------(7)

联立得解密公式:

   P^E mod N = C  --------------推出加密公式
   明文^公钥(mod公共模数)=密文

好,推出了结论,不过教材上的实在太复杂了,没基础的人应该看不到这里,其实不知不觉就写了这么多了。。。就当解题步骤可看可不看吧,网上好像有简单的,复杂的证明好像更可靠,但,上面的证明可能有问题,毕竟太多了QAQ。

结尾

RSA的基本有关的都讲完了,本来还有很多能说,但篇幅有限,上述证明用到了欧拉公式,费马定理,以及中国剩余定理,网上很容易搜到和理解。请自己去了解,这是RSA的一小部分知识。感谢阅读。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

F1gh4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值