用于蒙哥马利乘法的运算电路及密码电路的制作方法

文档序号:6596919阅读:268来源:国知局
专利名称:用于蒙哥马利乘法的运算电路及密码电路的制作方法
技术领域
本发明涉及用于蒙哥马利乘法的运算电路,以及利用用于蒙哥马利乘法的运算电
路进行加密处理及解密处理的密码电路。
背景技术
在利用因特网等的网络进行契约或结算的电子商务交易中,例如有在网络上销售商品的电子商店进行的商务交易(企业和消费者间的商务交易),消费者能够浏览电子商店的网站,选择商品,指定结算方法进行购买。 在这样的电子商务交易中,防止冒充或窃听、篡改等的安全的确保成为课题,例如,作为用于防止冒充的认证技术的一种,利用公钥密码。这里,公钥密码是使用用于加密的加密密钥和用于解密的解密密钥的相异的2个密钥的技术,根据加密密钥来推测解密密钥、以及解读密文极端困难,或不可能。密钥的所有者通过以公开加密密钥(公钥),且不被第三者得知解密密钥(私钥)的方式进行管理,从而能够使利用公钥的对方侧的信息不被第三者得知。 例如,在上述的电子商店和消费者之间的商务交易中,电子商店以向普通人公开加密密钥(公钥),不让第三者得知解密密钥(私钥)的方式进行管理。消费者利用电子商店一侧公开的加密密钥(公钥),对与商务交易相关的信息进行加密并向电子商店发送。电子商店对从消费者接收的密文以解密密钥(私钥)进行解密,对消费者进行商品的销售。作为密钥的所有者的电子商店通过以使解密密钥(私钥)不被第三者得知的方式进行管理,能够防止与商务交易相关的信息被第三者得知,能够防止消费者的个人信息等被第三者得知。 作为公钥密码,例如有RSA(Rivest Shamir Adieman)密码。在RSA密码中,为了进行解读,需要非常大的整数的素因数分解,即使是利用计算机的解读,以现实的计算时间进行的解读也是困难的。 以下,针对RSA密码的加密方法和解密方法简单地进行说明。 在使用公钥(e,n)对明文M进行加密,生成密文C的情况下,密文C通过以下的数
式1生成。 C = Memodn (其中,0《M〈n) (1) 在使用私钥(d,n)对密文C进行解密,生成明文M的情况下,明文M通过以下的数式2生成。M = Cdmodn (2) 再有,公钥(e,n)、私钥(d, n)中存在以下数式3的关系。 n = pXq(p、q是素数) eXd三lmod(p-l) (q-l) (3) 具体地,例如当假设p = 3、q = 11、e = 3、d = 7时,对明文M = 7进行加密得到的密文C,通过数式1成为C = 73mod(3Xll) = 343mod33 = 13。 此外,对密文C二 13进行解密而得到的明文M通过数式2,成为M = 137mod33 =62748517mod33 = 7。因此,可知正确地进行了利用数式1和数式2的加密和解密。
可是,在上述的RSA密码中,以数式l和数式2所示方式进行幂乘运算、剩余运算。通常,密钥或明文是1024位(bit)以上的非常大的位数,因此当在运算装置上直接使用数式1和数式2进行加密和解密时,有发生溢出的可能性。 因此,在RSA密码的加密和解密中,例如使用作为不溢出的剩余运算的方法的一个例子的蒙哥马利乘法。在蒙哥马利乘法中,能够在N位的存储器空间进行N位的剩余运算。 以下,针对蒙哥马利乘法简单地进行说明。RSA密码的数式IC = Memodn的右边以M2modn = MXMmodn、 M3mod n =MXM2modn、 Memodn = MXMe—"rnodn的方式,以逐次计算进行求取。即,能够通过反复进行y = a X Pmodn来计算。 这里,在蒙哥马利乘法中,由于是计算机上的乘法,所以使用常数R = 2N。当对y=a X Pmodn的两边乘R来求取modn时,成为y Rmodn = a RX P RX R—丄modn。在这里,当假设Z二 YRmodn、A= aRmodn、B= P Rmodn时,蒙哥马利乘法的运算式以下面的数式4表示。 Z = AXBXR—丄modn (4) 这里,图9表示在运算装置上对数式4所示的蒙哥马利乘法进行运算的情况下的程序码(伪码)的一个例子。 再有,在RSA密码中,例如,由于明文M的位数非常大(例如1024位等),所以在RSA密码的加密处理等中使用的蒙哥马利乘法的各变量A、B、n的位数也大。因此,为了在运算装置上进行蒙哥马利乘法,需要将变量A、B、n以运算装置能够计算的位宽度r进行分割。具体地,在变量A、B、n是相同位宽度的情况下,当将分割数假定为s时,成为A = {a[s-l],a[s-2], ...,a
},B = {b[s-l],b[s-2],…,b
} , n = {n[s_l] , n[s-2],…,n
),N=rXs。 此外,在图9中,(C,S)表示储存计算结果的变量,变量C表示(C,S)的高位r位,变量S表示(C,S)的低位r位。t[s+l],t[s],…,t
,m分别是位宽度r的临时变量。
从图9可知,(C, S) := t[j]+a[j]*b[i]+C的运算式在主循环(main loop)的子循环(sub loop)内,运算次数((s-l) X (s-l))变得最多。因此,为了 RSA密码的加密和解密的高速化,要求高速地进行蒙哥马利乘法中的(C, S) := t[j]+a[j]朴[i]+C的运算。再有,图9中的*表示求积(X)。 这里,作为高速地进行蒙哥马利乘法的运算装置,例如提出有以下的运算电路(例如,参照日本专利申请特开2002-207589号公报),其具备对位宽度r的变量Xl、 x2、X3、X4分别进行储存的第一至第四寄存器;以2端口 (port) RAM (Random Access Memory,随机存储器)构成的存储器A ;以2端口 RAM或1端口 RAM构成的存储器B ;以及能够执行流水线(pipeline)处理的运算器,其中,该流水线处理从第一至第四寄存器受理变量Xl、 x2、X3、^,计算变量A、与变量x2和变量x3的求积结果、与变量x4的和,输出位宽度2r或2r+l的运算结果Q,在流水线处理执行后,执行下述处理,即将由运算结果Q的低位r位构成的数据写入存储器A、将由运算结果Q的高位r位构成的数据QH写入第四寄存器的存储器写入处理;和从存储器A读出变量Xl并输出到第一寄存器,从存储器B读出变量x3并输出到第三寄存器的存储器读出处理。 这里,图10表示上述日本专利申请特开2002-207589号公报中记述的运算电路的概略结构例。此外,图11(a)表示串行地进行存储器读出处理(存储器读周期)和存储器写入处理(存储器写周期)的情况下的处理的流程,图11(b)表示在上述日本专利申请特开2002-207589号公报中,存储器B以2端口 RAM构成,以流水线进行存储器读出处理和存储器写入处理的情况下的处理的流程。 由图11可知,在日本专利申请特开2002-207589号公报中记述的运算电路中,因为能够以流水线进行存储器读出处理和存储器写入处理,所以与串行地进行存储器读出处理和存储器写入处理的情况相比,能够高速化。 可是,通常在以运算电路进行蒙哥马利乘法的情况下,例如在以ASIC (Application Specific Integrated Circuit,专用集成电路)实现运算电路的情况下,2端口 RAM不被标准的ASIC库支持的情况较多。此外,即使在2端口 RAM被支持的情况下,也存在仅支持根据2读2写方式的面积大的2端口 RAM的情况。从电路设计的标准化和IP (intellectual property,知识产权)化的观点出发,不优选使用确实不被支持的情况较多的2端口 RAM。

