您好,欢迎来到世旅网。
搜索
您的当前位置:首页RSA加密原理

RSA加密原理

来源:世旅网

同余运算

符号约定:

  • a≡b(mod m)表示a,b对模m同余
  • (a, b)=c表示整数a和b的最大公约数为c
  • [a, b]=c表示整数a和b的最小公倍数为c

定理1: 整数a,b对模m同余的充要条件是 a-b能被m整除(即m|a-b)。

推论: a≡b(mod m)的充要条件是a=mt+b(t为整数)。

定理2: 同余关系具有反身性、对称性与传递性,即

1)a≡a (mod m);

2)若a≡b (mod m), 则b≡a (mod m);

3)若a≡b (mod m), b≡c (mod m),则a≡c (mod m).

定理3: 若a≡b(mod m), c≡d (mod m),则

1)a+c≡b+d (mod m);

2)a-c≡b-d (mod m);

3)ac≡bd (mod m).

推论: 若a≡b(mod m),n为自然数,则an≡bn (mod m)。

定理4: 若ca≡cb(mod m), (c,m)=d, 且a,b为整数,则a≡b(mod m/d).

推论: 若ca=cb(mod m), (c,m)=1,且a,b为整数,则a≡b(mod m).

定理5: 若a≡b (mod m),a≡b (mod n),则a≡b(mod [m,n]).

推论: 若a≡b(mod mi), i=1,2,…,n,则a≡b (mod [m1,m2,…,mn]).

同余运算总结:

欧拉定理

定义: 若对任意的自然数m,用记号ф(m)表示0,1,2,…,m-1中与m互素的数的个数,则称ф(m)为欧拉函数。

欧拉定理: 若(a,n)=1,则 a ϕ ( n ) ≡ 1 ( m o d   n ) a^{\phi(n)} ≡1 (mod\ n) aϕ(n)1(mod n)

证明:

将1~n中与n互质的φ(n)个数按顺序排布:
x 1 , x 2 , … , x ϕ ( n ) x_1,x_2, …,x_{\phi(n)} x1,x2,,xϕ(n)
我们考虑这么一些数:
m 1 = a ∗ x 1 , m 2 = a ∗ x 2 , … , m φ ( n ) = a ∗ x ϕ ( n ) m_1=a*x_1, m_2=a*x_2, …, m_{φ(n)}=a*x_{\phi(n)} m1=ax1,m2=ax2,,mφ(n)=axϕ(n)

1)这些数中的任意两个都不模n同余
反证法:假设如果有 m i ≡ m j ( m o d   n ) m_i≡m_j (mod\ n) mimj(mod n)(这里假定mi更大一些),就有:
m i − m j = a ( x i − x j ) = q n m_i-m_j=a(x_i-x_j)=qn mimj=a(xixj)=qn,即n能整除 a ( x i − x j ) a(x_i-x_j) a(xixj)
但是a与n互质,a与n的最大公因子是1,而 x i − x j &lt; n x_i-x_j&lt;n xixj<n,因而 a ( x i − x j ) a(x_i-x_j) a(xixj)不可能被n整除,矛盾。
也就是说这些数中的任意两个都不模n同余,φ(n)个数有φ(n)种余数。

2)这些数除n的余数都与n互质
反证法:假设某个余数与n有公因子r,不妨设 a ∗ x i = p n + q r = r ( … … ) a*x_i=pn+qr=r(……) axi=pn+qr=r(),故 a ∗ x i a*x_i axi与n有公因子r,不互质,显然这是不可能的。那么这些数除n的余数,都在 x 1 , x 2 , x 3 , … … , x ϕ ( n ) x_1,x_2,x_3,……,x_{\phi(n)} x1,x2,x3,,xϕ(n)中,因为这是1~n中与n互质的所有数,而余数又小于n.

由1)和2)可知,数 m 1 , m 2 , m 3 … … m φ ( n ) m_1,m_2,m_3……m_{φ(n)} m1,m2,m3mφ(n)(如果将其次序重新排列)必须相应地同余于 x 1 , x 2 , x 3 … … x φ ( n ) x_1,x_2,x_3……x_{φ(n)} x1,x2,x3xφ(n).
故得出: m 1 ∗ m 2 ∗ ⋯ ∗ m φ ( n ) ≡ x 1 ∗ x 2 ∗ ⋯ ∗ x φ ( n ) ( m o d   n ) m_1*m_2*\cdots*m_{φ(n)}≡x_1*x_2*\cdots*x_{φ(n)} (mod \ n) m1m2mφ(n)x1x2xφ(n)(mod n)

