モンゴメリ乗算回路、RSA暗号回路、及び、ICカード
【課題】 回路規模及び消費電力を増大させることなく外部からの消費電力解析が困難なセキュリティ性の高いモンゴメリ乗算回路を提供する。
【解決手段】 モンゴメリ乗算回路1は、メモリ回路11、算術回路10、及び、メモリ回路11と算術回路10間のデータの入出力を所定のアルゴリズムに基づいて制御してモンゴメリ乗算を実現する制御回路12を備えて構成され、制御回路12が、アルゴリズムを2以上有し、2以上のアルゴリズムの内の1つをランダムに選択して、選択した1つのアルゴリズムに基づいてモンゴメリ乗算の実行に係る制御を行う。
【解決手段】 モンゴメリ乗算回路1は、メモリ回路11、算術回路10、及び、メモリ回路11と算術回路10間のデータの入出力を所定のアルゴリズムに基づいて制御してモンゴメリ乗算を実現する制御回路12を備えて構成され、制御回路12が、アルゴリズムを2以上有し、2以上のアルゴリズムの内の1つをランダムに選択して、選択した1つのアルゴリズムに基づいてモンゴメリ乗算の実行に係る制御を行う。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、モンゴメリ乗算回路、及び、モンゴメリ乗算回路を用いて暗号化処理及び復号化処理を行う暗号回路に関し、特に、消費電力解析による秘密情報を暴露する攻撃から情報を守るセキュリティ機能を向上させたモンゴメリ乗算回路及び暗号回路に関する。
【背景技術】
【0002】
近年、ネットワーク技術の進歩により様々なことがネットワーク上で実現可能となってきた。例えば、インターネット等のネットワークを利用して契約や決済を行う電子商取引として、ネットワーク上で商品を販売する電子商店による商取引(企業と消費者間の商取引)があり、消費者は、自宅のパソコンからインターネットを経由して電子商店のWebサイトを閲覧して商品を選択し、決済方法を指定して購入することができる。
【0003】
このような電子商取引では、成りすましや盗聴、改ざんの防止等のセキュリティの確保が課題となっており、例えば、成りすましを防止するための認証技術の一つとして、公開鍵暗号が利用されている。ここで、公開鍵暗号は、暗号化のための暗号化鍵と復号化のための復号化鍵の異なる2つの鍵を用いるものであり、暗号化鍵からの復号化鍵の推測、及び、暗号文の解読は、極めて困難、或いは、不可能となっている。鍵の所有者は、暗号化鍵(公開鍵)を公開し、復号化鍵(秘密鍵)を第三者に知られないように管理することにより、公開鍵を利用する相手側の情報が第三者に知られないようにすることができる。
【0004】
例えば、上述した電子商店と消費者の間の商取引では、電子商店が、暗号化鍵(公開鍵)を一般に公開し、復号化鍵(秘密鍵)を第三者に知られないように管理する。消費者は、電子商店側が公開している暗号化鍵(公開鍵)を利用して、商取引に関する情報を暗号化して電子商店に送信する。電子商店は、消費者から受け取った暗号文を復号化鍵(秘密鍵)で復号化し、消費者に対し商品の販売を行う。鍵の所有者である電子商店は、復号化鍵(秘密鍵)を第三者に知られないように管理することにより、商取引に関する情報が第三者に知られるのを防止でき、消費者の個人情報等が第三者に知られるのを防止することができる。
【0005】
公開鍵暗号としては、例えば、RSA(Rivest Shamir Adleman)暗号がある。RSA暗号は、解読するために、非常に大きな整数の合成体の素因数分解が必要であり、コンピュータによる解読であっても、現実的な計算時間での解読が困難であり、非常に大きな整数の合成体の素因数分解が困難であることに安全性の根拠を置く暗号方式である。
【0006】
以下、RSA暗号の暗号化方法及び復号化方法について簡単に説明する。公開鍵(e、n)を用いて平文Mを暗号化し、暗号文Cを生成する場合、暗号文Cは、以下の数1により生成される。
【0007】
[数1]
C=Memodn
(但し、0≦M<n)
【0008】
秘密鍵(d、n)を用いて暗号文Cを復号化し、平文Mを生成する場合、平文Mは、以下の数2により生成される。
【0009】
[数2]
M=Cdmodn
【0010】
尚、公開鍵(e、n)、秘密鍵(d、n)には、以下の数3の関係がある。
【0011】
[数3]
n=p×q (p、qは素数)
e×d≡1mod(p−1)(q−1)
【0012】
具体的には、例えば、p=3、q=11、e=3、d=7とすると、平文M=7を暗号化して得られる暗号文Cは、数1より、C=73mod(3×11)=343mod33=13となる。
【0013】
また、暗号文C=13を復号化して得られる平文Mは、数2より、M=137mod33=62748517mod33=7となる。従って、数1及び数2による暗号化及び復号化は、正しく行われることが分かる。
【0014】
ところで、上述したRSA暗号では、数1及び数2に示すように、べき乗演算、剰余演算を行っている。一般的に、鍵や平文は、1024ビット以上の非常に大きな桁数となるため、演算装置上で数1及び数2をそのまま用いて暗号化及び復号化を行うと、桁あふれを起こす可能性がある。
【0015】
このため、RSA暗号の暗号化及び復号化では、例えば、桁あふれしない剰余演算の手法の一例であるモンゴメリ乗算が用いられる。モンゴメリ乗算では、Nビットの剰余算をNビットのメモリ空間で行うことができる。
【0016】
以下、モンゴメリ乗算について簡単に説明する。RSA暗号の数1に示す暗号文Cの生成式の右辺(Memodn)は、以下の数4に示す逐次計算で求められる。即ち、数5に示す演算を繰り返し行うことで計算できる。
【0017】
[数4]
M2modn=M×Mmodn,
M3modn=M×M2modn,
…
Memodn=M×Me−1modn
【0018】
[数5]
γ=α×βmodn
【0019】
ここで、モンゴメリ乗算では、コンピュータ上における乗算のため、定数R=2Nを用いる。数5の両辺にRを掛けてmodnをとると、数6となる。ここで、数7に示すように、Z、A、Bを夫々規定すると、モンゴメリ乗算の演算式は、以下の数8で表される。尚、モンゴメリ乗算の演算アルゴリズムについては、下記の非特許文献1に詳細な記載がある。
【0020】
[数6]
γRmodn=αR×βR×R−1modn
【0021】
[数7]
Z=γRmodn,
A=αRmodn,
B=βRmodn
【0022】
[数8]
Z(A,B)=A×B×R−1modn
【0023】
数8に示すモンゴメリ乗算を繰り返し実行しながら、数1に示す暗号文Cの生成式を実現する方法を左バイナリ法と言い、以下に示すStep1乃至Step4の処理工程となる。尚、以下の処理工程において、N桁の2進数eを、e={eN−1,eN−2,…,e1,e0}と表現する。ei(i=0〜N−1)はLSB側(左側)から(i+1)桁目のビット値である。
【0024】
Step1: A:=M×Rmodn
Step2: X:=1×Rmodn
Step3: for i=N−1 down to 0
X:=Z(X,X)
if ei=1 then X:=Z(X,A)
Step4: C:=Z(X,1)
【0025】
ここで、上記Step3において、ei=0の時は、Z(X,X)だけの演算が行われ、ei=1の時は、Z(X,X)とZ(X,A)の2回の演算が行われる点が重要となる。
【0026】
もし、Z(X,X)とZ(X,A)の2種類の演算が消費電力波形から判別可能となると、暗号鍵Eのビット系列が解読できることになる。つまり、如何にしてZ(X,X)とZ(X,A)の2種類の演算を消費電力波形から判別できないようにすることがセキュリティ上重要となる。
【0027】
Z(X,X)とZ(X,A)の2種類の演算を判別する攻撃法としては、Z(X,X)とZ(X,A)の入力値をメモリからロードする時間を見分ける方法がある。Z(X,X)はXという値を1つだけをメモリからロードするのに対して、Z(X,A)はXとAの2つの値をメモリからロードする。このロード時間に差があれば容易に鍵情報を推測することができる。当該攻撃法に対しては、Z(X,X)の演算でもXのロードを2回行うことにより容易に対処できる。
【0028】
しかし、解析装置の進歩により、Z(X,X)とZ(X,A)のデータを多数取り、消費電力の僅かな違いを判別し秘密情報を割り出すDPA(電力差分解析)と呼ばれる攻撃が行われる可能性がある。
【0029】
下記の特許文献1では、左バイナリ法において、Z(X,X)を実行する乗算剰余演算部と、Z(X,A)を実行する乗算剰余演算部を2つ設けた場合に、Z(X,X)の演算はべき指数のビット値に関係なく常時実行されるのに対して、Z(X,A)の演算はべき指数のビット値が1の桁のみで実行されるので、Z(X,X)とZ(X,A)の2つの乗算剰余演算部の回路動作を外部から観測することで、べき指数の値が推測でき、暗号演算回路として耐タンパー性が低い点を指摘し、その対策として、異なる2つの底のべき乗剰余演算を並列に実行する際に、図13に示すように、夫々のべき乗剰余演算に係るZ(X,X)を実行する乗算剰余演算部を1つずつ設け、夫々のべき乗剰余演算に係るZ(X,A)を実行する乗算剰余演算部を1つだけ設けて、2つのべき乗剰余演算で、夫々の演算のべき指数のビット値が1の桁のみで実行するように、交互或いはランダムな順番で共用する構成とすることで、夫々のべき乗剰余演算におけるべき指数の値の推測を困難にしている。
【先行技術文献】
【特許文献】
【0030】
【特許文献1】特開2001−202015号公報
【非特許文献】
【0031】
【非特許文献1】C. K. Koc, "Analyzing and Computing MontgomeryMultiplication Algorithms", IEEE Micro, 16(3): 26-33, June 1996.
【発明の概要】
【発明が解決しようとする課題】
【0032】
上記特許文献1による対策は、Z(X,X)とZ(X,A)の2つの演算に対して、乗算剰余演算部を夫々設け、異なる2つの底のべき乗剰余演算を並列に実行する際には有効な手段と考えられるが、Z(X,X)とZ(X,A)の2つの演算に対して、乗算剰余演算部を夫々設けない場合や、1つのべき乗剰余演算だけを行う場合には、乗算剰余演算部を3つ設ける必要がないため、回路規模が大きくなり、消費電力も増大し、ICカード用LSIのように小さなチップで非常に少ない消費電力で動作する必要がある場合には、有効な手段とは言えない。
【0033】
本発明は、モンゴメリ乗算を繰り返し実行する左バイナリ法による暗号処理における上記問題点に鑑みてなされたものであり、その目的は、回路規模及び消費電力を増大させることなく外部からの消費電力解析が困難なセキュリティ性の高いモンゴメリ乗算回路及びRSA暗号回路を提供することにある。
【課題を解決するための手段】
【0034】
上記目的を達成するため、本発明では、メモリ回路、算術回路、及び、前記メモリ回路と前記算術回路間のデータの入出力を所定のアルゴリズムに基づいて制御してモンゴメリ乗算を実現する制御回路を備えてなるモンゴメリ乗算回路であって、前記制御回路が、前記アルゴリズムを2以上有し、2以上の前記アルゴリズムの内の1つをランダムに選択して、選択した1つの前記アルゴリズムに基づいて前記モンゴメリ乗算の実行に係る制御を行うことを特徴とするモンゴメリ乗算回路を提供する。
【0035】
上記特徴のモンゴメリ乗算回路によれば、2以上のアルゴリズムの内の1つをランダムに選択して、選択したアルゴリズムに基づいてモンゴメリ乗算が実行されるので、実行毎に、アルゴリズムがランダムに異なるため、当該アルゴリズムの違いに応じて当該実行に係る消費電力も異なる結果、上記特徴のモンゴメリ乗算回路を用いてモンゴメリ乗算を繰り返し実行した場合に、被乗数と消費電力の関係が都度ランダムに変化し、消費電力の変化が複雑化し、外部からの消費電力解析が極めて困難となる。また、1つのモンゴメリ乗算回路に2以上のアルゴリズムを設け、それらをランダム選択するだけの構成で良いので、回路規模及び消費電力を大幅に増大させることなくセキュリティ性を向上させることが可能となる。
【0036】
更に好ましくは、上記特徴のモンゴメリ乗算回路は、前記制御回路が、前記2以上のアルゴリズムの各別に規定するマイクロコードを格納するコードメモリと、前記メモリ回路に対するデータの入出力制御と前記算術回路で行う算術演算の選択を行うシーケンサ回路と、乱数発生回路を備え、前記乱数発生回路が発生した乱数値に基づいて前記マイクロコードの1つを選択し、選択されたマイクロコードに沿って、前記シーケンサ回路が、前記メモリ回路と前記算術回路に対する制御を実行するように構成される。
【0037】
斯かる構成のモンゴメリ乗算回路によれば、マイクロコードを格納するコードメモリの記憶容量を、追加されたアルゴリズムのマイクロコード分だけ大きく確保するだけで、アルゴリズム毎に専用のハードウェア回路を設ける場合に比べて回路規模を小さく抑制できるとともに、簡単な回路構成で、2以上のアルゴリズムの内の1つをランダムに選択して、選択したアルゴリズムに基づいてモンゴメリ乗算が実行できるようになる。
【0038】
更に好ましくは、上記特徴のモンゴメリ乗算回路は、前記算術回路が、乗算器と加算器からなる積和演算回路で構成されている。
【0039】
斯かる構成のモンゴメリ乗算回路によれば、モンゴメリ乗算を積和演算の繰り返しで実現するCIOS(Coarsely Integrated Operand Scanning)法、及び、FIOS(Finely Integrated Operand Scanning)法等の複数のアルゴリズムを利用して、2以上のアルゴリズムの内の1つをランダムに選択して、選択したアルゴリズムに基づいてモンゴメリ乗算が実行できるようになる。また、モンゴメリ乗算を積和演算の繰り返しで実現するアルゴリズムでは、除算を用いずに剰余演算を実行できるため、計算コストを大幅に削減できる。
【0040】
更に、上記目的を達成するため、本発明では、上記特徴のモンゴメリ乗算回路を備え、左バイナリ法による暗号処理過程で実行するモンゴメリ乗算を、前記モンゴメリ乗算回路を用い、モンゴメリ乗算のアルゴリズムを2以上の前記アルゴリズムの中からランダムに選択して実行することを特徴とするRSA暗号回路を提供する。
【0041】
上記特徴のRSA暗号回路によれば、左バイナリ法による暗号処理過程で実行するモンゴメリ乗算が、実行の都度、被乗数と消費電力の関係がランダムに変化するため、消費電力の変化が複雑化し、外部からの消費電力解析が極めて困難となり、回路規模及び消費電力を大幅に増大させることなくセキュリティ性を向上させることが可能となる。
【0042】
更に、上記目的を達成するため、本発明では、上記特徴のRSA暗号回路を備えてなることを特徴とするICカードを提供する。これにより、ICカードに搭載するLSIの回路規模及び消費電力を増大させることなく、消費電力解析が極めて困難なRSA暗号回路を搭載したセキュリティ性の高いICカードが実現できる。
【0043】
更に、上記目的を達成するため、本発明では、左バイナリ法によるRSA暗号処理過程で繰り返し実行するモンゴメリ乗算を、モンゴメリ乗算のアルゴリズムを2以上の前記アルゴリズムの中からランダムに選択して実行することを特徴とするRSA暗号処理方法を提供する。
【0044】
上記特徴のRSA暗号処理方法によれば、左バイナリ法によるRSA暗号処理過程で繰り返し実行するモンゴメリ乗算が、実行の都度、被乗数と消費電力の関係がランダムに変化するため、消費電力の変化が複雑化し、外部からの消費電力解析が極めて困難となり、回路規模及び消費電力を大幅に増大させることなくセキュリティ性を向上させることが可能となる。
【図面の簡単な説明】
【0045】
【図1】本発明に係るモンゴメリ乗算回路の一実施形態における一回路構成例を示すブロック図である。
【図2】CIOS法によるモンゴメリ乗算アルゴリズムのプログラムコードを示す図である。
【図3】FIOS法によるモンゴメリ乗算アルゴリズムのプログラムコードを示す図である。
【図4】CIOS法によるモンゴメリ乗算アルゴリズムの演算処理を簡略的に図解して説明する図である。
【図5】FIOS法によるモンゴメリ乗算アルゴリズムの演算処理を簡略的に図解して説明する図である。
【図6】同期式1ポートRAMの概略構成例を示す概略ブロック図である。
【図7】同期式1ポートRAMの読み出し処理と書き込み処理の各動作を説明するためのタイミング図である。
【図8】本発明に係るRSA暗号回路の一実施形態における一回路構成例を示すブロック図である。
【図9】本発明に係るRSA暗号回路の処理アルゴリズムを示すフローチャートである。
【図10】本発明に係るモンゴメリ乗算回路を用いて構成されたRSA暗号回路を搭載したICカードの概略部分構成例を示す概略部分ブロック図である。
【図11】本発明に係るモンゴメリ乗算回路の別実施形態における一回路構成例を示すブロック図である。
【図12】本発明に係るRSA暗号回路の別実施形態における一回路構成例を示すブロック図である。
【図13】従来技術における左バイナリ法によるRSA暗号処理の乗算剰余演算に係る回路構成例を示すブロック図である。
【発明を実施するための形態】
【0046】
本発明に係るモンゴメリ乗算回路の実施の形態につき、図面に基づいて説明する。
【0047】
図1に、モンゴメリ乗算回路1の回路構成を示す。モンゴメリ乗算回路1は、図1に示すように、積和演算回路からなる算術回路10と、第1メモリM1と第2メモリM2と被乗数格納用レジスタR1とキャリーレジスタR2からなるメモリ回路11と、算術回路10とメモリ回路11間のデータの入出力を制御してモンゴメリ乗算を実現する制御回路12を備えて構成されている。
【0048】
算術回路10は、ビット幅rの第1変数X、第2変数Y、第3変数Z、第4変数Cを受け付け、第3変数Zと、第1変数Xと第2変数Yの積算結果(X×Y)と、第4変数Cの和(F=Z+X×Y+C)を演算してビット幅2rの演算結果データFを出力する積和演算処理を行う。つまり、算術回路10は、第1変数Xと第2変数Yの乗算を行う乗算器と、第3変数Zと、第1変数Xと第2変数Yの積算結果(X×Y)と、第4変数Cの加算を行う加算器で構成されている。
【0049】
第1メモリM1は、ビット幅r、要素数s+1の中間結果格納用配列tを格納する記憶領域を備えた同期式1ポートRAMで構成され、中間結果格納用配列tの各要素を第3変数Zとして積和演算回路10に出力する。
【0050】
第2メモリM2は、ビット幅r、要素数sの第1配列a[s−1:0]、第2配列b[s−1:0]、及び、第3配列n[s−1:0]と、ビット幅rの被乗算変数mを格納する記憶領域を備えた同期式1ポートRAMで構成され、第1配列a[s−1:0]の各要素または被乗算変数mを第1変数Xとして積和演算回路10に出力する。
【0051】
被乗数格納用レジスタR1は、第2メモリM2から第2配列b[s−1:0]または第3配列n[s−1:0]を要素単位で受け付けて記憶し、第2変数Yとして積和演算回路10に出力する。また、キャリーレジスタR2は、演算結果データFの内の上位rビットからなる上位ビット側データFHを受け付けて記憶し、第4変数Cとして積和演算回路10に出力する。
【0052】
制御回路12は、2以上のアルゴリズムの各別に規定するマイクロコードを格納するコードメモリ13と、メモリ回路11に対するデータの入出力制御と算術回路10で行う算術演算の選択を行うシーケンサ回路14と、乱数発生回路15を備えて構成される。モンゴメリ乗算が起動されると、制御回路12において、乱数発生回路15が乱数値を発生し、当該乱数値に基づいてマイクロコードの1つが選択され、選択されたマイクロコードに沿って、シーケンサ回路14が、メモリ回路11と算術回路10に対する制御を実行する。
【0053】
本実施形態では、シーケンサ回路14は、図2及び図3に示すプログラムコードで用いられるカウント値の内、メインループ処理の処理回数を制御する第1ループカウント値iを生成する第1ループカウンタ回路16と、図2及び図3に示すプログラムコードで用いられるカウント値の内、サブループ処理の処理回数を制御する第2ループカウント値jを生成する第2ループカウンタ回路17を備えて構成されている。
【0054】
算術回路10、第1メモリM1、第2メモリM2、被乗数格納用レジスタR1、キャリーレジスタR2の各バス幅は、第1配列a、第2配列b、第3配列n、被乗算変数mの各ビット幅と同じrビットで、一般的には16ビット或いは32ビットである。
【0055】
図2及び図3に、コードメモリ13に格納されるCIOS法とFIOS法の2つのアルゴリズムの各プログラムコードを示す。
【0056】
図2及び図3に示すプログラムコードにおける変数t[j]が第1メモリM1の中間結果格納用配列tに格納される各要素であり、各変数a[j],b[i],n[j]が第1メモリM1の第1配列a、第2配列b、及び、第3配列nに格納される各要素である。変数a[j]をj=s−1からj=0まで順番に連接した変数が数8に示すモンゴメリ乗算の変数Aに相当し、変数b[i]をi=s−1からi=0まで順番に連接した変数が数8に示すモンゴメリ乗算の変数Bに相当し、変数n[j]をj=s−1からj=0まで順番に連接した変数が数8に示すモンゴメリ乗算の変数nに相当する。更に、図2及び図3に示すプログラムコード中のWは2r(但しrはバス幅)で定義される定数であり、n’[0]は変数nの最下位ワードn[0]の2rを法とする逆数(−n[0]−1)を意味する定数である。
【0057】
図4に、図2に示すプログラムコードによるCIOS法のモンゴメリ乗算を、s=4の場合を例に、簡略的に図解する。図4において、左側の乗算(a×b[i])が、図2に示すプログラムコードの第1のサブループ内の(C,S):=t[j]+a[j]×b[i]+Cを、中央の乗算(t[0]×n’[0])が、図2に示すプログラムコードのメインループ内のm:=t[0]×n’[0]modWを、右側のn×mが、図2に示すプログラムコードのメインループ内の(C,S):=t[0]+m×n[0]を、夫々表現している。
【0058】
図5に、図3に示すプログラムコードによるFIOS法のモンゴメリ乗算を、s=4の場合を例に、簡略的に図解する。図5において、左側に、図3に示すプログラムコードの部分的な乗算(t[i]=a×b[i])によりm[i]が得られる様子が図示されており、右側に、n×m[i]の乗算結果と上記部分的な乗算結果t[i]の加算により、中間結果t[i+1]が得られる様子が図示されている。
【0059】
図2及び図3に示すように、当該各プログラムコードでは、モンゴメリ乗算が乗算と加算の繰り返しで実現されており、図1に示す回路構成の積和演算処理を行う算術回路10を備えたモンゴメリ乗算回路1で処理可能である。
【0060】
尚、コードメモリ13に格納するアルゴリズムは、図1に示す回路構成のモンゴメリ乗算回路1で処理可能な、つまり、モンゴメリ乗算を乗算と加算の繰り返しで実現するアルゴリズムであれば、上記2つのアルゴリズムに限定されるものではなく、また、格納するアルゴリズム数も3以上であっても良い。尚、図2及び図3に示す各プログラムコードでモンゴメリ乗算が実現できることは、上記非特許文献1において説明されており公知であるので、詳細な説明は割愛する。
【0061】
ところで、図2及び図3に示すプログラムコードの2つのアルゴリズムを比較すると、何れもiループ(メインループ)とその内側にjループ(サブループ)を備えた構造となっているが、CIOS法とFIOS法では、サブループの個数及びその処理内容が異なっており、当該処理において実行されるメモリ回路11の読み出し動作や書き込み動作におけるメモリ番地や読み出し及び書き込みに係るデータも異なり、それらのデータを用いた積和演算の入力値も異なるため、2つのアルゴリズム間では、実行中の消費電力波形が異なる。つまり、同じ結果が得られる演算を行っても外部に現れる消費電力波形が異なる。
【0062】
本実施形態では、モンゴメリ乗算が起動されると、制御回路12が、乱数発生回路15が発生した乱数値に基づいて、2つのアルゴリズムの何れか一方をランダムに選択して実行する構成となっているため、外部から消費電力波形を観察しても、消費電力波形の違いが入力データの違いに依るものか、アルゴリズムの違いに依るものかを区別できない。従って、本実施形態のモンゴメリ乗算回路1を用いることで、モンゴメリ乗算を繰り返し実行しながら暗号文を生成する際に、多くの入力値に対する消費電力から統計的にデータの違いにより消費電力の違いを解析するDPA等の攻撃法に対して、有効な防御策となる。
【0063】
次に、図1に示す回路構成のモンゴメリ乗算回路1の回路動作について、図2に示すCIOS法のプログラムコードの実行を例に、簡単に説明する。
【0064】
図6は、本実施形態の第1メモリM1及び第2メモリM2の概略構成例を示している。また、図7(a)は、本実施形態の第1メモリM1及び第2メモリM2の読み出し処理における動作タイミングを、図7(b)は、本実施形態の第1メモリM1及び第2メモリM2の書き込み処理における動作タイミングを、夫々示している。同期式1ポートRAMである第1メモリM1は、図7(a)に示すように、読み出し処理において、クロック信号CLKに同期して動作し、チップイネーブル信号CE#がLレベルの場合に、アドレス信号ADによって示される記憶領域に記憶されたデータDを、出力端子DOUTから出力する。同様に、第1メモリM1は、図7(b)に示すように、書き込み処理において、クロック信号CLKに同期して動作し、チップイネーブル信号CE#がLレベルの場合に、アドレス信号ADによって示される記憶領域に、データ入力端子DINから入力されたデータDを書き込む。
【0065】
モンゴメリ乗算回路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に上位ビット側データFHを書き込むと共に、第1メモリM1に、演算結果データFの内の下位rビットからなる下位ビット側データFLを、第2ループカウンタ値jで示される中間結果格納用配列tの要素として書き込む書き込み処理と、を実行可能に構成され、第2読み出し処理、積和演算処理、書き込み処理、及び、第2ループカウンタ値jの更新を繰り返し実行する第1サブループ処理を、第1読み出し処理の実行後に実行する。
【0066】
更に、モンゴメリ乗算回路1は、第3配列n[s−1:0]の各要素を対応する第1配列a[s−1:0]の各要素として用いた第2読み出し処理、積和演算処理、書き込み処理、及び、第2ループカウンタ値jの更新を繰り返し実行する第2サブループ処理を実行する。
【0067】
モンゴメリ乗算回路1は、図2に示すプログラムコードの実行のために、少なくとも、通常の第1読み出し処理、第1サブループ処理、被乗算変数mを第2配列b[s−1:0]の各要素として用いた第1読み出し処理、第2サブループ処理、及び、第1ループカウンタ値iの更新を、この順に繰り返し実行するメインループ処理を実行する。
【0068】
次に、図1に示すモンゴメリ乗算回路1を用いた本発明に係るRSA暗号回路について説明する。図8に、RSA暗号回路2の概略の回路構成を示す。本実施形態では、RSA暗号回路2は、図9に示す左バイナリ法による暗号処理アルゴリズムを実行するASIC回路20とモンゴメリ乗算回路1を備えて構成される。
【0069】
図9は、本実施形態におけるRSA暗号回路2の左バイナリ法による処理アルゴリズムを示している。具体的には、RSA暗号回路2は、先ず、平文M、定数R=2Nを用いてモンゴメリ変換を行い(ステップ#101)、暗号化鍵e=K[k−1:0]を読み出し(#102)、変数iの値をk−1に初期化する(ステップ#103)。その後、モンゴメリ乗算回路1が、A=AAR−1modnで表される1つの入力値Aの二乗のモンゴメリ乗算を行い(ステップ#104)、K[i]=1の場合は(ステップ#105で「YES」分岐)、モンゴメリ乗算回路1が、A=ABR−1modnで表される2つの入力値AとBのモンゴメリ乗算を行う(ステップ#106)。変数i≠0の場合は(ステップ#107で「NO」分岐)、iを1減算して(ステップ#108)ステップ#104に移行する。変数i=0の場合は(ステップ#107で「YES」分岐)、C=AR−1modnで表されるモンゴメリ逆変換を行い(ステップ#109)、処理を終了する。
【0070】
図9に示す左バイナリ法による処理アルゴリズムでは、ステップ#104とステップ#106の2種類のモンゴメリ乗算が繰り返し実行されるが、本実施形態では、モンゴメリ乗算回路1が、ステップ#104またはステップ#106のモンゴメリ乗算を実行する毎に、そのモンゴメリ乗算を実行するためのアルゴリズムをランダムに選択するので、ステップ#104とステップ#106のモンゴメリ乗算実行時の消費電力波形がランダムに変化する。従って、同じRSA暗号処理を行っても、処理毎に消費電力波形が異なるため、DPA等の電力波形解析による攻撃に対する防御が可能となる。
【0071】
次に、図8に示すRSA暗号回路2を用いた本発明に係るICカード3について説明する。図10に、ICカード3の概略の回路構成を示す。
【0072】
ICカード3は、本実施形態では、接触型ICカードであり、図10に示すように、ICカードリーダとデータ通信を行うためのI/O(Input/Output)30、ICカード3内の各機能を制御するCPU(Central Processing Unit)31、ICカード3の各種機能を実現するプログラム等を格納したROM(Read Only Memory)32、RAM33、フラッシュメモリ等の不揮発性メモリ34、及び、RSA暗号による暗号化処理等を行うRSA暗号回路2を備えて構成されている。尚、ROM32は、フラッシュメモリ等の不揮発性メモリで構成することも可能である。また、本実施形態では、接触型ICカードを想定しているが、非接触型ICカード、或いは、接触型及び非接触型I/Oの両方を備えたコンビ型ICカードであっても良い。
【0073】
図10に示す構成のICカード3において、RSA暗号回路2を搭載しているため、RSA暗号処理を用いた暗号通信や電子署名を使用することができる。ここで、RSA暗号回路2は、上述のように、DPA等の電力波形解析による攻撃に対する防御性能が高いため、本実施形態では、セキュリティ度の高いICカードが実現できる。
【0074】
次に、本発明装置の別実施形態について説明する。
【0075】
〈1〉上記実施形態では、モンゴメリ乗算回路1を構成するメモリ回路11は、同期式1ポートRAMで構成される第1メモリM1と第2メモリM2、及び、被乗数格納用レジスタR1とキャリーレジスタR2を備えて構成される場合を説明したが、メモリ回路11の回路構成は、必ずしも図1に示す回路構成に限定されるものではない。例えば、第2メモリM2を2つに分割して、一方を第1配列a[s−1:0]と被乗算変数mの格納用として、他方を第2配列b[s−1:0]と第3配列n[s−1:0]の格納用とし、被乗数格納用レジスタR1を省略しても構わない。
【0076】
更に、上記実施形態では、第1メモリM1と第2メモリM2を同期式1ポートRAMで構成する場合を例示したが、1ポートRAMでは、読み出し処理と書き込み処理を同時に実行できないので、第1メモリM1と第2メモリM2を読み出し処理と書き込み処理を同時に実行可能な同期式2ポートRAMで構成するようにしても良い。
【0077】
〈2〉上記実施形態では、モンゴメリ乗算回路1を構成する制御回路12が、乱数発生回路15を備え、モンゴメリ乗算が起動されると、制御回路12において、乱数発生回路15が乱数値を発生し、当該乱数値に基づいてマイクロコードの1つを選択する構成としたが、図11に示すように、制御回路12が乱数発生回路15を備えるのではなく、外部から、マイクロコードの1つをランダムに選択するための選択信号RSを受信し、当該選択信号の信号値に応じてマイクロコードの1つを選択して、モンゴメリ乗算を開始する構成としても良い。
【0078】
この場合、外部から当該選択信号を受信する構成のモンゴメリ乗算回路1を用いてRSA暗号回路を構成する場合、図12に示すように、RSA暗号回路2内に乱数発生回路15を備え、図9に示す処理アルゴリズムを実行する際に、ステップ#104とステップ#106の各モンゴメリ乗算の実行前に、乱数発生回路による乱数値の発生処理を行い、当該乱数値に応じた選択信号RSをモンゴメリ乗算回路1に出力することにより、モンゴメリ乗算を起動するようにしても良い。
【0079】
更に、上記実施形態では、モンゴメリ乗算回路1は、モンゴメリ乗算が起動される毎にマイクロコードの1つを毎回ランダムに選択する構成としたが、マイクロコードの選択を起動毎に実行せず、間欠的にマイクロコードの選択を行うようにしても良い。これにより、乱数発生回路が動作する場合と動作しない場合で消費電力波形に差が生じることになる。
【産業上の利用可能性】
【0080】
本発明に係るモンゴメリ乗算回路は、モンゴメリ乗算回路、及び、モンゴメリ乗算回路を用いて暗号化処理及び復号化処理を行う暗号回路に利用可能であり、特に、消費電力解析による秘密情報を暴露する攻撃から情報を守るセキュリティ機能を向上させたモンゴメリ乗算回路及び暗号回路に有効である。
【符号の説明】
【0081】
1: モンゴメリ乗算回路
2: RSA暗号回路
3: ICカード
10: 算術回路
11: メモリ回路
12: 制御回路
13: コードメモリ
14: シーケンサ回路
15: 乱数発生回路
16: 第1ループカウンタ回路
17: 第2ループカウンタ回路
20: ASIC回路
30: I/O
31: CPU
32: ROM
33: RAM
34: 不揮発性メモリ
M1: 第1メモリ
M2: 第2メモリ
R1: 被乗数格納用レジスタ
R2: キャリーレジスタ
RS: 選択信号
【技術分野】
【0001】
本発明は、モンゴメリ乗算回路、及び、モンゴメリ乗算回路を用いて暗号化処理及び復号化処理を行う暗号回路に関し、特に、消費電力解析による秘密情報を暴露する攻撃から情報を守るセキュリティ機能を向上させたモンゴメリ乗算回路及び暗号回路に関する。
【背景技術】
【0002】
近年、ネットワーク技術の進歩により様々なことがネットワーク上で実現可能となってきた。例えば、インターネット等のネットワークを利用して契約や決済を行う電子商取引として、ネットワーク上で商品を販売する電子商店による商取引(企業と消費者間の商取引)があり、消費者は、自宅のパソコンからインターネットを経由して電子商店のWebサイトを閲覧して商品を選択し、決済方法を指定して購入することができる。
【0003】
このような電子商取引では、成りすましや盗聴、改ざんの防止等のセキュリティの確保が課題となっており、例えば、成りすましを防止するための認証技術の一つとして、公開鍵暗号が利用されている。ここで、公開鍵暗号は、暗号化のための暗号化鍵と復号化のための復号化鍵の異なる2つの鍵を用いるものであり、暗号化鍵からの復号化鍵の推測、及び、暗号文の解読は、極めて困難、或いは、不可能となっている。鍵の所有者は、暗号化鍵(公開鍵)を公開し、復号化鍵(秘密鍵)を第三者に知られないように管理することにより、公開鍵を利用する相手側の情報が第三者に知られないようにすることができる。
【0004】
例えば、上述した電子商店と消費者の間の商取引では、電子商店が、暗号化鍵(公開鍵)を一般に公開し、復号化鍵(秘密鍵)を第三者に知られないように管理する。消費者は、電子商店側が公開している暗号化鍵(公開鍵)を利用して、商取引に関する情報を暗号化して電子商店に送信する。電子商店は、消費者から受け取った暗号文を復号化鍵(秘密鍵)で復号化し、消費者に対し商品の販売を行う。鍵の所有者である電子商店は、復号化鍵(秘密鍵)を第三者に知られないように管理することにより、商取引に関する情報が第三者に知られるのを防止でき、消費者の個人情報等が第三者に知られるのを防止することができる。
【0005】
公開鍵暗号としては、例えば、RSA(Rivest Shamir Adleman)暗号がある。RSA暗号は、解読するために、非常に大きな整数の合成体の素因数分解が必要であり、コンピュータによる解読であっても、現実的な計算時間での解読が困難であり、非常に大きな整数の合成体の素因数分解が困難であることに安全性の根拠を置く暗号方式である。
【0006】
以下、RSA暗号の暗号化方法及び復号化方法について簡単に説明する。公開鍵(e、n)を用いて平文Mを暗号化し、暗号文Cを生成する場合、暗号文Cは、以下の数1により生成される。
【0007】
[数1]
C=Memodn
(但し、0≦M<n)
【0008】
秘密鍵(d、n)を用いて暗号文Cを復号化し、平文Mを生成する場合、平文Mは、以下の数2により生成される。
【0009】
[数2]
M=Cdmodn
【0010】
尚、公開鍵(e、n)、秘密鍵(d、n)には、以下の数3の関係がある。
【0011】
[数3]
n=p×q (p、qは素数)
e×d≡1mod(p−1)(q−1)
【0012】
具体的には、例えば、p=3、q=11、e=3、d=7とすると、平文M=7を暗号化して得られる暗号文Cは、数1より、C=73mod(3×11)=343mod33=13となる。
【0013】
また、暗号文C=13を復号化して得られる平文Mは、数2より、M=137mod33=62748517mod33=7となる。従って、数1及び数2による暗号化及び復号化は、正しく行われることが分かる。
【0014】
ところで、上述したRSA暗号では、数1及び数2に示すように、べき乗演算、剰余演算を行っている。一般的に、鍵や平文は、1024ビット以上の非常に大きな桁数となるため、演算装置上で数1及び数2をそのまま用いて暗号化及び復号化を行うと、桁あふれを起こす可能性がある。
【0015】
このため、RSA暗号の暗号化及び復号化では、例えば、桁あふれしない剰余演算の手法の一例であるモンゴメリ乗算が用いられる。モンゴメリ乗算では、Nビットの剰余算をNビットのメモリ空間で行うことができる。
【0016】
以下、モンゴメリ乗算について簡単に説明する。RSA暗号の数1に示す暗号文Cの生成式の右辺(Memodn)は、以下の数4に示す逐次計算で求められる。即ち、数5に示す演算を繰り返し行うことで計算できる。
【0017】
[数4]
M2modn=M×Mmodn,
M3modn=M×M2modn,
…
Memodn=M×Me−1modn
【0018】
[数5]
γ=α×βmodn
【0019】
ここで、モンゴメリ乗算では、コンピュータ上における乗算のため、定数R=2Nを用いる。数5の両辺にRを掛けてmodnをとると、数6となる。ここで、数7に示すように、Z、A、Bを夫々規定すると、モンゴメリ乗算の演算式は、以下の数8で表される。尚、モンゴメリ乗算の演算アルゴリズムについては、下記の非特許文献1に詳細な記載がある。
【0020】
[数6]
γRmodn=αR×βR×R−1modn
【0021】
[数7]
Z=γRmodn,
A=αRmodn,
B=βRmodn
【0022】
[数8]
Z(A,B)=A×B×R−1modn
【0023】
数8に示すモンゴメリ乗算を繰り返し実行しながら、数1に示す暗号文Cの生成式を実現する方法を左バイナリ法と言い、以下に示すStep1乃至Step4の処理工程となる。尚、以下の処理工程において、N桁の2進数eを、e={eN−1,eN−2,…,e1,e0}と表現する。ei(i=0〜N−1)はLSB側(左側)から(i+1)桁目のビット値である。
【0024】
Step1: A:=M×Rmodn
Step2: X:=1×Rmodn
Step3: for i=N−1 down to 0
X:=Z(X,X)
if ei=1 then X:=Z(X,A)
Step4: C:=Z(X,1)
【0025】
ここで、上記Step3において、ei=0の時は、Z(X,X)だけの演算が行われ、ei=1の時は、Z(X,X)とZ(X,A)の2回の演算が行われる点が重要となる。
【0026】
もし、Z(X,X)とZ(X,A)の2種類の演算が消費電力波形から判別可能となると、暗号鍵Eのビット系列が解読できることになる。つまり、如何にしてZ(X,X)とZ(X,A)の2種類の演算を消費電力波形から判別できないようにすることがセキュリティ上重要となる。
【0027】
Z(X,X)とZ(X,A)の2種類の演算を判別する攻撃法としては、Z(X,X)とZ(X,A)の入力値をメモリからロードする時間を見分ける方法がある。Z(X,X)はXという値を1つだけをメモリからロードするのに対して、Z(X,A)はXとAの2つの値をメモリからロードする。このロード時間に差があれば容易に鍵情報を推測することができる。当該攻撃法に対しては、Z(X,X)の演算でもXのロードを2回行うことにより容易に対処できる。
【0028】
しかし、解析装置の進歩により、Z(X,X)とZ(X,A)のデータを多数取り、消費電力の僅かな違いを判別し秘密情報を割り出すDPA(電力差分解析)と呼ばれる攻撃が行われる可能性がある。
【0029】
下記の特許文献1では、左バイナリ法において、Z(X,X)を実行する乗算剰余演算部と、Z(X,A)を実行する乗算剰余演算部を2つ設けた場合に、Z(X,X)の演算はべき指数のビット値に関係なく常時実行されるのに対して、Z(X,A)の演算はべき指数のビット値が1の桁のみで実行されるので、Z(X,X)とZ(X,A)の2つの乗算剰余演算部の回路動作を外部から観測することで、べき指数の値が推測でき、暗号演算回路として耐タンパー性が低い点を指摘し、その対策として、異なる2つの底のべき乗剰余演算を並列に実行する際に、図13に示すように、夫々のべき乗剰余演算に係るZ(X,X)を実行する乗算剰余演算部を1つずつ設け、夫々のべき乗剰余演算に係るZ(X,A)を実行する乗算剰余演算部を1つだけ設けて、2つのべき乗剰余演算で、夫々の演算のべき指数のビット値が1の桁のみで実行するように、交互或いはランダムな順番で共用する構成とすることで、夫々のべき乗剰余演算におけるべき指数の値の推測を困難にしている。
【先行技術文献】
【特許文献】
【0030】
【特許文献1】特開2001−202015号公報
【非特許文献】
【0031】
【非特許文献1】C. K. Koc, "Analyzing and Computing MontgomeryMultiplication Algorithms", IEEE Micro, 16(3): 26-33, June 1996.
【発明の概要】
【発明が解決しようとする課題】
【0032】
上記特許文献1による対策は、Z(X,X)とZ(X,A)の2つの演算に対して、乗算剰余演算部を夫々設け、異なる2つの底のべき乗剰余演算を並列に実行する際には有効な手段と考えられるが、Z(X,X)とZ(X,A)の2つの演算に対して、乗算剰余演算部を夫々設けない場合や、1つのべき乗剰余演算だけを行う場合には、乗算剰余演算部を3つ設ける必要がないため、回路規模が大きくなり、消費電力も増大し、ICカード用LSIのように小さなチップで非常に少ない消費電力で動作する必要がある場合には、有効な手段とは言えない。
【0033】
本発明は、モンゴメリ乗算を繰り返し実行する左バイナリ法による暗号処理における上記問題点に鑑みてなされたものであり、その目的は、回路規模及び消費電力を増大させることなく外部からの消費電力解析が困難なセキュリティ性の高いモンゴメリ乗算回路及びRSA暗号回路を提供することにある。
【課題を解決するための手段】
【0034】
上記目的を達成するため、本発明では、メモリ回路、算術回路、及び、前記メモリ回路と前記算術回路間のデータの入出力を所定のアルゴリズムに基づいて制御してモンゴメリ乗算を実現する制御回路を備えてなるモンゴメリ乗算回路であって、前記制御回路が、前記アルゴリズムを2以上有し、2以上の前記アルゴリズムの内の1つをランダムに選択して、選択した1つの前記アルゴリズムに基づいて前記モンゴメリ乗算の実行に係る制御を行うことを特徴とするモンゴメリ乗算回路を提供する。
【0035】
上記特徴のモンゴメリ乗算回路によれば、2以上のアルゴリズムの内の1つをランダムに選択して、選択したアルゴリズムに基づいてモンゴメリ乗算が実行されるので、実行毎に、アルゴリズムがランダムに異なるため、当該アルゴリズムの違いに応じて当該実行に係る消費電力も異なる結果、上記特徴のモンゴメリ乗算回路を用いてモンゴメリ乗算を繰り返し実行した場合に、被乗数と消費電力の関係が都度ランダムに変化し、消費電力の変化が複雑化し、外部からの消費電力解析が極めて困難となる。また、1つのモンゴメリ乗算回路に2以上のアルゴリズムを設け、それらをランダム選択するだけの構成で良いので、回路規模及び消費電力を大幅に増大させることなくセキュリティ性を向上させることが可能となる。
【0036】
更に好ましくは、上記特徴のモンゴメリ乗算回路は、前記制御回路が、前記2以上のアルゴリズムの各別に規定するマイクロコードを格納するコードメモリと、前記メモリ回路に対するデータの入出力制御と前記算術回路で行う算術演算の選択を行うシーケンサ回路と、乱数発生回路を備え、前記乱数発生回路が発生した乱数値に基づいて前記マイクロコードの1つを選択し、選択されたマイクロコードに沿って、前記シーケンサ回路が、前記メモリ回路と前記算術回路に対する制御を実行するように構成される。
【0037】
斯かる構成のモンゴメリ乗算回路によれば、マイクロコードを格納するコードメモリの記憶容量を、追加されたアルゴリズムのマイクロコード分だけ大きく確保するだけで、アルゴリズム毎に専用のハードウェア回路を設ける場合に比べて回路規模を小さく抑制できるとともに、簡単な回路構成で、2以上のアルゴリズムの内の1つをランダムに選択して、選択したアルゴリズムに基づいてモンゴメリ乗算が実行できるようになる。
【0038】
更に好ましくは、上記特徴のモンゴメリ乗算回路は、前記算術回路が、乗算器と加算器からなる積和演算回路で構成されている。
【0039】
斯かる構成のモンゴメリ乗算回路によれば、モンゴメリ乗算を積和演算の繰り返しで実現するCIOS(Coarsely Integrated Operand Scanning)法、及び、FIOS(Finely Integrated Operand Scanning)法等の複数のアルゴリズムを利用して、2以上のアルゴリズムの内の1つをランダムに選択して、選択したアルゴリズムに基づいてモンゴメリ乗算が実行できるようになる。また、モンゴメリ乗算を積和演算の繰り返しで実現するアルゴリズムでは、除算を用いずに剰余演算を実行できるため、計算コストを大幅に削減できる。
【0040】
更に、上記目的を達成するため、本発明では、上記特徴のモンゴメリ乗算回路を備え、左バイナリ法による暗号処理過程で実行するモンゴメリ乗算を、前記モンゴメリ乗算回路を用い、モンゴメリ乗算のアルゴリズムを2以上の前記アルゴリズムの中からランダムに選択して実行することを特徴とするRSA暗号回路を提供する。
【0041】
上記特徴のRSA暗号回路によれば、左バイナリ法による暗号処理過程で実行するモンゴメリ乗算が、実行の都度、被乗数と消費電力の関係がランダムに変化するため、消費電力の変化が複雑化し、外部からの消費電力解析が極めて困難となり、回路規模及び消費電力を大幅に増大させることなくセキュリティ性を向上させることが可能となる。
【0042】
更に、上記目的を達成するため、本発明では、上記特徴のRSA暗号回路を備えてなることを特徴とするICカードを提供する。これにより、ICカードに搭載するLSIの回路規模及び消費電力を増大させることなく、消費電力解析が極めて困難なRSA暗号回路を搭載したセキュリティ性の高いICカードが実現できる。
【0043】
更に、上記目的を達成するため、本発明では、左バイナリ法によるRSA暗号処理過程で繰り返し実行するモンゴメリ乗算を、モンゴメリ乗算のアルゴリズムを2以上の前記アルゴリズムの中からランダムに選択して実行することを特徴とするRSA暗号処理方法を提供する。
【0044】
上記特徴のRSA暗号処理方法によれば、左バイナリ法によるRSA暗号処理過程で繰り返し実行するモンゴメリ乗算が、実行の都度、被乗数と消費電力の関係がランダムに変化するため、消費電力の変化が複雑化し、外部からの消費電力解析が極めて困難となり、回路規模及び消費電力を大幅に増大させることなくセキュリティ性を向上させることが可能となる。
【図面の簡単な説明】
【0045】
【図1】本発明に係るモンゴメリ乗算回路の一実施形態における一回路構成例を示すブロック図である。
【図2】CIOS法によるモンゴメリ乗算アルゴリズムのプログラムコードを示す図である。
【図3】FIOS法によるモンゴメリ乗算アルゴリズムのプログラムコードを示す図である。
【図4】CIOS法によるモンゴメリ乗算アルゴリズムの演算処理を簡略的に図解して説明する図である。
【図5】FIOS法によるモンゴメリ乗算アルゴリズムの演算処理を簡略的に図解して説明する図である。
【図6】同期式1ポートRAMの概略構成例を示す概略ブロック図である。
【図7】同期式1ポートRAMの読み出し処理と書き込み処理の各動作を説明するためのタイミング図である。
【図8】本発明に係るRSA暗号回路の一実施形態における一回路構成例を示すブロック図である。
【図9】本発明に係るRSA暗号回路の処理アルゴリズムを示すフローチャートである。
【図10】本発明に係るモンゴメリ乗算回路を用いて構成されたRSA暗号回路を搭載したICカードの概略部分構成例を示す概略部分ブロック図である。
【図11】本発明に係るモンゴメリ乗算回路の別実施形態における一回路構成例を示すブロック図である。
【図12】本発明に係るRSA暗号回路の別実施形態における一回路構成例を示すブロック図である。
【図13】従来技術における左バイナリ法によるRSA暗号処理の乗算剰余演算に係る回路構成例を示すブロック図である。
【発明を実施するための形態】
【0046】
本発明に係るモンゴメリ乗算回路の実施の形態につき、図面に基づいて説明する。
【0047】
図1に、モンゴメリ乗算回路1の回路構成を示す。モンゴメリ乗算回路1は、図1に示すように、積和演算回路からなる算術回路10と、第1メモリM1と第2メモリM2と被乗数格納用レジスタR1とキャリーレジスタR2からなるメモリ回路11と、算術回路10とメモリ回路11間のデータの入出力を制御してモンゴメリ乗算を実現する制御回路12を備えて構成されている。
【0048】
算術回路10は、ビット幅rの第1変数X、第2変数Y、第3変数Z、第4変数Cを受け付け、第3変数Zと、第1変数Xと第2変数Yの積算結果(X×Y)と、第4変数Cの和(F=Z+X×Y+C)を演算してビット幅2rの演算結果データFを出力する積和演算処理を行う。つまり、算術回路10は、第1変数Xと第2変数Yの乗算を行う乗算器と、第3変数Zと、第1変数Xと第2変数Yの積算結果(X×Y)と、第4変数Cの加算を行う加算器で構成されている。
【0049】
第1メモリM1は、ビット幅r、要素数s+1の中間結果格納用配列tを格納する記憶領域を備えた同期式1ポートRAMで構成され、中間結果格納用配列tの各要素を第3変数Zとして積和演算回路10に出力する。
【0050】
第2メモリM2は、ビット幅r、要素数sの第1配列a[s−1:0]、第2配列b[s−1:0]、及び、第3配列n[s−1:0]と、ビット幅rの被乗算変数mを格納する記憶領域を備えた同期式1ポートRAMで構成され、第1配列a[s−1:0]の各要素または被乗算変数mを第1変数Xとして積和演算回路10に出力する。
【0051】
被乗数格納用レジスタR1は、第2メモリM2から第2配列b[s−1:0]または第3配列n[s−1:0]を要素単位で受け付けて記憶し、第2変数Yとして積和演算回路10に出力する。また、キャリーレジスタR2は、演算結果データFの内の上位rビットからなる上位ビット側データFHを受け付けて記憶し、第4変数Cとして積和演算回路10に出力する。
【0052】
制御回路12は、2以上のアルゴリズムの各別に規定するマイクロコードを格納するコードメモリ13と、メモリ回路11に対するデータの入出力制御と算術回路10で行う算術演算の選択を行うシーケンサ回路14と、乱数発生回路15を備えて構成される。モンゴメリ乗算が起動されると、制御回路12において、乱数発生回路15が乱数値を発生し、当該乱数値に基づいてマイクロコードの1つが選択され、選択されたマイクロコードに沿って、シーケンサ回路14が、メモリ回路11と算術回路10に対する制御を実行する。
【0053】
本実施形態では、シーケンサ回路14は、図2及び図3に示すプログラムコードで用いられるカウント値の内、メインループ処理の処理回数を制御する第1ループカウント値iを生成する第1ループカウンタ回路16と、図2及び図3に示すプログラムコードで用いられるカウント値の内、サブループ処理の処理回数を制御する第2ループカウント値jを生成する第2ループカウンタ回路17を備えて構成されている。
【0054】
算術回路10、第1メモリM1、第2メモリM2、被乗数格納用レジスタR1、キャリーレジスタR2の各バス幅は、第1配列a、第2配列b、第3配列n、被乗算変数mの各ビット幅と同じrビットで、一般的には16ビット或いは32ビットである。
【0055】
図2及び図3に、コードメモリ13に格納されるCIOS法とFIOS法の2つのアルゴリズムの各プログラムコードを示す。
【0056】
図2及び図3に示すプログラムコードにおける変数t[j]が第1メモリM1の中間結果格納用配列tに格納される各要素であり、各変数a[j],b[i],n[j]が第1メモリM1の第1配列a、第2配列b、及び、第3配列nに格納される各要素である。変数a[j]をj=s−1からj=0まで順番に連接した変数が数8に示すモンゴメリ乗算の変数Aに相当し、変数b[i]をi=s−1からi=0まで順番に連接した変数が数8に示すモンゴメリ乗算の変数Bに相当し、変数n[j]をj=s−1からj=0まで順番に連接した変数が数8に示すモンゴメリ乗算の変数nに相当する。更に、図2及び図3に示すプログラムコード中のWは2r(但しrはバス幅)で定義される定数であり、n’[0]は変数nの最下位ワードn[0]の2rを法とする逆数(−n[0]−1)を意味する定数である。
【0057】
図4に、図2に示すプログラムコードによるCIOS法のモンゴメリ乗算を、s=4の場合を例に、簡略的に図解する。図4において、左側の乗算(a×b[i])が、図2に示すプログラムコードの第1のサブループ内の(C,S):=t[j]+a[j]×b[i]+Cを、中央の乗算(t[0]×n’[0])が、図2に示すプログラムコードのメインループ内のm:=t[0]×n’[0]modWを、右側のn×mが、図2に示すプログラムコードのメインループ内の(C,S):=t[0]+m×n[0]を、夫々表現している。
【0058】
図5に、図3に示すプログラムコードによるFIOS法のモンゴメリ乗算を、s=4の場合を例に、簡略的に図解する。図5において、左側に、図3に示すプログラムコードの部分的な乗算(t[i]=a×b[i])によりm[i]が得られる様子が図示されており、右側に、n×m[i]の乗算結果と上記部分的な乗算結果t[i]の加算により、中間結果t[i+1]が得られる様子が図示されている。
【0059】
図2及び図3に示すように、当該各プログラムコードでは、モンゴメリ乗算が乗算と加算の繰り返しで実現されており、図1に示す回路構成の積和演算処理を行う算術回路10を備えたモンゴメリ乗算回路1で処理可能である。
【0060】
尚、コードメモリ13に格納するアルゴリズムは、図1に示す回路構成のモンゴメリ乗算回路1で処理可能な、つまり、モンゴメリ乗算を乗算と加算の繰り返しで実現するアルゴリズムであれば、上記2つのアルゴリズムに限定されるものではなく、また、格納するアルゴリズム数も3以上であっても良い。尚、図2及び図3に示す各プログラムコードでモンゴメリ乗算が実現できることは、上記非特許文献1において説明されており公知であるので、詳細な説明は割愛する。
【0061】
ところで、図2及び図3に示すプログラムコードの2つのアルゴリズムを比較すると、何れもiループ(メインループ)とその内側にjループ(サブループ)を備えた構造となっているが、CIOS法とFIOS法では、サブループの個数及びその処理内容が異なっており、当該処理において実行されるメモリ回路11の読み出し動作や書き込み動作におけるメモリ番地や読み出し及び書き込みに係るデータも異なり、それらのデータを用いた積和演算の入力値も異なるため、2つのアルゴリズム間では、実行中の消費電力波形が異なる。つまり、同じ結果が得られる演算を行っても外部に現れる消費電力波形が異なる。
【0062】
本実施形態では、モンゴメリ乗算が起動されると、制御回路12が、乱数発生回路15が発生した乱数値に基づいて、2つのアルゴリズムの何れか一方をランダムに選択して実行する構成となっているため、外部から消費電力波形を観察しても、消費電力波形の違いが入力データの違いに依るものか、アルゴリズムの違いに依るものかを区別できない。従って、本実施形態のモンゴメリ乗算回路1を用いることで、モンゴメリ乗算を繰り返し実行しながら暗号文を生成する際に、多くの入力値に対する消費電力から統計的にデータの違いにより消費電力の違いを解析するDPA等の攻撃法に対して、有効な防御策となる。
【0063】
次に、図1に示す回路構成のモンゴメリ乗算回路1の回路動作について、図2に示すCIOS法のプログラムコードの実行を例に、簡単に説明する。
【0064】
図6は、本実施形態の第1メモリM1及び第2メモリM2の概略構成例を示している。また、図7(a)は、本実施形態の第1メモリM1及び第2メモリM2の読み出し処理における動作タイミングを、図7(b)は、本実施形態の第1メモリM1及び第2メモリM2の書き込み処理における動作タイミングを、夫々示している。同期式1ポートRAMである第1メモリM1は、図7(a)に示すように、読み出し処理において、クロック信号CLKに同期して動作し、チップイネーブル信号CE#がLレベルの場合に、アドレス信号ADによって示される記憶領域に記憶されたデータDを、出力端子DOUTから出力する。同様に、第1メモリM1は、図7(b)に示すように、書き込み処理において、クロック信号CLKに同期して動作し、チップイネーブル信号CE#がLレベルの場合に、アドレス信号ADによって示される記憶領域に、データ入力端子DINから入力されたデータDを書き込む。
【0065】
モンゴメリ乗算回路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に上位ビット側データFHを書き込むと共に、第1メモリM1に、演算結果データFの内の下位rビットからなる下位ビット側データFLを、第2ループカウンタ値jで示される中間結果格納用配列tの要素として書き込む書き込み処理と、を実行可能に構成され、第2読み出し処理、積和演算処理、書き込み処理、及び、第2ループカウンタ値jの更新を繰り返し実行する第1サブループ処理を、第1読み出し処理の実行後に実行する。
【0066】
更に、モンゴメリ乗算回路1は、第3配列n[s−1:0]の各要素を対応する第1配列a[s−1:0]の各要素として用いた第2読み出し処理、積和演算処理、書き込み処理、及び、第2ループカウンタ値jの更新を繰り返し実行する第2サブループ処理を実行する。
【0067】
モンゴメリ乗算回路1は、図2に示すプログラムコードの実行のために、少なくとも、通常の第1読み出し処理、第1サブループ処理、被乗算変数mを第2配列b[s−1:0]の各要素として用いた第1読み出し処理、第2サブループ処理、及び、第1ループカウンタ値iの更新を、この順に繰り返し実行するメインループ処理を実行する。
【0068】
次に、図1に示すモンゴメリ乗算回路1を用いた本発明に係るRSA暗号回路について説明する。図8に、RSA暗号回路2の概略の回路構成を示す。本実施形態では、RSA暗号回路2は、図9に示す左バイナリ法による暗号処理アルゴリズムを実行するASIC回路20とモンゴメリ乗算回路1を備えて構成される。
【0069】
図9は、本実施形態におけるRSA暗号回路2の左バイナリ法による処理アルゴリズムを示している。具体的には、RSA暗号回路2は、先ず、平文M、定数R=2Nを用いてモンゴメリ変換を行い(ステップ#101)、暗号化鍵e=K[k−1:0]を読み出し(#102)、変数iの値をk−1に初期化する(ステップ#103)。その後、モンゴメリ乗算回路1が、A=AAR−1modnで表される1つの入力値Aの二乗のモンゴメリ乗算を行い(ステップ#104)、K[i]=1の場合は(ステップ#105で「YES」分岐)、モンゴメリ乗算回路1が、A=ABR−1modnで表される2つの入力値AとBのモンゴメリ乗算を行う(ステップ#106)。変数i≠0の場合は(ステップ#107で「NO」分岐)、iを1減算して(ステップ#108)ステップ#104に移行する。変数i=0の場合は(ステップ#107で「YES」分岐)、C=AR−1modnで表されるモンゴメリ逆変換を行い(ステップ#109)、処理を終了する。
【0070】
図9に示す左バイナリ法による処理アルゴリズムでは、ステップ#104とステップ#106の2種類のモンゴメリ乗算が繰り返し実行されるが、本実施形態では、モンゴメリ乗算回路1が、ステップ#104またはステップ#106のモンゴメリ乗算を実行する毎に、そのモンゴメリ乗算を実行するためのアルゴリズムをランダムに選択するので、ステップ#104とステップ#106のモンゴメリ乗算実行時の消費電力波形がランダムに変化する。従って、同じRSA暗号処理を行っても、処理毎に消費電力波形が異なるため、DPA等の電力波形解析による攻撃に対する防御が可能となる。
【0071】
次に、図8に示すRSA暗号回路2を用いた本発明に係るICカード3について説明する。図10に、ICカード3の概略の回路構成を示す。
【0072】
ICカード3は、本実施形態では、接触型ICカードであり、図10に示すように、ICカードリーダとデータ通信を行うためのI/O(Input/Output)30、ICカード3内の各機能を制御するCPU(Central Processing Unit)31、ICカード3の各種機能を実現するプログラム等を格納したROM(Read Only Memory)32、RAM33、フラッシュメモリ等の不揮発性メモリ34、及び、RSA暗号による暗号化処理等を行うRSA暗号回路2を備えて構成されている。尚、ROM32は、フラッシュメモリ等の不揮発性メモリで構成することも可能である。また、本実施形態では、接触型ICカードを想定しているが、非接触型ICカード、或いは、接触型及び非接触型I/Oの両方を備えたコンビ型ICカードであっても良い。
【0073】
図10に示す構成のICカード3において、RSA暗号回路2を搭載しているため、RSA暗号処理を用いた暗号通信や電子署名を使用することができる。ここで、RSA暗号回路2は、上述のように、DPA等の電力波形解析による攻撃に対する防御性能が高いため、本実施形態では、セキュリティ度の高いICカードが実現できる。
【0074】
次に、本発明装置の別実施形態について説明する。
【0075】
〈1〉上記実施形態では、モンゴメリ乗算回路1を構成するメモリ回路11は、同期式1ポートRAMで構成される第1メモリM1と第2メモリM2、及び、被乗数格納用レジスタR1とキャリーレジスタR2を備えて構成される場合を説明したが、メモリ回路11の回路構成は、必ずしも図1に示す回路構成に限定されるものではない。例えば、第2メモリM2を2つに分割して、一方を第1配列a[s−1:0]と被乗算変数mの格納用として、他方を第2配列b[s−1:0]と第3配列n[s−1:0]の格納用とし、被乗数格納用レジスタR1を省略しても構わない。
【0076】
更に、上記実施形態では、第1メモリM1と第2メモリM2を同期式1ポートRAMで構成する場合を例示したが、1ポートRAMでは、読み出し処理と書き込み処理を同時に実行できないので、第1メモリM1と第2メモリM2を読み出し処理と書き込み処理を同時に実行可能な同期式2ポートRAMで構成するようにしても良い。
【0077】
〈2〉上記実施形態では、モンゴメリ乗算回路1を構成する制御回路12が、乱数発生回路15を備え、モンゴメリ乗算が起動されると、制御回路12において、乱数発生回路15が乱数値を発生し、当該乱数値に基づいてマイクロコードの1つを選択する構成としたが、図11に示すように、制御回路12が乱数発生回路15を備えるのではなく、外部から、マイクロコードの1つをランダムに選択するための選択信号RSを受信し、当該選択信号の信号値に応じてマイクロコードの1つを選択して、モンゴメリ乗算を開始する構成としても良い。
【0078】
この場合、外部から当該選択信号を受信する構成のモンゴメリ乗算回路1を用いてRSA暗号回路を構成する場合、図12に示すように、RSA暗号回路2内に乱数発生回路15を備え、図9に示す処理アルゴリズムを実行する際に、ステップ#104とステップ#106の各モンゴメリ乗算の実行前に、乱数発生回路による乱数値の発生処理を行い、当該乱数値に応じた選択信号RSをモンゴメリ乗算回路1に出力することにより、モンゴメリ乗算を起動するようにしても良い。
【0079】
更に、上記実施形態では、モンゴメリ乗算回路1は、モンゴメリ乗算が起動される毎にマイクロコードの1つを毎回ランダムに選択する構成としたが、マイクロコードの選択を起動毎に実行せず、間欠的にマイクロコードの選択を行うようにしても良い。これにより、乱数発生回路が動作する場合と動作しない場合で消費電力波形に差が生じることになる。
【産業上の利用可能性】
【0080】
本発明に係るモンゴメリ乗算回路は、モンゴメリ乗算回路、及び、モンゴメリ乗算回路を用いて暗号化処理及び復号化処理を行う暗号回路に利用可能であり、特に、消費電力解析による秘密情報を暴露する攻撃から情報を守るセキュリティ機能を向上させたモンゴメリ乗算回路及び暗号回路に有効である。
【符号の説明】
【0081】
1: モンゴメリ乗算回路
2: RSA暗号回路
3: ICカード
10: 算術回路
11: メモリ回路
12: 制御回路
13: コードメモリ
14: シーケンサ回路
15: 乱数発生回路
16: 第1ループカウンタ回路
17: 第2ループカウンタ回路
20: ASIC回路
30: I/O
31: CPU
32: ROM
33: RAM
34: 不揮発性メモリ
M1: 第1メモリ
M2: 第2メモリ
R1: 被乗数格納用レジスタ
R2: キャリーレジスタ
RS: 選択信号
【特許請求の範囲】
【請求項1】
メモリ回路、算術回路、及び、前記メモリ回路と前記算術回路間のデータの入出力を所定のアルゴリズムに基づいて制御してモンゴメリ乗算を実現する制御回路を備えてなるモンゴメリ乗算回路であって、
前記制御回路は、前記アルゴリズムを2以上有し、2以上の前記アルゴリズムの内の1つをランダムに選択して、選択した1つの前記アルゴリズムに基づいて前記モンゴメリ乗算の実行に係る制御を行うことを特徴とするモンゴメリ乗算回路。
【請求項2】
前記制御回路は、前記2以上のアルゴリズムの各別に規定するマイクロコードを格納するコードメモリと、前記メモリ回路に対するデータの入出力制御と前記算術回路で行う算術演算の選択を行うシーケンサ回路と、乱数発生回路を備え、前記乱数発生回路が発生した乱数値に基づいて前記マイクロコードの1つを選択し、選択されたマイクロコードに沿って、前記シーケンサ回路が、前記メモリ回路と前記算術回路に対する制御を実行することを特徴とする請求項1に記載のモンゴメリ乗算回路。
【請求項3】
前記算術回路は、乗算器と加算器からなる積和演算回路であることを特徴とする請求項1または2に記載のモンゴメリ乗算回路。
【請求項4】
請求項1〜3の何れか1項に記載のモンゴメリ乗算回路を備え、左バイナリ法による暗号処理過程で実行するモンゴメリ乗算を、前記モンゴメリ乗算回路を用い、モンゴメリ乗算のアルゴリズムを2以上の前記アルゴリズムの中からランダムに選択して実行することを特徴とするRSA暗号回路。
【請求項5】
請求項4に記載のRSA暗号回路を備えてなることを特徴とするICカード。
【請求項6】
左バイナリ法によるRSA暗号処理過程で繰り返し実行するモンゴメリ乗算を、モンゴメリ乗算のアルゴリズムを2以上の前記アルゴリズムの中からランダムに選択して実行することを特徴とするRSA暗号処理方法。
【請求項1】
メモリ回路、算術回路、及び、前記メモリ回路と前記算術回路間のデータの入出力を所定のアルゴリズムに基づいて制御してモンゴメリ乗算を実現する制御回路を備えてなるモンゴメリ乗算回路であって、
前記制御回路は、前記アルゴリズムを2以上有し、2以上の前記アルゴリズムの内の1つをランダムに選択して、選択した1つの前記アルゴリズムに基づいて前記モンゴメリ乗算の実行に係る制御を行うことを特徴とするモンゴメリ乗算回路。
【請求項2】
前記制御回路は、前記2以上のアルゴリズムの各別に規定するマイクロコードを格納するコードメモリと、前記メモリ回路に対するデータの入出力制御と前記算術回路で行う算術演算の選択を行うシーケンサ回路と、乱数発生回路を備え、前記乱数発生回路が発生した乱数値に基づいて前記マイクロコードの1つを選択し、選択されたマイクロコードに沿って、前記シーケンサ回路が、前記メモリ回路と前記算術回路に対する制御を実行することを特徴とする請求項1に記載のモンゴメリ乗算回路。
【請求項3】
前記算術回路は、乗算器と加算器からなる積和演算回路であることを特徴とする請求項1または2に記載のモンゴメリ乗算回路。
【請求項4】
請求項1〜3の何れか1項に記載のモンゴメリ乗算回路を備え、左バイナリ法による暗号処理過程で実行するモンゴメリ乗算を、前記モンゴメリ乗算回路を用い、モンゴメリ乗算のアルゴリズムを2以上の前記アルゴリズムの中からランダムに選択して実行することを特徴とするRSA暗号回路。
【請求項5】
請求項4に記載のRSA暗号回路を備えてなることを特徴とするICカード。
【請求項6】
左バイナリ法によるRSA暗号処理過程で繰り返し実行するモンゴメリ乗算を、モンゴメリ乗算のアルゴリズムを2以上の前記アルゴリズムの中からランダムに選択して実行することを特徴とするRSA暗号処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2010−271363(P2010−271363A)
【公開日】平成22年12月2日(2010.12.2)
【国際特許分類】
【出願番号】特願2009−120721(P2009−120721)
【出願日】平成21年5月19日(2009.5.19)
【出願人】(000005049)シャープ株式会社 (33,933)
【Fターム(参考)】
【公開日】平成22年12月2日(2010.12.2)
【国際特許分類】
【出願日】平成21年5月19日(2009.5.19)
【出願人】(000005049)シャープ株式会社 (33,933)
【Fターム(参考)】
[ Back to top ]