JP5097138B2 - モンゴメリ乗算のための演算回路及び暗号回路 - Google Patents

モンゴメリ乗算のための演算回路及び暗号回路 Download PDF

Info

Publication number
JP5097138B2
JP5097138B2 JP2009006262A JP2009006262A JP5097138B2 JP 5097138 B2 JP5097138 B2 JP 5097138B2 JP 2009006262 A JP2009006262 A JP 2009006262A JP 2009006262 A JP2009006262 A JP 2009006262A JP 5097138 B2 JP5097138 B2 JP 5097138B2
Authority
JP
Japan
Prior art keywords
array
variable
circuit
memory
product
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
JP2009006262A
Other languages
English (en)
Other versions
JP2010164721A (ja
Inventor
茂郎 大山
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.)
Sharp Corp
Original Assignee
Sharp Corp
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 Sharp Corp filed Critical Sharp Corp
Priority to JP2009006262A priority Critical patent/JP5097138B2/ja
Priority to US12/686,185 priority patent/US8291223B2/en
Priority to CN2010100029957A priority patent/CN101782846B/zh
Publication of JP2010164721A publication Critical patent/JP2010164721A/ja
Application granted granted Critical
Publication of JP5097138B2 publication Critical patent/JP5097138B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

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)
  • 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)

Description

