模乘运算的实现方法和装置的制作方法

文档序号:6354692阅读:534来源:国知局
专利名称:模乘运算的实现方法和装置的制作方法
技术领域
本发明涉及信息安全技术领域,特别涉及模乘运算的实现方法和装置。
背景技术
RSA 算法是由 Ron Rivest、Adi Shamirh 和 LenAdleman 三人在 1977 年提出的,提
供了加密和签名等功能,是应用最为广泛的密码算法之一。RSA算法的核心为模乘运算,所谓模乘运算,即指当输入乘数X、y,模数n时,输出(X Xy) mod n的结果,mod表示求模运算。移位-加算法为实现模乘运算的经典算法,具体实现如下I)接收输入的k位乘数X、Y,k位模数n,X、y和n均为正整数;2)令 s = 0,i = k~l ;3)计算(s くく l)+xXy[i],得到计算结果s’,其中,くく表示左移,<< I即表示左移I位,y[i]表示y的第i位的取值,当i<0时,y[i] = 0;计算s’ mod n,得到计算结果s” ;4)确定i的取值是否等于0,如果是,则将s”作为模乘运算的结果输出,否则,令i = i-l,s = s”,然后重复执行步骤3).需要说明的是,上述以及后续将要出现的各数字在实际应用中均以ニ进制形式进行表示。另外,在实际应用中,还可对上述移位-加算法进行一定的改造,从而得到采用高基形式的移位-加算法,具体实现如下I)接收输入的k位乘数x、y, k位模数n, k = Ic1Xk2, x'y、]!、!^和k2均为正整数;2)令 s = 0,i = k2-l ;3)计算(s < < k1)+xXy[(i+l) Xk1-I : i Xk1], < < 表示左移,y[ (i+1) Xk1-I i Xk1]表示y的第(i+1) X Ic1-I位到第i X Ic1位中的姆位的取值,当i <0时,y[i] = 0 ;计算s’ mod n,得到计算结果s” ;4)确定i的取值是否等于0,如果是,则将s”作为模乘运算的结果输出,否则,令i = i-l,s = S”,然后重复执行步骤3)。上述两种方式虽然均可实现模乘运算,但两者在实际应用均会存在一定的问题,即计算量大,从而导致计算速度慢。

