【解決手段】攻撃検出装置は、検出部、記憶部、第1更新部及び第2判定部を備える。検出部は、所定回路に供給される電源あるいは信号のレベル変化の発生を検出する。記憶部は、所定回路に対する攻撃が発生した可能性の度合いを示す第1攻撃評価値を記憶する。第1更新部は、検出部での検出結果に基づいて、記憶部内の第1攻撃評価値を更新する。第1判定部は、記憶部内の第1攻撃評価値に基づいて、攻撃が発生したか否かを判定する。
【発明を実施するための形態】
【0012】
図1は処理装置1の構成の一例を示す図である。処理装置1は、例えば、他の装置と通信する通信処理などを含む複数種類の処理を行うことが可能である。処理装置1は、例えば、スマートフォン等の携帯電話機、タブレット端末、パーソナルコンピュータ、ウェアラブル機器、ゲーム機器、プロジェクタ、カーナビゲーション装置等の車載機器、ドローン機器あるいはIoT(Internet of Things)端末などで使用することが可能な回路である。
【0013】
図1に示されるように、処理装置1は、通信処理などを含む複数種類の処理を行うことが可能な処理回路2と、処理回路2を制御することが可能な制御装置3と、処理回路2及び制御装置3に電源100を供給することが可能な電源回路4とを備える。電源回路4は、例えば、充電式の電池から供給される電力に基づいて電源100を生成することが可能である。また電源回路4は、商用電源から供給される電力に基づいて電源100を生成してもよいし、ACアダプタから供給される電力に基づいて電源100を生成してもよい。電源100は例えば直流電圧である。
【0014】
制御装置3、処理回路2及び電源回路4は、一つのダイで構成されてもよいし、複数のダイで構成されてもよい。ダイはウェハチップとも呼ばれる。また、制御装置3、処理回路2及び電源回路4は、樹脂等から成る一つのパッケージに収納されてもよいし、別々のパッケージに収納されてもよい。また、制御装置3、処理回路2及び電源回路4の2つが一つのパッケージに収納されてもよい。
【0015】
以下に処理装置1の様々な例について説明する。
【0016】
<第1の例>
<処理回路の構成例>
図2は本例に係る処理回路2の構成の一例を示す図である。
図2に示されるように、処理回路2は、例えば、制御部20、記憶部21及び通信部22を有する回路構成を備える。記憶部21は、ROM(Read Only Memory)及びRAM(Random Access Memory)などの、コンピュータが読み取り可能な非一時的な記録媒体を含む。記憶部21には、処理回路2を制御するための制御プログラム等が記憶されている。記憶部21は記憶回路とも言える。
【0017】
制御部20は、処理回路2の他の構成要素を制御することによって、処理回路2の動作を統括的に管理することが可能である。制御部20は制御回路とも言える。制御部20は、例えばCPU(Central Processing Unit)を備えている。制御部20の各種機能は、当該制御部20が備えるCPUが記憶部21内の制御プログラムを実行することによって実現される。
【0018】
通信部22は、無線ネットワーク及び有線ネットワークの少なくとも一方を含む通信ネットワークに接続されている。通信部22は、通信ネットワークを通じて、他の装置と通信することが可能である。通信ネットワークには、例えば、基地局等を含む、携帯電話システムのネットワーク、無線LAN(Local Area Network)及びインターネット等が含まれる。通信部22は通信回路とも言える。
【0019】
以上のような構成を有する処理回路2は、制御装置3から供給されるクロック信号に基づいて動作することが可能である。後述するように、制御装置3は、クロック信号を処理回路2に対して供給しないことによって、処理回路2の動作を停止することができる。
【0020】
また処理回路2では、制御部20が、データを暗号化する暗号処理を行うことが可能である。制御部20で暗号化されたデータは、例えば、記憶部21に記憶されたり、通信部22から他の装置に送信されたりする。また制御部20は、暗号化されたデータを復号化する復号処理を行うことが可能である。制御部20で復号化されたデータは、例えば記憶部21に記憶される。また制御部20は、処理装置1のユーザを認証する認証処理を実行することが可能である。
【0021】
なお、処理回路2が実行する処理は上記の例には限られない。また、処理回路2の構成は
図2の例には限られない。例えば、制御部20は、複数のCPUを備えてもよい。また制御部20は、少なくとも一つのDSP(Digital Signal Processor)を備えてもよい。また、制御部20の全ての機能あるいは制御部20の一部の機能は、その機能の実現にソフトウェアが不要なハードウェア回路によって実現されてもよい。
【0022】
また記憶部21は、ROM及びRAM以外の、コンピュータが読み取り可能な非一時的な記録媒体を備えてもよい。記憶部21は、例えば、小型のハードディスクドライブ及びSSD(Solid State Drive)などを備えてもよい。
【0023】
<制御装置の構成例>
図3は本例に係る制御装置3の構成の一例を示す図である。
図3に示されるように、制御装置3は、例えば、攻撃検出装置30と、制御部31と、クロック生成部32と、リセット信号生成部33とを有する回路構成を備える。制御装置3は制御回路とも言える。クロック生成部32及びリセット信号生成部33は、制御装置3とは別に設けられてもよい。
【0024】
ここで、回路からの秘密情報の取得等を目的として、当該回路に供給される電源あるいは信号のレベルを故意に変化させることによって、当該回路に対して攻撃が行われることがある。例えば、攻撃対象の回路に供給される電源あるいは信号のレベルにグリッチを故意に発生させることによって、攻撃対象の回路に対して攻撃が行われることがある。グリッチは、スパイク状の短時間の一時的なレベルの低下あるいは上昇である。このような攻撃は、グリッチ攻撃と呼ばれ、故障利用攻撃(fault injection attack)の一種である。故障利用攻撃は、故障攻撃(fault attack)あるいは故障利用解析(fault injection analysis)と呼ばれることがある。以後、単に故障利用攻撃と言えば、攻撃対象の回路に供給される電源あるいは信号のレベルを故意に変化させる攻撃を意味する。
【0025】
故障利用攻撃では、攻撃対象の回路に供給される電源あるいは信号のレベルを故意に低下あるいは上昇させることによって、攻撃対象の回路の動作に誤りを発生させ、そのときの攻撃対象の回路の動作状況を取得するという処理が繰り返し実行されることがある。そして、故障利用攻撃では、当該処理が繰り返し実行されることによって収集された攻撃対象の回路の誤った動作の状況に基づいて、攻撃対象の回路の秘密情報が推定されることがある。
【0026】
例えば、故障利用攻撃において、暗号処理を行う攻撃対象の回路が当該暗号処理で使用する鍵が推定される場合を考える。この場合、攻撃対象の回路に供給される電源あるいは信号のレベルを故意に低下あるいは上昇させることによって、暗号処理に誤りを発生させ、そのときの当該暗号処理の結果を取得するという処理が繰り返し実行される。そして、当該処理が繰り返し実行されることによって収集された暗号処理の誤った結果と、当該暗号処理の正しい結果とが比較され、その比較結果に基づいて、当該暗号処理で使用される鍵が推定される。
【0027】
このように、故障利用攻撃では、攻撃対象の回路に供給される電源あるいは信号のレベルが本来の値から変化することが繰り返し発生することがある。
【0028】
そこで、本例に係る制御装置3は、処理回路2に供給される電源100あるいは信号のレベル変化の発生を検出し、その検出結果に基づいて、処理回路2に対する攻撃が発生したか否かを判定する。これにより、処理回路2に対する故障利用攻撃を適切に検出することができる。そして、制御装置3は、処理回路2に対する攻撃が発生したと判定すると、処理回路2を制御することによって、処理回路2の安全性を向上することができる。
【0029】
ここで、制御装置3が対象とするレベル変化は、本来の値からの変化を意味する。したがって、HighレベルとLowレベルとを繰り返すクロック信号のように、もともとレベルが変化する信号について制御装置3が発生を検出するレベル変化には、そのもともとのレベル変化は含まれない。例えば、制御装置3がクロック信号のレベル変化の発生を検出する場合、制御装置3は、クロック信号のHighレベルを期待するタイミングでの本来の値からの変化の発生あるいはLowレベルを期待するタイミングでの本来の値からの変化の発生を検出する。
【0030】
以下に、制御装置3について詳細に説明する。以後、処理回路2に供給される電源100あるいは信号を「モニタ対象」と呼ぶことがある。また、モニタ対象のレベルを、モニタ対象レベル110と呼ぶことがある。また、単にレベル変化あるいはレベル低下と言えば、モニタ対象レベル110の変化あるいは低下を意味する。また、単にグリッチと言えば、モニタ対象レベル110に発生するグリッチを意味する。
【0031】
本例では、制御装置3は、その機能の実現にソフトウェアが不要なハードウェア回路で構成されている。したがって、本例では、制御装置3は、CPU等のプロセッサと、当該プロセッサが実行するプログラムとを備えていない。なお、制御装置3の全ての機能あるいは制御装置3の一部の機能は、ソフトウェアが使用されて実現されてもよい。言い換えれば、制御装置3の全ての機能あるいは制御装置3の一部の機能は、CPU等のプロセッサがプログラムを実行することによって実現されてもよい。
【0032】
クロック生成部32は、処理装置1の動作の基準となるクロック信号CLKを生成する。クロック生成部32はクロック生成回路とも言える。クロック信号CLKは、制御装置3が備える、攻撃検出装置30等を含む内部回路に供給される。またクロック信号CLKは、処理回路2にも供給される。制御装置3及び処理回路2は、クロック信号CLKに基づいて動作する回路である。クロック生成部32は、水晶発振器を備えてもよいし、水晶を利用しない発振器を備えてもよい。水晶を利用しない発振器としては、例えば、MEMS(Micro Electro Mechanical Systems)を利用した発振器がある。
【0033】
リセット信号生成部33は、リセット信号RSを生成して出力する。リセット信号生成部33はリセット信号生成回路とも言える。リセット信号RSは、制御装置3が備える、攻撃検出装置30等を含む内部回路に入力されるとともに、処理回路2に入力される。
【0034】
リセット信号生成部33は、処理装置1が備えるリセットスイッチが操作されると、一定時間リセット信号RSをアサートする。これにより、リセットスイッチが操作されたとき、処理装置1が再起動して、制御装置3及び処理回路2の動作が初期化される。また、リセット信号生成部33は、電源回路4が電源100を出力しない状態から出力する状態に切り切り替わると、一定時間リセット信号RSをアサートする。これにより、電源回路4が電源100を出力しない状態から出力する状態に切り替わったとき、処理装置1が再起動して、制御装置3及び処理回路2の動作が初期化される。
【0035】
攻撃検出装置30は、モニタ対象レベル110の変化の発生を検出し、その検出結果に基づいて、処理回路2に対する攻撃が発生したか否かを判定する。本例は、攻撃検出装置30は、モニタ対象レベル110でのグリッチの発生を検出し、その検出結果に基づいて、処理回路2に対する攻撃が発生したか否かを判定する。攻撃検出装置30は攻撃検出回路と言える。モニタ対象レベル110は、例えば、電源100のレベルあるいはクロック信号CLKのレベルである。
【0036】
攻撃検出装置30は、例えば、検出部300と、記憶部310と、更新部320と、判定部330を備えている。検出部300、記憶部310、更新部320及び判定部330は、それぞれ、検出回路、記憶回路、更新回路及び判定回路と言える。
【0037】
検出部300は、モニタ対象レベル110でのグリッチの発生を検出することが可能である。記憶部310は、処理回路2に対する攻撃が発生した可能性の度合いを示す攻撃評価値を記憶する。
【0038】
更新部320は、検出部300での検出結果に基づいて、記憶部310内の攻撃評価値を更新する。具体的には、更新部320は、検出部300での検出結果に基づいて、レベル変化(モニタ対象レベル110の低下あるいは上昇)が発生したことを特定する。そして、更新部320は、レベル変化の発生に応じて記憶部310内の攻撃評価値を更新する。本例では、更新部320は、モニタ対象レベル110でのグリッチの発生に応じて、記憶部310内の攻撃評価値を更新する。より具体的には、更新部320は、グリッチの発生に応じて、記憶部310内の攻撃評価値を増加する。これにより、グリッチの発生回数が多くなると、攻撃評価値が大きくなる。つまり、グリッチの発生回数が多くなると、処理回路2に対する攻撃が発生した可能性が高いと言える。判定部330は、記憶部310内の攻撃評価値に基づいて、処理回路2に対する攻撃が発生したか否かを判定する。以後、攻撃評価値を増加することを、攻撃評価値をカウントアップすると言うことがある。
【0039】
制御部31は、例えば、処理回路2に対するクロック信号CLKの供給を制御することによって、処理回路2を制御することが可能である。本例では、制御部31は、処理回路2に対してクロック信号CLKを供給することによって処理回路2を動作させることができる。また、制御部31は、処理回路2に対するクロック信号CLKの供給を停止することによって、処理回路2の動作を停止することができる。制御部31は、判定部330において処理回路2に対する攻撃が発生したと判定されると、処理回路2に対するクロック信号CLKの供給を停止して処理回路2の動作を停止する。これにより、処理回路2に対して故障利用攻撃が発生した場合、処理回路2の動作を停止することができる。よって、処理回路2の秘密情報を取得される可能性を低減することができる。その結果、処理回路2の安全性が向上する。
【0040】
処理回路2に対するクロック信号CLKの供給が停止して、処理回路2の動作が停止した場合には、ユーザは、例えば、リセットスイッチを操作することによって、処理装置1に処理回路2の動作を復帰させることができる。リセットスイッチが操作されると、リセット信号生成部33はリセット信号RSを一定時間アサートする。これにより、処理装置1の動作が初期化される。処理装置1の動作が初期化されると、制御部31は、クロック信号CLKの処理回路2に対する供給を開始する。これにより、停止していた処理回路2が動作を再開する。
【0041】
なお上述のように、リセット信号生成部33は、電源回路4が電源100を出力しない状態から出力する状態に切り替わると、リセット信号RSを一定時間アサートする。したがって、処理装置1に、電源回路4の電源100の出力を制御することが可能な電源スイッチが設けられている場合には、ユーザは、当該電源スイッチを操作することによって、処理装置1に処理回路2の動作を再開させることが可能となる。
【0042】
制御部31が処理回路2の動作を停止する方法は、上記の例に限られない。例えば、制御部31は、判定部330において処理回路2に対する攻撃が発生したと判定されると、処理回路2用のリセット信号をアサートして処理回路2の動作を停止してもよい。この場合、例えば、制御部31は、リセット信号RSがアサートされると、処理回路2に入力される、処理回路2用のリセット信号をアサートする。また、クロック生成部32で生成されるクロック信号CLKは直接処理回路2に入力される。そして、制御部31は、処理装置1の動作が初期化された場合には、処理回路2用のリセット信号をネゲートする。これにより、ユーザは、リセットスイッチ等を操作することによって、処理装置1に処理回路2の動作を再開させることができる。
【0043】
<攻撃検出装置の詳細説明>
次に本例に係る攻撃検出装置30の動作の一例について詳細に説明する。
図4は、攻撃検出装置30が備える更新部320の動作の一例を示すフローチャートである。
図4には、更新部320での攻撃評価値の更新処理が示されている。更新部320は、処理装置1の起動中において、
図4に示される更新処理を継続して実行する。
【0044】
図4に示されるように、ステップs1において、更新部320は、検出部300での検出結果に基づいて、レベル変化(本例ではグリッチ)の発生を特定すると、ステップs2において、記憶部310内の攻撃評価値を更新する。具体的には、更新部320は攻撃評価値を増加する。更新部320は、例えば、攻撃評価値を+1だけ増加する。その後、ステップs1が再度実行されると(レベル変化が発生すると)、ステップs2において、更新部320は攻撃評価値を+1だけ増加する。以後、更新部320は同様に動作する。
【0045】
このように、本例では、更新部320は、レベル低下等のレベル変化が発生するたびに攻撃評価値を増加する。したがって、レベル変化の発生回数が大きくなると、攻撃評価値は大きくなる。上述のように、故障利用攻撃では、攻撃対象の回路に供給される電源あるいは信号のレベルにグリッチが繰り返し発生することがあることから、グリッチの発生回数が大きい場合には、処理回路2に対する攻撃が発生した可能性が高いと言える。よって、グリッチの発生回数に応じた攻撃評価値が大きいほど、処理回路2に対する攻撃が発生した可能性が高いと言える。本例では、グリッチが発生するたびに、攻撃評価値が+1だけ増加する。そして、攻撃評価値の初期値は例えば零に設定される。したがって、攻撃評価値は、グリッチの発生回数を示すことになる。攻撃評価値は、レベル変化の発生回数を示すと言える。
【0046】
判定部330は、所定のタイミングになると、記憶部310内の攻撃評価値に基づいて、処理回路2に対する攻撃が発生した否かを判定する攻撃判定処理を行う。攻撃判定処理では、判定部330は、記憶部310内の攻撃評価値としきい値とを比較し、その比較結果に基づいて、処理回路2に対する攻撃が発生した否かを判定する。具体的には、攻撃評価値がしきい値よりも大きい場合、判定部330は、処理回路2に対する攻撃が発生したと判定する。一方で、攻撃評価値がしきい値以下の場合、処理回路2に対する攻撃が発生していないと判定する。なお、攻撃評価値がしきい値以上の場合、判定部330は、処理回路2に対する攻撃が発生したと判定し、攻撃評価値がしきい値未満の場合、処理回路2に対する攻撃が発生していないと判定してもよい。以後、ある値がしきい値よりも大きいとき、ある処理を実行し、当該ある値が当該しきい値以下のとき、別の処理を実行するということは、当該ある値が当該しきい値以上のとき、当該ある処理を実行し、当該ある値が当該しきい値未満のとき、当該別の処理を実行するということに置き換えてもよい。同様に、ある値がしきい値以上のとき、ある処理を実行し、当該ある値が当該しきい値未満のとき、別の処理を実行するということは、当該ある値が当該しきい値よりも大きいとき、当該ある処理を実行し、当該ある値が当該しきい値以下のとき、当該別の処理を実行するということに置き換えてもよい。
【0047】
判定部330が攻撃判定処理を実行するタイミングとしては、様々なタイミングが考えられる。例えば、判定部330は、記憶部310内の攻撃評価値が更新部320によってN回(N≧1)更新されるたびに、攻撃判定処理を実行してもよい。あるいは、判定部330は、一定時間ごとに攻撃判定処理を行ってもよい。
【0048】
攻撃判定処理で使用されるしきい値は、例えば、攻撃評価値を記憶する記憶部310の種類に応じて決定される。記憶部310の種類としては、例えば、それが記憶する情報が、攻撃検出装置30の電源断及びリセットに応じてクリアされるような第1タイプと、それが記憶する情報が、攻撃検出装置30の電源断及びリセットに応じてクリアされないような第2タイプとが存在する。以後、記憶部310が第1タイプである場合、「第1タイプの記憶部310」と呼ぶことがある。また、記憶部310が第2タイプである場合、「第2タイプの記憶部310」と呼ぶことがある。
【0049】
第1タイプの記憶部310は、例えば、揮発性メモリで構成される。揮発性メモリとしては、例えば、RAMあるいはレジスタが採用される。制御装置3に対して電源100が供給されなくなって攻撃検出装置30の電源断が生じると、第1タイプの記憶部310に対して電源が供給されなくなる。その結果、揮発性メモリで構成された記憶部310内の情報がクリアされる。また、制御装置3に対して電源100が供給されている状態において、リセットスイッチが操作されるなどしてリセット信号生成部33がリセット信号RSをアサートすると、不揮発性メモリで構成された第1タイプの記憶部310内の情報がクリアされる。つまり、制御装置3に対して電源100が供給されている状態において、攻撃検出装置30がリセットされると、第1タイプの記憶部310内の情報がクリアされる。したがって、第1タイプの記憶部310内の情報は、攻撃検出装置30が再起動する場合には、クリアされている。言い換えれば、第1タイプの記憶部310内の情報は、処理装置1が再起動する場合には、クリアされている。
【0050】
以上の説明から理解できるように、第1タイプの記憶部310内の攻撃評価値は、攻撃検出装置30の起動中ではクリアされないものの、攻撃検出装置30の電源断あるいはリセットが発生した場合にはクリアされる。言い換えれば、第1タイプの記憶部310内の攻撃評価値は、処理装置1の起動中ではクリアされないものの、処理装置1の電源断あるいはリセットが発生した場合にはクリアされる。したがって、第1タイプの記憶部310内の攻撃評価値は、処理装置1の1回の起動中において攻撃が発生した可能性の度合いを示す値であると言える。
【0051】
第1タイプの記憶部310が攻撃評価値を記憶する場合、攻撃判定処理で使用されるしきい値は、例えば、処理装置1の1回の起動中において、処理回路2に対する攻撃が発生しないときの、ノイズ等によるレベル変化(グリッチなど)の予想最大発生回数に基づいて決定される。以後、この予想最大発生回数を「1回の起動中におけるレベル変化の予想最大発生回数」と呼ぶことがある。しきい値は、例えば、1回の起動中におけるレベル変化の予想最大発生回数よりも少し大きな値に設定される。
【0052】
1回の起動中におけるレベル変化の予想最大発生回数は、処理装置1の1回の起動時間及び処理装置1が使用される環境等に応じて変化する。処理装置1が、例えば、プロジェクタ、カーナビゲーション装置及びドローン機器のように1回の起動時間が比較的短い装置の場合には、1回の起動中におけるレベル変化の予想最大発生回数は比較的小さくなる。一方で、処理装置1が、周囲からノイズを受けるような環境で使用される装置である場合には、1回の起動中におけるレベル変化の予想最大発生回数は比較的大きくなる。1回の起動中におけるレベル変化の予想最大発生回数は、実機実験あるいはシミュレーションによって決定することができる。以後、第1タイプの記憶部内の攻撃評価値と比較されるしきい値を「第1タイプ用のしきい値」と呼ぶことがある。
【0053】
第2タイプの記憶部310は、例えば、不揮発性メモリで構成される。不揮発性メモリとしては、例えば、フラッシュメモリ(フラッシュROM)あるいはOTPROM(one time programmable read only memory)が採用される。フラッシュメモリとしては、例えば、NAND型フラッシュメモリ、SPI(Serial Peripheral Interface)フラッシュメモリ、あるいは埋め込み(embedded)フラッシュメモリが採用される。不揮発性メモリで構成された第2タイプの記憶部310内の情報は、制御装置3に対して電源100が供給されなくなって攻撃検出装置30の電源断が生じた場合であっても、クリアされない。また、制御装置3に対して電源100が供給されている状態においてリセット信号生成部33がリセット信号RSをアサートする場合であっても、第2タイプの記憶部310内の情報はクリアされない。
【0054】
このように、第2タイプの記憶部310内の情報は、攻撃検出装置30の起動中においてクリアされず、攻撃検出装置30が再起動する場合であってもクリアされない。
【0055】
第2タイプの記憶部310が攻撃評価値を記憶する場合、攻撃判定処理で使用されるしきい値は、例えば、処理装置1の製品寿命期間において、処理回路2に対する攻撃が発生しないときの、ノイズ等によるレベル変化の予想最大発生回数に基づいて決定される。以後、この予想最大発生回数を「製品寿命期間におけるレベル変化の予想最大発生回数」と呼ぶことがある。しきい値は、例えば、製品寿命期間におけるレベル変化の予想最大発生回数よりも少し大きな値に設定される。
【0056】
製品寿命期間におけるレベル変化の予想最大発生回数は、処理装置1の製品寿命及び処理装置1が使用される環境等に応じて変化する。例えば、処理装置1の製品寿命が長ければ、製品寿命期間におけるレベル変化の予想最大発生回数が大きくなる。また、処理装置1が、周囲からノイズを受けにくいような環境で使用される装置である場合には、製品寿命期間におけるレベル変化の予想最大発生回数は比較的小さくなる。製品寿命期間におけるレベル変化の予想最大発生回数は、実機実験あるいはシミュレーションによって決定することができる。以後、第2タイプの記憶部内の攻撃評価値と比較されるしきい値を「第2タイプ用のしきい値」と呼ぶことがある。
【0057】
なお、第2タイプの記憶部310が使用される場合には、処理装置1がリセットされたとしても、第2タイプの記憶部310内の攻撃評価値はクリアされない。したがって、第2タイプの記憶部310内の攻撃評価値が第2タイプ用のしきい値よりも大きくなって、制御部31が処理回路2の動作を停止した後、処理装置1がリセットされて処理回路2の動作が再開したとしても、すぐに処理回路2の動作が停止することになる。この点を考慮して、処理装置1の外部から当該処理装置1にコマンドを入力することによって、第2タイプの記憶部310内の情報をクリアできるようにしてもよい。
【0058】
また、第2タイプの記憶部310が使用される場合には、判定部330は、攻撃検出装置30が再起動するたびに、言い換えれば処理装置1が再起動するたびに、攻撃判定処理を実行してもよい。
【0059】
また、処理回路2に対する故障利用攻撃では、グリッチのような、スパイク状の一時的なレベル変化ではなく、グリッチよりもモニタ対象レベル110が変化している時間が長い、台形状の一時的なレベル変化が繰り返し発生することがある。検出部300は、グリッチの代わりに、このような台形状の一時的なレベル変化を検出してもよい。また、検出部300は、グリッチと、台形状の一時的なレベル変化の両方を検出してもよい。
【0060】
以上のように、本例では、レベル変化の発生を検出する検出部300での検出結果に基づいて更新される攻撃評価値に基づいて、処理回路2に対する攻撃が発生したか否かが判定されることから、処理回路2に対する攻撃を適切に検出することができる。
【0061】
また、本例のように、判定部330において処理回路2に対する攻撃が発生したと判定されたとき、制御部31が処理回路2を制御することによって、処理回路2の安全性を向上することが可能となる。
【0062】
また、第1タイプの記憶部310が採用される場合には、記憶部310内の攻撃評価値は、処理装置1の1回の起動中において攻撃が発生する可能性の度合いを示すことになる。したがって、攻撃検出装置30は、1回の起動中において発生する攻撃を適切に検出することができる。
【0063】
処理回路2に対する攻撃としては、処理装置1の1回の起動中においてレベル変化を繰り返し発生させるような故障利用攻撃以外にも、処理装置1を再起動させて、その後にレベル変化(例えばグリッチ)を発生させるという処理を繰り返し実行するような故障利用攻撃も考えられる。第1タイプの記憶部310を備える攻撃検出装置30は、このような再起動が繰り返される攻撃を検出することができない可能性がある。
【0064】
これに対して、記憶部310が第2タイプである場合には、記憶部310内の攻撃評価値は、再起動されたとしてもクリアされない。したがって、第2タイプの記憶部310備える攻撃検出装置30は、再起動が繰り返される攻撃を適切に検出することができる。
【0065】
また、第2タイプの記憶部310がOTPROMで構成される場合には、第2タイプの記憶部310内の攻撃評価値を改ざんすることが難しくなる。よって、攻撃検出装置30の安全性が向上する。なお、第2タイプの記憶部310がOTPROMで構成される場合には、第2タイプの記憶部310の同じアドレスの記憶領域に対して複数回データを書き込むことができない。したがって、更新部320は、更新後の攻撃評価値を第2タイプの記憶部310に書き込むときには、それがそれまで記憶されていた記憶領域とは別の記憶領域に書き込む。
【0066】
なお、攻撃検出装置30の再起動が繰り返し発生する場合には、処理回路2に対して、上述の再起動が繰り返される攻撃が行われている可能性が高い。
【0067】
そこで、記憶部310が第2タイプである場合には、判定部330は、攻撃検出装置30が再起動するたびに、第2タイプ用のしきい値を所定量(例えば“1”)だけ減少してもよい。言い換えれば、判定部330は、攻撃検出装置30がリセットされるたびに、第2タイプ用のしきい値を所定量だけ減少してもよい。これにより、判定部330は、再起動が繰り返される攻撃を早期に検出することが可能となる。
【0068】
<第2の例>
図5は、本例に係る処理装置1が備える制御装置3の構成を示す図である。
図5に示される制御装置3は、上述の
図3に示される制御装置3において、記憶部310が第1タイプの記憶部311及び第2タイプの記憶部312を有するものである。
【0069】
第1タイプの記憶部311と第2タイプの記憶部312のそれぞれは攻撃評価値を記憶する。以後、第1タイプの記憶部311が記憶する攻撃評価値を「第1攻撃評価値」と呼ぶことがある。また、第2タイプの記憶部312が記憶する攻撃評価値を「第2攻撃評価値」と呼ぶことがある。第1及び第2攻撃評価値の初期値は例えば零に設定される。
【0070】
本例では、更新部320は、検出部300での検出結果に基づいて、第1タイプの記憶部311内の第1攻撃評価値を更新する。また更新部320は、検出部300での検出結果に基づいて、第2タイプの記憶部312内の第2攻撃評価値を更新する。例えば、更新部320は、検出部300での検出結果に基づいて、第1タイプの記憶部311内の第1攻撃評価値を、上述の
図4のようにレベル変化が発生するたびに更新する。同様に、更新部320は、検出部300での検出結果に基づいて、第2タイプの記憶部312内の第2攻撃評価値を、レベル変化が発生するたびに更新する。
【0071】
ここで、上述のように、第1タイプの記憶部は、それが記憶する情報が、攻撃検出装置30の電源断及びリセットに応じてクリアされるような記憶部である。したがって、第1タイプの記憶部311内の第1攻撃評価値は、攻撃検出装置30の電源断及びリセットに応じて初期値に戻ることになる。一方で、第2タイプの記憶部は、それが記憶する情報が、攻撃検出装置30の電源断及びリセットに応じてクリアされないような記憶部である。したがって、第2タイプの記憶部312内の第2攻撃評価値は、基本的には、処理装置1の製品寿命期間において初期値に戻ることは無い。よって、第1及び第2攻撃評価値は、それらの初期値が同じであっても、互いに異なるようになる。第1攻撃評価値は、1回の起動中において攻撃が発生した可能性の度合いを示す値である。第2攻撃評価値は、処理装置1が再起動されたとしてもクリアされない。
【0072】
本例では、判定部330は、第1タイプの記憶部311内の第1攻撃評価値と、第2タイプの記憶部312内の第2攻撃評価値とに基づいて、処理回路2に対する攻撃が発生したか否かを判定する。判定部330は、例えば、第1攻撃評価値が第1タイプ用のしきい値以上のとき、処理回路2に対する攻撃が発生したと判定する。また、判定部330は、第2攻撃評価値が第2タイプ用のしきい値以上のとき、処理回路2に対する攻撃が発生したと判定する。そして、判定部330は、第1攻撃評価値が第1タイプ用のしきい未満であり、かつ第2攻撃評価値が第2タイプ用のしきい値未満の場合、処理回路2に対する攻撃が発生してないと判定する。なお、判定部330は、第1攻撃評価値が第1タイプ用のしきい値よりも大きいとき、処理回路2に対する攻撃が発生したと判定してもよい。また判定部330は、第2攻撃評価値が第2タイプ用のしきい値よりも大きいとき、処理回路2に対する攻撃が発生したと判定してもよい。
【0073】
このように、1回の起動中において攻撃が発生した可能性の度合いを示す第1攻撃評価値と、処理装置1が再起動されたとしてもリセットされない第2攻撃評価値とに基づいて、処理回路2に対する攻撃が発生したか否かを判定することによって、処理装置1の1回の起動中において繰り返しレベル変化が生じるような故障利用攻撃と、処理装置1の再起動が繰り返し実行されるような故障利用攻撃の両方を適切に検出することができる。
【0074】
なお、上述の第1の例と同様に、判定部330は、第2タイプの記憶部312内の第2攻撃評価値と比較される第2タイプ用のしきい値を、攻撃検出装置30が再起動するたびに減少してもよい。
【0075】
<第3の例>
本例に係る処理装置1が備える制御装置3は、上述の
図3に示される制御装置3と同様の構成を備えている。そして、本例に係る処理装置1が備える制御装置3は、上述の
図3に示される制御装置3と比較して、判定部330及び制御部31の動作が異なる。
【0076】
本例に係る判定部330は、記憶部310内の攻撃評価値と、互いに異なる複数のしきい値のそれぞれとの比較結果に基づいて、処理回路2に対する攻撃の危険度を判定する。本例に係る制御部31は、判定部330で判定された攻撃の危険度に応じて、処理回路2に対する制御を変更する。
【0077】
記憶部310が第1タイプである場合、判定部330は、記憶部310内の攻撃評価値と、互いに異なる複数の第1タイプ用のしきい値のそれぞれとの比較結果に基づいて、処理回路2に対する攻撃の危険度を判定する。記憶部310が第2タイプである場合、判定部330は、記憶部310内の攻撃評価値と、互いに異なる複数の第2タイプ用のしきい値のそれぞれとの比較結果に基づいて、処理回路2に対する攻撃の危険度を判定する。以下に、判定部330及び制御部31の動作の具体例について説明する。
【0078】
例えば、記憶部310が第1タイプであって、判定部330が、攻撃評価値と、第1タイプ用の第1及び第2しきい値のそれぞれとの比較結果に基づいて、処理回路2に対する攻撃の危険度を判定する場合を考える。ただし、第1タイプ用の第2しきい値は、第1タイプ用の第1しきい値よりも大きいものとする。判定部330は、攻撃評価値が第1タイプ用の第1しきい値以上であって、第1タイプ用の第2しきい値未満である場合、処理回路2に対する攻撃の危険度が低いと判定する。一方で、判定部330は、攻撃評価値が第1タイプ用の第2しきい値以上である場合、処理回路2に対する攻撃の危険度が高いと判定する。
【0079】
制御部31は、判定部330において攻撃の危険度が高いと判定されると、上述のように、処理回路2の動作を停止する。一方で、制御部31は、判定部330において攻撃の危険度が低いと判定されると、処理回路2に対する攻撃の危険度が低いことを通知するための通知信号を処理回路2に出力する。この通知信号は、処理回路2を制御するための制御信号であるとも言える。処理回路2は、制御部31から通知信号を受け取ると、処理回路2の動作の停止よりも、攻撃に対する対策のレベルが低い攻撃対策処理を実行する。処理回路2は、攻撃対策処理として、例えば、自身が行う処理において、攻撃される可能性が高い処理を攻撃から保護するための処理を行う。攻撃される可能性が高い処理としては、例えば、暗号処理、条件分岐処理及び記憶部21に対する書き込み処理が考えられる。記憶部21に対する書き込み処理は、記憶領域に対する書き込み処理であると言える。以後、単に書き込み処理と言えば、記憶部21に対する書き込み処理を意味する。
【0080】
暗号処理に対する攻撃としては、例えば、暗号処理で使用される鍵が推定されるような攻撃がある。条件分岐処理に対する攻撃としては、例えば、常に特定の分岐先の処理が実行されるような攻撃がある。例えば、認証処理において、入力されたパスワードと、予め記憶されている正規のパスワードとを比較し、両者が一致した場合には、認証成功であると判定し、両者が不一致の場合には、認証不成立であると判定するような条件分岐処理を考える。以後、この条件分岐処理を「認証用の条件分岐処理」と呼ぶことがある。認証用の条件分岐処理に対する攻撃としては、例えば、入力されたパスワードと、予め記憶されている正規のパスワードとが一致するか否かにかかわらず、常に認証が成立したと判定されるような攻撃が考えられる。書き込み処理に対する攻撃としては、記憶部21に対して誤ったデータが書き込まれるような攻撃がある。処理回路2は、通知信号を受け取ると、攻撃される可能性が高い処理を攻撃から保護するための処理として、例えば、暗号処理の鍵を変更する処理を行う。あるいは、処理回路2は、暗号処理の実行タイミングを変更する処理を行う。あるいは、処理回路2は、条件分岐処理の実行タイミングを変更する処理を行う。あるいは、処理回路2は、記憶部310の同じアドレスの記憶領域に対して複数回同じデータを書き込む処理を行う。これにより、処理回路2の安全性が向上する。なお、制御部31から通知信号を受け取った処理回路2が行う処理はこれに限られない。例えば、処理回路2は、複数種類の攻撃対策処理を行ってもよい。
【0081】
他の例として、例えば、記憶部310が第2タイプであって、判定部330が、攻撃評価値と、第2タイプ用の第1乃至第3しきい値のそれぞれとの比較結果に基づいて、処理回路2に対する攻撃の危険度を判定する場合を考える。ただし、第2タイプ用の第3しきい値は、第2タイプ用の第2しきい値よりも大きく、第2タイプ用の第2しきい値は、第2タイプ用の第1しきい値よりも大きいものとする。判定部330は、攻撃評価値が第2タイプ用の第1しきい値以上であって、第2タイプ用の第2しきい値未満である場合、処理回路2に対する攻撃の危険度が低いと判定する。また、判定部330は、攻撃評価値が、第2タイプ用の第2しきい値以上であって、第2タイプ用の第3しきい値未満である場合、処理回路2に対する攻撃の危険度が中程度であると判定する。そして、判定部330は、攻撃評価値が第2タイプ用の第3しきい値以上である場合、処理回路2に対する攻撃の危険度が高いと判定する。
【0082】
制御部31は、判定部330において攻撃の危険度が高いと判定されると、上述のように、処理回路2の動作を停止する。また制御部31は、判定部330において攻撃の危険度が中程度と判定されると、処理回路2に対する攻撃の危険度が中程度であることを通知するための第1通知信号を処理回路2に出力する。そして制御部31は、判定部330において攻撃の危険度が低いと判定されると、処理回路2に対する攻撃の危険度が低いことを通知するための第2通知信号を処理回路2に出力する。第1及び第2通知信号は、処理回路2を制御するための制御信号であるとも言える。
【0083】
処理回路2は、制御部31から第1通知信号を受け取ると、処理回路2の動作の停止よりも、攻撃に対する対策のレベルが低い第1攻撃対策処理を実行する。また処理回路2は、制御部31から第2通知信号を受け取ると、第1攻撃対策処理よりも、攻撃に対する対策のレベルが低い第2攻撃対策処理を実行する。第1攻撃対策処理としては、例えば、暗号処理で使用される鍵の変更が考えられる。第2攻撃対策処理としては、例えば、暗号処理の実行タイミングを変更する処理が考えられる。第1及び第2攻撃対策処理の組み合わせはこの限りではない。
【0084】
なお、上述の第2の例においても、判定部330は処理回路2に対する攻撃の危険度を判定してもよい。例えば、判定部330は、第1タイプの記憶部311内の第1攻撃評価値と、互いに異なる複数の第1タイプ用のしきい値のそれぞれとの比較結果に基づいて、処理回路2に対する攻撃の危険度を判定してもよい。また、判定部330は、第2タイプの記憶部312内の第2攻撃評価値と、互いに異なる複数の第2タイプ用のしきい値のそれぞれとの比較結果に基づいて、処理回路2に対する攻撃の危険度を判定してもよい。制御部31は、上記と同様にして、判定部330で判定された危険度に応じて、処理回路2に対する制御を変更する。
【0085】
以上のように、本例では、処理回路2に対する攻撃の危険度が判定されることから、その判定結果を利用した、当該攻撃に対する対策を実施することができる。例えば、上述のように、制御部31は、判定部330で判定された危険度に応じて、処理回路2に対する制御を変更することができる。これにより、処理回路2に対して、攻撃の危険度に応じた適切な制御を行うことができる。
【0086】
なお、上述の第1の例と同様に、記憶部310が第2タイプである場合には、判定部330は、第2タイプ用の複数のしきい値を、攻撃検出装置30が再起動するたびに減少してもよい。
【0087】
<第4の例>
上記の例では、レベル変化が発生すれば無条件に記憶部310内の攻撃評価値が更新されている。したがって、ノイズによるレベル変化が予想外に多く発生する場合には、攻撃検出装置30において、処理回路2に対する攻撃が発生したと誤って判定される可能性がある。
【0088】
そこで、本例に係る処理装置1は、処理回路2において所定処理が実行されている期間でのレベル変化の発生に応じて、記憶部310内の攻撃評価値を更新する。所定処理としては、例えば、処理回路2が実行する処理において、攻撃される可能性が高い処理が採用される。これにより、ノイズによるレベル変化が予想外に多く発生した場合であっても、処理回路2に対する攻撃が発生したと誤って判定される可能性を低減することができる。以下に、本例に係る処理装置1について詳細に説明する。
【0089】
図6は、本例に係る処理装置1が備える制御装置3の構成を主に示す図である。本例では、更新部320は、処理回路2において所定処理が実行されている期間でのレベル変化の発生に応じて、記憶部310内の攻撃評価値を更新する。以後、当該所定処理及び当該期間を、「対象処理」及び「実行期間」とそれぞれ呼ぶ。
【0090】
対象処理としては、処理回路2が実行する処理において、攻撃される可能性が高い処理が採用される。対象処理としては、例えば、暗号処理、条件分岐処理あるいは書き込み処理が採用される。対象処理は、処理装置1の1回の起動中において、繰り返し実行されることもあれば、1回だけ実行されることもある。また、対象処理は、処理装置1が起動するたびに実行されることによって、繰り返し実行されることがある。
【0091】
処理回路2は、実行期間を通知するための期間通知情報200を更新部320に出力する。期間通知情報には、例えば、実行期間の開始を通知するための開始通知情報と、実行期間の終了を通知するための終了通知情報とが含まれる。開始通知情報は、対象処理の開始タイミングを示すとも言える。また終了通知情報は、対象処理の終了タイミングを示すとも言える。処理回路2は、対象処理の実行を開始するときに開始通知情報を更新部320に出力する。そして、処理回路2は、対象処理の実行を終了するときに終了通知情報を更新部320に出力する。
【0092】
図7は、更新部320の動作の一例を示すフローチャートである。
図7に示されるように、ステップs11において、更新部320は、開始通知情報を受け取ると、ステップs12において、上述の
図4に示される更新処理を開始する。その後、ステップs13において、更新部320は、終了通知情報を受け取ると、更新処理を終了する。その後、更新部320は、開始通知情報を受け取ると(ステップs12)、以後同様に動作する。
【0093】
このように、更新部320は、処理回路2から開始通知情報を受け取ってから終了通知情報を受け取るまでの間、レベル変化が発生するたびに、上述のように、記憶部310内の攻撃評価値を更新する。つまり、更新部320は、実行期間において、レベル変化が発生するたびに、記憶部310内の攻撃評価値を更新する。一方で、更新部320は、実行期間以外において、レベル変化が発生したとしても、記憶部310内の攻撃評価値を更新しない。
【0094】
図8,9は実行期間においてレベル変化が発生している様子の一例を示す図である。
図8,9には、モニタ対象が電源100である場合のレベル低下の一例が示されている。
図8には、実行期間においてグリッチ101が3回発生している様子の一例が示されている。
図8の例では、更新部320は、実行期間において攻撃評価値を3回更新する。
図9には、実行期間において、台形状のレベル変化102が1回だけ発生している様子の一例が示されている。
図9の例では、更新部320は実行期間において1回だけ攻撃評価値を更新する。
【0095】
なお上記の例では、1種類の対象処理しか採用されていないが、複数種類の対象処理が採用されてもよい。この場合、更新部320は、複数種類の対象処理のそれぞれについて、当該対象処理の実行期間でのレベル変化の発生に応じて、記憶部310内の攻撃評価値を更新する。例えば、暗号処理、条件分岐処理及び書き込み処理のそれぞれが対象処理として採用される場合を考える。この場合、処理回路2は、暗号処理の実行期間と、条件分岐処理の実行期間と、書き込み処理の実行期間とを更新部320に通知する。更新部320は、暗号処理の実行期間でのレベル変化の発生に応じて、記憶部310内の攻撃評価値を更新する。さらに、更新部320は、条件分岐処理の実行期間でのレベル変化の発生に応じて、記憶部310内の攻撃評価値を更新する。そして、更新部320は、書き込み処理の実行期間でのレベル変化の発生に応じて、記憶部310内の攻撃評価値を更新する。
【0096】
また上記の例では、攻撃検出装置30は、処理回路2から実行期間が通知されていたが、実行期間を自ら推定してもよい。これにより、処理回路2からの実行期間の通知が不要となる。
図10はこの場合の攻撃検出装置30の構成の一例を示す図である。
【0097】
図10に示される攻撃検出装置30は、実行期間を推定する推定部360を備えている。推定部360は、処理回路2の消費電力波形を取得する。推定部360は、例えば、処理回路2と電源回路4とを接続する電源ラインに流れる電流を検出し、検出した電流に基づいて処理回路2の消費電力波形を取得する。そして、推定部360は、取得した消費電力波形に基づいて実行期間を推定する。
【0098】
ここで、処理回路2が対象処理を実行している場合の処理回路2の消費電力波形は、実行中の対象処理に応じた固有の波形を示す。推定部360は、対象処理を実行している場合の処理回路2の消費電力波形を基準波形として予め記憶している。そして、推定部360は、取得した消費電力波形と基準波形とを比較し、その比較結果に基づいて実行期間を推定する。具体的には、推定部360は、当該比較結果に基づいて実行期間の開始タイミング及び終了タイミングを推定する。推定部360は、実行期間の開始タイミングになると、更新部320に開始通知情報を出力する。また、推定部360は、実行期間の終了タイミングになると、更新部320に終了通知情報を出力する。更新部320は、上述の
図7に示されるように、開始通知情報を受け取ってから終了通知情報を受け取るまでの間、レベル変化が発生するたびに、記憶部310内の攻撃評価値を更新する。
【0099】
以上のように、本例では、更新部320は、実行期間でのレベル変化の発生に応じて、記憶部310内の攻撃評価値を更新するため、ノイズによるレベル変化が予想外に多く発生した場合であっても、処理回路2に対する攻撃が発生したと誤って判定される可能性を低減することができる。
【0100】
なお、上記の第2の例において、更新部320は、実行期間でのレベル変化の発生に応じて、第1タイプの記憶部311内の第1攻撃評価値を更新してもよい。また、更新部320は、実行期間でのレベル変化の発生に応じて、第2タイプの記憶部312内の第2攻撃評価値を更新してもよい。
【0101】
また、上述の第1の例と同様に、記憶部310が第2タイプである場合には、判定部330は、第2タイプ用のしきい値を、攻撃検出装置30が再起動するたびに減少してもよい。
【0102】
<第5の例>
上述の第4の例において、処理回路2に対して攻撃が行われる場合、攻撃者は、処理回路2に繰り返し対象処理を実行させることがある。そして、攻撃者は、対象処理が実行されるたびに、対象処理でのある特定のタイミングを狙ってレベル変化を1回だけ発生させて処理回路2の動作に誤りを発生させることがある。
【0103】
例えば、処理装置1が起動するたびに処理回路2が対象処理を行う場合を考える。この場合、攻撃者は、例えばリセットスイッチを繰り返し操作して、処理装置1を繰り返し再起動させて、対象処理を繰り返し処理回路2に実行させる。そして、攻撃者は、対象処理が実行されるたびに、当該対象処理のあるタイミングにおいてレベル変化(モニタ対象レベル110の低下あるいは上昇)を1回だけ発生させる。例えば、対象処理が、鍵長が128ビットのAES(Advanced Encryption Standard)に基づく暗号処理の場合、攻撃者は、リセットスイッチを繰り返し操作することによって、処理回路2に当該暗号処理を繰り返し実行させる。そして、攻撃者は、対象の暗号処理が実行されるたびに、当該暗号処理での10回目のラウンドが実行されるタイミングでレベル変化を1回だけ発生させて、誤った動作を行う処理回路2の動作状況を取得する。
【0104】
また、処理装置1の外部から処理回路2に対して、対象処理の実行を指示する実行指示コマンドを入力できるような場合を考える。この場合、攻撃者は、起動中の処理回路2に対して繰り返し実行指示コマンドを入力することによって、対象処理を繰り返し処理回路2に実行させる。そして、攻撃者は、対象処理が実行されるたびに、当該対象処理のあるタイミングにおいてレベル変化を1回だけ発生させる。例えば、対象処理が上述の認証用の条件分岐処理である場合、攻撃者は、処理回路2に対して繰り返し実行指示コマンドを入力することによって、処理回路2に認証用の条件分岐処理を繰り返し実行させる。そして、攻撃者は、認証用の条件分岐処理が実行されるたびに、認証用の条件分岐処理の特定のタイミングでレベル変化を1回だけ発生させて、誤った動作を行う処理回路2の動作状況を取得する。この特定のタイミングとしては、入力されたパスワードと、予め記憶されている正規のパスワードとが一致するか否かを判定する処理が実行されるタイミングが考えられる。
【0105】
このように、攻撃者は、処理回路2に繰り返し対象処理を実行させ、対象処理が実行されるたびに、対象処理の実行中にレベル変化を1回だけ発生させるような攻撃を行うことがある。言い換えれば、攻撃者は、実行期間を繰り返し発生させて、1回の実行期間において1回だけレベル変化を発生させるような攻撃を行うことがある。以後、このような攻撃を「特定タイミング攻撃」と呼ぶことがある。本例では、特定タイミング攻撃を適切に検出することが可能な処理装置1について説明する。本例に係る処理装置1は、上述の第4の例に係る処理装置1と比較して、更新部320の動作が異なる。
【0106】
本例では、更新部320は、1回の実行期間においてレベル変化が複数回発生する場合には、記憶部310内の攻撃評価値を更新しない。そして、更新部320は、1回の実行期間においてレベル変化が1回だけ発生する場合には、上述のようにして、記憶部310内の攻撃評価値を更新する。これにより、処理回路2に対して特定タイミング攻撃が行われる場合には、記憶部310内の攻撃評価値が適宜更新される。一方で、1回の実行期間において、ノイズによって複数回レベル変化が発生した場合には、攻撃評価値は更新されない。これにより、攻撃検出装置30は、処理回路2に対する特定タイミング攻撃を適切に検出することができる。
【0107】
図11,12は、1回の実行期間においてレベル変化が発生する様子の一例を示す図である。
図11,12の例では、モニタ対象はクロック信号CLKとなっている。つまり、モニタ対象レベルは、クロック信号CLKのレベルとなっている。また、
図11,12の矢印500は、レベル変化(例えばグリッチ)が発生したタイミングを示している。矢印500は、検出部300がレベル変化を検出したタイミングを示しているとも言える。
図11の例では、1回の実行期間においてレベル変化が3回発生していることから、攻撃評価値は更新されない。一方で、
図12の例では、1回の実行期間においてレベル変化が1回しか発生していないことから、攻撃評価値は更新されて例えば+1だけ増加する。
【0108】
なお上記の第2の例において、更新部320が、実行期間でのレベル変化の発生に応じて、第1タイプの記憶部311内の第1攻撃評価値を更新する場合には、更新部320は、1回の実行期間においてレベル変化が複数回発生する場合には、第1攻撃評価値を更新しなくてもよい。また、更新部320が、実行期間でのレベル変化の発生に応じて、第2タイプの記憶部312内の第2攻撃評価値を更新する場合には、更新部320は、1回の実行期間においてレベル変化が複数回発生する場合には、第2攻撃評価値を更新しなくてもよい。
【0109】
また、上述の第1の例と同様に、記憶部310が第2タイプである場合には、判定部330は、第2タイプ用の複数のしきい値を、攻撃検出装置30が再起動するたびに減少してもよい。
【0110】
<第6の例>
上述のように、特定タイミング攻撃では、対象処理が実行されるたびに、対象処理の実行中にレベル変化が発生する。つまり、特定タイミング攻撃では、繰り返し現れる複数の実行期間においてレベル変化が連続的に発生する。
図13は、繰り返し現れる複数の実行期間においてレベル変化が連続的に発生する様子の一例を示す図である。
図13では、処理装置1の起動後の1回目〜3回目までの実行期間においてレベル変化が連続的に発生している様子が示されている。
【0111】
本例では、更新部320は、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて、記憶部310内の攻撃評価値を更新する。これにより、処理回路2に対する特定タイミング攻撃をより適切に検出することが可能となる。以下に、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて攻撃評価値を更新する方法について複数の例を挙げて説明する。
【0112】
<第6の例のその1>
図14は、本例に係る更新部320で行われる、一の実行期間に関する処理の一例を示すフローチャートである。更新部320は、各実行期間について、
図14に示される処理を実行する。以後、説明の対象の実行期間を「対象実行期間」と呼ぶことがある。
【0113】
図14に示されるように、ステップs21において、更新部320は、検出部300での検出結果に基づいて、対象実行期間においてレベル変化が1回だけ発生したか否かを判定する。例えば上述の
図9のような場合には、対象実行期間においてレベル変化が1回だけ発生したと判定される。ステップs21においてYESと判定されると、更新部320は、ステップs22において、対象実行期間よりも一つ前の実行期間においてレベル変化が1回だけ発生したか否かを、検出部300での検出結果に基づいて判定する。一方で、ステップs21においてNOと判定されると、更新部320は、対象実行期間に関する処理を終了する。これにより、ステップs21においてNOと判定されると、攻撃評価値の更新が実行されない。
【0114】
ステップs22においてYESと判定されると、更新部320は、ステップs23において、攻撃評価値を更新する。一方で、ステップs22においてNOと判定されると、更新部320は、対象実行期間に関する処理を終了する。これにより、ステップs22においてNOと判定されると、攻撃評価値が更新されない。
【0115】
なお、対象実行期間が1回目の実行期間である場合には、更新部320は、ステップs21においてYESと判定すると、ステップs22を実行せずにステップs23を実行して攻撃評価値を更新する。一方で、更新部320は、ステップs21においてNOと判定すると、対象実行期間に関する処理を終了する。対象実行期間が1回目の実行期間である場合、更新部320は、ステップs21においてYESと判定すると、ステップs22,s23を実行せずに、対象実行期間に関する処理を終了してもよい。
【0116】
上記の説明から理解できるように、本例では、更新部320は、対象実行期間においてレベル変化が複数回発生した場合(ステップs21でNOと判定)、攻撃評価値を更新しない。一方で、更新部320は、対象実行期間においてレベル変化が1回だけ発生した場合には(ステップs21でYESと判定)、その一つ前の実行期間においてレベル変化が1回だけ発生しているときだけ(ステップs22でYESと判定)、攻撃評価値を更新する。したがって、更新部320は、対象実行期間においてレベル変化が1回だけ発生した場合、その一つ前の実行期間においてレベル変化が発生していないとき(ステップs22でNOと判定)、攻撃評価値を更新しない。また、更新部320は、対象実行期間においてレベル変化が1回だけ発生した場合、その一つ前の実行期間においてレベル変化が複数回発生しているとき(ステップs22でNOと判定)、攻撃評価値を更新しない。
【0117】
図15,16は更新部320の動作の一例を説明するための図である。
図15,16の例では、処理装置1の起動後の1回目の実行期間が開始する時点において攻撃評価値が例えば0となっている。以下同様に、1回目の実行期間が開始する時点での攻撃評価値を0として説明する。
【0118】
図15の例では、1回目の実行期間においてレベル変化が1回発生しているため、更新部320は、攻撃評価値を“0”から+1だけカウントアップして“1”とする。2回目の実行期間ではレベル変化が1回発生し、その一つ前の1回目の実行期間でもレベル変化が1回発生している。したがって、更新部320は、2回目の実行期間でのレベル変化の発生に応じて、攻撃評価値を“1”から+1だけカウントアップして“2”とする。3回目、4回目及び5回目の実行期間においてもレベル変化が1回発生していることから、5回目の実行期間の終了後において攻撃評価値が“5”となる。
【0119】
一方で、
図16の例では、1回目の実行期間においてレベル変化が発生していないことから、更新部320は、攻撃評価値をカウントアップせずに“0”のままとする。2回目の実行期間ではレベル変化が1回発生しているものの、その一つ前の1回目の実行期間ではレベル変化が発生していない。したがって、更新部320は、2回目の実行期間において、レベル変化が発生したとしても、攻撃評価値をカウントアップしない。3回目の実行期間ではレベル変化が1回発生し、その一つ前の2回目の実行期間でもレベル変化が1回発生している。したがって、更新部320は、3回目の実行期間でのレベル変化の発生に応じて、攻撃評価値を“0”から+1だけカウントアップして“1”とする。4回目の実行期間ではレベル変化が3回発生している。したがって、更新部320は、攻撃評価値をカウントアップせずに“1”のままとする。5回目の実行期間ではレベル変化が1回発生しているものの、その一つ前の4回目の実行期間ではレベル変化が複数回発生している。したがって、更新部320は、5回目の実行期間においてレベル変化が発生したとしても、攻撃評価値をカウントアップしない。これにより、5回目の実行期間の終了時点では攻撃評価値が“1”となる。
【0120】
以上のようにして、特定タイミング攻撃の特徴に応じて、記憶部310内の攻撃評価値が更新されることによって、処理回路2に対する特定タイミング攻撃を適切に検出することが可能となる。
【0121】
<第6の例のその2>
上記の説明から理解できるように、特定タイミング攻撃は、一の実行期間においてレベル変化が1回だけ発生するという特徴と、繰り返し現れる複数の実行期間においてレベル変化が連続的に発生するという特徴との2つの特徴を有していると言える。以後、前者の特徴を「レベル変化回数の特徴」と呼び、後者の特徴を「連続性の特徴」と呼ぶ。
【0122】
上記の第6の例のその1では、レベル変化回数の特徴と連続性の特徴の両方が考慮されて攻撃評価値が更新されている。一方で、上述の第5の例では、レベル変化回数の特徴と連続性の特徴のうち、レベル変化回数の特徴だけが考慮されて攻撃評価値が更新されている。
【0123】
本例では、更新部320は、レベル変化回数の特徴と連続性の特徴のうち、連続性の特徴だけを考慮して更新する。
図17は、本例に係る更新部320が実行する、一の実行期間に関する処理の一例を示すフローチャートである。更新部320は、各実行期間について、
図17に示される処理を実行する。
【0124】
図17に示されるように、ステップs31において、更新部320は、検出部300での検出結果に基づいて、対象実行期間においてレベル変化が少なくとも1回発生したか否かを判定する。ステップs31においてYESと判定されると、更新部320は、ステップs32において、対象実行期間よりも一つ前の実行期間においてレベル変化が少なくとも1回発生したか否かを、検出部300での検出結果に基づいて判定する。一方で、ステップs31においてNOと判定されると、更新部320は、対象実行期間に関する処理を終了する。
【0125】
ステップs32においてYESと判定されると、更新部320は、ステップs33において、攻撃評価値を更新する。一方で、ステップs32においてNOと判定されると、更新部320は、対象実行期間に関する処理を終了する。
【0126】
なお、対象実行期間が1回目の実行期間である場合には、更新部320は、ステップs31においてYESと判定すると、ステップs32を実行せずにステップs33を実行して攻撃評価値を更新する。一方で、更新部320は、ステップs31においてNOと判定すると、対象実行期間に関する処理を終了する。対象実行期間が1回目の実行期間である場合、更新部320は、ステップs31においてYESと判定すると、ステップs32,s33を実行せずに、対象実行期間に関する処理を終了してもよい。
【0127】
上記の説明から理解できるように、本例に係る更新部320は、対象実行期間においてレベル変化が少なくとも1回発生した場合、その一つ前の実行期間においてレベル変化が少なくとも1回発生しているとき、記憶部310内の攻撃評価値を更新する。そして、更新部320は、対象実行期間においてレベル変化が少なくとも1回発生した場合、その一つ前の実行期間においてレベル変化が発生していないとき、記憶部310内の攻撃評価値を更新しない。
【0128】
図18は、本例に係る更新部320の動作の一例を説明するための図である。
図18の例では、1回目の実行期間においてレベル変化が3回発生している。更新部320は、例えば、攻撃評価値を“0”から+3だけカウントアップして“3”とする。2回目の実行期間ではレベル変化が1回発生し、その一つ前の1回目の実行期間ではレベル変化が3回発生している。したがって、更新部320は、2回目の実行期間でのレベル変化の発生に応じて、攻撃評価値を“3”から+1だけカウントアップして“4”とする。3回目の実行期間ではレベル変化が1回発生し、その一つ前の2回目の実行期間でもレベル変化が1回発生している。したがって、更新部320は、3回目の実行期間でのレベル変化の発生に応じて、攻撃評価値を“4”から+1だけカウントアップして“5”とする。4回目の実行期間ではレベル変化が発生していない。したがって、更新部320は攻撃評価値をカウントアップしない。5回目の実行期間ではレベル変化が1回発生しているものの、その一つ前の4回目の実行期間ではレベル変化が発生していない。したがって、更新部320は、5回目の実行期間でレベル変化が発生したとしても、攻撃評価値をカウントアップしない。
【0129】
このように、特定タイミング攻撃の連続性の特徴に応じて、記憶部310内の攻撃評価値が更新されることによって、処理回路2に対する特定タイミング攻撃を適切に検出することが可能となる。
【0130】
なお、更新部320は、一つの実行期間において複数回レベル変化が発生したとき、攻撃評価値を+1だけカウントアップしてもよい。この場合、
図18の例では、1回目の実行期間でのレベル変化の発生に応じて、攻撃評価値が+1だけカウントアップする。そして、5回目の実行期間の終了時点では、攻撃評価値が“3”となる。
【0131】
<第6の例のその3>
本例では、更新部320は、特定タイミング攻撃についての連続性の特徴を考慮して、繰り返し現れる複数の実行期間でのレベル変化の連続発生回数に応じて、攻撃評価値の1回の更新量(言い換えれば1回のカウントアップ量)を増加する。言い換えれば、更新部320は、レベル変化が、繰り返し現れる複数の実行期間において連続的に発生する回数に応じて、攻撃評価値の1回の更新量(言い換えれば1回のカウントアップ量)を増加する。以後、繰り返し現れる複数の実行期間でのレベル変化の連続発生回数を「連続発生回数Z」と呼ぶことがある。
【0132】
本例では、更新部320は、連続発生回数ZがX1増加するたびに、攻撃評価値の1回のカウントアップ量をY1増加する。X1及びY1は1以上の整数である。X1及びY1は例えば1に設定される。したがって、更新部320は、連続発生回数Zが1つ増加するたびに、攻撃評価値の1回のカウントアップ量を1つ増加する。なお、X1及びY1の値はこの限りではない。また、X1及びY1は互い異なる値であってもよい。
【0133】
また本例では、更新部320は、特定タイミング攻撃についてのレベル変化回数の特徴を考慮して、1回の実行期間においてレベル変化が複数回発生した場合には、当該実行期間においてレベル変化が発生しなかったものとする。これにより、ある実行期間においてレベル変化が複数回発生した場合には、攻撃評価値及び連続発生回数Zが増加することはない。本例では、更新部320は、一の実行期間での1回だけのレベル変化が、繰り返して現れる複数の実行期間において連続的に起こる回数に応じて、攻撃評価値の1回のカウントアップ量を増加すると言える。
【0134】
図19は、本例に係る更新部320が実行する、一の実行期間に関する処理の一例を示すフローチャートである。更新部320は、各実行期間について、
図19に示される処理を実行する。
【0135】
図19に示されるように、ステップs41において、更新部320は、検出部300での検出結果に基づいて、対象実行期間においてレベル変化が1回だけ発生したか否かを判定する。ステップs41においてYESと判定されると、更新部320は、ステップs42において、連続発生回数Zを1つ増加する。次にステップs43において、更新部320は、攻撃評価値の1回のカウントアップ量を1つ増加する。そしてステップs44において、更新部320は、攻撃評価値を更新する。具体的には、更新部320は、1回のカウントアップ量だけ攻撃評価値をカウントアップする。なお、ステップs42,s43の実行順序は入れ替えられてもよい。
【0136】
一方で、ステップs41においてNOと判定されると、更新部320は、ステップs45において、連続発生回数Zを零に設定する。そしてステップs46において、更新部320は、1回のカウントアップ量を初期値に設定する。初期値は例えば零に設定される。その後、更新部320は、対象実行期間に関する処理を終了する。なお、ステップs45,s46の実行順序は入れ替えられてもよい。
【0137】
図20,21は、本例に係る更新部320の動作の一例を説明するための図である。
図20の例では、一の実行期間での1回だけのレベル変化の発生が、1回目〜5回目の実行期間において連続的に発生している。
図21の例では、1回目、2回目及び5回目の実行期間においてレベル変化が1回だけ発生し、3回目の実行期間においてレベル変化が発生せず、4回目の実行期間においてレベル変化が2回発生している。
【0138】
図20の例では、1回目の実行期間でのレベル変化の発生に応じて、更新部320は、連続発生回数Zを1つ増加して“1”とする。また更新部320は、1回のカウントアップ量を初期値(零)から1つ増加して“1”とする。そして、更新部320は、攻撃評価値を“0”から+1だけカウントアップして“1”とする。
【0139】
2回目の実行期間でのレベル変化の発生に応じて、更新部320は、連続発生回数Zを1つ増加して“2”とする。また更新部320は、1回のカウントアップ量を1つ増加して“2”とする。そして、更新部320は、攻撃評価値を“1”から+2だけカウントアップして“3”とする。
【0140】
3回目の実行期間でのレベル変化の発生に応じて、更新部320は、連続発生回数Zを1つ増加して“3”とする。また更新部320は、1回のカウントアップ量を1つ増加して“3”とする。そして、更新部320は、攻撃評価値を“3”から+3だけカウントアップして“6”とする。
【0141】
4回目の実行期間でのレベル変化の発生に応じて、更新部320は、連続発生回数Zを1つ増加して“4”とする。また更新部320は、1回のカウントアップ量を1つ増加して“4”とする。そして、更新部320は、攻撃評価値を“6”から+4だけカウントアップして“10”とする。
【0142】
5回目の実行期間でのレベル変化の発生に応じて、更新部320は、連続発生回数Zを1つ増加して“5”とする。また更新部320は、1回のカウントアップ量を1つ増加して“5”とする。そして、更新部320は、攻撃評価値を“10”から+5だけカウントアップして“15”とする。
【0143】
図21の例では、1回目及び2回目の実行期間において、レベル変化が1回だけ発生している。したがって、2回目の実行期間の終了後には、
図20の例と同様に、連続発生回数Z=2となり、1回のカウントアップ量が“2”となり、攻撃評価値が“3”となる。3回目の実行期間では、レベル変化が発生していないことから、更新部320は、攻撃評価値をカウントアップせずに、連続発生回数Zを“0”とし、1回のカウントアップ量を初期値の“0”に設定する。4回目の実行期間では、レベル変化が複数回発生していることから、更新部320は、攻撃評価値をカウントアップせずに、連続発生回数Zを“0”とし、1回のカウントアップ量を初期値の“0”に設定する。5回目の実行期間では、レベル変化が1回発生していることから、連続発生回数Z=1となり、1回のカウントアップ量が“1”となり、攻撃評価値が“3”から+1だけカウントアップして“4”となる。
【0144】
このように、特定タイミング攻撃についてのレベル変化回数の特徴と連続性の特徴に応じて、記憶部310内の攻撃評価値が更新されることによって、処理回路2に対する特定タイミング攻撃を適切に検出することが可能となる。
【0145】
なお、上述のステップs41において、更新部320は、対象実行期間においてレベル変化が少なくとも1回発生したか否かを判定してもよい。この場合には、特定タイミング攻撃についてのレベル変化回数の特徴が考慮されずに、1回の実行期間においてレベル変化が複数回発生した場合であっても、連続発生回数Z、1回のカウントアップ量及び攻撃評価値が増加する。更新部320は、一の実行期間での少なくとも1回のレベル変化が、繰り返して現れる複数の実行期間において連続的に起こる回数に応じて、1回のカウントアップ量を増加すると言える。
【0146】
<第6の例のその4>
本例では、更新部320は、繰り返し現れる複数の実行期間において、レベル変化の非発生がL回(Lは2以上の整数)連続する場合、記憶部310内の攻撃評価値を減少する。Lは例えば“5”に設定される。この場合、更新部320は、繰り返し現れる複数の実行期間でのレベル変化の連続非発生回数が5回である場合、攻撃評価値を減少すると言える。以後、繰り返し現れる複数の実行期間でのレベル変化の連続非発生回数を「連続非発生回数W」と呼ぶことがある。
【0147】
図22は、本例に係る更新部320が実行する、一の実行期間に関する処理の一例を示すフローチャートである。更新部320は、各実行期間について、
図22に示される処理を実行する。
【0148】
図22に示されるように、ステップs51において、更新部320は、検出部300での検出結果に基づいて、対象実行期間でのレベル変化の発生回数を確認する。更新部320は、対象実行期間でのレベル変化の検出回数が1回であることを確認すると、ステップs52において、連続非発生回数Wを零に設定する。次にステップs53において、更新部320は連続発生回数Zを1つ増加する。次にステップs54において、更新部320は、攻撃評価値の1回のカウントアップ量を1つ増加する。そしてステップs55において、更新部320は、攻撃評価値を更新する。その後、更新部320は、対象実行期間に関する処理を終了する。なお、ステップs52は、ステップs53よりも後に実行されてもよい。また、ステップs53,s54の実行順序は入れ替えられてもよい。
【0149】
ステップs51において、更新部320は、対象実行期間でのレベル変化の検出回数が複数回であることを確認すると、ステップs56において、更新部320は連続発生回数Zを零に設定する。次にステップs57において、更新部320は連続非発生回数Wを零に設定する。そしてステップs58において、更新部320は、1回のカウントアップ量を初期値に設定する。その後、更新部320は、対象実行期間に関する処理を終了する。なお、ステップs56〜s58の実行順序は入れ替えられてもよい。
【0150】
ステップs51において、更新部320は、対象実行期間においてレベル変化が発生していないことを確認すると、ステップs59において、連続発生回数Zを零に設定する。次にステップs60において、更新部320は連続非発生回数Wを1つ増加する。次にステップs61において、更新部320は、連続非発生回数WがL回であるか否かを判定する。更新部320は、連続非発生回数WがL回に一致すると判定すると、ステップs62において、攻撃評価値を減少する。ステップs62において、更新部320は、例えば、攻撃評価値をVだけ減少する。Vは1以上の整数である。ステップs62においては、更新部320は、攻撃評価値をリセットしてもよい。つまり、更新部320は、攻撃評価値を零に設定してもよい。ステップs62の後、ステップs63において、更新部320は、連続非発生回数Wをリセットして零に設定する。その後、更新部320は、対象実行期間に関する処理を終了する。なお、ステップs59は、ステップs60よりも後に実行されてもよい。また、ステップs62,s63の実行順序は入れ替えられてもよい。
【0151】
図23は本例に係る更新部320の動作の一例を説明するための図である。
図23の例では、1回目及び2回目の実行期間でのレベル変化の発生回数が1回となっている。したがって、2回目の実行期間の終了後、攻撃評価値が“3”、連続発生回数Zが“1”、連続非発生回数Wが“0”となっている。3回目の実行期間では、レベル変化が発生していないことから、攻撃評価値はカウントアップされず、連続発生回数Zが零に設定され、連続非発生回数Wが増加して“1”となる。その後、レベル変化の非発生が、M−1回目の実行期間まで連続して発生して、連続非発生回数WがL回となると、攻撃評価値が減少する。
図23の例では、攻撃評価値がリセットされて零に設定されている。そして、M回目の実行期間においてレベル変化が1回だけ発生すると、攻撃評価値が+1だけ増加して“1”となり、連続発生回数Zが“1”となる。
【0152】
以上のように、繰り返し現れる複数の実行期間において、レベル変化の非発生が連続する場合に、記憶部310内の攻撃評価値を減少させることによって、処理回路2に対する特定タイミング攻撃を適切に検出することが可能となる。
【0153】
なお、
図22に示されるフローチャートにおいて、対象実行期間でのレベル変化の発生回数が複数回であることがステップs51で確認された場合、ステップs56〜s58の替わりに、ステップs52〜s55が実行されてもよい。
図24は、この場合の更新部320の動作の一例を示すフローチャートである。なお、
図24に示されるステップs51は、上述の
図17に示されるステップs31と実質的には同じ処理である。ステップs51での「0回」は、ステップs31での「NO」に対応し、ステップs51での「1回/複数回」は、ステップs31での「YES」に対応する。
【0154】
また、
図22に示されるフローチャートにおいて、連続発生回数Zに応じて1回のカウントアップ量を増加する処理が実行されてなくてもよい。
図25、この場合の更新部320の動作の一例を示すフローチャートである。
図25に示されるフローチャートは、上述の
図22に示されるフローチャートにおいて、ステップs53,s54,s56,s58,s59を削除したものである。
図25のステップs55では、更新部320は、攻撃評価値を+1だけ増加する。
【0155】
また上述の
図14に示されるフローチャートにおいて、連続非発生回数WがL回になると攻撃評価値を減少してもよい。
図26は、この場合の更新部320の動作の一例を示すフローチャートである。
図26に示されるフローチャートは、
図25に示されるフローチャートにおいて、ステップs52とステップs55の間に、
図14のステップs22を追加したものである。
図26に示されるステップs51は、
図14に示されるステップs21に相当するステップである。
図26の例では、ステップs22においてYESと判定されると、ステップs55が実行されて、攻撃評価値が+1だけ増加する。一方、ステップs22においてNOと判定されると、対象実行期間に関する処理が終了する。
【0156】
また上述の
図17に示されるフローチャートにおいて、連続非発生回数WがL回になると攻撃評価値を減少してもよい。
図27は、この場合の更新部320の動作の一例を示すフローチャートである。
図27に示されるフローチャートは、上述の
図24に示されるフローチャートにおいて、ステップs53,54の替わりにステップs71が実行されるものである。
図27のステップs51は
図17のステップs31に対応し、
図27のステップs71は
図17のステップs32と実質的に同じ処理である。ステップs71において、更新部320は、対象実行期間の一つ前の実行期間でのレベル変化の発生回数を確認する。ステップs71において、更新部320は、一つ前の実行期間でのレベル変化の発生回数が1回あるいは複数回であることを確認すると、ステップs55を実行して攻撃評価値を更新する。一方で、ステップs71において、更新部320は、一つ前の実行期間においてレベル変化が発生していないことを確認すると、対象実行期間に関する処理を実行する。
【0157】
上記の
図22及び24〜27に示される例では、連続非発生回数WがL回になると、次の実行期間でのレベル変化の発生回数にかかわらず連続非発生回数Wがリセットされているが、リセットされなくてもよい。この場合、更新部320は、連続非発生回数WがL回以上の場合、攻撃評価値を減少してもよい。
図28は、
図22に対応するこの場合の更新部320の動作を示すフローチャートである。
図28に示されるフローチャートは、
図22に示されるフローチャートにおいて、ステップs61の替わりにステップs61aが実行されて、ステップs63が削除されたものである。
図28に示されるように、ステップs60の後、更新部320は、ステップs61aにおいて、連続非発生回数WがL回以上であるか否かを判定する。ステップs61aにおいてYESと判定されると、更新部320は、ステップs62を実行して、攻撃評価値を減少する。ステップs62の後、対象実行期間に関する処理が終了する。一方で、ステップs61aにおいてNOと判定されると、対象実行期間に関する処理が終了する。なお、
図24〜27に示されるフローチャートにおいても、ステップs61の替わりにステップs61aが実行されて、ステップs63が削除されてもよい。
【0158】
上記の第6の例のその1〜その4については、上記の第2の例のように、記憶部310が第1タイプの記憶部311及び第2タイプの記憶部312を有する攻撃検出装置30に対しても適用することができる。この場合、更新部320は、第6の例のその1〜その4と同様に、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて、第1タイプの記憶部311内の第1攻撃評価値を更新する。また、更新部320は、第6の例のその1〜その4と同様に、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて、第2タイプの記憶部312内の第2攻撃評価値を更新する。
【0159】
また、第3の例のように、判定部330が処理回路2に対する攻撃の危険度を判定する場合であっても、更新部320は、第6の例のその1〜その4と同様に、繰り返し現れる複数の実行期間の間でのレベル変化の検出の連続性に基づいて、記憶部310内の攻撃評価値を更新することができる。
【0160】
<第7の例>
上記の第6の例のその3では、更新部320は、特定タイミング攻撃についての連続性の特徴を考慮して、1回のカウントアップ量を連続発生回数Zに応じて増加していた。これに対して、本例では、更新部320は、特定タイミング攻撃についての連続性の特徴を考慮して、攻撃判定処理で使用されるしきい値を連続発生回数Zに応じて減少する。
【0161】
本例では、更新部320は、連続発生回数ZがX2増加するたびに、しきい値をY2減少する。X2及びY2は1以上の整数である。X2及びY2は例えば1に設定される。したがって、更新部320は、連続発生回数Zが1つ増加するたびに、判定部330が実行する攻撃判定処理で使用されるしきい値を1つ減少する。なお、X2及びY2の値はこの限りではない。また、X2及びY2は互い異なる値であってもよい。
【0162】
図29は、本例に係る更新部320が実行する、一の実行期間に関する処理の一例を示すフローチャートである。更新部320は、各実行期間について、
図29に示される処理を実行する。
【0163】
図29に示されるように、ステップs81において、更新部320は、対象実行期間においてレベル変化が1回だけ発生したか否かを判定する。ステップs81においてYESと判定されると、更新部320は、ステップs82において、連続発生回数Zを1つ増加する。次にステップs83において、更新部320は、攻撃判定処理で使用されるしきい値を1つ減少する。そしてステップs84において、更新部320は、攻撃評価値を更新する。具体的には、更新部320は、1回のカウントアップ量だけ攻撃評価値をカウントアップする。なお、ステップs82〜s84の実行順序は入れ替えられてもよい。
【0164】
一方で、ステップs81においてNOと判定されると、更新部320は、ステップs85において、更新部320は連続発生回数Zを零に設定する。その後、更新部320は、対象実行期間に関する処理を終了する。
【0165】
図30,31は、本例に係る更新部320の動作の一例を説明するための図である。
図30,31の例では、攻撃判定処理で使用されるしきい値の初期値が“100”に設定されている。
【0166】
図30の例では、一の実行期間での1回だけのレベル変化が、1回目〜5回目の実行期間において連続的に発生している。したがって、5回目の実行期間の終了後、攻撃評価値及び連続発生回数Zはともに“5”となる。また、しきい値は、初期値の“100”から“5”減少して“95”となる。
【0167】
図31の例では、1回目及び2回目の実行期間において、レベル変化が1回だけ発生している。したがって、2回目の実行期間の終了後には、攻撃評価値及び連続発生回数Zはともに“2”となり、しきい値が“98”となる。3回目の実行期間ではレベル変化が発生しておらず、4回目の実行期間ではレベル変化が複数回発生していることから、4回目の実行期間の終了後、攻撃評価値が“2”となり、連続発生回数Zが“0”となり、しきい値が“98”となる。5回目の実行期間では、レベル変化が1回発生していることから、攻撃評価値が“2”から+1だけカウントアップして“3”となる。そして、連続発生回数Z=1となり、しきい値が1つ減少して“97”となる。
【0168】
このように、本例では、特定タイミング攻撃についてのレベル変化回数の特徴と連続性の特徴に応じて、攻撃判定処理で使用されるしきい値が減少することから、処理回路2に対する特定タイミング攻撃を適切に検出することが可能となる。
【0169】
なお、上述のステップs81において、更新部320は、対象実行期間においてレベル変化が少なくとも1回発生したか否かを判定してもよい。この場合には、特定タイミング攻撃についてのレベル変化回数の特徴が考慮されずに、1回の実行期間においてレベル変化が複数回発生した場合であっても、連続発生回数Z及び攻撃評価値が増加し、しきい値が減少する。更新部320は、一の実行期間での少なくとも1回のレベル変化が、繰り返して現れる複数の実行期間において連続的に起こる回数に応じて、しきい値を減少すると言える。
【0170】
また、本例については、上記の第2の例のように、記憶部310が第1タイプの記憶部311及び第2タイプの記憶部312を有する攻撃検出装置30に対しても適用することができる。この場合、更新部320は、上記と同様に、連続発生回数Zに応じて、第1タイプの記憶部311内の第1攻撃評価値と比較される第1タイプ用のしきい値を減少してもよい。また、更新部320は、連続発生回数Zに応じて、第2タイプの記憶部312内の第2攻撃評価値と比較される第2タイプ用のしきい値を低減してもよい。
【0171】
また、本例については、上記の第3の例のように、判定部330が互いに異なる複数のしきい値を用いて処理回路2に対する攻撃の危険度を判定する攻撃検出装置30に対しても適用することができる。この場合、更新部320は、判定部330が使用する互いに異なる複数のしきい値のそれぞれを、上記と同様に、連続発生回数Zに応じて低減してもよい。
【0172】
<第8の例>
特定タイミング攻撃において、攻撃者は、繰り返し現れる複数の実行期間での同じタイミングを狙ってレベル変化を発生させることがある。例えば、実行期間で実行される対象処理が、鍵長が128ビットのAESに基づく暗号処理の場合、攻撃者は、繰り返し現れる複数の実行期間のそれぞれにおいて、当該暗号処理での10回目のラウンドが実行されるタイミングでレベル変化を発生させて、処理回路2に対する攻撃を行うことがある。
【0173】
そこで、本例では、攻撃検出装置30は、各実行期間を複数の部分期間に分割する。本例では、各実行期間は、第1〜第K部分期間に分割される。Kは2以上の整数である。一の実行期間を構成する第1〜第K部分期間は、当該実行期間の開始から終了にかけてこの順で現れる。攻撃検出装置30は、複数の部分期間のそれぞれについて、当該部分期間において処理回路2に対する攻撃が発生した可能性の度合いを示す攻撃評価値を記憶部310に記憶する。攻撃検出装置30は、複数の部分期間のそれぞれについて、当該部分期間でのレベル変化の発生に応じて、当該部分期間に対応する攻撃評価値を更新する。そして、攻撃検出装置30は、複数の部分期間についての攻撃評価値に基づいて、処理回路2に対して攻撃が発生したか否かを判定する。これにより、特定タイミング攻撃をより適切に検出することが可能となる。以下に本例に係る攻撃検出装置30の動作について詳細に説明する。
【0174】
<攻撃評価値の更新方法の一例>
本例では、記憶部310には、第1〜第K部分期間にそれぞれ対応するK個の攻撃評価値が記憶される。更新部320は、第1〜第K部分期間のそれぞれの部分期間について、当該部分期間でのレベル変化の発生に応じて、記憶部310内の当該部分期間に対応する攻撃評価値を更新する。第1〜第K部分期間にそれぞれ対応するK個の攻撃評価値の更新方法は互いに同じである。
【0175】
図32は、ある時点でのK個の攻撃評価値の一例を示す図である。
図32の例では、K=5であって、一の実行期間が第1〜第5部分期間に分割されている。
図32の例では、第1〜第5部分期間に対応する5個の攻撃評価値が、それぞれ“1”、“4”、“42”、“0”及び“3”となっている。
図32の例では、第1〜第5部分期間のうち、第3部分期間において攻撃が発生した可能性が高いと言える。
【0176】
攻撃評価値の更新方法としては、上記の様々な更新方法を採用することができる。例えば、更新部320は、上述の
図4と同様に、第k部分期間(1≦k≦K)において、レベル変化が発生するたびに、第k部分期間に対応する攻撃評価値を更新してもよい。以後、説明の対象の一の第k部分期間を「対象第k部分期間」と呼ぶことがある。また、第k部分期間に対応する攻撃評価値を「第k対応攻撃評価値」と呼ぶことがある。
【0177】
更新部320は、上述の第6の例のように、繰り返し現れる複数の第k部分期間の間でのレベル変化の発生の連続性に基づいて、第k対応攻撃評価値を更新してもよい。この場合の更新部320の動作は、基本的には、第6の例で説明した内容において、対象実行期間を対象第k部分期間に置き換えた動作となる。実行期間が繰り返し現れることによって、第k部分期間も繰り返し現れる。
【0178】
例えば、第6の例のその1についての
図14のフローチャートにおいて、対象実行期間を対象第k部分期間に置き換えた場合を考える。この場合、更新部320は、ステップs21において、対象第k部分期間においてレベル変化が1回だけ発生したか否かを判定する。またステップs22において、更新部320は、対象第k実行期間よりも一つ前の第k部分期間においてレベル変化が1回だけ発生したか否かを判定する。そして更新部320は、ステップs23において、第k対応攻撃評価値を更新する。更新部320は、対象実行期間を対象第k部分期間に置き換えた
図14に示される第k部分期間に関する処理を、繰り返し現れる複数の第k部分期間のそれぞれについて行う。そして、更新部320は、同様の処理を、第1〜第K部分期間のそれぞれについて行う。
【0179】
また第6の例のその2についての
図17のフローチャートにおいて、対象実行期間を対象第k部分期間に置き換えた場合を考える。この場合、更新部320は、ステップs31において、対象第k部分期間においてレベル変化が少なくとも1回発生したか否かを判定する。また更新部320は、ステップs32において、対象第k部分期間よりも一つ前の第k部分期間においてレベル変化が少なくとも1回発生したか否かを判定する。そして更新部320は、ステップs33において、第k対応攻撃評価値を更新する。更新部320は、対象実行期間を対象第k部分期間に置き換えた
図17に示される第k部分期間に関する処理を、繰り返し現れる複数の第k部分期間のそれぞれについて行う。そして、更新部320は、同様の処理を、第1〜第K部分期間のそれぞれについて行う。
【0180】
また第6の例のその3についての
図19のフローチャートにおいて、対象実行期間を対象第k部分期間に置き換えた場合を考える。この場合には、更新部320は、ステップs41において、対象第k部分期間においてレベル変化が1回だけ発生したか否かを判定する。ステップs42において、更新部320は、第k部分期間についての連続発生回数Zを1つ増加する。ここで、第k部分期間についての連続発生回数Zとは、繰り返し現れる複数の第k部分期間でのレベル変化の連続発生回数を意味する。ステップs43において、更新部320は、第k対応攻撃評価値の1回のカウントアップ量を1つ増加する。ステップs44において、更新部320は第k対応攻撃評価値を更新する。ステップs45において、更新部320は、第k部分期間についての連続発生回数Zを零に設定する。ステップs46において、更新部320は、第k対応攻撃評価値の1回のカウントアップ量を初期値に設定する。更新部320は、対象実行期間を対象第k部分期間に置き換えた
図19に示される第k部分期間に関する処理を、繰り返し現れる複数の第k部分期間のそれぞれについて行う。そして、更新部320は、同様の処理を、第1〜第K部分期間のそれぞれについて行う。
【0181】
また第6の例のその4についての
図22,24〜27のフローチャートにおいて、対象実行期間を対象第k部分期間に置き換えた場合を考える。この場合、更新部320は、ステップs51において、対象第k部分期間でのレベル変化の発生回数を確認する。ステップs52,s57,s63において、第k部分期間についての連続非発生回数Wを零に設定する。ここで、第k部分期間についての連続非発生回数Wとは、繰り返し現れる複数の第k部分期間でのレベル変化の連続非発生回数を意味する。ステップs53において、更新部320は、第k部分期間についての連続発生回数Zを1つ増加する。ステップs54において、更新部320は、第k対応攻撃評価値の1回のカウントアップ量を1つ増加する。ステップs55において、更新部320は、第k対応攻撃評価値を更新する。ステップs56,s59において、更新部320は、第k部分期間についての連続発生回数Zを零に設定する。ステップs58において、更新部320は、第k対応攻撃評価値の1回のカウントアップ量を初期値に設定する。ステップs60において、更新部320は、対象第k部分期間についての連続非発生回数Wを1つ増加する。ステップs61において、更新部320は、対象第k部分期間についての連続非発生回数WがL回であるか否かを判定する。ステップs62において、更新部320は、第k対応攻撃評価値を減少する。ステップs22において(
図26)、更新部320は、対象第k部分期間の一つ前の第k部分期間においてレベル変化が1回だけ発生したか否かを判定する。ステップs71において(
図27)、更新部320は、対象第k部分期間の一つ前の第k部分期間での発生回数を確認する。更新部320は、対象実行期間を対象第k部分期間に置き換えた
図22,24〜27のフローチャートに示される第k部分期間に関する処理を、繰り返し現れる複数の第k部分期間のそれぞれについて行う。そして、更新部320は、同様の処理を、第1〜第K部分期間のそれぞれについて行う。更新部320は、上述の
図28と同様に、ステップs61の替わりのステップs61aにおいて、対象第k部分期間についての連続非発生回数WがL回以上であるか否かを判定し、ステップs63を実行しなくてもよい。
【0182】
なお、特定タイミング攻撃のレベル変化回数の特徴を考慮して、更新部320は、上述した第k対応攻撃評価値の各更新方法において、実行期間での、第k部分期間を含む複数の部分期間においてレベル変化が発生している場合には、第k対応攻撃評価値を更新しなくてもよい。
【0183】
<攻撃判定処理の一例>
本例に係る判定部330は、攻撃判定処理において、記憶部310内の第1〜第K対応攻撃評価値に基づいて、処理回路2に対して攻撃が発生したか否かを判定する。判定部330は、例えば、攻撃判定処理において、第1〜第K対応攻撃評価値の総和を求める。そして判定部330は、求めた総和が所定値未満のとき、処理回路2に対する攻撃が発生していないと判定する。所定値は、例えば50に設定されるが、これに限られない。一方で、判定部330は、求めた総和が所定値以上のとき、第1〜第K対応攻撃評価値のそれぞれについて、当該総和に対する割合を評価値割合として求める。そして、判定部330は、第1〜第K対応攻撃評価値についての評価値割合において、しきい値TH以上の評価値割合が存在する場合、処理回路2に対する攻撃が発生したと判定する。一方で、判定部330は、第1〜第K対応攻撃評価値についての評価値割合において、しきい値TH以上の評価値割合が存在しない場合、処理回路2に対する攻撃が発生していないと判定する。しきい値THは、例えば80%に設定される。なお、しきい値THは80%以外に設定されてもよい。
【0184】
図33は、
図32の例での評価値割合を示す図である。
図33の縦軸は、各部分期間の攻撃評価値についての評価値割合を示す。
図32の例では、第1〜第5対応攻撃評価値の総和は“50”となる。そして、第1〜第5対応攻撃評価値についての評価値割合は、それぞれ、2%、8%、84%、0%及び6%となる。したがって、
図33に示されるように、第3部分期間の第3対応攻撃評価値についての評価値割合がしきい値TH以上となっている。攻撃判定処理が実行される際の第1〜第5対応攻撃評価値が
図32のような場合には、処理回路2に対する攻撃が発生したと判定される。なお、第1〜第K対応攻撃評価値に基づいて、処理回路2に対して攻撃が発生したか否かを判定する方法については、上記の例には限れない。
【0185】
このように、本例では、実行期間を構成する複数の部分期間についての攻撃評価値に基づいて、処理回路2に対して攻撃が発生したか否かが判定されることから、繰り返し現れる複数の実行期間での同じタイミングを狙ってレベル変化を発生させるような特定タイミング攻撃を適切に検出することができる。
【0186】
<第9の例>
図34は、本例に係る処理装置1が備える制御装置3の攻撃検出装置30の構成の一例を主に示す図である。
図34に示されるように、本例では、攻撃検出装置30は、複数の更新部320a,320b,320c及び複数の判定部330a,330b,330cを備える。
【0187】
更新部320a及び判定部330aは、記憶部310に記憶される攻撃評価値315aを更新するとともに、当該攻撃評価値315aに基づいた攻撃判定処理を行う更新判定部380aを構成する。更新部320b及び判定部330bは、記憶部310に記憶される攻撃評価値315bを更新するとともに、当該攻撃評価値315bに基づいた攻撃判定処理を行う更新判定部380bを構成する。更新部320c及び判定部330cは、記憶部310に記憶される攻撃評価値315cを更新するとともに、当該攻撃評価値315cに基づいた攻撃判定処理を行う更新判定部380cを構成する。複数の更新判定部380a〜380cの動作は互いに異なっている。
【0188】
更新判定部380aが備える更新部320a及び判定部330aは、例えば、上記の第1の例に係る更新部320及び判定部330と同様に動作する。具体的には、更新部320aは、レベル変化が発生するたびに攻撃評価値315aを更新する更新処理を、処理装置1の起動中において常に行う。判定部330aは、攻撃評価値315aとしきい値との比較結果に基づいて、処理回路2に対する攻撃が発生した否かを判定する。
【0189】
更新判定部380bが備える更新部320b及び判定部330bは、例えば、上記の第6の例に係る更新部320及び判定部330と同様に動作する。具体的には、更新部320bは、繰り返し現れる複数の実行期間の間でのレベル変化の発生の連続性に基づいて、記憶部310内の攻撃評価値315bを更新する。本例では、更新部320bは、例えば、第6の例のその3と同様に、連続発生回数Zに応じて、攻撃評価値315aの1回のカウントアップ量を増加する。判定部330bは、攻撃評価値315bとしきい値との比較結果に基づいて、処理回路2に対する攻撃が発生した否かを判定する。
【0190】
更新判定部380cが備える更新部320c及び判定部330cは、例えば、上記の第8の例の更新部320及び判定部330と同様に動作する。この場合、記憶部310には、実行期間を構成する第1〜第K部分期間にそれぞれ対応するK個の攻撃評価値315cが記憶される。更新部320cは、記憶部310内のK個の攻撃評価値315cのそれぞれについて、当該攻撃評価値315cに対応する部分期間でのレベル変化の発生に応じて、当該攻撃評価値315cを更新する。判定部330cは、攻撃判定処理において、K個の攻撃評価値315cの総和を求める。そして、判定部330cは、求めた総和が所定値未満であれば、処理回路2に対する攻撃が発生していないと判定する。一方で、判定部330cは、求めた総和が所定値以上であれば、K個の攻撃評価値315cのそれぞれについて、当該総和に対する割合を評価値割合として求める。そして、判定部330cは、K個の攻撃評価値についての評価値割合において、しきい値TH以上の評価値割合が存在する場合、処理回路2に対する攻撃が発生したと判定する。一方で、判定部330は、K個の攻撃評価値についての評価値割合において、しきい値TH以上の評価値割合が存在しない場合、処理回路2に対する攻撃が発生していないと判定する。
【0191】
本例では、制御部31は、判定部330aにおいて処理回路2に対する攻撃が発生したと判定されると、第1の例のように、処理回路2の動作を停止する。また、制御部31は、判定部330bにおいて処理回路2に対する攻撃が発生したと判定されると、処理回路2に対する動作を停止する。そして、制御部31は、判定部330cにおいて処理回路2に対する攻撃が発生したと判定されると、処理回路2に対する動作を停止する。
【0192】
このように、本例では、互いに異なる動作を行う複数の更新判定部が設けられていることから、処理回路2に対する複数種類の故障利用攻撃を検出することが可能となる。
【0193】
例えば、更新判定部380aは、対象処理が行われる実行期間以外にもレベル変化が発生するような故障利用攻撃を適切に検出することができる。
【0194】
また、更新判定部380bは、実行期間の全体にわたってレベル変化が複数回発生するような特定タイミング攻撃を適切に検出することができる。例えば、攻撃者は、実行期間の開始から終了にかけてレベル変化を繰り返し発生させ、そのときの処理回路2の動作状況に基づいて、実行期間において最終的に攻撃すべきタイミングを決定することがある。例えば、対象処理が、鍵長が128ビットのAESに基づく暗号処理である場合を考える。この場合、攻撃者は、暗号処理の実行期間の開始から終了にかけてレベル変化を繰り返し発生させ、そのときの処理回路2の動作状況に基づいて、当該暗号処理での10回目のラウンドが実行されるタイミングを、最終的に攻撃すべきタイミングとして特定することがある。更新判定部380bは、実行期間において最終的に攻撃すべきタイミングが決定される前に、特定タイミング攻撃を検出することが可能となる。
【0195】
また、更新判定部380cは、実行期間のある特定のタイミングを狙ってレベル変化を発生させるような特定タイミング攻撃を適切に検出することができる。
【0196】
なお、制御部31は、判定部330aにおいて攻撃が発生したと判定されたときと、判定部330bにおいて攻撃が発生したと判定されたときと、判定部330cにおいて攻撃が発生したと判定されたときとで、処理回路2に対する制御を変更してもよい。例えば、処理回路2が行う暗号処理に対して攻撃が行われる場合を考える。この場合、制御部31は、判定部330aにおいて攻撃が発生したと判定されたときには、例えば、処理回路2に、暗号処理の実行タイミングを変更させる。また制御部31は、判定部330bにおいて攻撃が発生したと判定されたときには、例えば、処理回路2に、暗号処理で使用する鍵を変更させる。そして、制御部31は、判定部330cにおいて攻撃が発生したと判定されたときには、例えば、処理回路2の動作を停止する。処理回路2に対する制御の内容の組み合わせはこの限りではない。
【0197】
上記の例では、攻撃検出装置30は、互いに異なる動作を行う3つの更新判定部を備えているが、互いに異なる動作を行う2つの更新判定部を備えてもよいし、互いに異なる動作を行う4つ以上の更新判定部を備えてもよい。また、更新判定部380a,380b,380cが扱う複数の攻撃評価値315a,315b,315cは、互いに異なる複数の記憶部にそれぞれ記憶されてもよい。この場合、当該複数の記憶部には、第1タイプの記憶が含まれてもよいし、第2タイプの記憶部が含まれてもよい。
【0198】
以上のように、処理装置1は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。