1977年,美国密码学家罗恩·里夫斯特(Ron Rivest)、阿迪·沙米尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)共同提出了RSA密码算法。RSA的名字取自三位设计者姓氏的首字母。RSA算法基于大整数因子分解难题设计,因其原理清晰、结构简单,是第一个投入使用,也是迄今为止应用最广泛的公钥密码算法,可用于数字签名、安全认证等。1992年,RSA算法纳入了国际电信联盟制定的X.509系列标准。
在数学上,将两个素数相乘很容易计算,但由乘积推导出两个素数因子则非常困难。RSA算法基于大整数因子分解问题的困难性设计,其公钥相当于两个素数的乘积,而私钥则相当于两个独立的素数。由此可见,破解RSA算法的难度基本等同于对极大整数做因数分解的难度。随着超级计算机和大整数分解技术的发展,1999年RSA-512(指的是素数长度为512比特的RSA算法,以此类推)被成功分解,2009年RSA-768被成功分解,当前广泛使用的RSA-1024也存在极大安全隐患,包括我国在内的世界许多国家发布了安全风险警示。
在实际应用RSA算法时,两个素数应确保是随机产生的,否则会导致安全风险。2013年2月,国际密码学家发现在700万个实验样本中有2.7万个公钥并不是按理论随机产生的,每一千个公钥中可能会有两个存在安全隐患。
来源:节选自《商用密码知识与政策干部读本》