发明内容
有鉴于此,本发明的主要目的在于提供两种模乘运算的实现方法,能够降低计算量,进而提高计算速度。
本发明的另一目的在于提供两种模乘运算的实现装置,能够降低计算量,进而提高计算速度。
为达到上述目的,本发明的技术方案是这样实现的ー种模乘运算的实现方法,包括A、接收输入的乘数X、y,模数n ;其中,x和y的位数均为k,n的位数为j,j彡k,x、y和n均为正整数;令n’ = n << t, y’ = y << t, t为正整数,<<表示左移; B、计算s = (xXy’ )mod n’,mod表示求模运算,包括BI、令 s = 0,i = k+t-1 ;B2、计算s << 1+xXy’ [i],得到计算结果s’,y’ [i]表示y’的第i位的取值;B3、计算S,mod n’,得到计算结果s” ;B4、令s = S”,如果i等于0,则执行步骤C ;否则,令i = i_l,并返回执行步骤B2 ;C、令s”’ =8>>^将8”’作为模乘运算的结果输出。ー种模乘运算的实现方法,包括A、接收输入的乘数X、y,模数n ;其中,x、y和n的位数均为k,且x、y和n均为正
整数;令n’ = n << t, y’ = y << t, t为正整数,<<表示左移,并且,k和t均需要能够被正整数h整除;B、计算s = (xXy’ )mod n’,mod表示求模运算,包括BI、令 s = 0,i = kyX+t/kfl ;B2、计算 s く < k1+xXy> [ (i+1) Xk1-I : i Xk1],得到计算结果 s’,I,[(i+1) Xk1-I iXkJ表示y’的第(i+1) X Ic1-I位到第i X Ic1位中的姆位的取值;B3、计算S,mod n’,得到计算结果s” ;B4、令s = S”,如果i等于0,则执行步骤C ;否则,令i = i_l,并返回执行步骤B2 ;C、令s”’ =8>>^将8”’作为模乘运算的结果输出。ー种模乘运算的实现装置,包括第一处理单元,用于接收输入的乘数x、y,模数n,其中,X和y的位数均为k,n的位数为j,j彡k,x、y和n均为正整数;令n’ =n<<t,y’ = y < < t,t为正整数,< <表示左移;令 s = 0, i = k+t-1 ;第二处理单元,用于计算s << 1+xXy’ [i],得到计算结果s’,y’ [i]表示y’的第i位的取值;计算s,mod n’,得到计算结果s”, mod表示求模运算;令s = s”,如果i等于0,则令s”’ = s>> t,将s”’作为模乘运算的结果输出,否则,令i = i_l,并重复执行自身功能。ー种模乘运算的实现装置,包括第一处理单元,用于接收输入的乘数x、y,模数n,其中,x、y和n的位数均为k,且x、y和n均为正整数;令n’ = n<<t,y’ = y << t, t为正整数,<< 表示左移,并且,k和t均需要能够被正整数Ic1整除;令s = 0,i = k/X+t/X-1 ;第二处理单元,用于计算s く< kfxXy’ [ (i+1) Xk1-I i Xk1],得到计算结果s’,y’ [(i+1) Xk1-I iXkJ表示y’的第(i+1) Xk1-I位到第iXh位中的姆位的取值;计算s’mod n’,得到计算结果s”,mod表示求模运算;令s = s”,如果i等于0,则令s”’ =s t,将S”,作为模乘运算的结果输出;否则,令i = i_l,并重复执行自身功能。
本发明所述方案中,当未采用高基形式吋,X、y均为k位正整数,s、n’均约为k+t位正整数,因此将有s < < 1+xXy’ [i] < 2n’ +2k ^ 2n’(2k远小于n’),相应地,在毎次计算s’mod n’时,只需进行约I次減法运算即可,而现有未采用高基形式的移位-加算法中,X、y、s、n均为k位正整数,因此将有s << 1+xXy [i] < 2n+2k< 4n,相应地,在毎次计算s’ mod n吋,最多将需要进行3次減法运算;另外,本发明所述方案中,当采用高基形式后,x、y均为k位正整数,s、n’均为k+t位正整数,因此将有s < < Ic1+xXy’ [(i+1) Xk「l : iXkJ < 2klXn’ +2kX2kl ^ 2klXn’ (2k 远小于n’),而现有采用高基形式的移位-加算法中,X、Y、n> s均为k位正整数,因此将有s<< k1+xXy[(i+l) Xk1-I i X kj < 2kl Xn+2kX 2kl < 3 X 2kl Xn,显然,在计算 s’mod n,时所需的減法运算更少。总之,本发明所述方案能够较好地降低计算量,进而提高计算速度。


图I为本发明方法第一实施例的流程图。图2为本发明方法第二实施例的流程图。图3为本发明装置实施例的组成结构示意图。
具体实施例方式针对现有技术中存在的问题,本发明中提出一种改进的模乘运算的实现方案,通过将模数増大等,来达到降低计算量,进而提高计算速度的目的。为使本发明的技术方案更加清楚、明白,以下參照附图并举实施例,对本发明所述方案作进ー步地详细说明。图I为本发明方法第一实施例的流程图。如图I所示,包括以下步骤步骤11 :接收输入的乘数X、y,模数n ;并令n’ = n << t, y’ = y << t。其中,x、y和n的位数均为k,或x和y的位数为k, n的位数为j, j < k, j略小于k,x、y和n均为正整数。另外,t也为正整数,<<表示左移。步骤12 :令 s = 0, i = k+t-1。步骤13 :计算s << 1+xXy’ [i],得到计算结果s’。y’ [i]表示y’的第i位的取值。步骤14 :计算S,mod n’,得到计算结果S”。mod表示求模运算。本步骤中的求模运算需要尽量选择逻辑简单的算法,比如I)令a为s’的高h位,b为n’的高h位;h为正整数,取值通常较小,比如可为4或5 ;2)将a和b进行比较,如果a>b,则计算s”= s’_n’,并令s’= S”,然后返回执行步骤I),否则,输出S”。由于步骤13中得到的S,的高位和X、y’的关系很小,因此,本步骤中的求模运算可以看成由比较(即估商)和减法两部分组成,其中比较部分只与s’和n’的高位有关,相应地,可采用ニ级流水线结构,即将S”的高位计算提前一个时钟周期,并为其它位计算提供比较結果。具体来说,第一级流水线进行a和b的比较以及S,,的高h位的计算,第二级流水线进行s”的除高h位以外的其它位的计算。另外,由于第一级流水线涉及到的操作的位数比较短,因此可采用非冗余结构的普通加法实现;而第二级流水线涉及到的操作的位数比较长,因此可采用冗余结构的加法,如保留进位加法器(CSA, Carry Save Adder)加法。步骤15 :令s = S”,并确定i是否等于0,如果是,则执行步骤16 ;否则,执行步骤
17。 步骤16 :令s”’ = s >> t,将s”’作为模乘运算的结果输出,结束流程。步骤17 :令i = i_l,并返回执行步骤13。步骤12 15用于完成S= (xXy’ )mod n’的计算,可以看出,s = (XXZtY)Iiiod ,所以有s/21 = (xXy)mod n,即算法是正确的。上述实施例中,參数t的选择至关重要,将直接影响算法实现的效率。本发明所述方案中,2k需要远小于n’(n’约为2k+t),那么t的取值将不能过小;另外,如前所述,求模运算通常由估商和减法两部分组成,估商是使用除数与被除数的前几位对商进行估计,而不是使用所有位来对商进行计算,由于s’和n’均约为k+t位,而X和y均为k位,因此在计算s’时,加法运算相对于移位运算对总和的影响将很小,基本上只会影响s’的低k位,高t位可以较早得预测出来,因此t的选择也影响着估商的能力;和现有移位-加算法相比,本发明所述方案需要额外的t个循环周期,因此t的取值不能过大。实验显示,如果x、y和n的位数均为k,较佳地,t的取值需要满足以下条件大于log2k、大于h,且小于k ;如果X和y的位数为k, n的位数为j, j < k,则较佳地,t的取值需要满足以下条件大于log2k+(k_j)、大于h+(k_j),且小于k。虽然图I所示实施例中増加了 t个循环周期,但由于t通常远小于k,因此并不会因此而增加多少计算量。图2为本发明方法第二实施例的流程图。与图I所示实施例相比,本实施例中采用了高基形式,毎次计算多位的乘法。如图2所示,包括以下步骤步骤21 :接收输入的乘数X、y,模数n ;并令n’ = n<<t, y’ = y << t ;并且,k和t均需要能够被Ic1整除。其中,x、y和n的位数均为k,且x、y和n均为正整数;t和Ic1也为正整数,<<表
不左移。步骤22 :令 s = 0,i = k/k^+t/kfl。步骤23 :计算 s << h+xXy’ [ (i+1) Xk1-I : i Xkj ,得到计算结果 s’。ず[(i+1)Xk1-I iXkJ表示y,的第(i+1) X kfl位到第i X Ic1位中的姆位的取值。步骤24 :计算S,mod n’,得到计算结果S”。步骤25 :令s = S”,并确定i是否等于0,如果是,则执行步骤26 ;否则,执行步骤27。步骤26 :令s”’ = s >> t,将s”’作为模乘运算的结果输出,结束流程。
步骤27 :令i = i_l,并返回执 行步骤23。至此,即完成了关于本发明方法实施例的介绍。基于上述方法,图3为本发明装置实施例的组成结构示意图。如图3所示,包括第一处理单元31,用于接收输入的乘数X、y,模数n,其中,x和y的位数均为k,n的位数为j, j彡k, x、y和n均为正整数;令n’ = n << t, y’ = y << t, t为正整数,<<表示左移;令s = 0, i = k+t-1 ;第二处理单元32,用于计算s << 1+xXy’ [i],得到计算结果s’,y’ [i]表示y’的第i位的取值;计算s,mod n’,得到计算结果s”, mod表示求模运算;令s = s”,如果i等于0,则令s,,,= s >> t,将S,,,作为模乘运算的结果输出,否则,令i = i_l,并重复执行自身功能。或者,第一处理单元31,用于接收输入的乘数x、y,模数n,其中,x、y和n的位数均为k,且x、y和n均为正整数;令11’ = 11<<1:,7’ = 7<<1:,セ为正整数,<< 表示左移,并且,k和t均需要能够被正整数Ic1整除;令s = 0, i = k/X+t/kfl ;第二处理单元32,用于计算s く< kfxXy’ [ (i+1) Xk1-I : i Xk1],得到计算结果s’,y’ [(i+1) Xk1-I iXkJ表示y’的第(i+1) X kfl位到第i X Ic1位中的姆位的取值;计算s’mod n’,得到计算结果s”,mod表示求模运算;令s = S”,如果i等于0,则令S”,=s >> t,将S,,,作为模乘运算的结果输出;否则,令i = i_l,并重复执行自身功能。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
权利要求
1.ー种模乘运算的实现方法,其特征在于,包括 A、接收输入的乘数X、y,模数n;其中,X和y的位数均为k, n的位数为j, j彡k, x、y和n均为正整数; 令n’ = n<<t,y’ = y << t, t为正整数,<< 表示左移; B、计算s= (xXy’ )mod n’, mod表示求模运算,包括BI、令 s = 0,i = k+t-1 ; B2、计算s << 1+xXy’ [i],得到计算结果s’,y’ [i]表示y’的第i位的取值; B3、计算s’ mod n’,得到计算结果s” ; B4、令s = s”,如果i等于0,则执行步骤C ;否则,令i = i_l,并返回执行步骤B2 ; C、令s,,,=s >> t,将s,,,作为模乘运算的结果输出。
2.根据权利要求I所述的方法,其特征在于,所述步骤B3包括 B31、令a为s’的高h位,b为n’的高h位,h为正整数; B32、将a和b进行比较,如果&>^则计算s”= s’-n’,并令s’ = s”,然后返回执行步骤B31,否则,输出S”。
3.根据权利要求2所述的方法,其特征在于,所述步骤B3采用ニ级流水线结构实现;其中,第一级流水线进行a和b的比较以及s”的高h位的计算,第二级流水线进行s”的除高h位以外的其它位的计算。
4.根据权利要求3所述的方法,其特征在于,所述第一级流水线采用非冗余结构的普通加法实现,所述第二级流水线采用冗余结构的加法实现。
5.根据权利要求2、3或4所述的方法,其特征在干, 如果j = k,则t的取值需要满足以下条件大于log2k、大于h,且小于k ; 如果j < k,则t的取值需要满足以下条件大于log2k+(k-j)、大于h+(k-j),且小于k。
6.ー种模乘运算的实现方法,其特征在于,包括 A、接收输入的乘数x、y,模数n;其中,x、y和n的位数均为k,且x、y和n均为正整数; 令n’ = n << t, y’ = y << t, t为正整数,<<表示左移,并且,k和t均需要能够被正整数h整除; B、计算s= (xXy’ )mod n’, mod表示求模运算,包括BI、令 s = 0,i = kyX+t/kfl ; B2、计算 s く < k1+xXy> [ (i+1) Xk1-I : i Xk1],得到计算结果 s’,I,[(i+1) Xk1-I iXkJ表示y’的第(i+1) X Ic1-I位到第i X Ic1位中的姆位的取值; B3、计算s’ mod n’,得到计算结果s”; B4、令s = S”,如果i等于0,则执行步骤C ;否则,令i = i_l,并返回执行步骤B2 ; C、令s,,,=s >> t,将s,,,作为模乘运算的结果输出。
7.ー种模乘运算的实现装置,其特征在于,包括 第一处理单元,用于接收输入的乘数x、y,模数n,其中,X和y的位数均为k,n的位数为j, j彡k, X、y和n均为正整数;令n’ = n << t, y’ = y << t, t为正整数,くく表示左移;令 s = 0, i = k+t-1 ; 第二处理单元,用于计算s << 1+xXy’ [i],得到计算结果s’,y’ [i]表示y’的第i位的取值;计算s,mod n’,得到计算结果s”,mod表示求模运算;令s = s”,如果i等于0,则令S”’ = S >> t,将S”’作为模乘运算的结果输出,否则,令i = i-1,并重复执行自身功能。
8.ー种模乘运算的实现装置,其特征在于,包括 第一处理单元,用于接收输入的乘数X、y,模数n,其中,x、y和n的位数均为k,且x、y和n均为正整数;令n’ = n << t, y’ = y << t, t为正整数,<<表示左移,并且,k和t均需要能够被正整数も整除;令s = O,i = k/X+t/X-1 ; 第二处理单元,用于计算s < < kfxXy’ [ (i+1) Xk1-I i Xkj ,得到计算结果s’,I,[(i+1) Xk1-I iXkJ表示y’的第(i+1) X kfl位到第i X Ic1位中的姆位的取值;计算s’ mod n’,得到计算结果s”,mod表示求模运算;令s = s”,如果i等于0,则令s”’ = s作为模乘运算的结果输出;否则,令i = i_l,并重复执行自身功能。
全文摘要
本发明公开了两种模乘运算的实现方法,将模数扩大,并基于扩大后的模数,采用移位-加算法进行模乘运算。本发明同时公开了两种模乘运算的实现装置。应用本发明所述的方法和装置,能够降低计算量,进而提高计算速度。
文档编号G06F7/72GK102646033SQ20111004161
公开日2012年8月22日 申请日期2011年2月21日 优先权日2011年2月21日
发明者刘宗斌, 潘无穷, 荆继武 申请人:中国科学院研究生院
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1