发明内容
本发明正是鉴于上述问题而完成的,其目的在于提供一种用于蒙哥马利乘法的运算电路,该电路能够仅使用l端口 RAM进行蒙哥马利乘法。此外,提供一种RSA密码电路,能够仅使用1端口 RAM进行蒙哥马利乘法。 为了实现上述目的的本发明的用于蒙哥马利乘法的运算电路的第一特征在于,构成为具备积和运算电路,进行积和运算处理,在该积和运算处理中,受理位宽度r的第一变量、第二变量、第三变量、第四变量,对所述第三变量、所述第一变量与所述第二变量的求积结果、以及所述第四变量的和进行运算,输出位宽度2r的运算结果数据;第一存储器,以具备对位宽度r、元素数s的中间结果储存用数组进行储存的存储区域的同步式l端口 RAM构成,将所述中间结果储存用数组的各元素作为所述第三变量向所述积和运算电路输出;第二存储器,以具备对位宽度r、元素数s的第一数组和第二数组进行储存的存储区域的同步式1端口 RAM构成,将所述第一数组的各元素作为所述第一变量向所述积和运算电路输出;被乘数储存用寄存器,从所述第二存储器以元素单位受理并存储所述第二数组,作为所述第二变量向所述积和运算电路输出;进位寄存器,受理并存储所述运算结果数据内的高位r位构成的高位位侧数据,作为所述第四变量向所述积和运算电路输出,该用于蒙哥马利乘法的运算电路构成为能够执行下述处理,即第一读出处理,从所述第二存储器读出以规定的第一循环计数器值表示的所述第二数组的元素并储存到所述被乘数储存用寄存器;第二读出处理、从所述第二存储器读出以规定的第二循环计数器值表示的所述第一数组的元素,从所述第一存储器读出以所述第二循环计数器值表示的所述中间结果储存用数组的元素,读出所述被乘数储存用寄存器的值,读出所述进位寄存器的值,分别输入到所述积和运算电路;以及写入处理,将由所述高位位侧数据写入所述进位寄存器,并且将由所述运算结果数据内的低位r位构成的低位位侧数据,作为以所述第二循环计数器值表示的所述中间结果储存用数组的元素,写入所述第一存储器,在所述第一读出处理执行后,执行第一子循环处理,在该第一子循环处理中,依次反复执行所述第二读出处理、所述积和运算处理、所述写入处理、以及所述第二循环计数器值的更新。 上述特征的本发明的用于蒙哥马利乘法的运算电路的第二特征在于,构成为所述
第二存储器还具备对位宽度r、元素数s的第三数组和位宽度r的被乘法变量进行储存的
存储区域,将所述第三数组的各元素作为对应的所述第一数组的各元素向所述积和运算电
路输出,将所述被乘法变量作为所述第二数组的各元素向所述被乘数储存用寄存器输出。 上述特征的本发明的用于蒙哥马利乘法的运算电路的第三特征在于,构成为能够
执行第二子循环处理,在该第二子循环处理中,依次反复执行将所述第三数组的各元素作
为对应的所述第一数组的各元素进行使用的所述第二读出处理、所述积和运算处理、所述
写入处理、以及所述第二循环计数器值的更新,至少执行主循环处理,在该主循环处理中,
依次反复执行通常的所述第一读出处理、所述第一子循环处理、将所述被乘法变量作为所
述第二数组的各元素进行使用的另外的第一读出处理、所述第二子循环处理、以及所述第
一循环计数器值的更新。 为了实现上述目的的本发明的RSA密码电路的特征在于,使用上述第一 第三特征的用于蒙哥马利乘法的运算电路,进行RSA密码的加密处理或解密处理的至少任何一方。 根据上述第一特征的用于蒙哥马利乘法的运算电路,因为构成为不使用2端口RAM而仅使用l端口 RAM,所以例如在以ASIC构成进行加密和解密的密码电路的情况等下,能够实现不依赖于ASIC库的通用性高的电路。由此,上述第一特征的用于蒙哥马利乘法的运算电路更加对于用于蒙哥马利乘法的运算电路的标准化和IP化是有用的。
此外,根据上述特征的用于蒙哥马利乘法的运算电路,因为构成为在写入处理中,在从积和运算电路输出的运算结果数据内,将高位位侧数据写入所述进位寄存器,将低位位侧数据写入所述第一存储器,所以如果以并行执行积和运算处理和写入处理的方式进行控制的话,能够在电路整体使运算速度高速。


