天天看点

关于RSA硬件算法的实现问题!

        最近在研究RSA的算法。得出了一下心得:

1.软件C实现都是通过32位的加减乘来实现大数的加,减,乘,除,模乘,模运算等。也就是单独从算法上讲,32位的处理器上实现RSA的运算量是减少不了了。

2. 加速RSA算法实现的最有效的途径,就是使用更加位宽的处理器。硬件实现超宽的处理器代价比较大。

3.大数模幂的算法可以使用Montgomery算法进行加速,但是之前要进行预处理,也就是说,大数的模运算(大数的除法)是避免不了的。

4.在寻找大随机素数的时候,要使用试除法和Miller-Rabin的素性检测法。因此也可以说大数的除法也是省不了的。

5.RSA的加密解密过程公式比较简单,真正实现起来速度也比较快。在产生密钥的过程是比较慢的。Openssl的程序中在PC产生RSA1024的密钥一般在3秒之内,而RSA2048的密钥一般在40-50秒左右。

        真正使用硬件来实现,如何能达到每秒钟签名速度为200次?32位的处理器,200MHz,是个挑战!

继续阅读