RSA算法
RSA算法
算法实现:
- 选取较大的两个素数 p 和 q(p ≠ q)(p、q越大,破解越困难,但加密时间也越长)
- 因为破解难度取决于对n进行因式分解的难度(找出使用的p与q),p、q大造成因式分解困难,难以破译
- 公司使用时,p、q的数量级可为1024bit
- \(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)\)
- 选取与\(\phi(n)\)互质的e,且有e < n
- e将称为公钥的一部分
- 再寻找d,使得ed mod \(\phi(n)\) = 1
- 称 d 为e关于\(\phi(n)\)的模拟元
- 此时得到\(公钥 K^+,(n, e), 私钥 K^-(n, d)\)
- 加密方法为:\(c = m^e \quad mod\quad n\),其中m为明文
- 解密为:\(m = c^d \quad mod\quad n\)
算法证明:
欧拉定理称:任意互质的两个正整数a, b,有\(a^{\phi(b)} \equiv 1(mod\quad b)\)
1、当m 与 n互质时
- 由于\(c^d\quad mod\quad n = m => m\quad mod\quad n=m=>c^d \equiv m(mod\quad n)\)
- 又有\(c = m^e\quad mod\quad n=>c=m^e-jn(j>0)=>(m^e-jn)^d \equiv m(mod\quad n)\)
- 将d次方展开可知,出 mde 外其余项均有 n ,则\(m^{de}\equiv m(mod\quad n)\)
- 由于\(ed\quad mod\quad\phi(n)=1=>ed=k\phi(n)+1\)
- 则\(m^{k\phi(n)+1}\equiv m(mod\quad n)\)
- 又因为\(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 的公因数h,又因为m<n
- 则m必为p或q的倍数,不妨设m为p的倍数,于是有m = hp
- =>h<p=>h与q互质=>m与q互质
- \(m^{\phi(q)}\equiv 1(mod\quad q)\)
- 则有\(m^{k\phi(q)+1}\equiv m(mod\quad q)\)
- 则有\((m^{k\phi(q)+1}- m)mod\quad q = 0 =>m^{k\phi(q)+1}- m=tq\)
- 又因为m = hp,则tq 也是p的倍数
- 又因为p、q互质,则有t = sp =>tq = spq = sn
- \(=>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越大,因式分解越困难
浙公网安备 33010602011771号