CN1248102C - 模乘法的电路及其方法 - Google Patents

模乘法的电路及其方法 Download PDF

Info

Publication number
CN1248102C
CN1248102C CNB998088714A CN99808871A CN1248102C CN 1248102 C CN1248102 C CN 1248102C CN B998088714 A CNB998088714 A CN B998088714A CN 99808871 A CN99808871 A CN 99808871A CN 1248102 C CN1248102 C CN 1248102C
Authority
CN
China
Prior art keywords
value
data
input
output
totalizer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB998088714A
Other languages
English (en)
Other versions
CN1310816A (zh
Inventor
罗伯特·I·福斯特
约翰·M·布思
罗德尼·C·特西
詹姆斯·D·德沃金
迈克尔·J·特拉
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.)
NXP USA Inc
Original Assignee
Freescale Semiconductor Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Freescale Semiconductor Inc filed Critical Freescale Semiconductor Inc
Publication of CN1310816A publication Critical patent/CN1310816A/zh
Application granted granted Critical
Publication of CN1248102C publication Critical patent/CN1248102C/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/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

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

Abstract

一个协处理器(44)执行用于计算对数据进行加密或者解密的模数指数方程的一个数学算法。一个流水线乘法器(56)接收被保存在一个A/B RAM(72)中的16比特数据值,并且产生一个部分乘积。被产生的部分乘积在一个加法器(58)中被与保存在一个乘积RAM(64)中的前一个部分乘积进行相加。当这个相加值的一个特定数据比特位置具有一个逻辑值1时,一个模归约器(60)促使一个二进制值数据值N被进行对齐,并且被添加到这个相加值上。一个N RAM(70)保存在一个模归约器(60)中被添加到相加值上的数据值N。

Description

