目录
摘要
RSA算法的核心是大数模乘运算,提高其运算速率不仅对改进RSA算法本身有着重要的意义,而且,如果能够通过专用集成电路快速而低成本的实现,将会对电子商务的推广产生积极作用。在研究蒙哥马利算法的基础上,提出一种基于并行前缀加法器架构的基2-Montgomery模乘运算,构建了1 024 bit的Kogge-stone加法器。仿真结果表明,该方法可以有效减少模乘运算中操作数的延迟时间,在一定程度上提高大数模乘的运算效率。
关键词: RSA算法; 基2-Montgomery; Montgomery算法; Kogge-stone加法器
0 引言
在信息产业和技术日益发展的今天,网络信息安全尤为重要。作为网络信息安全的基础,如何确保密码系统不断改进、升级,成为广大信息工作者研究和关注的话题。目前,国内外密码系统中应用广泛的RSA (Ron Rivest、Adi Shamir和Leonard Adleman)加密算法是较为成熟的公开密钥加密方法,该算法操作的核心是大数模幂运算,即由大数模乘反复运算实现。为了提高安全性,RSA算法一般都在位宽1 024 bit及以上,以如此大的数据位进行计算意味着计算过程非常复杂,可能降低运算速率。笔者认为,提高模乘运算的速率是提高模幂运算的一个重要方法,也是有效加快RSA算法整体运算效率的一个重要途径。
1985年,Perter Montgomery[1]提出了一种只需运用乘法和数的右移操作就可以实现模乘运算的计算,把这种方法叫做Montgomery算法。国内曾有研究提出了其他路径,一种是运用基2-Montgomery算法来实现模乘运算[2-3],优点是基2-Montgomery算法对于模乘运算只需加法器、异或运算器、移位器即可,不需要除法运算;不足是运用的硬件资源过多。另一种是运用基于保留进位加法器(Carry-Save Adder,CSA)的Montgomery算法,降低时钟个数,从而提高模乘运算速率[4];不足是随着计算数的位宽不断增加,加法器的进位链也将不断增加,从而影响加法器的性能。
本文以模乘运算模块为切入点,对RSA算法中模乘运算进行研究。主要方法是通过将Kogge-stone加法器[5]与基2-Montgomery算法结合,形成一种混合运算。结果表明这种混合运算可以在一定程度上提高大数模乘运算效率。
1 RSA算法中模乘运算原理介绍
1.1 RSA算法中相关模块
RSA算法[6]主要包含RSA顶层模块、模幂状态控制模块、模乘运算模块(见图1)。
图1
图1 RSA算法实现的模块
从图1可以看出模乘运算是底层模块,是整个算法的基础,模乘运算的快速实现直接关系着整体RSA算法加解密的速度。
1.2 Montgomery模乘运算
Montgomery乘法的数学表达式是A×B×r-1mod p。其中,A、B是与p同位长的大数,r-1是指r相对于p的模逆,即r-1是满足如下条件的数:r×r-1mod p=1;这个条件成立的充要条件是r与p互素,这一点只需要p为奇数即可,所以Montgomery乘法通常适用于对奇数求模。具体算法描述见表1。
表1 Montgomery乘法
输入:A,B,r,p |
输出:A×B×r-1mod p |
Monm(A,B,r,p) |
{ t=A×B |
u=(t+t×p mod r)p/r |
if u≥p |
return u-p |
} |
新窗口打开| 下载CSV
Montgomery算法则是将对模数的取余计算转化为对2的除法运算,在计算机系统中对2的除法运算则是简单的移位操作,从而大大简化了计算的难度。虽然Montgomery普通算法有效降低了模乘运算,但是当、、A、B、p的位数超过1 024 位时,在运算处理和存储时的数值相当大,非常占用硬件资源,所以需要对Montgomery算法进行相应的改进优化。
1.3 基2-Montgomery算法
一般而言,硬件加密主要从运算速率和资源利用两个方面进行设计。对普通Montgomery算法进行优化主要有两个方面:一个是在乘法计算时,每次有选择地计算一部分值,依次输出;另一个是选择基数的优化方法。
计算、A、B的Montgomery乘积的基2表达式[7]见表2。
表2 基2-Montgomery算法关键步骤
|