説明

故障攻撃の検知方法、及び、セキュリティデバイス

【課題】セキュリティデバイスに実装されたICチップにレーザー光を照射するなどし、セキュリティデバイスに対して故障攻撃が行われた際、セキュリティデバイスが故障攻撃を検知できる方法を提供する。
【解決手段】本発明に係わる故障攻撃の検知方法では、セキュリティデバイスであるICカード1に備えられたCPUが、ICカード1の内部で実行する処理に利用するデータ値を所定のメモリアドレスから複数回読み出すステップ(S10、S11)、CPUが、メモリから読み出した各々のデータ値を比較するステップ(S12)、比較結果に応じて処理を分岐させるステップ(S13)、一致していないデータ値がある場合は、故障攻撃を検知した時に実施するエラー処理を実行するステップ(S14)を含む。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、半導体集積回路を実装したセキュリティデバイス(例えば、ICカード)に関し、更に詳しくは、レーザー光などを用い、メモリの内容を変化させる故障攻撃に対して耐タンパー性をセキュリティデバイスに持たせるための技術に関する。
【背景技術】
【0002】
近年、ICカードなどを代表とする機密情報を格納した組み込み機器に対するセキュリティデバイスへの攻撃が多く研究され、その成果が報告されている。セキュリティデバイスに対する攻撃方法の1つとしては、電力消費量や電磁波などのサイドチャネルを観測することで、セキュリティデバイスに格納されたDESの秘密鍵を解読するサイドチャネル攻撃が有名で、例えば、特許文献1など様々な公知文献で、サイドチャネル攻撃に対して耐タンパー性をセキュリティデバイスに持たせる技術が開示されている。
【0003】
しかし、セキュリティデバイスに対する攻撃方法は、上述したサイドチャネル攻撃に限らず、サイドチャネル攻撃以外の攻撃としては、セキュリティデバイスに実装された半導体集積回路(ICチップ)にレーザー光を照射し、メモリの内容を変化させ、故意的に誤動作を誘発させ、ICチップの誤動作を足掛かりとして、DESの秘密鍵を解読する故障攻撃(Fault Analysis)がある。
【0004】
サイドチャネル攻撃の対策手法が、レーザー光などを利用した故障攻撃に対しても有効であればよいが、攻撃手法が異なるため、サイドチャネル攻撃の対策手法は、レーザー光を用いた故障攻撃に対して有効ではない。
【0005】
故障攻撃によるICチップの誤動作を検知する手法として、特許文献2などに記述されているようなウォッチドッグタイマと呼ばれる手法を用いることも考えられる。確かに、レーザー光がセキュリティデバイスに照射されて、プログラムコードが格納されている箇所のメモリの内容が変化した場合は、セキュリティデバイスのICチップが暴走するため、ウォッチドックタイマによって暴走を検知できる可能性はある。
【0006】
しかし、プログラムコードではなくデータを格納されている箇所のメモリの内容が変化した場合の誤動作は、ICチップの暴走によるものではないケースがあるため、ウォッチドックタイマによってこの誤動作を検知できない。
【0007】
【特許文献1】特開2002−74245号公報
【特許文献2】特開平5−224999号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
そこで、本発明は、ICカードに代表されるセキュリティデバイスに対し、レーザー光などを利用した故障攻撃が行われ、メモリに格納されたデータ値が変化したことを検知できる方法、この方法を実行するためにセキュリティデバイスに組み込まれるコンピュータプログラム、及び、このコンピュータプログラムが実装されたセキュリティデバイスを提供することを目的とする。
【課題を解決するための手段】
【0009】
上述した課題を解決する第1の発明は、ICチップを実装したセキュリティデバイスに対する故障攻撃を検知する方法であって、前記ICチップに備えられたプロセッサが、前記セキュリティデバイスの内部で実行する処理に利用するデータ値を所定のメモリアドレスから複数回読み出すステップa、前記プロセッサが、前記ステップaで読み出した各々の前記データ値を比較し、一致していない前記データ値がある場合は、故障攻撃を検知した時に実施するエラー処理を実行するステップb、を含むことを特徴とする故障攻撃の検知方法である。
【0010】
更に、第2の発明は、第1の発明に記載の故障攻撃の検知方法であって、前記プロセッサは、前記ステップaにおいて、揮発性メモリから前記データ値を読み出す時は、連続して前記データ値を読み出すことを特徴とする故障攻撃の検知方法である。
【0011】
更に、第3の発明は、第1の発明に記載の故障攻撃の検知方法であって、前記プロセッサは、前記ステップaにおいて、不揮発性メモリから前記データ値を読み出す時は、所定の時間間隔を空けて前記データ値を読み出すことを特徴とする故障攻撃の検知方法である。
【0012】
更に、第4の発明は、ICチップを実装したセキュリティデバイスであって、前記セキュリティデバイスの内部で実行する処理に利用するデータ値を所定のメモリアドレスから複数回読み出し、読み出した各々の前記データ値を比較し、一致していない前記データ値がある場合は、故障攻撃を検知した時に実施するエラー処理を実行する手段を備えていることを特徴とするセキュリティデバイスである。
【0013】
更に、第5の発明は、第4の発明に記載のセキュリティデバイスであって、前記手段は、前記データ値を連続して複数回読み出す手段であることを特徴とするセキュリティデバイスである。
【0014】
更に、第6の発明は、第4の発明に記載のセキュリティデバイスであって、前記手段は、所定の時間間隔を空けて前記データ値を複数回読み出す手段であることを特徴とするセキュリティデバイスである。
【0015】
更に、第7の発明は、ICチップを実装したセキュリティデバイスに実装されるコンピュータプログラムであって、前記セキュリティデバイスの内部で実行する処理に利用するデータ値を所定のメモリアドレスから複数回読み出し、読み出した各々の前記データ値を比較し、一致していない前記データ値がある場合は、故障攻撃を検知した時に実施するエラー処理を実行する手段として、前記セキュリティデバイスを機能させるためのコンピュータプログラムである。
【0016】
更に、第8の発明は、第7の発明に記載のコンピュータプログラムであって、前記手段は、前記データ値を連続して複数回読み出す手段であることを特徴とするコンピュータプログラムである。
【0017】
更に、第9の発明は、第7の発明に記載のコンピュータプログラムであって、前記手段は、所定の時間間隔を空けてデータ値を複数回読み出す手段であることを特徴とするコンピュータプログラムである。
【0018】
上述した第1の発明のように、所定のメモリアドレスからデータ値を複数回読み出し、各々のデータ値がすべて一致することを確認することで、レーザー光の照射などによってメモリの内容が変化した場合、最初に読み出したデータと2回目に読み出したデータは異なるため、レーザー光の照射などによる故障攻撃を検知することが可能になる。
【0019】
揮発性メモリに故障攻撃を受けた場合、データ値の内容が短い周期でランダムに変化することが知られているため、第2の発明のように、最初にデータ値を読み出した直後に、2回目のデータ値を読み出すことで、レーザー光の照射などによる故障攻撃を検知することが可能である。
【0020】
また、EEPROMやフラッシュメモリなどの電気的に書き換え可能な不揮発性メモリに関しては、レーザー光の照射などによって変化した値が一定期間保持される場合があるため、第3の発明のように、最初にデータ値を読み出してから、所定の時間が経過後に、再度、データ値を読み出すことで、レーザー光の照射などによる故障攻撃を検知することが可能である。
【0021】
第4の発明から第6の発明並びに第7の発明から第9の発明によれば、上述した第1の発明から第3の発明と同様の効果が得られる。
【発明の効果】
【0022】
このように、上述した本発明によれば、ICカードに代表されるセキュリティデバイスに対し、レーザー光などを利用した故障攻撃が行われ、メモリに格納されたデータが変化したことを検知できる方法、この方法を実行するためにセキュリティデバイスに組み込まれるコンピュータプログラム、及び、このコンピュータプログラムが実装されたセキュリティデバイスを提供できる。
【発明を実施するための最良の形態】
【0023】
ここから、セキュリティデバイスをICカード1としたときの実施形態について、図を参照しながら詳細に説明する。図1は、本実施形態に係わるICカード1の外観図で、図2は、ICカード1に実装されるICチップ2のアーキテクチャを説明する図である。
【0024】
図1に示したICカード1は、キャッシュカードやクレジットカードと同じ大きさのプラスチック製カードで、ICカード1には、ICチップ2がモールドされたICモジュール2aが実装されている。
【0025】
図1においては、ICカード1を接触ICカードとして図示しているが、ICカード1は、図外の端末装置と無線通信する非接触ICカード、または、接触通信と無線通信の2つの通信機能を備えたデュアルインターフェースICカードであってもよい。
【0026】
加えて、ICカード1の形状は問わず、ICカード1はキャッシュカードと同じ形状でなく、ICモジュール2aの近辺を短冊状に切り取った形状をしているSIM(Subscriber Identity Module)或いはUIM(Universal Subscriber Identity Module)であってもよい。
【0027】
また、図2に図示したように、ICチップ2には、演算機能およびICチップ2の回路やメモリを制御する機能を備えた中央演算装置20(CPU:Central Processing Unit)、高速読み取り可能なメモリであるキャッシュ26(Cache)、揮発性メモリとしてランダムアクセスメモリ21(RAM:Random Access Memory)、読み出し専用の不揮発性メモリ23(ROM:Read Only Memory、)、電気的に書換え可能な不揮発性メモリとしてEEPROM22(EEPROM:Electrically Erasable Programmable Read-Only Memoryの略)、および、I/O回路25を制御し、ターミナル(図示していない)と所定の伝送プログラムで通信(例えば、ISO/IEC7816に準じた通信)するためのUART24を備えている。
【0028】
ICチップ2を実装したICカード1は、ICチップ2にレーザー光を照射することで、レーザー光のエネルギーによって、フリップフロップで構成されるメモリ(例えば、RAM21やEEPROM22など)の内容を変化させ、ICカード1に誤動作を引き起こし、この誤動作を足掛かりとして、EEPROM22に記憶された暗号鍵などを解読する故障攻撃を受ける危険性に常にさらされている。
【0029】
そこで、本発明が適用されたICカード1には、ICカード1のメモリの状態を変化させる故障攻撃を検知するための手段として、本発明に係わる方法を実施するためのコンピュータプログラムが、ICチップ2のROM23(或いは、EEPROM22でもよい)に実装され、このコンピュータプログラムが実行されることで、ICカード1は、故障攻撃を受けているか否かを検知する。
【0030】
図3は、本発明に係わる故障攻撃の検知方法の基本手順を示したフロー図である。本発明に係わる故障攻撃の検知方法では、まず、メモリの所定アドレスに格納されているデータ値を読み出し、読み出したデータ値(A1)をCPUのレジスタなどに格納する(S10)。その後に、同じ所定アドレスに格納されているデータ値を読み出し(S11)、CPUの命令セットに含まれるXOR命令などを利用して、最初に読み出したデータ値(A1)と2回目に読み出したデータ値(A2)を比較する(S12)。
【0031】
そして、データ値(A1)とデータ値(A2)が等値であれば、ICカード1は、故障攻撃を受けていないと判断し、通常処理を実行する(S13)。また、データ値(A1)とデータ値(A2)が等値でなければ、ICカード1は、レーザー光の照射などによる故障攻撃を受けていると判断し、故障攻撃を検知したときの処理(例えば、ICカードの動作停止)を実行する(S14)。
【0032】
メモリの所定アドレスから最初にデータ値(A1)を読み出すタイミングは、メモリに記憶されたデータ値を利用する処理を開始する際に、処理に利用するデータ値をメモリから読み出すときになるが、レーザー光が照射された時にメモリが変化する態様はメモリの種類によって異なるため、2回目にデータ値(A2)を読み出すタイミングは、メモリの種類とICカード1が実行する処理の内容に依存する。
【0033】
よって、図3で図示した故障攻撃の検知方法のフローを実施するためのコンピュータプログラムの詳細な仕様は、メモリの種類とICカード1が実行する処理の内容によって決定され、ICカード1が実行する処理のプログラムコードに組み込まれて、ICカード1に実装されることになる。
【0034】
ここから、ICカード1の処理の一例について、本発明に係わる故障攻撃の検知方法を適用した対策例について説明する。
【0035】
図4は、ICカード1で実行される処理の一例を示したダイアグラムである。図4で図示した処理では、まず、ターミナルからコマンドメッセージを受信することで、I/O回路25より演算Aを実施するようCPU20に通達され(S1)、CPU20は、演算Aを実施するため、ICチップ2に実装されているEEPROM用ルーチンを呼び出し、EEPROM22に格納されているデータaの値を読み出す動作を行い(S2)、CPU20から読み出し要求を受けたデータaの値はRAM21に一端格納された後(S3)、キャッシュ26に格納される(S4)。
【0036】
次に、CPU20は、RAM21に格納されたデータaの値を読み出して、CPU20のレジスタに格納し(S5)、更に、EEPROM用ルーチンを呼び出して、EEPROM22に格納されているデータbの値を読み出す動作を行い(S6)、EEPROM22から読み出したデータbの値は、データaの値とは異なるCPU20のレジスタに格納される(S7)。
【0037】
そして、CPU20は、CPU20のレジスタに格納されたデータaの値とデータbの値を用いて演算Aを実施した後(S8)、演算Aの処理結果をI/O回路25に対して出力の指示を出す(S9)。
【0038】
次に、図外のターミナルからコマンドメッセージを受信することで、I/O回路25よりデータaの値を読み出するようにCPUに通達されると(S10)、S4でキャッシュ26に格納されたデータa の値を読み出し(S11)、I/O回路25に対しデータaの出力を指令する(S12)。
【0039】
上述したように、レーザー光などを用いて、メモリの内容を変化させる故障攻撃を受けたときにメモリが変化する態様は、メモリの種類によって異なるため、図2で図示したICチップ2のアーキテクチャに含まれるメモリの種類それぞれに対する対策例について記述する。
【0040】
まず、RAM21に対する対策例について説明する。図5は、RAM21に対して、メモリの内容を変化させる故障攻撃の検知方法を適用した対策例を説明する図である。レーザー光がRAM21に照射されると、レーザー光の照射中に、RAM21のメモリに格納されている値は常にランダムに変化し続ける特性がある。
【0041】
このため、図5で図示したように、RAM21に対して、本発明の故障攻撃の検知方法を適用する際は、RAM21に格納されているデータaの値を最初に読み出して、CPU20のレジスタに格納した後(S5)、CPU20は、連続して、データaの値を再度読み出す動作を行い(S5−1)、2回目に読み出したデータaの値を、1回目とは異なるCPU20のレジスタに格納し(S5−2)、S5とS5−2それぞれでレジスタに格納したデータ値を比較することで、故障攻撃の有無を判断する(S5−3)。
【0042】
図6は、キャッシュ26に対して、メモリの内容を変化させる故障攻撃の検知方法を適用した対策例を説明する図である。キャッシュ26もRAM21と同様に、レーザー光がキャッシュ26に照射されると、レーザー光の照射中に、キャッシュ26に格納されているデータ値は常にランダムに変化し続ける特性がある。
【0043】
よって、RAM21に対する対策例と同様に、図6のように、キャッシュ26に格納されているデータaの値を最初に読み出し、CPU20のレジスタに格納した後(S11)、連続して、CPU20は、キャッシュ26からデータaの値を読み出す動作を行い(S11−1)、2回目にキャッシュ26から読み出したデータaの値を、1回目とは異なるCPU20のレジスタに格納し(S11−2)、S11とS11−2それぞれでレジスタに格納したデータ値を比較することで、故障攻撃の有無を判断する(S11−3)。
【0044】
EEPROM22は、RAM21やキャッシュ26と異なり、レーザー光がEEPROMに照射されると、レーザー光の照射などによって変化した値が一定期間保持される場合がある。そこで、EEPROM22に対して対策を施す時は、EEPROM22から最初にデータ値を読み出してから、ある時間間隔を空けて、2回目のデータ値の読み出しを行う。
【0045】
図7は、EEPROM22に対して、故障攻撃の検知方法を適用した対策例を説明する図である。図7に図示したように、EEPROM用ルーチンを利用して、EEPROM22から読み出したデータbの値を、CPU20のレジスタに格納し(S7)、演算Aを実行した後(S8)、I/0回路25に演算Aの演算結果の出力指示を出す前に、再度、EEPROM用ルーチンを利用して、EEPROM22からデータbの値を読み出す動作を行い(S8−1)、EEPROMから読み出たデータbの値をCPU20のレジスタに格納した後(S8−2)、S7とS8−2それぞれでレジスタに格納したデータ値を比較することで、故障攻撃の有無を判断する(8−3)。
【0046】
なお、本発明は、これまで説明した実施の形態に限定されることなく、種々の変形や変更が可能である。例えば、データ値を読み出す回数は、2回に限ることなく、2回以上であれば良く、所定アドレスからデータ値を読み出す回数に限らず、読み出した各々のデータ値がすべて一致しなければ、ICカード1はレーザー攻撃を受けていると判断する。
【0047】
更に、図4で図示した処理における対策例では、EEPROM22に対策を施すとき、最初にデータaを読み出してから、演算Aの処理が終了した後に、2回目のデータaの値を読み出しているが、最初にデータaの値を読み出してから、2回目にデータaの値を読み出すまでの時間は、ICチップ2のタイマーなどを利用して計測することもできる。
【0048】
更に、本実施形態では、本発明に係わるセキュリティデバイスをICカードとしているが、当然のことながら、セキュリティデバイスはICカード以外のデバイスであっても構わない。例えば、ICチップが実装されたUSBトークン(USBキー)をセキュリティデバイスとし、本発明を適用することも可能であるし、ICチップ2のアーキテクチャは図2で図示したアーキテクチャに限らず、図2で図示した以外の種類のメモリ(例えば、フラッシュメモリ)をICチップ2は備えていてもよい。
【図面の簡単な説明】
【0049】
【図1】本実施形態に係わるICカードの外観図。
【図2】ICチップのアーキテクチャを説明する図。
【図3】故障攻撃の検知方法の基本手順を示したフロー図。
【図4】ICカードで実行される処理の一例を示したダイアグラム。
【図5】RAMに対する対策例を説明する図。
【図6】キャッシュに対する対策例を説明する図。
【図7】EEPROMに対する対策例を説明する図。
【符号の説明】
【0050】
1 ICカード
2 ICチップ
20 CPU
21 RAM21
22 EEPROM
23 ROM
24 UART
25 I/O回路


