CN1449519A - 扩展整数的计算域的范围 - Google Patents

扩展整数的计算域的范围 Download PDF

Info

Publication number
CN1449519A
CN1449519A CN01809599A CN01809599A CN1449519A CN 1449519 A CN1449519 A CN 1449519A CN 01809599 A CN01809599 A CN 01809599A CN 01809599 A CN01809599 A CN 01809599A CN 1449519 A CN1449519 A CN 1449519A
Authority
CN
China
Prior art keywords
character
value
multiplication
multiplier
bit
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
Application number
CN01809599A
Other languages
English (en)
Other versions
CN1265280C (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.)
Msystem Co ltd
SA disk Israel Ltd.
Original Assignee
Milsys 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
Priority claimed from IL13615100A external-priority patent/IL136151A0/xx
Priority claimed from IL13967400A external-priority patent/IL139674A/en
Application filed by Milsys Ltd filed Critical Milsys Ltd
Publication of CN1449519A publication Critical patent/CN1449519A/zh
Application granted granted Critical
Publication of CN1265280C publication Critical patent/CN1265280C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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
    • 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/60Methods 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/72Methods 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/724Finite field arithmetic
    • 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/60Methods 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/72Methods 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/728Methods 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

Landscapes

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

Abstract

一种对能同时约简的串行/并行蒙哥马利模乘法的扩展,这种方法与本申请人以前所采用的方法一样,其创新性的改造是它既可以在素数上执行又可以在基于GF(2q)的多项式数域上执行,它以一种方式简化了操作数的流程,通过执行一个多预测函数来增强以前的模数乘法的过程。

Description

