《RSA算法参数选择.doc》由会员分享,可在线阅读,更多相关《RSA算法参数选择.doc(4页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、3.4 RSA参数的选择RSA遭受攻击的很多情况是因为算法实现的一些细节上的漏洞所导致的,所以在使用RSA算法构造密码系统时,为保证平安,在生成大素数的根底上,还必须认真仔细选择参数,防止漏洞的形成。根据RSA加解密过程,其主要参数有三个:模数N,加密密钥e,解密密钥d。3.4.1 模数N确实定虽然迄今人们无法证明,破解RSA系统等于对N因子分解,但一般相信RSA系统的平安性等同于因子分解,即:假设能分解因子N,即能攻破RSA系统,假设能攻破RSA系统,即能分解因子。因此,在使用RSA系统时,对于模数N的选择非常重要。在RSA算法中,通过产生的两个大素数p与q相乘得到模数N,而后分别通过对它们
2、的数学运算得到密钥对。由此,分解模数N得到p与q是最显然的攻击方法,当然也是最困难的方法,如果模数N被分解,攻击者利用得到的P与q便可计算出,进而通过公开密钥e由解密密钥d,那么RSA体制立刻被攻破。相当一局部的对RSA的攻击就是试图分解模数N,选择适宜的是实现RSA算法并防止漏洞的重要环节。一般地,模数N确实定可以遵循以下几个原那么:p与q之差要大。当p与q相差很小时,在n的情况下,可假定二者的平均值为,然后利用,假设等式右边可开方,那么得到及,即N被分解。p-1与q-1的最大公因子应很小。p与q必须为强素数。一素数p如果满足:条件一:存在两个大素数,使得|p-1且|p+1;条件二:存在四个
3、大素数,使得。那么此素数为强素数。其中,称为3级的素数,称为2级的素数,p那么称为1级的素数,很明显地,任何素数均为3级的素数。只有两个强素数的积所构成的N,其因子分解才是较难的数学问题。p与q应大到使得因子分解N为计算上不可能。RSA的平安性依赖于大数的因子分解,假设能因子分解模数N,那么RSA即被攻破,因此模数N必须足够大直至因子分解N在计算上不可行。因子分解问题为密码学最根本的难题之一,如今,因子分解的算法已有长足的进步,但仍缺乏以说明RSA可破解。为保证平安性,实际应用中所选择的素数P与拿至少应该为300位以上的二进制数,相应的模数N将是600位以上的二进制数。目前,SET(Secur
4、e Electronic Transaction)协议中要求CA采用2048比特长的密钥,其他实体使用1024比特的密钥。随着计算能力的提高与分布式运算的开展,平安密钥的长度将是动态增长的。Jadith Moore给出了使用RSA时有关模数的一些限制:假设给定模数的一个加/解密密钥指数对,攻击者就能分解这个模数。假设给定模数的一个加/解密密钥指数对,攻击者无需分解模数就可以计算出别的加/解密密钥指数对。在通信网络中,利用RSA的协议不应该使用公共模数。消息应该用随机数填充以防止对加密指数的攻击。3.4.2 e的选取原那么在RSA算法中,e与互质的条件容易满足,如果选择较小的e,那么加、解密的速
5、度加快,也便于存储,但会导致平安问题。一般地,e的选取有如下原那么:e不能够太小。在RSA系统中,每人的公开密钥P只要满足即可,也即e可以任意选择,为了减少加密运算时间,很多人采用尽可能小的e值,如3。但是已经证明低指数将会导致平安问题,故此,一般选择e为16位的素数,可以有效防止攻击,又有较快速度。e应选择使其在的阶为最大。即存在i,使得,可以有效抗击攻击。3.4.3 d的选取原那么一般地,私密密钥d要大于。在许多应用场合,常希望使用位数较短的密钥以降低解密或签名的时间。例如IC卡应用中,IC卡CPU的计算能力远低于计算机主机。长度较短的d可以减少IC卡的解密或签名时间,而让较复杂的加密或验证预算(e长度较长)由快速的计算机主机运行。一个直接的问题就是:解密密钥d的长度减少是否会造成平安性的降低很明显地,假设d的长度太小,那么可以利用明文M加密后得,再直接猜想d,求出是否等于M。假设是,那么猜想J下确,否那么继续猜想。假设d的长度过小,那么猜想的空间变小,猜中的可能性加大,已有证明当时,可以由连分式算法在多项式时间内求出d值。因此其长度不能过小。第 4 页
限制150内