提高大整数Montgomery模乘运算速度的方法

文档序号:6615769阅读:309来源:国知局
专利名称:提高大整数Montgomery模乘运算速度的方法
技术领域
本发明涉及的是一种加密算法,特别涉及的是一种提高大整数 Montgomery才莫乘运算速度的方法。
背景技术
随着Internet的迅猛发展,网络安全问题显得越来越重要,相关网络安全协 议应运而生,而这些协议又是以高效安全的加密算法为前提的。
加密算法分为对称加密算法和非对称加密算法。在网络上进行数据传输时, 通常使用对称加密算法加密所要传输的数据,而用非对称加密算法加密密钥。
就非对称加密算法来说,目前RSA与ECC的应用比较普及。RSA与大素 数域上的ECC的底层运算都离不开大整数模乘运算,大整数模乘运算的速度直接 决定了 RSA与ECC加密算法的速度。
在目前的所有有效的大整数模乘算法中,Montgomery算法在大多数环境下被 认为是最为高效的。而在具体以字为单位实现Montgomery算法的方法 中,CIOS(Coarsely Integrated Operand Scanning)算法复杂度最低。现将此算法描述 如下
假设Montgomery算法的参数为(M,M'[O], r, n, X,Y ) , M为大整数,r = 2w
为最小字处理单元,n为大整数的字个数。M'[O] = M-'[O] mod r。 X,Y为要计算
Montgomery模乘的乘数。CIOS算法如下 z. = 0 to —1{ C = 0;
<formula>formula see original document page 4</formula>(C) = r[w]+c; = &
T[" + 1] = C; C = 0;
m = r
*M'〔0] mod
ybr y = i w—i{
(C,S) = r[/| + m*M[7.] + C;
(。)=r["]+c;
r[w —1] = S;
:r["] = r["+i]+c;
在大整数运算中,关键运算为乘法运算,加法运算时间都可忽略不计,上述
CIOS中乘法的次数为2w2 +w 。如何减少乘法运算的次数,成为改进Montgomery CIOS算法的关键。
一些学者注意到了这一点,文章《Dual-Residue Montgomery Multiplication》
也阐述了一种提高速度的方案,该文章的主要创新点如下
为了提高运算速度,他将乘数中的一个拆分为高低项之和,J^^,+K,然 后并行计算Z1V^ modM, JO^-" modM的值。
因为6<"所以^7^—* modM通过CIOS算法比原来的运算量小,而X7^-" modM中的^的字凄t比原来少,而两项的计算又是并4亍的,所以运算速度比原来 得到提高。
但是该文章中仅对一个乘数进行了拆分,Z7^-" modM的计算中乘法的运算 量在取6 = 「"/2]时约为6"2/4 + w。
鉴于上述问题,本发明创作者经过长时间的研究和试验,在此算法的基础上 获得一种提高大整数运算速度的方法。

发明内容
本发明的目的在于,提供一种提高大整数Montgomery模乘运算速度的 方法,用以克服上述缺陷。
为实现上述目的,本发明采用的技术方案在于,提供一种提高大整数Mon t gomery模乘运算速度的方法,其包括的步骤为
步骤a:将两个大整数乘数X、 Y分别拆分为高数位^。=1〃「"^ , 4 = y /「"/2,,和低数位= X mod r「"/21 , & = 7 mod r"—「"'2,;
步骤b:并行计算^义6, Z,"/"外"modM, X,。}>—「"/2lmodM, Z,"^-" mod
M;
步骤c:计算(A义6 + ^。V"「"外"mod M+义,。V—「""mod M + X"j-" mod M) mod M的值,得到最终结果;
其中M为大整数,广=2"为最小字处理单元,n为大整数M的字个数。 其中,所述步骤b中计算^j/"叫—"mod M的步骤为 步骤bll:取i二0;
步骤 b12 :令 C=0,从 j = 0 到 j= "-「"/2,-l依次计算 (c,^^r[乂]+A力-]u/]+c; r[y] = &从j= "-「"/2]到j= "-l依次计算 (dr[刀+c;r[y.]^
步骤bl3:令(Or["] + C; 2T"] = & r[" + l] = C; C = 0; w = :T
*M'
mod 步骤 b14 :令(C,S) = :T
+ m*M'
,从 j=l 到 n-1 依次计算 (C," = 7U] + m * M[刀+ C; 7U — 1] =
步骤b 15:令(C, 。 = r["〗+ C; r[M -1] = & :T["] = T[" +1] + C;
步骤bl6:如果t"-「"/2"]-l,返回T
…7111 —i];否则令2' = 2 + 1,执行上述步 骤bl2;
其中,i、 j、 C为变量,M为大整数,广=2"为最小字处理单元,n为大整数 M的字个凄t, M'[O] = M-'[O] modr。
其中,所述步骤b中计算X,。y,_「, mod M的步骤为 步骤b21:令i二0;
步骤 b22 : 令 C=0,从 j = 0 到 j= 「"/2,-1依次计算 (C,。-r[刀+ XJ乂],山〗+ C; 7U] = &从j= 「"/2,到j = "-l依次计算 (dr[乂] + C; 21/] = &
步骤b23:令COr["] + C; r["] = >S; T["+ 1] = C; C = 0; m = r
*ikT
mod r;
步骤b24 : 令(C,S) = :T
+ w*M'
, 从j=l 到 j = n-1 依次计算 (C,= 7U] + m * + C; r[y' — 1] = &
步骤b25:令(or["]+c; 1] = & r["] = r["+i]+c;
步骤b26:如果t「w/2,-l,返回710]…7111 —否则令/ = / + 1,执行上述步骤b22;
其中,i、 j、 C为变量,M为大整数,"=2*为最小字处理单元,n为大整数 M的字个数,M'[O] = M-'[O] modr。
其中,所述步骤b中计算ZJj-" modM的步骤为 步骤b31:令i二0;
步骤 b32 : 令 C=0,从 j = 0 到 j= 「"/2"j-l依次计算 ((^) = 71/] +W]*, + C ; 71/] = &
从7' = 「"/2]到j= —i依次计算(c,s) = r[y] + C; 71/] = S;
步骤b33: 4^(C,S) = r["〗+ C;r[w] = S;r[" + l] = C;C = 0;/w = :r
*M'
mod 步骤 b34 : 令(C,S) = r
+ w*M'
, 从 j=l 到 j=n-l 依次计算 (C, = r[/] + w *玲.]+ C; 7U -1] =
步骤b35: (C,S) = r["] + C;r[w-1] = S;= r[w + l] + C ; 步骤b36:如果i' <「"/2")-1,贝"'=/ + 1,执行上述步骤b32; 步骤b37:令/ =「"/2"|; 步骤b38:令C = 0;w = r
*M'
mod r;
步骤 b39 : 令(C,S) = r
+ m*M'
, 从j=l 到 j=n-l 依次计算 (C, S) = 71/] + w * + C; r[y' -1] = S;
步骤b3A: (C,S) = r["] + C; T["-1] = S;= r[" +1] + C ;
步骤b3B:如果/</7-1,则令f = / + l并执行上述步骤b38;否则返回
r[o]...r[n-i];
其中,i、 j、 C为变量,M为大整数,r-2"为最小字处理单元,n为大整数 M的字个数,M'[O] = M-'[O] modr。
与现有技术相比本发明的优点在于,首先其是针对Montgomery算法本身的 改进;其次在n充分大时,本发明比Montgomery CIOS实现节省约的时间37.5%, 比《Dual-Residue Montgomery Multiplication中的对偶剩余算法的还要快,该算 法约节省时间25%。
具体实施例方式
申请人认为具体实施方式
里,阐述的比较清楚不需要在配合附图
进行说明, 对本发明上述的和另外的技术特征和优点下边将作更详细的说明。
本发明的提高大整数Montgomery模乘运算速度的方法的流程,其是以Montgomery算法为基础的,利用对偶剩余原理,将两个乘数分别拆分为高低项之 和,然后并行计算拆分后的Montgomery模乘,从而使得大整数模乘速度提高0.6 倍。其包括的步骤为
步骤a:将两个大整数乘数X、 Y分别拆分为高数位^a:X〃「""1 , ^ = y/广「"M ,和低数位义,。=Z mod 一。, , & = y mod r"-「"",;
步骤b:并行计算^。^, A。V「"外"modM,义,。V—「""modM, X " mod
M;
步骤c:计算(^。^ + ^。V「"外"mod M+ 「一mod M+ mod
M) mod M的值,得到最终结果;
其中M为大整数,^ = 2^为最小字处理单元,n为大整数M的字个数。 其中,所述步骤b中计算J^。V「""" modM的步骤为 步骤bll:取i二0;
步骤 b12 : 令 C=0,从 j = 0 到 j= "-「"/2]-l依次计算 (C,S卜7I/] + ^L/]^卩]+ C; 7U] = S;从j= "-「"/2,到j= "-1依次计算 (C,S) = 71/] + C; rm = S;
步骤bl3:令(C,S)二r["] + C;r["hS;r[" + l]-C;C:0;/7^r
承似'
mod
步骤 M4 : 令(C,S) = r
+ j*M'
, 从 j=l 到 n-1 依次计算 (C, S) = r[刀+ m * M[刀+ C; r[卜1] = S;
步骤b 15:令(C, S) = + C; r[" — 1] = S; = T[" +1] + C;
步骤bl6:如果t"-「"/2]-l,返回7
…77[11—1].,否则令/ = / + 1,执行上述步 骤bl2;
其中,i、 j、 C为变量,M为大整数,,=2"为最小字处理单元,n为大整数 M的字个数,M'
-M-1
modr。
其中,所述步骤b中计算X,。I^-「"^mod M的步骤为 步骤b21:令i-0;
步骤 b22 :令 C=0,从 j = 0 到 j= 「"/2]-l依次计算
(c,s) = r[;]+jrA。[y〗*i;[/]+c; r[/i=s;从j= 「"/2]到j = "-i依次计算 (c,s) = r[/|+c; =
步骤b23:令(C, S) = r["] + C; r["] = r["+1] = C; C = 0; w = T
* M'[O] mod r; 步骤b24 : 令(C,S) = r
+ w*M'
, 从j=l 到 j = n-1 依次计算
(c, s) = r[/〗+*则+c; r[/ -1] = &步骤b25:令(dT[w] + C; r[w_l] = >S; = T[w + 1] + C;
步骤b26:如果/ = 「"/2>1,返回710]…7111 —否则令/ = / + 1,执行上述步骤
b22;
其中,i、 j、 C为变量,M为大整数,,=2"为最小字处理单元,n为大整数 M的字个数,M'[O]:M-'[O] modr。
其中,所述步骤b中计算X,。"^-" modM的步骤为 步骤b31:令〗=0;
步骤b32 :令C=0,从 j= 0到j= 「"/2]-1依次计算
(c,>s) = r[)]+w]*,+c; r[y] = &
从)=「"/21到j=" -1依次计算(c,=r[y]+c;= &
步骤b33:令(C,S)二r["] + C; = & r[" + l] = C; C = 0; w = :r
*M'
mod
步骤 b34 :令(C,S):r
+ m承M'
, 从 j=l 到 j=n-l 依次计算
(c, = r[y]+m * +c; r[ _/—1] = &
步骤b35: (C) = r["] + C; r["-l] = S; r[w] = :T[" + l] + C; 步骤b36:如果z' <「w/2]-l,则z'= "1,执行上述步骤b32; 步骤b37:令Z =「"/2]; 步骤b38:令C = 0;m = :T
*,
mo";
步骤 b39 : 令(C,S) = r
+ m*JkT
, 从 j=l 到 j=n-l 依次计算
(c, = r[y]+m * +c; r[) -1] = &
步骤b3A: (dr["]+c;r["-i;n r|>] = r["+i]+c;
步骤b3B:如果"m-1,则令/ = / + 1并执行上述步骤b38;否则返回
r[o]…r[n-i];
其中,i、 j、 C为变量,M为大整数,^ = 2"为最小字处理单元,n为大整数 M的字个数,M'[O] = M—'[O] modr。 以16进制表示如下
M: 6C7511628CC295716464B4F4D98AB347C452724FF9B5A55FB F792769BEC2A64AA187B72835E72610A8679317B867061131
605E653891 AT
: 25758871n: 32
X: 6C7511628CC295716464B4F4D98AB347C452724FF9B5A55FB F792769BEC2A64AA187B72835E72610A8679317B867061131 F583F34943021745C1F45A7EF1043D24E7341BBBF12019287 5012613337
Y: 6C7511628CC295716464B4F4D98AB347C452724FF9B5A55FB F792769BEC2A64AA187B72835E72610A8679317B867061131 F583F34943021745C1F45A7EF2734B6597211CCEF15015253 E012E11732
按照上述方法,首先对X,Y进行拆分,然后并行计算,最后进行模加运算, 即可得到最终结果。
以上所述仅为本发明的较佳实施例,对本发明而言仅仅是说明性的,而非限 制性的。本专业技术人员理解,在本发明权利要求所限定的精神和范围内可对其 进行许多改变,修改,甚至等效,但都将落入本发明的保护范围内。
权利要求
1、一种提高大整数Montgomery模乘运算速度的方法,其特征在于,其包括的步骤为步骤a将两个大整数乘数X、Y分别拆分为高数位和低数位步骤b并行计算XhaYhb,XlaYlbr-n modM;步骤c计算的值,得到最终结果;其中M为大整数,r=2w为最小字处理单元,n为大整数M的字个数。
2、 根据权利要求1所述的提高大整数Montgomery模乘运算速度的方法,其 特征在于,所述步骤b中计算XA。i;/"/21-" mod M的步骤为步骤M1:取i二O;步骤 b12 :令 C=0,从 j = 0 到 j= "-「"/2,-1依次计算 (c,。 = rL/]+zjy.]*i^]+c; r[)] = &从j= "-「"/2,到j= "-1依次计算 (dr[刀+c; 71/] = &步骤bl3:令(dT["] + C; r["] = S; T["+ 1] = C; C = 0; w = r
*M'
mod 步骤 M4 :令(<^。 = 110] + *似'
,从 j=l 到 n陽l 依次计算 (C, 。 = r[乂] + m * M[刀+ C; 7T乂 -1] = &步骤bl5:令(c,s)-r["] + c; r["-1] = & r["] = r[" +1] + c;步骤bl6:如果/ = "-「"/2]-1,返回^0]…T[n — U;否则令,=,+ 1,执行上述步 骤bl2;其中,i、 j、 C为变量,M为大整数,,=2^为最小字处理单元,n为大整数 M的字个凄t, M'[O] = AT1
modr。
3、 根据权利要求1所述的提高大整数Montgomery模乘运算速度的方法,其 特征在于,所述步骤b中计算^7,—「一mod M的步骤为步骤b21:令i二0;步骤 b22 :令 C=0,从 j = 0 到j= 「"/2]-l依次计算(c,。 = r[7']+xA。[7]*};w + c; r[)] = 1s;从j= 「"/2]到j = "-1依次计算 (c,s) = r[7]+c; r[7.] = &步骤b23:令(C,^r[w] + C; r["] = S; r["+l] = C; C = 0; m = r
* AT[O] mod步骤b24 : 令(C,>S) = r
+ m*M'
, 从j=l 到 j = n-l 依次计算 (C, <S) = 7U] +附*M[7] + C; r[) -1] = &步骤b25:令(C,^T[w] + C; = & r[w] = r[w + l] + C;步骤b26:如果/ = 「"/2]-1,返回710]…7111 — 1^否则令""l,执行上述步骤b22;其中,i、 j、 C为变量,M为大整数,,=2^为最小字处理单元,n为大整数 M的字个数,M'[O] = M_1
modr。
4、根据权利要求1所述的提高大整数Montgomery模乘运算速度的方法,其 特征在于,所述步骤b中计算Z,。iV"-" modM的步骤为步骤b31:令i二0;步骤 b32 : 令 C=0,从 j = 0 到 j= 「"/2]-1依次计算 (c, s) = r[)]+x力。[y] [z.] + c; = &从)=「"/2]到—1;依次计算(c,。 = r[)] + C; 71/] = & 步骤b33:令(C,^71"] + C; r[w] = & r[w + l] = C; C = 0; m = T
*M'
mod r; 步骤 b34 : 令(C,S) = r
+ m*AT
, 从 j=l 到 j=n-l 依次计算 (C, 。 = r[刀+ w * M[刀+ C; 7U _ 1] = &步骤b35: (C,>S) = r["] + C; r["-l]"; r["] = T[" + l] + C; 步骤b36:如果/<「"/2,-1,则"/ + 1,执行上述步骤b32; 步骤b37:令/ =「"/2,; 步骤b38:令C = 0;m = r
*M'
mod r ;步骤 b39 : 令(C,。 = r
+ m*M'
, 从 j=l至'J j=n-l 依次计算 (C, S) = r[刀+附* M[乂] + c; r[y -1] = &步骤b3A: (C,S) = r["] + C; r["-l] = S;= r[w +1] + C;步骤b3B:如果/〈w-l,则令/ = / + 1并#丸行上述步骤b38 ;否则返回r[o]…r[n-i];其中,i、 j、 C为变量,M为大整数,/^2w为最小字处理单元,n为大整数 M的字个凄史,M'[O] = M '
modr。
全文摘要
本发明为一种提高大整数Montgomery模乘运算速度的方法,其包括的步骤为步骤a将两个大整数乘数X、Y分别拆分为高数位X<sub>ha</sub>=X/r<sup>「n/2</sup>,Y<sub>hb</sub>=Y/r<sup>n-「n/2</sup>,和低数位X<sub>la</sub>=X mod r<sup>「n/2</sup>,Y<sub>lb</sub>=Y mod r<sup>n-「n/2</sup>;步骤b并行计算X<sub>ha</sub>Y<sub>hb</sub>,X<sub>ha</sub>Y<sub>lb</sub>r<sup>「n/2-n</sup>mod M,X<sub>la</sub>Y<sub>hb</sub>r-<sup>-「n/2</sup>mod M,X<sub>la</sub>Y<sub>lb</sub>r<sup>-n</sup> mod M;步骤c计算(X<sub>ha</sub>Y<sub>hb</sub>+X<sub>ha</sub>Y<sub>lb</sub>r<sup>「n/2-n</sup> modM+X<sub>la</sub>Y<sub>hb</sub>r<sup>-「n/2</sup>mod M+X<sub>la</sub>Y<sub>lb</sub>r<sup>-n</sup> mod M)mod M的值,得到最终结果;其中M为大整数,r=2<sup>w</sup>为最小字处理单元,n为大整数M的字个数。
文档编号G06F7/72GK101470598SQ20071030456
公开日2009年7月1日 申请日期2007年12月28日 优先权日2007年12月28日
发明者瑶 丁, 张庆胜, 磊 王, 程登峰 申请人:航天信息股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1