扩展整数的计算域的范围
技术领域
本发明涉及一种用于加速加密协处理过程的外围设备,特别涉及但并不局限于一种用于基于多项式和素数域算法的加速处理装置,它扩展了整数的计算域的范围,以及在为椭圆曲线和RSA类型的计算所设计公开密钥加密协处理器中的模运算的串行输入的操作数的宽度。
发明的背景
计算设备的安全性增强和性能加速在下列文献中予以描述:本申请人的美国专利5,742,530,及其后续的“P1”,5,513,133,5,448,639,5,261,001;以及5,206,824和出版的PCT专利申请PCT/IL98/00148(WO98/50851);以及相应的美国专利申请09/050958,及其后续的“P2”,Onyszchuk等人的美国专利4,745,568;Omura等人的美国专利4,5877,627,以及本申请人的美国专利09/480,102;上述公开内容作为参考被引入本文。本申请人的美国专利5,206,824显示了一个用于实现基于多项式的乘法和平方的早期的装置,但它不能在素数域上执行运算,而且不是为基于多项式的计算中的交错过程而设计的。在Paar,C.,F.Fleischmann和P.Soria-Rodriguez,“Fast Arithmetic forPublic-Key Algorithms in Galois Fields with Composite Exponents”,IEEETransactions on Computers,vol.48,No 10,October 1999(以下称为“Paar”),一文中利用基于多项式运算中的扩展域的方法做了进一步的分析。在MIT Press,Cambridge,Mass.1972年出版的“Error-Correcting Codes”第二版的第174-179页,W.Wesley Peterson和E.J.Weldon Jr.展示了一个执行基于多项式的留数系统GF(2q)除法的电路,以下称为“Peterson”。Peterson的电路只能用于乘数恰好等于模的长度的设备中。典型地,这要求一个设备的长度超过本设备的两倍,并且这将不是对于紧凑型的应用有效的成本。它不能用于有交错的实施方案,并且当l长于1时也没有用处,因为它没有提供一个用于多比特字符Y0的装置。
尽管,Knuth[D.Knuth,The art of computer programming,vol.2:Seminumerical algorithms,Addison-Wesley,Reading Mass.,1981]407页,暗示了在单l比特字符的基于多项式的除法中采用一种常规的除法,我们采取一种用于预测商的下一个字符的方法,本发明公布了一种用于预测商的下一个字符的方法,它确定性地采用一种逻辑结构。
发明的概述
本发明的一个目的是提供一种用于在基于多项式和基于素整数的数域中执行大数计算的微电子电路的专用运算单元,采用用于同时进行交错的模数乘法和可变基数的乘数的约简的相同的预测法。
本发明的进一步的目的还涉及一种紧凑型的微电子电路专用的算术逻辑单元,用于在非常大的整数上执行模数的和正规的(自然数,整数的非负域)乘法、除法、加法、减法和幂运算。当提到模数乘法和平方,其中既采用了蒙哥马利方法又采用了反向形式的方法用于简化的基于多项式乘法和平方时,指的是本设备的某一特定部分,所述的设备是超标量模数算术协处理器,或SMAP,或MAP或SuperMAPTM,同时涉及存在于本申请人1998年3月31日提交的,并在审理中的美国专利申请09/050,958以及2000年1月10日提交的部分继续申请09/480,102中增补方案。
这里描述的本发明优选实施例提供了一个模数计算算符,用于在便携式智能卡(Smart Card)上的公开密钥加密应用,这种卡一般的形状和大小与流行的磁条信用卡和银行卡相同。类似的智能卡,象本申请人的美国专利5,513,133和5,742,530中的技术,以及本申请人上面提到的审理中的申请正被用于新一代的公开密钥加密设备,这些设备用于控制对计算机、数据库、和关键设备的访问;在商业、军事、以及国内交易中的数据流的管理和安全防范;扰频的付费电视节目的解扰等等,以及类似应用的终端设备。一般,这些设备也组装在计算机和传真终端中、门锁上、自动售货机里等等。
优选的结构是集成在多个微处理器或数字信号处理设备中的装置,以及用于精简指令集计算设计中,而该装置同主机的处理单元并行工作。
本实施例优选地仅采用一个乘法设备,它自然地可提供二或三个乘法装置的功能,基本上类似于在本申请人的5,513,133和进一步在美国专利申请09/050,958增补的以及PCT申请PCT/IL98/0048中所描述的结构。采用当前的常规的微电子电路技术,本发明的装置可以和带存储器的控制单元集成在一个智能卡的微电子电路上。
在基于多项式域上和在素数域上的硬件实现的主要区别是基于多项式加法和减法是简单的XOR逻辑运算,不需要从LS传播到MS的进位信号。因此,在硬件实现中邻近的单元之间没有交互作用,并且减法和加法是相同的过程。本申请人所知的最早的公开是在1994年theFondazione Ugo Bordoni的Marco Bucci在意大利的佩鲁贾在Eurocrypt大会的后期会议的一个短讯,从那以后,这个结构为本技术领域中的工程师们所熟知。
在P1和P2中描述的本申请人以前的装置是典型地为有效地在GF(p)域中计算椭圆曲线加密协议而准备的。对于在GF(2q)中的应用,在本发明中,我们证明由于在多项式域中相邻的二进制位之间没有交互,计算可以更有效地执行,在超标量乘法设备上同时进行约简和乘法而不用引入蒙哥马利函数和蒙哥马利寄生。进行在GF(2q)的乘法,作为计算机优选地从最高有效位部分乘积开始。约简是通过相加所需的足够数量的模而把MS的1复位为0进行的。由于没有进位,在这些加法中,结果被自动地模数约简。在本发明中,多项式计算采用同样的结构进行,这里,在GF(2q)中操作数首先被送入MS字符,这里所有内部的进位信号被强制为零。GF(p)计算优选地执行,如P1和P2中所述,这里首先处理LS字符而最后处理MS字符。
该结构已被扩展为允许一种潜在的更快的进程,方法是串行乘数是l比特宽的字符,并且在每一个时钟脉冲,从进位保存累加器CSA中发出一个l比特的字符。这是稍微使预测过程(Y0)变得复杂,因为对于单比特宽的总线,在模2x的基数上对一个奇数的求逆仍然是一个奇数,并且被乘数(J0)的最低有效位总是1。然而,对这两个数域,其约简过程是相同的,其中假定断开(抑制)进位,只要我们记住我们的唯一目的是要输出一个k字符的零串,并且我们认为Y0函数仅是一个零强制向量。
本发明也寻求提供一种用于数字设备的结构,它是常规数字处理器的一个外围设备,它在计算、逻辑和结构上相对于在美国专利5,513,133中所描述的处理器具有新的特性。
本发明提供了一种并发进程和一个硬件结构,它们执行模数幂,不必象典型的,传统的乘/除设备所执行的那样,把幂运算分为相同次数的操作,这里传统的设备一般地在每一次操作中既要执行一个大规模的乘法又要执行除法。本发明的一个优选的实施例的特别的特性是更大规模预测零强制函数的并发,数域的扩展,以及把这种类型的单元集成用于安全通信的能力。
本发明的一个优选的实施例所实现的优点源于串行进程的同步序列。这些进程经合并同时地(并行)在n字符操作数上完成了3个乘法运算,在n个有效的时钟周期内用到了一个多路的k字符串行/并行乘法器,其中结果中的左边最后k个字符驻留在乘法设备的输出缓存器中。就象蒙哥马利所描述的那样对素数域该过程完成了相当于在两个域中的三个乘法计算,以及在GF(2q)中相当于两个乘法和一个除法的处理。
通过对到SuperMAP操作数的同步装载和快速地检测操作数的值,以及快速地预装载并同时与下一个要用到的操作数相加,该装置可以以一种确定性方式执行计算。所有的乘法和幂电路都优选地加上,在快速地预装载中用于下一次迭代的平方序列的前三个k字符变量。优选地,要提供一个检测设备,其中三个操作数中仅选两个用作下次迭代的被乘数,省掉了k个有效时钟周期的等待状态。条件分支被替换为本地检测和补偿设备,这为简单控制机制提供了基础。这里所描述的基本操作被典型地在GF(p)中的确定性时间内执行,其中采用Gressel等人在美国专利5,513,133中所描述的设备或在法国Rousset的STMicroelectronics的商品名为ST19-CF58的设备。
对于大多数操作,本发明的装置对外部易失性存储器的需求是非常少的,因为对于操作中所需的操作数的全部长度都装载并存储在本装置中。本装置优选地使用这种CPU,它可使本装置附加于其上,为本装置执行简单地加载和卸载以及指令队列,而MAP执行其大数计算。目前应用于智能卡的大数的范围是从128比特到2048比特的基本应用。幂处理的时间实际上不依赖于控制它的CPU。实践中,当把本装置附加在任何CPU上时,结构的改变一般是不必要的。该硬件设备是自包含的,并且优选地是添加在任何CPU总线上。
总之,本发明还涉及大整数的算法处理。这些大整数一般地是在整数的自然(非负)域或者在素数的伽罗瓦域,GF(p),复合素数模,以及在GF(2q)中基于多项式的数。更特别地,本发明的优选的实施例寻求提供可以实现大数的模运算和幂的设备。这些设备适于执行公开密钥加密认证和加密协议的操作,这种操作是在素数域上在非常大的操作数上进行,并且它在当前一般的模运算协处理器上不能有效地执行,同时,在软件实现中不能安全地执行。优选地,同样的通用结构用于在数量级较小的整数上椭圆曲线。采用乘法的新的反转模式方法,多项式算法具有优势,因为生成零不妨碍寄生的2-n因数的计算。
本结构提供了一个大整数操作数运算的模数实现,同时也允许普通的,更小的操作数运算,这是通过加宽串行单字符总线,即采用大的基数实现的。一般地,这对于加速计算、减小实现SuperMAP的硅区域、以及制造与流行的数字信号处理器(DSP)的长度相兼容的设备是有用的。
对于在素数和奇数复合域上的模数乘法,A和B本别被定义为被乘数和乘数,而N被定义为模运算中的模。N一般地大于A或B。N同时表示存储模值的复合寄存器。在某些时候,N一般地比A小。A、B和N一般地是n个字符长,其中字符一般地是1到8比特长。k是在由乘法设备的大小(单元的数目)定义的组大小的l比特字符的数目。类似地在基于多项式的GF(2q)计算中,模数N是n比特长的,其中MS比特是1(首项系数为1),并且A、S和B操作数在适当约简后也是n比特长的。如果一个GF(2q)的计算结果是首项系数为1的,最好把它“约简”为一个值,这个值的MS位为零,约简的方法是把所述的结果与模进行异或。在优选的实施例中,当一个GF(2q)的第一有效比特以反向模式构成时,MAP可以判断该比特是否为1并执行适当的约简。
在素域中,“≡”,或者在某些情况下“=”,用于表示模数的同余,例如16≡2 mod 7。16被称为“同余”为2模7,因为当16除以7时余数为2。当Y mod N≡X mod N时;Y和X都可以比N大;然而,对于正数X和Y,其余数是相等的。还要注意负整数Y的同余数是Y+uN,其中N是模,并且如果Y的同余小于N,则u是给出正结果的最小的整数。
在GF(2q)中的同余更为简单,因为加法和减法是相同的,并且普通的计算一般不会有潜在的溢出问题。例于N=1101和A=1001,由于A的左边MS比特是1,我们必须通过采用模2运算从A中约简(“减法”)N,A XOR N=1001 XOR 1101=0100。
符号用来表示狭义的同余,这在GF(p)中特别有用。在这里所描述的过程中,一个值通常或为所需要的值,或等于所需要的值加上模。例如X2 mod 7。X可以等于2或9。X定义为狭义同余为2 mod 7。当符号用于上标时,就象在B中,那么0≤B<2N,或换一种说法,B或者等于与B同余的最小的正数B,或者等于最小的正同余数B加上模N。在本发明中专用的其它符号在本概述的后面出现。
当X=A mod N,X定义为A除以N的余数;例如,3=45 mod 7,而在GF(2q)中更简单-1111 mod 1001≡0110。
在数论中,X的模数乘法的逆记为X-1,其定义为X·X-1 mod N=1。如果X=3,而N=13,则X-1=9,即在GF(p)中3·9除以13的余数是1。
对于两种数域,我们一般地选择用指数函数计算A的乘法逆,例如,A-1 mod q≡Aq-2 mod q。
在提及比特、字符、以及整个操作数值时,缩写MS和LS用来分别表示“最高位”和“最低位”,就象在数字术语中常用的那样,但在基于多项式的求逆模式中,操作数被装载为MS数据在先LS数据在后,其中数据字的比特顺序在装载时被反转。
在本说明书中N既表示值N,又表示存储N的移位寄存器的名称。值的星号上标表示这个值作为中间值可能不完整或将会改变。A是将需要求幂的数字的值,而n是操作数N的比特长度。初始化后当A被“蒙哥马利P域归一化”为A*(A*=2nA-P1中已说明)A*和N在幂运算的整个中间步骤中一般为常量。在GF(2q)计算中,当计算需要在正常的非逆的比特位置上执行时,我们将遵循同样的协议。然而,采用逆的形式,我们的计算导致最高有效位为0,这将被忽视,并且它不代表一个乘法的移位,因为这没有进位。
在第一次迭代,在求幂的初始化之后,B等于A*。B也是寄存器的名称,其中累加值最后会等于所需要的求幂的结果,它驻留在这个寄存器中。S或S*表示一个临时的值;并且S表示存储在GF(p)的数S的除了单MS比特外的所有比特的一个或若干寄存器。(S*连接上这个MS比特就等于S。)S(i-1)表示在第i次迭代输出端的S的值。在这些多项式计算中,在S上不需要执行模数约简。
一般地,在素数域上X和Y的蒙哥马利乘法实际上是执行(X·Y·2-n) mod N,其中n一般是在一个模数中字符的数量。这被记为,P(A·B)N,并记MM或在P域中的乘法。在蒙哥马利算法的上下文中,我们把在P域中和基于多项式域中乘法和平方称为乘法和平方操作。
我们将重新定义在GF(2q)中蒙哥马利型算法的这个创新性的扩展,使其表示逆形式的数据序列,其中MS零强制不会改变同余或产生一个繁重的寄生因子。因此,我们可以引入一套新的符号以适应运算的扩展,并且允许一种更宽的串行乘法器总线结构。这个不止一比特的串行乘法器流优先于允许一个自然整数的超标量的乘法器。这个乘法器设备可以接受32比特被乘数和4比特乘数,到一个可以同时执行模数算术乘法和约简的装置。
串行/并行超标量模数乘法器增强型符号
l   一个字符(数字)中的比特数。
r   乘法器字符的基数,r=2l
n   操作数(乘数、被乘数和模)的大小,以字符计。在蒙哥马利算法GF(p)域中计算的示例中,l等于1,而n为模数操作数的比特长度。
k   串行-并行乘法器的长度,以字符计。
m    被乘数的交错片(段)的数目:m=n/k。
Si  第i次MM迭代的部分积;0≤i≤m-1;S0=0。
Si0 第i次迭代的结果的右边的字符,在丢弃Z的右边前k字符的0后。
S i  第i次迭代的结果左边n-k字符。
Sij Si的第j个字符。
A    并行的被乘数,由m·k个字符组成。
Ai  A的第i个k字符的片,(和/或存储Ai的寄存器)。
Ait Ai的第t个字符。
B    一个串行乘数(和/或存储B的寄存器)。
B0  B的右边最前面的k个字符。
B   B的左边最后(n-k)个字符。
B0j B0的第j个字符。
B j  B的第j个字符。
N    模数操作数。(和/或存储所述的乘数的寄存器)。
N0  N的右边k个字符。{在GF(p)上的LS字符,在GF(2q)上的MS字符}
N   N的左边(n-k)个字符。{在GF(p)上的MS字符,在GF(2q)上的LS字符}
N0j N0的第j个字符。
N j  N的第j个字符。
Y0  在GF(p)域中蒙哥马利乘法和约简所需的零强制变量。Y0有k个字符长。
Y0j Y0的第j个字符。
R    驻留在进位保留累加器中的和值,(包括未解析的内部进位ins)以及来自最后的串行加法器进位,460。
J00 对于“快速的”有限域乘法和约简,模数N的零强制字符函数。对于l=1,J00总是等于1。
Carryj  基数r的串行-并行乘法器的第j个内部进位字符。
Carrya  对于GF(p)计算,串行加法器输出的基数r的进位。
Sumj基数r的串行-并行乘法器第j个内部和字符。
LS   最低有效位
MS   最高有效位
‖   串联,也就是A=110,B=1011;A‖B=1101101。
Right Hand所有GF(p)计算数据块的低位部分和求逆的GF(2q)格式的MS部分。
Left Hand所有GF(p)计算数据块的高位部分和求逆的GF(2q)格式的LS部分。
GF(p)伽罗瓦域,严格说来,在素数上的有限域,我们也使用复合整数(两个很大的素数的乘积)并允许做加、减、乘和伪除法。
GF(2q)伽罗瓦域,使用模2运算的有限域。
为了适应特殊的数字系统,用来外部地切换带进位或不带进位的加或减整数的算符或设备。
用于切换或者在GF(p)上或者在GF(2q)上执行乘法的算符或设备。
S数字域切换器,假如
S=1,切换器使能所有进位输入/输出为GF(p)计算。
S=0,切换器禁用所有进位输入/输出为GF(2q)计算。
SuperMap私有的超标量模运算处理器系列的任何一个成员是从属于这个发明的。SuperMap商标是在欧洲登记的并且在美国正在审理中。
根据本发明的第一个方面,因此这里提供了一个作用于执行在基于多项式GF(2q)和GF(p)域的运算的 乘法和平方的微电子电路装置,平方和约简采用一个串行馈送的基数为2l的乘数,B,和k字符的被乘数段,Ai,和一个k字符的 累加器,其中约简到一个狭义同余是以“快速的”方式执行的,以一种收缩的方式,这里Ai是被乘数,乘以B,乘数,在模为N的条件下,并且其结果最多有2n+1个字符长,包括k个首先出现的被忽略的零字符,这些零字符不被保存,这里的k个字符没有比模数低的比特位,所述的操作在两个阶段里执行,本装置包括:
第一(B)、和第二(N)主存储寄存器部件,每个寄存器用于保持至少n比特长的操作数,分别用来存储一个乘数值,用B表示,以及一个模数,用N表示,这里这个模数小于2n
一个数字逻辑判断检测器,Y0,用于“快速的”预测何时需要把模数值 的加到 加法累加器中的值上,以使从该设备中发出的前k个字符被强制为零;
对至少k字符输入乘数的一个模数乘法设备,它仅有一个,至少k字符长的 加法器, 求和设备用于接受k字符的乘数, 乘法设备用依次换到 累加器设备,乘数的值也依次从B寄存器中接收乘数值,并且一个“快速的”,同时生成的的预测值作为乘数,用于在第一阶段强制首先发出的k个零输出字符,其中在每个有效的机器周期里,至少一个指定的乘数被 地加到 累加器设备;
被乘数值被依次切换到包括下面三个被乘数中的一个或两个的 累加器设备,第一个被乘数是全零的字符串值,第二个值是被乘数Ai,而第三个值是模的N0段;
一个预测器用于预测l比特的k字符串行输入乘数值Y0
本装置可用于轮流输入乘数值到乘法装置,所述的值在第一阶段首先是B操作数,而同时,由Y0组成的第二个乘数值,“快速的”预测k字符的字符串,用来强制首先出现的输出为零;
本装置进一步包括一个累加器设备, ,用于在被乘数被 累加器设备的同时输出值;
一种输出传递机制,在第二阶段用于从 累加器设备上输出最终的模数 乘法结果。
根据优选的实施例,到 累加器设备的 加法是通过每次重新串行地加载的更高阶乘数字符串来实现的。
优选地,乘数字符串可以保证在输入B字符和相应的输入Y0字符都为零时,使到 累加器设备的 求和不发生;
可以保证在输入B字符为1而相应的Y0字符为零时, 仅加到被乘数Ai上;
可以保证在输入B字符为0而相应的Y0字符为1时, 仅加到模N上;并且
可以保证在输入B字符和相应的Y0字符都为1时, 加到模数N和被乘数Ai求和上。
优选地,本装置可用于预装载被乘数值Ai和N到两个专门的预装载缓冲器,并把这些值 加到第三个被乘数预装载缓冲器,消除了单独对每个被乘数进行 加操作的必要性。
优选地,乘数字符值为输入排列成串行的单字符形式,并且其中的Y0检测装置用于在一个时钟序中仅预测一个字符。
在一个优选的实施例中,其中的 累加设备执行模2计算,异或加法/减法,其中加法和减法部件中的所有进位比特都被忽略,因此,排除了在计算中溢出和进一步限制的收敛条件。
优选地,进位输入被无效为零,用S=0来表示,一般用于进行基于多项式乘法。
优选地,本装置通过进位删除电路提供无进位运算,当S等于零时,它的作用是:在GF(2q)中执行方程计算的电路单元,S指示删除电路和所有的加法器和减法器,专用的 为XOR,模2加/减法单元。
一个优选的实施例被调整,使得从操作单元发出的前k个字符段为零,在下一个依次Y0字符的预测中通过下面四个量进行控制:
i.Ai寄存器的右边字符乘以B流的Bd字符,A0 Bd mod 2l的l比特乘l比特模2l乘法的结果中的l比特的Sout比特;
ii.从 累加器,S(CO0)中首先发出的进位字符;
iii.从 累加器,SO1,的右边字符发出单元中的第二个l比特的Sout字符;
iv.l比特的J0值,它是N0模数被乘数寄存器中的右边字符负乘性逆,
其中,值A0 Bd mod 2l,S(CO0),以及SO1按字符 相加到一起,并且“快速的”乘以J0字符,输出一个有效的Y0零强制预测字符以强制一个l比特的输出字符串为零。
本装置优选地用于执行基于多项式操作数的乘法以逆模式执行,乘法从右边的MS字符向左边的LS字符执行,用于执行模数约简的 乘法,而不需要蒙哥马利型的寄生函数。
优选地,本装置进一步包括串行馈送的预装载缓冲器,被乘数从一个或多个存储器设备中“快速的”预装载进预装载缓冲器。
本装置优选地用于 相加到一个被乘数流,一个从附加的n比特S寄存器发出的先前的值,通过一个l比特 加法电路,使得当Y0检测器检测在 累加器设备中把模 加到 求和的必要性时,首先发出的输出字符为零,其中Y0检测器用于检测、利用下一个依次的 相加字符A0 Bd mod 2l、S(CO0)、SO1、Sd和S(COz),合成的 相加的字符被“快速地”有限域 乘以l比特的J0值,其中 定义了加法而 定义了乘法,它们在本过程中适用于有限域。
优选地,对于l=1,J0固定为1,并且J0乘法是固有的,不需要额外硬件。
优选地,一个比较器用于判断一个来自 模数乘法设备的有限域输出,它工作在GF(p),这里发出的右边前k个零字符被忽略,这里输出大于模数N,它就控制一个模数约简,其中所述的值是来自乘发器设备的输出流的目标存储寄存器的输出,因此避免了为较小的积值分配第二个存储寄存器设备。
优选地,对于在GF(2q)中的 模数乘法,本装置用于乘法,而无需一个额外的预先计算的超过l比特的零强制因子。
一个优选的实施例是,通过把A操作数值或B操作数值复位为零,并且设置部分结果值S0为1,来计算J0常数。
根据本发明的第二个方面,提供了一个微电子电路装置,用于执行整数A和B的交错有限域模数乘法,可以产生一个A乘以B模N的输出流,其中在模数操作数寄存器中的字符数目,n,大于k个字符的段长度,其中 乘法过程以大量的交错迭代方式进行,在每一次交错的迭代中,操作数包括模数N、乘数B、上一步计算的部分结果S、以及被乘数A的k字符的字符串段被送入 乘法设备,分段地处理从A0字符串段到Am-1字符串段,每次的迭代结果被依次 加到序列中的下一个临时结果S,这里迭代结果的前面发出的字符是零,该装置包括:
第一(B)、第二(S)和第三(N)主存储寄存器,每个寄存器分别用于存储乘数值、部分结果值和模数;
一个模数乘法设备用于在大量的 乘法迭代过程的阶段中的每一步,把按顺序的大量的被乘数值中的一个或两个 加到 累加器设备,并且按顺序作为乘数轮流接收,输入来自:
所述的B寄存器,
一个“快速的”先行值Y0,作为乘数它用于强制在每次迭代中右边首先输出零字符,以及
所述的N寄存器;
被乘数并行寄存器用于至少依次接收来自A、B、和N寄存器源的值,以及依次地还有一个被乘数零强制Y0值;
本装置进一步利用了Y0检测装置,它用于产生一个二进制字符串,在第一阶段用作乘数,在第二阶段用作被乘数;
本装置用于获得适用于第一阶段切换到 累加器设备的被乘数值,它包括第一个零值、第二个值Ai,它是被乘数A的k字符的字符串段、以及第三个值N0,它是模数N发出的前k个字符;
本装置进一步作用于,利用一个临时的结果值S,它是上一次迭代的结果,用于和来自 累加器设备发出的值 相加,为顺序地下一次迭代产生一个部分结果;
本装置进一步用于,利用依次输入的被乘数值,它送入 累加器设备用于乘法的第二阶段,它包括第一个开头零值、第二个在第一阶段留在原位的Ai操作数、以及第三个在第一阶段已经预测得到的Y0值;
乘数值在第一阶段被送入乘法装置,它首先是发出的字符串B0,所述的乘法装置用于,乘以所述的字符串段同时 乘以第二个由预测值Y0字符串组成的 乘数值,它是按字符同时装载的,它为第二阶段被生成到预装载被乘数缓冲器;
两个乘数值在第二阶段输入到本装置,它们分别是B操作数的左边的n-k个字符值,记为 B,以及模数N的左边的n-k个字符值,记为N;以及
所述的装置还包括一个乘法输出设备,它在最后一个阶段作用于传送驻留在 累加器设备上的结果的值的左边的段到一个结果寄存器。
优选地,本装置在基于多项式操作数上以逆模式执行 乘法,乘法从MS字符到LS字符,用于执行模数约简而不需要象本申请人的美国专利5,742,530中那样的蒙哥马利类型的寄生函数。
根据本发明的第三个方面,提供了利用被乘数的首先输出值来预测Y0值的装置,而该输入有乘数B、来自 累加器的进位值、来自 累加器的 累加值、来自上一步计算的部分结果的当前值、以及来自的加法器的进位值,这个 加法器把来自 累加器的结果和上一次的部分结果 相加。
优选地,本装置被改造以确保来自该设备的前k个发出值为零字符,所述的改造包括对下一个依次的Y0字符的预测,它用到下列量:
i.Ai寄存器的右边字符乘以B流的Bd字符,A0 Bdmod 2l的l比特乘l比特模2l乘法的结果中的l比特的Sout比特;
ii.从 累加器,S(CO0)中首先的进位字符;
iii.从 累加器,SO1,的右边字符发出单元中的第二个l比特的Sout字符;
iv.来自S流的依次下一个字符值,Sd
v.来自Z输出全加器的l比特的进位字符,S(COz);
vi.l比特的J0值,它是N0模数被乘数寄存器中的右边字符负乘性逆,
其中,值A0 Bdmod 2l,S(CO0),SO1,Sd按字符 相加到一起,并且“快速的” 乘以J0字符,输出一个有效的Y0零强制预测字符。
在进一步的实施例中还提供了至少一个检测器用于比较输出结果和模数N,其机制在于在结果寄存器的输出上启动一个第二减法器,以输出一个模约简的值,它是输出结果值的狭义同余,免除了为较小结果分配第二个内存存储的必要。
在更进一步的实施例中,两个被乘数的 和值被装载进一个预装载字符缓冲器,它有至少k字符的记忆部件的寄存器,而同时,前面的值之一被装载进另一个预装载缓冲器。
根据本发明的第四个方面,提供的装置具有一个 累加器和一个具有零强制预测机制,用于执行一系列交错的模数 乘法和平方,并被改造成并行执行等效于三个自然整数的乘法操作,使得结果是一个幂。
在一个实施例中,下一个依次地用到的被乘数被快速地预装载进一个预装载寄存器缓冲器。
在进一步的实施例中,缓冲器和寄存器装置作用于装载来自外部存储器源的值,所述的缓冲器和寄存器在计算时卸载到外部存储器源中,这样,操作数的最大尺寸就取决于可用的存储器部件。
在更进一步的实施例中,还提供了记忆寄存器部件,所述的记忆部件一般是串行单字符输入/串行单字符输出,并行至少k字符输入/并行至少k字符输出,串行单字符输入/并行至少k字符输出,以及并行k字符输入/串行单字符输出。
优选地本装置提供,在乘法型迭代的最后阶段,乘数输入为零的字符,它用于刷新进位保存 累加器内存的左边段。
优选地,本装置先于迭代需要时,下一个顺序的被乘数快速地预装载到预装载记忆缓冲器。
优选地,本装置快速地从中心存储器部件上预装载被乘数值到预装载缓冲器。
同样的装置计算k字符的蒙哥马利常数J0,相对于模数的右边的k字符段,优选地通过把A和B都复位为零并设置S0=1,然后执行一个k比特的乘法。结果将驻留在Y0寄存器中。使用蒙哥马利类型算法的模数乘法序列
k字符进位保存加法器,CSA,是用在多项式域和素数域的串行/并行超标量模数乘法的基础。基于多项式GF(2q)的算法最好在所有进位机制关闭下执行。
串行-并行超标量蒙哥马利乘法器分三个阶段计算蒙哥马利模数乘积,其中在一个最优的实施例中,最后一个阶段可能是带CAS进位的整个左边k个字符段的单时钟转储(MS用于通常的乘法,LS用于逆模式的多项式计算),并且在一个更简洁的实施例中,最后阶段可能是k个有效的时钟串行刷新CSA的内容。
在前面P2的公布中,Y0因子被1比特1比特的计算,因此,通过定义一个1和模数右边比特的方程,只有J0右边的比特是有意义的。在这个增强的设备中,设备是字符串行的,在每一个时钟周期Y0的一个l比特字符被产生。正如在前面P1中公布的,Y0是第一阶段的零强制函数,它在模数的值上增加必要的倍数到一个累加值,以致相关的结果是适合的,并且不会长于mk+1个字符,同时最右边出现的字符是全零的。X+ON≡X,当ON≡0modN。模数乘法序列
最初计算前,我们假设设备中没有以前暂时的或随机的值;操作数N,B和A的至少第一段值存在于设备的寄存器中。S0=0;初始化时部分乘积是典型值0。特别地,在操作数上执行的模数算法包括两个或多个k字符段,特别在三个不同的阶段。对于一个通常的完全乘法中,其中模数有m段,特别地有m个超标量乘法交错反复,因此被乘数的每一段被乘上一个总乘数,通常是B。
第一阶段的过程,在(i=0段)每一个交错超标量乘法的是通常的相互超标量乘法累加:
Si AI·B0 Y0·N0
(B0和Y0是馈送到乘法器的第一段操作数字符的串行字符,Ai和N0是并行单限操作数,Si是前一个迭代/计算产生的部分乘积。在第0次迭代时Si=0)
第一个阶段使用带前一个结果的右边段的两个超标量乘积的 累加。零的k字符串从乘法设备中送出,并被丢弃;部分的第一段结果放在设备缓存器中,并被求和成为第二阶段的结果。
第一阶段结果一般包括R,CSA的内容被与全零的右边段的串行输出联接。(在GF(p)计算中,R有另外的LS进位比特)
第二阶段的过程是通常的相互超标量乘法累加:
R Si AI· BY0· N
(注意,画线的变量,举例来说 B是一个操作数保留的左边值。它一般地有一个或多个段,也就是,m-1个段。 BN是1比特1比特地串行馈送到乘法器中的,并且Ai是从第一个阶段保留下来的,Y0在第一个阶段是一个乘数,并在第一个阶段装载进机器,在后面的迭代中成为被乘数,是一个并行操作数)。
在第二个阶段的后面,一般包括m-1次迭代,保留在CSA中的Si的左边段-准备被传输-并且右边段(k字符段)从设备中发出,一般地进入一个S寄存器。注意在素数域的乘法是以通常的进位保留加法来执行的。在GF(2q)的逆形式乘法是从最高有效位到最低有效位进行的。当一个模数值必须被加到累加器中时,将使用Y0函数。除了在设备中禁用进位,机制过程对两个数字系统来说一般是一致的。
我们公布用于在有限域导出零强制向量Y0j字符的方法。
计算:J0j≡-N00 -1mod2l
对一个模数是互素数的所有的自然整数在两个数域是乘性逆的。N00是奇数,因此没有2的因子。mod2l的所有因子是2,因此所有的数至少有最低有效位1,并且模数仅有因子2,是互素数,J0j总是存在的。形式上,对于素数N00和2l,gcd(N00,2l)=1。
方程的单字符可被用随机逻辑、带简单电路、或者带简单查找表的硬件实现。只有2k-1个不同的值必须能从查找表中推出。在逆模式格式中,多项式模数必须被右对齐,名义上是奇数。在典型的求幂方程中,两个数域,模数比特的右边比特位是1,名义上是奇数,并且一个奇数mod2k的乘性逆必须总是奇数。
假如l=1,J00的乘数显式的等于1,并且不需要被计算。
在第一个阶段被Y0方程所强制的一个字符输出的结果总是0,因此SuperMAP的第j个字符的输出Zij是:
0=(2lR Sij Ai0·B0j Y0j·N00)mod2l=Zij;因此,
(R Sij Ai0·B0j)≡-Y0j·N00;并且
Y≡-N00 -l(R Sij Ai0·B0j)mod r。
从上面的等式,我们可以知道在两个数域,J00最好是模数右边k个字符的模乘性逆的负值;注意模2运算,正值和负值是一样的。
R是CSA中的驻留值加上从图2中最后的串行加法器460输出的进位位的和。Sij是在第i次迭代的部分乘积的第j位。Ai0是A的第i片的最右边的字符(在GF(p)中的LS)。B0j是B的第j个字符。在蒙哥马利乘法的所有迭代中B0是常数(乘数)。Y0是在每一次(第i次)迭代中产生的k字符向量。Y0j是在迭代的第一个阶段的第j个时钟周期产生的第j个字符。N是一m模数。N0是模数的右边片。N00是N0的右边字符。
两个域标准化超标量模数乘法的方法:
S0=0
对于i=0到m-1(交错迭代)
第一阶段:(每一次交错)
R=0
对于j=0到k-1(第一阶段的每一个字符)
Y0j=(J00(R S0j Ai0 B0j))mod2l
Zij=(R S0j Ai0 B0j Y0j N0)mod2l;并且
R=[(2lR S0j Ai0 B0j Y0j N0)]/2l
k个有效的时钟周期后,Z流的第一个段是全零,并被丢弃;相关的Y0、k字符向量,被准备用做下一个阶段的被乘数,并且和值R将被用在下一个阶段。
第二阶段:
对于j=k到n-1
Zij=(R Sij Ai0 B0j Y0j N0j)mod2l
R=[(2lR Sij Ai0·B0j Y0j·N0j)]/2l
上面的基于串行-并行乘法器带一个字符的算法实现是上面的协议的简单扩展。
(Quotient(x,y)是不带余数的整数除法函数。例如,假如x=10101b,并且y=10000b,那么Quotient(x,y)=1)。
S0=0
对于i=0到m-1(交错循环)
第一阶段:
对于j=0到k-1
Y0j=(J00 Si0 Ai0 B0j SCarry0 Sum1 Quotient(Si0 Sum0,r)))mod r
对于t=0到k-1(带一个时钟周期的整个循环)
Sumt=(Sumt+1 SCarryt Ait B0j Y0j N0t)modr
Carryt=(Quotient((Sumt+1 Carryt Ait B0j Y0j N0t),r)
(在这个阶段乘法器输出是0)
第二阶段:
主要部分
Carrya=0
对于j=k到n-1
对于t=0到k-1(带一个时钟周期的整个循环)
Sumt=(Sumt+1 SCarryt Ait Bj Y0t Nj)mod r
Carryt=(Quotient((Sumt+1 Carryt Ait Bj Y0t Nj),r)
Si,j-k=(Si,j-2k Sum0 SCarrya)mod r
Carrya=Quotient((Si,j-2k Sum0 SCarrya),r)
乘法器的刷新
对于j=n到(n+k-1)
对于t=0到k-1(带一个时钟周期的整个循环)
Sumt=(Sumt+1 SCarryt)mod r
Carryt=Quotient((Sumt+1 Carryt),r)
Si,j-k=(Si,j-2k Sum0 SCarrya)mod r
Carrya=Quotient((Si,j-2k Sum0 SCarrya),r)
在GF(p)中,对当l=1这个特殊情况例子的正式的解释,见P1。
上面描述了用于进行交错有限域整数A和B模数乘法运行产生A乘以B模N的输出流的一个微电子电路的方法和装置,其中n是在模操作数寄存器中的字符的数量,并且大于k,其中 乘法过程是交错进行的,其中在每一个带操作数输入到 乘法设备的交错迭代中,包括模数N、乘数B、前面计算的部分结果S和被乘数A的k字符串段、字符串段是从A0字符串段到Am-1字符串段,其中每一个迭代结果是 加到S依次的下一个,暂时结果,依次地,其中,迭代结果第一个输出的字符是0,本装置包括:
一般地,这有四个用来给乘法器馈送串行l比特字符寄存器,第一个(B),第二个(S)和第三个(N)和被配置成乘法器有效负载的优选的(A)。为了计算那些特别在MAP内部积存器中不适用的长的操作数,CPU可从辅助存储器中装载操作数。
特别地,这些主存储寄存器存储和输出操作数,分别存储一个乘数,部分结果值和模数N。
在迭代 乘法过程的阶段中,按顺序,模数乘法设备运行 加到 累加器,依次加上多个被乘数值的1个或2个,并且顺序地接受作为乘数,顺序地从第一个B寄存器中输入,第二个是一个快速的先行值Y0,在每一个迭代中作为乘数来强制输出字符先输出的右边为零,第三个值从模N寄存器中来。
被乘数并行寄存器运行顺序地接收从A、B和N寄存器来的值,和一个被乘数零强制Y0值。
零强制Y0值检测到设备运行产生了在运行的第一阶段作为乘数的二进制串,并作为每一个迭代乘法的第二阶段的被乘数。
用于第一阶段被切换到 累加器的被乘数值可能包括四个值,第一个值是零,第二个值是Ai,是被乘数A的k字符串段,第三个值N0,作为模数N的发出的前k个字符。假如有如图6所示第四预装载缓存器在乘法的开始N0值特别地被切换。然后当A的k字符片被输入,Ai值被串行地与N0值累加并存储在第四个寄存器中。
假如一个计算是典型的单k字符模数,那么不需要S寄存器,或者用于临时结果的值S。假如操作数是2k个字符或更长,那么操作必须是Ai片的迭代。对于B的平方运算片特别地是从B流上抓取并预先装载到装载缓存器中。
乘法过程的第一次迭代,临时结果是零。
从前一次迭代来的后续的临时结果,被与从 累加器产生的值 累加,来产生用于下一次迭代的部分结果。
被输入的被乘数,依次进入用于第二阶段的 累加器,第一个零值是伪寄存器值,第二个Ai操作数是在第一个阶段保留下来的,第三个值Y0是在第一个阶段预测用来继续乘以模N余下的字符。
在第一个阶段输入到乘法器设备的乘数值是先产生的串B0,是B操作数先产生的字符串段,同时 乘以由先行值Y0字符串组成的第二个 乘数,在第二阶段当它被产生到预装载缓存器是被一个字符一个字符地同时装载的。
在第二个阶段两个乘数输入进装置,分别地,从B操作数的左边n-k个字符值标记为 B,从N操作数的左边n-k个字符值标记为 N
第三个阶段是刷新设备,它传输保留在 累加器中的结果值的左边段。这或者是单个时钟数据转储,或者是单个串行卸载,被馈送在乘法器输入的零字符驱动。
假如转储是并行转储,一些部件被用来比较以决定是否结果要求模的额外的约减。
在本发明中,多个创新增强中的一个是在GF(29)的逆模式乘法。因为在这个算法中缺乏累加器单元间的相互作用,从乘积的MS端进行乘法和约减成为可能,因此乘积是没有因丢弃零导致的繁琐的寄生函数的模约减结果,这与在传统的蒙哥马利乘法中进行右移位是等价的。
第二个创新是允许自动零强制为专利申请P2的Y0函数的扩展,它描述了一个设备一次只有一个比特被预测。只有J00比特乘上单比特异或值。一个奇数的乘性逆和它的负数产生一个奇数。被保存的查询表或一个随机逻辑电路用来计算l=1时的J0值。注意,在非类似的数字系统中,J0是一个不同的量。在这个扩展中,对于相关的数域,我们证明Y0值是如何被推导出的。
下面描述来预测Y0值的电路单元,其利用被乘数的第一发出值,和乘数B的现有输入、累加器设备的进位值、来自累加器的求和值、来自前面计算的部分结果的现有值、以及来自加法器的进位值来预测Y0值,所述加法器把来自累加器设备的结果和上一次的部分结果相加。
不同的表述,用于控制零强制函数的六个值是:
i.Ai寄存器的右边字符乘以B流的Bd字符,A0 Bd mod 2l的l比特乘l比特模2l乘法的结果中的l比特的Sout比特;
ii.从 累加器,S(CO0)中首先发出的进位字符;
iii.从 累加器,SO1,的右边字符发出单元中的第二个l比特的Sout字符;
iv.来自S流的按顺序的下一个字符值,Sd
v.来自Z输出全加器的l比特的进位字符,S(COz);
vi.l比特的J0值,它是N0模数被乘数寄存器中的右边字符负乘性逆,
其中,值A0 Bd mod 2l,S(CO0),SO1,Sd按字符 相加到一起,并且“快速的” 乘以J0字符,输出一个有效的Y0零强制先行字符来强制一个l比特为零的输出字符串。正如P1,为了确定是否一个输出必须是模约简的,一个检测器用来与N比较输出结果,其机制在于在结果寄存器的输出上启动一个第二减法器,以输出一个模约简的值,它是输出结果值的狭义同余,负除了为较小结果分配第二个内存存储的必要。
被配置执行乘法的单 累加器,和预测零强制机制一起执行一系列的交织 模乘法和平方。所有的设备的执行相当于三个整数乘法,象在传统的蒙哥马利方法一样,J0是一个k字符的设备乘以B0 Aj和Si的前k个字符,并且最后使用Y0来乘上N。
当SuperMAP在计算乘法的最后迭代,下一个乘法的第一片可被快速预装载进预装载寄存缓冲器装置。这个值可能是前一个乘法的结果或驻留在图1或图5的寄存器块中的一个寄存器段中的被乘数的一片。
预装载值是两个被乘数的 累加和,它被加进一个k字符寄存器,仅用于GF(2q)计算。在GF(p)计算中,必须用额外进位位规定。
特别地,对很长的模,缓存器和寄存器邻接SuperMAP典型地没有足够的存储器资源。用来直接装载操作数到预装载缓存器的装置将被提供,用来在CPU的存储器图中存储操作数。对于逆模式乘法,从CPU来是输入字的比特顺序一般在数据的输入和数据输出设备中被反向。
附图的简要说明
在图中:
粗实线表示k字符(kl比特)宽的并行总线。细的相邻信号线描述l比特宽的线,大多数控制线没有画出;那些被认为是理解过程所必须的,特别地用点划线来画出。
图1是根据本发明是实施例装置的方框图,其中描述了四个主寄存器,并且显示了串性数据到运行部件的的流程,图3中到主CPU的输入和输出数据流程;
图2是用来控制从图1的数据的运行单元的实施例的方框图;
图3是一个完整的单芯片、单块集成电路的加密计算机的优选实施例的简化方框图,特别地在一个小卡中表示;
图4是一个完整的单芯片、单块集成电路的加密计算机的优选实施例的简化方框图,其中数据禁用开关被用来提供加速卸载从运行单元来的数据。
图5是用来产生J0的数据寄存器块的简化方框图;
图6是一个运行单元的简化方框图,其中Y0检测器是用来强制第一阶段零输出的设备;
图7A是图6主计算部分的方框图,带计数圆圈的图标与图7B、7C和7D的时序图和流程图有关。
图7B是一个事件的时序指针图,显示了进程的逐级引入,并包括平方运算的第一次迭代;
图7C是一个详细的事件序列,用于在平方序列第一次迭代中消除“下一次蒙哥马利平方”的延时,图标指针与图7A、图7B和图7C有关;
图7D描述计算输出的时序,与图7A、图7B和图7C有关;
图8A和8B,一起描述在GF(2q)和GF(p)中向量Y0的产生。图8A是一套查询表用来在l=2和l=4时确定N0右边字符的负乘性逆,图8B用简单的框图描述在两个数域中当l=2和l=4时产生Y0函数的信号。
对优选的实施例的描述
在图中:
粗线表示k字符(kl比特)宽的并行总线。连接信号线的细实线表示l比特宽的线。特别地,控制线不显示;被认为是理解过程必须的,特别用点划线画出。
图1-2,一起构成了一个简化的串行-并行算术逻辑单元(ALU)的框图,它是按照本发明的优选的实施例构造并工作的。图1-2的装置,优选地包括下列部件:
单复接器-受控切换元件,它从多个信号的输入中选择一个信号和字符流,并把这个选出的信号引向一个单独的输出。复接器标记为M1到M13,并且是更大的组件中的一个固有的元件。
复接器和预加器,390,是一个kl+1个复接器的阵列,它选择四个k或k+1字符的输入中的哪一个将被加入CSA,410。
B(70)和(80),SA(130),SB(180)和N(200)和(210)是在优选实施例中的四个主要的主串行寄存器。SA是在概念上和实际上冗余的,但却可以极大地加速非常长的数字的计算,并节省易失性存储器资源,特别是在模的长度是2·k·m字符长的情况下。
串行加法器和串行减法器是逻辑单元,它们有两个串行字符输入和一个串行字符输出,并且在两个长字符串的字符上执行加或减法。部件90和500是减法器,330和460是串行加法器。从输入到输出的传播时间非常短。串行减法器90和500如果B*大于或等于N,从B上减去B*,并且/或者,如果S*大于或等于N,从S上减去S*。串行减法器480作为比较器部件的一部分用于检测B*是否大于或等于N。全加器330,把送到装载缓冲器340的两个字符流加上一个等于290和320装载缓冲器中值的和的值。
快速装载器和卸载器10和20,以及30和40,分别地是加速CPU控制器的数据流的设备。特别地,这些设备消除了对其它直接内存访问部件的必要。20和40是用于反转数据字的,因为在GF(2q)的逆格式的乘法中反转数据字是必需的。
数据输入50,是一个并行输入串行输出的设备,因为当前的ALU设备是一个串行馈送的脉动处理器,数据是并行输入的,但处理是串行的。
数据输出60,是一个串行输入并行输出的设备,用于从协处理器输出结果。商产生器是图2的一部分,它在除法机制的每一次迭代中产生一个商字符。
刷新信号,Bd上的240,S*d上的250,和Nd上的260用于确保最后k+1个字符能从CSA中输出。第二个实施例将在第二阶段的结尾调整R数据,并将执行一个单并行数据转储以刷新CSA。
装载缓冲器R1,290;R2,320;和R3,340是串行输入并行输出的移位寄存器,适于接收三个可能的大于零的被乘数组合。
锁存器L1,360;L2,370;和L3,380;是用于接收来自装载缓冲器的输出,因此允许装载缓冲器可以在这个数据很好地锁存进L1,L2和L3之前临时地启动下一阶段数据的处理。锁存器L0是特别地到390的常数的全零的虚拟输入,它特别地不是用锁存逻辑实现的。
Y0检测器430,是逻辑设备,它确定模累加的次数,以使在 乘法中的Z上存在LS的k字符的零字符串。
一字符延迟设备100,220和230插入到关键的数据流上,在图1的数据准备装置和图1的数据处理装置之间提供计算同步。
k字符延迟移位寄存器470,同步N,在丢弃输出的右边的零字符字符串后,对于大于N的比较,减法器从结果中减去N。
进位保持累加器几乎和串行/并行乘法器一样,不同的是三个大于零的不同的值可以相加,而不是象常规地锁存进s/p乘法器的输入的单一值。当用于基于多项式计算时所有“进位相关”的功能都被关闭。
最后进位插入440,用于插入S流中的第(m·k·l+1)个比特,因为S寄存器仅有m·k个字符长。
借位/溢出检测490,检测结果是否大于或等于模数(源于N),或者在GF(p)计算中。在基于多项式计算中溢出检测结果的第一有效比特是否为1。
控制机制没有显示出,但最好把它理解为一套用于特殊功能的在有限状态机上的级联的计数设备,以及在GF(p)和GF(2q)上用于脉动数据流的一系列开关。
对于在素数和复合素数域上的模数乘法,我们定义A和B为被乘数和乘数,而N是模数,它一般大于A或B。N同时表示存储模数值的寄存器。N,可能在某些时候,小于A。我们定义A、B和N为m·k=n字符长的操作数。每个k字符组被称为一个段,组的大小由乘法设备的大小决定。因此,A、B和N每个都是m字符长。为了简化,下面按步骤的过程解释,假设A、B和N是512比特长,(n=512);根据当前的成本有效的这种乘法器的长度,假设k为64字符长,并且是简单CPU的数据操作速度;m=8是一个操作数的段的数量,也是512比特操作数的乘法和平方循环的迭代次数。所有的操作数是正整数。更一般地,A、B、N、n、k和m可以假设为任意合适的值。
在非模数的函数中,N和S寄存器可被用于临时存储其它算术操作数。
我们用符号,≡,表示模数的同余,例如16≡2模7,并且我们说16同余为2 mod 7,因为当16除以7时余数为2。当我们写Y mod N≡X mod N时,Y和X都可以大于N;然而对于正数X和Y,余数是一样的。还要注意负整数Y的同余,是Y+u·N,其中N是模数,而且如果Y的同余小于N,u将是给出正结果的最小的整数。
我们用符号,,表示更狭义的同余。在这里描述的过程中,一个值要么是所需要的值,要么等于所需要的值加上模。例如X2 mod 7,X可以等于2或9。我们说X是狭义同余为2 mod 7。在基于多项式域中,类似的是一个首一的值,我们说它大于N,并且通过和模数异或进行约简。因为在GF(2q)中没有溢出,这个值一般被忽略。
当我们写X=A mod N,我们定义X是A除以N的余数;例如,3=45 mod 7。
在数论中,模数的乘性逆是一个基本概念。例如,X的模数乘性逆写作X-1,其定义为X X-1 mod N=1。如果X=3及N=13,那么X-1=9,即3·9除以13的余数为1。
缩写MS和LS用于表示最高位和和最低位,它可以指比特、字符、段以及整个操作数值,就像常规的数字术语一样。
在本说明书中N既表示N的值,又表示包含N的移位寄存器的名称。一个值上的星号上标表示这个值作为中间值可能不完整或将会改变。A是将需要求幂的数字的值,而n是操作数N的字符长度。初始化后当A被“蒙哥马利归一化”为A*(A*=2n·A-以后说明)A*和N在幂运算的整个中间步骤中一般是常数。在第一次迭代,在求幂的初始化之后,B等于A*。B也是寄存器的名称,其中累加值最后会等于所需要的求幂的结果,它驻留在这个寄存器中。S*表示一个临时的值,并且S、SA和SB还表示存储除了单MS比特外的S的所有比特的一个或若干寄存器。(S*连接上这个MS比特就等于S。)S(i-1)表示在第i次迭代输出端的S的值。S0表示第S(i)的值的LS段。
我们称在GF(p)域(以后定义)中的P(A·B)N过程为在P域中的乘法,或者有时,简单地是一个乘法操作。
因为我们使用了串行/并行乘法器的标准结构作为构造一个两用的串行并行乘法器的基础,我们区分乘法器的求和部分,它是基于保留进位累加器的,(不同于超前进位加法器、或进位传送加法器,前者非常地复杂,后者非常地慢),并称之为保留进位加法器或累加器,分别处理预装载机制以及复接和锁存,这允许我们同时进行A乘以B和C乘以D的乘法,而连续地把这两个结果和前一次的结果S相加,例如A·B+C·D+S,把这个累加器转换为一个更加多用途的引擎。附加的逻辑被添加到这个乘法器上以便为模数约简和串行求和提供一个预测的检测操作,这是在非常大的数上进行模运算和普通整型运算所必需的。在GF(p)上的蒙哥马利模数乘法
下面的描述是指在GF(p)上的数的蒙哥马利算法。本设备可用于在GF(2q)上的基于多项式数蒙哥马利运算,但性能会下降,因为计算将在P域执行,而所有可执行的操作数都要乘以一个因子2n
在一个计算模数乘法A·B mod N的传统的方法中,积A·B的余数是依靠除法过程计算的,在大操作数上实现一个传统的除法比执行串行/并行乘法更难。
用蒙哥马利的模数约简方法,除法基本上被采用两个预先计算的常数的乘法代替。在这里所展示的过程中,仅有一个预先计算的常数,它是模数的一个函数。这个常数是,或可以是,用本ALU设备计算的。
一个简化的蒙哥马利过程的表达,就像在本设备中所采用的,现在将被提供,同时后面还有一个完整的优选描述。
如果我们令一个奇数(LS比特为1),例如1010001(=8110)我们总可以把这个奇数转换为一个偶数(单LS比特为0),方法是把它加上一个修正的、补偿性的奇数,例如,1111(=1510);因为1111+1010001=1100000(9610)。在这种情况下,我们发现一个数能产生5个低位的零,因为我们事先知道整个字符串,81,并可以容易地确定能让我们加到81上的二进制数,将产生一个新的二进制数,它有我们所需的一些低位零的数量。这个修正数必须有一个右边的1,否则它对一个结果的顺序的LS字符串不起作用。
如果我们的进程是由时钟控制的串行/并行保留进位进程,我们希望有一个连续数量的LS零,这里面,在每一个时钟周期我们只要修正下一个比特,在每个时钟里,如果下一个比特是1就加上修正值,如果预期的比特是0就不加修正值,这就足够了。然而,为了不导致比特间的溢出(双进位),这个修正值最好事先和被乘数相加,当相应的乘数比特是1时,它要被加入累加器,而Y检测也预期为1。
现在,因为在模运算中,我们只关心一个值除以模的余数,我们知道我们可以在一个值上加任意多次的模,仍然得到一个值,它有同样的余数。这意味着我们可以加Y N=∑yi ri N到任意整数而仍然具有同样的余数;Y是我们加入模N的次数,它可以产生所需的kl个右边零。如所描述的,我们加的模数只能是奇数。(存在这种方法,偶数模被定义为ri乘以所得的奇数,其中i为偶数中LS的零的数量)
蒙哥马利交错的约简特别地减小了对存储的需求,以及乘法设备的有效成本的尺寸。这在执行公开密钥加密函数时特别有用,在公开密钥加密函数中,我们要把一个大整数,例如,n等于1024比特,乘以一个同样长度的大整数;这一过程一般会产生一个两倍长度的整数。
在乘法(或平方)的过程中我们可以在若干N(模数)中加入足够到A·B=X或A·B+S=X,使我们得到一个数Z,它有n个LS零位,同时最多有n+1个MS字符。
我们可以继续使用这些数,忽略LS的n个字符,只要我们记住通过忽略这些零,相当于我们把所要的结果除以了rn
当LS的n个字符被忽略,而我们仅用到最高有效的n(或n+1)个字符时,我们有效地把结果乘以了r-n,rn的模数倒数。如果我们接下来把这个结果再乘以rn mod N(或rn),我们将获得一个值,它和所需的A·B+S mod N的值同余(有同样的余数)。如所看到的,采用MM,结果被恰当地乘上r2n来克服MM所引入的r-n寄生因子。
举例:
A·B+S mod N=(12#11+10)mod13=(1100·1011+1010)2mod10112
l=1,r=2
无论何时,在n个LS比特上之一上的修正是必须的,我们将累加2iN。
           B    1011
     X     A    1100
 add S          1010
 add A(0)·B    0000
                -----       LS比特的和等于0不加N
add 20(N·0)   0000
sum and shift   0101→为零的LS比特留在保留进位加法器中
adder
add A(1)·B     0000
                ……        LS比特的和等于0-加N
add 21(N·1)   1101
sum and shift   1001→0     LS比特留在CS加法器中
add A(2)·B     1011
                ……        LS比特的和等于0不加N
add 22(N·0)   0000
sum and shift   1010→为零的LS比特留在CS加法器中
add A(3)·B     1011
                ……        LS比特的和等于1加N
add 23(N·1)   1101
sum and shift   10001→为零的LS比特留在CS加法器中
结果是1000100002 mod 13=17·24 mod 13。
因为17大于13,我们约减13,结果是:
17·24≡4·24 mod 13
形式上2-n(A·B+S)mod N=9(12·11+10)mod 13≡4
在蒙哥马利算法中,我们仅使用了MS的非零结果4,并一定要记住实际的结果已经被除以了2n;n个零已经被强制到MM结果上。
我们已经在有效地用24mod 13≡3乘以这个结果加到(8+2)·13=10·13。实际上,假如我们使用了多余的零,我们可以说我们已经在一个过程中执行了A·B+Y·N+S-(12·11+10·13+10),它在优选的实施例中被描述是可能的。
检查-(12·11+10)mod 13=12;4·3=12。
总的说来,蒙哥马利乘法的结果是希望的结果乘以2-n
为了使用同样的乘法来将前面结果恢复到希望的结果,我们将前面的结果蒙哥马利乘以22n,我们称之为H,而每一个MM留给我们一个寄生因子2-n
蒙哥马利乘法函数P(A·B)N将A·B乘积的乘法模N转换到P域。(在上面的示例中,我们推导出4)。从P域恢复到普通的模数域是通过使用预先计算的常数H在P(A·B)N的结果上执行P来实现的。现在假如P≡P(A·B)N,则P(P·H)N≡A·B mod N;因此两个P域乘法执行了一个普通的模数乘法。
蒙哥马利模数约简避免了n个或2n个字符长的操作数上一序列的乘法和除法操作,在n个或n+1个字符长的操作数上执行一序列的乘法、加法和加法。整个过程产生的结果小于或等于N。对于给定的A,B和奇数N,总是有一个Q,使得A·B+Q·N的结果为n个LS字符是零的数字,或者:
P·2n=A·B+Q·N
这意味着我们有一个2n字符长的表达式(可能带一比特的溢出),它的n个LS字符是零。
现在,对于基数r=2l;让I·rn≡1 mod N(对于所有的奇数N,I都存在)。前面等式的两边都乘以I将产生下面的同余:
从等式的左边:
P·I·rn≡P mod N(记住I·rn≡1 mod N)
从右边:
A·B·I+Q·N·I≡A·B·I mod N;(记住Q·N·I≡0 mod N)
因此:
P≡A·B·I mod N
这也意味着寄生因子I=r-n mod N在每一次执行P域乘法时若P被引入。
我们定义P操作数使得:
P≡A·B·I mod N≡P(A·B)N
并且我们称其为“在P域A乘以B的乘法”,或者蒙哥马利乘法。
从P域的恢复可通过在P·H上执行操作P来计算,使得:
P(P·H)N≡A·B mod N
我们可通过在前一个同余中取代P来推导出H的值
我们发现:
P(P·H)N≡(A·B·I)(H)(I)mod N
(注意A·B·I←P;H←H;I←任意的乘法操作将引入寄生值I)
假如H和I2的乘性倒数同余,那么同余是有效的,因此:
H=I-2 mod N≡r2n mod N
(H是N的一个函数并且我们称它为H参数)
在通常的蒙哥马利方法中,在A·B上执行P操作,并使用了预先计算的常数J,下面的过程将被使用:
1)X=A·B
2)Y=(X·J)mod rn(只有n个LS字符是被需要的)
3)Z=X+Y·N
4)S=Z/rn(J上的要求是它强制Z可被rn除)
5)PS mod N(N从S上约简,假如S≥N)
最后,在步骤5):
PP(A·B)N,
[假如需要,约减N后:
P=P(A·B)N]
接着上面:
Y=A·B·J mod rn(仅使用n个LS字符)
并且:
Z=A·B+(A·B·J mod rn)·N
为了Z可被rn除(Z的n个LS字符最好是零),下面的同余将存在:
[A·B+(A·B·J mod rn)N]mod rn≡0
为了使这个同余存在,N·Jmod rn与-1同余或者:
J≡-N-1mod rn
并且我们已经发现常数J。
因此J是一个预先计算的仅是一个N的函数的常数。然而在一个字符一个字符地输出MM结果的机器中,当使用硬件逻辑Y可以被一个字符一个字符地检测到时,在LS字符串的输出字符中有零的每一个实例中应制定在若干N中累加的规定,从而避免了预先计算J和后续计算Y=A·B·J mod rn的必要。我们也提到了这个方法仅能用于奇数N。
因此,显然,被描述的过程使用了三次乘法,一次累加和最多一次减法,对于给定的A、B、N和预先计算的常数以获得P(A·B)N。使用这个结果,同样的过程和一个预先计算的常数H(模N的一个函数),我们能够得到A·B mod N。当A也等于B时,这个基本的操作可被用做平方的装置或在模算法中的乘法。交错的蒙哥马利模乘法
前面的部分描述了一种方法,它涉及均是n个字符长的操作数乘法的模乘法,它的结果要求有2n+1个字符的存储空间。
正如P1中描述的使用蒙哥马利的交错约简,带较短操作数、寄存器和硬件乘法器的乘法操作的执行;使带相对少的逻辑门的电子设备的执行有效都是可能的。
首先我们将描述这个设备是如何工作的,假如在交错的任何一次迭代,我们使用J0常数计算N被累加的次数。然后我们使用Y0的硬件推导描述如何交错,它将消除每一次乘法{(2)在下面的例子中}的J0+阶段,并使我们将两个单独的串行/乘法器的功能集成到一个新的,使用较小的硅资源,并能够以两倍多的速度执行A·B+C·N+S的单个普通的乘法器中。
使用一个k字符乘法器是为了方便定义k个字符长的段;在n个字符中有m个段;也就是,m·k=n。
J0将是J的LS段。
因此:
J0≡-N0 -1 mod rk(当N是奇数时,J0存在)
注意,当在非约简输出执行时J和J0常数是修正数,告诉我们为了低位的零有预定义的个数模数上累加了多少次。我们将在后面描述本串行设备的额外的优点;因为象输出的下一个串行比特可以被容易的确定一样,我们总是加上模数(总是奇数)到下一个中间结果。假如没有这个累加的情况,输出字符,从CAS发出的LS串行比特将是1;因此在模数中加到前面的偶中间结果,将有希望在输出字符串中有另外一个LS零。记住,一致性必须被保持,无论模数被累加到结果多少次,这个余数是一个常数。
在蒙哥马利交错约简的传统应用中,P(A·B)N正如步骤(1)到(5)描述的在m迭代中执行:
最初S(0)=0(在第一次迭代的起始S的值)
对于i=1,2m:
1)X=S(i-1)+Ai-1·B(Ai-1是A的第i-1个字符;S(i-1)是S在第i次迭代的值。)
2)Y0=X0·J0mod rk(X0·J0的乘积的k个LS字符)
(过程仅使用和计算了k个LS字符,举例来说,64个低位字符)在优选实施例中,这个步骤被避免,因为在串行设备中,Y0可被一个字符一个字符的预测)
3)Z=X+Y0 N
4)S(i)=Z/rk(Z的K个LS字符总是0,因此Z总是能被rk除)。
5)S(i)=S(i)modN(N将被从那些大于N的S(i)中约tuj)。最后,在最后一次迭代(必要时,在约简N后)C=S(m)=P(A·B)N。
为了推导F=A·B mod N,P域计算,P(C·H)N被执行。
在优选实施例中,希望知道对于所有的S(i)的S(i)小于2N。这也意味着,最后结果(S(m))可总是被约简到一个小于N的量,最多约简一次N。
我们发现对于用在过程中的操作数:
S(i-1)<rn+1(暂存器可比B或N寄存器长1比特),
B<N<rn和Ai-1<rk
定义:
S(i)=Z/rk(在一个可能约简前,在过程的最后S的值)
对于所有的Z,Z(i)<rn+k+1
Xmax=Smax+AI·B<rn+1-1(rk-1)(rn-1)
Qmaz=Y0N<(rk-1)(rn-1)
因此:
Zmax<rk+n+1-rk+1+1<rk+n+1-1
并且Zmax被rk除:
S(m)<rn+1-rl
因为Nmin>rn-r,S(m)maz总是小于2·Nmin,因此,在最后的结果上一次约简是全部所必须的。
S(m)maz-Nmin=(rn+1-rl-1)-(rn-1)=rn-4<Nmin交错的蒙哥马利模乘法的例子
在十六进制格式中的下面的计算阐明了交错方法的意义:
N=a59,(模数),A=99b,(乘数),B=5c3(被乘数),n=12,r=2,(N的字符长度),k=4,(乘数的字符大小,也是段的大小),及m=3,当n=k·m。
J0=7,当7·9≡-1mod16和H≡22·16mod a59≡44b。
期望的值是F≡A·Bmod N≡99b·5c3 mod a59≡375811 moda59=22016
初始时:S(0)=0
步骤1 X=S(0)+A0·B=0+b·5c3=3f61
      Y0=X0·J0 mod rk=7(Y0是在SuperMAP中的硬件预测)
      Z=X+Y0·N=3f61+7·a59=87d0
      S(1)=Z/rk=87d
