RSA 算法原理
数论知识
质数
大于1的自然数中,只能被1和它本身的数整除,如 2、3、5、7
互质关系:
如果两个正整数,除了1以外,没有其他公因子,我们就称这两个数是互质关系
- 1与任何数都互质
- 任意两个质数都互质
- 质数与小于它的每一个数,都构成互质关系。如5与1、2、3、4都构成互质关系
欧拉函数:
任意给定正整数n,请问在小于等于n的正整数之中,有多少个与n构成互质关系?计算这个值的方法就叫做欧拉函数,以符号ϕ(n)\phi(n)ϕ(n)表示
- ϕ(1)=1\phi(1)=1ϕ(1)=1
- 如果n为质数,则 ϕ(n)=n−1\phi(n)=n-1ϕ(n)=n−1
- 如果n是两个互质的整数之积 n=p1×p2n=p_1\times p_2n=p1×p2 则 ϕ(n)=ϕ(p1)×ϕ(p2)\phi(n)=\phi(p_1)\times \phi(p_2)ϕ(n)=ϕ(p1)×ϕ(p2)
欧拉定理:
如果两个正整数a和n互质,则下面的公式成立: aϕ(n)≡1(modn) a^{\phi(n)} \equiv 1 \pmod n aϕ(n)≡1(modn) 模反元素:
如果两个正整数a和n互质,那么一定可以找到b,使得下面的公式成立: ab≡1(modn) ab\equiv1\pmod n ab≡1(modn) 证明模反元素必然存在,把欧拉定理拆开,a×aϕ(n)−1≡1(modn)a\times a^{\phi(n)-1} \equiv 1 \pmod na×aϕ(n)−1≡1(modn),
aϕ(n)−1+kna^{\phi(n)-1} + knaϕ(n)−1+kn 全都是模反元素
密钥生成步骤
随机选择两个不相等的质数p和q (越大越好)
计算p和q的乘积 n=p×qn=p\times qn=p×q
计算n的欧拉函数 ϕ(n)=(p−1)(q−1)\phi(n)=(p-1)(q-1)ϕ(n)=(p−1)(q−1)
随机选择一个整数e, 1<e<ϕ(n)且e与ϕ(n)互质1<e<\phi(n) 且 e与\phi(n)互质1<e<ϕ(n)且e与ϕ(n)互质
计算e对于ϕ(n)\phi(n)ϕ(n)的模反元素d(知道e和ϕ(n)\phi(n)ϕ(n)就可以计算出模反元素,使用扩展欧几里德算法)
公布(n,e)为公钥、(n,d)为私钥
加密和解密
加密:公钥(n,e)
加密信息为m, m必须是整数,且m必须小于n
加密就是算出下面式子中的c: me≡c(modn) m^e\equiv c \pmod n me≡c(modn) 即密文 c=me mod nc=m^e\bmod nc=memodn
解密: 私钥(n,d)
下面的等式一定成立: cd≡m(modn) c^d \equiv m \pmod n cd≡m(modn) 即明文 m=cd mod nm = c^d\bmod nm=cdmodn
证明
为什么 cd≡m(modn) (1)∵me≡c(modn)∴c=me−knc带入(1)得 (me−kn)d≡m(modn)等同与 med≡m(modn) (2)(比如(a+b)2=a2+2ab+b2,只有a得最高项不带b)∵ed≡1(modϕ(n))∴ed=hϕ(n)+1将ed带入(2)得 mhϕ(n)+1≡m(modn) (3) 为什么\ \ c^d \equiv m \pmod n \ \ \ (1) \ \because m^e\equiv c \pmod n\ \therefore c = m^e-kn\ c带入(1)得 \ (m^e - kn)^d \equiv m \pmod n\ 等同与\ m^{ed}\equiv m \pmod n \ \ (2)\ (比如(a+b)^2 = a^2 + 2ab + b2,只有a得最高项不带b) \ \because ed \equiv 1 \pmod{\phi(n)}\ \therefore ed = h\phi(n) +1 \ 将ed带入(2)得 \ m^{h\phi(n)+1} \equiv m \pmod n \ \ \ (3)\ 为什么 cd≡m(modn) (1)∵me≡c(modn)∴c=me−knc带入(1)得 (me−kn)d≡m(modn)等同与 med≡m(modn) (2)(比如(a+b)2=a2+2ab+b2,只有a得最高项不带b)∵ed≡1(modϕ(n))∴ed=hϕ(n)+1将ed带入(2)得 mhϕ(n)+1≡m(modn) (3)
证明(1)就是证明(3):
如果 m 和 n 互质
由欧拉定理得 mϕ(n)≡1(modn) ∵m≡m(modn)同余式相乘性质:若a≡b(mod n),c≡d(mod n),则ac≡bd(mod n)。(mϕ(n))h×m≡m×1h(modn)mhϕ(n)+1≡m(modn)证明完成 由欧拉定理得\ m^{\phi(n)}\equiv 1 \pmod n \ \ \because m\equiv m \pmod n \ 同余式相乘性质:若a≡b(mod\ n),c≡d(mod\ n),则ac≡bd(mod\ n)。\ (m^{\phi(n)})^h\times m \equiv m \times1^h \pmod n \ m^{h\phi(n)+1} \equiv m \pmod n\ 证明完成 由欧拉定理得 mϕ(n)≡1(modn) ∵m≡m(modn)同余式相乘性质:若a≡b(mod n),c≡d(mod n),则ac≡bd(mod n)。(mϕ(n))h×m≡m×1h(modn)mhϕ(n)+1≡m(modn)证明完成
如果 m 和 n 不互质
∵n=pq (质因子)∴必然有 m=kp 或 m=kq (公因子只能是p或q)以 m=kp 为例,k与q必然互质,因为m和n只可能有一个公因子kp与q也互质(m,n不互质,n失去与m唯一的公因子后肯定互质)根据欧拉定理 (kp)q−1≡1(modq) (自己多次乘上自己,再两边同时乘kp)进一步得到 [(kp)q−1]h(p−1)×kp≡kp(modq)∵ed=hϕ(n)+1化简 (kp)ed≡kp(modq)改写成 (kp)ed=kp+tq这时t必然能被p整除,即 t=t′p (因为(kp)ed一定是p的整倍数)(kp)ed=kp+t′pq∵m=kp,n=pq∴med=m+t′n∴med≡m(modn)证明完成 \because n = pq\ (质因子)\\therefore 必然有\ m = kp\ 或\ m=kq\ (公因子只能是p或q)\以\ m=kp\ 为例,k与q必然互质,因为m和n只可能有一个公因子\kp与q也互质(m,n不互质,n失去与m唯一的公因子后肯定互质)\根据欧拉定理\ (kp)^{q-1} \equiv 1 \pmod q \ (自己多次乘上自己,再两边同时乘kp)\进一步得到\ [(kp)^{q-1}]^{h(p-1)} \times kp \equiv kp \pmod q\\because ed = h\phi(n) +1 \化简\ (kp)^{ed} \equiv kp \pmod q\改写成\ (kp)^{ed} = kp + tq\这时t必然能被p整除,即\ t=t'p\ (因为(kp)^{ed}一定是p的整倍数)\(kp)^{ed} = kp+t'pq\\because m=kp, n=pq\\therefore m^{ed}=m+t'n\\therefore m^{ed} \equiv m \pmod n\证明完成 ∵n=pq (质因子)∴必然有 m=kp 或 m=kq (公因子只能是p或q)以 m=kp 为例,k与q必然互质,因为m和n只可能有一个公因子kp与q也互质(m,n不互质,n失去与m唯一的公因子后肯定互质)根据欧拉定理 (kp)q−1≡1(modq) (自己多次乘上自己,再两边同时乘kp)进一步得到 [(kp)q−1]h(p−1)×kp≡kp(modq)∵ed=hϕ(n)+1化简 (kp)ed≡kp(modq)改写成 (kp)ed=kp+tq这时t必然能被p整除,即 t=t′p (因为(kp)ed一定是p的整倍数)(kp)ed=kp+t′pq∵m=kp,n=pq∴med=m+t′n∴med≡m(modn)证明完成