(57)【要約】【課題】セキュリティデバイスに実装されたＩＣチップにレーザー光を照射するなどし、セキュリティデバイスに対して故障攻撃が行われた際、故障攻撃を検知できるセキュリティデバイスを提供する。【解決手段】本発明に係わるセキュリティデバイスであるＩＣカード１に実装されるＩＣチップ２には、ＲＡＭやＥＥＰＲＯＭなどのメモリとＣＰＵを備えたコア２０が２つ（コア２０Ａとコア２０Ｂ）搭載され、ＩＣカード１のＩＣチップ２に搭載されるＵＡＲＴ２２は、コア２０Ａとコア２０Ｂの双方にコマンドメッセージを引き渡し、コア２０Ａから得られるレスポンスとコア２０Ｂから得られるレスポンスが異なるとき、ＩＣカード１が故障攻撃を受けていると判断し、エラー処理（ＩＣカード１の動作停止）を実行する。【選択図】図３
2009289104.tif 000002
【特許請求の範囲】
【請求項１】
ＩＣチップを実装したセキュリティデバイスであって、前記ＩＣチップには、ＣＰＵとメモリを備えた２つのコアと、各々の前記コアに同じ処理を実行させた後に、各々の前記コアから得られる処理結果を比較し、前記処理結果が一致した場合には、前記処理結果をターミナルに送信し、不一致の場合には、前記処理結果の送信を行わない処理を制御する手段が備えられていることを特徴とするセキュリティデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードに代表され、半導体集積回路（ＩＣチップ）を実装したセキュリティデバイス（例えば、ＩＣカード）に関し、更に詳しくは、レーザー光などを用いた故障攻撃に対して耐タンパー性をセキュリティデバイスに持たせるための技術に関する。
【背景技術】
【０００２】
近年、ＩＣカードなどを代表とする機密情報を格納した組み込み機器に対するセキュリティデバイスへの攻撃が多く研究され、その成果が報告されている。セキュリティデバイスに対する攻撃方法の１つとしては、電力消費量や電磁波などのサイドチャネルを観測することで、セキュリティデバイスに格納されたＤＥＳの秘密鍵を解読するサイドチャネル攻撃が有名で、例えば、特許文献１など様々な公知文献で、サイドチャネル攻撃に対して耐タンパー性をセキュリティデバイスに持たせる技術が開示されている。
【０００３】
しかし、セキュリティデバイスに対する攻撃方法は、上述したサイドチャネル攻撃に限らず、サイドチャネル攻撃以外の攻撃としては、セキュリティデバイスに実装された半導体集積回路（ＩＣチップ）にレーザー光を照射し、メモリの内容を変化させ、故意的に誤動作を誘発させ、ＩＣチップの誤動作を足掛かりとして、ＤＥＳの秘密鍵を解読する故障攻撃(Fault Analysis)がある。
【０００４】
サイドチャネル攻撃の対策手法が、レーザー光などを利用した故障攻撃に対しても有効であればよいが、攻撃の手法が異なるため、サイドチャネル攻撃の対策手法は、レーザー光を用いた故障攻撃に対して有効ではない。
【０００５】
レーザー光などを用いたＩＣチップの誤動作を検知する手法として、特許文献２などに記述されているようなウォッチドッグタイマと呼ばれる手法を用いることも考えられる。確かに、レーザー光がセキュリティデバイスに照射されて、プログラムコードが格納されている箇所のメモリの内容が変化した場合は、セキュリティデバイスのＩＣチップが暴走するため、ウォッチドックタイマによって暴走を検知できる可能性はある。
【０００６】
しかし、プログラムコードではなくデータを格納されている箇所のメモリの内容が変化した場合の誤動作は、ＩＣチップの暴走によるものではないため、ウォッチドックタイマによってこの誤動作を検知できる可能性は低い。
【０００７】
【特許文献１】特開２００２−７４２４５号公報
【特許文献２】特開平５−２２４９９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
そこで、本発明は、ＩＣカードに代表されるセキュリティデバイスであって、レーザー光などを利用した故障攻撃が行われ、メモリに格納されているデータ値が変化したことを検知する機能を備えたセキュリティデバイスを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決する発明は、ＩＣチップを実装したセキュリティデバイスであって、前記ＩＣチップには、ＣＰＵとメモリを備えた２つのコアと、各々の前記コアに同じ処理を実行させた後に、各々の前記コアから得られる処理結果を比較し、前記処理結果が一致した場合には、前記処理結果をターミナルに送信し、不一致の場合には、前記処理結果の送信を行わない処理を制御する手段が備えられていることを特徴とするセキュリティデバイスである。
【発明の効果】
【００１０】
上述した本発明によれば、セキュリティデバイスに実装されるＩＣチップのいずれかのコアが故障攻撃を受けると、故障攻撃を受けたコアに備えられたメモリの内容が変化し、２つのコアから得られる処理結果に差が生じるため、同じ処理を各々のコアに実施させ、各々のコアから得られる処理結果を比較すれば、故障攻撃の有無を検知できるようになる。
【発明を実施するための最良の形態】
【００１１】
ここから、セキュリティデバイスをＩＣカード１としたときの実施形態について、図を参照しながら詳細に説明する。図１は、本実施形態に係わるＩＣカード１の外観図で、図２は、ＩＣカード１に実装されるＩＣチップ２のブロック図である。
【００１２】
図１に示したＩＣカード１は、キャッシュカードやクレジットカードと同じ大きさのプラスチック製カードで、ＩＣカード１には、ＩＣチップ２がモールドされたＩＣモジュール２ａが実装されている。
【００１３】
図１においては、ＩＣカード１を接触ＩＣカードとして図示しているが、ＩＣカード１は、図外の端末装置と無線通信する非接触ＩＣカード、または、接触通信と無線通信の２つの通信機能を備えたデュアルインターフェースＩＣカードであってもよい。
【００１４】
加えて、ＩＣカード１の形状は問わず、ＩＣカード１はキャッシュカードと同じ形状でなく、ＩＣモジュール２ａの近辺を短冊状に切り取った形状をしているＳＩＭ（Subscriber Identity Module）或いはＵＩＭ(Universal Subscriber Identity Module)であってもよい。
【００１５】
図２に図示したように、ＩＣチップ２は、２つのコア２０（コア２０Ａとコア２０Ｂ）が実装されたデュアルコアチップで、コア２０Ａは、演算機能を備えた中央演算装置２００Ａ（CPU：Central Processing Unit）、高速読み取り可能なメモリであるキャッシュ２０４Ａ（Cache）、揮発性メモリとしてランダムアクセスメモリ２０１Ａ（RAM：Random Access Memory）、読み出し専用の不揮発性メモリ２０３Ａ（ROＭ：Read Only Memory、）、電気的に書換え可能な不揮発性メモリとしてＥＥＰＲＯＭ２０２Ａ（EEPROM：Electrically Erasable Programmable Read-Only Memoryの略）を備え、コア２０Ｂは、コア２０Ａと同様に、ＣＰＵ２００Ｂ、キャッシュ２０４Ｂ、ＲＡＭ２０１Ｂ、ＲＯＭ２０３ＢおよびＥＥＰＲＯＭ２０２Ｂ（EEPROM：Electrically Erasable Programmable Read-Only Memoryの略）を備えている。
【００１６】
ＩＣチップ２に備えられたコア２０Ａ及びコア２０Ｂは同じ信号（Ｖｃｃ、ＧＮＤ、ＣＬＫ、ＲＳＴ）で動作し、各々は独立して動作するが、それぞれ異なる処理を実行するのではなく同じ処理を実行する。
【００１７】
加えて、ＩＣチップ２には、コア２０Ａおよびコア２０Ｂ以外に、Ｉ／Ｏ回路２２を制御し、ターミナル（図示していない）と所定の伝送プログラムで通信（例えば、ＩＳＯ／ＩＥＣ７８１６に準じた通信）するための一つのＵＡＲＴ２１を備えている。
【００１８】
ＩＣカード１に実装されるＩＣチップ２をデュアルコアチップにするのは、レーザー光などを用い、メモリの内容を変化させる故障攻撃に対して、ＩＣカード１に耐タンパー性を持たせるためである。図外のターミナルからの要求に従い、コア２０Ａおよびコア２０Ｂで同じ処理を実行させ、コア２０Ａで得られる処理結果とコア２０Ｂで得られる処理結果を比較し、各々の処理結果が一致すれば、レーザー光などを用いた故障攻撃をＩＣチップ２は受けていないと判断できる。
【００１９】
コア２０Ａ或いはコア２０Ｂのいずれかが、レーザー光などを用いた故障攻撃を受けていれば、故障攻撃を受けているコア２０のメモリ内容が変化するため、コア２０Ａから得られる処理結果とコア２０Ｂから得られる処理結果は異なるため、コア２０Ａで得られる処理結果とコア２０Ｂで得られる処理結果が不一致であれば、レーザー光などを用いた故障攻撃をＩＣチップ２は受けていると判断できる。
【００２０】
そこで、本実施形態のＩＣカード１のＵＡＲ２１には、コア２０Ａとコア２０Ｂに同じ処理を実行させた後に、コア２０Ａおよびコア２０Ｂから得られる処理結果を比較し、処理結果が一致した場合には、処理結果をターミナルに送信し、不一致の場合には、前記処理結果の送信を行わない処理を制御する機能が備えられている。
【００２１】
本実施形態のＵＡＲＴ２１には、図外のターミナルから受信したコマンドメッセージを、コア２０ＡのＲＡＭ２０１Ａおよびコア２０ＢのＲＡＭ２０１Ｂの所定のアドレスに格納し、コアＡとコアＢの両方に処理を依頼する機能と、コア２０Ａから送信依頼のあったＲＡＭ２０１Ａ上の送信データと、コア２０Ｂから送信依頼のあったＲＡＭ２０１Ｂ上の送信データを比較し、各々の送信データが一致したときにのみ、いずれかの送信データをＩ／Ｏ回路２２を利用してターミナルに送信する機能を備えている。
【００２２】
なお、各々の送信データが不一致であるとき、ＵＡＲＴ２１は故障攻撃を受けていると判断し、送信データの送信を行わず、それ以降のコマンドメッセージの受け渡しを中止する。
【００２３】
図３は、本実施形態のＩＣカード１の動作手順を示したフロー図である。ＩＣカード１の動作手順では、まず、図外のターミナルから送信されるコマンドメッセージをＩＣカード１は受信する（Ｓ１）。
【００２４】
図外のターミナルから送信されるコマンドメッセージがＩ／Ｏ回路２２に入力されると、ＩＣカード１のＵＡＲＴ２１が作動し、ＵＡＲＴ２１はコマンドメッセージを、コア２０ＡのＲＡＭ２０１Ａおよびコア２０ＢのＲＡＭ２０１Ｂの所定のアドレスに格納し、コア２０Ａ及びコア２０Ｂに対してコマンドメッセージの処理を依頼する。
【００２５】
ＵＡＲＴ２１からコマンドメッセージが引き渡されると、ＩＣチップ２のコア２０Ａは引き渡されたコマンドメッセージを処理し、コア２０Ａはコマンドメッセージの処理が完了すると、送信データとしてレスポンスメッセージをＲＡＭ２０１Ａの所定のアドレスに格納し、レスポンスメッセージの送信をＵＲＡＴ２１に依頼する（Ｓ２Ａ）。
【００２６】
同様に、ＵＡＲＴ２１からコマンドメッセージが引き渡されると、ＩＣチップ２のコア２０Ｂも引き渡されたコマンドメッセージを処理し、コアＢはコマンドメッセージの処理が完了すると、送信データとしてレスポンスメッセージをＲＡＭ２０１Ｂの所定のアドレスに格納し、レスポンスメッセージの送信をＵＲＡＴ２１に依頼する（Ｓ２Ｂ）。
【００２７】
コア２０Ａおよびコア２０Ｂからレスポンスメッセージの送信依頼を受けると、ＵＡＲＴ２１は、コア２０Ａから送信要求を受けたレスポンスメッセージとコア２０Ｂから送信要求を受けたレスポンスメッセージを比較する（Ｓ３）。
【００２８】
そして、ＵＡＲＴ２１は、コア２０Ａのレスポンスメッセージとコア２０Ｂのレスポンスメッセージの比較結果によって処理を分岐させ（Ｓ４）、コア２０Ａのレスポンスメッセージとコア２０Ｂのレスポンスメッセージが一致していれば、コア２０Ａのレスポンスメッセージとコア２０Ｂのレスポンスメッセージのいずれかをターミナルへ送信し（Ｓ５）、コア２０Ａのレスポンスメッセージとコア２０Ｂのレスポンスメッセージが不一致であれば、レスポンスメッセージの送信を中止し、これ以降のコマンドメッセージの受け渡しを中止する（Ｓ６）。
【００２９】
なお、本実施形態では、本発明に係わるセキュリティデバイスをＩＣカードとしているが、当然のことながら、セキュリティデバイスはＩＣカード以外のデバイスであっても構わない。例えば、ＩＣチップが実装されたＵＳＢトークン（ＵＳＢキー）をセキュリティデバイスとし、本発明を適用することも可能である。
【００３０】
更に、本実施形態では、ＩＣチップ２のＵＡＲＴ２１に、コア２０Ａで得られる処理結果とコア２０Ｂで得られる処理結果を比較する機能を持たせているが、例えば、コア２０Ａで得られる処理結果とコア２０Ｂで得られる処理結果を比較するための専用のハードウェアをＩＣチップ２に備えさせるなど、他の手法で実現されていてもよい。
【図面の簡単な説明】
【００３１】
【図１】本実施形態に係わるＩＣカードの外観図。
【図２】ＩＣカードに実装されるＩＣチップのブロック図。
【図３】ＩＣカードの動作手順を示したフロー図。
【符号の説明】
【００３２】
ＩＣカード１
２０、２０Ａ、２０Ｂ  コア
２００、２００Ａ、２００Ｂ  ＣＰＵ
２０１、２０１Ａ、２０１Ｂ  ＲＡＭ
２０２、２０２Ａ、２０２Ｂ  ＥＥＰＲＯＭ
２０３、２０３Ａ、２０３Ｂ  ＲＯＭ
２０４、２０４Ａ、２０４Ｂ  キャッシュ
２１  ＵＡＲＴ
２２  Ｉ／Ｏ回路
【図１】
2009289104.tif 000003
【図２】
2009289104.tif 000004
【図３】
2009289104.tif 000005