CN1530824A - 用于执行蒙哥马利型模乘法的装置及方法 - Google Patents
用于执行蒙哥马利型模乘法的装置及方法 Download PDFInfo
- Publication number
- CN1530824A CN1530824A CNA2004100326816A CN200410032681A CN1530824A CN 1530824 A CN1530824 A CN 1530824A CN A2004100326816 A CNA2004100326816 A CN A2004100326816A CN 200410032681 A CN200410032681 A CN 200410032681A CN 1530824 A CN1530824 A CN 1530824A
- Authority
- CN
- China
- Prior art keywords
- carry
- value
- adder
- key
- input
- 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
- 238000000034 method Methods 0.000 title claims description 47
- 238000012797 qualification Methods 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 22
- 238000012545 processing Methods 0.000 claims description 20
- 230000000295 complement effect Effects 0.000 claims description 12
- 238000005516 engineering process Methods 0.000 claims description 12
- 230000005055 memory storage Effects 0.000 claims 4
- 239000000654 additive Substances 0.000 claims 1
- 230000000996 additive effect Effects 0.000 claims 1
- 238000010295 mobile communication Methods 0.000 abstract description 5
- 101150042828 csa1 gene Proteins 0.000 description 38
- 230000008901 benefit Effects 0.000 description 28
- 238000010586 diagram Methods 0.000 description 24
- 229910052757 nitrogen Inorganic materials 0.000 description 16
- 230000006870 function Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 4
- 238000006073 displacement reaction Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 229910052698 phosphorus Inorganic materials 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 101001026864 Homo sapiens Protein kinase C gamma type Proteins 0.000 description 1
- 102100037314 Protein kinase C gamma type Human genes 0.000 description 1
- 101100024330 Saccharomyces cerevisiae (strain ATCC 204508 / S288c) MSB1 gene Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000717 retained effect Effects 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
-
- 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/728—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 using Montgomery reduction
-
- 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/38—Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
- G06F7/48—Methods 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/52—Multiplying; Dividing
- G06F7/523—Multiplying only
- G06F7/533—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even
- G06F7/5332—Reduction of the number of iteration steps or stages, e.g. using the Booth algorithm, log-sum, odd-even by skipping over strings of zeroes or ones, e.g. using the Booth Algorithm
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明公开了一种模块式乘法装置,在包括智能卡和移动终端的移动通信环境中,用于实现高速的加密/解密及电子签名。本发明提供一种用于执行蒙哥马利型模块式乘法的装置,在m+2(m=n/2)个时钟内利用乘数A和被乘数B计算A·B′·R-1modN(R=4m+2),A和B具有n位的输入,其中顺序地移动该乘数位以生成一个移位串,且Booth记录该生成的移位串的两位最低有效位。本发明提供一种具有较少逻辑门数目以及降低功耗的高速模块式乘法装置。
Description
技术领域
本发明通常涉及加密领域,具体言之是涉及一种用在对消息加密/解密和数字签名技术中执行蒙哥马利型模乘法的装置及方法。
背景技术
在使用智能卡及电子货币的用于电子商务的通信系统中以及在使用诸如移动电话、小型计算机等移动通信装置的通信系统中,人们希望通过对消息加密/解密或进行数字签名处理来安全地传输消息(电子文本或数据)。此处术语“数字签名”是指在消息的电子交换处理中在电子正文上“签名”的技术,这类似于通常在纸上所做的签名。随着互联网用户数量以及互联网上个人消息传输频率的快速增加,极其需要在不安全的通道上能安全的传输消息。
已提出的各种算法例如,RSA(Rivest-Shamir-Adlcman)、ELGamal、Schnorr等已经用在使用公开密钥系统的加密/解密技术中和数字签名技术中。基于RSA算法的ISO(国际标准化组织)/IEC(国际电工委员会)9796已经被采用为这些算法的国际标准,美国已经采用了ELGamal的一个改进版DSA(数字签名标准),俄罗斯采用了GOSSTANDART(通常简写为“GOST”),韩国采用了KC-DSA。然而,目前使用的各种通信系统中已经采用了多种PKCC(公开密钥加密标准)。上述的算法要求执行模幂运算me mod N,其包括反复执行模乘法运算,A·B mod N。
已经建议了诸如RSA的用于执行模乘法的很多算法,这些算法需要在公开密钥密码的基础上生成和验证数字签名,例如,R.L.Rivest等人所著的于1978年发表在Communication of the ACM,21,pp.120-126上的“A MethodFor Obtaining Signatures And Public-Crytosystems”;P.L.Montgomery所著的于1985年发表在Math.of Comp.,Vol.44,No.170,pp.519-521上的“Modular Multiplication With Tria1 Division”;S.R.Dusse和B.S.Ka1iski Jr.所著的于
199年发表在Proc.Eurocrypto’90,pp.230-244上的“A Cryptographic Library For The Motorola DSP5600”以及Spronger-Verlag、A.Bosselaers、R.Govaerts和J.Vandewalle所著的于1993年发表在Advance in Cryto1ogyCRYPTO’93,pp.175-186上的“Comparison Of Three Modular Reduction Function”。从D.R.Stinson所著的于1995年发表在CRC Press上的“Cryptography”论文中可知,在各种需要模幂的算法中,在用于模幂的模乘的计算效率上蒙哥马利算法最有效,但对于简单的模乘而言它不是有效的算法。美国专利No.6,185,596中公开了一个实现蒙哥马利算法的装置的例子。
如上所述,已经提出了用于公开密钥加密/解密及电子签名的许多算法和结构。然而,由于依照大多数算法和结构的模乘装置多用于高速的公开密钥的加密/解密,所以它们存在需要大量的逻辑门及大量的功耗的缺点。
发明内容
因此,本发明已经考虑到上述问题,本发明的一个目的是提供一种具有较少逻辑门的模乘装置,用于在包括智能卡和移动终端的移动通信环境中,实现高速的加密/解密及电子签名。
本发明的另一个目的是提供一种降低了功耗的模乘装置,用于在包括智能卡和移动终端的移动通信环境中,实现高速的加密/解密及电子签名。
本发明的又一目的是提供一种模乘装置,其能在包括智能卡和移动终端的移动通信环境中,实现高速的加密/解密及电子签名。
为达到上述目的,用于实现其中使用第一密钥(B)和第二密钥(N)对消息(A)加密/解密的消息加密/解密技术的该模乘装置消息(A),模块式乘包括:一个存储器,具有分开的区域用于存储该消息、第一密钥和第二密钥,每个区域的长度是n位;一个记录逻辑电路,在每个时钟处使用该消息和第一密钥生成第一n+4位信号;一个第一进位存储加法器,使用该第一n+4位信号和两个并行的n+4位输入信号生成包括一个进位值和两个和值组成的3位序列;一个商逻辑电路,使用该3位序列和一个进位值生成一个用于确定模数简化倍数的3位限定词;一个选择器,用于使用第二密钥和该3位限定词生成一个第二n+4位信号;一个第二进位存储加法器,使用该第二n+4位信号和从第一进位存储加法器输出的各自的和值和进位项来输出和值和进位值;一个第一全加器,通过对该和值和进位值以及在先前时钟处从商逻辑电路输出的进位值执行全加操作输出一个进位输入值。该分开的区域是移位寄存器,用于存储各自的消息、第一密钥和第二密钥。在每个时钟处该消息被右移2位。第一n+4位信号是0、B、2B、-B和-2B其中之一。第二n+4位信号是0、N、2N、-N和-2N其中之一。
该记录逻辑电路包括一个Booth记录电路,用于对消息的两个低阶位执行Booth记录;一个多路复用器,用于对该两位低位和该第一密钥执行多路复用复用以输出0、B和2B其中之一;以及一个一的补码器,用于依照两个低阶位对从该多路复用器输出的该n+1位信号有选择的执行一的取补运算以生成0、B、2B、-B和-2B其中之一。
该第一进位存储加法器包括n+4个第二全加器,每一个全加器对两个并行的n+4输入信号的相应的和值和进位以及该第一n+4位输入信号的相应位执行全加操作以生成该3位序列。该两个并行的n+4位输入信号中的第一输入信号是按以下方式生成的:从该第二进位存储加法器的和值项中选择高阶的n+2位并插入两位作为所选的n+2位的高阶位,且这两个高阶位为零。该两个并行的n+4位输入信号中的第二输入信号是按以下方式生成的:从该第二进位存储加法器的进位项中选择较高的n+3位并插入一位作为所选的n+3位的较高阶高位,且这个较高阶位为零。
该商逻辑电路包括一个D触发器,用于临时存储来自第一全加器的进位输入值;一个第三全加器,用于对该进位输入值和该第一进位存储加法器的最低有效位全加器输出的和值执行全加运算,该运算考虑了该第一密钥的符号;一个异或(XOR)逻辑门,用于对从该第一进位存储加法器的最低有效位全加器输出的进位值和从该第一进位存储加法器的次低有效位全加器输出的和值以及在先前时钟处从商逻辑电路输出的值执行异或运算;还包括一个组合电路,用于将第三全加器和异或逻辑门的输出及第二密钥的次最低有效位(n1)进行组合以输出该3位限定词信号。
该第二进位存储加法器包括n+4个第四全加器,每一个全加器对来自该第一进位存储加法器的除了和值的最低有效位及进位的最高有效位之外的相应的和值和进位以及该第二n+4位信号的相应位执行全加操作,以生成和值及进位的一对值。该第一全加器该对从第二进位存储加法器的次低有效位全加器输出的和值及从该第二进位存储加法器的最低有效位全加器输出的进位值以及在先前时钟处商逻辑电路的进位值(cin)执行全加操作,以生成该进位输入值。
该模乘装置还包括一个进位传送加法器,用于在m+2个时钟之后对该第二进位存储加法器输出的和值和进位项执行进位传送加法操作,其中m=n/2。如果该进位传送加法器的输出是负值,则该进位传送加法器将模第二密钥加到该进位传送加法操作的结果中。
本发明的另一方面,在用于实现消息加密/解密技术的该模乘装置中,使用第一密钥(B)和第二密钥(N)对消息(A)加密/解密,该模乘装置包括:一个存储器,具有用于存储n位消息的独立区域、第一密钥和n位的第二密钥;一个记录逻辑电路,用于在每个时钟处使用该消息和第一密钥生成第一n+3位信号;一个第一进位存储加法器,用于通过对该第一n+3位信号和两个并行的n+3位输入信号执行第一进位存储加法操作,输出由一个进位值和两个和值组成的3位序列;一个商逻辑电路,用于通过对该3位序列和一个进位值执行商操作,生成一个用于确定模数简化倍数的2位限定词;一个选择器,使用第二密钥和该2位限定词生成一个第二n+3位信号;一个第二进位存储加法器,通过对该第二n+3位信号和第一进位加法操作输出的分别的和值及进位项执行第二进位存储加法操作,输出一对和值和进位值;还包括一个与(AND)逻辑门,通过对该对和值及进位值执行与操作,输出一个进位输入值。该分开的区域是移位寄存器,用于存储各自的消息、第一密钥和第二密钥。在每个时钟下该消息移动2位。该第一n+3位信号是0、B、2B和3B其中之一。该第二n+3位信号是0、N、2N和3N其中之一。
该记录逻辑电路是一个多路复用器,用于对消息的两个较低位和第一密钥的n位执行多路复用以输出该第一n+3位信号。该第一进位存储加法器包括n+3个第一全加器,每一个全加器对两个并行的n+3位输入信号的相应的和值及进位以及该第一n+3位输入信号的相应位执行全加操作,以生成该3位序列。该两个并行的n+3位输入信号中的第一输入信号是按以下方式生成的:从该第二进位存储加法器的和值项中选择高阶的n+1位并插入两位作为所选的n+1位的较高阶位,且这两个较高阶位为零。该两个并行的n+3位输入信号中的第二输入信号是按以下方式生成的:从该第二进位存储加法器的进位项中选择较高阶的n+2位并插入一位作为所选的n+2位的较高阶位,且这一个较高阶位为零。
该商逻辑电路包括一个D触发器,用于临时存储来自与逻辑门的进位输入值;一个半加器,用于对该进位输入值和该第一进位存储加法器的最高有效位全加器输出的和值执行半加运算;一个异或(XOR)逻辑门,用于对该第一进位存储加法器的最低有效位全加器输出的进位值和次低有效位全加器输出的和值以及该半加器的输出值执行异或运算;还包括一个组合电路,用于对该半加器和异或逻辑门的输出及第二密钥的次最低有效位(n1)进行组合以输出该2位限定词信号。
该第二进位存储加法器包括n+3个第二全加器,每一个全加器对来自该第一进位存储加法器的除了和值的最低有效位及进位的最高有效位之外的相应的和值和进位以及该第二n+3位信号的相应位执行全加操作,以生成该对和值和进位。该与(AND)逻辑门对该第二进位存储加法器的次低有效位第二全加器输出的和值及该第二进位存储加法器的最低有效位第二全加器输出的进位值执行与(AND)操作,以生成该进位输入值。该模乘装置还包括一个进位传送加法器,用于在m+2个时钟之后对该第二进位存储加法器输出的和值和进位项执行进位传送加法操作。
本发明的又一方面,在用于实现消息加密/解密技术的该模乘方法中,使用第一密钥(B)和第二密钥(N)对消息(A)加密/解密,该模乘方法包括:在各自的存储器中存储消息、第一密钥和n位的第二密钥;在每个时钟处使用该消息和第一密钥生成第一n+4位信号;通过对该第一n+4位信号和两个并行的n+4位输入信号执行第一进位存储加法操作,生成由一个进位值和两个和值组成的3位序列;通过对该3位序列和一个输入进位值执行商操作,生成一个用于确定模数简化倍数的3位限定词;使用该第二密钥和该3位限定词,生成第二n+4位信号;通过对该第二n+4位信号和第一进位加法操作输出的各自和值及进位项执行第二进位存储加法操作,输出一对和值和进位值;通过对这对和值和进位值以及在先前时钟处从商逻辑电路输出的进位值执行全加操作输出一个进位输入值。在每个时钟处该消息右移2位。
生成该第一n+4位信号的处理包括:利用该消息的两个低阶位执行Booth记录;根据该两个低阶位生成0、B、2B、-B和-2B其中之一。该两个并行的n+4位输入信号中的第一输入信号是按以下方式生成的:从该第二进位存储加法操作的和值项中选择高阶的n+2位并插入两位作为所选的n+2位的较高阶的位,且这两个较高阶位为零。该两个并行的n+4位输入信号中的第二输入信号是按以下方式生成的:从该第二进位存储加法操作的进位项中选择较高的n+3位并插入一位作为所选的n+3位的较高位,且这个较高位为零。该3位序列包括两个和值和一个进位值。该两个和值是第一进位存储加法操作输出的和值项中的最低有效位和次低有效位,该一个输入进位值是第一进位存储加法操作输出的进位值项中的最低有效位。该一的输入进位值是由全加操作生成的该进位输入值。根据3位限定词的两个较低位从0、N、2N-N和-2N中选出该第二n+4位信号。该对和值和进位值是第二进位存储加法操作输出的和值项中的次低有效位和进位值项中的最低有效位。第一进位存储加法操作输出的和值项和进位值项中的最高有效位被忽略。该模乘方法还包括在m+2个时钟之后对该和值项和进位项执行进位传送加法操作,其中m=n/2。如果该进位传送加法操作的输出是负值,则该模乘方法还包括加上模第二密钥。
本发明的又一方面,在用于实现消息加密/解密技术的该模乘方法中,使用第一密钥(B)和第二密钥(N)对消息(A)加密/解密,该模乘方法包括:在各自的存储器中存储消息、第一密钥和n位的第二密钥;在每个时钟处使用该消息和第一密钥生成第一n+3位信号;通过对该第一n+3位信号和两个并行的n+3位输入信号执行第一进位存储加法操作,输出由一个进位值和两个和值组成的3位序列;通过对该3位序列和一个输入进位值执行商操作,生成一个用于确定模数简化倍数的2位限定词;使用该第二密钥和该2位限定词,生成第二n+3位信号;通过对该第二n+3位信号和从第一进位加法操作输出的各自的和值和进位项执行第二进位存储加法操作,输出一对和值和进位值;通过对这对和值和进位值执行与(AND)操作输出一个进位输入值。在每个时钟处该消息右移2位。通过多路复用该消息的两个低阶位及第一密钥生成该第一n+3位信号。该第一n+3位信号是0、B、2B和3B其中之一。该两个并行的n+3位输入信号中的第一输入信号是按以下方式生成的:从该第二进位存储加法操作的和值项中选择高阶n+1位并插入两位作为所选的n+1位的较高阶位,且这两个较高阶位为零。该两个并行的n+3位输入信号中的第二输入信号是按以下方式生成的:从该第二进位存储加法操作的进位项中选择较高阶n+2位并插入一位作为所选的n+2位的较高阶位,且这个较高阶位为零。
该3位序列包括两个和值和一个进位值。该两个和值是第一进位存储加法操作输出的和值项中的最低有效位和次低有效位,该进位值是第一进位存储加法操作输出的进位值项中的最低有效位。该一个输入进位值是由与(AND)操作生成的该进位输入值。根据2位限定词从0、N、2N和3N中选出该第二n+3位信号。该对和值和进位值是第二进位存储加法操作输出的和值项中的次低有效位和进位值项中的最低有效位。从第一进位存储加法操作输出的和值项和进位项中的最高有效位被忽略。
该模乘方法还包括在m+2个时钟之后对该第二进位存储加法操作输出的和值项和进位项执行进位传送加法操作。
附图说明
通过下面结合附图的详细描述可以更加清楚地理解本发明的上述和其它目的、特性和其它优点。面将参照附图详细说明本发明,从中可更清楚的理解本发明上述以及其它的目的、特点和优点,其中:
图1给出了依照本发明第一实施例的一个模乘装置的结构框图;
图2给出了图1中所示的记录电路的详细结构的框图;
图3给出了图1中所示的第一进位存储加法器的详细结构的框图;
图4给出了图1中所示的商逻辑电路的详细结构的框图;
图5给出了图1中所示的第二进位存储加法器的详细结构的框图;
图6给出了图1中所示的全加器的详细结构的框图;
图7给出了依照本发明第二实施例的一个模乘装置的结构框图;
图8给出了图7中所示的记录电路的详细结构的框图;
图9给出了图7中所示的第一进位存储加法器的详细结构的框图;
图10给出了图7中所示的商逻辑电路的详细结构的框图;
图11给出了图7中所示的第二进位存储加法器的详细结构的框图;
图12给出了图7中所示的全加器的详细结构的框图;
图13给出了一个依照本发明实施例的模乘装置的应用实例。
具体实施例
下面将参照附图详细说明本发明的优选实施例。即使在不同的附图中,相同或类似的元件都是由相同的参考标记表示。在下面的说明中,当所涉及的已知的功能和结构使本发明的主题不明确时,就将其省略。
A.发明概述
在随后的说明中,本发明披露了一种使用蒙哥马利算法执行模乘A·Bmod N的装置及方法,其中:
A=an-1·2n-1+···+a1·2+a0,
B=bn-1·2n-1+···+b1·2+b0,以及
N=nn-1·2n-1+···+n1·2+n0。
此处,A是乘数,B是被乘数,N是模数,每个位尺寸可以是很大的数,例如,512或1024。
下面将描述通过两个实施例执行模乘A·B mod N。每个实施例都提出了一种在m+2个时钟内利用A、B和N(其中,R=4m+2,m=n/2,-N<=A,以及B<N)计算模乘A·B·R-1 mod N的模乘装置和方法,A、B和N中的每一个都是作为输入而接收的n位长度。通过使用由所提出的模乘装置得出的模乘结果可以计算模乘A·B mod N。执行RSA运算所需的模幂me mod N可由算出的A·B mod N导出。图1至6给出了依照本发明第一实施例的该模乘装置的元件结构框图,图7至13给出了依照本发明第二实施例的该模乘装置的元件结构框图。图14给出了适用于依照本发明实施例的该模乘装置的一个IC卡的框图。
本发明的实施例提供模乘装置,其中顺序移动乘数的位生成一个移位的位串,且该生成的位串的两个较低位被Booth记录。与仅记录顺序移动乘数位所生成的位串的一个单一较低位的传统模乘装置相反,本发明通过以记录两个较低位的方式处理多个位允许高速执行乘法。依照本发明实施例的模乘装置包括改进的记录逻辑电路和与该改进的用于执行蒙哥马利算法模乘操作的记录逻辑电路一致的其它的元件。
B.第一实施例
B-1.本发明的结构
图1给出了依照本发明第一实施例的一个模乘装置的结构框图。
参照图1,该模乘装置包括记录逻辑电路110,第一进位存储加法器(此处简写为“CSA1”)120,商逻辑电路130,选择器140,第二CSA(“CSA2”)150,以及全加器(FA)160。该模乘装置是依照蒙哥马利算法,在m+2个时钟内使用A、B和N计算A·B·R-1 mod N的硬件装置,A、B和N(R=4m+2,m=n/2,-N<=A,以及B<N)的每一个都具有n位输入。该模乘装置计算A·B·2-(n+4)mod N。
CSA 120和150中的每一个都由并行的(n+4)个全加器组成,每个全加器有一个3位输入,输出一个进位和一个和位。记录逻辑电路110基于乘数A执行改进的Booth记录操作,并输出0、±B和±2B值的其中一个作为该(n+4)位的带符号的扩展位。该商逻辑电路130具有作为其输入的一个最低有效位(LSB)进位值C1,0以及来自CSA1 120的两个和值LSB位S1,1和S1,0,一个输入(carry-in),以及B的符号位,输出3位的q2q1q0,该值用于确定模数简化的倍数。可由多路复用器(MUX)实现的选择器140基于确定的值q选择并输出0、±N和±2N的其中一个。该全加器160利用从CSA2 150输出的两位S2,1和C2,0以及作为其输入的进位值cin执行全加操作,并将生成的结果值提供给商逻辑电路130作为输入信号。
虽然图1中没有给出细节,但应该注意,该模乘装置包括用于将进位值以及和值存储每个时钟长度的临时存储寄存器C和R,该进位值以及和值分别是CSA1 120与CSA2 150的输出,还包括一个进位传送加法器,用于将存储在该临时存储寄存器C和R中的值相加输出一个总的值作为模乘的结果。
图2给出了图1中所示的记录逻辑电路110的详细结构框图。
参照图2,记录逻辑电路110 Booth记录由顺序移位乘数A所得的位串的两位较低位,用被乘数B多路复用该Booth记录结果,输出带符号的(n+4)位二进制数。为了此目的,在记录逻辑电路110的前一级提供一个用于顺序移位乘数以生成一个移位串的移位寄存器102以及用于存储该被乘数的寄存器104。记录逻辑电路110也包括一个Booth记录电路112,一个多路复用器(MUX)114,以及一个一的补码器116。Booth记录电路112 Booth记录已生成的位串的两位较低位ai+1和ai。多路复用器114用被乘数多路复用该Booth记录的结果zi+1,输出0、B和2B作为多路复用的结果。一的补码器116依照该已生成的位串的两位较低位对多路复用器114的输出执行一的取补操作,输出带符号的(n+4)位二进制数。根据乘数A实现改进Booth记录的记录逻辑电路110输出(n+4)位的一个带符号的扩展位,其值可以是0、±B和±2B其中之一。
图3的框图详细示出了图1所示CSA1 120的结构。
参照图3,具有(n+4)个全加器121至125的CSA1 120具有作为其输入并来自记录逻辑电路110的二进制的(n+2)位的第一信号S2,2至S2,n+3、(n+3)位的第二信号C2,1至C2,n+3、以及(n+4)位的第三信号B0至Bn+3,并借助(n+4)全加器121至125将所有的输入全加以输出(n+4)位的进位值C1,0至C1,n+3以及和值S1,0至S1+n+3。此处,将该第一信号的第(n+2)个较高位S2,n+3输入到三个较高位全加器123至125,将该第二信号的第(n+3)个较高位C2,n+3输入到两个较高位全加器124和125。
图4给出了图1所示的商逻辑电路130的详细结构框图。
参照图4,商逻辑电路130具有作为其输入的从两个较低全加器输出的和值S1,0和S1,1以及从最低全加器输出的进位值C1,0,这是从CSA1 120的(n+4)个进位值以及和值中选出的,并输出一个三位的确定值q1q2q3来确定模数简化的倍数。商逻辑电路130包括D触发器132、全加器134、异或(XOR)逻辑门136以及组合电路138。D触发器132临时存储一位来自FA160的进位输入值Carry-in。全加器134将存储在D触发器132内的进位输入值Carry-in与CSA1 120的最低有效位全加器121输出的和值S1,0全加。异或(XOR)逻辑门136在CSA1 120的最低有效位全加器121输出的该进位值C1,0与次低位全加器122输出的和值S1,1之间执行异或运算。每一个全加器134和异或逻辑门136都具有用于修正的预置进位值cin,全加器134还具有被乘数的一个符号位B。组合电路138将全加器134的输出S0、异或逻辑门136的输出S1以及预置输入位n1合并,输出三位的确定值q1q2q3。
图5给出了图1所示的CSA2 150的详细结构框图。
参照图5,CSA2 150包括(n+4)个全加器151至156。CSA2 150包括作为第一输入信号的从选择器140选出的(n+4)位的模数N(N0-Nn+3)、作为第二输入信号的来自CSA1 120的(n+4)位进位值中除了最高有效位进位值的(n+3)位的剩余进位值C1,0至C1,n+3以及作为第三输入信号的来自CSA1120的(n+4)位和值中除了最低有效位进位值的(n+3)位的剩余和值S1,0至S1,n+3,用于借助全加器151至156输出(n+4)位的进位值C2,0至C2,n+3和(n+4)位的和值S2,0至S2,n+3。第一输入信号的(n+4)位是从最低有效位的全加器151开始按顺序分别输入到全加器151至156,第二输入信号的(n+3)位是从次低位的全加器152开始按顺序分别输入到全加器152至156,第三输入信号的(n+3)位是从次低位的全加器152开始按顺序分别输入到全加器152至156。全加器151至156的最低有效位全加器151的输入是来自商逻辑电路130的全加器134的输出S0、qi,2以及模数N的最低有效位N0。
图6给出了图1所示全加器160的详细结构框图。
参照图6,全加器160将CSA2 150的最低有效位全加器151输出的进位值C2,0与次低位全加器151输出的和值S2,0全加,输出进位输入值Carry-in。全加器160还具有一位用于修正全加操作的的进位值cin,输出进位输入值Carry-in作为全加操作的结果。该进位输入值被提供给商逻辑电路130。
B-2.发明原理
本发明提供一种用于在m+2个时钟内利用A、B和N((R=4m+2,m=n/2,-N<=A,以及B<N))计算A·B·R-1 mod N的装置,其中,A、B和N都具有n位的输入。下面将说明可用于实现本发明的三个原理。该三个原理包括表示用于模乘的乘数A和被乘数B的第一原理,记录用于模乘的乘数A的第二原理以及使用本发明记录原理的蒙哥马利算法的第三原理。
B-2a.数字表示
本发明中,用于模乘的该乘数A和被乘数B由带符号的二进制数表示。A和B都具有n位,被分别的变换成用于带符号操作的(n+4)位。在变换期间,任何的负值都被转换成它们的一的补码。
B-2b.Booth记录
本发明使用一种改进的Booth记录系统,该系统是适于本发明的已为本领域技术人员所熟知的Booth记录系统的改进。本发明提高了模乘速度。依靠该改进的Booth记录系统将乘数A记录为2位zi(其中0≤i≤m+1)。此处,假设an+4=an+3,a1=0。下表给出了依照本发明的改进的Booth记录的规则。
表1
ai+1 | ai | ai-1 | Zi+1 |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 1 |
0 | 1 | 1 | 2 |
1 | 0 | 0 | -2 |
1 | 0 | 1 | -1 |
1 | 1 | 0 | -1 |
1 | 1 | 1 | 0 |
B-2c.使用Booth记录的基数-4蒙哥马利算法
下面方程1中例举的算法给出了本发明对于基数-4蒙哥马利算法采用了改进的Booth记录系统。最初的蒙哥马利算法将结果值与模数N进行比较,如果结果值大于模数N,则执行减法运算。然而,本发明下面的算法没有示出原始蒙哥马利算法的这种比较和减法。
方程1:
输入:N、-N≤A、B<N
输出:S=A·B·4m+2 mod N,-N≤S<N
S=0 (1)
for i=0 to(n+1)/2 (2)
S=S+Ai×B (3)
qi(2,1,0)=f(s1,s0,n1,n0) (4)
S=S+qi×N (5)
S=S/22 (6)
end for (7)
在方程1的算法中,Ai在处理(3)是指两个Booth记录位,其值为-2<Ai<2。处理(4)是指能使处理(5)的结果值的两个最低有效位成为“0”的函数。处理(4)的结果值取决于输入位s1、s0、n1和n0,并如表2所示被确定。用于模数简化的值qi的最高有效位(MSB)qi2是一个符号位。qi是元素集{0、±1、2}中之一个元素,并依照方程2来计算。
方程2
q0=s0
表2
s0 | s1 | n1 | q2 | q1q2 |
0 | 0 | 0 | 0 | 00 |
0 | 0 | 1 | 0 | 00 |
0 | 1 | 0 | 0 | 10 |
0 | 1 | 1 | 0 | 10 |
1 | 0 | 0 | 1 | 01 |
1 | 0 | 1 | 0 | 01 |
1 | 1 | 0 | 0 | 01 |
1 | 1 | 1 | 1 | 01 |
B-3.本发明的操作
如图1所示的本发明的装置在m+2个时钟内利用N,A、B和N(R=4m+2,m=n/2,-N≤A,以及B<N)计算A·B·R-1 mod N,其中,A、B和N都具有n位的输入。
下面将说明利用图1所示的装置计算A·B·R-1 mod N(其中R=4m+2)的处理。在下面的说明中,步骤a)是初始化步骤,步骤b)至h)是每个时钟将被执行的步骤,步骤i)是在(m+2)个时钟期间内在执行步骤b)到h)之后被执行的步骤。
a)都具有n位用于模乘输入的A、B和N被存储在各自的寄存器(或存储器)中。虽然本发明的装置给出了输入A和B存储在各自的寄存器102和104中,而没有给出以N位存储的分开的寄存器,但用在本发明中的这样分开的寄存器对于本领域技术人员来说是很清楚的。此处,存储A的寄存器102是一个移位寄存器,每个时钟A被向右移两位。出于方便的原因,存储A的寄存器表示为寄存器A,存储B的寄存器表示为寄存器B。至于存储器,则一次一个字的读出A和B。用于临时存储图1所示的CSA2 150的计算值的临时寄存器(或存储器)C和S(都没有给出细节)被初始化为“0”。
b)当所有的数据都被输入给寄存器102和104中的每一个时,记录逻辑电路110的Booth记录电路112基于寄存器102中的两个LSB位执行Booth记录功能。记录逻辑电路110的MUX 114具有作为其输入并存储在寄存器104中的B的值,并基于寄存器102的两个LSB位生成0、±B、±2B值的其中一个,提供给CSA1 120以作为其三个输入的一个。此时,记录逻辑电路110的一的补码器116基于寄存器102的两个LSB位将0、±B、±2B值的其中一个变换为它的一的补码,并将该一的补码表示成n+4位数,提供给CSA1 120以作为其三个输入的一个。
c)CSA 1120对三个输入的n+4位的带符号二进制数执行加法操作。CSA1120由n+4个全加器121至125构成。前一级全加器生成的进位提供给后一级的全加器,而最高有效位(MSB)全加器125生成的进位被忽略。
d)商逻辑电路130具有作为其输入的来自CSA1 120的值S1,1、C1,0和S1,0,来自全加器160的Carry-in信号,被乘数B的符号位B,依靠全加器134和异或逻辑门136计算并输出S1和S0。用于修正的进位信号cin输入至全加器134和异或逻辑门136。进位信号cin是用于修正使用二的补码的已有的Booth记录系统与使用一位补码的本发明的Booth记录系统之间的差异的信号。
e)商逻辑电路130的组合电路138其输入为步骤d)所得的S1和S0,依靠表2的真值表确定一个三位的值q。虽然没有给出依靠表2的真值表确定q值的电路的详细结构,但是通过一般的逻辑门电路实现用于确定q值的电路对本领域技术人员来讲是很明显的。
f)CSA2 150具有作为其输入的在步骤c)中CSA1 120输出的进位值以及和值,以及通过步骤e)中所得q值的两位LSB确定的从0、±N和±2N中选择的n+4位的带符号的二进制数,其执行n+4位带符号操作。CSA2 150由n+4个全加器151至156构成。步骤e)中所得q值的MSB值q1,2作为全加器151至156的LSB全加器151的进位输入。
g)全加器160具有作为其输入的从CSA2 150输出的值S2,1和C2,0,以及用于修正的进位信号cin,通过全加该输入以输出Carry-in。此全加操作是用于修正使用二的补码的已有的Booth记录系统与使用一的补码的本发明的Booth记录系统之间的差异。
h)来自CSA2 150输出的MSB的(n+2)个和值和(n+3)个进位值被反馈到CSA1 120作为其输入。此时,CSA2 150的MSB全加器156输出的和值的MSB S2,n+3被复制,并在其上添加两位,CSA2 150的MSB全加器156输出的进位值的MSB C2,n+3被复制,并在其上添加一位。对S2,n+3和C2,n+3的复制与添加的结果被输入到CSA1 120。CSA2 150的全加器156输出的和值S2,n+3被提供给CSA1 120的三个全加器123至125,以及进位值C2,n+3被提供给CSA1120的两个全加器124和125。
i)在(m+2)个时钟内执行完步骤b)和h)之后执行下面的操作。一个进位传送加法器(CPA)(未给出)对CSA2 150输出的该进位值及和值执行加法操作。如果该加法的结果值为负数,则在其上加模数N,但如果该加法的结果值为正数,则不用在其上加模数N。
例如,如方程3所示,如果A、B和N每一个都有12位,则依照上述处理的蒙哥马利模运算结果如下面的表3和表4所示。
方程3
N=0000.1010.0101.1001(0xA59) B=0000.0101.1100.0011(0x5C3)
N’=1111.0101.1010.0110 B’=1111.1010.0011.1100
2N=0001.0100.1011.0010 2B’=1111.0100.0111.1001
A=0000.1001.0011.1110(0x93E)
表3
i | Ai | CSA1输出SC | B符号位 | Carry-in | S1S0 | C |
i | 0 | 0000.0000.0000.00000.0000.0000.0000.000 | 0 | 0 | 00 | 0 |
0 | -2 | 1111.0100.0111.10010.0000.0000.0000.000 | 1 | 0 | 10 | 1 |
1 | 0 | 1111.0010.0010.10100.0001.0000.0010.100 | 0 | 1 | 11 | 0 |
2 | 0 | 1111.0011.0000.00000.0001.0000.0010.100 | 0 | 1 | 01 | 0 |
3 | 1 | 1111.1000.1111.00000.0000.1011.0000.011 | 0 | 1 | 11 | 0 |
4 | 1 | 1111.1110.1000.00000.0000.1010.1101.001 | 0 | 1 | 11 | 0 |
5 | -2 | 0000.0000.0000.00001.1110.1010.1101.001 | 1 | 1 | 10 | 1 |
6 | 1 | 1111.1110.1011.01100.0000.1010.1001.001 | 0 | 1 | 01 | 0 |
7 | 0 | 1111.1111.0011.01100.0000.0000.0000.000 | 0 | 1 | 00 | 1 |
表4
I | Ai | S1S0 | C | q2q1 | CSA2 outSC | Carry-in |
I | 0 | 00 | 0 | 000 | 0000.0000.0000.00000.0000.0000.0000.000 | 0 |
0 | -2 | 10 | 1 | 010 | (11).1110.0000.1100.1010(0)0.0010.1000.0110.000 | 1 |
1 | 0 | 11 | 0 | 001 | (11).1110.1000.0101.0010(0)0.0010.0100.0101.001 | 1 |
2 | 0 | 01 | 0 | 101 | (00).0001.0110.1000.1110(1)1.1110.0010.0110.001 | 1 |
3 | 1 | 11 | 0 | 001 | (11).1111.1001.1010.1110(0)0.0001.0100.1010.001 | 1 |
4 | 1 | 11 | 0 | 001 | (11).1111.1110.0000.1110(0)0.0001.0101.1010.001 | 1 |
5 | -2 | 10 | 1 | 010 | (11).1111.0000.1111.0010(0)0.0001.1101.0010.010 | 1 |
6 | 1 | 01 | 0 | 101 | (00).0000.0001.1000.0010(1).1111.1101.0110.111 | 1 |
7 | 0 | 00 | 1 | 000 | 1111.1111.1011.10100.0000.0000.0000.000 | 1 |
下面将说明通过本发明上述装置使用运算结果值计算模乘A·B mod N的处理。应当注意,对于本领域普通技术人员来讲,用于执行该处理的硬件结构是很明显的,因此,此处省略了详细的说明。执行下面的计算:
1)计算P=22(n+4)modN;
2)计算C=A·B·2-2(n+4)modN;以及
3)计算P·C·2-2(n+4)modN=A·B mod N。
下面将说明使用本发明上述装置运算的结果值来计算RSA运算所需的模幂me mod N的处理。执行下面的运算:
1)在寄存器(或存储器)中存储指数e;
2)在临时寄存器C中存储模数N;
3)将寄存器C和S初始化为“0”;
4)执行蒙哥马利模乘m’=fm(m,P,N)=m·P·R-1 mod N,其中P在模幂中是上述处理定义的预先计算的值,以及R=4n+2;
5)将m’载入该寄存器B;
6)使用载入寄存器B的值执行模平方运算,此处,将蒙哥马利模乘所需的乘数A从寄存器B中读出,该值是通过使用改进的Booth记录电路获得的;
7)向左移位该指数e;
8)忽略指数e的MSB 1,在下一位之后执行后面的步骤9)和10);
9)忽略指数e的一位(0或1)执行用于模平方运算的步骤4)和5),其中该平方运算所需的乘数和被乘数分别存储在寄存器A和寄存器B中;
10)如果指数e的当前位是1,在步骤9)之后执行用于模乘的步骤4)和5),其中该被乘数是寄存器B中的内容,乘数是在求幂中的底数m’;以及
11)在对指数e的所有位执行步骤8)至10)之后,再一次使用步骤4)执行该模乘,其中被乘数是寄存器B的内容,乘数是1。
如果在执行完上述的步骤1)至11)之后对保留在寄存器C和S内的值执行CPA运算的结果值是负数,则将模数N添加到其上。反之,如果该结果值是正数,这就是求幂me mod N的最终值,不需加模数N。
B-4.本发明的效果
从上述说明可见,本发明提供一种用于计算A·B·2-2(n+4)modN的电路,依靠此电路可以计算一般的模乘A·B modN。依照本发明计算的A·BmodN适用于硬件装置,该装置用于生成和验证数字签名的装置中。此外,本发明适用于基于IC卡的用于生成电子签名、验证身份以及加密/解密的硬件装置中。此外,本发明依靠执行模乘运算的电子签名装置,能提供用于加密和解密数据或消息的装置。另外,本发明能够实现现有的基于电子签名装置公开密钥密码系统,例如NIST-DSS,RSA,ELGamal以及Schnorr电子签名。
C.第二实施例
C-1.本发明的结构
图7给出了依照本发明第二实施例的一个模乘装置的结构框图。
参照图7,该模乘装置包括记录逻辑电路210,第一进位存储加法器(此处简写为“CSA1”)220,商逻辑电路230,选择器240,第二进位存储加法器(CSA2)250,以及与(AND)逻辑门260。该模乘装置是一个硬件装置,用于根据蒙哥马利算法在m+2个时钟内使用A、B和N(R=4m+2,m=n/2,-N≤A,以及B<N)计算A·B·R-1 mod N,其中,A、B和N每一个都具有n位输入。即,该模乘装置具有用于计算A·B·2-(n+4)mod N的结构。
每一个CSA 220和250的都由(n+4)个并行的全加器构成,每个全加器有一个3位输入,输出一位进位和一位和值。逻辑电路210基于乘数A执行改进的Booth记录操作,并输出(n+3)位的0、B、2B和3B值的其中一个。商逻辑电路230其输入有一个最低有效位(LSB)进位值C1,0以及两位来自CSA1 220和值的LSB位S1,1和S1,0、一个carry-in、以及B的符号位,输出2位的q1q0,该值用于确定模数简化的倍数。选择器240可由多路复用器(MUX)实现,基于确定的q值来选择并输出0、N、2N和3N的其中一个。AND逻辑门260执行与操作,CSA2 250输出的两位S2,1和C2,0作为其输入,并将与操作的结果值提供给商逻辑电路230作为carry-in信号。
虽然图7中没有给出细节,但应该注意该模乘装置包括用于将进位值以及和值存储长达每个时钟的临时存储寄存器C和R,该进位值以及和值来自CSA2 250的输出,还包括一个进位传送加法器,用于将存储在该临时存储寄存器C和R中的值相加输出一个总的值作为模乘的结果。
图8给出了图7中所示的记录逻辑电路210的详细结构框图。
参照图8,记录逻辑电路210 Booth记录由顺序移位乘数A所得的位串的两位较低位,多路复用具有被乘数B的Booth记录结果,输出(n+3)位二进制数。为了此目的,在记录逻辑电路210的前一级提供一个用于顺序移位乘数以生成一个移位串的移位寄存器202以及用于存储该被乘数的寄存器204。记录逻辑电路210也包括一个多路复用器(MUX)212。多路复用器212多路复用所生成的具有被乘数的位串的两个较低位ai+1和ai,并输出0、B、2B和3B作为多路复用的结果。记录逻辑电路210是基于乘数A实现改进的Booth记录的电路,其选择并输出(n+3)位0、B、2B和3B值的其中之一。
图9给出了图7所示的CSA1的详细结构框图。
参照图9,具有(n+4)个全加器221至225的CSA1 220具有作为其输入的(n+1)位的第一信号S2,2至S2,n+2、(n+2)位的第二信号C2,1至C2,n+2、以及来自记录逻辑电路210的(n+3)位二进制数的第三输入信号B0至Bn+2,依靠(n+3)个全加器221至225将所有的输入全加输出(n+3)位的进位值C1,0至C1,n+2以及和值S1,0至S1,n+2。该第一和第二信号是CSA2 250提供的信号,第三信号是记录逻辑电路210提供的。该第一信号的最高有效位S2,n+2被输入到全加器的第三高位全加器223中,该第二信号的最高有效位C2,n+2被输入到全加器的第二高位全加器224中。全加器的最高有效位全加器225具有“0”作为第一和第二信号,以及第二高位全加器224具有“0”作为第三信号。即,(n+1)位的第一信号S2,2至S2,n+2分别顺序的输入至CSA1 220的最低有效位全加器221和第(n+1)位全加器223,“0”作为第一信号被输入至第(n+2)位全加器224和第(n+3)位全加器225。此外,(n+2)位的第二信号C2,1至C2,n+2分别顺序的输入至CSA1 220的最低有效位全加器221和第(n+2)位全加器224,“0”作为第二信号分别顺序的输入至CSA1220的最低有效位全加器221和第(n+1)位全加器223。
图10给出了图7所示的商逻辑电路230的详细结构框图。
参照图10,商逻辑电路230具有作为其输入的两个较低位全加器输出的和值S1,0和S1,1以及最低有效位全加器输出的进位值C1,0,这是从CSA1 120的(n+4)位进位值以及和值中选出的,并输出一个2位的确定值q1q0来确定模数简化的倍数。商逻辑电路230包括D触发器232、半加器234、异或(XOR)逻辑门126以及组合电路238。D触发器232临时存储一位来自与逻辑门260的进位输入值Carry-in。半加器234将存储在D触发器232内的进位输入值Carry-in与CSA1 220的最低有效位全加器221输出的和值S1,0半加。异或(XOR)逻辑门236在CSA1 220的最低有效位全加器221输出的该进位值C1,0与次低全加器222输出的和值S1,1之间执行异或运算。组合电路238将半加器234的输出S0、异或逻辑门236的输出S1以及预置输入位n1合并,输出2位的确定值q1q0。
图11给出了图7所示的CSA2 250的详细结构框图。
参照图11,CSA2 250包括(n+3)个全加器251至256。CSA2 250包括从选择器240选出的(n+3)位的模数N(N0-Nn+2)作为第一输入信号,和来自CSA1 220的(n+3)位进位值中除了最高有效位进位值的(n+3)位的剩余进位值C1,0至C1,n+2作为第二输入信号,以及来自CSA1 220的(n+3)位和值中除了最低有效位和值的(n+2)位的剩余和值S1,1至S1,n+2作为第三输入信号,通过(n+3)个全加器251至256输出(n+3)位的进位值C2,0至C2,n+2和(n+3)位的和值S2,0至S2,n+2。第一输入信号的(n+3)位是从最低有效位的全加器251开始到全加器251至256分别依顺序输入的,第二输入信号的(n+2)位是从次低有效位的全加器252开始到全加器252至256分别依顺序输入的,第三输入信号的(n+2)位是从次低有效位的全加器252开始到全加器252至256分别依顺序输入的。全加器251至256的最低有效位全加器251的输入是来自商逻辑电路230的全加器234的输出S0以及来自与(AND)逻辑门260的进位输入值。
图12给出了图7所示的AND逻辑门的详细结构框图。
参照图12,AND逻辑门260将CSA2 250的最低有效位全加器251输出的进位值C2,0与次低位全加器251输出的和值S2,1全加,输出进位输入值Carry-in。该进位输入值Carry-in被提供给商逻辑电路230。
C-2.发明原理
本发明提供一种用于在m+2个时钟内使用A、B和N(R=4m+2,m=n/2,-N≤A,以及B<N)计算A·B·R-1 mod N的装置,群众,A、B和N具有n位的输入。下面将说明可用于实现本发明的两个原理。该两个原理包括表示用于模乘的乘数A和被乘数B的第一原理以及使用本发明记录原理的蒙哥马利算法的第二原理。
C-2a.2位扫描
本发明中,在每个时钟从LSB以两位扫描(或移位)该乘数A,然后将其与被乘数B相乘,该乘的结果用于蒙哥马利算法。因此,每个循环生成的ai是元素集{0、1、2、3}中的一个元素,该ai与被乘数B相乘,相乘的结果被输入至CSA1 220。
C-2b.基数-4蒙哥马利算法
下面方程4中例举的算法给出了本发明采用基数-4蒙哥马利模乘。原始的蒙哥马利算法将结果值与模数N进行比较,如果结果值大于模数N,则执行减法运算。然而,本发明下面的算法并没有示出原始蒙哥马利算法的这种比较和操作。
方程4
输入:N、-N<=A、B<N
输出:S=A·B·4m+2 mod N,0≤S<N
S=0 (1)
for i=0 to (n+1)/2 (2)
S=S+Ai×B (3)
qi(1,0)=f(s1,s0,n1,n0) (4)
S=S+qi×N (5)
S=S/22 (6)
end for (7)
在方程4的算法中,Ai在处理(3)是指两个被扫描的位。处理(4)是指能使处理(5)的结果值的两个最低有效位为“0”的函数。由于N是奇数且n0一直是1,所以处理(4)的结果值取决于输入位s1、s0、n1和n0,且对于蒙哥马利模乘来说,该值事实上如下面的表5所示的被确定。用于模数简化的值qi是元素集{0、1、2、3}中的一个元素,并依照方程5来计算。
方程5
q0=s0
表5
s0 | s1 | n1 | q1 | q0 |
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 0 |
0 | 1 | 0 | 0 | 0 |
0 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 1 |
1 | 0 | 1 | 0 | 1 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 | 1 |
C-3.本发明的操作
如图7所示本发明的装置在m+2个时钟内使用A、B和N(R=4m+2,m=n/2,-N≤A,以及B<N)计算A·B·R-1 mod N,作为其输入的A、B和N都具有n位。
下面将说明利用图7所示的装置计算A·B·R-1 mod N(其中R=4m+2)的处理。在下面的说明中,步骤a)是初始化步骤,步骤b)至h)是每个时钟执行的步骤,和步骤i)是在(m+2)个时钟期间执行步骤b)至h)后将被执行的步骤。
a)每一个都由n位组成并用于模乘的A、B和N被存储在各自的寄存器(或存储器)中。此外,n+2位的2B和3B存储在各自的寄存器(或存储器)中。虽然本发明的装置显示了在各自的寄存器202和204中存储输入A和B,而没有示出分别存储2B和3B的独立的寄存器,但对于本领域技术人员来说很明显,这种独立的寄存器可以被用在本发明的装置中。存储A的寄存器202是一个移位寄存器,每个时钟将A右移两位。存储A的寄存器表示为寄存器A,存储B的寄存器表示为寄存器B。在使用存储器的情况下,一次一个字的读出A和B。临时存储图7所示的CSA2 250计算结果的临时寄存器(或存储器)C和S(没有给出细节)被初始化为“0”。
b)当所有的数据被输入至寄存器202和204中的每一个时,记录逻辑电路210基于寄存器A 202中的两个LSB位执行Booth记录功能。记录逻辑电路210的MUX 212具有作为其输入的存储在寄存器204中的B的值,并基于寄存器A 202中的两个LSB位选择0、B、2B和3B值的其中一个,提供给CSA1220作为其三个输入的一个。
c)CSA1 220对三个输入的n+3位的带符号二进制数执行加法操作。CSA1220由n+3个全加器121至125构成。
d)商逻辑电路230具有作为其输入的来自CSA1 220的值S1,1、C1,0和S1,0、及来自与(AND)逻辑门260的Carry-in信号,依靠半加器234和异或逻辑门236计算并输出S1和S0。
e)商逻辑电路230的组合电路238其输入为步骤d)所得的S1和S0,依靠表5的真值表确定一个2位的值q。虽然没有给出依靠表5的真值表确定q值的电路的详细结构,但是通过一般的逻辑门电路实现用于确定q值的电路对本领域技术人员来讲是很明显的。
f)CSA2 250具有作为其输入的在步骤c)中CSA1 220输出的进位值及和值,以及通过步骤e)中所得q值的两个LSB位确定的从0、N、2N和3N中选择的n+3位的二进制数,以执行n+3位的无符号操作。CSA2 250由n+3个全加器251至256构成,类似于CSA1 220。应当注意,全加器251至256的LSB全加器251具有作为其进位输入的前一级生成的Carry-in信号。
g)与逻辑门260具有作为其输入的CSA2 250的输出值S2,1和C2,0,通过对该输入执行与操作输出Carry-in位。
h)来自CSA2 250输出的MSB的(n+2)个和值和(n+3)个进位值被反馈到CSA1 220作为其输入。该和值的两个较高位和进位值的一个较高位是“0”,且在CSA2 250中两个位被右移以用于到CSA1 220的反馈。从CSA2 250的全加器256输出的和值S2,n+2被提供给CSA1 220的第三最高全加器223,和值“0”被提供给MSB全加器225和第二最高全加器224。CSA2 250的全加器256输出的进位值C2,n+2被提供给CSA1 220的第二最高全加器224,进位值“0”被提供给MSB全加器225。
i)在(m+2)个时钟内执行完步骤b)和h)之后执行下面的操作。一个进位传送加法器(CPA)(未示出)对CSA2 250输出的该进位值及和值执行加法操作。
例如,如方程6所示,如果A、B和N中的每一个都有12位,则依照上述处理的蒙哥马利模运算结果如下面的表6和表7所示。此时,最终的运算结果如下所示:最终结果:
0111.1100.0111(0x7C7)+0010.1000.0000(0x280)+1=1010.0100.1000(0xA48)
方程6
N=000.1010.0101.1001(0xA59) B=000.0101.1100.0011(0x5C3)
2N=001.0100.1011.0010((0x13B2) 2B=000.101 1.1000.0110(0xB86)
3N=001.1111.0000.1011(0x1F0B) 3B=001.0001.0100.1001(0x1149)
A=000.1001.0011.1110(0x93E)
表6
I | Ai | CSA1输出SC | Carry-in | S1S0 |
I | 0 | 0000.0000.0000.00000000.0000.0000.000 | 0 | 00 |
0 | 2 | 000.1011.1000.01100000.0000.0000.000 | 0 | 10 |
1 | 3 | 001.0110.1100.01010000.0010.1001.001 | 0 | 11 |
2 | 3 | 001.0111.0000.00000000.0010.1001.001 | 1 | 01 |
3 | 0 | 000.1001.1010.00100000.0101.0000.000 | 1 | 00 |
4 | 1 | 000.0110.0101.0000 | 1 | 11 |
0000.0011.0000.011 | ||||
5 | 2 | 000.1001.0110.11011.1110.1010.1101.001 | 1 | 10 |
6 | 0 | 000.0100.0010.01000000.0101.0010.010 | 1 | 01 |
7 | 0 | 000.0101.0001.00000000.0101.0000.010 | 1 | 01 |
表7
I | Ai | S1S0 | q2q1 | CSA2输出SC | Carry-in |
I | 0 | 00 | 00 | 0000.0000.0000.00000.0000.0000.0000.000 | 0 |
0 | 2 | 10 | 01 | (0.0).010.1111.0011.0100(0).0000.0001.0000.010 | 0 |
1 | 3 | 11 | 01 | (0.0)001.1110.0000.1110(0).0000.0101.1010.001 | 1 |
2 | 3 | 01 | 11 | (0.0).000.1010.0011.1010(0).0010.1111.0000.011 | 1 |
3 | 0 | 00 | 00 | (0.0)000.1100.0100.1110(0).0000.0010.0000.001 | 1 |
4 | 1 | 11 | 01 | (0.0)000.1111.00 00.1110(0).0000.0100.1010.001 | 1 |
5 | 2 | 10 | 10 | (0.0)001.1010.1101.1010(0).0000.1010.0100.101 | 1 |
6 | 0 | 01 | 11 | (0.0)001.1110.0000.1010(0).0000.1010.0100.101 | 1 |
7 | 0 | 01 | 11 | (0.0)001.1111.0001.11100.0000.1010.0000.001 | 1 |
下面将说明使用本发明上述装置运算的结果值来计算模乘A·B mod N的处理。应当注意,对于本领域普通技术人员来讲,用于执行该处理的硬件结构是很明显的,因此,此处省略了详细的说明。执下面的计算:
1)计算P=22(n+4)modN;
2)计算C=A·B·2-2(n+4)modN;以及
3)计算P·C·2-2(n+4)modN=A·B mod N。
下面将说明使用本发明上述装置运算的结果值来计算RSA运算所需的模幂me mod N的处理。执行下面的处理:
1)将指数e存储在寄存器(或存储器)中;
2)将模数N存储在临时寄存器C中;
3)将寄存器C和S初始化为“0”;
4)执行蒙哥马利模乘m’=fm(m,P,N)=m·P·R-1 mod N,其中,P在模幂中是上述处理定义的预先计算的值,以及R=4n+2;
5)将m’载入该寄存器B;
6)使用载入寄存器B的值执行模平方运算,此处,将蒙哥马利模乘所需的乘数A从寄存器B中读出,该值是通过使用基数-4记录电路获得的;
7)向左移位该指数e;
8)忽略指数e的MSB1,在接下来的位之后执行后面的步骤9)和10);
9)忽略指数e的一位(0或1)执行用于模平方运算的步骤4)和5),其中该平方运算所需的乘数和被乘数分别存储在寄存器A和寄存器B中;
10)如果指数e的当前位是1,在步骤9)之后执行用于模乘的步骤4)和5),其中该被乘数是寄存器B中的内容,乘数是在求幂中的底数m’;以及
11)在对指数e的所有位执行步骤8)至10)之后,再一次使用步骤4)执行该模乘,其中被乘数是寄存器B的内容,乘数是1。
在执行完上述的步骤1)至11)之后,对留在寄存器C和S内的值执行CPA运算所得的值是求幂me mod N的最终值。
C-4.本发明的效果
从上述说明可见,本发明提供一种用于计算A·B·2-2(n+4)modN的电路,依靠此电路可能计算一般的模乘A·B modN。依照本发明计算的A·BmodN适用于硬件装置,该装置用于生成和验证数字签名的装置中。此外,本发明适用于基于IC卡的用于生成电子签名、验证身份以及加密/解密的硬件装置中。此外,本发明依靠执行模乘运算的电子签名装置,能提供用于加密和解密数据或消息的装置。另外,本发明能够实现现有的基于电子签名装置的公开密钥密码系统,例如NIST-DSS,RSA,ELGamal以及Schnorr电子签名。
D.本发明的应用实例
图13给出了一个IC卡的框图,通过使用本发明公开的蒙哥马利型模乘装置其能够执行加密和电子签名。
在图13中,一个中央处理单元(CPU)310译出指令来执行加密、验证和电子签名,并为协同处理器330提供模运算所需的控制信号和数据。只读存储器(ROM)350包括一个用于使数据安全的安全模块,例如,加密和电子签名所需的密钥。还给出了控制逻辑电路320和随机存取存储器(RAM)340,为执行上述操作提供逻辑电路和存储器。
虽然出于举例的目的给出了本发明的优选实施例,但本领域技术人员应理解,在没有脱离后附权利要求所公开的本发明的范围与精神的情况下,可能进行不同的修改、添加及删减。
Claims (63)
1、一种用于实现消息加密/解密技术的模乘装置,其中,使用第一密钥(B)和第二密钥(N)加密/解密消息(A),该模乘装置包括:
存储装置,用于存储长度都是n位的该消息、第一密钥和第二密钥;
记录逻辑电路,用于在每个时钟处使用该消息和该第一密钥生成第一n+4位信号;
第一进位存储加法器,用于使用该第一n+4位信号和两个并行的n+4位输入信号生成由一个进位值和两个和值组成的3位序列;
商逻辑电路,使用该3位序列和一个进位值生成用于确定模数简化倍数的3位限定词;
选择器,使用第二密钥和该3位限定词生成第二n+4位信号;
第二进位存储加法器,使用该第二n+4位信号和第一进位存储加法器输出的各自的和值和进位项生成一对和值和一对进位值;以及
第一全加器,用于通过对这对和值和进位值以及在先前时钟处从商逻辑电路输出的进位值(cin)执行全加操作生成进位输入值。
2、如权利要求1所述的装置,其中,该存储装置包括用于存储各自的消息、第一密钥和第二密钥的移位寄存器。
3、如权利要求1所述的装置,其中,在每个时钟处将消息右移2位。
4、如权利要求1所述的装置,其中,该第一n+4位信号是0、B、2B、-B和-2B其中之一。
5、如权利要求1所述的装置,其中,该第二n+4位信号是0、N、2N、-N和-2N其中之一。
6、如权利要求1所述的装置,其中,该记录逻辑电路包括:
Booth记录电路,用于对该消息的两位最低有效位执行Booth记录;
多路复用器,用于对该两位最低有效位和该第一密钥执行多路复用以输出0、B和2B其中之一;以及
一的补码器,依照该两位最低有效位对该多路复用器输出的该n+1位信号执行一的取补运算,以生成0、B、2B、-B和-2B其中之一。
7、如权利要求1所述的装置,其中,该第一进位存储加法器包括n+4个第二全加器,每一个全加器对该两个并行的n+4位输入信号的相应的和值和进位以及该第一n+4位输入信号的相应位执行全加操作,以生成该3位序列。
8、如权利要求7所述的装置,其中,该两个并行的n+4位输入信号中的第一输入信号是按以下方式生成的:从该第二进位存储加法器的和值项中选择最高有效n+2位并插入两位作为所选n+2位的最高有效位。
9、如权利要求8所述的装置,其中,这两个最高有效位为零。
10、如权利要求8所述的装置,其中,该两个并行的n+4位输入信号中的第二输入信号是按以下方式生成的:从该第二进位存储加法器的进位项中选择最高有效n+3位并插入一位作为所选n+3位的最高有效位。
11、如权利要求10所述的装置,其中,该最高有效位为零。
12、如权利要求1所述的装置,其中,该商逻辑电路包括:
D触发器,用于临时存储来自第一全加器的进位输入值;
第三全加器,用于对该进位输入值、该第一进位存储加法器的最低有效位全加器输出的和值以及第一n+4位信号的符号位执行全加运算;
一个异或(XOR)逻辑门,用于对该第一进位存储加法器的最低有效位全加器输出的进位值和该第一进位存储加法器的次最低有效位全加器输出的和值以及第三全加器的进位值执行异或运算;以及
一个组合电路,用于对第三全加器和异或逻辑门的输出及第二密钥的次最低有效位进行组合,并输出该3位限定词信号。
13、如权利要求1所述的装置,其中,该第二进位存储加法器包括n+4个第四全加器,每一个全加器对来自该第一进位存储加法器的除了和值的最低有效位及进位的最高有效位之外的相应的和值和进位以及该第二n+4位信号的相应位执行全加操作,生成该对和值和进位值。
14、如权利要求1所述的装置,其中,该第一全加器对第二进位存储加法器的次低有效位全加器输出的和值和该第二进位存储加法器的最低有效位全加器输出的进位值以及在先前时钟处从商逻辑电路输出的进位值(cin)执行全加操作,并生成该进位输入值。
15、如权利要求1所述的装置,还包括一个进位传送加法器,在m+2个时钟之后对该第二进位存储加法器输出的和值和进位项执行进位传送加法操作,其中m=n/2。
16、如权利要求15所述的装置,其中,如果该进位传送加法器的值是负的,则该进位传送加法器将第二密钥的模加到该进位传送加法运算的结果中。
17、一种用于实现消息加密/解密技术的模乘装置,其使用第一密钥(B)和第二密钥(N)对消息(A)加密/解密,该模乘装置包括:
存储装置,用于存储长度为n位的该消息、第一密钥和第二密钥;
记录逻辑电路,用于使用该消息和第一密钥在每个时钟处生成第一n+3位信号;
第一进位存储加法器,通过对该第一n+3位信号和两个并行的n+3位输入信号执行第一进位存储加法操作,生成由一个进位值和两个和值组成的3位序列;
商逻辑电路,通过对该3位序列和一个进位值执行商操作,生成一个用于确定模数简化倍数的2位限定词;
选择器,使用该第二密钥和该2位限定词生成第二n+3位信号;
第二进位存储加法器,通过对该第二n+3位信号和第一进位加法操作输出的分别的和值项和进位项执行第二进位存储加法操作,输出一对和值和一对进位值;
与(AND)逻辑门,通过对该对和值和进位值执行与操作,输出一个进位输入值。
18、如权利要求17所述的装置,其中,该存储装置包括用于存储各自的消息、第一密钥和第二密钥的移位寄存器。
19、如权利要求18所述的装置,其中,在每个时钟将该消息移动2位。
20、如权利要求17所述的装置,其中该第一n+3位信号是0、B、2B和3B其中之一。
21、如权利要求17所述的装置,其中,该第二n+3位信号是0、N、2N和3N其中之一。
22、如权利要求17所述的装置,其中,该记录逻辑电路是一个多路复用器,用于对消息的两位最低有效位和n位的第一密钥执行多路复用,输出该第一n+3位信号。
23、如权利要求12所述的装置,其中,该第一进位存储加法器包括n+3个第一全加器,每一个全加器对两个并行的n+3位输入信号的相应的和值和进位以及该第一n+3位输入信号的相应位执行全加操作,输出该3位序列。
24、如权利要求23所述的装置,其中,该两个并行的n+3位输入信号中的第一输入信号是按以下方式生成的:从该第二进位存储加法器的和值项中选择最高有效位的n+1位并插入两位作为所选的n+1位的最高有效位。
25、如权利要求24所述的装置,其中,这两个最高有效位为零。
26、如权利要求24所述的装置,其中,该两个并行的n+3位输入信号中的第二输入信号是按以下方式生成的:从该第二进位存储加法器的进位项中选择最高有效位的n+2位并插入一位作为所选的n+2位的最高有效位。
27、如权利要求26所述的装置,其中,该最高有效位为零。
28、如权利要求17所述的装置,其中,该商逻辑电路包括:
D触发器,用于临时存储来自与(AND)逻辑门的该进位输入值;
半加器,用于对该进位输入值和该第一进位存储加法器的最高有效位全加器输出的和值执行半加运算;
异或(XOR)逻辑门,用于对该第一进位存储加法器的最低有效位全加器输出的进位值和次低有效位全加器输出的和值以及该半加器的输出值执行异或运算;
组合电路,用于对该半加器和异或逻辑门的输出及第二密钥的次最低有效位(n1)进行组合,并输出该2位限定词信号。
29、如权利要求17所述的装置,其中,该第二进位存储加法器包括:
n+3个第二全加器,每一个全加器对来自该第一进位存储加法器的除了和值的最低有效位及进位的最高有效位之外的相应的和值和进位以及该第二n+3位信号的相应位执行全加操作,生成该对和值和进位。
30、如权利要求17所述的装置,其中,该与(AND)逻辑门对该第二进位存储加法器的次低有效位第二全加器输出的和值及该第二进位存储加法器的最低有效位第二全加器输出的进位值执行与(AND)操作,生成该进位输入值。
31、如权利要求17所述的装置,还包括一个进位传送加法器,在m+2个时钟之后对该第二进位存储加法器输出的和值项和进位项执行进位传送加法操作,其中m=n/2。
32、一种用于实现消息加密/解密技术的模乘方法,其中,使用第一密钥(B)和第二密钥(N)对消息(A)加密/解密,该模乘方法包括:
存储n位的消息、第一密钥和第二密钥;
在每个时钟使用该消息和第一密钥生成第一n+4位信号;
通过对该第一n+4位信号和两个并行的n+4位输入信号执行第一进位存储加法操作,生成由一个进位值和两个和值组成的3位序列;
通过对该3位序列和一位输入进位值执行商操作,生成一个用于确定模数简化倍数的3位限定词;
使用该第二密钥和该3位限定词,生成第二n+4位信号;
通过对该第二n+4位信号和第一进位加法操作输出的分别的和值和进位项执行第二进位存储加法操作,输出一对和值和一对进位值;
通过对这对和值和进位值以及在先前时钟处从商逻辑电路输出的进位值执行全加操作输出一个进位输入值。
33、如权利要求32所述的方法,其中,在每个时钟处将该消息右移2位。
34、如权利要求32所述的方法,其中,生成该第一n+4位信号的处理包括:
对该消息的两个最低有效位执行Booth记录;
根据这两个最低有效位生成0、B、2B、-B和-2B其中之一。
35、如权利要求32所述的方法,其中,该两个并行的n+4位输入信号中的第一输入信号是按以下方式生成的:从该第二进位存储加法操作的和值项中选择最高有效n+2位并插入两位作为所选的n+2位的最高有效位。
36、如权利要求32所述的方法,其中,这两个最高有效位为零。
37、如权利要求32所述的方法,其中,该两个并行的n+4位输入信号中的第二输入信号是按以下方式生成的:从该第二进位存储加法操作的进位项中选择最高有效n+3位并插入一位作为所选的n+3位的最高有效位。
38、如权利要求32所述的方法,其中,该最高有效位为零。
39、如权利要求32所述的方法,其中,该3位序列包括两个和值和一个进位值。
40、如权利要求39所述的方法,其中,该两个和值是第一进位存储加法操作输出的和值项中的最低有效位和次低有效位。
41、如权利要求39所述的方法,其中,该一位输入进位值是第一进位存储加法操作输出的进位值项中的最低有效位。
42、如权利要求32所述的方法,其中,该一个输入进位值是由全加操作生成的该进位输入值。
43、如权利要求32所述的方法,其中,根据3位限定词的两个最低有效位从0、N、2N-N和-2N中选出该第二n+4位信号。
44、如权利要求32所述的方法,其中,该对和值和进位值是第二进位存储加法操作输出的和值项中的次低有效位和进位值项中的最低有效位。
45、如权利要求32所述的方法,其中,第一进位存储加法操作输出的和值项和进位值项中的最高有效位被忽略。
46、如权利要求32所述的方法,还包括在m+2个时钟之后对该和值项和进位项执行进位传送加法操作,其中m=n/2。
47、如权利要求46所述的方法,还包括如果该进位传送加法操作输出的值是负的,则加上模第二密钥。
48、一种用于实现消息加密/解密技术的模乘方法,其使用第一密钥(B)和第二密钥(N)对消息(A)加密/解密,该模乘方法包括:
存储长度都为n位的该消息、第一密钥和第二密钥;
在每个时钟使用该消息和第一密钥生成第一n+3位信号;
通过对该第一n+3位信号和两个并行的n+3位输入信号执行第一进位存储加法操作,输出由一个进位值和两个和值组成的3位序列;
通过对该3位序列和一位输入进位值执行商操作,生成一个用于确定模数简化倍数的2位限定词;
使用该第二密钥和该2位限定词,生成第二n+3位信号;
通过对该第二n+3位信号和第一进位加法操作输出的各自的和值和进位项执行第二进位存储加法操作,输出一对和值和一对进位值;
通过对这对和值和进位值执行与(AND)操作输出一个进位输入值。
49、如权利要求48所述的方法,其中,在每个时钟处将该消息右移2位。
50、如权利要求48所述的方法,其中,通过多路复用该消息的两个最低有效位及第一密钥生成该第一n+3位信号。
51、如权利要求48所述的方法,其中,该第一n+3位信号是0、B、2B和3B其中之一。
52、如权利要求48所述的方法,其中,该两个并行的n+3位输入信号中的第一输入信号是按以下方式生成的:从该第二进位存储加法操作的和值项中选择最高有效位的n+1位并插入两位作为所选n+1位的最高有效位。
53、如权利要求52所述的方法,其中,这两个最高有效位为零。
54、如权利要求52所述的方法,其中该两个并行的n+3位输入信号中的第二输入信号是按以下方式生成的:从该第二进位存储加法操作的进位项中选择最高有效位的n+2位并插入一位作为所选n+2位的最高有效位。
55、如权利要求54所述的方法,其中,该最高有效位为零。
56、如权利要求48所述的方法,其中,该3位序列包括两个和值和一个进位值。
57、如权利要求56所述的方法,其中,该两个和值是第一进位存储加法操作输出的和值项中的最低有效位和次低有效位。
58、如权利要求56所述的方法,其中,该一个进位值是第一进位存储加法操作输出的进位值项中的最低有效位。
59、如权利要求48所述的方法,其中,该一个输入进位值是由与(AND)操作生成的该进位输入值。
60、如权利要求48所述的方法,其中,根据2位限定词从0、N、2N和3N中选出该第二n+3位信号。
61、如权利要求48所述的方法,其中,该对和值和进位值是第二进位存储加法操作输出的和值项中的次低有效位和进位值项中的最低有效位。
62、如权利要求48所述的方法,其中,第一进位存储加法操作输出的和值项和进位值项中的最高有效位被忽略。
63、如权利要求48所述的方法,还包括在m+2个时钟之后对该第二进位存储加法操作输出的和值项和进位项执行进位传送加法操作,其中,m=n/2。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR16100/03 | 2003-03-14 | ||
KR10-2003-0016100A KR100458031B1 (ko) | 2003-03-14 | 2003-03-14 | 몽고메리 유형의 모듈라 곱셈 장치 및 방법 |
KR16100/2003 | 2003-03-14 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1530824A true CN1530824A (zh) | 2004-09-22 |
CN100527072C CN100527072C (zh) | 2009-08-12 |
Family
ID=32768648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100326816A Expired - Lifetime CN100527072C (zh) | 2003-03-14 | 2004-03-14 | 用于执行蒙哥马利型模乘法的装置及方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US7564971B2 (zh) |
EP (1) | EP1457875B1 (zh) |
JP (1) | JP4554239B2 (zh) |
KR (1) | KR100458031B1 (zh) |
CN (1) | CN100527072C (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021777B (zh) * | 2006-07-07 | 2010-08-25 | 开曼群岛威睿电通股份有限公司 | 基于除数(2n-1)的有效求模操作运算 |
CN103761068A (zh) * | 2014-01-26 | 2014-04-30 | 上海交通大学 | 优化的蒙哥马利模乘方法、模平方方法和模乘硬件 |
CN104298937A (zh) * | 2013-07-15 | 2015-01-21 | 英飞凌科技股份有限公司 | 用于存储器地址加密的装置和方法 |
CN109190414A (zh) * | 2018-08-09 | 2019-01-11 | 宁波大学 | 一种用于乘法器的全同态混淆方法 |
US10678709B2 (en) | 2013-07-15 | 2020-06-09 | Infineon Technologies Ag | Apparatus and method for memory address encryption |
CN114063975A (zh) * | 2022-01-18 | 2022-02-18 | 中科南京智能技术研究院 | 一种基于sram存内计算阵列的计算系统及方法 |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
SG115534A1 (en) * | 2003-04-04 | 2005-10-28 | St Microelectronics Asia | Method and apparatus for performing modular arithmetic |
US7355562B2 (en) * | 2004-02-17 | 2008-04-08 | Thomas Schubert | Electronic interlocking graphics panel formed of modular interconnecting parts |
JP4170267B2 (ja) * | 2004-07-09 | 2008-10-22 | Necエレクトロニクス株式会社 | 乗算剰余演算器及び情報処理装置 |
KR101194837B1 (ko) | 2005-07-12 | 2012-10-25 | 삼성전자주식회사 | 멱지수를 숨기는 dpa 대책의 고속 계산을 위한 암호화장치 및 방법 |
JP4182226B2 (ja) * | 2005-08-24 | 2008-11-19 | 国立大学法人名古屋大学 | 剰余系の計算方法及び装置並びにプログラム |
KR100901280B1 (ko) | 2006-12-07 | 2009-06-09 | 한국전자통신연구원 | 모듈러 3 연산 장치 및 방법 |
EP2208165A4 (en) * | 2007-11-02 | 2010-11-24 | Certicom Corp | MONTGOMERY ARITHMETIC SIGNED |
US8417756B2 (en) * | 2007-11-29 | 2013-04-09 | Samsung Electronics Co., Ltd. | Method and apparatus for efficient modulo multiplication |
US8386546B2 (en) * | 2009-02-27 | 2013-02-26 | George Mason Intellectual Properties, Inc. | Montgomery multiplication architecture |
KR101925868B1 (ko) * | 2012-05-17 | 2018-12-06 | 삼성전자주식회사 | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 |
CN102929575B (zh) * | 2012-10-29 | 2015-04-15 | 电子科技大学 | 一种模(2n+3)乘法器 |
US10591983B2 (en) * | 2014-03-14 | 2020-03-17 | Wisconsin Alumni Research Foundation | Computer accelerator system using a trigger architecture memory access processor |
KR102132261B1 (ko) * | 2014-03-31 | 2020-08-06 | 삼성전자주식회사 | 비교 연산이 필요없이 최종 모듈러 감소를 하는 몽고메리 곱셈 방법 및 곱셈기 |
CN107766032A (zh) * | 2016-08-15 | 2018-03-06 | 清华大学 | 多项式基GF(2^n)乘法器 |
US11068238B2 (en) * | 2019-05-21 | 2021-07-20 | Arm Limited | Multiplier circuit |
US11636224B2 (en) * | 2019-12-19 | 2023-04-25 | Micro Focus Llc | Generating hash values for input strings |
US12050885B2 (en) * | 2020-02-26 | 2024-07-30 | Gsi Technology Inc. | Iterative binary division with carry prediction |
CN112486457B (zh) * | 2020-11-23 | 2022-12-20 | 杭州电子科技大学 | 一种实现改进的fios模乘算法的硬件系统 |
WO2022115108A1 (en) * | 2020-11-27 | 2022-06-02 | Pqsecure Technologies, Llc | An architecture for small and efficient modular multiplication using carry-save adders |
US12010231B2 (en) * | 2021-06-23 | 2024-06-11 | Pqsecure Technologies, Llc | Computer processing architecture and method for supporting multiple public-key cryptosystems based on exponentiation |
TWI802095B (zh) | 2021-11-22 | 2023-05-11 | 財團法人工業技術研究院 | 模數乘法電路與對應之計算模數乘法之方法 |
Family Cites Families (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS62154029A (ja) | 1985-12-27 | 1987-07-09 | Hitachi Tobu Semiconductor Ltd | 乗算回路 |
US4862405A (en) | 1987-06-30 | 1989-08-29 | Digital Equipment Corporation | Apparatus and method for expediting subtraction procedures in a carry/save adder multiplication unit |
US5247605A (en) * | 1990-07-02 | 1993-09-21 | General Electric Company | Neural nets supplied synapse signals obtained by digital-to-analog conversion of plural-bit samples |
US5513133A (en) * | 1992-11-30 | 1996-04-30 | Fortress U&T Ltd. | Compact microelectronic device for performing modular multiplication and exponentiation over large numbers |
US6317769B1 (en) * | 1996-09-18 | 2001-11-13 | International Business Machines Corporation | Apparatus for calculating of Bc (mod n) with repeatedly shifting a holding value |
ES2293677T3 (es) * | 1997-05-04 | 2008-03-16 | Sandisk Il Ltd | Aparato y metodo mejorados para la multiplicacion y exponenciacion modulares basadas en la multiplicacion de montgomery. |
US5847981A (en) * | 1997-09-04 | 1998-12-08 | Motorola, Inc. | Multiply and accumulate circuit |
US6223198B1 (en) * | 1998-08-14 | 2001-04-24 | Advanced Micro Devices, Inc. | Method and apparatus for multi-function arithmetic |
US6275841B1 (en) * | 1997-12-11 | 2001-08-14 | Intrinsity, Inc. | 1-of-4 multiplier |
FR2791156B1 (fr) * | 1999-03-17 | 2001-05-11 | St Microelectronics Sa | Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery |
FR2791155B1 (fr) * | 1999-03-17 | 2001-05-11 | St Microelectronics Sa | Dispositif et procede de mise en oeuvre d'une operation modulaire elementaire selon la methode de montgomery |
US7062657B2 (en) | 2000-09-25 | 2006-06-13 | Broadcom Corporation | Methods and apparatus for hardware normalization and denormalization |
US6963977B2 (en) * | 2000-12-19 | 2005-11-08 | International Business Machines Corporation | Circuits and methods for modular exponentiation |
FR2822260A1 (fr) * | 2001-03-14 | 2002-09-20 | Bull Sa | Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire |
JP4188571B2 (ja) * | 2001-03-30 | 2008-11-26 | 株式会社日立製作所 | 情報処理装置の演算方法および耐タンパ演算攪乱実装方式 |
US20020172355A1 (en) | 2001-04-04 | 2002-11-21 | Chih-Chung Lu | High-performance booth-encoded montgomery module |
US7174015B1 (en) * | 2001-04-25 | 2007-02-06 | State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University | Methods and apparatus for variable radix scalable modular multiplication |
US6973470B2 (en) * | 2001-06-13 | 2005-12-06 | Corrent Corporation | Circuit and method for performing multiple modulo mathematic operations |
US6973471B2 (en) * | 2002-02-22 | 2005-12-06 | Freescale Semiconductor, Inc. | Method and apparatus for implementing signed multiplication of operands having differing bit widths without sign extension of the multiplicand |
JP2004258141A (ja) * | 2003-02-24 | 2004-09-16 | Fujitsu Ltd | モンゴメリ乗算剰余の多倍長演算のための演算装置 |
US20040252829A1 (en) * | 2003-04-25 | 2004-12-16 | Hee-Kwan Son | Montgomery modular multiplier and method thereof using carry save addition |
US7266580B2 (en) * | 2003-05-12 | 2007-09-04 | International Business Machines Corporation | Modular binary multiplier for signed and unsigned operands of variable widths |
KR20050088506A (ko) * | 2004-03-02 | 2005-09-07 | 삼성전자주식회사 | 다중 세정도를 지원하는 확장형 몽고메리 모듈러 곱셈기 |
US7386580B2 (en) * | 2004-03-18 | 2008-06-10 | Arm Limited | Data processing apparatus and method for computing an absolute difference between first and second data elements |
GB2419787B (en) * | 2004-10-28 | 2007-07-04 | Hewlett Packard Development Co | Method and apparatus for providing short-term private keys in public-key cryptographic systems |
-
2003
- 2003-03-14 KR KR10-2003-0016100A patent/KR100458031B1/ko active IP Right Grant
-
2004
- 2004-03-11 JP JP2004069540A patent/JP4554239B2/ja not_active Expired - Lifetime
- 2004-03-12 US US10/800,181 patent/US7564971B2/en active Active
- 2004-03-12 EP EP04005915A patent/EP1457875B1/en not_active Expired - Lifetime
- 2004-03-14 CN CNB2004100326816A patent/CN100527072C/zh not_active Expired - Lifetime
-
2007
- 2007-09-04 US US11/849,880 patent/US8209369B2/en active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101021777B (zh) * | 2006-07-07 | 2010-08-25 | 开曼群岛威睿电通股份有限公司 | 基于除数(2n-1)的有效求模操作运算 |
CN104298937A (zh) * | 2013-07-15 | 2015-01-21 | 英飞凌科技股份有限公司 | 用于存储器地址加密的装置和方法 |
CN104298937B (zh) * | 2013-07-15 | 2018-11-09 | 英飞凌科技股份有限公司 | 用于存储器地址加密的装置和方法 |
US10678709B2 (en) | 2013-07-15 | 2020-06-09 | Infineon Technologies Ag | Apparatus and method for memory address encryption |
CN103761068A (zh) * | 2014-01-26 | 2014-04-30 | 上海交通大学 | 优化的蒙哥马利模乘方法、模平方方法和模乘硬件 |
CN103761068B (zh) * | 2014-01-26 | 2017-02-01 | 上海交通大学 | 优化的蒙哥马利模乘硬件 |
CN109190414A (zh) * | 2018-08-09 | 2019-01-11 | 宁波大学 | 一种用于乘法器的全同态混淆方法 |
CN114063975A (zh) * | 2022-01-18 | 2022-02-18 | 中科南京智能技术研究院 | 一种基于sram存内计算阵列的计算系统及方法 |
Also Published As
Publication number | Publication date |
---|---|
JP4554239B2 (ja) | 2010-09-29 |
US20040179681A1 (en) | 2004-09-16 |
KR100458031B1 (ko) | 2004-11-26 |
EP1457875B1 (en) | 2011-07-06 |
EP1457875A3 (en) | 2006-06-28 |
CN100527072C (zh) | 2009-08-12 |
JP2004280103A (ja) | 2004-10-07 |
US7564971B2 (en) | 2009-07-21 |
EP1457875A2 (en) | 2004-09-15 |
US8209369B2 (en) | 2012-06-26 |
KR20040081581A (ko) | 2004-09-22 |
US20080065713A1 (en) | 2008-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1530824A (zh) | 用于执行蒙哥马利型模乘法的装置及方法 | |
CN1296817C (zh) | 模乘方法及装置及模乘计算单元 | |
CN1702613A (zh) | 蒙哥马利模乘法器 | |
Kuang et al. | Energy-efficient high-throughput Montgomery modular multipliers for RSA cryptosystems | |
Schinianakis et al. | An RNS implementation of an $ F_ {p} $ elliptic curve point multiplier | |
Kuang et al. | Low-cost high-performance VLSI architecture for Montgomery modular multiplication | |
CN1265280C (zh) | 扩展整数的计算域的范围 | |
CN1153129C (zh) | 用于处理器定制操作的设备 | |
CN1364284A (zh) | 数据变换装置和数据变换方法以及记录用以在计算机上执行数据变换方法的程序的计算机可读取存储媒体 | |
CN1306390C (zh) | 使用带符号的数位表示的乘法器 | |
Lai et al. | Elixir: High-throughput cost-effective dual-field processors and the design framework for elliptic curve cryptography | |
CN1251715A (zh) | 有限域离散对数密码系统的割圆多项式结构 | |
CN1259617C (zh) | 一种加快rsa加/解密过程的方法及其模乘、模幂运算电路 | |
CN1728634A (zh) | 伽罗瓦域中相乘的方法和设备与求逆设备及字节替换设备 | |
CN1411630A (zh) | 用于生成循环余数核对代码以及生成其他基于余数的编码的方法、设备和产品 | |
CN1867889A (zh) | 数据转换器 | |
CN1258057A (zh) | 信息处理装置 | |
CN1630204A (zh) | 具有矩阵转换技术的循环冗余码计算方法及系统 | |
CN1338166A (zh) | 公用与专用密钥加密方法 | |
CN1242321C (zh) | 应用蒙哥马利算法的幂剩余运算器 | |
CN1607518A (zh) | 在Montgomery乘法内利用SIMD指令 | |
JP2006023648A (ja) | 乗算剰余演算器及び情報処理装置 | |
CN1315040C (zh) | 一种逻辑可重组电路 | |
CN101304312B (zh) | 一种适用于精简指令集处理器的加密单元 | |
CN1967469A (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 | ||
CX01 | Expiry of patent term | ||
CX01 | Expiry of patent term |
Granted publication date: 20090812 |