一 RSA与质数
问:
随着越来越多的人在不断地生成RSA的密钥对,质数会不会被用光呢?
答:
不需要担心。
512比特能够容纳的质数数量大约为10的150次方,这个数量比整个宇宙中的原子的数量还要多。
我们假设地球上有100亿人,每个人每秒生成100亿个密钥对,那么在经过100亿年之后会生成多少个密钥对呢?
1年最多366天,也就是366*24*60*60=31622400秒,因此
100亿人*100亿个*31622400秒*100亿年=31622400000000000000000000000000000000个
这个数量比10的39次方还少,和512比特能够容纳的质数的数量,即10的150次方相比还相差很远。
别人生成质数组合和自己生成质数组合偶然撞车的可能性,事实上也可以认为是没有的。
二 RSA与质因数分解
问:
RSA加密的过程,需要对大整数进行质因数分解吗?
答:
RSA在加密、解密、密钥对的生成过程中都不需要对大整数进行质因数分解。
只有在需要由数N求p和q的密码破译过程中才需要对大整数进行质因数分解,因此RSA的设计是将质因数分解这种困难留给了密码破译者。
问:
RSA的破译与大整数的质因数分解是等价的吗?
答:
2004年Alexander May证明了求RSA的私钥和对N进行质因数分解是等价的。
三 RSA的长度
问:
要抵御质因数分解,N的长度需要达到多少比特呢?
答:
N无论有多长,总有一个天能够被质因数分解,因此现在的问题是,在现实的时间内N是否能够被质因数分解。随着计算机性能的提高,对一定长度的整数进行质因数分解所需要的时间会逐步缩短,如果大型组织或国家投入其计算资源,则时间会进一步缩短。