步骤2 X=S(1)+A1·B=87d+9·5c3=3c58
      Y0=X0·J0 mod rk=8·7 mod 24=8(硬件预测)
      Z=X+Y0·N=3c58+52c8=8f20
      S(2)=Z/rk=8f2
步骤3 X=S(2)+A2·B=8f2+9·5c3=3ccd
      Y0=d·7 mod 24=b(硬件预测)
      Z=X+Y0·N=3 ccd+b·a59=aea0
      S(3)=Z/rk=aea
当S(3)>N,
      S(m)=S(3)-N=aea-a59=91
因此C=P(A·B)N=9116
P域的检索是通过计算P(C·H)N来执行的:
再一次初始化:S(0)=0
步骤1 X=S(0)+C0·H=0+1·44b=44b
      Y0=d(在SuperMAP中的硬件预测)
      Z=X+Y0·N=44b+8685=8ad0
      S(1)=Z/rk=8ad
步骤2 X=S(1)+C1·H=8ad+9·44b=2f50
      Y0=0(在SuperMAP中的硬件预测)
      Z=X+Y0·N=2f50+0=2f50
      S(2)=Z/rk=2f5
步骤3 X=S(2)+C2·H=2f5+0·44b=2f5
      Y0=3(在SuperMAP中的硬件预测)
      Z=X+Y0·N=2f5+3·a59=2200
      S(3)=Z/rk=22016
