説明

情報処理装置及び方法、並びにプログラム

【課題】処理速度の低下を抑制しつつ、セキュリティ対策の強度を上げることができるようにする。
【解決手段】攻撃検出部は、攻撃を検出する。強度調整部は、攻撃が検出される毎に、セキュリティ対策の強度を段階的に上げる。本技術は、非接触ICカードに適用することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本技術は、情報処理装置及び方法、並びにプログラムに関し、特に、処理速度を維持したまま、セキュリティレベルを向上させることができる、情報処理装置及び方法、並びにプログラムに関する。
【背景技術】
【0002】
近年、IC(Integrated Circuit)カードに含まれるICチップに対する能動攻撃が脅威となっている。能動攻撃とは、悪意のある第三者が、ICカードにレーザー光を照射させる等して、本来の通常動作とは異なる動作を人為的かつ強制的にICチップに実行させ、秘密情報を入手しようとすることをいう。
【0003】
このような能動攻撃の代表的な1つとして、DFA(Differential Fault Analysis)攻撃が存在する。DFAとは、悪意のある第三者が、本来の通常動作とは異なる動作を人為的かつ強制的にICチップに実行させ、その結果得られる異常な演算結果と、予め入手しておいた通常動作による正常な演算結果とを比較することによって、秘密情報を入手しようとすることをいう。
【0004】
このようなDFA等の能動攻撃に対して秘密情報を保護する従来の手法としては、暗号演算等の重要な処理を検算することで、通常動作とは異なる動作(すなわち、能動攻撃による異常動作)を検出する手法が存在する(特許文献1参照)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平10−154976号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、近年では、強いレーザー光を短周期で照射できる装置が製品化されている。このような装置による能動攻撃に対して、従来の手法を適用して秘密情報を守るためには、検算回数やセキュリティチェックをさらに増す等してセキュリティレベルを向上させる必要がある。一方、セキュリティレベルの向上は、ICチップの処理速度の低下を招く。このように、従来の手法を適用すると、セキュリティレベルと、ICチップの処理速度との間にトレードオフの関係が生じてしまい、ICチップの処理速度を維持したまま、セキュリティレベルを向上させることは非常に困難である。
【0007】
本技術は、このような状況に鑑みてなされたものであり、処理速度を維持したまま、セキュリティレベルを向上させることができるようにしたものである。
【課題を解決するための手段】
【0008】
本技術の一側面の情報処理装置は、攻撃を検出する攻撃検出部と、前記攻撃検出部により攻撃が検出される毎に、セキュリティ対策の強度を段階的に上げる強度調整部とを備える。
【0009】
前記強度調整部は、所定の条件が満たされる毎に、前記セキュリティ対策の強度を段階的に下げることができる。
【0010】
前記強度調整部は、重要処理の検算回数の増加、タイミングジッタの挿入量の増加、ダミー演算の挿入、通常モードに戻るまでの時間の増加、規定処理の成功回数の増加のうち、少なくとも1つを用いて、前記セキュリティ対策の強度を上げることができる。
【0011】
前記所定の条件は、前記攻撃検出部により攻撃が検出されてから所定時間が経過したという条件とすることができる。
【0012】
前記所定の条件は、規定処理の実行が成功したという条件とすることができる。
【0013】
前記攻撃検出部による攻撃の検出後にコンデンサを充電する充放電部と、前記充放電部により放電されつつある前記コンデンサの電荷量と、所定の閾値とを比較する電荷量検出部とをさらに備え、前記所定時間は、電荷量が前記所定の閾値となるまでの前記コンデンサの放電時間とすることができる。
【0014】
前記強度調整部は、前記セキュリティ対策の強度を上げる対象を、前記攻撃検出部により攻撃が検出された関数とすることができる。
【0015】
前記強度調整部は、前記セキュリティ対策の強度を上げる対象を、前記攻撃検出部により攻撃が検出された関数が実行されている前記情報処理装置の構成要素が実行するすべての関数とすることができる。
【0016】
本技術の一側面の情報処理方法及びプログラムは、上述した本技術の一側面の情報処理装置に対応する方法及びプログラムである。
【0017】
本技術の一側面の情報処理装置及び方法並びにプログラムにおいては、攻撃が検出され、攻撃が検出される毎に、セキュリティ対策の強度が段階的に上げられる。
【発明の効果】
【0018】
以上のごとく、本技術によれば、処理速度を維持したまま、セキュリティレベルを向上させることができる。
【図面の簡単な説明】
【0019】
【図1】ICチップの構成例を示すブロック図である
【図2】検算回数を段階的に増やす例について説明する図である。
【図3】ICカードに搭載された充放電回路の原理について説明する図である。
【図4】等価回路のコンデンサCの充放電時の電荷量のタイミングチャートである。
【図5】CPUの機能的構成例を示すブロック図である。
【図6】第1のセキュリティ対策強度調整処理が開始される状態を示す図である。
【図7】第1のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【図8】第2のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【図9】セキュリティ対策の種類と強度の関係について説明する図である。
【図10】第3のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【図11】第4のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【図12】第5のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【図13】関数Aの攻撃検出処理の流れを説明するフローチャートである。
【図14】関数Bの攻撃検出処理の流れを説明するフローチャートである。
【図15】本技術が適用される情報処理装置のハードウエアの構成例を示すブロック図である。
【発明を実施するための形態】
【0020】
[本技術の概要]
はじめに、本技術の理解を容易なものとすべく、その概略について説明する。
【0021】
本技術に属するICカードは、能動攻撃(以下、攻撃と略称する)を検出する毎に、セキュリティレベル(以下、セキュリティ対策の強度とも称する)を段階的に上げる。例えば、セキュリティ対策として暗号演算の検算が採用されているICカードは、攻撃を検出する毎に、検算回数を1回ずつ増やしていく。すると、攻撃者がICカードに対する攻撃を試みる毎に、当該ICカードのセキュリティ対策の強度は加速度的に上がるので、当該ICカードに対する攻撃の成功率は飛躍的に低下していく。
【0022】
一方、セキュリティ対策の強度を上げたままでは、処理速度が低下して、ユーザビリティが損なわれるおそれがある。したがって、本技術に属するICカードは、ユーザビリティを維持するために、攻撃検出後に所定の条件が満たされると、セキュリティ対策の強度を段階的に下げる。例えば、攻撃検出後に所定時間が経過した場合や、既定処理の実行に成功した場合、当該ICカードは、検算回数を1回ずつ減らしていく。すると、所定の条件が満たされる毎に処理速度はもとの速度に近づくので、ユーザビリティが維持される。
【0023】
このように、ICカードにつき、セキュリティ対策の強度を段階的に調整することにより、処理速度を維持したまま、セキュリティレベルを向上させることができる。
【0024】
以下、本技術の4つの実施形態(以下、それぞれ第1実施形態乃至第4実施形態と称する)について、次の順序で説明する。
1.第1実施形態(セキュリティ対策として検算回数を段階的に調整する例)
2.第2実施形態(複数のセキュリティ対策の強度を段階的に調整する例)
3.第3実施形態(セキュリティ対策の強度を段階的に調整する関数を限定する例)
4.第4実施形態(セキュリティ対策の強度を段階的に調整する箇所を限定する例)
【0025】
<1.第1実施形態>
[ICカードの構成例]
図1は、ICカードに含まれるICチップの構成例を示すブロック図である。
【0026】
ICチップ11は、センサ21、RAM(Random Access Memory)22、EEPROM(Electrically Erasable and Programmable Read Only Memory)23、ROM(Read Only Memory)24、暗号エンジン25、乱数発生器26、I/O(Input/Output)27、およびCPU(Central Processing Unit)28が、内部バス29により相互に接続されることにより構成される。
【0027】
センサ21は、ICチップ11への供給電圧、クロック周波数、温度や光といった外部条件等を検出し、検出結果が、予め設定された正常な範囲内にあるか否かを監視する。
【0028】
RAM22は、CPU28が各種の処理を実行する上で必要な各種データなどを適宜記憶する。
【0029】
EEPROM23、ROM24は、各種プログラムを記憶する。
【0030】
暗号エンジン25は、乱数発生器26が発生した乱数を用いて、リーダライタ等の他の装置とICカードとの間で送受信されるデータ、EEPROM23に記憶されたデータ等の各種データをAES(Advanced Encryption Standard)方式で暗号化または復号化する。また、暗号エンジン25は、暗号化又は復号化に際し、鍵の生成、および相互認証等を行う。
【0031】
乱数発生器26は、暗号エンジン25で用いる乱数を発生させ、内部バス29を介して暗号エンジン25に供給する。
【0032】
I/O27は、他の装置とデータの送受信を行う。I/O27は、例えば、リーダライタと電磁波を利用して非接触でデータの送受信を行い、CPU28から内部バス29を介して供給されるデータをリーダライタに送信したり、リーダライタからのデータを受信して内部バス29を介してCPU28等に供給する。
【0033】
CPU28は、EEPROM23またはROM24に記録されているプログラムに従って各種の処理を実行する。または、CPU28は、RAM22にロードされたプログラムに従って各種の処理を実行する。RAM22にはまた、CPU28が各種の処理を実行する上で必要なデータなども適宜記憶される。
【0034】
図1に示されるICチップ11は、攻撃を検出する検出手法として、例えば、次の3通りの検出手法を採用することができる。
【0035】
第1の検出手法は、センサ21が外部条件等から攻撃を検出する手法である。上述したように、センサ21は、ICチップ11への供給電圧、クロック周波数、温度や光などの外部条件等を検出し、その検出結果が、予め設定された正常な範囲内にあるか否かを監視する。そして、センサ21は、これらの外部条件等の検出値が異常値を示した場合には、ICチップ11が攻撃を受けたと判断する。
【0036】
第2の検出手法は、CPU28が重要な処理の検算結果から攻撃を検出する手法である。CPU28は、重要な処理に対しては検算を行い、通常の演算結果と検算の演算結果が一致するかを検証する。そして、CPU28は、通常の演算結果と検算の演算結果が一致しなかった場合には、ICチップ11が攻撃を受けたと判断する。
【0037】
第3の検出手法は、CPU28が関数の戻り値から攻撃を検出する手法である。CPU28は、予め設定された関数の戻り値が正常であるかを検証する。そして、CPU28は、戻り値が異常な値を示した場合には、ICチップ11が攻撃を受けたと判断する。
【0038】
なお、第1乃至第3の検出手法は、個別に単体で用いてもよいし、任意の種類の任意の個数の検出手法を組み合わせて用いてもよい。さらに、ここでは説明しない別の検出手法を、単体で、又は、第1乃至第3の検出手法を含む他の検出手法のうち、任意の種類の任意の個数の検出手法と組み合せてもよい。要するに、ICチップ11が攻撃を検出する手法は、ICチップ11に対する攻撃を検出できる手法であれば足り、1以上の任意の種類の任意の個数の手法を適宜組み合わせて用いることができる。
【0039】
ICチップ11は、これらの手法により攻撃を検出した場合、攻撃を検出する毎に重要な処理の検算回数のカウント値を1ずつインクリメントすることによって、攻撃が成功してしまう難易度を上げる。以下、検算回数が増やされる重要な処理として、暗号演算が採用された場合を例に説明する。
【0040】
[検算回数を段階的に増やす例]
図2は、暗号演算の検算回数を段階的に増やす例について説明する図である。
【0041】
図2の左側の図に示されるように、セキュリティレベル1の時、すなわち攻撃が検出されていない通常時には、ICチップ11は、第1暗号演算を実行した後で、その検算を目的として、第1暗号演算と同様の第2暗号演算を実行する。したがって、セキュリティレベル1の場合、検算回数は1回となる。ICチップ11は、第1暗号演算と第2暗号演算の2つの演算結果を比較する比較処理を実行し、演算結果が一致した場合には攻撃を受けていないと判断し、一致しない場合には攻撃を受けたと判断する。
【0042】
換言すると、攻撃者にとってすれは、第1暗号演算と第2暗号演算の両方を攻撃して同一エラーを発生させることができれば、比較処理の結果が一致してしまうので、ICチップ11に攻撃を受けていないと判断させることができる。この場合、ICチップ11に気付かれないうちに秘密情報が攻撃者に入手されてしまう。しかしながら、1回の攻撃のみで、連続して2回の同一エラーを発生させることは困難であるし、また、1回のエラー結果のみから秘密情報が漏洩してしまうことは非常にまれである。このため、通常、攻撃者は、ICチップ11に何度も攻撃を検出されながらも、複数回にわたって攻撃を執拗に繰り返すことになる。
【0043】
そこで、セキュリティレベル1の状態で攻撃が1度検出されると、ICチップ11は、図1の中央の図に示されるように、セキュリティレベルを2にあげて、暗号演算の検算回数を2回に増やす。すなわち、ICチップ11は、第1暗号演算を実行した後で、その検算として、第2暗号演算及び第3暗号演算を行う。そして、ICチップ11は、第1暗号演算乃至第3暗号演算の3つの演算結果を比較する比較処理を実行し、3つの演算結果が全て一致した場合には攻撃を受けていないと判断し、3つの演算結果から選択された2つの演算結果の組み合わせのうち、1つの組み合わせでも一致しない場合には攻撃を受けたと判断する。
【0044】
換言すると、攻撃者にとっては、ICチップ11に攻撃を受けていないと判断させるためには、セキュリティレベル1では、連続して同一エラーを発生させる回数は2回必要があったところ、セキュリティレベル2になると、当該回数は3回に増えることになる。このように、セキュリティレベル1からセキュリティレベル2になると、検算回数が2回から3回に増加し、その結果、攻撃の難易度(すなわち、秘密情報の入手に失敗する確率)が高くなる。
【0045】
さらに、セキュリティレベル2の状態で攻撃が検出されると、ICチップ11は、図1の右側に示されるように、セキュリティレベルを3にあげて、暗号演算の検算回数を3回に増やす。すなわち、ICチップ11は、第1暗号演算を実行した後で、その検算として、第2暗号演算乃至第4暗号演算を行う。そして、ICチップ11は、第1暗号演算乃至第4暗号演算の4つの演算結果を比較する比較処理を実行し、4つの演算結果が全て一致した場合には攻撃を受けていないと判断し、4つの演算結果から選択された2つの演算結果の組み合わせのうち、1つの組み合わせでも一致しない場合には攻撃を受けたと判断する。
【0046】
換言すると、攻撃者にとっては、ICチップ11に攻撃を受けていないと判断させるためには、セキュリティレベル2では、連続して同一エラーを発生させる回数は3回必要があったところ、セキュリティレベル3になると、当該回数は4回に増えることになる。このように、セキュリティレベル2からセキュリティレベル3になると、検算回数が3回から4回に増加し、その結果、攻撃の難易度(すなわち、秘密情報の入手に失敗する確率)が高くなる。
【0047】
このように、攻撃が検出される毎に、セキュリティレベルが上がり、その分だけ検算回数が増加していくので、その結果、攻撃の難易度が向上し、攻撃者が秘密情報を入手できる確率は低下していく。
【0048】
なお、当然のことながら、セキュリティの上昇毎に増加させる検算回数は1回ずつに限定されず、任意の回数を採用することができる。
【0049】
一方、検算回数が増加すると、その分だけ、ICチップ11の処理速度が低下する。したがって、ICチップ11は、所定の条件が満たされた場合には検算回数を減らすことで、自己の処理速度の低下を抑制する。ここで、所定の条件として、例えば、次の2通りの条件のうち一方または両者の組み合わせを採用することができる。
【0050】
第1の条件として、攻撃検出から所定時間が経過したことという条件を採用することができる。すなわち、攻撃検出から所定時間、例えば30分が経過する毎に、第1の条件が満たされたとして検算回数が1回ずつ減らされる。
【0051】
第2の条件として、既定処理の実行が成功したことという条件を採用することができる。すなわち、規定処理、例えば相互認証処理における相互認証コマンドに従った処理の実行が成功した場合、条件が満たされたとして検算回数が1回減らされる。なお、既定処理としては、相互認証コマンドの実行に限定されず、例えば、検算回数初期化コマンドに従った処理等、その他ICチップ11が行う各種各様の処理を実行することができる。
【0052】
このように、第1の条件や第2の条件といったように、所定の条件が満たされた場合に検算回数を減らすことで、ICチップ11の処理速度の低下を抑制することができる。なお、所定の条件は、上述の第1及び第2の条件に限定されない。
【0053】
以下、さらに、このような第1の条件と第2の条件のうち、第1の条件の詳細について説明する。
【0054】
電力が常時供給される装置であれば、当該装置内に搭載されたクロックカウンタに基づいて、所定時間を計時することは容易である。しかしながら、従来のICカードは、リーダライタ等に接近している時にしか電力が供給されないので、所定時間を計測するのは非常に困難であった。
【0055】
そこで、本実施形態のICチップ11を搭載したICカードは、内蔵するコンデンサの充放電時間を用いて所定時間を計測することで、第1の条件が採用可能に構成されている。
【0056】
本実施形態のICカードには、所定時間の計測が可能となるように設計された充放電回路が搭載されている。このような充放電回路を用いた所定時間の計測について図3と図4を用いて説明する。
【0057】
[所定時間の計測について]
図3は、本実施形態のICカードに搭載された充放電回路の原理について説明する図である。
【0058】
図3Aは、リーダライタ等が接近してコンデンサが充電する場合の充放電回路41の等価回路図である。
【0059】
充放電回路41は、コンデンサC、及び抵抗R1,R2により構成されるCR回路である。即ち、コンデンサCと抵抗R2との並列接続のうち、一端が接地され、他端には、入力端が接続される。ICカードがリーダライタ等に接近すると、入力端に電源Erが接続され、当該入力端と抵抗R1の一端とが接続された状態、換言すると、入力端と抵抗R1を介して出力端とを結ぶ仮想スイッチ42がオン状態になったのと等価な状態になる。この場合、リーダライタ等から供給される電力(等価回路上は電源Erから供給される電力)は、コンデンサCの充電に用いられ、その結果、所定の電荷量Qの電荷が蓄えられる。
【0060】
図3Bは、リーダライタ等が離間してコンデンサが放電する場合の充放電回路41の等価回路図である。
【0061】
リーダライタ等がICカードから離間すると、図3Bに示すように、入力端と抵抗R1を介して出力端とを結ぶ仮想スイッチ42がオフ状態になったのと等価な状態になる。この場合、コンデンサCに蓄積された所定の電荷量Qの電荷は、出力端側に放電される。
【0062】
図4は、図3の等価回路のコンデンサCの充放電時の電荷量のタイミングチャートである。
【0063】
図4において、縦軸はコンデンサCの電荷量を示し、横軸は時間を示している。
【0064】
ICカードがリーダライタ等に接近して、仮想スイッチがオン状態に切り替えられた時刻、即ちコンデンサCへの充電が開始した時刻が、基準時刻0とされている。
【0065】
図4に示すように、基準時刻0にコンデンサCへの充電が開始されると、その後電荷量は即座に上昇し、電荷量Qmaxまで到達する。この段階で、ICカードがリーダライタから離間すると、放電が開始され、電荷量は降下していく。
【0066】
そこで、本実施形態では、放電開始(充電時間は非常に短いので無視すれば時刻0)から電荷量が所定の閾値Lよりも小さくなる時刻t1までの時間Trが、上述した所定時間、例えば30分となるように、充放電回路41が設計される。例えば、充放電回路41はCR回路であるため、コンデンサCの放電の応答特性は一次遅れとみなすことができ、所定の閾値Lを電荷量Qmaxの63%の電荷量とすると、当該閾値Lに到達するまでの時間Trが時定数となるため、時間Trは、コンデンサCの静電容量と抵抗R2の抵抗値の積によって容易に求めることができる。換言すると、設計者は、時間Trが所定時間(例えば30分)となるように、充放電回路41のコンデンサCの静電容量と抵抗R2の抵抗値とを容易に設計することができる。なお、このような閾値Lと所定時間は、例示に過ぎない。
【0067】
本実施形態のICカードは、このように所定時間を計測可能な充放電回路41を搭載しているので、攻撃が終了した後の検算回数を減らすための第1の条件を採用することができる。即ち、本実施形態のICカードは、充放電回路41により攻撃検出から所定時間が計測されると、第1の条件が満たされたとして、検算回数を1回減らす。
【0068】
[CPUの機能的構成例]
図5は、図1のCPU28が有する機能のうち、セキュリティ対策の強度を段階的に調整するための各種機能を実現させるための機能的構成例を示すブロック図である。
【0069】
CPU28は、電源起動部61、強度判定部62、メイン処理部63、攻撃検出部64、強度調整部65、充放電部66、動作停止部67、電荷量検出部68、規定処理部69、および規定処理監視部70を有している。
【0070】
電源起動部61は、ICカードがリーダライタ等に接近すると、仮想的に電源を起動させ、ICカードがリーダライタ等から離間すると、仮想的に電源を落とす。ここで、仮想的に電源を起動するとは、充放電回路41を図3Aに示す等価回路として機能させることを意味する。一方、仮想的に電源を落とすとは、充放電回路41を図3Bに示す等価回路として機能させることを意味する。
【0071】
強度判定部62は、現在のICカードに設定されているセキュリティ対策の強度として、検算回数を判定する。
【0072】
メイン処理部63は、ICチップ11が実行すべき処理のコマンドを受信して実行する。
【0073】
攻撃検出部64は、ICチップ11に対する攻撃を検出する。すなわち、攻撃検出部64は、上述した攻撃を検出する第1乃至第3の検出手法のうちの少なくとも1つの検出手法に従って、ICチップ11に対する攻撃を検出する。
【0074】
強度調整部65は、セキュリティ対策の強度の設定の調整、すなわち、検算回数の増減の調整を行う。
【0075】
充放電部66は、図3の充放電回路41に相当し、電源起動部61により仮想的に電源が起動されるとコンデンサCの充電を開始し、電源起動部61により仮想的に電源が落とされるとコンデンサCの放電を開始する。
【0076】
動作停止部67は、CPU28の動作、特にメイン処理部63の動作を停止させる制御を実行する。
【0077】
電荷量検出部68は、充放電部66(すなわち、図3の充放電回路41)のコンデンサCの電荷量を検出し、所定の閾値Lと比較することによって、検算回数を減らすための第1の条件が満たされたか否かを判定する。すなわち、電荷量検出部68は、コンデンサの電荷量が所定の閾値Lよりも小さくなったことを検出したとき、第1の条件が満たされて所定時間が経過したと判断する。
【0078】
規定処理部69は、検算回数を減らすための第2の条件として採用される規定処理を実行する。このような規定処理としては、例えば、相互認証コマンドや検算回数初期化コマンドの実行等の処理を採用することができる。
【0079】
規定処理監視部70は、規定処理部69による規定処理の実行が成功したかを監視する。
【0080】
次に、検算回数を減らす所定の条件として、第1の条件、すなわち攻撃検出から所定時間の経過が採用された場合のCPU28が実行する処理(以下、第1のセキュリティ対策強度調整処理と称する)について説明する。
【0081】
[第1のセキュリティ対策強度調整処理]
図6は、第1のセキュリティ対策強度調整処理が開始される状態を示す図である。
【0082】
ICチップ11を含む非接触型のICカード81は、リーダライタ82に接近すると、電磁誘導によってリーダライタ82から電力の供給を受ける。すると、図7に示される第1のセキュリティ対策強度調整処理が開始される。
【0083】
図7は、第1のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【0084】
ステップS11において、電源起動部61は、リーダライタ82から供給された電力により仮想的に電源を起動する。
【0085】
ステップS12において、強度判定部62は、検算回数が初期値であるかを判定する。なお、検算回数の初期値は、図2を用いて上述したセキュリティレベル1の検算回数である1回が採用されている。
【0086】
検算回数が初期値の1回でない場合、ステップS12においてNOであると判定されて、処理はステップS20に進む。なお、ステップS20以降の処理については後述する。
【0087】
これに対して、検算回数が初期値の1回である場合、ステップS12においてYESであると判定されて、処理はステップS13に進む。すなわち、今までに一度も攻撃が検出されていないか、または攻撃が検出された後に、後述するステップS21で検算回数が初期値に戻された後に攻撃が再検出されていない場合、ステップS12においてYESであると判定されて、処理はステップS13に進む。
【0088】
ステップS13において、メイン処理部63は、コマンド待ち受け状態にする。すなわち、メイン処理部63は、リーダライタ82からコマンドが送信されるのを待つ。
【0089】
ステップS14において、メイン処理部63は、コマンドを受信したかを判定する。
【0090】
コマンドが受信されない場合、ステップS14においてNOであると判定され、処理はステップS13に戻され、それ以降の処理が繰り返される。すなわち、コマンドを受信するまでの間、ステップS13,S14のループ処理が繰り返される。
【0091】
その後、コマンドを受信した場合、ステップS14においてYESであると判定されて、処理はステップS15に進む。
【0092】
ステップS15において、メイン処理部63は、受信したコマンドを実行する。
【0093】
ステップS16において、攻撃検出部64は、攻撃を検出したかを判定する。すなわち、攻撃検出部64は、上述した第1乃至第3の検出手法等により、ICチップ11に対する攻撃の検出を試みる。
【0094】
攻撃が検出されていない場合、ステップS16においてNOであると判定され、処理はステップS13に戻され、それ以降の処理が繰り返される。すなわち、攻撃を検出するまでの間、ステップS13乃至S16のループ処理が繰り返される。
【0095】
その後、攻撃が検出された場合、ステップS16においてYESであると判定されて、処理はステップS17に進む。
【0096】
ステップS17において、強度調整部65は、検算回数を1回増やす。すなわち、強度調整部65は、検算回数を初期値の1回から2回に増やし、セキュリティ対策の強度を上げる。
【0097】
ステップS18において、充放電部66は、コンデンサを充電する。すなわち、充放電部66は、攻撃検出からの所定時間の経過を計測するために、コンデンサを充電する
【0098】
ステップS19において、動作停止部67は、ICチップ11の動作を停止する。
【0099】
これにより、第1のセキュリティ対策強度調整処理は終了する。
【0100】
一方、ステップS12において検算回数が初期値でない場合、NOであると判定されて、処理はステップS20に進む。すなわち、攻撃が検出されて検算回数が増やされた後に、ICカードがリーダライタ等に接近されると、再度第1のセキュリティ対策強度調整処理が開始するので、このような場合検算回数は初期値の1回ではないと判定され、即ちステップS12においてNOであると判定されて、処理はステップS20に進む。
【0101】
ステップS20において、電荷量検出部68は、コンデンサの電荷量が閾値Lより小さいかを判定する。すなわち、電荷量検出部68は、攻撃検出から所定時間が経過したかを判定する。
【0102】
コンデンサの電荷量が閾値Lをまだ下回っていない場合、すなわち、前回の攻撃検出から所定時間が経過していない場合、ステップS20においてNOであると判定されて、処理はステップS13に進む。すなわち、検算回数は減らされないまま、メイン処理が開始される。
【0103】
これに対して、コンデンサの電荷量が閾値Lを下回っている場合、すなわち、前回の攻撃検出から所定時間が経過している場合、ステップS20においてYESであると判定されて、処理はステップS21に進む。
【0104】
ステップS21において、強度調整部65は、検算回数を1回減らす。例えば、強度調整部65は、ステップS12の時点で検算回数が3回であった場合には、検算回数を3回から2回に減らす。また例えば、強度調整部65は、ステップS12の時点で検算回数が2回であった場合には、検算回数を2回から1回に減らす。
【0105】
ステップS22において、強度判定部62は、検算回数が初期値に戻っているかを判定する。
【0106】
検算回数が初期値である1回に戻っている場合、ステップS22においてYESであると判定されて、処理はステップS13に進む。
【0107】
これに対して、検算回数が初期値である1回に戻っていない場合、ステップS22においてNOであると判定されて、処理はステップS23に進む。例えば、ステップS12の時点で検算回数が3回であった場合には、ステップS21の処理で検算回数が2回になるため、強度判定部62は、ステップS22で検算回数が初期値に戻っていないと判定する。
【0108】
ステップS23において、充放電部66は、コンデンサを充電する。すなわち、充放電部66は、所定時間の経過の計測をリセットするために、コンデンサを再度充電する。
【0109】
その後、処理はステップS13に進む。ステップS13乃至ステップS16の処理については繰り返しになるので、その説明を省略する。
【0110】
ステップS17において、強度調整部65は、検算回数を増やす。すなわち、ステップS23の処理でコンデンサが充電され、所定時間の経過が計測されている間に攻撃が検出された場合にも、検算回数は増やされる。
【0111】
ステップS18において、充放電部66は、コンデンサを充電する。すなわち、充放電部66は、所定時間の経過が計測されている間に攻撃が検出された場合、再度攻撃検出からの所定時間の経過を計測するために、コンデンサを充電する。
【0112】
ステップS19において、動作停止部67は、ICチップ11の動作を停止する。
【0113】
これにより、第1のセキュリティ対策強度調整処理は終了する。
【0114】
なお、ステップS18のコンデンサを充電する処理は、ステップS15のコマンドの実行中に実行されてもよい。これにより、攻撃者によってコンデンサの充電中に電力の供給が停止され、所定時間を待たずに検算回数が初期値に戻されることを回避することができる。
【0115】
次に、検算回数を減らす所定の条件として、第2の条件、すなわち既定処理の実行が成功したことという条件が採用された場合のCPU28が実行する処理(以下、第2のセキュリティ対策強度調整処理と称する)について図8を用いて説明する。
【0116】
[第2のセキュリティ対策強度調整処理]
図8は、第2のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【0117】
ICチップ11を含む非接触型のICカード81は、リーダライタ82に接近すると、電磁誘導によってリーダライタ82から電力の供給を受ける。すると、図8に示される第2のセキュリティ対策強度調整処理が開始される。
【0118】
ICカード81がリーダライタ82に接近すると、第2のセキュリティ対策強度調整処理が開始される。
【0119】
ステップS31において、電源起動部61は、リーダライタ82から供給された電力により仮想的に電源を起動する。
【0120】
ステップS32において、メイン処理部63は、コマンド待ち受け状態にする。すなわち、メイン処理部63は、リーダライタ82からコマンドが送信されるのを待つ。
【0121】
ステップS33において、メイン処理部63は、コマンドを受信したかを判定する。
【0122】
コマンドが受信されない場合、ステップS33においてNOであると判定され、処理はステップS32に戻され、それ以降の処理が繰り返される。すなわち、コマンドを受信するまでの間、ステップS32,S33のループ処理が繰り返される。
【0123】
その後、コマンドを受信した場合、ステップS33においてYESであると判定されて、処理はステップS34に進む。
【0124】
ステップS34において、メイン処理部63は、受信したコマンドが規定処理のコマンドであるかを判定する。
【0125】
受信したコマンドが規定処理のコマンドではない場合、ステップS34においてNOであると判定されて、処理はステップS35に進む。
【0126】
ステップS35において、メイン処理部63は、受信したコマンドを実行する。その後、処理はステップS39に進む。なお、ステップS39以降の処理については後述する。
【0127】
これに対して、ステップS34において、受信したコマンドが規定処理のコマンドである場合、YESであると判定されて、処理はステップS36に進む。
【0128】
ステップS36において、規定処理部69は、規定処理のコマンドを実行する。
【0129】
ステップS37において、規定処理監視部70は、規定処理の実行に成功したかを判定する。
【0130】
規定処理の実行に成功した場合、ステップS37においてYESであると判定されて、処理はステップS38に進む。
【0131】
ステップS38において、強度調整部65は、検算回数を初期値の1回に戻す。その後、処理はステップS32に戻され、それ以降の処理が繰り返される。すなわち、規定処理の実行に成功しなくなるまでの間、ステップS32乃至S38のループ処理が繰り返される。
【0132】
その後、規定処理の実行に成功しなかった場合、処理はステップS37においてNOであると判定されて、処理はステップS39に進む。
【0133】
ステップS39において、攻撃検出部64は、攻撃を検出したかを判定する。すなわち、攻撃検出部64は、上述した第1乃至第3の検出手法等により、ICチップ11に対する攻撃の検出を試みる。
【0134】
攻撃が検出されていない場合、ステップS39においてNOであると判定されて、処理はステップS32に戻され、それ以降の処理が繰り返される。すなわち、攻撃を検出するまでの間、ステップS32乃至S39のループ処理が繰り返される。
【0135】
その後、攻撃が検出された場合、ステップS39においてYESであると判定されて、処理はステップS40に進む。
【0136】
ステップS40において、強度調整部65は、検算回数を1回増やす。すなわち、強度調整部65は、検算回数を1回増やし、セキュリティ対策の強度を上げる。
【0137】
ステップS41において、動作停止部67は、ICチップ11の動作を停止する。
【0138】
これにより、第2のセキュリティ対策強度調整処理は終了する。
【0139】
以上、説明したように、第1実施形態においては、攻撃が検出される毎に検算回数が増えるので、セキュリティレベルが上がり、攻撃の難易度が向上して攻撃者が秘密情報を入手できる確率は低下していく。また、所定の条件が満たされた場合、検算回数が減るので処理速度を維持することができる。
【0140】
<2.第2実施形態>
第1実施形態においては、セキュリティ対策として重要な処理の検算が採用され、セキュリティ対策の強度を上げる場合、重要な処理の検算回数が増やされた。しかしながら、セキュリティ対策は、重要な処理の検算のみに限定されず、その他のセキュリティ対策を採用することも、また、それらと組み合わせて採用することもできる。これにより、セキュリティ対策が重要な処理の検算のみの場合と比較して、より一段とセキュリティ対策強度が上がる。
【0141】
[セキュリティ対策の種類と強度]
図9は、セキュリティ対策の種類と強度の関係について説明する図である。
【0142】
図9に示されるように、セキュリティ対策の種類として、重要な処理の検算、タイミングジッタの挿入、ダミー演算、セキュリティ対策の強度を下げるまでの時間、および規定処理の成功回数を採用することができる。
【0143】
検算は、ICチップ11が行う所定の演算と同じ演算を行い、両者の演算結果の比較処理の結果が一致することを確認する。検算回数を増やすことで、比較処理の結果を一致させることを困難にすることができる。したがって、セキュリティ対策の強度を上げる場合、重要な処理の検算回数を増やすことで、比較処理の結果を一致させて気付かれないうちに秘密情報を入手する攻撃を、より困難にすることができる。
【0144】
タイミングジッタは、イベントタイミングのゆらぎであり、タイミングジッタを挿入することで、処理時間をランダム化することができる。したがって、セキュリティ対策の強度を上げる場合、タイミングジッタの挿入量を増やすことにより、クリティカルポイントを狙った攻撃をより困難にすることができる。
【0145】
ダミー演算は、ICチップ11が本来行うべき所定の演算とは異なる演算であり、ランダムに挿入することで、本来行うべき演算のタイミングを推定しにくくすることができる。したがって、セキュリティ対策強度を上げる場合、ダミー演算を挿入することにより、演算が実行される時間を測定して秘密情報を入手する攻撃をより困難にすることができる。
【0146】
セキュリティ対策の強度を下げるまでの時間は、第1実施形態で、セキュリティ対策の強度を段階的に下げる場合に第1の条件として採用された「所定時間の経過」における所定時間のことである。すなわち、充放電回路41のコンデンサCの電荷量が所定の閾値Lよりも小さくなるまでの時間が所定時間となるように、静電容量Cと抵抗Rの抵抗値の積が設計される。セキュリティ対策の強度を下げるまでの時間を長くすることで、より長くセキュリティ対策の強度が高い状態を保つことができる。したがって、セキュリティ対策の強度を上げる場合、セキュリティ対策の強度を下げるまでの時間を長くすることで、攻撃がより困難である時間を長くすることができる。
【0147】
規定処理の成功回数は、第1実施形態で、セキュリティ対策の強度を段階的に下げる場合に第2の条件として採用された「既定処理の実行の成功」の回数のことである。規定処理の成功回数を増やすことで、セキュリティ対策の強度を下げる条件を厳しくすることができる。したがって、セキュリティ対策の強度を上げる場合、規定処理の成功回数を増やすことで、攻撃がより困難である状態を保つことができる。
【0148】
以上、説明した複数のセキュリティ対策の強度が、単独または複数組合わされて、攻撃が検出される毎に段階的に調整される。
【0149】
例えば、図9に示されるように、セキュリティレベル1(すなわち、攻撃が検出されていない通常時)においては、検算回数を1回、タイミングジッタの挿入量を10%、ダミー演算の挿入は無、セキュリティ対策の強度を下げるまでの時間を10分、規定処理の成功回数を1回とする。
【0150】
セキュリティレベル2(すなわち、攻撃の累積検出回数が1回)においては、検算回数を2回、タイミングジッタの挿入量を20%、ダミー演算の挿入は無、セキュリティ対策の強度を下げるまでの時間を30分、規定処理の成功回数を2回とする。
【0151】
セキュリティレベル3(すなわち、攻撃の累積検出回数が2回)においては、検算回数を3回、タイミングジッタの挿入量を30%、ダミー演算の挿入は有、セキュリティ対策の強度を下げるまでの時間を60分、規定処理の成功回数を3回とする。
【0152】
次に、このように複数のセキュリティ対策を組み合わせた場合におけるセキュリティレベルを下げる条件として、第1の条件(すなわち、攻撃検出から所定時間が経過したことという条件)が採用された場合の処理(以下、第3のセキュリティ対策強度調整処理)について図10を用いて説明する。
【0153】
そして、このように複数のセキュリティ対策を組み合わせた場合におけるセキュリティレベルを下げる条件として、第2の条件(すなわち、既定処理の実行が成功したことという条件)が採用された場合の処理(以下、第4のセキュリティ対策強度調整処理)について図11を用いて説明する。
【0154】
はじめに、セキュリティレベルを下げる条件として、第1の条件、すなわち攻撃検出から所定時間が経過したことという条件が採用された場合の第3のセキュリティ対策強度調整処理について図10を用いて説明する。
【0155】
[第3のセキュリティ対策強度調整処理]
図10は、第3のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【0156】
第3のセキュリティ対策強度調整処理の各処理は、図7の第1のセキュリティ対策強度調整処理の各処理と基本的に同様の処理である。したがって、同様の処理の説明は繰り返しになるので省略し、異なる処理についてのみ説明する。
【0157】
ステップS51において、電源起動部61は、リーダライタ82から供給された電力により仮想的に電源を起動する。
【0158】
ステップS52において、強度判定部62は、セキュリティレベルが初期値であるかを判定する。なお、セキュリティレベルの初期値は1であるとする。
【0159】
セキュリティレベルが初期値の1でない場合、ステップS52においてNOであると判定されて、処理はステップS60に進む。なお、ステップS60以降の処理については後述する。
【0160】
これに対して、セキュリティレベルが初期値の1である場合、ステップS52においてYESであると判定されて、処理はステップS53に進む。
【0161】
ステップS53において、メイン処理部63は、コマンド待ち受け状態にする。その後のステップS54乃至S56の処理については、図7のステップS14乃至S16の処理と同様であり、繰り返しになるのでその説明を省略する。
【0162】
ステップS56において攻撃検出部64が攻撃を検出した場合、ステップS57において、強度調整部65は、セキュリティレベルを1上げる。すなわち、強度調整部65は、セキュリティレベルを1から2に上げて、検算回数を2回、タイミングジッタの挿入量を20%、ダミー演算の挿入を無とする。
【0163】
ステップS58以降の処理は、図7のステップS18以降の処理と同様であり、繰り返しになるのでその説明を省略する。
【0164】
一方、ステップS52においてセキュリティレベルが初期値の1でない場合、NOであると判定されて、処理はステップS60に進む。すなわち、攻撃が検出されてセキュリティレベルが上げられた後に、ICカード81がリーダライタ82等に接近されると、再度第3のセキュリティ対策強度調整処理が開始する。このような場合、セキュリティレベルは初期値の1ではないと判定され、即ちステップS52においてNOであると判定されて、処理はステップS60に進む。
【0165】
ステップ61において、電荷量検出部68は、コンデンサの電荷量が閾値Lより小さいかを判定する。
【0166】
コンデンサの電荷量が閾値Lをまだ下回っていない場合、ステップS60においてNOであると判定されて、処理はステップS53に進む。
【0167】
これに対して、コンデンサの電荷量が閾値Lを下回っている場合、ステップS60においてYESであると判定されて、処理はステップS60に進む。
【0168】
ステップS61において、強度調整部65は、セキュリティレベルを1下げる。例えば、強度調整部65は、ステップS52の時点でセキュリティレベルが3であった場合には、セキュリティレベルを3から2に下げる。また例えば、強度調整部65は、ステップS52の時点でセキュリティレベルが2であった場合には、セキュリティレベルを2から1に下げる。
【0169】
ステップS62において、強度判定部62は、セキュリティレベルが初期値に戻っているかを判定する。
【0170】
セキュリティレベルが初期値である1に戻っている場合、ステップS61においてYESであると判定されて、処理はステップS53に進む。
【0171】
これに対して、セキュリティレベルが初期値である1に戻っていない場合、ステップS61においてNOであると判定されて、処理はステップS62に進む。例えば、ステップS52の時点でセキュリティレベルが3であった場合には、ステップS60の処理でセキュリティレベルが2になるため、強度判定部62は、ステップS62でセキュリティレベルが初期値に戻っていないと判定する。
【0172】
ステップS63以降の処理の説明は、繰り返しになるので省略する。
【0173】
第3のセキュリティ対策強度調整処理は、以上のように実行される。
【0174】
次に、セキュリティレベルを下げる条件として、第2の条件、すなわち既定処理の実行が成功したことという条件が採用された場合の第4のセキュリティ対策強度調整処理について図11を用いて説明する。
【0175】
[第4のセキュリティ対策強度調整処理]
図11は、第4のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【0176】
第4のセキュリティ対策強度調整処理の各処理は、図8の第2のセキュリティ対策強度調整処理の各処理と基本的に同様の処理である。したがって、同様の処理の説明は繰り返しになるので省略し、異なる処理についてのみ説明する。
【0177】
ステップS71において、電源起動部61が、リーダライタ82から供給された電力により仮想的に電源を起動すると、ステップS72において、メイン処理部63は、コマンド待ち受け状態にする。
【0178】
その後のステップS72乃至S75の処理については、図8のステップS32乃至S35の処理と同様であり、繰り返しになるのでその説明を省略する。
【0179】
ステップS74においてメイン処理部63が規定処理のコマンドを受信した場合、ステップS76において、規定処理部69は、規定処理のコマンドを既定の回数実行する。すなわち、セキュリティレベルが2の場合には2回、セキュリティレベルが3の場合には3回、既定の処理を実行する。
【0180】
ステップS77において、規定処理監視部70は、規定処理の実行に規定の回数成功したかを判定する。
【0181】
規定処理の実行に規定の回数成功した場合、ステップS77においてYESであると判定されて、処理はステップS78に進む。
【0182】
ステップS78において、強度調整部65は、セキュリティレベルを初期値の1に戻す。その後、処理はステップS72に戻され、それ以降の処理が繰り返される。すなわち、規定処理の実行に規定の回数成功しなくなるまでの間、ステップS72乃至S78のループ処理が繰り返される。
【0183】
その後、規定処理の実行に規定の回数成功しなかった場合、処理はステップS77においてNOであると判定されて、処理はステップS79に進む。
【0184】
ステップS79において、攻撃検出部64は、攻撃を検出したかを判定する。すなわち、攻撃検出部64は、上述した第1乃至第3の検出手法により、ICチップ11に対する攻撃の検出を試みる。
【0185】
攻撃が検出されていない場合、ステップS79においてNOであると判定されて、処理はステップS72に戻され、それ以降の処理が繰り返される。すなわち、攻撃を検出するまでの間、ステップS72乃至S79のループ処理が繰り返される。
【0186】
その後、攻撃が検出された場合、ステップS79においてYESであると判定されて、処理はステップS80に進む。
【0187】
ステップS80において、強度調整部65は、セキュリティレベルを1上げる。
【0188】
ステップS81において、動作停止部67は、ICチップ11の動作を停止する。
【0189】
これにより、第4のセキュリティ対策強度調整処理は終了する。
【0190】
なお、セキュリティ対策は上述の例に限定されず、さらに、その組み合わせも、セキュリティレベルの増減数も上述の例に限定されない。
【0191】
以上、説明したように、第2実施形態においては、複数のセキュリティ対策を組み合わせて採用することができるので、1つのセキュリティ対策を採用するよりもさらにセキュリティ対策強度が上がる。
【0192】
<3.第3実施形態>
第1及び第2実施形態においては、攻撃が検出される毎、及び所定の条件が満たされる毎にセキュリティ対策強度が段階的に調整された。しかしながら、セキュリティ対策強度の調整は、ICチップ11が実行する全ての関数に対して行われずに、攻撃が検出された関数のみに行われてもよい。
【0193】
例えば、暗号化処理を行っている関数Aと認証処理を行っている関数Bがある場合、それぞれの関数に、重要な処理の検算回数を決定するセキュリティレベルパラメータが保持される。そして、攻撃が検出された関数が保持するセキュリティレベルパラメータの値のみが1増やされる。例えば、関数Aにのみ攻撃が検出された場合、関数Aが保持するセキュリティレベルパラメータ(Security_Level_A)の値のみが1増やされる。また例えば、関数Bにのみ攻撃が検出された場合、関数Bが保持するセキュリティレベルパラメータ(Security_Level_B)の値のみが1増やされる。関数Aと関数Bの両方に攻撃が検出された場合には、両方の関数が保持するセキュリティパラメータの値がそれぞれ1増やされる。
【0194】
これにより、検算回数が増える関数は限定される。したがって、ICチップ11の処理速度が低下するのを抑制し、ユーザビリティを維持することができる。以下、検算回数が増やされる重要な処理を暗号演算として説明する。
【0195】
このように、攻撃を検出した関数にのみセキュリティ対策強度の調整を行う場合に、CPU28が実行する処理(以下、第5のセキュリティ対策強度調整処理と称する)について図12を用いて説明する。
【0196】
[第5のセキュリティ対策調整処理]
図12は、第5のセキュリティ対策強度調整処理の流れを説明するフローチャートである。
【0197】
なお、ICチップ11が実行する全ての関数を、関数A,関数Bとする。
【0198】
ICチップ11を含む非接触型のICカード81は、リーダライタ82に接近すると、電磁誘導によってリーダライタ82から電力の供給を受ける。すると、図12に示される第5のセキュリティ対策強度調整処理が開始される。
【0199】
ステップS91において、電源起動部61は、リーダライタ82から供給された電力により仮想的に電源を起動する。
【0200】
ステップS92において、強度判定部62は、全ての関数のセキュリティレベルパラメータの値が初期値であるかを判定する。すなわち、強度判定部62は、関数Aと関数BのセキュリティパラメータであるSecurity_Level_AとSecurity_Level_Bの値が両方とも初期値であるかを判定する。なお、セキュリティレベルパラメータの初期値は1とする。
【0201】
Security_Level_AとSecurity_Level_Bのうちのどちらか一方、または両方の値が初期値の1でない場合、ステップS92においてNOであると判定されて、処理はステップS102に進む。なお、ステップS102以降の処理については後述する。
【0202】
これに対して、Security_Level_AとSecurity_Level_Bの両方の値が初期値の1である場合、ステップS92においてYESであると判定されて、処理はステップS93に進む。すなわち、今までに一度も関数Aと関数Bの両方に攻撃が検出されていないか、または攻撃が検出された関数が、その後、後述するステップS103でセキュリティレベルパラメータが初期値に戻された後に攻撃が再検出されていない場合、ステップS92においてYESであると判定されて、処理はステップS93に進む。
【0203】
ステップS93において、メイン処理部63は、コマンド待ち受け状態にする。すなわち、メイン処理部63は、リーダライタ82から関数Aと関数Bを実行するためのコマンドが送信されるのを待つ。
【0204】
ステップS94において、メイン処理部63は、コマンドを受信したかを判定する。
【0205】
コマンドが受信されない場合、ステップS94においてNOであると判定され、処理はステップS93に戻され、それ以降の処理が繰り返される。すなわち、コマンドを受信するまでの間、ステップS93,S94のループ処理が繰り返される。
【0206】
その後、コマンドを受信した場合、ステップS94においてYESであると判定されて、処理はステップS95に進む。
【0207】
ステップS95において、メイン処理部63は、受信したコマンドを実行する。すなわち、メイン処理部63は、受信したコマンドにより関数Aと関数Bの処理を実行する。
【0208】
ステップS96において、攻撃検出部64は、関数Aの攻撃検出処理を実行する。なお、関数Aの攻撃検出処理については、図13を用いて後述する。
【0209】
ステップS97において、攻撃検出部64は、関数Bの攻撃検出処理を実行する。なお、関数Bの攻撃検出処理については、図14を用いて後述する。
【0210】
なお、ステップS96とステップS97の処理は並行して行われる。
【0211】
図13は、関数Aの攻撃検出処理の流れを説明するフローチャートである。
【0212】
ステップS121において、攻撃検出部64は、Security_Level_Aの値が1であるかを判定する。
【0213】
Security_Level_Aの値が1でない場合、ステップS121においてNOであると判定されて、処理はステップS128に進む。なお、ステップS128以降の処理については後述する。
【0214】
Security_Level_Aの値が1である場合、ステップS121においてYESであると判定されて、処理はステップS122に進む。
【0215】
ステップS122において、攻撃検出部64は、第1暗号演算を実行する。
【0216】
ステップS123において、攻撃検出部64は、第2暗号演算を実行する。すなわち、規定処理部69は、第1暗号演算を実行した後で、その検算を目的として、第1暗号演算と同様の第2暗号演算を実行する。
【0217】
ステップS124において、攻撃検出部64は、比較処理を実行する。すなわち、規定処理監視部70は、第1暗号演算と第2暗号演算の2つの演算結果を比較する比較処理を実行する。
【0218】
ステップS125において、攻撃検出部64は、全ての演算結果が一致するかを判定する。
【0219】
全ての演算結果が一致する場合、すなわち第1暗号演算と第2暗号演算の2つの演算結果が一致する場合、ステップS125においてYESであると判定されて、処理はステップS126に進む。すなわち、関数Aは攻撃を受けていないと判断される。
【0220】
ステップS126において、攻撃検出部64は、正常な戻り値を第5のセキュリティ対策強度調整処理に戻す。
【0221】
これにより、関数Aの攻撃検出処理は終了する。すなわち、図12のステップS96の処理が終了し、処理はステップS97に進む。
【0222】
これに対して、全ての演算結果が一致しない場合、すなわち第1暗号演算と第2暗号演算の2つの演算結果が一致せず、攻撃を受けたと判断された場合、ステップS125においてNOであると判定されて、処理はステップS127に進む。
【0223】
ステップS127において、攻撃検出部64は、攻撃検出の戻り値を第5のセキュリティ対策強度調整処理に戻す。
【0224】
これにより、関数Aの攻撃検出処理は終了する。すなわち、図12のステップS96の処理が終了し、処理はステップS97に進む。
【0225】
一方、ステップS121において、Security_Level_Aの値が1でない場合、ステップS121においてNOであると判定されて、処理はステップS128に進む。
【0226】
ステップS128において、攻撃検出部64は、Security_Level_Aの値が2であるかを判定する。
【0227】
Security_Level_Aの値が2でない場合、ステップS128においてNOであると判定されて、処理はステップS134に進む。なお、ステップS134以降の処理については後述する。
【0228】
Security_Level_Aの値が2である場合、ステップS128においてYESであると判定されて、処理はステップS129に進む。
【0229】
ステップS129において、攻撃検出部64は、第1暗号演算を実行する。
【0230】
ステップS130において、攻撃検出部64は、第2暗号演算を実行する。すなわち、規定処理部69は、第1暗号演算を実行した後で、その検算を目的として、第1暗号演算と同様の第2暗号演算を実行する。
【0231】
ステップS131において、攻撃検出部64は、第3暗号演算を実行する。すなわち、規定処理部69は、第1暗号演算と同様の第3暗号演算を実行し再度検算を行う。
【0232】
ステップS132において、攻撃検出部64は、比較処理を実行する。すなわち、規定処理監視部70は、第1暗号演算乃至第3暗号演算の3つの演算結果を比較する比較処理を実行する。
【0233】
ステップS133において、攻撃検出部64は、全ての演算結果が一致するかを判定する。
【0234】
全ての演算結果が一致する場合、すなわち第1暗号演算乃至第3暗号演算の3つの演算結果が一致する場合、ステップS133においてYESであると判定されて、処理はステップS126に進む。すなわち、関数Aは攻撃を受けていないと判断される。
【0235】
ステップS126において、攻撃検出部64は、正常な戻り値を第5のセキュリティ対策強度調整処理に戻す。
【0236】
これにより、関数Aの攻撃検出処理は終了する。すなわち、図12のステップS96の処理が終了し、処理はステップS97に進む。
【0237】
これに対して、全ての演算結果が一致しない場合、すなわち第1暗号演算乃至第3暗号演算の3つの演算結果が全て一致せず、攻撃を受けたと判断された場合、ステップS133においてNOであると判定されて、処理はステップS127に進む。
【0238】
ステップS127において、攻撃検出部64は、攻撃検出の戻り値を第5のセキュリティ対策強度調整処理に戻す。
【0239】
これにより、関数Aの攻撃検出処理は終了する。すなわち、図12のステップS96の処理が終了し、処理はステップS97に進む。
【0240】
一方、ステップS128において、Security_Level_Aの値が2でない場合、すなわち3以上である場合、ステップS128においてNOであると判定されて、処理はステップS134に進む。
【0241】
ステップS134において、攻撃検出部64は、第1暗号演算を実行する。
【0242】
ステップS135において、攻撃検出部64は、第2暗号演算を実行する。すなわち、規定処理部69は、第1暗号演算を実行した後で、その検算を目的として、第1暗号演算と同様の第2暗号演算を実行する。
【0243】
ステップS136において、攻撃検出部64は、第3暗号演算を実行する。すなわち、規定処理部69は、第1暗号演算と同様の第3暗号演算を実行し再度検算を行う。
【0244】
ステップS137において、攻撃検出部64は、第4暗号演算を実行する。すなわち、規定処理部69は、第1暗号演算と同様の第4暗号演算を実行し再度検算を行う。
【0245】
ステップS138において、攻撃検出部64は、比較処理を実行する。すなわち、規定処理監視部70は、第1暗号演算乃至第4暗号演算の4つの演算結果を比較する比較処理を実行する。
【0246】
ステップS139において、攻撃検出部64は、全ての演算結果が一致するかを判定する。
【0247】
全ての演算結果が一致する場合、すなわち第1暗号演算乃至第4暗号演算の4つの演算結果が全て一致する場合、ステップS139においてYESであると判定されて、処理はステップS126に進む。すなわち、関数Aは攻撃を受けていないと判断される。
【0248】
ステップS126において、攻撃検出部64は、正常な戻り値を第5のセキュリティ対策強度調整処理に戻す。
【0249】
これにより、関数Aの攻撃検出処理は終了する。すなわち、図12のステップS96の処理が終了し、処理はステップS97に進む。
【0250】
これに対して、全ての演算結果が一致しない場合、すなわち第1暗号演算乃至第4暗号演算の4つの演算結果が全て一致せず、攻撃を受けたと判断された場合、ステップS139においてNOであると判定されて、処理はステップS127に進む。
【0251】
ステップS127において、攻撃検出部64は、攻撃検出の戻り値を第5のセキュリティ対策強度調整処理に戻す。
【0252】
これにより、関数Aの攻撃検出処理は終了する。すなわち、図12のステップS96の処理が終了し、処理はステップS97に進む。
【0253】
ステップS97において、攻撃検出部64は、関数Bの攻撃検出処理を実行する。
【0254】
図14は、関数Bの攻撃検出処理の流れを説明するフローチャートである。
【0255】
関数Bの攻撃検出処理の各処理は、図13の関数Aの攻撃検出処理の各処理と基本的に同様の処理である。図13の関数Aの攻撃検出処理においては、関数Aが保持するセキュリティレベルパラメータ(Security_Level_A)の値に応じて処理が実行された。これに対して、図14の関数Bの攻撃検出処理においては、関数Bが保持するセキュリティレベルパラメータ(Security_Level_B)の値に応じて処理が実行される。したがって、関数Bの攻撃検出処理の説明は繰り返しになるので省略する。
【0256】
関数Bの攻撃検出処理、すなわち図12のステップS97の処理が終了すると、処理はステップS98に進む。
【0257】
ステップS98において、攻撃検出部64は、関数A、Bの両方から正常な戻り値を受け取ったかを判定する。
【0258】
関数A、Bの両方から正常な戻り値を受け取った場合、すなわち、関数A、Bの両方の関数が攻撃を受けていないと判断された場合、ステップS98においてYESであると判定され、処理はステップS93に戻され、それ以降の処理が繰り返される。すなわち、関数A、Bの両方から正常な戻り値を受け取らなくなるまでの間、ステップS93乃至S98のループ処理が繰り返される。
【0259】
その後、関数A、Bの両方から正常な戻り値を受け取らなくなった場合、すなわち、関数A、Bのうちの一方、または両方の関数が攻撃を受けたと判断された場合、ステップS98においてNOであると判定されて、処理はステップS99に進む。
【0260】
ステップS99において、強度調整部65は、攻撃検出の戻り値を受け取った関数のセキュリティパラメータの値を1増やす。すなわち、強度調整部65は、関数A、Bのうち、攻撃検出の戻り値を受け取った方の関数のセキュリティパラメータの値を1増やす。
【0261】
ステップS100において、充放電部66は、コンデンサを充電する。すなわち、充放電部66は、攻撃検出からの所定時間の経過を計測するために、コンデンサを充電する。
【0262】
ステップS101において、動作停止部67は、ICチップ11の動作を停止する。
【0263】
これにより、第5のセキュリティ対策強度調整処理は終了する。
【0264】
なお、第5のセキュリティ対策強度調整処理の説明では、検算回数を減らす所定の条件として、第1の条件が採用された場合について説明した。しかしながら、検算回数を減らす所定の条件は上述の例に限定されず、例えば、第2の条件が採用されてもよい。
【0265】
以上、説明したように、第3実施形態においては、セキュリティ対策強度が調整される関数が限定されるので、ICチップ11の処理速度が低下するのを抑制し、ユーザビリティが損なわれることを抑制することができる。
【0266】
<4.第4実施形態>
第3実施形態においては、攻撃が検出された関数のセキュリティ対策強度のみが調整された。しかしながら、セキュリティ対策強度の調整は、攻撃が検出された関数を実行している、ICチップ11を構成する構成要素が実行する全ての関数に対して行われてもよい。すなわち、攻撃が検出された関数を実行している、ICチップ11を構成する構成要素に対してのみセキュリティ対策強度が調整される。ICチップ11を構成する構成要素とは、図1においてブロックで示されるセンサ21乃至内部バス29の各構成要素である。
【0267】
この場合、ICチップ11は、全ての関数がどの構成要素で実行されているのかを表すマッピングテーブルを所持する。そして、所定の関数に対する攻撃を検出した場合、マッピングテーブルを参照して、攻撃を検出した所定の関数を実行しているICチップ11の構成要素を特定する。そして、当該構成要素が実行している全ての関数に対してセキュリティ対策強度の調整を実行する。なお、セキュリティ対策強度の調整の手法は特に限定されず、例えば、第1乃至第3実施形態において用いられた手法を採用することができる。
【0268】
これにより、第4実施形態においては、セキュリティ対策強度が調整される場所が限定されるので、ICチップ11の処理速度が低下するのを抑制し、ユーザビリティが維持される。
【0269】
[本技術のプログラムへの適用]
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウェアにより実行させることもできる。
【0270】
この場合、上述した情報処理装置の少なくとも一部として、例えば、図15に示されるパーソナルコンピュータを採用してもよい。
【0271】
図15において、CPU101は、ROM102に記録されているプログラムに従って各種の処理を実行する。または記憶部108からRAM103にロードされたプログラムに従って各種の処理を実行する。RAM103にはまた、CPU101が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0272】
CPU101、ROM102、及びRAM103は、バス104を介して相互に接続されている。このバス104にはまた、入出力インタフェース105も接続されている。
【0273】
入出力インタフェース105には、キーボード、マウスなどよりなる入力部106、ディスプレイなどよりなる出力部107が接続されている。また、ハードディスクなどより構成される記憶部108、及び、モデム、ターミナルアダプタなどより構成される通信部109が接続されている。通信部109は、インターネットを含むネットワークを介して他の装置(図示せず)との間で行う通信を制御する。
【0274】
入出力インタフェース105にはまた、必要に応じてドライブ110が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどよりなるリムーバブルメディア111が適宜装着される。そして、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部108にインストールされる。
【0275】
一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、ネットワークや記録媒体からインストールされる。
【0276】
このようなプログラムを含む記録媒体は、図15に示されるように、装置本体とは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フロッピディスクを含む)、光ディスク(CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む)、光磁気ディスク(MD(Mini-Disk)を含む)、もしくは半導体メモリなどよりなるリムーバブルメディア(パッケージメディア)211により構成されるだけでなく、装置本体に予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM102や、記憶部108に含まれるハードディスクなどで構成される。
【0277】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、その順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0278】
本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【0279】
なお、本技術は、以下のような構成もとることができる。
(1)
攻撃を検出する攻撃検出部と、
前記攻撃検出部により攻撃が検出される毎に、セキュリティ対策の強度を段階的に上げる強度調整部と
を備える情報処理装置。
(2)
前記強度調整部は、所定の条件が満たされる毎に、前記セキュリティ対策の強度を段階的に下げる
前記(1)に記載の情報処理装置。
(3)
前記強度調整部は、重要処理の検算回数の増加、タイミングジッタの挿入量の増加、ダミー演算の挿入、通常モードに戻るまでの時間の増加、規定処理の成功回数の増加のうち、少なくとも1つを用いて、前記セキュリティ対策の強度を上げる
前記(1)または(2)に記載の情報処理装置。
(4)
前記所定の条件は、前記攻撃検出部により攻撃が検出されてから所定時間が経過したという条件である
前記(1)、(2)、または(3)に記載の情報処理装置。
(5)
前記所定の条件は、規定処理の実行が成功したという条件である
前記(1)乃至(4)のいずれかに記載の情報処理装置。
(6)
前記攻撃検出部による攻撃の検出後にコンデンサを充電する充放電部と、
前記充放電部により放電されつつある前記コンデンサの電荷量と、所定の閾値とを比較する電荷量検出部と
をさらに備え、
前記所定時間は、電荷量が前記所定の閾値となるまでの前記コンデンサの放電時間である
前記(1)乃至(5)のいずれかに記載の情報処理装置。
(7)
前記強度調整部は、前記セキュリティ対策の強度を上げる対象を、前記攻撃検出部により攻撃が検出された関数とする
前記(1)乃至(6)のいずれかに記載の情報処理装置。
(8)
前記強度調整部は、前記セキュリティ対策の強度を上げる対象を、前記攻撃検出部により攻撃が検出された関数が実行されている前記情報処理装置の構成要素が実行するすべての関数とする
前記(1)乃至(7)のいずれかに記載の情報処理装置。
【0280】
本技術は、非接触ICカードに適用することができる。
【符号の説明】
【0281】
11 ICチップ, 21 センサ, 28 CPU, 41 充放電回路, 61 電源起動部, 62 強度判定部, 63 メイン処理部, 64 攻撃検出部, 65 強度調整部, 66 充放電部, 67 動作停止部, 68 電荷量検出部, 69 規定処理部, 70 規定処理監視部

