RSA加密

RSA算法

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

生成RSA密钥

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

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

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

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

  • 解出d,d满足【保密的,计算得出的(扩展欧几里得算法?)】

    即 ed=1mod 且1

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

【乘法幂回顾】

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

即如果gcd(a,b)=1,那么b有模a的乘法逆元。对于b

RSA的使用

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

因此,有

另一种:

RSA浅析

【欧拉定理】数论中的欧拉定理(费马-欧拉定理),表明,若n,a为正整数,且n,a互质,则

在RSA中,N=pq,选择mod N互逆的ed,得到

RSA证明

1.M和p不互素,p可以整除M。则M mod p=0,

2.M和p互素,根据欧拉公式,

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

则同样有

由于pq互质,pq=N,则根据中国余数定理:

(0M

【中国余数定理】如果两两互质,则对于所有的整数和当且仅当如果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.时间攻击【通过隐藏时间信息防范】

你可能感兴趣的:(RSA加密)