99b·5c3 mod a59的值是可以预测的。
假如在每一步我们丢弃k个LS零,我们本质上将n个MS字符乘以了rk。同样地,在每一步,乘数的第i段也是一个数乘以了rik,给它与S(i)同样的等级。
在另外一个优选实施例中也必须注意,在其中知道J0常数是有一些隐含的值的,假如AI·B+S=1;那么Y0=-N0 -1=J0
求幂:
一个序列[D.Knuth,The art of computer programming,vol.2:Seminumerical algorithms,Addison-Wesley,Reading Mass.,1981]下述推导在下面称为“Knuth”,解释了使用了模求幂的平方和乘法序列。
预先计算蒙哥马利常数后,H=22n,当在P域这个设备平方和乘都可进行,我们计算:
C=AEmodN。
E(j)代表指数E的二进制表示的j比特,从序号是1的MS比特开始并包括序号是q的LS比特,我们能够如下方法对奇数指数取幂:
A*P(A·H)N A*现在等于A·2n
B=A*
FORj=2 TO q-1
BP(B·B)N
IF E(j)=1 THEN
BP(B·A*)N*
ENDFOR
BP(B·A)N E(0)=1;B是最终希望的临时结果乘以2nA是最初的A
C=B
C=C-N if C≥N。
最后迭代后,B值是为AEmod N,并且C是最后的值。
为了阐明,我们将使用下面的例子:
E=1011→E(1)=1;E(2)=0;E(3)=1;E(4)=1;
寻找A1011 mod N;q=4
A*=P(A·H)N=A·I-2I=A·I-1 mod N
B=A*
对于j=2到q
B=P(B·B)N它的过程是:A2(I-1)2·I=A2·I-1
E(2)=0; B=A2·I-1
j=3      B=P(B·B)N=A2(I-1)2·I=A4·I-1
E(3)=1   B=P(B·A*)N=(A4·I-1)(A·I-1)·I=A5·I-1
j=4      B=P(B·B)N=A10·I-2·I=A10·I-1
当E(4)是奇数时,最后的乘法将是乘以A,不需要寄生函数I-1
B=P(B·A)N=A10·I-1·A·I=A11
C=B
用倒数过程来计算H参数的方法在美国专利5,513,133中描述。
现在参考图3,图3是显示本发明如何在智能卡和其他安全设备中执行的简化方框图。内部总线500,连接包括CPU 502、RAM 504、非易失性存储器506、被控制的可访问EEPROM 508和模算法协处理器510在内的部件。在这里所显示的,协处理器510通过数据总线512和控制总线514,内部总线的寄存器500连接。被控制的可访问ROM508通过地址和数据锁存装置516和一个控制和测试寄存器518连接的。各种不同的设备可分别连接到总线上,例如物理序列随机发生器520、安全逻辑522、智能卡和外部接口电路524和526。
当一个加密程序,例如确认一个RSA签名被执行,是要求模算法函数的,例如模求幂。调用加密函数的密码程序优先运行在CPU 502上。
现在参考图4,图4是本发明用在智能卡上的一个实施例的另外一个简化的方框图。与图3所示相同的部分给出了相同的参考数字,除了哪些理解本实施例所必须的并且不再次描述。图4中,所示的CPU502带外部累加器7350。当从算术协处理器上卸载数据来使能从SMAP到存储器数据的直接传输,数据禁用开关7340从数据总线500上分离CPU累加器。
图5是数据寄存器块6250在协处理器6075中的优选实施例的一个简化方框图,如在图2、6和7中的协处理器中所描述的,带一个J0产生器,其中J0产生器特别汇编了一个l比特的首零强制函数。
如前图所示,协处理器6075被连接到带CPU的数据总线上。一个寄存器块6205包括一个B寄存器6070,一个A寄存器6130,一个S寄存器6180和一个N寄存器6200。每一个寄存器的输出被连接到一个串行数据开关和串行处理调节装置6020,它依次被连接到一个执行模算法操作的运行部件6206。连接在N寄存器6200和运行部件6206间的是一个J0产生器552。
在实施例中,J0产生器汇编了一个l比特的首零强制函数,用于上面描述的模算法函数中。
图6是图5运行部件的简化的内部方框图。因为在第一阶段额外的Y0B0串行缓存器接收Y0,在第二阶段模约简B0用于后续的平方操作,其中将发现B大于N,部件更适合支持加速的平方操作。
现在参考图7A,它是图6的运行部件的主要计算部分的方框图。圆圈里的数字与图7B和7D的时序图有关。
现在参考图7B,它是是一个事件的时序指针图,显示了过程的进程并包括平方运算的第一次迭代。
现在参考图7C,被归纳的事件序列表示了用于在平方序列第一次迭代中消除下一次蒙哥马利平方的延时的方法,画圈的数字参考图7A、图7B和图7D。
现在参考7D,被归纳的时间时序指针图描述了平方运算的第一次迭代计算输出的时序。
现在参考图8A,一套查询表特别地表示了J0的选择,它是N0的右边字符的模2l的乘性逆的负值。当N0或者对于GF(2q)首项系数为一或者对于GF(p)是奇数,则J0总是存在的。
在图8A和8B中,我们将模的右边字符认为是N0。我们将N0j认为是本地定义的N0字符的第j比特。
图8B是用于设计或者一个4比特或者一个2比特的Y0零强制函数字符的示意图。输入进强制函数的变量是N0比特(整个乘法中是常数),l、S0比特,和l乘数Aj0和被乘数B0j比特的乘积的l右边比特,进位开关S,它确定函数是工作在GF(2q)还是GF(p)。A和B比特被输入到 乘法器并 累加到S0上。当S=0,所有的进位被禁用。
可以理解发明的不同特性,为了阐明,被描述在分开的实施例的内容中,也可以在一个单实施例中共同提供。相反地,本发明的不同特性,为了简洁,在一个单实施例中描述,也可以分别或在任何适宜的子组合中被提供。
本领域的专业人员可以理解本发明并不限制于在上文中所特别表示和描述。本发明的范围包括上文所描述的不同特性及由此的变形和修正的组合或子组合,对于阅读在现有技术中没有的前面的描述的本领域的专业人员是可能发生的。
在权利要求书中,符号的含义在前面的描述中给出。

