專利名稱:用于蒙哥馬利乘法的運(yùn)算電路及密碼電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及用于蒙哥馬利乘法的運(yùn)算電路,以及利用用于蒙哥馬利乘法的運(yùn)算電
路進(jìn)行加密處理及解密處理的密碼電路。
背景技術(shù):
在利用因特網(wǎng)等的網(wǎng)絡(luò)進(jìn)行契約或結(jié)算的電子商務(wù)交易中,例如有在網(wǎng)絡(luò)上銷售商品的電子商店進(jìn)行的商務(wù)交易(企業(yè)和消費(fèi)者間的商務(wù)交易),消費(fèi)者能夠?yàn)g覽電子商店的網(wǎng)站,選擇商品,指定結(jié)算方法進(jìn)行購(gòu)買。 在這樣的電子商務(wù)交易中,防止冒充或竊聽、篡改等的安全的確保成為課題,例如,作為用于防止冒充的認(rèn)證技術(shù)的一種,利用公鑰密碼。這里,公鑰密碼是使用用于加密的加密密鑰和用于解密的解密密鑰的相異的2個(gè)密鑰的技術(shù),根據(jù)加密密鑰來(lái)推測(cè)解密密鑰、以及解讀密文極端困難,或不可能。密鑰的所有者通過(guò)以公開加密密鑰(公鑰),且不被第三者得知解密密鑰(私鑰)的方式進(jìn)行管理,從而能夠使利用公鑰的對(duì)方側(cè)的信息不被第三者得知。 例如,在上述的電子商店和消費(fèi)者之間的商務(wù)交易中,電子商店以向普通人公開加密密鑰(公鑰),不讓第三者得知解密密鑰(私鑰)的方式進(jìn)行管理。消費(fèi)者利用電子商店一側(cè)公開的加密密鑰(公鑰),對(duì)與商務(wù)交易相關(guān)的信息進(jìn)行加密并向電子商店發(fā)送。電子商店對(duì)從消費(fèi)者接收的密文以解密密鑰(私鑰)進(jìn)行解密,對(duì)消費(fèi)者進(jìn)行商品的銷售。作為密鑰的所有者的電子商店通過(guò)以使解密密鑰(私鑰)不被第三者得知的方式進(jìn)行管理,能夠防止與商務(wù)交易相關(guān)的信息被第三者得知,能夠防止消費(fèi)者的個(gè)人信息等被第三者得知。 作為公鑰密碼,例如有RSA(Rivest Shamir Adieman)密碼。在RSA密碼中,為了進(jìn)行解讀,需要非常大的整數(shù)的素因數(shù)分解,即使是利用計(jì)算機(jī)的解讀,以現(xiàn)實(shí)的計(jì)算時(shí)間進(jìn)行的解讀也是困難的。 以下,針對(duì)RSA密碼的加密方法和解密方法簡(jiǎn)單地進(jìn)行說(shuō)明。 在使用公鑰(e,n)對(duì)明文M進(jìn)行加密,生成密文C的情況下,密文C通過(guò)以下的數(shù)
式1生成。 C = Memodn (其中,0《M〈n) (1) 在使用私鑰(d,n)對(duì)密文C進(jìn)行解密,生成明文M的情況下,明文M通過(guò)以下的數(shù)式2生成。M = Cdmodn (2) 再有,公鑰(e,n)、私鑰(d, n)中存在以下數(shù)式3的關(guān)系。 n = pXq(p、q是素?cái)?shù)) eXd三lmod(p-l) (q-l) (3) 具體地,例如當(dāng)假設(shè)p = 3、q = 11、e = 3、d = 7時(shí),對(duì)明文M = 7進(jìn)行加密得到的密文C,通過(guò)數(shù)式1成為C = 73mod(3Xll) = 343mod33 = 13。 此外,對(duì)密文C二 13進(jìn)行解密而得到的明文M通過(guò)數(shù)式2,成為M = 137mod33 =62748517mod33 = 7。因此,可知正確地進(jìn)行了利用數(shù)式1和數(shù)式2的加密和解密。
可是,在上述的RSA密碼中,以數(shù)式l和數(shù)式2所示方式進(jìn)行冪乘運(yùn)算、剩余運(yùn)算。通常,密鑰或明文是1024位(bit)以上的非常大的位數(shù),因此當(dāng)在運(yùn)算裝置上直接使用數(shù)式1和數(shù)式2進(jìn)行加密和解密時(shí),有發(fā)生溢出的可能性。 因此,在RSA密碼的加密和解密中,例如使用作為不溢出的剩余運(yùn)算的方法的一個(gè)例子的蒙哥馬利乘法。在蒙哥馬利乘法中,能夠在N位的存儲(chǔ)器空間進(jìn)行N位的剩余運(yùn)算。 以下,針對(duì)蒙哥馬利乘法簡(jiǎn)單地進(jìn)行說(shuō)明。RSA密碼的數(shù)式IC = Memodn的右邊以M2modn = MXMmodn、 M3mod n =MXM2modn、 Memodn = MXMe—"rnodn的方式,以逐次計(jì)算進(jìn)行求取。即,能夠通過(guò)反復(fù)進(jìn)行y = a X Pmodn來(lái)計(jì)算。 這里,在蒙哥馬利乘法中,由于是計(jì)算機(jī)上的乘法,所以使用常數(shù)R = 2N。當(dāng)對(duì)y=a X Pmodn的兩邊乘R來(lái)求取modn時(shí),成為y Rmodn = a RX P RX R—丄modn。在這里,當(dāng)假設(shè)Z二 YRmodn、A= aRmodn、B= P Rmodn時(shí),蒙哥馬利乘法的運(yùn)算式以下面的數(shù)式4表示。 Z = AXBXR—丄modn (4) 這里,圖9表示在運(yùn)算裝置上對(duì)數(shù)式4所示的蒙哥馬利乘法進(jìn)行運(yùn)算的情況下的程序碼(偽碼)的一個(gè)例子。 再有,在RSA密碼中,例如,由于明文M的位數(shù)非常大(例如1024位等),所以在RSA密碼的加密處理等中使用的蒙哥馬利乘法的各變量A、B、n的位數(shù)也大。因此,為了在運(yùn)算裝置上進(jìn)行蒙哥馬利乘法,需要將變量A、B、n以運(yùn)算裝置能夠計(jì)算的位寬度r進(jìn)行分割。具體地,在變量A、B、n是相同位寬度的情況下,當(dāng)將分割數(shù)假定為s時(shí),成為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)表示儲(chǔ)存計(jì)算結(jié)果的變量,變量C表示(C,S)的高位r位,變量S表示(C,S)的低位r位。t[s+l],t[s],…,t
,m分別是位寬度r的臨時(shí)變量。
從圖9可知,(C, S) := t[j]+a[j]*b[i]+C的運(yùn)算式在主循環(huán)(main loop)的子循環(huán)(sub loop)內(nèi),運(yùn)算次數(shù)((s-l) X (s-l))變得最多。因此,為了 RSA密碼的加密和解密的高速化,要求高速地進(jìn)行蒙哥馬利乘法中的(C, S) := t[j]+a[j]樸[i]+C的運(yùn)算。再有,圖9中的*表示求積(X)。 這里,作為高速地進(jìn)行蒙哥馬利乘法的運(yùn)算裝置,例如提出有以下的運(yùn)算電路(例如,參照日本專利申請(qǐng)?zhí)亻_2002-207589號(hào)公報(bào)),其具備對(duì)位寬度r的變量Xl、 x2、X3、X4分別進(jìn)行儲(chǔ)存的第一至第四寄存器;以2端口 (port) RAM (Random Access Memory,隨機(jī)存儲(chǔ)器)構(gòu)成的存儲(chǔ)器A ;以2端口 RAM或1端口 RAM構(gòu)成的存儲(chǔ)器B ;以及能夠執(zhí)行流水線(pipeline)處理的運(yùn)算器,其中,該流水線處理從第一至第四寄存器受理變量Xl、 x2、X3、^,計(jì)算變量A、與變量x2和變量x3的求積結(jié)果、與變量x4的和,輸出位寬度2r或2r+l的運(yùn)算結(jié)果Q,在流水線處理執(zhí)行后,執(zhí)行下述處理,即將由運(yùn)算結(jié)果Q的低位r位構(gòu)成的數(shù)據(jù)寫入存儲(chǔ)器A、將由運(yùn)算結(jié)果Q的高位r位構(gòu)成的數(shù)據(jù)QH寫入第四寄存器的存儲(chǔ)器寫入處理;和從存儲(chǔ)器A讀出變量Xl并輸出到第一寄存器,從存儲(chǔ)器B讀出變量x3并輸出到第三寄存器的存儲(chǔ)器讀出處理。 這里,圖10表示上述日本專利申請(qǐng)?zhí)亻_2002-207589號(hào)公報(bào)中記述的運(yùn)算電路的概略結(jié)構(gòu)例。此外,圖11(a)表示串行地進(jìn)行存儲(chǔ)器讀出處理(存儲(chǔ)器讀周期)和存儲(chǔ)器寫入處理(存儲(chǔ)器寫周期)的情況下的處理的流程,圖11(b)表示在上述日本專利申請(qǐng)?zhí)亻_2002-207589號(hào)公報(bào)中,存儲(chǔ)器B以2端口 RAM構(gòu)成,以流水線進(jìn)行存儲(chǔ)器讀出處理和存儲(chǔ)器寫入處理的情況下的處理的流程。 由圖11可知,在日本專利申請(qǐng)?zhí)亻_2002-207589號(hào)公報(bào)中記述的運(yùn)算電路中,因?yàn)槟軌蛞粤魉€進(jìn)行存儲(chǔ)器讀出處理和存儲(chǔ)器寫入處理,所以與串行地進(jìn)行存儲(chǔ)器讀出處理和存儲(chǔ)器寫入處理的情況相比,能夠高速化。 可是,通常在以運(yùn)算電路進(jìn)行蒙哥馬利乘法的情況下,例如在以ASIC (Application Specific Integrated Circuit,專用集成電路)實(shí)現(xiàn)運(yùn)算電路的情況下,2端口 RAM不被標(biāo)準(zhǔn)的ASIC庫(kù)支持的情況較多。此外,即使在2端口 RAM被支持的情況下,也存在僅支持根據(jù)2讀2寫方式的面積大的2端口 RAM的情況。從電路設(shè)計(jì)的標(biāo)準(zhǔn)化和IP (intellectual property,知識(shí)產(chǎn)權(quán))化的觀點(diǎn)出發(fā),不優(yōu)選使用確實(shí)不被支持的情況較多的2端口 RAM。
發(fā)明內(nèi)容
本發(fā)明正是鑒于上述問(wèn)題而完成的,其目的在于提供一種用于蒙哥馬利乘法的運(yùn)算電路,該電路能夠僅使用l端口 RAM進(jìn)行蒙哥馬利乘法。此外,提供一種RSA密碼電路,能夠僅使用1端口 RAM進(jìn)行蒙哥馬利乘法。 為了實(shí)現(xiàn)上述目的的本發(fā)明的用于蒙哥馬利乘法的運(yùn)算電路的第一特征在于,構(gòu)成為具備積和運(yùn)算電路,進(jìn)行積和運(yùn)算處理,在該積和運(yùn)算處理中,受理位寬度r的第一變量、第二變量、第三變量、第四變量,對(duì)所述第三變量、所述第一變量與所述第二變量的求積結(jié)果、以及所述第四變量的和進(jìn)行運(yùn)算,輸出位寬度2r的運(yùn)算結(jié)果數(shù)據(jù);第一存儲(chǔ)器,以具備對(duì)位寬度r、元素?cái)?shù)s的中間結(jié)果儲(chǔ)存用數(shù)組進(jìn)行儲(chǔ)存的存儲(chǔ)區(qū)域的同步式l端口 RAM構(gòu)成,將所述中間結(jié)果儲(chǔ)存用數(shù)組的各元素作為所述第三變量向所述積和運(yùn)算電路輸出;第二存儲(chǔ)器,以具備對(duì)位寬度r、元素?cái)?shù)s的第一數(shù)組和第二數(shù)組進(jìn)行儲(chǔ)存的存儲(chǔ)區(qū)域的同步式1端口 RAM構(gòu)成,將所述第一數(shù)組的各元素作為所述第一變量向所述積和運(yùn)算電路輸出;被乘數(shù)儲(chǔ)存用寄存器,從所述第二存儲(chǔ)器以元素單位受理并存儲(chǔ)所述第二數(shù)組,作為所述第二變量向所述積和運(yùn)算電路輸出;進(jìn)位寄存器,受理并存儲(chǔ)所述運(yùn)算結(jié)果數(shù)據(jù)內(nèi)的高位r位構(gòu)成的高位位側(cè)數(shù)據(jù),作為所述第四變量向所述積和運(yùn)算電路輸出,該用于蒙哥馬利乘法的運(yùn)算電路構(gòu)成為能夠執(zhí)行下述處理,即第一讀出處理,從所述第二存儲(chǔ)器讀出以規(guī)定的第一循環(huán)計(jì)數(shù)器值表示的所述第二數(shù)組的元素并儲(chǔ)存到所述被乘數(shù)儲(chǔ)存用寄存器;第二讀出處理、從所述第二存儲(chǔ)器讀出以規(guī)定的第二循環(huán)計(jì)數(shù)器值表示的所述第一數(shù)組的元素,從所述第一存儲(chǔ)器讀出以所述第二循環(huán)計(jì)數(shù)器值表示的所述中間結(jié)果儲(chǔ)存用數(shù)組的元素,讀出所述被乘數(shù)儲(chǔ)存用寄存器的值,讀出所述進(jìn)位寄存器的值,分別輸入到所述積和運(yùn)算電路;以及寫入處理,將由所述高位位側(cè)數(shù)據(jù)寫入所述進(jìn)位寄存器,并且將由所述運(yùn)算結(jié)果數(shù)據(jù)內(nèi)的低位r位構(gòu)成的低位位側(cè)數(shù)據(jù),作為以所述第二循環(huán)計(jì)數(shù)器值表示的所述中間結(jié)果儲(chǔ)存用數(shù)組的元素,寫入所述第一存儲(chǔ)器,在所述第一讀出處理執(zhí)行后,執(zhí)行第一子循環(huán)處理,在該第一子循環(huán)處理中,依次反復(fù)執(zhí)行所述第二讀出處理、所述積和運(yùn)算處理、所述寫入處理、以及所述第二循環(huán)計(jì)數(shù)器值的更新。 上述特征的本發(fā)明的用于蒙哥馬利乘法的運(yùn)算電路的第二特征在于,構(gòu)成為所述
第二存儲(chǔ)器還具備對(duì)位寬度r、元素?cái)?shù)s的第三數(shù)組和位寬度r的被乘法變量進(jìn)行儲(chǔ)存的
存儲(chǔ)區(qū)域,將所述第三數(shù)組的各元素作為對(duì)應(yīng)的所述第一數(shù)組的各元素向所述積和運(yùn)算電
路輸出,將所述被乘法變量作為所述第二數(shù)組的各元素向所述被乘數(shù)儲(chǔ)存用寄存器輸出。 上述特征的本發(fā)明的用于蒙哥馬利乘法的運(yùn)算電路的第三特征在于,構(gòu)成為能夠
執(zhí)行第二子循環(huán)處理,在該第二子循環(huán)處理中,依次反復(fù)執(zhí)行將所述第三數(shù)組的各元素作
為對(duì)應(yīng)的所述第一數(shù)組的各元素進(jìn)行使用的所述第二讀出處理、所述積和運(yùn)算處理、所述
寫入處理、以及所述第二循環(huán)計(jì)數(shù)器值的更新,至少執(zhí)行主循環(huán)處理,在該主循環(huán)處理中,
依次反復(fù)執(zhí)行通常的所述第一讀出處理、所述第一子循環(huán)處理、將所述被乘法變量作為所
述第二數(shù)組的各元素進(jìn)行使用的另外的第一讀出處理、所述第二子循環(huán)處理、以及所述第
一循環(huán)計(jì)數(shù)器值的更新。 為了實(shí)現(xiàn)上述目的的本發(fā)明的RSA密碼電路的特征在于,使用上述第一 第三特征的用于蒙哥馬利乘法的運(yùn)算電路,進(jìn)行RSA密碼的加密處理或解密處理的至少任何一方。 根據(jù)上述第一特征的用于蒙哥馬利乘法的運(yùn)算電路,因?yàn)闃?gòu)成為不使用2端口RAM而僅使用l端口 RAM,所以例如在以ASIC構(gòu)成進(jìn)行加密和解密的密碼電路的情況等下,能夠?qū)崿F(xiàn)不依賴于ASIC庫(kù)的通用性高的電路。由此,上述第一特征的用于蒙哥馬利乘法的運(yùn)算電路更加對(duì)于用于蒙哥馬利乘法的運(yùn)算電路的標(biāo)準(zhǔn)化和IP化是有用的。
此外,根據(jù)上述特征的用于蒙哥馬利乘法的運(yùn)算電路,因?yàn)闃?gòu)成為在寫入處理中,在從積和運(yùn)算電路輸出的運(yùn)算結(jié)果數(shù)據(jù)內(nèi),將高位位側(cè)數(shù)據(jù)寫入所述進(jìn)位寄存器,將低位位側(cè)數(shù)據(jù)寫入所述第一存儲(chǔ)器,所以如果以并行執(zhí)行積和運(yùn)算處理和寫入處理的方式進(jìn)行控制的話,能夠在電路整體使運(yùn)算速度高速。
圖1是表示搭載有使用本發(fā)明的用于蒙哥馬利乘法的運(yùn)算電路而構(gòu)成的RSA密碼
電路的IC卡的概略局部結(jié)構(gòu)例的概略局部框圖。 圖2是表示本發(fā)明RSA密碼電路的處理算法的流程圖。 圖3是表示本發(fā)明的用于蒙哥馬利乘法的運(yùn)算電路的概略結(jié)構(gòu)例的概略框圖。
圖4是表示同步式1端口 RAM的概略結(jié)構(gòu)例的概略框圖。
圖5是用于說(shuō)明同步式1端口 RAM的工作的時(shí)序圖。 圖6是表示本發(fā)明的用于蒙哥馬利乘法的運(yùn)算電路的處理算法內(nèi)的、第一子循環(huán)處理的處理算法的流程圖。 圖7是為了說(shuō)明本發(fā)明的用于蒙哥馬利乘法的運(yùn)算電路的處理算法內(nèi)的、第一子循環(huán)處理的工作的時(shí)序圖。 圖8是示意地表示本發(fā)明的用于蒙哥馬利乘法的運(yùn)算電路的處理算法內(nèi)的、第一子循環(huán)處理的流程的示意圖。 圖9是表示用于說(shuō)明以運(yùn)算裝置進(jìn)行蒙哥馬利運(yùn)算的情況下的運(yùn)算裝置的工作 的程序碼的圖。 圖10是表示現(xiàn)有技術(shù)的運(yùn)算電路的概略結(jié)構(gòu)例的概略框圖。 圖11是示意地表示在現(xiàn)有技術(shù)的運(yùn)算電路中,串行地進(jìn)行存儲(chǔ)器讀出處理和存 儲(chǔ)器寫入處理的情況和以流水線進(jìn)行的情況的處理的流程的示意圖。
具體實(shí)施例方式
以下,基于附圖對(duì)本發(fā)明的用于蒙哥馬利乘法的運(yùn)算電路(以下,適宜地略稱為 "本發(fā)明電路")、以及RSA密碼電路的實(shí)施方式進(jìn)行說(shuō)明。 基于圖1 圖8對(duì)本發(fā)明電路和使用了本發(fā)明電路的RSA密碼電路的一個(gè)實(shí)施方 式進(jìn)行說(shuō)明。 這里,圖1表示搭載有使用本發(fā)明電路1構(gòu)成的RSA密碼電路103的IC卡100的 概略局部結(jié)構(gòu)例,圖3表示本發(fā)明電路1的概略結(jié)構(gòu)例。 IC卡100在本實(shí)施方式中是接觸型IC卡,如圖1所示,構(gòu)成為具備用于與IC讀 卡器進(jìn)行數(shù)據(jù)通信的1/0(I即ut/output,輸入/輸出)IOI,控制IC卡100內(nèi)的各功能的 CPU (Central Processing Unit,中央處理器)102,對(duì)實(shí)現(xiàn)IC卡100的各種功能的程序等進(jìn) 行儲(chǔ)存的ROM(Read Only Memory,只讀存儲(chǔ)器)104、RAM105、閃速存儲(chǔ)器等的非易失性存儲(chǔ) 器106、以及進(jìn)行利用RSA密碼的加密處理等的RSA密碼電路103。再有,在本實(shí)施方式中, 假定是接觸型IC卡,但是非接觸型IC卡也可。 此外,IC卡IOO在本實(shí)施方式中,在與IC讀卡器的數(shù)據(jù)通信中,在對(duì)IC讀卡器發(fā) 送包含個(gè)人信息等的安全信息的發(fā)送數(shù)據(jù)的情況下,使用RSA密碼電路103對(duì)發(fā)送數(shù)據(jù)進(jìn) 行加密。 RSA密碼電路103在本實(shí)施方式中以ASIC實(shí)現(xiàn),構(gòu)成為具備本發(fā)明電路1和循環(huán) 計(jì)數(shù)器電路103a,對(duì)包含安全信息的發(fā)送數(shù)據(jù)進(jìn)行加密處理。循環(huán)計(jì)數(shù)器電路103a在本實(shí) 施方式中構(gòu)成為具備第一計(jì)數(shù)器電路(未圖示),生成圖9所示的程序碼中使用的計(jì)數(shù)值 內(nèi)的、控制主循環(huán)處理的處理次數(shù)的第一循環(huán)計(jì)數(shù)值i ;以及第二計(jì)數(shù)器電路(未圖示),生 成圖9所示的程序碼中使用的計(jì)數(shù)值內(nèi)的、控制子循環(huán)處理的處理次數(shù)的第二循環(huán)計(jì)數(shù)值
jo 這里,圖2表示本實(shí)施方式中的RSA密碼電路103的處理算法。具體地,RSA密碼 電路103首先使用明文M、常數(shù)R = 2N進(jìn)行蒙哥馬利變換(步驟#101),讀出加密密鑰e = K[k-l:0] (#102),將變量i的值初始化為k-l (步驟#103)。之后,本發(fā)明電路1進(jìn)行以A =AAR—^odn表示的2乘法的蒙哥馬利乘法(步驟#104),在K[i] = 1的情況下(在步驟 #105的"是"分支),本發(fā)明電路1進(jìn)行以A = ABR—^odn表示的乘法的蒙哥馬利乘法(步驟 #106)。在變量i # 0的情況下(在步驟#107的"否"分支),對(duì)i減去1 (步驟#108),轉(zhuǎn) 移到步驟#104。在變量i = 0的情況下(在步驟#107的"是"分支),進(jìn)行以C = AR—^odn 表示的蒙哥馬利逆變換(步驟#109),結(jié)束處理。 本發(fā)明電路1以進(jìn)行以圖9的程序碼表示的處理的方式構(gòu)成,如圖3所示,構(gòu)成為 具備積和運(yùn)算電路lO,其進(jìn)行積和運(yùn)算處理,在該積和運(yùn)算處理中,受理位寬度r的第一變量X、第二變量Y、第三變量Z、第四變量C,對(duì)第三變量Z、與第一變量X和第二變量Y的 求積結(jié)果、與第四變量C的和(F = Z+X*Y+C)進(jìn)行運(yùn)算,輸出位寬度2r的運(yùn)算結(jié)果數(shù)據(jù)F ; 第一存儲(chǔ)器Ml,以具備對(duì)位寬度r、元素?cái)?shù)s的中間結(jié)果儲(chǔ)存用數(shù)組t進(jìn)行儲(chǔ)存的存儲(chǔ)區(qū)域 的同步式1端口 RAM構(gòu)成,將中間結(jié)果儲(chǔ)存用數(shù)組t的各元素作為第三變量Z向積和運(yùn)算 電路10輸出;第二存儲(chǔ)器M2,以具備對(duì)位寬度r、元素?cái)?shù)s的第一數(shù)組a[s-l :0]和第二數(shù) 組b[s-l:0]進(jìn)行儲(chǔ)存的存儲(chǔ)區(qū)域的同步式l端口 RAM構(gòu)成,將第一數(shù)組a[s-l:O]的各元 素作為第一變量X向積和運(yùn)算電路10輸出;被乘數(shù)儲(chǔ)存用寄存器R1,從第二存儲(chǔ)器M2以 元素單位受理并存儲(chǔ)第二數(shù)組b [s-l: 0],作為第二變量Y向積和運(yùn)算電路10輸出;以及進(jìn) 位寄存器R2,受理并存儲(chǔ)由運(yùn)算結(jié)果數(shù)據(jù)F內(nèi)的高位r位構(gòu)成的高位位側(cè)數(shù)據(jù)FH,作為第 四變量C向積和運(yùn)算電路10輸出。 再有,在本實(shí)施方式中,假定本發(fā)明電路1構(gòu)成為能夠執(zhí)行包含圖9所示的第一子 循環(huán)處理和第二子循環(huán)處理的主循環(huán)處理的情況,進(jìn)行說(shuō)明,但按子循環(huán)處理的每一個(gè)構(gòu) 成本發(fā)明電路l也可。 更具體地,在本實(shí)施方式中,第一存儲(chǔ)器M1具備能夠存儲(chǔ)元素?cái)?shù)為s+2的中間 結(jié)果儲(chǔ)存用數(shù)組t[s+l:0]的存儲(chǔ)區(qū)域。在本實(shí)施方式中,構(gòu)成為在中間結(jié)果儲(chǔ)存用數(shù)組t 內(nèi),為了第一子循環(huán)處理和第二子循環(huán)處理而使用t [s-l: 0],為了主循環(huán)處理的執(zhí)行而使 用t[s]、t[s+l]。 這里,圖4表示本實(shí)施方式的第一存儲(chǔ)器M1和第二存儲(chǔ)器M2的概略結(jié)構(gòu)例。此 外,圖5(a)表示本實(shí)施方式的第一存儲(chǔ)器M1和第二存儲(chǔ)器M2的讀出處理中的工作定時(shí), 圖5(b)表示本實(shí)施方式的第一存儲(chǔ)器M1和第二存儲(chǔ)器M2的寫入處理中的工作定時(shí)。作 為同步式1端口 RAM的第一存儲(chǔ)器Ml,如圖5 (a)所示,在讀出處理中,同步于時(shí)鐘信號(hào)CLK 而工作,在芯片啟動(dòng)信號(hào)CE#為L(zhǎng)電平的情況下,從輸出端子DOUT輸出由地址信號(hào)AD表示 的存儲(chǔ)區(qū)域中存儲(chǔ)的數(shù)據(jù)D。同樣地,第一存儲(chǔ)器Ml,如圖5(b)所示,在寫入處理中,同步 于時(shí)鐘信號(hào)CLK而工作,在芯片啟動(dòng)信號(hào)CE#為L(zhǎng)電平的情況下,將從數(shù)據(jù)輸入端子DIN輸 入的數(shù)據(jù)D寫入由地址信號(hào)AD表示的存儲(chǔ)區(qū)域中。 再有,在本實(shí)施方式中,為了主循環(huán)處理,將中間結(jié)果儲(chǔ)存用數(shù)組t的元素?cái)?shù)作為 s+2,但在以僅進(jìn)行子循環(huán)處理的方式構(gòu)成本發(fā)明電路的情況等下,將中間結(jié)果儲(chǔ)存用數(shù)組 t的元素?cái)?shù)作為s也可。此外,也可以構(gòu)成為能夠在第一存儲(chǔ)器M1中存儲(chǔ)中間結(jié)果儲(chǔ)存用 數(shù)組t以外的變量。 在第二存儲(chǔ)器M2中,在本實(shí)施方式中,在用于存儲(chǔ)用于執(zhí)行第一子循環(huán)處理的第 一數(shù)組a[s-l:0]和第二數(shù)組b[s-l:0]的存儲(chǔ)區(qū)域之外,為了執(zhí)行圖9所示的第二子循環(huán) 處理,還具備對(duì)位寬度r、元素?cái)?shù)s的第三數(shù)組n [s-1:0],和位寬度r的被乘法變量m進(jìn)行 儲(chǔ)存的存儲(chǔ)區(qū)域。 第二存儲(chǔ)器M2構(gòu)成為,在第二子循環(huán)處理中,將第三數(shù)組n [s_l: 0]的各元素作為 對(duì)應(yīng)的第一數(shù)組a[s-l:O]的各元素向積和運(yùn)算電路10輸出,將被乘法變量m作為第二數(shù) 組b[s-l:0]的各元素向被乘數(shù)儲(chǔ)存用寄存器R1輸出。再有,第二存儲(chǔ)器M2與第一存儲(chǔ)器 Ml是相同結(jié)構(gòu)(圖4),以相同的工作定時(shí)(圖5)工作。 本發(fā)明電路1構(gòu)成為能夠執(zhí)行如下處理,S卩,從第二存儲(chǔ)器M2讀出以第一循環(huán)計(jì) 數(shù)器值i表示的第二數(shù)組b[s-l:O]的元素并儲(chǔ)存于被乘數(shù)儲(chǔ)存用寄存器R1的第一讀出處理(通常的第一讀出處理);從第二存儲(chǔ)器M2讀出以第二循環(huán)計(jì)數(shù)器值j表示的第一數(shù)組 a[s-l:0]的元素,從第一存儲(chǔ)器M1讀出以第二循環(huán)計(jì)數(shù)器值j表示的中間結(jié)果儲(chǔ)存用數(shù)組 t的元素,讀出被乘數(shù)儲(chǔ)存用寄存器R1的值RX,讀出進(jìn)位哥存器R2的值RC,分別輸入積和 運(yùn)算電路10的第二讀出處理;將高位位側(cè)數(shù)據(jù)FH寫入進(jìn)位寄存器R2,并且將由運(yùn)算結(jié)果數(shù) 據(jù)F內(nèi)的低位r位構(gòu)成的低位位側(cè)數(shù)據(jù)作為以第二循環(huán)計(jì)數(shù)器值j表示的中間結(jié)果儲(chǔ) 存用數(shù)組t的元素,寫入第一存儲(chǔ)器Ml的寫入處理,在第一讀出處理執(zhí)行后,執(zhí)行第一子循 環(huán)處理,該第一子循環(huán)處理反復(fù)執(zhí)行第二讀出處理、積和運(yùn)算處理、寫入處理、以及第二循 環(huán)計(jì)數(shù)器值j的更新。 進(jìn)而,本發(fā)明電路1構(gòu)成為能夠執(zhí)行第二子循環(huán)處理,該第二子循環(huán)處理反復(fù)執(zhí)
行將第三數(shù)組n[s-l:O]的各元素作為對(duì)應(yīng)的第一數(shù)組a[s-l:O]的各元素進(jìn)行使用的第二
讀出處理、積和運(yùn)算處理、寫入處理、以及第二循環(huán)計(jì)數(shù)器值j的更新。 本發(fā)明電路1為了圖9所示的程序碼的執(zhí)行,構(gòu)成為至少執(zhí)行主循環(huán)處理,該主循
環(huán)處理依次反復(fù)執(zhí)行通常的第一讀出處理、第一子循環(huán)處理、將被乘法變量m作為第二數(shù)
組b[s-l:O]的各元素進(jìn)行使用的另外的第一讀出處理、第二子循環(huán)處理、以及第一循環(huán)計(jì)
數(shù)器值i的更新。 這里,圖6表示圖9所示的程序碼內(nèi)執(zhí)行次數(shù)最多的第一子循環(huán)處理的處理算法。 圖7表示執(zhí)行第一子循環(huán)處理時(shí)的構(gòu)成本發(fā)明電路1的各電路的工作定時(shí)。再有,在圖7 中,Mn_CE#(n = 1,2)表示第一存儲(chǔ)器Ml、第二存儲(chǔ)器M2各自的芯片啟動(dòng)信號(hào),Mn_WE#表 示第一存儲(chǔ)器Ml 、第二存儲(chǔ)器M2各自的寫入啟動(dòng)信號(hào),Mn_D0UT表示第一存儲(chǔ)器Ml 、第二 存儲(chǔ)器M2各自的輸出信號(hào)的值。 本發(fā)明電路1在開始第一主循環(huán)處理時(shí),首先、第一存儲(chǔ)器M1的中間結(jié)果儲(chǔ)存用 數(shù)組t內(nèi),對(duì)t [s-l: 0]進(jìn)行初始化,將進(jìn)位寄存器R2的值RC初始化為0 (步驟#210)。接 著,對(duì)第二計(jì)數(shù)器電路進(jìn)行初始化并將第二計(jì)數(shù)器值j的值設(shè)定為0(步驟#220)。接著,本 發(fā)明電路1從第二存儲(chǔ)器M2讀出b[i]并儲(chǔ)存于被乘數(shù)存儲(chǔ)用寄存器Rl(步驟ft230,第一 讀出處理)。 接著,本發(fā)明電路1從第一存儲(chǔ)器M1讀出t[j](步驟ft241),從第二存儲(chǔ)器M2讀 出a[j](步驟#242),讀出被乘數(shù)儲(chǔ)存用寄存器Rl的值RX( = b[i])(步驟#243),讀出進(jìn) 位寄存器R2的值RC(步驟#244),分別輸入積和運(yùn)算電路IO(步驟#240,第二讀出處理)。 再有,步驟#241 步驟#244在這里并行執(zhí)行。 在步驟#240的第二讀出處理的執(zhí)行之后,本發(fā)明電路1的積和運(yùn)算電路10使用 在步驟#240輸入的各值,對(duì)t [ j] +a[ j] *b [ j] +RC進(jìn)行計(jì)算,將其結(jié)果作為2r位的結(jié)果數(shù)據(jù) F進(jìn)行輸出(步驟#250,積和運(yùn)算處理)。進(jìn)而,本發(fā)明電路1對(duì)進(jìn)位寄存器R2寫入上次的 高位位側(cè)數(shù)據(jù)Fji = 0, j = 0的情況下是初始值O)(步驟#261),與此并行地,將低位位側(cè) 數(shù)據(jù)R(i = 0, j = 0的情況下是初始值0)作為t[j]寫入第一存儲(chǔ)器M1 (步驟#262),由 此,執(zhí)行寫入處理(步驟#260)。再有,步驟#250的積和運(yùn)算處理和步驟#260的寫入處理 并行執(zhí)行。 接著,本發(fā)明電路l在第二循環(huán)計(jì)數(shù)器值j的值不是s-l的情況下(在步驟#270 為"否"分支),將第二循環(huán)計(jì)數(shù)器值j的值增加1(步驟#280),轉(zhuǎn)移到步驟#240。本發(fā)明 電路1在第二循環(huán)計(jì)數(shù)器值j的值是s-l的情況下(在步驟#270為"是"分支),第一子循環(huán)處理結(jié)束。 這里,圖8表示本發(fā)明電路1的第一子循環(huán)處理的流程。從圖7和圖8可知,本發(fā) 明電路1能夠并行地執(zhí)行利用積和運(yùn)算電路10的積和運(yùn)算處理、和對(duì)第一存儲(chǔ)器M1和進(jìn) 位寄存器R2的寫入處理。因此,能夠以執(zhí)行對(duì)積和運(yùn)算電路10輸入各變量的第二讀出處理 的存儲(chǔ)器讀周期、和執(zhí)行將上次的積和運(yùn)算電路10中的運(yùn)算結(jié)果寫入第一存儲(chǔ)器M1和進(jìn) 位寄存器R2的寫入處理和積和運(yùn)算處理的存儲(chǔ)器寫周期這兩個(gè)周期,構(gòu)成1個(gè)循環(huán)周期, 與圖11所示的現(xiàn)有技術(shù)那樣,以3個(gè)或4個(gè)周期構(gòu)成1個(gè)循環(huán)周期的情況相比,能夠謀求 運(yùn)算處理時(shí)間的高速化。 再有,從圖2可知,在本實(shí)施方式的RSA密碼電路103中,反復(fù)進(jìn)行蒙哥馬利乘法, 如果以通過(guò)本發(fā)明電路1進(jìn)行蒙哥馬利乘法的方式構(gòu)成的話,能夠僅使用1端口 RAM進(jìn)行 蒙哥馬利乘法,能夠?qū)崿F(xiàn)不依賴于ASIC庫(kù)的通用性高的RSA密碼電路103。此外,如上所 述,在本發(fā)明電路1中,與現(xiàn)有的用于蒙哥馬利乘法的運(yùn)算電路相比,能夠謀求運(yùn)算處理時(shí) 間的高速化,因此能夠謀求反復(fù)執(zhí)行蒙哥馬利乘法的RSA密碼電路103的高速化。即,本發(fā) 明電路1對(duì)蒙哥馬利乘法的反復(fù)次數(shù)多的密碼電路和運(yùn)算電路特別有用。
(其它實(shí)施方式) (1)在上述實(shí)施方式中,針對(duì)在IC卡IOO搭載RSA密碼電路103,使用本發(fā)明電路 1進(jìn)行加密處理的情況進(jìn)行了說(shuō)明,但也可以構(gòu)成為例如在IC讀卡器等搭載的RSA密碼電 路103等中,使用本發(fā)明電路1進(jìn)行解密處理。 (2)在上述實(shí)施方式中,針對(duì)在RSA密碼電路103中使用本發(fā)明電路1的情況進(jìn)行 了說(shuō)明,但在利用蒙哥馬利乘法的其它密碼電路或運(yùn)算電路中使用也可。
權(quán)利要求
一種用于蒙哥馬利乘法的運(yùn)算電路,其中,構(gòu)成為具備積和運(yùn)算電路,進(jìn)行積和運(yùn)算處理,在該積和運(yùn)算處理中,受理位寬度r的第一變量、第二變量、第三變量、第四變量,對(duì)所述第三變量、所述第一變量和所述第二變量的求積結(jié)果、以及所述第四變量的和進(jìn)行運(yùn)算,輸出位寬度2r的運(yùn)算結(jié)果數(shù)據(jù);第一存儲(chǔ)器,以具備對(duì)位寬度r、元素?cái)?shù)s的中間結(jié)果儲(chǔ)存用數(shù)組進(jìn)行儲(chǔ)存的存儲(chǔ)區(qū)域的同步式1端口RAM構(gòu)成,將所述中間結(jié)果儲(chǔ)存用數(shù)組的各元素作為所述第三變量向所述積和運(yùn)算電路輸出;第二存儲(chǔ)器,以具備對(duì)位寬度r、元素?cái)?shù)s的第一數(shù)組和第二數(shù)組進(jìn)行儲(chǔ)存的存儲(chǔ)區(qū)域的同步式1端口RAM構(gòu)成,將所述第一數(shù)組的各元素作為所述第一變量向所述積和運(yùn)算電路輸出;被乘數(shù)儲(chǔ)存用寄存器,從所述第二存儲(chǔ)器以元素單位受理并存儲(chǔ)所述第二數(shù)組,作為所述第二變量向所述積和運(yùn)算電路輸出;進(jìn)位寄存器,受理并存儲(chǔ)由所述運(yùn)算結(jié)果數(shù)據(jù)內(nèi)的高位r位構(gòu)成的高位位側(cè)數(shù)據(jù),作為所述第四變量向所述積和運(yùn)算電路輸出,該用于蒙哥馬利成分的運(yùn)算電路構(gòu)成為能夠執(zhí)行下述處理,即第一讀出處理,從所述第二存儲(chǔ)器讀出以規(guī)定的第一循環(huán)計(jì)數(shù)器值表示的所述第二數(shù)組的元素并儲(chǔ)存到所述被乘數(shù)儲(chǔ)存用寄存器;第二讀出處理,從所述第二存儲(chǔ)器讀出以規(guī)定的第二循環(huán)計(jì)數(shù)器值表示的所述第一數(shù)組的元素,從所述第一存儲(chǔ)器讀出以所述第二循環(huán)計(jì)數(shù)器值表示的所述中間結(jié)果儲(chǔ)存用數(shù)組的元素,讀出所述被乘數(shù)儲(chǔ)存用寄存器的值,讀出所述進(jìn)位寄存器的值,分別輸入到所述積和運(yùn)算電路;以及寫入處理,將所述高位位側(cè)數(shù)據(jù)寫入所述進(jìn)位寄存器,并且將由所述運(yùn)算結(jié)果數(shù)據(jù)內(nèi)的低位r位構(gòu)成的低位位側(cè)數(shù)據(jù),作為以所述第二循環(huán)計(jì)數(shù)器值表示的所述中間結(jié)果儲(chǔ)存用數(shù)組的元素,寫入所述第一存儲(chǔ)器,在所述第一讀出處理執(zhí)行后,執(zhí)行第一子循環(huán)處理,在該第一子循環(huán)處理中,反復(fù)執(zhí)行所述第二讀出處理、所述積和運(yùn)算處理、所述寫入處理、以及所述第二循環(huán)計(jì)數(shù)器值的更新。
2. 根據(jù)權(quán)利要求l所述的運(yùn)算電路,其中,構(gòu)成為所述第二存儲(chǔ)器還具備對(duì)位寬度r、元素?cái)?shù)s的第三數(shù)組和位寬度r的被乘法 變量進(jìn)行儲(chǔ)存的存儲(chǔ)區(qū)域,將所述第三數(shù)組的各元素作為對(duì)應(yīng)的所述第一數(shù)組的各元素向 所述積和運(yùn)算電路輸出,將所述被乘法變量作為所述第二數(shù)組的各元素向所述被乘數(shù)儲(chǔ)存 用寄存器輸出。
3. 根據(jù)權(quán)利要求2所述的運(yùn)算電路,其中,構(gòu)成為能夠執(zhí)行第二子循環(huán)處理,在該第二子循環(huán)處理中,反復(fù)執(zhí)行將所述第三數(shù)組 的各元素作為對(duì)應(yīng)的所述第一數(shù)組的各元素進(jìn)行使用的所述第二讀出處理、所述積和運(yùn)算 處理、所述寫入處理、以及所述第二循環(huán)計(jì)數(shù)器值的更新,至少執(zhí)行主循環(huán)處理,在該主循環(huán)處理中,依次反復(fù)執(zhí)行通常的所述第一讀出處理、所 述第一子循環(huán)處理、將所述被乘法變量作為所述第二數(shù)組的各元素進(jìn)行使用的另外的第一 讀出處理、所述第二子循環(huán)處理、以及所述第一循環(huán)計(jì)數(shù)器值的更新。
4. 一種RSA密碼電路,其中,使用權(quán)利要求1 3的任何一項(xiàng)所述的用于蒙哥馬利乘法的運(yùn)算電路,進(jìn)行RSA密碼 的加密處理或解密處理的至少任何一方。
全文摘要
本發(fā)明提供一種用于蒙哥馬利乘法的運(yùn)算電路,其能夠僅使用1端口RAM進(jìn)行蒙哥馬利乘法。該運(yùn)算電路能夠執(zhí)行從對(duì)a[s-1:0]和b[s-1:0]進(jìn)行儲(chǔ)存的同步式1端口RAM的存儲(chǔ)器(M2)讀出b[i]并儲(chǔ)存到寄存器R1的第一讀出處理;從存儲(chǔ)器(M2)讀出a[j],從對(duì)t[s-1:0]進(jìn)行儲(chǔ)存的同步式1端口RAM的存儲(chǔ)器(M1)讀出t[j],從寄存器(R1)讀出b[i],從寄存器(R2)讀出值RC,輸入進(jìn)行計(jì)算t[j]+a[j]*b[j]+RC的積和運(yùn)算處理的積和運(yùn)算電路10的第二讀出處理;將運(yùn)算結(jié)果數(shù)據(jù)(FH)寫入寄存器(R2),并且將運(yùn)算結(jié)果數(shù)據(jù)(FL)作為t[j]寫入到存儲(chǔ)器(M1)的寫入處理,在第一讀出處理執(zhí)行后,執(zhí)行第一子循環(huán)處理,該第一子循環(huán)處理反復(fù)執(zhí)行第二讀出處理、積和運(yùn)算處理、寫入處理。
文檔編號(hào)G06F7/72GK101782846SQ20101000299
公開日2010年7月21日 申請(qǐng)日期2010年1月15日 優(yōu)先權(quán)日2009年1月15日
發(fā)明者大山茂郎 申請(qǐng)人:夏普株式會(huì)社