图1是表示搭载有使用本发明的用于蒙哥马利乘法的运算电路而构成的RSA密码
电路的IC卡的概略局部结构例的概略局部框图。 图2是表示本发明RSA密码电路的处理算法的流程图。 图3是表示本发明的用于蒙哥马利乘法的运算电路的概略结构例的概略框图。
图4是表示同步式1端口 RAM的概略结构例的概略框图。
图5是用于说明同步式1端口 RAM的工作的时序图。 图6是表示本发明的用于蒙哥马利乘法的运算电路的处理算法内的、第一子循环处理的处理算法的流程图。 图7是为了说明本发明的用于蒙哥马利乘法的运算电路的处理算法内的、第一子循环处理的工作的时序图。 图8是示意地表示本发明的用于蒙哥马利乘法的运算电路的处理算法内的、第一子循环处理的流程的示意图。 图9是表示用于说明以运算装置进行蒙哥马利运算的情况下的运算装置的工作 的程序码的图。 图10是表示现有技术的运算电路的概略结构例的概略框图。 图11是示意地表示在现有技术的运算电路中,串行地进行存储器读出处理和存 储器写入处理的情况和以流水线进行的情况的处理的流程的示意图。
具体实施例方式
以下,基于附图对本发明的用于蒙哥马利乘法的运算电路(以下,适宜地略称为 "本发明电路")、以及RSA密码电路的实施方式进行说明。 基于图1 图8对本发明电路和使用了本发明电路的RSA密码电路的一个实施方 式进行说明。 这里,图1表示搭载有使用本发明电路1构成的RSA密码电路103的IC卡100的 概略局部结构例,图3表示本发明电路1的概略结构例。 IC卡100在本实施方式中是接触型IC卡,如图1所示,构成为具备用于与IC读 卡器进行数据通信的1/0(I即ut/output,输入/输出)IOI,控制IC卡100内的各功能的 CPU (Central Processing Unit,中央处理器)102,对实现IC卡100的各种功能的程序等进 行储存的ROM(Read Only Memory,只读存储器)104、RAM105、闪速存储器等的非易失性存储 器106、以及进行利用RSA密码的加密处理等的RSA密码电路103。再有,在本实施方式中, 假定是接触型IC卡,但是非接触型IC卡也可。 此外,IC卡IOO在本实施方式中,在与IC读卡器的数据通信中,在对IC读卡器发 送包含个人信息等的安全信息的发送数据的情况下,使用RSA密码电路103对发送数据进 行加密。 RSA密码电路103在本实施方式中以ASIC实现,构成为具备本发明电路1和循环 计数器电路103a,对包含安全信息的发送数据进行加密处理。循环计数器电路103a在本实 施方式中构成为具备第一计数器电路(未图示),生成图9所示的程序码中使用的计数值 内的、控制主循环处理的处理次数的第一循环计数值i ;以及第二计数器电路(未图示),生 成图9所示的程序码中使用的计数值内的、控制子循环处理的处理次数的第二循环计数值
jo 这里,图2表示本实施方式中的RSA密码电路103的处理算法。具体地,RSA密码 电路103首先使用明文M、常数R = 2N进行蒙哥马利变换(步骤#101),读出加密密钥e = K[k-l:0] (#102),将变量i的值初始化为k-l (步骤#103)。之后,本发明电路1进行以A =AAR—^odn表示的2乘法的蒙哥马利乘法(步骤#104),在K[i] = 1的情况下(在步骤 #105的"是"分支),本发明电路1进行以A = ABR—^odn表示的乘法的蒙哥马利乘法(步骤 #106)。在变量i # 0的情况下(在步骤#107的"否"分支),对i减去1 (步骤#108),转 移到步骤#104。在变量i = 0的情况下(在步骤#107的"是"分支),进行以C = AR—^odn 表示的蒙哥马利逆变换(步骤#109),结束处理。 本发明电路1以进行以图9的程序码表示的处理的方式构成,如图3所示,构成为 具备积和运算电路lO,其进行积和运算处理,在该积和运算处理中,受理位宽度r的第一变量X、第二变量Y、第三变量Z、第四变量C,对第三变量Z、与第一变量X和第二变量Y的 求积结果、与第四变量C的和(F = Z+X*Y+C)进行运算,输出位宽度2r的运算结果数据F ; 第一存储器Ml,以具备对位宽度r、元素数s的中间结果储存用数组t进行储存的存储区域 的同步式1端口 RAM构成,将中间结果储存用数组t的各元素作为第三变量Z向积和运算 电路10输出;第二存储器M2,以具备对位宽度r、元素数s的第一数组a[s-l :0]和第二数 组b[s-l:0]进行储存的存储区域的同步式l端口 RAM构成,将第一数组a[s-l:O]的各元 素作为第一变量X向积和运算电路10输出;被乘数储存用寄存器R1,从第二存储器M2以 元素单位受理并存储第二数组b [s-l: 0],作为第二变量Y向积和运算电路10输出;以及进 位寄存器R2,受理并存储由运算结果数据F内的高位r位构成的高位位侧数据FH,作为第 四变量C向积和运算电路10输出。 再有,在本实施方式中,假定本发明电路1构成为能够执行包含图9所示的第一子 循环处理和第二子循环处理的主循环处理的情况,进行说明,但按子循环处理的每一个构 成本发明电路l也可。 更具体地,在本实施方式中,第一存储器M1具备能够存储元素数为s+2的中间 结果储存用数组t[s+l:0]的存储区域。在本实施方式中,构成为在中间结果储存用数组t 内,为了第一子循环处理和第二子循环处理而使用t [s-l: 0],为了主循环处理的执行而使 用t[s]、t[s+l]。 这里,图4表示本实施方式的第一存储器M1和第二存储器M2的概略结构例。此 外,图5(a)表示本实施方式的第一存储器M1和第二存储器M2的读出处理中的工作定时, 图5(b)表示本实施方式的第一存储器M1和第二存储器M2的写入处理中的工作定时。作 为同步式1端口 RAM的第一存储器Ml,如图5 (a)所示,在读出处理中,同步于时钟信号CLK 而工作,在芯片启动信号CE#为L电平的情况下,从输出端子DOUT输出由地址信号AD表示 的存储区域中存储的数据D。同样地,第一存储器Ml,如图5(b)所示,在写入处理中,同步 于时钟信号CLK而工作,在芯片启动信号CE#为L电平的情况下,将从数据输入端子DIN输 入的数据D写入由地址信号AD表示的存储区域中。 再有,在本实施方式中,为了主循环处理,将中间结果储存用数组t的元素数作为 s+2,但在以仅进行子循环处理的方式构成本发明电路的情况等下,将中间结果储存用数组 t的元素数作为s也可。此外,也可以构成为能够在第一存储器M1中存储中间结果储存用 数组t以外的变量。 在第二存储器M2中,在本实施方式中,在用于存储用于执行第一子循环处理的第 一数组a[s-l:0]和第二数组b[s-l:0]的存储区域之外,为了执行图9所示的第二子循环 处理,还具备对位宽度r、元素数s的第三数组n [s-1:0],和位宽度r的被乘法变量m进行 储存的存储区域。 第二存储器M2构成为,在第二子循环处理中,将第三数组n [s_l: 0]的各元素作为 对应的第一数组a[s-l:O]的各元素向积和运算电路10输出,将被乘法变量m作为第二数 组b[s-l:0]的各元素向被乘数储存用寄存器R1输出。再有,第二存储器M2与第一存储器 Ml是相同结构(图4),以相同的工作定时(图5)工作。 本发明电路1构成为能够执行如下处理,S卩,从第二存储器M2读出以第一循环计 数器值i表示的第二数组b[s-l:O]的元素并储存于被乘数储存用寄存器R1的第一读出处理(通常的第一读出处理);从第二存储器M2读出以第二循环计数器值j表示的第一数组 a[s-l:0]的元素,从第一存储器M1读出以第二循环计数器值j表示的中间结果储存用数组 t的元素,读出被乘数储存用寄存器R1的值RX,读出进位哥存器R2的值RC,分别输入积和 运算电路10的第二读出处理;将高位位侧数据FH写入进位寄存器R2,并且将由运算结果数 据F内的低位r位构成的低位位侧数据作为以第二循环计数器值j表示的中间结果储 存用数组t的元素,写入第一存储器Ml的写入处理,在第一读出处理执行后,执行第一子循 环处理,该第一子循环处理反复执行第二读出处理、积和运算处理、写入处理、以及第二循 环计数器值j的更新。 进而,本发明电路1构成为能够执行第二子循环处理,该第二子循环处理反复执
行将第三数组n[s-l:O]的各元素作为对应的第一数组a[s-l:O]的各元素进行使用的第二
读出处理、积和运算处理、写入处理、以及第二循环计数器值j的更新。 本发明电路1为了图9所示的程序码的执行,构成为至少执行主循环处理,该主循
环处理依次反复执行通常的第一读出处理、第一子循环处理、将被乘法变量m作为第二数
组b[s-l:O]的各元素进行使用的另外的第一读出处理、第二子循环处理、以及第一循环计
数器值i的更新。 这里,图6表示图9所示的程序码内执行次数最多的第一子循环处理的处理算法。 图7表示执行第一子循环处理时的构成本发明电路1的各电路的工作定时。再有,在图7 中,Mn_CE#(n = 1,2)表示第一存储器Ml、第二存储器M2各自的芯片启动信号,Mn_WE#表 示第一存储器Ml 、第二存储器M2各自的写入启动信号,Mn_D0UT表示第一存储器Ml 、第二 存储器M2各自的输出信号的值。 本发明电路1在开始第一主循环处理时,首先、第一存储器M1的中间结果储存用 数组t内,对t [s-l: 0]进行初始化,将进位寄存器R2的值RC初始化为0 (步骤#210)。接 着,对第二计数器电路进行初始化并将第二计数器值j的值设定为0(步骤#220)。接着,本 发明电路1从第二存储器M2读出b[i]并储存于被乘数存储用寄存器Rl(步骤ft230,第一 读出处理)。 接着,本发明电路1从第一存储器M1读出t[j](步骤ft241),从第二存储器M2读 出a[j](步骤#242),读出被乘数储存用寄存器Rl的值RX( = b[i])(步骤#243),读出进 位寄存器R2的值RC(步骤#244),分别输入积和运算电路IO(步骤#240,第二读出处理)。 再有,步骤#241 步骤#244在这里并行执行。 在步骤#240的第二读出处理的执行之后,本发明电路1的积和运算电路10使用 在步骤#240输入的各值,对t [ j] +a[ j] *b [ j] +RC进行计算,将其结果作为2r位的结果数据 F进行输出(步骤#250,积和运算处理)。进而,本发明电路1对进位寄存器R2写入上次的 高位位侧数据Fji = 0, j = 0的情况下是初始值O)(步骤#261),与此并行地,将低位位侧 数据R(i = 0, j = 0的情况下是初始值0)作为t[j]写入第一存储器M1 (步骤#262),由 此,执行写入处理(步骤#260)。再有,步骤#250的积和运算处理和步骤#260的写入处理 并行执行。 接着,本发明电路l在第二循环计数器值j的值不是s-l的情况下(在步骤#270 为"否"分支),将第二循环计数器值j的值增加1(步骤#280),转移到步骤#240。本发明 电路1在第二循环计数器值j的值是s-l的情况下(在步骤#270为"是"分支),第一子循环处理结束。 这里,图8表示本发明电路1的第一子循环处理的流程。从图7和图8可知,本发 明电路1能够并行地执行利用积和运算电路10的积和运算处理、和对第一存储器M1和进 位寄存器R2的写入处理。因此,能够以执行对积和运算电路10输入各变量的第二读出处理 的存储器读周期、和执行将上次的积和运算电路10中的运算结果写入第一存储器M1和进 位寄存器R2的写入处理和积和运算处理的存储器写周期这两个周期,构成1个循环周期, 与图11所示的现有技术那样,以3个或4个周期构成1个循环周期的情况相比,能够谋求 运算处理时间的高速化。 再有,从图2可知,在本实施方式的RSA密码电路103中,反复进行蒙哥马利乘法, 如果以通过本发明电路1进行蒙哥马利乘法的方式构成的话,能够仅使用1端口 RAM进行 蒙哥马利乘法,能够实现不依赖于ASIC库的通用性高的RSA密码电路103。此外,如上所 述,在本发明电路1中,与现有的用于蒙哥马利乘法的运算电路相比,能够谋求运算处理时 间的高速化,因此能够谋求反复执行蒙哥马利乘法的RSA密码电路103的高速化。即,本发 明电路1对蒙哥马利乘法的反复次数多的密码电路和运算电路特别有用。
(其它实施方式) (1)在上述实施方式中,针对在IC卡IOO搭载RSA密码电路103,使用本发明电路 1进行加密处理的情况进行了说明,但也可以构成为例如在IC读卡器等搭载的RSA密码电 路103等中,使用本发明电路1进行解密处理。 (2)在上述实施方式中,针对在RSA密码电路103中使用本发明电路1的情况进行 了说明,但在利用蒙哥马利乘法的其它密码电路或运算电路中使用也可。
权利要求
一种用于蒙哥马利乘法的运算电路,其中,构成为具备积和运算电路,进行积和运算处理,在该积和运算处理中,受理位宽度r的第一变量、第二变量、第三变量、第四变量,对所述第三变量、所述第一变量和所述第二变量的求积结果、以及所述第四变量的和进行运算,输出位宽度2r的运算结果数据;第一存储器,以具备对位宽度r、元素数s的中间结果储存用数组进行储存的存储区域的同步式1端口RAM构成,将所述中间结果储存用数组的各元素作为所述第三变量向所述积和运算电路输出;第二存储器,以具备对位宽度r、元素数s的第一数组和第二数组进行储存的存储区域的同步式1端口RAM构成,将所述第一数组的各元素作为所述第一变量向所述积和运算电路输出;被乘数储存用寄存器,从所述第二存储器以元素单位受理并存储所述第二数组,作为所述第二变量向所述积和运算电路输出;进位寄存器,受理并存储由所述运算结果数据内的高位r位构成的高位位侧数据,作为所述第四变量向所述积和运算电路输出,该用于蒙哥马利成分的运算电路构成为能够执行下述处理,即第一读出处理,从所述第二存储器读出以规定的第一循环计数器值表示的所述第二数组的元素并储存到所述被乘数储存用寄存器;第二读出处理,从所述第二存储器读出以规定的第二循环计数器值表示的所述第一数组的元素,从所述第一存储器读出以所述第二循环计数器值表示的所述中间结果储存用数组的元素,读出所述被乘数储存用寄存器的值,读出所述进位寄存器的值,分别输入到所述积和运算电路;以及写入处理,将所述高位位侧数据写入所述进位寄存器,并且将由所述运算结果数据内的低位r位构成的低位位侧数据,作为以所述第二循环计数器值表示的所述中间结果储存用数组的元素,写入所述第一存储器,在所述第一读出处理执行后,执行第一子循环处理,在该第一子循环处理中,反复执行所述第二读出处理、所述积和运算处理、所述写入处理、以及所述第二循环计数器值的更新。
2. 根据权利要求l所述的运算电路,其中,构成为所述第二存储器还具备对位宽度r、元素数s的第三数组和位宽度r的被乘法 变量进行储存的存储区域,将所述第三数组的各元素作为对应的所述第一数组的各元素向 所述积和运算电路输出,将所述被乘法变量作为所述第二数组的各元素向所述被乘数储存 用寄存器输出。
3. 根据权利要求2所述的运算电路,其中,构成为能够执行第二子循环处理,在该第二子循环处理中,反复执行将所述第三数组 的各元素作为对应的所述第一数组的各元素进行使用的所述第二读出处理、所述积和运算 处理、所述写入处理、以及所述第二循环计数器值的更新,至少执行主循环处理,在该主循环处理中,依次反复执行通常的所述第一读出处理、所 述第一子循环处理、将所述被乘法变量作为所述第二数组的各元素进行使用的另外的第一 读出处理、所述第二子循环处理、以及所述第一循环计数器值的更新。
4. 一种RSA密码电路,其中,使用权利要求1 3的任何一项所述的用于蒙哥马利乘法的运算电路,进行RSA密码 的加密处理或解密处理的至少任何一方。
全文摘要
本发明提供一种用于蒙哥马利乘法的运算电路,其能够仅使用1端口RAM进行蒙哥马利乘法。该运算电路能够执行从对a[s-1:0]和b[s-1:0]进行储存的同步式1端口RAM的存储器(M2)读出b[i]并储存到寄存器R1的第一读出处理;从存储器(M2)读出a[j],从对t[s-1:0]进行储存的同步式1端口RAM的存储器(M1)读出t[j],从寄存器(R1)读出b[i],从寄存器(R2)读出值RC,输入进行计算t[j]+a[j]*b[j]+RC的积和运算处理的积和运算电路10的第二读出处理;将运算结果数据(FH)写入寄存器(R2),并且将运算结果数据(FL)作为t[j]写入到存储器(M1)的写入处理,在第一读出处理执行后,执行第一子循环处理,该第一子循环处理反复执行第二读出处理、积和运算处理、写入处理。
文档编号G06F7/72GK101782846SQ20101000299
公开日2010年7月21日 申请日期2010年1月15日 优先权日2009年1月15日
发明者大山茂郎 申请人:夏普株式会社
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1