説明

楕円曲線演算装置、方法及びプログラム

【課題】故障利用攻撃に対する検知率とそのための演算量とを考慮しつつ故障利用攻撃を適切に検知する。
【解決手段】本故障利用攻撃検知方法は、有限体上の楕円曲線Eと、楕円曲線E上の点Cと、スカラーdとに基づき、楕円曲線E上のスカラー倍点[d]Cを算出し、記憶装置に格納するスカラー倍演算ステップと、点Cとスカラー倍点[d]Cとを用いて楕円曲線E上のペアリングを計算し、ペアリングの計算結果が1でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップとを含む。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、楕円曲線演算処理を行う装置に対する故障利用攻撃の検知技術に関する。
【背景技術】
【0002】
従来より、暗号方式として公開鍵暗号方式と共通鍵暗号方式とが知られている。公開鍵暗号方式は、暗号化と復号化とで一対の異なる鍵を用いる方式である。典型的な公開鍵暗号方式では、暗号化に用いる公開鍵は予め公開され、復号化に用いる秘密鍵は秘密情報として保持される。例えば、送信者は受信者の公開鍵を用いて平文を暗号化し、暗号文を送信する。受信者は受信者の秘密鍵を用いて暗号文を復号化し、平文を得る。
【0003】
公開鍵暗号方式として知られている暗号方式の一つに、楕円曲線暗号がある。楕円曲線暗号は、楕円曲線上の点の間の演算規則を利用した暗号方式の総称である。pを素数、mを自然数とすると、要素数q=pの有限体GF(q)上の楕円曲線Eとは、
E:y+axy+ay=x+a+ax+a
を満たす点(x,y)の集合に、無限遠点と呼ばれる点∞を加えた集合のことである。無限遠点∞を0と表すこともある。ここで、a、a、a、a、a、x、yは有限体GF(q)の要素である。楕円曲線上の点は(x,y)のような座標形式(アファイン座標という)で表現できるが、無限遠点∞は(x,y)のような座標形式で表現できない唯一の点である。このように、アファイン座標では、無限遠点以外の点は有限体GF(q)の2つの要素の組として表される。
【0004】
楕円曲線E上の点の間には、以下のように点の加算が定義できる。まず、点Pを有限体GF(q)上の楕円曲線E上の点とする。そして、以下のように点Pの逆元−Pを定義する。
(a)P=∞のとき、−P=∞
(b)上記(a)以外のとき、P=(x,y)とすると、−P=(x,−y)
また、P及びPをGF(q)上の楕円曲線E上の点とする。そして、PとPの和Pを以下のように定義する。
(a)P=∞のとき、P=P
(b)P=∞のとき、P=P
(c)P=−Pのとき、P=∞
(d)上記(a)乃至(c)以外のとき、P=(x,y)、P=(x,y)、P=(x,y)とすると、
=λ+aλ−a−x−x
=(x−x)λ−y+a−a
ただし、
≠Pのとき、λ=(y−y)/(x−x
=Pのとき、λ=(3x+2a+a−a)/(2y+a+a
≠PのときにP+Pを計算することを楕円加算、P=PのときにP+P=[2]Pを計算することを楕円2倍算という。
【0005】
楕円曲線Eとその上の点Pと、あるスカラー(ここでは整数スカラー)dが与えられているとき、点[d]P=P+P+・・・+P(d個のPの和)を計算することをスカラー倍算という。このとき点Pをベースポイントと呼ぶ。また、楕円曲線Eとその上のベースポイントPと、そのスカラー倍点[d]Pが与えられているとき、スカラーdを求める問題を楕円曲線離散対数問題という。楕円曲線暗号の安全性は、スカラー倍算は容易に計算可能だが、楕円曲線離散対数問題を解くことは困難であるという事実に依存している。このため楕円暗号方式は、スカラーdを秘密鍵、スカラー倍点[d]Pを公開鍵の一部として使用することが多い。
【0006】
次に、楕円曲線暗号の一つである楕円エルガマル(ElGamal)暗号を例に説明する。ここで、有限体GF(p)、その上の楕円曲線E及びベースポイントPは予め設定されているものとする。また、受信者の秘密鍵をd、公開鍵をY=[d]Pとする。
【0007】
受信者にメッセージMを送る場合、受信者の公開鍵Yを用いて以下のような暗号化処理を行う。ここで、メッセージMは楕円曲線E上の点として表されているものとする。
(1)乱数rを生成する
(2)点[r]Pを計算し、Cとして保持する
(3)点M+[r]Yを計算し、Cとして保持する
(4)CとCを暗号文C(C,C)として受信者に送信する
【0008】
一方、暗号文Cを受け取った受信者は、受信者の秘密鍵dを用いて、以下のような復号化処理を行う。
(1)点[d]Cを計算し、Kとして保持する
(2)点C−Kを計算して、復号化されたメッセージM’を取得する
【0009】
これに対し、上記通信を傍受した攻撃者が、暗号文の解読を試みたとする。まず、攻撃者は公開鍵Y=[d]P及びベースポイントPを入手できる。しかし、公開鍵Yから秘密鍵dを算出することは楕円曲線離散対数問題を解くことを意味し、困難である。また、攻撃者は暗号文C(C,C)=([r]P,M+[r]Y)を入手(すなわち傍受)できる。しかし、C=[r]PとベースポイントPから乱数rを算出することは楕円曲線離散対数問題を解くことを意味し、困難である。従って、d及びrは入手できないと言え、そのスカラー倍点[r]Y=[r][d]Pを算出することも、C=M+[r]YからメッセージMを得ることも困難である。
【0010】
楕円曲線暗号は、同じく公開鍵暗号方式の一つであるRSA暗号方式と比べ、より短い鍵長で同程度のセキュリティレベルを確保できるという特徴を有する。例えば鍵長160ビットの楕円曲線暗号と、鍵長1024ビットのRSA暗号のセキュリティレベルがほぼ同じと考えられている。そのため、楕円曲線暗号は、メモリや処理能力の小さいICカード、携帯電話機などの小型デバイスで使用されることが多い。
【0011】
一方、暗号文等の入手可能情報から秘密鍵等の秘密情報を特定する、様々な解読技術が存在する。暗号装置を対象とした解読技術としては、暗号装置の動作状況やその変化を物理的に観測することで秘密情報を特定するものが知られている。解析攻撃の一つである故障利用攻撃は、供給電圧を急激に変化させる等、暗号装置の処理中に環境を著しく変化させることで、意図的に処理結果を誤らせる。そして、攻撃者はその誤り方に基づき秘密情報の特定を試みる。
【0012】
次に、楕円エルガマル暗号を利用した認証システムを攻撃対象とする故障利用攻撃の例を説明する。例えば、認証システムはICカードと認証装置を有し、ICカードと認証装置の間では以下のような認証処理が行われる。ここで、有限体GF(p)、その上の楕円曲線E及びベースポイントPは予め設定されているものとする。また、ICカードの秘密鍵をd、ICカードの公開鍵をY=[d]Pとする。さらに、秘密鍵dはICカード内に秘密情報として保持されているものとする。
【0013】
(1)認証装置は、ランダムに、メッセージM及び乱数rを生成する。ここで、メッセージMは楕円曲線E上の点として表されているものとする。
(2)認証装置は、C=[r]P及びC=M+[r]Yを計算し、暗号文C=(C,C)をICカードに送信する。
(3)ICカードは、暗号文C=(C,C)及び秘密鍵dを用いて、K=[d]C及びM’=C−Kを計算し、メッセージM’を認証装置に送信する。
(4)認証装置は、(1)で生成したメッセージMと受信したメッセージM’を比較し、一致した場合にはユーザ認証成功とする。
【0014】
上記の認証システムに対して、攻撃者は次のように秘密鍵dを特定する。まず、上記(3)において攻撃者は高電圧等の物理的攻撃をICカードに与える。これにより、ICカードはK=[d]Cの計算を誤り、結果として誤ったM’=C−Kを認証装置に送信する。攻撃者は、ICカードの秘密鍵dを特定するために、この誤った出力を取得し解析する。
【0015】
このように、故障利用攻撃によって攻撃者に秘密鍵dを特定される可能性がある。従って、ICカードは、故障利用攻撃を検知し、計算結果を認証装置に送信しないようにする必要がある。
【0016】
次に、ICカードが故障利用攻撃を検知する手法を説明する。一般的に、ICカードはC,K及びM’に基づき故障利用攻撃を受けたか判定する。そして、故障利用攻撃を受けたと判定した場合、ICカードはメッセージM’を認証装置に送信しない。具体的な例としては、故障利用攻撃を受けた場合にKの計算結果が楕円曲線E上の点にならないことがあるという性質を利用した手法がある。すなわち、ICカードは、Kを楕円曲線Eの方程式に代入することで、楕円曲線E上の点か判断し、楕円曲線E上の点でない場合には故障利用攻撃を受けたと判定する。さらに具体的には、以下のような手順で表せる。
【0017】
(1)楕円曲線Eが
E:y+axy+ay=x+a+ax+a
という方程式で表されるとき、関数f(x,y)を
f(x,y)=x+a+ax+a−(y+axy+ay)
と定める。そして、Kが(a,b)と表されるとき、f(a,b)を計算する。
(2)f(a,b)≠0(ゼロ)のとき、ICカードは故障利用攻撃を受けたと判定する。一方、f(a,b)=0(ゼロ)のとき、ICカードは故障利用攻撃を受けていないと判定する。
【0018】
しかし、この手法では、故障利用攻撃を受けた場合でもKが楕円曲線E上の点になるときは、故障利用攻撃を検知することができない。実際には、故障利用攻撃を受けた場合でも2回に1回程度の割合で楕円曲線E上の点になることが知られており、2分の1程度の確率で故障利用攻撃の検知漏れが生じることになる。
【特許文献1】特開2004−252433号公報
【発明の開示】
【発明が解決しようとする課題】
【0019】
以上のように、ICカード等で楕円曲線演算処理を行う場合は故障利用攻撃への対策が必要である。しかし、従来の方法では、故障利用攻撃の検知漏れが多いという問題がある。また、ICカードの演算処理能力は一般的に低く、演算量が増えると計算時間が長くなってしまうという問題もある。
【0020】
従って、本技術の目的は、故障利用攻撃に対する検知率とそのための演算量とを考慮しつつ故障利用攻撃を適切に検知するための新規な技術を提供することである。
【課題を解決するための手段】
【0021】
本楕円曲線演算装置は、有限体上の楕円曲線Eと、楕円曲線E上の点Cと、スカラーdとに基づき、楕円曲線E上のスカラー倍点[d]Cを算出するスカラー倍演算手段と、点Cとスカラー倍点[d]Cとを用いて楕円曲線E上のペアリングを計算し、ペアリングの計算結果が1でない場合には故障利用攻撃を受けたと判定する第1の故障利用攻撃検知手段とを有する。
【発明の効果】
【0022】
故障利用攻撃に対する検知率とそのための演算量とを考慮しつつ故障利用攻撃を適切に検知できる。
【発明を実施するための最良の形態】
【0023】
[ペアリングの説明]
本技術では、故障利用攻撃を検知するために、楕円曲線上のペアリングと呼ばれる関数を利用する。ここで、前提となるペアリングについて説明しておく。なお、本ペアリングの説明と後に述べる実施の形態において、同じ記号又は文字を別の意味で使用する場合がある。
【0024】
ペアリングとは、有限体上に定義された楕円曲線上の2点(ここではP及びQとおく)を入力値として計算すると、以下の性質を有する関数である。
(a)(P+P,Q)=(P,Q)・(P,Q)
ここで、P=P+Pである
(b)(P,Q)=(Q,P)
(c)(P,P)=1
【0025】
以上の性質より、C及び[d]Cをペアリング関数に入力したとき、以下のように変形できる。
(C,[d]C
=(C,[d−1]C)・(C,C
=(C,[d−1]C)・1
これをdが1になるまで繰り返すと出力値は1になる。よって、入力値となる2点がスカラー倍の関係にあるとき、出力値は1になることがわかる。
【0026】
さらに、本実施の形態においては、ベイユペアリング(Weil Pairing)が採用されているものとする。ベイユペアリングは、以下のような関数eとして定義される。
(S,T)=f(Q+S)/f(Q)・f(P)/f(P+T)・・・・・・(1)
ここで、rは自然数とし、E[r]は、[r]P=∞を満たす楕円曲線E上の点Pの集合とする。また、eの入力値である点S、Tは、集合E[r]の要素である。さらに、f、fは、それぞれ点S、Tから導出される関数で、求め方は後に詳しく述べる。また、点P、Qは、それぞれP+T及びQ+Sが無限遠点∞にならない楕円曲線E上の任意の点である。また、f、fは、それぞれ特に点S、Tにおいてのみr−位の零点をもつ関数である。
なお、ペアリングの出力値は、1の原始r乗根のなす群と同一視された値であり、上記e(S,T)を{(q−1)/r}乗した値になる。
【0027】
次に、関数fを導出するアルゴリズムを説明する。まず、f=gとする。ここで、点S=(x,y)、g=1、g=x−xとおくと、以下のように、gi+jを求めることができる。
i+j=g・g・l(x,y)/v(x,y)・・・・・・(2)
なお、方程式l(x,y)=0は以下のような直線である
i≠jのとき、楕円曲線E上の2点[i]S及び[j]Sを通る直線
i=jのとき、楕円曲線E上の点[i]Sを通り楕円曲線Eに接する直線
また、方程式v(x,y)=0は、[i+j]S及び無限遠点∞を通る直線である
そして、上記gi+jから、gを求める。すなわち、rを2進展開等によりi+jの繰り返しに分解し、gi+jを繰り返し計算することでgを求める。例えばr=13のとき、r=1+2+2であるから、g、g、g(=g2+2)及びg(=g4+4)を求め、g=g1+4、g13=g5+8と求めることができる。
【0028】
さらに、ベイユペアリングの具体的な計算例について説明する。まず、有限体GF(13)上の楕円曲線Eを以下のように定める。
E:y=x+x
r=2とし、E[2]に含まれる楕円曲線上の点S=(0,0)、T=(5,0)を入力値としてベイユペアリングe(S,T)を計算する。P=(0,0)、Q=(5,0)としたとき、
Q+Sのx座標=λ+aλ−a−x−x=0+0・0−0−5−0=−5=8(mod 13)
Q+Sのy座標=(x−x)・λ−y−a−a=(5−0)・0−0−0・(−5)−0=0(mod 13)
であるから、Q+S=(8,0)、同様に、P+T=(8,0)と算出できる。また、
=x−0=x
=x−5
と求めることができ、e(S,T)は以下のようになる。
(S,T)=8/5・(−5)/3=12(mod 13)/2(mod 13)=6(mod 13)
これを1の原始2乗根のなす群と同一視すると、ペアリングの出力値は以下のようになる。
(S,T)=6(13−1)/2=−1
【0029】
[実施の形態]
本技術の実施の形態に係る、ICカードと認証装置の機能ブロック図を図1に示す。本実施の形態では、複数のICカード1(但し図1では1つのみ示されている)と認証装置3が、所定の方式(例えばICカード1が接触型ICカードであれば、接触型ICカードのための通信方式。非接触型ICカードであれば、非接触型ICカードのための通信方式)で通信を行い、ICカードを持つユーザの認証処理を行うものである。なお、認証処理において利用する暗号方式としては、楕円エルガマル暗号が採用されているものとして説明する。ただし、本技術は、楕円エルガマル暗号に限らず、他の楕円曲線暗号についても適用可能である。
【0030】
図1に示したICカード1は、記憶装置101と、公開情報記憶部103と、秘密鍵記憶部105と、故障利用攻撃検知部107と、復号化処理部109と、制御部111と、通信部113とを有する。なお、本実施の形態では、公開情報記憶部103は、有限体GF(q)上の楕円曲線Eの方程式、ベースポイントP及びユーザの公開鍵Y=[d]Pをすでに格納し、秘密鍵記憶部105は、ユーザの秘密鍵dをすでに格納しているものとして説明する。
【0031】
通信部113は、制御部111と連携し、認証装置3から受信した暗号文を記憶装置101に格納すると共に、記憶装置101に格納されたメッセージを認証装置3へ送信する。復号化処理部109は、制御部111と連携し、記憶装置101、公開情報記憶部103及び秘密鍵記憶部105に格納されたデータを用いて暗号文を復号化し、記憶装置101に格納する。故障利用攻撃検知部107は、制御部111と連携し、記憶装置101及び公開情報記憶部103に格納されたデータを用いて故障利用攻撃の有無を判定する。
【0032】
また、認証装置3は、記憶装置301と、公開情報記憶部303と、乱数生成部305と、認証処理部307と、暗号化処理部309と、制御部311と、通信部313とを有する。なお、本実施の形態では、公開情報記憶部303は、有限体GF(q)上の楕円曲線Eの方程式、ベースポイントP及びユーザの公開鍵Y=[d]Pをすでに格納しているものとして説明する。
【0033】
通信部313は、制御部311と連携し、記憶装置301に格納された暗号文をICカード1へ送信すると共に、ICカード1から受信したメッセージを記憶装置301に格納する。乱数生成部305は、制御部311と連携して、ランダムなデータを生成し、記憶装置301に格納する。暗号化処理部309は、制御部311と連携して、記憶装置301及び公開情報記憶部303に格納されたデータを用いて暗号文を生成し、記憶装置301に格納する。認証処理部307は、制御部311と連携し、記憶装置301に格納されたデータを用いてユーザ認証処理を行う。
【0034】
次に、図2乃至図5を用いて、認証処理の内容について説明する。ICカード1と認証装置3の間で認証処理が開始された場合、認証装置3の制御部311は、乱数生成部305に、乱数r及び楕円曲線E上のランダムな点として表されるメッセージMを生成させ、記憶装置301に格納させる。次に、制御部311は、暗号化処理部309に、記憶装置301に格納された乱数r及びメッセージM並びに公開情報記憶部303に格納されたベースポイントPを用いてC=[r]P及びC=M+[r]Pを算出させ、暗号文C(C,C)として記憶装置301に格納させる(ステップS1)。そして、制御部311は、通信部313に、記憶装置301に格納された暗号文CをICカード1へ送信させる(ステップS3)。
【0035】
一方、ICカード1の通信部113が暗号文Cを受信すると、ICカード1の制御部111は、通信部113に、暗号文Cを記憶装置101に格納させる(ステップS5)。そして、制御部111は、復号化処理部109に、記憶装置101に格納されたC及び秘密鍵記憶部105に格納されている秘密鍵dを用いて、K=[d]Cを算出させ、記憶装置101に格納させる(ステップS7)。
【0036】
次に、ICカード1の制御部111は、故障利用攻撃検知部107に、K=[d]Cの算出において故障利用攻撃を受けたか判定する攻撃有無判定処理を実行させる(ステップS9)。攻撃有無判定処理の詳細については後に説明するが、当該処理の中で、攻撃判定フラグが、記憶装置101においてON又はOFFに設定される。そして、制御部111は、故障利用攻撃検知部107を介して、記憶装置101に格納された攻撃判定フラグを取得し、攻撃判定フラグがONである場合は(ステップS11:Yesルート)、故障利用攻撃を受けたと判定し、必要に応じて所定の異常系処理を行う(ステップS13)。一方、攻撃判定フラグがOFFである場合は(ステップS11:Noルート)、制御部111は故障利用攻撃を受けていないと判定し、復号化処理を続ける。制御部111は、復号化処理部109に、記憶装置101に格納されたC及びKを用いてメッセージM’=C−Kを算出させ、記憶装置101に格納させる(ステップS15)。そして、制御部111は、通信部113に、記憶装置101に格納されたメッセージM’を認証装置3へ送信させる(ステップS17)。
【0037】
認証装置3の通信部313がメッセージM’を受信すると、認証装置3の制御部311は、通信部313に、メッセージM’を記憶装置301に格納させる(ステップS19)。そして、制御部311は、認証処理部307に、記憶装置301に格納されたメッセージMとメッセージM’が同一であるか比較させ、結果を制御部311に通知させる。MとM’が同一であれば、制御部311は、認証成功と判断する(ステップS21)。なお、認証成功時に行われる所定の正常系処理及び認証失敗時に行われる所定の異常系処理については、従来と同様であるため、これ以上は述べない。
【0038】
[攻撃有無判定処理]
次に、ベイユペアリングを用いた攻撃有無判定処理を図3乃至図5を用いて説明する。本実施の形態では、C及びK(=[d]C)を入力値としてペアリングを行い、スカラー倍の関係であるか判断することで、故障利用攻撃を受けたか判定する。なお、本実施の形態では予め公開情報記憶部103に、有限体GF(q)の要素数q(=p)が格納されているものとして説明する。また、本攻撃有無判定処理において算出した値又は変数等に代入した値は、すべて記憶装置101に格納するものとする。
【0039】
まず、ICカード1の故障利用攻撃検知部107は、公開情報記憶部103に格納されたqを、変数nに代入する(ステップS31)。次に、故障利用攻撃検知部107は、関数f導出処理を実行し、関数fC1、関数fを求める。関数fC1、関数fは、ペアリングの計算において必要となる関数であり、それぞれ点C、点K(=[d]C)から求められる。そして、故障利用攻撃検知部107は、記憶装置101に格納された暗号文Cの点Cを、変数である点Sに代入する(ステップS33)。さらに、故障利用攻撃検知部107は、関数f導出処理を行う(ステップS35)。
【0040】
ここで、関数f導出処理を図4を用いて説明する。まず、故障利用攻撃検知部107は、繰り返し処理のためのカウンタであるiに初期値2を代入する(ステップS51)。次に、故障利用攻撃検知部107は、関数gに1、関数gにx−xを代入する(ステップS53)。ここで、xは点Sのx座標である。そして、故障利用攻撃検知部107は、記憶装置101に格納された変数nを2進展開し、関数gを求めるのに必要な、全てのg2^z(2^zは2のべき乗を表すものとする)を特定する(ステップS55)。例えば、n=13の場合、13=2+2+2と2進展開され、必要なg2^zは、g、g及びgであると特定される。
【0041】
ここで、gの算出に必要なg2^zが全て算出されていない場合(ステップS57:Noルート)、故障利用攻撃検知部107は、先に述べた(2)式に従いg2iを求める。まず、故障利用攻撃検知部107は、[i]Sを通りEに接する直線l(x,y)=0を算出する(ステップS59)。次に、故障利用攻撃検知部107は、[2i]S及び無限遠点∞を通る直線v(x,y)=0を算出する(ステップS61)。そして、故障利用攻撃検知部107は、g2i=g・g・l(x,y)/v(x,y)を算出する(ステップS63)。さらに、故障利用攻撃検知部107は、変数iに2iを代入し(ステップS65)、ステップS57の処理に戻る。
【0042】
一方、gの算出に必要なg2^zが全て算出されている場合(ステップS57:Yesルート)、故障利用攻撃検知部107は、2進展開で特定されたg2^zから、gを算出する(ステップS67)。例えば、n=13の場合、先に述べた(2)式に従い、g=g1+4=g・g・l(x,y)/v(x,y)、g13=g5+8=g・g・l(x,y)/v(x,y)のように算出される。そして、算出されたgを関数fに代入し(ステップS69)、元の処理に戻る。このようにして関数f導出処理が行われる。この処理により、ペアリングの計算に必要なfC1及びfを求めることができる。
【0043】
図3の処理の説明に戻って、故障利用攻撃検知部107は、導出された関数fを、関数fC1に代入する(ステップS37)。次に、故障利用攻撃検知部107は、点K(=[d]C)を点Sに代入し(ステップS39)、関数f導出処理を実行する(ステップS41)。関数f導出処理ついては、図4を用いてすでに説明したので説明を省略する。そして、故障利用攻撃検知部107は、導出された関数fを、関数fに代入し(ステップS43)、処理は端子Aを介して図5の処理に移行する。
【0044】
次に、故障利用攻撃検知部107は、楕円曲線E上の点U及びVをランダムに選択し(ステップS71)、V+C及びU+Kを算出する(ステップS73)。ここで、V+C=∞又はU+K=∞の場合(ステップS75:Noルート)、ステップS71へ戻り、点U及びVを選択し直す。一方、V+C≠∞かつU+K≠∞の場合(ステップS75:Yesルート)、ステップS77へ移行する。
【0045】
そして、故障利用攻撃検知部107は、記憶装置101に格納されている、関数fC1、f、点U、V、V+C及びU+Kを用いて、ペアリングe(C,K)の計算を行う(ステップS77)。ペアリングの計算式については、先に述べた(1)式に従い、e(C,K)=fC1(V+C1)/fC1(V)・f(U)/f(U+K)となり、この計算結果を{(q−1)/n}乗したものが出力値となる。
【0046】
そして、故障利用攻撃検知部107は、ペアリングの出力値が1であるか判断し、出力値が1である場合(ステップS79:Yesルート)、記憶装置101の攻撃判定フラグをOFFに設定し(ステップS81)、元の処理に戻る。一方、ペアリングの出力値が1でない場合(ステップS79:Noルート)、故障利用攻撃検知部107は、記憶装置101の攻撃判定フラグをONに設定し(ステップS83)、元の処理に戻る。
【0047】
このようにして攻撃有無判定処理が行われる。ICカード1の制御部111は、当該処理で設定された攻撃判定フラグを取得して、ONの場合は故障利用攻撃を受けたと判定し、OFFの場合は故障利用攻撃を受けていないと判定することができる。
【0048】
[攻撃有無判定処理の変形例1]
攻撃有無判定処理の変形例である第2攻撃有無判定処理を図6に示す。本変形例では、図3乃至図5を用いて説明した攻撃有無判定処理の代わりに、第2攻撃有無判定処理を実施する。図3乃至図5の攻撃有無判定処理では、変数nに有限体GF(q)の要素数q(=p)を代入していたが、第2攻撃有無判定処理では、予め設定された任意の自然数nを代入する。これにより、ペアリングに必要な関数を求める処理の演算量をn/qにすることができる。なお、これに伴いペアリング関数の入力値を変換する必要があり、後に述べるとおり、点C、K(=[d]C)をそれぞれC~、K~に変換する。なお、第2攻撃有無判定処理では、公開情報記憶部103に、有限体GF(q)の要素数q(=p)及び予め設定された任意の自然数がすでに格納されているものとして説明する。また、第2攻撃有無判定処理において算出した値又は変数等に代入した値は、すべて記憶装置101に格納するものとする。
【0049】
まず、故障利用攻撃検知部107は、公開情報記憶部103に格納されている任意の自然数nを、変数nに代入し(ステップS91)、変形ペアリング処理を行う(ステップS93)。
【0050】
ここで、変形ペアリング処理を図7及び図8を用いて説明する。まず、ICカード1の故障利用攻撃検知部107は、繰り返し処理のためのカウンタであるjに初期値として1を代入する(ステップS101)。そして、故障利用攻撃検知部107は、公開情報記憶部103に格納されたqを用いて、q−1がnで割り切れるか判断し、割り切れない場合(ステップS103:Noルート)、jにj+1を代入して(ステップS105)、ステップS103に戻る。一方、q−1がnで割り切れる場合(ステップS103:Yesルート)、変数lにqを代入する(ステップS107)。
【0051】
次に、故障利用攻撃検知部107は、記憶装置101に格納されているC、K(=[d]C)及びnを用いて、点C’=[1/n]C及び点K’=[1/n]Kを算出する(ステップS109)。ここで、楕円曲線上の除算については既存技術であり説明を省略する。そして、C’=(xC1’,yC1’)、K’=(xK’,yK’)とすると、故障利用攻撃検知部107は、C’及びK’のx座標及びy座標をそれぞれl乗した点σ(C)=(xC1’,yC1’)及びσ(K’)=(xK’,yK’)を算出する(ステップS111)。ここで、ある点の各座標をq乗した点はフロベニウス写像と呼ばれる写像であり、各座標をl(=q)乗した点はフロベニウス写像をj回適用した点である。さらに、故障利用攻撃検知部107は、C~=σ(C’)−C’及びK~=σ(K’)−K’を算出する(ステップS113)。変形ペアリング処理では、このように算出したC~及びK~を入力値とすることで、予め設定された任意の自然数nを用いてペアリングの計算を行うことができる。なお、変形ペアリング処理においては、nを小さくすると、関数f導出処理においてステップS59乃至S65(図4)を繰り返す回数が減り、演算量を減らすことができる。但し、nを用いることでペアリングの出力値はn個に縮退し、故障利用攻撃の検知率が下がる。
【0052】
次に、故障利用攻撃検知部107は、記憶装置101に格納された点C~、点K~を用いて、それぞれ関数f導出処理を実行し、関数fC1~、関数fK~を求める。まず、故障利用攻撃検知部107は、記憶装置101に格納された点C~を、変数である点Sに代入し(ステップS115)、関数f導出処理を行う(ステップS117)。関数f導出処理については、図4を用いて既に説明したので説明を省略する。次に、処理は端子Bを介して図8の処理に移行し、故障利用攻撃検知部107は、導出された関数fを、関数fC1~に代入する(ステップS121)。
【0053】
次に、故障利用攻撃検知部107は、点K~を点Sに代入し(ステップS123)、関数f導出処理を実行する(ステップS125)。関数f導出処理については、図4を用いて既に説明したので説明を省略する。そして、故障利用攻撃検知部107は、導出された関数fを、関数fK~に代入する(ステップS127)。
【0054】
次に、故障利用攻撃検知部107は、楕円曲線E上の点U及びVをランダムに選択し(ステップS129)、V+C~及びU+K~を算出する(ステップS131)。ここで、V+C~=∞又はU+K~=∞の場合(ステップS133:Noルート)、ステップS129へ戻り、点U及びVを選択し直す。一方、V+C~≠∞かつU+K~≠∞の場合(ステップS133:Yesルート)、ステップS135へ移行する。
【0055】
そして、故障利用攻撃検知部107は、記憶装置101に格納されている、関数fC1~、関数fK~、点U、V、V+C~及びU+K~を用いて、ペアリングe(C~,K~)の計算を行い(ステップS135)、元の処理に戻る。ペアリングの計算式については、先に述べた(1)式に従い、e(C~,K~)=fC1~(V+C~)/fC1~(V)・fK~(U)/fK~(U+K~)となり、この計算結果を{(q−1)/n}乗したものが出力値となる。このようにして変形ペアリング処理が行われる。
【0056】
図6の処理の説明に戻って、故障利用攻撃検知部107は、ペアリングの出力値が1であるか判断する。ペアリングの出力値が1である場合(ステップS95:Yesルート)、故障利用攻撃検知部107は、記憶装置101の攻撃判定フラグをOFFに設定し(ステップS97)、元の処理に戻る。一方、ペアリングの出力値が1でない場合(ステップS95:Noルート)、故障利用攻撃検知部107は、記憶装置101の攻撃判定フラグをONに設定し(ステップS99)、元の処理に戻る。
【0057】
このようにして、ICカード1の制御部111は、当該処理で設定された攻撃判定フラグを取得して、ONの場合は故障利用攻撃を受けたと判定し、OFFの場合は故障利用攻撃を受けていないと判定することができる。また、先にも述べたとおり、予め設定するnを小さくすると、演算量を削減することができるが、同時にペアリングの出力値が縮退するため故障利用攻撃の検知率が下がる。よって、第2攻撃有無判定処理においては演算量と検知率を考慮して、適切なnを設定する必要がある。なお、有限体GF(q)の要素数q=2160として通常のベイユペアリングを行う場合に対して、n=2と設定して第2攻撃有無判定処理を行う場合は、ペアリングに必要な関数を求める部分の演算量が2/2160となり、故障利用攻撃の検知率が1/2となる。
【0058】
[攻撃有無判定処理の変形例2]
攻撃有無判定処理の別の変形例である第3攻撃有無判定処理を図9に示す。本変形例では、図6を用いて説明した第2攻撃有無判定処理の代わりに、第3攻撃有無判定処理を実施する。そして、第3攻撃有無判定処理は、複数の自然数を予め設定し、当該自然数の各々に対し第2攻撃有無判定処理を行うことで、故障利用攻撃の検知率を上げることができる。なお、第3攻撃有無判定処理では、公開情報記憶部103に、有限体GF(q)の要素数q(=p)及び予め設定された任意の自然数の集合N(={n、n、・・・、n}とする)がすでに格納されているものとして説明する。また、第3攻撃有無判定処理において算出した値又は変数等に代入した値は、すべて記憶装置101に格納するものとする。
【0059】
まず、故障利用攻撃検知部107は、繰り返し処理のためのカウンタであるsに初期値1を代入し、公開情報記憶部103に格納されている任意の自然数の集合N={n、n、・・・、n}のnを、変数nに代入し(ステップS141)、変形ペアリング処理を行う(ステップS143)。変形ペアリング処理については、図7及び図8を用いて既に説明したので説明を省略する。
【0060】
次に、故障利用攻撃検知部107は、ペアリングの出力値が1であるか判断する。ペアリングの出力値が1でない場合(ステップS145:Noルート)、故障利用攻撃検知部107は、記憶装置101の攻撃判定フラグをONに設定し(ステップS147)、元の処理に戻る。一方、ペアリングの出力値が1である場合(ステップS145:Yesルート)、集合Nの全ての要素に対してペアリングの計算が行われたか判断する。n=nでない場合、すなわちNの全ての要素に対してペアリングの計算が行われていない場合(ステップS149:Noルート)、故障利用攻撃検知部107は、sにs+1を代入し、nにnを代入し(ステップS151)、ステップS143に戻る。一方、n=nである場合、すなわちNの全ての要素に対してペアリングの計算が行われた場合(ステップS149:Yesルート)、故障利用攻撃検知部107は、記憶装置101の攻撃判定フラグをOFFに設定し(ステップS153)、元の処理に戻る。
【0061】
このようにして、ICカード1の制御部111は、当該処理で設定された攻撃判定フラグを取得して、ONの場合は故障利用攻撃を受けたと判定し、OFFの場合は故障利用攻撃を受けていないと判定することができる。また、第3攻撃有無判定処理では予め設定された自然数の集合Nにより、Nに含まれる各自然数の値を小さくすることで演算量を削減できると共に、Nに含まれる自然数の各々についてペアリングの計算を行うことで故障利用攻撃の検知率を上げることができる。例えば、有限体GF(q)の要素数q=2160として通常のベイユペアリングを行う場合に対し、N={2,3}と設定して第3攻撃有無判定処理を行う場合は、ペアリングに必要な関数を求める部分の演算量が5/2160となり、故障利用攻撃の検知率が5/6となる。また、Nに含まれる各自然数の値は、素数が好ましい。
【0062】
[攻撃有無判定処理の変形例3]
攻撃有無判定処理のさらに別の変形例である第4攻撃有無判定処理を図10に示す。本変形例では、図9を用いて説明した第3攻撃有無判定処理の代わりに、第4攻撃有無判定処理を実施する。そして、第4攻撃有無判定処理では、ペアリングによる攻撃有無判定処理を行う前に、点Kが楕円曲線E上の点であるか判断することで、故障利用攻撃を受けたか判定する。なお、第4攻撃有無判定処理では、公開情報記憶部103に、有限体GF(q)の要素数q(=p)、楕円曲線Eの方程式及び予め設定された任意の自然数の集合N(={n、n、・・・、n}とする)がすでに格納されているものとして説明する。また、第4攻撃有無判定処理において算出した値又は変数等に代入した値は、すべて記憶装置101に格納するものとする。
【0063】
まず、ICカード1の故障利用攻撃検知部107は、公開情報記憶部103に格納された楕円曲線Eの方程式及び記憶装置101に格納された点K(=[d]C)を取得して、Eの方程式にKを代入し(ステップS161)、方程式が成立するか否かによってKがE上の点であるか否かを判断する。例えば、楕円曲線Eの方程式が
E:y+axy+ay=x+a+ax+a
と定義されているとき、関数f(x,y)を
f(x,y)=x+a+ax+a−(y+axy+ay)
と定める。そして、K=(x,y)としたとき、Kを関数f(x,y)に代入した値f(x,y)を計算する。この結果、f(x,y)=0であれば、KはE上の点である。そして、KがE上の点でない場合(ステップS163:Noルート)、故障利用攻撃検知部107は、記憶装置101の攻撃判定フラグをONに設定し(ステップS165)、元の処理に戻る。一方、KがE上の点である場合(ステップS163:Yesルート)、故障利用攻撃検知部107は、図9の第3攻撃有無判定処理を実行し(ステップS167)、元の処理に戻る。
【0064】
このようにして、ICカード1の制御部111は、当該処理で設定された攻撃判定フラグを取得して、ONの場合は故障利用攻撃を受けたと判定し、OFFの場合は故障利用攻撃を受けていないと判定することができる。また、点Kが楕円曲線E上にあるか判断することで故障利用攻撃を検知した場合には、ペアリングによる攻撃有無判定処理を行う必要がなくなり、処理の効率が上がる。同時に、点Kが楕円曲線E上にあるかという検知手法と、ペアリングによる検知手法とを組み合わせることで、検知率を上げることができる。なお、本変形例の中ではステップS167(図10)において第3攻撃有無判定処理を行ったが、代わりに第2攻撃有無判定処理を実施してもよい。
【0065】
[攻撃有無判定処理の変形例4]
攻撃有無判定処理のさらに別の変形例である第5攻撃有無判定処理を図11に示す。本変形例では、図6を用いて説明した第2攻撃有無判定処理の代わりに、第5攻撃有無判定処理を実施する。そして、第5攻撃有無判定処理では、ポイントハービング(Point Halving)アルゴリズムを利用して、変形ペアリング処理に必要な点の算出を行う。これにより、演算量をさらに削減することができる。但し、本変形例に用いられる有限体の要素数は2のべき乗個であり、かつ変数nに代入する自然数は2である必要がある。なお、本変形例では、公開情報記憶部103に、有限体GF(q)の要素数q(=2)がすでに格納されているものとして説明する。また、本変形例において算出した値又は変数等に代入した値は、すべて記憶装置101に格納するものとする。
【0066】
まず、ICカード1の故障利用攻撃検知部107は、固定値である2を変数nに代入し(ステップS171)、第2変形ペアリング処理を行う(ステップS173)。
【0067】
ここで、第2変形ペアリング処理を図12及び図13を用いて説明する。まず、故障利用攻撃検知部107は、繰り返し処理のためのカウンタであるjに初期値として1を代入する(ステップS181)。そして、故障利用攻撃検知部107は、公開情報記憶部103に格納されたqを用いて、q−1がn(=2)で割り切れるか判断し、割り切れない場合(ステップS183:Noルート)、jにj+1を代入して(ステップS185)、ステップS183に戻る。一方、q−1がn(=2)で割り切れる場合(ステップS183:Yesルート)、変数lにqを代入する(ステップS187)。
【0068】
次に、故障利用攻撃検知部107は、記憶装置101に格納されているC、K(=[d]C)及びn(=2)を用いて、点C’=[1/n]C=[1/2]C及び点K’=[1/n]K=[1/2]Kを算出する(ステップS189)。この計算に、ポイントハービングアルゴリズムを利用する。
【0069】
ポイントハービングとは、要素数が2である有限体上に定義された楕円曲線上のある点Pに対して、P=[2]Q(つまりQ=[1/2]P)となる点Qを効率よく求める技術である。例えば、有限体GF(2)上の楕円曲線Eを以下のように定めたとき、
E:y+xy=x+ax+b(但し、b≠0)
E上の点P=(x、y)から、点Q=[1/2]P=(x,y)を求めるアルゴリズムは、以下のようになる。
(1)方程式x+x=x+aを解き、解をkとする
(2)t=y+xkを算出する
(3)Tr(t)=0のとき、x=(t+x(1/2)、Tr(t)≠0のとき、x=t(1/2)を算出する
なお、Tr(t)=t+t+t(2^2)+・・・+t{2^(m−1)}とする
(4)y=x+λxを算出する
なお、Tr(t)=0のとき、λ=kとし、Tr(t)≠0のとき、λ=k+1とする
以上のような処理を実施することで、Q(x,y)を、より少ない演算量で求めることができる。
【0070】
次に、C’=(xC1’,yC1’)、K’=(xK’,yK’)とすると、故障利用攻撃検知部107は、C’及びK’のx座標及びy座標をそれぞれl乗した点σ(C)=(xC1’,yC1’)及びσ(K’)=(xK’,yK’)を算出する(ステップS191)。そして、故障利用攻撃検知部107は、C~=σ(C’)−C’及びK~=σ(K’)−K’を算出する(ステップS193)。本変形例では、このように算出したC~及びK~を入力値とすることで、予め設定された自然数2を用いてペアリングの計算を行うことができる。
【0071】
次に、故障利用攻撃検知部107は、記憶装置101に格納された点C~、点K~を用いて、それぞれ関数f導出処理を実行し、関数fC1~、関数fK~を求める。まず、故障利用攻撃検知部107は、記憶装置101に格納された点C~を、変数である点Sに代入し(ステップS195)、関数f導出処理を行う(ステップS197)。関数f導出処理については、図4を用いて既に説明したので説明を省略する。次に、処理は端子Cを介して図13の処理に移行し、故障利用攻撃検知部107は、導出された関数fを、関数fC1~に代入する(ステップS201)。
【0072】
次に、故障利用攻撃検知部107は、点K~を点Sに代入し(ステップS203)、関数f導出処理を実行する(ステップS205)。関数f導出処理については、図4を用いて既に説明したので説明を省略する。そして、故障利用攻撃検知部107は、導出された関数fを、関数fK~に代入する(ステップS207)。
【0073】
次に、故障利用攻撃検知部107は、楕円曲線E上の点U及びVをランダムに選択し(ステップS209)、V+C~及びU+K~を算出する(ステップS211)。ここで、V+C~=∞又はU+K~=∞の場合(ステップS213:Noルート)、ステップS209へ戻り、点U及びVを選択し直す。一方、V+C~≠∞かつU+K~≠∞の場合(ステップS213:Yesルート)、ステップS215へ移行する。
【0074】
そして、故障利用攻撃検知部107は、記憶装置101に格納されている、関数fC1~、関数fK~、点U、V、V+C~及びU+K~を用いて、ペアリングe(C~,K~)の計算を行い(ステップS215)、元の処理に戻る。ペアリングの計算式については、先に述べた(1)式に従い、e(C~,K~)=fC1~(V+C~)/fC1~(V)・fK~(U)/fK~(U+K~)となり、この計算結果を{(q−1)/n}乗したものが出力値となる。このようにして第2変形ペアリング処理が行われる。
【0075】
図11の処理の説明に戻って、故障利用攻撃検知部107は、ペアリングの出力値が1であるか判断する。ペアリングの出力値が1である場合(ステップS175:Yesルート)、故障利用攻撃検知部107は、記憶装置101の攻撃判定フラグをOFFに設定し(ステップS177)、元の処理に戻る。一方、ペアリングの出力値が1でない場合(ステップS175:Noルート)、故障利用攻撃検知部107は、記憶装置101の攻撃判定フラグをONに設定し(ステップS179)、元の処理に戻る。
【0076】
このようにして、ICカード1の制御部111は、当該処理で設定された攻撃判定フラグを取得して、ONの場合は故障利用攻撃を受けたと判定し、OFFの場合は故障利用攻撃を受けていないと判定することができる。また、ポイントハービングアルゴリズムを利用することにより、変形ペアリング処理に必要な点を求める処理の演算量が削減できる。
【0077】
[その他の変形例]
以上、本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。例えば、ICカード及び認証装置におけるデータ管理方法は、図1のようなものに限定されない。また、ICカード及び認証装置における機能構成も、図1に限定されず、全ての機能がICチップにより実施される場合と、プロセッサ及びプログラムモジュールにより実施される場合がある。
【0078】
また、処理フローについても処理結果が同じであれば、異なる順番で実施したり、並列に実行するように変形しても良い。
【0079】
また、本技術は、楕円曲線上のスカラー倍算に対する故障利用攻撃一般に適用できる。本技術の実施の形態では楕円エルガマル暗号を例に説明したが、他の楕円曲線暗号方式においてもスカラー倍算を行うため、本技術は、楕円エルガマル暗号以外の楕円曲線暗号方式を利用しても良い。同様に、楕円曲線上のスカラー倍算を行う処理であれば、認証処理や暗号処理に限らず、電子署名等に適用しても良い。
【0080】
また、本技術の実施の形態ではベイユペアリングを例に説明したが、先にも述べたとおり、スカラー倍の関係にある楕円曲線上の2点を入力値として計算したとき1が出力されるのはペアリング一般の性質であるため、本技術はベイユペアリング以外のペアリングを利用しても良い。
【0081】
さらに、本実施の形態において楕円曲線E上の点U及びVをランダムに選択した後、再度U及びVを選び直すか否かの判断(ステップS75(図5)、ステップS133(図8)、ステップS213(図13))の条件は、選択したU及びVを用いてペアリング関数e(C,K)又はe(C~,K~)を計算し、結果がゼロ又は値を得られない場合としても良い。
【0082】
[実施の形態のまとめ]
本実施の形態をまとめると以下のようになる。
【0083】
本故障利用攻撃検知方法は、有限体上の楕円曲線Eと、楕円曲線E上の点Cと、スカラーdとに基づき、楕円曲線E上のスカラー倍点[d]Cを算出し、記憶装置に格納するスカラー倍演算ステップと、点Cとスカラー倍点[d]Cとを用いて楕円曲線E上のペアリングを計算し、ペアリングの計算結果が1でない場合には故障利用攻撃を受けたと判定する第1の故障利用攻撃検知ステップとを含む。
【0084】
まず、スカラー倍演算ステップにおいて故障利用攻撃を受けた場合、スカラー倍点[d]Cの算出を誤り、Cと[d]Cがスカラー倍の関係にならない可能性がある。一方、ペアリング関数の性質である(a)(P1+P2,Q)=(P1,Q)・(P2,Q)、(b)(P,Q)=(Q,P)、(c)(P,P)=1より、スカラー倍の関係にある2点を入力値としてペアリングの計算を行うと、出力値は1になることが導き出せる。この性質に基づき、C1と[d]C1を用いてペアリングを計算し、その計算結果が1であるか否かを判断することで、C1と[d]C1がスカラー倍の関係にあるか否かを確認できる。これにより、より厳密に故障利用攻撃の有無を判定することができる。
【0085】
なお、ペアリングの計算については、C1と[d]C1とを入力としてペアリングの計算を行う手法や、C1及び[d]C1を変換した後にペアリングの計算を行う手法が採用可能である。前者であれば、検知率を高めることができる。
【0086】
そして、第1の故障利用攻撃検知ステップは、点C’=[1/n]C(nは任意の自然数)=(xC1’,yC1’)及び点[d]C’=[1/n][d]C=(x[d]C1’,y[d]C1’)を算出するステップと、点σ(C’)=(xC1’,yC1’)(l=q。qは有限体の要素数。mはq−1がnで割り切れる最小の数)及び点σ([d]C’)=(x[d]C1’,y[d]C1’)を算出するステップと、点C~=σ(C’)−C’及び点[d]C~=σ([d]C’)−[d]C’を算出するステップと、点C~と点[d]C~とを入力値として楕円曲線E上のペアリングを計算するステップとを含むようにしても良い。このようにペアリングの入力値となる点を変換することで、点C及び[d]Cを入力値とした場合よりも、ペアリングの計算に必要な演算量を削減することができる。
【0087】
さらに、第1の故障利用攻撃検知ステップは、複数の自然数nに対しそれぞれペアリングを計算し、複数のペアリングの計算結果に1でないものが含まれる場合には故障利用攻撃を受けたと判定するステップを含むようにしても良い。このように複数回ペアリングの計算を行うことで、検知率を上げることができる。
【0088】
また、本故障利用攻撃検知方法は、第1の故障利用攻撃検知ステップを行う前に、点[d]Cが楕円曲線E上にあるかを判断し、楕円曲線E上にないと判断された場合には故障利用攻撃を受けたと判定する第2の故障利用攻撃検知ステップをさらに含むようにしても良い。より演算量の少ない第2の故障利用攻撃検知ステップで検知できる場合は、第1の故障利用攻撃検知ステップを行う必要がなくなり、処理効率を上げることができる。
【0089】
さらに、第1の故障利用攻撃検知ステップは、qが2のべき乗であり、かつ任意の自然数nが2であるときに、ポイントハービングアルゴリズムで、点C’=[1/n]C=(xC1’,yC1’)及び点[d]C’=[1/n][d]C=(x[d]C1’,y[d]C1’)を算出するステップを含むようにしても良い。これにより、点C’及び点[d]C’の算出に必要な演算量を削減することができる。
【0090】
以上の実施例及び変形例を含む実施形態に関し、更に以下の付記を開示する。
【0091】
(付記1)
有限体上の楕円曲線Eと、当該楕円曲線E上の点Cと、スカラーdとに基づき、前記楕円曲線E上のスカラー倍点[d]Cを算出するスカラー倍演算手段と、
前記点Cと前記スカラー倍点[d]Cとを用いて前記楕円曲線E上のペアリングを計算し、当該ペアリングの計算結果が1でない場合には故障利用攻撃を受けたと判定する第1の故障利用攻撃検知手段と、
を有する楕円曲線演算装置。
【0092】
(付記2)
前記第1の故障利用攻撃検知手段は、
点C’=[1/n]C(nは任意の自然数)=(xC1’,yC1’
及び点[d]C’=[1/n][d]C=(x[d]C1’,y[d]C1’)を算出し、
点σ(C’)=(xC1’,yC1’)(l=q。qは有限体の要素数。mはq−1がnで割り切れる最小の数)
及び点σ([d]C’)=(x[d]C1’,y[d]C1’)を算出し、
点C~=σ(C’)−C
及び点[d]C~=σ([d]C’)−[d]C’を算出し、
前記点C~と前記点[d]C~とを入力として前記楕円曲線E上のペアリングを計算する
ことを特徴とする付記1記載の楕円曲線演算装置。
【0093】
(付記3)
前記第1の故障利用攻撃検知手段は、
複数の前記自然数nに対しそれぞれ前記ペアリングを計算し、
当該複数のペアリングの計算結果に1でないものが含まれる場合には故障利用攻撃を受けたと判定する
ことを特徴とする付記2記載の楕円曲線演算装置。
【0094】
(付記4)
前記第1の故障利用攻撃検知手段が処理を行う前に、前記点[d]Cが前記楕円曲線E上にあるかを判断し、当該楕円曲線E上にないと判断された場合には故障利用攻撃を受けたと判定する第2の故障利用攻撃検知手段
をさらに有する付記1乃至3のいずれか1つ記載の楕円曲線演算装置。
【0095】
(付記5)
前記第1の故障利用攻撃検知手段は、
前記qが2のべき乗であり、かつ前記任意の自然数nが2であるときに、
ポイントハービングアルゴリズムで、点C’=[1/n]C=(xC1’,yC1’)及び点[d]C’=[1/n][d]C=(x[d]C1’,y[d]C1’)を算出する
ことを特徴とする付記2記載の楕円曲線演算装置。
【0096】
(付記6)
コンピュータが、有限体上の楕円曲線Eと、前記楕円曲線E上の点Cと、スカラーdとに基づき、前記楕円曲線E上のスカラー倍点[d]Cを算出し、記憶装置に格納するスカラー倍演算ステップと、
前記コンピュータが、前記点Cと前記スカラー倍点[d]Cとを用いて前記楕円曲線E上のペアリングを計算し、当該ペアリングの計算結果が1でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップと、
を含む楕円曲線演算方法。
【0097】
(付記7)
有限体上の楕円曲線Eと、前記楕円曲線E上の点Cと、スカラーdとに基づき、前記楕円曲線E上のスカラー倍点[d]Cを算出し、記憶装置に格納するスカラー倍演算ステップと、
前記点Cと前記スカラー倍点[d]Cとを用いて前記楕円曲線E上のペアリングを計算し、当該ペアリングの計算結果が1でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップと、
をコンピュータに実行させる楕円曲線演算プログラム。
【図面の簡単な説明】
【0098】
【図1】本技術の実施の形態におけるシステム概要図である。
【図2】本技術の実施の形態の処理フローを示す図である。
【図3】本技術の攻撃有無判定処理に係る処理フローを示す図である。
【図4】本技術の関数f導出処理に係る処理フローを示す図である。
【図5】本技術の攻撃有無判定処理に係る処理フローを示す図である。
【図6】本技術の第2攻撃有無判定処理に係る処理フローを示す図である。
【図7】本技術の変形ペアリング処理に係る処理フローを示す図である。
【図8】本技術の変形ペアリング処理に係る処理フローを示す図である。
【図9】本技術の第3攻撃有無判定処理に係る処理フローを示す図である。
【図10】本技術の第4攻撃有無判定処理に係る処理フローを示す図である。
【図11】本技術の第5攻撃有無判定処理に係る処理フローを示す図である。
【図12】本技術の第2変形ペアリング処理に係る処理フローを示す図である。
【図13】本技術の第2変形ペアリング処理に係る処理フローを示す図である。
【符号の説明】
【0099】
1 ICカード 3 認証装置
101 記憶装置 103 公開情報記憶部
105 秘密鍵記憶部 107 故障利用攻撃検知部
109 復号化処理部 111制御部
113 通信部
301 記憶装置 303 公開情報記憶部
305 乱数生成部 307 認証処理部
309 暗号化処理部 311 制御部
313 通信部

【特許請求の範囲】
【請求項1】
有限体上の楕円曲線Eと、当該楕円曲線E上の点Cと、スカラーdとに基づき、前記楕円曲線E上のスカラー倍点[d]Cを算出するスカラー倍演算手段と、
前記点Cと前記スカラー倍点[d]Cとを用いて前記楕円曲線E上のペアリングを計算し、当該ペアリングの計算結果が1でない場合には故障利用攻撃を受けたと判定する第1の故障利用攻撃検知手段と、
を有する楕円曲線演算装置。
【請求項2】
前記第1の故障利用攻撃検知手段は、
点C’=[1/n]C(nは任意の自然数)=(xC1’,yC1’
及び点[d]C’=[1/n][d]C=(x[d]C1’,y[d]C1’)を算出し、
点σ(C’)=(xC1’,yC1’)(l=q。qは有限体の要素数。mはq−1がnで割り切れる最小の数)
及び点σ([d]C’)=(x[d]C1’,y[d]C1’)を算出し、
点C~=σ(C’)−C
及び点[d]C~=σ([d]C’)−[d]C’を算出し、
前記点C~と前記点[d]C~とを入力として前記楕円曲線E上のペアリングを計算する
ことを特徴とする請求項1記載の楕円曲線演算装置。
【請求項3】
前記第1の故障利用攻撃検知手段は、
複数の前記自然数nに対しそれぞれ前記ペアリングを計算し、
当該複数のペアリングの計算結果に1でないものが含まれる場合には故障利用攻撃を受けたと判定する
ことを特徴とする請求項2記載の楕円曲線演算装置。
【請求項4】
前記第1の故障利用攻撃検知手段が処理を行う前に、前記点[d]Cが前記楕円曲線E上にあるかを判断し、当該楕円曲線E上にないと判断された場合には故障利用攻撃を受けたと判定する第2の故障利用攻撃検知手段
をさらに有する請求項1乃至3のいずれか1つ記載の楕円曲線演算装置。
【請求項5】
前記第1の故障利用攻撃検知手段は、
前記qが2のべき乗であり、かつ前記任意の自然数nが2であるときに、
ポイントハービング(Point Halving)アルゴリズムで、点C’=[1/n]C=(xC1’,yC1’)及び点[d]C’=[1/n][d]C=(x[d]C1’,y[d]C1’)を算出する
ことを特徴とする請求項2記載の楕円曲線演算装置。
【請求項6】
コンピュータが、有限体上の楕円曲線Eと、前記楕円曲線E上の点Cと、スカラーdとに基づき、前記楕円曲線E上のスカラー倍点[d]Cを算出し、記憶装置に格納するスカラー倍演算ステップと、
前記コンピュータが、前記点Cと前記スカラー倍点[d]Cとを用いて前記楕円曲線E上のペアリングを計算し、当該ペアリングの計算結果が1でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップと、
を含む楕円曲線演算方法。
【請求項7】
有限体上の楕円曲線Eと、前記楕円曲線E上の点Cと、スカラーdとに基づき、前記楕円曲線E上のスカラー倍点[d]Cを算出し、記憶装置に格納するスカラー倍演算ステップと、
前記点Cと前記スカラー倍点[d]Cとを用いて前記楕円曲線E上のペアリングを計算し、当該ペアリングの計算結果が1でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップと、
をコンピュータに実行させる楕円曲線演算プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2010−148036(P2010−148036A)
【公開日】平成22年7月1日(2010.7.1)
【国際特許分類】
【出願番号】特願2008−326100(P2008−326100)
【出願日】平成20年12月22日(2008.12.22)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】