專利名稱:模乘運(yùn)算的實(shí)現(xiàn)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及信息安全技術(shù)領(lǐng)域,特別涉及模乘運(yùn)算的實(shí)現(xiàn)方法和裝置。
背景技術(shù):
RSA 算法是由 Ron Rivest、Adi Shamirh 和 LenAdleman 三人在 1977 年提出的,提
供了加密和簽名等功能,是應(yīng)用最為廣泛的密碼算法之一。RSA算法的核心為模乘運(yùn)算,所謂模乘運(yùn)算,即指當(dāng)輸入乘數(shù)X、y,模數(shù)n時(shí),輸出(X Xy) mod n的結(jié)果,mod表示求模運(yùn)算。移位-加算法為實(shí)現(xiàn)模乘運(yùn)算的經(jīng)典算法,具體實(shí)現(xiàn)如下I)接收輸入的k位乘數(shù)X、Y,k位模數(shù)n,X、y和n均為正整數(shù);2)令 s = 0,i = k~l ;3)計(jì)算(s くく l)+xXy[i],得到計(jì)算結(jié)果s’,其中,くく表示左移,<< I即表示左移I位,y[i]表示y的第i位的取值,當(dāng)i<0時(shí),y[i] = 0;計(jì)算s’ mod n,得到計(jì)算結(jié)果s” ;4)確定i的取值是否等于0,如果是,則將s”作為模乘運(yùn)算的結(jié)果輸出,否則,令i = i-l,s = s”,然后重復(fù)執(zhí)行步驟3).需要說明的是,上述以及后續(xù)將要出現(xiàn)的各數(shù)字在實(shí)際應(yīng)用中均以ニ進(jìn)制形式進(jìn)行表示。另外,在實(shí)際應(yīng)用中,還可對(duì)上述移位-加算法進(jìn)行一定的改造,從而得到采用高基形式的移位-加算法,具體實(shí)現(xiàn)如下I)接收輸入的k位乘數(shù)x、y, k位模數(shù)n, k = Ic1Xk2, x'y、]!、!^和k2均為正整數(shù);2)令 s = 0,i = k2-l ;3)計(jì)算(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位中的姆位的取值,當(dāng)i <0時(shí),y[i] = 0 ;計(jì)算s’ mod n,得到計(jì)算結(jié)果s” ;4)確定i的取值是否等于0,如果是,則將s”作為模乘運(yùn)算的結(jié)果輸出,否則,令i = i-l,s = S”,然后重復(fù)執(zhí)行步驟3)。上述兩種方式雖然均可實(shí)現(xiàn)模乘運(yùn)算,但兩者在實(shí)際應(yīng)用均會(huì)存在一定的問題,即計(jì)算量大,從而導(dǎo)致計(jì)算速度慢。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供兩種模乘運(yùn)算的實(shí)現(xiàn)方法,能夠降低計(jì)算量,進(jìn)而提高計(jì)算速度。
本發(fā)明的另一目的在于提供兩種模乘運(yùn)算的實(shí)現(xiàn)裝置,能夠降低計(jì)算量,進(jìn)而提高計(jì)算速度。
為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的ー種模乘運(yùn)算的實(shí)現(xiàn)方法,包括A、接收輸入的乘數(shù)X、y,模數(shù)n ;其中,x和y的位數(shù)均為k,n的位數(shù)為j,j彡k,x、y和n均為正整數(shù);令n’ = n << t, y’ = y << t, t為正整數(shù),<<表示左移; B、計(jì)算s = (xXy’ )mod n’,mod表示求模運(yùn)算,包括BI、令 s = 0,i = k+t-1 ;B2、計(jì)算s << 1+xXy’ [i],得到計(jì)算結(jié)果s’,y’ [i]表示y’的第i位的取值;B3、計(jì)算S,mod n’,得到計(jì)算結(jié)果s” ;B4、令s = S”,如果i等于0,則執(zhí)行步驟C ;否則,令i = i_l,并返回執(zhí)行步驟B2 ;C、令s”’ =8>>^將8”’作為模乘運(yùn)算的結(jié)果輸出。ー種模乘運(yùn)算的實(shí)現(xiàn)方法,包括A、接收輸入的乘數(shù)X、y,模數(shù)n ;其中,x、y和n的位數(shù)均為k,且x、y和n均為正
整數(shù);令n’ = n << t, y’ = y << t, t為正整數(shù),<<表示左移,并且,k和t均需要能夠被正整數(shù)h整除;B、計(jì)算s = (xXy’ )mod n’,mod表示求模運(yùn)算,包括BI、令 s = 0,i = kyX+t/kfl ;B2、計(jì)算 s く < k1+xXy> [ (i+1) Xk1-I : i Xk1],得到計(jì)算結(jié)果 s’,I,[(i+1) Xk1-I iXkJ表示y’的第(i+1) X Ic1-I位到第i X Ic1位中的姆位的取值;B3、計(jì)算S,mod n’,得到計(jì)算結(jié)果s” ;B4、令s = S”,如果i等于0,則執(zhí)行步驟C ;否則,令i = i_l,并返回執(zhí)行步驟B2 ;C、令s”’ =8>>^將8”’作為模乘運(yùn)算的結(jié)果輸出。ー種模乘運(yùn)算的實(shí)現(xiàn)裝置,包括第一處理單元,用于接收輸入的乘數(shù)x、y,模數(shù)n,其中,X和y的位數(shù)均為k,n的位數(shù)為j,j彡k,x、y和n均為正整數(shù);令n’ =n<<t,y’ = y < < t,t為正整數(shù),< <表示左移;令 s = 0, i = k+t-1 ;第二處理單元,用于計(jì)算s << 1+xXy’ [i],得到計(jì)算結(jié)果s’,y’ [i]表示y’的第i位的取值;計(jì)算s,mod n’,得到計(jì)算結(jié)果s”, mod表示求模運(yùn)算;令s = s”,如果i等于0,則令s”’ = s>> t,將s”’作為模乘運(yùn)算的結(jié)果輸出,否則,令i = i_l,并重復(fù)執(zhí)行自身功能。ー種模乘運(yùn)算的實(shí)現(xiàn)裝置,包括第一處理單元,用于接收輸入的乘數(shù)x、y,模數(shù)n,其中,x、y和n的位數(shù)均為k,且x、y和n均為正整數(shù);令n’ = n<<t,y’ = y << t, t為正整數(shù),<< 表示左移,并且,k和t均需要能夠被正整數(shù)Ic1整除;令s = 0,i = k/X+t/X-1 ;第二處理單元,用于計(jì)算s く< kfxXy’ [ (i+1) Xk1-I i Xk1],得到計(jì)算結(jié)果s’,y’ [(i+1) Xk1-I iXkJ表示y’的第(i+1) Xk1-I位到第iXh位中的姆位的取值;計(jì)算s’mod n’,得到計(jì)算結(jié)果s”,mod表示求模運(yùn)算;令s = s”,如果i等于0,則令s”’ =s t,將S”,作為模乘運(yùn)算的結(jié)果輸出;否則,令i = i_l,并重復(fù)執(zhí)行自身功能。
本發(fā)明所述方案中,當(dāng)未采用高基形式吋,X、y均為k位正整數(shù),s、n’均約為k+t位正整數(shù),因此將有s < < 1+xXy’ [i] < 2n’ +2k ^ 2n’(2k遠(yuǎn)小于n’),相應(yīng)地,在毎次計(jì)算s’mod n’時(shí),只需進(jìn)行約I次減法運(yùn)算即可,而現(xiàn)有未采用高基形式的移位-加算法中,X、y、s、n均為k位正整數(shù),因此將有s << 1+xXy [i] < 2n+2k< 4n,相應(yīng)地,在毎次計(jì)算s’ mod n吋,最多將需要進(jìn)行3次減法運(yùn)算;另外,本發(fā)明所述方案中,當(dāng)采用高基形式后,x、y均為k位正整數(shù),s、n’均為k+t位正整數(shù),因此將有s < < Ic1+xXy’ [(i+1) Xk「l : iXkJ < 2klXn’ +2kX2kl ^ 2klXn’ (2k 遠(yuǎn)小于n’),而現(xiàn)有采用高基形式的移位-加算法中,X、Y、n> s均為k位正整數(shù),因此將有s<< k1+xXy[(i+l) Xk1-I i X kj < 2kl Xn+2kX 2kl < 3 X 2kl Xn,顯然,在計(jì)算 s’mod n,時(shí)所需的減法運(yùn)算更少??傊景l(fā)明所述方案能夠較好地降低計(jì)算量,進(jìn)而提高計(jì)算速度。
圖I為本發(fā)明方法第一實(shí)施例的流程圖。圖2為本發(fā)明方法第二實(shí)施例的流程圖。圖3為本發(fā)明裝置實(shí)施例的組成結(jié)構(gòu)示意圖。
具體實(shí)施例方式針對(duì)現(xiàn)有技術(shù)中存在的問題,本發(fā)明中提出一種改進(jìn)的模乘運(yùn)算的實(shí)現(xiàn)方案,通過將模數(shù)増大等,來達(dá)到降低計(jì)算量,進(jìn)而提高計(jì)算速度的目的。為使本發(fā)明的技術(shù)方案更加清楚、明白,以下參照附圖并舉實(shí)施例,對(duì)本發(fā)明所述方案作進(jìn)ー步地詳細(xì)說明。圖I為本發(fā)明方法第一實(shí)施例的流程圖。如圖I所示,包括以下步驟步驟11 :接收輸入的乘數(shù)X、y,模數(shù)n ;并令n’ = n << t, y’ = y << t。其中,x、y和n的位數(shù)均為k,或x和y的位數(shù)為k, n的位數(shù)為j, j < k, j略小于k,x、y和n均為正整數(shù)。另外,t也為正整數(shù),<<表示左移。步驟12 :令 s = 0, i = k+t-1。步驟13 :計(jì)算s << 1+xXy’ [i],得到計(jì)算結(jié)果s’。y’ [i]表示y’的第i位的取值。步驟14 :計(jì)算S,mod n’,得到計(jì)算結(jié)果S”。mod表示求模運(yùn)算。本步驟中的求模運(yùn)算需要盡量選擇邏輯簡(jiǎn)單的算法,比如I)令a為s’的高h(yuǎn)位,b為n’的高h(yuǎn)位;h為正整數(shù),取值通常較小,比如可為4或5 ;2)將a和b進(jìn)行比較,如果a>b,則計(jì)算s”= s’_n’,并令s’= S”,然后返回執(zhí)行步驟I),否則,輸出S”。由于步驟13中得到的S,的高位和X、y’的關(guān)系很小,因此,本步驟中的求模運(yùn)算可以看成由比較(即估商)和減法兩部分組成,其中比較部分只與s’和n’的高位有關(guān),相應(yīng)地,可采用ニ級(jí)流水線結(jié)構(gòu),即將S”的高位計(jì)算提前一個(gè)時(shí)鐘周期,并為其它位計(jì)算提供比較結(jié)果。具體來說,第一級(jí)流水線進(jìn)行a和b的比較以及S,,的高h(yuǎn)位的計(jì)算,第二級(jí)流水線進(jìn)行s”的除高h(yuǎn)位以外的其它位的計(jì)算。另外,由于第一級(jí)流水線涉及到的操作的位數(shù)比較短,因此可采用非冗余結(jié)構(gòu)的普通加法實(shí)現(xiàn);而第二級(jí)流水線涉及到的操作的位數(shù)比較長(zhǎng),因此可采用冗余結(jié)構(gòu)的加法,如保留進(jìn)位加法器(CSA, Carry Save Adder)加法。步驟15 :令s = S”,并確定i是否等于0,如果是,則執(zhí)行步驟16 ;否則,執(zhí)行步驟
17。 步驟16 :令s”’ = s >> t,將s”’作為模乘運(yùn)算的結(jié)果輸出,結(jié)束流程。步驟17 :令i = i_l,并返回執(zhí)行步驟13。步驟12 15用于完成S= (xXy’ )mod n’的計(jì)算,可以看出,s = (XXZtY)Iiiod ,所以有s/21 = (xXy)mod n,即算法是正確的。上述實(shí)施例中,參數(shù)t的選擇至關(guān)重要,將直接影響算法實(shí)現(xiàn)的效率。本發(fā)明所述方案中,2k需要遠(yuǎn)小于n’(n’約為2k+t),那么t的取值將不能過??;另外,如前所述,求模運(yùn)算通常由估商和減法兩部分組成,估商是使用除數(shù)與被除數(shù)的前幾位對(duì)商進(jìn)行估計(jì),而不是使用所有位來對(duì)商進(jìn)行計(jì)算,由于s’和n’均約為k+t位,而X和y均為k位,因此在計(jì)算s’時(shí),加法運(yùn)算相對(duì)于移位運(yùn)算對(duì)總和的影響將很小,基本上只會(huì)影響s’的低k位,高t位可以較早得預(yù)測(cè)出來,因此t的選擇也影響著估商的能力;和現(xiàn)有移位-加算法相比,本發(fā)明所述方案需要額外的t個(gè)循環(huán)周期,因此t的取值不能過大。實(shí)驗(yàn)顯示,如果x、y和n的位數(shù)均為k,較佳地,t的取值需要滿足以下條件大于log2k、大于h,且小于k ;如果X和y的位數(shù)為k, n的位數(shù)為j, j < k,則較佳地,t的取值需要滿足以下條件大于log2k+(k_j)、大于h+(k_j),且小于k。雖然圖I所示實(shí)施例中増加了 t個(gè)循環(huán)周期,但由于t通常遠(yuǎn)小于k,因此并不會(huì)因此而增加多少計(jì)算量。圖2為本發(fā)明方法第二實(shí)施例的流程圖。與圖I所示實(shí)施例相比,本實(shí)施例中采用了高基形式,毎次計(jì)算多位的乘法。如圖2所示,包括以下步驟步驟21 :接收輸入的乘數(shù)X、y,模數(shù)n ;并令n’ = n<<t, y’ = y << t ;并且,k和t均需要能夠被Ic1整除。其中,x、y和n的位數(shù)均為k,且x、y和n均為正整數(shù);t和Ic1也為正整數(shù),<<表
不左移。步驟22 :令 s = 0,i = k/k^+t/kfl。步驟23 :計(jì)算 s << h+xXy’ [ (i+1) Xk1-I : i Xkj ,得到計(jì)算結(jié)果 s’。ず[(i+1)Xk1-I iXkJ表示y,的第(i+1) X kfl位到第i X Ic1位中的姆位的取值。步驟24 :計(jì)算S,mod n’,得到計(jì)算結(jié)果S”。步驟25 :令s = S”,并確定i是否等于0,如果是,則執(zhí)行步驟26 ;否則,執(zhí)行步驟27。步驟26 :令s”’ = s >> t,將s”’作為模乘運(yùn)算的結(jié)果輸出,結(jié)束流程。
步驟27 :令i = i_l,并返回執(zhí) 行步驟23。至此,即完成了關(guān)于本發(fā)明方法實(shí)施例的介紹?;谏鲜龇椒?,圖3為本發(fā)明裝置實(shí)施例的組成結(jié)構(gòu)示意圖。如圖3所示,包括第一處理單元31,用于接收輸入的乘數(shù)X、y,模數(shù)n,其中,x和y的位數(shù)均為k,n的位數(shù)為j, j彡k, x、y和n均為正整數(shù);令n’ = n << t, y’ = y << t, t為正整數(shù),<<表示左移;令s = 0, i = k+t-1 ;第二處理單元32,用于計(jì)算s << 1+xXy’ [i],得到計(jì)算結(jié)果s’,y’ [i]表示y’的第i位的取值;計(jì)算s,mod n’,得到計(jì)算結(jié)果s”, mod表示求模運(yùn)算;令s = s”,如果i等于0,則令s,,,= s >> t,將S,,,作為模乘運(yùn)算的結(jié)果輸出,否則,令i = i_l,并重復(fù)執(zhí)行自身功能?;蛘撸谝惶幚韱卧?1,用于接收輸入的乘數(shù)x、y,模數(shù)n,其中,x、y和n的位數(shù)均為k,且x、y和n均為正整數(shù);令11’ = 11<<1:,7’ = 7<<1:,セ為正整數(shù),<< 表示左移,并且,k和t均需要能夠被正整數(shù)Ic1整除;令s = 0, i = k/X+t/kfl ;第二處理單元32,用于計(jì)算s く< kfxXy’ [ (i+1) Xk1-I : i Xk1],得到計(jì)算結(jié)果s’,y’ [(i+1) Xk1-I iXkJ表示y’的第(i+1) X kfl位到第i X Ic1位中的姆位的取值;計(jì)算s’mod n’,得到計(jì)算結(jié)果s”,mod表示求模運(yùn)算;令s = S”,如果i等于0,則令S”,=s >> t,將S,,,作為模乘運(yùn)算的結(jié)果輸出;否則,令i = i_l,并重復(fù)執(zhí)行自身功能。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)的范圍之內(nèi)。
權(quán)利要求
1.ー種模乘運(yùn)算的實(shí)現(xiàn)方法,其特征在于,包括 A、接收輸入的乘數(shù)X、y,模數(shù)n;其中,X和y的位數(shù)均為k, n的位數(shù)為j, j彡k, x、y和n均為正整數(shù); 令n’ = n<<t,y’ = y << t, t為正整數(shù),<< 表示左移; B、計(jì)算s= (xXy’ )mod n’, mod表示求模運(yùn)算,包括BI、令 s = 0,i = k+t-1 ; B2、計(jì)算s << 1+xXy’ [i],得到計(jì)算結(jié)果s’,y’ [i]表示y’的第i位的取值; B3、計(jì)算s’ mod n’,得到計(jì)算結(jié)果s” ; B4、令s = s”,如果i等于0,則執(zhí)行步驟C ;否則,令i = i_l,并返回執(zhí)行步驟B2 ; C、令s,,,=s >> t,將s,,,作為模乘運(yùn)算的結(jié)果輸出。
2.根據(jù)權(quán)利要求I所述的方法,其特征在于,所述步驟B3包括 B31、令a為s’的高h(yuǎn)位,b為n’的高h(yuǎn)位,h為正整數(shù); B32、將a和b進(jìn)行比較,如果&>^則計(jì)算s”= s’-n’,并令s’ = s”,然后返回執(zhí)行步驟B31,否則,輸出S”。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟B3采用ニ級(jí)流水線結(jié)構(gòu)實(shí)現(xiàn);其中,第一級(jí)流水線進(jìn)行a和b的比較以及s”的高h(yuǎn)位的計(jì)算,第二級(jí)流水線進(jìn)行s”的除高h(yuǎn)位以外的其它位的計(jì)算。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述第一級(jí)流水線采用非冗余結(jié)構(gòu)的普通加法實(shí)現(xiàn),所述第二級(jí)流水線采用冗余結(jié)構(gòu)的加法實(shí)現(xiàn)。
5.根據(jù)權(quán)利要求2、3或4所述的方法,其特征在干, 如果j = k,則t的取值需要滿足以下條件大于log2k、大于h,且小于k ; 如果j < k,則t的取值需要滿足以下條件大于log2k+(k-j)、大于h+(k-j),且小于k。
6.ー種模乘運(yùn)算的實(shí)現(xiàn)方法,其特征在于,包括 A、接收輸入的乘數(shù)x、y,模數(shù)n;其中,x、y和n的位數(shù)均為k,且x、y和n均為正整數(shù); 令n’ = n << t, y’ = y << t, t為正整數(shù),<<表示左移,并且,k和t均需要能夠被正整數(shù)h整除; B、計(jì)算s= (xXy’ )mod n’, mod表示求模運(yùn)算,包括BI、令 s = 0,i = kyX+t/kfl ; B2、計(jì)算 s く < k1+xXy> [ (i+1) Xk1-I : i Xk1],得到計(jì)算結(jié)果 s’,I,[(i+1) Xk1-I iXkJ表示y’的第(i+1) X Ic1-I位到第i X Ic1位中的姆位的取值; B3、計(jì)算s’ mod n’,得到計(jì)算結(jié)果s”; B4、令s = S”,如果i等于0,則執(zhí)行步驟C ;否則,令i = i_l,并返回執(zhí)行步驟B2 ; C、令s,,,=s >> t,將s,,,作為模乘運(yùn)算的結(jié)果輸出。
7.ー種模乘運(yùn)算的實(shí)現(xiàn)裝置,其特征在于,包括 第一處理單元,用于接收輸入的乘數(shù)x、y,模數(shù)n,其中,X和y的位數(shù)均為k,n的位數(shù)為j, j彡k, X、y和n均為正整數(shù);令n’ = n << t, y’ = y << t, t為正整數(shù),くく表示左移;令 s = 0, i = k+t-1 ; 第二處理單元,用于計(jì)算s << 1+xXy’ [i],得到計(jì)算結(jié)果s’,y’ [i]表示y’的第i位的取值;計(jì)算s,mod n’,得到計(jì)算結(jié)果s”,mod表示求模運(yùn)算;令s = s”,如果i等于0,則令S”’ = S >> t,將S”’作為模乘運(yùn)算的結(jié)果輸出,否則,令i = i-1,并重復(fù)執(zhí)行自身功能。
8.ー種模乘運(yùn)算的實(shí)現(xiàn)裝置,其特征在于,包括 第一處理單元,用于接收輸入的乘數(shù)X、y,模數(shù)n,其中,x、y和n的位數(shù)均為k,且x、y和n均為正整數(shù);令n’ = n << t, y’ = y << t, t為正整數(shù),<<表示左移,并且,k和t均需要能夠被正整數(shù)も整除;令s = O,i = k/X+t/X-1 ; 第二處理單元,用于計(jì)算s < < kfxXy’ [ (i+1) Xk1-I i Xkj ,得到計(jì)算結(jié)果s’,I,[(i+1) Xk1-I iXkJ表示y’的第(i+1) X kfl位到第i X Ic1位中的姆位的取值;計(jì)算s’ mod n’,得到計(jì)算結(jié)果s”,mod表示求模運(yùn)算;令s = s”,如果i等于0,則令s”’ = s作為模乘運(yùn)算的結(jié)果輸出;否則,令i = i_l,并重復(fù)執(zhí)行自身功能。
全文摘要
本發(fā)明公開了兩種模乘運(yùn)算的實(shí)現(xiàn)方法,將模數(shù)擴(kuò)大,并基于擴(kuò)大后的模數(shù),采用移位-加算法進(jìn)行模乘運(yùn)算。本發(fā)明同時(shí)公開了兩種模乘運(yùn)算的實(shí)現(xiàn)裝置。應(yīng)用本發(fā)明所述的方法和裝置,能夠降低計(jì)算量,進(jìn)而提高計(jì)算速度。
文檔編號(hào)G06F7/72GK102646033SQ20111004161
公開日2012年8月22日 申請(qǐng)日期2011年2月21日 優(yōu)先權(quán)日2011年2月21日
發(fā)明者劉宗斌, 潘無窮, 荊繼武 申請(qǐng)人:中國(guó)科學(xué)院研究生院