CN101782846B - 用于蒙哥马利乘法的运算电路及密码电路 - Google Patents
用于蒙哥马利乘法的运算电路及密码电路 Download PDFInfo
- Publication number
- CN101782846B CN101782846B CN2010100029957A CN201010002995A CN101782846B CN 101782846 B CN101782846 B CN 101782846B CN 2010100029957 A CN2010100029957 A CN 2010100029957A CN 201010002995 A CN201010002995 A CN 201010002995A CN 101782846 B CN101782846 B CN 101782846B
- Authority
- CN
- China
- Prior art keywords
- array
- circuit
- variable
- memory
- processing
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/60—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers
- G06F7/72—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic
- G06F7/728—Methods or arrangements for performing computations using a digital non-denominational number representation, i.e. number representation without radix; Computing devices using combinations of denominational and non-denominational quantity representations, e.g. using difunction pulse trains, STEELE computers, phase computers using residue arithmetic using Montgomery reduction
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供一种用于蒙哥马利乘法的运算电路,其能够仅使用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)的写入处理,在第一读出处理执行后,执行第一子循环处理,该第一子循环处理反复执行第二读出处理、积和运算处理、写入处理。
Description
技术领域
本发明涉及用于蒙哥马利乘法的运算电路,以及利用用于蒙哥马利乘法的运算电路进行加密处理及解密处理的密码电路。
背景技术
在利用因特网等的网络进行契约或结算的电子商务交易中,例如有在网络上销售商品的电子商店进行的商务交易(企业和消费者间的商务交易),消费者能够浏览电子商店的网站,选择商品,指定结算方法进行购买。
在这样的电子商务交易中,防止冒充或窃听、篡改等的安全的确保成为课题,例如,作为用于防止冒充的认证技术的一种,利用公钥密码。这里,公钥密码是使用用于加密的加密密钥和用于解密的解密密钥的相异的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=p×q(p、q是素数)
e×d≡1mod(p-1)(q-1) (3)
具体地,例如当假设p=3、q=11、e=3、d=7时,对明文M=7进行加密得到的密文C,通过数式1成为C=73mod(3×11)=343mod33=13。
此外,对密文C=13进行解密而得到的明文M通过数式2,成为M=137mod33=62748517mod33=7。因此,可知正确地进行了利用数式1和数式2的加密和解密。
可是,在上述的RSA密码中,以数式1和数式2所示方式进行幂乘运算、剩余运算。通常,密钥或明文是1024位(bit)以上的非常大的位数,因此当在运算装置上直接使用数式1和数式2进行加密和解密时,有发生溢出的可能性。
因此,在RSA密码的加密和解密中,例如使用作为不溢出的剩余运算的方法的一个例子的蒙哥马利乘法。在蒙哥马利乘法中,能够在N位的存储器空间进行N位的剩余运算。
以下,针对蒙哥马利乘法简单地进行说明。
RSA密码的数式IC=Memodn的右边以M2modn=M×Mmodn、M3mod n=M×M2modn、…Memodn=M×Me-1modn的方式,以逐次计算进行求取。即,能够通过反复进行γ=α×βmodn来计算。
这里,在蒙哥马利乘法中,由于是计算机上的乘法,所以使用常数R=2N。当对γ=α×βmodn的两边乘R来求取modn时,成为γRmodn=αR×βR×R-1modn。在这里,当假设Z=γRmodn、A=αRmodn、B=βRmodn时,蒙哥马利乘法的运算式以下面的数式4表示。
Z=A×B×R-1modn (4)
这里,图9表示在运算装置上对数式4所示的蒙哥马利乘法进行运算的情况下的程序码(伪码)的一个例子。
再有,在RSA密码中,例如,由于明文M的位数非常大(例如1024位等),所以在RSA密码的加密处理等中使用的蒙哥马利乘法的各变量A、B、n的位数也大。因此,为了在运算装置上进行蒙哥马利乘法,需要将变量A、B、n以运算装置能够计算的位宽度r进行分割。具体地,在变量A、B、n是相同位宽度的情况下,当将分割数假定为s时,成为A={a[s-1],a[s-2],…,a[0]},B={b[s-1],b[s-2],…,b[0]},n={n[s-1],n[s-2],…,n[0]},N=r×s。
此外,在图9中,(C,S)表示储存计算结果的变量,变量C表示(C,S)的高位r位,变量S表示(C,S)的低位r位。t[s+1],t[s],…,t[0],m分别是位宽度r的临时变量。
从图9可知,(C,S):=t[j]+a[j]*b[i]+C的运算式在主循环(main loop)的子循环(sub loop)内,运算次数((s-1)×(s-1))变得最多。因此,为了RSA密码的加密和解密的高速化,要求高速地进行蒙哥马利乘法中的(C,S):=t[j]+a[j]*b[i]+C的运算。再有,图9中的*表示求积(×)。
这里,作为高速地进行蒙哥马利乘法的运算装置,例如提出有以下的运算电路(例如,参照日本专利申请特开2002-207589号公报),其具备:对位宽度r的变量x1、x2、x3、x4分别进行储存的第一至第四寄存器;以2端口(port)RAM(Random Access Memory,随机存储器)构成的存储器A;以2端口RAM或1端口RAM构成的存储器B;以及能够执行流水线(pipeline)处理的运算器,其中,该流水线处理从第一至第四寄存器受理变量x1、x2、x3、x4,计算变量x1、与变量x2和变量x3的求积结果、与变量x4的和,输出位宽度2r或2r+1的运算结果Q,在流水线处理执行后,执行下述处理,即将由运算结果Q的低位r位构成的数据QL写入存储器A、将由运算结果Q的高位r位构成的数据QH写入第四寄存器的存储器写入处理;和从存储器A读出变量x1并输出到第一寄存器,从存储器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。
发明内容
本发明正是鉴于上述问题而完成的,其目的在于提供一种用于蒙哥马利乘法的运算电路,该电路能够仅使用1端口RAM进行蒙哥马利乘法。此外,提供一种RSA密码电路,能够仅使用1端口RAM进行蒙哥马利乘法。
为了实现上述目的的本发明的用于蒙哥马利乘法的运算电路的第一特征在于,构成为具备:积和运算电路,进行积和运算处理,在该积和运算处理中,受理位宽度r的第一变量、第二变量、第三变量、第四变量,对所述第三变量、所述第一变量与所述第二变量的求积结果、以及所述第四变量的和进行运算,输出位宽度2r的运算结果数据;第一存储器,以具备对位宽度r、元素数s的中间结果储存用数组进行储存的存储区域的同步式1端口RAM构成,将所述中间结果储存用数组的各元素作为所述第三变量向所述积和运算电路输出;第二存储器,以具备对位宽度r、元素数s的第一数组和第二数组进行储存的存储区域的同步式1端口RAM构成,将所述第一数组的各元素作为所述第一变量向所述积和运算电路输出;被乘数储存用寄存器,从所述第二存储器以元素单位受理并存储所述第二数组,作为所述第二变量向所述积和运算电路输出;进位寄存器,受理并存储所述运算结果数据内的高位r位构成的高位位侧数据,作为所述第四变量向所述积和运算电路输出,该用于蒙哥马利乘法的运算电路构成为能够执行下述处理,即第一读出处理,从所述第二存储器读出以规定的第一循环计数器值表示的所述第二数组的元素并储存到所述被乘数储存用寄存器;第二读出处理、从所述第二存储器读出以规定的第二循环计数器值表示的所述第一数组的元素,从所述第一存储器读出以所述第二循环计数器值表示的所述中间结果储存用数组的元素,读出所述被乘数储存用寄存器的值,读出所述进位寄存器的值,分别输入到所述积和运算电路;以及写入处理,将由所述高位位侧数据写入所述进位寄存器,并且将由所述运算结果数据内的低位r位构成的低位位侧数据,作为以所述第二循环计数器值表示的所述中间结果储存用数组的元素,写入所述第一存储器,在所述第一读出处理执行后,执行第一子循环处理,在该第一子循环处理中,依次反复执行所述第二读出处理、所述积和运算处理、所述写入处理、以及所述第二循环计数器值的更新。
上述特征的本发明的用于蒙哥马利乘法的运算电路的第二特征在于,构成为所述第二存储器还具备:对位宽度r、元素数s的第三数组和位宽度r的被乘法变量进行储存的存储区域,将所述第三数组的各元素作为对应的所述第一数组的各元素向所述积和运算电路输出,将所述被乘法变量作为所述第二数组的各元素向所述被乘数储存用寄存器输出。
上述特征的本发明的用于蒙哥马利乘法的运算电路的第三特征在于,构成为能够执行第二子循环处理,在该第二子循环处理中,依次反复执行将所述第三数组的各元素作为对应的所述第一数组的各元素进行使用的所述第二读出处理、所述积和运算处理、所述写入处理、以及所述第二循环计数器值的更新,至少执行主循环处理,在该主循环处理中,依次反复执行通常的所述第一读出处理、所述第一子循环处理、将所述被乘法变量作为所述第二数组的各元素进行使用的另外的第一读出处理、所述第二子循环处理、以及所述第一循环计数器值的更新。
为了实现上述目的的本发明的RSA密码电路的特征在于,使用上述第一~第三特征的用于蒙哥马利乘法的运算电路,进行RSA密码的加密处理或解密处理的至少任何一方。
根据上述第一特征的用于蒙哥马利乘法的运算电路,因为构成为不使用2端口RAM而仅使用1端口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读卡器进行数据通信的I/O(Input/output,输入/输出)101,控制IC卡100内的各功能的CPU(Central Processing Unit,中央处理器)102,对实现IC卡100的各种功能的程序等进行储存的ROM(Read Only Memory,只读存储器)104、RAM105、闪速存储器等的非易失性存储器106、以及进行利用RSA密码的加密处理等的RSA密码电路103。再有,在本实施方式中,假定是接触型IC卡,但是非接触型IC卡也可。
此外,IC卡100在本实施方式中,在与IC读卡器的数据通信中,在对IC读卡器发送包含个人信息等的安全信息的发送数据的情况下,使用RSA密码电路103对发送数据进行加密。
RSA密码电路103在本实施方式中以ASIC实现,构成为具备本发明电路1和循环计数器电路103a,对包含安全信息的发送数据进行加密处理。循环计数器电路103a在本实施方式中构成为具备:第一计数器电路(未图示),生成图9所示的程序码中使用的计数值内的、控制主循环处理的处理次数的第一循环计数值i;以及第二计数器电路(未图示),生成图9所示的程序码中使用的计数值内的、控制子循环处理的处理次数的第二循环计数值j。
这里,图2表示本实施方式中的RSA密码电路103的处理算法。具体地,RSA密码电路103首先使用明文M、常数R=2N进行蒙哥马利变换(步骤#101),读出加密密钥e=K[k-1:0](#102),将变量i的值初始化为k-1(步骤#103)。之后,本发明电路1进行以A=AAR-1modn表示的2乘法的蒙哥马利乘法(步骤#104),在K[i]=1的情况下(在步骤#105的“是”分支),本发明电路1进行以A=ABR-1modn表示的乘法的蒙哥马利乘法(步骤#106)。在变量i≠0的情况下(在步骤#107的“否”分支),对i减去1(步骤#108),转移到步骤#104。在变量i=0的情况下(在步骤#107的“是”分支),进行以C=AR-1modn表示的蒙哥马利逆变换(步骤#109),结束处理。
本发明电路1以进行以图9的程序码表示的处理的方式构成,如图3所示,构成为具备:积和运算电路10,其进行积和运算处理,在该积和运算处理中,受理位宽度r的第一变量X、第二变量Y、第三变量Z、第四变量C,对第三变量Z、与第一变量X和第二变量Y的求积结果、与第四变量C的和(F=Z+X*Y+C)进行运算,输出位宽度2r的运算结果数据F;第一存储器M1,以具备对位宽度r、元素数s的中间结果储存用数组t进行储存的存储区域的同步式1端口RAM构成,将中间结果储存用数组t的各元素作为第三变量Z向积和运算电路10输出;第二存储器M2,以具备对位宽度r、元素数s的第一数组a[s-1:0]和第二数组b[s-1:0]进行储存的存储区域的同步式1端口RAM构成,将第一数组a[s-1:0]的各元素作为第一变量X向积和运算电路10输出;被乘数储存用寄存器R1,从第二存储器M2以元素单位受理并存储第二数组b[s-1:0],作为第二变量Y向积和运算电路10输出;以及进位寄存器R2,受理并存储由运算结果数据F内的高位r位构成的高位位侧数据FH,作为第四变量C向积和运算电路10输出。
再有,在本实施方式中,假定本发明电路1构成为能够执行包含图9所示的第一子循环处理和第二子循环处理的主循环处理的情况,进行说明,但按子循环处理的每一个构成本发明电路1也可。
更具体地,在本实施方式中,第一存储器M1具备:能够存储元素数为s+2的中间结果储存用数组t[s+1:0]的存储区域。在本实施方式中,构成为在中间结果储存用数组t内,为了第一子循环处理和第二子循环处理而使用t[s-1:0],为了主循环处理的执行而使用t[s]、t[s+1]。
这里,图4表示本实施方式的第一存储器M1和第二存储器M2的概略结构例。此外,图5(a)表示本实施方式的第一存储器M1和第二存储器M2的读出处理中的工作定时,图5(b)表示本实施方式的第一存储器M1和第二存储器M2的写入处理中的工作定时。作为同步式1端口RAM的第一存储器M1,如图5(a)所示,在读出处理中,同步于时钟信号CLK而工作,在芯片启动信号CE#为L电平的情况下,从输出端子DOUT输出由地址信号AD表示的存储区域中存储的数据D。同样地,第一存储器M1,如图5(b)所示,在写入处理中,同步于时钟信号CLK而工作,在芯片启动信号CE#为L电平的情况下,将从数据输入端子DIN输入的数据D写入由地址信号AD表示的存储区域中。
再有,在本实施方式中,为了主循环处理,将中间结果储存用数组t的元素数作为s+2,但在以仅进行子循环处理的方式构成本发明电路的情况等下,将中间结果储存用数组t的元素数作为s也可。此外,也可以构成为能够在第一存储器M1中存储中间结果储存用数组t以外的变量。
在第二存储器M2中,在本实施方式中,在用于存储用于执行第一子循环处理的第一数组a[s-1:0]和第二数组b[s-1:0]的存储区域之外,为了执行图9所示的第二子循环处理,还具备:对位宽度r、元素数s的第三数组n[s-1:0],和位宽度r的被乘法变量m进行储存的存储区域。
第二存储器M2构成为,在第二子循环处理中,将第三数组n[s-1:0]的各元素作为对应的第一数组a[s-1:0]的各元素向积和运算电路10输出,将被乘法变量m作为第二数组b[s-1:0]的各元素向被乘数储存用寄存器R1输出。再有,第二存储器M2与第一存储器M1是相同结构(图4),以相同的工作定时(图5)工作。
本发明电路1构成为能够执行如下处理,即,从第二存储器M2读出以第一循环计数器值i表示的第二数组b[s-1:0]的元素并储存于被乘数储存用寄存器R1的第一读出处理(通常的第一读出处理);从第二存储器M2读出以第二循环计数器值j表示的第一数组a[s-1:0]的元素,从第一存储器M1读出以第二循环计数器值j表示的中间结果储存用数组t的元素,读出被乘数储存用寄存器R1的值RX,读出进位哥存器R2的值RC,分别输入积和运算电路10的第二读出处理;将高位位侧数据FH写入进位寄存器R2,并且将由运算结果数据F内的低位r位构成的低位位侧数据FL作为以第二循环计数器值j表示的中间结果储存用数组t的元素,写入第一存储器M1的写入处理,在第一读出处理执行后,执行第一子循环处理,该第一子循环处理反复执行第二读出处理、积和运算处理、写入处理、以及第二循环计数器值j的更新。
进而,本发明电路1构成为能够执行第二子循环处理,该第二子循环处理反复执行将第三数组n[s-1:0]的各元素作为对应的第一数组a[s-1:0]的各元素进行使用的第二读出处理、积和运算处理、写入处理、以及第二循环计数器值j的更新。
本发明电路1为了图9所示的程序码的执行,构成为至少执行主循环处理,该主循环处理依次反复执行通常的第一读出处理、第一子循环处理、将被乘法变量m作为第二数组b[s-1:0]的各元素进行使用的另外的第一读出处理、第二子循环处理、以及第一循环计数器值i的更新。
这里,图6表示图9所示的程序码内执行次数最多的第一子循环处理的处理算法。图7表示执行第一子循环处理时的构成本发明电路1的各电路的工作定时。再有,在图7中,Mn_CE#(n=1,2)表示第一存储器M1、第二存储器M2各自的芯片启动信号,Mn_WE#表示第一存储器M1、第二存储器M2各自的写入启动信号,Mn_DOUT表示第一存储器M1、第二存储器M2各自的输出信号的值。
本发明电路1在开始第一主循环处理时,首先、第一存储器M1的中间结果储存用数组t内,对t[s-1:0]进行初始化,将进位寄存器R2的值RC初始化为0(步骤#210)。接着,对第二计数器电路进行初始化并将第二计数器值j的值设定为0(步骤#220)。接着,本发明电路1从第二存储器M2读出b[i]并储存于被乘数存储用寄存器R1(步骤#230,第一读出处理)。
接着,本发明电路1从第一存储器M1读出t[j](步骤#241),从第二存储器M2读出a[j](步骤#242),读出被乘数储存用寄存器R1的值RX(=b[i])(步骤#243),读出进位寄存器R2的值RC(步骤#244),分别输入积和运算电路10(步骤#240,第二读出处理)。再有,步骤#241~步骤#244在这里并行执行。
在步骤#240的第二读出处理的执行之后,本发明电路1的积和运算电路10使用在步骤#240输入的各值,对t[j]+a[j]*b[j]+RC进行计算,将其结果作为2r位的结果数据F进行输出(步骤#250,积和运算处理)。进而,本发明电路1对进位寄存器R2写入上次的高位位侧数据FH(i=0,j=0的情况下是初始值0)(步骤#261),与此并行地,将低位位侧数据FL(i=0,j=0的情况下是初始值0)作为t[j]写入第一存储器M1(步骤#262),由此,执行写入处理(步骤#260)。再有,步骤#250的积和运算处理和步骤#260的写入处理并行执行。
接着,本发明电路1在第二循环计数器值j的值不是s-1的情况下(在步骤#270为“否”分支),将第二循环计数器值j的值增加1(步骤#280),转移到步骤#240。本发明电路1在第二循环计数器值j的值是s-1的情况下(在步骤#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卡100搭载RSA密码电路103,使用本发明电路1进行加密处理的情况进行了说明,但也可以构成为例如在IC读卡器等搭载的RSA密码电路103等中,使用本发明电路1进行解密处理。
(2)在上述实施方式中,针对在RSA密码电路103中使用本发明电路1的情况进行了说明,但在利用蒙哥马利乘法的其它密码电路或运算电路中使用也可。
Claims (4)
1.一种用于蒙哥马利乘法的运算电路,其中,构成为具备:
积和运算电路,进行积和运算处理,在该积和运算处理中,受理位宽度r的第一变量、第二变量、第三变量、第四变量,对所述第三变量、所述第一变量和所述第二变量的求积结果、以及所述第四变量的和进行运算,输出位宽度2r的运算结果数据;
第一存储器,以具备对位宽度r、元素数s的中间结果储存用数组进行储存的存储区域的同步式1端口RAM构成,将所述中间结果储存用数组的各元素作为所述第三变量向所述积和运算电路输出;
第二存储器,以具备对位宽度r、元素数s的第一数组和第二数组进行储存的存储区域的同步式1端口RAM构成,将所述第一数组的各元素作为所述第一变量向所述积和运算电路输出;
被乘数储存用寄存器,从所述第二存储器以元素单位受理并存储所述第二数组,作为所述第二变量向所述积和运算电路输出;
进位寄存器,受理并存储由所述运算结果数据内的高位r位构成的高位位侧数据,作为所述第四变量向所述积和运算电路输出,
该用于蒙哥马利乘法的运算电路构成为能够执行下述处理,即:
第一读出处理,从所述第二存储器读出以规定的第一循环计数器值表示的所述第二数组的元素并储存到所述被乘数储存用寄存器;
第二读出处理,从所述第二存储器读出以规定的第二循环计数器值表示的所述第一数组的元素,从所述第一存储器读出以所述第二循环计数器值表示的所述中间结果储存用数组的元素,读出所述被乘数储存用寄存器的值,读出所述进位寄存器的值,分别输入到所述积和运算电路;以及
写入处理,将所述高位位侧数据写入所述进位寄存器,并且将由所述运算结果数据内的低位r位构成的低位位侧数据,作为以所述第二循环计数器值表示的所述中间结果储存用数组的元素,写入所述第一存储器,
在所述第一读出处理执行后,执行第一子循环处理,在该第一子循环处理中,反复执行所述第二读出处理、所述积和运算处理、所述写入处理、以及所述第二循环计数器值的更新。
2.根据权利要求1所述的运算电路,其中,
构成为所述第二存储器还具备:对位宽度r、元素数s的第三数组和位宽度r的被乘法变量进行储存的存储区域,将所述第三数组的各元素作为对应的所述第一数组的各元素向所述积和运算电路输出,将所述被乘法变量作为所述第二数组的各元素向所述被乘数储存用寄存器输出。
3.根据权利要求2所述的运算电路,其中,
构成为能够执行第二子循环处理,在该第二子循环处理中,反复执行将所述第三数组的各元素作为对应的所述第一数组的各元素进行使用的所述第二读出处理、所述积和运算处理、所述写入处理、以及所述第二循环计数器值的更新,
至少执行主循环处理,在该主循环处理中,依次反复执行通常的所述第一读出处理、所述第一子循环处理、将所述被乘法变量作为所述第二数组的各元素进行使用的另外的第一读出处理、所述第二子循环处理、以及所述第一循环计数器值的更新。
4.一种RSA密码电路,其中,
包含权利要求1~3的任何一项所述的用于蒙哥马利乘法的运算电路,使用所述运算电路进行RSA密码的加密处理或解密处理的至少任何一方。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009006262A JP5097138B2 (ja) | 2009-01-15 | 2009-01-15 | モンゴメリ乗算のための演算回路及び暗号回路 |
JP2009-006262 | 2009-01-15 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101782846A CN101782846A (zh) | 2010-07-21 |
CN101782846B true CN101782846B (zh) | 2012-08-08 |
Family
ID=42336964
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010100029957A Expired - Fee Related CN101782846B (zh) | 2009-01-15 | 2010-01-15 | 用于蒙哥马利乘法的运算电路及密码电路 |
Country Status (3)
Country | Link |
---|---|
US (1) | US8291223B2 (zh) |
JP (1) | JP5097138B2 (zh) |
CN (1) | CN101782846B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102012005427A1 (de) * | 2012-03-16 | 2013-09-19 | Giesecke & Devrient Gmbh | Verfahren und System zur gesicherten Kommunikation zwischen einen RFID-Tag und einem Lesegerät |
KR101925868B1 (ko) | 2012-05-17 | 2018-12-06 | 삼성전자주식회사 | 모듈러 계산 유닛 및 그것을 포함하는 보안 시스템 |
CN103067184B (zh) * | 2012-11-26 | 2016-07-06 | 大唐移动通信设备有限公司 | 离线计费的异常处理方法及系统 |
CN103207770B (zh) | 2013-04-16 | 2016-09-28 | 飞天诚信科技股份有限公司 | 一种在嵌入式系统中实现大数预计算的方法 |
EP3087470B1 (en) | 2013-12-28 | 2020-03-25 | Intel Corporation | Rsa algorithm acceleration processors, methods, systems, and instructions |
CN107404380B (zh) * | 2017-06-30 | 2020-09-11 | 吴尽昭 | 一种基于异步数据通路的rsa算法 |
CN107196764A (zh) * | 2017-07-19 | 2017-09-22 | 龙迅半导体(合肥)股份有限公司 | 一种rsa加解密处理方法和装置 |
CN112287408B (zh) * | 2020-12-28 | 2021-03-30 | 九州华兴集成电路设计(北京)有限公司 | Rsa单核数据系统 |
CN115030357B (zh) * | 2022-07-23 | 2023-11-21 | 莱芜凤凰建工集团有限公司 | 一种房屋建筑墙体结构及施工方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1366234A (zh) * | 2000-12-19 | 2002-08-28 | 国际商业机器公司 | 运算电路和运算方法 |
CN1648853A (zh) * | 2004-01-26 | 2005-08-03 | 富士通株式会社 | 多字乘法-累加电路和蒙哥马利模乘法-累加电路 |
US6963644B1 (en) * | 1999-04-07 | 2005-11-08 | Matsushita Electric Industrial Co., Ltd. | Multi-word arithmetic device for faster computation of cryptosystem calculations |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3525209B2 (ja) * | 1996-04-05 | 2004-05-10 | 株式会社 沖マイクロデザイン | べき乗剰余演算回路及びべき乗剰余演算システム及びべき乗剰余演算のための演算方法 |
JPH11143688A (ja) * | 1997-11-06 | 1999-05-28 | Fujitsu Ltd | 演算装置並びにこれを利用したrsa暗号演算装置及び楕円暗号演算装置 |
US6026421A (en) * | 1997-11-26 | 2000-02-15 | Atmel Corporation | Apparatus for multiprecision integer arithmetic |
KR100304693B1 (ko) * | 1998-07-22 | 2001-09-29 | 윤종용 | 모듈러연산장치및모듈러연산기능을갖는ic카드 |
JP3934290B2 (ja) * | 1999-09-30 | 2007-06-20 | 株式会社東芝 | 離散コサイン変換処理装置、逆離散コサイン変換処理装置及び離散コサイン変換処理装置・逆離散コサイン変換処理装置 |
JP2002007112A (ja) * | 2000-06-20 | 2002-01-11 | Sony Corp | 剰余演算計算方法および剰余演算計算装置 |
FR2822260A1 (fr) * | 2001-03-14 | 2002-09-20 | Bull Sa | Procedes et dispositifs pour accelerer le temps de calcul d'un produit de montgomery d'un multiplication et d'une exponentiation modulaire |
IL143951A0 (en) * | 2001-06-21 | 2003-09-17 | Discretix Technologies Ltd | A method and apparatus for carrying out efficiently arithmetic computations in hardware |
US8028015B2 (en) * | 2007-08-10 | 2011-09-27 | Inside Contactless S.A. | Method and system for large number multiplication |
-
2009
- 2009-01-15 JP JP2009006262A patent/JP5097138B2/ja not_active Expired - Fee Related
-
2010
- 2010-01-12 US US12/686,185 patent/US8291223B2/en active Active
- 2010-01-15 CN CN2010100029957A patent/CN101782846B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6963644B1 (en) * | 1999-04-07 | 2005-11-08 | Matsushita Electric Industrial Co., Ltd. | Multi-word arithmetic device for faster computation of cryptosystem calculations |
CN1366234A (zh) * | 2000-12-19 | 2002-08-28 | 国际商业机器公司 | 运算电路和运算方法 |
CN1648853A (zh) * | 2004-01-26 | 2005-08-03 | 富士通株式会社 | 多字乘法-累加电路和蒙哥马利模乘法-累加电路 |
Also Published As
Publication number | Publication date |
---|---|
JP5097138B2 (ja) | 2012-12-12 |
US8291223B2 (en) | 2012-10-16 |
US20100183145A1 (en) | 2010-07-22 |
CN101782846A (zh) | 2010-07-21 |
JP2010164721A (ja) | 2010-07-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101782846B (zh) | 用于蒙哥马利乘法的运算电路及密码电路 | |
KR100373669B1 (ko) | 비밀 정보의 처리 장치, 비밀 정보의 처리 프로그램을 기록한 기록 매체 및 처리 시스템 | |
CN100583739C (zh) | 加密装置、加密方法及其存储介质 | |
KR100693239B1 (ko) | 정보 처리 장치, ic 카드 | |
JP4188571B2 (ja) | 情報処理装置の演算方法および耐タンパ演算攪乱実装方式 | |
KR100720726B1 (ko) | Rsa 알고리즘을 이용한 보안유지시스템 및 그 방법 | |
CN100356342C (zh) | 信息处理装置 | |
JP4317607B2 (ja) | 情報処理装置、耐タンパ処理装置 | |
JP4199937B2 (ja) | 耐タンパー暗号処理方法 | |
CN104488219A (zh) | 用于在射频识别标签和读取设备之间进行安全通信的方法和系统 | |
JP2008252299A (ja) | 暗号処理システム及び暗号処理方法 | |
CN101009554A (zh) | 一种抗功耗攻击的字节替换电路 | |
CN103903047A (zh) | 一种适用于rfid安全通信的椭圆曲线加密协处理器 | |
CN104348625A (zh) | 加解密装置及其加解密方法 | |
US20020124179A1 (en) | Fault detection method | |
US20160248585A1 (en) | Cryptographic apparatus and method | |
JP4690819B2 (ja) | 楕円曲線暗号におけるスカラー倍計算方法およびスカラー倍計算装置 | |
CN201039199Y (zh) | 一种抗功耗攻击的字节替换电路 | |
KR100564599B1 (ko) | 역원 계산 회로, 역원계산 방법 및 상기 역원계산 방법을실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수있는 기록매체 | |
CN100541419C (zh) | Aes混合列变换 | |
CN112134696A (zh) | 一种电能表动态密码生成、通讯方法及其通讯系统 | |
JP5179933B2 (ja) | データ処理装置 | |
AU2021106274A4 (en) | A protocol for assuring data integrity in cloud setting by using a fully homomorphic batch encryption scheme with integer and shorter public key (hbeis) | |
Lemieux et al. | Clone resistant mutual authentication for low-cost RFID technology | |
JP2010271363A (ja) | モンゴメリ乗算回路、rsa暗号回路、及び、icカード |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20120808 Termination date: 20160115 |
|
EXPY | Termination of patent right or utility model |