CN109614072B - 对素数取模、素域中模乘运算的实现方法和装置 - Google Patents

对素数取模、素域中模乘运算的实现方法和装置 Download PDF

Info

Publication number
CN109614072B
CN109614072B CN201811142273.4A CN201811142273A CN109614072B CN 109614072 B CN109614072 B CN 109614072B CN 201811142273 A CN201811142273 A CN 201811142273A CN 109614072 B CN109614072 B CN 109614072B
Authority
CN
China
Prior art keywords
bwm
adder
modulo
integer
bits
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.)
Active
Application number
CN201811142273.4A
Other languages
English (en)
Other versions
CN109614072A (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.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Advanced New Technologies 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 Advanced New Technologies Co Ltd filed Critical Advanced New Technologies Co Ltd
Priority to CN201811142273.4A priority Critical patent/CN109614072B/zh
Publication of CN109614072A publication Critical patent/CN109614072A/zh
Application granted granted Critical
Publication of CN109614072B publication Critical patent/CN109614072B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

本说明书提供一种对素数取模的实现方法,用于计算A mod P,其中A是最大位数为BA的二进制数,P为BP位二进制数素数、并且P满足
Figure DDA0001816067260000011
Figure DDA0001816067260000012
Nm=(BP+mod(BP,BWm))/BWm;所述方法包括:将ai输入Nm个BWm位的取模加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure DDA0001816067260000013
ai为A的第i*BWm位到第((i+1)*BWm‑1)位;Na=(BA+mod(BA,BWm))/BWm;σt和st,n满足
Figure DDA0001816067260000014
Figure DDA0001816067260000015
st,n为St的第n*BWm位到第((n+1)*BWm‑1)位,st,n或者等于某个ai或者等于0;将加权和SumS对P取模。

Description

对素数取模、素域中模乘运算的实现方法和装置
技术领域
本说明书涉及数据处理技术领域,尤其涉及一种对素数取模的实现方法和装置、一种素域中模乘运算的实现方法和装置。
背景技术
取模运算是计算机领域十分重要的运算方式,其中对素数取模在哈希算法、加解密算法等场景中都有着广泛的应用。在对时效要求较高的场合,经常采用专门的硬件来更快的完成这些算法,如基于FPGA(Field Programmable Gate Array,可编程逻辑阵列)、或ASIC(Application Specific Integrated Circuit,专用集成电路)的硬件加速卡。
随着互联网金融的发展和普及,对网络安全服务的要求越来越高,加解密算法中使用的二进制位数越来越大。而取模运算的位数越大,硬件完成运算所需的时间越长,对网络服务时效有着不容忽视的不利影响。
发明内容
有鉴于此,本说明书提供一种对素数取模的实现方法,用于计算A mod P,其中A是最大位数为BA的二进制数,P为BP位二进制数素数、并且P满足
Figure GDA0004199272480000011
Figure GDA0004199272480000012
m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述方法包括:
将ai输入Nm个BWm位的取模加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure GDA0004199272480000013
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足
Figure GDA0004199272480000021
Figure GDA0004199272480000022
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;
将加权和SumS对P取模。
本说明书提供的一种素域中模乘运算的实现方法,用于计算(C*D)mod P,其中C、D为所述素域中的元素;P为所述素域的特征、为BP位二进制数、并且P满足
Figure GDA0004199272480000023
Nm=(BP+mod(BP,BWm))/BWm;m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述方法包括:
采用乘法器阵列和乘积加法器阵列,计算C与D的乘积A;
将ai输入Nm个BWm位的加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure GDA0004199272480000024
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;BA=2*BP;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足/>
Figure GDA0004199272480000025
Figure GDA0004199272480000026
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;
将加权和SumS对P取模。
本说明书还提供了一种对素数取模的实现装置,用于计算A mod P,其中A是最大位数为BA的二进制数,P为BP位二进制数素数、并且P满足
Figure GDA0004199272480000027
Nm=(BP+mod(BP,BWm))/BWm;m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述装置包括:
加权和运算单元,用于将ai输入Nm个BWm位的取模加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure GDA0004199272480000028
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足/>
Figure GDA0004199272480000031
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;
取模运算单元,用于将加权和SumS对P取模。
本说明书提供的一种素域中模乘运算的实现装置,用于计算(C*D)mod P,其中C、D为所述素域中的元素,P为所述素域的特征;P为BP位二进制数且P满足
Figure GDA0004199272480000032
Nm=(BP+mod(BP,BWm))/BWm;m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述装置包括:
乘法运算单元,用于采用乘法器阵列和乘积加法器阵列,计算C与D的乘积A;
加权和运算单元,用于将ai输入Nm个BWm位的加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure GDA0004199272480000033
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;BA=2*BP;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足/>
Figure GDA0004199272480000034
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;
取模运算单元,用于将加权和SumS对P取模。
本说明书提供的一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述对素数取模的实现方法所述的步骤。
本说明书提供的一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行上述web访问实现方法所述的步骤。
本说明书提供的一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述对素数取模的实现方法所述的步骤。
本说明书还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述应用在终端上的web访问的实现方法所述的步骤。
由以上技术方案可见,本说明书的实施例中,对满足
Figure GDA0004199272480000041
Figure GDA0004199272480000042
的素数P,计算Ns个Nm*BWm位的加数项St的加权和
Figure GDA0004199272480000043
其中St及其σt基于A的第i*BWm位到第((i+1)*BWm-1)位ai构造,使得σt和st,n满足/>
Figure GDA0004199272480000044
计算SumS mod P即可得到A对P取模运算结果;由于SumS的二进制位数接近P的位数而通常远小于实际应用中A的位数,以SumS进行取模运算极大的加快了取模运算的速度,降低了使用大位数除法器导致的资源占用和延迟。
附图说明
图1是本说明书实施例一中一种对素数取模的实现方法的流程图;
图2是本说明书实施例二中一种素域中模乘运算的实现方法的流程图;
图3是本说明书实施例二中一种乘法器阵列的输入输出示意图;
图4是本说明书应用示例中一种素域中实现模乘运算的FPGA结构示意图;
图5是运行本说明书实施例的设备的一种硬件结构图;
图6是本说明书实施例中一种对素数取模的实现装置的逻辑结构图;
图7是本说明书实施例中一种素域中模乘运算的实现装置的逻辑结构图。
具体实施方式
一些素数具体这样的特性:大于该素数的二进制整位数对该素数取模的结果,等于若干个小于该素数的二进制整位数的加权和对该素数取模,并且权值为整数。换言之,具备上述特性的BP位二进制数素数P,满足式1:
Figure GDA0004199272480000045
式1中,BWm为自然数;Nm=(BP+mod(BP,BWm))/BWm;m为0或者正整数;n是取值范围为从0到(Nm-1)的整数;对n的每个取值,ωNm+m,n为整数。对任意一个m,2(Nm+m)*BWm为大于素数P的二进制整位数;
Figure GDA0004199272480000058
Figure GDA0004199272480000059
2n*BWm为小于素数P的二进制整位数。当m取值为0、1、以及任意一个其他正整数时,每个2(Nm+m)*BWm对P取模,都可以表示为Nm个2n*BWm的加权和对P取模。
对最大位数为BA位的二进制数A,令Na=(BA+mod(BA,BWm))/BWm;对取值范围为从0到的(Na-1)的整数i,将A的第i*BWm位到第((i+1)*BWm-1)位记为ai(即ai∈[0,2BWm-1]),当BA≥BP时,Na≥Nm,A可以表示为式2:
Figure GDA0004199272480000051
则可以得到:
Figure GDA0004199272480000052
设B为Nm*BWm位的二进制数,并且B≡A mod P,bn为B的第n*BWm位到第((n+1)*BWm-1)位(即bn∈[0,2BWm-1]),则
Figure GDA0004199272480000053
由于对从Nm到(Na-1)的任意整数k,根据式1,
Figure GDA0004199272480000054
Figure GDA0004199272480000055
从式3可以得出式4:
Figure GDA0004199272480000056
由于ωk,n为整数,对具备上述特性的素数P,可以按照式4从ai计算得出各个bn,通过求解B mod P来得到A mod P,从而将取模运算的位数从BA位降低到接近于Nm*BWm位,以加快取模运算的速度。
因此,本说明书的实施例提出一种新的对素数取模的实现方法、和一种新的素域中模乘运算的实现方法,对于满足式1的素数P,提取A的第i*BWm位到第((i+1)*BWm-1)位ai,以ai为基础构造Ns个Nm*BWm位的St和St的权值σt,使得σt和St的第n*BWm位到第((n+1)*BWm-1)位st,n满足
Figure GDA0004199272480000057
通过对St的加权和SumS对P取模得到A mod P的运算结果,从而减小了取模运算的位数,在绝大多数实际应用场景中能够极大的加快取模运算的速度,降低资源占用和延迟。
本说明书的实施例可以运行在任何具有计算和存储能力的设备上,如手机、平板电脑、PC(Personal Computer,个人电脑)、笔记本、服务器等设备;还可以由运行在两个或两个以上设备的逻辑节点来实现本说明书实施例中的各项功能。
本说明书的实施例一中,对素数取模的实现方法的流程如图1所示。实施例一的方法用来通过硬件求解最大位数为BA的二进制数A(即A的取值范围为从0到
Figure GDA0004199272480000067
对满足式1的BP位二进制数素数P的取模运算结果。
步骤110,将ai输入Nm个BWm位的取模加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure GDA0004199272480000061
其中,Ns为自然数,t为从1到Ns的自然数,σt为整数。
如前所述,本说明书的实施例中,通过求解B mod P来得到A mod P。由于式4中σt,n为整数,可以以BWm位的加法器作为取模加法器(为区别实施例二中用于乘法运算中的加法器,将用于取模运算的加法器称为取模加法器),按照式4将ai作为取模加法器的输入项来得到bn,通过Nm个BWm位的独立的级联取模加法器即可得到B。
具体而言,可以构造Ns个Nm*BWm位的加数项St和St的权值σt。对从0到(Nm-1)的每个整数n,将St的第n*BWm位到第((n+1)*BWm-1)位记为st,n,构造Ns个St和St的权值σt的约束条件是:每个st,n或者是ai或者是0,σt为整数,并且σt和st,n满足式5:
Figure GDA0004199272480000062
在采用Nm个BWm位取模加法器来计算Ns个加数项St的加权和
Figure GDA0004199272480000063
Figure GDA0004199272480000064
时,对从0到(Nm-1)的每个整数n,从低位起第(n+1)个取模加法器的输入是st,n(即或者是某个ai,或者是0),该第(n+1)个取模加法器计算的加权和是/>
Figure GDA0004199272480000065
等于/>
Figure GDA0004199272480000066
即式4中的bn。而Nm个BWm位取模加法器计算的加权和SumS=B。
可见,换个角度看,构造加数项St及其权值σt是一种能够并行计算出b0到bNm-1,从而得到B的处理方式。对于某个满足式1的素数,可以有很多种构造St及σt的具体方式,本说明书的实施例不做限定,只要满足式5即可。
可以以采用并行进位链的BWm位加法器来组成Nm个独立的级联取模加法器,从而加快计算SumS的速度。
需要说明的是,在采用Nm个BWm位取模加法器来计算SumS时,通常需要在最高位的加法器之前采用另外的加法器来处理可能出现的进位或借位,可参照现有技术实现,不再赘述。
在一个例子中,满足式1的256位素数P256=fffffffe ffffffff ffffffffffffffff ffffffff 00000000 ffffffff ffffffff,A512为512位二进制数,BWm为32,Nm为8,Na为16。对P256,以下等式成立:
P256=2256-2224-296+264-1
2256≡(2224+296-264+1)mod P256
2288≡(2224+2128-264+232+1)mod P256
2320≡(2224+2160+232+1)mod P256
2352≡(2224+2192+296+232+1)mod P256
2384≡(2*2224+2128+296+232+1)mod P256
2416≡(2*2224+2160+2128+2*296-264+232+2*1)mod P256
2448≡(2*2224+2192+2160+2*2128+296-264+2*232+2*1)mod P256
2480≡(3*2224+2192+2*2160+2128+296+2*232+2*1)mod P256
Figure GDA0004199272480000071
设/>
Figure GDA0004199272480000072
Figure GDA0004199272480000073
并且B256≡A512 mod P256,则可以得到:
b7=a7+3*a15+2*a14+2*a13+2*a12+a11+a101+a9+a8
b6=a6+a15+a14+a11
b5=a5+2*a15+a14+a13+a10
b4=a4+a15+2*a14+a13+a12+a9
b3=a3+a15+a14+2*a13+a12+a11+a8
b2=a2-a14-a13-a9-a8
b1=a1+a15+2*a14+a13+a12+a11+a1o+a9
b0=a0+2*a15+2*a14+2*a13+a12+a11+a10+a9+a8
按照约束条件:每个st,n或者是ai或者是0,σt为整数,并且σt和st,n满足式5,来构造加数项St及其权值σt。一种满足约束条件的St及其权值σt如表1和式6所示,14个St由a0到a15按照表1中对应于St的行串接而成。
Figure GDA0004199272480000081
表1
SumS=S1+S2+2*S3+2*S4+2*S5+S6+S7+S8+S9+2*S10-S11-S12-S13-S14 式6
在按照式6计算SumS时,以32位的加法器作为取模加法器,采用8个独立的级联取模加法器。在向取模加法器输入加数项St时,按照表1中的排列将组成该St的ai输入到用于计算对应位数的取模加法器中;对σt为正整数的St,可以将该St加σt次;对σt为负整数的St,可以将该St减σt次。计算完毕后,得到的SumS=B256
步骤120,将加权和SumS对P取模。
在绝大多数应用场景中,A的二进制位数BA远大于的P二进制位数BP。由于SumS的位数Nm*BWm与BP相当接近,用SumS代替A进行取模运算能够极大的加快取模运算的速度。
取模运算通常采用除法器来进行。当Nm*BWm与Bp的差距很小时,本步骤中也可以采用减法运算来对P取模,即从SumS中重复减去P直至差值小于P,从而可以采用加法器或减法器来得到取模结果。
本说明书的实施例二中,素域中模乘运算的实现方法的流程如图2所示。实施例二的方法用来通过硬件求解特征为素数P、并且P满足式1的素域中的模乘运算结果。
特征为素数P的素域FP包括P个元素,FP=(0,1,…,P-1)。素域中元素的乘法是整数的模P乘法,即若C、D属于FP,则C*D=(C*D)mod P。由于C或D的取值范围为从0到(P-1),C和D均为最大位数为BP的二进制数。
步骤210,采用乘法器阵列和乘积加法器阵列,计算C与D的乘积A。
实际应用场景中通常BP大于单个乘法器的位宽,而C与D的乘积A的最大位宽BA=2*BP,通常也大于单个加法器的位宽,在这种情况下可以采用乘法器阵列和乘积加法器阵列(为区别用于取模运算中的加法器,将用于乘法运算的加法器称为乘积加法器),来计算A=C*D。
具体而言,设每个乘法器的输入位宽为BWpC×BWpD,BWpC和BWpD均为正整数;则乘法器阵列可以由Nc×Nd个这样的乘法器组成,其中Nc=(BP+mod(BP,BWpc))/BWpc,Nd=(BP+mod(BP,BWpD))/BWpD
设每个乘积加法器的位宽为BWm,乘积加法器阵列可以由Na个这样的独立的级联乘积加法器组合而成。
设u为从0到(Nc-1)的整数,v为从0到(Nd-1)的整数,可以用(u,v)来作为某个乘法器在乘法器阵列中的序号。将C的第u*BWpc位到第((u+1)*BWpc-1)位记为cu(即
Figure GDA0004199272480000091
),将D的第v*BWpD位到第((v+1)*BWpD-1)位记为dv(即/>
Figure GDA0004199272480000092
),则可以把cu和dv输入第(u,v)个乘法器,该乘法器的输出为部分积PPu,v,PPu,v=cu*dv,PPu,v的最大位宽为(BWpC+BWpD)。一种乘法器阵列的输入输出示意图如图3所示。Nc×Nd个部分积PPu,v可以同时计算得出,并行度为Nc×Nd。
将Nc×Nd个PPu,v输入乘积加法器阵列,Na个乘积加法器的输出为A,每个乘积加法器的输出为一个ai。由Na个独立的级联乘积加法器构成的乘积加法器阵列共有Na*BWm个输入位,将每个乘法器输出的部分积PPu,v输入到乘积加法器阵列从低位起的第(u*BWpC+v*BWpD)位到第((u+1)*BWpC+(v+1)*BWpD-1)位,由乘积加法器阵列按照相对应的输入位对Nc×Nd个PPu,v求和,乘积加法器阵列的输出即为A,从低位起第i个乘积加法器的输出为ai
可以以采用并行进位链的加法器来组成Na个独立的级联乘积加法器,从而加快计算A的速度。
步骤220,将ai输入Nm个BWm位的加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure GDA0004199272480000101
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;BA=2*BP;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足/>
Figure GDA0004199272480000102
Figure GDA0004199272480000103
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0。
步骤230,将加权和SumS对P取模。
实施例二中的步骤220和步骤230分别与实施例一的步骤110和步骤120相同,对步骤220和步骤230的详细描述请参见实施例一,不再重复。
需要说明的是,本说明书的实施例一和实施例二既可以采用可编程逻辑阵列FPGA来实现加法器、减法器、和/或除法器等硬件,也可以采用集成电路ASIC来实现上述硬件,还可以采用其他的方式,不做限定。
可见,本说明书的各个实施例中,对于满足式1的素数P,通过计算Ns个Nm*BWm位的加数项St的加权和
Figure GDA0004199272480000104
再计算SumS mod P即可得到A对P取模运算结果,其中St及其σt基于ai构造并且使得σt和st,n满足式5。由于SumS的二进制位数接近P的位数而通常远小于实际应用中A的位数,本说明书的实施例减小了取模运算的位数,极大的加快了取模运算的速度,降低了使用大位数除法器导致的资源占用和延迟。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书的一个应用示例中,一种FPGA加速卡用来进行SM2算法的解密和生成数字签名。SM2是2010年12月17日发布的椭圆曲线公钥密码算法,SM2采用256位素域P256=fffffffe ffffffff ffffffff ffffffff ffffffff 00000000 ffffffff ffffffff下,椭圆曲线y2=x3+ax+b。在FPGA加速卡中需要实现素域P256中的模乘运算,即计算(C*D)modP256,其中C和D均为素域P256中的元素,其最大位数为256。
一种素域P256中实现模乘运算的FPGA结构如图4所示。
采用160个DSP(Digital Signal Processing,数字信号处理)乘法器来组成乘法器阵列,每个DSP乘法器的输入位宽分别为26位和17位(即BWpc=26,BWpD=17,Nc=10,Nd=16)。以MULu,v来表示第(u,v)个DSP乘法器,将把cu和dv输入MULu,v,得到MULu,v的输出PPu,v=cu*dv,PPu,v的最大位宽为43位;其中u为从0到9的整数,v为从0到15的整数,cu为C的第u*26位到第(u*26+25)位,dv为D的第v*17位到第(v*17+16)位。
将16个位宽为32位的独立的级联加法器组成乘积加法器阵列(即BWm=32,Na=16),将160个PPu,v分别输入到乘积加法器阵列从低位起的第(u*26+v*17)位到第(u*26+v*17+42)位。以ADDpi来表示乘积加法器阵列中从低位起的第i个加法器,其输出为ai,其中i为从0到15的整数,ai为A=C*D的第i*32位到第(i*32+31)位。ADDpi为采用并行进位链的加法器。
将8个位宽为32位的独立的级联加法器组成取模加法器阵列(即BWm=32,Nm=16),以ADDmn来表示取模加法器阵列中从低位起的第n个加法器,其中n为从0到7的整数,ADDmn对应于表1中第n*32位到第(n*32+31)位的一列。按照表1中的各列将ai输入到ADDmn,分别组成14个St,其中t为从1到14的整数。用取模加法器阵列按照式6计算14个St的加权和SumS。ADDmn为采用并行进位链的加法器。
将SumS输入取模运算器MOD,对素数P256取模,输出即为(C*D)mod P256
与上述流程实现对应,本说明书的实施例还提供了一种对素数取模的实现装置,和一种素域中模乘运算的实现装置。这两种装置均可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为逻辑意义上的装置,是通过所在设备的CPU(Central Process Unit,中央处理器)将对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,除了图5所示的CPU、内存以及存储器之外,上述两种装置所在的设备通常还包括用于进行无线信号收发的芯片等其他硬件,和/或用于实现网络通信功能的板卡等其他硬件。
图6所示为本说明书实施例提供的一种对素数取模的实现装置,用于计算A modP,其中A是最大位数为BA的二进制数,P为BP位二进制数素数、并且P满足
Figure GDA0004199272480000121
Nm=(BP+mod(BP,BWm))/BWm;m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述装置包括加权和运算单元和取模运算单元,其中:加权和运算单元用于将ai输入Nm个BWm位的取模加法器,计算Ns个Nm*BWm位的加数项St的加权和/>
Figure GDA0004199272480000122
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足/>
Figure GDA0004199272480000123
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;取模运算单元用于将加权和SumS对P取模。
可选的,所述取模运算单元具体用于:采用减法运算,将加权和SumS对P取模。
可选的,所述取模加法器为采用并行进位链的加法器。
图7所示为本说明书实施例提供的一种素域中模乘运算的实现装置,用于计算(C*D)mod P,其中C、D为所述素域中的元素,P为所述素域的特征;P为BP位二进制数且P满足
Figure GDA0004199272480000131
Nm=(BP+mod(BP,BWm))/BWm;m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述装置包括乘法运算单元、加权和运算单元和取模运算单元,其中:乘法运算单元用于采用乘法器阵列和乘积加法器阵列,计算C与D的乘积A;加权和运算单元用于将ai输入Nm个BWm位的加法器,计算Ns个Nm*BWm位的加数项St的加权和/>
Figure GDA0004199272480000132
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;BA=2*BP;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足/>
Figure GDA0004199272480000133
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;取模运算单元用于将加权和SumS对P取模。
可选的,所述乘法器阵列包括Nc×Nd个输入位宽为BWpC×BWpD的乘法器;BWpC和BWpD均为正整数;Nc=(BP+mod(BP,BWpC))/BWpC,Nd=(BP+mod(BP,BWpD))/BWpD;所述乘积加法器阵列包括Na个位宽为BWm的乘积加法器;所述乘法运算单元包括部分积计算子单元和部分积累加子单元,其中:部分积计算子单元用于将cu和dv输入第(u,v)个乘法器,得到部分积PPu,v;u为从0到(Nc-1)的整数;v为从0到(Nd-1)的整数;cu为C的第u*BWpC位到第((u+1)*BWpC-1)位;dv为D的第v*BWpD位到第((v+1)*BWpD-1)位;部分积累加子单元用于将Nc×Nd个PPu,v分别输入乘积加法器阵列,每个乘积加法器的输出为一个ai,Na个乘积加法器的输出为A。
可选的,所述取模运算单元具体用于:采用减法运算,将加权和SumS对P取模。
可选的,所述取模加法器为采用并行进位链的加法器;和/或,所述乘积加法器为采用并行进位链的加法器。
本说明书的实施例提供了一种计算机设备,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中对素数取模的实现方法的各个步骤。对对素数取模的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机设备,该计算机设备包括存储器和处理器。其中,存储器上存储有能够由处理器运行的计算机程序;处理器在运行存储的计算机程序时,执行本说明书实施例中素域中模乘运算的实现方法的各个步骤。对素域中模乘运算的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中对素数取模的实现方法的各个步骤。对对素数取模的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
本说明书的实施例提供了一种计算机可读存储介质,该存储介质上存储有计算机程序,这些计算机程序在被处理器运行时,执行本说明书实施例中素域中模乘运算的实现方法的各个步骤。对素域中模乘运算的实现方法的各个步骤的详细描述请参见之前的内容,不再重复。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书的实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书的实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

Claims (18)

1.一种对素数取模的实现方法,用于计算A mod P,其中A是最大位数为BA的二进制数,P为BP位二进制数素数,BA≥BP,并且P满足
Figure FDA0004199272470000011
Figure FDA0004199272470000012
Nm=(BP+mod(BP,BWm))/BWm;m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述方法包括:
将ai输入Nm个BWm位的取模加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure FDA0004199272470000013
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足
Figure FDA0004199272470000014
Figure FDA0004199272470000015
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;所述取模加法器是位宽为BWm的硬件;
将加权和SumS对P取模。
2.根据权利要求1所述的方法,所述将加权和SumS对P取模,包括:采用减法运算,将加权和SumS对P取模。
3.根据权利要求1所述的方法,所述取模加法器为采用并行进位链的加法器。
4.一种素域中模乘运算的实现方法,用于计算(C*D)mod P,其中C、D为所述素域中的元素;P为所述素域的特征、为BP位二进制数、并且P满足
Figure FDA0004199272470000016
Nm=(BP+mod(BP,BWm))/BWm;m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述方法包括:
采用乘法器阵列和乘积加法器阵列,计算C与D的乘积A;
将ai输入Nm个BWm位的加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure FDA0004199272470000017
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;BA=2*BP;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足/>
Figure FDA0004199272470000021
Figure FDA0004199272470000022
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;所述加法器是位宽为BWm的硬件;
将加权和SumS对P取模。
5.根据权利要求4所述的方法,所述乘法器阵列包括Nc×Nd个输入位宽为BWpC×BWpD的乘法器;BWpC和BWpD均为正整数;Nc=(BP+mod(BP,BWpC))/BWpC,Nd=(BP+mod(BP,BWpD))/BWpD
所述乘积加法器阵列包括Na个位宽为BWm的乘积加法器;
所述采用乘法器阵列和乘积加法器阵列,计算C与D的乘积A,包括:
将cu和dv输入第(u,v)个乘法器,得到部分积PPu,v;u为从0到(Nc-1)的整数;v为从0到(Nd-1)的整数;cu为C的第u*BWpC位到第((u+1)*BWpC-1)位;dv为D的第v*BWpD位到第((v+1)*BWpD-1)位;
将Nc×Nd个PPu,v分别输入乘积加法器阵列,每个乘积加法器的输出为一个ai,Na个乘积加法器的输出为A。
6.根据权利要求4所述的方法,所述将加权和SumS对P取模,包括:采用减法运算,将加权和SumS对P取模。
7.根据权利要求4所述的方法,所述加法器为采用并行进位链的加法器;和/或,所述乘积加法器为采用并行进位链的加法器。
8.一种对素数取模的实现装置,用于计算A mod P,其中A是最大位数为BA的二进制数,P为BP位二进制数素数,BA≥BP,并且P满足
Figure FDA0004199272470000023
Figure FDA0004199272470000024
Nm=(BP+mod(BP,BWm))/BWm;m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述装置包括:
加权和运算单元,用于将ai输入Nm个BWm位的取模加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure FDA0004199272470000025
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足/>
Figure FDA0004199272470000031
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;所述取模加法器是位宽为BWm的硬件;
取模运算单元,用于将加权和SumS对P取模。
9.根据权利要求8所述的装置,所述取模运算单元具体用于:采用减法运算,将加权和SumS对P取模。
10.根据权利要求8所述的装置,所述取模加法器为采用并行进位链的加法器。
11.一种素域中模乘运算的实现装置,用于计算(C*D)mod P,其中C、D为所述素域中的元素,P为所述素域的特征;P为BP位二进制数且P满足
Figure FDA0004199272470000032
Nm=(BP+mod(BP,BWm))/BWm;m为非负整数;n为从0到(Nm-1)的整数;ωNm+m,n为整数;BWm为自然数;所述装置包括:
乘法运算单元,用于采用乘法器阵列和乘积加法器阵列,计算C与D的乘积A;
加权和运算单元,用于将ai输入Nm个BWm位的加法器,计算Ns个Nm*BWm位的加数项St的加权和
Figure FDA0004199272470000033
ai为A的第i*BWm位到第((i+1)*BWm-1)位;i为从0到(Na-1)的整数;Na=(BA+mod(BA,BWm))/BWm;BA=2*BP;Ns为自然数;t为从1到Ns的自然数;σt为整数,σt和st,n满足/>
Figure FDA0004199272470000034
st,n为St的第n*BWm位到第((n+1)*BWm-1)位,st,n或者等于某个ai或者等于0;所述加法器是位宽为BWm的硬件;
取模运算单元,用于将加权和SumS对P取模。
12.根据权利要求11所述的装置,所述乘法器阵列包括Nc×Nd个输入位宽为BWpC×BWpD的乘法器;BWpC和BWpD均为正整数;Nc=(BP+mod(BP,BWpC))/BWpC,Nd=(BP+mod(BP,BWpD))/BWpD
所述乘积加法器阵列包括Na个位宽为BWm的乘积加法器;
所述乘法运算单元包括:
部分积计算子单元,用于将cu和dv输入第(u,v)个乘法器,得到部分积PPu,v;u为从0到(Nc-1)的整数;v为从0到(Nd-1)的整数;cu为C的第u*BWpC位到第((u+1)*BWpC-1)位;dv为D的第v*BWpD位到第((v+1)*BWpD-1)位;
部分积累加子单元,用于将Nc×Nd个PPu,v分别输入乘积加法器阵列,每个乘积加法器的输出为一个ai,Na个乘积加法器的输出为A。
13.根据权利要求11所述的装置,所述取模运算单元具体用于:采用减法运算,将加权和SumS对P取模。
14.根据权利要求11所述的装置,所述加法器为采用并行进位链的加法器;和/或,所述乘积加法器为采用并行进位链的加法器。
15.一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求1到3任意一项所述的方法。
16.一种计算机设备,包括:存储器和处理器;所述存储器上存储有可由处理器运行的计算机程序;所述处理器运行所述计算机程序时,执行如权利要求4到7任意一项所述的方法。
17.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1到3任意一项所述的方法。
18.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求4到7任意一项所述的方法。
CN201811142273.4A 2018-09-28 2018-09-28 对素数取模、素域中模乘运算的实现方法和装置 Active CN109614072B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811142273.4A CN109614072B (zh) 2018-09-28 2018-09-28 对素数取模、素域中模乘运算的实现方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811142273.4A CN109614072B (zh) 2018-09-28 2018-09-28 对素数取模、素域中模乘运算的实现方法和装置

Publications (2)

Publication Number Publication Date
CN109614072A CN109614072A (zh) 2019-04-12
CN109614072B true CN109614072B (zh) 2023-06-27

Family

ID=66001877

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811142273.4A Active CN109614072B (zh) 2018-09-28 2018-09-28 对素数取模、素域中模乘运算的实现方法和装置

Country Status (1)

Country Link
CN (1) CN109614072B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112737778B (zh) * 2020-12-30 2022-08-12 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) 数字签名生成、验证方法及装置、电子设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1703912A (zh) * 2002-09-17 2005-11-30 弗拉迪米尔·切佩尔科维奇 具有高压缩率和最小必需资源的快速codec
JP2009296948A (ja) * 2008-06-13 2009-12-24 Olympus Corp Pcr用プライマー、標的核酸の検出方法及び標的生体分子の検出方法
CN102646033A (zh) * 2011-02-21 2012-08-22 中国科学院研究生院 模乘运算的实现方法和装置
CN106775581A (zh) * 2015-10-05 2017-05-31 阿尔特拉公司 定序算术运算操作的方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1703912A (zh) * 2002-09-17 2005-11-30 弗拉迪米尔·切佩尔科维奇 具有高压缩率和最小必需资源的快速codec
JP2009296948A (ja) * 2008-06-13 2009-12-24 Olympus Corp Pcr用プライマー、標的核酸の検出方法及び標的生体分子の検出方法
CN102646033A (zh) * 2011-02-21 2012-08-22 中国科学院研究生院 模乘运算的实现方法和装置
CN106775581A (zh) * 2015-10-05 2017-05-31 阿尔特拉公司 定序算术运算操作的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Quantum arithmetic with the quantum Fourier transform;Ruiz-Perez L;《Quantum Information Processing》;1-14 *

Also Published As

Publication number Publication date
CN109614072A (zh) 2019-04-12

Similar Documents

Publication Publication Date Title
WO2020253234A1 (zh) 实现隐私保护的数据同态加解密方法及装置
US10778410B2 (en) Homomorphic data encryption method and apparatus for implementing privacy protection
CA2614120C (en) Elliptic curve point multiplication
Jalali et al. Towards optimized and constant-time CSIDH on embedded devices
Fritzmann et al. Efficient and flexible low-power NTT for lattice-based cryptography
KR101154695B1 (ko) 암호 처리 연산 장치
Albrecht et al. Implementing RLWE-based schemes using an RSA co-processor
Onuki et al. (Short Paper) a faster constant-time algorithm of CSIDH keeping two points
WO2017079237A1 (en) Homomorphic encryption with optimized parameter selection
WO2017079226A1 (en) Homomorphic encryption with optimized encoding
US11164484B2 (en) Secure computation system, secure computation device, secure computation method, and program
US11646880B2 (en) Secret computation method, secret computation system, secret computation apparatus, and program
WO2020075797A1 (ja) 秘密右シフト演算システム、秘密除算システム、それらの方法、秘密計算装置、およびプログラム
WO2020071187A1 (ja) 秘密シグモイド関数計算システム、秘密ロジスティック回帰計算システム、秘密シグモイド関数計算装置、秘密ロジスティック回帰計算装置、秘密シグモイド関数計算方法、秘密ロジスティック回帰計算方法、プログラム
US8755517B2 (en) Method for generic-point parallel elliptic curve scalar multiplication
CN109614072B (zh) 对素数取模、素域中模乘运算的实现方法和装置
US9042543B2 (en) Method for arbitrary-precision division or modular reduction
Azarderakhsh et al. Common subexpression algorithms for space-complexity reduction of Gaussian normal basis multiplication
CN113467752B (zh) 用于隐私计算的除法运算装置、数据处理系统及方法
Baena et al. Efficient ZHFE key generation
WO2019009180A1 (ja) 秘密計算システム、秘密計算装置、秘密計算方法、プログラム、および記録媒体
US20200349419A1 (en) Neural network arithmetic processing device and neural network arithmetic processing method
CN114868175A (zh) 最终幂计算装置、配对运算装置、加密处理装置、最终幂计算方法和最终幂计算程序
KR100946256B1 (ko) 다정도 캐리 세이브 가산기를 이용한 듀얼필드상의확장성있는 몽고매리 곱셈기
JP7318743B2 (ja) 秘密計算装置、秘密計算方法、およびプログラム

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

TA01 Transfer of patent application right
GR01 Patent grant
GR01 Patent grant