【特許請求の範囲】
【請求項1】
ICチップを実装したセキュリティデバイスに対する故障攻撃を検知する方法であって、前記ICチップに備えられたプロセッサが、前記セキュリティデバイスの内部で実行する処理に利用するデータ値を所定のメモリアドレスから複数回読み出すステップa、前記プロセッサが、前記ステップaで読み出した各々の前記データ値を比較し、一致していない前記データ値がある場合は、故障攻撃を検知した時に実施するエラー処理を実行するステップb、を含むことを特徴とする故障攻撃の検知方法。
【請求項2】
請求項1に記載の故障攻撃の検知方法であって、前記プロセッサは、前記ステップaにおいて、揮発性メモリから前記データ値を読み出す時は、連続して前記データ値を読み出すことを特徴とする故障攻撃の検知方法。
【請求項3】
請求項1に記載の故障攻撃の検知方法であって、前記プロセッサは、前記ステップaにおいて、不揮発性メモリから前記データ値を読み出す時は、所定の時間間隔を空けて前記データ値を読み出すことを特徴とする故障攻撃の検知方法。
【請求項4】
ICチップを実装したセキュリティデバイスであって、前記セキュリティデバイスの内部で実行する処理に利用するデータ値を所定のメモリアドレスから複数回読み出し、読み出した各々の前記データ値を比較し、一致していない前記データ値がある場合は、故障攻撃を検知した時に実施するエラー処理を実行する手段を備えていることを特徴とするセキュリティデバイス。
【請求項5】
請求項4に記載のセキュリティデバイスであって、前記手段は、前記データ値を連続して複数回読み出す手段であることを特徴とするセキュリティデバイス。
【請求項6】
請求項4に記載のセキュリティデバイスであって、前記手段は、所定の時間間隔を空けて前記データ値を複数回読み出す手段であることを特徴とするセキュリティデバイス。
【請求項7】
ICチップを実装したセキュリティデバイスに実装されるコンピュータプログラムであって、前記セキュリティデバイスの内部で実行する処理に利用するデータ値を所定のメモリアドレスから複数回読み出し、読み出した各々の前記データ値を比較し、一致していない前記データ値がある場合は、故障攻撃を検知した時に実施するエラー処理を実行する手段として、前記セキュリティデバイスを機能させるためのコンピュータプログラム。
【請求項8】
請求項7に記載のコンピュータプログラムであって、前記手段は、前記データ値を連続して複数回読み出す手段であることを特徴とするコンピュータプログラム。
【請求項9】
請求項7に記載のコンピュータプログラムであって、前記手段は、所定の時間間隔を空けてデータ値を複数回読み出す手段であることを特徴とするコンピュータプログラム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2009−259126(P2009−259126A)
【公開日】平成21年11月5日(2009.11.5)
【国際特許分類】
【出願番号】特願2008−109625(P2008−109625)
【出願日】平成20年4月18日(2008.4.18)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】