説明

情報処理装置、演算検証方法およびプログラム

【課題】より簡便な方法で故障利用攻撃の有無を判定することが可能な、情報処理装置、演算検証方法およびプログラムを提供すること。
【解決手段】本発明に係る情報処理装置に対して、所定の定義体上で定義された楕円曲線E上の点Pに基づいて、点Pをスカラ倍した点Q=s・Pを演算するスカラ倍演算部と、楕円曲線E上の点Pと、スカラ倍演算部が算出した点Q=s・Pと、楕円曲線E上の任意の点Gと、を用いて、以下の式1における等号が成立するか否かを検証する演算検証部と、を設けた。

(P+Q)+G=P+(Q+G) ・・・(式1)

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、演算検証方法およびプログラムに関する。
【背景技術】
【0002】
楕円曲線暗号は、楕円曲線上における離散対数問題の困難性を利用した暗号方式であり、同じ安全性水準の下で、RSA暗号に比べて短い鍵長で済むといった特徴を持つ。この楕円曲線暗号は、ECDSA(Elliptic Curve Digital Signature Altorithm)署名による機器間認証など、様々な場面で利用されている暗号方式である。
【0003】
楕円曲線暗号を用いて生成された秘密鍵を悪意のある第三者が不正に取得するための方法として、故障利用攻撃と呼ばれるものがある。この故障利用攻撃は、不正なシステムパラメータを与えたり、暗号処理中に故意に外部から故障(中間値を保持するレジスタの破壊等)を起こさせたりすることにより、悪意のある第三者が不正な計算結果を入手し、秘
密鍵を推定するという攻撃である。上述のような故障利用攻撃は、1997年にBonehらによってRSA暗号に対する差分故障攻撃(Differential FaultAnalysis attack:DFA)として初めて提案され、2000年にBiehlらによって、楕円曲線暗号へと拡張された。
【0004】
DFAのような故障利用攻撃に対する対策としては、計算結果を出力する前に計算結果の正当性を検証し、不正な値であれば計算結果を出力しない、という方法をとる。シンプルな対策手法として、例えば、2度計算による検算がある。この方法は、同じ暗号処理を2度実施し、演算結果が同じでなければ演算結果を出力しない、という方法である。この方法は、全く同じ故障を連続して2度行うことは困難であることを想定している検証方法である。しかしながら、同じ演算を繰り返すため計算コストは対策なしの場合に比べ2倍になり、また、計算効率も好ましいものではないため、より効率的な故障検知方法が希求されている。
【0005】
また、故障検知方法の別の例として、例えば以下に示す特許文献1では、演算により得られた点(X,Y)に関し、楕円曲線を表す式の右辺および左辺を個別に計算し、左辺=右辺が成立するか否かで故障利用攻撃の有無を判断する方法が記載されている。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004−252433号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
しかしながら、上記特許文献1に記載の方法では、楕円曲線を表す式の右辺および左辺に該当する値をそれぞれ計算する機能と、得られた2種類の値を比較する機能と、を別途設ける必要がある。そのため、上記特許文献1に記載の方法をハードウェア実装する場合には、特別な処理部が必要となって回路規模が増加するという問題があり、上記特許文献1に記載の方法をソフトウェア的に処理する場合には、計算コストの増加が生じるという問題があった。
【0008】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、より簡便な方法で故障利用攻撃の有無を判定することが可能な、情報処理装置、演算検証方法およびプログラムを提供することにある。
【課題を解決するための手段】
【0009】
上記課題を解決するために、本発明のある観点によれば、所定の定義体上で定義された楕円曲線E上の点Pに基づいて、点Pをスカラ倍した点Q=s・Pを演算するスカラ倍演算部と、前記楕円曲線E上の点Pと、前記スカラ倍演算部が算出した点Q=s・Pと、前記楕円曲線E上の任意の点Gと、を用いて、以下の式1における等号が成立するか否かを検証する演算検証部と、を備える情報処理装置が提供される。
【0010】
(P+Q)+G=P+(Q+G) ・・・(式1)
【0011】
かかる構成によれば、スカラ倍演算部は、所定の定義体上で定義された楕円曲線E上の点Pに基づいて、点Pをスカラ倍した点Q=s・Pを演算する。また、演算検証部は、楕円曲線E上の点Pと、スカラ倍演算部が算出した点Q=s・Pと、楕円曲線E上の任意の点Gと、を用いて、上記式1における等号が成立するか否かを検証する。
【0012】
前記楕円曲線Eは、有限体F(q=p,m∈N,p>3)上で定義された楕円曲線E:y=x+ax+b(a,b∈F)、または、標数2の有限体F2^m(m∈N)上で定義された楕円曲線E:y+xy=x+a+a(a,a∈F2^m)であることが好ましい。
【0013】
前記演算検証部は、前記式1における等号が成立しなかった場合、前記点Pが適式な値ではなかった、または、点Qに改ざんが加えられたと判断する。
【0014】
前記情報処理装置は、自装置が秘匿すべき情報である秘匿情報を格納する記憶部を更に備え、前記楕円曲線E上の任意の点Gは、前記秘匿情報の一つとして前記記憶部に格納されることが好ましい。
【0015】
前記記憶部には、自装置が保持する秘密鍵dが格納されており、前記スカラ倍演算部は、スカラ倍演算の係数sとして前記秘密鍵dを用いてもよい。
【0016】
前記演算検証部は、前記点Pまたは前記点Qの代わりに、自装置が保持している公開鍵または信頼できる他の情報処理装置が保持している公開鍵を用いて、前記式1における等号が成立するか否かを検証してもよい。
【0017】
また、上記課題を解決するために、本発明の別の観点によれば、所定の定義体上で定義された楕円曲線E上の点Pに基づいて、点Pをスカラ倍した点Q=s・Pを演算するステップと、前記楕円曲線E上の点Pと、算出された点Q=s・Pと、前記楕円曲線E上の任意の点Gと、を用いて、以下の式1における等号が成立するか否かを検証するステップとを含む演算検証方法が提供される。
【0018】
また、上記課題を解決するために、本発明の更に別の観点によれば、コンピュータに、所定の定義体上で定義された楕円曲線E上の点Pに基づいて、点Pをスカラ倍した点Q=s・Pを演算するスカラ倍演算機能と、前記楕円曲線E上の点Pと、前記スカラ倍演算機能により算出した点Q=s・Pと、前記楕円曲線E上の任意の点Gと、を用いて、以下の式1における等号が成立するか否かを検証する演算検証機能と、を実現させるためのプログラムが提供される。
【発明の効果】
【0019】
以上説明したように本発明によれば、楕円曲線上の群の性質を利用することで、より簡便な方法で故障利用攻撃の有無を判定することが可能である。
【図面の簡単な説明】
【0020】
【図1】本発明の第1の実施形態に係る情報処理装置の構成を説明するための説明図である。
【図2】同実施形態に係る演算検証方法を説明するための流れ図である。
【図3】本発明の実施形態に係る情報処理装置のハードウェア構成を説明するための説明図である。
【図4】スカラ倍演算のアルゴリズムの一例を説明するための説明図である。
【図5】小さい位数を使った攻撃について説明するための流れ図である。
【図6A】スカラ倍演算中に故障を生じさせる攻撃について説明するための流れ図である。
【図6B】スカラ倍演算中に故障を生じさせる攻撃について説明するための流れ図である。
【発明を実施するための形態】
【0021】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【0022】
なお、説明は、以下の順序で行うものとする。
(1)楕円曲線について
(2)故障利用攻撃について
(3)第1の実施形態
(3−1)情報処理装置の構成について
(3−2)演算検証方法について
(4)本発明の実施形態に係る情報処理装置のハードウェア構成について
(5)まとめ
【0023】
(楕円曲線について)
まず、本発明の実施形態に係る情報処理装置および演算検証方法について説明するに先立ち、本発明の実施形態で利用する楕円曲線について、詳細に説明する。
【0024】
本発明の実施形態に係る情報処理装置および演算検証方法では、楕円曲線Eとして、以下の2つの楕円曲線を扱う。
【0025】
(i)有限体F(q=p,m∈N,p>3)上で定義された楕円曲線E:y=x+ax+b(a,b∈F
(ii)標数2の有限体(バイナリフィールド)F2^m(m∈N)上で定義された楕円曲線E:y+xy=x+a+a(a,a∈F2^m
【0026】
以下、標数p>3の有限体上で定義された楕円曲線Eを例にとって説明するが、標数2の有限体上で定義された楕円曲線Eに関しても同様のことが成立する。
【0027】
楕円曲線E上の点の集合を、E(F)={(x,y)∈F×F|y=x+ax+b}∪{O}で表現する。ここで、Oは無限遠点であり、後述する加法におけるE(F)の単位元である。
【0028】
また、E(F)の濃度を楕円曲線の位数と呼び、#E(F)=h・rで表現する。ここで、rは、素数とする。hはcofactorと呼ばれる係数であるが、本明細書では、h=1とする。また、楕円曲線上のランダムに選んだ点をベースポイントGとすると、楕円曲線の位数は素位数を仮定しているため、Gの位数はrとなる。
【0029】
ここで、楕円曲線を表す式中の係数と、定義体の位数pと、ベースポイントの位数rと、ベースポイントGは、楕円曲線を特定するための楕円曲線パラメータとなる。
【0030】
次に、楕円曲線上に存在する2つの点の加法演算について説明する。
楕円曲線Eでは、楕円曲線上に存在する点P=(x,y)、P=(x,y)に対する加法演算を、次のように定義する。ここで、P=(x,y)=P+Pである。
【0031】
【数1】

・・・(式11)

・・・(式12)

・・・(式13)
【0032】
このとき、E(F)は、以下の4つの群の性質を満足することが知られている。
【0033】
1.閉法則:P+Q∈E(F) for all P,Q∈E(F
2.単位元の存在:P+O=O+P=P for all P∈E(F
3.逆元の存在:P+(−P)=(−P)+P=O for all P∈E(F
4.結合則:(P+Q)+R=P+(Q+R) for all P,Q,R∈E(F
【0034】
また、点Pをスカラ(scalar)倍(s倍)した点をsPと表し、次のように定義する。すなわち、下式から明らかなように、点sPは、点Pに対して、点Pをs−1回加えた結果得られた点として定義される。
【0035】
【数2】

・・・(式14)
【0036】
このようなスカラ倍演算を実行するための計算アルゴリズムとして、例えば図4に示したような、Double and Add Methodがある。
【0037】
同様に、楕円曲線Eでは、楕円曲線上に存在する点P=(x,y)、P=(x,y)に対する加法演算を、次のように定義する。ここで、P=(x,y)=P+Pである。ここで、P≠Pの場合には、加法演算は、以下の式15〜17のように定義され、P=Pの場合には、加法演算は、以下の式18〜20のように定義される。
【0038】
【数3】

・・・(式15)

・・・(式16)

・・・(式17)
【0039】
【数4】

・・・(式18)

・・・(式19)

・・・(式20)
【0040】
ここで、値Pおよび値sPを与えられて、これら2つの値からsを求める問題を、楕円曲線上の離散対数問題(Elliptic Curve Discrete Logarithm Problem:ECDLP)という。このECDLPは、Pの位数が十分に大きければ解くことが非常に困難であり、この困難性が楕円曲線暗号の安全性の根拠となっている。
【0041】
(故障利用攻撃について)
次に、図5〜図6Bを参照しながら、代表的な2種類の故障利用攻撃について、詳細に説明する。図5は、小さい位数を使った攻撃について説明するための流れ図である。また、図6Aおよび図6Bは、スカラ倍演算中に故障を生じさせる攻撃について説明するための流れ図である。
【0042】
Biehlらは、入力Pを秘密情報d倍したdPの計算を行うスカラ倍演算に対して、故障を起こすタイミングによって、以下に示すような2通りの攻撃手法が存在することを提案している。故障を起こすタイミングは、スカラ倍演算を行う前、および、スカラ倍演算中の2通りである。
【0043】
まず、スカラ倍演算を行う前に故障を生じさせる攻撃について説明する。
このスカラ倍演算を行う前に故障を生じさせる攻撃は、小さな位数による攻撃(Small Order Point Attack)と呼ばれている。この小さな位数による攻撃について、図5を参照しながら詳細に説明する。なお、以下の説明では、楕円曲線Eが、標数p>3の有限体上で定義された楕円曲線E:y=x+ax+bである場合について説明する。
【0044】
攻撃者は、スカラ倍演算を行う装置に対して、被演算点P∈E(F)に関する情報を入力し(ステップS11)、この被演算点Pが、正しい楕円曲線E(すなわち、y=x+ax+b)上の点であるか否かを装置に判定させる(ステップS13)。
【0045】
攻撃者は、被演算点Pが正しい楕円曲線E上の点であることを判定した直後に故障を生じさせ、点Pのx成分またはy成分の1bitを反転させる(故障攻撃)。攻撃の結果1bitが反転した点をPとすると、この点Pは、楕円曲線E:y=x+ax+bとなり、スカラ倍演算を行う装置によるスカラ倍dPの計算(ステップS15)は、楕円曲線E上で行われることとなる。なお、式11〜式13から明らかなように、楕円曲線上の点の加算や2倍算の公式には、楕円曲線を定義する係数bは出現しない。そのため、点Pに対するスカラ倍演算dPは、正しく計算されることがわかる。
【0046】
出力dPを取得した攻撃者は、出力dPのx座標およびy座標から楕円曲線Eを求め、位数#Eを計算する(ステップS17)。その後、攻撃者は、位数#Eが、ある程度小さい因数rを持つか否かを判定する(ステップS19)。
【0047】
点P∈Eのx成分またはy成分の何れか一方は、故障を生じさせる前の正しい値であるため、攻撃者は、x成分またはy成分を楕円曲線Eに代入して、Pを復元することができる(ステップS21)。続いて、攻撃者は、P,dPそれぞれを(#E/r)倍し(ステップS23)、位数rの部分群E(F)[r]に写像する。次に、攻撃者は、算出した(#E/r)Pおよび(#E/r)dPを用いて離散対数問題を解き、d mod rを取得する(ステップS25)。
【0048】
続いて、攻撃者は、rとは異なる、ある程度小さい素数rを位数に持つ別の楕円曲線Eに対して、上述の手順を繰り返し行い、秘密情報dに関する部分情報d mod rを、r<Πrとなるまで集める(ステップS27)。最後に。攻撃者は、d mod rに対して中国人の剰余定理(Chinese remainder theorem)を適用し、秘密情報dを導出する(ステップS29)。以上説明したように、攻撃者は、上述の手順に則った故障利用攻撃を用いることで、秘密情報dを取得できる可能性がある。
【0049】
以上、スカラ倍演算を行う前に故障を生じさせる攻撃について説明した。
続いて、スカラ倍演算中に故障を生じさせる攻撃について、図6Aおよび図6Bを参照しながら、詳細に説明する。
【0050】
ここで、スカラ倍演算を実行する装置は、図4に示したRight−To−Left Algorithmを用いてスカラ倍演算を実行するものとする。
【0051】
まず、攻撃者は、スカラ倍演算を実行する装置に対して被演算点Pを入力し(ステップS21)、スカラ倍演算を実行する装置にスカラ倍演算を実行させて(ステップS23)、正しいスカラ倍点Q=dPを取得する。
【0052】
次に、攻撃者は、パラメータiを、logdを超えない最大の整数に設定した上で、d=0とする(ステップS25)。続いて、攻撃者は、パラメータkを、推定したいビット数mに設定する(ステップS27)。
【0053】
次に、攻撃者は、取得した正しいスカラ倍点Qを保持したまま、スカラ倍演算を実行する装置に対して、再度Pを被演算点として入力する(ステップS29)。
【0054】
スカラ倍演算を実行する装置は、入力された被演算点Pに基づいてスカラ倍の演算を実行するが(ステップS31)、攻撃者は、あるタイミングで、スカラ倍演算の中間値を保持するレジスタに対して、故障(1bit反転)を生じさせる。図6Aに示した例では、攻撃者は、i−m≦j<iを満たすjステップ目に故障攻撃を実行し、スカラ倍演算を実行する装置に不正な演算結果Q’を生成させる。攻撃者は、スカラ倍演算を実行する装置から出力された演算結果Q’を保持する(ステップS33)。
【0055】
攻撃者は、秘密鍵の既知のビットから故障を起こした位置までの秘密鍵の一部(部分鍵x)を推定し(ステップS35)、以下の式901に基づいて、Qから故障が発生したiステップ目の中間値Qまで逆算する(ステップS37)。この逆算は、2パターン分実行される。
【0056】
【数5】

・・・(式901)
【0057】
次に、攻撃者は、Qi−kの1bitを反転させx倍した値であるQを算出する(ステップS39)。ここで、xは、推定した部分鍵である。攻撃者は、算出したQと不正な結果Q’とを比較する(ステップS41)。Q’とQとが等しくない場合には、攻撃者は、パラメータkをk−1と設定し(ステップS43)、再びQを算出する(ステップS39)。このように、攻撃者は、中間値Qのどの1bitが故障により反転したのかが分からないため、考えられるすべての故障パターンに対して、推定した秘密鍵を利用して不正な演算結果Q’の候補Qを計算する。
【0058】
他方、Q’とQとが一致した場合には、部分鍵xの推定が正しかったことになり、攻撃者は、パラメータdを、dをxで割り切った値(d|x)に設定することで、パラメータdの更新を行う(ステップS45)。続いて、攻撃者は、パラメータiをi−kと設定し(ステップS47)、パラメータiが0になったか否かを判定する(ステップS49)。パラメータiが0ではない場合には、攻撃者は、ステップS27に戻って、次のmbitについて、ステップS27から再び処理を行う。パラメータiが0になった場合には、秘密鍵の全体が復元できたことを意味するため、推定した秘密鍵の全体dを出力する(ステップS51)。
【0059】
例えば、秘密鍵dの上位4bitを推定したい場合を考える。この場合、攻撃者は、スカラ倍演算を実行する装置がそれらのビットでスカラ倍演算を実行しているときに、fault injection(故障攻撃)を行う。ここで、dのビット長を160bitとすれば、fault injectionしたステップiは、156≦i<160となる。攻撃者は、156ステップ目に故障が発生したものと仮定して、156ステップ目の中間値Q156を復元する。攻撃者は、考えられるすべての部分鍵候補x∈{0,1}に対して、Q=Q−x・2156Pを計算する。攻撃者は、すべてのQ156に対して1bit反転を行い、それらの値をx倍したQを計算する。このQが得られた不正な結果Q’と一致すれば、推定した部分鍵xと、fault injectionが生じたステップi=156と、反転したbitの位置とが正しかったことになる。また、不正な結果Q’と一致するQがなければ、攻撃者は、i=157として、i=156の場合と同様にすべてのQ157の1bit反転させたものを求め、処理を進めていく。このように、鍵推定は、中間値にfault injectionしたと考えられるブロック単位で行い、秘密鍵d全体が復元できるまで、処理が繰り返される。
【0060】
以上、スカラ倍演算中に故障を生じさせる攻撃について説明した。
このような故障利用攻撃が攻撃者によって実行されたか否かは、スカラ倍演算の出力である、べき倍点の正当性を検証することで検証することができ、検証結果に基づいて故障利用攻撃を防止することができる。なお、以上の説明では、標数p>3の有限体上で定義された楕円曲線Eを例にとって説明を行ったが、標数2の有限体上で定義された楕円曲線Eについても、同様な故障利用攻撃が攻撃者により行われる可能性がある。
【0061】
以下で説明する本発明の実施形態に係る情報処理装置および演算検証方法では、上述のような故障利用攻撃の有無を、楕円曲線の種類にかかわらず容易に検証することが可能な方法である。以下に、本発明の実施形態に係る情報処理装置および演算検証方法について、詳細に説明する。
【0062】
(第1の実施形態)
<情報処理装置の構成について>
続いて、本発明の第1の実施形態に係る情報処理装置について、詳細に説明する。図1は、本実施形態に係る情報処理装置の構成を説明するためのブロック図である。
【0063】
本実施形態に係る情報処理装置10は、例えば図1に示したように、暗号化処理部101と、復号処理部103と、楕円曲線演算部105と、記憶部107と、を主に備える。
【0064】
暗号化処理部101は、例えば、CPU(Central Processing Unit)、ROM(Read Only Memory)、RAM(Random Access Memory)、通信装置等により実現される。暗号化処理部101は、所定の有限体上で定義された楕円曲線Eを利用した暗合方式に基づいて、暗号化したい平文を暗号化し、暗号文とする。
【0065】
より詳細には、暗号化処理部101は、平文を暗号文へと暗号化する暗号化処理に際して、楕円曲線演算部105に対して、楕円曲線Eを利用した楕円曲線演算処理を要請する。この楕円曲線演算の例として、楕円曲線E上の点の加法や、楕円曲線E上の点をスカラ倍するスカラ倍演算がある。
【0066】
暗号化処理部101は、楕円曲線演算部105に楕円曲線演算を要請する際には、楕円曲線演算を実行する際に必要となる楕円曲線上の点や、演算に必要となる各種のパラメータ(例えば、スカラ倍演算における係数)などを、演算パラメータとして伝送する。また、暗号化処理部101は、楕円曲線演算部105から楕円曲線を利用した演算結果が伝送されると、演算結果を利用して、暗号化処理を継続する。
【0067】
暗号化処理部101は、暗号化処理が終了すると、生成された暗号文を所定の装置へと送信する。
【0068】
復号処理部103は、例えば、CPU、ROM、RAM、通信装置等により実現される。復号処理部103は、所定の有限体上で定義された楕円曲線Eを利用した暗合方式に基づいて、暗号文に対して復号処理を行い、平文にする。
【0069】
より詳細には、復号処理部103は、暗号文を平文へと復号する復号処理に際して、楕円曲線演算部105に対して、楕円曲線Eを利用した楕円曲線演算処理を要請する。この楕円曲線演算の例として、楕円曲線E上の点の加法や、楕円曲線E上の点をスカラ倍するスカラ倍演算がある。
【0070】
復号処理部103は、楕円曲線演算部105に楕円曲線演算を要請する際には、楕円曲線演算を実行する際に必要となる楕円曲線上の点や、演算に必要となる各種のパラメータ(例えば、スカラ倍演算における係数)などを、演算パラメータとして伝送する。また、復号処理部103は、楕円曲線演算部105から楕円曲線を利用した演算結果が伝送されると、演算結果を利用して、復号処理を継続する。
【0071】
復号処理部103は、復号処理が終了すると、生成された平文を、情報処理装置10に設けられたディスプレイ等の表示装置に表示する。
【0072】
楕円曲線演算部105は、例えば、CPU、ROM、RAM等により実現される。楕円曲線演算部105は、所定の有限体上で定義された楕円曲線Eと、暗号化処理部101または復号処理部103から伝送された演算パラメータとに基づいて、楕円曲線を利用した演算処理を行う。この楕円曲線演算部105は、楕円曲線演算制御部111と、加法演算部103と、スカラ倍演算部115と、演算検証部117と、演算結果出力部119と、を更に備える。
【0073】
楕円曲線演算制御部111は、例えば、CPU、ROM、RAM等により実現される。楕円曲線演算制御部111は、暗号化処理部101および復号処理部103から伝送された演算パラメータに基づいて、暗号化処理部101および復号処理部103から要請された楕円曲線演算の実行制御を行う。
【0074】
より詳細には、楕円曲線演算制御部111は、暗号化処理部101および復号処理部103から伝送された演算パラメータを参照して、これらの処理部から要請された楕円曲線演算の種類を判別する。楕円曲線演算制御部111は、暗号化処理部101および復号処理部103から要請された楕円曲線演算の種類を特定すると、特定した楕円曲線演算の種類に応じて、後述する加法演算部113およびスカラ倍演算部115に、取得した演算パラメータを伝送する。また、楕円曲線演算制御部111は、特定した楕円曲線演算の種類を、後述する演算検証部117に伝送する。
【0075】
加法演算部113は、例えば、CPU、ROM、RAM等により実現される。加法演算部113は、楕円曲線演算制御部111から伝送された演算パラメータに含まれる楕円曲線E上の点に関する情報に基づいて、被演算点である楕円曲線上の点の加法演算を行う。具体的には、加法演算部113は、演算に用いる楕円曲線Eの種類に応じて、上記式11〜式13または式15〜式20を用いて、被演算点の加法演算を行う。なお、加法演算部113は、加法演算処理に際して、記憶部107等に格納されている楕円曲線パラメータや、公開鍵、秘密鍵等を参照してもよい。
【0076】
加法演算部113は、被演算点に関する加法演算の演算結果が得られると、加法演算処理が終了した旨を、楕円曲線演算制御部111に伝送する。また、加法演算部113は、被演算点に関する加法演算の演算結果(すなわち、加法演算の結果得られる楕円曲線E上の点に関する情報)を、後述する演算検証部117に伝送する。なお、加法演算部113は、演算結果を後述するスカラ倍演算部115に伝送し、演算結果を、スカラ倍演算部115におけるスカラ倍演算処理に用いても良い。
【0077】
スカラ倍演算部115は、例えば、CPU、ROM、RAM等により実現される。スカラ倍演算部115は、楕円曲線演算制御部111から伝送された演算パラメータに含まれる楕円曲線E上の被演算点に関する情報と、スカラ倍演算の係数に関する情報と、に基づいて、被演算点に関するスカラ倍演算を実行する。すなわち、スカラ倍演算部115は、被演算点をP、スカラ倍演算の係数をs、スカラ倍演算結果(以下、べき倍点とも称する。)をQとすると、Q=s・Pを演算する処理部である。
【0078】
スカラ倍演算部115は、被演算点に関するスカラ倍演算を、例えば図4に示したDouble and Add Methodのような計算アルゴリズムを実行することで行う。また、スカラ倍演算部115が実行する計算アルゴリズムは、上記の例に限定されるわけではなく、他の任意の計算アルゴリズムを利用することが可能である。
【0079】
なお、スカラ倍演算部115は、スカラ倍演算処理に際して、記憶部107等に格納されている楕円曲線パラメータや、公開鍵、秘密鍵等を参照してもよい。例えば、スカラ倍演算部115は、スカラ倍演算の係数sとして、自装置で秘匿している秘密鍵や、自装置で管理されている公開鍵を利用することができる。
【0080】
スカラ倍演算部115は、被演算点に関するスカラ倍演算の演算結果が得られると、スカラ倍演算処理が終了した旨を、楕円曲線演算制御部111に伝送する。また、スカラ倍演算部115は、被演算点に関するスカラ倍演算の演算結果(すなわち、スカラ倍演算の結果得られる楕円曲線E上の点に関する情報)を、後述する演算検証部117に伝送する。なお、スカラ倍演算部115は、演算結果を加法演算部113に伝送し、演算結果を、加法演算部113における加法演算処理に用いても良い。
【0081】
演算検証部117は、例えば、CPU、ROM、RAM等により実現される。演算検証部117は、スカラ倍演算部115がスカラ倍演算を実行した場合に、スカラ倍演算部115により実行されたスカラ倍演算処理の検証を行う。より詳細には、演算検証部117は、スカラ倍演算における被演算点Pと、スカラ倍演算の結果得られる楕円曲線E上の点(べき倍点)Qと、楕円曲線パラメータであるベースポイントGと、に基づいて、以下の式101の等号が成立するか否かを検証する。
【0082】
(P+Q)+R=P+(Q+R) ・・・(式101)
【0083】
具体的には、演算検証部117は、上記式101の左辺に示した加法演算処理と、上記式101の右辺に示した加法演算処理と、を、加法演算部113に要請する。演算検証部117は、加法演算部113から伝送された左辺の演算結果と、右辺の演算結果とが同一の値であるか(すなわち、楕円曲線E上の同一の点であるか否か)を判定することで、上記式101の等号が成立したか否かを検証する。
【0084】
演算検証部117は、上記式101における等号が成立するか否かを検証することで、被演算点Pに対する検証と、スカラ倍演算結果であるべき倍点Qに対する検証の双方を行っている。
【0085】
まず、べき倍点Qに関する検証について、より詳細に説明する。
スカラ倍演算部115がべき倍点Qの演算を実行している途中に故障攻撃を受け、スカラ倍の演算結果が不正な点Q’に変更されたとすると、演算の結果得られるべき倍点Q’は、正しい楕円曲線Eとは異なる楕円曲線E’上の点となる。すなわち、Q∈E’(F)である。上記式101として表される群の結合法則は、同一楕円曲線上の3点P,Q,G∈E(F)に対して成立する。そのため、演算検証部117は、式101における等号が成立した場合には、被演算点P、べき倍点QおよびベースポイントGが、同一の楕円曲線E上の点であることが確認できる。逆に、式101における等号が成立しなかった場合には、べき倍点Qは、加法群E(F)とは異なる群に属している(すなわち、被演算点PおよびベースポイントGとは異なる楕円曲線上の点である)ことを示している。そのため、演算検証部117は、スカラ倍演算中に、攻撃者から故障攻撃を受けたことを検出することができる。
【0086】
次に、被演算点Pに関する検証について、より詳細に説明する。
スカラ倍演算部115がスカラ倍演算を実行する前に被演算点がP’∈E’(F)に修正された場合、得られるスカラ倍演算の演算結果は、Q’∈E’(F)となり、ベースポイントG∈E(F)とは異なる群に属することとなる。そのため、攻撃者による攻撃や、情報処理装置10の故障等により被演算点Pに変更が生じた場合には、演算検証部117は、被演算点Pが適式な値ではなかったことを検出することができる。
【0087】
なお、上述のような検証では、被演算点Pまたはべき倍点Qのどちらが適式ではなかったのかは、明らかにすることができない。そのため、以下のような処理を行うことで、演算検証部117は、被演算点Pまたはべき倍点Qのどちらが不適だったのかを明確にすることができる。
【0088】
例えば、被演算点Pのみを検証したい場合には、演算検証部117は、べき倍点Qの代わりに、自装置が管理している公開鍵、または、信頼できる他の情報処理装置の公開鍵を利用し、上記式101が成立するか否かを検証する。これらの公開鍵は、被演算点Pが存在している楕円曲線と同一の楕円曲線を用いて算出されたものであるため、被演算点Pと同一の群に属するものである。そのため、べき倍点Qの代わりにこれらの公開鍵を利用することで、被演算点Pのみの検証を行うことができる。なお、信頼できる他の情報処理装置の例として、公開鍵および秘密鍵からなる鍵ペアを生成する鍵生成センタが保持する情報処理装置や、第三者認証機関が保持する情報処理装置等を挙げることができる。
【0089】
また、べき倍点Qのみを検証したい場合、演算検証部117は、被演算点Pのみの検証と同様に、被演算点Pの代わりに、自装置が管理している公開鍵、または、信頼できる他の情報処理装置の公開鍵を利用し、上記式101が成立するか否かを検証すればよい。
【0090】
なお、スカラ倍演算部115は、ベースポイントGのスカラ倍演算など、被演算点Pの指定を受けずにスカラ倍演算を実行する場合もある。この際、演算検証部117は、被演算点Pの代わりに、自装置が管理している公開鍵、または、信頼できる他の情報処理装置の公開鍵を利用し、上記式101が成立するか否かを検証すればよい。
【0091】
以上説明したように、演算検証部117は、式101における等号が成立しなかった場合、被演算点Pが適式な値ではなかった、または、べき倍点Qに改ざんが加えられたと判断することができる。この演算結果の検証は、加法演算部115による4回の加法演算の結果に基づき、1回の楕円曲線上の点の比較を行うことで実施できる。そのため、本実施形態に係る情報処理装置では、楕円曲線上の群の性質を利用することで、より簡便な方法で故障利用攻撃の有無を判定することができる。
【0092】
演算検証部117は、スカラ倍演算に関する検証結果が得られると、得られた検証結果を、後述する演算結果出力部119に伝送する。より詳細には、演算検証部117は、加法演算部113が実行した加法演算結果が伝送されると、伝送された加法演算結果を演算結果出力部119に伝送する。また、演算検証部117は、スカラ倍演算部115からスカラ倍演算結果が伝送されると、式101を用いた検証を行い、検証が成功した場合に、スカラ倍演算の演算結果とともに、得られた検証結果を、演算結果出力部119に伝送する。また、演算検証部117は、スカラ倍演算の検証が失敗した場合には、検証に失敗した旨のみを演算結果出力部119に伝送する。
【0093】
演算結果出力部119は、例えば、CPU、ROM、RAM等により実現される。演算結果出力部119は、演算検証部117から伝送された演算結果および検証結果を、楕円曲線演算部105に楕円曲線演算処理を要請した処理部に対して出力する。
【0094】
記憶部107は、情報処理装置10が管理する秘密鍵および公開鍵と、楕円曲線パラメータとを格納する。また、記憶部107は、情報処理装置10が、何らかの処理を行う際に保存する必要が生じた様々なパラメータや処理の途中経過等、または、各種のデータベース等を、適宜記憶することが可能である。この記憶部107は、本実施形態に係る情報処理装置10が備える各処理部が、自由に読み書きを行うことが可能である。
【0095】
以上説明したように、本実施形態に係る情報処理装置10では、暗号処理中に故障攻撃を受けて中間値が変更された可能性がある場合に、スカラ倍演算の演算結果の正当性を、楕円曲線の種類を問わず容易に検証することができる。
【0096】
以上、本実施形態に係る情報処理装置10の機能の一例を示した。上記の各構成要素は、汎用的な部材や回路を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。また、各構成要素の機能を、CPU等が全て行ってもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用する構成を変更することが可能である。
【0097】
なお、上述のような本実施形態に係る情報処理装置の各機能を実現するためのコンピュータプログラムを作製し、パーソナルコンピュータ等に実装することが可能である。また、このようなコンピュータプログラムが格納された、コンピュータで読み取り可能な記録媒体も提供することができる。記録媒体は、例えば、磁気ディスク、光ディスク、光磁気ディスク、フラッシュメモリなどである。また、上記のコンピュータプログラムは、記録媒体を用いずに、例えばネットワークを介して配信してもよい。
【0098】
<演算検証方法について>
続いて、図2を参照しながら、本実施形態に係る演算検証方法について、詳細に説明する。図2は、本実施形態に係る演算検証方法について説明するための流れ図である。
【0099】
情報処理装置10の暗号化処理部101または復号処理部103は、それぞれの処理部が行う処理に際して、楕円曲線上の点のスカラ倍演算が必要となった際に、楕円曲線演算部105に対して、スカラ倍演算の実行を要請する。この際、暗号化処理部101および復号処理部103は、楕円曲線演算部105に対して、被演算点Pに関する情報およびスカラ倍演算の係数sに関する情報を含む演算パラメータを伝送する。
【0100】
楕円曲線演算部105の楕円曲線演算制御部111は、暗号化処理部101または復号処理部103から伝送された演算パラメータを取得し(ステップS101)、要請のあった楕円曲線演算における被演算点Pと、スカラ倍演算の係数sと、を把握する。続いて、楕円曲線演算制御部111は、取得した被演算点Pおよびスカラ倍演算の係数sを、スカラ倍演算部115に伝送する。
【0101】
スカラ倍演算部115は、楕円曲線演算制御部111から伝送された演算パラメータに基づいて、スカラ倍演算Q=s・Pを実行する(ステップS103)。スカラ倍演算部115は、スカラ倍演算処理が終了すると、スカラ倍演算処理が終了した旨を楕円曲線演算制御部111に通知するとともに、演算結果であるべき倍点Qに関する情報を、演算検証部117に伝送する。
【0102】
演算検証部117は、スカラ倍演算部115から演算結果が伝送されると、加法演算部113に、以下の2種類の加法演算の実行を要請する。
【0103】
=(P+Q)+R ・・・(式102)
=P+(Q+R) ・・・(式103)
【0104】
加法演算部113は、演算検証部117から上記SおよびSで表される2種類の加法演算を要請されると、上記式102および式103に基づいて加法演算を実行し(ステップS105)、演算結果を演算検証部117に伝送する。
【0105】
演算検証部117は、加法演算部113から伝送された値SおよびSに基づいて、S=Sが成立するか(すなわち、上記式101の等号が成立するか否か)を検証する(ステップS107)。
【0106】
演算検証部117は、S=Sが成立した場合には、べき倍点Qが適式に演算されたと判断し、スカラ倍演算の演算結果と検証結果とを、演算結果出力部119に伝送する。その後、演算結果および検証結果を取得した演算結果出力部119は、楕円曲線演算の実行を要請した処理部に対して、演算結果Qを出力する(ステップS109)。
【0107】
他方、S=Sが成立しなかった場合には、演算検証部117は、べき倍点Qが適式に演算されなかったと判断し、この判断結果を演算結果出力部119に伝送する。その後、検証結果を取得した演算結果出力部119は、楕円曲線演算の実行を要請した処理部に対して、べき倍点Qが適式に演算されなかった旨を表すエラーを出力する(ステップS111)。
【0108】
以上説明したように、本実施形態に係る演算検証方法は、式101の左辺における2回の加法演算と、式101の右辺における2回の加法演算と、1回の点の比較演算のみで、演算結果の検証を行うことができる。このため、本実施形態に係る演算検証方法では、ある値のべき乗を計算する等といった複雑な演算処理を行うことなく、スカラ倍演算の演算結果の正当性を、楕円曲線の種類を問わず容易に検証することができる。
【0109】
また、本実施形態に係る演算検証方法では、有限体における比較処理が不要であり、楕円曲線上の加算/比較処理をそのまま利用できる。そのため、本実施形態に係る演算検証方法をハードウェア的に実現する場合には、演算検証方法を実現するための回路規模を小さくすることが可能となる。また、本実施形態に係る演算検証方法では、被演算点Pおよびべき倍点Qの双方をあわせて検証することができるため、入力値および出力値の検証ステップを、従来の手法よりも簡略化することができる。その結果、本実施形態に係る演算検証方法をソフトウェア的に実現する場合に、計算コストを削減することができる。
【0110】
(ハードウェア構成について)
次に、図3を参照しながら、本発明の実施形態に係る情報処理装置10のハードウェア構成について、詳細に説明する。図3は、本発明の実施形態に係る情報処理装置10のハードウェア構成を説明するためのブロック図である。
【0111】
情報処理装置10は、主に、CPU901と、ROM903と、RAM905と、を備える。また、情報処理装置10は、更に、ホストバス907と、ブリッジ909と、外部バス911と、インターフェース913と、入力装置915と、出力装置917と、ストレージ装置919と、ドライブ921と、接続ポート923と、通信装置925とを備える。
【0112】
CPU901は、演算処理装置および制御装置として機能し、ROM903、RAM905、ストレージ装置919、またはリムーバブル記録媒体927に記録された各種プログラムに従って、情報処理装置10内の動作全般またはその一部を制御する。ROM903は、CPU901が使用するプログラムや演算パラメータ等を記憶する。RAM905は、CPU901の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を一次記憶する。これらはCPUバス等の内部バスにより構成されるホストバス907により相互に接続されている。
【0113】
ホストバス907は、ブリッジ909を介して、PCI(Peripheral Component Interconnect/Interface)バスなどの外部バス911に接続されている。
【0114】
入力装置915は、例えば、マウス、キーボード、タッチパネル、ボタン、スイッチおよびレバーなどユーザが操作する操作手段である。また、入力装置915は、例えば、赤外線やその他の電波を利用したリモートコントロール手段(いわゆる、リモコン)であってもよいし、情報処理装置10の操作に対応した携帯電話やPDA等の外部接続機器929であってもよい。さらに、入力装置915は、例えば、上記の操作手段を用いてユーザにより入力された情報に基づいて入力信号を生成し、CPU901に出力する入力制御回路などから構成されている。情報処理装置10のユーザは、この入力装置915を操作することにより、情報処理装置10に対して各種のデータを入力したり処理動作を指示したりすることができる。
【0115】
出力装置917は、取得した情報をユーザに対して視覚的または聴覚的に通知することが可能な装置で構成される。このような装置として、CRTディスプレイ装置、液晶ディスプレイ装置、プラズマディスプレイ装置、ELディスプレイ装置およびランプなどの表示装置や、スピーカおよびヘッドホンなどの音声出力装置や、プリンタ装置、携帯電話、ファクシミリなどがある。出力装置917は、例えば、情報処理装置10が行った各種処理により得られた結果を出力する。具体的には、表示装置は、情報処理装置10が行った各種処理により得られた結果を、テキストまたはイメージで表示する。他方、音声出力装置は、再生された音声データや音響データ等からなるオーディオ信号をアナログ信号に変換して出力する。
【0116】
ストレージ装置919は、情報処理装置10の記憶部の一例として構成されたデータ格納用の装置である。ストレージ装置919は、例えば、HDD(Hard Disk Drive)等の磁気記憶部デバイス、半導体記憶デバイス、光記憶デバイス、または光磁気記憶デバイス等により構成される。このストレージ装置919は、CPU901が実行するプログラムや各種データ、および外部から取得した音響信号データや画像信号データなどを格納する。
【0117】
ドライブ921は、記録媒体用リーダライタであり、情報処理装置10に内蔵、あるいは外付けされる。ドライブ921は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体927に記録されている情報を読み出して、RAM905に出力する。また、ドライブ921は、装着されている磁気ディスク、光ディスク、光磁気ディスク、または半導体メモリ等のリムーバブル記録媒体927に記録を書き込むことも可能である。リムーバブル記録媒体927は、例えば、DVDメディア、HD−DVDメディア、Blu−rayメディア等である。また、リムーバブル記録媒体927は、コンパクトフラッシュ(登録商標)(CompactFlash:CF)、メモリースティック、または、SDメモリカード(Secure Digital memory card)等であってもよい。また、リムーバブル記録媒体927は、例えば、非接触型ICチップを搭載したICカード(Integrated Circuit card)または電子機器等であってもよい。
【0118】
接続ポート923は、機器を情報処理装置10に直接接続するためのポートである。接続ポート923の一例として、USB(Universal Serial Bus)ポート、i.Link等のIEEE1394ポート、SCSI(Small Computer System Interface)ポート等がある。接続ポート923の別の例として、RS−232Cポート、光オーディオ端子、HDMI(High−Definition Multimedia Interface)ポート等がある。この接続ポート923に外部接続機器929を接続することで、情報処理装置10は、外部接続機器929から直接各種のデータを取得したり、外部接続機器929に各種のデータを提供したりする。
【0119】
通信装置925は、例えば、通信網931に接続するための通信デバイス等で構成された通信インターフェースである。通信装置925は、例えば、有線または無線LAN(Local Area Network)、Bluetooth、またはWUSB(Wireless USB)用の通信カード等である。また、通信装置925は、光通信用のルータ、ADSL(Asymmetric Digital Subscriber Line)用のルータ、または、各種通信用のモデム等であってもよい。この通信装置925は、例えば、インターネットや他の通信機器との間で、例えばTCP/IP等の所定のプロトコルに則して信号等を送受信することができる。また、通信装置925に接続される通信網931は、有線または無線によって接続されたネットワーク等により構成され、例えば、インターネット、家庭内LAN、赤外線通信、ラジオ波通信または衛星通信等であってもよい。
【0120】
以上、本発明の実施形態に係る情報処理装置10の機能を実現可能なハードウェア構成の一例を示した。上記の各構成要素は、汎用的な部材を用いて構成されていてもよいし、各構成要素の機能に特化したハードウェアにより構成されていてもよい。従って、本実施形態を実施する時々の技術レベルに応じて、適宜、利用するハードウェア構成を変更することが可能である。
【0121】
<まとめ>
以上説明したように、本発明の実施形態に係る情報処理装置および演算検証方法では、スカラ倍演算における被演算点Pと、スカラ倍演算の演算結果であるべき倍点Qと、楕円曲線のベースポイントEとを利用して、簡便にスカラ倍演算の検証を行うことができる。
【0122】
より詳細には、本発明の実施形態に係る情報処理装置および演算検証方法では、4回の加法演算と、1回の点の比較演算のみで、演算結果の検証を行うことができる。このため、本発明の実施形態に係る情報処理装置および演算検証方法では、ある値のべき乗を計算する等といった複雑な演算処理を行うことなく、スカラ倍演算の演算結果の正当性を、楕円曲線の種類を問わず容易に検証することができる。
【0123】
また、本発明の実施形態に係る情報処理装置および演算検証方法では、有限体における比較処理が不要であり、楕円曲線上の加算/比較処理をそのまま利用できる。そのため、本発明の実施形態に係る演算検証方法をハードウェア的に実現する場合には、演算検証方法を実現するための回路規模を小さくすることが可能となる。また、本発明の実施形態に係る情報処理装置および演算検証方法をソフトウェア的に実現する場合には、計算コストを削減することができる。
【0124】
以上、添付図面を参照しながら本発明の好適な実施形態について詳細に説明したが、本発明はかかる例に限定されない。本発明の属する技術の分野における通常の知識を有する者であれば、特許請求の範囲に記載された技術的思想の範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、これらについても、当然に本発明の技術的範囲に属するものと了解される。
【符号の説明】
【0125】
10 情報処理装置
101 暗号化処理部
103 復号処理部
105 楕円曲線演算部
107 記憶部
111 楕円曲線演算制御部
113 加法演算部
115 スカラ倍演算部
117 演算検証部
119 演算結果出力部


【特許請求の範囲】
【請求項1】
所定の定義体上で定義された楕円曲線E上の点Pに基づいて、点Pをスカラ倍した点Q=s・Pを演算するスカラ倍演算部と、
前記楕円曲線E上の点Pと、前記スカラ倍演算部が算出した点Q=s・Pと、前記楕円曲線E上の任意の点Gと、を用いて、以下の式1における等号が成立するか否かを検証する演算検証部と、
を備える、情報処理装置。

(P+Q)+G=P+(Q+G) ・・・(式1)

【請求項2】
前記楕円曲線Eは、
有限体F(q=p,m∈N,p>3)上で定義された楕円曲線E:y=x+ax+b(a,b∈F)、または、
標数2の有限体F2^m(m∈N)上で定義された楕円曲線E:y+xy=x+a+a(a,a∈F2^m
である、請求項1に記載の情報処理装置。
【請求項3】
前記演算検証部は、前記式1における等号が成立しなかった場合、前記点Pが適式な値ではなかった、または、点Qに改ざんが加えられたと判断する、請求項2に記載の情報処理装置。
【請求項4】
前記情報処理装置は、自装置が秘匿すべき情報である秘匿情報を格納する記憶部を更に備え、
前記楕円曲線E上の任意の点Gは、前記秘匿情報の一つとして前記記憶部に格納される、請求項1に記載の情報処理装置。
【請求項5】
前記記憶部には、自装置が保持する秘密鍵dが格納されており、
前記スカラ倍演算部は、スカラ倍演算の係数sとして前記秘密鍵dを用いる、請求項1に記載の情報処理装置。
【請求項6】
前記演算検証部は、前記点Pまたは前記点Qの代わりに、自装置が保持している公開鍵または信頼できる他の情報処理装置が保持している公開鍵を用いて、前記式1における等号が成立するか否かを検証する、請求項1に記載の情報処理装置。
【請求項7】
所定の定義体上で定義された楕円曲線E上の点Pに基づいて、点Pをスカラ倍した点Q=s・Pを演算するステップと、
前記楕円曲線E上の点Pと、算出された点Q=s・Pと、前記楕円曲線E上の任意の点Gと、を用いて、以下の式1における等号が成立するか否かを検証するステップと
を含む、演算検証方法。
【請求項8】
コンピュータに、
所定の定義体上で定義された楕円曲線E上の点Pに基づいて、点Pをスカラ倍した点Q=s・Pを演算するスカラ倍演算機能と、
前記楕円曲線E上の点Pと、前記スカラ倍演算機能により算出した点Q=s・Pと、前記楕円曲線E上の任意の点Gと、を用いて、以下の式1における等号が成立するか否かを検証する演算検証機能と、
を実現させるためのプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6A】
image rotate

【図6B】
image rotate


【公開番号】特開2010−258708(P2010−258708A)
【公開日】平成22年11月11日(2010.11.11)
【国際特許分類】
【出願番号】特願2009−105585(P2009−105585)
【出願日】平成21年4月23日(2009.4.23)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.Bluetooth
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】