
1. RSA算法是在1978年由Ron Rivest、Adi Shamir和Leonard Adleman共同发明的,它既可用于数据加密也可用于数字签名,并且由于其易理解性和操作性,至今仍被广泛使用。
2. RSA算法的安全性基于大数分解的难题,它使用两个大素数(每个都大于100位十进制数)来生成密钥对。公钥和私钥都是这两个素数的函数,且公钥和私钥是相互的。
3. 密钥对的生成过程包括选择两个大素数p和q,计算它们的乘积n,然后选择一个与(p-1)*(q-1)互质的公钥e,并通过欧几里得算法计算出私钥d,满足e*d ≡ 1 (mod (p-1)*(q-1))。私钥d和模数n必须互质。
4. 加密过程中,信息m被分成等长的数据块,通过公钥e进行加密得到密文ci。解密过程则是通过私钥d对密文进行逆运算得到明文mi。
5. RSA算法也可用于数字签名。签名的过程使用加密方式,而解密方式用于验证。通常,为了提高安全性,在签名前会对信息进行HASH处理。
6. 尽管RSA算法在安全性、易用性方面有优势,但其安全性尚未得到严格的理论证明。此外,RSA的速度相对较慢,对于大量数据的加密来说不太实用。
7. RSA算法面临一些攻击威胁,如选择密文攻击和小指数攻击。为了应对这些威胁,建议使用良好的公钥协议,避免对未知文档进行签名,并且在签名时使用HASH函数处理信息。
8. RSA算法的公共模数攻击问题指出,若多个用户使用相同的模数n但不同的公钥e,则系统可能面临安全风险。因此,建议不要共享模数n。
9. RSA算法的小指数攻击指出,公钥e取值过小会降低安全性,建议e和d都取较大的值以提高安全性。
10. RSA算法是第一个公钥算法,能够同时用于加密和数字签名。尽管它被广泛研究和应用,但其保密性能的理论基础仍有待加强。
11. 为了克服RSA的某些局限性,DSS/DSA算法(数字签名算法)被提出,它基于整数有限域离散对数难题,安全性与RSA相当,并且具有两个素数公开的特点,增加了安全性。