Claims (30)

1.一种微电子装置,用于执行基于多项式的GF(2q)和GF(p)域的算法中的 乘法和平方,平方和约简采用一个串行馈送的基数为2l的乘数、B、k个字符的被乘数段、Ai和一个k字符的 累加器,其中约简到一个狭义同余是以一种脉动的方式来“快速的”执行的,被乘数Ai乘以乘数B,在模为N的条件下,其结果最多有2k+1个字符长,包括k个首先发出的被忽略的零字符,这些零字符不被保存,这里的k个字符没有低于模数的比特,该装置包括:
第一(B)、和第二(N)主存储寄存器部装置,每个寄存器操作于保持至少n比特长的操作数,分别用来存储一个用B表示的乘数值,和一个用N表示的模数,其中模数小于2n
一个数字逻辑判断检测器,Y0,操作于“快速的”预测何时需要把模数 加到 加法的累加器设备中的值,以使从该设备中发出的所有第一个k字符被强制为零;
一个模数乘法设备,用于至少k字符输入的乘数,与唯一的一个,至少k字符长的 加法器, 求和设备操作于接收k字符的乘数,所述乘法设备操作于依次切换到 累加器设备,乘数的值,并依次地从B寄存器中接收乘数值,并且一个“快速的”同时生成的预测值作为乘数,该乘数操作于在第一阶段强制k个第一次发出的零输出字符,其中在每个有效的机器周期里,至少一个指定的乘数被 地加到 累加器设备;
所述被乘数值被依次切换到包括下面三个被乘数中的一个或两个的 累加器设备,第一个被乘数是全零的字符串值,第二个值是被乘数Ai,而第三个值是模的N0段;
一个用于预测l比特的k字符的串行输入Y0乘数值的装置;
被依次输入到乘法装置的乘数值,在第一阶段是第一B操作数,而同时由Y0组成的第二个乘数值,“快速的”预测k个字符串以在输出中强制首先发出零;
一个 累加器设备,操作于在被乘数被 加到 累加器设备的同时输出值;
一种输出传递机制,在第二阶段操作于从 累加器设备上输出最终的模数 乘法结果。
2.如权利要求1所述的装置,其中到 累加器装置的 求和是通过每次串行地加载的较高阶乘数字符来启动的。
3.如权利要求1所述的装置,其中所述的乘数字符;
如果输入的B字符和相应输入的Y0字符都为零时,被操作于不 求和到 累加器装置;
如果输入的B字符为1而相应的Y0字符为零时,操作于仅在被乘数Ai累加;
如果在输入的B字符为0而相应的Y0字符为1时,操作于仅在模N上 累加;并且
如果在输入的B字符和相应的Y0字符都为1时,操作于在模数N的 求和和被乘数Ai累加。
4.如权利要求1所述的装置,操作于预装载被乘数值Ai和N到两个专门的预装载缓冲器,并把这些值 加到第三个被乘数预装载缓冲器,消除了单独对每个被乘数进行 相加的必要性。
5.如权利要求1所述的装置,其中所述的乘数值的输入是串行的单字符,而 累加器设备的输出是串行的单字符输出,其中所述的Y0检测设备操作于在一个定时的圈中仅预测一个字符。
6.如权利要求1所述的装置,其中所述的 累加设备进行模2计算,XOR加法/减法,其中在加法和减法分量中的所有进位比特都被忽略,因此,排除了在计算中溢出和进一步限制的收敛条件。
7.如权利要求1所述的 乘法装置,其中所有的进位输入被无效为零,用S=0来表示,一般操作于进行基于多项式的乘法。
8.如权利要求1所述的装置,其中S等于零作用于在GF(2q)中的电路方程计算的单元,S指示省略的电路以及所有的加法器和减法器,专用的 被简化为XOR,模2的加/减法单元。
9.如权利要求1所述的装置,其中k个第一次发出的零将从该装置中输出,该装置由在下一个Y0字符的依次预测中通过下面四个量进行控制:
i.Ai寄存器的右边字符乘以B流的Bd字符,A0 Bd mod 2l的l比特乘l比特模2l乘法的结果中的l比特的Sout比特;
ii.从 累加设备,S(CO0)中首先发出的进位字符;
iii.来自 累加设备,的发出单元SO1的右边第二个字符的l比特Sout字符;
iv.l比特的J0值,它是N0模数被乘数寄存器中的右边字符负乘性逆,
其中,值A0 Bd mod 2l,S(CO0),以及SO1按字符 相加到一起,并且“快速的”乘以J0字符,输出一个有效的Y0零强制预测字符以强制一个l比特的输出字符串为零。
10.如权利要求1所述的装置,其中基于多项式操作数的 乘法以逆模式执行,乘法从右边的MS字符向左边的LS字符执行,操作为执行模数约简的 乘法而不需要蒙哥马利型的寄生函数。
11.如权利要求1所述的装置,其中预装载缓冲器被串行地馈送,被乘数从多个存储器设备中“快速地”预装载进预装载缓冲器。
12.如权利要求1所述的装置,其中一个从附加的n比特S寄存器发出的先前的值,通过一个l比特 加法电路,被 加入 累加装置的输出值,使得当Y0检测器操作于检测在 累加器中把模 加到 求和的必要性时,首先发出的输出字符为零,其中Y0检测器用于检测利用下一个按依次的 相加的字符A0 Bd mod 2l、S(CO0)、SO1、Sd和S(COz),合成的 相加的字符快速地被有限域的 乘以l比特的J0值,这里 定义了加法而 定义了乘法,它们在本过程中适用于有限域。
13.如权利要求1所述的装置,其中对于l=1,J0固定为1,并且J0乘法是固有的,不需要额外硬件。
14.如权利要求1所述的装置,其中一个比较器操作于判断一个来自 模数乘法设备的有限域输出,它工作在GF(p),其中发出的右边前k个零字符被忽略,如果输出大于模数N,它就操作于控制一个模数约简,其中所述的值是来自乘发器设备的输出流的目标存储寄存器的输出,因此避免了为较小的积值分配第二个存储寄存器设备。
15.如权利要求1所述的装置,其中对于在GF(2q)中的 模数乘法,该装置操作于乘法而无需一个额外的预先计算的超过l比特的零强制因子。
16.一种如权利要求1所述的方法,操作于通过把A操作数值或B操作数值复位为零,并且设置部分结果值S0为1来计算J0常数。
17.一种微电子的装置,用于执行整数A和B的交错的有限域 模数乘法,操作于产生一个A乘以B模N的输出流,其在模数操作数寄存器中的字符数目n大于k,其中 乘法过程以迭代方式进行,在每一次交错的迭代中,操作数包括模数N、乘数B、上一步计算的部分结果S、以及被乘数A的k字符的字符串段被送入 乘法设备,分段地处理从A0字符串段到Am-1字符串段,其中每次的迭代结果被依次地 加到序列中的下一个临时结果S,这里迭代结果的前面发出的字符是零,该装置包括:
第一(B)、第二(S)和第三(N)主存储寄存器,每个寄存器能存储和输出操作数,分别操作为存储乘数值、部分结果值和也记作N的模数;
一个模数乘法设备操作为在 乘法迭代过程的各阶段中,把按顺序的大量的被乘数值中的一个或两个 加到 累加器设备,并且按顺序作为乘数轮流接收,输入来自:第一,B值寄存器、第二,来自“快速的”预测的值:Y0,作为一个乘数用于强制在每次迭代中右边首先输出零字符、第三,为来自模数N的寄存器的值;
被乘数并行寄存器操作为至少按顺序接收来自A、B、和N寄存器源的值,以及依次地还有一个强制Y0的被乘数零值;
强制Y0的第一输出零的检测装置,它操作为产生一个二进制的字符串,在第一阶段用作乘数,在第二阶段用作被乘数;
用于第一阶段的被切换到累加器设备的被乘数值,它包括第一个零值、第二个值Ai,它是被乘数A的k字符的字符串段、以及第三个值N0,它是模数N发出的前k个字符;
一个临时的结果值S,它是上一次迭代的结果,用于和来自累加器设备发出的值相加,依次地为下一次迭代产生一个部分结果;
依次输入的被乘数值,它送入累加器设备用于第二阶段,它包括第一个零值、第二个在第一阶段留在原位的Ai操作数、以及第三个在第一阶段已经预测得到的Y0值;
乘数值在第一阶段被送入乘法装置,它首先是发出的字符串B0,它是B操作数首先输出的字符串段,同时乘以第二个由预测值Y0字符串组成的乘数值,它是按字符同时装载的,它为第二阶段生成到预装载被乘数缓冲器;
两个乘数值在第二阶段输入到所述设备,它们分别是B操作数的左边的n-k个字符值,记为 B,以及模数N的左边的n-k个字符值,记为 N;以及
一个乘法刷新设备,它在最后一个阶段作用于传送驻留在累加器设备上的结果的值的左边的段到一个结果寄存器。
18.如权利要求17所述的装置,其中在基于多项式的操作数上的乘法以逆模式执行,乘法从MS字符到LS字符,操作为执行模数约简而不需要蒙哥马利类型的寄生函数。
19.一种预测Y0值的装置,其利用被乘数的第一发出值,和乘数B的现有输入、累加器设备的进位值、来自累加器的求和值、来自前面计算的部分结果的现有值、以及来自加法器的进位值来预测Y0值,所述加法器把来自累加器设备的结果和上一次的部分结果相加。
20.如权利要求19所述的装置,其中k个第一次发出的零将从设备中输出,该设备由依次预测下一个Y0字符的下面六个量来控制:
i.Ai寄存器的右边字符乘以B流的Bd字符,A0 Bd mod 2l的l比特乘l比特模2l的乘法的结果中的l比特的Sout比特;
ii.从累加设备中第一次发出的进位字符,S(CO0);
iii.来自累加设备,SO1,的发出单元的右边第二个字符中l比特的Sout字符;
iv.来自S流的按顺序的下一个字符值,Sd
v.来自Z输出全加器的l比特的进位字符,S(COz);
vi.l比特的J0值,它是N0模数被乘数寄存器中的右边字符的负乘法的逆,
其中,值A0 Bd mod 2l,S(CO0),SO1,Sd按字符相加到一起,并且“快速的”乘以J0字符,输出一个有效的Y0零强制预测字符,以强制一个l比特零字符串的输出。
21.如权利要求17所述的装置,包括至少一个检测器用于比较输出到模数N的输出结果,其机制操作为在结果寄存器的输出上启动一个第二减法器,从而输出一个模约简的值,它是输出结果值的狭义同余,免除了为较小结果分配第二个内存存储的必要。
22.如权利要求17所述的装置,其中两个被乘数的和值被装载进一个预装载字符缓冲器,它有至少k个字符的存储装置寄存器,而同时这些值的之一被装载进预装载缓冲器。
23.一种仅有一个累加器和具有零强值预测机制的装置,用于执行一系列交错的并行执行的模数乘法和平方,等效于三个自然整数的乘法操作,使得结果是一个幂。
24.如权利要求17所述的装置,其中将下一个依次使用的被乘数快速地预装载进预装载寄存器缓冲器装置。
25.如权利要求17所述的装置,其中将两个被乘数的和的值同时累加到至少一个k字符的寄存器,而将这些值中的一个值装载进其预装载缓冲器。
26.如权利要求17所述的装置,其中缓冲器和寄存器设备操作为装载来自外部存储器源的值,所述的缓冲器和寄存器操作为在计算时不载入到外部存储器源中,这样操作数的最大尺寸就依赖于可用的存储器装置。
27.如权利要求17所述的装置,其中所述的存储器寄存器装置一般是串行单字符输入/串行单字符输出,并行的至少k字符输入/并行的至少k字符输出,串行单字符输入/并行的至少k字符输出,以及并行的k字符输入/串行单字符输出的装置。
28.如权利要求17所述的装置,其中在乘法型迭代的最后阶段,输入为零字符的乘数器操作为刷新进位保存累加器存储器的左边段。
29.如权利要求17所述的装置,其中将下一次依次使用的被乘数快速的预装载到预装载存储器缓冲器中。
30.如权利要求17所述的装置,其中将被乘数值从中心存储器装置上快速的预装载到预装载缓冲器。
CNB018095992A 2000-05-15 2001-05-14 扩展整数的计算域的范围 Expired - Fee Related CN1265280C (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
IL13615100A IL136151A0 (en) 2000-05-15 2000-05-15 Method and apparatus for acceleration of cryptographic co-processing peripherals
IL136151 2000-05-15
IL139674 2000-11-14
IL13967400A IL139674A (en) 2000-11-14 2000-11-14 Extending the range of computational fields of integers and width of serial input operands in modular arithmetic public key cryptographic co-processors designed for elliptic curve and rsa type computations

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN 200510079518 Division CN1758212A (zh) 2000-05-15 2001-05-14 扩展整数的计算域的范围

Publications (2)

Publication Number Publication Date
CN1449519A true CN1449519A (zh) 2003-10-15
CN1265280C CN1265280C (zh) 2006-07-19

Family

ID=26323947

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB018095992A Expired - Fee Related CN1265280C (zh) 2000-05-15 2001-05-14 扩展整数的计算域的范围

Country Status (8)

Country Link
US (2) US7111166B2 (zh)
EP (1) EP1299797B1 (zh)
JP (1) JP4955182B2 (zh)
KR (1) KR100848412B1 (zh)
CN (1) CN1265280C (zh)
AU (1) AU5871201A (zh)
DE (1) DE60139401D1 (zh)
WO (1) WO2001089129A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699357A (zh) * 2013-12-05 2014-04-02 西安交通大学 一种用于模乘和模平方的快速模约简算法电路
CN112230883A (zh) * 2020-10-14 2021-01-15 上海芯旺微电子技术有限公司 一种用于乘法器零标志位的产生电路、乘法器和检测方法

Families Citing this family (58)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5869415A (en) * 1995-06-12 1999-02-09 Sud-Chemie Ag Process for activating layered silicates
US7996670B1 (en) 1999-07-08 2011-08-09 Broadcom Corporation Classification engine in a cryptography acceleration chip
US7240204B1 (en) * 2000-03-31 2007-07-03 State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Scalable and unified multiplication methods and apparatus
US7194088B2 (en) * 2001-06-08 2007-03-20 Corrent Corporation Method and system for a full-adder post processor for modulo arithmetic
US6973470B2 (en) * 2001-06-13 2005-12-06 Corrent Corporation Circuit and method for performing multiple modulo mathematic operations
IL143951A0 (en) * 2001-06-21 2003-09-17 Discretix Technologies Ltd A method and apparatus for carrying out efficiently arithmetic computations in hardware
US6917956B2 (en) * 2001-08-14 2005-07-12 Sun Microsystems, Inc. Apparatus and method for efficient modular exponentiation
US7027597B1 (en) * 2001-09-18 2006-04-11 Cisco Technologies, Inc. Pre-computation and dual-pass modular arithmetic operation approach to implement encryption protocols efficiently in electronic integrated circuits
US7027598B1 (en) * 2001-09-19 2006-04-11 Cisco Technology, Inc. Residue number system based pre-computation and dual-pass arithmetic modular operation approach to implement encryption protocols efficiently in electronic integrated circuits
US7233663B2 (en) * 2001-10-29 2007-06-19 Safenet, Inc. Key generation performance improvement
US7372960B2 (en) * 2001-12-31 2008-05-13 Certicom Corp. Method and apparatus for performing finite field calculations
DE10223853B4 (de) * 2002-05-28 2005-06-23 Technische Universität Braunschweig Carolo-Wilhelmina Verfahren und integrierte Schaltung zur Durchführung einer Multiplikation modulo M
US7447310B2 (en) * 2002-08-06 2008-11-04 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Lean multiplication of multi-precision numbers over GF(2m)
US7401109B2 (en) * 2002-08-06 2008-07-15 The State Of Oregon Acting By And Through The State Board Of Higher Education On Behalf Of Oregon State University Multiplication of multi-precision numbers having a size of a power of two
US7627114B2 (en) * 2002-10-02 2009-12-01 International Business Machines Corporation Efficient modular reduction and modular multiplication
US7568110B2 (en) * 2002-12-18 2009-07-28 Broadcom Corporation Cryptography accelerator interface decoupling from cryptography processing cores
US20040123123A1 (en) * 2002-12-18 2004-06-24 Buer Mark L. Methods and apparatus for accessing security association information in a cryptography accelerator
US7191341B2 (en) * 2002-12-18 2007-03-13 Broadcom Corporation Methods and apparatus for ordering data in a cryptography accelerator
US20040123120A1 (en) * 2002-12-18 2004-06-24 Broadcom Corporation Cryptography accelerator input interface data handling
US7434043B2 (en) 2002-12-18 2008-10-07 Broadcom Corporation Cryptography accelerator data routing unit
FR2862454A1 (fr) * 2003-11-18 2005-05-20 Atmel Corp Methode de reduction modulaire aleatoire et equipement associe
US7865542B2 (en) 2003-12-29 2011-01-04 Xilinx, Inc. Digital signal processing block having a wide multiplexer
US7860915B2 (en) 2003-12-29 2010-12-28 Xilinx, Inc. Digital signal processing circuit having a pattern circuit for determining termination conditions
US7840630B2 (en) 2003-12-29 2010-11-23 Xilinx, Inc. Arithmetic logic unit circuit
US7840627B2 (en) * 2003-12-29 2010-11-23 Xilinx, Inc. Digital signal processing circuit having input register blocks
US7849119B2 (en) 2003-12-29 2010-12-07 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit
US7870182B2 (en) 2003-12-29 2011-01-11 Xilinx Inc. Digital signal processing circuit having an adder circuit with carry-outs
US7844653B2 (en) 2003-12-29 2010-11-30 Xilinx, Inc. Digital signal processing circuit having a pre-adder circuit
US7853632B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Architectural floorplan for a digital signal processing circuit
US7853634B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a SIMD circuit
US7882165B2 (en) 2003-12-29 2011-02-01 Xilinx, Inc. Digital signal processing element having an arithmetic logic unit
US7853636B2 (en) 2003-12-29 2010-12-14 Xilinx, Inc. Digital signal processing circuit having a pattern detector circuit for convergent rounding
US7702105B1 (en) * 2004-04-23 2010-04-20 Oracle America, Inc. Accelerating elliptic curve point multiplication through batched inversions
US7801937B1 (en) * 2004-09-01 2010-09-21 Altera Corporation Method and apparatus for implementing a look-ahead for low radix Montgomery multiplication
US20060136717A1 (en) 2004-12-20 2006-06-22 Mark Buer System and method for authentication via a proximate device
US8295484B2 (en) 2004-12-21 2012-10-23 Broadcom Corporation System and method for securing data from a remote input device
FR2885711B1 (fr) * 2005-05-12 2007-07-06 Atmel Corp Procede et materiel modulaire et aleatoire pour la reduction polynomiale
DE602005020702D1 (de) * 2005-10-18 2010-05-27 Telecom Italia Spa Verfahren zur skalarmultiplikation in gruppen elliptischer kurven über primkörpern für nebenkanal-attacken-beständige kryptosysteme
US8024391B2 (en) * 2006-11-06 2011-09-20 Atmel Rousset S.A.S. Modular multiplication method with precomputation using one known operand
US7755766B1 (en) 2007-03-27 2010-07-13 Itt Manufacturing Enterprises, Inc. Telescope interferometric maintenance evaluation tool
CN100517214C (zh) * 2007-05-30 2009-07-22 北京天碁科技有限公司 一种实现二进制多项式运算的硬件配置方法及硬件系统
US8144864B2 (en) * 2007-12-28 2012-03-27 Intel Corporation Method for speeding up the computations for characteristic 2 elliptic curve cryptographic systems
US8543635B2 (en) 2009-01-27 2013-09-24 Xilinx, Inc. Digital signal processing block with preadder stage
US8479133B2 (en) 2009-01-27 2013-07-02 Xilinx, Inc. Method of and circuit for implementing a filter in an integrated circuit
KR101590322B1 (ko) * 2009-05-15 2016-02-19 삼성전자주식회사 연산임계경로가 감소된 모듈러 곱셈기 및 연산임계경로 감소방법
WO2013036217A1 (en) * 2011-09-06 2013-03-14 Intel Corporation Number squaring computer-implemented method and apparatus
US9355068B2 (en) 2012-06-29 2016-05-31 Intel Corporation Vector multiplication with operand base system conversion and re-conversion
US10095516B2 (en) 2012-06-29 2018-10-09 Intel Corporation Vector multiplication with accumulation in large register space
CN103207770B (zh) * 2013-04-16 2016-09-28 飞天诚信科技股份有限公司 一种在嵌入式系统中实现大数预计算的方法
CN103888246A (zh) * 2014-03-10 2014-06-25 深圳华视微电子有限公司 低功耗小面积的数据处理方法及其数据处理装置
KR101626743B1 (ko) * 2014-03-26 2016-06-07 금오공과대학교 산학협력단 유한체상의 몽고메리 알고리즘을 이용한 곱셉기 및 곱셈 방법
US10924276B2 (en) * 2018-05-17 2021-02-16 Intel Corporation System, apparatus and method for performing a plurality of cryptographic operations
US11468797B2 (en) 2020-06-24 2022-10-11 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
US11508263B2 (en) * 2020-06-24 2022-11-22 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
TR2021012485A2 (tr) * 2021-08-06 2022-07-21 Elektra Elektronik Sanayi Ve Ticaret Anonim Sirketi Evi̇ri̇ci̇ ve güç çevi̇ri̇ci̇si̇ uygulamalarinda hizli ve yüksek doğruluklu bi̇r hesaplama yöntemi̇ ve söz konusu yönteme göre çalişan bi̇r ci̇haz
WO2023141933A1 (en) 2022-01-28 2023-08-03 Nvidia Corporation Techniques, devices, and instruction set architecture for efficient modular division and inversion
WO2023141935A1 (en) 2022-01-28 2023-08-03 Nvidia Corporation Techniques, devices, and instruction set architecture for balanced and secure ladder computations
WO2023141934A1 (en) 2022-01-28 2023-08-03 Nvidia Corporation Efficient masking of secure data in ladder-type cryptographic computations

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0080528A1 (en) * 1981-11-30 1983-06-08 Omnet Associates Computational method and apparatus for finite field arithmetic
US4745568A (en) * 1986-12-16 1988-05-17 Onyszchuk Ivan M Computational method and apparatus for finite field multiplication
JPH02199532A (ja) * 1989-01-30 1990-08-07 Nippon Telegr & Teleph Corp <Ntt> 剰余乗算の方法および回路
US5073870A (en) 1989-01-30 1991-12-17 Nippon Telegraph And Telephone Corporation Modular multiplication method and the system for processing data
US5144574A (en) 1989-01-30 1992-09-01 Nippon Telegraph And Telephone Corporation Modular multiplication method and the system for processing data
US5065429A (en) * 1989-04-03 1991-11-12 Lang Gerald S Method and apparatus for protecting material on storage media
IL94449A (en) * 1990-05-20 1994-06-24 Fortress U & T 2000 Ltd Method and apparatus for exponentiation over gf(2")
IL97413A (en) * 1991-03-04 1995-06-29 Fortress U & T 2000 Ltd Microcircuit for the implementation of rsa algorithm and ordinary and modular arithmetic in particular exponentiation with large operands
JP3406914B2 (ja) * 1991-09-05 2003-05-19 キヤノン株式会社 演算装置及びこれを備えた暗号化装置、復号装置
JP3302043B2 (ja) * 1992-05-18 2002-07-15 キヤノン株式会社 暗号通信方法及びそのシステム
GB9121995D0 (en) * 1991-10-16 1991-11-27 Jonhig Ltd Value transfer system
IL101623A (en) * 1992-04-16 1997-06-10 Fortress U & T 2000 Ltd Digital signature device
US5513133A (en) * 1992-11-30 1996-04-30 Fortress U&T Ltd. Compact microelectronic device for performing modular multiplication and exponentiation over large numbers
JPH0720778A (ja) * 1993-07-02 1995-01-24 Fujitsu Ltd 剰余計算装置、テーブル作成装置および乗算剰余計算装置
US5349551A (en) * 1993-07-30 1994-09-20 The United States Of America As Represented By The Director Of National Security Agency Device for and method of preforming an N-bit modular multiplication in approximately N/2 steps
US5544246A (en) * 1993-09-17 1996-08-06 At&T Corp. Smartcard adapted for a plurality of service providers and for remote installation of same
JP3614480B2 (ja) * 1994-11-18 2005-01-26 株式会社日立製作所 電子チケット販売・払戻システム及びその販売・払戻方法
JPH0944576A (ja) * 1995-08-02 1997-02-14 Hitachi Ltd 電子財布貸付システム
ES2193247T3 (es) * 1996-05-24 2003-11-01 Jong Eduard Karel De Sistema y metodo de proteccion criptografica de comunicaciones.
EP0818761A1 (en) * 1996-07-12 1998-01-14 Koninklijke KPN N.V. Integrated circuit card, secure application module, system comprising a secure application module and a terminal and a method for controlling service actions to be carried out by the secure application module on the integrated circuit card
GB2321979B (en) * 1997-01-30 2002-11-13 Motorola Ltd Modular multiplication circuit
GB9707861D0 (en) * 1997-04-18 1997-06-04 Certicom Corp Arithmetic processor
KR100684134B1 (ko) * 1997-05-04 2007-02-16 엠시스템스 리미티드 몽고메리 승산에 기초한 모듈의 승산 및 누승을 위한 개선된 장치와 방법
US6748410B1 (en) * 1997-05-04 2004-06-08 M-Systems Flash Disk Pioneers, Ltd. Apparatus and method for modular multiplication and exponentiation based on montgomery multiplication
US6366940B1 (en) * 1998-03-02 2002-04-02 Matsushita Electric Industrial Co., Ltd. High-speed modular multiplication apparatus achieved in small circuit

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103699357A (zh) * 2013-12-05 2014-04-02 西安交通大学 一种用于模乘和模平方的快速模约简算法电路
CN103699357B (zh) * 2013-12-05 2016-11-23 西安交通大学 一种用于模乘和模平方的快速模约简算法电路
CN112230883A (zh) * 2020-10-14 2021-01-15 上海芯旺微电子技术有限公司 一种用于乘法器零标志位的产生电路、乘法器和检测方法

Also Published As

Publication number Publication date
CN1265280C (zh) 2006-07-19
EP1299797A4 (en) 2008-04-02
US7111166B2 (en) 2006-09-19
US20020039418A1 (en) 2002-04-04
JP2004501396A (ja) 2004-01-15
WO2001089129A2 (en) 2001-11-22
EP1299797A2 (en) 2003-04-09
KR100848412B1 (ko) 2008-07-28
WO2001089129A3 (en) 2002-03-28
US7904719B2 (en) 2011-03-08
AU5871201A (en) 2001-11-26
DE60139401D1 (de) 2009-09-10
KR20030093905A (ko) 2003-12-11
EP1299797B1 (en) 2009-07-29
US20060269054A1 (en) 2006-11-30
JP4955182B2 (ja) 2012-06-20

Similar Documents

Publication Publication Date Title
CN1265280C (zh) 扩展整数的计算域的范围
CN1148643C (zh) 模幂运算装置
CN1186714C (zh) 高基除法器及方法
CN1252587C (zh) 移位分组数据的方法、装置和处理数字音频信号的系统
CN1156171C (zh) 提高处理效率的图象声音处理装置
CN1200392C (zh) 信息处理方法
CN1205538C (zh) 用于多精度整数算术运算的装置
CN101061526A (zh) 密码处理运算装置
CN1702613A (zh) 蒙哥马利模乘法器
CN1199177C (zh) 可抑制电路规模能进行高速纠错的纠错装置和解码装置
CN1890630A (zh) 在寄存器和存储器之间移动数据的数据处理设备和方法
CN1200571C (zh) 正交变换、逆正交变换方法及装置、编码、解码方法及装置
CN1668995A (zh) 用于改善伪随机数发生器的输出的不可预测性的方法
CN1914592A (zh) 执行具有单元大小控制的紧缩数据操作的方法和设备
CN1841443A (zh) 计算方法、计算设备以及计算机程序
CN1478234A (zh) 用于有效地执行线性变换的方法和装置
CN1530824A (zh) 用于执行蒙哥马利型模乘法的装置及方法
CN1226039A (zh) 指数计算装置和解码装置
CN1633749A (zh) 获得循环冗余码
CN1269052C (zh) 支持缩小代码长度的常量还原型处理器
CN1605059A (zh) 蒙哥马利乘法器中的流水线内核
CN1599445A (zh) 数据处理方法、数据处理装置
CN1295310A (zh) 正交变换图像的分辨率变换装置和方法
CN1215678C (zh) 用于证明实体真实性和消息完整性的专用密钥集
CN1758212A (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
C56 Change in the name or address of the patentee

Owner name: M SYSTEM CO., LTD.

Free format text: FORMER NAME OR ADDRESS: M-SYSTEMS FLASH DISK PIONEERS LTD

Owner name: SCHAAN DISK ISRAEL CO., LTD.

Free format text: FORMER NAME OR ADDRESS: M SYSTEM CO., LTD.

CP03 Change of name, title or address

Address after: Israel Umar

Patentee after: SA disk Israel Ltd.

Address before: Israel Umar

Patentee before: MSystem Co.,Ltd.

Address after: Israel Umar

Patentee after: MSystem Co.,Ltd.

Address before: Israel Umar

Patentee before: SanDisk IL Ltd.

C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20060719

Termination date: 20140514