RSA加密

RSA算法

明文和密文均是0至n-1之间的证书,n的大小通常为1024位的2进制,或309位的十进制。

生成RSA密钥

每个用户生成一个私钥/公钥对,通过:

  • 随机选择两个大素数p,q;【保密的,选定的】

  • 计算系统的模量:N=pq 【公开的,计算得到的】

    • 注意有\phi(N) =(p-1)(q-1)【比N小又与N互素的数的个数】
  • 随机选择e,满足gcd(\phi(N),e)=1;1<e<\phi(N) 【公开的,选定的】

  • 解出d,d满足d\equiv e^{-1}(\mod \phi(N))【保密的,计算得出的(扩展欧几里得算法?)】

    即 ed=1mod \phi(N)且1<d<\phi(N) 【ed互为模\phi(N)的乘法逆】

  • 公布公钥{e,N};保存私钥{d,N}

【乘法幂回顾】

如果a和b互素,则b有模a的乘法逆元。【注意:互素是前提】

即如果gcd(a,b)=1,那么b有模a的乘法逆元。对于b<a,存在b^{-1}<a,使bb^{-1}=1\mod a

RSA的使用

明文分组M和密文分组C:

C=M^e \mod n;(0\leq M<N) \\ M=C^d \mod n =(M^e \mod n)^d \mod n =M^{ed} \mod n (0\leq C<N)

因此,有M^{ed} \mod n =M

另一种:C^d = (M^e)^d = M^{1+k.ø(N)} = M^1.(M^{ø(N)})^{k} = M^1.(1)^k = M1 = M mod N =M

RSA浅析

【欧拉定理】数论中的欧拉定理(费马-欧拉定理),表明,若n,a为正整数,且n,a互质,则a^{\phi(n)}\equiv 1 \mod n

在RSA中,N=pq,\phi(N)=(p-1)(q-1)选择mod N互逆的ed,得到ed=1+k\phi(N)

RSA证明

M^{ed} \mod n =M

1.M和p不互素,p可以整除M。则M mod p=0,M^{ed}\mod p=0

2.M和p互素,根据欧拉公式,M^{\phi(p)} \mod p=1

M^{ed}\mod p=M^{1+k\phi(p)}\mod p\\=(M\mod p)\times ((M^{(p-1)})^{k(q-1)}\mod p)\\=(M\mod p)\times ((M^{\phi(p)})^{k(q-1)}\mod p)\\=(M\mod p)\times 1^{k(q-1)}=M\mod p

由于p和q对称,且p,q均为素数。

则同样有M^{ed}\mod q=M \mod q

由于pq互质,pq=N,则根据中国余数定理:M^{ed} \mod N=M

(0\leqM<N,大于n(1024bit)可能会有部分解不出来)

【中国余数定理】如果两两互质,则对于所有的整数和当且仅当如果n_1,n_2,\cdots n_k两两互质,n=n_1n_2n_3\cdots n_k,则对于所有的整数x和a,\\x\equiv a(\mod n_i)当且仅当 x\equiv a(\mod n)

RSA安全性

关键在于大数的分解,当N(1024bit)很大时,分解成两个素数很难

如何选择素数pq? pq最好不相差太大

3种攻击:1.暴力密钥搜索:(找密钥d),但是e,dN位数较高,难以实现

2.数学攻击,分解N,暂无对大整数进行质因数分解的高效算法。【指在求pq】

3.时间攻击【通过隐藏时间信息防范】

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 本章涉及知识点1、素数的定义2、寻找素数算法—短除法3、寻找素数算法—筛选法4、互质关系5、欧拉函数的证明6、欧拉...
    PrivateEye_zzy阅读 10,103评论 0 6
  • RSA加密是非对称加密,由瑞弗斯特(Ron Rivest),沙米尔(Adi Shamir)和阿德来门(Len Ad...
    TIME_for阅读 5,786评论 0 5
  • http://blog.csdn.net/q376420785/article/details/8557266 h...
    John_cui阅读 3,800评论 0 4
  • 学过算法的朋友都知道,计算机中的算法其实就是数学运算。所以,再讲解RSA加密算法之前,有必要了解一下一些必备的数学...
    假装是小宇阅读 14,038评论 0 3
  • 必备数学知识 RSA加密算法中,只用到素数、互质数、指数运算、模运算等几个简单的数学知识。所以,我们也需要了解这几...
    依然饭太稀阅读 4,340评论 0 0

友情链接更多精彩内容