(57)【特許請求の範囲】
【請求項１】
異常を検知する異常検知手段と、異常検知用カウンタと、正常終了用カウンタとを備えるＩＣチップであって、
外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新し、前記コマンド処理が正常終了した場合に、前記正常終了用カウンタの値を更新する制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、
を備え、
前記制御手段は、前記正常終了用カウンタの値が第２の閾値になった場合に、前記異常検知用カウンタの値をクリアすることを特徴とするＩＣチップ。
【請求項２】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップであって、
外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新する制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、
を備え、
前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とするＩＣチップ。
【請求項３】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップであって、
外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新する制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、
を備え、
前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とするＩＣチップ。
【請求項４】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップであって、
外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新し、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻す制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、
を備え、
前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とするＩＣチップ。
【請求項５】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップであって、
外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新し、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻す制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、
を備え、
前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とするＩＣチップ。
【請求項６】
異常を検知する異常検知手段と、異常検知用カウンタと、正常終了用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、
外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新し、前記コマンド処理が正常終了した場合に、前記正常終了用カウンタの値を更新するステップと、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、
前記正常終了用カウンタの値が第２の閾値になった場合に、前記異常検知用カウンタの値をクリアするステップと、
を含むことを特徴とする異常検知処理方法。
【請求項７】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、
外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新するステップと、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、
前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させるステップと、
を含むことを特徴とする異常検知処理方法。
【請求項８】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、
外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新するステップと、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、
前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させるステップと、
を含むことを特徴とする異常検知処理方法。
【請求項９】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、
外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新するステップと、
前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻すステップと、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、
前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させるステップと、
を含むことを特徴とする異常検知処理方法。
【請求項１０】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、
外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新するステップと、
前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻すステップと、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、
前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させるステップと、
を含むことを特徴とする異常検知処理方法。
【請求項１１】
異常を検知する異常検知手段と、異常検知用カウンタと、正常終了用カウンタとを備えるＩＣチップに含まれるコンピュータを、
外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新し、前記コマンド処理が正常終了した場合に、前記正常終了用カウンタの値を更新する制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、
前記制御手段は、前記正常終了用カウンタの値が第２の閾値になった場合に、前記異常検知用カウンタの値をクリアすることを特徴とするプログラム。
【請求項１２】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップに含まれるコンピュータを、
外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新する制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、
前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とするプログラム。
【請求項１３】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップに含まれるコンピュータを、
外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新する制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、
前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とするプログラム。
【請求項１４】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップに含まれるコンピュータを、
外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新し、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻す制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、
前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とするプログラム。
【請求項１５】
異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップに含まれるコンピュータを、
外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新し、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻す制御手段と、
前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、
前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、外部からの攻撃等による異常を検知可能なＩＣカードの技術に関する。
【背景技術】
【０００２】
セキュリティ性が重要視されるＩＣカードでは、外部からの攻撃などによる不正動作に対する防止手段を備えていなければならない。外部からの攻撃とは、ＩＣカードに搭載されたＩＣチップに誤動作を起こさせるための方法であり、代表的な攻撃方法としてＤＦＡ(Differential Fault Analysis)が知られている。この攻撃方法では、例えば、ＩＣチップに対してレーザ照射を行って出力された誤演算結果を、正しい演算結果と比較して解析することにより、攻撃者はＩＣチップ内部の情報を得ることが可能である。特許文献１には、レーザ照射により誤動作が発生する前に、確実にレーザ照射を検知して攻撃を回避する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２７９００３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来の技術では、攻撃を検知することはできても、システムリセットなどを実行して以降の動作を停止することしかできなかった。この場合、以降の動作を打ち切ることができるものの、再び最初から動作させてしまえば何度でも攻撃が実施できてしまうという問題がある。
【０００５】
本発明は、このような問題等を鑑みてなされたものであり、攻撃者が何度も攻撃を実施できないように以降の動作を制限することが可能なＩＣチップ、異常検知処理方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、請求項１に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタと、正常終了用カウンタとを備えるＩＣチップであって、外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新し、前記コマンド処理が正常終了した場合に、前記正常終了用カウンタの値を更新する制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、を備え、前記制御手段は、前記正常終了用カウンタの値が第２の閾値になった場合に、前記異常検知用カウンタの値をクリアすることを特徴とする。
【０００７】
請求項２に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップであって、外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新する制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、を備え、前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とする。
【０００８】
請求項３に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップであって、外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新する制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、を備え、前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とする。
【０００９】
請求項４に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップであって、外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新し、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻す制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、を備え、前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とする。
【００１０】
請求項５に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップであって、外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新し、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻す制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段と、を備え、前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とする。
【００１１】
請求項６に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタと、正常終了用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新し、前記コマンド処理が正常終了した場合に、前記正常終了用カウンタの値を更新するステップと、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、前記正常終了用カウンタの値が第２の閾値になった場合に、前記異常検知用カウンタの値をクリアするステップと、を含むことを特徴とする。
【００１２】
請求項７に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新するステップと、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させるステップと、を含むことを特徴とする。
【００１３】
請求項８に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新するステップと、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させるステップと、を含むことを特徴とする。
【００１４】
請求項９に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新するステップと、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻すステップと、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させるステップと、を含むことを特徴とする。
【００１５】
請求項１０に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップにより行われる異常検知方法であって、外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新するステップと、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻すステップと、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止するステップと、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させるステップと、を含むことを特徴とする。請求項１１に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタと、正常終了用カウンタとを備えるＩＣチップに含まれるコンピュータを、外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新し、前記コマンド処理が正常終了した場合に、前記正常終了用カウンタの値を更新する制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、前記制御手段は、前記正常終了用カウンタの値が第２の閾値になった場合に、前記異常検知用カウンタの値をクリアすることを特徴とする。請求項１２に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップに含まれるコンピュータを、外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新する制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とする。請求項１３に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップに含まれるコンピュータを、外部からのコマンドに応じたコマンド処理の実行中に前記異常検知手段により異常が検知された場合に、前記異常検知用カウンタの値を更新する制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とする。請求項１４に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップに含まれるコンピュータを、外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新し、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻す制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理に対応する前記コマンドの重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とする。請求項１５に記載の発明は、異常を検知する異常検知手段と、異常検知用カウンタとを備えるＩＣチップに含まれるコンピュータを、外部からのコマンドに応じたコマンド処理の実行前に、前記異常検知用カウンタの値を更新し、前記異常検知手段により前記異常が検知されることなく前記コマンド処理が正常終了した場合に、前記異常検知用カウンタの値を更新前の値に戻す制御手段と、前記異常検知用カウンタの値が第１の閾値になった場合に、前記ＩＣチップの動作を停止、または当該ＩＣチップにおいて起動中の特定のプログラムの動作を停止する停止手段として機能させ、前記制御手段は、前記異常検知手段により異常が検知されたときの前記コマンド処理の対象データの種類の重要度に応じて、前記異常検知用カウンタの更新値を変化させることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、攻撃者が何度も繰り返し攻撃を実施することを防ぎ、以降の動作を制限することができる。
【図面の簡単な説明】
【００１７】
【図１】ＩＣカード１の概要構成例を示す図である。
【図２】実施例１において、コマンドが受信されたときの処理を示すフローチャートである。
【図３】（Ａ）は、コマンドの重要度に応じて異常検知用カウンタの更新値を変化させる場合のコマンドと更新値との対応付け情報の一例を示す図である。（Ｂ）は、コマンドの重要度に応じて異常検知用カウンタの更新値を変化させる場合の異常検知用カウンタの更新処理の一例を示すフローチャートである。
【図４】（Ａ）は、コマンド処理の対象データの種類の重要度に応じて異常検知用カウンタの更新値を変化させる場合の対象データの種類と更新値との対応付け情報の一例を示す図である。（Ｂ）は、コマンド処理の対象データの種類の重要度に応じて異常検知用カウンタの更新値を変化させる場合の異常検知用カウンタの更新処理の一例を示すフローチャートである。
【図５】実施例２において、コマンドが受信されたときの処理を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００１９】
先ず、図１を参照して、ＩＣカード１の概要構成及び機能について説明する。図１は、ＩＣカード１の概要構成例を示す図である。なお、ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等の通信機器に組み込まれる。なお、ＩＣチップ１ａは、通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
【００２０】
図１に示すように、ＩＣカード１に搭載されるＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１０、ＲＯＭ（Read Only Memory）１１、ＲＡＭ（Random Access Memory）１２、不揮発性メモリ１３、及びＩ／Ｏ回路１４を備えて構成される。不揮発性メモリ１３としては、例えば、フラッシュメモリが適用される。或いは「Electrically Erasable Programmable Read-Only Memory」が適用されてもよい。Ｉ／Ｏ回路１４は、外部端末２とのインターフェイスを担う。接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、Ｃ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部端末との間で通信を行うための端子である。一方、非接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部端末２の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣチップ１ａが通信機器に組み込まれる場合、外部端末２には通信機器の機能を担う制御部が該当する。
【００２１】
ＲＯＭ１１または不揮発性メモリ１３には、複数の命令コードから構成されるプログラム、及び各種データが記憶されている。このプログラムには、例えば、ＯＳ、本発明のプログラム、アプリケーションプログラムが含まれる。また、各種データは、例えばＩＳＯ／ＩＥＣ７８１６−４によって定められたＭＦ（Master File）、ＤＦ(Dedicated File)、及びＥＦ(Elementary File)などから構成される階層構造を有する複数のファイルに格納される。ＭＦは、ファイル構成において最上位に位置し、ＭＦの下位階層にはＤＦ及びＥＦが位置する。ＤＦは、例えばアプリケーションプログラムごとに設けられる。ＥＦは、例えば、ＤＦに格納されるアプリケーションプログラムで使用される複数のデータを格納するレコードファイルである。また、ＥＦは、ＩＥＦ（内部基礎ファイル）とＷＥＦ（作業用基礎ファイル）に分けられる。ＩＥＦには、例えば、セキュリティのためのキー（鍵）データが格納される。ＷＥＦには、例えば、カード識別データなどの一般的なデータが格納される。
【００２２】
ＣＰＵ１０は、外部端末２から送信されたコマンドを受信すると、上記プログラムに従って当該コマンドに応じたコマンド処理（つまり、コマンドの処理）を実行する。ここで、コマンドは、例えば、ＡＰＤＵ(Application Protocol Data Unit)として外部端末２から送信される。ＡＰＤＵとして送られるコマンドは、ＣＬＡ部、ＩＮＳ部、Ｐ１部、Ｐ２部、Ｌｃ部、Ｄａｔａ部、Ｌｅ部から構成される。ＣＬＡ部及びＩＮＳ部は、コマンドの種類を示す情報を格納する。Ｐ１部及びＰ２部は、コマンド処理におけるパラメータを格納する。上記コマンド処理において、本発明の異常検知手段、制御手段、及び停止手段として機能する。具体的には、ＣＰＵ１０は、外部端末２からのコマンドに応じたコマンド処理の実行中に、異常を検知するための異常検知処理を行う。例えば、ＣＰＵ１０は、ＣＲＣ（Cyclic Redundancy Check）のチェック、不揮発性メモリ１３におけるアクセス先のアドレスのチェック、暗号演算結果のチェック等を行うことで外部からの攻撃などによる異常を検知する。なお、異常検知処理については公知の様々な技術を適用できるので詳しい説明を省略する。
【００２３】
ＣＰＵ１０は、異常が検知された場合に、異常検知用カウンタの値を更新（例えば、異常検知用カウンタの値に“１”を加算）し、ＩＣチップ１ａの動作を停止、またはＩＣチップ１ａにおいて起動中の特定のプログラム（例えば、当該コマンド処理に係る決済処理用のアプリケーションプログラム）の動作を停止する。ここで、異常検知用カウンタは、例えば不揮発性メモリ１３に設けられ、異常が検知される度に更新される値（言い換えれば、異常検知回数）を保持する。また、ＣＰＵ１０は、異常検知用カウンタの値が、予め設定された第１の閾値になったか否かを所定のタイミングで判別しており、異常検知用カウンタの値が第１の閾値になった場合（つまり、閾値に到達した場合）に、ＩＣチップ１ａの動作を停止、またはＩＣチップ１ａにおいて起動中の特定のプログラムの動作を停止する。異常が検知された場合にのみ、異常検知用カウンタの値を更新するように構成すれば、カウンタの更新が最低限で済むため、高速に動作することができる。
【００２４】
一方、ＣＰＵ１０は、コマンド処理が正常終了した場合に、ダミーカウンタ（正常終了用カウンタの一例）の値を更新（例えば、ダミーカウンタの値に“１”を加算）するように構成してもよい。ここで、ダミーカウンタは、例えば不揮発性メモリ１３に設けられ、正常終了される度に更新される値を保持する。ダミーカウンタは、異常検知用カウンタのダミーのカウンタである。これにより、例えば、外部からの攻撃による異常の検知または非検知に関わらず、不揮発性メモリ１３への書き込みが発生するため、攻撃者が外部から電力などを解析したとしてもカウンタの更新タイミングが図りにくくなる。
【００２５】
なお、上記の例では、ＣＰＵ１０は、異常が検知された後に異常検知用カウンタの値を更新する例を示したが、異常が検知される前に異常検知用カウンタの値を更新するように構成してもよい。この場合、ＣＰＵ１０は、上記コマンド処理の実行前に、異常検知用カウンタの値を更新し、異常が検知されることなくコマンド処理が正常終了した場合に、異常検知用カウンタの値を更新前の値に戻す。このように構成すれば、例えば外部からの攻撃による異常が検知された際、確実にカウンタを更新することができる。
【００２６】
次に、ＩＣチップ１ａの動作について、実施例１と実施例２とに分けて説明する。
【００２７】
（実施例１）
先ず、実施例１において、ＩＣチップ１ａが外部端末２からコマンドを受信したときの処理について、図２を参照して説明する。図２は、実施例１において、コマンドが受信されたときの処理を示すフローチャートである。図２に示す処理は、外部端末２からコマンドが受信された場合に開始される。先ず、ＣＰＵ１０は、ＩＣチップ１ａの初期化を行う（ステップＳ１）。この初期化において、ＣＰＵ１０は、ＲＡＭ１２を特定の値でクリアし、不揮発性メモリ１３に格納されているデータの完全性をチェックする。また、この初期化において、ＣＰＵ１０は、異常検知用カウンタ、及びダミーカウンタの値が壊れていないことを確認する。また、必要に応じて、ＣＰＵ１０は、ＩＣチップ１ａ内で利用するタイマの動作を開始する。
【００２８】
次いで、ＣＰＵ１０は、異常検知用カウンタの値が、予め設定された第１の閾値であるか否かを判定する（ステップＳ２）。ＣＰＵ１０は、異常検知用カウンタの値が第１の閾値（例えば、５）である（つまり、第１の閾値に到達した）と判定した場合（ステップＳ２：ＹＥＳ）、エラー処理を行う（ステップＳ９）。このエラー処理において、ＣＰＵ１０は、ＩＣチップ１ａの動作を停止、またはＩＣチップ１ａにおいて起動中の特定のプログラムの動作を停止する。或いは、このエラー処理において、ＣＰＵ１０は、外部端末２へエラー応答を送信する。エラー応答は、ＩＣチップ１ａ内でエラーが発生したことを示す。なお、ＣＰＵ１０は、ＩＣチップ１ａまたは上記特定のプログラムの動作を停止すると共に、外部端末２へエラー応答を送信してもよい。
【００２９】
一方、ステップＳ２において、ＣＰＵ１０は、異常検知用カウンタの値が第１の閾値でない（つまり、第１の閾値に達していない）と判定した場合（ステップＳ２：ＮＯ）、受信されたコマンドに応じたコマンド処理を開始する（ステップＳ３）。こうして開始されたコマンド処理の実行中に、ＣＰＵ１０は、異常が検知されたか否かを判定する（ステップＳ４）。異常が検知された場合（ステップＳ４：ＹＥＳ）、ＣＰＵ１０は、異常検知用カウンタの更新処理（ステップＳ５）を行った後、上述したエラー処理を行う（ステップＳ９）。一方、異常が検知されない場合（ステップＳ４：ＮＯ）、ＣＰＵ１０は、コマンド処理を終了する（ステップＳ６）。こうしてコマンド処理が正常終了すると、ＣＰＵ１０は、ダミーカウンタの値を更新（例えば、ダミーカウンタの値に“１”を加算）し（ステップＳ７）、外部端末２へレスポンスを送信（例えば、コマンド処理の結果を応答）する（ステップＳ８）。この後、図２に示す処理が終了され、次のコマンド受信の待機状態となる。なお、ＣＰＵ１０は、コマンド処理が正常終了した場合、ダミーカウンタの値を更新せずに、外部端末２へレスポンスを送信してもよい。
【００３０】
ところで、上記ステップＳ５における異常検知用カウンタの更新処理では、例えば、ＣＰＵ１０は、異常検知用カウンタの値に“１”を加算（カウントアップ）する。或いは、異常検知用カウンタの更新処理において、ＣＰＵ１０は、異常が検知されたときのコマンド処理に対応するコマンド（コマンドの種類でもよい）の重要度に応じて、異常検知用カウンタの更新値を変化させるように構成すると効果的である。或いは、異常検知用カウンタの更新処理において、ＣＰＵ１０は、異常が検知されたときのコマンド処理の対象データの種類の重要度に応じて、異常検知用カウンタの更新値を変化させるように構成しても効果的である。
【００３１】
図３（Ａ）は、コマンドの重要度に応じて異常検知用カウンタの更新値を変化させる場合のコマンドと更新値との対応付け情報の一例を示す図である。この対応付け情報は、例えばテーブルとして不揮発性メモリ１３に予め記憶されるか、或いはプログラム中に予め規定される。図３（Ａ）に示す例では、コマンドの重要度に応じて更新値（この例では、加算値）が大きくなるように設定されている。例えば、“SELECT”コマンドの処理では、基本的には重要な情報を扱わないため、重要度は低く設定され、加算値は“１”に設定されている。また、“READ RECORD”コマンドの処理は、データを読み出す処理であり、時として重要なデータを扱うこともあるため、“SELECT”コマンドと比較すると重要度が高く設定され、加算値は“２”に設定されている。また、“VERIFY”コマンドは、認証に利用するコマンドであるため、コマンドの中では最も重要度が高く設定され、加算値は“５”に設定されている。また、上記以外のコマンドの処理は、重要な処理が存在しないと判断できるため、コマンドの中では最も重要度が低く設定され、加算値は“０”（すなわち、異常が検知されても異常検知用カウンタの値は加算されない）に設定されている。
【００３２】
図３（Ｂ）は、コマンドの重要度に応じて異常検知用カウンタの更新値を変化させる場合の異常検知用カウンタの更新処理の一例を示すフローチャートである。図３（Ｂ）に示すステップＳ５１では、ＣＰＵ１０は、実行されたコマンド処理に対応するコマンド（つまり、受信されたコマンド）が、“SELECT”コマンドであるか否かを判定する。ＣＰＵ１０は、“SELECT”コマンドであると判定した場合（ステップＳ５１：ＹＥＳ）、図３（Ａ）に示す対応付け情報に従って、異常検知用カウンタの値に“１”を加算し（ステップＳ５２）、ステップＳ９へ進む。一方、ＣＰＵ１０は、“SELECT”コマンドでないと判定した場合（ステップＳ５１：ＮＯ）、ステップＳ５３へ進む。
【００３３】
ステップＳ５３では、ＣＰＵ１０は、実行されたコマンド処理に対応するコマンドが、“READ RECORD”コマンドであるか否かを判定する。ＣＰＵ１０は、“READ RECORD”コマンドであると判定した場合（ステップＳ５３：ＹＥＳ）、図３（Ａ）に示す対応付け情報に従って、異常検知用カウンタの値に“２”を加算し（ステップＳ５４）、ステップＳ９へ進む。一方、ＣＰＵ１０は、“READ RECORD”コマンドでないと判定した場合（ステップＳ５３：ＮＯ）、ステップＳ５５へ進む。
【００３４】
ステップＳ５５では、ＣＰＵ１０は、実行されたコマンド処理に対応するコマンドが、“VERIFY”コマンドであるか否かを判定する。ＣＰＵ１０は、“VERIFY”コマンドであると判定した場合（ステップＳ５５：ＹＥＳ）、図３（Ａ）に示す対応付け情報に従って、異常検知用カウンタの値に“５”を加算し（ステップＳ５６）、ステップＳ９へ進む。一方、ＣＰＵ１０は、“VERIFY”コマンドでないと判定した場合（ステップＳ５５：ＮＯ）、ステップＳ９へ進む。
【００３５】
図４（Ａ）は、コマンド処理の対象データの種類の重要度に応じて異常検知用カウンタの更新値を変化させる場合の対象データの種類と更新値との対応付け情報の一例を示す図である。この対応付け情報は、例えばテーブルとして不揮発性メモリ１３に予め記憶されるか、或いはプログラム中に予め規定される。図４（Ａ）に示す例では、対象データの種類の重要度に応じて更新値（この例では、加算値）が大きくなるように設定されている。ＷＥＦは、認証なしでも読み出せるデータであるため、重要度は低く設定され、加算値は“１”に設定されている。また、ＩＥＦは、最も重要な情報であるため、重要度が最も高く設定され、加算値は“５”に設定されている。制御情報は、鍵ほどではないが重要な情報を含むため、ＷＥＦと比較すると重要度が高く設定され、加算値は“２”に設定されている。また、上記以外の動作に影響しないような情報は、重要ではないと判断できるため、コマンドの中では最も重要度が低く設定され、加算値は“０”に設定されている。
【００３６】
図４（Ｂ）は、コマンド処理の対象データの種類の重要度に応じて異常検知用カウンタの更新値を変化させる場合の異常検知用カウンタの更新処理の一例を示すフローチャートである。図４（Ｂ）に示すステップＳ６１では、ＣＰＵ１０は、対象データがＷＥＦであるか否かを判定する。ＣＰＵ１０は、ＷＥＦであると判定した場合（ステップＳ６１：ＹＥＳ）、図４（Ａ）に示す対応付け情報に従って、異常検知用カウンタの値に“１”を加算し（ステップＳ６２）、ステップＳ９へ進む。一方、ＣＰＵ１０は、ＷＥＦでないと判定した場合（ステップＳ６１：ＮＯ）、ステップＳ６３へ進む。
【００３７】
ステップＳ６３では、ＣＰＵ１０は、対象データが制御情報であるか否かを判定する。ＣＰＵ１０は、制御情報であると判定した場合（ステップＳ６３：ＹＥＳ）、図４（Ａ）に示す対応付け情報に従って、異常検知用カウンタの値に“２”を加算し（ステップＳ６４）、ステップＳ９へ進む。一方、ＣＰＵ１０は、制御情報でないと判定した場合（ステップＳ６３：ＮＯ）、ステップＳ６５へ進む。
【００３８】
ステップＳ６５では、ＣＰＵ１０は、対象データがＩＥＦであるか否かを判定する。ＣＰＵ１０は、ＩＥＦであると判定した場合（ステップＳ６５：ＹＥＳ）、図４（Ａ）に示す対応付け情報に従って、異常検知用カウンタの値に“５”を加算し（ステップＳ６６）、ステップＳ９へ進む。一方、ＣＰＵ１０は、ＩＥＦでないと判定した場合（ステップＳ６５：ＮＯ）、ステップＳ９へ進む。
【００３９】
以上のように、異常検知用カウンタの更新値を動的に変化させることで、危険な改ざんを検知した場合は即座に停止させたり、誤動作の可能性が考えられる場合はある程度の回数を許容させたりと、柔軟な判断をさせることが可能となる。
【００４０】
なお、ＣＰＵ１０は、ダミーカウンタの値が、予め設定された第２の閾値になったか否かを所定のタイミング（例えば、ステップＳ２の直前又は直後のタイミング）で判定するように構成してもよい。この場合、ＣＰＵ１０は、ダミーカウンタの値が第２の閾値になった場合（つまり、第２の閾値に到達した場合）に、異常検知用カウンタの値を初期値（例えば、“０”）にクリアする。これにより、静電気や温度等のなど偶然の因子で、異常検知用カウンタが更新されてしまった場合でも、正しい利用が繰り返されることで、意図しないＩＣチップ１ａの停止を防止することが可能となる。例えば、ダミーカウンタ＝１、異常検知用カウンタ＝３であるとする。この場合、例えば以下（ａ）〜（ｅ）に示すように、ダミーカウンタが“５”の倍数にカウントアップされた場合に、異常検知用カウンタが初期値“０”にクリアされる。
（ａ）正常終了１回目：ダミーカウンタ＝１，異常検知用のカウンタ＝３
（ｂ）正常終了２回目：ダミーカウンタ＝２，異常検知用のカウンタ＝３
（ｃ）正常終了３回目：ダミーカウンタ＝３，異常検知用のカウンタ＝３
（ｄ）正常終了４回目：ダミーカウンタ＝４，異常検知用のカウンタ＝３
（ｅ）正常終了５回目：ダミーカウンタ＝５，異常検知用のカウンタ＝０
【００４１】
以上説明したように、上記実施例１によれば、ＩＣチップ１ａは、外部からのコマンドに応じたコマンド処理の実行中に、異常を検知した場合に、異常検知用カウンタの値を更新し、ＩＣチップ１ａの動作を停止、またはＩＣチップ１ａにおいて起動中の特定のプログラムの動作を停止するように構成したので、攻撃者が何度繰り返し攻撃を実施することを防ぎ、以降の動作を制限することができる。そのため、ＩＣチップ１ａのセキュリティ性を高めることができる。
【００４２】
（実施例２）
次に、実施例２において、ＩＣチップ１ａが外部端末２からコマンドを受信したときの処理について、図５を参照して説明する。図５は、実施例２において、コマンドが受信されたときの処理を示すフローチャートである。図５に示す処理は、外部端末２からコマンドが受信された場合に開始される。先ず、ＣＰＵ１０は、ＩＣチップ１ａの初期化を行う（ステップＳ１１）。
【００４３】
次いで、ＣＰＵ１０は、異常検知用カウンタの値が、予め設定された第１の閾値であるか否かを判定する（ステップＳ１２）。ＣＰＵ１０は、異常検知用カウンタの値が第１の閾値であると判定した場合（ステップＳ１２：ＹＥＳ）、実施例１と同様、上述したエラー処理を行う（ステップＳ１９）。
【００４４】
一方、ステップＳ１２において、ＣＰＵ１０は、異常検知用カウンタの値が第１の閾値でないと判定した場合（ステップＳ１２：ＮＯ）、異常検知用カウンタの更新処理（ステップＳ１３）を行った後、上記コマンドに応じたコマンド処理を開始する（ステップＳ１４）。ここで、上記ステップＳ１３における異常検知用カウンタの更新処理では、例えば、ＣＰＵ１０は、異常検知用カウンタの値に“１”を加算する。或いは、実施例１と同様、異常検知用カウンタの更新処理において、ＣＰＵ１０は、異常が検知されたときのコマンド処理に対応するコマンドの重要度に応じて、異常検知用カウンタの更新値を変化させるように構成すると効果的である。或いは、異常検知用カウンタの更新処理において、ＣＰＵ１０は、異常が検知されたときのコマンド処理の対象データの種類の重要度に応じて、異常検知用カウンタの更新値を変化させるように構成しても効果的である。
【００４５】
そして、コマンド処理の実行中に、ＣＰＵ１０は、異常が検知されたか否かを判定する（ステップＳ１５）。異常が検知された場合（ステップＳ１５：ＹＥＳ）、ＣＰＵ１０は、上述したエラー処理を行う（ステップＳ１９）。一方、異常が検知されない場合（ステップＳ１５：ＮＯ）、ＣＰＵ１０は、コマンド処理を終了する（ステップＳ１６）。こうしてコマンド処理が正常終了すると、ＣＰＵ１０は、異常検知用カウンタの値を更新前の値に戻す（ステップＳ１７）。例えば、ステップＳ１３において、異常検知用カウンタの値が“１”から“６”に更新されたとすると、ステップＳ１７において、異常検知用カウンタの値が“６”から“１”に復元される。そして、ＣＰＵ１０は、外部端末２へレスポンスを送信する（ステップＳ１８）。この後、図５に示す処理が終了され、次のコマンド受信の待機状態となる。
【００４６】
以上説明したように、上記実施例２によれば、ＩＣチップ１ａは、コマンド処理の実行前に、異常検知用カウンタの値を更新し、異常が検知されることなくコマンド処理が正常終了した場合に、異常検知用カウンタの値を更新前の値に戻すように構成したので、攻撃者が何度繰り返し攻撃を実施することを防ぎ、以降の動作を制限することができるとともに、異常が検知された際に確実に異常検知用カウンタの値を更新することができる。そのため、ＩＣチップ１ａのセキュリティ性を高めることができる。
【符号の説明】
【００４７】
１  ＩＣカード
２  外部端末
１ａ  ＩＣチップ
１０  ＣＰＵ
１１  ＲＯＭ
１２  ＲＡＭ
１３  不揮発性メモリ
１４  Ｉ／Ｏ回路
【図１】
0006340935.tif 000002
【図２】
0006340935.tif 000003
【図３】
0006340935.tif 000004
【図４】
0006340935.tif 000005
【図５】
0006340935.tif 000006