RSA加密算法是目前最有影响力的公钥加密算法,并且被普遍认为是目前最优秀的公钥方案之一。RSA是第一个能同时用于加密和数宇签名的算法,它能够抵抗到目前为止已知的所有密码攻击,已被ISO推荐为公钥数据加密标准。
RSA加密算法基于一个十分简单的数论事实:将两个大素数相乘十分容易,但想要对其乘积进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。在这种加密模式下,只要私钥不公开,通信就是安全的。
RSA算法是第一个能同时用于加密和数字签名的算法,也易于理解和操作。为提高保密强度,RSA密钥一般使用1024位,这就使加密的计算量很大。为减少计算量,常采用传统加密方法与公开密钥加密方法相结合的方式传送信息。即数据信息采用改进的DES或IDEA密钥加密,然后使用RSA密钥加密对话密钥和信息摘要。对方收到数据信息后,用不同的密钥解密并可核对信息摘要。
RSA的基本原则
RSA算法一直是最广为使用的"非对称加密算法"。这种算法非常可靠,加密的密钥越长,它就越难被破解。根据披露的文献,目前被破解的最长RSA密钥是768个二进制位。也就是说,长度超过768位的密钥,还无法破解(至少没人公开宣布)。因此可以认为,1024位的RSA密钥基本安全,2048位的密钥极其安全。
RSA的数学原理
1、互质关系:两个数a和b没有除1外的其他公约数,则a与b互质。
2、求欧拉函数:与正整数n互质且小于正整数n的正整数的个数。
3、欧拉定理:正整数a与n互质,则a^ψ(n) ≡1(mod n)恒成立,即:a的ψ(n)次幂除以n,余数恒为1。
RSA的特点
1、便于理解,使用广泛。是第一个能同时用于加密和数字签名的算法,也易于理解和操作。
2、缺点与不足:加密和解密花费时间长、速度慢,只适合对少量数据进行加密。
RSA的安全性
RSA的安全性依赖于大数据的分解,但是否等同于大数分解一直未能得到理论上的证明,因为没有证明破解RSA就一定需要作大数分解。假设存在一种无须分解大数的算法,那它肯定可以修改成为大数分解算法,RSA 的一些变种算法已被证明等价于大数分解。
对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。
RSA的应用
到目前为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。常用在企业的云数据安全、服务器数据安全、银行的用户数据安全等领域。