算法学习笔记(3) RSA原理与证明

1.非对称加密

RSA是一种非对称加密算法。由消息接收者将公钥发送给消息发送者,使用容易被截获的公钥来加密;把私钥一直保存在消息的接收者处,使用不容易被截获的私钥来解密。这样即使攻击者截获了公钥也无法获取加密后的内容。

这种算法还可以用于数字签名。使用发送端的私钥来加密数字签名,使用发送端传输给目标端的公钥来解密数字签名,如果解密成功,证明消息发送端是可靠的。而因为私钥难以获取,攻击者也难以用共钥伪造数字签名。

2.数论知识

欧拉函数

ϕ ( N ) \phi (N) =小于N的正整数中与N互质的数的数目

欧拉函数有特殊性质:若p和q互质,且N=pq,则有 ϕ ( N ) = ϕ ( p ) ϕ ( q ) = ( p 1 ) ( q 1 ) \phi(N)=\phi(p)\phi(q)=(p-1)(q-1)

模逆元素

如果两个正整数a和n互质,那么一定可以找到整数b,使得ab-1被n整除,也就是ab与1模n时同余: a b 1 ( m o d n ) ab\equiv1(mod n)

欧拉定理

当a,n为两个互质的正整数时,有: a ϕ ( n ) 1 ( m o d n ) a^{\phi(n)}\equiv1(mod n)

这样,由于 a ϕ ( n ) = a a ϕ ( n ) 1 1 ( m o d n ) a^{\phi(n)}=a·a^{\phi(n)-1}\equiv1(mod n) a ϕ ( n ) 1 a^{\phi(n)-1} 就是a关于模n的模逆元素

重要条件

( a b ) m o d n = ( ( a m o d n ) ( b m o d n ) ) m o d n (a·b)modn=((amodn)·(bmodn))modn

证明:
假设a和b除以n的余数为c1,c2,则a和b可以写成 a = n t 1 + c 1 , b = n t 2 + c 2 a=n·t1+c1,b=n·t2+c2
那么, a b = n 2 t 1 t 2 + n t 1 c 2 + n t 2 c 1 + c 1 c 2 a·b=n^2·t1·t2+n·t1·c2+n·t2·c1+c1·c2
因此,a·b除以n的余数为 ( c 1 c 2 ) m o d n (c1·c2)modn ,由于c1和c2都不能被n整除,因此 ( c 1 c 2 ) m o d n = c 1 c 2 (c1·c2)modn=c1·c2 ,即 ( a b ) m o d n = ( a m o d n ) ( b m o d n ) (a·b)modn=(amodn)·(bmodn)

3.RSA实践

  1. 基础数生成:选择两个大的且不相等的质数p和q,计算N=pq
  2. 求基础数欧拉函数: r = ϕ ( N ) = ϕ ( p ) ϕ ( q ) = ( p 1 ) ( q 1 ) r=\phi(N)=\phi(p)\phi(q)=(p-1)(q-1)
  3. 寻找公钥:选择一个小于r的整数e使e与r互质
  4. 生成私钥:求e关于r的模逆元素d

这样(N,e)就是公钥,(N,d)就是私钥,p和q被销毁因此r也随之被销毁。消息接收者在执行完上述步骤后保存私钥,而将公钥发送给消息发送者。消息发送者用公钥加密信息:
c = n e m o d N c=n^e mod N
其中n是信息的编码(必须小于N,可以分段编码并加密)。然后将信息发出,接收到消息的一方可以用自己的私钥来解密消息:
n = c d m o d N n=c^dmodN

证明: n = ( ( ( c e ) m o d N ) d ) m o d N = = > c d e m o d N = k = > c k r + 1 m o d N = > ( c ( c k ) r ) m o d N = = > ( ( c m o d N ) ( ( c k ) r m o d N ) ) m o d N = = > ( ( c m o d N ) ( ( c k m o d N ) r m o d N ) ) m o d N = k ϕ ( N ) = > ( ( c m o d N ) ( ( c ϕ ( N ) m o d N ) r m o d N ) ) m o d N = = > ( ( c m o d N ) ( ( 1 ) r m o d N ) ) m o d N = c n=(((c^e)modN)^d)modN=重要条件逆用=>c^{d·e}modN=模逆元素定义(k为任意正整数)=>c^{kr+1}modN=>(c·(c^k)^r)modN=重要条件=>((cmodN)·((c^k)^rmodN))modN=重要条件=>((cmodN)·((c^kmodN)^rmodN))modN=设任意正整数k为\phi (N)=>((cmodN)·((c^{\phi (N)}modN)^rmodN))modN=欧拉公式=>((cmodN)·((1)^rmodN))modN=c

4.原理

大数分解质因数是很困难的,得到了N也很难得到p和q,自然很难得到(p-1)(q-1)=r,那么得到了e也很难得到e关于r的模逆元素d

e和d又拥有单向的加密解密性,这使得非对称加密得以成立

发布了24 篇原创文章 · 获赞 11 · 访问量 3894

猜你喜欢

转载自blog.csdn.net/weixin_43441742/article/details/101580881