RSA算法

RSA算法

算法实现:

  1. 选取较大的两个素数 p 和 q(p ≠ q)(p、q越大,破解越困难,但加密时间也越长)
    • 因为破解难度取决于对n进行因式分解的难度(找出使用的p与q),p、q大造成因式分解困难,难以破译
    • 公司使用时,p、q的数量级可为1024bit
  2. \(n = p*q, \phi(n) = (p-1)(q-1), 其中\phi(n)\)为欧拉函数
    • n 应该大于明文数据 的比特组合m(根据解密方程得出的结论)
    • 欧拉函数的值等于 小于等于n,且与n互质的正整数的个数
    • 且有\(\phi(n) = \phi(p)*\phi(q)\),又由于p、q为质数,所以\(\phi(p) = p-1, \phi(q) = q-1\)
    • =>\(\phi(n) = (p-1)(q-1)\)
  3. 选取与\(\phi(n)\)互质的e,且有e < n
    • e将称为公钥的一部分
  4. 再寻找d,使得ed mod \(\phi(n)\) = 1
    • 称 d 为e关于\(\phi(n)\)的模拟元
  5. 此时得到\(公钥 K^+,(n, e), 私钥 K^-(n, d)\)
  6. 加密方法为:\(c = m^e \quad mod\quad n\),其中m为明文
  7. 解密为:\(m = c^d \quad mod\quad n\)

算法证明:

欧拉定理称:任意互质的两个正整数a, b,有\(a^{\phi(b)} \equiv 1(mod\quad b)\)

1、当m 与 n互质时
  1. 由于\(c^d\quad mod\quad n = m => m\quad mod\quad n=m=>c^d \equiv m(mod\quad n)\)
  2. 又有\(c = m^e\quad mod\quad n=>c=m^e-jn(j>0)=>(m^e-jn)^d \equiv m(mod\quad n)\)
  3. 将d次方展开可知,出 mde 外其余项均有 n ,则\(m^{de}\equiv m(mod\quad n)\)
  4. 由于\(ed\quad mod\quad\phi(n)=1=>ed=k\phi(n)+1\)
  5. \(m^{k\phi(n)+1}\equiv m(mod\quad n)\)
  6. 又因为\(m^{\phi(n)}\equiv m(mod\quad n)=>m^{k\phi(n)}\equiv m(mod\quad n)=>m^{k\phi(n)+1}\equiv m(mod\quad n)\)证毕
    • 以上推导由于取模有以下结论
    • \([(a\quad mod\quad n)*(b\quad mod\quad n)]mod\quad n=(a*b)mod\quad n\)
    • \([(a\quad mod\quad n)\pm(b\quad mod\quad n)]mod\quad n=(a\pm b)mod\quad n\)
2、当m与n不互质时
  1. 必有一大于 1 的公因数h,又因为m<n
  2. 则m必为p或q的倍数,不妨设m为p的倍数,于是有m = hp
  3. =>h<p=>h与q互质=>m与q互质
  4. \(m^{\phi(q)}\equiv 1(mod\quad q)\)
  5. 则有\(m^{k\phi(q)+1}\equiv m(mod\quad q)\)
  6. 则有\((m^{k\phi(q)+1}- m)mod\quad q = 0 =>m^{k\phi(q)+1}- m=tq\)
  7. 又因为m = hp,则tq 也是p的倍数
  8. 又因为p、q互质,则有t = sp =>tq = spq = sn
  9. \(=>m^{k\phi(q)+1}- m=sn=>m^{k\phi(q)+1}\equiv m(mod\quad n)\)证毕
3、破解

又上式证明知道,只要从n中因式分解出唯一的因子p、q就能解除d得到私钥破解密码

所以算法破解难度取决于对n进行因式分解的难度,所以p、q越大,n越大,因式分解越困难

posted @ 2022-04-11 01:11  BetterMultiply  阅读(87)  评论(0)    收藏  举报