a φ ( n ) ∗ ( x 1 ∗ x 2 ∗ ⋯ ∗ x φ ( n ) ) ≡ x 1 ∗ x 2 ∗ ⋯ ∗ x φ ( n ) ( m o d   n ) a^{φ(n)}*(x_1*x_2*\cdots*x_{φ(n)})≡x_1*x_2*\cdots*x_{φ(n)} (mod\ n) aφ(n)(x1x2xφ(n))x1x2xφ(n)(mod n)

或者为了方便: K ( a φ ( n ) − 1 ) ≡ 0 ( m o d   n ) K(a^{φ(n)}-1)≡0(mod\ n) K(aφ(n)1)0(mod n),这里 K = x 1 ∗ x 2 ∗ ⋯ ∗ x φ ( n ) K=x_1*x_2*\cdots*x_{φ(n)} K=x1x2xφ(n)

可知 K ( a φ ( n ) − 1 ) K(a^{φ(n)}-1) K(aφ(n)1)被n整除。但K中的因子 x 1 , x 2 , … , x n x_1,x_2,\ldots,x_n x1,x2,,xn都与n互质,所以K与n互质。那么 a φ ( n ) − 1 a^{φ(n)}-1 aφ(n)1必须能被n整除,即 a φ ( n ) − 1 ≡ 0 ( m o d   n ) a^{φ(n)}-1≡0 (mod\ n) aφ(n)10(mod n),即 a φ ( n ) ≡ 1 ( m o d   n ) a^{φ(n)}≡1(mod\ n) aφ(n)1(mod n),得证。

推论(费马小定理): 若p是素数,a与p互质,则
a p − 1 ≡ 1 ( m o d p ) a^{p-1}≡1\pmod{p} ap11(modp)

推论: 若p是素数,则
a p ≡ a ( m o d p ) a^{p}≡a\pmod{p} apa(modp)

定理1: 若p是素数,则
ϕ ( p a ) = p a − p a − 1 \phi(p^a)=p^a-p^{a-1} ϕ(pa)=papa1

定理2: 若(m,n)=1,则φ(mn)=φ(m)φ(n)。

推论: 若正整数 m 1 , m 2 , … m k m_1,m_2,…m_k m1,m2,mk两两互素,则 φ ( m 1 m 2 … m k ) = φ ( m 1 ) φ ( m 2 ) … φ ( m k ) φ(m_1m_2…m_k)=φ(m_1)φ(m_2)…φ(m_k) φ(m1m2mk)=φ(m1)φ(m2)φ(mk).

定理3: 若m的标准分解式为
m = p 1 a 1 p 2 a 2 . . . p k a k m=p_1^{a_1}p_2^{a_2}...p_k^{a_k} m=p1a1p2a2...pkak

ϕ ( m ) = p 1 a 1 − 1 p 2 a 2 − 1 … p k a k − 1 ( p 1 − 1 ) ( p 2 − 1 ) … ( p k − 1 ) \phi(m)=p_1^{a_1-1}p_2^{a_2-1}…p_k^{a_k-1}(p_1-1)(p_2-1)…(p_k-1) ϕ(m)=p1a11p2a21pkak1(p11)(p21)(pk1)

RSA加密算法

公钥密钥产生

  1. 随意选择两个大的质数p和q,p不等于q,计算N=pq。
  2. 根据欧拉函数,求得r=φ(N) = (p-1)(q-1)
  3. 随机选择一个整数 e,条件是1<e<r,且e与r互质
  4. 求得 e 关于模 r 的模反元素,命名为d。(所谓"模反元素"就是指有一个整数d,可以使得ed被φ(n)除的余数为1。ed ≡ 1 (mod φ(N)))
  5. 将 p 和 q 的记录销毁。

(N,e)是公钥,(N,d)是私钥。

加密消息

假设Bob想给Alice送一个消息m,他知道Alice产生的N和e。他使用起先与Alice约好的格式将m转换为一个小于N的整数n,比如他可以将每一个字转换为这个字的Unicode码,然后将这些数字连在一起组成一个数字。假如他的信息非常长的话,他可以将这个信息分为几段,然后将每一段转换为n。用下面这个公式他可以将n加密为c:
n e ≡ c ( m o d N ) n^e \equiv c\pmod{N} nec(modN)
计算c并不复杂。Bob算出c后就可以将它传递给Alice。

