(57)【要約】【課題】故障利用攻撃に対する検知率とそのための演算量とを考慮しつつ故障利用攻撃を適切に検知する。【解決手段】本故障利用攻撃検知方法は、有限体上の楕円曲線Ｅと、楕円曲線Ｅ上の点Ｃ１と、スカラーｄとに基づき、楕円曲線Ｅ上のスカラー倍点［ｄ］Ｃ１を算出し、記憶装置に格納するスカラー倍演算ステップと、点Ｃ１とスカラー倍点［ｄ］Ｃ１とを用いて楕円曲線Ｅ上のペアリングを計算し、ペアリングの計算結果が１でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップとを含む。【選択図】図１
2010148036.tif 000002
【特許請求の範囲】
【請求項１】
有限体上の楕円曲線Ｅと、当該楕円曲線Ｅ上の点Ｃ１と、スカラーｄとに基づき、前記楕円曲線Ｅ上のスカラー倍点［ｄ］Ｃ１を算出するスカラー倍演算手段と、
前記点Ｃ１と前記スカラー倍点［ｄ］Ｃ１とを用いて前記楕円曲線Ｅ上のペアリングを計算し、当該ペアリングの計算結果が１でない場合には故障利用攻撃を受けたと判定する第１の故障利用攻撃検知手段と、
を有する楕円曲線演算装置。
【請求項２】
前記第１の故障利用攻撃検知手段は、
点Ｃ１’＝［１／ｎ］Ｃ１（ｎは任意の自然数）＝（ｘＣ１’，ｙＣ１’）
及び点［ｄ］Ｃ１’＝［１／ｎ］［ｄ］Ｃ１＝（ｘ［ｄ］Ｃ１’，ｙ［ｄ］Ｃ１’）を算出し、
点σ（Ｃ１’）＝（ｘＣ１’ｌ，ｙＣ１’ｌ）（ｌ＝ｑｍ。ｑは有限体の要素数。ｍはｑｍ−１がｎで割り切れる最小の数）
及び点σ（［ｄ］Ｃ１’）＝（ｘ［ｄ］Ｃ１’ｌ，ｙ［ｄ］Ｃ１’ｌ）を算出し、
点Ｃ１~＝σ（Ｃ１’）−Ｃ１’
及び点［ｄ］Ｃ１~＝σ（［ｄ］Ｃ１’）−［ｄ］Ｃ１’を算出し、
前記点Ｃ１~と前記点［ｄ］Ｃ１~とを入力として前記楕円曲線Ｅ上のペアリングを計算する
ことを特徴とする請求項１記載の楕円曲線演算装置。
【請求項３】
前記第１の故障利用攻撃検知手段は、
複数の前記自然数ｎに対しそれぞれ前記ペアリングを計算し、
当該複数のペアリングの計算結果に１でないものが含まれる場合には故障利用攻撃を受けたと判定する
ことを特徴とする請求項２記載の楕円曲線演算装置。
【請求項４】
前記第１の故障利用攻撃検知手段が処理を行う前に、前記点［ｄ］Ｃ１が前記楕円曲線Ｅ上にあるかを判断し、当該楕円曲線Ｅ上にないと判断された場合には故障利用攻撃を受けたと判定する第２の故障利用攻撃検知手段
をさらに有する請求項１乃至３のいずれか１つ記載の楕円曲線演算装置。
【請求項５】
前記第１の故障利用攻撃検知手段は、
前記ｑが２のべき乗であり、かつ前記任意の自然数ｎが２であるときに、
ポイントハービング（Ｐｏｉｎｔ  Ｈａｌｖｉｎｇ）アルゴリズムで、点Ｃ１’＝［１／ｎ］Ｃ１＝（ｘＣ１’，ｙＣ１’）及び点［ｄ］Ｃ１’＝［１／ｎ］［ｄ］Ｃ１＝（ｘ［ｄ］Ｃ１’，ｙ［ｄ］Ｃ１’）を算出する
ことを特徴とする請求項２記載の楕円曲線演算装置。
【請求項６】
コンピュータが、有限体上の楕円曲線Ｅと、前記楕円曲線Ｅ上の点Ｃ１と、スカラーｄとに基づき、前記楕円曲線Ｅ上のスカラー倍点［ｄ］Ｃ１を算出し、記憶装置に格納するスカラー倍演算ステップと、
前記コンピュータが、前記点Ｃ１と前記スカラー倍点［ｄ］Ｃ１とを用いて前記楕円曲線Ｅ上のペアリングを計算し、当該ペアリングの計算結果が１でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップと、
を含む楕円曲線演算方法。
【請求項７】
有限体上の楕円曲線Ｅと、前記楕円曲線Ｅ上の点Ｃ１と、スカラーｄとに基づき、前記楕円曲線Ｅ上のスカラー倍点［ｄ］Ｃ１を算出し、記憶装置に格納するスカラー倍演算ステップと、
前記点Ｃ１と前記スカラー倍点［ｄ］Ｃ１とを用いて前記楕円曲線Ｅ上のペアリングを計算し、当該ペアリングの計算結果が１でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップと、
をコンピュータに実行させる楕円曲線演算プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、楕円曲線演算処理を行う装置に対する故障利用攻撃の検知技術に関する。
【背景技術】
【０００２】
従来より、暗号方式として公開鍵暗号方式と共通鍵暗号方式とが知られている。公開鍵暗号方式は、暗号化と復号化とで一対の異なる鍵を用いる方式である。典型的な公開鍵暗号方式では、暗号化に用いる公開鍵は予め公開され、復号化に用いる秘密鍵は秘密情報として保持される。例えば、送信者は受信者の公開鍵を用いて平文を暗号化し、暗号文を送信する。受信者は受信者の秘密鍵を用いて暗号文を復号化し、平文を得る。
【０００３】
公開鍵暗号方式として知られている暗号方式の一つに、楕円曲線暗号がある。楕円曲線暗号は、楕円曲線上の点の間の演算規則を利用した暗号方式の総称である。ｐを素数、ｍを自然数とすると、要素数ｑ＝ｐｍの有限体ＧＦ（ｑ）上の楕円曲線Ｅとは、
Ｅ：ｙ２＋ａ１ｘｙ＋ａ３ｙ＝ｘ３＋ａ２ｘ２＋ａ４ｘ＋ａ６
を満たす点（ｘ，ｙ）の集合に、無限遠点と呼ばれる点∞を加えた集合のことである。無限遠点∞を０と表すこともある。ここで、ａ１、ａ２、ａ３、ａ４、ａ６、ｘ、ｙは有限体ＧＦ（ｑ）の要素である。楕円曲線上の点は（ｘ，ｙ）のような座標形式（アファイン座標という）で表現できるが、無限遠点∞は（ｘ，ｙ）のような座標形式で表現できない唯一の点である。このように、アファイン座標では、無限遠点以外の点は有限体ＧＦ（ｑ）の２つの要素の組として表される。
【０００４】
楕円曲線Ｅ上の点の間には、以下のように点の加算が定義できる。まず、点Ｐを有限体ＧＦ（ｑ）上の楕円曲線Ｅ上の点とする。そして、以下のように点Ｐの逆元−Ｐを定義する。
（ａ）Ｐ＝∞のとき、−Ｐ＝∞
（ｂ）上記（ａ）以外のとき、Ｐ＝（ｘ，ｙ）とすると、−Ｐ＝（ｘ，−ｙ）
また、Ｐ１及びＰ２をＧＦ（ｑ）上の楕円曲線Ｅ上の点とする。そして、Ｐ１とＰ２の和Ｐ３を以下のように定義する。
（ａ）Ｐ１＝∞のとき、Ｐ３＝Ｐ２
（ｂ）Ｐ２＝∞のとき、Ｐ３＝Ｐ１
（ｃ）Ｐ１＝−Ｐ２のとき、Ｐ３＝∞
（ｄ）上記（ａ）乃至（ｃ）以外のとき、Ｐ１＝（ｘ１，ｙ１）、Ｐ２＝（ｘ２，ｙ２）、Ｐ３＝（ｘ３，ｙ３）とすると、
ｘ３＝λ２＋ａ１λ−ａ２−ｘ１−ｘ２
ｙ３＝（ｘ１−ｘ２）λ−ｙ１＋ａ１ｘ３−ａ３
ただし、
Ｐ１≠Ｐ２のとき、λ＝（ｙ２−ｙ１）／（ｘ２−ｘ１）
Ｐ１＝Ｐ２のとき、λ＝（３ｘ１２＋２ａ２ｘ１＋ａ４−ａ１ｙ１）／（２ｙ１＋ａ１ｘ１＋ａ３）
Ｐ１≠Ｐ２のときにＰ１＋Ｐ２を計算することを楕円加算、Ｐ１＝Ｐ２のときにＰ１＋Ｐ２＝［２］Ｐ１を計算することを楕円２倍算という。
【０００５】
楕円曲線Ｅとその上の点Ｐと、あるスカラー（ここでは整数スカラー）ｄが与えられているとき、点［ｄ］Ｐ＝Ｐ＋Ｐ＋・・・＋Ｐ（ｄ個のＰの和）を計算することをスカラー倍算という。このとき点Ｐをベースポイントと呼ぶ。また、楕円曲線Ｅとその上のベースポイントＰと、そのスカラー倍点［ｄ］Ｐが与えられているとき、スカラーｄを求める問題を楕円曲線離散対数問題という。楕円曲線暗号の安全性は、スカラー倍算は容易に計算可能だが、楕円曲線離散対数問題を解くことは困難であるという事実に依存している。このため楕円暗号方式は、スカラーｄを秘密鍵、スカラー倍点［ｄ］Ｐを公開鍵の一部として使用することが多い。
【０００６】
次に、楕円曲線暗号の一つである楕円エルガマル（ＥｌＧａｍａｌ）暗号を例に説明する。ここで、有限体ＧＦ（ｐｍ）、その上の楕円曲線Ｅ及びベースポイントＰは予め設定されているものとする。また、受信者の秘密鍵をｄ、公開鍵をＹ＝［ｄ］Ｐとする。
【０００７】
受信者にメッセージＭを送る場合、受信者の公開鍵Ｙを用いて以下のような暗号化処理を行う。ここで、メッセージＭは楕円曲線Ｅ上の点として表されているものとする。
（１）乱数ｒを生成する
（２）点［ｒ］Ｐを計算し、Ｃ１として保持する
（３）点Ｍ＋［ｒ］Ｙを計算し、Ｃ２として保持する
（４）Ｃ１とＣ２を暗号文Ｃ（Ｃ１，Ｃ２）として受信者に送信する
【０００８】
一方、暗号文Ｃを受け取った受信者は、受信者の秘密鍵ｄを用いて、以下のような復号化処理を行う。
（１）点［ｄ］Ｃ１を計算し、Ｋとして保持する
（２）点Ｃ２−Ｋを計算して、復号化されたメッセージＭ’を取得する
【０００９】
これに対し、上記通信を傍受した攻撃者が、暗号文の解読を試みたとする。まず、攻撃者は公開鍵Ｙ＝［ｄ］Ｐ及びベースポイントＰを入手できる。しかし、公開鍵Ｙから秘密鍵ｄを算出することは楕円曲線離散対数問題を解くことを意味し、困難である。また、攻撃者は暗号文Ｃ（Ｃ１，Ｃ２）＝（［ｒ］Ｐ，Ｍ＋［ｒ］Ｙ）を入手（すなわち傍受）できる。しかし、Ｃ１＝［ｒ］ＰとベースポイントＰから乱数ｒを算出することは楕円曲線離散対数問題を解くことを意味し、困難である。従って、ｄ及びｒは入手できないと言え、そのスカラー倍点［ｒ］Ｙ＝［ｒ］［ｄ］Ｐを算出することも、Ｃ２＝Ｍ＋［ｒ］ＹからメッセージＭを得ることも困難である。
【００１０】
楕円曲線暗号は、同じく公開鍵暗号方式の一つであるＲＳＡ暗号方式と比べ、より短い鍵長で同程度のセキュリティレベルを確保できるという特徴を有する。例えば鍵長１６０ビットの楕円曲線暗号と、鍵長１０２４ビットのＲＳＡ暗号のセキュリティレベルがほぼ同じと考えられている。そのため、楕円曲線暗号は、メモリや処理能力の小さいＩＣカード、携帯電話機などの小型デバイスで使用されることが多い。
【００１１】
一方、暗号文等の入手可能情報から秘密鍵等の秘密情報を特定する、様々な解読技術が存在する。暗号装置を対象とした解読技術としては、暗号装置の動作状況やその変化を物理的に観測することで秘密情報を特定するものが知られている。解析攻撃の一つである故障利用攻撃は、供給電圧を急激に変化させる等、暗号装置の処理中に環境を著しく変化させることで、意図的に処理結果を誤らせる。そして、攻撃者はその誤り方に基づき秘密情報の特定を試みる。
【００１２】
次に、楕円エルガマル暗号を利用した認証システムを攻撃対象とする故障利用攻撃の例を説明する。例えば、認証システムはＩＣカードと認証装置を有し、ＩＣカードと認証装置の間では以下のような認証処理が行われる。ここで、有限体ＧＦ（ｐｍ）、その上の楕円曲線Ｅ及びベースポイントＰは予め設定されているものとする。また、ＩＣカードの秘密鍵をｄ、ＩＣカードの公開鍵をＹ＝［ｄ］Ｐとする。さらに、秘密鍵ｄはＩＣカード内に秘密情報として保持されているものとする。
【００１３】
（１）認証装置は、ランダムに、メッセージＭ及び乱数ｒを生成する。ここで、メッセージＭは楕円曲線Ｅ上の点として表されているものとする。
（２）認証装置は、Ｃ１＝［ｒ］Ｐ及びＣ２＝Ｍ＋［ｒ］Ｙを計算し、暗号文Ｃ＝（Ｃ１，Ｃ２）をＩＣカードに送信する。
（３）ＩＣカードは、暗号文Ｃ＝（Ｃ１，Ｃ２）及び秘密鍵ｄを用いて、Ｋ＝［ｄ］Ｃ１及びＭ’＝Ｃ２−Ｋを計算し、メッセージＭ’を認証装置に送信する。
（４）認証装置は、（１）で生成したメッセージＭと受信したメッセージＭ’を比較し、一致した場合にはユーザ認証成功とする。
【００１４】
上記の認証システムに対して、攻撃者は次のように秘密鍵ｄを特定する。まず、上記（３）において攻撃者は高電圧等の物理的攻撃をＩＣカードに与える。これにより、ＩＣカードはＫ＝［ｄ］Ｃ１の計算を誤り、結果として誤ったＭ’＝Ｃ２−Ｋを認証装置に送信する。攻撃者は、ＩＣカードの秘密鍵ｄを特定するために、この誤った出力を取得し解析する。
【００１５】
このように、故障利用攻撃によって攻撃者に秘密鍵ｄを特定される可能性がある。従って、ＩＣカードは、故障利用攻撃を検知し、計算結果を認証装置に送信しないようにする必要がある。
【００１６】
次に、ＩＣカードが故障利用攻撃を検知する手法を説明する。一般的に、ＩＣカードはＣ１，Ｋ及びＭ’に基づき故障利用攻撃を受けたか判定する。そして、故障利用攻撃を受けたと判定した場合、ＩＣカードはメッセージＭ’を認証装置に送信しない。具体的な例としては、故障利用攻撃を受けた場合にＫの計算結果が楕円曲線Ｅ上の点にならないことがあるという性質を利用した手法がある。すなわち、ＩＣカードは、Ｋを楕円曲線Ｅの方程式に代入することで、楕円曲線Ｅ上の点か判断し、楕円曲線Ｅ上の点でない場合には故障利用攻撃を受けたと判定する。さらに具体的には、以下のような手順で表せる。
【００１７】
（１）楕円曲線Ｅが
Ｅ：ｙ２＋ａ１ｘｙ＋ａ３ｙ＝ｘ３＋ａ２ｘ２＋ａ４ｘ＋ａ６
という方程式で表されるとき、関数ｆ（ｘ，ｙ）を
ｆ（ｘ，ｙ）＝ｘ３＋ａ２ｘ２＋ａ４ｘ＋ａ６−（ｙ２＋ａ１ｘｙ＋ａ３ｙ）
と定める。そして、Ｋが（ａ，ｂ）と表されるとき、ｆ（ａ，ｂ）を計算する。
（２）ｆ（ａ，ｂ）≠０（ゼロ）のとき、ＩＣカードは故障利用攻撃を受けたと判定する。一方、ｆ（ａ，ｂ）＝０（ゼロ）のとき、ＩＣカードは故障利用攻撃を受けていないと判定する。
【００１８】
しかし、この手法では、故障利用攻撃を受けた場合でもＫが楕円曲線Ｅ上の点になるときは、故障利用攻撃を検知することができない。実際には、故障利用攻撃を受けた場合でも２回に１回程度の割合で楕円曲線Ｅ上の点になることが知られており、２分の１程度の確率で故障利用攻撃の検知漏れが生じることになる。
【特許文献１】特開２００４−２５２４３３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
以上のように、ＩＣカード等で楕円曲線演算処理を行う場合は故障利用攻撃への対策が必要である。しかし、従来の方法では、故障利用攻撃の検知漏れが多いという問題がある。また、ＩＣカードの演算処理能力は一般的に低く、演算量が増えると計算時間が長くなってしまうという問題もある。
【００２０】
従って、本技術の目的は、故障利用攻撃に対する検知率とそのための演算量とを考慮しつつ故障利用攻撃を適切に検知するための新規な技術を提供することである。
【課題を解決するための手段】
【００２１】
本楕円曲線演算装置は、有限体上の楕円曲線Ｅと、楕円曲線Ｅ上の点Ｃ１と、スカラーｄとに基づき、楕円曲線Ｅ上のスカラー倍点［ｄ］Ｃ１を算出するスカラー倍演算手段と、点Ｃ１とスカラー倍点［ｄ］Ｃ１とを用いて楕円曲線Ｅ上のペアリングを計算し、ペアリングの計算結果が１でない場合には故障利用攻撃を受けたと判定する第１の故障利用攻撃検知手段とを有する。
【発明の効果】
【００２２】
故障利用攻撃に対する検知率とそのための演算量とを考慮しつつ故障利用攻撃を適切に検知できる。
【発明を実施するための最良の形態】
【００２３】
［ペアリングの説明］
本技術では、故障利用攻撃を検知するために、楕円曲線上のペアリングと呼ばれる関数を利用する。ここで、前提となるペアリングについて説明しておく。なお、本ペアリングの説明と後に述べる実施の形態において、同じ記号又は文字を別の意味で使用する場合がある。
【００２４】
ペアリングとは、有限体上に定義された楕円曲線上の２点（ここではＰ及びＱとおく）を入力値として計算すると、以下の性質を有する関数である。
（ａ）（Ｐ１＋Ｐ２，Ｑ）＝（Ｐ１，Ｑ）・（Ｐ２，Ｑ）
ここで、Ｐ＝Ｐ１＋Ｐ２である
（ｂ）（Ｐ，Ｑ）＝（Ｑ，Ｐ）
（ｃ）（Ｐ，Ｐ）＝１
【００２５】
以上の性質より、Ｃ１及び［ｄ］Ｃ１をペアリング関数に入力したとき、以下のように変形できる。
（Ｃ１，［ｄ］Ｃ１）
＝（Ｃ１，［ｄ−１］Ｃ１）・（Ｃ１，Ｃ１）
＝（Ｃ１，［ｄ−１］Ｃ１）・１
これをｄが１になるまで繰り返すと出力値は１になる。よって、入力値となる２点がスカラー倍の関係にあるとき、出力値は１になることがわかる。
【００２６】
さらに、本実施の形態においては、ベイユペアリング（Ｗｅｉｌ  Ｐａｉｒｉｎｇ）が採用されているものとする。ベイユペアリングは、以下のような関数ｅｒとして定義される。
ｅｒ（Ｓ，Ｔ）＝ｆＳ（Ｑ＋Ｓ）／ｆＳ（Ｑ）・ｆＴ（Ｐ）／ｆＴ（Ｐ＋Ｔ）・・・・・・（１）
ここで、ｒは自然数とし、Ｅ［ｒ］は、［ｒ］Ｐ＝∞を満たす楕円曲線Ｅ上の点Ｐの集合とする。また、ｅｒの入力値である点Ｓ、Ｔは、集合Ｅ［ｒ］の要素である。さらに、ｆＳ、ｆＴは、それぞれ点Ｓ、Ｔから導出される関数で、求め方は後に詳しく述べる。また、点Ｐ、Ｑは、それぞれＰ＋Ｔ及びＱ＋Ｓが無限遠点∞にならない楕円曲線Ｅ上の任意の点である。また、ｆＳ、ｆＴは、それぞれ特に点Ｓ、Ｔにおいてのみｒ−位の零点をもつ関数である。
なお、ペアリングの出力値は、１の原始ｒ乗根のなす群と同一視された値であり、上記ｅｒ（Ｓ，Ｔ）を｛（ｑ−１）／ｒ｝乗した値になる。
【００２７】
次に、関数ｆＳを導出するアルゴリズムを説明する。まず、ｆＳ＝ｇｒとする。ここで、点Ｓ＝（ｘＳ，ｙＳ）、ｇ１＝１、ｇ２＝ｘ−ｘＳとおくと、以下のように、ｇｉ＋ｊを求めることができる。
ｇｉ＋ｊ＝ｇｉ・ｇｊ・ｌ（ｘ，ｙ）／ｖ（ｘ，ｙ）・・・・・・（２）
なお、方程式ｌ（ｘ，ｙ）＝０は以下のような直線である
ｉ≠ｊのとき、楕円曲線Ｅ上の２点［ｉ］Ｓ及び［ｊ］Ｓを通る直線
ｉ＝ｊのとき、楕円曲線Ｅ上の点［ｉ］Ｓを通り楕円曲線Ｅに接する直線
また、方程式ｖ（ｘ，ｙ）＝０は、［ｉ＋ｊ］Ｓ及び無限遠点∞を通る直線である
そして、上記ｇｉ＋ｊから、ｇｒを求める。すなわち、ｒを２進展開等によりｉ＋ｊの繰り返しに分解し、ｇｉ＋ｊを繰り返し計算することでｇｒを求める。例えばｒ＝１３のとき、ｒ＝１＋２２＋２３であるから、ｇ１、ｇ２、ｇ４（＝ｇ２＋２）及びｇ８（＝ｇ４＋４）を求め、ｇ５＝ｇ１＋４、ｇ１３＝ｇ５＋８と求めることができる。
【００２８】
さらに、ベイユペアリングの具体的な計算例について説明する。まず、有限体ＧＦ（１３）上の楕円曲線Ｅを以下のように定める。
Ｅ：ｙ２＝ｘ３＋ｘ
ｒ＝２とし、Ｅ［２］に含まれる楕円曲線上の点Ｓ＝（０，０）、Ｔ＝（５，０）を入力値としてベイユペアリングｅ２（Ｓ，Ｔ）を計算する。Ｐ＝（０，０）、Ｑ＝（５，０）としたとき、
Ｑ＋Ｓのｘ座標＝λ２＋ａ１λ−ａ２−ｘ１−ｘ２＝０２＋０・０−０−５−０＝−５＝８（ｍｏｄ  １３）
Ｑ＋Ｓのｙ座標＝（ｘ１−ｘ２）・λ−ｙ１−ａ１ｘ３−ａ３＝（５−０）・０−０−０・（−５）−０＝０（ｍｏｄ  １３）
であるから、Ｑ＋Ｓ＝（８，０）、同様に、Ｐ＋Ｔ＝（８，０）と算出できる。また、
ｆＳ＝ｘ−０＝ｘ
ｆＴ＝ｘ−５
と求めることができ、ｅ２（Ｓ，Ｔ）は以下のようになる。
ｅ２（Ｓ，Ｔ）＝８／５・（−５）／３＝１２（ｍｏｄ  １３）／２（ｍｏｄ  １３）＝６（ｍｏｄ  １３）
これを１の原始２乗根のなす群と同一視すると、ペアリングの出力値は以下のようになる。
ｅ２（Ｓ，Ｔ）＝６（１３−１）／２＝−１
【００２９】
［実施の形態］
本技術の実施の形態に係る、ＩＣカードと認証装置の機能ブロック図を図１に示す。本実施の形態では、複数のＩＣカード１（但し図１では１つのみ示されている）と認証装置３が、所定の方式（例えばＩＣカード１が接触型ＩＣカードであれば、接触型ＩＣカードのための通信方式。非接触型ＩＣカードであれば、非接触型ＩＣカードのための通信方式）で通信を行い、ＩＣカードを持つユーザの認証処理を行うものである。なお、認証処理において利用する暗号方式としては、楕円エルガマル暗号が採用されているものとして説明する。ただし、本技術は、楕円エルガマル暗号に限らず、他の楕円曲線暗号についても適用可能である。
【００３０】
図１に示したＩＣカード１は、記憶装置１０１と、公開情報記憶部１０３と、秘密鍵記憶部１０５と、故障利用攻撃検知部１０７と、復号化処理部１０９と、制御部１１１と、通信部１１３とを有する。なお、本実施の形態では、公開情報記憶部１０３は、有限体ＧＦ（ｑ）上の楕円曲線Ｅの方程式、ベースポイントＰ及びユーザの公開鍵Ｙ＝［ｄ］Ｐをすでに格納し、秘密鍵記憶部１０５は、ユーザの秘密鍵ｄをすでに格納しているものとして説明する。
【００３１】
通信部１１３は、制御部１１１と連携し、認証装置３から受信した暗号文を記憶装置１０１に格納すると共に、記憶装置１０１に格納されたメッセージを認証装置３へ送信する。復号化処理部１０９は、制御部１１１と連携し、記憶装置１０１、公開情報記憶部１０３及び秘密鍵記憶部１０５に格納されたデータを用いて暗号文を復号化し、記憶装置１０１に格納する。故障利用攻撃検知部１０７は、制御部１１１と連携し、記憶装置１０１及び公開情報記憶部１０３に格納されたデータを用いて故障利用攻撃の有無を判定する。
【００３２】
また、認証装置３は、記憶装置３０１と、公開情報記憶部３０３と、乱数生成部３０５と、認証処理部３０７と、暗号化処理部３０９と、制御部３１１と、通信部３１３とを有する。なお、本実施の形態では、公開情報記憶部３０３は、有限体ＧＦ（ｑ）上の楕円曲線Ｅの方程式、ベースポイントＰ及びユーザの公開鍵Ｙ＝［ｄ］Ｐをすでに格納しているものとして説明する。
【００３３】
通信部３１３は、制御部３１１と連携し、記憶装置３０１に格納された暗号文をＩＣカード１へ送信すると共に、ＩＣカード１から受信したメッセージを記憶装置３０１に格納する。乱数生成部３０５は、制御部３１１と連携して、ランダムなデータを生成し、記憶装置３０１に格納する。暗号化処理部３０９は、制御部３１１と連携して、記憶装置３０１及び公開情報記憶部３０３に格納されたデータを用いて暗号文を生成し、記憶装置３０１に格納する。認証処理部３０７は、制御部３１１と連携し、記憶装置３０１に格納されたデータを用いてユーザ認証処理を行う。
【００３４】
次に、図２乃至図５を用いて、認証処理の内容について説明する。ＩＣカード１と認証装置３の間で認証処理が開始された場合、認証装置３の制御部３１１は、乱数生成部３０５に、乱数ｒ及び楕円曲線Ｅ上のランダムな点として表されるメッセージＭを生成させ、記憶装置３０１に格納させる。次に、制御部３１１は、暗号化処理部３０９に、記憶装置３０１に格納された乱数ｒ及びメッセージＭ並びに公開情報記憶部３０３に格納されたベースポイントＰを用いてＣ１＝［ｒ］Ｐ及びＣ２＝Ｍ＋［ｒ］Ｐを算出させ、暗号文Ｃ（Ｃ１，Ｃ２）として記憶装置３０１に格納させる（ステップＳ１）。そして、制御部３１１は、通信部３１３に、記憶装置３０１に格納された暗号文ＣをＩＣカード１へ送信させる（ステップＳ３）。
【００３５】
一方、ＩＣカード１の通信部１１３が暗号文Ｃを受信すると、ＩＣカード１の制御部１１１は、通信部１１３に、暗号文Ｃを記憶装置１０１に格納させる（ステップＳ５）。そして、制御部１１１は、復号化処理部１０９に、記憶装置１０１に格納されたＣ１及び秘密鍵記憶部１０５に格納されている秘密鍵ｄを用いて、Ｋ＝［ｄ］Ｃ１を算出させ、記憶装置１０１に格納させる（ステップＳ７）。
【００３６】
次に、ＩＣカード１の制御部１１１は、故障利用攻撃検知部１０７に、Ｋ＝［ｄ］Ｃ１の算出において故障利用攻撃を受けたか判定する攻撃有無判定処理を実行させる（ステップＳ９）。攻撃有無判定処理の詳細については後に説明するが、当該処理の中で、攻撃判定フラグが、記憶装置１０１においてＯＮ又はＯＦＦに設定される。そして、制御部１１１は、故障利用攻撃検知部１０７を介して、記憶装置１０１に格納された攻撃判定フラグを取得し、攻撃判定フラグがＯＮである場合は（ステップＳ１１：Ｙｅｓルート）、故障利用攻撃を受けたと判定し、必要に応じて所定の異常系処理を行う（ステップＳ１３）。一方、攻撃判定フラグがＯＦＦである場合は（ステップＳ１１：Ｎｏルート）、制御部１１１は故障利用攻撃を受けていないと判定し、復号化処理を続ける。制御部１１１は、復号化処理部１０９に、記憶装置１０１に格納されたＣ２及びＫを用いてメッセージＭ’＝Ｃ２−Ｋを算出させ、記憶装置１０１に格納させる（ステップＳ１５）。そして、制御部１１１は、通信部１１３に、記憶装置１０１に格納されたメッセージＭ’を認証装置３へ送信させる（ステップＳ１７）。
【００３７】
認証装置３の通信部３１３がメッセージＭ’を受信すると、認証装置３の制御部３１１は、通信部３１３に、メッセージＭ’を記憶装置３０１に格納させる（ステップＳ１９）。そして、制御部３１１は、認証処理部３０７に、記憶装置３０１に格納されたメッセージＭとメッセージＭ’が同一であるか比較させ、結果を制御部３１１に通知させる。ＭとＭ’が同一であれば、制御部３１１は、認証成功と判断する（ステップＳ２１）。なお、認証成功時に行われる所定の正常系処理及び認証失敗時に行われる所定の異常系処理については、従来と同様であるため、これ以上は述べない。
【００３８】
［攻撃有無判定処理］
次に、ベイユペアリングを用いた攻撃有無判定処理を図３乃至図５を用いて説明する。本実施の形態では、Ｃ１及びＫ（＝［ｄ］Ｃ１）を入力値としてペアリングを行い、スカラー倍の関係であるか判断することで、故障利用攻撃を受けたか判定する。なお、本実施の形態では予め公開情報記憶部１０３に、有限体ＧＦ（ｑ）の要素数ｑ（＝ｐｍ）が格納されているものとして説明する。また、本攻撃有無判定処理において算出した値又は変数等に代入した値は、すべて記憶装置１０１に格納するものとする。
【００３９】
まず、ＩＣカード１の故障利用攻撃検知部１０７は、公開情報記憶部１０３に格納されたｑを、変数ｎに代入する（ステップＳ３１）。次に、故障利用攻撃検知部１０７は、関数ｆＳ導出処理を実行し、関数ｆＣ１、関数ｆＫを求める。関数ｆＣ１、関数ｆＫは、ペアリングの計算において必要となる関数であり、それぞれ点Ｃ１、点Ｋ（＝［ｄ］Ｃ１）から求められる。そして、故障利用攻撃検知部１０７は、記憶装置１０１に格納された暗号文Ｃの点Ｃ１を、変数である点Ｓに代入する（ステップＳ３３）。さらに、故障利用攻撃検知部１０７は、関数ｆＳ導出処理を行う（ステップＳ３５）。
【００４０】
ここで、関数ｆＳ導出処理を図４を用いて説明する。まず、故障利用攻撃検知部１０７は、繰り返し処理のためのカウンタであるｉに初期値２を代入する（ステップＳ５１）。次に、故障利用攻撃検知部１０７は、関数ｇ１に１、関数ｇ２にｘ−ｘＳを代入する（ステップＳ５３）。ここで、ｘＳは点Ｓのｘ座標である。そして、故障利用攻撃検知部１０７は、記憶装置１０１に格納された変数ｎを２進展開し、関数ｇｎを求めるのに必要な、全てのｇ２＾ｚ（２＾ｚは２のべき乗を表すものとする）を特定する（ステップＳ５５）。例えば、ｎ＝１３の場合、１３＝２０＋２２＋２３と２進展開され、必要なｇ２＾ｚは、ｇ１、ｇ４及びｇ８であると特定される。
【００４１】
ここで、ｇｎの算出に必要なｇ２＾ｚが全て算出されていない場合（ステップＳ５７：Ｎｏルート）、故障利用攻撃検知部１０７は、先に述べた（２）式に従いｇ２ｉを求める。まず、故障利用攻撃検知部１０７は、［ｉ］Ｓを通りＥに接する直線ｌ（ｘ，ｙ）＝０を算出する（ステップＳ５９）。次に、故障利用攻撃検知部１０７は、［２ｉ］Ｓ及び無限遠点∞を通る直線ｖ（ｘ，ｙ）＝０を算出する（ステップＳ６１）。そして、故障利用攻撃検知部１０７は、ｇ２ｉ＝ｇｉ・ｇｉ・ｌ（ｘ，ｙ）／ｖ（ｘ，ｙ）を算出する（ステップＳ６３）。さらに、故障利用攻撃検知部１０７は、変数ｉに２ｉを代入し（ステップＳ６５）、ステップＳ５７の処理に戻る。
【００４２】
一方、ｇｎの算出に必要なｇ２＾ｚが全て算出されている場合（ステップＳ５７：Ｙｅｓルート）、故障利用攻撃検知部１０７は、２進展開で特定されたｇ２＾ｚから、ｇｎを算出する（ステップＳ６７）。例えば、ｎ＝１３の場合、先に述べた（２）式に従い、ｇ５＝ｇ１＋４＝ｇ１・ｇ４・ｌ（ｘ，ｙ）／ｖ（ｘ，ｙ）、ｇ１３＝ｇ５＋８＝ｇ５・ｇ８・ｌ（ｘ，ｙ）／ｖ（ｘ，ｙ）のように算出される。そして、算出されたｇｎを関数ｆＳに代入し（ステップＳ６９）、元の処理に戻る。このようにして関数ｆＳ導出処理が行われる。この処理により、ペアリングの計算に必要なｆＣ１及びｆＫを求めることができる。
【００４３】
図３の処理の説明に戻って、故障利用攻撃検知部１０７は、導出された関数ｆＳを、関数ｆＣ１に代入する（ステップＳ３７）。次に、故障利用攻撃検知部１０７は、点Ｋ（＝［ｄ］Ｃ１）を点Ｓに代入し（ステップＳ３９）、関数ｆＳ導出処理を実行する（ステップＳ４１）。関数ｆＳ導出処理ついては、図４を用いてすでに説明したので説明を省略する。そして、故障利用攻撃検知部１０７は、導出された関数ｆＳを、関数ｆＫに代入し（ステップＳ４３）、処理は端子Ａを介して図５の処理に移行する。
【００４４】
次に、故障利用攻撃検知部１０７は、楕円曲線Ｅ上の点Ｕ及びＶをランダムに選択し（ステップＳ７１）、Ｖ＋Ｃ１及びＵ＋Ｋを算出する（ステップＳ７３）。ここで、Ｖ＋Ｃ１＝∞又はＵ＋Ｋ＝∞の場合（ステップＳ７５：Ｎｏルート）、ステップＳ７１へ戻り、点Ｕ及びＶを選択し直す。一方、Ｖ＋Ｃ１≠∞かつＵ＋Ｋ≠∞の場合（ステップＳ７５：Ｙｅｓルート）、ステップＳ７７へ移行する。
【００４５】
そして、故障利用攻撃検知部１０７は、記憶装置１０１に格納されている、関数ｆＣ１、ｆＫ、点Ｕ、Ｖ、Ｖ＋Ｃ１及びＵ＋Ｋを用いて、ペアリングｅｎ（Ｃ１，Ｋ）の計算を行う（ステップＳ７７）。ペアリングの計算式については、先に述べた（１）式に従い、ｅｎ（Ｃ１，Ｋ）＝ｆＣ１（Ｖ＋Ｃ１）／ｆＣ１（Ｖ）・ｆＫ（Ｕ）／ｆＫ（Ｕ＋Ｋ）となり、この計算結果を｛（ｑ−１）／ｎ｝乗したものが出力値となる。
【００４６】
そして、故障利用攻撃検知部１０７は、ペアリングの出力値が１であるか判断し、出力値が１である場合（ステップＳ７９：Ｙｅｓルート）、記憶装置１０１の攻撃判定フラグをＯＦＦに設定し（ステップＳ８１）、元の処理に戻る。一方、ペアリングの出力値が１でない場合（ステップＳ７９：Ｎｏルート）、故障利用攻撃検知部１０７は、記憶装置１０１の攻撃判定フラグをＯＮに設定し（ステップＳ８３）、元の処理に戻る。
【００４７】
このようにして攻撃有無判定処理が行われる。ＩＣカード１の制御部１１１は、当該処理で設定された攻撃判定フラグを取得して、ＯＮの場合は故障利用攻撃を受けたと判定し、ＯＦＦの場合は故障利用攻撃を受けていないと判定することができる。
【００４８】
［攻撃有無判定処理の変形例１］
攻撃有無判定処理の変形例である第２攻撃有無判定処理を図６に示す。本変形例では、図３乃至図５を用いて説明した攻撃有無判定処理の代わりに、第２攻撃有無判定処理を実施する。図３乃至図５の攻撃有無判定処理では、変数ｎに有限体ＧＦ（ｑ）の要素数ｑ（＝ｐｍ）を代入していたが、第２攻撃有無判定処理では、予め設定された任意の自然数ｎ１を代入する。これにより、ペアリングに必要な関数を求める処理の演算量をｎ１／ｑにすることができる。なお、これに伴いペアリング関数の入力値を変換する必要があり、後に述べるとおり、点Ｃ１、Ｋ（＝［ｄ］Ｃ１）をそれぞれＣ１~、Ｋ~に変換する。なお、第２攻撃有無判定処理では、公開情報記憶部１０３に、有限体ＧＦ（ｑ）の要素数ｑ（＝ｐｍ）及び予め設定された任意の自然数がすでに格納されているものとして説明する。また、第２攻撃有無判定処理において算出した値又は変数等に代入した値は、すべて記憶装置１０１に格納するものとする。
【００４９】
まず、故障利用攻撃検知部１０７は、公開情報記憶部１０３に格納されている任意の自然数ｎ１を、変数ｎに代入し（ステップＳ９１）、変形ペアリング処理を行う（ステップＳ９３）。
【００５０】
ここで、変形ペアリング処理を図７及び図８を用いて説明する。まず、ＩＣカード１の故障利用攻撃検知部１０７は、繰り返し処理のためのカウンタであるｊに初期値として１を代入する（ステップＳ１０１）。そして、故障利用攻撃検知部１０７は、公開情報記憶部１０３に格納されたｑを用いて、ｑｊ−１がｎで割り切れるか判断し、割り切れない場合（ステップＳ１０３：Ｎｏルート）、ｊにｊ＋１を代入して（ステップＳ１０５）、ステップＳ１０３に戻る。一方、ｑｊ−１がｎで割り切れる場合（ステップＳ１０３：Ｙｅｓルート）、変数ｌにｑｊを代入する（ステップＳ１０７）。
【００５１】
次に、故障利用攻撃検知部１０７は、記憶装置１０１に格納されているＣ１、Ｋ（＝［ｄ］Ｃ１）及びｎを用いて、点Ｃ１’＝［１／ｎ］Ｃ１及び点Ｋ’＝［１／ｎ］Ｋを算出する（ステップＳ１０９）。ここで、楕円曲線上の除算については既存技術であり説明を省略する。そして、Ｃ１’＝（ｘＣ１’，ｙＣ１’）、Ｋ’＝（ｘＫ’，ｙＫ’）とすると、故障利用攻撃検知部１０７は、Ｃ１’及びＫ’のｘ座標及びｙ座標をそれぞれｌ乗した点σ（Ｃ１）＝（ｘＣ１’ｌ，ｙＣ１’ｌ）及びσ（Ｋ’）＝（ｘＫ’ｌ，ｙＫ’ｌ）を算出する（ステップＳ１１１）。ここで、ある点の各座標をｑ乗した点はフロベニウス写像と呼ばれる写像であり、各座標をｌ（＝ｑｊ）乗した点はフロベニウス写像をｊ回適用した点である。さらに、故障利用攻撃検知部１０７は、Ｃ１~＝σ（Ｃ１’）−Ｃ１’及びＫ~＝σ（Ｋ’）−Ｋ’を算出する（ステップＳ１１３）。変形ペアリング処理では、このように算出したＣ１~及びＫ~を入力値とすることで、予め設定された任意の自然数ｎ１を用いてペアリングの計算を行うことができる。なお、変形ペアリング処理においては、ｎ１を小さくすると、関数ｆＳ導出処理においてステップＳ５９乃至Ｓ６５（図４）を繰り返す回数が減り、演算量を減らすことができる。但し、ｎ１を用いることでペアリングの出力値はｎ１個に縮退し、故障利用攻撃の検知率が下がる。
【００５２】
次に、故障利用攻撃検知部１０７は、記憶装置１０１に格納された点Ｃ１~、点Ｋ~を用いて、それぞれ関数ｆＳ導出処理を実行し、関数ｆＣ１~、関数ｆＫ~を求める。まず、故障利用攻撃検知部１０７は、記憶装置１０１に格納された点Ｃ１~を、変数である点Ｓに代入し（ステップＳ１１５）、関数ｆＳ導出処理を行う（ステップＳ１１７）。関数ｆＳ導出処理については、図４を用いて既に説明したので説明を省略する。次に、処理は端子Ｂを介して図８の処理に移行し、故障利用攻撃検知部１０７は、導出された関数ｆＳを、関数ｆＣ１~に代入する（ステップＳ１２１）。
【００５３】
次に、故障利用攻撃検知部１０７は、点Ｋ~を点Ｓに代入し（ステップＳ１２３）、関数ｆＳ導出処理を実行する（ステップＳ１２５）。関数ｆＳ導出処理については、図４を用いて既に説明したので説明を省略する。そして、故障利用攻撃検知部１０７は、導出された関数ｆＳを、関数ｆＫ~に代入する（ステップＳ１２７）。
【００５４】
次に、故障利用攻撃検知部１０７は、楕円曲線Ｅ上の点Ｕ及びＶをランダムに選択し（ステップＳ１２９）、Ｖ＋Ｃ１~及びＵ＋Ｋ~を算出する（ステップＳ１３１）。ここで、Ｖ＋Ｃ１~＝∞又はＵ＋Ｋ~＝∞の場合（ステップＳ１３３：Ｎｏルート）、ステップＳ１２９へ戻り、点Ｕ及びＶを選択し直す。一方、Ｖ＋Ｃ１~≠∞かつＵ＋Ｋ~≠∞の場合（ステップＳ１３３：Ｙｅｓルート）、ステップＳ１３５へ移行する。
【００５５】
そして、故障利用攻撃検知部１０７は、記憶装置１０１に格納されている、関数ｆＣ１~、関数ｆＫ~、点Ｕ、Ｖ、Ｖ＋Ｃ１~及びＵ＋Ｋ~を用いて、ペアリングｅｎ（Ｃ１~，Ｋ~）の計算を行い（ステップＳ１３５）、元の処理に戻る。ペアリングの計算式については、先に述べた（１）式に従い、ｅｎ（Ｃ１~，Ｋ~）＝ｆＣ１~（Ｖ＋Ｃ１~）／ｆＣ１~（Ｖ）・ｆＫ~（Ｕ）／ｆＫ~（Ｕ＋Ｋ~）となり、この計算結果を｛（ｑ−１）／ｎ｝乗したものが出力値となる。このようにして変形ペアリング処理が行われる。
【００５６】
図６の処理の説明に戻って、故障利用攻撃検知部１０７は、ペアリングの出力値が１であるか判断する。ペアリングの出力値が１である場合（ステップＳ９５：Ｙｅｓルート）、故障利用攻撃検知部１０７は、記憶装置１０１の攻撃判定フラグをＯＦＦに設定し（ステップＳ９７）、元の処理に戻る。一方、ペアリングの出力値が１でない場合（ステップＳ９５：Ｎｏルート）、故障利用攻撃検知部１０７は、記憶装置１０１の攻撃判定フラグをＯＮに設定し（ステップＳ９９）、元の処理に戻る。
【００５７】
このようにして、ＩＣカード１の制御部１１１は、当該処理で設定された攻撃判定フラグを取得して、ＯＮの場合は故障利用攻撃を受けたと判定し、ＯＦＦの場合は故障利用攻撃を受けていないと判定することができる。また、先にも述べたとおり、予め設定するｎ１を小さくすると、演算量を削減することができるが、同時にペアリングの出力値が縮退するため故障利用攻撃の検知率が下がる。よって、第２攻撃有無判定処理においては演算量と検知率を考慮して、適切なｎ１を設定する必要がある。なお、有限体ＧＦ（ｑ）の要素数ｑ＝２１６０として通常のベイユペアリングを行う場合に対して、ｎ１＝２と設定して第２攻撃有無判定処理を行う場合は、ペアリングに必要な関数を求める部分の演算量が２／２１６０となり、故障利用攻撃の検知率が１／２となる。
【００５８】
［攻撃有無判定処理の変形例２］
攻撃有無判定処理の別の変形例である第３攻撃有無判定処理を図９に示す。本変形例では、図６を用いて説明した第２攻撃有無判定処理の代わりに、第３攻撃有無判定処理を実施する。そして、第３攻撃有無判定処理は、複数の自然数を予め設定し、当該自然数の各々に対し第２攻撃有無判定処理を行うことで、故障利用攻撃の検知率を上げることができる。なお、第３攻撃有無判定処理では、公開情報記憶部１０３に、有限体ＧＦ（ｑ）の要素数ｑ（＝ｐｍ）及び予め設定された任意の自然数の集合Ｎ（＝｛ｎ１、ｎ２、・・・、ｎｔ｝とする）がすでに格納されているものとして説明する。また、第３攻撃有無判定処理において算出した値又は変数等に代入した値は、すべて記憶装置１０１に格納するものとする。
【００５９】
まず、故障利用攻撃検知部１０７は、繰り返し処理のためのカウンタであるｓに初期値１を代入し、公開情報記憶部１０３に格納されている任意の自然数の集合Ｎ＝｛ｎ１、ｎ２、・・・、ｎｔ｝のｎｓを、変数ｎに代入し（ステップＳ１４１）、変形ペアリング処理を行う（ステップＳ１４３）。変形ペアリング処理については、図７及び図８を用いて既に説明したので説明を省略する。
【００６０】
次に、故障利用攻撃検知部１０７は、ペアリングの出力値が１であるか判断する。ペアリングの出力値が１でない場合（ステップＳ１４５：Ｎｏルート）、故障利用攻撃検知部１０７は、記憶装置１０１の攻撃判定フラグをＯＮに設定し（ステップＳ１４７）、元の処理に戻る。一方、ペアリングの出力値が１である場合（ステップＳ１４５：Ｙｅｓルート）、集合Ｎの全ての要素に対してペアリングの計算が行われたか判断する。ｎｓ＝ｎｔでない場合、すなわちＮの全ての要素に対してペアリングの計算が行われていない場合（ステップＳ１４９：Ｎｏルート）、故障利用攻撃検知部１０７は、ｓにｓ＋１を代入し、ｎにｎｓを代入し（ステップＳ１５１）、ステップＳ１４３に戻る。一方、ｎｓ＝ｎｔである場合、すなわちＮの全ての要素に対してペアリングの計算が行われた場合（ステップＳ１４９：Ｙｅｓルート）、故障利用攻撃検知部１０７は、記憶装置１０１の攻撃判定フラグをＯＦＦに設定し（ステップＳ１５３）、元の処理に戻る。
【００６１】
このようにして、ＩＣカード１の制御部１１１は、当該処理で設定された攻撃判定フラグを取得して、ＯＮの場合は故障利用攻撃を受けたと判定し、ＯＦＦの場合は故障利用攻撃を受けていないと判定することができる。また、第３攻撃有無判定処理では予め設定された自然数の集合Ｎにより、Ｎに含まれる各自然数の値を小さくすることで演算量を削減できると共に、Ｎに含まれる自然数の各々についてペアリングの計算を行うことで故障利用攻撃の検知率を上げることができる。例えば、有限体ＧＦ（ｑ）の要素数ｑ＝２１６０として通常のベイユペアリングを行う場合に対し、Ｎ＝｛２，３｝と設定して第３攻撃有無判定処理を行う場合は、ペアリングに必要な関数を求める部分の演算量が５／２１６０となり、故障利用攻撃の検知率が５／６となる。また、Ｎに含まれる各自然数の値は、素数が好ましい。
【００６２】
［攻撃有無判定処理の変形例３］
攻撃有無判定処理のさらに別の変形例である第４攻撃有無判定処理を図１０に示す。本変形例では、図９を用いて説明した第３攻撃有無判定処理の代わりに、第４攻撃有無判定処理を実施する。そして、第４攻撃有無判定処理では、ペアリングによる攻撃有無判定処理を行う前に、点Ｋが楕円曲線Ｅ上の点であるか判断することで、故障利用攻撃を受けたか判定する。なお、第４攻撃有無判定処理では、公開情報記憶部１０３に、有限体ＧＦ（ｑ）の要素数ｑ（＝ｐｍ）、楕円曲線Ｅの方程式及び予め設定された任意の自然数の集合Ｎ（＝｛ｎ１、ｎ２、・・・、ｎｔ｝とする）がすでに格納されているものとして説明する。また、第４攻撃有無判定処理において算出した値又は変数等に代入した値は、すべて記憶装置１０１に格納するものとする。
【００６３】
まず、ＩＣカード１の故障利用攻撃検知部１０７は、公開情報記憶部１０３に格納された楕円曲線Ｅの方程式及び記憶装置１０１に格納された点Ｋ（＝［ｄ］Ｃ１）を取得して、Ｅの方程式にＫを代入し（ステップＳ１６１）、方程式が成立するか否かによってＫがＥ上の点であるか否かを判断する。例えば、楕円曲線Ｅの方程式が
Ｅ：ｙ２＋ａ１ｘｙ＋ａ３ｙ＝ｘ３＋ａ２ｘ２＋ａ４ｘ＋ａ６
と定義されているとき、関数ｆ（ｘ，ｙ）を
ｆ（ｘ，ｙ）＝ｘ３＋ａ２ｘ２＋ａ４ｘ＋ａ６−（ｙ２＋ａ１ｘｙ＋ａ３ｙ）
と定める。そして、Ｋ＝（ｘＫ，ｙＫ）としたとき、Ｋを関数ｆ（ｘ，ｙ）に代入した値ｆ（ｘＫ，ｙＫ）を計算する。この結果、ｆ（ｘＫ，ｙＫ）＝０であれば、ＫはＥ上の点である。そして、ＫがＥ上の点でない場合（ステップＳ１６３：Ｎｏルート）、故障利用攻撃検知部１０７は、記憶装置１０１の攻撃判定フラグをＯＮに設定し（ステップＳ１６５）、元の処理に戻る。一方、ＫがＥ上の点である場合（ステップＳ１６３：Ｙｅｓルート）、故障利用攻撃検知部１０７は、図９の第３攻撃有無判定処理を実行し（ステップＳ１６７）、元の処理に戻る。
【００６４】
このようにして、ＩＣカード１の制御部１１１は、当該処理で設定された攻撃判定フラグを取得して、ＯＮの場合は故障利用攻撃を受けたと判定し、ＯＦＦの場合は故障利用攻撃を受けていないと判定することができる。また、点Ｋが楕円曲線Ｅ上にあるか判断することで故障利用攻撃を検知した場合には、ペアリングによる攻撃有無判定処理を行う必要がなくなり、処理の効率が上がる。同時に、点Ｋが楕円曲線Ｅ上にあるかという検知手法と、ペアリングによる検知手法とを組み合わせることで、検知率を上げることができる。なお、本変形例の中ではステップＳ１６７（図１０）において第３攻撃有無判定処理を行ったが、代わりに第２攻撃有無判定処理を実施してもよい。
【００６５】
［攻撃有無判定処理の変形例４］
攻撃有無判定処理のさらに別の変形例である第５攻撃有無判定処理を図１１に示す。本変形例では、図６を用いて説明した第２攻撃有無判定処理の代わりに、第５攻撃有無判定処理を実施する。そして、第５攻撃有無判定処理では、ポイントハービング（Ｐｏｉｎｔ  Ｈａｌｖｉｎｇ）アルゴリズムを利用して、変形ペアリング処理に必要な点の算出を行う。これにより、演算量をさらに削減することができる。但し、本変形例に用いられる有限体の要素数は２のべき乗個であり、かつ変数ｎに代入する自然数は２である必要がある。なお、本変形例では、公開情報記憶部１０３に、有限体ＧＦ（ｑ）の要素数ｑ（＝２ｍ）がすでに格納されているものとして説明する。また、本変形例において算出した値又は変数等に代入した値は、すべて記憶装置１０１に格納するものとする。
【００６６】
まず、ＩＣカード１の故障利用攻撃検知部１０７は、固定値である２を変数ｎに代入し（ステップＳ１７１）、第２変形ペアリング処理を行う（ステップＳ１７３）。
【００６７】
ここで、第２変形ペアリング処理を図１２及び図１３を用いて説明する。まず、故障利用攻撃検知部１０７は、繰り返し処理のためのカウンタであるｊに初期値として１を代入する（ステップＳ１８１）。そして、故障利用攻撃検知部１０７は、公開情報記憶部１０３に格納されたｑを用いて、ｑｊ−１がｎ（＝２）で割り切れるか判断し、割り切れない場合（ステップＳ１８３：Ｎｏルート）、ｊにｊ＋１を代入して（ステップＳ１８５）、ステップＳ１８３に戻る。一方、ｑｊ−１がｎ（＝２）で割り切れる場合（ステップＳ１８３：Ｙｅｓルート）、変数ｌにｑｊを代入する（ステップＳ１８７）。
【００６８】
次に、故障利用攻撃検知部１０７は、記憶装置１０１に格納されているＣ１、Ｋ（＝［ｄ］Ｃ１）及びｎ（＝２）を用いて、点Ｃ１’＝［１／ｎ］Ｃ１＝［１／２］Ｃ１及び点Ｋ’＝［１／ｎ］Ｋ＝［１／２］Ｋを算出する（ステップＳ１８９）。この計算に、ポイントハービングアルゴリズムを利用する。
【００６９】
ポイントハービングとは、要素数が２ｍである有限体上に定義された楕円曲線上のある点Ｐに対して、Ｐ＝［２］Ｑ（つまりＱ＝［１／２］Ｐ）となる点Ｑを効率よく求める技術である。例えば、有限体ＧＦ（２ｍ）上の楕円曲線Ｅを以下のように定めたとき、
Ｅ：ｙ２＋ｘｙ＝ｘ３＋ａｘ＋ｂ（但し、ｂ≠０）
Ｅ上の点Ｐ＝（ｘＰ、ｙＰ）から、点Ｑ＝［１／２］Ｐ＝（ｘＱ，ｙＱ）を求めるアルゴリズムは、以下のようになる。
（１）方程式ｘ２＋ｘ＝ｘＰ＋ａを解き、解をｋとする
（２）ｔ＝ｙＰ＋ｘＰｋを算出する
（３）Ｔｒ（ｔ）＝０のとき、ｘＱ＝（ｔ＋ｘＰ）（１／２）、Ｔｒ（ｔ）≠０のとき、ｘＱ＝ｔ（１／２）を算出する
なお、Ｔｒ（ｔ）＝ｔ＋ｔ２＋ｔ（２＾２）＋・・・＋ｔ｛２＾（ｍ−１）｝とする
（４）ｙＱ＝ｘＱ２＋λｘＱを算出する
なお、Ｔｒ（ｔ）＝０のとき、λ＝ｋとし、Ｔｒ（ｔ）≠０のとき、λ＝ｋ＋１とする
以上のような処理を実施することで、Ｑ（ｘＱ，ｙＱ）を、より少ない演算量で求めることができる。
【００７０】
次に、Ｃ１’＝（ｘＣ１’，ｙＣ１’）、Ｋ’＝（ｘＫ’，ｙＫ’）とすると、故障利用攻撃検知部１０７は、Ｃ１’及びＫ’のｘ座標及びｙ座標をそれぞれｌ乗した点σ（Ｃ１）＝（ｘＣ１’ｌ，ｙＣ１’ｌ）及びσ（Ｋ’）＝（ｘＫ’ｌ，ｙＫ’ｌ）を算出する（ステップＳ１９１）。そして、故障利用攻撃検知部１０７は、Ｃ１~＝σ（Ｃ１’）−Ｃ１’及びＫ~＝σ（Ｋ’）−Ｋ’を算出する（ステップＳ１９３）。本変形例では、このように算出したＣ１~及びＫ~を入力値とすることで、予め設定された自然数２を用いてペアリングの計算を行うことができる。
【００７１】
次に、故障利用攻撃検知部１０７は、記憶装置１０１に格納された点Ｃ１~、点Ｋ~を用いて、それぞれ関数ｆＳ導出処理を実行し、関数ｆＣ１~、関数ｆＫ~を求める。まず、故障利用攻撃検知部１０７は、記憶装置１０１に格納された点Ｃ１~を、変数である点Ｓに代入し（ステップＳ１９５）、関数ｆＳ導出処理を行う（ステップＳ１９７）。関数ｆＳ導出処理については、図４を用いて既に説明したので説明を省略する。次に、処理は端子Ｃを介して図１３の処理に移行し、故障利用攻撃検知部１０７は、導出された関数ｆＳを、関数ｆＣ１~に代入する（ステップＳ２０１）。
【００７２】
次に、故障利用攻撃検知部１０７は、点Ｋ~を点Ｓに代入し（ステップＳ２０３）、関数ｆＳ導出処理を実行する（ステップＳ２０５）。関数ｆＳ導出処理については、図４を用いて既に説明したので説明を省略する。そして、故障利用攻撃検知部１０７は、導出された関数ｆＳを、関数ｆＫ~に代入する（ステップＳ２０７）。
【００７３】
次に、故障利用攻撃検知部１０７は、楕円曲線Ｅ上の点Ｕ及びＶをランダムに選択し（ステップＳ２０９）、Ｖ＋Ｃ１~及びＵ＋Ｋ~を算出する（ステップＳ２１１）。ここで、Ｖ＋Ｃ１~＝∞又はＵ＋Ｋ~＝∞の場合（ステップＳ２１３：Ｎｏルート）、ステップＳ２０９へ戻り、点Ｕ及びＶを選択し直す。一方、Ｖ＋Ｃ１~≠∞かつＵ＋Ｋ~≠∞の場合（ステップＳ２１３：Ｙｅｓルート）、ステップＳ２１５へ移行する。
【００７４】
そして、故障利用攻撃検知部１０７は、記憶装置１０１に格納されている、関数ｆＣ１~、関数ｆＫ~、点Ｕ、Ｖ、Ｖ＋Ｃ１~及びＵ＋Ｋ~を用いて、ペアリングｅｎ（Ｃ１~，Ｋ~）の計算を行い（ステップＳ２１５）、元の処理に戻る。ペアリングの計算式については、先に述べた（１）式に従い、ｅｎ（Ｃ１~，Ｋ~）＝ｆＣ１~（Ｖ＋Ｃ１~）／ｆＣ１~（Ｖ）・ｆＫ~（Ｕ）／ｆＫ~（Ｕ＋Ｋ~）となり、この計算結果を｛（ｑ−１）／ｎ｝乗したものが出力値となる。このようにして第２変形ペアリング処理が行われる。
【００７５】
図１１の処理の説明に戻って、故障利用攻撃検知部１０７は、ペアリングの出力値が１であるか判断する。ペアリングの出力値が１である場合（ステップＳ１７５：Ｙｅｓルート）、故障利用攻撃検知部１０７は、記憶装置１０１の攻撃判定フラグをＯＦＦに設定し（ステップＳ１７７）、元の処理に戻る。一方、ペアリングの出力値が１でない場合（ステップＳ１７５：Ｎｏルート）、故障利用攻撃検知部１０７は、記憶装置１０１の攻撃判定フラグをＯＮに設定し（ステップＳ１７９）、元の処理に戻る。
【００７６】
このようにして、ＩＣカード１の制御部１１１は、当該処理で設定された攻撃判定フラグを取得して、ＯＮの場合は故障利用攻撃を受けたと判定し、ＯＦＦの場合は故障利用攻撃を受けていないと判定することができる。また、ポイントハービングアルゴリズムを利用することにより、変形ペアリング処理に必要な点を求める処理の演算量が削減できる。
【００７７】
［その他の変形例］
以上、本技術の実施の形態について説明したが、本技術はこれに限定されるものではない。例えば、ＩＣカード及び認証装置におけるデータ管理方法は、図１のようなものに限定されない。また、ＩＣカード及び認証装置における機能構成も、図１に限定されず、全ての機能がＩＣチップにより実施される場合と、プロセッサ及びプログラムモジュールにより実施される場合がある。
【００７８】
また、処理フローについても処理結果が同じであれば、異なる順番で実施したり、並列に実行するように変形しても良い。
【００７９】
また、本技術は、楕円曲線上のスカラー倍算に対する故障利用攻撃一般に適用できる。本技術の実施の形態では楕円エルガマル暗号を例に説明したが、他の楕円曲線暗号方式においてもスカラー倍算を行うため、本技術は、楕円エルガマル暗号以外の楕円曲線暗号方式を利用しても良い。同様に、楕円曲線上のスカラー倍算を行う処理であれば、認証処理や暗号処理に限らず、電子署名等に適用しても良い。
【００８０】
また、本技術の実施の形態ではベイユペアリングを例に説明したが、先にも述べたとおり、スカラー倍の関係にある楕円曲線上の２点を入力値として計算したとき１が出力されるのはペアリング一般の性質であるため、本技術はベイユペアリング以外のペアリングを利用しても良い。
【００８１】
さらに、本実施の形態において楕円曲線Ｅ上の点Ｕ及びＶをランダムに選択した後、再度Ｕ及びＶを選び直すか否かの判断（ステップＳ７５（図５）、ステップＳ１３３（図８）、ステップＳ２１３（図１３））の条件は、選択したＵ及びＶを用いてペアリング関数ｅｎ（Ｃ１，Ｋ）又はｅｎ（Ｃ１~，Ｋ~）を計算し、結果がゼロ又は値を得られない場合としても良い。
【００８２】
［実施の形態のまとめ］
本実施の形態をまとめると以下のようになる。
【００８３】
本故障利用攻撃検知方法は、有限体上の楕円曲線Ｅと、楕円曲線Ｅ上の点Ｃ１と、スカラーｄとに基づき、楕円曲線Ｅ上のスカラー倍点［ｄ］Ｃ１を算出し、記憶装置に格納するスカラー倍演算ステップと、点Ｃ１とスカラー倍点［ｄ］Ｃ１とを用いて楕円曲線Ｅ上のペアリングを計算し、ペアリングの計算結果が１でない場合には故障利用攻撃を受けたと判定する第１の故障利用攻撃検知ステップとを含む。
【００８４】
まず、スカラー倍演算ステップにおいて故障利用攻撃を受けた場合、スカラー倍点［ｄ］Ｃ１の算出を誤り、Ｃ１と［ｄ］Ｃ１がスカラー倍の関係にならない可能性がある。一方、ペアリング関数の性質である（ａ）（Ｐ１＋Ｐ２，Ｑ）＝（Ｐ１，Ｑ）・（Ｐ２，Ｑ）、（ｂ）（Ｐ，Ｑ）＝（Ｑ，Ｐ）、（ｃ）（Ｐ，Ｐ）＝１より、スカラー倍の関係にある２点を入力値としてペアリングの計算を行うと、出力値は１になることが導き出せる。この性質に基づき、Ｃ1と［ｄ］Ｃ1を用いてペアリングを計算し、その計算結果が１であるか否かを判断することで、Ｃ1と［ｄ］Ｃ1がスカラー倍の関係にあるか否かを確認できる。これにより、より厳密に故障利用攻撃の有無を判定することができる。
【００８５】
なお、ペアリングの計算については、Ｃ1と［ｄ］Ｃ1とを入力としてペアリングの計算を行う手法や、Ｃ1及び［ｄ］Ｃ1を変換した後にペアリングの計算を行う手法が採用可能である。前者であれば、検知率を高めることができる。
【００８６】
そして、第１の故障利用攻撃検知ステップは、点Ｃ１’＝［１／ｎ］Ｃ１（ｎは任意の自然数）＝（ｘＣ１’，ｙＣ１’）及び点［ｄ］Ｃ１’＝［１／ｎ］［ｄ］Ｃ１＝（ｘ［ｄ］Ｃ１’，ｙ［ｄ］Ｃ１’）を算出するステップと、点σ（Ｃ１’）＝（ｘＣ１’ｌ，ｙＣ１’ｌ）（ｌ＝ｑｍ。ｑは有限体の要素数。ｍはｑｍ−１がｎで割り切れる最小の数）及び点σ（［ｄ］Ｃ１’）＝（ｘ［ｄ］Ｃ１’ｌ，ｙ［ｄ］Ｃ１’ｌ）を算出するステップと、点Ｃ１~＝σ（Ｃ１’）−Ｃ１’及び点［ｄ］Ｃ１~＝σ（［ｄ］Ｃ１’）−［ｄ］Ｃ１’を算出するステップと、点Ｃ１~と点［ｄ］Ｃ１~とを入力値として楕円曲線Ｅ上のペアリングを計算するステップとを含むようにしても良い。このようにペアリングの入力値となる点を変換することで、点Ｃ１及び［ｄ］Ｃ１を入力値とした場合よりも、ペアリングの計算に必要な演算量を削減することができる。
【００８７】
さらに、第１の故障利用攻撃検知ステップは、複数の自然数ｎに対しそれぞれペアリングを計算し、複数のペアリングの計算結果に１でないものが含まれる場合には故障利用攻撃を受けたと判定するステップを含むようにしても良い。このように複数回ペアリングの計算を行うことで、検知率を上げることができる。
【００８８】
また、本故障利用攻撃検知方法は、第１の故障利用攻撃検知ステップを行う前に、点［ｄ］Ｃ１が楕円曲線Ｅ上にあるかを判断し、楕円曲線Ｅ上にないと判断された場合には故障利用攻撃を受けたと判定する第２の故障利用攻撃検知ステップをさらに含むようにしても良い。より演算量の少ない第２の故障利用攻撃検知ステップで検知できる場合は、第１の故障利用攻撃検知ステップを行う必要がなくなり、処理効率を上げることができる。
【００８９】
さらに、第１の故障利用攻撃検知ステップは、ｑが２のべき乗であり、かつ任意の自然数ｎが２であるときに、ポイントハービングアルゴリズムで、点Ｃ１’＝［１／ｎ］Ｃ１＝（ｘＣ１’，ｙＣ１’）及び点［ｄ］Ｃ１’＝［１／ｎ］［ｄ］Ｃ１＝（ｘ［ｄ］Ｃ１’，ｙ［ｄ］Ｃ１’）を算出するステップを含むようにしても良い。これにより、点Ｃ１’及び点［ｄ］Ｃ１’の算出に必要な演算量を削減することができる。
【００９０】
以上の実施例及び変形例を含む実施形態に関し、更に以下の付記を開示する。
【００９１】
（付記１）
有限体上の楕円曲線Ｅと、当該楕円曲線Ｅ上の点Ｃ１と、スカラーｄとに基づき、前記楕円曲線Ｅ上のスカラー倍点［ｄ］Ｃ１を算出するスカラー倍演算手段と、
前記点Ｃ１と前記スカラー倍点［ｄ］Ｃ１とを用いて前記楕円曲線Ｅ上のペアリングを計算し、当該ペアリングの計算結果が１でない場合には故障利用攻撃を受けたと判定する第１の故障利用攻撃検知手段と、
を有する楕円曲線演算装置。
【００９２】
（付記２）
前記第１の故障利用攻撃検知手段は、
点Ｃ１’＝［１／ｎ］Ｃ１（ｎは任意の自然数）＝（ｘＣ１’，ｙＣ１’）
及び点［ｄ］Ｃ１’＝［１／ｎ］［ｄ］Ｃ１＝（ｘ［ｄ］Ｃ１’，ｙ［ｄ］Ｃ１’）を算出し、
点σ（Ｃ１’）＝（ｘＣ１’ｌ，ｙＣ１’ｌ）（ｌ＝ｑｍ。ｑは有限体の要素数。ｍはｑｍ−１がｎで割り切れる最小の数）
及び点σ（［ｄ］Ｃ１’）＝（ｘ［ｄ］Ｃ１’ｌ，ｙ［ｄ］Ｃ１’ｌ）を算出し、
点Ｃ１~＝σ（Ｃ１’）−Ｃ１’
及び点［ｄ］Ｃ１~＝σ（［ｄ］Ｃ１’）−［ｄ］Ｃ１’を算出し、
前記点Ｃ１~と前記点［ｄ］Ｃ１~とを入力として前記楕円曲線Ｅ上のペアリングを計算する
ことを特徴とする付記１記載の楕円曲線演算装置。
【００９３】
（付記３）
前記第１の故障利用攻撃検知手段は、
複数の前記自然数ｎに対しそれぞれ前記ペアリングを計算し、
当該複数のペアリングの計算結果に１でないものが含まれる場合には故障利用攻撃を受けたと判定する
ことを特徴とする付記２記載の楕円曲線演算装置。
【００９４】
（付記４）
前記第１の故障利用攻撃検知手段が処理を行う前に、前記点［ｄ］Ｃ１が前記楕円曲線Ｅ上にあるかを判断し、当該楕円曲線Ｅ上にないと判断された場合には故障利用攻撃を受けたと判定する第２の故障利用攻撃検知手段
をさらに有する付記１乃至３のいずれか１つ記載の楕円曲線演算装置。
【００９５】
（付記５）
前記第１の故障利用攻撃検知手段は、
前記ｑが２のべき乗であり、かつ前記任意の自然数ｎが２であるときに、
ポイントハービングアルゴリズムで、点Ｃ１’＝［１／ｎ］Ｃ１＝（ｘＣ１’，ｙＣ１’）及び点［ｄ］Ｃ１’＝［１／ｎ］［ｄ］Ｃ１＝（ｘ［ｄ］Ｃ１’，ｙ［ｄ］Ｃ１’）を算出する
ことを特徴とする付記２記載の楕円曲線演算装置。
【００９６】
（付記６）
コンピュータが、有限体上の楕円曲線Ｅと、前記楕円曲線Ｅ上の点Ｃ１と、スカラーｄとに基づき、前記楕円曲線Ｅ上のスカラー倍点［ｄ］Ｃ１を算出し、記憶装置に格納するスカラー倍演算ステップと、
前記コンピュータが、前記点Ｃ１と前記スカラー倍点［ｄ］Ｃ１とを用いて前記楕円曲線Ｅ上のペアリングを計算し、当該ペアリングの計算結果が１でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップと、
を含む楕円曲線演算方法。
【００９７】
（付記７）
有限体上の楕円曲線Ｅと、前記楕円曲線Ｅ上の点Ｃ１と、スカラーｄとに基づき、前記楕円曲線Ｅ上のスカラー倍点［ｄ］Ｃ１を算出し、記憶装置に格納するスカラー倍演算ステップと、
前記点Ｃ１と前記スカラー倍点［ｄ］Ｃ１とを用いて前記楕円曲線Ｅ上のペアリングを計算し、当該ペアリングの計算結果が１でない場合には故障利用攻撃を受けたと判定する故障利用攻撃検知ステップと、
をコンピュータに実行させる楕円曲線演算プログラム。
【図面の簡単な説明】
【００９８】
【図１】本技術の実施の形態におけるシステム概要図である。
【図２】本技術の実施の形態の処理フローを示す図である。
【図３】本技術の攻撃有無判定処理に係る処理フローを示す図である。
【図４】本技術の関数ｆＳ導出処理に係る処理フローを示す図である。
【図５】本技術の攻撃有無判定処理に係る処理フローを示す図である。
【図６】本技術の第２攻撃有無判定処理に係る処理フローを示す図である。
【図７】本技術の変形ペアリング処理に係る処理フローを示す図である。
【図８】本技術の変形ペアリング処理に係る処理フローを示す図である。
【図９】本技術の第３攻撃有無判定処理に係る処理フローを示す図である。
【図１０】本技術の第４攻撃有無判定処理に係る処理フローを示す図である。
【図１１】本技術の第５攻撃有無判定処理に係る処理フローを示す図である。
【図１２】本技術の第２変形ペアリング処理に係る処理フローを示す図である。
【図１３】本技術の第２変形ペアリング処理に係る処理フローを示す図である。
【符号の説明】
【００９９】
１  ＩＣカード    ３  認証装置
１０１  記憶装置    １０３  公開情報記憶部
１０５  秘密鍵記憶部    １０７  故障利用攻撃検知部
１０９  復号化処理部    １１１制御部
１１３  通信部
３０１  記憶装置    ３０３  公開情報記憶部
３０５  乱数生成部    ３０７  認証処理部
３０９  暗号化処理部    ３１１  制御部
３１３  通信部
【図１】
2010148036.tif 000003
【図２】
2010148036.tif 000004
【図３】
2010148036.tif 000005
【図４】
2010148036.tif 000006
【図５】
2010148036.tif 000007
【図６】
2010148036.tif 000008
【図７】
2010148036.tif 000009
【図８】
2010148036.tif 000010
【図９】
2010148036.tif 000011
【図１０】
2010148036.tif 000012
【図１１】
2010148036.tif 000013
【図１２】
2010148036.tif 000014
【図１３】
2010148036.tif 000015