本発明は、モンゴメリ乗算のための演算回路、及び、モンゴメリ乗算のための演算回路を用いて暗号化処理及び復号化処理を行う暗号回路に関する。
インターネット等のネットワークを利用して契約や決済を行う電子商取引には、例えば、ネットワーク上で商品を販売する電子商店による商取引(企業と消費者間の商取引)があり、消費者は、電子商店のWebサイトを閲覧して商品を選択し、決済方法を指定して購入することができる。
このような電子商取引では、成りすましや盗聴、改ざんの防止等のセキュリティの確保が課題となっており、例えば、成りすましを防止するための認証技術の一つとして、公開鍵暗号が利用されている。ここで、公開鍵暗号は、暗号化のための暗号化鍵と復号化のための復号化鍵の異なる2つの鍵を用いるものであり、暗号化鍵からの復号化鍵の推測、及び、暗号文の解読は、極めて困難、或いは、不可能となっている。鍵の所有者は、暗号化鍵(公開鍵)を公開し、復号化鍵(秘密鍵)を第3者に知られないように管理することにより、公開鍵を利用する相手側の情報が第3者に知られないようにすることができる。
例えば、上述した電子商店と消費者の間の商取引では、電子商店が、暗号化鍵(公開鍵)を一般に公開し、復号化鍵(秘密鍵)を第3者に知られないように管理する。消費者は、電子商店側が公開している暗号化鍵(公開鍵)を利用して、商取引に関する情報を暗号化して電子商店に送信する。電子商店は、消費者から受け取った暗号文を復号化鍵(秘密鍵)で復号化し、消費者に対し商品の販売を行う。鍵の所有者である電子商店は、復号化鍵(秘密鍵)を第3者に知られないように管理することにより、商取引に関する情報が第3者に知られるのを防止でき、消費者の個人情報等が第3者に知られるのを防止することができる。
公開鍵暗号としては、例えば、RSA(Rivest Shamir Adleman)暗号がある。RSA暗号は、解読するために、非常に大きな整数の素因数分解が必要であり、コンピュータによる解読であっても、現実的な計算時間での解読は困難となっている。
以下、RSA暗号の暗号化方法及び復号化方法について簡単に説明する。
公開鍵(e、n)を用いて平文Mを暗号化し、暗号文Cを生成する場合、暗号文Cは、以下の数1により生成される。
[数1]
C=Mmodn
(但し、0≦M<n)
秘密鍵(d、n)を用いて暗号文Cを復号化し、平文Mを生成する場合、平文Mは、以下の数2により生成される。
[数2]
M=Cmodn
尚、公開鍵(e、n)、秘密鍵(d、n)には、以下の数3の関係がある。
[数3]
n=p×q(p、qは素数)
e×d≡1mod(p−1)(q−1)
具体的には、例えば、p=3、q=11、e=3、d=7とすると、平文M=7を暗号化して得られる暗号文Cは、数1より、C=73mod(3×11)=343mod33=13となる。
また、暗号文C=13を復号化して得られる平文Mは、数2より、M=13mod33=62748517mod33=7となる。従って、数1及び数2による暗号化及び復号化は、正しく行われることが分かる。
ところで、上述したRSA暗号では、数1及び数2に示すように、べき乗演算、剰余演算を行っている。一般的に、鍵や平文は、1024ビット以上の非常に大きな桁数となるため、演算装置上で数1及び数2をそのまま用いて暗号化及び復号化を行うと、桁あふれを起こす可能性がある。
このため、RSA暗号の暗号化及び復号化では、例えば、桁あふれしない剰余演算の手法の一例であるモンゴメリ乗算が用いられる。モンゴメリ乗算では、Nビットの剰余算をNビットのメモリ空間で行うことができる。
以下、モンゴメリ乗算について簡単に説明する。
RSA暗号の数1式C=Mmodnの右辺は、Mmodn=M×Mmodn、Mmodn=M×Mmodn、…Mmodn=M×Me−1modnのように、逐次計算で求められる。即ち、γ=α×βmodnを繰り返し行うことで計算できる。
ここで、モンゴメリ乗算では、コンピュータ上における乗算のため、定数R=2を用いる。γ=α×βmodnの両辺にRをかけてmodnをとると、γRmodn=αR×βR×R−1modnとなる。ここで、Z=γRmodn、A=αRmodn、B=βRmodnとすると、モンゴメリ乗算の演算式は、以下の数4で表される。
[数4]
Z=A×B×R−1modn
ここで、図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の演算式は、メインループ内のサブループ内にあり、演算回数((s−1)×(s−1))が最も多くなっている。従って、RSA暗号の暗号化及び復号化の高速化のために、モンゴメリ演算における(C,S):=t[j]+a[j]*b[i]+Cの演算を高速に行うことが求められている。尚、図9中の*は、積算(×)を示している。
ここで、モンゴメリ乗算を高速に行う演算装置としては、例えば、ビット幅rの変数x、x、x、xを夫々格納する第1乃至第4レジスタと、2ポートRAM(Random Access Memory)で構成されるメモリAと、2ポートRAMまたは1ポートRAMで構成されるメモリBと、第1乃至第4レジスタから変数x、x、x、xを受け付けて、変数xと、変数xと変数xの積算結果と、変数xの和を算出し、ビット幅2rまたは2r+1の演算結果Qを出力するパイプライン処理を実行可能な演算器と、を備え、パイプライン処理の実行後、演算結果Qの下位rビットからなるデータQをメモリAに、演算結果Qの上位rビットからなるデータQを第4レジスタに書き込むメモリ書き込み処理と、メモリAから変数xを読み出して第1レジスタに出力し、メモリBから変数xを読み出して第3レジスタに出力するメモリ読み出し処理を実行する演算回路が提案されている(例えば、特許文献1参照)。
ここで、図10は、上記特許文献1に記載の演算回路の概略構成例を示している。また、図11(a)は、メモリ読み出し処理(メモリリードサイクル)及びメモリ書き込み処理(メモリライトサイクル)をシリアルに行う場合の処理の流れを、図11(b)は、上記特許文献1において、メモリBが2ポートRAMで構成され、メモリ読み出し処理及びメモリ書き込み処理をパイプラインで行う場合の処理の流れを示している。
図11から分かるように、特許文献1に記載の演算回路では、メモリ読み出し処理及びメモリ書き込み処理をパイプラインで行えるので、メモリ読み出し処理及びメモリ書き込み処理をシリアルに行う場合に比べ、高速化できる。
特開2002−207589号公報
しかしながら、一般的に、モンゴメリ乗算を演算回路で行う場合において、例えば、ASIC(Application Specific Integrated Circuit、特定用途向け集積回路)で演算回路を実現する場合、2ポートRAMは、標準のASICライブラリでサポートされていない場合が多い。また、2ポートRAMがサポートされている場合でも、2リード2ライト方式による面積の大きな2ポートRAMしかサポートされていない場合がある。回路設計の標準化やIP(intellectual property)化の観点からは、確実にサポートされていない場合が多い2ポートRAMを用いることは好ましくない。
本発明は上記の問題に鑑みてなされたものであり、その目的は、1ポートRAMのみを用いてモンゴメリ乗算を行うことを可能にするモンゴメリ乗算のための演算回路を提供する点にある。また、1ポートRAMのみを用いてモンゴメリ乗算を行うことが可能なRSA暗号回路を提供する。
上記目的を達成するための本発明に係るモンゴメリ乗算のための演算回路は、ビット幅rの第1変数、第2変数、第3変数、第4変数を受け付け、前記第3変数と、前記第1変数と前記第2変数の積算結果と、前記第4変数の和を演算してビット幅2rの演算結果データを出力する積和演算処理を行う積和演算回路と、ビット幅r、要素数sの中間結果格納用配列を格納する記憶領域を備えた同期式1ポートRAMで構成され、前記中間結果格納用配列の各要素を前記第3変数として前記積和演算回路に出力する第1メモリと、ビット幅r、要素数sの第1配列及び第2配列を格納する記憶領域を備えた同期式1ポートRAMで構成され、前記第1配列の各要素を前記第1変数として前記積和演算回路に出力する第2メモリと、前記第2メモリから前記第2配列を要素単位で受け付けて記憶し、前記第2変数として前記積和演算回路に出力する被乗数格納用レジスタと、前記演算結果データの内の上位rビットからなる上位ビット側データを受け付けて記憶し、前記第4変数として前記積和演算回路に出力するキャリーレジスタと、を備えて構成され、前記第2メモリから、所定の第1ループカウンタ値で示される前記第2配列の要素を読み出して前記被乗数格納用レジスタに格納する第1読み出し処理と、前記第2メモリから所定の第2ループカウンタ値で示される前記第1配列の要素を読み出し、前記第1メモリから前記第2ループカウンタ値で示される前記中間結果格納用配列の要素を読み出し、前記被乗数格納用レジスタの値を読み出し、前記キャリーレジスタの値を読み出し、夫々、前記積和演算回路に入力する第2読み出し処理と、前記キャリーレジスタに前記上位ビット側データを書き込むと共に、前記第1メモリに、前記演算結果データの内の下位rビットからなる下位ビット側データを、前記第2ループカウンタ値で示される前記中間結果格納用配列の要素として書き込む書き込み処理と、を実行可能に構成され、前記第2読み出し処理、前記積和演算処理、前記書き込み処理、及び、前記第2ループカウンタ値の更新をこの順に繰り返し実行する第1サブループ処理を、前記第1読み出し処理の実行後に実行することを第1の特徴とする。
上記特徴の本発明に係るモンゴメリ乗算のための演算回路は、前記第2メモリが、更に、ビット幅r、要素数sの第3配列と、ビット幅rの被乗算変数を格納する記憶領域を備え、前記第3配列の各要素を対応する前記第1配列の各要素として前記積和演算回路に出力し、前記被乗算変数を前記第2配列の各要素として前記被乗数格納用レジスタに出力するように構成されていることを第2の特徴とする。
上記特徴の本発明に係るモンゴメリ乗算のための演算回路は、前記第3配列の各要素を対応する前記第1配列の各要素として用いた前記第2読み出し処理、前記積和演算処理、前記書き込み処理、及び、前記第2ループカウンタ値の更新をこの順に繰り返し実行する第2サブループ処理を実行可能に構成され、少なくとも、通常の前記第1読み出し処理、前記第1サブループ処理、前記被乗算変数を前記第2配列の各要素として用いた前記第1読み出し処理、前記第2サブループ処理、及び、前記第1ループカウンタ値の更新を、この順に繰り返し実行するメインループ処理を実行することを第3の特徴とする。
上記目的を達成するための本発明に係るRSA暗号回路は、上記第1〜第3の特徴のモンゴメリ乗算のための演算回路を用い、RSA暗号の暗号化処理または復号化処理の少なくとも何れか一方を行うことを特徴とする。
上記第1の特徴のモンゴメリ乗算のための演算回路によれば、2ポートRAMを用いずに1ポートRAMのみを用いて構成されているので、例えば、ASICで暗号化及び復号化を行う暗号回路を構成する場合等において、ASICライブラリに依存しない汎用性の高い回路を実現できる。これにより、上記第1の特徴のモンゴメリ乗算のための演算回路は、よりモンゴメリ乗算のための演算回路の標準化やIP化に有用である。
また、上記特徴のモンゴメリ乗算のための演算回路によれば、書き込み処理において、積和演算回路から出力される演算結果データの内、上位ビット側データを前記キャリーレジスタに、下位ビット側データを前記第1メモリに書き込むように構成されているので、積和演算処理と書き込み処理を並行して実行するように制御すれば、回路全体で、演算速度を高速にすることができる。
本発明に係るモンゴメリ乗算のための演算回路を用いて構成されたRSA暗号回路を搭載したICカードの概略部分構成例を示す概略部分ブロック図である。 本発明に係るRSA暗号回路の処理アルゴリズムを示すフローチャートである。 本発明に係るモンゴメリ乗算のための演算回路の概略構成例を示す概略ブロック図である。 同期式1ポートRAMの概略構成例を示す概略ブロック図である。 同期式1ポートRAMの動作を説明するためのタイミング図である。 本発明に係るモンゴメリ乗算のための演算回路の処理アルゴリズムの内、第1サブループ処理の処理アルゴリズムを示すフローチャートである。 本発明に係るモンゴメリ乗算のための演算回路の処理アルゴリズムの内、第1サブループ処理の動作を説明するためのタイミング図である。 本発明に係るモンゴメリ乗算のための演算回路の処理アルゴリズムの内、第1サブループ処理の流れを模式的に示す模式図である。 モンゴメリ演算を演算装置で行う場合における演算装置の動作を説明するためのプログラムコードを示す図である。 従来技術に係る演算回路の概略構成例を示す概略ブロック図である。 従来技術に係る演算回路において、メモリ読み出し処理とメモリ書き込み処理をシリアルに行う場合とパイプラインで行う場合の処理の流れを模式的に示す模式図である。
以下、本発明に係るモンゴメリ乗算のための演算回路(以下、適宜「本発明回路」と略称する)、及びRSA暗号回路の実施形態を図面に基づいて説明する。
本発明回路及び本発明回路を用いたRSA暗号回路の一実施形態について、図1〜図8を基に説明する。
ここで、図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に示すプログラムコードで用いられるカウント値の内、メインループ処理の処理回数を制御する第1ループカウント値iを生成する第1カウンタ回路(図示せず)と、図9に示すプログラムコードで用いられるカウント値の内、サブループ処理の処理回数を制御する第2ループカウント値jを生成する第2カウンタ回路(図示せず)を備えて構成されている。
ここで、図2は、本実施形態におけるRSA暗号回路103の処理アルゴリズムを示している。具体的には、RSA暗号回路103は、先ず、平文M、定数R=2を用いてモンゴメリ変換を行い(ステップ#101)、暗号化鍵e=K[k−1:0]を読み出し(#102)、変数iの値をk−1に初期化する(ステップ#103)。その後、本発明回路1が、A=AAR−1modnで表される2乗算のモンゴメリ乗算を行い(ステップ#104)、K[i]=1の場合は(ステップ#105で「YES」分岐)、本発明回路1が、A=ABR−1modnで表される掛け算のモンゴメリ乗算を行う(ステップ#106)。変数i≠0の場合は(ステップ#107で「NO」分岐)、iを1減算して(ステップ#108)ステップ#104に移行する。変数i=0の場合は(ステップ#107で「YES」分岐)、C=AR−1modnで表されるモンゴメリ逆変換を行い(ステップ#109)、処理を終了する。
本発明回路1は、図9のプログラムコードで示される処理を行うように構成されており、図3に示すように、ビット幅rの第1変数X、第2変数Y、第3変数Z、第4変数Cを受け付け、第3変数Zと、第1変数Xと第2変数Yの積算結果と、第4変数Cの和(F=Z+X*Y+C)を演算してビット幅2rの演算結果データFを出力する積和演算処理を行う積和演算回路10と、ビット幅r、要素数sの中間結果格納用配列tを格納する記憶領域を備えた同期式1ポートRAMで構成され、中間結果格納用配列tの各要素を第3変数Zとして積和演算回路10に出力する第1メモリM1と、ビット幅r、要素数sの第1配列a[s−1:0]及び第2配列b[s−1:0]を格納する記憶領域を備えた同期式1ポートRAMで構成され、第1配列a[s−1:0]の各要素を第1変数Xとして積和演算回路10に出力する第2メモリM2と、第2メモリM2から第2配列b[s−1:0]を要素単位で受け付けて記憶し、第2変数Yとして積和演算回路10に出力する被乗数格納用レジスタR1と、演算結果データFの内の上位rビットからなる上位ビット側データFを受け付けて記憶し、第4変数Cとして積和演算回路10に出力するキャリーレジスタR2と、を備えて構成されている。
尚、本実施形態では、本発明回路1が、図9に示す第1サブループ処理及び第2サブループ処理を含むメインループ処理を実行可能に構成されている場合を想定して説明するが、サブループ処理毎に本発明回路1を構成しても良い。
より具体的には、第1メモリM1は、本実施形態では、要素数がs+2の中間結果格納用配列t[s+1:0]を記憶可能な記憶領域を備えている。本実施形態では、中間結果格納用配列tの内、t[s−1:0]を第1サブループ処理及び第2サブループ処理のために、t[s]、t[s+1]をメインループ処理の実行のために用いるように構成されている。
ここで、図4は、本実施形態の第1メモリM1及び第2メモリM2の概略構成例を示している。また、図5(a)は、本実施形態の第1メモリM1及び第2メモリM2の読み出し処理における動作タイミングを、図5(b)は、本実施形態の第1メモリM1及び第2メモリM2の書き込み処理における動作タイミングを、夫々示している。同期式1ポートRAMである第1メモリM1は、図5(a)に示すように、読み出し処理において、クロック信号CLKに同期して動作し、チップイネーブル信号CE#がLレベルの場合に、アドレス信号ADによって示される記憶領域に記憶されたデータDを、出力端子DOUTから出力する。同様に、第1メモリM1は、図5(b)に示すように、書き込み処理において、クロック信号CLKに同期して動作し、チップイネーブル信号CE#がLレベルの場合に、アドレス信号ADによって示される記憶領域に、データ入力端子DINから入力されたデータDを書き込む。
尚、本実施形態では、メインループ処理のために、中間結果格納用配列tの要素数をs+2としているが、本発明回路をサブループ処理のみを行うように構成した場合等には、中間結果格納用配列tの要素数をsとしても良い。また、第1メモリM1には、中間結果格納用配列t以外の変数を格納可能に構成しても良い。
第2メモリM2は、本実施形態では、第1サブループ処理を実行するための第1配列a[s−1:0]及び第2配列b[s−1:0]を記憶するための記憶領域に加え、図9に示す第2サブループ処理を実行するために、更に、ビット幅r、要素数sの第3配列n[s−1:0]と、ビット幅rの被乗算変数mを格納する記憶領域を備えている。
第2メモリM2は、第2サブループ処理では、第3配列n[s−1:0]の各要素を対応する第1配列a[s−1:0]の各要素として積和演算回路10に出力し、被乗算変数mを第2配列b[s−1:0]の各要素として被乗数格納用レジスタR1に出力するように構成されている。尚、第2メモリM2は、第1メモリM1と同じ構成(図4)であり、同じ動作タイミング(図5)で動作する。
本発明回路1は、第2メモリM2から、第1ループカウンタ値iで示される第2配列b[s−1:0]の要素を読み出して被乗数格納用レジスタR1に格納する第1読み出し処理と、第2メモリM2から第2ループカウンタ値jで示される第1配列a[s−1:0]の要素を読み出し、第1メモリM1から第2ループカウンタ値jで示される中間結果格納用配列tの要素を読み出し、被乗数格納用レジスタR1の値RXを読み出し、キャリーレジスタR2の値RCを読み出し、夫々、積和演算回路10に入力する第2読み出し処理と、キャリーレジスタR2に上位ビット側データFを書き込むと共に、第1メモリM1に、演算結果データFの内の下位rビットからなる下位ビット側データFを、第2ループカウンタ値jで示される中間結果格納用配列tの要素として書き込む書き込み処理と、を実行可能に構成され、第2読み出し処理、積和演算処理、書き込み処理、及び、第2ループカウンタ値jの更新を繰り返し実行する第1サブループ処理を、第1読み出し処理の実行後に実行するように構成されている。
更に、本発明回路1は、第3配列n[s−1:0]の各要素を対応する第1配列a[s−1:0]の各要素として用いた第2読み出し処理、積和演算処理、書き込み処理、及び、第2ループカウンタ値jの更新を繰り返し実行する第2サブループ処理を実行可能に構成されている。
本発明回路1は、図9に示すプログラムコードの実行のために、少なくとも、通常の第1読み出し処理、第1サブループ処理、被乗算変数mを第2配列b[s−1:0]の各要素として用いた第1読み出し処理、第2サブループ処理、及び、第1ループカウンタ値iの更新を、この順に繰り返し実行するメインループ処理を実行するように構成されている。
ここで、図6は、図9に示すプログラムコードの内、実行回数が最も多い第1サブループ処理の処理アルゴリズムについて示しており、図7は、第1サブループ処理を実行したときの本発明回路1を構成する各回路の動作タイミングを示している。尚、図7において、Mn_CE#(n=1、2)は、第1メモリM1、第2メモリM2夫々のチップイネーブル信号を、Mn_WE#は、第1メモリM1、第2メモリM2夫々のライトイネーブル信号を、Mn_DOUTは第1メモリM1、第2メモリM2夫々の出力信号の値を示している。
本発明回路1は、第1サブループ処理を開始すると、先ず、第1メモリM1の中間結果格納用配列tの内、t[s−1:0]を初期化し、キャリーレジスタR2の値RCを0に初期化する(ステップ#210)。続いて、第2カウンタ回路を初期化して第2ループカウンタ値jの値を0に設定する(ステップ#220)。引き続き、本発明回路1は、第2メモリM2からb[i]を読み出して被乗数格納用レジスタR1に格納する(ステップ#230、第1読み出し処理)。
引き続き、本発明回路1は、第1メモリM1からt[j]を読み出し(ステップ#241)、第2メモリM2からa[j]を読み出し(ステップ#242)、被乗数格納用レジスタR1の値RX(=b[i])を読み出し(ステップ#243)、キャリーレジスタR2の値RCを読み出し(ステップ#244)、夫々、積和演算回路10に入力する(ステップ#240、第2読み出し処理)。尚、ステップ#241〜ステップ#244は、ここでは、並行して実行する。
ステップ#240の第2読み出し処理の実行後、本発明回路1の積和演算回路10が、ステップ#240で入力された各値を用いて、t[j]+a[j]*b[j]+RCを演算し、その結果を2rビットの結果データFとして出力する(ステップ#250、積和演算処理)。更に、本発明回路1は、キャリーレジスタR2に前回の上位ビット側データF(i=0、j=0の場合は初期値0)を書き込み(ステップ#261)、並行して、第1メモリM1に、下位ビット側データF(i=0、j=0の場合は初期値0)をt[j]として書き込む(ステップ#262)ことにより、書き込み処理(ステップ#260)を実行する。尚、ステップ#250の積和演算処理とステップ#260の書き込み処理は並行して実行する。
引き続き、本発明回路1は、第2ループカウンタ値jの値がs−1でない場合(ステップ#270で「NO」分岐)、第2ループカウンタ値jの値を1つインクリメントし(ステップ#280)、ステップ#240に移行する。本発明回路1は、第2ループカウンタ値jの値がs−1である場合(ステップ#270で「YES」分岐)、第1サブループ処理を終了する。
ここで、図8は、本発明回路1の第1サブループ処理の流れを示している。図7及び図8から分かるように、本発明回路1は、積和演算回路10による積和演算処理と、第1メモリM1及びキャリーレジスタR2に対する書き込み処理を並行して実行できる。従って、積和演算回路10に各変数を入力する第2読み出し処理を実行するメモリリードサイクルと、前回の積和演算回路10における演算結果を第1メモリM1及びキャリーレジスタR2に書き込む書き込み処理及び積和演算処理を実行するメモリライトサイクルの2つのサイクルで1つのループサイクルを構成することができ、図11に示す従来技術のように、3つまたは4つのサイクルで1つのループサイクルを構成する場合に比べ、演算処理時間の高速化を図ることができる。
尚、図2から分かるように、本実施形態のRSA暗号回路103では、モンゴメリ乗算が繰り返し行われており、本発明回路1によりモンゴメリ乗算を行うように構成すれば、1ポートRAMのみを用いてモンゴメリ乗算を行うことが可能になり、ASICライブラリに依存しない汎用性の高いRSA暗号回路103を実現できる。また、上述したように、本発明回路1では、従来のモンゴメリ乗算のための演算回路に比べ、演算処理時間の高速化を図ることができることから、モンゴメリ乗算を繰り返し実行するRSA暗号回路103の高速化を図ることができる。即ち、本発明回路1は、モンゴメリ乗算の繰り返し回数が多い暗号回路や演算回路に特に有用である。
〈別実施形態〉
〈1〉上記実施形態では、RSA暗号回路103がICカード100に搭載されており、本発明回路1を用いて暗号化処理を行う場合について説明したが、例えば、ICカードリーダ等に搭載されるRSA暗号回路103等では、本発明回路1を用いて復号化処理を行うように構成しても良い。
〈2〉上記実施形態では、本発明回路1をRSA暗号回路103に用いる場合について説明したが、モンゴメリ乗算を利用する他の暗号回路や演算回路で用いても良い。
1 本発明に係るモンゴメリ乗算のための演算回路
10 積和演算回路
100 ICカード
101 I/O
102 CPU
103 本発明に係るRSA暗号回路
103a ループカウンタ回路
104 ROM
105 RAM
106 不揮発性メモリ
M1 第1メモリ
M2 第2メモリ
R1 被乗数格納用レジスタ
R2 キャリーレジスタ
a[s−1:0] 第1配列
b[s−1:0] 第2配列
t[s+1:0] 中間結果格納用配列
n[s−1:0] 第3配列
m 被乗算変数

Claims (4)

  1. ビット幅rの第1変数、第2変数、第3変数、第4変数を受け付け、前記第3変数と、前記第1変数と前記第2変数の積算結果と、前記第4変数の和を演算してビット幅2rの演算結果データを出力する積和演算処理を行う積和演算回路と、
    ビット幅r、要素数sの中間結果格納用配列を格納する記憶領域を備えた同期式1ポートRAMで構成され、前記中間結果格納用配列の各要素を前記第3変数として前記積和演算回路に出力する第1メモリと、
    ビット幅r、要素数sの第1配列及び第2配列を格納する記憶領域を備えた同期式1ポートRAMで構成され、前記第1配列の各要素を前記第1変数として前記積和演算回路に出力する第2メモリと、
    前記第2メモリから前記第2配列を要素単位で受け付けて記憶し、前記第2変数として前記積和演算回路に出力する被乗数格納用レジスタと、
    前記演算結果データの内の上位rビットからなる上位ビット側データを受け付けて記憶し、前記第4変数として前記積和演算回路に出力するキャリーレジスタと、を備えて構成され、
    前記第2メモリから、所定の第1ループカウンタ値で示される前記第2配列の要素を読み出して前記被乗数格納用レジスタに格納する第1読み出し処理と、
    前記第2メモリから所定の第2ループカウンタ値で示される前記第1配列の要素を読み出し、前記第1メモリから前記第2ループカウンタ値で示される前記中間結果格納用配列の要素を読み出し、前記被乗数格納用レジスタの値を読み出し、前記キャリーレジスタの値を読み出し、夫々、前記積和演算回路に入力する第2読み出し処理と、
    前記キャリーレジスタに前記上位ビット側データを書き込むと共に、前記第1メモリに、前記演算結果データの内の下位rビットからなる下位ビット側データを、前記第2ループカウンタ値で示される前記中間結果格納用配列の要素として書き込む書き込み処理と、を実行可能に構成され、
    前記第2読み出し処理、前記積和演算処理、前記書き込み処理、及び、前記第2ループカウンタ値の更新を繰り返し実行する第1サブループ処理を、前記第1読み出し処理の実行後に実行することを特徴とするモンゴメリ乗算のための演算回路。
  2. 前記第2メモリが、更に、ビット幅r、要素数sの第3配列と、ビット幅rの被乗算変数を格納する記憶領域を備え、前記第3配列の各要素を対応する前記第1配列の各要素として前記積和演算回路に出力し、前記被乗算変数を前記第2配列の各要素として前記被乗数格納用レジスタに出力するように構成されていることを特徴とする請求項1に記載のモンゴメリ乗算のための演算回路。
  3. 前記第3配列の各要素を対応する前記第1配列の各要素として用いた前記第2読み出し処理、前記積和演算処理、前記書き込み処理、及び、前記第2ループカウンタ値の更新を繰り返し実行する第2サブループ処理を実行可能に構成され、
    少なくとも、通常の前記第1読み出し処理、前記第1サブループ処理、前記被乗算変数を前記第2配列の各要素として用いた前記第1読み出し処理、前記第2サブループ処理、及び、前記第1ループカウンタ値の更新を、この順に繰り返し実行するメインループ処理を実行することを特徴とする請求項2に記載のモンゴメリ乗算のための演算回路。
  4. 請求項1〜3の何れか1項に記載のモンゴメリ乗算のための演算回路を用い、RSA暗号の暗号化処理または復号化処理の少なくとも何れか一方を行うことを特徴とするRSA暗号回路。
JP2009006262A 2009-01-15 2009-01-15 モンゴメリ乗算のための演算回路及び暗号回路 Expired - Fee Related JP5097138B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2009006262A JP5097138B2 (ja) 2009-01-15 2009-01-15 モンゴメリ乗算のための演算回路及び暗号回路
US12/686,185 US8291223B2 (en) 2009-01-15 2010-01-12 Arithmetic circuit for montgomery multiplication and encryption circuit
CN2010100029957A CN101782846B (zh) 2009-01-15 2010-01-15 用于蒙哥马利乘法的运算电路及密码电路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2009006262A JP5097138B2 (ja) 2009-01-15 2009-01-15 モンゴメリ乗算のための演算回路及び暗号回路

Publications (2)

Publication Number Publication Date
JP2010164721A JP2010164721A (ja) 2010-07-29
JP5097138B2 true JP5097138B2 (ja) 2012-12-12

Family

ID=42336964

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009006262A Expired - Fee Related JP5097138B2 (ja) 2009-01-15 2009-01-15 モンゴメリ乗算のための演算回路及び暗号回路

Country Status (3)

Country Link
US (1) US8291223B2 (ja)
JP (1) JP5097138B2 (ja)
CN (1) CN101782846B (ja)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
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 飞天诚信科技股份有限公司 一种在嵌入式系统中实现大数预计算的方法
JP2017503232A (ja) * 2013-12-28 2017-01-26 インテル・コーポレーション Rsaアルゴリズム加速プロセッサ、方法、システム、及び命令
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 莱芜凤凰建工集团有限公司 一种房屋建筑墙体结构及施工方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
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카드
US6963644B1 (en) * 1999-04-07 2005-11-08 Matsushita Electric Industrial Co., Ltd. Multi-word arithmetic device for faster computation of cryptosystem calculations
JP3934290B2 (ja) * 1999-09-30 2007-06-20 株式会社東芝 離散コサイン変換処理装置、逆離散コサイン変換処理装置及び離散コサイン変換処理装置・逆離散コサイン変換処理装置
JP2002007112A (ja) * 2000-06-20 2002-01-11 Sony Corp 剰余演算計算方法および剰余演算計算装置
JP3709553B2 (ja) * 2000-12-19 2005-10-26 インターナショナル・ビジネス・マシーンズ・コーポレーション 演算回路および演算方法
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
JP4408712B2 (ja) * 2004-01-26 2010-02-03 富士通マイクロエレクトロニクス株式会社 多倍長データ積和演算処理回路及びモンゴメリ積和剰余演算回路
US8028015B2 (en) * 2007-08-10 2011-09-27 Inside Contactless S.A. Method and system for large number multiplication

Also Published As

Publication number Publication date
JP2010164721A (ja) 2010-07-29
CN101782846A (zh) 2010-07-21
US8291223B2 (en) 2012-10-16
CN101782846B (zh) 2012-08-08
US20100183145A1 (en) 2010-07-22

Similar Documents

Publication Publication Date Title
JP5097138B2 (ja) モンゴメリ乗算のための演算回路及び暗号回路
KR100693239B1 (ko) 정보 처리 장치, ic 카드
KR100373669B1 (ko) 비밀 정보의 처리 장치, 비밀 정보의 처리 프로그램을 기록한 기록 매체 및 처리 시스템
US7639808B2 (en) Elliptic curve cryptosystem apparatus, elliptic curve cryptosystem method, elliptic curve cryptosystem program and computer readable recording medium storing the elliptic curve cryptosystem program
CN100583739C (zh) 加密装置、加密方法及其存储介质
JP4668931B2 (ja) 電力解析攻撃に対する耐タンパ性を持った暗号化処理装置
JP4199937B2 (ja) 耐タンパー暗号処理方法
EP1816624A1 (en) Encryption computing device
JP4909403B2 (ja) 安全にデータを求める方法
JP2002297033A (ja) 情報処理装置の演算方法および耐タンパー演算撹乱実装方式
US7835517B2 (en) Encryption processing apparatus, encryption processing method, and computer program
US8300810B2 (en) Method for securely encrypting or decrypting a message
EP3503459B1 (en) Device and method for protecting execution of a cryptographic operation
Hutter et al. NaCl’s crypto_box in hardware
US20100183142A1 (en) Encryption Processing Apparatus, Encryption Processing Method, and Computer Program
Pereira et al. x-only point addition formula and faster compressed SIKE
KR101154845B1 (ko) 스칼라 배산기 및 스칼라 배산프로그램
WO2008013154A1 (en) Extension filed multiplication program and extension filed multiplication device
JP2010271363A (ja) モンゴメリ乗算回路、rsa暗号回路、及び、icカード
JP5179933B2 (ja) データ処理装置
US20240163074A1 (en) Circuit for a Combined Key Value-Dependent Exchange and Randomization of Two Values
US20240163085A1 (en) Method for Combined Key Value-Dependent Exchange and Randomization of Two Input Values
JP2014145958A (ja) 半導体装置
JP2004053814A (ja) 楕円曲線暗号装置及び楕円曲線暗号演算方法
JPH11288215A (ja) Icカ―ド

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110223

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120817

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20120828

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120921

R150 Certificate of patent or registration of utility model

Ref document number: 5097138

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150928

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees