一些关于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.求公钥E | 1<E<φ(n), 且与φ(n)互质,故取3 |
3.求公共模数N | N=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的一小部分知识。感谢阅读。