RAS算法是基于数论原理的公开密钥密码体制,是目前最有效的公开密钥加密算法之一,RAS算法的安全依赖于大数分解的困难性,已广泛地应用于网络和数据安全性系统的加密、数字签名和身份认证等需许多领域。
RAS算法的安全性依赖于大数分解,如果破译分析者能够分解大数n,那么做多只要试探2次就你按构造本算法相同的方法求出解密密钥,从而破译出明文。但大整数n的素因子分解问题是一个极为困难的问题。目前已知的做好的算法需要进行 e√1nn1n(1nn)次算数运算。如果用一台每秒108次运算的计算机来分解一个160位的十进制数,所需时间(年)有如下的计算:
由以上计算可知,增加n的位数,分解他所需时间将更长,这就大大地提高了RAS的安全性。虽然并没有从理论上证明破译RAS的难度与大数分解难度是等价的,但从提出到现在已近30年,RAS经历了各种攻击的考验。
关于素数的选择
攻击者破译RAS算法的步骤为:
1、分解n,求出p、q
2、由Φ(n)=(p-1)(q-1),求出Φ(n)。
3、由ed=1modΦ(n),求出d。
为了更好地防范分解,在选择p、q时,一是注意p和q在位数上要相差极为数字;二是(p-1)和(q-1)都应含有大的素数因子,以增加攻击者猜算出Φ(n)的困难性;三是gcd(p-1,q-1)应当小。满足这些条件的素数称作安全素数。
实际上,所谓攻击者破译RAS算法,指的是由已知的e和n来推算d和Φ(n)。为了密码算法的安全,必须使p*q乘积的结果尽量大,这又使计算量将呈指数增长,算法实现的难度增大,实用性降低。RAS公开密钥算法的矛盾难点就在于计算存储容量和计算运行速度,位数减少,则速度变快,难度降低,安全性变差。
事实上,所有的应用算法都是基于这样一个合理的假设,当破译一个算法的花费远大于它的收益时,这种算法就是安全的。