(57)【要約】【課題】回路に対する攻撃を適切に検出することが可能な技術を提供する。【解決手段】攻撃検出装置は、検出部、記憶部、第１更新部及び第２判定部を備える。検出部は、所定回路に供給される電源あるいは信号のレベル変化の発生を検出する。記憶部は、所定回路に対する攻撃が発生した可能性の度合いを示す第１攻撃評価値を記憶する。第１更新部は、検出部での検出結果に基づいて、記憶部内の第１攻撃評価値を更新する。第１判定部は、記憶部内の第１攻撃評価値に基づいて、攻撃が発生したか否かを判定する。【選択図】図３
2019179991.tif 000002
【特許請求の範囲】
【請求項１】
所定回路に供給される電源あるいは信号のレベル変化の発生を検出する検出部と、
前記所定回路に対する攻撃が発生した可能性の度合いを示す第１攻撃評価値を記憶する記憶部と、
前記検出部での検出結果に基づいて、前記記憶部内の前記第１攻撃評価値を更新する第１更新部と、
前記記憶部内の前記第１攻撃評価値に基づいて、前記攻撃が発生したか否かを判定する第１判定部と
を備える、攻撃検出装置。
【請求項２】
請求項１に記載の攻撃検出装置であって、
前記第１更新部は、前記レベル変化が発生するたびに、前記第１攻撃評価値を増加する、攻撃検出装置。
【請求項３】
請求項１に記載の攻撃検出装置であって、
前記第１更新部は、前記所定回路が所定処理を行う実行期間での前記レベル変化の発生に応じて、前記第１攻撃評価値を更新する、攻撃検出装置。
【請求項４】
請求項３に記載の攻撃検出装置であって、
前記所定処理は、暗号処理、条件分岐処理あるいは記憶領域に対する書き込み処理を含む、攻撃検出装置。
【請求項５】
請求項３及び請求項４のいずれか一つに記載の攻撃検出装置であって、
前記第１更新部は、前記所定回路から前記実行期間が通知される、攻撃検出装置。
【請求項６】
請求項３及び請求項４のいずれか一つに記載の攻撃検出装置であって、
前記所定回路の消費電力波形を取得し、取得した当該消費電力波形に基づいて、前記実行期間を推定する推定部をさらに備える、攻撃検出装置。
【請求項７】
請求項３乃至請求項６のいずれか一つに記載の攻撃検出装置であって、
前記第１更新部は、繰り返し現れる複数の前記実行期間の一の前記実行期間において前記レベル変化が複数回発生するときには、前記第１攻撃評価値を更新しない、攻撃検出装置。
【請求項８】
請求項３乃至請求項７のいずれか一つに記載の攻撃検出装置であって、
前記第１更新部は、繰り返し現れる複数の前記実行期間の間での前記レベル変化の発生の連続性に基づいて、前記第１攻撃評価値を更新する、攻撃検出装置。
【請求項９】
請求項８に記載の攻撃検出装置であって、
前記第１更新部は、
一の前記実行期間において前記レベル変化が発生した場合、その一つ前の前記実行期間において前記レベル変化が発生しているときには、前記第１攻撃評価値を増加し、
一の前記実行期間において前記レベル変化が発生した場合、その一つ前の前記実行期間において前記レベル変化が発生していないときには、前記第１攻撃評価値を増加しない、攻撃検出装置。
【請求項１０】
請求項８及び請求項９のいずれか一つに記載の攻撃検出装置であって、
前記第１更新部は、前記第１攻撃評価値の１回の更新量を、繰り返し現れる複数の前記実行期間での前記レベル変化の連続発生回数に応じた値に設定する、攻撃検出装置。
【請求項１１】
請求項８乃至請求項１０のいずれか一つに記載の攻撃検出装置であって、
前記第１更新部は、繰り返し現れる複数の前記実行期間において前記レベル変化の非発生が連続する場合、前記第１攻撃評価値を減少する、攻撃検出装置。
【請求項１２】
請求項３乃至請求項７のいずれか一つに記載の攻撃検出装置であって、
前記第１判定部は、前記第１攻撃評価値としきい値とを比較し、その比較結果に基づいて前記攻撃が発生したか否かを判定し、
前記第１更新部は、繰り返し現れる複数の前記実行期間での前記レベル変化の連続発生回数に応じて、前記しきい値を減少する、攻撃検出装置。
【請求項１３】
請求項３乃至請求項６のいずれか一つに記載の攻撃検出装置であって、
前記記憶部は、前記実行期間が複数に分割されることによって得られる複数の部分期間のそれぞれについて、当該部分期間において前記攻撃が発生した可能性の度合いを示す前記第１攻撃評価値を記憶し、
前記第１更新部は、前記複数の部分期間のそれぞれについて、当該部分期間での前記レベル変化の発生に応じて前記第１攻撃評価値を更新し、
前記第１判定部は、前記複数の部分期間についての前記第１攻撃評価値に基づいて、前記攻撃が発生したか否かを判定する、攻撃検出装置。
【請求項１４】
請求項１乃至請求項１３のいずれか一つに記載の攻撃検出装置であって、
前記記憶部は、前記攻撃検出装置の電源断及びリセットに応じて記憶する情報がクリアされる第１記憶部を有し、
前記第１攻撃評価値は、前記第１記憶部に記憶される、攻撃検出装置。
【請求項１５】
請求項１乃至請求項１３のいずれか一つに記載の攻撃検出装置であって、
前記記憶部は、前記攻撃検出装置の電源断及びリセットに応じて記憶する情報がクリアされない第１記憶部を有し、
前記第１攻撃評価値は、前記第１記憶部に記憶される、攻撃検出装置。
【請求項１６】
請求項１５に記載の攻撃検出装置であって、
前記第１記憶部は、ＯＴＰＲＯＭ（one time programmable read only memory）である、攻撃検出装置。
【請求項１７】
請求項１乃至請求項７のいずれか一つに記載の攻撃検出装置であって、
前記記憶部は、前記攻撃検出装置の電源断及びリセットに応じて記憶する情報がクリアされない第１記憶部を有し、
前記第１攻撃評価値は、前記第１記憶部に記憶され、
前記第１判定部は、
前記第１攻撃評価値としきい値とを比較し、その比較結果に基づいて前記攻撃が発生したか否かを判定し、
前記攻撃検出装置が再起動するたびに、前記しきい値を減少する、攻撃検出装置。
【請求項１８】
請求項１４に記載の攻撃検出装置であって、
前記記憶部は、前記攻撃検出装置の電源断及びリセットに応じて記憶する情報がクリアされない第２記憶部をさらに有し、
前記第２記憶部は、前記攻撃が発生した可能性の度合いを示す第２攻撃評価値を記憶し、
前記第１更新部は、前記検出結果に基づいて、前記第２記憶部内の前記第２攻撃評価値を更新し、
前記第１判定部は、前記第１記憶部内の前記第１攻撃評価値と、前記第２記憶部内の前記第２攻撃評価値とに基づいて、前記攻撃が発生したか否かを判定する、攻撃検出装置。
【請求項１９】
請求項１乃至請求項１１のいずれか一つに記載の攻撃検出装置であって、
前記第１判定部は、前記第１攻撃評価値と、互いに異なる複数のしきい値のそれぞれとの比較結果に基づいて、前記攻撃の危険度を判定する、攻撃検出装置。
【請求項２０】
請求項１乃至請求項１６のいずれか一つに記載の攻撃検出装置であって、
前記記憶部は、前記攻撃が発生した可能性の度合いを示す第２攻撃評価値を記憶し、
前記検出結果に基づいて、前記記憶部内の前記第２攻撃評価値を更新する第２更新部と、
前記記憶部内の前記第２攻撃評価値に基づいて、前記攻撃が発生したか否かを判定する第２判定部と
をさらに備える、攻撃検出装置。
【請求項２１】
請求項１乃至請求項１８のいずれか一つに記載の攻撃検出装置と、
前記攻撃検出装置において前記攻撃が発生したと判定されたとき、前記所定回路を制御する制御部と
を備える、制御装置。
【請求項２２】
請求項１９に記載の攻撃検出装置と、
前記攻撃検出装置において前記攻撃が発生したと判定されたとき、前記所定回路を制御する制御部と
を備え、
前記制御部は、前記第１判定部で判定される前記危険度に応じて、前記所定回路に対する制御を変更する、制御装置。
【請求項２３】
請求項２０に記載の攻撃検出装置と、
前記攻撃検出装置において前記攻撃が発生したと判定されたとき、前記所定回路を制御する制御部と
を備え、
前記制御部は、前記第１判定部において前記攻撃が発生したと判定されたときと、前記第２判定部において前記攻撃が発生したと判定されたときとで、前記所定回路に対する制御を変更する、制御装置。
【請求項２４】
請求項２１乃至請求項２３のいずれか一つに記載の制御装置と、
前記制御装置によって制御される前記所定回路と
を備える、処理装置。
【請求項２５】
所定回路に対する攻撃を検出する攻撃検出装置での攻撃検出方法であって、
前記所定回路に供給される電源あるいは信号のレベル変化の発生を検出する工程と、
前記レベル変化の発生の検出結果に基づいて、前記攻撃が発生した可能性の度合いを示す攻撃評価値を更新する工程と、
更新された前記攻撃評価値に基づいて、前記攻撃が発生したか否かを判定する工程と
を備える、攻撃検出方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路に対する攻撃の検出に関する。
【背景技術】
【０００２】
特許文献１には、被試験デバイスの出力信号に含まれるグリッチを検出する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００１−３１８１３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
さて、回路からの秘密情報の取得等を目的として、当該回路に対して攻撃が行われることがある。
【０００５】
そこで、本発明は上述の点に鑑みて成されたものであり、回路に対する攻撃を適切に検出することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係る攻撃検出装置の一態様は、所定回路に供給される電源あるいは信号のレベル変化の発生を検出する検出部と、前記所定回路に対する攻撃が発生した可能性の度合いを示す第１攻撃評価値を記憶する記憶部と、前記検出部での検出結果に基づいて、前記記憶部内の前記第１攻撃評価値を更新する第１更新部と、前記記憶部内の前記第１攻撃評価値に基づいて、前記攻撃が発生したか否かを判定する第１判定部とを備える。
【０００７】
また、本発明に係る制御装置の一態様は、上記の攻撃検出装置と、前記攻撃検出装置において前記攻撃が発生したと判定されたとき、前記所定回路を制御する制御部とを備える。
【０００８】
また、本発明に係る処理装置の一態様は、上記の制御装置と、前記制御装置によって制御される前記所定回路とを備える。
【０００９】
また、本発明に係る攻撃検出方法の一態様は、所定回路に対する攻撃を検出する攻撃検出装置での攻撃検出方法であって、前記所定回路に供給される電源あるいは信号のレベル変化の発生を検出する工程と、前記レベル変化の発生の検出結果に基づいて、前記攻撃が発生した可能性の度合いを示す攻撃評価値を更新する工程と、更新された前記攻撃評価値に基づいて、前記攻撃が発生したか否かを判定する工程とを備える。
【発明の効果】
【００１０】
回路に対する攻撃を適切に検出することができる。
【図面の簡単な説明】
【００１１】
【図１】処理装置の構成の一例を示す図である。
【図２】処理回路の構成の一例を示す図である。
【図３】制御装置の構成の一例を示す図である。
【図４】更新部の動作の一例を示すフローチャートである。
【図５】制御装置の構成の一例を示す図である。
【図６】制御装置の構成の一例を示す図である。
【図７】更新部の動作の一例を示すフローチャートである。
【図８】実行期間にレベル変化が発生している様子の一例を示す図である。
【図９】実行期間にレベル変化が発生している様子の一例を示す図である。
【図１０】制御装置の構成の一例を示す図である。
【図１１】実行期間にレベル変化が発生している様子の一例を示す図である。
【図１２】実行期間にレベル変化が発生している様子の一例を示す図である。
【図１３】繰り返し現れる複数の実行期間においてレベル変化が連続的に発生する様子の一例を示す図である。
【図１４】更新部の動作の一例を示すフローチャートである。
【図１５】更新部の動作の一例を説明するための図である。
【図１６】更新部の動作の一例を説明するための図である。
【図１７】更新部の動作の一例を示すフローチャートである。
【図１８】更新部の動作の一例を説明するための図である。
【図１９】更新部の動作の一例を示すフローチャートである。
【図２０】更新部の動作の一例を説明するための図である。
【図２１】更新部の動作の一例を説明するための図である。
【図２２】更新部の動作の一例を示すフローチャートである。
【図２３】更新部の動作の一例を説明するための図である。
【図２４】更新部の動作の一例を示すフローチャートである。
【図２５】更新部の動作の一例を示すフローチャートである。
【図２６】更新部の動作の一例を示すフローチャートである。
【図２７】更新部の動作の一例を示すフローチャートである。
【図２８】更新部の動作の一例を示すフローチャートである。
【図２９】更新部の動作の一例を示すフローチャートである。
【図３０】更新部の動作の一例を説明するための図である。
【図３１】更新部の動作の一例を説明するための図である。
【図３２】各部分期間に対応する攻撃評価値の一例を示す図である。
【図３３】各部分期間に対応する評価値割合の一例を示す図である。
【図３４】攻撃検出装置の構成の一例を示す図である。
【発明を実施するための形態】
【００１２】
図１は処理装置１の構成の一例を示す図である。処理装置１は、例えば、他の装置と通信する通信処理などを含む複数種類の処理を行うことが可能である。処理装置１は、例えば、スマートフォン等の携帯電話機、タブレット端末、パーソナルコンピュータ、ウェアラブル機器、ゲーム機器、プロジェクタ、カーナビゲーション装置等の車載機器、ドローン機器あるいはＩｏＴ（Internet of Things）端末などで使用することが可能な回路である。
【００１３】
図１に示されるように、処理装置１は、通信処理などを含む複数種類の処理を行うことが可能な処理回路２と、処理回路２を制御することが可能な制御装置３と、処理回路２及び制御装置３に電源１００を供給することが可能な電源回路４とを備える。電源回路４は、例えば、充電式の電池から供給される電力に基づいて電源１００を生成することが可能である。また電源回路４は、商用電源から供給される電力に基づいて電源１００を生成してもよいし、ＡＣアダプタから供給される電力に基づいて電源１００を生成してもよい。電源１００は例えば直流電圧である。
【００１４】
制御装置３、処理回路２及び電源回路４は、一つのダイで構成されてもよいし、複数のダイで構成されてもよい。ダイはウェハチップとも呼ばれる。また、制御装置３、処理回路２及び電源回路４は、樹脂等から成る一つのパッケージに収納されてもよいし、別々のパッケージに収納されてもよい。また、制御装置３、処理回路２及び電源回路４の２つが一つのパッケージに収納されてもよい。
【００１５】
以下に処理装置１の様々な例について説明する。
【００１６】
＜第１の例＞
＜処理回路の構成例＞
図２は本例に係る処理回路２の構成の一例を示す図である。図２に示されるように、処理回路２は、例えば、制御部２０、記憶部２１及び通信部２２を有する回路構成を備える。記憶部２１は、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）などの、コンピュータが読み取り可能な非一時的な記録媒体を含む。記憶部２１には、処理回路２を制御するための制御プログラム等が記憶されている。記憶部２１は記憶回路とも言える。
【００１７】
制御部２０は、処理回路２の他の構成要素を制御することによって、処理回路２の動作を統括的に管理することが可能である。制御部２０は制御回路とも言える。制御部２０は、例えばＣＰＵ（Central Processing Unit）を備えている。制御部２０の各種機能は、当該制御部２０が備えるＣＰＵが記憶部２１内の制御プログラムを実行することによって実現される。
【００１８】
通信部２２は、無線ネットワーク及び有線ネットワークの少なくとも一方を含む通信ネットワークに接続されている。通信部２２は、通信ネットワークを通じて、他の装置と通信することが可能である。通信ネットワークには、例えば、基地局等を含む、携帯電話システムのネットワーク、無線ＬＡＮ（Local Area Network）及びインターネット等が含まれる。通信部２２は通信回路とも言える。
【００１９】
以上のような構成を有する処理回路２は、制御装置３から供給されるクロック信号に基づいて動作することが可能である。後述するように、制御装置３は、クロック信号を処理回路２に対して供給しないことによって、処理回路２の動作を停止することができる。
【００２０】
また処理回路２では、制御部２０が、データを暗号化する暗号処理を行うことが可能である。制御部２０で暗号化されたデータは、例えば、記憶部２１に記憶されたり、通信部２２から他の装置に送信されたりする。また制御部２０は、暗号化されたデータを復号化する復号処理を行うことが可能である。制御部２０で復号化されたデータは、例えば記憶部２１に記憶される。また制御部２０は、処理装置１のユーザを認証する認証処理を実行することが可能である。
【００２１】
なお、処理回路２が実行する処理は上記の例には限られない。また、処理回路２の構成は図２の例には限られない。例えば、制御部２０は、複数のＣＰＵを備えてもよい。また制御部２０は、少なくとも一つのＤＳＰ（Digital Signal Processor）を備えてもよい。また、制御部２０の全ての機能あるいは制御部２０の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。
【００２２】
また記憶部２１は、ＲＯＭ及びＲＡＭ以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。記憶部２１は、例えば、小型のハードディスクドライブ及びＳＳＤ（Solid State Drive）などを備えてもよい。
【００２３】
＜制御装置の構成例＞
図３は本例に係る制御装置３の構成の一例を示す図である。図３に示されるように、制御装置３は、例えば、攻撃検出装置３０と、制御部３１と、クロック生成部３２と、リセット信号生成部３３とを有する回路構成を備える。制御装置３は制御回路とも言える。クロック生成部３２及びリセット信号生成部３３は、制御装置３とは別に設けられてもよい。
【００２４】
ここで、回路からの秘密情報の取得等を目的として、当該回路に供給される電源あるいは信号のレベルを故意に変化させることによって、当該回路に対して攻撃が行われることがある。例えば、攻撃対象の回路に供給される電源あるいは信号のレベルにグリッチを故意に発生させることによって、攻撃対象の回路に対して攻撃が行われることがある。グリッチは、スパイク状の短時間の一時的なレベルの低下あるいは上昇である。このような攻撃は、グリッチ攻撃と呼ばれ、故障利用攻撃（fault injection attack）の一種である。故障利用攻撃は、故障攻撃（fault attack）あるいは故障利用解析（fault injection analysis）と呼ばれることがある。以後、単に故障利用攻撃と言えば、攻撃対象の回路に供給される電源あるいは信号のレベルを故意に変化させる攻撃を意味する。
【００２５】
故障利用攻撃では、攻撃対象の回路に供給される電源あるいは信号のレベルを故意に低下あるいは上昇させることによって、攻撃対象の回路の動作に誤りを発生させ、そのときの攻撃対象の回路の動作状況を取得するという処理が繰り返し実行されることがある。そして、故障利用攻撃では、当該処理が繰り返し実行されることによって収集された攻撃対象の回路の誤った動作の状況に基づいて、攻撃対象の回路の秘密情報が推定されることがある。
【００２６】
例えば、故障利用攻撃において、暗号処理を行う攻撃対象の回路が当該暗号処理で使用する鍵が推定される場合を考える。この場合、攻撃対象の回路に供給される電源あるいは信号のレベルを故意に低下あるいは上昇させることによって、暗号処理に誤りを発生させ、そのときの当該暗号処理の結果を取得するという処理が繰り返し実行される。そして、当該処理が繰り返し実行されることによって収集された暗号処理の誤った結果と、当該暗号処理の正しい結果とが比較され、その比較結果に基づいて、当該暗号処理で使用される鍵が推定される。
【００２７】
このように、故障利用攻撃では、攻撃対象の回路に供給される電源あるいは信号のレベルが本来の値から変化することが繰り返し発生することがある。
【００２８】
そこで、本例に係る制御装置３は、処理回路２に供給される電源１００あるいは信号のレベル変化の発生を検出し、その検出結果に基づいて、処理回路２に対する攻撃が発生したか否かを判定する。これにより、処理回路２に対する故障利用攻撃を適切に検出することができる。そして、制御装置３は、処理回路２に対する攻撃が発生したと判定すると、処理回路２を制御することによって、処理回路２の安全性を向上することができる。
【００２９】
ここで、制御装置３が対象とするレベル変化は、本来の値からの変化を意味する。したがって、ＨｉｇｈレベルとＬｏｗレベルとを繰り返すクロック信号のように、もともとレベルが変化する信号について制御装置３が発生を検出するレベル変化には、そのもともとのレベル変化は含まれない。例えば、制御装置３がクロック信号のレベル変化の発生を検出する場合、制御装置３は、クロック信号のＨｉｇｈレベルを期待するタイミングでの本来の値からの変化の発生あるいはＬｏｗレベルを期待するタイミングでの本来の値からの変化の発生を検出する。
【００３０】
以下に、制御装置３について詳細に説明する。以後、処理回路２に供給される電源１００あるいは信号を「モニタ対象」と呼ぶことがある。また、モニタ対象のレベルを、モニタ対象レベル１１０と呼ぶことがある。また、単にレベル変化あるいはレベル低下と言えば、モニタ対象レベル１１０の変化あるいは低下を意味する。また、単にグリッチと言えば、モニタ対象レベル１１０に発生するグリッチを意味する。
【００３１】
本例では、制御装置３は、その機能の実現にソフトウェアが不要なハードウェア回路で構成されている。したがって、本例では、制御装置３は、ＣＰＵ等のプロセッサと、当該プロセッサが実行するプログラムとを備えていない。なお、制御装置３の全ての機能あるいは制御装置３の一部の機能は、ソフトウェアが使用されて実現されてもよい。言い換えれば、制御装置３の全ての機能あるいは制御装置３の一部の機能は、ＣＰＵ等のプロセッサがプログラムを実行することによって実現されてもよい。
【００３２】
クロック生成部３２は、処理装置１の動作の基準となるクロック信号ＣＬＫを生成する。クロック生成部３２はクロック生成回路とも言える。クロック信号ＣＬＫは、制御装置３が備える、攻撃検出装置３０等を含む内部回路に供給される。またクロック信号ＣＬＫは、処理回路２にも供給される。制御装置３及び処理回路２は、クロック信号ＣＬＫに基づいて動作する回路である。クロック生成部３２は、水晶発振器を備えてもよいし、水晶を利用しない発振器を備えてもよい。水晶を利用しない発振器としては、例えば、ＭＥＭＳ（Micro Electro Mechanical Systems）を利用した発振器がある。
【００３３】
リセット信号生成部３３は、リセット信号ＲＳを生成して出力する。リセット信号生成部３３はリセット信号生成回路とも言える。リセット信号ＲＳは、制御装置３が備える、攻撃検出装置３０等を含む内部回路に入力されるとともに、処理回路２に入力される。
【００３４】
リセット信号生成部３３は、処理装置１が備えるリセットスイッチが操作されると、一定時間リセット信号ＲＳをアサートする。これにより、リセットスイッチが操作されたとき、処理装置１が再起動して、制御装置３及び処理回路２の動作が初期化される。また、リセット信号生成部３３は、電源回路４が電源１００を出力しない状態から出力する状態に切り切り替わると、一定時間リセット信号ＲＳをアサートする。これにより、電源回路４が電源１００を出力しない状態から出力する状態に切り替わったとき、処理装置１が再起動して、制御装置３及び処理回路２の動作が初期化される。
【００３５】
攻撃検出装置３０は、モニタ対象レベル１１０の変化の発生を検出し、その検出結果に基づいて、処理回路２に対する攻撃が発生したか否かを判定する。本例は、攻撃検出装置３０は、モニタ対象レベル１１０でのグリッチの発生を検出し、その検出結果に基づいて、処理回路２に対する攻撃が発生したか否かを判定する。攻撃検出装置３０は攻撃検出回路と言える。モニタ対象レベル１１０は、例えば、電源１００のレベルあるいはクロック信号ＣＬＫのレベルである。
【００３６】
攻撃検出装置３０は、例えば、検出部３００と、記憶部３１０と、更新部３２０と、判定部３３０を備えている。検出部３００、記憶部３１０、更新部３２０及び判定部３３０は、それぞれ、検出回路、記憶回路、更新回路及び判定回路と言える。
【００３７】
検出部３００は、モニタ対象レベル１１０でのグリッチの発生を検出することが可能である。記憶部３１０は、処理回路２に対する攻撃が発生した可能性の度合いを示す攻撃評価値を記憶する。
【００３８】
更新部３２０は、検出部３００での検出結果に基づいて、記憶部３１０内の攻撃評価値を更新する。具体的には、更新部３２０は、検出部３００での検出結果に基づいて、レベル変化（モニタ対象レベル１１０の低下あるいは上昇）が発生したことを特定する。そして、更新部３２０は、レベル変化の発生に応じて記憶部３１０内の攻撃評価値を更新する。本例では、更新部３２０は、モニタ対象レベル１１０でのグリッチの発生に応じて、記憶部３１０内の攻撃評価値を更新する。より具体的には、更新部３２０は、グリッチの発生に応じて、記憶部３１０内の攻撃評価値を増加する。これにより、グリッチの発生回数が多くなると、攻撃評価値が大きくなる。つまり、グリッチの発生回数が多くなると、処理回路２に対する攻撃が発生した可能性が高いと言える。判定部３３０は、記憶部３１０内の攻撃評価値に基づいて、処理回路２に対する攻撃が発生したか否かを判定する。以後、攻撃評価値を増加することを、攻撃評価値をカウントアップすると言うことがある。
【００３９】
制御部３１は、例えば、処理回路２に対するクロック信号ＣＬＫの供給を制御することによって、処理回路２を制御することが可能である。本例では、制御部３１は、処理回路２に対してクロック信号ＣＬＫを供給することによって処理回路２を動作させることができる。また、制御部３１は、処理回路２に対するクロック信号ＣＬＫの供給を停止することによって、処理回路２の動作を停止することができる。制御部３１は、判定部３３０において処理回路２に対する攻撃が発生したと判定されると、処理回路２に対するクロック信号ＣＬＫの供給を停止して処理回路２の動作を停止する。これにより、処理回路２に対して故障利用攻撃が発生した場合、処理回路２の動作を停止することができる。よって、処理回路２の秘密情報を取得される可能性を低減することができる。その結果、処理回路２の安全性が向上する。
【００４０】
処理回路２に対するクロック信号ＣＬＫの供給が停止して、処理回路２の動作が停止した場合には、ユーザは、例えば、リセットスイッチを操作することによって、処理装置１に処理回路２の動作を復帰させることができる。リセットスイッチが操作されると、リセット信号生成部３３はリセット信号ＲＳを一定時間アサートする。これにより、処理装置１の動作が初期化される。処理装置１の動作が初期化されると、制御部３１は、クロック信号ＣＬＫの処理回路２に対する供給を開始する。これにより、停止していた処理回路２が動作を再開する。
【００４１】
なお上述のように、リセット信号生成部３３は、電源回路４が電源１００を出力しない状態から出力する状態に切り替わると、リセット信号ＲＳを一定時間アサートする。したがって、処理装置１に、電源回路４の電源１００の出力を制御することが可能な電源スイッチが設けられている場合には、ユーザは、当該電源スイッチを操作することによって、処理装置１に処理回路２の動作を再開させることが可能となる。
【００４２】
制御部３１が処理回路２の動作を停止する方法は、上記の例に限られない。例えば、制御部３１は、判定部３３０において処理回路２に対する攻撃が発生したと判定されると、処理回路２用のリセット信号をアサートして処理回路２の動作を停止してもよい。この場合、例えば、制御部３１は、リセット信号ＲＳがアサートされると、処理回路２に入力される、処理回路２用のリセット信号をアサートする。また、クロック生成部３２で生成されるクロック信号ＣＬＫは直接処理回路２に入力される。そして、制御部３１は、処理装置１の動作が初期化された場合には、処理回路２用のリセット信号をネゲートする。これにより、ユーザは、リセットスイッチ等を操作することによって、処理装置１に処理回路２の動作を再開させることができる。
【００４３】
＜攻撃検出装置の詳細説明＞
次に本例に係る攻撃検出装置３０の動作の一例について詳細に説明する。図４は、攻撃検出装置３０が備える更新部３２０の動作の一例を示すフローチャートである。図４には、更新部３２０での攻撃評価値の更新処理が示されている。更新部３２０は、処理装置１の起動中において、図４に示される更新処理を継続して実行する。
【００４４】
図４に示されるように、ステップｓ１において、更新部３２０は、検出部３００での検出結果に基づいて、レベル変化（本例ではグリッチ）の発生を特定すると、ステップｓ２において、記憶部３１０内の攻撃評価値を更新する。具体的には、更新部３２０は攻撃評価値を増加する。更新部３２０は、例えば、攻撃評価値を＋１だけ増加する。その後、ステップｓ１が再度実行されると（レベル変化が発生すると）、ステップｓ２において、更新部３２０は攻撃評価値を＋１だけ増加する。以後、更新部３２０は同様に動作する。
【００４５】
このように、本例では、更新部３２０は、レベル低下等のレベル変化が発生するたびに攻撃評価値を増加する。したがって、レベル変化の発生回数が大きくなると、攻撃評価値は大きくなる。上述のように、故障利用攻撃では、攻撃対象の回路に供給される電源あるいは信号のレベルにグリッチが繰り返し発生することがあることから、グリッチの発生回数が大きい場合には、処理回路２に対する攻撃が発生した可能性が高いと言える。よって、グリッチの発生回数に応じた攻撃評価値が大きいほど、処理回路２に対する攻撃が発生した可能性が高いと言える。本例では、グリッチが発生するたびに、攻撃評価値が＋１だけ増加する。そして、攻撃評価値の初期値は例えば零に設定される。したがって、攻撃評価値は、グリッチの発生回数を示すことになる。攻撃評価値は、レベル変化の発生回数を示すと言える。
【００４６】
判定部３３０は、所定のタイミングになると、記憶部３１０内の攻撃評価値に基づいて、処理回路２に対する攻撃が発生した否かを判定する攻撃判定処理を行う。攻撃判定処理では、判定部３３０は、記憶部３１０内の攻撃評価値としきい値とを比較し、その比較結果に基づいて、処理回路２に対する攻撃が発生した否かを判定する。具体的には、攻撃評価値がしきい値よりも大きい場合、判定部３３０は、処理回路２に対する攻撃が発生したと判定する。一方で、攻撃評価値がしきい値以下の場合、処理回路２に対する攻撃が発生していないと判定する。なお、攻撃評価値がしきい値以上の場合、判定部３３０は、処理回路２に対する攻撃が発生したと判定し、攻撃評価値がしきい値未満の場合、処理回路２に対する攻撃が発生していないと判定してもよい。以後、ある値がしきい値よりも大きいとき、ある処理を実行し、当該ある値が当該しきい値以下のとき、別の処理を実行するということは、当該ある値が当該しきい値以上のとき、当該ある処理を実行し、当該ある値が当該しきい値未満のとき、当該別の処理を実行するということに置き換えてもよい。同様に、ある値がしきい値以上のとき、ある処理を実行し、当該ある値が当該しきい値未満のとき、別の処理を実行するということは、当該ある値が当該しきい値よりも大きいとき、当該ある処理を実行し、当該ある値が当該しきい値以下のとき、当該別の処理を実行するということに置き換えてもよい。
【００４７】
判定部３３０が攻撃判定処理を実行するタイミングとしては、様々なタイミングが考えられる。例えば、判定部３３０は、記憶部３１０内の攻撃評価値が更新部３２０によってＮ回（Ｎ≧１）更新されるたびに、攻撃判定処理を実行してもよい。あるいは、判定部３３０は、一定時間ごとに攻撃判定処理を行ってもよい。
【００４８】
攻撃判定処理で使用されるしきい値は、例えば、攻撃評価値を記憶する記憶部３１０の種類に応じて決定される。記憶部３１０の種類としては、例えば、それが記憶する情報が、攻撃検出装置３０の電源断及びリセットに応じてクリアされるような第１タイプと、それが記憶する情報が、攻撃検出装置３０の電源断及びリセットに応じてクリアされないような第２タイプとが存在する。以後、記憶部３１０が第１タイプである場合、「第１タイプの記憶部３１０」と呼ぶことがある。また、記憶部３１０が第２タイプである場合、「第２タイプの記憶部３１０」と呼ぶことがある。
【００４９】
第１タイプの記憶部３１０は、例えば、揮発性メモリで構成される。揮発性メモリとしては、例えば、ＲＡＭあるいはレジスタが採用される。制御装置３に対して電源１００が供給されなくなって攻撃検出装置３０の電源断が生じると、第１タイプの記憶部３１０に対して電源が供給されなくなる。その結果、揮発性メモリで構成された記憶部３１０内の情報がクリアされる。また、制御装置３に対して電源１００が供給されている状態において、リセットスイッチが操作されるなどしてリセット信号生成部３３がリセット信号ＲＳをアサートすると、不揮発性メモリで構成された第１タイプの記憶部３１０内の情報がクリアされる。つまり、制御装置３に対して電源１００が供給されている状態において、攻撃検出装置３０がリセットされると、第１タイプの記憶部３１０内の情報がクリアされる。したがって、第１タイプの記憶部３１０内の情報は、攻撃検出装置３０が再起動する場合には、クリアされている。言い換えれば、第１タイプの記憶部３１０内の情報は、処理装置１が再起動する場合には、クリアされている。
【００５０】
以上の説明から理解できるように、第１タイプの記憶部３１０内の攻撃評価値は、攻撃検出装置３０の起動中ではクリアされないものの、攻撃検出装置３０の電源断あるいはリセットが発生した場合にはクリアされる。言い換えれば、第１タイプの記憶部３１０内の攻撃評価値は、処理装置１の起動中ではクリアされないものの、処理装置１の電源断あるいはリセットが発生した場合にはクリアされる。したがって、第１タイプの記憶部３１０内の攻撃評価値は、処理装置１の１回の起動中において攻撃が発生した可能性の度合いを示す値であると言える。
【００５１】
第１タイプの記憶部３１０が攻撃評価値を記憶する場合、攻撃判定処理で使用されるしきい値は、例えば、処理装置１の１回の起動中において、処理回路２に対する攻撃が発生しないときの、ノイズ等によるレベル変化（グリッチなど）の予想最大発生回数に基づいて決定される。以後、この予想最大発生回数を「１回の起動中におけるレベル変化の予想最大発生回数」と呼ぶことがある。しきい値は、例えば、１回の起動中におけるレベル変化の予想最大発生回数よりも少し大きな値に設定される。
【００５２】
１回の起動中におけるレベル変化の予想最大発生回数は、処理装置１の１回の起動時間及び処理装置１が使用される環境等に応じて変化する。処理装置１が、例えば、プロジェクタ、カーナビゲーション装置及びドローン機器のように１回の起動時間が比較的短い装置の場合には、１回の起動中におけるレベル変化の予想最大発生回数は比較的小さくなる。一方で、処理装置１が、周囲からノイズを受けるような環境で使用される装置である場合には、１回の起動中におけるレベル変化の予想最大発生回数は比較的大きくなる。１回の起動中におけるレベル変化の予想最大発生回数は、実機実験あるいはシミュレーションによって決定することができる。以後、第１タイプの記憶部内の攻撃評価値と比較されるしきい値を「第１タイプ用のしきい値」と呼ぶことがある。
【００５３】
第２タイプの記憶部３１０は、例えば、不揮発性メモリで構成される。不揮発性メモリとしては、例えば、フラッシュメモリ（フラッシュＲＯＭ）あるいはＯＴＰＲＯＭ（one time programmable read only memory）が採用される。フラッシュメモリとしては、例えば、ＮＡＮＤ型フラッシュメモリ、ＳＰＩ（Serial Peripheral Interface）フラッシュメモリ、あるいは埋め込み（embedded）フラッシュメモリが採用される。不揮発性メモリで構成された第２タイプの記憶部３１０内の情報は、制御装置３に対して電源１００が供給されなくなって攻撃検出装置３０の電源断が生じた場合であっても、クリアされない。また、制御装置３に対して電源１００が供給されている状態においてリセット信号生成部３３がリセット信号ＲＳをアサートする場合であっても、第２タイプの記憶部３１０内の情報はクリアされない。
【００５４】
このように、第２タイプの記憶部３１０内の情報は、攻撃検出装置３０の起動中においてクリアされず、攻撃検出装置３０が再起動する場合であってもクリアされない。
【００５５】
第２タイプの記憶部３１０が攻撃評価値を記憶する場合、攻撃判定処理で使用されるしきい値は、例えば、処理装置１の製品寿命期間において、処理回路２に対する攻撃が発生しないときの、ノイズ等によるレベル変化の予想最大発生回数に基づいて決定される。以後、この予想最大発生回数を「製品寿命期間におけるレベル変化の予想最大発生回数」と呼ぶことがある。しきい値は、例えば、製品寿命期間におけるレベル変化の予想最大発生回数よりも少し大きな値に設定される。
【００５６】
製品寿命期間におけるレベル変化の予想最大発生回数は、処理装置１の製品寿命及び処理装置１が使用される環境等に応じて変化する。例えば、処理装置１の製品寿命が長ければ、製品寿命期間におけるレベル変化の予想最大発生回数が大きくなる。また、処理装置１が、周囲からノイズを受けにくいような環境で使用される装置である場合には、製品寿命期間におけるレベル変化の予想最大発生回数は比較的小さくなる。製品寿命期間におけるレベル変化の予想最大発生回数は、実機実験あるいはシミュレーションによって決定することができる。以後、第２タイプの記憶部内の攻撃評価値と比較されるしきい値を「第２タイプ用のしきい値」と呼ぶことがある。
【００５７】
なお、第２タイプの記憶部３１０が使用される場合には、処理装置１がリセットされたとしても、第２タイプの記憶部３１０内の攻撃評価値はクリアされない。したがって、第２タイプの記憶部３１０内の攻撃評価値が第２タイプ用のしきい値よりも大きくなって、制御部３１が処理回路２の動作を停止した後、処理装置１がリセットされて処理回路２の動作が再開したとしても、すぐに処理回路２の動作が停止することになる。この点を考慮して、処理装置１の外部から当該処理装置１にコマンドを入力することによって、第２タイプの記憶部３１０内の情報をクリアできるようにしてもよい。
【００５８】
また、第２タイプの記憶部３１０が使用される場合には、判定部３３０は、攻撃検出装置３０が再起動するたびに、言い換えれば処理装置１が再起動するたびに、攻撃判定処理を実行してもよい。
【００５９】
また、処理回路２に対する故障利用攻撃では、グリッチのような、スパイク状の一時的なレベル変化ではなく、グリッチよりもモニタ対象レベル１１０が変化している時間が長い、台形状の一時的なレベル変化が繰り返し発生することがある。検出部３００は、グリッチの代わりに、このような台形状の一時的なレベル変化を検出してもよい。また、検出部３００は、グリッチと、台形状の一時的なレベル変化の両方を検出してもよい。
【００６０】
以上のように、本例では、レベル変化の発生を検出する検出部３００での検出結果に基づいて更新される攻撃評価値に基づいて、処理回路２に対する攻撃が発生したか否かが判定されることから、処理回路２に対する攻撃を適切に検出することができる。
【００６１】
また、本例のように、判定部３３０において処理回路２に対する攻撃が発生したと判定されたとき、制御部３１が処理回路２を制御することによって、処理回路２の安全性を向上することが可能となる。
【００６２】
また、第１タイプの記憶部３１０が採用される場合には、記憶部３１０内の攻撃評価値は、処理装置１の１回の起動中において攻撃が発生する可能性の度合いを示すことになる。したがって、攻撃検出装置３０は、１回の起動中において発生する攻撃を適切に検出することができる。
【００６３】
処理回路２に対する攻撃としては、処理装置１の１回の起動中においてレベル変化を繰り返し発生させるような故障利用攻撃以外にも、処理装置１を再起動させて、その後にレベル変化（例えばグリッチ）を発生させるという処理を繰り返し実行するような故障利用攻撃も考えられる。第１タイプの記憶部３１０を備える攻撃検出装置３０は、このような再起動が繰り返される攻撃を検出することができない可能性がある。
【００６４】
これに対して、記憶部３１０が第２タイプである場合には、記憶部３１０内の攻撃評価値は、再起動されたとしてもクリアされない。したがって、第２タイプの記憶部３１０備える攻撃検出装置３０は、再起動が繰り返される攻撃を適切に検出することができる。
【００６５】
また、第２タイプの記憶部３１０がＯＴＰＲＯＭで構成される場合には、第２タイプの記憶部３１０内の攻撃評価値を改ざんすることが難しくなる。よって、攻撃検出装置３０の安全性が向上する。なお、第２タイプの記憶部３１０がＯＴＰＲＯＭで構成される場合には、第２タイプの記憶部３１０の同じアドレスの記憶領域に対して複数回データを書き込むことができない。したがって、更新部３２０は、更新後の攻撃評価値を第２タイプの記憶部３１０に書き込むときには、それがそれまで記憶されていた記憶領域とは別の記憶領域に書き込む。
【００６６】
なお、攻撃検出装置３０の再起動が繰り返し発生する場合には、処理回路２に対して、上述の再起動が繰り返される攻撃が行われている可能性が高い。
【００６７】
そこで、記憶部３１０が第２タイプである場合には、判定部３３０は、攻撃検出装置３０が再起動するたびに、第２タイプ用のしきい値を所定量（例えば“１”）だけ減少してもよい。言い換えれば、判定部３３０は、攻撃検出装置３０がリセットされるたびに、第２タイプ用のしきい値を所定量だけ減少してもよい。これにより、判定部３３０は、再起動が繰り返される攻撃を早期に検出することが可能となる。
【００６８】
＜第２の例＞
図５は、本例に係る処理装置１が備える制御装置３の構成を示す図である。図５に示される制御装置３は、上述の図３に示される制御装置３において、記憶部３１０が第１タイプの記憶部３１１及び第２タイプの記憶部３１２を有するものである。
【００６９】
第１タイプの記憶部３１１と第２タイプの記憶部３１２のそれぞれは攻撃評価値を記憶する。以後、第１タイプの記憶部３１１が記憶する攻撃評価値を「第１攻撃評価値」と呼ぶことがある。また、第２タイプの記憶部３１２が記憶する攻撃評価値を「第２攻撃評価値」と呼ぶことがある。第１及び第２攻撃評価値の初期値は例えば零に設定される。
【００７０】
本例では、更新部３２０は、検出部３００での検出結果に基づいて、第１タイプの記憶部３１１内の第１攻撃評価値を更新する。また更新部３２０は、検出部３００での検出結果に基づいて、第２タイプの記憶部３１２内の第２攻撃評価値を更新する。例えば、更新部３２０は、検出部３００での検出結果に基づいて、第１タイプの記憶部３１１内の第１攻撃評価値を、上述の図４のようにレベル変化が発生するたびに更新する。同様に、更新部３２０は、検出部３００での検出結果に基づいて、第２タイプの記憶部３１２内の第２攻撃評価値を、レベル変化が発生するたびに更新する。
【００７１】
ここで、上述のように、第１タイプの記憶部は、それが記憶する情報が、攻撃検出装置３０の電源断及びリセットに応じてクリアされるような記憶部である。したがって、第１タイプの記憶部３１１内の第１攻撃評価値は、攻撃検出装置３０の電源断及びリセットに応じて初期値に戻ることになる。一方で、第２タイプの記憶部は、それが記憶する情報が、攻撃検出装置３０の電源断及びリセットに応じてクリアされないような記憶部である。したがって、第２タイプの記憶部３１２内の第２攻撃評価値は、基本的には、処理装置１の製品寿命期間において初期値に戻ることは無い。よって、第１及び第２攻撃評価値は、それらの初期値が同じであっても、互いに異なるようになる。第１攻撃評価値は、１回の起動中において攻撃が発生した可能性の度合いを示す値である。第２攻撃評価値は、処理装置１が再起動されたとしてもクリアされない。
【００７２】
本例では、判定部３３０は、第１タイプの記憶部３１１内の第１攻撃評価値と、第２タイプの記憶部３１２内の第２攻撃評価値とに基づいて、処理回路２に対する攻撃が発生したか否かを判定する。判定部３３０は、例えば、第１攻撃評価値が第１タイプ用のしきい値以上のとき、処理回路２に対する攻撃が発生したと判定する。また、判定部３３０は、第２攻撃評価値が第２タイプ用のしきい値以上のとき、処理回路２に対する攻撃が発生したと判定する。そして、判定部３３０は、第１攻撃評価値が第１タイプ用のしきい未満であり、かつ第２攻撃評価値が第２タイプ用のしきい値未満の場合、処理回路２に対する攻撃が発生してないと判定する。なお、判定部３３０は、第１攻撃評価値が第１タイプ用のしきい値よりも大きいとき、処理回路２に対する攻撃が発生したと判定してもよい。また判定部３３０は、第２攻撃評価値が第２タイプ用のしきい値よりも大きいとき、処理回路２に対する攻撃が発生したと判定してもよい。
【００７３】
このように、１回の起動中において攻撃が発生した可能性の度合いを示す第１攻撃評価値と、処理装置１が再起動されたとしてもリセットされない第２攻撃評価値とに基づいて、処理回路２に対する攻撃が発生したか否かを判定することによって、処理装置１の１回の起動中において繰り返しレベル変化が生じるような故障利用攻撃と、処理装置１の再起動が繰り返し実行されるような故障利用攻撃の両方を適切に検出することができる。
【００７４】
なお、上述の第1の例と同様に、判定部３３０は、第２タイプの記憶部３１２内の第２攻撃評価値と比較される第２タイプ用のしきい値を、攻撃検出装置３０が再起動するたびに減少してもよい。
【００７５】
＜第３の例＞
本例に係る処理装置１が備える制御装置３は、上述の図３に示される制御装置３と同様の構成を備えている。そして、本例に係る処理装置１が備える制御装置３は、上述の図３に示される制御装置３と比較して、判定部３３０及び制御部３１の動作が異なる。
【００７６】
本例に係る判定部３３０は、記憶部３１０内の攻撃評価値と、互いに異なる複数のしきい値のそれぞれとの比較結果に基づいて、処理回路２に対する攻撃の危険度を判定する。本例に係る制御部３１は、判定部３３０で判定された攻撃の危険度に応じて、処理回路２に対する制御を変更する。
【００７７】
記憶部３１０が第１タイプである場合、判定部３３０は、記憶部３１０内の攻撃評価値と、互いに異なる複数の第１タイプ用のしきい値のそれぞれとの比較結果に基づいて、処理回路２に対する攻撃の危険度を判定する。記憶部３１０が第２タイプである場合、判定部３３０は、記憶部３１０内の攻撃評価値と、互いに異なる複数の第２タイプ用のしきい値のそれぞれとの比較結果に基づいて、処理回路２に対する攻撃の危険度を判定する。以下に、判定部３３０及び制御部３１の動作の具体例について説明する。
【００７８】
例えば、記憶部３１０が第１タイプであって、判定部３３０が、攻撃評価値と、第１タイプ用の第１及び第２しきい値のそれぞれとの比較結果に基づいて、処理回路２に対する攻撃の危険度を判定する場合を考える。ただし、第１タイプ用の第２しきい値は、第１タイプ用の第１しきい値よりも大きいものとする。判定部３３０は、攻撃評価値が第１タイプ用の第１しきい値以上であって、第１タイプ用の第２しきい値未満である場合、処理回路２に対する攻撃の危険度が低いと判定する。一方で、判定部３３０は、攻撃評価値が第１タイプ用の第２しきい値以上である場合、処理回路２に対する攻撃の危険度が高いと判定する。
【００７９】
制御部３１は、判定部３３０において攻撃の危険度が高いと判定されると、上述のように、処理回路２の動作を停止する。一方で、制御部３１は、判定部３３０において攻撃の危険度が低いと判定されると、処理回路２に対する攻撃の危険度が低いことを通知するための通知信号を処理回路２に出力する。この通知信号は、処理回路２を制御するための制御信号であるとも言える。処理回路２は、制御部３１から通知信号を受け取ると、処理回路２の動作の停止よりも、攻撃に対する対策のレベルが低い攻撃対策処理を実行する。処理回路２は、攻撃対策処理として、例えば、自身が行う処理において、攻撃される可能性が高い処理を攻撃から保護するための処理を行う。攻撃される可能性が高い処理としては、例えば、暗号処理、条件分岐処理及び記憶部２１に対する書き込み処理が考えられる。記憶部２１に対する書き込み処理は、記憶領域に対する書き込み処理であると言える。以後、単に書き込み処理と言えば、記憶部２１に対する書き込み処理を意味する。
【００８０】
暗号処理に対する攻撃としては、例えば、暗号処理で使用される鍵が推定されるような攻撃がある。条件分岐処理に対する攻撃としては、例えば、常に特定の分岐先の処理が実行されるような攻撃がある。例えば、認証処理において、入力されたパスワードと、予め記憶されている正規のパスワードとを比較し、両者が一致した場合には、認証成功であると判定し、両者が不一致の場合には、認証不成立であると判定するような条件分岐処理を考える。以後、この条件分岐処理を「認証用の条件分岐処理」と呼ぶことがある。認証用の条件分岐処理に対する攻撃としては、例えば、入力されたパスワードと、予め記憶されている正規のパスワードとが一致するか否かにかかわらず、常に認証が成立したと判定されるような攻撃が考えられる。書き込み処理に対する攻撃としては、記憶部２１に対して誤ったデータが書き込まれるような攻撃がある。処理回路２は、通知信号を受け取ると、攻撃される可能性が高い処理を攻撃から保護するための処理として、例えば、暗号処理の鍵を変更する処理を行う。あるいは、処理回路２は、暗号処理の実行タイミングを変更する処理を行う。あるいは、処理回路２は、条件分岐処理の実行タイミングを変更する処理を行う。あるいは、処理回路２は、記憶部３１０の同じアドレスの記憶領域に対して複数回同じデータを書き込む処理を行う。これにより、処理回路２の安全性が向上する。なお、制御部３１から通知信号を受け取った処理回路２が行う処理はこれに限られない。例えば、処理回路２は、複数種類の攻撃対策処理を行ってもよい。
【００８１】
他の例として、例えば、記憶部３１０が第２タイプであって、判定部３３０が、攻撃評価値と、第２タイプ用の第１乃至第３しきい値のそれぞれとの比較結果に基づいて、処理回路２に対する攻撃の危険度を判定する場合を考える。ただし、第２タイプ用の第３しきい値は、第２タイプ用の第２しきい値よりも大きく、第２タイプ用の第２しきい値は、第２タイプ用の第１しきい値よりも大きいものとする。判定部３３０は、攻撃評価値が第２タイプ用の第１しきい値以上であって、第２タイプ用の第２しきい値未満である場合、処理回路２に対する攻撃の危険度が低いと判定する。また、判定部３３０は、攻撃評価値が、第２タイプ用の第２しきい値以上であって、第２タイプ用の第３しきい値未満である場合、処理回路２に対する攻撃の危険度が中程度であると判定する。そして、判定部３３０は、攻撃評価値が第２タイプ用の第３しきい値以上である場合、処理回路２に対する攻撃の危険度が高いと判定する。
【００８２】
制御部３１は、判定部３３０において攻撃の危険度が高いと判定されると、上述のように、処理回路２の動作を停止する。また制御部３１は、判定部３３０において攻撃の危険度が中程度と判定されると、処理回路２に対する攻撃の危険度が中程度であることを通知するための第１通知信号を処理回路２に出力する。そして制御部３１は、判定部３３０において攻撃の危険度が低いと判定されると、処理回路２に対する攻撃の危険度が低いことを通知するための第２通知信号を処理回路２に出力する。第１及び第２通知信号は、処理回路２を制御するための制御信号であるとも言える。
【００８３】
処理回路２は、制御部３１から第１通知信号を受け取ると、処理回路２の動作の停止よりも、攻撃に対する対策のレベルが低い第１攻撃対策処理を実行する。また処理回路２は、制御部３１から第２通知信号を受け取ると、第１攻撃対策処理よりも、攻撃に対する対策のレベルが低い第２攻撃対策処理を実行する。第１攻撃対策処理としては、例えば、暗号処理で使用される鍵の変更が考えられる。第２攻撃対策処理としては、例えば、暗号処理の実行タイミングを変更する処理が考えられる。第１及び第２攻撃対策処理の組み合わせはこの限りではない。
【００８４】
なお、上述の第２の例においても、判定部３３０は処理回路２に対する攻撃の危険度を判定してもよい。例えば、判定部３３０は、第１タイプの記憶部３１１内の第１攻撃評価値と、互いに異なる複数の第１タイプ用のしきい値のそれぞれとの比較結果に基づいて、処理回路２に対する攻撃の危険度を判定してもよい。また、判定部３３０は、第２タイプの記憶部３１２内の第２攻撃評価値と、互いに異なる複数の第２タイプ用のしきい値のそれぞれとの比較結果に基づいて、処理回路２に対する攻撃の危険度を判定してもよい。制御部３１は、上記と同様にして、判定部３３０で判定された危険度に応じて、処理回路２に対する制御を変更する。
【００８５】
以上のように、本例では、処理回路２に対する攻撃の危険度が判定されることから、その判定結果を利用した、当該攻撃に対する対策を実施することができる。例えば、上述のように、制御部３１は、判定部３３０で判定された危険度に応じて、処理回路２に対する制御を変更することができる。これにより、処理回路２に対して、攻撃の危険度に応じた適切な制御を行うことができる。
【００８６】
なお、上述の第1の例と同様に、記憶部３１０が第２タイプである場合には、判定部３３０は、第２タイプ用の複数のしきい値を、攻撃検出装置３０が再起動するたびに減少してもよい。
【００８７】
＜第４の例＞
上記の例では、レベル変化が発生すれば無条件に記憶部３１０内の攻撃評価値が更新されている。したがって、ノイズによるレベル変化が予想外に多く発生する場合には、攻撃検出装置３０において、処理回路２に対する攻撃が発生したと誤って判定される可能性がある。
【００８８】
そこで、本例に係る処理装置１は、処理回路２において所定処理が実行されている期間でのレベル変化の発生に応じて、記憶部３１０内の攻撃評価値を更新する。所定処理としては、例えば、処理回路２が実行する処理において、攻撃される可能性が高い処理が採用される。これにより、ノイズによるレベル変化が予想外に多く発生した場合であっても、処理回路２に対する攻撃が発生したと誤って判定される可能性を低減することができる。以下に、本例に係る処理装置１について詳細に説明する。
【００８９】
図６は、本例に係る処理装置１が備える制御装置３の構成を主に示す図である。本例では、更新部３２０は、処理回路２において所定処理が実行されている期間でのレベル変化の発生に応じて、記憶部３１０内の攻撃評価値を更新する。以後、当該所定処理及び当該期間を、「対象処理」及び「実行期間」とそれぞれ呼ぶ。
【００９０】
対象処理としては、処理回路２が実行する処理において、攻撃される可能性が高い処理が採用される。対象処理としては、例えば、暗号処理、条件分岐処理あるいは書き込み処理が採用される。対象処理は、処理装置１の１回の起動中において、繰り返し実行されることもあれば、１回だけ実行されることもある。また、対象処理は、処理装置１が起動するたびに実行されることによって、繰り返し実行されることがある。
【００９１】
処理回路２は、実行期間を通知するための期間通知情報２００を更新部３２０に出力する。期間通知情報には、例えば、実行期間の開始を通知するための開始通知情報と、実行期間の終了を通知するための終了通知情報とが含まれる。開始通知情報は、対象処理の開始タイミングを示すとも言える。また終了通知情報は、対象処理の終了タイミングを示すとも言える。処理回路２は、対象処理の実行を開始するときに開始通知情報を更新部３２０に出力する。そして、処理回路２は、対象処理の実行を終了するときに終了通知情報を更新部３２０に出力する。
【００９２】
図７は、更新部３２０の動作の一例を示すフローチャートである。図７に示されるように、ステップｓ１１において、更新部３２０は、開始通知情報を受け取ると、ステップｓ１２において、上述の図４に示される更新処理を開始する。その後、ステップｓ１３において、更新部３２０は、終了通知情報を受け取ると、更新処理を終了する。その後、更新部３２０は、開始通知情報を受け取ると（ステップｓ１２）、以後同様に動作する。
【００９３】
このように、更新部３２０は、処理回路２から開始通知情報を受け取ってから終了通知情報を受け取るまでの間、レベル変化が発生するたびに、上述のように、記憶部３１０内の攻撃評価値を更新する。つまり、更新部３２０は、実行期間において、レベル変化が発生するたびに、記憶部３１０内の攻撃評価値を更新する。一方で、更新部３２０は、実行期間以外において、レベル変化が発生したとしても、記憶部３１０内の攻撃評価値を更新しない。
【００９４】
図８，９は実行期間においてレベル変化が発生している様子の一例を示す図である。図８，９には、モニタ対象が電源１００である場合のレベル低下の一例が示されている。図８には、実行期間においてグリッチ１０１が３回発生している様子の一例が示されている。図８の例では、更新部３２０は、実行期間において攻撃評価値を３回更新する。図９には、実行期間において、台形状のレベル変化１０２が１回だけ発生している様子の一例が示されている。図９の例では、更新部３２０は実行期間において１回だけ攻撃評価値を更新する。
【００９５】
なお上記の例では、１種類の対象処理しか採用されていないが、複数種類の対象処理が採用されてもよい。この場合、更新部３２０は、複数種類の対象処理のそれぞれについて、当該対象処理の実行期間でのレベル変化の発生に応じて、記憶部３１０内の攻撃評価値を更新する。例えば、暗号処理、条件分岐処理及び書き込み処理のそれぞれが対象処理として採用される場合を考える。この場合、処理回路２は、暗号処理の実行期間と、条件分岐処理の実行期間と、書き込み処理の実行期間とを更新部３２０に通知する。更新部３２０は、暗号処理の実行期間でのレベル変化の発生に応じて、記憶部３１０内の攻撃評価値を更新する。さらに、更新部３２０は、条件分岐処理の実行期間でのレベル変化の発生に応じて、記憶部３１０内の攻撃評価値を更新する。そして、更新部３２０は、書き込み処理の実行期間でのレベル変化の発生に応じて、記憶部３１０内の攻撃評価値を更新する。
【００９６】
また上記の例では、攻撃検出装置３０は、処理回路２から実行期間が通知されていたが、実行期間を自ら推定してもよい。これにより、処理回路２からの実行期間の通知が不要となる。図１０はこの場合の攻撃検出装置３０の構成の一例を示す図である。
【００９７】
図１０に示される攻撃検出装置３０は、実行期間を推定する推定部３６０を備えている。推定部３６０は、処理回路２の消費電力波形を取得する。推定部３６０は、例えば、処理回路２と電源回路４とを接続する電源ラインに流れる電流を検出し、検出した電流に基づいて処理回路２の消費電力波形を取得する。そして、推定部３６０は、取得した消費電力波形に基づいて実行期間を推定する。
【００９８】
ここで、処理回路２が対象処理を実行している場合の処理回路２の消費電力波形は、実行中の対象処理に応じた固有の波形を示す。推定部３６０は、対象処理を実行している場合の処理回路２の消費電力波形を基準波形として予め記憶している。そして、推定部３６０は、取得した消費電力波形と基準波形とを比較し、その比較結果に基づいて実行期間を推定する。具体的には、推定部３６０は、当該比較結果に基づいて実行期間の開始タイミング及び終了タイミングを推定する。推定部３６０は、実行期間の開始タイミングになると、更新部３２０に開始通知情報を出力する。また、推定部３６０は、実行期間の終了タイミングになると、更新部３２０に終了通知情報を出力する。更新部３２０は、上述の図７に示されるように、開始通知情報を受け取ってから終了通知情報を受け取るまでの間、レベル変化が発生するたびに、記憶部３１０内の攻撃評価値を更新する。
【００９９】
以上のように、本例では、更新部３２０は、実行期間でのレベル変化の発生に応じて、記憶部３１０内の攻撃評価値を更新するため、ノイズによるレベル変化が予想外に多く発生した場合であっても、処理回路２に対する攻撃が発生したと誤って判定される可能性を低減することができる。
【０１００】
なお、上記の第２の例において、更新部３２０は、実行期間でのレベル変化の発生に応じて、第１タイプの記憶部３１１内の第１攻撃評価値を更新してもよい。また、更新部３２０は、実行期間でのレベル変化の発生に応じて、第２タイプの記憶部３１２内の第２攻撃評価値を更新してもよい。
【０１０１】
また、上述の第1の例と同様に、記憶部３１０が第２タイプである場合には、判定部３３０は、第２タイプ用のしきい値を、攻撃検出装置３０が再起動するたびに減少してもよい。
【０１０２】
＜第５の例＞
上述の第４の例において、処理回路２に対して攻撃が行われる場合、攻撃者は、処理回路２に繰り返し対象処理を実行させることがある。そして、攻撃者は、対象処理が実行されるたびに、対象処理でのある特定のタイミングを狙ってレベル変化を１回だけ発生させて処理回路２の動作に誤りを発生させることがある。
【０１０３】
例えば、処理装置１が起動するたびに処理回路２が対象処理を行う場合を考える。この場合、攻撃者は、例えばリセットスイッチを繰り返し操作して、処理装置１を繰り返し再起動させて、対象処理を繰り返し処理回路２に実行させる。そして、攻撃者は、対象処理が実行されるたびに、当該対象処理のあるタイミングにおいてレベル変化（モニタ対象レベル１１０の低下あるいは上昇）を１回だけ発生させる。例えば、対象処理が、鍵長が１２８ビットのＡＥＳ（Advanced Encryption Standard）に基づく暗号処理の場合、攻撃者は、リセットスイッチを繰り返し操作することによって、処理回路２に当該暗号処理を繰り返し実行させる。そして、攻撃者は、対象の暗号処理が実行されるたびに、当該暗号処理での１０回目のラウンドが実行されるタイミングでレベル変化を１回だけ発生させて、誤った動作を行う処理回路２の動作状況を取得する。
【０１０４】
また、処理装置１の外部から処理回路２に対して、対象処理の実行を指示する実行指示コマンドを入力できるような場合を考える。この場合、攻撃者は、起動中の処理回路２に対して繰り返し実行指示コマンドを入力することによって、対象処理を繰り返し処理回路２に実行させる。そして、攻撃者は、対象処理が実行されるたびに、当該対象処理のあるタイミングにおいてレベル変化を１回だけ発生させる。例えば、対象処理が上述の認証用の条件分岐処理である場合、攻撃者は、処理回路２に対して繰り返し実行指示コマンドを入力することによって、処理回路２に認証用の条件分岐処理を繰り返し実行させる。そして、攻撃者は、認証用の条件分岐処理が実行されるたびに、認証用の条件分岐処理の特定のタイミングでレベル変化を１回だけ発生させて、誤った動作を行う処理回路２の動作状況を取得する。この特定のタイミングとしては、入力されたパスワードと、予め記憶されている正規のパスワードとが一致するか否かを判定する処理が実行されるタイミングが考えられる。
【０１０５】
このように、攻撃者は、処理回路２に繰り返し対象処理を実行させ、対象処理が実行されるたびに、対象処理の実行中にレベル変化を１回だけ発生させるような攻撃を行うことがある。言い換えれば、攻撃者は、実行期間を繰り返し発生させて、１回の実行期間において１回だけレベル変化を発生させるような攻撃を行うことがある。以後、このような攻撃を「特定タイミング攻撃」と呼ぶことがある。本例では、特定タイミング攻撃を適切に検出することが可能な処理装置１について説明する。本例に係る処理装置１は、上述の第４の例に係る処理装置１と比較して、更新部３２０の動作が異なる。
【０１０６】
本例では、更新部３２０は、１回の実行期間においてレベル変化が複数回発生する場合には、記憶部３１０内の攻撃評価値を更新しない。そして、更新部３２０は、１回の実行期間においてレベル変化が１回だけ発生する場合には、上述のようにして、記憶部３１０内の攻撃評価値を更新する。これにより、処理回路２に対して特定タイミング攻撃が行われる場合には、記憶部３１０内の攻撃評価値が適宜更新される。一方で、１回の実行期間において、ノイズによって複数回レベル変化が発生した場合には、攻撃評価値は更新されない。これにより、攻撃検出装置３０は、処理回路２に対する特定タイミング攻撃を適切に検出することができる。
【０１０７】
図１１，１２は、１回の実行期間においてレベル変化が発生する様子の一例を示す図である。図１１，１２の例では、モニタ対象はクロック信号ＣＬＫとなっている。つまり、モニタ対象レベルは、クロック信号ＣＬＫのレベルとなっている。また、図１１，１２の矢印５００は、レベル変化（例えばグリッチ）が発生したタイミングを示している。矢印５００は、検出部３００がレベル変化を検出したタイミングを示しているとも言える。図１１の例では、１回の実行期間においてレベル変化が３回発生していることから、攻撃評価値は更新されない。一方で、図１２の例では、１回の実行期間においてレベル変化が１回しか発生していないことから、攻撃評価値は更新されて例えば＋１だけ増加する。
【０１０８】
なお上記の第２の例において、更新部３２０が、実行期間でのレベル変化の発生に応じて、第１タイプの記憶部３１１内の第１攻撃評価値を更新する場合には、更新部３２０は、１回の実行期間においてレベル変化が複数回発生する場合には、第１攻撃評価値を更新しなくてもよい。また、更新部３２０が、実行期間でのレベル変化の発生に応じて、第２タイプの記憶部３１２内の第２攻撃評価値を更新する場合には、更新部３２０は、１回の実行期間においてレベル変化が複数回発生する場合には、第２攻撃評価値を更新しなくてもよい。
【０１０９】
また、上述の第1の例と同様に、記憶部３１０が第２タイプである場合には、判定部３３０は、第２タイプ用の複数のしきい値を、攻撃検出装置３０が再起動するたびに減少してもよい。
【０１１０】
＜第６の例＞
上述のように、特定タイミング攻撃では、対象処理が実行されるたびに、対象処理の実行中にレベル変化が発生する。つまり、特定タイミング攻撃では、繰り返し現れる複数の実行期間においてレベル変化が連続的に発生する。図１３は、繰り返し現れる複数の実行期間においてレベル変化が連続的に発生する様子の一例を示す図である。図１３では、処理装置１の起動後の１回目〜３回目までの実行期間においてレベル変化が連続的に発生している様子が示されている。
【０１１１】
本例では、更新部３２０は、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて、記憶部３１０内の攻撃評価値を更新する。これにより、処理回路２に対する特定タイミング攻撃をより適切に検出することが可能となる。以下に、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて攻撃評価値を更新する方法について複数の例を挙げて説明する。
【０１１２】
＜第６の例のその１＞
図１４は、本例に係る更新部３２０で行われる、一の実行期間に関する処理の一例を示すフローチャートである。更新部３２０は、各実行期間について、図１４に示される処理を実行する。以後、説明の対象の実行期間を「対象実行期間」と呼ぶことがある。
【０１１３】
図１４に示されるように、ステップｓ２１において、更新部３２０は、検出部３００での検出結果に基づいて、対象実行期間においてレベル変化が１回だけ発生したか否かを判定する。例えば上述の図９のような場合には、対象実行期間においてレベル変化が１回だけ発生したと判定される。ステップｓ２１においてＹＥＳと判定されると、更新部３２０は、ステップｓ２２において、対象実行期間よりも一つ前の実行期間においてレベル変化が１回だけ発生したか否かを、検出部３００での検出結果に基づいて判定する。一方で、ステップｓ２１においてＮＯと判定されると、更新部３２０は、対象実行期間に関する処理を終了する。これにより、ステップｓ２１においてＮＯと判定されると、攻撃評価値の更新が実行されない。
【０１１４】
ステップｓ２２においてＹＥＳと判定されると、更新部３２０は、ステップｓ２３において、攻撃評価値を更新する。一方で、ステップｓ２２においてＮＯと判定されると、更新部３２０は、対象実行期間に関する処理を終了する。これにより、ステップｓ２２においてＮＯと判定されると、攻撃評価値が更新されない。
【０１１５】
なお、対象実行期間が１回目の実行期間である場合には、更新部３２０は、ステップｓ２１においてＹＥＳと判定すると、ステップｓ２２を実行せずにステップｓ２３を実行して攻撃評価値を更新する。一方で、更新部３２０は、ステップｓ２１においてＮＯと判定すると、対象実行期間に関する処理を終了する。対象実行期間が１回目の実行期間である場合、更新部３２０は、ステップｓ２１においてＹＥＳと判定すると、ステップｓ２２，ｓ２３を実行せずに、対象実行期間に関する処理を終了してもよい。
【０１１６】
上記の説明から理解できるように、本例では、更新部３２０は、対象実行期間においてレベル変化が複数回発生した場合（ステップｓ２１でＮＯと判定）、攻撃評価値を更新しない。一方で、更新部３２０は、対象実行期間においてレベル変化が１回だけ発生した場合には（ステップｓ２１でＹＥＳと判定）、その一つ前の実行期間においてレベル変化が１回だけ発生しているときだけ（ステップｓ２２でＹＥＳと判定）、攻撃評価値を更新する。したがって、更新部３２０は、対象実行期間においてレベル変化が１回だけ発生した場合、その一つ前の実行期間においてレベル変化が発生していないとき（ステップｓ２２でＮＯと判定）、攻撃評価値を更新しない。また、更新部３２０は、対象実行期間においてレベル変化が１回だけ発生した場合、その一つ前の実行期間においてレベル変化が複数回発生しているとき（ステップｓ２２でＮＯと判定）、攻撃評価値を更新しない。
【０１１７】
図１５，１６は更新部３２０の動作の一例を説明するための図である。図１５，１６の例では、処理装置１の起動後の１回目の実行期間が開始する時点において攻撃評価値が例えば０となっている。以下同様に、１回目の実行期間が開始する時点での攻撃評価値を０として説明する。
【０１１８】
図１５の例では、１回目の実行期間においてレベル変化が１回発生しているため、更新部３２０は、攻撃評価値を“０”から＋１だけカウントアップして“１”とする。２回目の実行期間ではレベル変化が１回発生し、その一つ前の１回目の実行期間でもレベル変化が１回発生している。したがって、更新部３２０は、２回目の実行期間でのレベル変化の発生に応じて、攻撃評価値を“１”から＋１だけカウントアップして“２”とする。３回目、４回目及び５回目の実行期間においてもレベル変化が１回発生していることから、５回目の実行期間の終了後において攻撃評価値が“５”となる。
【０１１９】
一方で、図１６の例では、１回目の実行期間においてレベル変化が発生していないことから、更新部３２０は、攻撃評価値をカウントアップせずに“０”のままとする。２回目の実行期間ではレベル変化が１回発生しているものの、その一つ前の１回目の実行期間ではレベル変化が発生していない。したがって、更新部３２０は、２回目の実行期間において、レベル変化が発生したとしても、攻撃評価値をカウントアップしない。３回目の実行期間ではレベル変化が１回発生し、その一つ前の２回目の実行期間でもレベル変化が１回発生している。したがって、更新部３２０は、３回目の実行期間でのレベル変化の発生に応じて、攻撃評価値を“０”から＋１だけカウントアップして“１”とする。４回目の実行期間ではレベル変化が３回発生している。したがって、更新部３２０は、攻撃評価値をカウントアップせずに“１”のままとする。５回目の実行期間ではレベル変化が１回発生しているものの、その一つ前の４回目の実行期間ではレベル変化が複数回発生している。したがって、更新部３２０は、５回目の実行期間においてレベル変化が発生したとしても、攻撃評価値をカウントアップしない。これにより、５回目の実行期間の終了時点では攻撃評価値が“１”となる。
【０１２０】
以上のようにして、特定タイミング攻撃の特徴に応じて、記憶部３１０内の攻撃評価値が更新されることによって、処理回路２に対する特定タイミング攻撃を適切に検出することが可能となる。
【０１２１】
＜第６の例のその２＞
上記の説明から理解できるように、特定タイミング攻撃は、一の実行期間においてレベル変化が１回だけ発生するという特徴と、繰り返し現れる複数の実行期間においてレベル変化が連続的に発生するという特徴との２つの特徴を有していると言える。以後、前者の特徴を「レベル変化回数の特徴」と呼び、後者の特徴を「連続性の特徴」と呼ぶ。
【０１２２】
上記の第６の例のその１では、レベル変化回数の特徴と連続性の特徴の両方が考慮されて攻撃評価値が更新されている。一方で、上述の第５の例では、レベル変化回数の特徴と連続性の特徴のうち、レベル変化回数の特徴だけが考慮されて攻撃評価値が更新されている。
【０１２３】
本例では、更新部３２０は、レベル変化回数の特徴と連続性の特徴のうち、連続性の特徴だけを考慮して更新する。図１７は、本例に係る更新部３２０が実行する、一の実行期間に関する処理の一例を示すフローチャートである。更新部３２０は、各実行期間について、図１７に示される処理を実行する。
【０１２４】
図１７に示されるように、ステップｓ３１において、更新部３２０は、検出部３００での検出結果に基づいて、対象実行期間においてレベル変化が少なくとも１回発生したか否かを判定する。ステップｓ３１においてＹＥＳと判定されると、更新部３２０は、ステップｓ３２において、対象実行期間よりも一つ前の実行期間においてレベル変化が少なくとも１回発生したか否かを、検出部３００での検出結果に基づいて判定する。一方で、ステップｓ３１においてＮＯと判定されると、更新部３２０は、対象実行期間に関する処理を終了する。
【０１２５】
ステップｓ３２においてＹＥＳと判定されると、更新部３２０は、ステップｓ３３において、攻撃評価値を更新する。一方で、ステップｓ３２においてＮＯと判定されると、更新部３２０は、対象実行期間に関する処理を終了する。
【０１２６】
なお、対象実行期間が１回目の実行期間である場合には、更新部３２０は、ステップｓ３１においてＹＥＳと判定すると、ステップｓ３２を実行せずにステップｓ３３を実行して攻撃評価値を更新する。一方で、更新部３２０は、ステップｓ３１においてＮＯと判定すると、対象実行期間に関する処理を終了する。対象実行期間が１回目の実行期間である場合、更新部３２０は、ステップｓ３１においてＹＥＳと判定すると、ステップｓ３２，ｓ３３を実行せずに、対象実行期間に関する処理を終了してもよい。
【０１２７】
上記の説明から理解できるように、本例に係る更新部３２０は、対象実行期間においてレベル変化が少なくとも１回発生した場合、その一つ前の実行期間においてレベル変化が少なくとも１回発生しているとき、記憶部３１０内の攻撃評価値を更新する。そして、更新部３２０は、対象実行期間においてレベル変化が少なくとも１回発生した場合、その一つ前の実行期間においてレベル変化が発生していないとき、記憶部３１０内の攻撃評価値を更新しない。
【０１２８】
図１８は、本例に係る更新部３２０の動作の一例を説明するための図である。図１８の例では、１回目の実行期間においてレベル変化が３回発生している。更新部３２０は、例えば、攻撃評価値を“０”から＋３だけカウントアップして“３”とする。２回目の実行期間ではレベル変化が１回発生し、その一つ前の１回目の実行期間ではレベル変化が３回発生している。したがって、更新部３２０は、２回目の実行期間でのレベル変化の発生に応じて、攻撃評価値を“３”から＋１だけカウントアップして“４”とする。３回目の実行期間ではレベル変化が１回発生し、その一つ前の２回目の実行期間でもレベル変化が１回発生している。したがって、更新部３２０は、３回目の実行期間でのレベル変化の発生に応じて、攻撃評価値を“４”から＋１だけカウントアップして“５”とする。４回目の実行期間ではレベル変化が発生していない。したがって、更新部３２０は攻撃評価値をカウントアップしない。５回目の実行期間ではレベル変化が１回発生しているものの、その一つ前の４回目の実行期間ではレベル変化が発生していない。したがって、更新部３２０は、５回目の実行期間でレベル変化が発生したとしても、攻撃評価値をカウントアップしない。
【０１２９】
このように、特定タイミング攻撃の連続性の特徴に応じて、記憶部３１０内の攻撃評価値が更新されることによって、処理回路２に対する特定タイミング攻撃を適切に検出することが可能となる。
【０１３０】
なお、更新部３２０は、一つの実行期間において複数回レベル変化が発生したとき、攻撃評価値を＋１だけカウントアップしてもよい。この場合、図１８の例では、１回目の実行期間でのレベル変化の発生に応じて、攻撃評価値が＋１だけカウントアップする。そして、５回目の実行期間の終了時点では、攻撃評価値が“３”となる。
【０１３１】
＜第６の例のその３＞
本例では、更新部３２０は、特定タイミング攻撃についての連続性の特徴を考慮して、繰り返し現れる複数の実行期間でのレベル変化の連続発生回数に応じて、攻撃評価値の１回の更新量（言い換えれば１回のカウントアップ量）を増加する。言い換えれば、更新部３２０は、レベル変化が、繰り返し現れる複数の実行期間において連続的に発生する回数に応じて、攻撃評価値の１回の更新量（言い換えれば１回のカウントアップ量）を増加する。以後、繰り返し現れる複数の実行期間でのレベル変化の連続発生回数を「連続発生回数Ｚ」と呼ぶことがある。
【０１３２】
本例では、更新部３２０は、連続発生回数ＺがＸ１増加するたびに、攻撃評価値の１回のカウントアップ量をＹ１増加する。Ｘ１及びＹ１は１以上の整数である。Ｘ１及びＹ１は例えば１に設定される。したがって、更新部３２０は、連続発生回数Ｚが１つ増加するたびに、攻撃評価値の１回のカウントアップ量を１つ増加する。なお、Ｘ１及びＹ１の値はこの限りではない。また、Ｘ１及びＹ１は互い異なる値であってもよい。
【０１３３】
また本例では、更新部３２０は、特定タイミング攻撃についてのレベル変化回数の特徴を考慮して、１回の実行期間においてレベル変化が複数回発生した場合には、当該実行期間においてレベル変化が発生しなかったものとする。これにより、ある実行期間においてレベル変化が複数回発生した場合には、攻撃評価値及び連続発生回数Ｚが増加することはない。本例では、更新部３２０は、一の実行期間での１回だけのレベル変化が、繰り返して現れる複数の実行期間において連続的に起こる回数に応じて、攻撃評価値の１回のカウントアップ量を増加すると言える。
【０１３４】
図１９は、本例に係る更新部３２０が実行する、一の実行期間に関する処理の一例を示すフローチャートである。更新部３２０は、各実行期間について、図１９に示される処理を実行する。
【０１３５】
図１９に示されるように、ステップｓ４１において、更新部３２０は、検出部３００での検出結果に基づいて、対象実行期間においてレベル変化が１回だけ発生したか否かを判定する。ステップｓ４１においてＹＥＳと判定されると、更新部３２０は、ステップｓ４２において、連続発生回数Ｚを１つ増加する。次にステップｓ４３において、更新部３２０は、攻撃評価値の１回のカウントアップ量を１つ増加する。そしてステップｓ４４において、更新部３２０は、攻撃評価値を更新する。具体的には、更新部３２０は、１回のカウントアップ量だけ攻撃評価値をカウントアップする。なお、ステップｓ４２，ｓ４３の実行順序は入れ替えられてもよい。
【０１３６】
一方で、ステップｓ４１においてＮＯと判定されると、更新部３２０は、ステップｓ４５において、連続発生回数Ｚを零に設定する。そしてステップｓ４６において、更新部３２０は、１回のカウントアップ量を初期値に設定する。初期値は例えば零に設定される。その後、更新部３２０は、対象実行期間に関する処理を終了する。なお、ステップｓ４５，ｓ４６の実行順序は入れ替えられてもよい。
【０１３７】
図２０，２１は、本例に係る更新部３２０の動作の一例を説明するための図である。図２０の例では、一の実行期間での１回だけのレベル変化の発生が、１回目〜５回目の実行期間において連続的に発生している。図２１の例では、１回目、２回目及び５回目の実行期間においてレベル変化が１回だけ発生し、３回目の実行期間においてレベル変化が発生せず、４回目の実行期間においてレベル変化が２回発生している。
【０１３８】
図２０の例では、１回目の実行期間でのレベル変化の発生に応じて、更新部３２０は、連続発生回数Ｚを１つ増加して“１”とする。また更新部３２０は、１回のカウントアップ量を初期値（零）から１つ増加して“１”とする。そして、更新部３２０は、攻撃評価値を“０”から＋１だけカウントアップして“１”とする。
【０１３９】
２回目の実行期間でのレベル変化の発生に応じて、更新部３２０は、連続発生回数Ｚを１つ増加して“２”とする。また更新部３２０は、１回のカウントアップ量を１つ増加して“２”とする。そして、更新部３２０は、攻撃評価値を“１”から＋２だけカウントアップして“３”とする。
【０１４０】
３回目の実行期間でのレベル変化の発生に応じて、更新部３２０は、連続発生回数Ｚを１つ増加して“３”とする。また更新部３２０は、１回のカウントアップ量を１つ増加して“３”とする。そして、更新部３２０は、攻撃評価値を“３”から＋３だけカウントアップして“６”とする。
【０１４１】
４回目の実行期間でのレベル変化の発生に応じて、更新部３２０は、連続発生回数Ｚを１つ増加して“４”とする。また更新部３２０は、１回のカウントアップ量を１つ増加して“４”とする。そして、更新部３２０は、攻撃評価値を“６”から＋４だけカウントアップして“１０”とする。
【０１４２】
５回目の実行期間でのレベル変化の発生に応じて、更新部３２０は、連続発生回数Ｚを１つ増加して“５”とする。また更新部３２０は、１回のカウントアップ量を１つ増加して“５”とする。そして、更新部３２０は、攻撃評価値を“１０”から＋５だけカウントアップして“１５”とする。
【０１４３】
図２１の例では、１回目及び２回目の実行期間において、レベル変化が１回だけ発生している。したがって、２回目の実行期間の終了後には、図２０の例と同様に、連続発生回数Ｚ＝２となり、１回のカウントアップ量が“２”となり、攻撃評価値が“３”となる。３回目の実行期間では、レベル変化が発生していないことから、更新部３２０は、攻撃評価値をカウントアップせずに、連続発生回数Ｚを“０”とし、１回のカウントアップ量を初期値の“０”に設定する。４回目の実行期間では、レベル変化が複数回発生していることから、更新部３２０は、攻撃評価値をカウントアップせずに、連続発生回数Ｚを“０”とし、１回のカウントアップ量を初期値の“０”に設定する。５回目の実行期間では、レベル変化が１回発生していることから、連続発生回数Ｚ＝１となり、１回のカウントアップ量が“１”となり、攻撃評価値が“３”から＋１だけカウントアップして“４”となる。
【０１４４】
このように、特定タイミング攻撃についてのレベル変化回数の特徴と連続性の特徴に応じて、記憶部３１０内の攻撃評価値が更新されることによって、処理回路２に対する特定タイミング攻撃を適切に検出することが可能となる。
【０１４５】
なお、上述のステップｓ４１において、更新部３２０は、対象実行期間においてレベル変化が少なくとも１回発生したか否かを判定してもよい。この場合には、特定タイミング攻撃についてのレベル変化回数の特徴が考慮されずに、１回の実行期間においてレベル変化が複数回発生した場合であっても、連続発生回数Ｚ、１回のカウントアップ量及び攻撃評価値が増加する。更新部３２０は、一の実行期間での少なくとも１回のレベル変化が、繰り返して現れる複数の実行期間において連続的に起こる回数に応じて、１回のカウントアップ量を増加すると言える。
【０１４６】
＜第６の例のその４＞
本例では、更新部３２０は、繰り返し現れる複数の実行期間において、レベル変化の非発生がＬ回（Ｌは２以上の整数）連続する場合、記憶部３１０内の攻撃評価値を減少する。Ｌは例えば“５”に設定される。この場合、更新部３２０は、繰り返し現れる複数の実行期間でのレベル変化の連続非発生回数が５回である場合、攻撃評価値を減少すると言える。以後、繰り返し現れる複数の実行期間でのレベル変化の連続非発生回数を「連続非発生回数Ｗ」と呼ぶことがある。
【０１４７】
図２２は、本例に係る更新部３２０が実行する、一の実行期間に関する処理の一例を示すフローチャートである。更新部３２０は、各実行期間について、図２２に示される処理を実行する。
【０１４８】
図２２に示されるように、ステップｓ５１において、更新部３２０は、検出部３００での検出結果に基づいて、対象実行期間でのレベル変化の発生回数を確認する。更新部３２０は、対象実行期間でのレベル変化の検出回数が１回であることを確認すると、ステップｓ５２において、連続非発生回数Ｗを零に設定する。次にステップｓ５３において、更新部３２０は連続発生回数Ｚを１つ増加する。次にステップｓ５４において、更新部３２０は、攻撃評価値の１回のカウントアップ量を１つ増加する。そしてステップｓ５５において、更新部３２０は、攻撃評価値を更新する。その後、更新部３２０は、対象実行期間に関する処理を終了する。なお、ステップｓ５２は、ステップｓ５３よりも後に実行されてもよい。また、ステップｓ５３，ｓ５４の実行順序は入れ替えられてもよい。
【０１４９】
ステップｓ５１において、更新部３２０は、対象実行期間でのレベル変化の検出回数が複数回であることを確認すると、ステップｓ５６において、更新部３２０は連続発生回数Ｚを零に設定する。次にステップｓ５７において、更新部３２０は連続非発生回数Ｗを零に設定する。そしてステップｓ５８において、更新部３２０は、１回のカウントアップ量を初期値に設定する。その後、更新部３２０は、対象実行期間に関する処理を終了する。なお、ステップｓ５６〜ｓ５８の実行順序は入れ替えられてもよい。
【０１５０】
ステップｓ５１において、更新部３２０は、対象実行期間においてレベル変化が発生していないことを確認すると、ステップｓ５９において、連続発生回数Ｚを零に設定する。次にステップｓ６０において、更新部３２０は連続非発生回数Ｗを１つ増加する。次にステップｓ６１において、更新部３２０は、連続非発生回数ＷがＬ回であるか否かを判定する。更新部３２０は、連続非発生回数ＷがＬ回に一致すると判定すると、ステップｓ６２において、攻撃評価値を減少する。ステップｓ６２において、更新部３２０は、例えば、攻撃評価値をＶだけ減少する。Ｖは１以上の整数である。ステップｓ６２においては、更新部３２０は、攻撃評価値をリセットしてもよい。つまり、更新部３２０は、攻撃評価値を零に設定してもよい。ステップｓ６２の後、ステップｓ６３において、更新部３２０は、連続非発生回数Ｗをリセットして零に設定する。その後、更新部３２０は、対象実行期間に関する処理を終了する。なお、ステップｓ５９は、ステップｓ６０よりも後に実行されてもよい。また、ステップｓ６２，ｓ６３の実行順序は入れ替えられてもよい。
【０１５１】
図２３は本例に係る更新部３２０の動作の一例を説明するための図である。図２３の例では、１回目及び２回目の実行期間でのレベル変化の発生回数が１回となっている。したがって、２回目の実行期間の終了後、攻撃評価値が“３”、連続発生回数Ｚが“１”、連続非発生回数Ｗが“０”となっている。３回目の実行期間では、レベル変化が発生していないことから、攻撃評価値はカウントアップされず、連続発生回数Ｚが零に設定され、連続非発生回数Ｗが増加して“１”となる。その後、レベル変化の非発生が、Ｍ−１回目の実行期間まで連続して発生して、連続非発生回数ＷがＬ回となると、攻撃評価値が減少する。図２３の例では、攻撃評価値がリセットされて零に設定されている。そして、Ｍ回目の実行期間においてレベル変化が１回だけ発生すると、攻撃評価値が＋１だけ増加して“１”となり、連続発生回数Ｚが“１”となる。
【０１５２】
以上のように、繰り返し現れる複数の実行期間において、レベル変化の非発生が連続する場合に、記憶部３１０内の攻撃評価値を減少させることによって、処理回路２に対する特定タイミング攻撃を適切に検出することが可能となる。
【０１５３】
なお、図２２に示されるフローチャートにおいて、対象実行期間でのレベル変化の発生回数が複数回であることがステップｓ５１で確認された場合、ステップｓ５６〜ｓ５８の替わりに、ステップｓ５２〜ｓ５５が実行されてもよい。図２４は、この場合の更新部３２０の動作の一例を示すフローチャートである。なお、図２４に示されるステップｓ５１は、上述の図１７に示されるステップｓ３１と実質的には同じ処理である。ステップｓ５１での「０回」は、ステップｓ３１での「ＮＯ」に対応し、ステップｓ５１での「１回／複数回」は、ステップｓ３１での「ＹＥＳ」に対応する。
【０１５４】
また、図２２に示されるフローチャートにおいて、連続発生回数Ｚに応じて１回のカウントアップ量を増加する処理が実行されてなくてもよい。図２５、この場合の更新部３２０の動作の一例を示すフローチャートである。図２５に示されるフローチャートは、上述の図２２に示されるフローチャートにおいて、ステップｓ５３，ｓ５４，ｓ５６，ｓ５８，ｓ５９を削除したものである。図２５のステップｓ５５では、更新部３２０は、攻撃評価値を＋１だけ増加する。
【０１５５】
また上述の図１４に示されるフローチャートにおいて、連続非発生回数ＷがＬ回になると攻撃評価値を減少してもよい。図２６は、この場合の更新部３２０の動作の一例を示すフローチャートである。図２６に示されるフローチャートは、図２５に示されるフローチャートにおいて、ステップｓ５２とステップｓ５５の間に、図１４のステップｓ２２を追加したものである。図２６に示されるステップｓ５１は、図１４に示されるステップｓ２１に相当するステップである。図２６の例では、ステップｓ２２においてＹＥＳと判定されると、ステップｓ５５が実行されて、攻撃評価値が＋１だけ増加する。一方、ステップｓ２２においてＮＯと判定されると、対象実行期間に関する処理が終了する。
【０１５６】
また上述の図１７に示されるフローチャートにおいて、連続非発生回数ＷがＬ回になると攻撃評価値を減少してもよい。図２７は、この場合の更新部３２０の動作の一例を示すフローチャートである。図２７に示されるフローチャートは、上述の図２４に示されるフローチャートにおいて、ステップｓ５３，５４の替わりにステップｓ７１が実行されるものである。図２７のステップｓ５１は図１７のステップｓ３１に対応し、図２７のステップｓ７１は図１７のステップｓ３２と実質的に同じ処理である。ステップｓ７１において、更新部３２０は、対象実行期間の一つ前の実行期間でのレベル変化の発生回数を確認する。ステップｓ７１において、更新部３２０は、一つ前の実行期間でのレベル変化の発生回数が１回あるいは複数回であることを確認すると、ステップｓ５５を実行して攻撃評価値を更新する。一方で、ステップｓ７１において、更新部３２０は、一つ前の実行期間においてレベル変化が発生していないことを確認すると、対象実行期間に関する処理を実行する。
【０１５７】
上記の図２２及び２４〜２７に示される例では、連続非発生回数ＷがＬ回になると、次の実行期間でのレベル変化の発生回数にかかわらず連続非発生回数Ｗがリセットされているが、リセットされなくてもよい。この場合、更新部３２０は、連続非発生回数ＷがＬ回以上の場合、攻撃評価値を減少してもよい。図２８は、図２２に対応するこの場合の更新部３２０の動作を示すフローチャートである。図２８に示されるフローチャートは、図２２に示されるフローチャートにおいて、ステップｓ６１の替わりにステップｓ６１ａが実行されて、ステップｓ６３が削除されたものである。図２８に示されるように、ステップｓ６０の後、更新部３２０は、ステップｓ６１ａにおいて、連続非発生回数ＷがＬ回以上であるか否かを判定する。ステップｓ６１ａにおいてＹＥＳと判定されると、更新部３２０は、ステップｓ６２を実行して、攻撃評価値を減少する。ステップｓ６２の後、対象実行期間に関する処理が終了する。一方で、ステップｓ６１ａにおいてＮＯと判定されると、対象実行期間に関する処理が終了する。なお、図２４〜２７に示されるフローチャートにおいても、ステップｓ６１の替わりにステップｓ６１ａが実行されて、ステップｓ６３が削除されてもよい。
【０１５８】
上記の第６の例のその１〜その４については、上記の第２の例のように、記憶部３１０が第１タイプの記憶部３１１及び第２タイプの記憶部３１２を有する攻撃検出装置３０に対しても適用することができる。この場合、更新部３２０は、第６の例のその１〜その４と同様に、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて、第１タイプの記憶部３１１内の第１攻撃評価値を更新する。また、更新部３２０は、第６の例のその１〜その４と同様に、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて、第２タイプの記憶部３１２内の第２攻撃評価値を更新する。
【０１５９】
また、第３の例のように、判定部３３０が処理回路２に対する攻撃の危険度を判定する場合であっても、更新部３２０は、第６の例のその１〜その４と同様に、繰り返し現れる複数の実行期間の間でのレベル変化の検出の連続性に基づいて、記憶部３１０内の攻撃評価値を更新することができる。
【０１６０】
＜第７の例＞
上記の第６の例のその３では、更新部３２０は、特定タイミング攻撃についての連続性の特徴を考慮して、１回のカウントアップ量を連続発生回数Ｚに応じて増加していた。これに対して、本例では、更新部３２０は、特定タイミング攻撃についての連続性の特徴を考慮して、攻撃判定処理で使用されるしきい値を連続発生回数Ｚに応じて減少する。
【０１６１】
本例では、更新部３２０は、連続発生回数ＺがＸ２増加するたびに、しきい値をＹ２減少する。Ｘ２及びＹ２は１以上の整数である。Ｘ２及びＹ２は例えば１に設定される。したがって、更新部３２０は、連続発生回数Ｚが１つ増加するたびに、判定部３３０が実行する攻撃判定処理で使用されるしきい値を１つ減少する。なお、Ｘ２及びＹ２の値はこの限りではない。また、Ｘ２及びＹ２は互い異なる値であってもよい。
【０１６２】
図２９は、本例に係る更新部３２０が実行する、一の実行期間に関する処理の一例を示すフローチャートである。更新部３２０は、各実行期間について、図２９に示される処理を実行する。
【０１６３】
図２９に示されるように、ステップｓ８１において、更新部３２０は、対象実行期間においてレベル変化が１回だけ発生したか否かを判定する。ステップｓ８１においてＹＥＳと判定されると、更新部３２０は、ステップｓ８２において、連続発生回数Ｚを１つ増加する。次にステップｓ８３において、更新部３２０は、攻撃判定処理で使用されるしきい値を１つ減少する。そしてステップｓ８４において、更新部３２０は、攻撃評価値を更新する。具体的には、更新部３２０は、１回のカウントアップ量だけ攻撃評価値をカウントアップする。なお、ステップｓ８２〜ｓ８４の実行順序は入れ替えられてもよい。
【０１６４】
一方で、ステップｓ８１においてＮＯと判定されると、更新部３２０は、ステップｓ８５において、更新部３２０は連続発生回数Ｚを零に設定する。その後、更新部３２０は、対象実行期間に関する処理を終了する。
【０１６５】
図３０，３１は、本例に係る更新部３２０の動作の一例を説明するための図である。図３０，３１の例では、攻撃判定処理で使用されるしきい値の初期値が“１００”に設定されている。
【０１６６】
図３０の例では、一の実行期間での１回だけのレベル変化が、１回目〜５回目の実行期間において連続的に発生している。したがって、５回目の実行期間の終了後、攻撃評価値及び連続発生回数Ｚはともに“５”となる。また、しきい値は、初期値の“１００”から“５”減少して“９５”となる。
【０１６７】
図３１の例では、１回目及び２回目の実行期間において、レベル変化が１回だけ発生している。したがって、２回目の実行期間の終了後には、攻撃評価値及び連続発生回数Ｚはともに“２”となり、しきい値が“９８”となる。３回目の実行期間ではレベル変化が発生しておらず、４回目の実行期間ではレベル変化が複数回発生していることから、４回目の実行期間の終了後、攻撃評価値が“２”となり、連続発生回数Ｚが“０”となり、しきい値が“９８”となる。５回目の実行期間では、レベル変化が１回発生していることから、攻撃評価値が“２”から＋１だけカウントアップして“３”となる。そして、連続発生回数Ｚ＝１となり、しきい値が１つ減少して“９７”となる。
【０１６８】
このように、本例では、特定タイミング攻撃についてのレベル変化回数の特徴と連続性の特徴に応じて、攻撃判定処理で使用されるしきい値が減少することから、処理回路２に対する特定タイミング攻撃を適切に検出することが可能となる。
【０１６９】
なお、上述のステップｓ８１において、更新部３２０は、対象実行期間においてレベル変化が少なくとも１回発生したか否かを判定してもよい。この場合には、特定タイミング攻撃についてのレベル変化回数の特徴が考慮されずに、１回の実行期間においてレベル変化が複数回発生した場合であっても、連続発生回数Ｚ及び攻撃評価値が増加し、しきい値が減少する。更新部３２０は、一の実行期間での少なくとも１回のレベル変化が、繰り返して現れる複数の実行期間において連続的に起こる回数に応じて、しきい値を減少すると言える。
【０１７０】
また、本例については、上記の第２の例のように、記憶部３１０が第１タイプの記憶部３１１及び第２タイプの記憶部３１２を有する攻撃検出装置３０に対しても適用することができる。この場合、更新部３２０は、上記と同様に、連続発生回数Ｚに応じて、第１タイプの記憶部３１１内の第１攻撃評価値と比較される第１タイプ用のしきい値を減少してもよい。また、更新部３２０は、連続発生回数Ｚに応じて、第２タイプの記憶部３１２内の第２攻撃評価値と比較される第２タイプ用のしきい値を低減してもよい。
【０１７１】
また、本例については、上記の第３の例のように、判定部３３０が互いに異なる複数のしきい値を用いて処理回路２に対する攻撃の危険度を判定する攻撃検出装置３０に対しても適用することができる。この場合、更新部３２０は、判定部３３０が使用する互いに異なる複数のしきい値のそれぞれを、上記と同様に、連続発生回数Ｚに応じて低減してもよい。
【０１７２】
＜第８の例＞
特定タイミング攻撃において、攻撃者は、繰り返し現れる複数の実行期間での同じタイミングを狙ってレベル変化を発生させることがある。例えば、実行期間で実行される対象処理が、鍵長が１２８ビットのＡＥＳに基づく暗号処理の場合、攻撃者は、繰り返し現れる複数の実行期間のそれぞれにおいて、当該暗号処理での１０回目のラウンドが実行されるタイミングでレベル変化を発生させて、処理回路２に対する攻撃を行うことがある。
【０１７３】
そこで、本例では、攻撃検出装置３０は、各実行期間を複数の部分期間に分割する。本例では、各実行期間は、第１〜第Ｋ部分期間に分割される。Ｋは２以上の整数である。一の実行期間を構成する第１〜第Ｋ部分期間は、当該実行期間の開始から終了にかけてこの順で現れる。攻撃検出装置３０は、複数の部分期間のそれぞれについて、当該部分期間において処理回路２に対する攻撃が発生した可能性の度合いを示す攻撃評価値を記憶部３１０に記憶する。攻撃検出装置３０は、複数の部分期間のそれぞれについて、当該部分期間でのレベル変化の発生に応じて、当該部分期間に対応する攻撃評価値を更新する。そして、攻撃検出装置３０は、複数の部分期間についての攻撃評価値に基づいて、処理回路２に対して攻撃が発生したか否かを判定する。これにより、特定タイミング攻撃をより適切に検出することが可能となる。以下に本例に係る攻撃検出装置３０の動作について詳細に説明する。
【０１７４】
＜攻撃評価値の更新方法の一例＞
本例では、記憶部３１０には、第１〜第Ｋ部分期間にそれぞれ対応するＫ個の攻撃評価値が記憶される。更新部３２０は、第１〜第Ｋ部分期間のそれぞれの部分期間について、当該部分期間でのレベル変化の発生に応じて、記憶部３１０内の当該部分期間に対応する攻撃評価値を更新する。第１〜第Ｋ部分期間にそれぞれ対応するＫ個の攻撃評価値の更新方法は互いに同じである。
【０１７５】
図３２は、ある時点でのＫ個の攻撃評価値の一例を示す図である。図３２の例では、Ｋ＝５であって、一の実行期間が第１〜第５部分期間に分割されている。図３２の例では、第１〜第５部分期間に対応する５個の攻撃評価値が、それぞれ“１”、“４”、“４２”、“０”及び“３”となっている。図３２の例では、第１〜第５部分期間のうち、第３部分期間において攻撃が発生した可能性が高いと言える。
【０１７６】
攻撃評価値の更新方法としては、上記の様々な更新方法を採用することができる。例えば、更新部３２０は、上述の図４と同様に、第ｋ部分期間（１≦ｋ≦Ｋ）において、レベル変化が発生するたびに、第ｋ部分期間に対応する攻撃評価値を更新してもよい。以後、説明の対象の一の第ｋ部分期間を「対象第ｋ部分期間」と呼ぶことがある。また、第ｋ部分期間に対応する攻撃評価値を「第ｋ対応攻撃評価値」と呼ぶことがある。
【０１７７】
更新部３２０は、上述の第６の例のように、繰り返し現れる複数の第ｋ部分期間の間でのレベル変化の発生の連続性に基づいて、第ｋ対応攻撃評価値を更新してもよい。この場合の更新部３２０の動作は、基本的には、第６の例で説明した内容において、対象実行期間を対象第ｋ部分期間に置き換えた動作となる。実行期間が繰り返し現れることによって、第ｋ部分期間も繰り返し現れる。
【０１７８】
例えば、第６の例のその１についての図１４のフローチャートにおいて、対象実行期間を対象第ｋ部分期間に置き換えた場合を考える。この場合、更新部３２０は、ステップｓ２１において、対象第ｋ部分期間においてレベル変化が１回だけ発生したか否かを判定する。またステップｓ２２において、更新部３２０は、対象第ｋ実行期間よりも一つ前の第ｋ部分期間においてレベル変化が１回だけ発生したか否かを判定する。そして更新部３２０は、ステップｓ２３において、第ｋ対応攻撃評価値を更新する。更新部３２０は、対象実行期間を対象第ｋ部分期間に置き換えた図１４に示される第ｋ部分期間に関する処理を、繰り返し現れる複数の第ｋ部分期間のそれぞれについて行う。そして、更新部３２０は、同様の処理を、第１〜第Ｋ部分期間のそれぞれについて行う。
【０１７９】
また第６の例のその２についての図１７のフローチャートにおいて、対象実行期間を対象第ｋ部分期間に置き換えた場合を考える。この場合、更新部３２０は、ステップｓ３１において、対象第ｋ部分期間においてレベル変化が少なくとも１回発生したか否かを判定する。また更新部３２０は、ステップｓ３２において、対象第ｋ部分期間よりも一つ前の第ｋ部分期間においてレベル変化が少なくとも１回発生したか否かを判定する。そして更新部３２０は、ステップｓ３３において、第ｋ対応攻撃評価値を更新する。更新部３２０は、対象実行期間を対象第ｋ部分期間に置き換えた図１７に示される第ｋ部分期間に関する処理を、繰り返し現れる複数の第ｋ部分期間のそれぞれについて行う。そして、更新部３２０は、同様の処理を、第１〜第Ｋ部分期間のそれぞれについて行う。
【０１８０】
また第６の例のその３についての図１９のフローチャートにおいて、対象実行期間を対象第ｋ部分期間に置き換えた場合を考える。この場合には、更新部３２０は、ステップｓ４１において、対象第ｋ部分期間においてレベル変化が１回だけ発生したか否かを判定する。ステップｓ４２において、更新部３２０は、第ｋ部分期間についての連続発生回数Ｚを１つ増加する。ここで、第ｋ部分期間についての連続発生回数Ｚとは、繰り返し現れる複数の第ｋ部分期間でのレベル変化の連続発生回数を意味する。ステップｓ４３において、更新部３２０は、第ｋ対応攻撃評価値の１回のカウントアップ量を１つ増加する。ステップｓ４４において、更新部３２０は第ｋ対応攻撃評価値を更新する。ステップｓ４５において、更新部３２０は、第ｋ部分期間についての連続発生回数Ｚを零に設定する。ステップｓ４６において、更新部３２０は、第ｋ対応攻撃評価値の１回のカウントアップ量を初期値に設定する。更新部３２０は、対象実行期間を対象第ｋ部分期間に置き換えた図１９に示される第ｋ部分期間に関する処理を、繰り返し現れる複数の第ｋ部分期間のそれぞれについて行う。そして、更新部３２０は、同様の処理を、第１〜第Ｋ部分期間のそれぞれについて行う。
【０１８１】
また第６の例のその４についての図２２，２４〜２７のフローチャートにおいて、対象実行期間を対象第ｋ部分期間に置き換えた場合を考える。この場合、更新部３２０は、ステップｓ５１において、対象第ｋ部分期間でのレベル変化の発生回数を確認する。ステップｓ５２，ｓ５７，ｓ６３において、第ｋ部分期間についての連続非発生回数Ｗを零に設定する。ここで、第ｋ部分期間についての連続非発生回数Ｗとは、繰り返し現れる複数の第ｋ部分期間でのレベル変化の連続非発生回数を意味する。ステップｓ５３において、更新部３２０は、第ｋ部分期間についての連続発生回数Ｚを１つ増加する。ステップｓ５４において、更新部３２０は、第ｋ対応攻撃評価値の１回のカウントアップ量を１つ増加する。ステップｓ５５において、更新部３２０は、第ｋ対応攻撃評価値を更新する。ステップｓ５６，ｓ５９において、更新部３２０は、第ｋ部分期間についての連続発生回数Ｚを零に設定する。ステップｓ５８において、更新部３２０は、第ｋ対応攻撃評価値の１回のカウントアップ量を初期値に設定する。ステップｓ６０において、更新部３２０は、対象第ｋ部分期間についての連続非発生回数Ｗを１つ増加する。ステップｓ６１において、更新部３２０は、対象第ｋ部分期間についての連続非発生回数ＷがＬ回であるか否かを判定する。ステップｓ６２において、更新部３２０は、第ｋ対応攻撃評価値を減少する。ステップｓ２２において（図２６）、更新部３２０は、対象第ｋ部分期間の一つ前の第ｋ部分期間においてレベル変化が１回だけ発生したか否かを判定する。ステップｓ７１において（図２７）、更新部３２０は、対象第ｋ部分期間の一つ前の第ｋ部分期間での発生回数を確認する。更新部３２０は、対象実行期間を対象第ｋ部分期間に置き換えた図２２，２４〜２７のフローチャートに示される第ｋ部分期間に関する処理を、繰り返し現れる複数の第ｋ部分期間のそれぞれについて行う。そして、更新部３２０は、同様の処理を、第１〜第Ｋ部分期間のそれぞれについて行う。更新部３２０は、上述の図２８と同様に、ステップｓ６１の替わりのステップｓ６１ａにおいて、対象第ｋ部分期間についての連続非発生回数ＷがＬ回以上であるか否かを判定し、ステップｓ６３を実行しなくてもよい。
【０１８２】
なお、特定タイミング攻撃のレベル変化回数の特徴を考慮して、更新部３２０は、上述した第ｋ対応攻撃評価値の各更新方法において、実行期間での、第ｋ部分期間を含む複数の部分期間においてレベル変化が発生している場合には、第ｋ対応攻撃評価値を更新しなくてもよい。
【０１８３】
＜攻撃判定処理の一例＞
本例に係る判定部３３０は、攻撃判定処理において、記憶部３１０内の第１〜第Ｋ対応攻撃評価値に基づいて、処理回路２に対して攻撃が発生したか否かを判定する。判定部３３０は、例えば、攻撃判定処理において、第１〜第Ｋ対応攻撃評価値の総和を求める。そして判定部３３０は、求めた総和が所定値未満のとき、処理回路２に対する攻撃が発生していないと判定する。所定値は、例えば５０に設定されるが、これに限られない。一方で、判定部３３０は、求めた総和が所定値以上のとき、第１〜第Ｋ対応攻撃評価値のそれぞれについて、当該総和に対する割合を評価値割合として求める。そして、判定部３３０は、第１〜第Ｋ対応攻撃評価値についての評価値割合において、しきい値ＴＨ以上の評価値割合が存在する場合、処理回路２に対する攻撃が発生したと判定する。一方で、判定部３３０は、第１〜第Ｋ対応攻撃評価値についての評価値割合において、しきい値ＴＨ以上の評価値割合が存在しない場合、処理回路２に対する攻撃が発生していないと判定する。しきい値ＴＨは、例えば８０％に設定される。なお、しきい値ＴＨは８０％以外に設定されてもよい。
【０１８４】
図３３は、図３２の例での評価値割合を示す図である。図３３の縦軸は、各部分期間の攻撃評価値についての評価値割合を示す。図３２の例では、第１〜第５対応攻撃評価値の総和は“５０”となる。そして、第１〜第５対応攻撃評価値についての評価値割合は、それぞれ、２％、８％、８４％、０％及び６％となる。したがって、図３３に示されるように、第３部分期間の第３対応攻撃評価値についての評価値割合がしきい値ＴＨ以上となっている。攻撃判定処理が実行される際の第１〜第５対応攻撃評価値が図３２のような場合には、処理回路２に対する攻撃が発生したと判定される。なお、第１〜第Ｋ対応攻撃評価値に基づいて、処理回路２に対して攻撃が発生したか否かを判定する方法については、上記の例には限れない。
【０１８５】
このように、本例では、実行期間を構成する複数の部分期間についての攻撃評価値に基づいて、処理回路２に対して攻撃が発生したか否かが判定されることから、繰り返し現れる複数の実行期間での同じタイミングを狙ってレベル変化を発生させるような特定タイミング攻撃を適切に検出することができる。
【０１８６】
＜第９の例＞
図３４は、本例に係る処理装置１が備える制御装置３の攻撃検出装置３０の構成の一例を主に示す図である。図３４に示されるように、本例では、攻撃検出装置３０は、複数の更新部３２０ａ，３２０ｂ，３２０ｃ及び複数の判定部３３０ａ，３３０ｂ，３３０ｃを備える。
【０１８７】
更新部３２０ａ及び判定部３３０ａは、記憶部３１０に記憶される攻撃評価値３１５ａを更新するとともに、当該攻撃評価値３１５ａに基づいた攻撃判定処理を行う更新判定部３８０ａを構成する。更新部３２０ｂ及び判定部３３０ｂは、記憶部３１０に記憶される攻撃評価値３１５ｂを更新するとともに、当該攻撃評価値３１５ｂに基づいた攻撃判定処理を行う更新判定部３８０ｂを構成する。更新部３２０ｃ及び判定部３３０ｃは、記憶部３１０に記憶される攻撃評価値３１５ｃを更新するとともに、当該攻撃評価値３１５ｃに基づいた攻撃判定処理を行う更新判定部３８０ｃを構成する。複数の更新判定部３８０ａ〜３８０ｃの動作は互いに異なっている。
【０１８８】
更新判定部３８０ａが備える更新部３２０ａ及び判定部３３０ａは、例えば、上記の第１の例に係る更新部３２０及び判定部３３０と同様に動作する。具体的には、更新部３２０ａは、レベル変化が発生するたびに攻撃評価値３１５ａを更新する更新処理を、処理装置１の起動中において常に行う。判定部３３０ａは、攻撃評価値３１５ａとしきい値との比較結果に基づいて、処理回路２に対する攻撃が発生した否かを判定する。
【０１８９】
更新判定部３８０ｂが備える更新部３２０ｂ及び判定部３３０ｂは、例えば、上記の第６の例に係る更新部３２０及び判定部３３０と同様に動作する。具体的には、更新部３２０ｂは、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて、記憶部３１０内の攻撃評価値３１５ｂを更新する。本例では、更新部３２０ｂは、例えば、第６の例のその３と同様に、連続発生回数Ｚに応じて、攻撃評価値３１５ａの１回のカウントアップ量を増加する。判定部３３０ｂは、攻撃評価値３１５ｂとしきい値との比較結果に基づいて、処理回路２に対する攻撃が発生した否かを判定する。
【０１９０】
更新判定部３８０ｃが備える更新部３２０ｃ及び判定部３３０ｃは、例えば、上記の第８の例の更新部３２０及び判定部３３０と同様に動作する。この場合、記憶部３１０には、実行期間を構成する第１〜第Ｋ部分期間にそれぞれ対応するＫ個の攻撃評価値３１５ｃが記憶される。更新部３２０ｃは、記憶部３１０内のＫ個の攻撃評価値３１５ｃのそれぞれについて、当該攻撃評価値３１５ｃに対応する部分期間でのレベル変化の発生に応じて、当該攻撃評価値３１５ｃを更新する。判定部３３０ｃは、攻撃判定処理において、Ｋ個の攻撃評価値３１５ｃの総和を求める。そして、判定部３３０ｃは、求めた総和が所定値未満であれば、処理回路２に対する攻撃が発生していないと判定する。一方で、判定部３３０ｃは、求めた総和が所定値以上であれば、Ｋ個の攻撃評価値３１５ｃのそれぞれについて、当該総和に対する割合を評価値割合として求める。そして、判定部３３０ｃは、Ｋ個の攻撃評価値についての評価値割合において、しきい値ＴＨ以上の評価値割合が存在する場合、処理回路２に対する攻撃が発生したと判定する。一方で、判定部３３０は、Ｋ個の攻撃評価値についての評価値割合において、しきい値ＴＨ以上の評価値割合が存在しない場合、処理回路２に対する攻撃が発生していないと判定する。
【０１９１】
本例では、制御部３１は、判定部３３０ａにおいて処理回路２に対する攻撃が発生したと判定されると、第１の例のように、処理回路２の動作を停止する。また、制御部３１は、判定部３３０ｂにおいて処理回路２に対する攻撃が発生したと判定されると、処理回路２に対する動作を停止する。そして、制御部３１は、判定部３３０ｃにおいて処理回路２に対する攻撃が発生したと判定されると、処理回路２に対する動作を停止する。
【０１９２】
このように、本例では、互いに異なる動作を行う複数の更新判定部が設けられていることから、処理回路２に対する複数種類の故障利用攻撃を検出することが可能となる。
【０１９３】
例えば、更新判定部３８０ａは、対象処理が行われる実行期間以外にもレベル変化が発生するような故障利用攻撃を適切に検出することができる。
【０１９４】
また、更新判定部３８０ｂは、実行期間の全体にわたってレベル変化が複数回発生するような特定タイミング攻撃を適切に検出することができる。例えば、攻撃者は、実行期間の開始から終了にかけてレベル変化を繰り返し発生させ、そのときの処理回路２の動作状況に基づいて、実行期間において最終的に攻撃すべきタイミングを決定することがある。例えば、対象処理が、鍵長が１２８ビットのＡＥＳに基づく暗号処理である場合を考える。この場合、攻撃者は、暗号処理の実行期間の開始から終了にかけてレベル変化を繰り返し発生させ、そのときの処理回路２の動作状況に基づいて、当該暗号処理での１０回目のラウンドが実行されるタイミングを、最終的に攻撃すべきタイミングとして特定することがある。更新判定部３８０ｂは、実行期間において最終的に攻撃すべきタイミングが決定される前に、特定タイミング攻撃を検出することが可能となる。
【０１９５】
また、更新判定部３８０ｃは、実行期間のある特定のタイミングを狙ってレベル変化を発生させるような特定タイミング攻撃を適切に検出することができる。
【０１９６】
なお、制御部３１は、判定部３３０ａにおいて攻撃が発生したと判定されたときと、判定部３３０ｂにおいて攻撃が発生したと判定されたときと、判定部３３０ｃにおいて攻撃が発生したと判定されたときとで、処理回路２に対する制御を変更してもよい。例えば、処理回路２が行う暗号処理に対して攻撃が行われる場合を考える。この場合、制御部３１は、判定部３３０ａにおいて攻撃が発生したと判定されたときには、例えば、処理回路２に、暗号処理の実行タイミングを変更させる。また制御部３１は、判定部３３０ｂにおいて攻撃が発生したと判定されたときには、例えば、処理回路２に、暗号処理で使用する鍵を変更させる。そして、制御部３１は、判定部３３０ｃにおいて攻撃が発生したと判定されたときには、例えば、処理回路２の動作を停止する。処理回路２に対する制御の内容の組み合わせはこの限りではない。
【０１９７】
上記の例では、攻撃検出装置３０は、互いに異なる動作を行う３つの更新判定部を備えているが、互いに異なる動作を行う２つの更新判定部を備えてもよいし、互いに異なる動作を行う４つ以上の更新判定部を備えてもよい。また、更新判定部３８０ａ，３８０ｂ，３８０ｃが扱う複数の攻撃評価値３１５ａ，３１５ｂ，３１５ｃは、互いに異なる複数の記憶部にそれぞれ記憶されてもよい。この場合、当該複数の記憶部には、第１タイプの記憶が含まれてもよいし、第２タイプの記憶部が含まれてもよい。
【０１９８】
以上のように、処理装置１は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【０１９９】
１  処理装置
２  処理回路
３  制御装置
３０  攻撃検出装置
３１  制御部
３００  検出部
３１０  記憶部
３１１  第１タイプの記憶部
３１２  第２タイプの記憶部
３１５ａ，３１５ｂ，３１５ｃ  攻撃評価値
３２０，３２０ａ，３２０ｂ，３２０ｃ  更新部
３３０，３３０ａ，３３０ｂ，３３０ｃ  判定部
【図１】
2019179991.tif 000003
【図２】
2019179991.tif 000004
【図３】
2019179991.tif 000005
【図４】
2019179991.tif 000006
【図５】
2019179991.tif 000007
【図６】
2019179991.tif 000008
【図７】
2019179991.tif 000009
【図８】
2019179991.tif 000010
【図９】
2019179991.tif 000011
【図１０】
2019179991.tif 000012
【図１１】
2019179991.tif 000013
【図１２】
2019179991.tif 000014
【図１３】
2019179991.tif 000015
【図１４】
2019179991.tif 000016
【図１５】
2019179991.tif 000017
【図１６】
2019179991.tif 000018
【図１７】
2019179991.tif 000019
【図１８】
2019179991.tif 000020
【図１９】
2019179991.tif 000021
【図２０】
2019179991.tif 000022
【図２１】
2019179991.tif 000023
【図２２】
2019179991.tif 000024
【図２３】
2019179991.tif 000025
【図２４】
2019179991.tif 000026
【図２５】
2019179991.tif 000027
【図２６】
2019179991.tif 000028
【図２７】
2019179991.tif 000029
【図２８】
2019179991.tif 000030
【図２９】
2019179991.tif 000031
【図３０】
2019179991.tif 000032
【図３１】
2019179991.tif 000033
【図３２】
2019179991.tif 000034
【図３３】
2019179991.tif 000035
【図３４】
2019179991.tif 000036