(57)【要約】【課題】秘密情報が漏洩する危険性を低下させる。【解決手段】攻撃検出部５２は、演算部５１の演算結果の検算をすることで故障利用攻撃を検出し、呼び出し部５３は、実行されることにより再帰呼び出しされる再帰関数を呼び出し、供給部５５は、呼び出し部５３により呼び出された再帰関数が実行されて、再帰呼び出しされる毎に、再帰関数の実行により得られるリターンアドレスを、秘密情報を含むデータを格納するRAM３２のスタック領域３２ａに供給する。本発明は、非接触ICカード、または、非接触ICカードの機能を有する携帯電話機等の情報処理装置に適用することができる。【選択図】図１
2010136066.tif 000002
【特許請求の範囲】
【請求項１】
秘密情報を含むデータを格納する、書き換え可能なメモリと、
実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出し手段と、
前記呼び出し手段により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給手段と
を備える情報処理装置。
【請求項２】
故障利用攻撃を検出する攻撃検出手段をさらに備え、
前記呼び出し手段は、前記攻撃検出手段が故障利用攻撃を検出したときに、前記再帰関数を呼び出す
請求項１に記載の情報処理装置。
【請求項３】
前記メモリは、揮発性メモリであり、
前記供給手段は、前記再帰関数のリターンアドレスを、前記メモリのスタック領域に供給する
請求項２に記載の情報処理装置。
【請求項４】
所定の演算を行う演算手段をさらに備え、
前記攻撃検出手段は、前記演算手段の演算結果の検算、または、前記メモリに格納されている前記データのチェックをすることで、故障利用攻撃を検出する
請求項２に記載の情報処理装置。
【請求項５】
外部の装置と非接触で通信を行う通信手段をさらに備え、
前記メモリは、前記通信手段が行う通信に関わる秘密情報を含む前記データを格納する
請求項２に記載の情報処理装置。
【請求項６】
秘密情報を含むデータを格納する、書き換え可能なメモリを備える情報処理装置の情報処理方法において、
実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出しステップと、
前記呼び出しステップの処理により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給ステップと
を含む情報処理方法。
【請求項７】
秘密情報を含むデータを格納する、書き換え可能なメモリを備える情報処理装置の処理をコンピュータに実行させるプログラムにおいて、
実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出しステップと、
前記呼び出しステップの処理により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給ステップと
を含む処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置および方法、並びにプログラムに関し、特に、秘密情報が漏洩する危険性を低下させることができるようにする情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【０００２】
近年、暗号処理中の非接触IC（Integrated Circuit）カードに対して、悪意のある者（攻撃者）が、故意に、放射線を照射したり、高電圧を印加したり、また、クロック周波数や駆動電圧を瞬間的に変動させる等、物理的障害（エラー）を発生させ、その結果得られる、誤った演算結果と、正常な処理により得られる演算結果とを比較することで、秘密鍵等の秘密情報を入手する攻撃手法（以下、故障利用攻撃という）が脅威となっている。
【０００３】
故障利用攻撃は、上述した演算結果の検算やメモリに記憶されているデータのチェック等を行うことにより検出される。そこで、故障利用攻撃を検出したときに、ハードウェアリセットを行ったり、無限ループ処理を行ったりすることで、非接触ICカードの動作を停止させて、秘密情報の漏洩を防ぐことが考えられている。
【０００４】
しかしながら、上述した手法では、故障利用攻撃を受けたときの演算結果等、揮発性メモリに秘密情報が残っている可能性があり、その秘密情報が、攻撃者に入手される恐れがある。
【０００５】
ところで、所定のサービスの要求があり、そのサービスを実行する関数を呼び出す際に、その関数へのポインタが元々保持されているテーブルとは別の、一時的な記憶領域内のテーブルに、その関数へのポインタを保持させ、その別のテーブルのポインタから関数を呼び出すことで、システム全体の動作に影響を与えることなく、サービスの入れ替えをできるようにした技術がある（例えば、特許文献１参照）。
【０００６】
【特許文献１】特開２０００−１３７６０５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述のように、揮発性メモリなどの記憶領域に、一時的に情報を記憶させることは、演算処理の上では有用であるが、その情報が、外部に漏洩させてはならない秘密情報である場合、その情報を記憶していることは好ましくない。
【０００８】
本発明は、このような状況に鑑みてなされたものであり、秘密情報が漏洩する危険性を低下させることができるようにするものである。
【課題を解決するための手段】
【０００９】
本発明の一側面の情報処理装置は、秘密情報を含むデータを格納する、書き換え可能なメモリと、実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出し手段と、前記呼び出し手段により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給手段とを備える。
【００１０】
前記情報処理装置には、故障利用攻撃を検出する攻撃検出手段をさらに設け、前記呼び出し手段には、前記攻撃検出手段が故障利用攻撃を検出したときに、前記再帰関数を呼び出させることができる。
【００１１】
前記メモリは、揮発性メモリであり、前記供給手段には、前記再帰関数のリターンアドレスを、前記メモリのスタック領域に供給させることができる。
【００１２】
前記情報処理装置には、所定の演算を行う演算手段をさらに設け、前記攻撃検出手段には、前記演算手段の演算結果の検算、または、前記メモリに格納されている前記データのチェックをすることで、故障利用攻撃を検出させることができる。
【００１３】
前記情報処理装置には、外部の装置と非接触で通信を行う通信手段をさらに設け、前記メモリには、前記通信手段が行う通信に関わる秘密情報を含む前記データを格納させることができる。
【００１４】
本発明の一側面の情報処理方法は、秘密情報を含むデータを格納する、書き換え可能なメモリを備える情報処理装置の情報処理方法であって、実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出しステップと、前記呼び出しステップの処理により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給ステップとを含む。
【００１５】
本発明の一側面のプログラムは、秘密情報を含むデータを格納する、書き換え可能なメモリを備える情報処理装置の処理をコンピュータに実行させるプログラムであって、実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出しステップと、前記呼び出しステップの処理により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給ステップとを含む処理をコンピュータに実行させる。
【００１６】
本発明の一側面においては、実行されることにより再帰呼び出しされる再帰関数が呼び出され、呼び出された再帰関数が実行されて、再帰呼び出しされる毎に、再帰関数の実行により得られるデータが、メモリに供給される。
【発明の効果】
【００１７】
本発明の一側面によれば、秘密情報が漏洩する危険性を低下させるようにすることが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態について図を参照して説明する。
【００１９】
［非接触ICカードの機能構成例］
図１は、本発明を適用した情報処理装置の一実施の形態としての非接触ICカードの機能構成例を示している。
【００２０】
図１の非接触ICカード１１は、耐タンパ性を有し、無線通信の相手である外部の装置との間で、公開鍵暗号方式による相互認証を行う。非接触ICカード１１は、外部の装置と無線通信を行うとき、例えば、RSA（R. Rivest、A. Shamir、L. Adelman）暗号等の公開鍵暗号方式による相互認証によって、公開鍵と秘密鍵を用いて、お互いが正当な機器であるか否かの認証を行う。
【００２１】
図１の非接触ICカード１１は、通信部３１、RAM（Random Access Memory）３２、NVRAM（Non Volatile RAM）３３、ROM（Read Only Memory）３４、および制御部３５から構成される。
【００２２】
通信部３１は、電磁波を利用して非接触で、図示せぬR/W（リーダライタ）等の外部の装置と無線通信を行う。具体的には、例えば、通信部３１は、図示せぬR/Wから送信されてくるコマンドと、コマンドとともに送信されてくるデータを制御部３５に供給する。また、通信部３１は、制御部３５から供給されてくる、図示せぬR/Wからのコマンドに対するコマンドおよびデータを、図示せぬR/Wに送信する。
【００２３】
RAM３２は、書き換え可能な揮発性メモリであり、制御部３５の処理の実行において適宜変化するパラメータや、上述した公開鍵や秘密鍵等の秘密情報を含むデータを格納する。また、RAM３２は、スタック領域３２ａを有する。スタック領域３２ａは、例えば、制御部３５の処理の実行において使用されるプログラムにおける関数やサブルーチンのコール時に必要なデータを一時記憶する。
【００２４】
NVRAM３３は、書き換え可能な不揮発性メモリであり、通信部３１から供給されたデータや、制御部３５が各種の処理を実行するためのプログラム、相互認証において必要となる機器ID、暗号鍵等のデータを格納する。
【００２５】
ROM３４は、読み取り専用のメモリであり、制御部３５が各種の処理を実行するためのプログラムや、演算用のパラメータのうち、基本的に固定のデータを格納する。
【００２６】
制御部３５は、NVRAM３３またはROM３４に格納されているプログラムを読み込み、読み込んだプログラムを実行し、非接触ICカード１１全体を制御する。また、制御部３５は、通信部３１から供給された各種のコマンドに対応する処理を実行するとともに、対応するコマンドおよびデータを生成し、通信部３１に供給する。
【００２７】
制御部３５は、演算部５１、攻撃検出部５２、呼び出し部５３、実行部５４、および供給部５５を含むように構成される。
【００２８】
演算部５１は、通信部３１から供給された各種のコマンドに応じて、コマンドに対応する処理を実行するためのプログラムをNVRAM３３やROM３４から読み込み、所定の演算を行う。具体的には、演算部５１は、NVRAM３３やROM３４からプログラムを読み込み、そのプログラムにより指定される関数をRAM３２から呼び出し、実行する。例えば、演算部５１は、RSA暗号等の公開鍵暗号方式による相互認証を行う処理を実行するためのプログラムを読み込み、データの暗号化または復号を行う関数を呼び出し、実行する。
【００２９】
攻撃検出部５２は、演算部５１の演算結果の検算（再計算）や、図示せぬプログラムカウンタに記憶されている、次に実行すべき命令（タスク）のアドレスの確認、RAM３２およびNVRAM３３に格納されているデータについてのチェックサムの算出や、CRC（Cyclic Redundancy Check：巡回冗長検査）の実行等、データのチェックを行うことで、故障利用攻撃を検出する。
【００３０】
呼び出し部５３は、攻撃検出部５２が故障利用攻撃を検出したときに、自分自身を呼び出す、すなわち再帰呼び出しをする再帰関数をRAM３２から呼び出す。また、呼び出し部５３は、再帰関数が実行されることにより、再帰呼び出しされる再帰関数をRAM３２から呼び出す。
【００３１】
実行部５４は、呼び出し部５３により呼び出された再帰関数を実行する。
【００３２】
供給部５５は、演算部５１および実行部５４により実行された関数の戻り値や、サブルーチンがコールされたときのリターンアドレスを、RAM３２のスタック領域３２ａに供給する。
【００３３】
［非接触ICカードの状態遷移図］
ここで、図２を参照して、非接触ICカード１１が外部からの物理的障害により故障利用攻撃を受けるときの、非接触ICカード１１の状態遷移について説明する。
【００３４】
図２の状態遷移図において、各状態は、１つの楕円により表される。すなわち、図２の状態遷移図においては、状態Ａ，Ｂ，Ｃの３つの状態が示されている。
【００３５】
状態Ａは、非接触ICカード１１が正常状態、すなわち、外部の装置との間で、相互認証を行いながらコマンドの送受信を行い、データの暗号化または復号を行っている状態である。非接触ICカード１１は、所定のタイミングで（例えば、所定時間経過後に）、状態Ａから状態Ｂへと遷移する。
【００３６】
状態Ｂは、非接触ICカード１１が故障利用攻撃を検出する状態（故障利用攻撃検出状態）である。状態Ｂにおいて、非接触ICカード１１は、状態Ａにおける演算結果の検算や、格納されているデータのチェックを行うことにより、故障利用攻撃があったことを検出すると、状態Ｃへと遷移する。また、故障利用攻撃があったことを検出しない場合（故障利用攻撃がない場合）には、状態Ａへと戻る。
【００３７】
状態Ｃは、非接触ICカード１１が再帰関数を呼び出す処理を行う状態（再帰関数呼び出し処理状態）である。この再帰関数は、状態Ａで実行される処理とは無関係の、全く無意味な戻り値を返す。状態Ｃにおいて、再帰関数が呼び出され、実行されると、その無意味な戻り値とともに、再帰呼び出しをする際のリターンアドレスが、RAM３２のスタック領域３２ａに格納され、再び、この再帰関数が呼び出される（再帰呼び出しをする）。すなわち、状態Ｃにおいては、再帰関数の呼び出しが繰り返される。
【００３８】
このようにして、非接触ICカード１１は、故障利用攻撃を検出すると、再帰関数の呼び出しを繰り返す。これにより、RAM３２のスタック領域３２ａには、再帰関数の戻り値とリターンアドレスとが次々と格納されるようになる。
【００３９】
［再帰関数呼び出し処理について］
次に、図３のフローチャートを参照して、非接触ICカード１１による再帰関数呼び出し処理の詳細について説明する。
【００４０】
ステップＳ１１において、攻撃検出部５２は、故障利用攻撃を検出したか否かを判定する。より具体的には、攻撃検出部５２は、演算部５１の演算結果の検算や、図示せぬプログラムカウンタに記憶されている、次に実行すべき命令のアドレスの確認、RAM３２およびNVRAM３３に格納されているデータについてのチェックサムの算出や、CRCの実行等、データのチェックを行い、エラーが発生しているか否かを判定する。
【００４１】
ステップＳ１１において、故障利用攻撃を検出していないと判定された場合、すなわち、非接触ICカード１１は正常状態（図２の状態Ａ）であるので、故障利用攻撃が検出されるまで、ステップＳ１１の処理が繰り返される。
【００４２】
一方、ステップＳ１１において、故障利用攻撃を検出したと判定された場合、処理は、ステップＳ１２に進み、呼び出し部５３は、再帰関数である関数ｆをRAM３２から呼び出す。関数ｆは、演算部５１により実行される処理とは無関係の、全く無意味な戻り値を返す。
【００４３】
ステップＳ１３において、実行部５４は、呼び出し部５３により呼び出された関数ｆを実行する。これにより、関数ｆが再帰呼び出しされる。
【００４４】
ステップＳ１４において、供給部５５は、実行部５４により実行された関数ｆの戻り値とともに、リターンアドレスを、RAM３２のスタック領域３２ａに供給する。
【００４５】
ステップＳ１５において、呼び出し部５３は、関数ｆが実行されることにより（ステップＳ１３）、再帰呼び出しされる関数ｆをRAM３２から呼び出す。
【００４６】
ステップＳ１６において、実行部５４は、呼び出し部５３により呼び出された関数ｆを実行する。これにより、関数ｆが再帰呼び出しされる。
【００４７】
ステップＳ１７において、供給部５５は、実行部５４により実行された関数ｆの戻り値とともに、リターンアドレスを、RAM３２のスタック領域３２ａに供給する。処理は、ステップＳ１５に戻り、ステップＳ１５乃至Ｓ１７の処理が繰り返される。
【００４８】
以上の処理によれば、非接触ICカード１１は、故障利用攻撃を検出すると、関数ｆの呼び出しを繰り返す。これにより、RAM３２のスタック領域３２ａには、関数ｆの戻り値とリターンアドレスとが、関数ｆが呼び出される毎に、次々と格納されるようになる。
【００４９】
この結果、スタック領域３２ａはオーバーフローし、RAM３２の他の領域もが侵食されて、元々、RAM３２に格納されていたデータは書き換えられる。すなわち、RAM３２には秘密情報が残っていない状態となるので、攻撃者は秘密情報を入手することが困難となり、秘密情報が漏洩する危険性を低下させるようにすることが可能となる。
【００５０】
以上においては、本発明を非接触ICカードに適用した実施の形態について説明したが、本発明は、非接触ICカードの機能を有する携帯電話機等の情報処理装置などに適用することができる。
【００５１】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等に、プログラム記録媒体からインストールされる。
【００５２】
図４は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【００５３】
コンピュータにおいて、CPU（Central Processing Unit）９０１，ROM（Read Only Memory）９０２，RAM（Random Access Memory）９０３は、バス９０４により相互に接続されている。
【００５４】
バス９０４には、さらに、入出力インタフェース９０５が接続されている。入出力インタフェース９０５には、キーボード、マウス、マイクロホン等よりなる入力部９０６、ディスプレイ、スピーカ等よりなる出力部９０７、ハードディスクや不揮発性のメモリ等よりなる記憶部９０８、ネットワークインタフェース等よりなる通信部９０９、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等のリムーバブルメディア９１１を駆動するドライブ９１０が接続されている。
【００５５】
以上のように構成されるコンピュータでは、CPU９０１が、例えば、記憶部９０８に記憶されているプログラムを、入出力インタフェース９０５およびバス９０４を介して、RAM９０３にロードして実行することにより、上述した一連の処理が行われる。
【００５６】
コンピュータ（CPU９０１）が実行するプログラムは、例えば、磁気ディスク（フレキシブルディスクを含む）、光ディスク（CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等）、光磁気ディスク、もしくは半導体メモリ等よりなるパッケージメディアであるリムーバブルメディア９１１に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【００５７】
そして、プログラムは、リムーバブルメディア９１１をドライブ９１０に装着することにより、入出力インタフェース９０５を介して、記憶部９０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部９０９で受信し、記憶部９０８にインストールすることができる。その他、プログラムは、ROM９０２や記憶部９０８に、あらかじめインストールしておくことができる。
【００５８】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【００５９】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【００６０】
【図１】本発明を適用した情報処理装置の一実施の形態としての非接触ICカードの機能構成例を示すブロック図である。
【図２】非接触ICカードの状態遷移を状態遷移図である。
【図３】再帰関数呼び出し処理について説明するフローチャートである。
【図４】コンピュータのハードウェアの構成例を示すブロック図である。
【符号の説明】
【００６１】
１１  非接触ICカード，  ３１  通信部，  ３２  RAM，  ３２ａ  スタック領域，  ３３  NVRAM，  ３４  ROM，  ３５  制御部，  ５１  演算部，  ５２  攻撃検出部，  ５３  呼び出し部，  ５４  実行部，  ５５  供給部
【図１】
2010136066.tif 000003
【図２】
2010136066.tif 000004
【図３】
2010136066.tif 000005
【図４】
2010136066.tif 000006