(57)【特許請求の範囲】
【請求項１】
暗号処理回路の耐タンパ性を評価する情報処理装置であって、
前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す複数の異なる状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得する消費電力データ取得手段と、
前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた複数の前記状態変数を説明変数として重回帰分析を行い、該分析により決定係数及び偏回帰係数を分析値として導出する分析手段と、
前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価する評価手段と、
を備え、
前記評価手段は、前記導出された決定係数が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定し、前記導出された決定係数が前記決定係数許容領域と異なる所定の決定係数非許容領域に含まれるときには、耐タンパ性が低いと判定し、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数に基づいて前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段である、
情報処理装置。
【請求項２】
前記評価手段は、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数が所定の偏回帰係数許容領域に含まれるか否かを判定して、該偏回帰係数許容領域に含まれない偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段である、
請求項１に記載の情報処理装置。
【請求項３】
前記評価手段は、前記偏回帰係数に基づいて耐タンパ性が低いと判定した状態変数があるときには、該状態変数を選択関数として前記暗号処理回路の電力差分解析を行い、該電力差分解析が成功したか否かにより該暗号処理回路の耐タンパ性を評価する手段である、
請求項１又は２に記載の情報処理装置。
【請求項４】
前記評価手段は、前記取得された複数の消費電力データの標準偏差に基づいて、耐タンパ性が高いか否かを判定し、耐タンパ性が低いときには、前記導出された分析値に基づいて前記暗号処理回路の耐タンパ性を評価する手段である、
請求項１〜３のいずれか１項に記載の情報処理装置。
【請求項５】
前記状態変数は、前記入力ビット又は前記出力ビットのうちいずれかの１ビットの値又は値の遷移の有無を表す変数である、
請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
請求項１〜５のいずれか１項に記載の情報処理装置であって、
前記暗号処理回路は、乱数ビットの値により内部の回路動作をマスクする乱数マスク回路を有しており、
前記消費電力データ取得手段は、前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数及び前記乱数ビットの状態を表す状態変数と、該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、
前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記乱数ビットの状態を表す状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを前記乱数ビットと前記消費電力との相関値として導出し、該相関値に基づいて前記乱数ビットと前記消費電力との相関が高いと判定したときには、前記取得した複数の消費電力データを乱数ビットの値に応じて複数のグループに分類する分類手段、
を備え、
前記分析手段は、同じ前記グループに属する消費電力データに基づいて、前記重回帰分析を行って前記分析値を導出する手段である、
情報処理装置。
【請求項７】
暗号処理回路の耐タンパ性を評価する情報処理方法であって、
（ａ）前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す複数の異なる状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得するステップと、
（ｂ）前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた複数の前記状態変数を説明変数として重回帰分析を行い、該分析により決定係数及び偏回帰係数を分析値として導出するステップと、
（ｃ）前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価するステップと、
を含み、
前記ステップ（ｃ）では、前記導出された決定係数が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定し、前記導出された決定係数が前記決定係数許容領域と異なる所定の決定係数非許容領域に含まれるときには、耐タンパ性が低いと判定し、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数に基づいて前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する、
情報処理方法。
【請求項８】
請求項７に記載の情報処理方法の各ステップを１又は複数のコンピューターに実現させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置，情報処理方法及びそのプログラムに関する。
【背景技術】
【０００２】
従来、暗号処理回路の外部からの攻撃に対する耐性である耐タンパ性を評価する情報処理装置として、暗号処理回路に実際に外部からの攻撃を試み、攻撃が成功したか否かにより耐タンパ性を評価するものが知られている。そして、このような攻撃手法としては、暗号処理回路の消費電力とその回路中の秘密情報との関係を用いて消費電力から秘密情報を取得する電力差分解析が知られている。例えば、特許文献１には、論理回路の信号が変化した回数に基づいて消費電力を算出して、電力差分解析を行って耐タンパ性を評価することが記載されている。また、特許文献２には、耐タンパ対策回路の機能を有効にした場合と有効にしない場合とで電力差分解析の結果を比較して、耐タンパ対策回路の評価をすることが記載されている。
【０００３】
ここで、電力差分解析とは、暗号回路の多数の消費電力データからその平均値を求め、これを２つにグループ分けしたときの両者の差分の大小に基づいて秘密情報を取得する攻撃手法である。電力差分解析は例えば次のように行う。まず、暗号処理回路の消費電力を測定して出力データと消費電力とを対応づけた消費電力データを多数取得する。続いて、取得したい秘密情報（例えば秘密鍵）を特定値に仮定し、その仮定の下で消費電力データの出力データに対する暗号処理回路の入力データを予測する。次に、選択関数としてこの入力データ中の特定ビットを設定し、この選択関数が値０か値１かによって、消費電力データを２つのグループに分け、グループ毎の消費電力の平均波形を求めて２つのグループの平均波形の差分を求める。このような平均波形の差分を秘密情報の取り得る全てのパターン（例えば８ビットの秘密鍵の場合には２５６パターン）について求める。こうすると、入力データが異なることによる消費電力のデータのばらつきが平均波形においてはキャンセルされる一方、仮定した秘密情報が正しい値であるときには、選択関数が値０であるか値１であるかによる暗号処理回路中の消費電力の差はキャンセルされないから、平均波形の差分が大きい値となる。これに対し、仮定した秘密情報が正しい値でないときには、２つのグループの平均波形の差分は小さい値となる。このような性質を利用して、平均波形の差分が最大となるときの秘密情報の仮定値が正解の値であると推定して、秘密情報を取得することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開２００６−００６１９８号公報
【特許文献２】特許第４５９４６６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、電力差分解析による暗号処理回路への攻撃を行って、攻撃が成功したか否かにより耐タンパ性を評価する手法では、評価に手間や時間がかかるという問題があった。例えば、電力差分解析で１回の攻撃を行うためには、秘密情報の取り得るパターン全てについて平均波形の差分を導出してこれらを比較する処理が必要になるため手間や時間がかかっていた。さらに、選択関数をどのビットに設定するかによっても攻撃が成功するか否かが変わるため、このような手間や時間のかかる電力差分解析による攻撃を、選択関数を変更して複数回試す必要があった。このため、より効率的に耐タンパ性の評価を行うことが望まれていた。
【０００６】
本発明は、上述した課題に鑑みなされたものであり、暗号処理回路の耐タンパ性の評価をより効率的に行うことを主目的とする。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、
暗号処理回路の耐タンパ性を評価する情報処理装置であって、
前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得する消費電力データ取得手段と、
前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する分析手段と、
前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価する評価手段と、
を備えたものである。
【０００８】
この本発明の情報処理装置では、暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得し、取得された複数の消費電力データに基づいて、消費電力を目的変数とし消費電力に対応づけられた状態変数を説明変数として回帰分析を行い、分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する。そして、導出された分析値に基づいて、暗号処理回路の耐タンパ性を評価する。こうして導出した分析値は状態変数と消費電力との相関を表すものであり、換言すると消費電力から状態変数の値が推測されやすいか否かを表すものとなる。この分析値に基づいて耐タンパ性を評価することで、電力差分解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。ここで、回帰分析とは、重回帰分析と単回帰分析とのいずれか又は両方を意味する。決定係数とは、自由度調整済決定係数と自由度調整済みでない決定係数とのいずれか又は両方を意味する。回帰係数とは、単回帰分析における回帰係数と、重回帰分析における偏回帰係数のいずれか又は両方を意味する。また、入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数は、例えば入力ビット及び出力ビットの少なくともいずれかの値としてもよいし、値の遷移の有無としてもよい。また、状態変数は、入力ビット又は出力ビットのうちいずれかの１ビットの値又は値の遷移の有無を表す変数としてもよい。
【０００９】
本発明の情報処理装置において、前記消費電力データ取得手段は、複数の異なる前記状態変数と該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、前記分析手段は、前記取得された消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた複数の前記状態変数をそれぞれ説明変数として重回帰分析を行い、該分析により決定係数及び偏回帰係数の少なくともいずれかを前記分析値として導出する手段としてもよい。こうすれば、複数の状態変数と消費電力との相関を重回帰分析によりまとめて分析することができるため、複数回の単回帰分析を行う場合に比べて効率的に耐タンパ性を評価できる。
【００１０】
本発明の情報処理装置において、前記分析手段は、前記偏回帰係数を前記分析値として導出する手段であり、前記評価手段は、前記導出された偏回帰係数に基づいて、前記暗号処理回路における前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段としてもよい。こうすれば、具体的に耐タンパ性の低い状態変数を判定することができる。この場合において、前記導出された偏回帰係数のうち、所定の偏回帰係数許容領域に含まれない偏回帰係数があるときには、該偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段としてもよい。こうすれば、各状態変数の耐タンパ性を簡易な方法で評価することができる。ここで、所定の偏回帰係数許容領域とは、耐タンパ性が高いとみなせる偏回帰係数の領域であり、例えば実験により経験的に定めた領域としてもよい。また、前記評価手段は、前記偏回帰係数に基づいて耐タンパ性が低いと判定した状態変数があるときには、該状態変数を選択関数として前記暗号処理回路の電力差分解析を行い、該電力差分解析が成功したか否かにより該暗号処理回路の耐タンパ性を評価する手段としてもよい。こうすれば、耐タンパ性が低いと判定された状態変数について、電力差分解析を行って耐タンパ性を評価するため、より確実に耐タンパ性の評価を行うことができる。
【００１１】
本発明の情報処理装置において、前記分析手段は、前記決定係数を前記分析値として導出する手段であり、前記評価手段は、前記導出された決定係数が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定する手段としてもよい。こうすれば、決定係数は状態変数と消費電力との全体的な相関を表すものであるため、この決定係数に基づいて耐タンパ性を評価することができる。ここで、所定の決定係数許容領域とは、状態変数と消費電力との全体的な相関が低く耐タンパ性が高いとみなせる決定係数の領域であり、例えば実験により経験的に定めた領域としてもよい。この場合において、前記分析手段は、前記決定係数及び前記偏回帰係数を前記分析値として導出する手段であり、前記評価手段は、前記導出された決定係数が前記決定係数許容領域と異なる所定の決定係数非許容領域に含まれるときには、耐タンパ性が低いと判定し、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数に基づいて前記複数の状態変数のうち耐タンパ性の低い状態変数を判定する手段としてもよい。こうすれば、決定係数による判定で耐タンパ性が高いわけではないが、耐タンパ性が低いわけでもない場合に、具体的に耐タンパ性の低い状態変数を判定することができる。このため、常に耐タンパ性の低い状態変数を判定するものと比べて効率よく耐タンパ性の評価を行うことができる。ここで、所定の決定係数非許容領域とは、状態変数と消費電力との全体的な相関が高く耐タンパ性が低いとみなせる決定係数の領域であり、例えば実験により経験的に定めた領域としてもよい。また、導出された決定係数が決定係数許容領域及び決定係数非許容領域のいずれにも含まれないときとは、決定係数が決定係数許容領域と決定係数非許容領域との中間の領域に含まれるときを意味する。この場合において、前記評価手段は、前記導出された決定係数が前記決定係数許容領域及び前記決定係数非許容領域のいずれにも含まれないときには、前記導出された偏回帰係数が所定の偏回帰係数許容領域に含まれるか否かを判定して、該偏回帰係数許容領域に含まれない偏回帰係数に対応する前記状態変数の耐タンパ性が低いと判定する手段としてもよい。こうすれば、各状態変数の耐タンパ性を簡易な方法で評価することができる。
【００１２】
本発明の情報処理装置において、前記評価手段は、前記取得された複数の消費電力データの標準偏差に基づいて、耐タンパ性が高いか否かを判定し、耐タンパ性が低いときには、前記導出された分析値に基づいて前記暗号処理回路の耐タンパ性を評価する手段としてもよい。消費電力データの標準偏差が小さい、すなわち消費電力データのばらつきが小さい場合には、状態変数と消費電力データとの相関も小さいため、耐タンパ性が高いと考えられる。そのため、消費電力データの標準偏差に基づいて耐タンパ性が低いと判定したときに分析値に基づく耐タンパ性を評価することで、常に分析値に基づく耐タンパ性を評価する場合と比べて効率的に耐タンパ性の評価をすることができる。
【００１３】
本発明の情報処理装置において、前記暗号処理回路は、乱数ビットの値により内部の回路動作をマスクする乱数マスク回路を有しており、前記消費電力データ取得手段は、前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数及び前記乱数ビットの状態を表す状態変数と、該暗号処理回路における消費電力とが対応付けられた前記消費電力データを複数取得する手段であり、前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記乱数ビットの状態を表す状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを前記乱数ビットと前記消費電力との相関値として導出し、該相関値に基づいて前記乱数ビットと前記消費電力との相関が高いと判定したときには、前記取得した複数の消費電力データを乱数ビットの値に応じて複数のグループに分類する分類手段、を備え、前記分析手段は、同じ前記グループに属する消費電力データに基づいて、前記回帰分析を行って前記分析値を導出する手段としてもよい。こうすれば、乱数マスク回路の乱数ビットと消費電力との相関が高いときには、消費電力データをグループ分けしてから回帰分析を行うことで、乱数ビットの影響を除いた耐タンパ性評価ができる。これにより、例えば実際の暗号処理回路への攻撃として、消費電力データと乱数ビットとの間の相関からまず乱数ビットの値を読み取り、その後に乱数ビットの値が同じ値である消費電力データのみについて電力差分解析を行うといった攻撃手法に対する耐タンパ性を評価することができる。ここで、乱数マスク回路には、例えばＲＳＬ(Random Switch Logic)回路やＭＤＰＬ（Masked Dual-rail Pre-charge Logic）回路が含まれる。
【００１４】
本発明の情報処理方法は、
暗号処理回路の耐タンパ性を評価する情報処理方法であって、
（ａ）前記暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と該暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得するステップと、
（ｂ）前記取得された複数の消費電力データに基づいて、前記消費電力を目的変数とし該消費電力に対応づけられた前記状態変数を説明変数として回帰分析を行い、該分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出するステップと、
（ｃ）前記導出された分析値に基づいて、前記暗号処理回路の耐タンパ性を評価するステップと、
を含むものである。
【００１５】
この本発明の情報処理方法では、暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得し、取得された複数の消費電力データに基づいて、消費電力を目的変数とし消費電力に対応づけられた状態変数を説明変数として回帰分析を行い、分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する。そして、導出された分析値に基づいて、暗号処理回路の耐タンパ性を評価する。こうして導出した分析値は状態変数と消費電力との相関を表すものであり、換言すると消費電力から状態変数の値が推測されやすいか否かを表すものとなる。この分析値に基づいて耐タンパ性を評価することで、電力解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。なお、この情報処理方法において、上述した情報処理装置の種々の態様を採用してもよいし、上述した情報処理装置の各機能を実現するようなステップを追加してもよい。
【００１６】
本発明のプログラムは、上述した情報処理方法の各ステップを１又は複数のコンピューターに実現させるためのものである。このプログラムをコンピューターに実行させれば、上述した本発明の情報処理方法が実現されるため、本発明の情報処理方法と同様の作用効果が得られる。本発明のプログラムは、コンピューターが読み取り可能な記録媒体（例えばハードディスク、ＲＯＭ、ＦＤ、ＣＤ、ＤＶＤなど）に記録されていてもよいし、伝送媒体（インターネットやＬＡＮなどの通信網）を介してあるコンピューターから別のコンピューターに配信されてもよいし、その他どのような形で授受されてもよい。
【図面の簡単な説明】
【００１７】
【図１】情報処理装置１０の構成の概略を示す構成図。
【図２】耐タンパ性評価ルーチンの一例を示すフローチャート。
【図３】評価用回路４０の構成の概略を示す構成図。
【図４】SubBytes変換回路４４の出力値を定めた真理値表の説明図。
【図５】評価用回路４０を表す評価用回路データの一例を示す説明図。
【図６】変換後の評価用回路データの一例を示す説明図。
【図７】入力データ生成部２３が生成した入力データの一例を示す説明図。
【図８】シミュレーション結果の一例を示す説明図。
【図９】取得した消費電力データの説明図。
【図１０】分析評価処理の一例を示すフローチャート。
【図１１】導出した分析値の一例を示す説明図。
【図１２】情報処理装置１１０の構成の概略を示す構成図。
【図１３】評価用回路１４０の構成の概略を示す構成図。
【図１４】取得した消費電力データの内容をテーブルとして示した説明図。
【図１５】分析評価処理の一例を示すフローチャート。
【図１６】導出した分析値及び相関値の一例を示す説明図。
【図１７】評価実験１における、各タイムスロットに対する決定係数Ｒ2の値を示したグラフ。
【図１８】評価実験１における、各タイムスロットに対する偏回帰係数ａ１〜ａ８の値を示したグラフ。
【図１９】評価実験１における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図２０】評価実験２における、各タイムスロットに対する決定係数Ｒ2の値を示したグラフ。
【図２１】評価実験２における、各タイムスロットに対する偏回帰係数ａ１〜ａ８の値を示したグラフ。
【図２２】評価実験２における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図２３】評価実験３における、各タイムスロットに対する決定係数Ｒ2の値を示したグラフ。
【図２４】評価実験３における、各タイムスロットに対する偏回帰係数ａ１〜ａ８，ｂの値を示すグラフ。
【図２５】評価実験３における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図２６】評価実験３における、入力ビットＡのハミング重みと消費電力Ｗとの関係を示したグラフ。
【図２７】評価実験３における、グループ分け後の各タイムスロットに対する偏回帰係数ａ１〜ａ８の値を示したグラフ。
【図２８】評価実験３における、グループ分け後の消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図２９】評価実験４における、実施例の情報処理装置による耐タンパ性の評価結果の一例を示すグラフ。
【図３０】評価実験４における、消費電力データの総数と正解鍵の順位との関係を示したグラフ。
【図３１】評価実験４における、入力ビットＡのハミング重みと消費電力Ｗとの関係を示したグラフ。
【発明を実施するための形態】
【００１８】
［第１実施形態］
図１は、第１実施形態である情報処理装置１０の構成の概略を示す構成図である。図示するように、情報処理装置１０は、制御部１２と、記憶部１４と、表示部１６と、操作部１８とを備えている。この情報処理装置１０は、例えば汎用のコンピューターであり、暗号処理回路の耐タンパ性を評価する装置としての機能を有する。
【００１９】
制御部１２は、情報処理装置１０全体の制御を司るものであり、ＣＰＵ，ＲＯＭ，ＲＡＭなどを備えたプロセッサーとして構成されている。制御部１２は、記憶部１４に記憶された耐タンパ性評価プログラムを実行したり、表示部１６に表示データを出力して画面を表示するよう制御したり、操作部１８からの操作信号を入力したりする。
【００２０】
記憶部１４は、例えばＨＤＤなどの大容量記憶装置として構成され各種アプリケーションプログラムや各種データファイルを記憶するものである。この記憶部１４は、耐タンパ性評価プログラム２０と、回路データベース３１とを備えている。
【００２１】
耐タンパ性評価プログラム２０は、評価用回路データ生成部２１と、評価用回路データ変換部２２と、入力データ生成部２３と、回路シミュレーター２４と、消費電力データ取得部２５と、分析部２６と、評価部２７とを備えている。評価用回路データ生成部２１は、記憶部１４の回路データベース３１に記憶されたデータを読み出して、耐タンパ性を評価する対象となる暗号処理回路のデータである評価用回路データを生成する機能を有する。評価用回路データ変換部２２は、評価用回路データ生成部２１が生成した評価用回路データを回路シミュレーター２４が利用できるデータ形式に変換する機能を有する。入力データ生成部２３は、回路シミュレーター２４が行うシミュレーションにおいて評価用回路に入力される入力データを生成する機能を有する。回路シミュレーター２４は、評価用回路データ変換部２２に変換された評価用回路データと入力データ生成部２３に生成された入力データとを取得して、評価用回路データで表される評価用回路に入力データを入力したときの回路動作をシミュレーションして、出力データや消費電流波形を生成する機能を有する。本実施形態では、回路シミュレーター２４は電子回路のアナログ動作をシミュレーションするソフトウェアであるＳＰＩＣＥ （Simulation Program with Integrated Circuit Emphasis）とした。消費電力データ取得部２５は、回路シミュレーター２４でのシミュレーションの結果から、評価用回路データで表される暗号処理回路における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数と暗号処理回路における消費電力とが対応付けられた消費電力データを複数取得する機能を有する。分析部２６は、消費電力データ取得部２５に取得された複数の消費電力データに基づいて、消費電力を目的変数とし消費電力に対応づけられた状態変数を説明変数として回帰分析を行い、分析により決定係数及び回帰係数の少なくともいずれかを分析値として導出する機能を有する。評価部２７は、分析部２６に導出された分析値に基づいて、暗号処理回路の耐タンパ性を評価する機能を有する。なお、制御部１２が耐タンパ性評価プログラム２０を実行することにより、評価用回路データ生成部２１、評価用回路データ変換部２２、入力データ生成部２３、回路シミュレーター２４、消費電力データ取得部２５、分析部２６、評価部２７の上述した機能が実現される。
【００２２】
回路データベース３１には、耐タンパ性を評価する対象となる暗号処理回路及びその暗号処理回路を含むデバイス全体の回路データや、デバイスのセルライブラリ等の設計データを含むデータが記憶されている。
【００２３】
表示部１６は、例えば液晶ディスプレイとして構成されており、制御部１２から出力された表示データに基づく画像を表示して各種情報をユーザーに表示する機能を有している。操作部１８は、例えばキーボードやマウス等の入力装置として構成されており、ユーザーから入力された操作に基づく操作信号を制御部１２に出力する機能を有している。
【００２４】
次に、こうして構成された情報処理装置１０の動作、特に、暗号処理回路の耐タンパ性を評価する際の動作について説明する。図２は、耐タンパ性評価ルーチンの一例を示すフローチャートである。このルーチンは、ユーザーが操作部１８を操作して耐タンパ性を評価する対象となる評価用回路を指定し、耐タンパ性の評価を行うよう指示したときに制御部１２が耐タンパ性評価プログラム２０を実行することにより行われる。
【００２５】
この耐タンパ性評価ルーチンが実行されると、評価用回路データ生成部２１は、まず、評価用回路データとして、ユーザーに指定された評価用回路の回路データを回路データベース３１に記憶されたデータに基づいて生成する（ステップＳ１００）。図３は、評価用回路４０の構成の概略を示す構成図である。本実施形態では、この図に示した評価用回路４０の耐タンパ性の評価を行うようユーザーから指定がなされたものとして、以下の説明を行う。評価用回路４０は、暗号方式の１つであるＡＥＳ（Advanced Encryption Standard）の回路の部分的なモジュールとして構成された暗号処理回路であり、レジスター４２と、SubBytes変換回路４４と、排他的論理和回路４６とを備えている。レジスター４２は、入力された８ビットの入力ビットＡを保持するものである。SubBytes変換回路４４は、レジスター４２の出力部に接続され、入力ビットＡに対してＡＥＳにおける非線形変換であるSubBytes処理を行うものであり、入力ビットＡに対応して真理値表により定められた出力値を出力するように構成された論理回路である。図４は、SubBytes変換回路４４の出力値を定めた真理値表の説明図である。この図に示すように、入力ビットＡの上位４ビットの値が縦軸、下位４ビットの値が横軸であり、両者の交点に位置する値が出力値（８ビット）となる。例えば、入力Ａの上位４ビットが値０（二進数表記で００００）、入力Ａの下位４ビットが値８（二進数表記で１０００）のときには、SubBytes変換回路４４は値３０を出力する。排他的論理和回路４６は、ＡＥＳにおける暗号化のための秘密鍵を組み込む処理であるAddRoundKey処理を行う回路であり、SubBytes変換回路４４の出力値と排他的論理和回路４６に入力された秘密鍵Ｋ（８ビット）との排他的論理和を演算して、その結果を出力ビットＢ（８ビット）として出力する。なお、図３は評価用回路４０の概略を示したものであり、実際の評価用回路データは、所定のハードウェア記述言語（例えばVerilog-HDL）で評価用回路４０を表したデータである。図５は、評価用回路４０を表す評価用回路データの一例を示す説明図である。図５における、「module SingleSbAttack(x,k,clk,y);」から「endmodule」までが評価用回路４０の最上位階層の記述である。その中の「always@(posedge clk)begin」から「end」までがレジスター４２を表す記述、「SubBytesTBL sb1(.x(dreg),.y(addkey_in));」がSubBytes変換回路４４を表す記述、「assign y = addkey_in^k;」が排他的論理和回路４６を表す記述である。また、「module SubBytesTBL(x,y);」以降はSubBytes変換回路４４の構成の詳細を表す記述である。
【００２６】
次に、評価用回路データ変換部２２は、評価用回路データを回路シミュレーター２４が利用できるようＳＰＩＣＥのデータ形式に変換する（ステップＳ１１０）。図６は、変換後の評価用回路データの一例を示す説明図である。図６において、「.subckt」以降は評価用回路４０におけるＳＰＩＣＥのサブサーキットの記述である。また、「XU1229」以降は回路データ記憶部３１に記憶されたセルライブラリにおけるゲートの接続仕様を表す記述である。続いて、入力データ生成部２３は、評価用回路４０に入力する入力データを生成する（ステップＳ１２０）。入力データは、例えば評価用回路データに供給される入力ビットＡの値、クロック信号の値、秘密鍵Ｋの値、及び評価用回路４０の図示しない制御ピンへの入力値などのデータである。本実施形態では、入力ビットＡの値は所定期間Ｔ１（本実施形態では５０ｎｓｅｃとした）が経過する毎にランダムに変化させるものとした。また、秘密鍵Ｋの値は、ランダムに定めた値とした。図７は、入力データ生成部２３が生成した入力データの一例を示す説明図である。図７において、８桁の数値は時刻を表している。また、各時刻に対応する９桁の数値のうち左側の８桁は入力ビットＡの値を表し、一番右の１桁はクロック信号の値を表している。例えば、時刻「００００００２５」は時刻２５ｎｓｅｃを意味し、それに対応する値「０１１００１００１」は、時刻２５ｎｓｅｃにおける入力ビットＡが二進数表記で値「０１１００１００」であり、クロック信号が値１であることを意味している。また、本実施形態では所定期間Ｔ１が値５０ｎｓｅｃに設定されているため、図７では５０ｎｓｅｃ毎に入力ビットＡの値が変化している。なお、所定期間Ｔ１は、例えば評価用回路４０が実際にデバイスで用いられる際の入力データの処理間隔に基づいて定める。
【００２７】
次に、回路シミュレーター２４は、ステップＳ１１０で評価用回路データ変換部２２に変換された評価用回路データとステップＳ１２０で入力データ生成部２３に生成された入力データとを取得して、評価用回路４０に入力データを入力したときの回路動作のシミュレーションを行う（ステップＳ１３０）。これにより、回路シミュレーター２４は、入力ビットＡに対して出力される出力ビットＢの値や、評価用回路４０の動作内容に基づいて演算した消費電流波形を生成する。
【００２８】
続いて、消費電力データ取得部２５は、回路シミュレーター２４のシミュレーションの結果から、評価用回路４０における入力ビットＡの各ビットが値０であるか値１であるかを表す状態変数と評価用回路４０における消費電力Ｗとが対応づけられた消費電力データを、複数の入力ビットＡの値に応じて複数取得する（ステップＳ１４０）。図８は、シミュレーション結果の一例を示す説明図である。図８において、「２５０００」以降はシミュレーションの結果として導出された評価用回路４０の消費電流波形のデータである。消費電流波形のデータは、０．０１ｎｓｅｃ毎の時刻及び消費電流値のデータとして表されている。例えば時刻「２５０１０」は、時刻が２５．０１０ｎｓｅｃであることを意味し、消費電流値「１２９６８３１５」は、時刻２５．０１０ｎｓｅｃにおける消費電流値が１２９６８３１５×１０-10Ａであることを意味する。また、図９は、取得した消費電力データの説明図である。図９（ａ）は、取得した消費電力データの内容をテーブルとして表した説明図であり、図９（ｂ）は、タイムスロットと消費電力Ｗとの関係を表す説明図である。図９（ａ）に示すように、消費電力データは入力ビットＡと、出力ビットＢと、消費電力Ｗとが対応づけられたデータであり、本実施形態では入力データ生成部２３に生成された入力データに基づいて入力ビットＡの値を所定期間Ｔ１毎に変化させたときの、パターン番号０〜ｍ（本実施形態ではパターン番号ｍは値１９９９）までのｍ＋１個（本実施形態では２０００個）の消費電力データを取得するものとした。なお、図９（ａ）における「ｈ」は１６進数表記であることを意味する。例えばパターン番号０における入力ビットＡの値は「６４ｈ」であり、ビット列で表すと「０１１００１００」を意味する。この値は、図７に示した時刻「００００００００」，「００００００２５」における入力ビットＡの値に対応している。同様に、パターン番号１における入力ビットＡの値は、図７に示した時刻「００００００５０」，「００００００７５」における入力ビットＡの値に対応している。また図９（ａ）に示すように、１つの消費電力データについて、消費電力Ｗの値はタイムスロット番号０〜７までの８つのタイムスロット毎に存在する。図９（ｂ）に示すように、入力ビットＡの値を入力してから最初のタイムスロットまでの期間を所定期間Ｔ２、最初のタイムスロットの開始時刻を時刻ｔ０、１つのタイムスロットの時間幅を所定期間Ｔ３（本実施形態では０．２ｎｓｅｃとした）とすると、タイムスロットは時刻ｔ０から所定期間Ｔ３毎に時間を区切った期間である。例えばパターン番号０の消費電力データにおけるタイムスロット番号ｓとは、パターン番号０の入力ビットＡの値６４ｈが評価用回路４０に入力された時刻から所定期間Ｔ２が経過した時刻を時刻ｔ０として、時刻（ｔ０＋Ｔ３×（ｓ−１））から時刻（ｔ０＋Ｔ３×ｓ）までの期間を意味する。消費電力Ｗは、回路シミュレーター２４に導出された消費電流波形に基づいてこのタイムスロット毎の消費電力の平均値として導出された値である。ここで、図８に示したように回路シミュレーター２４は消費電流を導出するものであるが、評価用回路４０の制御電圧は一定であり、消費電流から消費電力及びその平均値としての消費電力Ｗを容易に算出することができる。所定期間Ｔ２，Ｔ３は、例えば次のように経験的に設定する。まず、評価用回路４０の回路の入力から出力までに要する処理時間や内部の処理内容を考慮して、評価用回路４０を電力差分解析により攻撃するときに攻撃対象となりやすい期間を予め調べておく。すなわち、消費電力から秘密情報が取得しやすいと想定される期間を予め調べておく。そして、その期間がタイムスロットに含まれるように、所定期間Ｔ２やＴ３を設定する。なお、入力ビットＡの値が入力されてから次の入力ビットＡが入力されるまでの期間、すなわち所定期間Ｔ１が経過するまでの期間を均等に分割して、複数個のタイムスロットを設定してもよい。
【００２９】
続いて、分析部２６及び評価部２７は、ステップＳ１４０で取得された消費電力データに基づいて、評価用回路４０の耐タンパ性の分析評価処理を実行する（ステップＳ１５０）。ここで、耐タンパ性評価ルーチンの説明を中断して、分析評価処理について説明する。図１０は、分析評価処理の一例を示すフローチャートである。
【００３０】
この分析評価処理が開始されると、評価部２７は、まず、処理対象のタイムスロット番号ｎを値１に初期化する（ステップＳ２００）。続いて、評価部２７は、パターン番号０〜１９９９までの消費電力データのうちタイムスロット番号ｎに対応する２０００個の消費電力Ｗの平均値μ及び標準偏差σを導出する（ステップＳ２１０）。そして、導出した標準偏差σが閾値σｔｈ未満であるか否かを判定する（ステップＳ２２０）。ここで、閾値σｔｈは、消費電力のばらつきが少ないため状態変数と消費電力との全体的な相関が低く耐タンパ性が高いとみなせる標準偏差許容領域の上限値として設定された値であり、例えば実験により経験的に定めた値である。標準偏差σが小さく２０００個の消費電力Ｗの値にばらつきが少ないということは、状態変数である入力値Ａの値と消費電力Ｗとの相関が低いということであるから、この閾値σｔｈと標準偏差σとを比較することで、耐タンパ性が高いか否かの判定をするのである。
【００３１】
ステップＳ２２０で標準偏差σが閾値σｔｈ以上であったときには、分析部２６は、耐タンパ性が相対的に低いものとみなし、パターン番号０〜１９９９までの消費電力データのうちタイムスロット番号ｎに対応する２０００個の消費電力Ｗの値の標準化を行う（ステップＳ２３０）。本実施形態では、２０００個の消費電力Ｗのうちパターン番号ｉに対応するものを消費電力Ｗｉとすると、標準化後の消費電力ｗｉをｗｉ＝（Ｗｉ−μ）／σとして導出するものとした。このように導出された２０００個の消費電力ｗは、平均値が値０、標準偏差が値１の分布となる。このように標準化してから以降の分析及び評価を行うことで、例えば消費電力の絶対値が異なる他の暗号処理回路についての耐タンパ性の評価を行った場合との評価結果の比較がしやすくなる。
【００３２】
続いて、分析部２６は、状態変数すなわち入力ビットＡの各ビットを説明変数とし、タイムスロット番号ｎに対応する２０００個の消費電力ｗを目的変数として、重回帰分析を行い、分析値として偏回帰係数ａ１〜ａｊ（本実施形態では変数ｊは値８）及び決定係数Ｒ2を導出する（ステップＳ２４０）。この処理は、例えば以下のように行う。まず、入力ビットＡの１ビット目〜ｊビット目までの値をそれぞれ状態変数ｘ１〜ｘｊとして、消費電力ｗとｘ１〜ｘｊとの関係を以下の式（１）のように仮定する。このときの係数ａ０〜ａｊを偏回帰係数と称する。このように式（１）を仮定すると、パターン番号ｉに対応する状態変数ｘｉ１〜ｘｉｊをこの式（１）に代入して導出される消費電力ｗｉと実際の消費電力データにおける消費電力ｗｉとの差の二乗をパターン番号０〜ｍの全てについて合計した値である差の二乗和Ｅは以下の式（２）で表すことができる。そして、この差の二乗和Ｅが最小となるような偏回帰係数ａ０〜ａｎを導出する。換言すると、式（１）が最も精度良く消費電力ｗとｘ１〜ｘｊとの関係を近似する式となるような偏回帰係数ａ０〜ａｊを導出する。このようにして偏回帰係数ａ０〜ａｊを求めることで、式（１）が状態変数ｘ１〜ｘｊと消費電力ｗとの関係の近似式（重回帰式）となる。なお、偏回帰係数ａ０〜ａｊの導出は、例えば式（２）をａ０について偏微分したものを値０とおいた式を導出し、偏回帰係数ａ１〜ａｊについても同様の式を導出して、これらの式で表される連立方程式を解くことで行うことができる。偏回帰係数ａ１〜ａｊを導出すると、これを用いて決定係数Ｒ2を導出する。具体的には、まず、実際の消費電力データにおける消費電力ｗｉとその平均値との差の二乗を導出し、これをパターン番号０〜ｍの全てについて導出して合計した和である実測値の平方和Ｓｔを求める。また、実際の消費電力データにおける消費電力ｗｉと、導出した偏回帰係数ａ０〜ａ８及び実際のｘｉ１〜ｘｉｊを式（１）に代入して導出される予測値としての消費電力ｗｉとの差の二乗を導出し、これをパターン番号０〜ｍの全てについて導出して合計した和である差の平方和Ｓｅを求める。そして、以下の式（３）により決定係数Ｒ2を導出する。なお、式（３）において、定数Ｎは標本数であり、本実施形態では消費電力データの総数である値２０００である。また、定数ｐは説明変数の数であり、本実施形態では値８である。この決定係数Ｒ2は、自由度調整済決定係数とも呼ばれる。以上のようにして偏回帰係数ａ１〜ａｊ及び決定係数Ｒ2を分析値として導出する。図１１は、導出した分析値の一例を示す説明図である。図１１では、タイムスロット番号ｎが値０であるときの分析値を示しており、タイムスロット番号ｎに対応して、決定係数Ｒ2及び偏回帰係数ａ１〜ａ８が導出されている。ここで、偏回帰係数ａ１〜ａｊは、各状態変数とタイムスロット番号ｎに対応する消費電力ｗとの相関の高さを表す数値である。偏回帰係数ａ１〜ａｊは値−１〜１までの値をとり、絶対値が大きいほど偏回帰係数に対応する状態変数と消費電力ｗとの正又は負の相関が高いことを意味する。例えば、偏回帰係数ａ１の値は入力ビットＡの１ビット目の値と消費電力ｗとの相関を表す。より具体的には、偏回帰係数ａ１の絶対値が大きいほど、入力ビットＡの１ビット目が値０である場合と値１である場合とで消費電力ｗの値が大きく変化する傾向にあることを意味する。例えば図１１では、偏回帰係数ａ１と比べて偏回帰係数ａ２，ａ３，ａ４の絶対値が大きいため、入力ビットＡの１ビット目と比べて２〜４ビット目の方が消費電力ｗとの相関が高いことがわかる。また、決定係数Ｒ2は、式（１）の近似の確からしさを表す数値である。決定係数Ｒ2は、値０〜１の値をとり、値が１に近いほど近似の精度が高く、状態変数である入力ビットＡと消費電力ｗとの全体的な相関が高いことを意味する。なお、偏回帰係数ａ０は、決定係数Ｒ2の導出に必要な値ではあるが、本実施形態では以降の耐タンパ性の評価には用いないため、分析値には含めない。
【００３３】
【数１】
0005765733.tif 000002
【００３４】
次に、評価部２７は、分析部２６が導出した分析値を取得し、評価用回路４０の耐タンパ性を評価する評価処理（ステップＳ２５０）を行う。このステップＳ２５０の評価処理として、まず、分析値のうちの決定係数Ｒ2が閾値Ｒ2ｔｈ１未満であるか否かを判定する（ステップＳ２５１）。ここで、閾値Ｒ2ｔｈ１は、状態変数である入力ビットＡと消費電力ｗとの全体的な相関が低く耐タンパ性が高いとみなせる決定係数Ｒ2の領域すなわち決定係数許容領域の上限値として設定された値であり、例えば実験により経験的に定めた値である。
【００３５】
そして、ステップＳ２２０で標準偏差σが閾値σｔｈ未満であったとき、又はステップＳ２５１で決定係数Ｒ2が閾値Ｒ2ｔｈ１未満であったときには、評価用回路４０が全体的に耐タンパ性が高い旨の情報を処理対象のタイムスロット番号ｎに対応する評価結果として記憶する（ステップＳ２５２）。
【００３６】
一方、ステップＳ２５１で決定係数Ｒ2が閾値Ｒ2ｔｈ１以上であったときには、決定係数Ｒ2が閾値Ｒ2ｔｈ２以上であるか否かを判定する（ステップＳ２５３）。ここで、閾値Ｒ2ｔｈ２は、状態変数である入力ビットＡと消費電力ｗとの全体的な相関が高く耐タンパ性が低いとみなせる決定係数Ｒ2の領域すなわち決定係数非許容領域の下限値として設定された値であり、例えば実験により経験的に定めた値である。本実施形態では、閾値Ｒ2ｔｈ２は閾値Ｒ2ｔｈ１よりも大きい値である。そして、ステップＳ２５３で決定係数Ｒ2が閾値Ｒ2ｔｈ２以上であったときには、評価用回路４０が全体的に耐タンパ性が低い旨の情報を処理対象のタイムスロット番号ｎに対応する評価結果として記憶する（ステップＳ２５４）。
【００３７】
ステップＳ２５３で決定係数Ｒ2が閾値Ｒ2ｔｈ２未満であったときには、偏回帰係数ａ１〜ａ８の値に基づいて耐タンパ性の低い状態変数ｘ１〜ｘｊを判定する（ステップＳ２５５）。ステップＳ２５１で決定係数Ｒ2が閾値Ｒ2ｔｈ１以上であり、ステップＳ２５３で決定係数Ｒ2が閾値Ｒ2ｔｈ２未満であったとき、すなわち決定係数Ｒ2が決定係数許容領域と決定係数非許容領域との中間の領域に含まれるときは、決定係数による判定で全体的に耐タンパ性が高いと判定されたわけではないが、全体的に耐タンパ性が低いと判定されたわけでもない場合である。そこで、部分的に耐タンパ性が低いと判定して、状態変数ｘ１〜ｘｊのうち、具体的に耐タンパ性の低い状態変数を特定するのである。このステップＳ２５５の処理は、本実施形態では、偏回帰係数ａ１〜ａ８の各値について、状態変数と消費電力ｗとの相関が低く耐タンパ性が高いとみなせる所定の偏回帰係数許容領域に含まれるか否かを判定し、含まれない偏回帰係数に対応する状態変数が耐タンパ性が低いと判定することで行う。例えば偏回帰係数ａ１及びａ３が偏回帰係数許容領域に含まれないときには、入力ビットＡのうち１ビット目の値と３ビット目の値が消費電力ｗとの相関が高く耐タンパ性が低いと判定する。ここで、このような偏回帰係数許容領域は、例えば実験により経験的に定めることができる。なお、例えば偏回帰係数ａ１〜ａ８の各値のうち絶対値の最も高いものを耐タンパ性の低い状態変数と判定するなど、相対的な判定を行ってもよい。ステップＳ２５５で耐タンパ性の低い状態変数を判定すると、部分的に耐タンパ性が低い旨の情報と耐タンパ性が低いと判定した状態変数とを処理対象のタイムスロット番号ｎに対応する評価結果として記憶する（ステップＳ２５６）。
【００３８】
以上のステップＳ２５１〜Ｓ２５６の処理すなわちステップＳ２５０の評価処理を行って、ステップＳ２５２，Ｓ２５４，Ｓ２５６のいずれかの評価結果を記憶すると、評価部２７は、タイムスロット番号ｎを値１インクリメントして（ステップＳ２６０）、タイムスロット番号ｎが上限値（本実施形態では値７）を超えたか否かを判定する（ステップＳ２７０）。そして、タイムスロット番号ｎが上限値を超えていないときには、ステップＳ２１０に進む。一方、タイムスロット番号ｎが上限値を超えたときには、分析評価処理を終了する。この分析評価処理を行うことで、各タイムスロットについて消費電力データを用いた評価用回路４０の耐タンパ性の評価が行われる。
【００３９】
図２の耐タンパ性評価ルーチンに戻る。ステップＳ１５０の分析評価処理を行うと、評価部２７は、タイムスロット毎にステップＳ２５２，Ｓ２５４，Ｓ２５６のいずれかで記憶した評価結果を読み出して、表示部１６に評価結果出力画面を表示させて（ステップＳ１６０）、本ルーチンを終了する。評価結果出力画面では、例えばタイムスロット毎に耐タンパ性が「全体的に高い」「部分的に低い」「全体的に低い」などの評価結果を表示したり、耐タンパ性が部分的に低いタイムスロットについては入力ビットＡのうち具体的に耐タンパ性が低いと判定されたのが何ビット目であるかを表示する。また、耐タンパ性評価ルーチンで求めた標準偏差σや分析値の値をタイムスロットと対応付けてテーブルまたはグラフとして表示する。このように、耐タンパ性評価ルーチンでは、消費電力データに基づいて標準偏差σや偏回帰係数ａ１〜ａ８，決定係数Ｒ2を導出し、これらに基づいて評価用回路４０の耐タンパ性を評価するのである。
【００４０】
ここで、第１実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第１実施形態の情報処理装置１０が本発明の情報処理装置に相当し、消費電力データ取得部２５が消費電力データ取得手段に相当し、分析部２６が分析手段に相当し、評価部２７が評価手段に相当する。なお、本実施形態では、情報処理装置１０の動作を説明することにより本発明の情報処理方法の一例も明らかにしている。
【００４１】
以上詳述した第１実施形態の情報処理装置１０によれば、暗号処理回路である評価用回路４０における入力ビットＡの状態を表す状態変数と評価用回路４０における消費電力Ｗとが対応付けられた消費電力データを複数取得し、取得された複数の消費電力データに基づいて、消費電力Ｗを目的変数とし消費電力Ｗに対応づけられた状態変数ｘ１〜ｘｊを説明変数として重回帰分析を行い、分析により決定係数Ｒ2及び偏回帰係数ａ１〜ａ８を分析値として導出する。そして、導出された分析値に基づいて、評価用回路４０の耐タンパ性を評価する。これにより、電力差分解析攻撃を複数回行い攻撃が成功するか否かによって耐タンパ性を評価する場合と比べて、暗号処理回路の耐タンパ性を効率的に評価することができる。
【００４２】
また、入力ビットＡの各ビットの値をそれぞれ状態変数としており、複数の異なる状態変数ｘ１〜ｘｊと消費電力Ｗとが対応付けられた消費電力データに基づいて重回帰分析を行うため、複数の状態変数と消費電力Ｗとの相関を重回帰分析によりまとめて分析することができ、複数回の単回帰分析を行う場合に比べて効率的に耐タンパ性を評価できる。
【００４３】
さらに、決定係数Ｒ2が所定の決定係数許容領域に含まれるか否かに基づいて耐タンパ性が高いか否かを判定するため、状態変数と消費電力との全体的な相関を表す決定係数に基づいて耐タンパ性を評価することができる。また、決定係数Ｒ2が決定係数許容領域及び決定係数非許容領域のいずれにも含まれないときには、導出された偏回帰係数ａ１〜ａ８に基づいて複数の状態変数のうち耐タンパ性の低い状態変数を判定するため、決定係数による判定で耐タンパ性が高いわけではないが、耐タンパ性が低いわけでもない場合に、具体的に耐タンパ性の低い状態変数を判定することができる。また、導出された偏回帰係数ａ１〜ａ８が所定の偏回帰係数許容領域に含まれるか否かを判定して、偏回帰係数許容領域に含まれない偏回帰係数に対応する状態変数の耐タンパ性が低いと判定するため、各状態変数の耐タンパ性を簡易な方法で評価することができる。
【００４４】
さらにまた、消費電力データの標準偏差σに基づいて耐タンパ性が低いと判定したときに分析値に基づく耐タンパ性を評価するため、常に分析値に基づく耐タンパ性を評価する場合と比べて効率的に耐タンパ性の評価をすることができる。
【００４５】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【００４６】
例えば、上述した第１実施形態におけるステップＳ２１０，Ｓ２２０の処理を省略して、標準偏差σの値によらず常に重回帰分析を行うものとしてもよい。また、ステップＳ２５３，Ｓ２５５，Ｓ２５６の処理を省略し、ステップＳ２５１で決定係数Ｒ2が閾値Ｒ2ｔｈ１未満でないときにはステップＳ２５４に進み、決定係数Ｒ2が所定の決定係数許容領域に含まれるか否かに基づいて、耐タンパ性が高いか否かを判定するものとしてもよい。この場合、ステップＳ２４０で導出した偏回帰係数ａ１〜ａ８は分析値とせず、決定係数Ｒ2のみを分析値としてもよい。また、ステップＳ２５３，Ｓ２５４の処理を省略し、ステップＳ２５１で決定係数Ｒ2が閾値Ｒ2ｔｈ１未満でないときにはステップＳ２５５に進み、決定係数Ｒ2が所定の決定係数許容領域に含まれないときには常に耐タンパ性の低い状態変数を判定するものとしてもよい。また、ステップＳ２５１，Ｓ２５３，Ｓ２５４の処理を省略して、ステップＳ２４０の重回帰分析を行ったときにはステップＳ２５５に進み、常に耐タンパ性の低い状態変数を判定するものとしてもよい。この場合、ステップＳ２４０では決定係数を導出しないものとしてもよい。また、ステップＳ２５２の後やステップＳ２５４の後にもステップＳ２５５，Ｓ２５６の処理を行なうものとして、決定係数Ｒ2を用いた耐タンパ性の評価と偏回帰係数ａ１〜ａ８を用いた耐タンパ性の評価とを常に行なってもよい。
【００４７】
［第２実施形態］
図１２は、第２実施形態である情報処理装置１１０の構成の概略を示す構成図である。なお、第２実施形態の情報処理装置１１０のうち、情報処理装置１０と同様の構成要素については、情報処理装置１０の構成要素と同じ符号を付してその説明を省略する。
【００４８】
情報処理装置１１０は、制御部１２と、記憶部１１４と、表示部１６と、操作部１８とを備えている。この情報処理装置１１０は、制御部１２が耐タンパ性評価プログラム１２０を実行して耐タンパ性を評価する対象である評価用回路１４０が、乱数ビットＣの値により内部の回路動作をマスクする乱数マスク回路の一種であるＲＳＬ(Random Switch Logic) 回路を有した暗号処理回路である点が情報処理装置１０と異なる。
【００４９】
記憶部１１４は、例えばＨＤＤなどの大容量記憶装置として構成され各種アプリケーションプログラムや各種データファイルを記憶するものであり、耐タンパ性評価プログラム１２０と、回路データベース３１とを備えている。
【００５０】
耐タンパ性評価プログラム１２０は、評価用回路データ生成部２１と、評価用回路データ変換部２２と、入力データ生成部１２３と、回路シミュレーター２４と、消費電力データ取得部１２５と、分析部２６と、評価部２７と、分類部１２８とを備えている。入力データ生成部１２３は、生成する入力データにＲＳＬ回路の乱数ビットＣの値が含まれる点以外は、図１の入力データ生成部２３と同様の機能を有する。消費電力データ取得部１２５は、評価用回路１４０における入力ビット及び出力ビットの少なくともいずれかの状態を表す状態変数及び乱数ビットＣの状態を表す状態変数と、評価用回路１４０における消費電力Ｗとが対応付けられた消費電力データを取得する機能を有する。分類部１２８は、消費電力データ取得部１２５に取得された複数の消費電力データに基づいて、消費電力Ｗを目的変数とし消費電力Ｗに対応づけられた乱数ビットＣの状態を表す状態変数を説明変数として回帰分析を行い、その分析により決定係数及び回帰係数の少なくともいずれかを乱数ビットＣと前記消費電力データとの相関値として導出し、導出した相関値に基づいて乱数ビットＣと消費電力Ｗとの相関が高いと判定したときには、取得した複数の消費電力データを乱数ビットＣの値に応じて複数のグループに分類する機能を有する。なお、制御部１２が耐タンパ性評価プログラム１２０を実行することにより、評価用回路データ生成部２１、評価用回路データ変換部２２、入力データ生成部１２３、回路シミュレーター２４、消費電力データ取得部１２５、分析部２６、評価部２７、分類部１２８の機能が実現される。
【００５１】
次に、こうして構成された情報処理装置１１０の動作、特に、暗号処理回路の耐タンパ性を評価する際の動作について説明する。ユーザーが操作部１８を操作して耐タンパ性を評価する対象となる評価用回路を指定し、耐タンパ性の評価を行うよう指示すると、制御部１２は、耐タンパ性評価ルーチンを実行する。この耐タンパ性評価ルーチンは、図２の耐タンパ性評価ルーチンと同様の処理ステップを有するため、図２と同じステップ番号を用いて説明し、図示を省略する。
【００５２】
この耐タンパ性評価ルーチンが実行されると、まず、評価用回路データ生成部２１，評価用回路データ変換部２２がステップＳ１００〜Ｓ１１０の処理を行う。この処理は、ユーザーに指定された評価用回路１４０の構成が異なる点以外は、図２と同様に行う。図１３は、評価用回路１４０の構成の概略を示す構成図である。図１３（ａ）は、評価用回路１４０の全体構成を示す構成図であり、図１３（ｂ）は、評価用回路１４０のうちのSubBytes変換回路１４４内のＲＳＬ回路１４８の構成を示す構成図である。図１３（ａ）に示すように、評価用回路１４０は、レジスター１４２と、SubBytes変換回路１４４と、排他的論理和回路４６とを備えている。この評価用回路１４０は、評価用回路４０と同様に暗号方式の１つであるＡＥＳの回路の部分的なモジュールとして構成された暗号処理回路であり、レジスター１４２と、SubBytes変換回路１４４と、排他的論理和回路１４６とを備えている。レジスター４２は、入力された８ビットの入力ビットＡと、１ビットの乱数ビットＣと、１ビットの出力イネーブルｅｎとを保持するものである。SubBytes変換回路１４４は、レジスター４２の出力部に接続されて入力ビットＡと乱数ビットＣと出力イネーブルｅｎとがレジスター４２から入力され、入力ビットＡに対してＡＥＳにおける非線形変換であるSubBytes処理を行うものである。このSubBytes変換回路１４４は、図１３（ｂ）に示すＲＳＬ回路１４８を有している。図示するように、ＲＳＬ回路１４８は、各１ビットの入力値が２つと、乱数ビットＣと、出力イネーブルｅｎとが入力される。このＲＳＬ回路１４８は、乱数ビットＣの値により内部の動作モードが切り替わり、異なる論理回路として動作する。具体的には、出力イネーブルｅｎが値１且つ乱数ビットＣが値０であるときには、ＲＳＬ回路１４８はＮＡＮＤゲートとして動作して、２つの入力値に基づく１ビットの出力値を出力する。また、出力イネーブルｅｎが値１且つ乱数ビットＣが値１であるときには、ＲＳＬ回路１４８はＮＯＲゲートとして動作して、２つの入力値に基づく１ビットの出力値を出力する。出力イネーブルｅｎが値０のときにはＲＳＬ回路１４８の出力値は値０に固定される。SubBytes変換回路１４４は、このＲＳＬ回路１４８を複数組み合わせた回路として構成されており、入力ビットＡと出力ビットＢとの対応関係は図３のSubBytes変換回路４４と同じであるものの、乱数ビットＣが値０であるか値１であるかによって内部の回路構成が変化し、消費電力も変化する。このように、SubBytes変換回路１４４はＲＳＬ回路１４８を備えることで、乱数ビットＣの値によって消費電力を変化させて入力ビットＡと消費電力との相関が低くなる、すなわち内部の回路動作がマスクされるよう構成され、図３のSubBytes変換回路１４４の回路よりも耐タンパ性の高い回路となっている。
【００５３】
続いて、入力データ生成部１２３は、ステップＳ１２０の処理を行って評価用回路１４０への入力データを生成し、回路シミュレーター２４がステップＳ１３０の処理を行って評価用回路１４０に入力データを入力したときの回路動作のシミュレーションを行う。そして、消費電力データ取得部１２５は、ステップＳ１４０の処理を行って、消費電力データを取得する。本実施形態では、消費電力データ取得部１２５は、回路シミュレーター２４のシミュレーションの結果から、評価用回路１４０における入力ビットＡの各ビットの値及び乱数ビットＣの値を表す状態変数と評価用回路１４０における消費電力Ｗとが対応づけられた消費電力データを、入力ビットＡ及び乱数ビットＣの値に応じて複数取得する。図１４は、取得した消費電力データの内容をテーブルとして示した説明図である。この図に示すように、消費電力データ取得部１２５が取得する消費電力データは、図９（ａ）に示した消費電力データに各パターン番号に対応する乱数ビットＣの値が加わったものとなっている。
【００５４】
次に、分析部２６及び評価部２７は、ステップＳ１４０で取得された消費電力データに基づいて、評価用回路１４０の耐タンパ性の分析評価処理を実行するステップＳ１５０の処理を行う。図１５は、本実施形態における分析評価処理の一例を示すフローチャートである。なお、図１５では、図１０の分析評価処理と異なる部分についてのみ図示しており、図１０と同じ処理については同じステップ番号を用いて説明する。この分析評価処理が実行されると、まず、ステップＳ２００〜Ｓ２３０の処理が行われる。そして、ステップＳ２３０の処理を行うと、分析部２６は、状態変数すなわち入力ビットＡの各ビット及び乱数ビットＣを説明変数とし、タイムスロット番号ｎに対応する２０００個の消費電力ｗを目的変数として、重回帰分析を行い、分析値として偏回帰係数ａ１〜ａｊ（本実施形態では変数ｊは値８）及び決定係数Ｒ2を導出すると共に、相関値として偏回帰係数ｂを導出する（ステップＳ２４０ａ）。この処理は、ステップＳ２４０における状態変数ｘ１〜ｘ８に加えて乱数ビットＣの値を表す状態変数ｘ９が加わり、偏回帰係数ａ０〜ａ８に加えて偏回帰係数ｂが加わった点以外は、ステップＳ２４０と同様にして行うことができる。すなわち、上述した式（１）において変数ｊを値９とした場合の式（２）の差の二乗和Ｅが最小となるような偏回帰係数ａ０〜ａ９を導出し、その後決定係数Ｒ2を導出して、偏回帰係数ａ１〜ａ８及び決定係数Ｒ2を分析値とし、偏回帰係数ａ９（＝偏回帰係数ｂ）を相関値とするのである。図１６は、導出した分析値及び相関値の一例を示す説明図である。図１６では、タイムスロット番号ｎが値０であるときの分析値及び相関値を示しており、タイムスロット番号ｎに対応して、決定係数Ｒ2及び偏回帰係数ａ１〜ａ８，ｂが導出されている。この図１６の例では、偏回帰係数ａ１〜ａ８と比べて偏回帰係数ｂの絶対値が大きくなっており、入力ビットＡの値と比べて乱数ビットＣの方が消費電力ｗとの相関が高いことがわかる。
【００５５】
続いて、分析部２６及び評価部２７は、ステップＳ２５０の処理すなわちちステップＳ２５１〜Ｓ２５６の処理を行って、評価用回路１４０の耐タンパ性の評価を行う。そして、ステップＳ２５０の処理を行うと、分類部１２８は、ステップＳ２４０ａで導出した相関値である偏回帰係数ｂが閾値ｂｔｈ未満であるか否かを判定する（ステップＳ３００）。ここで、閾値ｂｔｈは、状態変数である乱数ビットＣと消費電力ｗとの相関が低く耐タンパ性が高いとみなせる偏回帰係数ｂの領域すなわち偏回帰係数許容領域の下限値として設定された値であり、例えば実験により経験的に定めた値である。なお、本実施形態では、この偏回帰係数許容領域は、ステップＳ２５５において耐タンパ性が低い状態変数を判定するときの偏回帰係数許容領域と同じものとしたが、両者を異なる領域としてもよい。
【００５６】
そして、ステップＳ３００で偏回帰係数ｂが閾値ｂｔｈ未満であるときには、分類部１２８は、乱数ビットＣについての耐タンパ性が低い旨をタイムスロット番号ｎに対応する評価結果として記憶して（ステップＳ３１０）、ステップＳ２６０に進む。一方、ステップＳ３００で偏回帰係数ｂが閾値ｂｔｈ未以上であるときには、乱数ビットＣの値に応じて消費電力データを複数のグループに分類する（ステップＳ３２０）。本実施形態では、乱数ビットＣは１ビットであるため、乱数ビットＣが値０であるか値１であるかに応じて消費電力データを２つのグループに分類する。例えば、図１４に示した消費電力データを分類するときには、乱数ビットＣが値０であるパターン番号０，２の消費電力データと、乱数ビットＣが値１であるパターン番号１，３，４の消費電力データとは別のグループに分類する。
【００５７】
続いて、分析部２６及び評価部２７は、分類したグループのうちいずれか１つを処理対象グループに設定し（ステップＳ３３０）、処理対象グループの消費電力データについて、図１０のステップＳ２１０以降の処理を行う。このステップＳ２１０以降の処理は、ステップＳ２５２，Ｓ２５４，Ｓ２５６の代わりにステップＳ２５２ａ，Ｓ２５４ａ，Ｓ２５６ａの処理を行う点以外は、ステップＳ２１０〜Ｓ２５０と同様にして行う。すなわち、まずステップＳ２１０，Ｓ２２０の処理を行い、ステップＳ２２０で標準偏差σが閾値σｔｈ以上のときには、ステップＳ２３０〜Ｓ２５１の処理を行う。そして、ステップＳ２２０で標準偏差σが閾値σｔｈ未満のとき、又はステップＳ２５１で決定係数Ｒ2が閾値Ｒ2ｔｈ１未満であったときには、処理対象グループについて評価用回路１４０が全体的に耐タンパ性が高い旨を処理対象グループ及びタイムスロット番号ｎに対応する評価結果として記憶する（ステップＳ２５２ａ）。また、ステップＳ２５１で決定係数Ｒ2が閾値Ｒ2ｔｈ１以上であったときには、ステップＳ２５３の処理を行い、ステップＳ２５３で決定係数Ｒ2が閾値Ｒ2ｔｈ２以上であったときには、評価用回路１４０が全体的に耐タンパ性が低い旨を処理対象グループ及びタイムスロット番号ｎに対応する評価結果として記憶する（ステップＳ２５４ａ）。そして、ステップＳ２５３で決定係数Ｒ2が閾値Ｒ2ｔｈ２未満であったときには、ステップＳ２５５の処理を行って耐タンパ性が低い状態変数を判定し、部分的に耐タンパ性が低い旨と耐タンパ性が低いと判定した状態変数とを処理対象グループ及びタイムスロット番号ｎに対応する評価結果として記憶する（ステップＳ２５６ａ）。そして、ステップＳ２５２ａ，Ｓ２５４ａ，Ｓ２５６ａいずれかの評価結果を記憶すると、未処理のグループがあるか否かを判定し（ステップＳ３４０）、未処理のグループがあるときにはステップＳ３３０に進む。一方、未処理のグループがないといには、ステップＳ２６０へ進む。
【００５８】
このように、図１５の分析評価処理では、図１０の分析評価処理に加えて、乱数ビットＣが消費電力と相関が高いか否かの判定を行っている。そして、乱数ビットＣと消費電力Ｗとの相関が高いときには、消費電力データをグループ分けしてから重回帰分析を行って、乱数ビットの影響を除いた耐タンパ性の評価を行うのである。
【００５９】
ここで、第２実施形態の構成要素と本発明の構成要素との対応関係を明らかにする。第２実施形態の情報処理装置１１０が本発明の情報処理装置に相当し、消費電力データ取得部１２５が消費電力データ取得手段に相当し、分析部２６が分析手段に相当し、評価部２７が評価手段に相当し、分析部２６，評価部２７，分類部１２８が分類手段に相当する。
【００６０】
以上詳述した第２実施形態の情報処理装置１０によれば、ＲＳＬ回路１４８の乱数ビットＣと消費電力Ｗとの相関が高いときには、消費電力データをグループ分けしてから重回帰分析を行うことで、乱数ビットの影響を除いた耐タンパ性評価ができる。これにより、例えば実際の暗号処理回路への攻撃として、消費電力データと乱数ビットとの間の相関からまず乱数ビットの値を読み取り、その後に乱数ビットの値が同じ値である消費電力データのみについて電力差分解析を行うといった攻撃手法に対する耐タンパ性を評価することができる。
【００６１】
なお、本発明は上述した実施形態に何ら限定されることはなく、本発明の技術的範囲に属する限り種々の態様で実施し得ることはいうまでもない。
【００６２】
例えば、上述した第２実施形態では、乱数ビットＣは１ビットであるものとしたが、複数ビットであるものとしてもよい。その場合、乱数ビットの各ビットの値を説明変数としてもよいし、複数のビットで表される値を１つの説明変数としてもよい。
【００６３】
上述した第１，第２実施形態において、偏回帰係数に基づいて耐タンパ性が低いと判定した状態変数があるときには、その状態変数を選択関数として評価用回路の電力差分解析を行い、電力差分解析が成功したか否かにより評価用回路の耐タンパ性を評価するものとしてもよい。こうすれば、耐タンパ性が低いと判定された状態変数について、電力差分解析を行って耐タンパ性を評価するため、より確実に耐タンパ性の評価を行うことができる。この場合、例えば、ステップＳ２５５で耐タンパ性が低いと判定された状態変数があるときには、これを選択関数として、ステップＳ１５０の後に電力差分解析を行うものとすればよい。
【００６４】
上述した第１，第２実施形態では、入力ビットＡの値を説明変数として重回帰分析を行うものとしたが、入力ビットＡの遷移の有無を説明変数としてもよい。例えば、入力ビットＡの８ビットの値のうち入力前の状態から値の遷移があったビットに対応する説明変数を値１とし、遷移がなかったビットに対応する説明変数を値０としてもよい。この場合、例えば入力ビットＡとしてビット列「１０００１００１」を入力したときに、入力前の入力ビットＡの値が「００００００００」であったときには、入力ビットＡのうち１，５，８ビット目の値が遷移しているため、１，５，８ビット目の遷移の有無を表す説明変数がそれぞれ値１となり、それ以外のビットの遷移の有無を表す説明変数がそれぞれ値０となる。また、出力ビットＢの値を説明変数としてもよいし、出力ビットＢの遷移の有無を説明変数としてもよい。
【００６５】
上述した第１，第２実施形態では、入力ビットＡの８ビットすべてをそれぞれ説明変数として重回帰分析を行ったが、一部のビットを説明変数としてもよい。また、複数ビットの値を１つの説明変数として重回帰分析を行ってもよい。例えば、入力ビットＡの上位４ビットは値０〜１５のいずれかの値となるため、これを１つの説明変数としてもよい。また、１つのビットのみを説明変数として、重回帰分析ではなく単回帰分析を行い、偏回帰係数の代わりに回帰係数を用いて耐タンパ性を評価してもよい。
【００６６】
上述した第１，第２実施形態では、評価用回路データ生成部，評価用回路データ変換部及び入力データ生成部が生成したデータに基づいて回路シミュレーターがシミュレーションを行い、その結果から消費電力データ取得部が消費電力データを複数取得するものとしたが、耐タンパ性評価プログラムは評価用回路データ生成部，評価用回路データ変換部，入力データ生成部，回路シミュレーターを備えないものとしてもよい。この場合、消費電力データを予め作成して記憶部に記憶しておくものとし、消費電力データ取得部が記憶部から消費電力データを取得するものとしてもよい。あるいは、消費電力データ取得部が実際に製造された暗号処理回路の消費電力を測定して消費電力データを取得するものとしてもよい。
【００６７】
上述した第１，第２実施形態では、１つのパターン番号の消費電力データについて消費電力Ｗはタイムスロット番号０〜７までの８つのタイムスロット毎に対応して存在するものとしたが、タイムスロットを複数設けずに１つのパターン番号について１つの消費電力Ｗのみが対応して存在するものとしてもよい。
【００６８】
上述した第１，第２実施形態では、消費電力データの標準化を行ってから重回帰分析を行うものとしたが、消費電力データの標準化を行わずに重回帰分析を行ってもよい。
【００６９】
上述した第１，第２実施形態では、決定係数Ｒ2は自由度調整済決定係数であるものとしたが、自由度調整済みでない決定係数を決定係数Ｒ2としてもよい。ただし、自由度調整済みでない決定係数は説明変数の数が多いほど値１に近づき近似の精度が見かけ上高くなる傾向を持つため、自由度調整済決定係数を用いることが好ましい。なお、自由度調整済決定係数と自由度調整済みでない決定係数との両方を分析値として導出して、耐タンパ性の評価に用いるものとしてもよい。
【実施例】
【００７０】
以下には、耐タンパ性評価プログラム及び情報処理装置を実際に作成した例を実施例として説明する。
【００７１】
［実施例］
実施例として、第１，第２実施形態の機能を共に有する耐タンパ性評価プログラムを作成した。そして、ＣＰＵがＸｅｏｎ  Ｗ３５６５（３．２ＧＨｚ）でありＲＡＭの容量が８ＧＢである制御部を有するコンピューターのハードディスクにこれを記憶して、実施例の情報処理装置とした。なお、耐タンパ性の評価を行うにあたり、重回帰分析の説明変数として入力ビットＡの値を用いるか遷移の有無を用いるかの選択や、タイムスロットの数及び所定期間Ｔ１〜Ｔ３の値は、ユーザーが設定できるものとした。また、図１０のステップＳ２５２の後，ステップＳ２５４の後，図１５のステップＳ２５２ａの後，及びステップＳ２５４ａの後にもそれぞれステップＳ２５５，Ｓ２５６の処理を行なうものとして、決定係数Ｒ2の値に関わらず偏回帰係数を用いた耐タンパ性の評価を常に行なうものとした。また、実施例の情報処理装置は、評価結果として、耐タンパ性評価ルーチンで求めた決定係数Ｒ2及び偏回帰係数の値をタイムスロットと対応付けてグラフとして表示するものとした。
【００７２】
［比較例］
比較例として、評価回路に対して入力ビットのうち１ビットを選択関数とする電力差分解析攻撃を行い、これを入力ビットの８ビットについて繰り返し行って、それぞれのビットに対応する攻撃が成功するか否かにより耐タンパ性の評価を行う耐タンパ性評価プログラムを作成した。そして、実施例と同様のコンピューターのハードディスクにこれを記憶して、比較例の情報処理装置とした。比較例の情報処理装置における耐タンパ性の評価は以下のように行うものとした。まず、入力ビットの値をランダムに変化させて、入力ビットの値が変化してから所定期間後の消費電力とその入力ビットの値に対応する出力ビットの値とを対応付けた消費電力データを多数取得する。次に、各消費電力データについて、評価回路の秘密鍵（８ビット）を特定値に仮定して出力ビットから入力ビットを予測する。次に、予測した入力ビットのうちの１ビットを選択関数として、この選択関数が値０か値１かによって、消費電力データを２つのグループに分け、グループ毎の消費電力の平均波形を求めて２つのグループの平均波形の差分を求める。続いて、この差分を秘密鍵の取り得る全ての値（２５６通り）について求め、秘密鍵の仮定値を平均波形の差分の大きい順に並べて仮定値を順位付けする。続いて、秘密鍵Ｋの正解値の順位を調べ、１位になっているか否かで攻撃が成功したか否かを判定する。そして、このような判定を選択関数を変えて入力ビットの各ビットについて行い、それぞれのビットについて攻撃が成功したか否かを判定する。
【００７３】
［耐タンパ性評価実験１］
耐タンパ性の評価の対象として、図３に示した評価回路４０の評価回路データを用意した。なお、評価回路４０のSubBytes変換回路４４は、逆元演算回路とアフィン変換回路とを直列に接続した構成を有する合成体方式の回路とした。この評価回路データについて、実施例及び比較例の情報処理装置を用いて耐タンパ性の評価を行った。なお、実施例の情報処理装置では、入力ビットＡの遷移の有無を説明変数として評価を行った。また、所定期間Ｔ１は５０ｎｓｅｃ、所定期間Ｔ２は０ｎｓｅｃ、所定期間Ｔ３は０．２ｎｓｅｃとし、タイムスロットはタイムスロット番号０〜９までの１０個とし、取得する消費電力データのパターン数は２０００とした。比較例の情報処理装置では、入力ビットＡの値が変化してから「所定期間Ｔ２＋０．６ｎｓｅｃ」経過時点から「所定期間Ｔ２＋０．８ｎｓｅｃ」経過時点までの消費電力とその入力ビットＡの値に対応する出力ビットＢの値とを対応付けた消費電力データを多数取得して上述したように評価を行った。すなわち、実施例の情報処理装置のタイムスロット番号３と同じ消費電力データを用いて評価を行った。また、比較例の情報処理装置では、評価に用いる消費電力データの総数を変えて、複数回の評価を行った。
【００７４】
（実験結果）
耐タンパ性評価実験１の実験結果を図１７〜１９に示す。図１７は、実施例の情報処理装置による評価結果のうち、各タイムスロットに対する決定係数Ｒ2の値を示したグラフである。図１８は、実施例の情報処理装置による評価結果のうち、各タイムスロットに対する偏回帰係数ａ１〜ａ８の値を示したグラフである。図１９は、比較例の情報処理装置による評価結果のうち、評価に用いた消費電力データの総数と入力値Ａの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。
【００７５】
図１７から、導出した決定係数Ｒ2のうち、特にタイムスロット番号０〜３に対応する決定係数Ｒ2が他と比べて大きい値となっていることがわかった。このため、タイムスロット番号０〜３の消費電力が他のタイムスロットと比べて耐タンパ性が低い旨の評価結果が得られていることになる。また、図１８から、タイムスロット番号３に対応する偏回帰係数ａ１〜ａ８の値は、大きい方から並べると偏回帰係数ａ２，ａ７，ａ５，ａ６，ａ１，ａ８，ａ３，ａ４の順となっている。この値の高い偏回帰係数に対応する入力値Ａのビットほど耐タンパ性が低い旨の評価結果が得られていることになる。図１９では、正解鍵の順位が１位となっており攻撃に成功しているのは入力ビットＡの２，５，６，７ビット目であるため、このビットについての耐タンパ性が低い旨の評価結果が得られている。また、正解鍵の順位が１位となったときの評価に用いた消費電力データの総数が小さいほど、耐タンパ性が低く、正解鍵の順位が低いほど耐タンパ性が高いといえるため、図１９では耐タンパ性の低い方から入力ビットＡの各ビットを並べると２，７，５，６，１，８，３，４ビット目の順となる。この並び順は、図１８の偏回帰係数ａ１〜ａ８の順と一致しており、実施例の情報処理装置のタイムスロット番号３についての評価結果と、比較例の情報処理装置の評価結果とが一致していることがわかった。なお、比較例の情報処理装置では実施例の情報処理装置のタイムスロット番号３と同じ消費電力データを用いて評価を行っている。そのため、両者の評価結果が一致しているということは、実施例の情報処理装置により実際の電力差分解析に対する耐性を正しく評価できたことを意味する。また、実施例の情報処理装置はパターン数が２０００個の消費電力データを用いて重回帰分析を行って評価結果を得るまでに要した時間は１７ｓｅｃであったのに対し、比較例の情報処理装置では同じ２０００個の消費電力データを用いて電力差分解析を行って評価結果を得るまでに要した時間は４１６ｓｅｃであった。このことから、実施例の情報処理装置は、電力差分解析による攻撃を行って、攻撃が成功したか否かにより耐タンパ性を評価する手法と比べて効率的に耐タンパ性を評価できることがわかった。
【００７６】
［耐タンパ性評価実験２］
評価回路４０のSubBytes変換回路４４を合成体方式以外の回路で構成した場合についても、耐タンパ性評価実験１と同様にして実施例と比較例の情報処理装置による耐タンパ性の評価を行った。具体的には、真理値表方式，ＰＰＲＭ（Positive Polarity Reed Muller：正極性リードマラー論理式）１方式，ＰＰＲＭ３方式によりSubBytes変換回路４４を構成した評価回路について、耐タンパ性の評価を行った。真理値表方式のSubBytes変換回路４４は、SubBytes変換回路４４の入出力が図４の真理値表の対応関係となるようゲートを接続した回路であり、対応関係を論理合成ツールによりゲートの接続記述に変換して得られた回路データとして作成した。ＰＰＲＭ１方式のSubBytes変換回路４４は、ＡＮＤゲート群とＸＯＲゲート群との組み合わせにより構成した回路である。ＰＰＲＭ３方式のSubBytes変換回路４４は、合成体方式の回路を３段のＰＰＲＭ方式の回路に変換して構成した回路である。図２０は、実施例の情報処理装置による評価結果のうち、真理値表方式，ＰＰＲＭ１方式，ＰＰＲＭ３方式の各タイムスロットに対する決定係数Ｒ2の値を示したグラフである。図２１は、実施例の情報処理装置による評価結果のうち、真理値表方式，ＰＰＲＭ１方式，ＰＰＲＭ３方式の各タイムスロットに対する偏回帰係数ａ１〜ａ８の値を示したグラフである。図２１（ａ）が真理値表方式についてのグラフであり、図２１（ｂ）がＰＰＲＭ１方式についてのグラフであり、図２１（ｃ）がＰＰＲＭ３方式についてのグラフである。図２２は、比較例の情報処理装置による評価結果のうち、タイムスロット番号５についての真理値表方式，ＰＰＲＭ１方式，ＰＰＲＭ３方式の消費電力データの総数と正解鍵の順位との関係を示したグラフである。図２２（ａ）が真理値表方式についてのグラフであり、図２２（ｂ）がＰＰＲＭ１方式についてのグラフであり、図２２（ｃ）がＰＰＲＭ３方式についてのグラフである。
【００７７】
図２０では、タイムスロット番号５における決定係数Ｒ2は値の大きいものから真理値表方式，ＰＰＲＭ１方式，ＰＰＲＭ３方式の順となっている。そして、図２２では、正解鍵の順位が１位になるまでに必要な消費電力データの総数の小さいものから真理値表方式，ＰＰＲＭ１方式，ＰＰＲＭ３方式の順となっており、実施例と比較例とで評価結果が一致していた。また、図２１のタイムスロット番号５における偏回帰係数を値の大きい順に並べると、真理値表方式，ＰＰＲＭ１方式，ＰＰＲＭ３方式の各方式について図２２で正解鍵の順位が１位になるまでに必要な消費電力データの総数が小さい順に入力ビットＡの各ビットを並べたときと同じ並び順となり、実施例と比較例とで評価結果が一致していた。これらのことから、合成体方式の場合と同様に他の方式についても実施例の情報処理装置により実際の電力差分解析に対する耐性を正しく評価できたことが確認された。
【００７８】
［耐タンパ性評価実験３］
耐タンパ性の評価の対象として、図１３に示した評価回路１４０の評価回路データを用意した。この評価回路データについて、実施例及び比較例の情報処理装置を用いて耐タンパ性の評価を行った。なお、実施例の情報処理装置では、入力ビットＡの値及び乱数ビットＣの値を説明変数として評価を行った。また、所定期間Ｔ１〜Ｔ３及びタイムスロットは、耐タンパ性評価実験１と同様とした。比較例の情報処理装置では、まず、乱数ビットが値０である消費電力データと値１である消費電力データとを区別せずに、耐タンパ性評価実験１と同様に入力ビットＡの値を１ビットずつ選択関数として耐タンパ性の評価を行った。また、消費電力データにおける消費電力の平均値を求め、消費電力が平均値以上か未満かによって消費電力データを２グループに分けた。そして、そのうちの一方のグループの消費電力データのみを用いて、耐タンパ性評価実験１と同様に入力ビットＡの値を１ビットずつ選択関数として比較例の情報処理装置による耐タンパ性の評価を行った。なお、比較例の情報処理装置による評価は、実施例の情報処理装置のタイムスロット番号５と同じ消費電力データについて行った。
【００７９】
（実験結果）
耐タンパ性評価実験３の実験結果について説明する。図２３は、実施例の情報処理装置による評価結果のうち、入力ビットＡの値及び乱数ビットＣの値を説明変数としたときの各タイムスロットに対する決定係数Ｒ2の値を示したグラフである。図２４は、実施例の情報処理装置による評価結果のうち、入力ビットＡの値及び乱数ビットＣの値を説明変数としたときの各タイムスロットに対する偏回帰係数ａ１〜ａ８，ｂの値を示したグラフである。図２５は、比較例の情報処理装置による評価結果のうち、消費電力データのグループ分けをしない場合における、評価に用いた消費電力データの総数と入力値Ａの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。
【００８０】
図２３から、導出した決定係数Ｒ2のうち、特にタイムスロット番号２以降に対応する決定係数Ｒ2が値１に近くなっていることがわかった。このため、タイムスロット番号２以降の消費電力Ｗが他のタイムスロットと比べて耐タンパ性が低い旨の評価結果が得られていることになる。また、図２４から、偏回帰係数ａ１〜ａ８はいずれも値０．１以下であり小さい値であったが、偏回帰係数ｂは大きい値であり、特にタイムスロット番号２以降は値１に近い値であった。このことから、図２３において決定係数Ｒ2が高い値であったのは、偏回帰係数ｂに対応する乱数ビットＣと消費電力Ｗとの相関が高いことが原因であると推察された。また、評価回路１４０は、入力ビットＡと消費電力Ｗとの相関は評価回路４０と比べると低く、消費電力データのグループ分けをしない状態においては耐タンパ性が高い旨の評価結果が得られていることになる。一方、図２５に示すように、比較例の情報処理装置では消費電力データの総数が３５００以上の場合に入力ビットＡの６ビット目で正解鍵の順位が１位となっているものの、その他のビットでは１位とならず正解鍵の推定ができなかった。図２４からわかるように実施例の情報処理装置でも偏回帰係数ａ６は他の偏回帰係数と比べて大きい値となっていた。これらのことから、実施例と比較例とで評価結果が一致しており、実施例の情報処理装置は実際の電力差分解析に対する耐性を正しく評価できたことが確認された。
【００８１】
また、実施例の情報処理装置では、乱数ビットＣと消費電力Ｗとの相関が高かったため、耐タンパ性評価実験３において消費電力データをグループ分けして各グループについての重回帰分析が実行された。図２６は、タイムスロット番号２における入力ビットＡのハミング重み（値１であるビットの数）と消費電力Ｗとの関係を示したグラフである。図示するように、評価回路１４０では、乱数ビットＣが値１であるか値０であるかによって消費電力Ｗの分布が分離しており、消費電力データから乱数ビットＣの値を攻撃者が予測可能になることが推察された。そのため、評価回路１４０では乱数ビットＣの値により消費電力データのグループ分けを行い、乱数ビットの影響を除いた耐タンパ性評価を行う必要性があることがわかる。グループ分けを行ったあとの実施例及び比較例における評価結果を図２７，２８に示す。図２７は、実施例の情報処理装置による評価結果のうち、乱数ビットＣが値０である消費電力データのグループについて、入力ビットＡの値を説明変数としたときの各タイムスロットに対する偏回帰係数ａ１〜ａ８の値を示したグラフである。図２８は、比較例の情報処理装置による評価結果のうち、乱数ビットＣが値０であるグループの消費電力データを用いた場合における、評価に用いた消費電力データの総数と入力値Ａの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。図２７と図２４とを比較すると、グループ分けにより乱数ビットＣの影響を除いたことにより、偏回帰係数ａ１〜ａ８の値が全体的に大きくなっており、入力ビットＡと消費電力Ｗとの相関が高くなっていた。また、図２７のタイムスロット番号５に対応する偏回帰係数ａ１〜ａ８の値は、偏回帰係数ａ２，３，４，６，８が比較的大きい値であり、偏回帰係数ａ１，５，７が比較的小さい値であった。そのため、入力ビットＡのうち特に２，３，４，６，８ビット目の耐タンパ性が低い旨の評価結果が得られていることになる。一方、図２８における評価結果では、入力ビットＡの２，３，４，６，８ビット目で正解鍵の順位が１位となり正解鍵の推定が成功しており、実施例と同様の結果となった。このことから、実施例の情報処理装置では、乱数ビットＣと消費電力Ｗとの相関が高いときには、消費電力データをグループ分けしてから重回帰分析を行って、乱数ビットの影響を除いた耐タンパ性の評価を行うことができ、電力差分解析に対する耐性を正しく評価できたことが確認された。
【００８２】
［耐タンパ性評価実験４］
評価回路１４０のSubBytes変換回路１４４を、ＲＳＬ回路１４８の代わりに乱数マスク回路の一種であるＭＤＰＬ（Masked Dual-rail Pre-charge Logic）回路を用いて構成した場合についても、耐タンパ性評価実験３と同様にして実施例と比較例の情報処理装置による耐タンパ性の評価を行った。ＭＤＰＬ回路は、正論理データ用の回路と負論理データ用の回路とを並行して備え、相補的な動作をすることで消費電力のバランスとって回路全体での消費電力の変動を抑えた回路である。また、正論理データ用の回路及び負論理データ用の回路は、図１３に示したＲＳＬ回路１４８と同様に、それぞれ乱数ビットＣ（１ｂｉｔ）の値により動作モードが切り替わることで入力ビットＡと消費電力Ｗとの相関が低くなるように構成されている。図２９は、実施例の情報処理装置による耐タンパ性の評価結果の一例を示すグラフである。図２９（ａ）は各タイムスロットに対する決定係数Ｒ2の値を示したグラフであり、図２９（ｂ）は各タイムスロットに対する偏回帰係数ａ１〜ａ８，ｂの値を示したグラフである。図３０は、比較例の情報処理装置による評価結果のうち、消費電力データのグループ分けをしない場合における、評価に用いた消費電力データの総数と入力値Ａの各ビットを選択関数としたときの正解鍵の順位との関係を示したグラフである。
【００８３】
図２９（ａ）から、タイムスロット番号５に対応する決定係数Ｒ2が他のタイムスロット番号の場合と比べて大きい値となっていることがわかった。また、図２９（ｂ）から、タイムスロット番号５に対応する偏回帰係数ａ１〜ａ８はいずれも値０．１以下であり小さい値であったが、偏回帰係数ｂは大きい値であった。このことから、図２９（ａ）において決定係数Ｒ2が大きい値となっているのは、乱数ビットＣと消費電力Ｗとの相関が他のタイムスロット番号の場合と比べて高いことが原因と推察された。また、偏回帰係数ａ１〜ａ８の値が小さいため消費電力データのグループ分けをしない状態においては耐タンパ性が高い旨の評価結果が得られていることになる。一方、図３０に示すように、比較例の情報処理装置では消費電力データの総数が４０００の場合であっても入力ビットＡのうち正解鍵の順位が１位となったビットはなく、正解鍵の推定が成功していなかった。これらのことから、実施例と比較例とで評価結果は一致しており、実施例の情報処理装置は実際の電力差分解析に対する耐性を正しく評価できたことが確認された。また、偏回帰係数ｂの値はタイムスロット番号５の場合でも図２４に示した偏回帰係数ｂと比較すると小さくなっており、ＲＳＬ回路１４８を用いた評価回路と比べてＭＤＰＬ回路を用いた評価回路の方が乱数ビットＣについての耐タンパ性が高い旨の評価結果が得られている。この評価結果は、図２５と図３０とでは図３０の方が正解鍵の順位が全体的に低いという比較例の情報処理装置による評価結果とも一致する。図３１は、ＭＤＰＬ回路を用いた評価回路１４０のタイムスロット番号５における入力ビットＡのハミング重みと消費電力Ｗとの関係を示したグラフである。この図に示すように、ＭＤＰＬ回路を用いた評価回路では、乱数ビットＣが値１であるか値０であるかによって消費電力Ｗの分布が図２６ほど分離しておらず、消費電力データから乱数ビットＣの値を攻撃者が予測可能になることはないと考えられる。この結果は、上述した図３０に示した偏回帰係数ｂの値が図２４に示した偏回帰係数ｂと比較すると小さくなっていることと一致する。このように、実施例の情報処理装置では偏回帰係数ｂを用いて乱数ビットＣについての耐タンパ性を評価することで、消費電力データから乱数ビットＣの値を攻撃者が予測可能であるか否かを評価することができる。しかも、例えば図２６と図３０とを目で見て比較しただけではＭＤＰＬ回路を用いた評価回路がＲＳＬ回路を用いた評価回路と比べてどの程度耐タンパ性が高いかを定量的に評価することはできないが、両者の偏回帰係数ｂを比較することで実施例の情報処理装置では定量的な評価が可能になる。
【符号の説明】
【００８４】
１０，１１０  情報処理装置、１２  制御部、１４，１１４  記憶部、１６  表示部、１８  操作部、２０，１２０  耐タンパ性評価プログラム、２１  評価用回路データ生成部、２２  評価用回路データ変換部、２３，１２３  入力データ生成部、２４  回路シミュレーター、２５，１２５  消費電力データ取得部、２６  分析部、２７  評価部、１２８  分類部、３１  回路データ記憶部、４０，１４０  評価用回路、４２，１４２  レジスター、４４，１４４  SubBytes変換回路、４６  排他的論理和回路、１４８  ＲＳＬ回路。
【図１】
0005765733.tif 000003
【図２】
0005765733.tif 000004
【図３】
0005765733.tif 000005
【図４】
0005765733.tif 000006
【図５】
0005765733.tif 000007
【図６】
0005765733.tif 000008
【図７】
0005765733.tif 000009
【図８】
0005765733.tif 000010
【図９】
0005765733.tif 000011
【図１０】
0005765733.tif 000012
【図１１】
0005765733.tif 000013
【図１２】
0005765733.tif 000014
【図１３】
0005765733.tif 000015
【図１４】
0005765733.tif 000016
【図１５】
0005765733.tif 000017
【図１６】
0005765733.tif 000018
【図１７】
0005765733.tif 000019
【図１８】
0005765733.tif 000020
【図１９】
0005765733.tif 000021
【図２０】
0005765733.tif 000022
【図２１】
0005765733.tif 000023
【図２２】
0005765733.tif 000024
【図２３】
0005765733.tif 000025
【図２４】
0005765733.tif 000026
【図２５】
0005765733.tif 000027
【図２６】
0005765733.tif 000028
【図２７】
0005765733.tif 000029
【図２８】
0005765733.tif 000030
【図２９】
0005765733.tif 000031
【図３０】
0005765733.tif 000032
【図３１】
0005765733.tif 000033