介绍
rsa 加密算法,详情参见 wiki 百科
原理
- 任意选择两个不相等的大素数
和
- 计算
和
的乘积
- 计算
由于
都是素数,故
- 任意取一个整数
满足
- 因为
故由扩展欧几里得算法可计算
和
的线性组合,即计算
中
的值,计算出
后,即可使用
和
进行加密和解密,故将
和
封装成公钥,将
和
封装成私钥
- 现假设有明文
经公钥加密
将
作为密文,此处注意:明文
须为正整数且小于
- 接收端收到密文
后使用私钥解密出明文,即有
注:等式 (4) 可由之前的知识证明,下面就证明其正确性及 RSA 加密算法的可靠性
证明
由于 都是素数,故有
根据“Fermat-Eular 定理”一节的定理一有 (1) 式成立
又由于 由前面章节的定理有,任意两个整数的最大公因数可以表示成这两个数的线性组合,在这里即是存在
使得
由扩展欧几里得算法可计算出
的值,且计算较容易,故 (2) 式成立
密文 要证明
即是要证明
又因为 故有
即
即
故 (5) 式变为
现在分情况讨论
- 当
时,由 Eular 定理有
故
得证
- 当
时,因为
故假设
则有
则
则由 Eular 定理有
上式可写为
由算术基本定理可知
一定能被
整除,即
故上式可写为
又因
故上式即
故得证,同理
时也可得证
可靠性
由上面的过程,可知私钥 仅能由式子
计算得到
而计算该式子须知道 即是要知道
从而 RSA 加密算法的破解 与 大数因式分解 等价,当将 分解为
时,即意味着私钥被破解
以下内容摘自 wiki 百科
对极大整数做因数分解的难度决定了 RSA 算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。 假如有人找到一种快速因数分解的算法,那么 RSA 的可靠性就会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的 RSA 密钥才可能被暴力破解。到 2008 年为止,世界上还没有任何可靠的攻击 RSA 算法的方式。
只要密钥长度足够长,用 RSA 加密的信息实际上是不能被解破的。
故大整数难分解成为了 RSA 的理论基础,且破解难度随着长度的增长不是线性的,故等到暴力破解出来,可能已经不知道多少年以后了,那破解的意义也就不大了,注:wiki 百科推荐重要数据使用 2048 位加密
本文作者注:等到量子计算机真正达到可用的级别,破解 RSA 应该没多大难度了吧