(57)【特許請求の範囲】
【請求項１】
第１の値または第２の値を保持するラッチ回路であって、前記第１の値が保持された時点から所定時間が経過すると当該第１の値が前記第２の値に変化するラッチ回路と、
異常を検知する異常検知手段と、
前記異常検知手段により異常が検知されたとき、前記ラッチ回路に前記第１の値を保持させる設定手段と、
外部端末から受信したコマンドに応じた特定の処理を行う前、または電子情報記録媒体の起動時に前記ラッチ回路に保持されている値をチェックし、当該チェックした値が前記第２の値である場合、前記特定の処理を行う制御手段と、
を備えることを特徴とする電子情報記録媒体。
【請求項２】
前記制御手段は、前記チェックした値が前記第１の値である場合、前記特定の処理を行うことなく、エラー出力を行うことを特徴とする請求項１に記載の電子情報記録媒体。
【請求項３】
前記所定時間は、前記ラッチ回路が有するキャパシタの静電容量により決まる時間であることを特徴とする請求項１または２に記載の電子情報記録媒体。
【請求項４】
第１の値または第２の値を保持するラッチ回路であって、前記第１の値が保持された時点から所定時間が経過すると当該第１の値が前記第２の値に変化するラッチ回路と、
異常を検知する異常検知手段と、
前記異常検知手段により異常が検知されたとき、前記ラッチ回路に前記第１の値を保持させる設定手段と、
外部端末から受信したコマンドに応じた特定の処理を行う前、またはＩＣカードの起動時に前記ラッチ回路に保持されている値をチェックし、当該チェックした値が前記第２の値である場合、前記特定の処理を行う制御手段と、
を備えることを特徴とするＩＣカード。
【請求項５】
第１の値または第２の値を保持するラッチ回路であって、前記第１の値が保持された時点から所定時間が経過すると当該第１の値が前記第２の値に変化するラッチ回路と、異常を検知する異常検知手段と、を備える電子情報記録媒体のチェック方法であって、
前記異常検知手段により異常が検知されたとき、前記ラッチ回路に前記第１の値を保持させるステップと、
外部端末から受信したコマンドに応じた特定の処理を行う前、または前記電子情報記録媒体の起動時に前記ラッチ回路に保持されている値をチェックし、当該チェックした値が前記第２の値である場合、前記特定の処理を行うステップと、
を含むことを特徴とするチェック方法。
【請求項６】
第１の値または第２の値を保持するラッチ回路であって、前記第１の値が保持された時点から所定時間が経過すると当該第１の値が前記第２の値に変化するラッチ回路と、異常を検知する異常検知手段と、を備える電子情報記録媒体に含まれるコンピュータを、
前記異常検知手段により異常が検知されたとき、前記ラッチ回路に前記第１の値を保持させる設定手段と、
外部端末から受信したコマンドに応じた特定の処理を行う前、または前記電子情報記録媒体の起動時に前記ラッチ回路に保持されている値をチェックし、当該チェックした値が前記第２の値である場合、前記特定の処理を行う制御手段として機能させることを特徴とする処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣチップ等の電子情報記録媒体の異常処理方法等の技術分野に関する。
【背景技術】
【０００２】
従来、ＩＣチップに対する攻撃手法として、電源端子へのノイズ（電圧パルス）、電磁波やレーザー照射などの外部からの力により誤作動を誘発してＩＣチップ内部の重要情報を取得する「故障利用攻撃」という攻撃手法が知られている。このような故障利用攻撃の対策として、再度同じ計算をする検査方法、及び逆算を行う検算方法が知られている。再度同じ計算をする検査方法では、例えば、暗号化演算を複数回行い、複数回の演算結果が一致したときその結果を返すようになっている。一方、逆算を行う検算方法では、例えば、暗号化演算の場合は復号演算を更に行い、復号演算の場合は暗号化演算を更に行い、逆算結果が一致したときその結果を返すようになっている。また、特許文献１では、逆算を行って検算を行う場合に、逆算において最終的に用いた暗号鍵が当初の演算で最初に用いた暗号鍵に一致するかの検証を追加する方法を提案している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第５４８３８３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述したような対策を実施しても、複数回の誤動作を誘発すれば故障利用攻撃は実施可能である。例えば、同一処理時にも同一の誤動作を誘発すれば、誤動作が検知できない。
【０００５】
故障利用攻撃の対策として、誤動作を検知した回数を記録し、記録した回数が一定の回数より大きくなった場合にＩＣチップ内の重要処理を実施しない方法が考えられる。しかしながら、この方法では一定の回数に達したＩＣチップは利用不可となってしまうことが課題となっていた。
【０００６】
そこで、本発明は、上記課題に鑑みてなされたものであり、ＩＣチップ等の電子情報記録媒体のセキュリティレベルを維持しつつ利便性を向上させることが可能な電子情報記録媒体、ＩＣカード、チェック方法、及び処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、請求項１に記載の発明は、第１の値または第２の値を保持するラッチ回路であって、前記第１の値が保持された時点から所定時間が経過すると当該第１の値が前記第２の値に変化するラッチ回路と、異常を検知する異常検知手段と、前記異常検知手段により異常が検知されたとき、前記ラッチ回路に前記第１の値を保持させる設定手段と、外部端末から受信したコマンドに応じた特定の処理を行う前、または電子情報記録媒体の起動時に前記ラッチ回路に保持されている値をチェックし、当該チェックした値が前記第２の値である場合、前記特定の処理を行う制御手段と、を備えることを特徴とする。
【０００８】
請求項２に記載の発明は、請求項１に記載の電子情報記録媒体において、前記制御手段は、前記チェックした値が前記第１の値である場合、前記特定の処理を行うことなく、エラー出力を行うことを特徴とする。
【０００９】
請求項３に記載の発明は、請求項１または２に記載の電子情報記録媒体において、前記所定時間は、前記ラッチ回路が有するキャパシタの静電容量により決まる時間であることを特徴とする。
【００１０】
請求項４に記載の発明は、第１の値または第２の値を保持するラッチ回路であって、前記第１の値が保持された時点から所定時間が経過すると当該第１の値が前記第２の値に変化するラッチ回路と、異常を検知する異常検知手段と、前記異常検知手段により異常が検知されたとき、前記ラッチ回路に前記第１の値を保持させる設定手段と、外部端末から受信したコマンドに応じた特定の処理を行う前、またはＩＣカードの起動時に前記ラッチ回路に保持されている値をチェックし、当該チェックした値が前記第２の値である場合、前記特定の処理を行う制御手段と、を備えることを特徴とする。
【００１１】
請求項５に記載の発明は、第１の値または第２の値を保持するラッチ回路であって、前記第１の値が保持された時点から所定時間が経過すると当該第１の値が前記第２の値に変化するラッチ回路と、異常を検知する異常検知手段と、を備える電子情報記録媒体のチェック方法であって、前記異常検知手段により異常が検知されたとき、前記ラッチ回路に前記第１の値を保持させるステップと、外部端末から受信したコマンドに応じた特定の処理を行う前、または電子情報記録媒体の起動時に前記ラッチ回路に保持されている値をチェックし、当該チェックした値が前記第２の値である場合、前記特定の処理を行うステップと、を含むことを特徴とする。
【００１２】
請求項６に記載の発明は、第１の値または第２の値を保持するラッチ回路であって、前記第１の値が保持された時点から所定時間が経過すると当該第１の値が前記第２の値に変化するラッチ回路と、異常を検知する異常検知手段と、を備える電子情報記録媒体に含まれるコンピュータを、前記異常検知手段により異常が検知されたとき、前記ラッチ回路に前記第１の値を保持させる設定手段と、外部端末から受信したコマンドに応じた特定の処理を行う前、または電子情報記録媒体の起動時に前記ラッチ回路に保持されている値をチェックし、当該チェックした値が前記第２の値である場合、前記特定の処理を行う制御手段として機能させることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、ＩＣチップ等の電子情報記録媒体のセキュリティレベルを維持しつつ利便性を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】（Ａ）は、ＩＣカード１の概要構成例を示す図であり、（Ｂ），（Ｃ）は、ラッチ回路１６の概要構成例を示す図である。
【図２】（Ａ）は、異常検知処理例を示すフローチャートであり、（Ｂ）は、重要処理を含むコマンド処理例を示すフローチャートである。
【発明を実施するための形態】
【００１５】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣチップに対して本発明を適用した場合の実施の形態である。
【００１６】
先ず、図１を参照して、ＩＣカード１の概要構成及び機能について説明する。図１（Ａ）は、ＩＣカード１の概要構成例を示す図である。なお、ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等の通信機器に組み込まれる。ＩＣチップ１ａは、本発明の電子情報記録媒体の一例である。なお、ＩＣチップ１ａは、通信機器の回路基板上に直接組み込んで構成するようにしてもよい。
【００１７】
ＩＣカード１に搭載されるＩＣチップ１ａは、図１（Ａ）に示すように、ＣＰＵ（Central Processing Unit）１１、ＲＯＭ（Read Only Memory）１２、ＲＡＭ（Random Access Memory）１３、ＮＶＭ（Nonvolatile Memory）１４、Ｉ／Ｏ回路１５、及びラッチ回路１６を備えて構成され、これらの構成要素は、バス１７に接続されている。ラッチ回路１６は、詳細は後述するが、オンを示す値（第１の値の一例であり、例えば“１”）またはオフを示す値（第２の値の一例であり、例えば“０”）を保持するようにオン／オフ設定可能に構成されており、ラッチ回路１６の設定がオンされた時点（つまり、オンを示す値が保持された時点）から所定時間が経過するとオフに変化する（つまり、オンを示す値がオフを示す値に変化する）ように構成されている。ここで、所定時間は、ラッチ回路１６が有するキャパシタの静電容量により決まる時間であり、例えば、ラッチ回路１６への電源供給断から３０分〜１時間程度である。
【００１８】
ＣＰＵ１１は、外部端末２から受信したコマンドに応じたコマンド処理を実行する。また、ＣＰＵ１１は、例えばコマンド処理の実行中に、異常検知手段として、異常（例えば、ＩＣチップ１ａの誤動作）を検知するための異常検知処理を行う。例えば、ＣＰＵ１１は、ＣＲＣ（Cyclic Redundancy Check）のチェック、ＮＶＭ１４におけるアクセス先のアドレスのチェック、暗号演算結果のチェック等を行うことで外部からの攻撃などによる異常を検知する。そして、異常が検知されたとき、ＣＰＵ１１は、本発明の設定手段として、ラッチ回路１６にオンを示す値を保持させることでラッチ回路１６の設定をオンにする。なお、異常検知処理については公知の様々な技術を適用できるので詳しい説明を省略する。また、異常検知処理は、ＣＰＵ１１以外のコプロセッサ（図示せず）により実行されてもよい。
【００１９】
そして、ＣＰＵ１１は、本発明の制御手段として、重要処理（特定の処理の一例）を行う前にラッチ回路１６に保持されている値をチェックし（つまり、ラッチ回路１６の設定がオンであるか否かをソフトウェアチェック（ラッチ回路１６の設定チェック）し）、当該チェックした値がオフを示す値である場合（つまり、ラッチ回路１６の設定がオフである場合）、上記重要処理を行う一方、当該チェックした値がオンを示す値である場合（つまり、ラッチ回路１６の設定がオンである場合）、上記重要処理を行うことなく、外部端末２へエラー出力を行う。ここで、重要処理の例として、暗号化処理、復号処理、認証処理（照合処理）等が挙げられる。このようにラッチ回路１６の設定がオンである場合、重要処理を実行しないことで、ＩＣチップ１ａを利用不可にしなくとも探索的な試行を阻害できる。なお、ラッチ回路１６の設定チェックのタイミングは、ＩＣチップ１ａの起動時、またはコマンド処理中の上記重要処理の直前等である。
【００２０】
ＲＯＭ１２またはＮＶＭ１４には、ＯＳ、ＣＰＵ１１に実行させるプログラム、及び各種データが記憶されている。ＮＶＭ１４としては、例えば、フラッシュメモリが適用される。或いは「Electrically Erasable Programmable Read-Only Memory」が適用されてもよい。ＲＯＭ１２またはＮＶＭ１４に記憶されるプログラムには、ＣＰＵ１０に実行させる異常検知処理を規定する異常検知処理プログラム、及びＣＰＵ１０に実行させるコマンド処理を規定するコマンド処理プログラムが含まれる。なお、ラッチ回路１６の設定チェックのプログラムは、例えば、コマンド処理プログラムにおいて重要処理を実行するプログラムの直前に規定されている。ＲＡＭ１３は、ＣＰＵ１１により処理中のデータなどを一時的に保持するための作業用メモリである。
【００２１】
Ｉ／Ｏ回路１５は、外部端末２とのインターフェイスを担う。接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１５には、例えば、Ｃ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子（ＩＣチップ１ａへ電源供給する端子）、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部端末２との間で通信を行うための端子である。一方、非接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１５には、例えば、アンテナ、及び変復調回路が備えられている。非接触式のＩＣチップ１ａの場合の電源供給は、外部端末２から電磁誘導方式または電波方式で行われる。なお、外部端末２の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣチップ１ａが通信機器に組み込まれる場合、外部端末２には通信機器の機能を担う制御部が該当する。
【００２２】
図１（Ｂ），（Ｃ）は、ラッチ回路１６の概要構成例を示す図である。図１（Ｂ）に示すラッチ回路１６は、ＳＦＲ（Special Function Register）１６１と、エッジ検出回路１６２，１６３、スイッチ１６４、キャパシタ１６５、及びＦＦ（Flip-Flop）１６６等を備えて構成される。
【００２３】
ＳＦＲ１６１のビット１（ｂ１）は、ラッチ回路１６の設定をオンにするためのビットであり、ＣＰＵ１１は、バス１７を介して、このビットに“０”または“１”の値を書き込み可能になっている。例えば、ＳＦＲ１６１のビット１（ｂ１）に“０”の値が保持されている間、ＳＦＲ１６１のビット１（ｂ１）から、例えばローレベルの信号が出力される。一方、ＳＦＲ１６１のビット１（ｂ１）に“１”の値が保持されている間、ＳＦＲ１６１のビット１（ｂ１）から、例えばハイレベルの信号が出力される。エッジ検出回路１６２は、ＳＦＲ１６１のビット１（ｂ１）からの信号の立ち上がり（例えば、ローレベルからハイレベルへの切り替わり）を検出したときの一定時間だけ、ハイレベルの信号を出力する。スイッチ１６４は、例えばトランジスタやＦＥＴ等により構成されており、エッジ検出回路１６２からのハイレベルの信号を受けているときだけ、オン状態となる。これにより、Ｖｃｃ（例えば、電源端子からの電源供給、または外部端末２から電磁誘導方式または電波方式で行われる電源供給による）からのキャパシタ１６５に電荷が蓄積される。ＦＦ１６６は、揮発性であり、キャパシタ１６５からの電源供給があるときだけ（つまり、キャパシタに蓄えられた電荷が一定量放電され所定時間）、“１”の値を保持することが可能な論理回路である。これにより、ラッチ回路１６の設定は、オンされた時点から所定時間が経過するとオフに変化する。ＦＦ１６６のＳ（セット）にハイレベルの信号が入力されると、“１”の値が保持され、その情報がＦＦ１６６のＱから出力される。つまり、“１”の値が保持されている間、ＦＦ１６６のＱからハイレベルの信号が出力される。ＳＦＲ１６１のビット３（ｂ３）は、ＦＦ１６６のＱからハイレベルの信号を受けている間、“１”の値を保持する。
【００２４】
一方、ＳＦＲ１６１のビット２（ｂ２）は、ラッチ回路１６の設定をオフにするためのビットであり、ＣＰＵ１１は、バス１７を介して、このビットに“０”または“１”の値を書き込み可能になっている。エッジ検出回路１６３は、ＳＦＲ１６１のビット２（ｂ２）からの信号の立ち上がりを検出したときの一定時間だけ、ハイレベルの信号を出力する。ＦＦ１６６のＲ（リセット）にハイレベルの信号が入力されると、“０”の値が保持され、その情報がＦＦ１６６のＱから出力される。つまり、“０”の値が保持されている間、ＦＦ１６６のＱからローレベルの信号が出力される。ＳＦＲ１６１のビット３（ｂ３）は、ＦＦ１６６のＱからローレベルの信号を受けている間、“０”の値を保持する。ＣＰＵ１１は、ＳＦＲ１６１のビット３（ｂ３）に保持されている値を、バス１７を介して読み出すことで、ラッチ回路１６の設定チェックを行うことができる。
【００２５】
一方、図１（Ｃ）に示すラッチ回路１６は、ＳＦＲ１６１と、立上り検出回路１６７と、立下り検出回路１６８、スイッチ１６４、キャパシタ１６５、及びＦＦ１６６等を備えて構成される。
【００２６】
図１（Ｃ）に示すラッチ回路１６では、図１（Ｂ）に示すラッチ回路１６とは異なり、ＳＦＲ１６１の１つのビット１（ｂ１）で、ラッチ回路１６の設定をオンまたはオフにするように構成されており、例えば、ビット１（ｂ１）に“０”の値が保持されている場合、ローレベルの信号が出力され、ビット１（ｂ１）に“１”の値が保持されている場合、ハイレベルの信号が出力される。そして、ＳＦＲ１６１のビット１（ｂ１）から出力された信号は、立上り検出回路１６７及び立下り検出回路１６８に入力されるように構成される。立上り検出回路１６７は、ＳＦＲ１６１のビット１（ｂ１）からの信号の立ち上がり（例えば、０→１）を検出したときの一定時間だけ、ハイレベルの信号を出力する。立上り検出回路１６８は、ＳＦＲ１６１のビット１（ｂ１）からの信号の立ち下がり（１→０）を検出したときの一定時間だけ、ハイレベルの信号を出力する。なお、その他の構成及び動作は、図１（Ｂ）に示すラッチ回路１６と同様である。
【００２７】
次に、図２を参照して、ＩＣチップ１ａの動作例について説明する。図２（Ａ）は、異常検知処理例を示すフローチャートであり、図２（Ｂ）は、重要処理を含むコマンド処理例を示すフローチャートである。図２（Ａ）に示す異常検知処理は、例えば、コマンド処理中の重要処理において行われる。図２（Ａ）に示すステップＳ１では、ＣＰＵ１１は、異常を検知したか否かを判定する（ステップＳ１）。そして、ＣＰＵ１１は、異常（例えば故障利用攻撃による誤動作）を検知した場合（ステップＳ１：ＹＥＳ）、バス１７を介して、ラッチ回路１６におけるＳＦＲ１６１のビット１（ｂ１）に“１”の値を書き込むことで、ラッチ回路１６の設定をオンにさせる（つまり、ラッチ回路１６にオンを示す値を保持させる）（ステップＳ２）。次いで、ＣＰＵ１１は、ＩＣチップ１ａの動作を停止する（ステップＳ３）。一方、ＣＰＵ１１は、異常を検知しない場合（ステップＳ１：ＮＯ）、コマンド処理を継続する（ステップＳ４）。
【００２８】
次に、図２（Ｂ）に示すコマンド処理は、例えば外部端末２から照合コマンドを受信した場合に開始される。図２（Ｂ）に示すステップＳ１では、ＣＰＵ１１は、ラッチ回路１６におけるＳＦＲ１６１のビット３（ｂ３）に保持されている値をバス１７を介して読み出す（ステップＳ１１）。次いで、ＣＰＵ１１は、読み出した値をチェックし、当該チェックした値がオフを示す値であるか否かを判定する（ステップＳ１２）。そして、ＣＰＵ１１は、チェックした値がオフを示す値であると判定した場合（ステップＳ１２：ＹＥＳ）、重要処理を行う（ステップＳ１３）。このように、ＩＣチップ１ａの重要処理を開始する前に、ラッチ回路１６の設定チェックを行うことで、重要処理の実施を一定の時間保護することができる。一方、ＣＰＵ１１は、チェックした値がオフを示す値でないと判定した場合（ステップＳ１２：ＮＯ）、外部端末２へエラー出力を行う（ステップＳ１４）。これにより、外部端末２へエラーが発生したことが通知される。
【００２９】
以上説明したように、上記実施形態によれば、異常が検知されたとき、時間的に状態が変化するラッチ回路１６にオンを示す値を保持させ、重要処理を行う前にラッチ回路１６に保持されている値をチェックし、当該チェックした値がオフを示す値である場合、上記重要処理を行うように構成したので、ＩＣチップ１ａのセキュリティレベルを維持しつつ利便性を向上させることができる。すなわち、上述した方法によれば、一定時間経過すると再度ＩＣカード１が利用可能となるため利便性が向上する。加えて、攻撃を検知した際に一定時間、ＩＣチップ１ａの動作を制限できるため、短い時間で連続した攻撃ができず、セキュリティレベルが下がらない。
【００３０】
なお、上記実施形態においては、電子情報記録媒体としてＩＣチップ１ａを例にとって説明したが、ＩＣチップ１ａ以外の例えば組み込み型のマイクロコンピュータに対して本発明を適用してもよい。
【符号の説明】
【００３１】
１  ＩＣカード
１１  ＣＰＵ
１２  ＲＯＭ
１３  ＲＡＭ
１４  ＮＶＭ
１５  Ｉ／Ｏ回路
１６  ラッチ回路
【図１】
0006387767.tif 000002
【図２】
0006387767.tif 000003