CN101216754B - 基于模乘运算的数据加解密处理的方法及装置 - Google Patents

基于模乘运算的数据加解密处理的方法及装置 Download PDF

Info

Publication number
CN101216754B
CN101216754B CN2007100329409A CN200710032940A CN101216754B CN 101216754 B CN101216754 B CN 101216754B CN 2007100329409 A CN2007100329409 A CN 2007100329409A CN 200710032940 A CN200710032940 A CN 200710032940A CN 101216754 B CN101216754 B CN 101216754B
Authority
CN
China
Prior art keywords
modular multiplication
data
additive operation
result
piece
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2007100329409A
Other languages
English (en)
Other versions
CN101216754A (zh
Inventor
刘军林
林凡
张永强
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
GCI Science and Technology Co Ltd
Original Assignee
GCI Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by GCI Science and Technology Co Ltd filed Critical GCI Science and Technology Co Ltd
Priority to CN2007100329409A priority Critical patent/CN101216754B/zh
Publication of CN101216754A publication Critical patent/CN101216754A/zh
Application granted granted Critical
Publication of CN101216754B publication Critical patent/CN101216754B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Abstract

本发明涉及计算机领域,本发明实施例公开了一种基于模乘运算的数据加解密处理的方法及装置,该模乘运算的处理方法包括:确定待处理的模乘运算;将模乘运算转化为加法运算的循环;在每次进行所述加法运算过程中,将该加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块,分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据各对应子块的运算结果,获取所述加数、被加数的加法运算的结果;在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述模乘运算的结果。应用本发明实施例的技术方案能够提高运算速度,提高运算处理效率。

Description

基于模乘运算的数据加解密处理的方法及装置
技术领域
本发明涉及计算机领域,尤其涉及计算机数据处理中的一种基于模乘运算的数据加解密处理的方法及一种基于模乘运算的数据加解密处理的装置。
背景技术
大数模乘算法是目前使用的各类公开密钥密码系统的核心单元,比如:RSA算法。RSA算法是目前比较安全且使用最广泛的一种加解密方法,而且使用该算法可以进行数据签名和身份验证,该算法对数据的处理最主要是通过模幂计算完成的,而其中模幂计算是通过大数模乘运算来完成。
目前较好的模乘算法是Montgomery模乘算法。Montgomery模乘算法的基本思想是,通过Montgomery变换将大数变换成以余数的形式表示,将变换后的结果作为操作数参与模乘运算,运算结束后再通过适当的变换将最终计算结果以正常的形式表示出来。对于单纯的一次模乘运算,这并不算是一种高效的算法,但是如果将其应用于模幂运算等需要反复进行模乘运算的计算当中,无论在软件实现还是在硬件实现方面,Motgomery算法已显示出了其高效性的优点。
基于Montgomery模乘法的RSA加解密处理过程主要由3个过程组成:映射过程,模幂乘过程,反映射过程。该3个过程均可用Montgomery模乘算法来实现。映射过程即将输入数据M映射成 M ‾ = Mr mod N , 再对
Figure 178435DEST_PATH_GSB00000024445400012
进行模幂乘运算得到MEr mod N。反映射过程是将MEr mod N转换成MEmod N,即去掉模幂乘结构中的整数因子r,最后得到期望的结果,即MEmod N。这里r=2n,n为模数N的二进制数位宽。这里设MonPro(a,b)=a·b·r-1mod N,模乘运算是实现Montgomery模幂运算法的关键步骤,在模幂乘计算中会反复用到。
目前大数模乘硬件实现比较流行的方法是在一个处理器内以脉动阵列结构处理高基数数据实现Montgomery模乘。以器件Xilinx公司的XC2V4000FPGA为例,实现基于高基(比如基为16)的Montgomery模乘运算,做一次1024位的模乘运算需要用(1024×2+1024)×2048个时钟周期,若整个系统的时钟频率为150MHz,则一次运算需要50ms。
采用该种方法虽然能够处理高基的模乘运算,但是由于脉动阵列结构采用流水线的作业方式,造成该方法的实现效率低。
本发明实施例提供一种基于模乘运算的数据加解密处理的方法,能够提高对数据加解密的处理速度,提高处理数据的吞吐量。
本发明实施例还提供另一种基于模乘运算的数据加解密处理的方法,能够提高对数据加解密的处理速度,提高处理数据的吞吐量。
本发明实施例还提供一种基于模乘运算的数据加解密处理的装置,能够提高对模乘运算的处理速度,提高数据处理效率。
本发明实施例提供的一种基于模乘运算的数据加解密处理的方法,包括:
获取由待处理的数据构成的模幂运算,其中所述待处理的数据为:待加密的数据、或待解密的数据;
将所述模幂运算转化为模乘运算的循环;
将所述模乘运算转化为加法运算的循环;
在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果;当所述加法处理器在子块的加法运算中产生了进位时,将低位块所进行加法运算产生的进位值进位到高位块所进行加法运算得到的运算结果中;
在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述模幂运算的结果;
根据所述模幂运算的结果获取处理后的数据,所述处理后的数据为:加密数据、或解密数据。
在本发明实施例的方法中,可选地,在将所述待处理的模幂运算转化为模乘运算的循环之前,还包括:
计算并存储X*N、r2modN,
其中,所述X为不大于(2n-1)的自然数,所述2n为Booth算法的基,所述N为模数,所述r等于2n’,所述n’为:对所述模数N进行位扩展后的位数,且所述n’为基于Booth算法的基的二进制位数的倍数;
在将所述待处理的模幂运算转化为模乘运算的循环过程中,或者在将所述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N、r2modN,读取所存储的X*N、r2modN代入计算。
本发明实施例提供的另一种基于模乘运算的数据加解密处理的方法,包括:
获取由待处理的数据构成的模乘运算,其中所述待处理的数据为:待加密的数据、或待解密的数据;
将所述模乘运算转化为加法运算的循环;
在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果;当所述加法处理器在子块的加法运算中产生了进位时,将低位块所进行加法运算产生的进位值进位到高位块所进行加法运算得到的运算结果中;
在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述模乘运算的结果;
根据所述模乘运算的结果获取处理后的数据,所述处理后的数据为:加密数据、或解密数据。
在本发明实施例的方法中,可选地,在将所述待处理的模乘运算转化为模加法运算的循环之前,还包括:
计算并存储X*N,其中所述X为不大于(2n-1)的自然数,所述2n为Booth算法的基,所述N为模数,
在将所述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N,读取所存储的X*N代入计算。
本发明实施例提供的基于模乘运算的数据加解密处理的装置,包括:
获取由待处理的数据构成的模幂运算的模块,其中所述待处理的数据为:待加密的数据、或待解密的数据;
将所述模幂运算转化为模乘运算的循环的模块;
将所述模乘运算转化为加法运算的循环的模块;
在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果,当所述加法处理器在子块的加法运算中产生了进位时,将低位块所进行加法运算产生的进位值进位到高位块所进行加法运算得到的运算结果中的模块;
在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述模幂运算的结果的模块;
根据所述模幂运算的结果获取处理后的数据的模块,所述处理后的数据为:加密数据、或解密数据。
在本发明实施例的装置中,可选地,所述装置还包括:
在将所述待处理的模幂运算转化为模乘运算的循环之前,计算并存储X*N、r2modN的模块;
及在将所述待处理的模幂运算转化为模乘运算的循环过程中,或者在将所述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N、r2modN,读取所存储的X*N、r2modN代入计算的模块;
其中,所述X为不大于(2n-1)的自然数,所述2n为Booth算法的基,所述N为模数,所述r等于2n’,所述n’为:对所述模数N进行位扩展后的位数,且所述n’为基于Booth算法的基的二进制位数的倍数。
本发明另一实施例提供的基于模乘运算的数据加解密处理的装置,包括:
获取由待处理的数据构成的模乘运算的模块,其中所述待处理的数据为:待加密的数据、或待解密的数据;
将所述模乘运算转化为加法运算的循环的模块;
在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果,当所述加法处理器在子块的加法运算中产生了进位时,将低位块所进行加法运算产生的进位值进位到高位块所进行加法运算得到的运算结果中的模块;
在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述模乘运算的结果的模块;
根据所述模乘运算的结果获取处理后的数据的模块,所述处理后的数据为:加密数据、或解密数据。
在本发明实施例的装置中,可选地,所述装置还包括:
在将所述待处理的模乘运算转化为加法运算的循环之前,计算并存储X*N的模块;
及在将所述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N,读取所存储的X*N代入计算的模块;
其中所述X为不大于(2n-1)的自然数,所述2n为Booth算法的基,所述N为模数。
由上可见,应用本发明实施例的技术方案,由于在每次进行所述加法运算过程中,对加数、被加数进行分块处理,由各个加法处理器并行的处理各对应子块的加法运算,再根据各对应子块的运算结果,获取所述加数、被加数的加法运算的结果,能够提高各次所述加数、被加数的加法运算的速度,从而能够更快的完成加法运算的循环而得到模乘运算的结果,完成模乘运算。即应用本发明实施例的技术方案,能够提高对模乘运算的处理速度,提高处理模乘运算的效率。
在数据加解密领域中,只要该数据加解密处理过程中包含模乘运算的处理,则应用本发明实施例的技术方案能够提高数据加解密处理的速度,提高处理数据的吞吐量。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的不当限定,在附图中:
图1为本发明实施例1提供的一种模乘运算的实现方法的流程示意图;
图2为本发明实施例1提供的一种加法分块计算方法的示意图;
图3为本发明实施例2提供的一种基于模乘运算的数据处理装置的结构示意图;
图4为本发明实施例2提供的另一种基于模乘运算的数据处理装置的结构示意图;
图5为本发明实施例2提供的又一种基于模乘运算的数据处理装置的结构示意图;
图6为本发明实施例2提供的由多个数据处理构成的并列加解密处理器阵列;
图7为本发明实施例3提供的一种基于模乘运算的数据加解密方法的流程示意图;
图8为本发明实施例4提供的一种基于模乘运算的数据加解密方法的流程示意图。
具体实施方式
下面将结合附图以及具体实施例来详细说明本发明,再次本发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。
实施例1:
图1为本实施例提供的模乘运算的实现方法的流程示意图,如图1所示,该方法包括:
步骤101:确定待处理的模乘运算。
输入待处理的模乘运算,该模乘运算可以为:用户输入的模乘运算;
或者,在加解密应用中,该模乘运算可以为:由计算机根据加解密算法得到的由待加解密数据构成的模乘运算;
或者,该模乘运算也可以为:当前计算机在处理数据加解密过程中产生的模乘运算;
或者,该模乘运算也可以为:计算机在处理模幂运算过程中,由模幂运算转化成的模乘运算的循环中的任意一次模乘运算。该模幂运算可以为数据加解密过程中,由待处理的数据构成的模幂运算。
如果该模乘运算为:由模幂运算转化成的模乘运算的循环中的任意一次模乘运算,其中将模幂运算转化为模乘运算的循环可以采用以下的技术方案:
以下以基8Booth算法16进制算法的模幂算法为例,说明在本实施例中将模幂运算转化为模乘运算的循环的技术方案:
在本实施例中,基于Booth算法的基的二进制位数为3,设当前的模幂运算为ME mod N,其中,M为待处理数据、N为已知的模数且要求其为奇数,M mod N≠0,E为幂指数,E的取值范围可以为任意正整数。
将模幂运算转化为模乘运算的循环可以使用以下描述方案:
第一步,确定n’的取值,计算C=r2 modN=(2n′)2 modN;其中C为整数因子,r=2n′,n’为:对模数N进行位扩展后的位数,且所述n’为基于Booth算法的基的二进制位数的倍数。
第二步,初始化Pre0=1,并计算Pre1=MonPro_Booth_R8(M,C,N),存储Pre0、Pre1,其中MonPro_Booth_R8(M,C,N)表示基8Booth算法的模乘运算:M*CmodN。使用以下循环计算Prei,并存储各次得到的Prei,其中j为:2、3、4...15。
for i=2;i<=15;i++
{Prei=MonPro_Booth_R8(Prei-1,Pre1,N);
//MonPro_Booth_R8(Prei-1,Pre1,N)表示Prei-1*Pre1modN的基8Booth模
//乘运算
}
第三步,计算并存储X*N,其中X分别取值:1,2,...,7,在后续计算需要使用到N、2N、3N、4N、5N、6N、7N时,可以直接读取本步存储的值,而避免重复计算,有利于加快数据处理速度,提高运算的效率。
第四步,对幂指数E进行分组:E=(ek-1 ek-2...e1 e0),得到(Fs-1 Fs-2...F1F0)。其中,E的位宽为k,对k进行位扩展并保证位扩展后的k’为4的倍数(往高位补“0”),对(ek-1 ek-2...e1 e0)分组得到(Fs-1 Fs-2...F1 F0),分组数s=k’/4;每组4个bit,Fi的取值为0至15的任意整数。
第五步, K 0 = Pre F s - 1 , 根据F分组的最高位取得相应的预计算值。
第六步:进行以下的循环计算模幂乘中间变量Ki-1,在本实施例中该计算迭代需要4次:
for  i=1;i<=s-1;i++
{
for j=1;j<=4;j++,//这里幂16的模乘计算a→a2→a4→a8→a16
     {
       Ki-1=MonPro_Booth_R8(Ki-1,Ki-1,N);
    }
Ki=Ki-1
if Fs-i-1~=0,Ki=MonPro_Booth_R8(Ki,Pre(Fs-i-1),N)
//其中MonPro_Booth_R8(Ki,Pre(Fs-i-1),N)表示基8Booth算法的模乘运
//算:Ki*Pre(Fs-i-1)modN。
}
第七步,计算x=MonPro_Booth_R8(Ks-1,1,N),其中MonPro_Booth_R8(Ks-1,1,N)表示基8Booth算法的模乘运算:Ks-1*1modN。
第八步,返回x。
结束。
按照上述的方案可以完成将模幂运算转化为模乘运算的循环。除了上述本实施例提供的方案外,也可以使用现有技术的其他技术方案来完成将模幂运算转化为模乘运算的循环,在此不一一列举。
步骤102:将模乘运算转化为加法运算的循环。
根据Montgomery算法,将待处理的模乘运算转化为加法运算的循环。
以下以基8Booth算法的模乘算法为例,说明在本实施例中如何根据Montgomery算法将待处理的模乘运算转化为加法运算的循环:
设当前的模乘运算为A*B*r-1mod N,其中,A、B分别为该模乘运算的乘数、被乘数,A、B的取值范围可以为任意正整数,r为模乘因子、N为模数且要求其为奇数。
第一步,判断执行条件,不符合则返回,判定条件是:N为奇数。
第二步,求位宽n’的取值:对模数N进行位扩展后的位数,且所述n’为基于Booth算法的基的二进制位数的倍数。
需要说明的是,如果该模乘运算为:由模幂运算转化得到的模乘运算循环中的任意一个模乘运算的话,那么n’可以在将模幂转化为模乘的过程中得到。
第三步,初始置零二进制中间变量P,q:P(pn′/3+2pn′/3+1pn′/3…p1p0)=0,q(qn′/3qn′/3-1…q1q0)=0。
第四步,由 N = Σ i = 0 n ′ - 1 n ′ i 2 i 得到N_LSB3,其中N_LSB3为模数N的低三位。
第五步,计算并预存储X*B,其中X分别取值:-4,-3,-2,-1,1,2,3,4。
第六步,根据Booth编码将乘数A分解为基8形式输出A=Booth_R8(A,n’)={cn′/3,cn′/3-1,cn′/3-2,…,c1,c0}。
第七步,进行以下循环:
for(i=0;i<=n’/3-1;i=i++)
{
 qi=(Pi+ci*B)mod8;//计算并存储qi
 Pi+1=(Pi+ci*B+Sel_R8(qi,N_LSB3)*N)/8;
 //计算并存储Pi+1,其中Sel_R8取值为0至7,Sel_R8*N可以在模幂转模
 //乘的第三步计算得到并存储好,在进行到本步骤时,从预存值中直接读
//取既可。
}
第八步,返回Pn′/3值。
在本实施例中,可以执行第五步的步骤:计算并预存储X*B(X分别取值:4,-3,-2,-1,1,2,3,4),从而使得在第七步计算qi和Pi+1时不需要每次都计算ci*B,而只需要通过查询读取第五步预存的相应值即可。
由上可见,根据Montgomery算法,可以将模乘运算:A*B*r-1 mod N转化为加法运算:Pi+1=(Pi+ci*B+Sel_R8(qi,N_LSB3)*N)/8的循环。
除了本实施例提供的上述方案外,也可以使用现有技术的其他技术方案来完成将模乘运算转化为加法运算的循环,在此不一一列举。
步骤103:循环计算:由模乘运算转化为各加法运算。
在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块,分别得到所述加数、被加数的各子块;各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果;再根据所述各加法处理器得到的各对应子块的运算结果,获取当前所述加数、被加数的加法运算的结果。如果加法处理器在子块的加法运算中产生了进位,则将低位块所进行加法运算产生的进位值进位到高位块所进行加法运算得到的运算结果。
假设当前的进行加法的加数、被加数分别为:1024位的大数C、D,上述分块以及计算过程可以具体如下:
如图2所示,把两个1024位的大数C、D分别等位数地分为4块C1、C2、C3、C4和D1、D2、D3、D4,每块256位。各对应子块分别相加,即C1与D1、C2与D2、C3与D3、C4与D4相加,对应的加法处理器分别为PC201、PC202、PC203、PC204,产生结果CD1、CD2、CD3、CD4和对应的进位E1、E2、E3、E4。主处理器PC200先判断E1和E3是否真的存在进位,如果存在进位,则主处理器PC200需要再次调用加法处理器PC202和PC204把进位加到相应的后一个块的相加结果中,即E1与CD2、E3与CD4,从而得到两个512位的数CD12和CD34,以及进位D12和E34。主处理器200再通过判断E12来决定是否需要调用加法处理器PC205来加上进位C12,这样就得到了两个1024位大数C与D相加的最终结果Y。
需要说明的是,在本实施例中,加法处理器PC201、PC202、PC203、PC204做256位的加法运算,根据处理器的运算能力对两个256位数据进行分块,设本发明实施例采用的处理器每次进行16位运算,则可以分成256/16=16块,即做一次256位的大数加法运算,需要进行16次带进位的加法操作。同时,加法处理器PC202、PC204对于其加数为1,被加数为256位大数的情况做了优化处理,只要加法运算不产生进位则运算结束。加法处理器PC204做512位的加法运算,其中一个加数只有1位。
上述对将加数、被加数进行分块,并分别对各自对应块进行运算进行了示例性的描述,但是在实际应用中,对加数、被加数的分块并不拘限于上述的方案,用户可以根据实际情况进行具体分块,甚至可以任意分块,只要保证分块为按照从低位到高位的顺序、等位数分块即可。
需要说明的是,本实施例中的加法处理器PC201、PC202、PC203、PC204以及主处理器PC200可以使用并行阵列处理器来实现。
按照上述的技术方案可以处理由所述模乘运算转化为加法运算的循环内的每个加法运算。
步骤104:在加法运算的循环结束后,根据加法运算的循环结果获取该模乘运算的结果。
由上可见,在本实施例中,由于在每次进行所述加法运算过程中,通过对加数、被加数进行分块处理,并由各个加法处理器并行的处理各对应子块的加法运算,根据各对应子块的运算结果,获取所述加数、被加数的加法运算的结果,能够提高各次所述加数、被加数的加法运算的速度,从而能够更快地完成加法运算的循环,而得到模乘运算的结果完成模乘运算。即应用本发明实施例的技术方案,能够提高对模乘运算的处理速度,提高处理模乘运算的效率。
另外的,还可以将本发明实施例的技术方案应用到对模幂运算的处理中:通过将待处理的模幂运算转化为模乘运算的循环,再对每个模乘运算应用本发明实施例的技术方案,由于应用本发明实施例的技术方案,能够提高对各次模乘运算的处理效率提高了,能够更快地完成模乘运算的循环得到模幂运算的结果,因此应用本发明实施例提供的技术方案能够提高处理模幂运算的效率。
另外的,如果当前的加密算法为模乘运算,即当前处理的模乘运算为由待加密数据(明文)构成的模乘运算,则还可以根据该模乘运算的结果获取加密数据(加密后的数据,密文),完成对数据的加密。如果当前的解密算法为模乘运算,即当前处理的模乘运算为由加密数据(密文)构成的模乘运算,则还可以根据该模乘运算的结果获取解密数据(解密后的数据,明文),完成对数据的解密。如果当前的加密算法为模幂运算,即当前处理的模乘运算为由待加密数据(明文)构成的模幂运算,则可以在加密过程中,将模幂运算转化成模乘运算的循环,在对各模乘运算应用本发明实施例的方法,最后得到模幂运算的结果,根据该模幂运算的结果可以获取加密数据(密文),完成对数据的加密。如果当前的加密算法为模幂运算,即当前处理的模乘运算为由加密数据(密文)构成的模幂运算,则可以在解密过程中,将模幂运算转化成模乘运算的循环,在对各模乘运算应用本发明实施例的方法,最后得到模幂运算的结果,则根据该模幂运算的结果可以获取解密数据(明文),完成对数据的解密。可见,将本实施例应用到数据加解密领域中,如果当前的加密、或解密算法中包含有模乘运算、或模幂运算,那么在加密、或解密过程中应用本发明实施例的技术方案,能够提高对数据的加密、或解密速度,提高处理数据的吞吐量。
实施例2:
如图3所示为本实施例的一种基于模乘运算的数据处理装置的结构示意图,如图是,该装置可以包括:
第一映射单元301,用于将由待处理的模乘运算转化为加法运算的循环。该具体转换方案可以参见本发明实施例1中步骤102中的相应描述。
分块单元302,用于在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块,分别得到所述加数、被加数的各对应子块。其具体分块方法可以参见本发明实施例1中步骤103中的相应描述。
至少两个加法处理器303,所述各加法处理器303,用于在每次进行所述加数、和所述被加数的加法运算过程中,对所述分块单元302获取的所述加数、被加数的各对应子块分别进行加法运算,获取各对应子块的运算结果,其具体分块方法可以参见本发明实施例1中步骤103中的相应描述。
本实施例中的加法处理器303可以为本发明实施例1中的加法处理器PC201、PC202、PC203、PC204。
主处理器304,用于执行循环控制,以及根据所述各加法处理器获取的所述各对应子块的运算结果获取最终运算结果。
在本实施例中,主处理器304执行的循环控制包括具体包括:
控制第一映射单元301转化得到的所述加法运算的循环:循环控制单元302根据所述加法循环的循环次数,控制所述加法运算的循环。
主处理器304执行的根据各加法处理器303获取的所述各对应子块的运算结果获取最终运算结果包括:
主处理器304根据各加法处理器303的运算结果,获取所述加数、被加数的加法运算的结果;
主处理器304在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述模乘运算的结果。
在本实施中,主处理器304、以及各加法处理器303可以使用并行阵列处理器实现。
由上可见,在本发明实施例中,采用图3所示的装置,装置中的第一映射单元301将待处理的模乘运算转化为加法运算的循环,再对所转化成的各加法运算,使用分块单元302将加数、被加数各等分成若干个子块,在分别由各加法处理器分别对各对应子块进行加法运算,在各加法处理对各对应子块进行加法运算后,由主处理器304根据各加法处理器的运算结果得到各次循环的加法运算结果,加法运算循环结束后可以得到模乘运算的结果。由于各加法处理器303并行地处理各对应子块的加法运算,主处理器304根据各对应子块的运算结果,计算所述加数、被加数的加法运算,每次加法运算的处理速度提高了,那么完成该加法循环的速度相应能够提高,即获取模乘运算的结果的速度提高。可见应用本发明实施例的装置能够提高对模乘运算的处理速度,提高了处理模乘运算的效率。
另外的,可以将图3所示结构的装置应用于数据加解密的处理,如果当前待处理的模幂运算为:由待处理的数据构成的模乘运算,该待处理的数据为:待加密数据、或待解密数据;
主处理器304执行的根据各加法处理器303获取的所述各对应子块的运算结果获取最终运算结果还包括:
根据所述模乘运算的结果获取处理后的数据,所述处理后的数据为:解密数据、或加密数据。
将图3所示结构的装置应用于包含模乘运算的数据加解密处理时,由于对加法处理的速度、效率提高了,从而能够提高对模乘运算的处理速度、效率,从而提高对数据加解密的处理效率,提高数据处理的吞吐量。
另外,如图4所示,本发明实施例的装置还可以包括:
第二映射单元401,用于将待处理的模幂运算转化为模乘运算的循环,将各模乘运算传递至所述第一映射301,以供所述第一映射单元301将所述模乘运算转化为所述加法运算的循环。
相应的,主处理器402执行的循环控制还包括:
控制第二映射单元401转化得到的所述模乘运算的循环;
主处理402执行的根据各加法处理器303获取的各对应子块的运算结果获取最终运算结果还包括:
在模乘运算的循环结束后,根据模乘运算的循环结果获取所述模幂运算的结果。
可见,如图4所示的装置,还可以应用于处理模幂运算,并且由于处理模乘运算的速度提高了,相应的能够更快地完成模乘运算的循环从而得到模幂运算的结果,即应用如图4所示的装置,能够提高处理模幂运算的速度。
另外的,可以将图4所示结构的装置应用于数据加解密的处理,比如RSA加解密。
如果当前待处理的模幂运算为:由待处理的数据构成的模幂运算,该待处理的数据为:待加密数据、或待解密数据。
主处理器402执行的根据各加法处理器303获取的所述各对应子块的运算结果获取最终运算结果还包括:
根据所述模幂运算的结果获取处理后的数据,所述处理后的数据为:解密数据、或加密数据。
可见,将图4所示结构的装置应用于包含模幂运算的数据加解密处理时,由于对加法处理的速度、效率提高了,从而能够提高对模乘运算的处理速度,从而提高模幂运算的处理速度,从而提高对数据加解密的处理效率,提高数据处理的吞吐量。
如图5所示,本发明实施例的数据处理装置还可以包括:
计算单元501,用于计算X*N、r2modN,其中X为不大于(2n-1)的自然数,2n为Booth算法的基,N为模数,n’为:对模数N进行位扩展后的位数,且n’为基于Booth算法的基的二进制位数的倍数。
存储单元502,用于存储数据,所述数据包括:所述计算单元307获取的X*N、r2modN。
查询单元503,用于在运算过程中,每需用到所述X*N、r2modN时,查询所述存储单元502获取所存储的X*N、r2modN。查询单元503可以与各个加法处理器303相连接。
应用图5所示的装置,可以将运算处理过程中频繁用到的参数(X*N、r2modN)预先计算并存储在存储单元502中,在每次计算需要时,只需要有查询单元503查询存储单元502读取即可,而无需在每次需要时都进行计算,能够减少计算的次数,有利于提高运算效率。
需要说明的是,在本实施例中,图4中的第一映射单元301、第二映射单元401既可以独立设计,也可以集成设计;图5中的计算单元501、以及主处理器304既可以独立设计,也可以集成设计;或者图5中的第一映射单元301、第二映射单元401、计算单元501、主处理器304既可以独立设计,也可以集成设计。
另外的,在加解密的应用中,比如:RSA加解密的应用中,需要并行运行多个数据加解密处理,应用本发明实施例的技术方案,可以设置多个数据处理的装置601(该数据处理装置601可以为:如图3、图4或图5所示的数据处理的装置)配置构成由多个数据处理构成的并列加解密处理器阵列(如图6所示),用户可以同时调用多个装置进行数据加解密处理,提高处理数据的吞吐量。
需要说明的是,在本发明实施例中的数据处理装置可以为由硬件构成的独立的设备或硬件模块,亦可以为以软件的形式存储在一个计算机可读存储介质中的功能模块。
实施例3:
如图7所示为本发明实施例提供的一种基于模乘运算的数据加解密方法的流程示意图,如图示,该方法包括:
步骤701:获取待处理的数据。
获取待处理的数据,其中所述待处理的数据为待加密的数据、或待解密的数据。
步骤702:获取由待处理的数据构成的模幂运算。
设当前的待处理数据为M,模数为N,幂指数为E,则获取由所述待处理的数据构成的模幂运算为:ME*rmodN,其中r为映射因子。
步骤703:将该模幂运算转化为模乘运算的循环。
可以根据现有技术的各种技术方案将所述模幂运算转化为模乘运算的循环。可以参见实施例1中步骤101中的相应描述。
步骤703:将各模幂运算转化为模乘运算的循环。
可以参见实施例1中的步骤102中的相应描述。
步骤704:循环计算:由模乘运算转化为各加法运算。
可以参见实施例1中的步骤103中的相应描述。
步骤705:在模乘运算的循环结束后,得到模幂运算的结果,根据模幂运算的结果获取处理后的数据:加密数据、或解密数据。
得到模幂运算的处理结果后,去掉模幂结构中的映射因子r得到处理后的数据(即期望的数据,即:加密后的数据、或解密后的数据)。
由上可见,应用本发明实施例的装置,由于在每次进行所述加法运算过程中,通过对加数、被加数进行分块处理,并由各个加法处理器并行的处理各对应子块的加法运算,提高了各次加法运算的速度,从而能够更快地得到模乘运算的结果,更快的完成每次模乘运算,从而能够更快的完成模乘运算的循环得到模幂运算的结果,从而可以更快地根据模幂运算的结果得到处理后的数据。可见应用本实施例的技术方案可以提高数据加解密处理的速度、能够提高处理数据的吞吐量。
实施例4:
图8为一种基于模乘运算的数据加解密方法的流程示意图,包括步骤:
步骤801:获取待处理的数据。
获取待处理的数据,其中所述待处理的数据为待加密的数据、或待解密的数据。
步骤802:获取由所述待处理的数据构成的模乘运算。
设当前的待处理数据为M,模数为N,则由所述待处理的数据构成的模乘运算可以为:M*Cmod N,其中C为预定的模乘运算参数。
步骤803:将模乘运算转化为加法运算的循环。
可以参见实施例1中的步骤102中的相应描述。
步骤804:循环计算:由模乘运算转化为各加法运算。
可以参见实施例1中的步骤103中的相应描述。
步骤805:在加法运算的循环结束后,得到模乘运算的结果,再根据模乘运算的结果获取处理后的数据:加密数据、或解密数据。
由上可见,应用本发明实施例的装置,由于在每次进行所述加法运算过程中,通过对加数、被加数进行分块处理,并由各个加法处理器并行的处理各对应子块的加法运算,提高了各次加法运算的速度,从而能够更快地得到模乘运算的结果,从而可以更快地根据模乘运算的结果得到处理后的数据。可见应用本实施例的技术方案可以提高数据加解密处理的速度、能够提高处理数据的吞吐量。
以上对本发明实施例提供的技术方案进行了详细介绍,本文中应用了具体个例对本发明实施例的原理以及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明实施例的方法以及原理;同时,对于本领域的一半技术人员,依据本发明实施例,在具体实施方式以及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (8)

1.一种基于模乘运算的数据加解密处理的方法,其特征是,包括:
获取由待处理的数据构成的模幂运算,其中所述待处理的数据为:待加密的数据、或待解密的数据;
将所述模幂运算转化为模乘运算的循环;
将所述模乘运算转化为加法运算的循环;
在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果;当所述加法处理器在子块的加法运算中产生了进位时,将低位块所进行加法运算产生的进位值进位到高位块所进行加法运算得到的运算结果中;
在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述模幂运算的结果;
根据所述模幂运算的结果获取处理后的数据,所述处理后的数据为:加密数据、或解密数据。
2.根据权利要求1所述的方法,其特征是,在将所述待处理的模幂运算转化为模乘运算的循环之前,还包括:
计算并存储X*N、r2modN,
其中,所述X为不大于(2n-1)的自然数,所述2n为Booth算法的基,所述N为模数,所述r等于2n’,所述n’为:对所述模数N进行位扩展后的位数,且所述n’为基于Booth算法的基的二进制位数的倍数;
在将所述待处理的模幂运算转化为模乘运算的循环过程中,或者在将所述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N、r2modN,读取所存储的X*N、r2modN代入计算。
3.一种基于模乘运算的数据加解密处理的方法,其特征是,包括:
获取由待处理的数据构成的模乘运算,其中所述待处理的数据为:待加密的数据、或待解密的数据;
将所述模乘运算转化为加法运算的循环;
在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果;当所述加法处理器在子块的加法运算中产生了进位时,将低位块所进行加法运算产生的进位值进位到高位块所进行加法运算得到的运算结果中;
在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述模乘运算的结果;
根据所述模乘运算的结果获取处理后的数据,所述处理后的数据为:加密数据、或解密数据。
4.根据权利要求3所述的方法,其特征是,在将所述待处理的模乘运算转化为加法运算的循环之前,还包括:
计算并存储X*N,其中所述X为不大于(2n-1)的自然数,所述2n为Booth算法的基,所述N为模数,
在将所述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N,读取所存储的X*N代入计算。
5.一种基于模乘运算的数据加解密处理的装置,其特征是,所述装置包括:
获取由待处理的数据构成的模幂运算的模块,其中所述待处理的数据为:待加密的数据、或待解密的数据;
将所述模幂运算转化为模乘运算的循环的模块;
将所述模乘运算转化为加法运算的循环的模块;
在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果,当所述加法处理器在子块的加法运算中产生了进位时,将低位块所进行加法运算产生的进位值进位到高位块所进行加法运算得到的运算结果中的模块;
在所述模乘运算的循环结束后,根据所述模乘运算的循环结果获取所述模幂运算的结果的模块;
根据所述模幂运算的结果获取处理后的数据的模块,所述处理后的数据为:加密数据、或解密数据。
6.根据权利要求5所述的装置,其特征是,还包括:
在将所述待处理的模幂运算转化为模乘运算的循环之前,计算并存储X*N、r2modN的模块;
及在将所述待处理的模幂运算转化为模乘运算的循环过程中,或者在将所述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N、r2modN,读取所存储的X*N、r2modN代入计算的模块;
其中,所述X为不大于(2n-1)的自然数,所述2n为Booth算法的基,所述N为模数,所述r等于2n’,所述n’为:对所述模数N进行位扩展后的位数,且所述n’为基于Booth算法的基的二进制位数的倍数。
7.一种基于模乘运算的数据加解密处理的装置,其特征是,所述装置包括:
获取由待处理的数据构成的模乘运算的模块,其中所述待处理的数据为:待加密的数据、或待解密的数据;
将所述模乘运算转化为加法运算的循环的模块;
在每次进行所述加法运算过程中,将所述加法运算中的加数、被加数分别按照从低位到高位的顺序、等位数地分块分别得到所述加数、被加数的各对应子块,各加法处理器分别对所述加数、被加数的各对应子块进行加法运算获取各对应子块的运算结果,根据所述各对应子块的运算结果获取所述加数、被加数的加法运算的结果,当所述加法处理器在子块的加法运算中产生了进位时,将低位块所进行加法运算产生的进位值进位到高位块所进行加法运算得到的运算结果中的模块;
在所述加法运算的循环结束后,根据所述加法运算的循环结果获取所述模乘运算的结果的模块;
根据所述模乘运算的结果获取处理后的数据的模块,所述处理后的数据为:加密数据、或解密数据。
8.根据权利要求7所述的装置,其特征是,还包括:
在将所述待处理的模乘运算转化为加法运算的循环之前,计算并存储X*N的模块;
及在将所述待处理的模乘运算转化为加法运算的循环过程中,当需要用到所述X*N,读取所存储的X*N代入计算的模块;
其中所述X为不大于(2n-1)的自然数,所述2n为Booth算法的基,所述N为模数。
CN2007100329409A 2007-12-27 2007-12-27 基于模乘运算的数据加解密处理的方法及装置 Expired - Fee Related CN101216754B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007100329409A CN101216754B (zh) 2007-12-27 2007-12-27 基于模乘运算的数据加解密处理的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007100329409A CN101216754B (zh) 2007-12-27 2007-12-27 基于模乘运算的数据加解密处理的方法及装置

Publications (2)

Publication Number Publication Date
CN101216754A CN101216754A (zh) 2008-07-09
CN101216754B true CN101216754B (zh) 2010-08-11

Family

ID=39623193

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007100329409A Expired - Fee Related CN101216754B (zh) 2007-12-27 2007-12-27 基于模乘运算的数据加解密处理的方法及装置

Country Status (1)

Country Link
CN (1) CN101216754B (zh)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102681818A (zh) * 2011-03-09 2012-09-19 上海华虹集成电路有限责任公司 基于ucps加密算法的128比特模加电路及控制方法
CN102207847B (zh) * 2011-05-06 2013-12-04 广州杰赛科技股份有限公司 基于蒙哥马利模乘运算的数据加解密处理方法及装置
CN102508632B (zh) * 2011-09-30 2014-10-29 飞天诚信科技股份有限公司 一种在嵌入式系统中实现乘法运算的方法和装置
CN102411489B (zh) * 2011-10-18 2014-06-04 飞天诚信科技股份有限公司 一种嵌入式系统中的数据处理方法及装置
CN103780381B (zh) * 2012-12-17 2017-06-27 深圳市证通电子股份有限公司 基于高基脉动阵列的蒙哥马利算法的实现装置及方法
CN103092688B (zh) * 2012-12-28 2015-11-18 飞天诚信科技股份有限公司 一种在嵌入式系统中生成坐标点的方法
CN106023040B (zh) * 2016-06-03 2021-09-14 奥奈斯特(宁波)软件技术有限公司 一种积分管理系统
CN112100673A (zh) * 2020-09-29 2020-12-18 深圳致星科技有限公司 用于隐私计算的联邦学习加速器和rsa交集计算方法
CN112199707B (zh) * 2020-10-28 2022-12-27 支付宝(杭州)信息技术有限公司 一种同态加密中的数据处理方法、装置以及设备
CN112733161A (zh) * 2020-12-30 2021-04-30 深圳致星科技有限公司 用于联邦学习密文运算的装置及方法
CN112865954B (zh) * 2021-04-26 2021-07-06 深圳致星科技有限公司 用于Paillier解密的加速器、芯片及系统

Also Published As

Publication number Publication date
CN101216754A (zh) 2008-07-09

Similar Documents

Publication Publication Date Title
CN101216754B (zh) 基于模乘运算的数据加解密处理的方法及装置
Bernstein et al. High-speed high-security signatures
CN102207847B (zh) 基于蒙哥马利模乘运算的数据加解密处理方法及装置
CN109039640B (zh) 一种基于rsa密码算法的加解密硬件系统及方法
KR101269737B1 (ko) 암호 처리 장치 및 암호 처리 방법과 프로그램을 기록한 컴퓨터 판독 가능한 기록매체
US7308469B2 (en) Method for generating secure elliptic curves using an arithmetic-geometric mean iteration
JP4783382B2 (ja) モンゴメリ法用乗算剰余計算装置
CN1841443B (zh) 计算方法和计算设备
CN110351087A (zh) 流水线型的蒙哥马利模乘运算方法及计算装置
KR100442218B1 (ko) 몽고메리의 알고리즘을 이용한 멱승 잉여 연산기
Peris-Lopez et al. Cryptographically secure pseudo-random bit generator for RFID tags
CN113032848B (zh) 一种数据处理方法和用于数据处理的芯片
CN101911009B (zh) 用于以签名方案进行非对称加密的对策方法和设备
CN107992283A (zh) 一种基于降维实现有限域乘法的方法和装置
US7050579B1 (en) Cryptographic methods and apparatus using word-wise montgomery multiplication
KR100457177B1 (ko) 유한체 상의 두 원소의 곱을 구하는 직렬-병렬 곱셈기
Moon et al. Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications
JP2004258141A (ja) モンゴメリ乗算剰余の多倍長演算のための演算装置
Li et al. Research in fast modular exponentiation algorithm based on FPGA
CN101809638A (zh) 运算方法和运算装置
CN1392472A (zh) Vlsi用的蒙格玛丽模乘算法及智能卡模乘器的vlsi结构
CN111092718A (zh) 加密方法、装置及电子设备
Morales-Sandoval et al. On the hardware design of an elliptic curve cryptosystem
Al-Khaleel et al. An elliptic curve cryptosystem design based on FPGA pipeline folding
CN1525307A (zh) 一种模乘运算电路和一种运用该模乘运算电路的加密方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100811

Termination date: 20201227