解密消息

Alice得到Bob的消息c后就可以利用她的密钥d来解码。她可以用以下这个公式来将c转换为n:
c d ≡ n ( m o d N ) c^d ≡ n \pmod{N} cdn(modN)
得到n后,她可以将原来的信息m重新复原。

解密原理

我们需要证明
c d ≡ n ( m o d N ) c^d ≡ n \pmod{N} cdn(modN)
根据加密规则得
c = n e − k N c = n^e - kN c=nekN
代入最终要证明的规则
等同于求证
( n e − k N ) d ≡ n ( m o d N ) &lt; = &gt; n e d ≡ n ( m o d N ) (n^e - kN)^d ≡ n \pmod{N} &lt;=&gt; n^{ed} ≡ n \pmod{N} (nekN)dn(modN)<=>nedn(modN)

由于ed ≡ 1 (mod φ(N)),所以ed=hφ(N)+1,代入求证式得
n h ϕ ( N ) + 1 ≡ n ( m o d N ) n^{h\phi(N)+1} ≡ n \pmod{N} nhϕ(N)+1n(modN)

接下来分两种情况证明上式:

(1) n与N互质

根据欧拉定理有
n ϕ ( N ) ≡ 1 ( m o d N ) n^{\phi(N)} \equiv 1 \pmod{N} nϕ(N)1(modN)
于是
( n ϕ ( N ) ) h ∗ n ≡ n ( m o d N ) (n^{\phi(N)})^h*n \equiv n \pmod{N} (nϕ(N))hnn(modN)
原式得证

(2) n与N不互质

则n=kp或n=kq。

以n=kp为例,又N=pq,且n<N,则k<q且k与q互质,n=kp与q互质。

于是根据欧拉定理有
( k p ) q − 1 ≡ 1 ( m o d q ) (kp)^{q-1} ≡ 1 \pmod{q} (kp)q11(modq)
进一步得到
[ ( k p ) q − 1 ] h ( p − 1 ) × k p ≡ k p ( m o d q ) [(kp)^{q-1}]^{h(p-1)} × kp ≡ kp \pmod{q} [(kp)q1]h(p1)×kpkp(modq)

( k p ) e d ≡ k p ( m o d q ) (kp)^{ed} ≡ kp \pmod{q} (kp)edkp(modq)
可以改写成
( k p ) e d = t q + k p (kp)^{ed} = tq + kp (kp)ed=tq+kp
由于等式左边必然能被p整除,所以等式右边的t必然也能被p整除,假设t=sp。则

( k p ) e d = s p q + k p (kp)^{ed} = spq + kp (kp)ed=spq+kp

n e ⋅ d = s N + n n^{e·d} = sN + n ned=sN+n
原式得证。

RSA算法的可靠性

密钥生成过程中一共产生了6个数,p,q,N,φ(N),e,d.

其中公钥用到了(N, e), 密钥用到了(N, d), 只有公钥是对外部已知的,有无可能在已知N和e的情况下推导出d?

  1. ed≡1 (mod φ(n))。只有知道e和φ(n),才能算出d。

  2. φ(n)=(p-1)(q-1)。只有知道p和q,才能算出φ(n)。

  3. n=pq。只有将n因数分解,才能算出p和q。

结论:如果n可以被因数分解,d就可以算出,也就意味着私钥被破解。

可是,大整数的因数分解,是一件非常困难的事情。目前,除了暴力破解,还没有发现别的有效方法。

RSA加密算法的缺点

虽然RSA加密算法作为目前最优秀的公钥方案之一,在发表三十多年的时间里,经历了各种攻击的考验,逐渐为人们接受。但是,也不是说RSA没有任何缺点。由于没有从理论上证明破译RSA的难度与大数分解难度的等价性。所以,RSA的重大缺陷是无法从理论上把握它的保密性能如何。在实践上,RSA也有一些缺点:

  • 产生密钥很麻烦,受到素数产生技术的限制,因而难以做到一次一密;
  • 分组长度太大,为保证安全性,n 至少也要 600 bits 以上,使运算代价很高,尤其是速度较慢。

参考链接:

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- esig.cn 版权所有

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务