情報処理装置,情報処理方法及びそのプログラム
【課題】暗号処理回路の耐タンパ性の評価をより効率的に行う。
【解決手段】暗号処理回路である評価用回路における入力ビットAの状態を表す状態変数と評価用回路における消費電力Wとが対応付けられた消費電力データを複数取得する。そして、取得された複数の消費電力データに基づいて、消費電力Wを目的変数とし消費電力Wに対応づけられた状態変数を説明変数として重回帰分析を行い、分析により決定係数R2及び偏回帰係数a1〜a8を分析値として導出する(ステップS240)。そして、導出された分析値に基づいて、評価用回路の耐タンパ性を評価する(ステップS251〜S256)。これにより、電力差分解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。
【解決手段】暗号処理回路である評価用回路における入力ビットAの状態を表す状態変数と評価用回路における消費電力Wとが対応付けられた消費電力データを複数取得する。そして、取得された複数の消費電力データに基づいて、消費電力Wを目的変数とし消費電力Wに対応づけられた状態変数を説明変数として重回帰分析を行い、分析により決定係数R2及び偏回帰係数a1〜a8を分析値として導出する(ステップS240)。そして、導出された分析値に基づいて、評価用回路の耐タンパ性を評価する(ステップS251〜S256)。これにより、電力差分解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置,情報処理方法及びそのプログラムに関する。
【背景技術】
【0002】
従来、暗号処理回路の外部からの攻撃に対する耐性である耐タンパ性を評価する情報処理装置として、暗号処理回路に実際に外部からの攻撃を試み、攻撃が成功したか否かにより耐タンパ性を評価するものが知られている。そして、このような攻撃手法としては、暗号処理回路の消費電力とその回路中の秘密情報との関係を用いて消費電力から秘密情報を取得する電力差分解析が知られている。例えば、特許文献1には、論理回路の信号が変化した回数に基づいて消費電力を算出して、電力差分解析を行って耐タンパ性を評価することが記載されている。また、特許文献2には、耐タンパ対策回路の機能を有効にした場合と有効にしない場合とで電力差分解析の結果を比較して、耐タンパ対策回路の評価をすることが記載されている。
【0003】
ここで、電力差分解析とは、暗号回路の多数の消費電力データからその平均値を求め、これを2つにグループ分けしたときの両者の差分の大小に基づいて秘密情報を取得する攻撃手法である。電力差分解析は例えば次のように行う。まず、暗号処理回路の消費電力を測定して出力データと消費電力とを対応づけた消費電力データを多数取得する。続いて、取得したい秘密情報(例えば秘密鍵)を特定値に仮定し、その仮定の下で消費電力データの出力データに対する暗号処理回路の入力データを予測する。次に、選択関数としてこの入力データ中の特定ビットを設定し、この選択関数が値0か値1かによって、消費電力データを2つのグループに分け、グループ毎の消費電力の平均波形を求めて2つのグループの平均波形の差分を求める。このような平均波形の差分を秘密情報の取り得る全てのパターン(例えば8ビットの秘密鍵の場合には256パターン)について求める。こうすると、入力データが異なることによる消費電力のデータのばらつきが平均波形においてはキャンセルされる一方、仮定した秘密情報が正しい値であるときには、選択関数が値0であるか値1であるかによる暗号処理回路中の消費電力の差はキャンセルされないから、平均波形の差分が大きい値となる。これに対し、仮定した秘密情報が正しい値でないときには、2つのグループの平均波形の差分は小さい値となる。このような性質を利用して、平均波形の差分が最大となるときの秘密情報の仮定値が正解の値であると推定して、秘密情報を取得することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開2006−006198号公報
【特許文献2】特許第4594665号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、電力差分解析による暗号処理回路への攻撃を行って、攻撃が成功したか否かにより耐タンパ性を評価する手法では、評価に手間や時間がかかるという問題があった。例えば、電力差分解析で1回の攻撃を行うためには、秘密情報の取り得るパターン全てについて平均波形の差分を導出してこれらを比較する処理が必要になるため手間や時間がかかっていた。さらに、選択関数をどのビットに設定するかによっても攻撃が成功するか否かが変わるため、このような手間や時間のかかる電力差分解析による攻撃を、選択関数を変更して複数回試す必要があった。このため、より効率的に耐タンパ性の評価を行うことが望まれていた。
【0006】
本発明は、上述した課題に鑑みなされたものであり、暗号処理回路の耐タンパ性の評価をより効率的に行うことを主目的とする。
【課題を解決するための手段】
【0007】
本発明の情報処理装置は、
暗号処理回路の耐タンパ性を評価する情報処理装置であって、
前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得する消費電力データ取得手段と、
前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する分析手段と、
前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価する評価手段と、
を備えたものである。
【0008】
この本発明の情報処理装置では、暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得し、取得された複数の消費電力データに基づいて、消費電力を目的変数とし消費電力に対応づけられた状態変数を説明変数として回帰分析を行い、分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する。そして、導出された分析値に基づいて、暗号処理回路の耐タンパ性を評価する。こうして導出した分析値は状態変数と消費電力との相関を表すものであり、換言すると消費電力から状態変数の値が推測されやすいか否かを表すものとなる。この分析値に基づいて耐タンパ性を評価することで、電力差分解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。ここで、回帰分析とは、重回帰分析と単回帰分析とのいずれか又は両方を意味する。決定係数とは、自由度調整済決定係数と自由度調整済みでない決定係数とのいずれか又は両方を意味する。回帰係数とは、単回帰分析における回帰係数と、重回帰分析における偏回帰係数のいずれか又は両方を意味する。また、入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数は、例えば入力ビット及び出力ビットの少なくともいずれかの値としてもよいし、値の遷移の有無としてもよい。また、状態変数は、入力ビット又は出力ビットのうちいずれかの1ビットの値又は値の遷移の有無を表す変数としてもよい。
【0009】
本発明の情報処理装置において、前記消費電力データ取得手段は、複数の異なる前記状態変数と該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、前記分析手段は、前記取得された消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた複数の前記状態変数をそれぞれ説明変数として重回帰分析を行い、該分析により決定係数及び偏回帰係数の少なくともいずれかを前記分析値として導出する手段としてもよい。こうすれば、複数の状態変数と消費電力との相関を重回帰分析によりまとめて分析することができるため、複数回の単回帰分析を行う場合に比べて効率的に耐タンパ性を評価できる。
【0010】
本発明の情報処理装置において、前記分析手段は、前記偏回帰係数を前記分析値として導出する手段であり、前記評価手段は、前記導出された偏回帰係数に基づいて、前記暗号処理回路における前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段としてもよい。こうすれば、具体的に耐タンパ性の低い状態変数を判定することができる。この場合において、前記導出された偏回帰係数のうち、所定の偏回帰係数許容領域に含まれない偏回帰係数があるときには、該偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段としてもよい。こうすれば、各状態変数の耐タンパ性を簡易な方法で評価することができる。ここで、所定の偏回帰係数許容領域とは、耐タンパ性が高いとみなせる偏回帰係数の領域であり、例えば実験により経験的に定めた領域としてもよい。また、前記評価手段は、前記偏回帰係数に基づいて耐タンパ性が低いと判定した状態変数があるときには、該状態変数を選択関数として前記暗号処理回路の電力差分解析を行い、該電力差分解析が成功したか否かにより該暗号処理回路の耐タンパ性を評価する手段としてもよい。こうすれば、耐タンパ性が低いと判定された状態変数について、電力差分解析を行って耐タンパ性を評価するため、より確実に耐タンパ性の評価を行うことができる。
【0011】
本発明の情報処理装置において、前記分析手段は、前記決定係数を前記分析値として導出する手段であり、前記評価手段は、前記導出された決定係数が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定する手段としてもよい。こうすれば、決定係数は状態変数と消費電力との全体的な相関を表すものであるため、この決定係数に基づいて耐タンパ性を評価することができる。ここで、所定の決定係数許容領域とは、状態変数と消費電力との全体的な相関が低く耐タンパ性が高いとみなせる決定係数の領域であり、例えば実験により経験的に定めた領域としてもよい。この場合において、前記分析手段は、前記決定係数及び前記偏回帰係数を前記分析値として導出する手段であり、前記評価手段は、前記導出された決定係数が前記決定係数許容領域と異なる所定の決定係数非許容領域に含まれるときには、耐タンパ性が低いと判定し、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数に基づいて前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段としてもよい。こうすれば、決定係数による判定で耐タンパ性が高いわけではないが、耐タンパ性が低いわけでもない場合に、具体的に耐タンパ性の低い状態変数を判定することができる。このため、常に耐タンパ性の低い状態変数を判定するものと比べて効率よく耐タンパ性の評価を行うことができる。ここで、所定の決定係数非許容領域とは、状態変数と消費電力との全体的な相関が高く耐タンパ性が低いとみなせる決定係数の領域であり、例えば実験により経験的に定めた領域としてもよい。また、導出された決定係数が決定係数許容領域及び決定係数非許容領域のいずれにも含まれないときとは、決定係数が決定係数許容領域と決定係数非許容領域との中間の領域に含まれるときを意味する。この場合において、前記評価手段は、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数が所定の偏回帰係数許容領域に含まれるか否かを判定して、該偏回帰係数許容領域に含まれない偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段としてもよい。こうすれば、各状態変数の耐タンパ性を簡易な方法で評価することができる。
【0012】
本発明の情報処理装置において、前記評価手段は、前記取得された複数の消費電力データの標準偏差に基づいて、耐タンパ性が高いか否かを判定し、耐タンパ性が低いときには、前記導出された分析値に基づいて前記暗号処理回路の耐タンパ性を評価する手段としてもよい。消費電力データの標準偏差が小さい、すなわち消費電力データのばらつきが小さい場合には、状態変数と消費電力データとの相関も小さいため、耐タンパ性が高いと考えられる。そのため、消費電力データの標準偏差に基づいて耐タンパ性が低いと判定したときに分析値に基づく耐タンパ性を評価することで、常に分析値に基づく耐タンパ性を評価する場合と比べて効率的に耐タンパ性の評価をすることができる。
【0013】
本発明の情報処理装置において、前記暗号処理回路は、乱数ビットの値により内部の回路動作をマスクする乱数マスク回路を有しており、前記消費電力データ取得手段は、前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数及び前記乱数ビットの状態を表す状態変数と、該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記乱数ビットの状態を表す状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを前記乱数ビットと前記消費電力との相関値として導出し、該相関値に基づいて前記乱数ビットと前記消費電力との相関が高いと判定したときには、前記取得した複数の消費電力データを乱数ビットの値に応じて複数のグループに分類する分類手段、を備え、前記分析手段は、同じ前記グループに属する消費電力データに基づいて、前記回帰分析を行って前記分析値を導出する手段としてもよい。こうすれば、乱数マスク回路の乱数ビットと消費電力との相関が高いときには、消費電力データをグループ分けしてから回帰分析を行うことで、乱数ビットの影響を除いた耐タンパ性評価ができる。これにより、例えば実際の暗号処理回路への攻撃として、消費電力データと乱数ビットとの間の相関からまず乱数ビットの値を読み取り、その後に乱数ビットの値が同じ値である消費電力データのみについて電力差分解析を行うといった攻撃手法に対する耐タンパ性を評価することができる。ここで、乱数マスク回路には、例えばRSL(Random Switch Logic)回路やMDPL(Masked Dual-rail Pre-charge Logic)回路が含まれる。
【0014】
本発明の情報処理方法は、
暗号処理回路の耐タンパ性を評価する情報処理方法であって、
(a)前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得するステップと、
(b)前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出するステップと、
(c)前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価するステップと、
を含むものである。
【0015】
この本発明の情報処理方法では、暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得し、取得された複数の消費電力データに基づいて、消費電力を目的変数とし消費電力に対応づけられた状態変数を説明変数として回帰分析を行い、分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する。そして、導出された分析値に基づいて、暗号処理回路の耐タンパ性を評価する。こうして導出した分析値は状態変数と消費電力との相関を表すものであり、換言すると消費電力から状態変数の値が推測されやすいか否かを表すものとなる。この分析値に基づいて耐タンパ性を評価することで、電力解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。なお、この情報処理方法において、上述した情報処理装置の種々の態様を採用してもよいし、上述した情報処理装置の各機能を実現するようなステップを追加してもよい。
【0016】
本発明のプログラムは、上述した情報処理方法の各ステップを1又は複数のコンピューターに実現させるためのものである。このプログラムをコンピューターに実行させれば、上述した本発明の情報処理方法が実現されるため、本発明の情報処理方法と同様の作用効果が得られる。本発明のプログラムは、コンピューターが読み取り可能な記録媒体(例えばハードディスク、ROM、FD、CD、DVDなど)に記録されていてもよいし、伝送媒体(インターネットやLANなどの通信網)を介してあるコンピューターから別のコンピューターに配信されてもよいし、その他どのような形で授受されてもよい。
【図面の簡単な説明】
【0017】
【図1】情報処理装置10の構成の概略を示す構成図。
【図2】耐タンパ性評価ルーチンの一例を示すフローチャート。
【図3】評価用回路40の構成の概略を示す構成図。
【図4】SubBytes変換回路44の出力値を定めた真理値表の説明図。
【図5】評価用回路40を表す評価用回路データの一例を示す説明図。
【図6】変換後の評価用回路データの一例を示す説明図。
【図7】入力データ生成部23が生成した入力データの一例を示す説明図。
【図8】シミュレーション結果の一例を示す説明図。
【図9】取得した消費電力データの説明図。
【図10】分析評価処理の一例を示すフローチャート。
【図11】導出した分析値の一例を示す説明図。
【図12】情報処理装置110の構成の概略を示す構成図。
【図13】評価用回路140の構成の概略を示す構成図。
【図14】取得した消費電力データの内容をテーブルとして示した説明図。
【図15】分析評価処理の一例を示すフローチャート。
【図16】導出した分析値及び相関値の一例を示す説明図。
【図17】評価実験1における、各タイムスロットに対する決定係数R2の値を示したグラフ。
【図18】評価実験1における、各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフ。
【図19】評価実験1における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図20】評価実験2における、各タイムスロットに対する決定係数R2の値を示したグラフ。
【図21】評価実験2における、各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフ。
【図22】評価実験2における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図23】評価実験3における、各タイムスロットに対する決定係数R2の値を示したグラフ。
【図24】評価実験3における、各タイムスロットに対する偏回帰係数a1〜a8,bの値を示すグラフ。
【図25】評価実験3における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図26】評価実験3における、入力ビットAのハミング重みと消費電力Wとの関係を示したグラフ。
【図27】評価実験3における、グループ分け後の各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフ。
【図28】評価実験3における、グループ分け後の消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図29】評価実験4における、実施例の情報処理装置による耐タンパ性の評価結果の一例を示すグラフ。
【図30】評価実験4における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図31】評価実験4における、入力ビットAのハミング重みと消費電力Wとの関係を示したグラフ。
【発明を実施するための形態】
【0018】
[第1実施形態]
図1は、第1実施形態である情報処理装置10の構成の概略を示す構成図である。図示するように、情報処理装置10は、制御部12と、記憶部14と、表示部16と、操作部18とを備えている。この情報処理装置10は、例えば汎用のコンピューターであり、暗号処理回路の耐タンパ性を評価する装置としての機能を有する。
【0019】
制御部12は、情報処理装置10全体の制御を司るものであり、CPU,ROM,RAMなどを備えたプロセッサーとして構成されている。制御部12は、記憶部14に記憶された耐タンパ性評価プログラムを実行したり、表示部16に表示データを出力して画面を表示するよう制御したり、操作部18からの操作信号を入力したりする。
【0020】
記憶部14は、例えばHDDなどの大容量記憶装置として構成され各種アプリケーションプログラムや各種データファイルを記憶するものである。この記憶部14は、耐タンパ性評価プログラム20と、回路データベース31とを備えている。
【0021】
耐タンパ性評価プログラム20は、評価用回路データ生成部21と、評価用回路データ変換部22と、入力データ生成部23と、回路シミュレーター24と、消費電力データ取得部25と、分析部26と、評価部27とを備えている。評価用回路データ生成部21は、記憶部14の回路データベース31に記憶されたデータを読み出して、耐タンパ性を評価する対象となる暗号処理回路のデータである評価用回路データを生成する機能を有する。評価用回路データ変換部22は、評価用回路データ生成部21が生成した評価用回路データを回路シミュレーター24が利用できるデータ形式に変換する機能を有する。入力データ生成部23は、回路シミュレーター24が行うシミュレーションにおいて評価用回路に入力される入力データを生成する機能を有する。回路シミュレーター24は、評価用回路データ変換部22に変換された評価用回路データと入力データ生成部23に生成された入力データとを取得して、評価用回路データで表される評価用回路に入力データを入力したときの回路動作をシミュレーションして、出力データや消費電流波形を生成する機能を有する。本実施形態では、回路シミュレーター24は電子回路のアナログ動作をシミュレーションするソフトウェアであるSPICE (Simulation Program with Integrated Circuit Emphasis)とした。消費電力データ取得部25は、回路シミュレーター24でのシミュレーションの結果から、評価用回路データで表される暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得する機能を有する。分析部26は、消費電力データ取得部25に取得された複数の消費電力データに基づいて、消費電力を目的変数とし消費電力に対応づけられた状態変数を説明変数として回帰分析を行い、分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する機能を有する。評価部27は、分析部26に導出された分析値に基づいて、暗号処理回路の耐タンパ性を評価する機能を有する。なお、制御部12が耐タンパ性評価プログラム20を実行することにより、評価用回路データ生成部21、評価用回路データ変換部22、入力データ生成部23、回路シミュレーター24、消費電力データ取得部25、分析部26、評価部27の上述した機能が実現される。
【0022】
回路データベース31には、耐タンパ性を評価する対象となる暗号処理回路及びその暗号処理回路を含むデバイス全体の回路データや、デバイスのセルライブラリ等の設計データを含むデータが記憶されている。
【0023】
表示部16は、例えば液晶ディスプレイとして構成されており、制御部12から出力された表示データに基づく画像を表示して各種情報をユーザーに表示する機能を有している。操作部18は、例えばキーボードやマウス等の入力装置として構成されており、ユーザーから入力された操作に基づく操作信号を制御部12に出力する機能を有している。
【0024】
次に、こうして構成された情報処理装置10の動作、特に、暗号処理回路の耐タンパ性を評価する際の動作について説明する。図2は、耐タンパ性評価ルーチンの一例を示すフローチャートである。このルーチンは、ユーザーが操作部18を操作して耐タンパ性を評価する対象となる評価用回路を指定し、耐タンパ性の評価を行うよう指示したときに制御部12が耐タンパ性評価プログラム20を実行することにより行われる。
【0025】
この耐タンパ性評価ルーチンが実行されると、評価用回路データ生成部21は、まず、評価用回路データとして、ユーザーに指定された評価用回路の回路データを回路データベース31に記憶されたデータに基づいて生成する(ステップS100)。図3は、評価用回路40の構成の概略を示す構成図である。本実施形態では、この図に示した評価用回路40の耐タンパ性の評価を行うようユーザーから指定がなされたものとして、以下の説明を行う。評価用回路40は、暗号方式の1つであるAES(Advanced Encryption Standard)の回路の部分的なモジュールとして構成された暗号処理回路であり、レジスター42と、SubBytes変換回路44と、排他的論理和回路46とを備えている。レジスター42は、入力された8ビットの入力ビットAを保持するものである。SubBytes変換回路44は、レジスター42の出力部に接続され、入力ビットAに対してAESにおける非線形変換であるSubBytes処理を行うものであり、入力ビットAに対応して真理値表により定められた出力値を出力するように構成された論理回路である。図4は、SubBytes変換回路44の出力値を定めた真理値表の説明図である。この図に示すように、入力ビットAの上位4ビットの値が縦軸、下位4ビットの値が横軸であり、両者の交点に位置する値が出力値(8ビット)となる。例えば、入力Aの上位4ビットが値0(二進数表記で0000)、入力Aの下位4ビットが値8(二進数表記で1000)のときには、SubBytes変換回路44は値30を出力する。排他的論理和回路46は、AESにおける暗号化のための秘密鍵を組み込む処理であるAddRoundKey処理を行う回路であり、SubBytes変換回路44の出力値と排他的論理和回路46に入力された秘密鍵K(8ビット)との排他的論理和を演算して、その結果を出力ビットB(8ビット)として出力する。なお、図3は評価用回路40の概略を示したものであり、実際の評価用回路データは、所定のハードウェア記述言語(例えばVerilog-HDL)で評価用回路40を表したデータである。図5は、評価用回路40を表す評価用回路データの一例を示す説明図である。図5における、「module SingleSbAttack(x,k,clk,y);」から「endmodule」までが評価用回路40の最上位階層の記述である。その中の「always@(posedge clk)begin」から「end」までがレジスター42を表す記述、「SubBytesTBL sb1(.x(dreg),.y(addkey_in));」がSubBytes変換回路44を表す記述、「assign y = addkey_in^k;」が排他的論理和回路46を表す記述である。また、「module SubBytesTBL(x,y);」以降はSubBytes変換回路44の構成の詳細を表す記述である。
【0026】
次に、評価用回路データ変換部22は、評価用回路データを回路シミュレーター24が利用できるようSPICEのデータ形式に変換する(ステップS110)。図6は、変換後の評価用回路データの一例を示す説明図である。図6において、「.subckt」以降は評価用回路40におけるSPICEのサブサーキットの記述である。また、「XU1229」以降は回路データ記憶部31に記憶されたセルライブラリにおけるゲートの接続仕様を表す記述である。続いて、入力データ生成部23は、評価用回路40に入力する入力データを生成する(ステップS120)。入力データは、例えば評価用回路データに供給される入力ビットAの値、クロック信号の値、秘密鍵Kの値、及び評価用回路40の図示しない制御ピンへの入力値などのデータである。本実施形態では、入力ビットAの値は所定期間T1(本実施形態では50nsecとした)が経過する毎にランダムに変化させるものとした。また、秘密鍵Kの値は、ランダムに定めた値とした。図7は、入力データ生成部23が生成した入力データの一例を示す説明図である。図7において、8桁の数値は時刻を表している。また、各時刻に対応する9桁の数値のうち左側の8桁は入力ビットAの値を表し、一番右の1桁はクロック信号の値を表している。例えば、時刻「00000025」は時刻25nsecを意味し、それに対応する値「011001001」は、時刻25nsecにおける入力ビットAが二進数表記で値「01100100」であり、クロック信号が値1であることを意味している。また、本実施形態では所定期間T1が値50nsecに設定されているため、図7では50nsec毎に入力ビットAの値が変化している。なお、所定期間T1は、例えば評価用回路40が実際にデバイスで用いられる際の入力データの処理間隔に基づいて定める。
【0027】
次に、回路シミュレーター24は、ステップS110で評価用回路データ変換部22に変換された評価用回路データとステップS120で入力データ生成部23に生成された入力データとを取得して、評価用回路40に入力データを入力したときの回路動作のシミュレーションを行う(ステップS130)。これにより、回路シミュレーター24は、入力ビットAに対して出力される出力ビットBの値や、評価用回路40の動作内容に基づいて演算した消費電流波形を生成する。
【0028】
続いて、消費電力データ取得部25は、回路シミュレーター24のシミュレーションの結果から、評価用回路40における入力ビットAの各ビットが値0であるか値1であるかを表す状態変数と評価用回路40における消費電力Wとが対応づけられた消費電力データを、複数の入力ビットAの値に応じて複数取得する(ステップS140)。図8は、シミュレーション結果の一例を示す説明図である。図8において、「25000」以降はシミュレーションの結果として導出された評価用回路40の消費電流波形のデータである。消費電流波形のデータは、0.01nsec毎の時刻及び消費電流値のデータとして表されている。例えば時刻「25010」は、時刻が25.010nsecであることを意味し、消費電流値「12968315」は、時刻25.010nsecにおける消費電流値が12968315×10-10Aであることを意味する。また、図9は、取得した消費電力データの説明図である。図9(a)は、取得した消費電力データの内容をテーブルとして表した説明図であり、図9(b)は、タイムスロットと消費電力Wとの関係を表す説明図である。図9(a)に示すように、消費電力データは入力ビットAと、出力ビットBと、消費電力Wとが対応づけられたデータであり、本実施形態では入力データ生成部23に生成された入力データに基づいて入力ビットAの値を所定期間T1毎に変化させたときの、パターン番号0〜m(本実施形態ではパターン番号mは値1999)までのm+1個(本実施形態では2000個)の消費電力データを取得するものとした。なお、図9(a)における「h」は16進数表記であることを意味する。例えばパターン番号0における入力ビットAの値は「64h」であり、ビット列で表すと「01100100」を意味する。この値は、図7に示した時刻「00000000」,「00000025」における入力ビットAの値に対応している。同様に、パターン番号1における入力ビットAの値は、図7に示した時刻「00000050」,「00000075」における入力ビットAの値に対応している。また図9(a)に示すように、1つの消費電力データについて、消費電力Wの値はタイムスロット番号0〜7までの8つのタイムスロット毎に存在する。図9(b)に示すように、入力ビットAの値を入力してから最初のタイムスロットまでの期間を所定期間T2、最初のタイムスロットの開始時刻を時刻t0、1つのタイムスロットの時間幅を所定期間T3(本実施形態では0.2nsecとした)とすると、タイムスロットは時刻t0から所定期間T3毎に時間を区切った期間である。例えばパターン番号0の消費電力データにおけるタイムスロット番号sとは、パターン番号0の入力ビットAの値64hが評価用回路40に入力された時刻から所定期間T2が経過した時刻を時刻t0として、時刻(t0+T3×(s−1))から時刻(t0+T3×s)までの期間を意味する。消費電力Wは、回路シミュレーター24に導出された消費電流波形に基づいてこのタイムスロット毎の消費電力の平均値として導出された値である。ここで、図8に示したように回路シミュレーター24は消費電流を導出するものであるが、評価用回路40の制御電圧は一定であり、消費電流から消費電力及びその平均値としての消費電力Wを容易に算出することができる。所定期間T2,T3は、例えば次のように経験的に設定する。まず、評価用回路40の回路の入力から出力までに要する処理時間や内部の処理内容を考慮して、評価用回路40を電力差分解析により攻撃するときに攻撃対象となりやすい期間を予め調べておく。すなわち、消費電力から秘密情報が取得しやすいと想定される期間を予め調べておく。そして、その期間がタイムスロットに含まれるように、所定期間T2やT3を設定する。なお、入力ビットAの値が入力されてから次の入力ビットAが入力されるまでの期間、すなわち所定期間T1が経過するまでの期間を均等に分割して、複数個のタイムスロットを設定してもよい。
【0029】
続いて、分析部26及び評価部27は、ステップS140で取得された消費電力データに基づいて、評価用回路40の耐タンパ性の分析評価処理を実行する(ステップS150)。ここで、耐タンパ性評価ルーチンの説明を中断して、分析評価処理について説明する。図10は、分析評価処理の一例を示すフローチャートである。
【0030】
この分析評価処理が開始されると、評価部27は、まず、処理対象のタイムスロット番号nを値1に初期化する(ステップS200)。続いて、評価部27は、パターン番号0〜1999までの消費電力データのうちタイムスロット番号nに対応する2000個の消費電力Wの平均値μ及び標準偏差σを導出する(ステップS210)。そして、導出した標準偏差σが閾値σth未満であるか否かを判定する(ステップS220)。ここで、閾値σthは、消費電力のばらつきが少ないため状態変数と消費電力との全体的な相関が低く耐タンパ性が高いとみなせる標準偏差許容領域の上限値として設定された値であり、例えば実験により経験的に定めた値である。標準偏差σが小さく2000個の消費電力Wの値にばらつきが少ないということは、状態変数である入力値Aの値と消費電力Wとの相関が低いということであるから、この閾値σthと標準偏差σとを比較することで、耐タンパ性が高いか否かの判定をするのである。
【0031】
ステップS220で標準偏差σが閾値σth以上であったときには、分析部26は、耐タンパ性が相対的に低いものとみなし、パターン番号0〜1999までの消費電力データのうちタイムスロット番号nに対応する2000個の消費電力Wの値の標準化を行う(ステップS230)。本実施形態では、2000個の消費電力Wのうちパターン番号iに対応するものを消費電力Wiとすると、標準化後の消費電力wiをwi=(Wi−μ)/σとして導出するものとした。このように導出された2000個の消費電力wは、平均値が値0、標準偏差が値1の分布となる。このように標準化してから以降の分析及び評価を行うことで、例えば消費電力の絶対値が異なる他の暗号処理回路についての耐タンパ性の評価を行った場合との評価結果の比較がしやすくなる。
【0032】
続いて、分析部26は、状態変数すなわち入力ビットAの各ビットを説明変数とし、タイムスロット番号nに対応する2000個の消費電力wを目的変数として、重回帰分析を行い、分析値として偏回帰係数a1〜aj(本実施形態では変数jは値8)及び決定係数R2を導出する(ステップS240)。この処理は、例えば以下のように行う。まず、入力ビットAの1ビット目〜jビット目までの値をそれぞれ状態変数x1〜xjとして、消費電力wとx1〜xjとの関係を以下の式(1)のように仮定する。このときの係数a0〜ajを偏回帰係数と称する。このように式(1)を仮定すると、パターン番号iに対応する状態変数xi1〜xijをこの式(1)に代入して導出される消費電力wiと実際の消費電力データにおける消費電力wiとの差の二乗をパターン番号0〜mの全てについて合計した値である差の二乗和Eは以下の式(2)で表すことができる。そして、この差の二乗和Eが最小となるような偏回帰係数a0〜anを導出する。換言すると、式(1)が最も精度良く消費電力wとx1〜xjとの関係を近似する式となるような偏回帰係数a0〜ajを導出する。このようにして偏回帰係数a0〜ajを求めることで、式(1)が状態変数x1〜xjと消費電力wとの関係の近似式(重回帰式)となる。なお、偏回帰係数a0〜ajの導出は、例えば式(2)をa0について偏微分したものを値0とおいた式を導出し、偏回帰係数a1〜ajについても同様の式を導出して、これらの式で表される連立方程式を解くことで行うことができる。偏回帰係数a1〜ajを導出すると、これを用いて決定係数R2を導出する。具体的には、まず、実際の消費電力データにおける消費電力wiとその平均値との差の二乗を導出し、これをパターン番号0〜mの全てについて導出して合計した和である実測値の平方和Stを求める。また、実際の消費電力データにおける消費電力wiと、導出した偏回帰係数a0〜a8及び実際のxi1〜xijを式(1)に代入して導出される予測値としての消費電力wiとの差の二乗を導出し、これをパターン番号0〜mの全てについて導出して合計した和である差の平方和Seを求める。そして、以下の式(3)により決定係数R2を導出する。なお、式(3)において、定数Nは標本数であり、本実施形態では消費電力データの総数である値2000である。また、定数pは説明変数の数であり、本実施形態では値8である。この決定係数R2は、自由度調整済決定係数とも呼ばれる。以上のようにして偏回帰係数a1〜aj及び決定係数R2を分析値として導出する。図11は、導出した分析値の一例を示す説明図である。図11では、タイムスロット番号nが値0であるときの分析値を示しており、タイムスロット番号nに対応して、決定係数R2及び偏回帰係数a1〜a8が導出されている。ここで、偏回帰係数a1〜ajは、各状態変数とタイムスロット番号nに対応する消費電力wとの相関の高さを表す数値である。偏回帰係数a1〜ajは値−1〜1までの値をとり、絶対値が大きいほど偏回帰係数に対応する状態変数と消費電力wとの正又は負の相関が高いことを意味する。例えば、偏回帰係数a1の値は入力ビットAの1ビット目の値と消費電力wとの相関を表す。より具体的には、偏回帰係数a1の絶対値が大きいほど、入力ビットAの1ビット目が値0である場合と値1である場合とで消費電力wの値が大きく変化する傾向にあることを意味する。例えば図11では、偏回帰係数a1と比べて偏回帰係数a2,a3,a4の絶対値が大きいため、入力ビットAの1ビット目と比べて2〜4ビット目の方が消費電力wとの相関が高いことがわかる。また、決定係数R2は、式(1)の近似の確からしさを表す数値である。決定係数R2は、値0〜1の値をとり、値が1に近いほど近似の精度が高く、状態変数である入力ビットAと消費電力wとの全体的な相関が高いことを意味する。なお、偏回帰係数a0は、決定係数R2の導出に必要な値ではあるが、本実施形態では以降の耐タンパ性の評価には用いないため、分析値には含めない。
【0033】
【数1】
【0034】
次に、評価部27は、分析部26が導出した分析値を取得し、評価用回路40の耐タンパ性を評価する評価処理(ステップS250)を行う。このステップS250の評価処理として、まず、分析値のうちの決定係数R2が閾値R2th1未満であるか否かを判定する(ステップS251)。ここで、閾値R2th1は、状態変数である入力ビットAと消費電力wとの全体的な相関が低く耐タンパ性が高いとみなせる決定係数R2の領域すなわち決定係数許容領域の上限値として設定された値であり、例えば実験により経験的に定めた値である。
【0035】
そして、ステップS220で標準偏差σが閾値σth未満であったとき、又はステップS251で決定係数R2が閾値R2th1未満であったときには、評価用回路40が全体的に耐タンパ性が高い旨の情報を処理対象のタイムスロット番号nに対応する評価結果として記憶する(ステップS252)。
【0036】
一方、ステップS251で決定係数R2が閾値R2th1以上であったときには、決定係数R2が閾値R2th2以上であるか否かを判定する(ステップS253)。ここで、閾値R2th2は、状態変数である入力ビットAと消費電力wとの全体的な相関が高く耐タンパ性が低いとみなせる決定係数R2の領域すなわち決定係数非許容領域の下限値として設定された値であり、例えば実験により経験的に定めた値である。本実施形態では、閾値R2th2は閾値R2th1よりも大きい値である。そして、ステップS253で決定係数R2が閾値R2th2以上であったときには、評価用回路40が全体的に耐タンパ性が低い旨の情報を処理対象のタイムスロット番号nに対応する評価結果として記憶する(ステップS254)。
【0037】
ステップS253で決定係数R2が閾値R2th2未満であったときには、偏回帰係数a1〜a8の値に基づいて耐タンパ性の低い状態変数x1〜xjを判定する(ステップS255)。ステップS251で決定係数R2が閾値R2th1以上であり、ステップS253で決定係数R2が閾値R2th2未満であったとき、すなわち決定係数R2が決定係数許容領域と決定係数非許容領域との中間の領域に含まれるときは、決定係数による判定で全体的に耐タンパ性が高いと判定されたわけではないが、全体的に耐タンパ性が低いと判定されたわけでもない場合である。そこで、部分的に耐タンパ性が低いと判定して、状態変数x1〜xjのうち、具体的に耐タンパ性の低い状態変数を特定するのである。このステップS255の処理は、本実施形態では、偏回帰係数a1〜a8の各値について、状態変数と消費電力wとの相関が低く耐タンパ性が高いとみなせる所定の偏回帰係数許容領域に含まれるか否かを判定し、含まれない偏回帰係数に対応する状態変数が耐タンパ性が低いと判定することで行う。例えば偏回帰係数a1及びa3が偏回帰係数許容領域に含まれないときには、入力ビットAのうち1ビット目の値と3ビット目の値が消費電力wとの相関が高く耐タンパ性が低いと判定する。ここで、このような偏回帰係数許容領域は、例えば実験により経験的に定めることができる。なお、例えば偏回帰係数a1〜a8の各値のうち絶対値の最も高いものを耐タンパ性の低い状態変数と判定するなど、相対的な判定を行ってもよい。ステップS255で耐タンパ性の低い状態変数を判定すると、部分的に耐タンパ性が低い旨の情報と耐タンパ性が低いと判定した状態変数とを処理対象のタイムスロット番号nに対応する評価結果として記憶する(ステップS256)。
【0038】
以上のステップS251〜S256の処理すなわちステップS250の評価処理を行って、ステップS252,S254,S256のいずれかの評価結果を記憶すると、評価部27は、タイムスロット番号nを値1インクリメントして(ステップS260)、タイムスロット番号nが上限値(本実施形態では値7)を超えたか否かを判定する(ステップS270)。そして、タイムスロット番号nが上限値を超えていないときには、ステップS210に進む。一方、タイムスロット番号nが上限値を超えたときには、分析評価処理を終了する。この分析評価処理を行うことで、各タイムスロットについて消費電力データを用いた評価用回路40の耐タンパ性の評価が行われる。
【0039】
図2の耐タンパ性評価ルーチンに戻る。ステップS150の分析評価処理を行うと、評価部27は、タイムスロット毎にステップS252,S254,S256のいずれかで記憶した評価結果を読み出して、表示部16に評価結果出力画面を表示させて(ステップS160)、本ルーチンを終了する。評価結果出力画面では、例えばタイムスロット毎に耐タンパ性が「全体的に高い」「部分的に低い」「全体的に低い」などの評価結果を表示したり、耐タンパ性が部分的に低いタイムスロットについては入力ビットAのうち具体的に耐タンパ性が低いと判定されたのが何ビット目であるかを表示する。また、耐タンパ性評価ルーチンで求めた標準偏差σや分析値の値をタイムスロットと対応付けてテーブルまたはグラフとして表示する。このように、耐タンパ性評価ルーチンでは、消費電力データに基づいて標準偏差σや偏回帰係数a1〜a8,決定係数R2を導出し、これらに基づいて評価用回路40の耐タンパ性を評価するのである。
【0040】
ここで、第1実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第1実施形態の情報処理装置10が本発明の情報処理装置に相当し、消費電力データ取得部25が消費電力データ取得手段に相当し、分析部26が分析手段に相当し、評価部27が評価手段に相当する。なお、本実施形態では、情報処理装置10の動作を説明することにより本発明の情報処理方法の一例も明らかにしている。
【0041】
以上詳述した第1実施形態の情報処理装置10によれば、暗号処理回路である評価用回路40における入力ビットAの状態を表す状態変数と評価用回路40における消費電力Wとが対応付けられた消費電力データを複数取得し、取得された複数の消費電力データに基づいて、消費電力Wを目的変数とし消費電力Wに対応づけられた状態変数x1〜xjを説明変数として重回帰分析を行い、分析により決定係数R2及び偏回帰係数a1〜a8を分析値として導出する。そして、導出された分析値に基づいて、評価用回路40の耐タンパ性を評価する。これにより、電力差分解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。
【0042】
また、入力ビットAの各ビットの値をそれぞれ状態変数としており、複数の異なる状態変数x1〜xjと消費電力Wとが対応付けられた消費電力データに基づいて重回帰分析を行うため、複数の状態変数と消費電力Wとの相関を重回帰分析によりまとめて分析することができ、複数回の単回帰分析を行う場合に比べて効率的に耐タンパ性を評価できる。
【0043】
さらに、決定係数R2が所定の決定係数許容領域に含まれるか否かに基づいて耐タンパ性が高いか否かを判定するため、状態変数と消費電力との全体的な相関を表す決定係数に基づいて耐タンパ性を評価することができる。また、決定係数R2が決定係数許容領域及び決定係数非許容領域のいずれにも含まれないときには、導出された偏回帰係数a1〜a8に基づいて複数の状態変数のうち耐タンパ性の低い状態変数を判定するため、決定係数による判定で耐タンパ性が高いわけではないが、耐タンパ性が低いわけでもない場合に、具体的に耐タンパ性の低い状態変数を判定することができる。また、導出された偏回帰係数a1〜a8が所定の偏回帰係数許容領域に含まれるか否かを判定して、偏回帰係数許容領域に含まれない偏回帰係数に対応する状態変数の耐タンパ性が低いと判定するため、各状態変数の耐タンパ性を簡易な方法で評価することができる。
【0044】
さらにまた、消費電力データの標準偏差σに基づいて耐タンパ性が低いと判定したときに分析値に基づく耐タンパ性を評価するため、常に分析値に基づく耐タンパ性を評価する場合と比べて効率的に耐タンパ性の評価をすることができる。
【0045】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【0046】
例えば、上述した第1実施形態におけるステップS210,S220の処理を省略して、標準偏差σの値によらず常に重回帰分析を行うものとしてもよい。また、ステップS253,S255,S256の処理を省略し、ステップS251で決定係数R2が閾値R2th1未満でないときにはステップS254に進み、決定係数R2が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定するものとしてもよい。この場合、ステップS240で導出した偏回帰係数a1〜a8は分析値とせず、決定係数R2のみを分析値としてもよい。また、ステップS253,S254の処理を省略し、ステップS251で決定係数R2が閾値R2th1未満でないときにはステップS255に進み、決定係数R2が所定の決定係数許容領域に含まれないときには常に耐タンパ性の低い状態変数を判定するものとしてもよい。また、ステップS251,S253,S254の処理を省略して、ステップS240の重回帰分析を行ったときにはステップS255に進み、常に耐タンパ性の低い状態変数を判定するものとしてもよい。この場合、ステップS240では決定係数を導出しないものとしてもよい。また、ステップS252の後やステップS254の後にもステップS255,S256の処理を行なうものとして、決定係数R2を用いた耐タンパ性の評価と偏回帰係数a1〜a8を用いた耐タンパ性の評価とを常に行なってもよい。
【0047】
[第2実施形態]
図12は、第2実施形態である情報処理装置110の構成の概略を示す構成図である。なお、第2実施形態の情報処理装置110のうち、情報処理装置10と同様の構成要素については、情報処理装置10の構成要素と同じ符号を付してその説明を省略する。
【0048】
情報処理装置110は、制御部12と、記憶部114と、表示部16と、操作部18とを備えている。この情報処理装置110は、制御部12が耐タンパ性評価プログラム120を実行して耐タンパ性を評価する対象である評価用回路140が、乱数ビットCの値により内部の回路動作をマスクする乱数マスク回路の一種であるRSL(Random Switch Logic) 回路を有した暗号処理回路である点が情報処理装置10と異なる。
【0049】
記憶部114は、例えばHDDなどの大容量記憶装置として構成され各種アプリケーションプログラムや各種データファイルを記憶するものであり、耐タンパ性評価プログラム120と、回路データベース31とを備えている。
【0050】
耐タンパ性評価プログラム120は、評価用回路データ生成部21と、評価用回路データ変換部22と、入力データ生成部123と、回路シミュレーター24と、消費電力データ取得部125と、分析部26と、評価部27と、分類部128とを備えている。入力データ生成部123は、生成する入力データにRSL回路の乱数ビットCの値が含まれる点以外は、図1の入力データ生成部23と同様の機能を有する。消費電力データ取得部125は、評価用回路140における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数及び乱数ビットCの状態を表す状態変数と、評価用回路140における消費電力Wとが対応付けられた消費電力データを取得する機能を有する。分類部128は、消費電力データ取得部125に取得された複数の消費電力データに基づいて、消費電力Wを目的変数とし消費電力Wに対応づけられた乱数ビットCの状態を表す状態変数を説明変数として回帰分析を行い、その分析により決定係数及び回帰係数の少なくともいずれかを乱数ビットCと前記消費電力データとの相関値として導出し、導出した相関値に基づいて乱数ビットCと消費電力Wとの相関が高いと判定したときには、取得した複数の消費電力データを乱数ビットCの値に応じて複数のグループに分類する機能を有する。なお、制御部12が耐タンパ性評価プログラム120を実行することにより、評価用回路データ生成部21、評価用回路データ変換部22、入力データ生成部123、回路シミュレーター24、消費電力データ取得部125、分析部26、評価部27、分類部128の機能が実現される。
【0051】
次に、こうして構成された情報処理装置110の動作、特に、暗号処理回路の耐タンパ性を評価する際の動作について説明する。ユーザーが操作部18を操作して耐タンパ性を評価する対象となる評価用回路を指定し、耐タンパ性の評価を行うよう指示すると、制御部12は、耐タンパ性評価ルーチンを実行する。この耐タンパ性評価ルーチンは、図2の耐タンパ性評価ルーチンと同様の処理ステップを有するため、図2と同じステップ番号を用いて説明し、図示を省略する。
【0052】
この耐タンパ性評価ルーチンが実行されると、まず、評価用回路データ生成部21,評価用回路データ変換部22がステップS100〜S110の処理を行う。この処理は、ユーザーに指定された評価用回路140の構成が異なる点以外は、図2と同様に行う。図13は、評価用回路140の構成の概略を示す構成図である。図13(a)は、評価用回路140の全体構成を示す構成図であり、図13(b)は、評価用回路140のうちのSubBytes変換回路144内のRSL回路148の構成を示す構成図である。図13(a)に示すように、評価用回路140は、レジスター142と、SubBytes変換回路144と、排他的論理和回路46とを備えている。この評価用回路140は、評価用回路40と同様に暗号方式の1つであるAESの回路の部分的なモジュールとして構成された暗号処理回路であり、レジスター142と、SubBytes変換回路144と、排他的論理和回路146とを備えている。レジスター42は、入力された8ビットの入力ビットAと、1ビットの乱数ビットCと、1ビットの出力イネーブルenとを保持するものである。SubBytes変換回路144は、レジスター42の出力部に接続されて入力ビットAと乱数ビットCと出力イネーブルenとがレジスター42から入力され、入力ビットAに対してAESにおける非線形変換であるSubBytes処理を行うものである。このSubBytes変換回路144は、図13(b)に示すRSL回路148を有している。図示するように、RSL回路148は、各1ビットの入力値が2つと、乱数ビットCと、出力イネーブルenとが入力される。このRSL回路148は、乱数ビットCの値により内部の動作モードが切り替わり、異なる論理回路として動作する。具体的には、出力イネーブルenが値1且つ乱数ビットCが値0であるときには、RSL回路148はNANDゲートとして動作して、2つの入力値に基づく1ビットの出力値を出力する。また、出力イネーブルenが値1且つ乱数ビットCが値1であるときには、RSL回路148はNORゲートとして動作して、2つの入力値に基づく1ビットの出力値を出力する。出力イネーブルenが値0のときにはRSL回路148の出力値は値0に固定される。SubBytes変換回路144は、このRSL回路148を複数組み合わせた回路として構成されており、入力ビットAと出力ビットBとの対応関係は図3のSubBytes変換回路44と同じであるものの、乱数ビットCが値0であるか値1であるかによって内部の回路構成が変化し、消費電力も変化する。このように、SubBytes変換回路144はRSL回路148を備えることで、乱数ビットCの値によって消費電力を変化させて入力ビットAと消費電力との相関が低くなる、すなわち内部の回路動作がマスクされるよう構成され、図3のSubBytes変換回路144の回路よりも耐タンパ性の高い回路となっている。
【0053】
続いて、入力データ生成部123は、ステップS120の処理を行って評価用回路140への入力データを生成し、回路シミュレーター24がステップS130の処理を行って評価用回路140に入力データを入力したときの回路動作のシミュレーションを行う。そして、消費電力データ取得部125は、ステップS140の処理を行って、消費電力データを取得する。本実施形態では、消費電力データ取得部125は、回路シミュレーター24のシミュレーションの結果から、評価用回路140における入力ビットAの各ビットの値及び乱数ビットCの値を表す状態変数と評価用回路140における消費電力Wとが対応づけられた消費電力データを、入力ビットA及び乱数ビットCの値に応じて複数取得する。図14は、取得した消費電力データの内容をテーブルとして示した説明図である。この図に示すように、消費電力データ取得部125が取得する消費電力データは、図9(a)に示した消費電力データに各パターン番号に対応する乱数ビットCの値が加わったものとなっている。
【0054】
次に、分析部26及び評価部27は、ステップS140で取得された消費電力データに基づいて、評価用回路140の耐タンパ性の分析評価処理を実行するステップS150の処理を行う。図15は、本実施形態における分析評価処理の一例を示すフローチャートである。なお、図15では、図10の分析評価処理と異なる部分についてのみ図示しており、図10と同じ処理については同じステップ番号を用いて説明する。この分析評価処理が実行されると、まず、ステップS200〜S230の処理が行われる。そして、ステップS230の処理を行うと、分析部26は、状態変数すなわち入力ビットAの各ビット及び乱数ビットCを説明変数とし、タイムスロット番号nに対応する2000個の消費電力wを目的変数として、重回帰分析を行い、分析値として偏回帰係数a1〜aj(本実施形態では変数jは値8)及び決定係数R2を導出すると共に、相関値として偏回帰係数bを導出する(ステップS240a)。この処理は、ステップS240における状態変数x1〜x8に加えて乱数ビットCの値を表す状態変数x9が加わり、偏回帰係数a0〜a8に加えて偏回帰係数bが加わった点以外は、ステップS240と同様にして行うことができる。すなわち、上述した式(1)において変数jを値9とした場合の式(2)の差の二乗和Eが最小となるような偏回帰係数a0〜a9を導出し、その後決定係数R2を導出して、偏回帰係数a1〜a8及び決定係数R2を分析値とし、偏回帰係数a9(=偏回帰係数b)を相関値とするのである。図16は、導出した分析値及び相関値の一例を示す説明図である。図16では、タイムスロット番号nが値0であるときの分析値及び相関値を示しており、タイムスロット番号nに対応して、決定係数R2及び偏回帰係数a1〜a8,bが導出されている。この図16の例では、偏回帰係数a1〜a8と比べて偏回帰係数bの絶対値が大きくなっており、入力ビットAの値と比べて乱数ビットCの方が消費電力wとの相関が高いことがわかる。
【0055】
続いて、分析部26及び評価部27は、ステップS250の処理すなわちちステップS251〜S256の処理を行って、評価用回路140の耐タンパ性の評価を行う。そして、ステップS250の処理を行うと、分類部128は、ステップS240aで導出した相関値である偏回帰係数bが閾値bth未満であるか否かを判定する(ステップS300)。ここで、閾値bthは、状態変数である乱数ビットCと消費電力wとの相関が低く耐タンパ性が高いとみなせる偏回帰係数bの領域すなわち偏回帰係数許容領域の下限値として設定された値であり、例えば実験により経験的に定めた値である。なお、本実施形態では、この偏回帰係数許容領域は、ステップS255において耐タンパ性が低い状態変数を判定するときの偏回帰係数許容領域と同じものとしたが、両者を異なる領域としてもよい。
【0056】
そして、ステップS300で偏回帰係数bが閾値bth未満であるときには、分類部128は、乱数ビットCについての耐タンパ性が低い旨をタイムスロット番号nに対応する評価結果として記憶して(ステップS310)、ステップS260に進む。一方、ステップS300で偏回帰係数bが閾値bth未以上であるときには、乱数ビットCの値に応じて消費電力データを複数のグループに分類する(ステップS320)。本実施形態では、乱数ビットCは1ビットであるため、乱数ビットCが値0であるか値1であるかに応じて消費電力データを2つのグループに分類する。例えば、図14に示した消費電力データを分類するときには、乱数ビットCが値0であるパターン番号0,2の消費電力データと、乱数ビットCが値1であるパターン番号1,3,4の消費電力データとは別のグループに分類する。
【0057】
続いて、分析部26及び評価部27は、分類したグループのうちいずれか1つを処理対象グループに設定し(ステップS330)、処理対象グループの消費電力データについて、図10のステップS210以降の処理を行う。このステップS210以降の処理は、ステップS252,S254,S256の代わりにステップS252a,S254a,S256aの処理を行う点以外は、ステップS210〜S250と同様にして行う。すなわち、まずステップS210,S220の処理を行い、ステップS220で標準偏差σが閾値σth以上のときには、ステップS230〜S251の処理を行う。そして、ステップS220で標準偏差σが閾値σth未満のとき、又はステップS251で決定係数R2が閾値R2th1未満であったときには、処理対象グループについて評価用回路140が全体的に耐タンパ性が高い旨を処理対象グループ及びタイムスロット番号nに対応する評価結果として記憶する(ステップS252a)。また、ステップS251で決定係数R2が閾値R2th1以上であったときには、ステップS253の処理を行い、ステップS253で決定係数R2が閾値R2th2以上であったときには、評価用回路140が全体的に耐タンパ性が低い旨を処理対象グループ及びタイムスロット番号nに対応する評価結果として記憶する(ステップS254a)。そして、ステップS253で決定係数R2が閾値R2th2未満であったときには、ステップS255の処理を行って耐タンパ性が低い状態変数を判定し、部分的に耐タンパ性が低い旨と耐タンパ性が低いと判定した状態変数とを処理対象グループ及びタイムスロット番号nに対応する評価結果として記憶する(ステップS256a)。そして、ステップS252a,S254a,S256aいずれかの評価結果を記憶すると、未処理のグループがあるか否かを判定し(ステップS340)、未処理のグループがあるときにはステップS330に進む。一方、未処理のグループがないといには、ステップS260へ進む。
【0058】
このように、図15の分析評価処理では、図10の分析評価処理に加えて、乱数ビットCが消費電力と相関が高いか否かの判定を行っている。そして、乱数ビットCと消費電力Wとの相関が高いときには、消費電力データをグループ分けしてから重回帰分析を行って、乱数ビットの影響を除いた耐タンパ性の評価を行うのである。
【0059】
ここで、第2実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第2実施形態の情報処理装置110が本発明の情報処理装置に相当し、消費電力データ取得部125が消費電力データ取得手段に相当し、分析部26が分析手段に相当し、評価部27が評価手段に相当し、分析部26,評価部27,分類部128が分類手段に相当する。
【0060】
以上詳述した第2実施形態の情報処理装置10によれば、RSL回路148の乱数ビットCと消費電力Wとの相関が高いときには、消費電力データをグループ分けしてから重回帰分析を行うことで、乱数ビットの影響を除いた耐タンパ性評価ができる。これにより、例えば実際の暗号処理回路への攻撃として、消費電力データと乱数ビットとの間の相関からまず乱数ビットの値を読み取り、その後に乱数ビットの値が同じ値である消費電力データのみについて電力差分解析を行うといった攻撃手法に対する耐タンパ性を評価することができる。
【0061】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【0062】
例えば、上述した第2実施形態では、乱数ビットCは1ビットであるものとしたが、複数ビットであるものとしてもよい。その場合、乱数ビットの各ビットの値を説明変数としてもよいし、複数のビットで表される値を1つの説明変数としてもよい。
【0063】
上述した第1,第2実施形態において、偏回帰係数に基づいて耐タンパ性が低いと判定した状態変数があるときには、その状態変数を選択関数として評価用回路の電力差分解析を行い、電力差分解析が成功したか否かにより評価用回路の耐タンパ性を評価するものとしてもよい。こうすれば、耐タンパ性が低いと判定された状態変数について、電力差分解析を行って耐タンパ性を評価するため、より確実に耐タンパ性の評価を行うことができる。この場合、例えば、ステップS255で耐タンパ性が低いと判定された状態変数があるときには、これを選択関数として、ステップS150の後に電力差分解析を行うものとすればよい。
【0064】
上述した第1,第2実施形態では、入力ビットAの値を説明変数として重回帰分析を行うものとしたが、入力ビットAの遷移の有無を説明変数としてもよい。例えば、入力ビットAの8ビットの値のうち入力前の状態から値の遷移があったビットに対応する説明変数を値1とし、遷移がなかったビットに対応する説明変数を値0としてもよい。この場合、例えば入力ビットAとしてビット列「10001001」を入力したときに、入力前の入力ビットAの値が「00000000」であったときには、入力ビットAのうち1,5,8ビット目の値が遷移しているため、1,5,8ビット目の遷移の有無を表す説明変数がそれぞれ値1となり、それ以外のビットの遷移の有無を表す説明変数がそれぞれ値0となる。また、出力ビットBの値を説明変数としてもよいし、出力ビットBの遷移の有無を説明変数としてもよい。
【0065】
上述した第1,第2実施形態では、入力ビットAの8ビットすべてをそれぞれ説明変数として重回帰分析を行ったが、一部のビットを説明変数としてもよい。また、複数ビットの値を1つの説明変数として重回帰分析を行ってもよい。例えば、入力ビットAの上位4ビットは値0〜15のいずれかの値となるため、これを1つの説明変数としてもよい。また、1つのビットのみを説明変数として、重回帰分析ではなく単回帰分析を行い、偏回帰係数の代わりに回帰係数を用いて耐タンパ性を評価してもよい。
【0066】
上述した第1,第2実施形態では、評価用回路データ生成部,評価用回路データ変換部及び入力データ生成部が生成したデータに基づいて回路シミュレーターがシミュレーションを行い、その結果から消費電力データ取得部が消費電力データを複数取得するものとしたが、耐タンパ性評価プログラムは評価用回路データ生成部,評価用回路データ変換部,入力データ生成部,回路シミュレーターを備えないものとしてもよい。この場合、消費電力データを予め作成して記憶部に記憶しておくものとし、消費電力データ取得部が記憶部から消費電力データを取得するものとしてもよい。あるいは、消費電力データ取得部が実際に製造された暗号処理回路の消費電力を測定して消費電力データを取得するものとしてもよい。
【0067】
上述した第1,第2実施形態では、1つのパターン番号の消費電力データについて消費電力Wはタイムスロット番号0〜7までの8つのタイムスロット毎に対応して存在するものとしたが、タイムスロットを複数設けずに1つのパターン番号について1つの消費電力Wのみが対応して存在するものとしてもよい。
【0068】
上述した第1,第2実施形態では、消費電力データの標準化を行ってから重回帰分析を行うものとしたが、消費電力データの標準化を行わずに重回帰分析を行ってもよい。
【0069】
上述した第1,第2実施形態では、決定係数R2は自由度調整済決定係数であるものとしたが、自由度調整済みでない決定係数を決定係数R2としてもよい。ただし、自由度調整済みでない決定係数は説明変数の数が多いほど値1に近づき近似の精度が見かけ上高くなる傾向を持つため、自由度調整済決定係数を用いることが好ましい。なお、自由度調整済決定係数と自由度調整済みでない決定係数との両方を分析値として導出して、耐タンパ性の評価に用いるものとしてもよい。
【実施例】
【0070】
以下には、耐タンパ性評価プログラム及び情報処理装置を実際に作成した例を実施例として説明する。
【0071】
[実施例]
実施例として、第1,第2実施形態の機能を共に有する耐タンパ性評価プログラムを作成した。そして、CPUがXeon W3565(3.2GHz)でありRAMの容量が8GBである制御部を有するコンピューターのハードディスクにこれを記憶して、実施例の情報処理装置とした。なお、耐タンパ性の評価を行うにあたり、重回帰分析の説明変数として入力ビットAの値を用いるか遷移の有無を用いるかの選択や、タイムスロットの数及び所定期間T1〜T3の値は、ユーザーが設定できるものとした。また、図10のステップS252の後,ステップS254の後,図15のステップS252aの後,及びステップS254aの後にもそれぞれステップS255,S256の処理を行なうものとして、決定係数R2の値に関わらず偏回帰係数を用いた耐タンパ性の評価を常に行なうものとした。また、実施例の情報処理装置は、評価結果として、耐タンパ性評価ルーチンで求めた決定係数R2及び偏回帰係数の値をタイムスロットと対応付けてグラフとして表示するものとした。
【0072】
[比較例]
比較例として、評価回路に対して入力ビットのうち1ビットを選択関数とする電力差分解析攻撃を行い、これを入力ビットの8ビットについて繰り返し行って、それぞれのビットに対応する攻撃が成功するか否かにより耐タンパ性の評価を行う耐タンパ性評価プログラムを作成した。そして、実施例と同様のコンピューターのハードディスクにこれを記憶して、比較例の情報処理装置とした。比較例の情報処理装置における耐タンパ性の評価は以下のように行うものとした。まず、入力ビットの値をランダムに変化させて、入力ビットの値が変化してから所定期間後の消費電力とその入力ビットの値に対応する出力ビットの値とを対応付けた消費電力データを多数取得する。次に、各消費電力データについて、評価回路の秘密鍵(8ビット)を特定値に仮定して出力ビットから入力ビットを予測する。次に、予測した入力ビットのうちの1ビットを選択関数として、この選択関数が値0か値1かによって、消費電力データを2つのグループに分け、グループ毎の消費電力の平均波形を求めて2つのグループの平均波形の差分を求める。続いて、この差分を秘密鍵の取り得る全ての値(256通り)について求め、秘密鍵の仮定値を平均波形の差分の大きい順に並べて仮定値を順位付けする。続いて、秘密鍵Kの正解値の順位を調べ、1位になっているか否かで攻撃が成功したか否かを判定する。そして、このような判定を選択関数を変えて入力ビットの各ビットについて行い、それぞれのビットについて攻撃が成功したか否かを判定する。
【0073】
[耐タンパ性評価実験1]
耐タンパ性の評価の対象として、図3に示した評価回路40の評価回路データを用意した。なお、評価回路40のSubBytes変換回路44は、逆元演算回路とアフィン変換回路とを直列に接続した構成を有する合成体方式の回路とした。この評価回路データについて、実施例及び比較例の情報処理装置を用いて耐タンパ性の評価を行った。なお、実施例の情報処理装置では、入力ビットAの遷移の有無を説明変数として評価を行った。また、所定期間T1は50nsec、所定期間T2は0nsec、所定期間T3は0.2nsecとし、タイムスロットはタイムスロット番号0〜9までの10個とし、取得する消費電力データのパターン数は2000とした。比較例の情報処理装置では、入力ビットAの値が変化してから「所定期間T2+0.6nsec」経過時点から「所定期間T2+0.8nsec」経過時点までの消費電力とその入力ビットAの値に対応する出力ビットBの値とを対応付けた消費電力データを多数取得して上述したように評価を行った。すなわち、実施例の情報処理装置のタイムスロット番号3と同じ消費電力データを用いて評価を行った。また、比較例の情報処理装置では、評価に用いる消費電力データの総数を変えて、複数回の評価を行った。
【0074】
(実験結果)
耐タンパ性評価実験1の実験結果を図17〜19に示す。図17は、実施例の情報処理装置による評価結果のうち、各タイムスロットに対する決定係数R2の値を示したグラフである。図18は、実施例の情報処理装置による評価結果のうち、各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフである。図19は、比較例の情報処理装置による評価結果のうち、評価に用いた消費電力データの総数と入力値Aの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。
【0075】
図17から、導出した決定係数R2のうち、特にタイムスロット番号0〜3に対応する決定係数R2が他と比べて大きい値となっていることがわかった。このため、タイムスロット番号0〜3の消費電力が他のタイムスロットと比べて耐タンパ性が低い旨の評価結果が得られていることになる。また、図18から、タイムスロット番号3に対応する偏回帰係数a1〜a8の値は、大きい方から並べると偏回帰係数a2,a7,a5,a6,a1,a8,a3,a4の順となっている。この値の高い偏回帰係数に対応する入力値Aのビットほど耐タンパ性が低い旨の評価結果が得られていることになる。図19では、正解鍵の順位が1位となっており攻撃に成功しているのは入力ビットAの2,5,6,7ビット目であるため、このビットについての耐タンパ性が低い旨の評価結果が得られている。また、正解鍵の順位が1位となったときの評価に用いた消費電力データの総数が小さいほど、耐タンパ性が低く、正解鍵の順位が低いほど耐タンパ性が高いといえるため、図19では耐タンパ性の低い方から入力ビットAの各ビットを並べると2,7,5,6,1,8,3,4ビット目の順となる。この並び順は、図18の偏回帰係数a1〜a8の順と一致しており、実施例の情報処理装置のタイムスロット番号3についての評価結果と、比較例の情報処理装置の評価結果とが一致していることがわかった。なお、比較例の情報処理装置では実施例の情報処理装置のタイムスロット番号3と同じ消費電力データを用いて評価を行っている。そのため、両者の評価結果が一致しているということは、実施例の情報処理装置により実際の電力差分解析に対する耐性を正しく評価できたことを意味する。また、実施例の情報処理装置はパターン数が2000個の消費電力データを用いて重回帰分析を行って評価結果を得るまでに要した時間は17secであったのに対し、比較例の情報処理装置では同じ2000個の消費電力データを用いて電力差分解析を行って評価結果を得るまでに要した時間は416secであった。このことから、実施例の情報処理装置は、電力差分解析による攻撃を行って、攻撃が成功したか否かにより耐タンパ性を評価する手法と比べて効率的に耐タンパ性を評価できることがわかった。
【0076】
[耐タンパ性評価実験2]
評価回路40のSubBytes変換回路44を合成体方式以外の回路で構成した場合についても、耐タンパ性評価実験1と同様にして実施例と比較例の情報処理装置による耐タンパ性の評価を行った。具体的には、真理値表方式,PPRM(Positive Polarity Reed Muller:正極性リードマラー論理式)1方式,PPRM3方式によりSubBytes変換回路44を構成した評価回路について、耐タンパ性の評価を行った。真理値表方式のSubBytes変換回路44は、SubBytes変換回路44の入出力が図4の真理値表の対応関係となるようゲートを接続した回路であり、対応関係を論理合成ツールによりゲートの接続記述に変換して得られた回路データとして作成した。PPRM1方式のSubBytes変換回路44は、ANDゲート群とXORゲート群との組み合わせにより構成した回路である。PPRM3方式のSubBytes変換回路44は、合成体方式の回路を3段のPPRM方式の回路に変換して構成した回路である。図20は、実施例の情報処理装置による評価結果のうち、真理値表方式,PPRM1方式,PPRM3方式の各タイムスロットに対する決定係数R2の値を示したグラフである。図21は、実施例の情報処理装置による評価結果のうち、真理値表方式,PPRM1方式,PPRM3方式の各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフである。図21(a)が真理値表方式についてのグラフであり、図21(b)がPPRM1方式についてのグラフであり、図21(c)がPPRM3方式についてのグラフである。図22は、比較例の情報処理装置による評価結果のうち、タイムスロット番号5についての真理値表方式,PPRM1方式,PPRM3方式の消費電力データの総数と正解鍵の順位との関係を示したグラフである。図22(a)が真理値表方式についてのグラフであり、図22(b)がPPRM1方式についてのグラフであり、図22(c)がPPRM3方式についてのグラフである。
【0077】
図20では、タイムスロット番号5における決定係数R2は値の大きいものから真理値表方式,PPRM1方式,PPRM3方式の順となっている。そして、図22では、正解鍵の順位が1位になるまでに必要な消費電力データの総数の小さいものから真理値表方式,PPRM1方式,PPRM3方式の順となっており、実施例と比較例とで評価結果が一致していた。また、図21のタイムスロット番号5における偏回帰係数を値の大きい順に並べると、真理値表方式,PPRM1方式,PPRM3方式の各方式について図22で正解鍵の順位が1位になるまでに必要な消費電力データの総数が小さい順に入力ビットAの各ビットを並べたときと同じ並び順となり、実施例と比較例とで評価結果が一致していた。これらのことから、合成体方式の場合と同様に他の方式についても実施例の情報処理装置により実際の電力差分解析に対する耐性を正しく評価できたことが確認された。
【0078】
[耐タンパ性評価実験3]
耐タンパ性の評価の対象として、図13に示した評価回路140の評価回路データを用意した。この評価回路データについて、実施例及び比較例の情報処理装置を用いて耐タンパ性の評価を行った。なお、実施例の情報処理装置では、入力ビットAの値及び乱数ビットCの値を説明変数として評価を行った。また、所定期間T1〜T3及びタイムスロットは、耐タンパ性評価実験1と同様とした。比較例の情報処理装置では、まず、乱数ビットが値0である消費電力データと値1である消費電力データとを区別せずに、耐タンパ性評価実験1と同様に入力ビットAの値を1ビットずつ選択関数として耐タンパ性の評価を行った。また、消費電力データにおける消費電力の平均値を求め、消費電力が平均値以上か未満かによって消費電力データを2グループに分けた。そして、そのうちの一方のグループの消費電力データのみを用いて、耐タンパ性評価実験1と同様に入力ビットAの値を1ビットずつ選択関数として比較例の情報処理装置による耐タンパ性の評価を行った。なお、比較例の情報処理装置による評価は、実施例の情報処理装置のタイムスロット番号5と同じ消費電力データについて行った。
【0079】
(実験結果)
耐タンパ性評価実験3の実験結果について説明する。図23は、実施例の情報処理装置による評価結果のうち、入力ビットAの値及び乱数ビットCの値を説明変数としたときの各タイムスロットに対する決定係数R2の値を示したグラフである。図24は、実施例の情報処理装置による評価結果のうち、入力ビットAの値及び乱数ビットCの値を説明変数としたときの各タイムスロットに対する偏回帰係数a1〜a8,bの値を示したグラフである。図25は、比較例の情報処理装置による評価結果のうち、消費電力データのグループ分けをしない場合における、評価に用いた消費電力データの総数と入力値Aの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。
【0080】
図23から、導出した決定係数R2のうち、特にタイムスロット番号2以降に対応する決定係数R2が値1に近くなっていることがわかった。このため、タイムスロット番号2以降の消費電力Wが他のタイムスロットと比べて耐タンパ性が低い旨の評価結果が得られていることになる。また、図24から、偏回帰係数a1〜a8はいずれも値0.1以下であり小さい値であったが、偏回帰係数bは大きい値であり、特にタイムスロット番号2以降は値1に近い値であった。このことから、図23において決定係数R2が高い値であったのは、偏回帰係数bに対応する乱数ビットCと消費電力Wとの相関が高いことが原因であると推察された。また、評価回路140は、入力ビットAと消費電力Wとの相関は評価回路40と比べると低く、消費電力データのグループ分けをしない状態においては耐タンパ性が高い旨の評価結果が得られていることになる。一方、図25に示すように、比較例の情報処理装置では消費電力データの総数が3500以上の場合に入力ビットAの6ビット目で正解鍵の順位が1位となっているものの、その他のビットでは1位とならず正解鍵の推定ができなかった。図24からわかるように実施例の情報処理装置でも偏回帰係数a6は他の偏回帰係数と比べて大きい値となっていた。これらのことから、実施例と比較例とで評価結果が一致しており、実施例の情報処理装置は実際の電力差分解析に対する耐性を正しく評価できたことが確認された。
【0081】
また、実施例の情報処理装置では、乱数ビットCと消費電力Wとの相関が高かったため、耐タンパ性評価実験3において消費電力データをグループ分けして各グループについての重回帰分析が実行された。図26は、タイムスロット番号2における入力ビットAのハミング重み(値1であるビットの数)と消費電力Wとの関係を示したグラフである。図示するように、評価回路140では、乱数ビットCが値1であるか値0であるかによって消費電力Wの分布が分離しており、消費電力データから乱数ビットCの値を攻撃者が予測可能になることが推察された。そのため、評価回路140では乱数ビットCの値により消費電力データのグループ分けを行い、乱数ビットの影響を除いた耐タンパ性評価を行う必要性があることがわかる。グループ分けを行ったあとの実施例及び比較例における評価結果を図27,28に示す。図27は、実施例の情報処理装置による評価結果のうち、乱数ビットCが値0である消費電力データのグループについて、入力ビットAの値を説明変数としたときの各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフである。図28は、比較例の情報処理装置による評価結果のうち、乱数ビットCが値0であるグループの消費電力データを用いた場合における、評価に用いた消費電力データの総数と入力値Aの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。図27と図24とを比較すると、グループ分けにより乱数ビットCの影響を除いたことにより、偏回帰係数a1〜a8の値が全体的に大きくなっており、入力ビットAと消費電力Wとの相関が高くなっていた。また、図27のタイムスロット番号5に対応する偏回帰係数a1〜a8の値は、偏回帰係数a2,3,4,6,8が比較的大きい値であり、偏回帰係数a1,5,7が比較的小さい値であった。そのため、入力ビットAのうち特に2,3,4,6,8ビット目の耐タンパ性が低い旨の評価結果が得られていることになる。一方、図28における評価結果では、入力ビットAの2,3,4,6,8ビット目で正解鍵の順位が1位となり正解鍵の推定が成功しており、実施例と同様の結果となった。このことから、実施例の情報処理装置では、乱数ビットCと消費電力Wとの相関が高いときには、消費電力データをグループ分けしてから重回帰分析を行って、乱数ビットの影響を除いた耐タンパ性の評価を行うことができ、電力差分解析に対する耐性を正しく評価できたことが確認された。
【0082】
[耐タンパ性評価実験4]
評価回路140のSubBytes変換回路144を、RSL回路148の代わりに乱数マスク回路の一種であるMDPL(Masked Dual-rail Pre-charge Logic)回路を用いて構成した場合についても、耐タンパ性評価実験3と同様にして実施例と比較例の情報処理装置による耐タンパ性の評価を行った。MDPL回路は、正論理データ用の回路と負論理データ用の回路とを並行して備え、相補的な動作をすることで消費電力のバランスとって回路全体での消費電力の変動を抑えた回路である。また、正論理データ用の回路及び負論理データ用の回路は、図13に示したRSL回路148と同様に、それぞれ乱数ビットC(1bit)の値により動作モードが切り替わることで入力ビットAと消費電力Wとの相関が低くなるように構成されている。図29は、実施例の情報処理装置による耐タンパ性の評価結果の一例を示すグラフである。図29(a)は各タイムスロットに対する決定係数R2の値を示したグラフであり、図29(b)は各タイムスロットに対する偏回帰係数a1〜a8,bの値を示したグラフである。図30は、比較例の情報処理装置による評価結果のうち、消費電力データのグループ分けをしない場合における、評価に用いた消費電力データの総数と入力値Aの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。
【0083】
図29(a)から、タイムスロット番号5に対応する決定係数R2が他のタイムスロット番号の場合と比べて大きい値となっていることがわかった。また、図29(b)から、タイムスロット番号5に対応する偏回帰係数a1〜a8はいずれも値0.1以下であり小さい値であったが、偏回帰係数bは大きい値であった。このことから、図29(a)において決定係数R2が大きい値となっているのは、乱数ビットCと消費電力Wとの相関が他のタイムスロット番号の場合と比べて高いことが原因と推察された。また、偏回帰係数a1〜a8の値が小さいため消費電力データのグループ分けをしない状態においては耐タンパ性が高い旨の評価結果が得られていることになる。一方、図30に示すように、比較例の情報処理装置では消費電力データの総数が4000の場合であっても入力ビットAのうち正解鍵の順位が1位となったビットはなく、正解鍵の推定が成功していなかった。これらのことから、実施例と比較例とで評価結果は一致しており、実施例の情報処理装置は実際の電力差分解析に対する耐性を正しく評価できたことが確認された。また、偏回帰係数bの値はタイムスロット番号5の場合でも図24に示した偏回帰係数bと比較すると小さくなっており、RSL回路148を用いた評価回路と比べてMDPL回路を用いた評価回路の方が乱数ビットCについての耐タンパ性が高い旨の評価結果が得られている。この評価結果は、図25と図30とでは図30の方が正解鍵の順位が全体的に低いという比較例の情報処理装置による評価結果とも一致する。図31は、MDPL回路を用いた評価回路140のタイムスロット番号5における入力ビットAのハミング重みと消費電力Wとの関係を示したグラフである。この図に示すように、MDPL回路を用いた評価回路では、乱数ビットCが値1であるか値0であるかによって消費電力Wの分布が図26ほど分離しておらず、消費電力データから乱数ビットCの値を攻撃者が予測可能になることはないと考えられる。この結果は、上述した図30に示した偏回帰係数bの値が図24に示した偏回帰係数bと比較すると小さくなっていることと一致する。このように、実施例の情報処理装置では偏回帰係数bを用いて乱数ビットCについての耐タンパ性を評価することで、消費電力データから乱数ビットCの値を攻撃者が予測可能であるか否かを評価することができる。しかも、例えば図26と図30とを目で見て比較しただけではMDPL回路を用いた評価回路がRSL回路を用いた評価回路と比べてどの程度耐タンパ性が高いかを定量的に評価することはできないが、両者の偏回帰係数bを比較することで実施例の情報処理装置では定量的な評価が可能になる。
【符号の説明】
【0084】
10,110 情報処理装置、12 制御部、14,114 記憶部、16 表示部、18 操作部、20,120 耐タンパ性評価プログラム、21 評価用回路データ生成部、22 評価用回路データ変換部、23,123 入力データ生成部、24 回路シミュレーター、25,125 消費電力データ取得部、26 分析部、27 評価部、128 分類部、31 回路データ記憶部、40,140 評価用回路、42,142 レジスター、44,144 SubBytes変換回路、46 排他的論理和回路、148 RSL回路。
【技術分野】
【0001】
本発明は、情報処理装置,情報処理方法及びそのプログラムに関する。
【背景技術】
【0002】
従来、暗号処理回路の外部からの攻撃に対する耐性である耐タンパ性を評価する情報処理装置として、暗号処理回路に実際に外部からの攻撃を試み、攻撃が成功したか否かにより耐タンパ性を評価するものが知られている。そして、このような攻撃手法としては、暗号処理回路の消費電力とその回路中の秘密情報との関係を用いて消費電力から秘密情報を取得する電力差分解析が知られている。例えば、特許文献1には、論理回路の信号が変化した回数に基づいて消費電力を算出して、電力差分解析を行って耐タンパ性を評価することが記載されている。また、特許文献2には、耐タンパ対策回路の機能を有効にした場合と有効にしない場合とで電力差分解析の結果を比較して、耐タンパ対策回路の評価をすることが記載されている。
【0003】
ここで、電力差分解析とは、暗号回路の多数の消費電力データからその平均値を求め、これを2つにグループ分けしたときの両者の差分の大小に基づいて秘密情報を取得する攻撃手法である。電力差分解析は例えば次のように行う。まず、暗号処理回路の消費電力を測定して出力データと消費電力とを対応づけた消費電力データを多数取得する。続いて、取得したい秘密情報(例えば秘密鍵)を特定値に仮定し、その仮定の下で消費電力データの出力データに対する暗号処理回路の入力データを予測する。次に、選択関数としてこの入力データ中の特定ビットを設定し、この選択関数が値0か値1かによって、消費電力データを2つのグループに分け、グループ毎の消費電力の平均波形を求めて2つのグループの平均波形の差分を求める。このような平均波形の差分を秘密情報の取り得る全てのパターン(例えば8ビットの秘密鍵の場合には256パターン)について求める。こうすると、入力データが異なることによる消費電力のデータのばらつきが平均波形においてはキャンセルされる一方、仮定した秘密情報が正しい値であるときには、選択関数が値0であるか値1であるかによる暗号処理回路中の消費電力の差はキャンセルされないから、平均波形の差分が大きい値となる。これに対し、仮定した秘密情報が正しい値でないときには、2つのグループの平均波形の差分は小さい値となる。このような性質を利用して、平均波形の差分が最大となるときの秘密情報の仮定値が正解の値であると推定して、秘密情報を取得することができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】国際公開2006−006198号公報
【特許文献2】特許第4594665号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかし、電力差分解析による暗号処理回路への攻撃を行って、攻撃が成功したか否かにより耐タンパ性を評価する手法では、評価に手間や時間がかかるという問題があった。例えば、電力差分解析で1回の攻撃を行うためには、秘密情報の取り得るパターン全てについて平均波形の差分を導出してこれらを比較する処理が必要になるため手間や時間がかかっていた。さらに、選択関数をどのビットに設定するかによっても攻撃が成功するか否かが変わるため、このような手間や時間のかかる電力差分解析による攻撃を、選択関数を変更して複数回試す必要があった。このため、より効率的に耐タンパ性の評価を行うことが望まれていた。
【0006】
本発明は、上述した課題に鑑みなされたものであり、暗号処理回路の耐タンパ性の評価をより効率的に行うことを主目的とする。
【課題を解決するための手段】
【0007】
本発明の情報処理装置は、
暗号処理回路の耐タンパ性を評価する情報処理装置であって、
前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得する消費電力データ取得手段と、
前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する分析手段と、
前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価する評価手段と、
を備えたものである。
【0008】
この本発明の情報処理装置では、暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得し、取得された複数の消費電力データに基づいて、消費電力を目的変数とし消費電力に対応づけられた状態変数を説明変数として回帰分析を行い、分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する。そして、導出された分析値に基づいて、暗号処理回路の耐タンパ性を評価する。こうして導出した分析値は状態変数と消費電力との相関を表すものであり、換言すると消費電力から状態変数の値が推測されやすいか否かを表すものとなる。この分析値に基づいて耐タンパ性を評価することで、電力差分解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。ここで、回帰分析とは、重回帰分析と単回帰分析とのいずれか又は両方を意味する。決定係数とは、自由度調整済決定係数と自由度調整済みでない決定係数とのいずれか又は両方を意味する。回帰係数とは、単回帰分析における回帰係数と、重回帰分析における偏回帰係数のいずれか又は両方を意味する。また、入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数は、例えば入力ビット及び出力ビットの少なくともいずれかの値としてもよいし、値の遷移の有無としてもよい。また、状態変数は、入力ビット又は出力ビットのうちいずれかの1ビットの値又は値の遷移の有無を表す変数としてもよい。
【0009】
本発明の情報処理装置において、前記消費電力データ取得手段は、複数の異なる前記状態変数と該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、前記分析手段は、前記取得された消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた複数の前記状態変数をそれぞれ説明変数として重回帰分析を行い、該分析により決定係数及び偏回帰係数の少なくともいずれかを前記分析値として導出する手段としてもよい。こうすれば、複数の状態変数と消費電力との相関を重回帰分析によりまとめて分析することができるため、複数回の単回帰分析を行う場合に比べて効率的に耐タンパ性を評価できる。
【0010】
本発明の情報処理装置において、前記分析手段は、前記偏回帰係数を前記分析値として導出する手段であり、前記評価手段は、前記導出された偏回帰係数に基づいて、前記暗号処理回路における前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段としてもよい。こうすれば、具体的に耐タンパ性の低い状態変数を判定することができる。この場合において、前記導出された偏回帰係数のうち、所定の偏回帰係数許容領域に含まれない偏回帰係数があるときには、該偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段としてもよい。こうすれば、各状態変数の耐タンパ性を簡易な方法で評価することができる。ここで、所定の偏回帰係数許容領域とは、耐タンパ性が高いとみなせる偏回帰係数の領域であり、例えば実験により経験的に定めた領域としてもよい。また、前記評価手段は、前記偏回帰係数に基づいて耐タンパ性が低いと判定した状態変数があるときには、該状態変数を選択関数として前記暗号処理回路の電力差分解析を行い、該電力差分解析が成功したか否かにより該暗号処理回路の耐タンパ性を評価する手段としてもよい。こうすれば、耐タンパ性が低いと判定された状態変数について、電力差分解析を行って耐タンパ性を評価するため、より確実に耐タンパ性の評価を行うことができる。
【0011】
本発明の情報処理装置において、前記分析手段は、前記決定係数を前記分析値として導出する手段であり、前記評価手段は、前記導出された決定係数が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定する手段としてもよい。こうすれば、決定係数は状態変数と消費電力との全体的な相関を表すものであるため、この決定係数に基づいて耐タンパ性を評価することができる。ここで、所定の決定係数許容領域とは、状態変数と消費電力との全体的な相関が低く耐タンパ性が高いとみなせる決定係数の領域であり、例えば実験により経験的に定めた領域としてもよい。この場合において、前記分析手段は、前記決定係数及び前記偏回帰係数を前記分析値として導出する手段であり、前記評価手段は、前記導出された決定係数が前記決定係数許容領域と異なる所定の決定係数非許容領域に含まれるときには、耐タンパ性が低いと判定し、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数に基づいて前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段としてもよい。こうすれば、決定係数による判定で耐タンパ性が高いわけではないが、耐タンパ性が低いわけでもない場合に、具体的に耐タンパ性の低い状態変数を判定することができる。このため、常に耐タンパ性の低い状態変数を判定するものと比べて効率よく耐タンパ性の評価を行うことができる。ここで、所定の決定係数非許容領域とは、状態変数と消費電力との全体的な相関が高く耐タンパ性が低いとみなせる決定係数の領域であり、例えば実験により経験的に定めた領域としてもよい。また、導出された決定係数が決定係数許容領域及び決定係数非許容領域のいずれにも含まれないときとは、決定係数が決定係数許容領域と決定係数非許容領域との中間の領域に含まれるときを意味する。この場合において、前記評価手段は、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数が所定の偏回帰係数許容領域に含まれるか否かを判定して、該偏回帰係数許容領域に含まれない偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段としてもよい。こうすれば、各状態変数の耐タンパ性を簡易な方法で評価することができる。
【0012】
本発明の情報処理装置において、前記評価手段は、前記取得された複数の消費電力データの標準偏差に基づいて、耐タンパ性が高いか否かを判定し、耐タンパ性が低いときには、前記導出された分析値に基づいて前記暗号処理回路の耐タンパ性を評価する手段としてもよい。消費電力データの標準偏差が小さい、すなわち消費電力データのばらつきが小さい場合には、状態変数と消費電力データとの相関も小さいため、耐タンパ性が高いと考えられる。そのため、消費電力データの標準偏差に基づいて耐タンパ性が低いと判定したときに分析値に基づく耐タンパ性を評価することで、常に分析値に基づく耐タンパ性を評価する場合と比べて効率的に耐タンパ性の評価をすることができる。
【0013】
本発明の情報処理装置において、前記暗号処理回路は、乱数ビットの値により内部の回路動作をマスクする乱数マスク回路を有しており、前記消費電力データ取得手段は、前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数及び前記乱数ビットの状態を表す状態変数と、該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記乱数ビットの状態を表す状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを前記乱数ビットと前記消費電力との相関値として導出し、該相関値に基づいて前記乱数ビットと前記消費電力との相関が高いと判定したときには、前記取得した複数の消費電力データを乱数ビットの値に応じて複数のグループに分類する分類手段、を備え、前記分析手段は、同じ前記グループに属する消費電力データに基づいて、前記回帰分析を行って前記分析値を導出する手段としてもよい。こうすれば、乱数マスク回路の乱数ビットと消費電力との相関が高いときには、消費電力データをグループ分けしてから回帰分析を行うことで、乱数ビットの影響を除いた耐タンパ性評価ができる。これにより、例えば実際の暗号処理回路への攻撃として、消費電力データと乱数ビットとの間の相関からまず乱数ビットの値を読み取り、その後に乱数ビットの値が同じ値である消費電力データのみについて電力差分解析を行うといった攻撃手法に対する耐タンパ性を評価することができる。ここで、乱数マスク回路には、例えばRSL(Random Switch Logic)回路やMDPL(Masked Dual-rail Pre-charge Logic)回路が含まれる。
【0014】
本発明の情報処理方法は、
暗号処理回路の耐タンパ性を評価する情報処理方法であって、
(a)前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得するステップと、
(b)前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出するステップと、
(c)前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価するステップと、
を含むものである。
【0015】
この本発明の情報処理方法では、暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得し、取得された複数の消費電力データに基づいて、消費電力を目的変数とし消費電力に対応づけられた状態変数を説明変数として回帰分析を行い、分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する。そして、導出された分析値に基づいて、暗号処理回路の耐タンパ性を評価する。こうして導出した分析値は状態変数と消費電力との相関を表すものであり、換言すると消費電力から状態変数の値が推測されやすいか否かを表すものとなる。この分析値に基づいて耐タンパ性を評価することで、電力解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。なお、この情報処理方法において、上述した情報処理装置の種々の態様を採用してもよいし、上述した情報処理装置の各機能を実現するようなステップを追加してもよい。
【0016】
本発明のプログラムは、上述した情報処理方法の各ステップを1又は複数のコンピューターに実現させるためのものである。このプログラムをコンピューターに実行させれば、上述した本発明の情報処理方法が実現されるため、本発明の情報処理方法と同様の作用効果が得られる。本発明のプログラムは、コンピューターが読み取り可能な記録媒体(例えばハードディスク、ROM、FD、CD、DVDなど)に記録されていてもよいし、伝送媒体(インターネットやLANなどの通信網)を介してあるコンピューターから別のコンピューターに配信されてもよいし、その他どのような形で授受されてもよい。
【図面の簡単な説明】
【0017】
【図1】情報処理装置10の構成の概略を示す構成図。
【図2】耐タンパ性評価ルーチンの一例を示すフローチャート。
【図3】評価用回路40の構成の概略を示す構成図。
【図4】SubBytes変換回路44の出力値を定めた真理値表の説明図。
【図5】評価用回路40を表す評価用回路データの一例を示す説明図。
【図6】変換後の評価用回路データの一例を示す説明図。
【図7】入力データ生成部23が生成した入力データの一例を示す説明図。
【図8】シミュレーション結果の一例を示す説明図。
【図9】取得した消費電力データの説明図。
【図10】分析評価処理の一例を示すフローチャート。
【図11】導出した分析値の一例を示す説明図。
【図12】情報処理装置110の構成の概略を示す構成図。
【図13】評価用回路140の構成の概略を示す構成図。
【図14】取得した消費電力データの内容をテーブルとして示した説明図。
【図15】分析評価処理の一例を示すフローチャート。
【図16】導出した分析値及び相関値の一例を示す説明図。
【図17】評価実験1における、各タイムスロットに対する決定係数R2の値を示したグラフ。
【図18】評価実験1における、各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフ。
【図19】評価実験1における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図20】評価実験2における、各タイムスロットに対する決定係数R2の値を示したグラフ。
【図21】評価実験2における、各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフ。
【図22】評価実験2における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図23】評価実験3における、各タイムスロットに対する決定係数R2の値を示したグラフ。
【図24】評価実験3における、各タイムスロットに対する偏回帰係数a1〜a8,bの値を示すグラフ。
【図25】評価実験3における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図26】評価実験3における、入力ビットAのハミング重みと消費電力Wとの関係を示したグラフ。
【図27】評価実験3における、グループ分け後の各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフ。
【図28】評価実験3における、グループ分け後の消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図29】評価実験4における、実施例の情報処理装置による耐タンパ性の評価結果の一例を示すグラフ。
【図30】評価実験4における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図31】評価実験4における、入力ビットAのハミング重みと消費電力Wとの関係を示したグラフ。
【発明を実施するための形態】
【0018】
[第1実施形態]
図1は、第1実施形態である情報処理装置10の構成の概略を示す構成図である。図示するように、情報処理装置10は、制御部12と、記憶部14と、表示部16と、操作部18とを備えている。この情報処理装置10は、例えば汎用のコンピューターであり、暗号処理回路の耐タンパ性を評価する装置としての機能を有する。
【0019】
制御部12は、情報処理装置10全体の制御を司るものであり、CPU,ROM,RAMなどを備えたプロセッサーとして構成されている。制御部12は、記憶部14に記憶された耐タンパ性評価プログラムを実行したり、表示部16に表示データを出力して画面を表示するよう制御したり、操作部18からの操作信号を入力したりする。
【0020】
記憶部14は、例えばHDDなどの大容量記憶装置として構成され各種アプリケーションプログラムや各種データファイルを記憶するものである。この記憶部14は、耐タンパ性評価プログラム20と、回路データベース31とを備えている。
【0021】
耐タンパ性評価プログラム20は、評価用回路データ生成部21と、評価用回路データ変換部22と、入力データ生成部23と、回路シミュレーター24と、消費電力データ取得部25と、分析部26と、評価部27とを備えている。評価用回路データ生成部21は、記憶部14の回路データベース31に記憶されたデータを読み出して、耐タンパ性を評価する対象となる暗号処理回路のデータである評価用回路データを生成する機能を有する。評価用回路データ変換部22は、評価用回路データ生成部21が生成した評価用回路データを回路シミュレーター24が利用できるデータ形式に変換する機能を有する。入力データ生成部23は、回路シミュレーター24が行うシミュレーションにおいて評価用回路に入力される入力データを生成する機能を有する。回路シミュレーター24は、評価用回路データ変換部22に変換された評価用回路データと入力データ生成部23に生成された入力データとを取得して、評価用回路データで表される評価用回路に入力データを入力したときの回路動作をシミュレーションして、出力データや消費電流波形を生成する機能を有する。本実施形態では、回路シミュレーター24は電子回路のアナログ動作をシミュレーションするソフトウェアであるSPICE (Simulation Program with Integrated Circuit Emphasis)とした。消費電力データ取得部25は、回路シミュレーター24でのシミュレーションの結果から、評価用回路データで表される暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得する機能を有する。分析部26は、消費電力データ取得部25に取得された複数の消費電力データに基づいて、消費電力を目的変数とし消費電力に対応づけられた状態変数を説明変数として回帰分析を行い、分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する機能を有する。評価部27は、分析部26に導出された分析値に基づいて、暗号処理回路の耐タンパ性を評価する機能を有する。なお、制御部12が耐タンパ性評価プログラム20を実行することにより、評価用回路データ生成部21、評価用回路データ変換部22、入力データ生成部23、回路シミュレーター24、消費電力データ取得部25、分析部26、評価部27の上述した機能が実現される。
【0022】
回路データベース31には、耐タンパ性を評価する対象となる暗号処理回路及びその暗号処理回路を含むデバイス全体の回路データや、デバイスのセルライブラリ等の設計データを含むデータが記憶されている。
【0023】
表示部16は、例えば液晶ディスプレイとして構成されており、制御部12から出力された表示データに基づく画像を表示して各種情報をユーザーに表示する機能を有している。操作部18は、例えばキーボードやマウス等の入力装置として構成されており、ユーザーから入力された操作に基づく操作信号を制御部12に出力する機能を有している。
【0024】
次に、こうして構成された情報処理装置10の動作、特に、暗号処理回路の耐タンパ性を評価する際の動作について説明する。図2は、耐タンパ性評価ルーチンの一例を示すフローチャートである。このルーチンは、ユーザーが操作部18を操作して耐タンパ性を評価する対象となる評価用回路を指定し、耐タンパ性の評価を行うよう指示したときに制御部12が耐タンパ性評価プログラム20を実行することにより行われる。
【0025】
この耐タンパ性評価ルーチンが実行されると、評価用回路データ生成部21は、まず、評価用回路データとして、ユーザーに指定された評価用回路の回路データを回路データベース31に記憶されたデータに基づいて生成する(ステップS100)。図3は、評価用回路40の構成の概略を示す構成図である。本実施形態では、この図に示した評価用回路40の耐タンパ性の評価を行うようユーザーから指定がなされたものとして、以下の説明を行う。評価用回路40は、暗号方式の1つであるAES(Advanced Encryption Standard)の回路の部分的なモジュールとして構成された暗号処理回路であり、レジスター42と、SubBytes変換回路44と、排他的論理和回路46とを備えている。レジスター42は、入力された8ビットの入力ビットAを保持するものである。SubBytes変換回路44は、レジスター42の出力部に接続され、入力ビットAに対してAESにおける非線形変換であるSubBytes処理を行うものであり、入力ビットAに対応して真理値表により定められた出力値を出力するように構成された論理回路である。図4は、SubBytes変換回路44の出力値を定めた真理値表の説明図である。この図に示すように、入力ビットAの上位4ビットの値が縦軸、下位4ビットの値が横軸であり、両者の交点に位置する値が出力値(8ビット)となる。例えば、入力Aの上位4ビットが値0(二進数表記で0000)、入力Aの下位4ビットが値8(二進数表記で1000)のときには、SubBytes変換回路44は値30を出力する。排他的論理和回路46は、AESにおける暗号化のための秘密鍵を組み込む処理であるAddRoundKey処理を行う回路であり、SubBytes変換回路44の出力値と排他的論理和回路46に入力された秘密鍵K(8ビット)との排他的論理和を演算して、その結果を出力ビットB(8ビット)として出力する。なお、図3は評価用回路40の概略を示したものであり、実際の評価用回路データは、所定のハードウェア記述言語(例えばVerilog-HDL)で評価用回路40を表したデータである。図5は、評価用回路40を表す評価用回路データの一例を示す説明図である。図5における、「module SingleSbAttack(x,k,clk,y);」から「endmodule」までが評価用回路40の最上位階層の記述である。その中の「always@(posedge clk)begin」から「end」までがレジスター42を表す記述、「SubBytesTBL sb1(.x(dreg),.y(addkey_in));」がSubBytes変換回路44を表す記述、「assign y = addkey_in^k;」が排他的論理和回路46を表す記述である。また、「module SubBytesTBL(x,y);」以降はSubBytes変換回路44の構成の詳細を表す記述である。
【0026】
次に、評価用回路データ変換部22は、評価用回路データを回路シミュレーター24が利用できるようSPICEのデータ形式に変換する(ステップS110)。図6は、変換後の評価用回路データの一例を示す説明図である。図6において、「.subckt」以降は評価用回路40におけるSPICEのサブサーキットの記述である。また、「XU1229」以降は回路データ記憶部31に記憶されたセルライブラリにおけるゲートの接続仕様を表す記述である。続いて、入力データ生成部23は、評価用回路40に入力する入力データを生成する(ステップS120)。入力データは、例えば評価用回路データに供給される入力ビットAの値、クロック信号の値、秘密鍵Kの値、及び評価用回路40の図示しない制御ピンへの入力値などのデータである。本実施形態では、入力ビットAの値は所定期間T1(本実施形態では50nsecとした)が経過する毎にランダムに変化させるものとした。また、秘密鍵Kの値は、ランダムに定めた値とした。図7は、入力データ生成部23が生成した入力データの一例を示す説明図である。図7において、8桁の数値は時刻を表している。また、各時刻に対応する9桁の数値のうち左側の8桁は入力ビットAの値を表し、一番右の1桁はクロック信号の値を表している。例えば、時刻「00000025」は時刻25nsecを意味し、それに対応する値「011001001」は、時刻25nsecにおける入力ビットAが二進数表記で値「01100100」であり、クロック信号が値1であることを意味している。また、本実施形態では所定期間T1が値50nsecに設定されているため、図7では50nsec毎に入力ビットAの値が変化している。なお、所定期間T1は、例えば評価用回路40が実際にデバイスで用いられる際の入力データの処理間隔に基づいて定める。
【0027】
次に、回路シミュレーター24は、ステップS110で評価用回路データ変換部22に変換された評価用回路データとステップS120で入力データ生成部23に生成された入力データとを取得して、評価用回路40に入力データを入力したときの回路動作のシミュレーションを行う(ステップS130)。これにより、回路シミュレーター24は、入力ビットAに対して出力される出力ビットBの値や、評価用回路40の動作内容に基づいて演算した消費電流波形を生成する。
【0028】
続いて、消費電力データ取得部25は、回路シミュレーター24のシミュレーションの結果から、評価用回路40における入力ビットAの各ビットが値0であるか値1であるかを表す状態変数と評価用回路40における消費電力Wとが対応づけられた消費電力データを、複数の入力ビットAの値に応じて複数取得する(ステップS140)。図8は、シミュレーション結果の一例を示す説明図である。図8において、「25000」以降はシミュレーションの結果として導出された評価用回路40の消費電流波形のデータである。消費電流波形のデータは、0.01nsec毎の時刻及び消費電流値のデータとして表されている。例えば時刻「25010」は、時刻が25.010nsecであることを意味し、消費電流値「12968315」は、時刻25.010nsecにおける消費電流値が12968315×10-10Aであることを意味する。また、図9は、取得した消費電力データの説明図である。図9(a)は、取得した消費電力データの内容をテーブルとして表した説明図であり、図9(b)は、タイムスロットと消費電力Wとの関係を表す説明図である。図9(a)に示すように、消費電力データは入力ビットAと、出力ビットBと、消費電力Wとが対応づけられたデータであり、本実施形態では入力データ生成部23に生成された入力データに基づいて入力ビットAの値を所定期間T1毎に変化させたときの、パターン番号0〜m(本実施形態ではパターン番号mは値1999)までのm+1個(本実施形態では2000個)の消費電力データを取得するものとした。なお、図9(a)における「h」は16進数表記であることを意味する。例えばパターン番号0における入力ビットAの値は「64h」であり、ビット列で表すと「01100100」を意味する。この値は、図7に示した時刻「00000000」,「00000025」における入力ビットAの値に対応している。同様に、パターン番号1における入力ビットAの値は、図7に示した時刻「00000050」,「00000075」における入力ビットAの値に対応している。また図9(a)に示すように、1つの消費電力データについて、消費電力Wの値はタイムスロット番号0〜7までの8つのタイムスロット毎に存在する。図9(b)に示すように、入力ビットAの値を入力してから最初のタイムスロットまでの期間を所定期間T2、最初のタイムスロットの開始時刻を時刻t0、1つのタイムスロットの時間幅を所定期間T3(本実施形態では0.2nsecとした)とすると、タイムスロットは時刻t0から所定期間T3毎に時間を区切った期間である。例えばパターン番号0の消費電力データにおけるタイムスロット番号sとは、パターン番号0の入力ビットAの値64hが評価用回路40に入力された時刻から所定期間T2が経過した時刻を時刻t0として、時刻(t0+T3×(s−1))から時刻(t0+T3×s)までの期間を意味する。消費電力Wは、回路シミュレーター24に導出された消費電流波形に基づいてこのタイムスロット毎の消費電力の平均値として導出された値である。ここで、図8に示したように回路シミュレーター24は消費電流を導出するものであるが、評価用回路40の制御電圧は一定であり、消費電流から消費電力及びその平均値としての消費電力Wを容易に算出することができる。所定期間T2,T3は、例えば次のように経験的に設定する。まず、評価用回路40の回路の入力から出力までに要する処理時間や内部の処理内容を考慮して、評価用回路40を電力差分解析により攻撃するときに攻撃対象となりやすい期間を予め調べておく。すなわち、消費電力から秘密情報が取得しやすいと想定される期間を予め調べておく。そして、その期間がタイムスロットに含まれるように、所定期間T2やT3を設定する。なお、入力ビットAの値が入力されてから次の入力ビットAが入力されるまでの期間、すなわち所定期間T1が経過するまでの期間を均等に分割して、複数個のタイムスロットを設定してもよい。
【0029】
続いて、分析部26及び評価部27は、ステップS140で取得された消費電力データに基づいて、評価用回路40の耐タンパ性の分析評価処理を実行する(ステップS150)。ここで、耐タンパ性評価ルーチンの説明を中断して、分析評価処理について説明する。図10は、分析評価処理の一例を示すフローチャートである。
【0030】
この分析評価処理が開始されると、評価部27は、まず、処理対象のタイムスロット番号nを値1に初期化する(ステップS200)。続いて、評価部27は、パターン番号0〜1999までの消費電力データのうちタイムスロット番号nに対応する2000個の消費電力Wの平均値μ及び標準偏差σを導出する(ステップS210)。そして、導出した標準偏差σが閾値σth未満であるか否かを判定する(ステップS220)。ここで、閾値σthは、消費電力のばらつきが少ないため状態変数と消費電力との全体的な相関が低く耐タンパ性が高いとみなせる標準偏差許容領域の上限値として設定された値であり、例えば実験により経験的に定めた値である。標準偏差σが小さく2000個の消費電力Wの値にばらつきが少ないということは、状態変数である入力値Aの値と消費電力Wとの相関が低いということであるから、この閾値σthと標準偏差σとを比較することで、耐タンパ性が高いか否かの判定をするのである。
【0031】
ステップS220で標準偏差σが閾値σth以上であったときには、分析部26は、耐タンパ性が相対的に低いものとみなし、パターン番号0〜1999までの消費電力データのうちタイムスロット番号nに対応する2000個の消費電力Wの値の標準化を行う(ステップS230)。本実施形態では、2000個の消費電力Wのうちパターン番号iに対応するものを消費電力Wiとすると、標準化後の消費電力wiをwi=(Wi−μ)/σとして導出するものとした。このように導出された2000個の消費電力wは、平均値が値0、標準偏差が値1の分布となる。このように標準化してから以降の分析及び評価を行うことで、例えば消費電力の絶対値が異なる他の暗号処理回路についての耐タンパ性の評価を行った場合との評価結果の比較がしやすくなる。
【0032】
続いて、分析部26は、状態変数すなわち入力ビットAの各ビットを説明変数とし、タイムスロット番号nに対応する2000個の消費電力wを目的変数として、重回帰分析を行い、分析値として偏回帰係数a1〜aj(本実施形態では変数jは値8)及び決定係数R2を導出する(ステップS240)。この処理は、例えば以下のように行う。まず、入力ビットAの1ビット目〜jビット目までの値をそれぞれ状態変数x1〜xjとして、消費電力wとx1〜xjとの関係を以下の式(1)のように仮定する。このときの係数a0〜ajを偏回帰係数と称する。このように式(1)を仮定すると、パターン番号iに対応する状態変数xi1〜xijをこの式(1)に代入して導出される消費電力wiと実際の消費電力データにおける消費電力wiとの差の二乗をパターン番号0〜mの全てについて合計した値である差の二乗和Eは以下の式(2)で表すことができる。そして、この差の二乗和Eが最小となるような偏回帰係数a0〜anを導出する。換言すると、式(1)が最も精度良く消費電力wとx1〜xjとの関係を近似する式となるような偏回帰係数a0〜ajを導出する。このようにして偏回帰係数a0〜ajを求めることで、式(1)が状態変数x1〜xjと消費電力wとの関係の近似式(重回帰式)となる。なお、偏回帰係数a0〜ajの導出は、例えば式(2)をa0について偏微分したものを値0とおいた式を導出し、偏回帰係数a1〜ajについても同様の式を導出して、これらの式で表される連立方程式を解くことで行うことができる。偏回帰係数a1〜ajを導出すると、これを用いて決定係数R2を導出する。具体的には、まず、実際の消費電力データにおける消費電力wiとその平均値との差の二乗を導出し、これをパターン番号0〜mの全てについて導出して合計した和である実測値の平方和Stを求める。また、実際の消費電力データにおける消費電力wiと、導出した偏回帰係数a0〜a8及び実際のxi1〜xijを式(1)に代入して導出される予測値としての消費電力wiとの差の二乗を導出し、これをパターン番号0〜mの全てについて導出して合計した和である差の平方和Seを求める。そして、以下の式(3)により決定係数R2を導出する。なお、式(3)において、定数Nは標本数であり、本実施形態では消費電力データの総数である値2000である。また、定数pは説明変数の数であり、本実施形態では値8である。この決定係数R2は、自由度調整済決定係数とも呼ばれる。以上のようにして偏回帰係数a1〜aj及び決定係数R2を分析値として導出する。図11は、導出した分析値の一例を示す説明図である。図11では、タイムスロット番号nが値0であるときの分析値を示しており、タイムスロット番号nに対応して、決定係数R2及び偏回帰係数a1〜a8が導出されている。ここで、偏回帰係数a1〜ajは、各状態変数とタイムスロット番号nに対応する消費電力wとの相関の高さを表す数値である。偏回帰係数a1〜ajは値−1〜1までの値をとり、絶対値が大きいほど偏回帰係数に対応する状態変数と消費電力wとの正又は負の相関が高いことを意味する。例えば、偏回帰係数a1の値は入力ビットAの1ビット目の値と消費電力wとの相関を表す。より具体的には、偏回帰係数a1の絶対値が大きいほど、入力ビットAの1ビット目が値0である場合と値1である場合とで消費電力wの値が大きく変化する傾向にあることを意味する。例えば図11では、偏回帰係数a1と比べて偏回帰係数a2,a3,a4の絶対値が大きいため、入力ビットAの1ビット目と比べて2〜4ビット目の方が消費電力wとの相関が高いことがわかる。また、決定係数R2は、式(1)の近似の確からしさを表す数値である。決定係数R2は、値0〜1の値をとり、値が1に近いほど近似の精度が高く、状態変数である入力ビットAと消費電力wとの全体的な相関が高いことを意味する。なお、偏回帰係数a0は、決定係数R2の導出に必要な値ではあるが、本実施形態では以降の耐タンパ性の評価には用いないため、分析値には含めない。
【0033】
【数1】
【0034】
次に、評価部27は、分析部26が導出した分析値を取得し、評価用回路40の耐タンパ性を評価する評価処理(ステップS250)を行う。このステップS250の評価処理として、まず、分析値のうちの決定係数R2が閾値R2th1未満であるか否かを判定する(ステップS251)。ここで、閾値R2th1は、状態変数である入力ビットAと消費電力wとの全体的な相関が低く耐タンパ性が高いとみなせる決定係数R2の領域すなわち決定係数許容領域の上限値として設定された値であり、例えば実験により経験的に定めた値である。
【0035】
そして、ステップS220で標準偏差σが閾値σth未満であったとき、又はステップS251で決定係数R2が閾値R2th1未満であったときには、評価用回路40が全体的に耐タンパ性が高い旨の情報を処理対象のタイムスロット番号nに対応する評価結果として記憶する(ステップS252)。
【0036】
一方、ステップS251で決定係数R2が閾値R2th1以上であったときには、決定係数R2が閾値R2th2以上であるか否かを判定する(ステップS253)。ここで、閾値R2th2は、状態変数である入力ビットAと消費電力wとの全体的な相関が高く耐タンパ性が低いとみなせる決定係数R2の領域すなわち決定係数非許容領域の下限値として設定された値であり、例えば実験により経験的に定めた値である。本実施形態では、閾値R2th2は閾値R2th1よりも大きい値である。そして、ステップS253で決定係数R2が閾値R2th2以上であったときには、評価用回路40が全体的に耐タンパ性が低い旨の情報を処理対象のタイムスロット番号nに対応する評価結果として記憶する(ステップS254)。
【0037】
ステップS253で決定係数R2が閾値R2th2未満であったときには、偏回帰係数a1〜a8の値に基づいて耐タンパ性の低い状態変数x1〜xjを判定する(ステップS255)。ステップS251で決定係数R2が閾値R2th1以上であり、ステップS253で決定係数R2が閾値R2th2未満であったとき、すなわち決定係数R2が決定係数許容領域と決定係数非許容領域との中間の領域に含まれるときは、決定係数による判定で全体的に耐タンパ性が高いと判定されたわけではないが、全体的に耐タンパ性が低いと判定されたわけでもない場合である。そこで、部分的に耐タンパ性が低いと判定して、状態変数x1〜xjのうち、具体的に耐タンパ性の低い状態変数を特定するのである。このステップS255の処理は、本実施形態では、偏回帰係数a1〜a8の各値について、状態変数と消費電力wとの相関が低く耐タンパ性が高いとみなせる所定の偏回帰係数許容領域に含まれるか否かを判定し、含まれない偏回帰係数に対応する状態変数が耐タンパ性が低いと判定することで行う。例えば偏回帰係数a1及びa3が偏回帰係数許容領域に含まれないときには、入力ビットAのうち1ビット目の値と3ビット目の値が消費電力wとの相関が高く耐タンパ性が低いと判定する。ここで、このような偏回帰係数許容領域は、例えば実験により経験的に定めることができる。なお、例えば偏回帰係数a1〜a8の各値のうち絶対値の最も高いものを耐タンパ性の低い状態変数と判定するなど、相対的な判定を行ってもよい。ステップS255で耐タンパ性の低い状態変数を判定すると、部分的に耐タンパ性が低い旨の情報と耐タンパ性が低いと判定した状態変数とを処理対象のタイムスロット番号nに対応する評価結果として記憶する(ステップS256)。
【0038】
以上のステップS251〜S256の処理すなわちステップS250の評価処理を行って、ステップS252,S254,S256のいずれかの評価結果を記憶すると、評価部27は、タイムスロット番号nを値1インクリメントして(ステップS260)、タイムスロット番号nが上限値(本実施形態では値7)を超えたか否かを判定する(ステップS270)。そして、タイムスロット番号nが上限値を超えていないときには、ステップS210に進む。一方、タイムスロット番号nが上限値を超えたときには、分析評価処理を終了する。この分析評価処理を行うことで、各タイムスロットについて消費電力データを用いた評価用回路40の耐タンパ性の評価が行われる。
【0039】
図2の耐タンパ性評価ルーチンに戻る。ステップS150の分析評価処理を行うと、評価部27は、タイムスロット毎にステップS252,S254,S256のいずれかで記憶した評価結果を読み出して、表示部16に評価結果出力画面を表示させて(ステップS160)、本ルーチンを終了する。評価結果出力画面では、例えばタイムスロット毎に耐タンパ性が「全体的に高い」「部分的に低い」「全体的に低い」などの評価結果を表示したり、耐タンパ性が部分的に低いタイムスロットについては入力ビットAのうち具体的に耐タンパ性が低いと判定されたのが何ビット目であるかを表示する。また、耐タンパ性評価ルーチンで求めた標準偏差σや分析値の値をタイムスロットと対応付けてテーブルまたはグラフとして表示する。このように、耐タンパ性評価ルーチンでは、消費電力データに基づいて標準偏差σや偏回帰係数a1〜a8,決定係数R2を導出し、これらに基づいて評価用回路40の耐タンパ性を評価するのである。
【0040】
ここで、第1実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第1実施形態の情報処理装置10が本発明の情報処理装置に相当し、消費電力データ取得部25が消費電力データ取得手段に相当し、分析部26が分析手段に相当し、評価部27が評価手段に相当する。なお、本実施形態では、情報処理装置10の動作を説明することにより本発明の情報処理方法の一例も明らかにしている。
【0041】
以上詳述した第1実施形態の情報処理装置10によれば、暗号処理回路である評価用回路40における入力ビットAの状態を表す状態変数と評価用回路40における消費電力Wとが対応付けられた消費電力データを複数取得し、取得された複数の消費電力データに基づいて、消費電力Wを目的変数とし消費電力Wに対応づけられた状態変数x1〜xjを説明変数として重回帰分析を行い、分析により決定係数R2及び偏回帰係数a1〜a8を分析値として導出する。そして、導出された分析値に基づいて、評価用回路40の耐タンパ性を評価する。これにより、電力差分解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。
【0042】
また、入力ビットAの各ビットの値をそれぞれ状態変数としており、複数の異なる状態変数x1〜xjと消費電力Wとが対応付けられた消費電力データに基づいて重回帰分析を行うため、複数の状態変数と消費電力Wとの相関を重回帰分析によりまとめて分析することができ、複数回の単回帰分析を行う場合に比べて効率的に耐タンパ性を評価できる。
【0043】
さらに、決定係数R2が所定の決定係数許容領域に含まれるか否かに基づいて耐タンパ性が高いか否かを判定するため、状態変数と消費電力との全体的な相関を表す決定係数に基づいて耐タンパ性を評価することができる。また、決定係数R2が決定係数許容領域及び決定係数非許容領域のいずれにも含まれないときには、導出された偏回帰係数a1〜a8に基づいて複数の状態変数のうち耐タンパ性の低い状態変数を判定するため、決定係数による判定で耐タンパ性が高いわけではないが、耐タンパ性が低いわけでもない場合に、具体的に耐タンパ性の低い状態変数を判定することができる。また、導出された偏回帰係数a1〜a8が所定の偏回帰係数許容領域に含まれるか否かを判定して、偏回帰係数許容領域に含まれない偏回帰係数に対応する状態変数の耐タンパ性が低いと判定するため、各状態変数の耐タンパ性を簡易な方法で評価することができる。
【0044】
さらにまた、消費電力データの標準偏差σに基づいて耐タンパ性が低いと判定したときに分析値に基づく耐タンパ性を評価するため、常に分析値に基づく耐タンパ性を評価する場合と比べて効率的に耐タンパ性の評価をすることができる。
【0045】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【0046】
例えば、上述した第1実施形態におけるステップS210,S220の処理を省略して、標準偏差σの値によらず常に重回帰分析を行うものとしてもよい。また、ステップS253,S255,S256の処理を省略し、ステップS251で決定係数R2が閾値R2th1未満でないときにはステップS254に進み、決定係数R2が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定するものとしてもよい。この場合、ステップS240で導出した偏回帰係数a1〜a8は分析値とせず、決定係数R2のみを分析値としてもよい。また、ステップS253,S254の処理を省略し、ステップS251で決定係数R2が閾値R2th1未満でないときにはステップS255に進み、決定係数R2が所定の決定係数許容領域に含まれないときには常に耐タンパ性の低い状態変数を判定するものとしてもよい。また、ステップS251,S253,S254の処理を省略して、ステップS240の重回帰分析を行ったときにはステップS255に進み、常に耐タンパ性の低い状態変数を判定するものとしてもよい。この場合、ステップS240では決定係数を導出しないものとしてもよい。また、ステップS252の後やステップS254の後にもステップS255,S256の処理を行なうものとして、決定係数R2を用いた耐タンパ性の評価と偏回帰係数a1〜a8を用いた耐タンパ性の評価とを常に行なってもよい。
【0047】
[第2実施形態]
図12は、第2実施形態である情報処理装置110の構成の概略を示す構成図である。なお、第2実施形態の情報処理装置110のうち、情報処理装置10と同様の構成要素については、情報処理装置10の構成要素と同じ符号を付してその説明を省略する。
【0048】
情報処理装置110は、制御部12と、記憶部114と、表示部16と、操作部18とを備えている。この情報処理装置110は、制御部12が耐タンパ性評価プログラム120を実行して耐タンパ性を評価する対象である評価用回路140が、乱数ビットCの値により内部の回路動作をマスクする乱数マスク回路の一種であるRSL(Random Switch Logic) 回路を有した暗号処理回路である点が情報処理装置10と異なる。
【0049】
記憶部114は、例えばHDDなどの大容量記憶装置として構成され各種アプリケーションプログラムや各種データファイルを記憶するものであり、耐タンパ性評価プログラム120と、回路データベース31とを備えている。
【0050】
耐タンパ性評価プログラム120は、評価用回路データ生成部21と、評価用回路データ変換部22と、入力データ生成部123と、回路シミュレーター24と、消費電力データ取得部125と、分析部26と、評価部27と、分類部128とを備えている。入力データ生成部123は、生成する入力データにRSL回路の乱数ビットCの値が含まれる点以外は、図1の入力データ生成部23と同様の機能を有する。消費電力データ取得部125は、評価用回路140における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数及び乱数ビットCの状態を表す状態変数と、評価用回路140における消費電力Wとが対応付けられた消費電力データを取得する機能を有する。分類部128は、消費電力データ取得部125に取得された複数の消費電力データに基づいて、消費電力Wを目的変数とし消費電力Wに対応づけられた乱数ビットCの状態を表す状態変数を説明変数として回帰分析を行い、その分析により決定係数及び回帰係数の少なくともいずれかを乱数ビットCと前記消費電力データとの相関値として導出し、導出した相関値に基づいて乱数ビットCと消費電力Wとの相関が高いと判定したときには、取得した複数の消費電力データを乱数ビットCの値に応じて複数のグループに分類する機能を有する。なお、制御部12が耐タンパ性評価プログラム120を実行することにより、評価用回路データ生成部21、評価用回路データ変換部22、入力データ生成部123、回路シミュレーター24、消費電力データ取得部125、分析部26、評価部27、分類部128の機能が実現される。
【0051】
次に、こうして構成された情報処理装置110の動作、特に、暗号処理回路の耐タンパ性を評価する際の動作について説明する。ユーザーが操作部18を操作して耐タンパ性を評価する対象となる評価用回路を指定し、耐タンパ性の評価を行うよう指示すると、制御部12は、耐タンパ性評価ルーチンを実行する。この耐タンパ性評価ルーチンは、図2の耐タンパ性評価ルーチンと同様の処理ステップを有するため、図2と同じステップ番号を用いて説明し、図示を省略する。
【0052】
この耐タンパ性評価ルーチンが実行されると、まず、評価用回路データ生成部21,評価用回路データ変換部22がステップS100〜S110の処理を行う。この処理は、ユーザーに指定された評価用回路140の構成が異なる点以外は、図2と同様に行う。図13は、評価用回路140の構成の概略を示す構成図である。図13(a)は、評価用回路140の全体構成を示す構成図であり、図13(b)は、評価用回路140のうちのSubBytes変換回路144内のRSL回路148の構成を示す構成図である。図13(a)に示すように、評価用回路140は、レジスター142と、SubBytes変換回路144と、排他的論理和回路46とを備えている。この評価用回路140は、評価用回路40と同様に暗号方式の1つであるAESの回路の部分的なモジュールとして構成された暗号処理回路であり、レジスター142と、SubBytes変換回路144と、排他的論理和回路146とを備えている。レジスター42は、入力された8ビットの入力ビットAと、1ビットの乱数ビットCと、1ビットの出力イネーブルenとを保持するものである。SubBytes変換回路144は、レジスター42の出力部に接続されて入力ビットAと乱数ビットCと出力イネーブルenとがレジスター42から入力され、入力ビットAに対してAESにおける非線形変換であるSubBytes処理を行うものである。このSubBytes変換回路144は、図13(b)に示すRSL回路148を有している。図示するように、RSL回路148は、各1ビットの入力値が2つと、乱数ビットCと、出力イネーブルenとが入力される。このRSL回路148は、乱数ビットCの値により内部の動作モードが切り替わり、異なる論理回路として動作する。具体的には、出力イネーブルenが値1且つ乱数ビットCが値0であるときには、RSL回路148はNANDゲートとして動作して、2つの入力値に基づく1ビットの出力値を出力する。また、出力イネーブルenが値1且つ乱数ビットCが値1であるときには、RSL回路148はNORゲートとして動作して、2つの入力値に基づく1ビットの出力値を出力する。出力イネーブルenが値0のときにはRSL回路148の出力値は値0に固定される。SubBytes変換回路144は、このRSL回路148を複数組み合わせた回路として構成されており、入力ビットAと出力ビットBとの対応関係は図3のSubBytes変換回路44と同じであるものの、乱数ビットCが値0であるか値1であるかによって内部の回路構成が変化し、消費電力も変化する。このように、SubBytes変換回路144はRSL回路148を備えることで、乱数ビットCの値によって消費電力を変化させて入力ビットAと消費電力との相関が低くなる、すなわち内部の回路動作がマスクされるよう構成され、図3のSubBytes変換回路144の回路よりも耐タンパ性の高い回路となっている。
【0053】
続いて、入力データ生成部123は、ステップS120の処理を行って評価用回路140への入力データを生成し、回路シミュレーター24がステップS130の処理を行って評価用回路140に入力データを入力したときの回路動作のシミュレーションを行う。そして、消費電力データ取得部125は、ステップS140の処理を行って、消費電力データを取得する。本実施形態では、消費電力データ取得部125は、回路シミュレーター24のシミュレーションの結果から、評価用回路140における入力ビットAの各ビットの値及び乱数ビットCの値を表す状態変数と評価用回路140における消費電力Wとが対応づけられた消費電力データを、入力ビットA及び乱数ビットCの値に応じて複数取得する。図14は、取得した消費電力データの内容をテーブルとして示した説明図である。この図に示すように、消費電力データ取得部125が取得する消費電力データは、図9(a)に示した消費電力データに各パターン番号に対応する乱数ビットCの値が加わったものとなっている。
【0054】
次に、分析部26及び評価部27は、ステップS140で取得された消費電力データに基づいて、評価用回路140の耐タンパ性の分析評価処理を実行するステップS150の処理を行う。図15は、本実施形態における分析評価処理の一例を示すフローチャートである。なお、図15では、図10の分析評価処理と異なる部分についてのみ図示しており、図10と同じ処理については同じステップ番号を用いて説明する。この分析評価処理が実行されると、まず、ステップS200〜S230の処理が行われる。そして、ステップS230の処理を行うと、分析部26は、状態変数すなわち入力ビットAの各ビット及び乱数ビットCを説明変数とし、タイムスロット番号nに対応する2000個の消費電力wを目的変数として、重回帰分析を行い、分析値として偏回帰係数a1〜aj(本実施形態では変数jは値8)及び決定係数R2を導出すると共に、相関値として偏回帰係数bを導出する(ステップS240a)。この処理は、ステップS240における状態変数x1〜x8に加えて乱数ビットCの値を表す状態変数x9が加わり、偏回帰係数a0〜a8に加えて偏回帰係数bが加わった点以外は、ステップS240と同様にして行うことができる。すなわち、上述した式(1)において変数jを値9とした場合の式(2)の差の二乗和Eが最小となるような偏回帰係数a0〜a9を導出し、その後決定係数R2を導出して、偏回帰係数a1〜a8及び決定係数R2を分析値とし、偏回帰係数a9(=偏回帰係数b)を相関値とするのである。図16は、導出した分析値及び相関値の一例を示す説明図である。図16では、タイムスロット番号nが値0であるときの分析値及び相関値を示しており、タイムスロット番号nに対応して、決定係数R2及び偏回帰係数a1〜a8,bが導出されている。この図16の例では、偏回帰係数a1〜a8と比べて偏回帰係数bの絶対値が大きくなっており、入力ビットAの値と比べて乱数ビットCの方が消費電力wとの相関が高いことがわかる。
【0055】
続いて、分析部26及び評価部27は、ステップS250の処理すなわちちステップS251〜S256の処理を行って、評価用回路140の耐タンパ性の評価を行う。そして、ステップS250の処理を行うと、分類部128は、ステップS240aで導出した相関値である偏回帰係数bが閾値bth未満であるか否かを判定する(ステップS300)。ここで、閾値bthは、状態変数である乱数ビットCと消費電力wとの相関が低く耐タンパ性が高いとみなせる偏回帰係数bの領域すなわち偏回帰係数許容領域の下限値として設定された値であり、例えば実験により経験的に定めた値である。なお、本実施形態では、この偏回帰係数許容領域は、ステップS255において耐タンパ性が低い状態変数を判定するときの偏回帰係数許容領域と同じものとしたが、両者を異なる領域としてもよい。
【0056】
そして、ステップS300で偏回帰係数bが閾値bth未満であるときには、分類部128は、乱数ビットCについての耐タンパ性が低い旨をタイムスロット番号nに対応する評価結果として記憶して(ステップS310)、ステップS260に進む。一方、ステップS300で偏回帰係数bが閾値bth未以上であるときには、乱数ビットCの値に応じて消費電力データを複数のグループに分類する(ステップS320)。本実施形態では、乱数ビットCは1ビットであるため、乱数ビットCが値0であるか値1であるかに応じて消費電力データを2つのグループに分類する。例えば、図14に示した消費電力データを分類するときには、乱数ビットCが値0であるパターン番号0,2の消費電力データと、乱数ビットCが値1であるパターン番号1,3,4の消費電力データとは別のグループに分類する。
【0057】
続いて、分析部26及び評価部27は、分類したグループのうちいずれか1つを処理対象グループに設定し(ステップS330)、処理対象グループの消費電力データについて、図10のステップS210以降の処理を行う。このステップS210以降の処理は、ステップS252,S254,S256の代わりにステップS252a,S254a,S256aの処理を行う点以外は、ステップS210〜S250と同様にして行う。すなわち、まずステップS210,S220の処理を行い、ステップS220で標準偏差σが閾値σth以上のときには、ステップS230〜S251の処理を行う。そして、ステップS220で標準偏差σが閾値σth未満のとき、又はステップS251で決定係数R2が閾値R2th1未満であったときには、処理対象グループについて評価用回路140が全体的に耐タンパ性が高い旨を処理対象グループ及びタイムスロット番号nに対応する評価結果として記憶する(ステップS252a)。また、ステップS251で決定係数R2が閾値R2th1以上であったときには、ステップS253の処理を行い、ステップS253で決定係数R2が閾値R2th2以上であったときには、評価用回路140が全体的に耐タンパ性が低い旨を処理対象グループ及びタイムスロット番号nに対応する評価結果として記憶する(ステップS254a)。そして、ステップS253で決定係数R2が閾値R2th2未満であったときには、ステップS255の処理を行って耐タンパ性が低い状態変数を判定し、部分的に耐タンパ性が低い旨と耐タンパ性が低いと判定した状態変数とを処理対象グループ及びタイムスロット番号nに対応する評価結果として記憶する(ステップS256a)。そして、ステップS252a,S254a,S256aいずれかの評価結果を記憶すると、未処理のグループがあるか否かを判定し(ステップS340)、未処理のグループがあるときにはステップS330に進む。一方、未処理のグループがないといには、ステップS260へ進む。
【0058】
このように、図15の分析評価処理では、図10の分析評価処理に加えて、乱数ビットCが消費電力と相関が高いか否かの判定を行っている。そして、乱数ビットCと消費電力Wとの相関が高いときには、消費電力データをグループ分けしてから重回帰分析を行って、乱数ビットの影響を除いた耐タンパ性の評価を行うのである。
【0059】
ここで、第2実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第2実施形態の情報処理装置110が本発明の情報処理装置に相当し、消費電力データ取得部125が消費電力データ取得手段に相当し、分析部26が分析手段に相当し、評価部27が評価手段に相当し、分析部26,評価部27,分類部128が分類手段に相当する。
【0060】
以上詳述した第2実施形態の情報処理装置10によれば、RSL回路148の乱数ビットCと消費電力Wとの相関が高いときには、消費電力データをグループ分けしてから重回帰分析を行うことで、乱数ビットの影響を除いた耐タンパ性評価ができる。これにより、例えば実際の暗号処理回路への攻撃として、消費電力データと乱数ビットとの間の相関からまず乱数ビットの値を読み取り、その後に乱数ビットの値が同じ値である消費電力データのみについて電力差分解析を行うといった攻撃手法に対する耐タンパ性を評価することができる。
【0061】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【0062】
例えば、上述した第2実施形態では、乱数ビットCは1ビットであるものとしたが、複数ビットであるものとしてもよい。その場合、乱数ビットの各ビットの値を説明変数としてもよいし、複数のビットで表される値を1つの説明変数としてもよい。
【0063】
上述した第1,第2実施形態において、偏回帰係数に基づいて耐タンパ性が低いと判定した状態変数があるときには、その状態変数を選択関数として評価用回路の電力差分解析を行い、電力差分解析が成功したか否かにより評価用回路の耐タンパ性を評価するものとしてもよい。こうすれば、耐タンパ性が低いと判定された状態変数について、電力差分解析を行って耐タンパ性を評価するため、より確実に耐タンパ性の評価を行うことができる。この場合、例えば、ステップS255で耐タンパ性が低いと判定された状態変数があるときには、これを選択関数として、ステップS150の後に電力差分解析を行うものとすればよい。
【0064】
上述した第1,第2実施形態では、入力ビットAの値を説明変数として重回帰分析を行うものとしたが、入力ビットAの遷移の有無を説明変数としてもよい。例えば、入力ビットAの8ビットの値のうち入力前の状態から値の遷移があったビットに対応する説明変数を値1とし、遷移がなかったビットに対応する説明変数を値0としてもよい。この場合、例えば入力ビットAとしてビット列「10001001」を入力したときに、入力前の入力ビットAの値が「00000000」であったときには、入力ビットAのうち1,5,8ビット目の値が遷移しているため、1,5,8ビット目の遷移の有無を表す説明変数がそれぞれ値1となり、それ以外のビットの遷移の有無を表す説明変数がそれぞれ値0となる。また、出力ビットBの値を説明変数としてもよいし、出力ビットBの遷移の有無を説明変数としてもよい。
【0065】
上述した第1,第2実施形態では、入力ビットAの8ビットすべてをそれぞれ説明変数として重回帰分析を行ったが、一部のビットを説明変数としてもよい。また、複数ビットの値を1つの説明変数として重回帰分析を行ってもよい。例えば、入力ビットAの上位4ビットは値0〜15のいずれかの値となるため、これを1つの説明変数としてもよい。また、1つのビットのみを説明変数として、重回帰分析ではなく単回帰分析を行い、偏回帰係数の代わりに回帰係数を用いて耐タンパ性を評価してもよい。
【0066】
上述した第1,第2実施形態では、評価用回路データ生成部,評価用回路データ変換部及び入力データ生成部が生成したデータに基づいて回路シミュレーターがシミュレーションを行い、その結果から消費電力データ取得部が消費電力データを複数取得するものとしたが、耐タンパ性評価プログラムは評価用回路データ生成部,評価用回路データ変換部,入力データ生成部,回路シミュレーターを備えないものとしてもよい。この場合、消費電力データを予め作成して記憶部に記憶しておくものとし、消費電力データ取得部が記憶部から消費電力データを取得するものとしてもよい。あるいは、消費電力データ取得部が実際に製造された暗号処理回路の消費電力を測定して消費電力データを取得するものとしてもよい。
【0067】
上述した第1,第2実施形態では、1つのパターン番号の消費電力データについて消費電力Wはタイムスロット番号0〜7までの8つのタイムスロット毎に対応して存在するものとしたが、タイムスロットを複数設けずに1つのパターン番号について1つの消費電力Wのみが対応して存在するものとしてもよい。
【0068】
上述した第1,第2実施形態では、消費電力データの標準化を行ってから重回帰分析を行うものとしたが、消費電力データの標準化を行わずに重回帰分析を行ってもよい。
【0069】
上述した第1,第2実施形態では、決定係数R2は自由度調整済決定係数であるものとしたが、自由度調整済みでない決定係数を決定係数R2としてもよい。ただし、自由度調整済みでない決定係数は説明変数の数が多いほど値1に近づき近似の精度が見かけ上高くなる傾向を持つため、自由度調整済決定係数を用いることが好ましい。なお、自由度調整済決定係数と自由度調整済みでない決定係数との両方を分析値として導出して、耐タンパ性の評価に用いるものとしてもよい。
【実施例】
【0070】
以下には、耐タンパ性評価プログラム及び情報処理装置を実際に作成した例を実施例として説明する。
【0071】
[実施例]
実施例として、第1,第2実施形態の機能を共に有する耐タンパ性評価プログラムを作成した。そして、CPUがXeon W3565(3.2GHz)でありRAMの容量が8GBである制御部を有するコンピューターのハードディスクにこれを記憶して、実施例の情報処理装置とした。なお、耐タンパ性の評価を行うにあたり、重回帰分析の説明変数として入力ビットAの値を用いるか遷移の有無を用いるかの選択や、タイムスロットの数及び所定期間T1〜T3の値は、ユーザーが設定できるものとした。また、図10のステップS252の後,ステップS254の後,図15のステップS252aの後,及びステップS254aの後にもそれぞれステップS255,S256の処理を行なうものとして、決定係数R2の値に関わらず偏回帰係数を用いた耐タンパ性の評価を常に行なうものとした。また、実施例の情報処理装置は、評価結果として、耐タンパ性評価ルーチンで求めた決定係数R2及び偏回帰係数の値をタイムスロットと対応付けてグラフとして表示するものとした。
【0072】
[比較例]
比較例として、評価回路に対して入力ビットのうち1ビットを選択関数とする電力差分解析攻撃を行い、これを入力ビットの8ビットについて繰り返し行って、それぞれのビットに対応する攻撃が成功するか否かにより耐タンパ性の評価を行う耐タンパ性評価プログラムを作成した。そして、実施例と同様のコンピューターのハードディスクにこれを記憶して、比較例の情報処理装置とした。比較例の情報処理装置における耐タンパ性の評価は以下のように行うものとした。まず、入力ビットの値をランダムに変化させて、入力ビットの値が変化してから所定期間後の消費電力とその入力ビットの値に対応する出力ビットの値とを対応付けた消費電力データを多数取得する。次に、各消費電力データについて、評価回路の秘密鍵(8ビット)を特定値に仮定して出力ビットから入力ビットを予測する。次に、予測した入力ビットのうちの1ビットを選択関数として、この選択関数が値0か値1かによって、消費電力データを2つのグループに分け、グループ毎の消費電力の平均波形を求めて2つのグループの平均波形の差分を求める。続いて、この差分を秘密鍵の取り得る全ての値(256通り)について求め、秘密鍵の仮定値を平均波形の差分の大きい順に並べて仮定値を順位付けする。続いて、秘密鍵Kの正解値の順位を調べ、1位になっているか否かで攻撃が成功したか否かを判定する。そして、このような判定を選択関数を変えて入力ビットの各ビットについて行い、それぞれのビットについて攻撃が成功したか否かを判定する。
【0073】
[耐タンパ性評価実験1]
耐タンパ性の評価の対象として、図3に示した評価回路40の評価回路データを用意した。なお、評価回路40のSubBytes変換回路44は、逆元演算回路とアフィン変換回路とを直列に接続した構成を有する合成体方式の回路とした。この評価回路データについて、実施例及び比較例の情報処理装置を用いて耐タンパ性の評価を行った。なお、実施例の情報処理装置では、入力ビットAの遷移の有無を説明変数として評価を行った。また、所定期間T1は50nsec、所定期間T2は0nsec、所定期間T3は0.2nsecとし、タイムスロットはタイムスロット番号0〜9までの10個とし、取得する消費電力データのパターン数は2000とした。比較例の情報処理装置では、入力ビットAの値が変化してから「所定期間T2+0.6nsec」経過時点から「所定期間T2+0.8nsec」経過時点までの消費電力とその入力ビットAの値に対応する出力ビットBの値とを対応付けた消費電力データを多数取得して上述したように評価を行った。すなわち、実施例の情報処理装置のタイムスロット番号3と同じ消費電力データを用いて評価を行った。また、比較例の情報処理装置では、評価に用いる消費電力データの総数を変えて、複数回の評価を行った。
【0074】
(実験結果)
耐タンパ性評価実験1の実験結果を図17〜19に示す。図17は、実施例の情報処理装置による評価結果のうち、各タイムスロットに対する決定係数R2の値を示したグラフである。図18は、実施例の情報処理装置による評価結果のうち、各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフである。図19は、比較例の情報処理装置による評価結果のうち、評価に用いた消費電力データの総数と入力値Aの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。
【0075】
図17から、導出した決定係数R2のうち、特にタイムスロット番号0〜3に対応する決定係数R2が他と比べて大きい値となっていることがわかった。このため、タイムスロット番号0〜3の消費電力が他のタイムスロットと比べて耐タンパ性が低い旨の評価結果が得られていることになる。また、図18から、タイムスロット番号3に対応する偏回帰係数a1〜a8の値は、大きい方から並べると偏回帰係数a2,a7,a5,a6,a1,a8,a3,a4の順となっている。この値の高い偏回帰係数に対応する入力値Aのビットほど耐タンパ性が低い旨の評価結果が得られていることになる。図19では、正解鍵の順位が1位となっており攻撃に成功しているのは入力ビットAの2,5,6,7ビット目であるため、このビットについての耐タンパ性が低い旨の評価結果が得られている。また、正解鍵の順位が1位となったときの評価に用いた消費電力データの総数が小さいほど、耐タンパ性が低く、正解鍵の順位が低いほど耐タンパ性が高いといえるため、図19では耐タンパ性の低い方から入力ビットAの各ビットを並べると2,7,5,6,1,8,3,4ビット目の順となる。この並び順は、図18の偏回帰係数a1〜a8の順と一致しており、実施例の情報処理装置のタイムスロット番号3についての評価結果と、比較例の情報処理装置の評価結果とが一致していることがわかった。なお、比較例の情報処理装置では実施例の情報処理装置のタイムスロット番号3と同じ消費電力データを用いて評価を行っている。そのため、両者の評価結果が一致しているということは、実施例の情報処理装置により実際の電力差分解析に対する耐性を正しく評価できたことを意味する。また、実施例の情報処理装置はパターン数が2000個の消費電力データを用いて重回帰分析を行って評価結果を得るまでに要した時間は17secであったのに対し、比較例の情報処理装置では同じ2000個の消費電力データを用いて電力差分解析を行って評価結果を得るまでに要した時間は416secであった。このことから、実施例の情報処理装置は、電力差分解析による攻撃を行って、攻撃が成功したか否かにより耐タンパ性を評価する手法と比べて効率的に耐タンパ性を評価できることがわかった。
【0076】
[耐タンパ性評価実験2]
評価回路40のSubBytes変換回路44を合成体方式以外の回路で構成した場合についても、耐タンパ性評価実験1と同様にして実施例と比較例の情報処理装置による耐タンパ性の評価を行った。具体的には、真理値表方式,PPRM(Positive Polarity Reed Muller:正極性リードマラー論理式)1方式,PPRM3方式によりSubBytes変換回路44を構成した評価回路について、耐タンパ性の評価を行った。真理値表方式のSubBytes変換回路44は、SubBytes変換回路44の入出力が図4の真理値表の対応関係となるようゲートを接続した回路であり、対応関係を論理合成ツールによりゲートの接続記述に変換して得られた回路データとして作成した。PPRM1方式のSubBytes変換回路44は、ANDゲート群とXORゲート群との組み合わせにより構成した回路である。PPRM3方式のSubBytes変換回路44は、合成体方式の回路を3段のPPRM方式の回路に変換して構成した回路である。図20は、実施例の情報処理装置による評価結果のうち、真理値表方式,PPRM1方式,PPRM3方式の各タイムスロットに対する決定係数R2の値を示したグラフである。図21は、実施例の情報処理装置による評価結果のうち、真理値表方式,PPRM1方式,PPRM3方式の各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフである。図21(a)が真理値表方式についてのグラフであり、図21(b)がPPRM1方式についてのグラフであり、図21(c)がPPRM3方式についてのグラフである。図22は、比較例の情報処理装置による評価結果のうち、タイムスロット番号5についての真理値表方式,PPRM1方式,PPRM3方式の消費電力データの総数と正解鍵の順位との関係を示したグラフである。図22(a)が真理値表方式についてのグラフであり、図22(b)がPPRM1方式についてのグラフであり、図22(c)がPPRM3方式についてのグラフである。
【0077】
図20では、タイムスロット番号5における決定係数R2は値の大きいものから真理値表方式,PPRM1方式,PPRM3方式の順となっている。そして、図22では、正解鍵の順位が1位になるまでに必要な消費電力データの総数の小さいものから真理値表方式,PPRM1方式,PPRM3方式の順となっており、実施例と比較例とで評価結果が一致していた。また、図21のタイムスロット番号5における偏回帰係数を値の大きい順に並べると、真理値表方式,PPRM1方式,PPRM3方式の各方式について図22で正解鍵の順位が1位になるまでに必要な消費電力データの総数が小さい順に入力ビットAの各ビットを並べたときと同じ並び順となり、実施例と比較例とで評価結果が一致していた。これらのことから、合成体方式の場合と同様に他の方式についても実施例の情報処理装置により実際の電力差分解析に対する耐性を正しく評価できたことが確認された。
【0078】
[耐タンパ性評価実験3]
耐タンパ性の評価の対象として、図13に示した評価回路140の評価回路データを用意した。この評価回路データについて、実施例及び比較例の情報処理装置を用いて耐タンパ性の評価を行った。なお、実施例の情報処理装置では、入力ビットAの値及び乱数ビットCの値を説明変数として評価を行った。また、所定期間T1〜T3及びタイムスロットは、耐タンパ性評価実験1と同様とした。比較例の情報処理装置では、まず、乱数ビットが値0である消費電力データと値1である消費電力データとを区別せずに、耐タンパ性評価実験1と同様に入力ビットAの値を1ビットずつ選択関数として耐タンパ性の評価を行った。また、消費電力データにおける消費電力の平均値を求め、消費電力が平均値以上か未満かによって消費電力データを2グループに分けた。そして、そのうちの一方のグループの消費電力データのみを用いて、耐タンパ性評価実験1と同様に入力ビットAの値を1ビットずつ選択関数として比較例の情報処理装置による耐タンパ性の評価を行った。なお、比較例の情報処理装置による評価は、実施例の情報処理装置のタイムスロット番号5と同じ消費電力データについて行った。
【0079】
(実験結果)
耐タンパ性評価実験3の実験結果について説明する。図23は、実施例の情報処理装置による評価結果のうち、入力ビットAの値及び乱数ビットCの値を説明変数としたときの各タイムスロットに対する決定係数R2の値を示したグラフである。図24は、実施例の情報処理装置による評価結果のうち、入力ビットAの値及び乱数ビットCの値を説明変数としたときの各タイムスロットに対する偏回帰係数a1〜a8,bの値を示したグラフである。図25は、比較例の情報処理装置による評価結果のうち、消費電力データのグループ分けをしない場合における、評価に用いた消費電力データの総数と入力値Aの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。
【0080】
図23から、導出した決定係数R2のうち、特にタイムスロット番号2以降に対応する決定係数R2が値1に近くなっていることがわかった。このため、タイムスロット番号2以降の消費電力Wが他のタイムスロットと比べて耐タンパ性が低い旨の評価結果が得られていることになる。また、図24から、偏回帰係数a1〜a8はいずれも値0.1以下であり小さい値であったが、偏回帰係数bは大きい値であり、特にタイムスロット番号2以降は値1に近い値であった。このことから、図23において決定係数R2が高い値であったのは、偏回帰係数bに対応する乱数ビットCと消費電力Wとの相関が高いことが原因であると推察された。また、評価回路140は、入力ビットAと消費電力Wとの相関は評価回路40と比べると低く、消費電力データのグループ分けをしない状態においては耐タンパ性が高い旨の評価結果が得られていることになる。一方、図25に示すように、比較例の情報処理装置では消費電力データの総数が3500以上の場合に入力ビットAの6ビット目で正解鍵の順位が1位となっているものの、その他のビットでは1位とならず正解鍵の推定ができなかった。図24からわかるように実施例の情報処理装置でも偏回帰係数a6は他の偏回帰係数と比べて大きい値となっていた。これらのことから、実施例と比較例とで評価結果が一致しており、実施例の情報処理装置は実際の電力差分解析に対する耐性を正しく評価できたことが確認された。
【0081】
また、実施例の情報処理装置では、乱数ビットCと消費電力Wとの相関が高かったため、耐タンパ性評価実験3において消費電力データをグループ分けして各グループについての重回帰分析が実行された。図26は、タイムスロット番号2における入力ビットAのハミング重み(値1であるビットの数)と消費電力Wとの関係を示したグラフである。図示するように、評価回路140では、乱数ビットCが値1であるか値0であるかによって消費電力Wの分布が分離しており、消費電力データから乱数ビットCの値を攻撃者が予測可能になることが推察された。そのため、評価回路140では乱数ビットCの値により消費電力データのグループ分けを行い、乱数ビットの影響を除いた耐タンパ性評価を行う必要性があることがわかる。グループ分けを行ったあとの実施例及び比較例における評価結果を図27,28に示す。図27は、実施例の情報処理装置による評価結果のうち、乱数ビットCが値0である消費電力データのグループについて、入力ビットAの値を説明変数としたときの各タイムスロットに対する偏回帰係数a1〜a8の値を示したグラフである。図28は、比較例の情報処理装置による評価結果のうち、乱数ビットCが値0であるグループの消費電力データを用いた場合における、評価に用いた消費電力データの総数と入力値Aの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。図27と図24とを比較すると、グループ分けにより乱数ビットCの影響を除いたことにより、偏回帰係数a1〜a8の値が全体的に大きくなっており、入力ビットAと消費電力Wとの相関が高くなっていた。また、図27のタイムスロット番号5に対応する偏回帰係数a1〜a8の値は、偏回帰係数a2,3,4,6,8が比較的大きい値であり、偏回帰係数a1,5,7が比較的小さい値であった。そのため、入力ビットAのうち特に2,3,4,6,8ビット目の耐タンパ性が低い旨の評価結果が得られていることになる。一方、図28における評価結果では、入力ビットAの2,3,4,6,8ビット目で正解鍵の順位が1位となり正解鍵の推定が成功しており、実施例と同様の結果となった。このことから、実施例の情報処理装置では、乱数ビットCと消費電力Wとの相関が高いときには、消費電力データをグループ分けしてから重回帰分析を行って、乱数ビットの影響を除いた耐タンパ性の評価を行うことができ、電力差分解析に対する耐性を正しく評価できたことが確認された。
【0082】
[耐タンパ性評価実験4]
評価回路140のSubBytes変換回路144を、RSL回路148の代わりに乱数マスク回路の一種であるMDPL(Masked Dual-rail Pre-charge Logic)回路を用いて構成した場合についても、耐タンパ性評価実験3と同様にして実施例と比較例の情報処理装置による耐タンパ性の評価を行った。MDPL回路は、正論理データ用の回路と負論理データ用の回路とを並行して備え、相補的な動作をすることで消費電力のバランスとって回路全体での消費電力の変動を抑えた回路である。また、正論理データ用の回路及び負論理データ用の回路は、図13に示したRSL回路148と同様に、それぞれ乱数ビットC(1bit)の値により動作モードが切り替わることで入力ビットAと消費電力Wとの相関が低くなるように構成されている。図29は、実施例の情報処理装置による耐タンパ性の評価結果の一例を示すグラフである。図29(a)は各タイムスロットに対する決定係数R2の値を示したグラフであり、図29(b)は各タイムスロットに対する偏回帰係数a1〜a8,bの値を示したグラフである。図30は、比較例の情報処理装置による評価結果のうち、消費電力データのグループ分けをしない場合における、評価に用いた消費電力データの総数と入力値Aの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。
【0083】
図29(a)から、タイムスロット番号5に対応する決定係数R2が他のタイムスロット番号の場合と比べて大きい値となっていることがわかった。また、図29(b)から、タイムスロット番号5に対応する偏回帰係数a1〜a8はいずれも値0.1以下であり小さい値であったが、偏回帰係数bは大きい値であった。このことから、図29(a)において決定係数R2が大きい値となっているのは、乱数ビットCと消費電力Wとの相関が他のタイムスロット番号の場合と比べて高いことが原因と推察された。また、偏回帰係数a1〜a8の値が小さいため消費電力データのグループ分けをしない状態においては耐タンパ性が高い旨の評価結果が得られていることになる。一方、図30に示すように、比較例の情報処理装置では消費電力データの総数が4000の場合であっても入力ビットAのうち正解鍵の順位が1位となったビットはなく、正解鍵の推定が成功していなかった。これらのことから、実施例と比較例とで評価結果は一致しており、実施例の情報処理装置は実際の電力差分解析に対する耐性を正しく評価できたことが確認された。また、偏回帰係数bの値はタイムスロット番号5の場合でも図24に示した偏回帰係数bと比較すると小さくなっており、RSL回路148を用いた評価回路と比べてMDPL回路を用いた評価回路の方が乱数ビットCについての耐タンパ性が高い旨の評価結果が得られている。この評価結果は、図25と図30とでは図30の方が正解鍵の順位が全体的に低いという比較例の情報処理装置による評価結果とも一致する。図31は、MDPL回路を用いた評価回路140のタイムスロット番号5における入力ビットAのハミング重みと消費電力Wとの関係を示したグラフである。この図に示すように、MDPL回路を用いた評価回路では、乱数ビットCが値1であるか値0であるかによって消費電力Wの分布が図26ほど分離しておらず、消費電力データから乱数ビットCの値を攻撃者が予測可能になることはないと考えられる。この結果は、上述した図30に示した偏回帰係数bの値が図24に示した偏回帰係数bと比較すると小さくなっていることと一致する。このように、実施例の情報処理装置では偏回帰係数bを用いて乱数ビットCについての耐タンパ性を評価することで、消費電力データから乱数ビットCの値を攻撃者が予測可能であるか否かを評価することができる。しかも、例えば図26と図30とを目で見て比較しただけではMDPL回路を用いた評価回路がRSL回路を用いた評価回路と比べてどの程度耐タンパ性が高いかを定量的に評価することはできないが、両者の偏回帰係数bを比較することで実施例の情報処理装置では定量的な評価が可能になる。
【符号の説明】
【0084】
10,110 情報処理装置、12 制御部、14,114 記憶部、16 表示部、18 操作部、20,120 耐タンパ性評価プログラム、21 評価用回路データ生成部、22 評価用回路データ変換部、23,123 入力データ生成部、24 回路シミュレーター、25,125 消費電力データ取得部、26 分析部、27 評価部、128 分類部、31 回路データ記憶部、40,140 評価用回路、42,142 レジスター、44,144 SubBytes変換回路、46 排他的論理和回路、148 RSL回路。
【特許請求の範囲】
【請求項1】
暗号処理回路の耐タンパ性を評価する情報処理装置であって、
前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得する消費電力データ取得手段と、
前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する分析手段と、
前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価する評価手段と、
を備えた情報処理装置。
【請求項2】
前記消費電力データ取得手段は、複数の異なる前記状態変数と該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、
前記分析手段は、前記取得された消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた複数の前記状態変数をそれぞれ説明変数として重回帰分析を行い、該分析により決定係数及び偏回帰係数の少なくともいずれかを前記分析値として導出する手段である、
請求項1に記載の情報処理装置。
【請求項3】
前記分析手段は、前記偏回帰係数を前記分析値として導出する手段であり、
前記評価手段は、前記導出された偏回帰係数に基づいて、前記暗号処理回路における前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段である、
請求項2に記載の情報処理装置。
【請求項4】
前記評価手段は、前記導出された偏回帰係数のうち、所定の偏回帰係数許容領域に含まれない偏回帰係数があるときには、該偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段である、
請求項3に記載の情報処理装置。
【請求項5】
前記評価手段は、前記偏回帰係数に基づいて耐タンパ性が低いと判定した状態変数があるときには、該状態変数を選択関数として前記暗号処理回路の電力差分解析を行い、該電力差分解析が成功したか否かにより該暗号処理回路の耐タンパ性を評価する手段である、
請求項3又は4に記載の情報処理装置。
【請求項6】
前記分析手段は、前記決定係数を前記分析値として導出する手段であり、
前記評価手段は、前記導出された決定係数が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定する手段である、
請求項2〜5のいずれか1項に記載の情報処理装置。
【請求項7】
前記分析手段は、前記決定係数及び前記偏回帰係数を前記分析値として導出する手段であり、
前記評価手段は、前記導出された決定係数が前記決定係数許容領域と異なる所定の決定係数非許容領域に含まれるときには、耐タンパ性が低いと判定し、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数に基づいて前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段である、
請求項6に記載の情報処理装置。
【請求項8】
前記評価手段は、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数が所定の偏回帰係数許容領域に含まれるか否かを判定して、該偏回帰係数許容領域に含まれない偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段である、
請求項7に記載の情報処理装置。
【請求項9】
前記評価手段は、前記取得された複数の消費電力データの標準偏差に基づいて、耐タンパ性が高いか否かを判定し、耐タンパ性が低いときには、前記導出された分析値に基づいて前記暗号処理回路の耐タンパ性を評価する手段である、
請求項1〜8のいずれか1項に記載の情報処理装置。
【請求項10】
前記状態変数は、前記入力ビット又は前記出力ビットのうちいずれかの1ビットの値又は値の遷移の有無を表す変数である、
請求項1〜9のいずれか1項に記載の情報処理装置。
【請求項11】
請求項1〜10のいずれか1項に記載の情報処理装置であって、
前記暗号処理回路は、乱数ビットの値により内部の回路動作をマスクする乱数マスク回路を有しており、
前記消費電力データ取得手段は、前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数及び前記乱数ビットの状態を表す状態変数と、該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、
前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記乱数ビットの状態を表す状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを前記乱数ビットと前記消費電力との相関値として導出し、該相関値に基づいて前記乱数ビットと前記消費電力との相関が高いと判定したときには、前記取得した複数の消費電力データを乱数ビットの値に応じて複数のグループに分類する分類手段、
を備え、
前記分析手段は、同じ前記グループに属する消費電力データに基づいて、前記回帰分析を行って前記分析値を導出する手段である、
情報処理装置。
【請求項12】
暗号処理回路の耐タンパ性を評価する情報処理方法であって、
(a)前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得するステップと、
(b)前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出するステップと、
(c)前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価するステップと、
を含む情報処理方法。
【請求項13】
請求項12に記載の情報処理方法の各ステップを1又は複数のコンピューターに実現させるプログラム。
【請求項1】
暗号処理回路の耐タンパ性を評価する情報処理装置であって、
前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得する消費電力データ取得手段と、
前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する分析手段と、
前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価する評価手段と、
を備えた情報処理装置。
【請求項2】
前記消費電力データ取得手段は、複数の異なる前記状態変数と該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、
前記分析手段は、前記取得された消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた複数の前記状態変数をそれぞれ説明変数として重回帰分析を行い、該分析により決定係数及び偏回帰係数の少なくともいずれかを前記分析値として導出する手段である、
請求項1に記載の情報処理装置。
【請求項3】
前記分析手段は、前記偏回帰係数を前記分析値として導出する手段であり、
前記評価手段は、前記導出された偏回帰係数に基づいて、前記暗号処理回路における前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段である、
請求項2に記載の情報処理装置。
【請求項4】
前記評価手段は、前記導出された偏回帰係数のうち、所定の偏回帰係数許容領域に含まれない偏回帰係数があるときには、該偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段である、
請求項3に記載の情報処理装置。
【請求項5】
前記評価手段は、前記偏回帰係数に基づいて耐タンパ性が低いと判定した状態変数があるときには、該状態変数を選択関数として前記暗号処理回路の電力差分解析を行い、該電力差分解析が成功したか否かにより該暗号処理回路の耐タンパ性を評価する手段である、
請求項3又は4に記載の情報処理装置。
【請求項6】
前記分析手段は、前記決定係数を前記分析値として導出する手段であり、
前記評価手段は、前記導出された決定係数が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定する手段である、
請求項2〜5のいずれか1項に記載の情報処理装置。
【請求項7】
前記分析手段は、前記決定係数及び前記偏回帰係数を前記分析値として導出する手段であり、
前記評価手段は、前記導出された決定係数が前記決定係数許容領域と異なる所定の決定係数非許容領域に含まれるときには、耐タンパ性が低いと判定し、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数に基づいて前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段である、
請求項6に記載の情報処理装置。
【請求項8】
前記評価手段は、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数が所定の偏回帰係数許容領域に含まれるか否かを判定して、該偏回帰係数許容領域に含まれない偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段である、
請求項7に記載の情報処理装置。
【請求項9】
前記評価手段は、前記取得された複数の消費電力データの標準偏差に基づいて、耐タンパ性が高いか否かを判定し、耐タンパ性が低いときには、前記導出された分析値に基づいて前記暗号処理回路の耐タンパ性を評価する手段である、
請求項1〜8のいずれか1項に記載の情報処理装置。
【請求項10】
前記状態変数は、前記入力ビット又は前記出力ビットのうちいずれかの1ビットの値又は値の遷移の有無を表す変数である、
請求項1〜9のいずれか1項に記載の情報処理装置。
【請求項11】
請求項1〜10のいずれか1項に記載の情報処理装置であって、
前記暗号処理回路は、乱数ビットの値により内部の回路動作をマスクする乱数マスク回路を有しており、
前記消費電力データ取得手段は、前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数及び前記乱数ビットの状態を表す状態変数と、該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、
前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記乱数ビットの状態を表す状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを前記乱数ビットと前記消費電力との相関値として導出し、該相関値に基づいて前記乱数ビットと前記消費電力との相関が高いと判定したときには、前記取得した複数の消費電力データを乱数ビットの値に応じて複数のグループに分類する分類手段、
を備え、
前記分析手段は、同じ前記グループに属する消費電力データに基づいて、前記回帰分析を行って前記分析値を導出する手段である、
情報処理装置。
【請求項12】
暗号処理回路の耐タンパ性を評価する情報処理方法であって、
(a)前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得するステップと、
(b)前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出するステップと、
(c)前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価するステップと、
を含む情報処理方法。
【請求項13】
請求項12に記載の情報処理方法の各ステップを1又は複数のコンピューターに実現させるプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図30】
【図31】
【公開番号】特開2013−42406(P2013−42406A)
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願番号】特願2011−178732(P2011−178732)
【出願日】平成23年8月18日(2011.8.18)
【出願人】(599002043)学校法人 名城大学 (142)
【Fターム(参考)】
【公開日】平成25年2月28日(2013.2.28)
【国際特許分類】
【出願日】平成23年8月18日(2011.8.18)
【出願人】(599002043)学校法人 名城大学 (142)
【Fターム(参考)】
[ Back to top ]