模乘法的电路及其方法
技术领域
本发明一般涉及乘法器,更特别地,涉及一个加密乘法器。
背景技术
Rivest-Shamir-Adleman(RSA)是一个被广泛使用的、用于给在电子设备之间传送的数字数据提供高安全性的加密算法。RSA算法的模求幂数学可以在一个硬件乘法器的基础上,使用Montgomery的方法来进行有效的计算,以获得模归约。可以使用重复的模乘法来有效地计算大整数的模求幂,并且整个RSA计算的效率与乘法器的速度直接相关。硬件乘法器使用流水线技术来进行Montgomery算法的大量并行计算。计算Montgomery算法的一个流水线硬件乘法器在速度和硅片面积之间提供了一个折衷,这提供了一个高性能的并且性价比很高的一个方案。另外,流水线的整数模乘法器提供了一个低的功率,这是很多应用所需要的。
用RSA算法推动的密码系统提供了一个高的安全级别,但是在实现上是很昂贵的。尽管带模求幂的RSA算法数学是非常直接的,有效的硬件实现却不是直接的。随着对快速加密操作和高性能的需求的增加,需要改善硬件模乘法器结构以确保高的安全级别。
所以,具有以一个集成电路方式被实现的、具有高性能、低价格和低功率的一个模求幂和乘法系统是非常有利的。需要这样一个乘法系统,它能够在比现有系统所花时钟周期少的时钟周期内实现对Montgomery算法的高性能计算。另外,需要这样一个乘法系统,它可适应于具有更多比特数目的操作数。
发明内容
为实现上述目的,根据本发明,提出了一种用于执行模数乘法的数据处理系统,包括:一个乘法器,具有用于分别接收二进制数据值A和B的第一乘法器输入和第二乘法器输入;一个加法器,具有连接到乘法器的一个乘法器输出的第一加法器输入,被连接成用于接收一个部分乘积的第二加法器输入,和用于提供一个相加值的一个加法器输出;和一个模归约器,具有连接到加法器的输出的第一归约器输入,被连接成用于接收一个二进制数据值N的第二归约器输入,和用于提供一个具有形式为(A*B/R mod N)的数据值的一个归约器输出,其中通过将二进制数据值N进行对齐,并且当相加值的一个预定比特位置具有一个逻辑值为1的状态时将二进制数据值N添加到相加值上,来产生一个归约值
Figure C9980887100061
的一个最低有效数据比特。
根据本发明的另一个方面,提出了一种用于Foster-Montgomery硬件加速器的结构,其中在所述FMHA中执行数学运算,所述结构包括:一个乘法器,具有分别被连接成用于接收操作数A和B的第一乘法器输入和第二乘法器输入,并且具有用于提供一个部分乘积的一个乘法器输出;一个加法器,具有连接到乘法器的输出的第一加法器输入,被连接成用于接收前一个被归约部分乘积的第二加法器输入,和用于提供一个相加值的一个加法器输出;和一个模归约器,具有连接到加法器输出的第一归约器输入,被连接成用于接收模数的第二归约器输入,以及提供一个被归约的部分乘积的一个输出。
附图说明
图1是包括一个Foster-Montgomery硬件加速器(FMHA)模块的一个智能卡的一个框图;
图2是显示经过互联网被从包括FMHA模块的一个集成电路传送出去的数据的一个图;
图3是显示被包括在图1的FMHA模块中的功能模块的一个框图;
图4是一个模归约器的一部分的一个框图;
图5是这个模归约器与用于图1中FMHA中的一个乘法器组合的一部分的一个框图;
图6是显示用于产生在Foster-Montgomery归约算法中被使用的值(R2模N)的一个方法的一个流图230;和
图7是显示产生如图6所描述的值(R2模N)的一个框图。
具体实施方式
图1显示了被配置成在一个数据通信网络中进行工作的一个智能卡10的一个框图。在一个“接触型”智能卡结构中,智能卡10包括连接到一些接触点13的一个接口(I/F)模块12。接触点13允许在一个终端设备(没有显示)和智能卡10之间进行电子信号的传送。智能卡10通过接触点13中的一个从这个终端设备接收一个操作电压,以向智能卡10中的功能模块提供能量。附加的接触点13被用于在智能卡10和这个终端设备之间传送输入/输出(I/O)信号。
替代地,智能卡10可以是一个“非接触的”、不需要与这个终端设备进行物理接触就能够进行工作的智能卡。在这个情形下,智能卡10经过一个载波频率接收输入信号并且发送被调制的输出信号。例如,无线频率(RF)能量被辐射到智能卡10内部的一个线圈(没有显示),并且这个线圈提供操作电压,以使智能卡10内部的功能模块能够进行工作。
除了包括从/向一个外部终端设备接收和发送数据的I/F模块12外,智能卡10包括一个通用异步接收器-发送器设备(UART)14。UART 14提供了一个位于一个微处理器18和这个终端设备之间的一个接口。这个接口模块,即,UART 14接收来自波特率发生器16的一个可调节时钟信号,这个时钟信号动态地将数据移动通过UART14。一个系统总线15公共地将微处理器18与其它功能模块,例如UART 14,一个随机访问存储器(RAM)20,一个只读存储器(ROM)22,一个存储器访问控制器(MAC)24,和一个安全存储器管理单元(SMMU)28连接在一起。从UART 14被接收的数据被保存在RAM20中,RAM 20的一部分是非挥发性的,并且当智能卡10没有接收到一个工作电压时可以保持信息。非挥发性存储器的示例包括一个电可擦除(E2)存储器或者一个铁电存储器等很多。ROM 22提供智能卡10的操作系统所需要的数据,并且经过系统总线向微处理器18的程序控制提供指令。来自RAM 20的数据通过MAC 24被传送到一个Foster-Montgomery硬件加速器(FMHA)26,在Foster-Montgomery硬件加速器中,执行数学运算来加密数据。FMHA 26也可以被称作一个模算术单元(MAU)或者一个密码加速器模块。被加密的数据经过系统总线15被从FMHA 26传送到UART 14和这个终端设备。
应注意,如图1所显示的智能卡10是一个简略形式。应进一步注意,智能卡10是一个嵌入到可以工作在“接触”或者“非接触”模式的塑料信用卡中的计算机芯片。附加的模块,例如串行通信接口模块,一个看门狗定时器,一个内部定时器,一个中断控制器等等,可以被作为功能模块添加到智能卡10中。
在工作时,智能卡10建立一个安全的通信链路,以在智能卡10和这个终端设备之间进行数据的传送。在微处理器18的控制下,SMMU 28,MAC 24,和FMHA 26合作来执行数学算法,这个数学算法使用加密密钥和其它信息来计算模求幂方程以对被保存在RAM20中的数据部分进行加密。举例来说,RAM 20保存数据,例如个人健康记录,金融记录,和个人身份验证标识符,即,指纹或者视网膜印。个人数据经过系统总线15被从RAM 20传送到MAC 24,经过一个数据主机总线25被从MAC 24传送到FMHA 26。FMHA 26使用包括模乘法,加法,减法,和幂的功能来对在数据主机总线25上接收的数据进行加密。在数据加密后,被加密的数据被从FMHA 26传送到UART 14和I/F模块12。被加密的个人数据通过非接触型智能卡中的RF信号被辐射,并且通过接触型智能卡中的一组I/O管脚被传送到这个终端设备中。
图2是显示经过互联网到/从包括FMHA模块的一个集成电路进行数据传送的一个图。用户通过一个键盘30接口将数据输入到一个中央处理器单元(CPU)34。显示器32允许这个用户直观地显示被保存在CPU 34中的数据。一个集成电路36包括执行Foster-Montgomery算法的密码电路。被保存在CPU 34中的数据经过一个数据总线被传送到集成电路36,被加密,并且加密数据被传送到互联网38。另外,经过互联网38而接收的数据被传送到集成电路36,并且被解密。这样,图2显示了用于与一个通信网络,例如互联网进行接口通信的一个密码系统。
图3是显示包括在图1的FMHA 26中的功能模块的一个框图。应注意,图中相同的标号标识相同的部件。进一步,应注意,Foster-Montgomery算法形成了操作数A和B的一个乘积,其中两个操作数A和B均是大的整数,例如1024比特的数。FMHA 26所使用的流水线技术允许操作数A和B被分段成多个有顺序的16比特数,这些16比特数被称作数字。这样,一个数字就包括16比特的数据,但是这不对本发明有任何限制作用。进一步,操作数A的这组数中的每一个分段数被称作一个值A。类似地,操作数B的这组数中的每一个分段数被称作一个值B。值A的示例是A0,A1,...,A63,和值B的示例是B0,B1,...,B63。一个主机接口(I/F)模块40经过数据主机总线25(图1)从RAM 20中接收值A和值B。值A和B被保存在一个A/B随机访问存储器(RAM)72中。另外,主机I/F模块40从这个主机处理器,即,微处理器18(图1)接收控制信号,这些控制信号被用于控制FMHA 26内部数据传送的一个控制电路74翻译成主机控制信号。
控制电路74具有经过一个总线,称作一个数据总线41,而连接到主机I/F模块40的输出的一个端子。控制电路74从这个主机处理器接收控制信号,并且产生用于控制在主机I/F模块40和FMHA 26内部其它模块之间等等交互通信的信号。
一个数字非单元(DNU)42的一个输入经过数据总线41连接到主机I/F模块40的一个输出。DNU 24的这个输入经过数据总线41从A/B RAM 72接收一个值B,这值B或者被传送到协处理器44的一个端子46,或者被DNU 42转换为一个1的互补负数,并且被传送到端子46。另外,协处理器44具有连接到数据总线41的一个端子48,以从A/B RAM 72接收一个值A。协处理器44的端子50和52被连接以分别接收一个部分乘积值和一个值N。操作数N是所有算术的模数,并且定义了在其上数学是有效的有限字段。由此,可能的数字范围被模数所限制。
协处理器44计算Foster-Montgomery模归约算法。协处理器44包括一个乘法器56,乘法器56具有连接到端子46的一第一输入和连接到端子48的一第二输入。一个加法电路或者加法器58具有连接到乘法器56的一个输出的一第一输入和连接到协处理器44的端子50的一第二输入。一个模归约器(modulo reducer)60具有连接到加法器58的一个输出的一第一输入和连接到协处理器44的端子52的一第二输入。一个锁存器62具有连接到模归约器60的一个输出的一个输入,和连接到协处理器44的端子54的一个输出。锁存器62对协处理器44的某些实施方式是不需要的,并且锁存器可以或者不可以包括在端子46,48,50,52,等等的输入上。
协处理器44的一个输出端子连接到一个乘积RAM 64的一个输入。乘积RAM 64为协处理器44所产生的中间数据值提供临时性的保存。例如,乘积RAM 64包括两个独立的RAM,即,一个偶存储器和一个奇存储器,这允许在一单个周期内进行双访问。例如,在一个周期内,偶存储器提供在涉及协处理器44的下一个计算期间所需要的数据,而奇存储器保存协处理器44在前一个计算中所产生的数据。在下一个周期中,奇存储器提供在涉及协处理器44的下一个计算期间所需要的数据,而偶存储器保存协处理器44在前一个计算中所产生的数据。这样,偶和奇存储器在每一个周期内交替变为读取模式和写入模式,并且在同一个周期内,存储器不同时处于读取模式或者写入模式。乘积RAM 64的偶存储器和奇存储器被组织成32行,每行保存16比特的数据(一个数字)。替代地,乘积RAM 64可以是一个双端口的RAM。
乘积RAM 64的一个输出被连接到一个数据交换机单元(DSU)68的一第一输入。DSU 68的第二输入被连接到数据总线41。DSU 68的一个输出被连接到协处理器44的端子50。这样,来自数据总线41的数据或者来自乘积RAM 64的数据在DSU 68内被选择作为部分乘积值,并且被传送到协处理器44的端子50。另外,来自乘积RAM 64的数据也可以被传送到数据总线41。
一个N RAM 70具有连接到数据总线41的一个输入,以接收用于协处理器44所使用的数系的模值。N RAM 70例如被组织成64行,其中每一行保存16比特的数据。N RAM 70的一个输出被连接到一个数字比较单元(DCU)66的一第一输入。DCU 66的一第二输入被连接到数据总线41。DCU 66的一个输出被连接到协处理器44的端子52。这样,来自数据总线41的数据或者来自N RAM 70的数据在DCU内部可以被选择作为值N,并且被传送到协处理器44的端子52。另外,数据可以经过DCU 66被从N RAM 70传送到数据总线41。
具有一个A部分和一个B部分的一个A/B RAM 72连接到数据总线41,并且接收用于数学运算的源操作数。例如,A/B RAM 72在A部分中保存具有1024比特的第一操作数的所有数字,即,分段操作数A的64个值A数字。类似地,A/B RAM 72在B部分中保存具有1024比特的第二操作数的所有数字,即,分段操作数B的64个值B数字。这样,A/B RAM 72保存被传送到协处理器44的端子48的、64个值A数字,和保存被传送到DNU 42的输入的、64个值B数字。替代地,A/B RAM 72可以是两个独立的存储器,其中一个存储器用于保存操作数A,另一个存储器用于保存操作数B。另外,在本实施方式中,在加密操作被完成后,A/B RAM 72的B部分保存操作数A和B的一个乘法的最终乘积。当这个最终乘积被计算出来时,乘积RAM 64的输出被传送到DSU 68中的数据总线41。主机I/F模块40可以将被保存在A/B RAM 72的B部分中的最终乘积,即,被加密数据,传送到数据主机总线25。
FMHA 26执行操作数A和B的一个乘法,来进行加密和解密。操作数A和B可以是数字数据,或者使用用于信息交换的美国标准代码(ASCII)或者其它变换字符集被转换成序数数的普通文本串。FMHA26将这个数据视为一个二进制整数。用于模乘法的Montgomery归约算法的形式如下:
Figure C9980887100111
其中:
A是第一操作数和一个整数;
B是第二操作数和一个整数;
N是一个为奇数的整数;
mod N是(A*B*R)/N的余数值,定义了有限字段中的元素数目;
R是一个2的整数次幂的数,其值大于N;和
Figure C9980887100112
是一个归约值,它是这样被计算,以使(A*R mod N)(B*R mod
Figure C9980887100114
是可以被R除的一个整数,而不会丢失有效比特。
在使用FMHA 26原理的一个示例中,两个1024比特的操作数被使用流水线技术和经过协处理器44进行多遍处理或者循环进行乘法运算,其中两个16比特的二进制数被乘法器56进行乘法运算。但是,应注意,本发明不局限于1024比特的操作数,也不局限于将两个16比特二进制数进行乘法运算的一个硬件乘法器。为了简单和示例性的说明,使用对两个小数进行乘法运算的下述示例来描述Foster-Montgomery模归约算法。应注意,通过将操作数A和B预先乘以R,Montgomery方法将操作数A和B转换为Montgomery形式,以简化硬件模归约问题。
使用基数为2的数,当A10=9,R10=16,和N10=13,项(A*R modN)的值为0001。进一步,当B10=11,R10=16,和N10=13时,项(B*R mod N)的值为0111。在下面的示例中,Foster-Montgomery模归约算法被用于(A*R mod N),即(0001),和(B*R mod N),即(0111)的乘法中。
乘法器56将两个数据进行乘法运算,并且这些数据值的乘积被传送到加法器58。加法器58产生前一个部分乘积和来自乘法器56的被产生乘积的和值。在Foster-Montgomery模归约算法,和值的一特定比特位置的逻辑值决定这个和值是否应被归约。初始,这个特定比特位置是最右的比特位置,即,第一和值中最低有效位的位置。在将一第一数据值乘以第二数据值中一个比特位置上的值后,即,一比特乘法后,这个特定比特位置朝左移动一个比特的位置。这样,随着每一个比特乘法的产生,和值中的特定比特位置就朝左移动一个比特位置,即,从最低有效位朝最高有效位方向移动。
在Foster-Montgomery模归约算法中,当在这个特定比特位置的数据比特的逻辑值具有一个逻辑值1时,然后通过一个移位操作这个值N被对准到这个特定比特位置,并且被加到这个和值上。在每一个比特乘法后通过检查在这个特定比特位置上的逻辑值并且合适地对准和将这个值N进行相加,在每一个通过协处理器44的旋转后,在协处理器44的输出所产生的每一个部分乘积被合适地归约。另一方面,值N不被添加到和值上,当在这个特定比特位置上数据比特的逻辑值的逻辑值为零时。一个逻辑值0隐含为在这个特定比特位置上的值已经被归约,并且N的特定倍数不是
Figure C9980887100121
的一个分量。
在这个示例中,乘法器56产生值(A*R mod N),即(0001),和值(B*R mod N),即(0111)的一个乘积。第一比特乘法是通过将值(0001)乘以最低有效比特位(0111),即一个逻辑值1而产生。在产生一个比特乘积的每一个乘法后,这个结果被加到一个被保存的部分乘积。应注意,被保存的部分乘积开始是零,所以第一相加值和比特乘积具有相等的值。
(1)0001<==一个初始的值,(A*R mod N)
(2)× 0001<==(B*R mod N)的最低有效位
(3)0001<==第一比特乘法
使用Foster-Montgomery归约算法中,在这和值的特定位置上的逻辑值检查N的值是否应添加到和值上,以归约所产生的乘积。在这个示例中,第一比特乘法的最低有效比特(0001)具有一个逻辑值1,并且值N(4)被加到第一比特乘法(3)。
(3)0001<==第一比特乘法的乘积
(4)+ 1101<==值N
(5)1110<==在第一比特归约后的结果
第二比特乘法涉及将(1)乘以(B*R mod N)从右边数(0111)的第二个比特。
(1)0001<==初始值
(6)×0010<==(B*R mod N)从右边数的第二个比特
(7)0010<==第二比特乘法的乘积
第二比特乘法(7)的乘积被加到被保存的前一个值(5),来产生第二相加值(8)。
(7)0010<==第二比特乘法的乘积
(5)+ 1110<==在第一比特归约后的结果
(8)10000<==第二相加值
另外,在Foster-Montgomery归约算法中,第二个相加值的这个特定比特位置的逻辑值确定是否应归约第二相加值。在这个情形下,这个特定比特位置恰好是在最低有效数据比特(10000)的左边的位置。第二数据比特的逻辑值为0,并且相应地,值N不被加到第二相加值上。换句话说,第二相加值已经被归约,并且不需要对一个移位N值进行相加。
第三比特乘法涉及(1)乘以位于(B*R mod N)中从右边数第三比特位置(0111)的逻辑值。
(1)0001<==初始值
(9)×000 1<==(B*R mod N)中从右边数第三比特位置
(10)0100<==第三比特乘法的乘积
在第三比特乘法后,第三比特乘法(10)的乘积被添加到前一结果(8)来提供第三相加值(11)。
(10)0100<==第三比特乘法的乘积
(8)+ 10000<==前一结果
(11)010100<==第三相加值
在将第三比特乘法的乘积与前一结果(8)相加后,第三相加值的特定比特位置的逻辑值确定第三相加值是否应被归约。在这个示例中,这个特定比特位置是(010 100)中从右边数的第三比特位置。当这个第三相加值的特定比特位置具有一个逻辑值1,然后,N的值对准到第三特定比特位置并且被添加到第三相加值。另一方面,当第三相加值的第三特定比特位置具有一个逻辑值0,N的值不被添加到第三相加值。在这个示例中,第三相加值(10 100)中从右边数第三比特位置具有一个逻辑值1,并且N的值对准到从右边数的第三比特位置,并且被添加到第三相加值。
(11)010100<==第三相加值
(12)+ 1101<==N被合适对准后的值
(13)1001000<==第三比特归约的结果
第四比特乘法的产生涉及将(1)乘以位于(B*R mod N)中从右边数第四比特位置( 0111)的逻辑值。
(1)0001<==初始值
(14)×000 0<==(B*R mod N)中从右边数第四比特位置
(10)0000<==第四比特乘法的乘积
在第四比特乘法后,第四比特乘法(15)的乘积被添加到前一结果(13)来提供第四相加值(16)。
(15)0000<==第四比特乘法的乘积
(13) 1001000<==前一结果
(16)1001000<==第四相加值
检查第四相加值(16)的第四特定比特位置以确定逻辑1或者逻辑0。对这个示例来说,第四相加值(16)的第四特定比特位置是从右边数的第四比特位置(100 1000)。在这个示例中,从右边数的第四比特位置(100 1000)的逻辑值为1,并且相应地,N的值被对准到从右边数的第四比特位置,并且被添加到第四相加值。
(16)01001000<==第四相加值
(17)+ 1101<==N被合适对准后的值
(18)10110000<==第四比特归约的结果
(A*R mod N)和(B*R mod N)的乘积,即,(0001)和(0111)的乘积的值为(A*B*R2 mod N)或者(10110000)。将(A*B*R2 modN)除以R产生(A*B*R mod N)或者(1011)。应注意,R的值被选择作为基数2的一个整数倍。换句话说,R的值仅可以为21,22,23,…,2I,其中I是一个整数。对这个示例来说,R的值被选择作为24。典型地,R的值被选择为2s,其中S是模数N的比特数目。这样,除以R的操作可以通过简单地将乘积朝右移动次数I就可以完成。应进一步注意,在除以R后,值(A*B*R mod N)是Montgomery形式,即,是(值*R)mod N的形式。采用Montgomery形式的值(A*B*R mod N)允许协处理器44多遍处理(multiple pass)。协处理器44所使用的流水线技术是一个有效的、将(A*R mod N)和(B*R modN)相乘的方法,当值A,B,R,和N较大时。
与Montgomery归约算法相反,在Foster-Montgomery归约算法中的值 在将两个操作数相乘以前不被计算,而是如前一示例中所提的,在每一个比特乘法与前一个结果相加后才进行归约。应注意,N是奇数,即N值中最低有效位的逻辑值为1。当这个特定比特位置的逻辑值为1时,通过将N添加到相加值上,就产生在较低比特位置上有一些值为0的比特的值(A*B*R2 mod N)。换句话说,Foster-Montgomery归约算法促使至少I个最低有效比特位具有逻辑值0。
随着协处理器44的计算,其中数据的形式是(A*B*R mod N),所希望的最终数据形式是(A*B mod N)。在这个示例中,(A*B*R modN)的值是(1011)。值(A*B*R mod N)被归约以准备被R除。(A*B*Rmod N)的归约涉及将N的最低有效比特位置与值(A*B*R mod N)中具有逻辑值1的、最右边的比特位置对齐。例如示例,值(A*B*R modN)在最右边的比特位置具有逻辑值1(101 1)。在合适地将N的值进行对齐并且将其与(A*B*R mod N)进行相加后,在第一比特归约后的相加值的值为11000。
(19)1011<==(A*B*R mod N)的值
(20)+ 1101<==N的值
(21)11000<==在第一比特归约后新相加的值
新相加值的归约涉及将N的最低有效比特位置与新相加值具有逻辑值1的最右边比特位置(1 1000)进行对齐。在第二比特归约后的值是(10000000)。
(21)11000<==在第一比特归约后新相加的值
(22)+ 1101<==N的值
(23)10000000<==在第二比特归约后的值
当1个最低有效比特位置的逻辑值为0时,值(A*B*R mod N)被归约,并且准备被R除。换句话说,除以R的操作变为将被归约的相加值向右移位1次,其中I等于4,在这个示例中。
(23)10000000<==在第二比特归约后的值
(24)被R除或者向右移1次
这样,在被R除后,被加密的数据的值为(1000),并且Foster-Montgomery归约算法已经在(A*R mod N)和(B*R mod N)的乘法中被使用。这个示例的步骤19-24提供了对被R除的除法,并且将(A*B*R mod N)的值归约到(A*B mod N)。在实际中,这个最终被R除的除法是通过将(A*B*R mod N)乘以1并且然后归约来实现的。
在操作中,A/B RAM 72通过主机I/F模块40被载入具有64个值的操作数A,即,A0,A1,…,A63。1024比特操作数A包括64个数字A63-A0,其中每一个数字是16比特的数据。类似地,1024比特的操作数B包括64个数字B63-B0,其中每一个数字是16比特的数据。这样,A/B RAM 72的A部分具有允许一整个1024比特操作数A被保存的64行,A/B RAM 72的B部分具有允许一整个1024比特操作数B被保存的64行。另外,N RAM 70通过I/F模块40被载入,并且具有被分段成64个数字N63-N0的1024个比特。
乘法器56一次仅对数据的一个数字进行操作。所以,用于进行加密或者解密的、操作数A和B的乘法从将值A,B,和N的较低数字传送到协处理器44开始。协处理器44的端子48接收数字A0,协处理器44的端子46接收数字B0,协处理器44的端子52接收数字N0。值A0和B0的乘积是通过乘法器56来计算的,并且16个最低有效数据比特是加法器58的输入。16个最高有效比特被临时地保存在乘法器56的进位链中。
加法器58将从乘法器56接收的16个数据比特与被保存在乘积RAM 64(初始为0)的16个数据比特加在一起,并且产生一个相加值。模归约器60从加法器58接收16比特的相加值,并且从N RAM 70接收数字N0。在Foster-Montgomery归约算法中,相加值的特定比特位置的逻辑值判断这个相加值是否应被归约。模归约器60开始时将最低有效比特位置作为这个特定比特位置,在随后的每一个比特乘法中,这个特定比特位置朝左边移1个比特位置。换句话说,特定比特位置从最低有效比特位置开始,并且在每一个比特乘法后,朝最高有效比特位置移动。通过将N0的值合适地与这个特定比特位置对齐,并且将N0添加到相加值上,产生于值A0和B0的第一部分乘积被归约,并且具有值0。模归约器60所产生的部分乘积被保存在乘积RAM 64中。另外,根据在这个特定比特位置中发现的逻辑值来决定
Figure C9980887100171
的一个16比特值,并且将这个16比特值保存在模归约器60中。
为了产生第二部分乘积,一个新的二进制数据值B1被从A/B RAM72传送到协处理器44以与值A0进行相乘。乘法器56计算值A0和B1的值,并且这16个最低有效数据比特是加法器58的输入。加法器58将从乘法器56所接收的16个数据比特与被保存在乘积RAM 64(初始为0)中的16个数据比特进行相加,并且产生一个相加值。模归约器60从加法器58接收16比特的相加值,并且从N RAM 70接收数字N1。模归约器60使用从第一部分乘积中所产生的前一推断的值 和值N1来归约从加法器58来的相加值,并且产生第二部分乘积。第二部分乘积被保存在乘积RAM 64中。
为了完成在第一组中的部分乘积的产生,来自A/B RAM 72的值B2-B63被依次传送到协处理器44以与值A0进行相乘。使用相同的值
Figure C9980887100181
,模归约器60使用来自N RAM 70的相应值N2-N63来产生剩余的部分乘积。这个部分乘积被保存在乘积RAM 64中。
在完成产生于A0与数字B0-B63的乘法的64个部分乘积后,第二组产生于A1与数字B0-B63的乘法的64个部分乘积被产生。应注意,在产生A1和B0的部分乘积时,确定在产生涉及A1剩余部分乘积中所使用的 的值。进一步,通过将A2乘以数字B0-B63,将A3乘以数字B0-B63,…,将A63乘以B0-B63来产生剩余组的部分乘积。当产生涉及B0的部分乘积时,对每一个组决定 的值并且设置其值。应注意,当数字B0是在协处理器44的端子46上的值并且在输出54上所产生的部分乘积被归约到具有值0时,就确定和设置
Figure C9980887100184
的值。每一个组也使用N0-N63的相应值。
图4是模归约器60的一部分的一个框图。为了简单和便于说明,模归约器60被以简单的形式描述为一个4乘以4的加法器阵列。在优选的实施方式中,模归约器60包括具有16行和16列的一个加法器阵列。应注意,在加法器阵列中的行数目必须与列数目匹配不是本发明的限制。协处理器44可以用不是方的、模归约器60中的加法器阵列进行工作。
模归约器60中的加法器阵列具有X列和Y行,其中X和Y是整数。列X0是第一列,并且包括加法器90,92,94,和96。列X1是第二列,并且包括加法器100,102,104,和106。列X2是第三列,并且包括加法器110,112,114和116。列X3是第四列,并且包括加法器120,122,124,和126。加法器90-96,100-106,110-116,和120-126中的每一个加法器具有第一和第二数据输入,一个进位输入(CI),一个进位输出(CO),和一个和输出(S)。
列X0中加法器90,92,94,和96的第一输入被分别连接到端子80,82,84和86。两输入与门89,91,93,和95具有相互连接在一起的一第一输入,这个第一输入并且也连接到锁存器128的一个Q输出。与门89,91,93,和95的输出分别连接到加法器90,92,94,和96的第二输入。另外,加法器90的一个进位输出(CO)连接到加法器92的一个进位输入(CI),加法器92的一个进位输出连接到加法器94的一个进位输入,加法器94的一个进位输出连接到加法器96的一个进位输入。加法器96的一个进位输出连接到一个锁存器152的一个数据输入。锁存器152的输出被连接到加法器90的进位输入。
列X1中加法器100,102,104,和106的第一输入被分别连接到列X0中加法器90,92,94,和96的输出。两输入与门99,101,103,和105具有相互连接在一起的一第一输入,这个第一输入并且也连接到锁存器132的一个Q输出。与门99,101,103,和105的输出分别连接到加法器100,102,104,和106的第二输入。另外,加法器100的一个进位输出(CO)连接到加法器102的一个进位输入(CI),加法器102的一个进位输出连接到加法器104的一个进位输入,加法器104的一个进位输出连接到加法器106的一个进位输入。加法器106的一个进位输出连接到一个锁存器156的一个数据输入。锁存器156的输出被连接到加法器100的进位输入。
列X2中加法器110,112,114,和116的第一输入被分别连接到列X1中加法器100,102,104,和106的输出。两输入与门109,111,113,和115具有相互连接在一起的一第一输入,这个第一输入并且也连接到锁存器136的一个Q输出。与门109,111,113,和115的输出分别连接到加法器110,112,114,和116的第二输入。另外,加法器110的一个进位输出(CO)连接到加法器112的一个进位输入(CI),加法器112的一个进位输出连接到加法器114的一个进位输入,加法器114的一个进位输出连接到加法器116的一个进位输入。加法器116的一个进位输出连接到一个锁存器160的一个数据输入。锁存器160的输出被连接到加法器110的进位输入。
列X3中加法器120,122,124,和126的第一输入被分别连接到列X2中加法器110,112,114,和116的输出。两输入与门119,121,123,和125具有相互连接在一起的一第一输入,这个第一输入并且也连接到锁存器140的一个Q输出。与门119,121,123,和125的输出分别连接到加法器120,122,124,和126的第二输入。另外,加法器120的一个进位输出(CO)连接到加法器122的一个进位输入(CI),加法器122的一个进位输出连接到加法器124的一个进位输入,加法器124的一个进位输出连接到加法器126的一个进位输入。加法器126的一个进位输出连接到一个锁存器162的一个数据输入。锁存器162的输出被连接到加法器120的进位输入。加法器120,122,124,和126的输出S连接到端子164,166,168,和170的相应输出。
进一步,两输入与门89,101,113,和125的第二输入共同连接在一起,并且连接到输入端子81。两输入与门91,103,和115的第二输入共同连接在一起,并且连接到一个锁存器158的一个输入,并且连接到端子83。与门93,和105的第二输入共同连接在一起,并且连接到一个锁存器154的一个输入,并且连接到输入端子85。与门95的第二输入连接到一个锁存器150的一个输入,并且连接到端子87。与门99,111,和123的第二输入共同连接在区域,并且连接到锁存器150的一个输出。与门109和121的第二输入共同连接在一起,并且连接到锁存器154的一个输出。与门119的第二输入连接到锁存器58的一个输出。
锁存器128,132,136,和140中的每一个锁存器均一个设置输入(S),一个复位输入(R),和一个输出(Q)。锁存器128,132,136,和140被使能,当信号T为高,并且在输出Q上的信号与在输入S上的信号的值相同时。在输出Q上的信号被锁存,当信号T从一个高电平转变到一个低逻辑值电平。在输入R上的信号复位在输出Q上的信号。锁存器128,132,136,和140的复位输入R一般相互连接在一起,并且连接到端子79。端子79被连接成用于接收一个复位信号R。一个两输入与门130具有连接到锁存器128的设置输入上的一个输出。与门130的第一输入连接到加法器90的第一输入上。一个两输入与门134具有连接到锁存器132的设置输入的一个输出。与门134的第一输入连接到加法器102的第一输入。一个两输入与门138具有连接到锁存器136的设置输入的一个输出。与门138的第一输入连接到加法器114的第一输入上。一个两输入与门142具有连接到锁存器140的设置输入的一个输出。与门142的第一输入连接到加法器126的第一输入上。与门130,134,138,和142的第二输入相互连接在一起,并且连接到端子78。端子78被连接成用于接收一个信号T。
在操作中,模归约器60经过加法器58(图3)从乘法器56接收输入,并且产生已经被归约的部分乘积。在前一个示例中,使用Foster-Montgomery归约算法来将数0001乘以0111。如前面所提到的,在一个特定比特位置上的逻辑值决定N的值是否被对齐并且被添加到相加值上。模归约器60的结构将N的值移动到进行对齐和被添加到相加值上,当在一个特定比特位置上的逻辑值具有一个逻辑值1时。这样,模归约器60的结构允许
Figure C9980887100211
的值被决定,并且被保存在锁存器128,132,136和140。换句话说,在将数字A和B进行相乘以前,不决定 的值,而是在将特定数字A和B进行相乘的期间进行。
锁存器128,132,136和140被信号R进行复位,并且在Q输出上的逻辑值为0。值0111被乘法器56所产生,并且被经过加法器58传送到端子80,82,84,和86。与门130从端子80接收相加值的最低有效数据比特,并且与逻辑值为1的信号T一起促使锁存器128被置位,即,在Q输出上的信号具有逻辑值1。应注意,在B0被提供到乘法器56和值N0被提供到模归约器60的期间,信号T具有一个逻辑值1。当信号T从一个逻辑值1转换到一个逻辑值0时,在锁存器128,132,136,和140中的数据的逻辑值被锁存。N0的值被提供在端子81,83,85,和87上,并且根据前一个示例,N0的值为1101。N0的最低有效数据比特被提供于端子81。
与门89,91,93,和95被在锁存器138的Q输出上、具有逻辑值1的信号所使能。这样,在端子81,83,85,和87上的值N0被分别传送到加法器的第二输入90,92,94,和96。在第一和第二输入上具有逻辑值1的加法器90在输出S上提供具有逻辑值0的一个相加输出信号。进一步,加法器90在输出CO上产生一个进位信号。加法器92对在端子83上的逻辑值0作出响应,接收在第一输入上的一个逻辑值0。根据在加法器92的第二输入上所接收的逻辑值1和在输入CI上所接收的、逻辑值为1的进位信号,在输出S上的相加信号具有一个逻辑值0,并且在输出CO上的进位信号具有一个逻辑值1。
加法器94在第一输入上接收来自与门93的一个逻辑值1,在第二输入上接收来自端子84的一个逻辑值1。加法器94的相加输出S具有一个逻辑值1,在进位输出CO上的进位信号具有一个逻辑值1。类似地,加法器96在第一输入上接收来自与门95的一个逻辑值1,在第二输入上接收来自端子86的一个逻辑值1。加法器96的输出S上的相加输出信号具有逻辑值0,并且在进位输出CO上的进位信号具有逻辑值1。这样,加法器90-96已经对接收乘法器56到加法器58的相加值作出响应,产生了值0100。另外,特定比特位置,即,最低有效比特位置,具有一个逻辑值1,并且N的值被对齐,并且根据Foster-Montgomery归约算法被添加到相加值上。
在列X1中的加法器所产生的数据具有与一特定数据比特位置相关的值。在这个示例中,该特定数据比特位置与加法器92的输出S相应。应注意,与门134从加法器92的输出S上的相加信号接收一个逻辑值0的信号。锁存器132没有被置位,并且锁存器132的Q输出保持为一个逻辑值0。与门99,101,103,和105分别在加法器100,102,104,和106的第二输入上产生一个逻辑值0。加法器100在第一和第二输入上具有逻辑值0,并且在输出S上产生一个逻辑值0。类似地,加法器102在第一和第二输入上具有逻辑值0,并且在输出S上产生一个逻辑值0。加法器104在第一输入上具有一个逻辑值0,在第二输入上具有一个逻辑值1,并且在输出S上产生一个逻辑值1。加法器106在第一和第二输入上具有逻辑值0,并且在输出S上产生一个逻辑值0。这样,在列X1中的加法器产生一个值0100。
在列X2中的加法器所产生的数据也具有与一特定数据比特位置相关的值。应注意,与门138从加法器104的输出S上的相加信号接收一个逻辑值1的信号。锁存器136被置位,并且锁存器136的Q输出的逻辑值为1。与门109,111,113,和115被锁存器136所产生的逻辑值1所使能,即,在加法器100,102,104,和106的输出上的数据被分别传送到加法器110,112,114,和116的第一输入。加法器110在第一和第二输入上具有逻辑值0,并且在输出S上产生一个逻辑值0。类似地,加法器112在第一和第二输入上具有逻辑值0,并且在输出S上产生一个逻辑值0。加法器114在第一和第二输入上具有逻辑值1,并且在输出S上产生一个逻辑值0,在输出CO上产生一个逻辑值为1的进位信号。加法器116在第一和第二输入上具有逻辑值0,在进位输入上具有一个逻辑值1,并且在输出S上产生一个逻辑值1。这样,在列X2中的加法器产生一个值1000。
在列X3中的加法器所产生的数据也具有与一特定数据比特位置相关的值。应注意,在这个示例中,该特定数据比特位置是加法器116的输出上的值。与门142从加法器116的输出S上的相加信号接收一个逻辑值1的信号。锁存器140被置位,并且锁存器140的Q输出的逻辑值为1。与门109,111,113,和115被锁存器140所产生的逻辑值1所使能,即,在加法器110,112,114,和116的输出上的数据被分别传送到加法器120,122,124,和126的第一输入。加法器120在第一和第二输入上具有逻辑值0,并且在输出S上产生一个逻辑值0。类似地,加法器122在第一和第二输入上具有逻辑值0,并且在输出S上产生一个逻辑值0。加法器124在第一和第二输入上也具有逻辑值0,并且在输出S上产生一个逻辑值0。加法器126在第一和第二输入上具有逻辑值1,并且在输出S上产生一个逻辑值0,在进位输出上产生逻辑值为1的一个进位输出信号。这样,在列X3中的加法器产生一个值0000。
在列X0,X1,X2,和X3中的加法器已经归约了一个数字A,数字B0,和值N0产生的部分乘积值后,应注意,在随后的乘法中,已经决定了
Figure C9980887100241
的值。特别地,在促使每一组的第一部分乘积具有值0的归约过程期间,合适的锁存器128,132,136,和140已经被置位,并且包括 的值。在将第一部分乘积归约到0后,信号T从一个逻辑值1转变到逻辑值0,并且将
Figure C9980887100243
的值保存在锁存器138,132,136,和140中。被保存的
Figure C9980887100244
值和相应的N1-N63的值被模归约器60所使用,当在乘法器56中,将数字A乘以数字B1-B63时。
通过示例,数字A0和数字B0的16个最低有效数据比特被模归约器60使用值N0归约到16比特的数字0。模归约器60决定并且保存促使第一部分乘积被归约到值0的 值。乘法器56保存最高的有效数据比特,以用于产生涉及值A0和B1的下一个部分乘积。模归约器60使用被保存的
Figure C9980887100246
值和值N1来产生第二部分乘积。乘法器56产生涉及A0乘以B2-B63的其它乘积,并且使用被保存的 值和值N2-N63来在模归约器60中归约这些其它乘积。
模归约器60决定并且保存促使第二组的第一部分乘积被归约到值0的一个新
Figure C9980887100248
值,即,A1和B0的乘积被归约到值0。新的
Figure C9980887100249
值被用于产生涉及A1乘以B0-B63的这组部分乘积。这样,在产生了一个组中的所有部分乘积后,模归约器60为下一组决定一个新的
Figure C99808871002410
值。应注意,对每一组被产生的第一部分乘积被新的
Figure C99808871002411
值归约到值为0。
图5是与在图3协处理器44中所使用的乘法器56组合在一起的一部分模归约器60的一个框图。为了简单和用于说明,以简单的形式描述了乘法器结构或者融合的Foster-Montgomery(F-M)乘法器171,其形式为一个4×4的加法器阵列。尽管融合的F-M乘法器171被描述为具有相同数目的行和列的一个加法器阵列,但是,这不是本发明的限制。应注意,图3中乘法器56,加法器58,和模归约器60的主要功能被融合的F-M乘法器171所组合和执行。
图5所显示的、融合的F-M乘法器171的形式与图4中所显示的模归约器60的形式类似。融合的F-M乘法器171和模归约器60均具有列X0中的加法器90,92,94,和96,在列X1中的加法器100,102,104,和106,在列X2中的加法器110,112,114,和116,和在列X3中的加法器120,122,124,和126。另外,锁存器152,156,160,和162保存在产生下一个部分乘积中被使用的进位输出信号。在融合的F-M乘法器171中,具有已经被连接到列X0-X3中每一个加法器的输入的输出的、模归约器60的与门已经被复用器所替代。尽管复用器仅被显示为具有连接到加法器的第一输入的输出,但是替代地,复用器的输出可以被连接到加法器的第二输入。
在融合的F-M乘法器171中的复用器(MUX)中的每一个均具有4个输入,一个输出,和两个选择器输入。特别地,MUX 172,174,176和178分别具有连接到加法器90-96的输出。复用器182,184,186,和188具有分别连接到加法器110-116的输出。复用器192,194,196,和198具有分别连接到加法器110-116的输出。复用器202,204,206,和208具有分别连接到加法器120-126的输出。进一步,复用器172-178的第一选择器输入被连接在一起,并且复用器172-178的第二选择器输入被连接在一起,并且促使出现在每一个复用器的4个输入上的4个信号中的一个被传送到对应加法器90-96的第一输入。类似地,复用器182-188的第一选择器输入被连接在一起,并且复用器182-188的第二选择器输入被连接在一起,并且促使出现在每一个复用器的4个输入上的4个信号中的一个被传送到对应加法器100-106的第一输入。复用器192-198的第一选择器输入被连接在一起,并且复用器192-198的第二选择器输入被连接在一起,并且促使出现在每一个复用器的4个输入上的4个信号中的一个被传送到对应加法器110-116的第一输入。复用器202-208的第一选择器输入被连接在一起,并且复用器202-208的第二选择器输入被连接在一起,并且促使出现在每一个复用器的4个输入上的4个信号中的一个被传送到对应加法器120-126的第一输入。
复用器172-178,182-188,192-198,和202-208中的4个输入中的第一个输入被连接成用于接收一个逻辑值0。复用器172-178的第二输入接收数字B的值,复用器172-178的第三输入接收值N。复用器172-178的第四输入接收相应N和B值的相加值。例如示例,数字A0,B0,和N0被提供到融合的F-M乘法器171。数字B0的最低有效数据比特,即,信号B(比特0)被提供到复用器172的第二输入。类似地,数字N0的最低有效数据比特,即,信号N(比特0)被提供到复用器172的第三输入。复用器172的第四输入接收N0和B0的最低有效数据比特的逻辑相加值,即,信号N+B(比特0)。
数字B0的下一个最低有效数据比特,即,信号B(比特1)被提供到复用器174的第二输入。类似地,N0的下一个最低有效数据比特,即,信号N(比特1)被提供到复用器174的第三输入。复用器174的第四输入接收N0和B0下一个最低有效数据比特,即信号N+B(比特1)的逻辑相加值。B0的下一个数据比特,即,信号B(比特2)被提供到复用器176的第二输入。类似地,N0的下一个数据比特,即,信号N(比特2)被提供到复用器176的第三输入。复用器176的第四输入接收N0和B0下一个数据比特,即信号N+B(比特2)的逻辑相加值。类似地,在这个示例中,融合的F-M乘法器171提供了一个4比特乘以4比特的乘法,数字B0的最高有效数据比特,即,信号B(比特3)被提供到复用器178的第二输入。类似地,N0的最高有效数据比特,即,信号N(比特3)被提供到复用器178的第三输入。复用器178的第四输入接收在复用器第二和第三输入上所提供的值的逻辑相加值,即,N0和B0最高有效数据比特的逻辑相加值。应注意,每一个复用器的第四输入接收在该复用器的第二和第三输入上所提供值的逻辑相加值。
复用器172-178的第一选择器输入信号是从一个锁存器212所接收的。当信号T从一个逻辑值1转变到一个逻辑值0时,锁存器212锁存来自逻辑电路210的一个数据信号。逻辑电路210所产生的数据信号是信号A(比特0)和B(比特0)与P(0)的异或的结果,其中P(0)是前一个部分乘积值的最低有效比特。复用器172-178接收在第二选择器输入上的信号A(比特0)。
复用器182-188的第一选择器输入信号是从一个锁存器216所接收的。当信号T从一个逻辑值1转变到一个逻辑值0时,锁存器216锁存来自逻辑电路214的一个数据信号。逻辑电路214所产生的数据信号是信号A(比特1)和B(比特0)与来自加法器92的相加输出信号的异或的结果。复用器182-188接收在第二选择器输入上的信号A(比特1)。
复用器192-198的第一选择器输入信号是从一个锁存器220所接收的。当信号T从一个逻辑值1转变到一个逻辑值0时,锁存器220锁存来自逻辑电路218的一个数据信号。逻辑电路218所产生的数据信号是信号A(比特2)和B(比特0)与来自加法器104的相加输出信号的异或的结果。复用器192-198接收在第二选择器输入上的信号A(比特2)。
复用器202-208的第一选择器输入信号是从一个锁存器224所接收的。当信号T从一个逻辑值1转变到一个逻辑值0时,锁存器224锁存来自逻辑电路222的一个数据信号。逻辑电路222所产生的数据信号是信号A(比特3)和B(比特0)与来自加法器116的相加输出信号的异或的结果。复用器202-208接收在第二选择器输入上的信号A(比特3)。
当第一和第二选择器输入相应的逻辑值00时,在复用器172-178的第一输入上的信号被传送到相应复用器的输出。当第一和第二选择器输入相应的逻辑值01时,在复用器172-178的第二输入上的信号被传送到相应复用器的输出。当第一和第二选择器输入相应的逻辑值10时,在复用器172-178的第三输入上的信号被传送到相应复用器的输出。当第一和第二选择器输入相应的逻辑值11时,在复用器172-178的第四输入上的信号被传送到相应复用器的输出。
应注意,融合F-M乘法器171的结构允许 的值被决定被并且保存在锁存器212,216,220,和224中。换句话说,在对A和B进行乘法以前,不计算
Figure C9980887100272
的值,而是在将数字A0与B0进行相乘的期间,融合F-M乘法器171的结构允许 的第一值被决定被并且保存在锁存器212,216,220,和224中。这样,在与被用于计算A0和B0的乘积的相同乘法周期内,来决定
Figure C9980887100281
的值。在其它数字B1-B63和A0的乘法期间,使用该
Figure C9980887100282
的第一值。在数字A1与B0的乘法期间,决定一第二值。第二
Figure C9980887100284
值被保存在锁存器212,216,220,和224中,并且在数字B1-B63和A1的乘法期间被使用。这样,在每一个数字A和B0的乘法期间,决定一个新的 值。
图6是用于决定在Foster-Montgomery归约算法中被使用的值(R2 mod N)的一个方法的一个流图。在Foster-Montgomery归约算法中的操作数A和B具有形式(A*R mod N)和(B*R mod N),并且被进行相乘来产生乘积(A*B*R2 mod N)。在融合F-M乘法器171(图5)中,乘积(A*B*R2 mod N)被值R归约,以使融合F-M乘法器171所产生的输出具有值(A*B*R mod N)。为了将经过数据主机总线(图3)而接收的操作数A的初始值转换为一个合适的形式(A*R modN),将所接收的操作数B的初始值转换为一个合适的形式(B*R modN),需要作为融合F-M乘法器171的一个输入值来产生值(R2 modN)。这样,操作数A和B的初始值被转换为Montgomery格式。例如,在融合F-M乘法器171中,操作数A和值(R2 mod N)进行相乘的输出值已经被归约,并且是(A*R mod N)。类似地,在融合F-M乘法器171中,操作数B和值(R2 mod N)进行相乘的输出值已经被归约,并且是(B*R mod N)。
图6是显示用于产生值(R2 mod N)的一个方法的一个流图230。值(R2 mod N)具有分量(R mod N)和R,其中R是216*I或者2倍增加的一个整数。R被选择的数字大小为比表示N的数字数目多1个数字。模块232显示了具有一个初始值P(R mod N)的一个变量的产生。P的值是通过将值N减去R来计算的。在产生了一个P的初始值后,模块236显示了将P的值与N的值进行比较的情形。如果P的值比N的值大,然后,模块240显示计算一个乘法器A的值,其中乘法器A的值是值N可以被乘以的2的最大幂,并且仍然具有比值P小的值。模块242显示了乘法器A的值被乘以值N,并且从值P中减去乘积(A*N)来产生一个新的P值。如果,在模块236中,N的值比P的值大,然后,在模块244中表示了值P被移位的次数。如果P的值被移位与R最低有效数据比特为0的比特数目相同的次数,然后,就完成了计算,并且在模块238中,值P是所希望的(R2 mod N)。替代地,如果如模块244中所指示的,值P需要进行附加的移位,然后,如模块234所显示的,P被移位一个整数值。这个整数值被选择作为系统的数字大小,并且将P合适地移位到P中一个最高有效数据比特的左边、具有值为1的一个合适数目的移位将产生值R。
可以使用两个不同的方法来完成模块240所表示的、对A的计算。第一个方法这样产生A,以使A的值是值N可以被乘以的、并且仍然具有比值P小的值的2的最大幂。第二个方法将A计算为比将P的最高有效数字除以N的最高有效数字的整数结果小的一个值。在流图230中,计算一个值A的第一方法将导致执行模块236,240和242的循环的次数比计算值A的第二方法所执行这个循环的次数多几次。但是,第二个方法所需要的电路结构比第一个方法所需要的电路结构更复杂。
图7是显示如图6中所描述的值(R2 mod N)的产生的一个框图。初始,一个复用器240将值R从复用器240的一第一输入传送到减法器244的一个输入。另外,A的值首先是0,以使一个乘法器242在减法器244的另一个输入上产生值A。减法器244提供值(R-N)或者在一个复用器246的第一输入上的P(见图中的模块232)。复用器246将值P传送到将数据移位16个位置,即,数据被乘以216(见图6中的模块234)的一个移位电路248。一个比较器证实,被移位的数据是否具有比N值大的一个值(见图6中的模块236)。例如示例,比较器250是提供值PSHIFTED和N之间的一个差异的一个减法器。比较器250也可以包括提供对值PSHIFTED和N进行一个比特-宽的比特的异或门。
当P的被移位值,即,值PSHIFTED具有不比N值大的一个值时,然后,值PSHIFTED被传送到复用器246的第二输入,并且产生一个新的值PSHIFTED。这个新的值PSHIFTED具有被移位电路248再移位16个位置的数据。在移位电路248每一次进行移位后,在比较器250中将新的移位值与值N进行比较。当新的值PSHIFTED具有比N值大的一个值时,然后就产生了值(R2 mod N)。复用器240将这个新的值PSHIFTED传送到减法器244的第一输入。乘法器242所产生的、A和N的乘积被传送到减法器244的第二输入,其中A是当乘以值N仍然产生值比新的值PSHIFTED小的一个乘积的、最大的2的幂。减法器244产生一个差值(值PSHIFTED-A*N),来得到所希望的(R2 mod N)。
一个替代的决定值(R2 mod N)的方法涉及选择具有值(2)2n的一个值R,其中n是一个整数。换句话说,R的值被选择为22,24,28,…,2256,和类似的。在二进制表示中,R值在最高有效数据比特上为逻辑值1,其后是一串0。N的二进制值的最高有效数据比特,即,N的最左边的、逻辑为1的数据比特位置,被与值R中与逻辑值1相邻的逻辑值0对齐。N的被对齐值,NALIGNED,被从R中减去,以提供R-NALIGNED的差值。重复将值N中最左边逻辑值为1的数据比特对齐到与差值中与逻辑值为1的、最高有效数据比特相邻的逻辑值0的步骤,直到值(R mod N)被产生。换句话说,具有比值N小的一个差值与值(R mod N)等价。
通过将值(R mod N)朝左边移一个比特位置并且,如果需要的话,将值(R mod N)减去值N,就产生了值(2R mod N)。值(2R modN)用于乘法器56(见图3)的操作数A和B,来在协处理器44的输出上产生值(22R mod N)。新产生的值(22R mod N)用于乘法器56的操作数A和B,来在协处理器44的输出上产生值(24R mod N)。来自协处理器44的新产生值被重复用作操作数A和B的值,来产生一个新值,直到新值为((2)2nR mod N),其中(2)2nR与R的值相等。这样,已经产生了值(R2 mod N)。
到现在,应理解本发明提供了一个加密乘法系统,用一个集成电路实现的这个加密乘法系统的性能很高,价格低,并且功率消耗低。通过比现有技术系统中少的时钟周期来计算Foster-Montgomery归约算法并且执行大操作数的乘法,Foster-Montgomery硬件加速器实现了高性能。这个方法和电路能够适应用于比特数目更多的操作数。

Claims (9)

1.一种用于执行模数乘法的数据处理系统(26),包括:
一个乘法器(56),具有用于分别接收二进制数据值A和B的第一乘法器输入(46)和第二乘法器输入(48);
一个加法器(58),具有连接到乘法器的一个乘法器输出的第一加法器输入,被连接成用于接收一个部分乘积的第二加法器输入(50),和用于提供一个相加值的一个加法器输出;和
一个模归约器(60),具有连接到加法器(58)的输出的第一归约器输入,被连接成用于接收一个二进制数据值N的第二归约器输入(52),和用于提供一个具有形式为(A*B/R mod N)的数据值的一个归约器输出,其中通过将二进制数据值N进行对齐,并且当相加值的一个预定比特位置具有一个逻辑值为1的状态时将二进制数据值N添加到相加值上,来产生一个归约值
Figure C998088710002C1
的一个最低有效数据比特。
2.如权利要求1所述的数据处理系统,其中当确定了归约值 的所有比特时,数据值被归约到一个0。
3.如权利要求1所述的数据处理系统,其中所述数据处理系统(26)被用于智能卡(10)中,所述智能卡包括:
一个输出(13);
一个数据总线(15),连接到输出(13)用于将数据传送到所述输出(13),所述数据总线还连接到数据处理系统(26);和
一个主处理器(18),连接到数据总线用于向数据处理系统(26)提供控制信号;以及
连接到数据总线用于存储数据的存储器(20,22)。
4.如权利要求3所述的数据处理系统,其中一部分存储器(20,22)是非易失性的,用于在智能卡(10)不接收工作电压时保留数据。
5.如权利要求1的数据处理系统,其中所述数据处理系统(26)用在加密系统(10)中,用于与互联网互连,所述加密系统(10)包括:
一个输出(13);
一个数据总线(15),连接到输出(13)用于将数据传送到所述输出(13),所述数据总线连接到数据处理系统;以及
一个中央处理单元(18),连接到数据总线用于控制数据处理系统(26),所述数据处理系统计算用于加密和解密数据的模求幂方程。
6.如权利要求5的数据处理系统(26),进一步包括一个存储器(64),所述存储器(64)具有被连接到模归约器(60)的归约器输出的一个存储器输入,和具有被连接到加法器(58)的第二加法器输入(50)的一个存储器输出。
7.如权利要求5的数据处理系统(26),其中所述数据处理系统进一步包括一个数字负单元(42),具有被连接到数据总线以接收数据值A的一个数字负输入,和被连接到乘法器的第一乘法器输入(46)以提供数据值A的对2的互补反数的一个数字负输出。
8.一种用于Foster-Montgomery硬件加速器(FMHA)(44)的结构,其中在所述FMHA中执行数学运算,所述结构包括:
一个乘法器(56),具有分别被连接成用于接收操作数A和B的第一乘法器输入(48)和第二乘法器输入(46),并且具有用于提供一个部分乘积的一个乘法器输出;
一个加法器(58),具有连接到乘法器的输出的第一加法器输入,被连接成用于接收前一个被归约部分乘积的第二加法器输入(50),和用于提供一个相加值的一个加法器输出;和
一个模归约器(60),具有连接到加法器输出的第一归约器输入,被连接成用于接收模数的第二归约器输入(52),以及提供一个被归约的部分乘积的一个输出。
9.如权利要求8的结构,进一步包括:
一个数据总线(41),用于传送数据;
第一存储器(72),被连接到数据总线,其中第一存储器保存操作数A和B;
第二存储器(64),具有连接到数据总线(41)的第一存储器输入和被连接成用于接收被归约的部分乘积的第二存储器输入,其中这个第二存储器保存被归约的部分乘积,并且提供前一个被归约的部分乘积;和
第三存储器(70),具有连接到数据总线(41)的一个第三存储器输入,和连接到模归约器的第二输入的一个输出,其中第三存储器保存这个模数。
CNB998088714A 1998-07-22 1999-01-13 模乘法的电路及其方法 Expired - Fee Related CN1248102C (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US09/120,835 1998-07-22
US09/120,835 US6182104B1 (en) 1998-07-22 1998-07-22 Circuit and method of modulo multiplication

Publications (2)

Publication Number Publication Date
CN1310816A CN1310816A (zh) 2001-08-29
CN1248102C true CN1248102C (zh) 2006-03-29

Family

ID=22392822

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB998088714A Expired - Fee Related CN1248102C (zh) 1998-07-22 1999-01-13 模乘法的电路及其方法

Country Status (5)

Country Link
US (1) US6182104B1 (zh)
JP (1) JP2002521720A (zh)
CN (1) CN1248102C (zh)
AU (1) AU2228199A (zh)
WO (1) WO2000005645A1 (zh)

Families Citing this family (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6324592B1 (en) * 1997-02-25 2001-11-27 Keystone Aerospace Apparatus and method for a mobile computer architecture and input/output management system
DE69837036T2 (de) * 1997-09-16 2007-10-18 Koninklijke Philips Electronics N.V. Verfahren und vorrichtung zur ausführung einer entschlüsselung mittels einer standardisierten modularen potenzierung zum vereiteln eines zeitangriffs
FR2796736B1 (fr) * 1999-07-20 2001-11-30 St Microelectronics Sa Procede pour effectuer une multiplication avec accumulation dans un corps de galois
WO2001029652A2 (en) * 1999-10-20 2001-04-26 Accelerated Encryption Processing Limited A cryptographic accelerator
FR2800952B1 (fr) * 1999-11-09 2001-12-07 Bull Sa Architecture d'un circuit de chiffrement mettant en oeuvre differents types d'algorithmes de chiffrement simultanement sans perte de performance
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
US7062657B2 (en) * 2000-09-25 2006-06-13 Broadcom Corporation Methods and apparatus for hardware normalization and denormalization
US20020061107A1 (en) * 2000-09-25 2002-05-23 Tham Terry K. Methods and apparatus for implementing a cryptography engine
US6914983B2 (en) * 2000-12-19 2005-07-05 International Business Machines Corporation Method for checking modular multiplication
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
JP3904432B2 (ja) 2001-11-16 2007-04-11 株式会社ルネサステクノロジ 情報処理装置
KR100560770B1 (ko) * 2003-09-15 2006-03-13 삼성전자주식회사 실시간 프로토콜 전환 기능을 갖는 비접촉 집적회로 카드및 그것을 포함한 카드 시스템
US20050141095A1 (en) * 2003-12-29 2005-06-30 Youngtack Shim Reflecting sheet
US7602905B2 (en) * 2004-09-01 2009-10-13 Texas Instruments Incorporated Processes, circuits, devices, and systems for encryption and decryption and other purposes, and processes of making
DE102006025673B9 (de) 2005-10-28 2010-12-16 Infineon Technologies Ag Rechenwerk zum Reduzieren einer Eingabe-Zahl bezüglich eines Moduls
DE102006025569A1 (de) * 2005-10-28 2007-05-03 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen einer Multiplikations-Additions-Operation und zum Berechnen eines Ergebnisses einer modularen Multiplikation
DE102006025677B4 (de) * 2005-10-28 2020-03-12 Infineon Technologies Ag Vorrichtung und Verfahren zum Berechnen eines Ergebnisses einer Summe mit einem Rechenwerk mit begrenzter Wortlänge
DE102006025713B9 (de) * 2005-10-28 2013-10-17 Infineon Technologies Ag Kryptographie-Vorrichtung und Kryptographie-Verfahren zum Berechnen eines Ergebnisses einer modularen Multiplikation
US7725624B2 (en) 2005-12-30 2010-05-25 Intel Corporation System and method for cryptography processing units and multiplier
US7805479B2 (en) * 2006-03-28 2010-09-28 Michael Andrew Moshier Scalable, faster method and apparatus for montgomery multiplication
US7849125B2 (en) 2006-07-07 2010-12-07 Via Telecom Co., Ltd Efficient computation of the modulo operation based on divisor (2n-1)
US7755766B1 (en) 2007-03-27 2010-07-13 Itt Manufacturing Enterprises, Inc. Telescope interferometric maintenance evaluation tool
US8417756B2 (en) 2007-11-29 2013-04-09 Samsung Electronics Co., Ltd. Method and apparatus for efficient modulo multiplication
US8392489B2 (en) * 2008-02-15 2013-03-05 International Business Machines Corporation ASCII to binary floating point conversion of decimal real numbers on a vector processor
US20100088526A1 (en) * 2008-10-02 2010-04-08 Mcm Portfolio Llc System and Method for Modular Exponentiation
EP2276194B1 (en) * 2009-07-17 2014-11-26 Certicom Corp. System and method for reducing the computation and storage requirements for a Montgomery-style reduction
CN102520907A (zh) * 2011-12-13 2012-06-27 杭州晟元芯片技术有限公司 一种软硬件结合加速器及其实现方法
CN109271137B (zh) * 2018-09-11 2020-06-02 网御安全技术(深圳)有限公司 一种基于公钥加密算法的模乘装置及协处理器
TWI784406B (zh) * 2020-06-04 2022-11-21 熵碼科技股份有限公司 採用迭代計算的模數運算電路
US11508263B2 (en) 2020-06-24 2022-11-22 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
US11468797B2 (en) 2020-06-24 2022-10-11 Western Digital Technologies, Inc. Low complexity conversion to Montgomery domain
CN112989269B (zh) * 2021-03-26 2023-07-25 上海西井科技股份有限公司 加速器及加速器片内计算模块
CN116540977B (zh) * 2023-07-05 2023-09-12 北京瑞莱智慧科技有限公司 模乘法器电路、fpga电路和asic模块

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4658094A (en) * 1985-03-28 1987-04-14 Itt Corporation Encryption apparatus and methods for raising a large unsigned integer to a large unsigned integer power modulo a large unsigned integer
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 剰余計算装置、テーブル作成装置および乗算剰余計算装置
FR2724741B1 (fr) * 1994-09-21 1996-12-20 Sgs Thomson Microelectronics Circuit electronique de calcul modulaire dans un corps fini
FR2726668B1 (fr) * 1994-11-08 1997-01-10 Sgs Thomson Microelectronics Procede de mise en oeuvre de reduction modulaire selon la methode de montgomery
JP3277089B2 (ja) * 1995-02-14 2002-04-22 株式会社東芝 乗算器及び積和演算装置
US5784305A (en) * 1995-05-01 1998-07-21 Nec Corporation Multiply-adder unit
JP3504050B2 (ja) * 1996-01-26 2004-03-08 株式会社東芝 べき乗剰余演算方法及び装置

Also Published As

Publication number Publication date
JP2002521720A (ja) 2002-07-16
AU2228199A (en) 2000-02-14
WO2000005645A1 (en) 2000-02-03
CN1310816A (zh) 2001-08-29
US6182104B1 (en) 2001-01-30

Similar Documents

Publication Publication Date Title
CN1248102C (zh) 模乘法的电路及其方法
US6356636B1 (en) Circuit and method for fast modular multiplication
Hossain et al. High‐performance elliptic curve cryptography processor over NIST prime fields
US6671709B2 (en) Multiplier cell and method of computing
EP1293891B1 (en) Arithmetic processor accomodating different finite field size
US5956265A (en) Boolean digital multiplier
US20050198093A1 (en) Montgomery modular multiplier
JP4554239B2 (ja) モンゴメリー類型のモジュラー乗算装置及び方法
US7961877B2 (en) Factoring based modular exponentiation
US10693625B2 (en) Security processor, application processor including the same, and operating method of security processor
CN1570848A (zh) 使用进位存储加法的蒙哥马利模乘器及其方法
CN111444518A (zh) 安全处理器及其操作方法、加密或解密数据的方法
WO2018125677A1 (en) Key processing method and device
EP1068565B1 (en) Acceleration and security enhancements for elliptic curve and rsa coprocessors
Hutter et al. A versatile and scalable digit-serial/parallel multiplier architecture for finite fields GF (2/sup m/)
CN1314223C (zh) 密码专用密钥的存储和复原方法及设备
CN101304312B (zh) 一种适用于精简指令集处理器的加密单元
Li et al. Research in fast modular exponentiation algorithm based on FPGA
EP1366596B1 (en) Circuit and method for squaring long integers
WO2000038047A1 (en) Circuit and method of cryptographic multiplication
US7590235B2 (en) Reduction calculations in elliptic curve cryptography
CN1729444A (zh) 一种用于计算机系统的快速模数运算"emod"
Morales-Sandoval et al. Area/performance evaluation of digit-digit GF (2 K) multipliers on FPGAS
US20070016635A1 (en) Inversion calculations
CN1659512A (zh) Aes混合列变换

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
ASS Succession or assignment of patent right

Owner name: FREEDOM SEMICONDUCTORS CO.

Free format text: FORMER OWNER: MOTOROLA, INC.

Effective date: 20041015

C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20041015

Address after: Texas in the United States

Applicant after: FreeScale Semiconductor

Address before: Illinois Instrunment

Applicant before: Motorola, Inc.

C14 Grant of patent or utility model
GR01 Patent grant
C19 Lapse of patent right due to non-payment of the annual fee
CF01 Termination of patent right due to non-payment of annual fee