国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      用于蒙哥馬利乘法的運算電路及密碼電路的制作方法

      文檔序號:6596919閱讀:299來源:國知局
      專利名稱:用于蒙哥馬利乘法的運算電路及密碼電路的制作方法
      技術領域
      本發(fā)明涉及用于蒙哥馬利乘法的運算電路,以及利用用于蒙哥馬利乘法的運算電
      路進行加密處理及解密處理的密碼電路。
      背景技術
      在利用因特網(wǎng)等的網(wǎng)絡進行契約或結算的電子商務交易中,例如有在網(wǎng)絡上銷售商品的電子商店進行的商務交易(企業(yè)和消費者間的商務交易),消費者能夠瀏覽電子商店的網(wǎng)站,選擇商品,指定結算方法進行購買。 在這樣的電子商務交易中,防止冒充或竊聽、篡改等的安全的確保成為課題,例如,作為用于防止冒充的認證技術的一種,利用公鑰密碼。這里,公鑰密碼是使用用于加密的加密密鑰和用于解密的解密密鑰的相異的2個密鑰的技術,根據(jù)加密密鑰來推測解密密鑰、以及解讀密文極端困難,或不可能。密鑰的所有者通過以公開加密密鑰(公鑰),且不被第三者得知解密密鑰(私鑰)的方式進行管理,從而能夠使利用公鑰的對方側的信息不被第三者得知。 例如,在上述的電子商店和消費者之間的商務交易中,電子商店以向普通人公開加密密鑰(公鑰),不讓第三者得知解密密鑰(私鑰)的方式進行管理。消費者利用電子商店一側公開的加密密鑰(公鑰),對與商務交易相關的信息進行加密并向電子商店發(fā)送。電子商店對從消費者接收的密文以解密密鑰(私鑰)進行解密,對消費者進行商品的銷售。作為密鑰的所有者的電子商店通過以使解密密鑰(私鑰)不被第三者得知的方式進行管理,能夠防止與商務交易相關的信息被第三者得知,能夠防止消費者的個人信息等被第三者得知。 作為公鑰密碼,例如有RSA(Rivest Shamir Adieman)密碼。在RSA密碼中,為了進行解讀,需要非常大的整數(shù)的素因數(shù)分解,即使是利用計算機的解讀,以現(xiàn)實的計算時間進行的解讀也是困難的。 以下,針對RSA密碼的加密方法和解密方法簡單地進行說明。 在使用公鑰(e,n)對明文M進行加密,生成密文C的情況下,密文C通過以下的數(shù)
      式1生成。 C = Memodn (其中,0《M〈n) (1) 在使用私鑰(d,n)對密文C進行解密,生成明文M的情況下,明文M通過以下的數(shù)式2生成。M = Cdmodn (2) 再有,公鑰(e,n)、私鑰(d, n)中存在以下數(shù)式3的關系。 n = pXq(p、q是素數(shù)) eXd三lmod(p-l) (q-l) (3) 具體地,例如當假設p = 3、q = 11、e = 3、d = 7時,對明文M = 7進行加密得到的密文C,通過數(shù)式1成為C = 73mod(3Xll) = 343mod33 = 13。 此外,對密文C二 13進行解密而得到的明文M通過數(shù)式2,成為M = 137mod33 =62748517mod33 = 7。因此,可知正確地進行了利用數(shù)式1和數(shù)式2的加密和解密。
      可是,在上述的RSA密碼中,以數(shù)式l和數(shù)式2所示方式進行冪乘運算、剩余運算。通常,密鑰或明文是1024位(bit)以上的非常大的位數(shù),因此當在運算裝置上直接使用數(shù)式1和數(shù)式2進行加密和解密時,有發(fā)生溢出的可能性。 因此,在RSA密碼的加密和解密中,例如使用作為不溢出的剩余運算的方法的一個例子的蒙哥馬利乘法。在蒙哥馬利乘法中,能夠在N位的存儲器空間進行N位的剩余運算。 以下,針對蒙哥馬利乘法簡單地進行說明。RSA密碼的數(shù)式IC = Memodn的右邊以M2modn = MXMmodn、 M3mod n =MXM2modn、 Memodn = MXMe—"rnodn的方式,以逐次計算進行求取。即,能夠通過反復進行y = a X Pmodn來計算。 這里,在蒙哥馬利乘法中,由于是計算機上的乘法,所以使用常數(shù)R = 2N。當對y=a X Pmodn的兩邊乘R來求取modn時,成為y Rmodn = a RX P RX R—丄modn。在這里,當假設Z二 YRmodn、A= aRmodn、B= P Rmodn時,蒙哥馬利乘法的運算式以下面的數(shù)式4表示。 Z = AXBXR—丄modn (4) 這里,圖9表示在運算裝置上對數(shù)式4所示的蒙哥馬利乘法進行運算的情況下的程序碼(偽碼)的一個例子。 再有,在RSA密碼中,例如,由于明文M的位數(shù)非常大(例如1024位等),所以在RSA密碼的加密處理等中使用的蒙哥馬利乘法的各變量A、B、n的位數(shù)也大。因此,為了在運算裝置上進行蒙哥馬利乘法,需要將變量A、B、n以運算裝置能夠計算的位寬度r進行分割。具體地,在變量A、B、n是相同位寬度的情況下,當將分割數(shù)假定為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的運算式在主循環(huán)(main loop)的子循環(huán)(sub loop)內(nèi),運算次數(shù)((s-l) X (s-l))變得最多。因此,為了 RSA密碼的加密和解密的高速化,要求高速地進行蒙哥馬利乘法中的(C, S) := t[j]+a[j]樸[i]+C的運算。再有,圖9中的*表示求積(X)。 這里,作為高速地進行蒙哥馬利乘法的運算裝置,例如提出有以下的運算電路(例如,參照日本專利申請?zhí)亻_2002-207589號公報),其具備對位寬度r的變量Xl、 x2、X3、X4分別進行儲存的第一至第四寄存器;以2端口 (port) RAM (Random Access Memory,隨機存儲器)構成的存儲器A ;以2端口 RAM或1端口 RAM構成的存儲器B ;以及能夠執(zhí)行流水線(pipeline)處理的運算器,其中,該流水線處理從第一至第四寄存器受理變量Xl、 x2、X3、^,計算變量A、與變量x2和變量x3的求積結果、與變量x4的和,輸出位寬度2r或2r+l的運算結果Q,在流水線處理執(zhí)行后,執(zhí)行下述處理,即將由運算結果Q的低位r位構成的數(shù)據(jù)寫入存儲器A、將由運算結果Q的高位r位構成的數(shù)據(jù)QH寫入第四寄存器的存儲器寫入處理;和從存儲器A讀出變量Xl并輸出到第一寄存器,從存儲器B讀出變量x3并輸出到第三寄存器的存儲器讀出處理。 這里,圖10表示上述日本專利申請?zhí)亻_2002-207589號公報中記述的運算電路的概略結構例。此外,圖11(a)表示串行地進行存儲器讀出處理(存儲器讀周期)和存儲器寫入處理(存儲器寫周期)的情況下的處理的流程,圖11(b)表示在上述日本專利申請?zhí)亻_2002-207589號公報中,存儲器B以2端口 RAM構成,以流水線進行存儲器讀出處理和存儲器寫入處理的情況下的處理的流程。 由圖11可知,在日本專利申請?zhí)亻_2002-207589號公報中記述的運算電路中,因為能夠以流水線進行存儲器讀出處理和存儲器寫入處理,所以與串行地進行存儲器讀出處理和存儲器寫入處理的情況相比,能夠高速化。 可是,通常在以運算電路進行蒙哥馬利乘法的情況下,例如在以ASIC (Application Specific Integrated Circuit,專用集成電路)實現(xiàn)運算電路的情況下,2端口 RAM不被標準的ASIC庫支持的情況較多。此外,即使在2端口 RAM被支持的情況下,也存在僅支持根據(jù)2讀2寫方式的面積大的2端口 RAM的情況。從電路設計的標準化和IP (intellectual property,知識產(chǎn)權)化的觀點出發(fā),不優(yōu)選使用確實不被支持的情況較多的2端口 RAM。

      發(fā)明內(nèi)容
      本發(fā)明正是鑒于上述問題而完成的,其目的在于提供一種用于蒙哥馬利乘法的運算電路,該電路能夠僅使用l端口 RAM進行蒙哥馬利乘法。此外,提供一種RSA密碼電路,能夠僅使用1端口 RAM進行蒙哥馬利乘法。 為了實現(xiàn)上述目的的本發(fā)明的用于蒙哥馬利乘法的運算電路的第一特征在于,構成為具備積和運算電路,進行積和運算處理,在該積和運算處理中,受理位寬度r的第一變量、第二變量、第三變量、第四變量,對所述第三變量、所述第一變量與所述第二變量的求積結果、以及所述第四變量的和進行運算,輸出位寬度2r的運算結果數(shù)據(jù);第一存儲器,以具備對位寬度r、元素數(shù)s的中間結果儲存用數(shù)組進行儲存的存儲區(qū)域的同步式l端口 RAM構成,將所述中間結果儲存用數(shù)組的各元素作為所述第三變量向所述積和運算電路輸出;第二存儲器,以具備對位寬度r、元素數(shù)s的第一數(shù)組和第二數(shù)組進行儲存的存儲區(qū)域的同步式1端口 RAM構成,將所述第一數(shù)組的各元素作為所述第一變量向所述積和運算電路輸出;被乘數(shù)儲存用寄存器,從所述第二存儲器以元素單位受理并存儲所述第二數(shù)組,作為所述第二變量向所述積和運算電路輸出;進位寄存器,受理并存儲所述運算結果數(shù)據(jù)內(nèi)的高位r位構成的高位位側數(shù)據(jù),作為所述第四變量向所述積和運算電路輸出,該用于蒙哥馬利乘法的運算電路構成為能夠執(zhí)行下述處理,即第一讀出處理,從所述第二存儲器讀出以規(guī)定的第一循環(huán)計數(shù)器值表示的所述第二數(shù)組的元素并儲存到所述被乘數(shù)儲存用寄存器;第二讀出處理、從所述第二存儲器讀出以規(guī)定的第二循環(huán)計數(shù)器值表示的所述第一數(shù)組的元素,從所述第一存儲器讀出以所述第二循環(huán)計數(shù)器值表示的所述中間結果儲存用數(shù)組的元素,讀出所述被乘數(shù)儲存用寄存器的值,讀出所述進位寄存器的值,分別輸入到所述積和運算電路;以及寫入處理,將由所述高位位側數(shù)據(jù)寫入所述進位寄存器,并且將由所述運算結果數(shù)據(jù)內(nèi)的低位r位構成的低位位側數(shù)據(jù),作為以所述第二循環(huán)計數(shù)器值表示的所述中間結果儲存用數(shù)組的元素,寫入所述第一存儲器,在所述第一讀出處理執(zhí)行后,執(zhí)行第一子循環(huán)處理,在該第一子循環(huán)處理中,依次反復執(zhí)行所述第二讀出處理、所述積和運算處理、所述寫入處理、以及所述第二循環(huán)計數(shù)器值的更新。 上述特征的本發(fā)明的用于蒙哥馬利乘法的運算電路的第二特征在于,構成為所述
      第二存儲器還具備對位寬度r、元素數(shù)s的第三數(shù)組和位寬度r的被乘法變量進行儲存的
      存儲區(qū)域,將所述第三數(shù)組的各元素作為對應的所述第一數(shù)組的各元素向所述積和運算電
      路輸出,將所述被乘法變量作為所述第二數(shù)組的各元素向所述被乘數(shù)儲存用寄存器輸出。 上述特征的本發(fā)明的用于蒙哥馬利乘法的運算電路的第三特征在于,構成為能夠
      執(zhí)行第二子循環(huán)處理,在該第二子循環(huán)處理中,依次反復執(zhí)行將所述第三數(shù)組的各元素作
      為對應的所述第一數(shù)組的各元素進行使用的所述第二讀出處理、所述積和運算處理、所述
      寫入處理、以及所述第二循環(huán)計數(shù)器值的更新,至少執(zhí)行主循環(huán)處理,在該主循環(huán)處理中,
      依次反復執(zhí)行通常的所述第一讀出處理、所述第一子循環(huán)處理、將所述被乘法變量作為所
      述第二數(shù)組的各元素進行使用的另外的第一讀出處理、所述第二子循環(huán)處理、以及所述第
      一循環(huán)計數(shù)器值的更新。 為了實現(xiàn)上述目的的本發(fā)明的RSA密碼電路的特征在于,使用上述第一 第三特征的用于蒙哥馬利乘法的運算電路,進行RSA密碼的加密處理或解密處理的至少任何一方。 根據(jù)上述第一特征的用于蒙哥馬利乘法的運算電路,因為構成為不使用2端口RAM而僅使用l端口 RAM,所以例如在以ASIC構成進行加密和解密的密碼電路的情況等下,能夠實現(xiàn)不依賴于ASIC庫的通用性高的電路。由此,上述第一特征的用于蒙哥馬利乘法的運算電路更加對于用于蒙哥馬利乘法的運算電路的標準化和IP化是有用的。
      此外,根據(jù)上述特征的用于蒙哥馬利乘法的運算電路,因為構成為在寫入處理中,在從積和運算電路輸出的運算結果數(shù)據(jù)內(nèi),將高位位側數(shù)據(jù)寫入所述進位寄存器,將低位位側數(shù)據(jù)寫入所述第一存儲器,所以如果以并行執(zhí)行積和運算處理和寫入處理的方式進行控制的話,能夠在電路整體使運算速度高速。


      圖1是表示搭載有使用本發(fā)明的用于蒙哥馬利乘法的運算電路而構成的RSA密碼
      電路的IC卡的概略局部結構例的概略局部框圖。 圖2是表示本發(fā)明RSA密碼電路的處理算法的流程圖。 圖3是表示本發(fā)明的用于蒙哥馬利乘法的運算電路的概略結構例的概略框圖。
      圖4是表示同步式1端口 RAM的概略結構例的概略框圖。
      圖5是用于說明同步式1端口 RAM的工作的時序圖。 圖6是表示本發(fā)明的用于蒙哥馬利乘法的運算電路的處理算法內(nèi)的、第一子循環(huán)處理的處理算法的流程圖。 圖7是為了說明本發(fā)明的用于蒙哥馬利乘法的運算電路的處理算法內(nèi)的、第一子循環(huán)處理的工作的時序圖。 圖8是示意地表示本發(fā)明的用于蒙哥馬利乘法的運算電路的處理算法內(nèi)的、第一子循環(huán)處理的流程的示意圖。 圖9是表示用于說明以運算裝置進行蒙哥馬利運算的情況下的運算裝置的工作 的程序碼的圖。 圖10是表示現(xiàn)有技術的運算電路的概略結構例的概略框圖。 圖11是示意地表示在現(xiàn)有技術的運算電路中,串行地進行存儲器讀出處理和存 儲器寫入處理的情況和以流水線進行的情況的處理的流程的示意圖。
      具體實施例方式
      以下,基于附圖對本發(fā)明的用于蒙哥馬利乘法的運算電路(以下,適宜地略稱為 "本發(fā)明電路")、以及RSA密碼電路的實施方式進行說明。 基于圖1 圖8對本發(fā)明電路和使用了本發(fā)明電路的RSA密碼電路的一個實施方 式進行說明。 這里,圖1表示搭載有使用本發(fā)明電路1構成的RSA密碼電路103的IC卡100的 概略局部結構例,圖3表示本發(fā)明電路1的概略結構例。 IC卡100在本實施方式中是接觸型IC卡,如圖1所示,構成為具備用于與IC讀 卡器進行數(shù)據(jù)通信的1/0(I即ut/output,輸入/輸出)IOI,控制IC卡100內(nèi)的各功能的 CPU (Central Processing Unit,中央處理器)102,對實現(xiàn)IC卡100的各種功能的程序等進 行儲存的ROM(Read Only Memory,只讀存儲器)104、RAM105、閃速存儲器等的非易失性存儲 器106、以及進行利用RSA密碼的加密處理等的RSA密碼電路103。再有,在本實施方式中, 假定是接觸型IC卡,但是非接觸型IC卡也可。 此外,IC卡IOO在本實施方式中,在與IC讀卡器的數(shù)據(jù)通信中,在對IC讀卡器發(fā) 送包含個人信息等的安全信息的發(fā)送數(shù)據(jù)的情況下,使用RSA密碼電路103對發(fā)送數(shù)據(jù)進 行加密。 RSA密碼電路103在本實施方式中以ASIC實現(xiàn),構成為具備本發(fā)明電路1和循環(huán) 計數(shù)器電路103a,對包含安全信息的發(fā)送數(shù)據(jù)進行加密處理。循環(huán)計數(shù)器電路103a在本實 施方式中構成為具備第一計數(shù)器電路(未圖示),生成圖9所示的程序碼中使用的計數(shù)值 內(nèi)的、控制主循環(huán)處理的處理次數(shù)的第一循環(huán)計數(shù)值i ;以及第二計數(shù)器電路(未圖示),生 成圖9所示的程序碼中使用的計數(shù)值內(nèi)的、控制子循環(huán)處理的處理次數(shù)的第二循環(huán)計數(shù)值
      jo 這里,圖2表示本實施方式中的RSA密碼電路103的處理算法。具體地,RSA密碼 電路103首先使用明文M、常數(shù)R = 2N進行蒙哥馬利變換(步驟#101),讀出加密密鑰e = K[k-l:0] (#102),將變量i的值初始化為k-l (步驟#103)。之后,本發(fā)明電路1進行以A =AAR—^odn表示的2乘法的蒙哥馬利乘法(步驟#104),在K[i] = 1的情況下(在步驟 #105的"是"分支),本發(fā)明電路1進行以A = ABR—^odn表示的乘法的蒙哥馬利乘法(步驟 #106)。在變量i # 0的情況下(在步驟#107的"否"分支),對i減去1 (步驟#108),轉 移到步驟#104。在變量i = 0的情況下(在步驟#107的"是"分支),進行以C = AR—^odn 表示的蒙哥馬利逆變換(步驟#109),結束處理。 本發(fā)明電路1以進行以圖9的程序碼表示的處理的方式構成,如圖3所示,構成為 具備積和運算電路lO,其進行積和運算處理,在該積和運算處理中,受理位寬度r的第一變量X、第二變量Y、第三變量Z、第四變量C,對第三變量Z、與第一變量X和第二變量Y的 求積結果、與第四變量C的和(F = Z+X*Y+C)進行運算,輸出位寬度2r的運算結果數(shù)據(jù)F ; 第一存儲器Ml,以具備對位寬度r、元素數(shù)s的中間結果儲存用數(shù)組t進行儲存的存儲區(qū)域 的同步式1端口 RAM構成,將中間結果儲存用數(shù)組t的各元素作為第三變量Z向積和運算 電路10輸出;第二存儲器M2,以具備對位寬度r、元素數(shù)s的第一數(shù)組a[s-l :0]和第二數(shù) 組b[s-l:0]進行儲存的存儲區(qū)域的同步式l端口 RAM構成,將第一數(shù)組a[s-l:O]的各元 素作為第一變量X向積和運算電路10輸出;被乘數(shù)儲存用寄存器R1,從第二存儲器M2以 元素單位受理并存儲第二數(shù)組b [s-l: 0],作為第二變量Y向積和運算電路10輸出;以及進 位寄存器R2,受理并存儲由運算結果數(shù)據(jù)F內(nèi)的高位r位構成的高位位側數(shù)據(jù)FH,作為第 四變量C向積和運算電路10輸出。 再有,在本實施方式中,假定本發(fā)明電路1構成為能夠執(zhí)行包含圖9所示的第一子 循環(huán)處理和第二子循環(huán)處理的主循環(huán)處理的情況,進行說明,但按子循環(huán)處理的每一個構 成本發(fā)明電路l也可。 更具體地,在本實施方式中,第一存儲器M1具備能夠存儲元素數(shù)為s+2的中間 結果儲存用數(shù)組t[s+l:0]的存儲區(qū)域。在本實施方式中,構成為在中間結果儲存用數(shù)組t 內(nèi),為了第一子循環(huán)處理和第二子循環(huán)處理而使用t [s-l: 0],為了主循環(huán)處理的執(zhí)行而使 用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表示 的存儲區(qū)域中存儲的數(shù)據(jù)D。同樣地,第一存儲器Ml,如圖5(b)所示,在寫入處理中,同步 于時鐘信號CLK而工作,在芯片啟動信號CE#為L電平的情況下,將從數(shù)據(jù)輸入端子DIN輸 入的數(shù)據(jù)D寫入由地址信號AD表示的存儲區(qū)域中。 再有,在本實施方式中,為了主循環(huán)處理,將中間結果儲存用數(shù)組t的元素數(shù)作為 s+2,但在以僅進行子循環(huán)處理的方式構成本發(fā)明電路的情況等下,將中間結果儲存用數(shù)組 t的元素數(shù)作為s也可。此外,也可以構成為能夠在第一存儲器M1中存儲中間結果儲存用 數(shù)組t以外的變量。 在第二存儲器M2中,在本實施方式中,在用于存儲用于執(zhí)行第一子循環(huán)處理的第 一數(shù)組a[s-l:0]和第二數(shù)組b[s-l:0]的存儲區(qū)域之外,為了執(zhí)行圖9所示的第二子循環(huán) 處理,還具備對位寬度r、元素數(shù)s的第三數(shù)組n [s-1:0],和位寬度r的被乘法變量m進行 儲存的存儲區(qū)域。 第二存儲器M2構成為,在第二子循環(huán)處理中,將第三數(shù)組n [s_l: 0]的各元素作為 對應的第一數(shù)組a[s-l:O]的各元素向積和運算電路10輸出,將被乘法變量m作為第二數(shù) 組b[s-l:0]的各元素向被乘數(shù)儲存用寄存器R1輸出。再有,第二存儲器M2與第一存儲器 Ml是相同結構(圖4),以相同的工作定時(圖5)工作。 本發(fā)明電路1構成為能夠執(zhí)行如下處理,S卩,從第二存儲器M2讀出以第一循環(huán)計 數(shù)器值i表示的第二數(shù)組b[s-l:O]的元素并儲存于被乘數(shù)儲存用寄存器R1的第一讀出處理(通常的第一讀出處理);從第二存儲器M2讀出以第二循環(huán)計數(shù)器值j表示的第一數(shù)組 a[s-l:0]的元素,從第一存儲器M1讀出以第二循環(huán)計數(shù)器值j表示的中間結果儲存用數(shù)組 t的元素,讀出被乘數(shù)儲存用寄存器R1的值RX,讀出進位哥存器R2的值RC,分別輸入積和 運算電路10的第二讀出處理;將高位位側數(shù)據(jù)FH寫入進位寄存器R2,并且將由運算結果數(shù) 據(jù)F內(nèi)的低位r位構成的低位位側數(shù)據(jù)作為以第二循環(huán)計數(shù)器值j表示的中間結果儲 存用數(shù)組t的元素,寫入第一存儲器Ml的寫入處理,在第一讀出處理執(zhí)行后,執(zhí)行第一子循 環(huán)處理,該第一子循環(huán)處理反復執(zhí)行第二讀出處理、積和運算處理、寫入處理、以及第二循 環(huán)計數(shù)器值j的更新。 進而,本發(fā)明電路1構成為能夠執(zhí)行第二子循環(huán)處理,該第二子循環(huán)處理反復執(zhí)
      行將第三數(shù)組n[s-l:O]的各元素作為對應的第一數(shù)組a[s-l:O]的各元素進行使用的第二
      讀出處理、積和運算處理、寫入處理、以及第二循環(huán)計數(shù)器值j的更新。 本發(fā)明電路1為了圖9所示的程序碼的執(zhí)行,構成為至少執(zhí)行主循環(huán)處理,該主循
      環(huán)處理依次反復執(zhí)行通常的第一讀出處理、第一子循環(huán)處理、將被乘法變量m作為第二數(shù)
      組b[s-l:O]的各元素進行使用的另外的第一讀出處理、第二子循環(huán)處理、以及第一循環(huán)計
      數(shù)器值i的更新。 這里,圖6表示圖9所示的程序碼內(nèi)執(zhí)行次數(shù)最多的第一子循環(huán)處理的處理算法。 圖7表示執(zhí)行第一子循環(huán)處理時的構成本發(fā)明電路1的各電路的工作定時。再有,在圖7 中,Mn_CE#(n = 1,2)表示第一存儲器Ml、第二存儲器M2各自的芯片啟動信號,Mn_WE#表 示第一存儲器Ml 、第二存儲器M2各自的寫入啟動信號,Mn_D0UT表示第一存儲器Ml 、第二 存儲器M2各自的輸出信號的值。 本發(fā)明電路1在開始第一主循環(huán)處理時,首先、第一存儲器M1的中間結果儲存用 數(shù)組t內(nèi),對t [s-l: 0]進行初始化,將進位寄存器R2的值RC初始化為0 (步驟#210)。接 著,對第二計數(shù)器電路進行初始化并將第二計數(shù)器值j的值設定為0(步驟#220)。接著,本 發(fā)明電路1從第二存儲器M2讀出b[i]并儲存于被乘數(shù)存儲用寄存器Rl(步驟ft230,第一 讀出處理)。 接著,本發(fā)明電路1從第一存儲器M1讀出t[j](步驟ft241),從第二存儲器M2讀 出a[j](步驟#242),讀出被乘數(shù)儲存用寄存器Rl的值RX( = b[i])(步驟#243),讀出進 位寄存器R2的值RC(步驟#244),分別輸入積和運算電路IO(步驟#240,第二讀出處理)。 再有,步驟#241 步驟#244在這里并行執(zhí)行。 在步驟#240的第二讀出處理的執(zhí)行之后,本發(fā)明電路1的積和運算電路10使用 在步驟#240輸入的各值,對t [ j] +a[ j] *b [ j] +RC進行計算,將其結果作為2r位的結果數(shù)據(jù) F進行輸出(步驟#250,積和運算處理)。進而,本發(fā)明電路1對進位寄存器R2寫入上次的 高位位側數(shù)據(jù)Fji = 0, j = 0的情況下是初始值O)(步驟#261),與此并行地,將低位位側 數(shù)據(jù)R(i = 0, j = 0的情況下是初始值0)作為t[j]寫入第一存儲器M1 (步驟#262),由 此,執(zhí)行寫入處理(步驟#260)。再有,步驟#250的積和運算處理和步驟#260的寫入處理 并行執(zhí)行。 接著,本發(fā)明電路l在第二循環(huán)計數(shù)器值j的值不是s-l的情況下(在步驟#270 為"否"分支),將第二循環(huán)計數(shù)器值j的值增加1(步驟#280),轉移到步驟#240。本發(fā)明 電路1在第二循環(huán)計數(shù)器值j的值是s-l的情況下(在步驟#270為"是"分支),第一子循環(huán)處理結束。 這里,圖8表示本發(fā)明電路1的第一子循環(huán)處理的流程。從圖7和圖8可知,本發(fā) 明電路1能夠并行地執(zhí)行利用積和運算電路10的積和運算處理、和對第一存儲器M1和進 位寄存器R2的寫入處理。因此,能夠以執(zhí)行對積和運算電路10輸入各變量的第二讀出處理 的存儲器讀周期、和執(zhí)行將上次的積和運算電路10中的運算結果寫入第一存儲器M1和進 位寄存器R2的寫入處理和積和運算處理的存儲器寫周期這兩個周期,構成1個循環(huán)周期, 與圖11所示的現(xiàn)有技術那樣,以3個或4個周期構成1個循環(huán)周期的情況相比,能夠謀求 運算處理時間的高速化。 再有,從圖2可知,在本實施方式的RSA密碼電路103中,反復進行蒙哥馬利乘法, 如果以通過本發(fā)明電路1進行蒙哥馬利乘法的方式構成的話,能夠僅使用1端口 RAM進行 蒙哥馬利乘法,能夠實現(xiàn)不依賴于ASIC庫的通用性高的RSA密碼電路103。此外,如上所 述,在本發(fā)明電路1中,與現(xiàn)有的用于蒙哥馬利乘法的運算電路相比,能夠謀求運算處理時 間的高速化,因此能夠謀求反復執(zhí)行蒙哥馬利乘法的RSA密碼電路103的高速化。即,本發(fā) 明電路1對蒙哥馬利乘法的反復次數(shù)多的密碼電路和運算電路特別有用。
      (其它實施方式) (1)在上述實施方式中,針對在IC卡IOO搭載RSA密碼電路103,使用本發(fā)明電路 1進行加密處理的情況進行了說明,但也可以構成為例如在IC讀卡器等搭載的RSA密碼電 路103等中,使用本發(fā)明電路1進行解密處理。 (2)在上述實施方式中,針對在RSA密碼電路103中使用本發(fā)明電路1的情況進行 了說明,但在利用蒙哥馬利乘法的其它密碼電路或運算電路中使用也可。
      權利要求
      一種用于蒙哥馬利乘法的運算電路,其中,構成為具備積和運算電路,進行積和運算處理,在該積和運算處理中,受理位寬度r的第一變量、第二變量、第三變量、第四變量,對所述第三變量、所述第一變量和所述第二變量的求積結果、以及所述第四變量的和進行運算,輸出位寬度2r的運算結果數(shù)據(jù);第一存儲器,以具備對位寬度r、元素數(shù)s的中間結果儲存用數(shù)組進行儲存的存儲區(qū)域的同步式1端口RAM構成,將所述中間結果儲存用數(shù)組的各元素作為所述第三變量向所述積和運算電路輸出;第二存儲器,以具備對位寬度r、元素數(shù)s的第一數(shù)組和第二數(shù)組進行儲存的存儲區(qū)域的同步式1端口RAM構成,將所述第一數(shù)組的各元素作為所述第一變量向所述積和運算電路輸出;被乘數(shù)儲存用寄存器,從所述第二存儲器以元素單位受理并存儲所述第二數(shù)組,作為所述第二變量向所述積和運算電路輸出;進位寄存器,受理并存儲由所述運算結果數(shù)據(jù)內(nèi)的高位r位構成的高位位側數(shù)據(jù),作為所述第四變量向所述積和運算電路輸出,該用于蒙哥馬利成分的運算電路構成為能夠執(zhí)行下述處理,即第一讀出處理,從所述第二存儲器讀出以規(guī)定的第一循環(huán)計數(shù)器值表示的所述第二數(shù)組的元素并儲存到所述被乘數(shù)儲存用寄存器;第二讀出處理,從所述第二存儲器讀出以規(guī)定的第二循環(huán)計數(shù)器值表示的所述第一數(shù)組的元素,從所述第一存儲器讀出以所述第二循環(huán)計數(shù)器值表示的所述中間結果儲存用數(shù)組的元素,讀出所述被乘數(shù)儲存用寄存器的值,讀出所述進位寄存器的值,分別輸入到所述積和運算電路;以及寫入處理,將所述高位位側數(shù)據(jù)寫入所述進位寄存器,并且將由所述運算結果數(shù)據(jù)內(nèi)的低位r位構成的低位位側數(shù)據(jù),作為以所述第二循環(huán)計數(shù)器值表示的所述中間結果儲存用數(shù)組的元素,寫入所述第一存儲器,在所述第一讀出處理執(zhí)行后,執(zhí)行第一子循環(huán)處理,在該第一子循環(huán)處理中,反復執(zhí)行所述第二讀出處理、所述積和運算處理、所述寫入處理、以及所述第二循環(huán)計數(shù)器值的更新。
      2. 根據(jù)權利要求l所述的運算電路,其中,構成為所述第二存儲器還具備對位寬度r、元素數(shù)s的第三數(shù)組和位寬度r的被乘法 變量進行儲存的存儲區(qū)域,將所述第三數(shù)組的各元素作為對應的所述第一數(shù)組的各元素向 所述積和運算電路輸出,將所述被乘法變量作為所述第二數(shù)組的各元素向所述被乘數(shù)儲存 用寄存器輸出。
      3. 根據(jù)權利要求2所述的運算電路,其中,構成為能夠執(zhí)行第二子循環(huán)處理,在該第二子循環(huán)處理中,反復執(zhí)行將所述第三數(shù)組 的各元素作為對應的所述第一數(shù)組的各元素進行使用的所述第二讀出處理、所述積和運算 處理、所述寫入處理、以及所述第二循環(huán)計數(shù)器值的更新,至少執(zhí)行主循環(huán)處理,在該主循環(huán)處理中,依次反復執(zhí)行通常的所述第一讀出處理、所 述第一子循環(huán)處理、將所述被乘法變量作為所述第二數(shù)組的各元素進行使用的另外的第一 讀出處理、所述第二子循環(huán)處理、以及所述第一循環(huán)計數(shù)器值的更新。
      4. 一種RSA密碼電路,其中,使用權利要求1 3的任何一項所述的用于蒙哥馬利乘法的運算電路,進行RSA密碼 的加密處理或解密處理的至少任何一方。
      全文摘要
      本發(fā)明提供一種用于蒙哥馬利乘法的運算電路,其能夠僅使用1端口RAM進行蒙哥馬利乘法。該運算電路能夠執(zhí)行從對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的第二讀出處理;將運算結果數(shù)據(jù)(FH)寫入寄存器(R2),并且將運算結果數(shù)據(jù)(FL)作為t[j]寫入到存儲器(M1)的寫入處理,在第一讀出處理執(zhí)行后,執(zhí)行第一子循環(huán)處理,該第一子循環(huán)處理反復執(zhí)行第二讀出處理、積和運算處理、寫入處理。
      文檔編號G06F7/72GK101782846SQ20101000299
      公開日2010年7月21日 申請日期2010年1月15日 優(yōu)先權日2009年1月15日
      發(fā)明者大山茂郎 申請人:夏普株式會社
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1