CN113467754A - 一种基于分解约简的格加密模乘运算方法及架构 - Google Patents
一种基于分解约简的格加密模乘运算方法及架构 Download PDFInfo
- Publication number
- CN113467754A CN113467754A CN202110819402.4A CN202110819402A CN113467754A CN 113467754 A CN113467754 A CN 113467754A CN 202110819402 A CN202110819402 A CN 202110819402A CN 113467754 A CN113467754 A CN 113467754A
- Authority
- CN
- China
- Prior art keywords
- reduction
- multiplier
- decomposition
- adder
- intermediate value
- 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.)
- Granted
Links
- 230000009467 reduction Effects 0.000 title claims abstract description 199
- 238000000354 decomposition reaction Methods 0.000 title claims abstract description 96
- 238000000034 method Methods 0.000 title claims abstract description 22
- 238000004364 calculation method Methods 0.000 claims abstract description 16
- 238000012545 processing Methods 0.000 abstract description 3
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000010586 diagram Methods 0.000 description 8
- 238000005457 optimization Methods 0.000 description 6
- 238000009795 derivation Methods 0.000 description 3
- 238000011946 reduction process Methods 0.000 description 3
- 230000009466 transformation Effects 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 238000004088 simulation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 229960001948 caffeine Drugs 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 150000001875 compounds Chemical class 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- RYYVLZVUVIJVGH-UHFFFAOYSA-N trimethylxanthine Natural products CN1C(=O)N(C)C(=O)C2=C1N=CN2C RYYVLZVUVIJVGH-UHFFFAOYSA-N 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/722—Modular multiplication
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Complex Calculations (AREA)
Abstract
本申请属于数据密码处理技术领域,从降低格加密计算的复杂度角度出发,提供一种基于分解约简的格加密模乘运算方法及架构,所述方法包括:限定有限域的特征模素数q的形式,输入模素数q、被乘数X和乘数Y,对被乘数X和乘数Y以基数2N进行分解,再将X和Y乘积的展开式按基数22N进行分解后直接取模约简得到第一约简中间值,对第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值,再根据第二约简中间值的大小将其调整到模q有限域中,本申请通过分解约简,有效减少了中间数据的数据位宽,提出了更低计算复杂度和计算延迟的格加密模乘运算方法,并设计了相应的模乘运算架构,而且本申请的模乘运算方法和架构不失通用性。
Description
技术领域
本申请涉及数据密码处理技术领域,具体涉及一种基于分解约简的格加密模乘运算方法及架构。
背景技术
随着后量子密码学(Post Quantum Cryptography,PQC)和同态加密(HomomorphicEncryption,HE)的发展,基于晶格的密码学(Lattice based cryptography,LBC,以下简称格加密)越来越受到人们的关注。由于格加密抗量子计算攻击的能力以及在安全性和复杂性上取得的良好折衷,使其有望成为标准的加密方案类别,但因为格加密的应用多为计算密集型,需要提高计算效率以便用于更实际的应用。
格加密的计算效率瓶颈通常是有限域内的多项式乘法,而有限域内的多项式乘法通常采用数论变换进行计算,在数论变化中,模乘计算占据了大量的计算复杂度,因此优化模乘算法对整个格加密系统的应用具有重要意义。
目前,针对格加密的模乘计算,现有的优化方案普遍分为两类,第一类采用蒙哥马利取模算法或者巴约特约简算法进行通用的算法优化,第二类通过设定模素数或其他参数的形式进行算法优化,例如,可以通过使用改进的巴约特约简算法,以更少的操作数实现模乘,要求其中一个输入为已知常数;以及可以使用数论变换,采用一种词级蒙哥马利约简算法,对素数有一定要求,并且因为其中的数据长度和内部计算单元数是根据参数具体选择的,无法参数化;还可以针对形式的素数,提出一种基于卡拉楚巴算法的高效乘法器,约简过程中的乘法被移位操作和加法所代替,从而实现低延迟。
然而,上述优化方案或是没有进一步挖掘模数本身的特点,造成较高的计算复杂度和计算延迟;或是对模素数建立非常严格的筛选条件或者仅针对某一两个固定的模素数进行算法优化,从而缺少通用性。
发明内容
本申请提供一种基于分解约简的格加密模乘运算方法及架构,以提供一种更低复杂度的格加密模乘运算方法及架构。
本申请第一方面提供一种基于分解约简的格加密模乘运算方法,所述一种基于分解约简的格加密模乘运算方法包括:
选取形式为22N-δ的模素数q,其中为2N为模素数q的数据位宽,0<δ<2N-2;从模q有限域中选取被乘数X和乘数Y,其中X和Y为数据位宽为2N比特的无符号整数,并且0≤X,Y<q;输入模素数q、被乘数X和乘数Y;
对所述被乘数X和所述乘数Y以基数2N进行分解,得到x1、x0、y1和y0,所述x1、所述x0、所述y1和所述y0分别为X除以2N的商、X除以2N余数、Y除以2N的商和Y除以2N的余数;
将所述被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简,获得第一约简中间值;
对所述第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值;
比较所述第二约简中间值和q的大小,得到模乘运算结果,若第二约简中间值大于或等于q,所述模乘运算结果为第二约简中间值减去q的结果值;若第二约简中间值小于q,所述模乘运算结果为第二中间约简值。
可选的,所述将所述被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简,获得第一约简中间值的步骤,具体为:
建立第一约简中间值的表达式,所述第一约简中间值的表达式是通过对被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简得到,第一约简中间值的表达式为:
Z_0=z0+z1×2N+z2×δ;
式中,z0=x0y0,z1=(x1+x0)(y1+y0)-x0y0-x1y1,z2=x1y1;
根据第一约简中间值的表达式对x1、x0、y1和y0进行乘法和加法运算,得到所述第一约简中间值。
可选的,所述对所述第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值的步骤,具体为:
将第一约简中间值进行分解后直接取模约简,得到第二约简中间值的表达式,所述第二约简中间值的表达式为:
Z_1=z'0+z1'×δ+z'2×δ×2N;
式中,z'0=Z_0mod22N,z1'=Z_0/22Nmod2N,z'2=Z_0/23N;
根据第二约简中间值的表达式计算所述第二约简中间值。
本申请第二方面提供一种基于分解约简的格加密模乘运算架构,所述一种基于分解约简的格加密模乘运算架构,包括数据输入单元、整数分解单元、第一分解约简单元、第二分解约简单元和判定输出单元;
所述数据输入单元,用于选取形式为22N-δ的模素数q,其中为2N为模素数q的数据位宽,0<δ<2N-2;从模q有限域中选取被乘数X和乘数Y,其中X和Y为数据位宽为2N比特的无符号整数,并且0≤X,Y<q;输入模素数q、被乘数X和乘数Y;
所述整数分解单元,用于对所述被乘数X和所述乘数Y以基数2N进行分解,得到x1、x0、y1和y0,所述x1、所述x0、所述y1和所述y0分别为X除以2N的商、X除以2N余数、Y除以2N的商和Y除以2N的余数;
所述第一分解约简单元,用于将所述被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简,获得第一约简中间值;
所述第二分解约简单元,用于对所述第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值;
所述判定输出单元,用于比较所述第二约简中间值和q的大小,若第二约简中间值大于或等于q,将第二约简中间值减去q的结果值作为模乘运算结果;若第二约简中间值小于q,将第二中间约简值作为模乘运算结果。
可选的,所述第一分解约简单元包括乘积展开模块;
所述乘积展开模块包括第一乘法器、第二乘法器、第三乘法器、第一加法器、第二加法器和第三加法器,第三乘法器的两个输入端分别与第一加法器输出端和第二加法器输出端相连,第三加法器的三个输入端分别与第一乘法器输出端、第二乘法器输出端和第三乘法器输出端相连;
所述第一乘法器,用于计算x0和y0的乘积;
所述第二乘法器,用于计算x1和y1的乘积;
所述第一加法器,用于计算x1和x0的和;
所述第二加法器,用于计算y1和y0的和;
所述第三乘法器,用于计算第一加法器的输出结果和第二加法器的输出结果的乘积;
所述第三加法器,用于计算第一乘法器输出结果的负值、第二乘法器输出结果的负值和第三乘法器输出结果的和。
可选的,所述第一分解约简单元还包括第一约简计算模块;
所述第一约简计算模块包括第一移位器、第一乘法模块和第四加法器,所述第一移位器的一个输入端与第三加法器的输出端相连,所述第一乘法模块的一个输入端与第二乘法器的输出端相连,所述第四加法器的三个输入端分别与第一乘法器输出端、第一移位器输出端和第一乘法模块输出端相连;
所述第一移位器,用于计算第三加法器输出结果和2N的乘积;
所述第一乘法模块,用于计算第二乘法器输出结果和δ的乘积;
所述第四加法器,用于计算第一乘法器输出结果、第一移位器输出结果和第一乘法模块输出结果的和,所述第四加法器输出结果为所述第一约简中间值。
可选的,所述第一乘法模块包括第四乘法器、第三移位器和第七加法器,所述第四乘法器一个输入端与第一乘法模块输入端相连且另一输入端输入(δ+1)/2n,其中为n为2的幂次方且qmod2n=1,所述第三移位器的输入端与第四乘法器输出端相连,所述第七加法器两个输入端分别与第三移位器和第一乘法模块输入端相连,所述第七加法器的输出端与第一乘法模块输出端相连;
所述第四乘法器,用于计算第二乘法器输出结果和(δ+1)/2n的乘积;
所述第三移位器,用于计算第四乘法器输出结果和2n的乘积;
所述第七加法器,用于计算第三移位器输出结果和第一乘法模块输入结果负值的和。
可选的,所述第二分解约简单元包括第二分解模块;
所述第二分解模块用于将第四加法器输出结果按基数22N进行分解,得到第一约简中间值分解结果,所述第一约简中间值分解结果包括z0'、z1'和z2',其中Z_0为第四加法器输出结果,z'0=Z_0mod22N,z′1=Z_0/22Nmod2N,z'2=Z_0/23N。
可选的,所述第二分解约简单元还包括第二约简计算模块,所述第二约简计算模块包括第二乘法模块、第三乘法模块、第二移位器和第五加法器,所述第二移位器的输入端与第三乘法模块相连,所述第五加法器的两个输入端分别与第二乘法模块和第二移位器相连,且另一输入端输入z0';
所述第二乘法模块,用于计算z1'和δ的乘积;
所述第三乘法模块,用于计算z2'和δ的乘积;
所述第二移位器,用于计算第三乘法模块输出结果和2N的乘积;
所述第五加法器,用于计算第二乘法模块输出结果、第二移位器输出结果和z0'的和。
可选的,所述第三乘法模块包括第二多路选择器,所述第二多路选择器用于预存储0、1、2和3分别乘以δ的乘积,第二多路选择器的输入端输入z2'的值;
若z2'为0,则所述第二多路选择器输出0;
若z2'为1,则所述第二多路选择器输出δ;
若z2'为2,则所述第二多路选择器输出2δ;
若z2'为3,则所述第二多路选择器输出3δ。
由上述技术方案可知,本申请实施例提供的一种基于分解约简的格加密模乘运算方法及架构,限定模素数q的形式,输入模素数q、被乘数X和乘数Y,对被乘数X和乘数Y以基数2N进行分解,再将X和Y乘积的展开式按基数22N进行分解后直接取模约简得到第一约简中间值,对第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值,再根据第二约简中间值的大小将其调整到模q有限域中,本申请通过分解约简,有效减少了中间数据的数据位宽,提出了更低计算复杂度和计算延迟的格加密模乘运算方法,并设计了相应的模乘运算架构,而且本申请的模乘运算方法和架构不失通用性。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的基于分解约简的格加密模乘运算架构的架构示意图a。
图2是本申请实施例提供的基于分解约简的格加密模乘运算架构的架构示意图b。
图3是本申请实施例提供的所述第一乘法模块的架构示意图。
图4是本申请实施例提供的所述第二乘法模块的架构示意图。
图5是本申请实施例提供的所述第三乘法模块的架构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。
本申请实施例提供一种基于分解约简的格加密模乘运算方法,所述一种基于分解约简的格加密模乘运算方法包括步骤1至步骤5。
步骤1,选取形式为22N-δ的模素数q,其中为2N为模素数q的数据位宽,0<δ<2N-2;从模q有限域中选取被乘数X和乘数Y,其中X和Y为数据位宽为2N比特的无符号整数,并且0≤X,Y<q;输入模素数q、被乘数X和乘数Y;
本申请实施例首先对有限域的特征数模素数q进行一定形式的限定,需要说明的是,本申请实施例对模素数q的限制并不严格,所以不失通用性。在此基础上再进行模q有限域中的乘法运算,即输入模素数q、被乘数X和乘数Y,其中X和Y为数据位宽为2N比特的无符号整数,并且0≤X,Y<q,计算XY mod q。
步骤2,对所述被乘数X和所述乘数Y以基数2N进行分解,得到x1、x0、y1和y0,所述x1、所述x0、所述y1和所述y0分别为X除以2N的商、X除以2N余数、Y除以2N的商和Y除以2N的余数。
本申请实施例以2N为基数将所述被乘数X和所述乘数Y分解为:
X=x1×2N+x0;
Y=y1×2N+y0;
其中,x1、x0、y1和y0分别为X除以2N的商、X除以2N余数、Y除以2N的商和Y除以2N的余数。
需要说明的是,本申请实施例中,关于2的幂的乘除以及模运算都可以通过简单的位运算来实现。
步骤3,将所述被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简,获得第一约简中间值。
S301,建立第一约简中间值的表达式,所述第一约简中间值的表达式是通过对被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简得到,第一约简中间值的表达式为:
Z_0=z0+z1×2N+z2×δ;
式中,z0=x0y0,z1=(x1+x0)(y1+y0)-x0y0-x1y1,z2=x1y1。
关于所述第一约简中间值的表达式详细推导步骤如下所示,首先将所述被乘数X和所述乘数Y的乘积展开,其展开式为:
Z=z0+z1×2N+z2×22N;
式中,Z为X和Y的乘积展开式,z0=x0y0,z1=(x1+x0)(y1+y0)-x0y0-x1y1,z2=x1y1。
由于模素数q为22N-δ,则有22N mod q=δ,因此不计算Z的值,而是直接构造Z modq,将Z按基数2N分解后直接取模约简,得到第一约简中间值的表达式,其中,将Z按基数2N分解后直接取模约简的算法推导步骤为:
其中,设Z_0=z0+z1×2N+z2×δ,为第一约简中间值的表达式。
S302,根据第一约简中间值的表达式对x1、x0、y1和y0进行乘法和加法运算,得到所述第一约简中间值。
关于第一约简中间值的数据位宽,可作如下推导:
再由于0<δ<2N-2,则
因此,第一约简中间值的最大数据位宽为3N+2,比起4N比特长的Z减少约25%,可见,本申请实施例通过初步的分解约简降低了计算的复杂度。
进一步的,当对n点多项式进行数论变换时,模素数还需要满足q mod 2n=1且n为2的幂次方,因此,本申请实施例对模素数进行相应的进一步限定,则
本申请实施例提供一种mul_δ模型,所述mul_δ模型用于计算输入值与δ的乘积,首先第一步先计算输入值与δ'的乘积,其中再将输入值与δ'的乘积乘以2n后减去输入值,获得mul_δ模型输出结果。在第一约简中间值表达式Z_0=z0+z1×2N+z2×δ中,利用mul_δ模型计算z2×δ,以此可以通过更小位宽的乘法和加法实现z2和δ乘积运算。
步骤4,对所述第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值。
S401,将第一约简中间值进行分解后直接取模约简,得到第二约简中间值的表达式,所述第二约简中间值的表达式为:
Z_1=z'0+z′1×δ+z'2×δ×2N;
式中,z'0=Z_0mod22N,z′1=Z_0/22Nmod2N,z'2=Z_0/23N。
关于所述第二约简中间值的表达式详细推导步骤如下所示,本申请实施例再次利用分解约简的思路,按基数22N对第一约简中间值进行分解,获得分解结果表达式,所述分解结果表达式为:
z'0+z′1×22N+z'2×23N;
式中,z'0=Z_0mod22N,z′1=Z_0/22Nmod2N,z'2=Z_0/23N。
对分解结果表达式直接取模约简,获得第二约简中间值的表达式,所述第二约简中间值的表达式为:
Z_1=z'0+z′1×δ+z'2×δ×2N;
S402,根据第二约简中间值的表达式计算所述第二约简中间值。
关于第二约简中间值的数据大小,可作如下推导:
z0'∈[0,22N-1],z1'∈[0,2N-1],z2'∈[0,22-1];
再由于0<δ<2N-2,则
由此可见,经过步骤4低复杂度的分解约简过程,最后得到的第二约简中间值满足0≤Z_1<2q,因此,接下来将第二约简中间值调整到模q有限域中即可得模乘运算结果。
进一步的,可以利用mul_δ模型计算z1'×δ。
步骤5,比较所述第二约简中间值和q的大小,得到模乘运算结果,若第二约简中间值大于或等于q,所述模乘运算结果为第二约简中间值减去q的结果值;若第二约简中间值小于q,所述模乘运算结果为第二中间约简值。
本申请实施例在经过步骤3和步骤4两个低复杂度的分解约简过程后,第二约简中间值满足0≤Z_1<2q,因此,将第二约简中间值调整到模q有限域中即可得XYmodq运算结果。
与前述一种基于分解约简的格加密模乘运算方法的实施例相对应,本申请还提供了一种基于分解约简的格加密模乘运算架构的实施例,参见图1,为本申请实施例提供的一种基于分解约简的格加密模乘运算架构的架构示意图a,参见图2,为本申请实施例提供的一种基于分解约简的格加密模乘运算架构的架构示意图b,所述一种基于分解约简的格加密模乘运算架构包括数据输入单元、整数分解单元、第一分解约简单元、第二分解约简单元和判定输出单元。
所述数据输入单元,用于选取形式为22N-δ的模素数q,其中为2N为模素数q的数据位宽,0<δ<2N-2;从模q有限域中选取被乘数X和乘数Y,其中X和Y为数据位宽为2N比特的无符号整数,并且0≤X,Y<q;输入模素数q、被乘数X和乘数Y;
所述整数分解单元,用于对所述被乘数X和所述乘数Y以基数2N进行分解,得到x1、x0、y1和y0。
所述第一分解约简单元,用于将所述被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简,获得第一约简中间值。
所述第一分解约简单元包括乘积展开模块;所述乘积展开模块包括第一乘法器、第二乘法器、第三乘法器、第一加法器、第二加法器和第三加法器,第三乘法器的两个输入端分别与第一加法器输出端和第二加法器输出端相连,第三加法器的三个输入端分别与第一乘法器输出端、第二乘法器输出端和第三乘法器输出端相连。
所述第一乘法器,用于计算x0和y0的乘积。
所述第二乘法器,用于计算x1和y1的乘积。
所述第一加法器,用于计算x1和x0的和。
所述第二加法器,用于计算y1和y0的和。
所述第三乘法器,用于计算第一加法器的输出结果和第二加法器的输出结果的乘积。
所述第三加法器,用于计算第一乘法器输出结果的负值、第二乘法器输出结果的负值和第三乘法器输出结果的和。
所述第一分解约简单元还包括第一约简计算模块。
所述第一约简计算模块包括第一移位器、第一乘法模块和第四加法器,所述第一移位器的一个输入端与第三加法器的输出端相连,所述第一乘法模块的一个输入端与第二乘法器的输出端相连,所述第四加法器的三个输入端分别与第一乘法器输出端、第一移位器输出端和第一乘法模块输出端相连。
所述第一移位器,用于计算第三加法器输出结果和2N的乘积。
所述第一乘法模块,用于计算第二乘法器输出结果和δ的乘积。
所述第四加法器,用于计算第一乘法器输出结果、第一移位器输出结果和第一乘法模块输出结果的和,所述第四加法器输出结果为所述第一约简中间值。
进一步的,如图3所示,为本申请实施例提供的第一乘法模块的架构示意图,所述第一乘法模块包括第四乘法器、第三移位器和第七加法器,所述第四乘法器一个输入端与第一乘法模块输入端相连且另一输入端输入(δ+1)/2n,其中为n为2的幂次方且qmod2n=1,所述第三移位器的输入端与第四乘法器输出端相连,所述第七加法器两个输入端分别与第三移位器和第一乘法模块输入端相连,所述第七加法器的输出端与第一乘法模块输出端相连。
所述第四乘法器,用于计算第二乘法器输出结果和(δ+1)/2n的乘积。
所述第三移位器,用于计算第四乘法器输出结果和2n的乘积。
所述第七加法器,用于计算第三移位器输出结果和第一乘法模块输入结果负值的和。
因此,利用所述第一乘法模块可以通过更小位宽的乘法和加法实现第二乘法器输出结果和δ的乘积。
所述第二分解约简单元,用于对所述第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值。
所述第二分解约简单元包括第二分解模块。
所述第二分解模块用于将第四加法器输出结果按基数22N进行分解,得到第一约简中间值分解结果,所述第一约简中间值分解结果包括z0'、z1'和z2',其中Z_0为第四加法器输出结果,z'0=Z_0mod22N,z′1=Z_0/22Nmod2N,z'2=Z_0/23N。
所述第二分解约简单元还包括第二约简计算模块,所述第二约简计算模块包括第二乘法模块、第三乘法模块、第二移位器和第五加法器,所述第二移位器的输入端与第三乘法模块相连,所述第五加法器的两个输入端分别与第二乘法模块和第二移位器相连,且另一输入端输入z0'。
所述第二乘法模块,用于计算z1'和δ的乘积。
所述第三乘法模块,用于计算z2'和δ的乘积。
所述第二移位器,用于计算第三乘法模块输出结果和2N的乘积。
所述第五加法器,用于计算第二乘法模块输出结果、第二移位器输出结果和z0'的和。
进一步的,如图4所示,为本申请实施例提供的第二乘法模块的架构示意图,所述第二乘法模块包括第五乘法器、第四移位器和第八加法器,所述第五乘法器一个输入端与第二乘法模块输入端相连且另一输入端输入(δ+1)/2n,其中为n为2的幂次方且qmod2n=1,所述第四移位器的输入端与第五乘法器输出端相连,所述第八加法器两个输入端分别与第四移位器和第二乘法模块输入端相连,所述第八加法器的输出端与第二乘法模块输出端相连。
所述第五乘法器,用于计算第二乘法模块输入结果和(δ+1)/2n的乘积。
所述第四移位器,用于计算第五乘法器输出结果和2n的乘积。
所述第八加法器,用于计算第四移位器输出结果和第二乘法模块输入结果负值的和。
进一步的,如图5所示,为本申请实施例提供的第三乘法模块的架构示意图,所述第三乘法模块包括第二多路选择器,所述第二多路选择器用于预存储0、1、2和3分别乘以δ的乘积,第二多路选择器的输入端输入z2'的值。
若z2'为0,则所述第二多路选择器输出0。
若z2'为1,则所述第二多路选择器输出δ。
若z2'为2,则所述第二多路选择器输出2δ。
若z2'为3,则所述第二多路选择器输出3δ。
所述判定输出单元,包括第六加法器和第一多路选择器,判定输出单元用于比较所述第二约简中间值和q的大小,若第二约简中间值大于或等于q,将第二约简中间值减去q的结果值作为模乘运算结果;若第二约简中间值小于q,将第二中间约简值作为模乘运算结果。
为了直观地体现本申请技术方案的优势,本申请实施例将本申请技术方案与现有最优的格加密器实现作比较,在相同的FPGA板上实现了已发表的最新工作的模乘法器和利用本申请架构的模乘法器。所有的模乘法器都设置为在一个周期内完成,没有进行流水线处理。在参数选择方面,选择了格加密方案中常用的两组参数:(1)(2)n=1024。在实现平台方面,选择在Xilinx Vivado 2016.2上仿真,在Xilinx VIRTEX-7FPGA xc7vx690tffg1761-2的开发板上进行实现。最终结果如表1所示,为几种格加密乘法器的对比。
表1几种格加密乘法器的对比
由表1可以看出,基于本申请架构的模乘法器在牺牲较少查找表资源的基础上,具有最快的速度和最少的DSP消耗。对于n=4096的情况,基于本申请架构的乘法器有1.13-1.89倍的加速比;当n=1024时,基于本申请架构的乘法器有1.12-1.68倍的加速比。
本申请实施例提供的一种基于分解约简的格加密模乘运算方法及架构,限定模素数q的形式,输入模素数q、被乘数X和乘数Y,对被乘数X和乘数Y以基数2N进行分解,再将X和Y乘积的展开式按基数22N进行分解后直接取模约简得到第一约简中间值,对第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值,再根据第二约简中间值的大小将其调整到模q有限域中,本申请通过分解约简,有效减少了中间数据的数据位宽,提出了更低计算复杂度和计算延迟的格加密模乘运算方法,并设计了相应的模乘架构,而且本申请的模乘运算方法和架构不失通用性。
以上结合具体实施方式和范例性实例对本申请进行了详细说明,不过这些说明并不能理解为对本申请的限制。本领域技术人员理解,在不偏离本申请精神和范围的情况下,可以对本申请技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本申请的范围内。本申请的保护范围以所附权利要求为准。
Claims (10)
1.一种基于分解约简的格加密模乘运算方法,其特征在于,包括:
选取形式为22N-δ的模素数q,其中为2N为模素数q的数据位宽,0<δ<2N-2;从模q有限域中选取被乘数X和乘数Y,其中X和Y为数据位宽为2N比特的无符号整数,并且0≤X,Y<q;输入模素数q、被乘数X和乘数Y;
对所述被乘数X和所述乘数Y以基数2N进行分解,得到x1、x0、y1和y0,所述x1、所述x0、所述y1和所述y0分别为X除以2N的商、X除以2N余数、Y除以2N的商和Y除以2N的余数;
将所述被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简,获得第一约简中间值;
对所述第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值;
比较所述第二约简中间值和q的大小,得到模乘运算结果,若第二约简中间值大于或等于q,所述模乘运算结果为第二约简中间值减去q的结果值;若第二约简中间值小于q,所述模乘运算结果为第二中间约简值。
2.根据权利要求1所述的一种基于分解约简的格加密模乘运算方法,其特征在于,所述将所述被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简,获得第一约简中间值的步骤,具体为:
建立第一约简中间值的表达式,所述第一约简中间值的表达式是通过对被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简得到,第一约简中间值的表达式为:
Z_0=z0+z1×2N+z2×δ;
式中,z0=x0y0,z1=(x1+x0)(y1+y0)-x0y0-x1y1,z2=x1y1;
根据第一约简中间值的表达式对x1、x0、y1和y0进行乘法和加法运算,得到所述第一约简中间值。
3.根据权利要求1所述的一种基于分解约简的格加密模乘运算方法,其特征在于,所述对所述第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值的步骤,具体为:
将第一约简中间值进行分解后直接取模约简,得到第二约简中间值的表达式,所述第二约简中间值的表达式为:
Z_1=z'0+z'1×δ+z'2×δ×2N;
式中,z'0=Z_0mod22N,z'1=Z_0/22Nmod 2N,z'2=Z_0/23N;
根据第二约简中间值的表达式计算所述第二约简中间值。
4.一种基于分解约简的格加密模乘运算架构,其特征在于,包括数据输入单元、整数分解单元、第一分解约简单元、第二分解约简单元和判定输出单元;
所述数据输入单元,用于选取形式为22N-δ的模素数q,其中为2N为模素数q的数据位宽,0<δ<2N-2;从模q有限域中选取被乘数X和乘数Y,其中X和Y为数据位宽为2N比特的无符号整数,并且0≤X,Y<q;输入模素数q、被乘数X和乘数Y;
所述整数分解单元,用于对所述被乘数X和所述乘数Y以基数2N进行分解,得到x1、x0、y1和y0,所述x1、所述x0、所述y1和所述y0分别为X除以2N的商、X除以2N余数、Y除以2N的商和Y除以2N的余数;
所述第一分解约简单元,用于将所述被乘数X和所述乘数Y乘积的展开式按基数22N进行分解后直接取模约简,获得第一约简中间值;
所述第二分解约简单元,用于对所述第一约简中间值按基数22N进行分解后直接取模约简,获得第二约简中间值;
所述判定输出单元,用于比较所述第二约简中间值和q的大小,若第二约简中间值大于或等于q,将第二约简中间值减去q的结果值作为模乘运算结果;若第二约简中间值小于q,将第二中间约简值作为模乘运算结果。
5.根据权利要求4所述的一种基于分解约简的格加密模乘运算架构,其特征在于,所述第一分解约简单元包括乘积展开模块;
所述乘积展开模块包括第一乘法器、第二乘法器、第三乘法器、第一加法器、第二加法器和第三加法器,第三乘法器的两个输入端分别与第一加法器输出端和第二加法器输出端相连,第三加法器的三个输入端分别与第一乘法器输出端、第二乘法器输出端和第三乘法器输出端相连;
所述第一乘法器,用于计算x0和y0的乘积;
所述第二乘法器,用于计算x1和y1的乘积;
所述第一加法器,用于计算x1和x0的和;
所述第二加法器,用于计算y1和y0的和;
所述第三乘法器,用于计算第一加法器的输出结果和第二加法器的输出结果的乘积;
所述第三加法器,用于计算第一乘法器输出结果的负值、第二乘法器输出结果的负值和第三乘法器输出结果的和。
6.根据权利要求5所述的一种基于分解约简的格加密模乘运算架构,其特征在于,所述第一分解约简单元还包括第一约简计算模块;
所述第一约简计算模块包括第一移位器、第一乘法模块和第四加法器,所述第一移位器的一个输入端与第三加法器的输出端相连,所述第一乘法模块的一个输入端与第二乘法器的输出端相连,所述第四加法器的三个输入端分别与第一乘法器输出端、第一移位器输出端和第一乘法模块输出端相连;
所述第一移位器,用于计算第三加法器输出结果和2N的乘积;
所述第一乘法模块,用于计算第二乘法器输出结果和δ的乘积;
所述第四加法器,用于计算第一乘法器输出结果、第一移位器输出结果和第一乘法模块输出结果的和,所述第四加法器输出结果为所述第一约简中间值。
7.根据权利要求6所述的一种基于分解约简的格加密模乘运算架构,其特征在于,所述第一乘法模块包括第四乘法器、第三移位器和第七加法器,所述第四乘法器一个输入端与第一乘法模块输入端相连且另一输入端输入(δ+1)/2n,其中为n为2的幂次方且qmod2n=1,所述第三移位器的输入端与第四乘法器输出端相连,所述第七加法器两个输入端分别与第三移位器和第一乘法模块输入端相连,所述第七加法器的输出端与第一乘法模块输出端相连;
所述第四乘法器,用于计算第二乘法器输出结果和(δ+1)/2n的乘积;
所述第三移位器,用于计算第四乘法器输出结果和2n的乘积;
所述第七加法器,用于计算第三移位器输出结果和第一乘法模块输入结果负值的和。
8.根据权利要求4所述的一种基于分解约简的格加密模乘运算架构,其特征在于,所述第二分解约简单元包括第二分解模块;
所述第二分解模块用于将第四加法器输出结果按基数22N进行分解,得到第一约简中间值分解结果,所述第一约简中间值分解结果包括z0'、z1'和z2',其中Z_0为第四加法器输出结果,z'0=Z_0mod 22N,z'1=Z_0/22Nmod 2N,z'2=Z_0/23N。
9.根据权利要求8所述的一种基于分解约简的格加密模乘运算架构,其特征在于,所述第二分解约简单元还包括第二约简计算模块,所述第二约简计算模块包括第二乘法模块、第三乘法模块、第二移位器和第五加法器,所述第二移位器的输入端与第三乘法模块相连,所述第五加法器的两个输入端分别与第二乘法模块和第二移位器相连,且另一输入端输入z0';
所述第二乘法模块,用于计算z1'和δ的乘积;
所述第三乘法模块,用于计算z2'和δ的乘积;
所述第二移位器,用于计算第三乘法模块输出结果和2N的乘积;
所述第五加法器,用于计算第二乘法模块输出结果、第二移位器输出结果和z0'的和。
10.根据权利要求9所述的一种基于分解约简的格加密模乘运算架构,其特征在于,所述第三乘法模块包括第二多路选择器,所述第二多路选择器用于预存储0、1、2和3分别乘以δ的乘积,第二多路选择器的输入端输入z2'的值;
若z2'为0,则所述第二多路选择器输出0;
若z2'为1,则所述第二多路选择器输出δ;
若z2'为2,则所述第二多路选择器输出2δ;
若z2'为3,则所述第二多路选择器输出3δ。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110819402.4A CN113467754B (zh) | 2021-07-20 | 2021-07-20 | 一种基于分解约简的格加密模乘运算装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110819402.4A CN113467754B (zh) | 2021-07-20 | 2021-07-20 | 一种基于分解约简的格加密模乘运算装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113467754A true CN113467754A (zh) | 2021-10-01 |
CN113467754B CN113467754B (zh) | 2023-10-13 |
Family
ID=77881345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110819402.4A Active CN113467754B (zh) | 2021-07-20 | 2021-07-20 | 一种基于分解约简的格加密模乘运算装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113467754B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116610290A (zh) * | 2023-07-20 | 2023-08-18 | 南京邮电大学 | 蒙哥马利算法在有限域中实现四则运算的硬件实现方法 |
CN117714054A (zh) * | 2024-02-01 | 2024-03-15 | 山东大学 | 基于数论变换的密钥封装轻量化方法、系统、介质及设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060008080A1 (en) * | 2004-07-09 | 2006-01-12 | Nec Electronics Corporation | Modular-multiplication computing unit and information processing unit |
CN102207847A (zh) * | 2011-05-06 | 2011-10-05 | 广州杰赛科技股份有限公司 | 基于蒙哥马利模乘运算的数据加解密处理方法及装置 |
US20170155628A1 (en) * | 2015-12-01 | 2017-06-01 | Encrypted Dynamics LLC | Device, system and method for fast and secure proxy re-encryption |
CN110908635A (zh) * | 2019-11-04 | 2020-03-24 | 南京大学 | 基于同源曲线的后量子密码学的高速模乘器及其模乘方法 |
-
2021
- 2021-07-20 CN CN202110819402.4A patent/CN113467754B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060008080A1 (en) * | 2004-07-09 | 2006-01-12 | Nec Electronics Corporation | Modular-multiplication computing unit and information processing unit |
CN102207847A (zh) * | 2011-05-06 | 2011-10-05 | 广州杰赛科技股份有限公司 | 基于蒙哥马利模乘运算的数据加解密处理方法及装置 |
US20170155628A1 (en) * | 2015-12-01 | 2017-06-01 | Encrypted Dynamics LLC | Device, system and method for fast and secure proxy re-encryption |
CN110908635A (zh) * | 2019-11-04 | 2020-03-24 | 南京大学 | 基于同源曲线的后量子密码学的高速模乘器及其模乘方法 |
Non-Patent Citations (1)
Title |
---|
XIAO HU: "DARM: A Low-Complexity and Fast Modular Multiplier for Lattice-Based Cryptography", 《2021 IEEE 32ND INTERNATIONAL CONFERENCE ON APPLICATION-SPECIFIC SYSTEMS, ARCHITECTURES AND PROCESSORS (ASAP)》, pages 175 - 178 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116610290A (zh) * | 2023-07-20 | 2023-08-18 | 南京邮电大学 | 蒙哥马利算法在有限域中实现四则运算的硬件实现方法 |
CN116610290B (zh) * | 2023-07-20 | 2023-09-22 | 南京邮电大学 | 蒙哥马利算法在有限域中实现四则运算的硬件实现方法 |
CN117714054A (zh) * | 2024-02-01 | 2024-03-15 | 山东大学 | 基于数论变换的密钥封装轻量化方法、系统、介质及设备 |
CN117714054B (zh) * | 2024-02-01 | 2024-04-23 | 山东大学 | 基于数论变换的密钥封装轻量化方法、系统、介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN113467754B (zh) | 2023-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Erdem et al. | A general digit-serial architecture for montgomery modular multiplication | |
CN110351087B (zh) | 流水线型的蒙哥马利模乘运算方法 | |
CN103793199B (zh) | 一种支持双域的快速rsa密码协处理器 | |
Grossschadl | The Chinese remainder theorem and its application in a high-speed RSA crypto chip | |
CN113467754A (zh) | 一种基于分解约简的格加密模乘运算方法及架构 | |
CN113783702A (zh) | 一种椭圆曲线数字签名与验签的硬件实现方法和系统 | |
CN113794572A (zh) | 一种高性能椭圆曲线数字签名与验签的硬件实现系统和方法 | |
Moon et al. | Fast VLSI arithmetic algorithms for high-security elliptic curve cryptographic applications | |
CN103942027B (zh) | 一种可重构的快速并行乘法器 | |
Wu et al. | Efficient High-Radix GF (p) Montgomery Modular Multiplication Via Deep Use Of Multipliers | |
CN112631546A (zh) | 基于ko-8算法的高性能模乘器 | |
CN114757034A (zh) | 一种基于FPGA的poseidon哈希算法的优化系统 | |
Kadu et al. | Hardware implementation of efficient elliptic curve scalar multiplication using vedic multiplier | |
Li et al. | FPGA implementations of elliptic curve cryptography and Tate pairing over a binary field | |
CN114594925A (zh) | 适用于sm2加密运算的高效模乘电路及其运算方法 | |
Wang et al. | FPGA based unified architecture for public key and private key cryptosystems | |
Muslim et al. | Enhanced scalar multiplication algorithm over prime field using elliptic net | |
Renita et al. | Implementation and performance analysis of elliptic curve cryptography using an efficient multiplier | |
Fayed et al. | A high-speed, high-radix, processor array architecture for real-time elliptic curve cryptography over GF (2 m) | |
Kuang et al. | An improved algorithm for uP+ vQ using JSF | |
Ors et al. | Hardware implementation of an elliptic curve processor over GF (p) with montgomery modular multiplier | |
Li et al. | Low complexity bit-parallel $ GF (2^ m) $ multiplier for all-one polynomials | |
Yan et al. | Modified modular inversion algorithm for vlsi implementation | |
Menandas et al. | Effective Implementations of Scalar Multiplications in Elliptic Curve Cryptography | |
US20080063184A1 (en) | Method of Performing a Modular Multiplication and Method of Performing a Euclidean Multiplication Using Numbers with 2N Bits |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |