8.3 典型非对称加密算法—RSA

DH算法的诞生为后续非对称加密算法奠定了基础,较为典型的对称加密算法(如ElGamal、RSA和ECC算法等)都是在DH算法提出后相继出现的,并且其算法核心都源于数学问题。

RSA算法基于大数因子分解难题,而ElGamal算法和ECC算法则是基于离散对数难题。

目前,各种主流计算机语言都提供了对RSA算法的支持。在Java 6中,我们可以很方便地构建该算法。

8.3.1 简述

1978年,美国麻省理工学院(MIT)的Ron Rivest、Adi Shamir和Leonard Adleman三位学者提出了一种新的非对称加密算法,这种算法以这三位学者的姓氏开头字母命名,被称为RSA算法。

RSA算法是唯一被广泛接受并实现的通用公开加密算法,目前已经成为非对称加密算法国际标准。不仅如此,RSA算法既可用于数据加密也可用于数字签名。我们熟知的电子邮件加密软件PGP就采用了RSA算法对数据进行加密/解密和数字签名处理。

RSA算法将非对称加密算法推向了一个高潮,但它并不是没有缺点。相比DES以及其他对称加密算法而言,RSA算法要慢得多。作为加密算法,尤其是作为非对称加密算法的典型,针对RSA算法的破解自诞生之日起就从未停止过。

1999年,RSA-155(512位)被成功分解,历时5个月。

2002年,RSA-158也被成功因数分解。

当然,基于大数因子分解数学难题的非对称加密算法仅有RSA算法这一种,但这不代表非对称加密算法除了RSA算法后继无人。基于离散对数问题的非对称加密算法包括ElGamal和ECC这两种算法,它们同样是优秀的非对称加密算法。