RSA的安全性是依据数论中大整数分解的困难性的假定,之所以为假定是由于至今还未能证明分解大整数就是NP问题,或许存在大整数分解的多项式时间分解算法,但至今人们没有发现任何有用的大整数分解算法。
由于人类计算能力的不断提高,之前不可能分解的大数已被成功分解。关于大整数的威胁除了人类的计算能力外,还来自分解算法的进一步改进。跟着硬件资源的发展和因数分解算法的不断改进,为保证RSA公开密钥密码系统的安全性,最实践的做法是不断增加模r的位数。因此在运用RSA算法时对其密钥的选取要特别注意其大小。
RSA的缺点主要有:
(1)产生密钥很费事,遭到素数产生技术的束缚,因此难以做到一次一密。
(2)分组长度太大,为保证安全性,n至少也要600bit以上,使运算代价很高,尤其是速度较慢,较对称密码算法慢几个数量级;且跟着大数分解技术的开展,这个长度还在增加,不利于数据格式的标准化。现在,SET协议中要求CA选用2048bit长的密钥,其他实体运用1024bit的密钥。
(3)RSA的速度由于进行的都是大数计算,使得RSA最快的情况也比DES慢100倍,无论是软件仍是硬件实现,速度一直是RSA的缺点。一般来说只用于少量数据加密。RSA与DES的优缺点正好互补。RSA的密钥很长,加密速度慢,而选用DES,正好弥补了RSA的缺点。即DES用于明文加密,RSA用于DES密钥的加密。由于DES加密速度快,适合加密较长的报文;而RSA可解决DES密钥分配的问题。