【特許請求の範囲】
【請求項1】
攻撃を検出する攻撃検出部と、
前記攻撃検出部により攻撃が検出される毎に、セキュリティ対策の強度を段階的に上げる強度調整部と
を備える情報処理装置。
【請求項2】
前記強度調整部は、所定の条件が満たされる毎に、前記セキュリティ対策の強度を段階的に下げる
請求項1に記載の情報処理装置。
【請求項3】
前記強度調整部は、重要処理の検算回数の増加、タイミングジッタの挿入量の増加、ダミー演算の挿入、通常モードに戻るまでの時間の増加、規定処理の成功回数の増加のうち、少なくとも1つを用いて、前記セキュリティ対策の強度を上げる
請求項1に記載の情報処理装置。
【請求項4】
前記所定の条件は、前記攻撃検出部により攻撃が検出されてから所定時間が経過したという条件である
請求項2に記載の情報処理装置。
【請求項5】
前記所定の条件は、規定処理の実行が成功したという条件である
請求項2に記載の情報処理装置。
【請求項6】
前記攻撃検出部による攻撃の検出後にコンデンサを充電する充放電部と、
前記充放電部により放電されつつある前記コンデンサの電荷量と、所定の閾値とを比較する電荷量検出部と
をさらに備え、
前記所定時間は、電荷量が前記所定の閾値となるまでの前記コンデンサの放電時間である
請求項4に記載の情報処理装置。
【請求項7】
前記強度調整部は、前記セキュリティ対策の強度を上げる対象を、前記攻撃検出部により攻撃が検出された関数とする
請求項3に記載の情報処理装置。
【請求項8】
前記強度調整部は、前記セキュリティ対策の強度を上げる対象を、前記攻撃検出部により攻撃が検出された関数が実行されている前記情報処理装置の構成要素が実行するすべての関数とする
請求項3に記載の情報処理装置。
【請求項9】
攻撃を検出する攻撃検出ステップと、
前記攻撃検出ステップの処理により攻撃が検出される毎に、セキュリティ対策の強度を段階的に上げる強度調整ステップと
を含む情報処理方法。
【請求項10】
攻撃を検出し、
攻撃が検出される毎に、セキュリティ対策の強度を段階的に上げる
ステップを含む制御処理をコンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate


【公開番号】特開2012−203800(P2012−203800A)
【公開日】平成24年10月22日(2012.10.22)
【国際特許分類】
【出願番号】特願2011−69925(P2011−69925)
【出願日】平成23年3月28日(2011.3.28)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】