説明

情報処理装置および方法、並びにプログラム

【課題】秘密情報が漏洩する危険性を低下させる。
【解決手段】攻撃検出部52は、演算部51の演算結果の検算をすることで故障利用攻撃を検出し、呼び出し部53は、実行されることにより再帰呼び出しされる再帰関数を呼び出し、供給部55は、呼び出し部53により呼び出された再帰関数が実行されて、再帰呼び出しされる毎に、再帰関数の実行により得られるリターンアドレスを、秘密情報を含むデータを格納するRAM32のスタック領域32aに供給する。本発明は、非接触ICカード、または、非接触ICカードの機能を有する携帯電話機等の情報処理装置に適用することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置および方法、並びにプログラムに関し、特に、秘密情報が漏洩する危険性を低下させることができるようにする情報処理装置および方法、並びにプログラムに関する。
【背景技術】
【0002】
近年、暗号処理中の非接触IC(Integrated Circuit)カードに対して、悪意のある者(攻撃者)が、故意に、放射線を照射したり、高電圧を印加したり、また、クロック周波数や駆動電圧を瞬間的に変動させる等、物理的障害(エラー)を発生させ、その結果得られる、誤った演算結果と、正常な処理により得られる演算結果とを比較することで、秘密鍵等の秘密情報を入手する攻撃手法(以下、故障利用攻撃という)が脅威となっている。
【0003】
故障利用攻撃は、上述した演算結果の検算やメモリに記憶されているデータのチェック等を行うことにより検出される。そこで、故障利用攻撃を検出したときに、ハードウェアリセットを行ったり、無限ループ処理を行ったりすることで、非接触ICカードの動作を停止させて、秘密情報の漏洩を防ぐことが考えられている。
【0004】
しかしながら、上述した手法では、故障利用攻撃を受けたときの演算結果等、揮発性メモリに秘密情報が残っている可能性があり、その秘密情報が、攻撃者に入手される恐れがある。
【0005】
ところで、所定のサービスの要求があり、そのサービスを実行する関数を呼び出す際に、その関数へのポインタが元々保持されているテーブルとは別の、一時的な記憶領域内のテーブルに、その関数へのポインタを保持させ、その別のテーブルのポインタから関数を呼び出すことで、システム全体の動作に影響を与えることなく、サービスの入れ替えをできるようにした技術がある(例えば、特許文献1参照)。
【0006】
【特許文献1】特開2000−137605号公報
【発明の開示】
【発明が解決しようとする課題】
【0007】
上述のように、揮発性メモリなどの記憶領域に、一時的に情報を記憶させることは、演算処理の上では有用であるが、その情報が、外部に漏洩させてはならない秘密情報である場合、その情報を記憶していることは好ましくない。
【0008】
本発明は、このような状況に鑑みてなされたものであり、秘密情報が漏洩する危険性を低下させることができるようにするものである。
【課題を解決するための手段】
【0009】
本発明の一側面の情報処理装置は、秘密情報を含むデータを格納する、書き換え可能なメモリと、実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出し手段と、前記呼び出し手段により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給手段とを備える。
【0010】
前記情報処理装置には、故障利用攻撃を検出する攻撃検出手段をさらに設け、前記呼び出し手段には、前記攻撃検出手段が故障利用攻撃を検出したときに、前記再帰関数を呼び出させることができる。
【0011】
前記メモリは、揮発性メモリであり、前記供給手段には、前記再帰関数のリターンアドレスを、前記メモリのスタック領域に供給させることができる。
【0012】
前記情報処理装置には、所定の演算を行う演算手段をさらに設け、前記攻撃検出手段には、前記演算手段の演算結果の検算、または、前記メモリに格納されている前記データのチェックをすることで、故障利用攻撃を検出させることができる。
【0013】
前記情報処理装置には、外部の装置と非接触で通信を行う通信手段をさらに設け、前記メモリには、前記通信手段が行う通信に関わる秘密情報を含む前記データを格納させることができる。
【0014】
本発明の一側面の情報処理方法は、秘密情報を含むデータを格納する、書き換え可能なメモリを備える情報処理装置の情報処理方法であって、実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出しステップと、前記呼び出しステップの処理により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給ステップとを含む。
【0015】
本発明の一側面のプログラムは、秘密情報を含むデータを格納する、書き換え可能なメモリを備える情報処理装置の処理をコンピュータに実行させるプログラムであって、実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出しステップと、前記呼び出しステップの処理により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給ステップとを含む処理をコンピュータに実行させる。
【0016】
本発明の一側面においては、実行されることにより再帰呼び出しされる再帰関数が呼び出され、呼び出された再帰関数が実行されて、再帰呼び出しされる毎に、再帰関数の実行により得られるデータが、メモリに供給される。
【発明の効果】
【0017】
本発明の一側面によれば、秘密情報が漏洩する危険性を低下させるようにすることが可能となる。
【発明を実施するための最良の形態】
【0018】
以下、本発明の実施の形態について図を参照して説明する。
【0019】
[非接触ICカードの機能構成例]
図1は、本発明を適用した情報処理装置の一実施の形態としての非接触ICカードの機能構成例を示している。
【0020】
図1の非接触ICカード11は、耐タンパ性を有し、無線通信の相手である外部の装置との間で、公開鍵暗号方式による相互認証を行う。非接触ICカード11は、外部の装置と無線通信を行うとき、例えば、RSA(R. Rivest、A. Shamir、L. Adelman)暗号等の公開鍵暗号方式による相互認証によって、公開鍵と秘密鍵を用いて、お互いが正当な機器であるか否かの認証を行う。
【0021】
図1の非接触ICカード11は、通信部31、RAM(Random Access Memory)32、NVRAM(Non Volatile RAM)33、ROM(Read Only Memory)34、および制御部35から構成される。
【0022】
通信部31は、電磁波を利用して非接触で、図示せぬR/W(リーダライタ)等の外部の装置と無線通信を行う。具体的には、例えば、通信部31は、図示せぬR/Wから送信されてくるコマンドと、コマンドとともに送信されてくるデータを制御部35に供給する。また、通信部31は、制御部35から供給されてくる、図示せぬR/Wからのコマンドに対するコマンドおよびデータを、図示せぬR/Wに送信する。
【0023】
RAM32は、書き換え可能な揮発性メモリであり、制御部35の処理の実行において適宜変化するパラメータや、上述した公開鍵や秘密鍵等の秘密情報を含むデータを格納する。また、RAM32は、スタック領域32aを有する。スタック領域32aは、例えば、制御部35の処理の実行において使用されるプログラムにおける関数やサブルーチンのコール時に必要なデータを一時記憶する。
【0024】
NVRAM33は、書き換え可能な不揮発性メモリであり、通信部31から供給されたデータや、制御部35が各種の処理を実行するためのプログラム、相互認証において必要となる機器ID、暗号鍵等のデータを格納する。
【0025】
ROM34は、読み取り専用のメモリであり、制御部35が各種の処理を実行するためのプログラムや、演算用のパラメータのうち、基本的に固定のデータを格納する。
【0026】
制御部35は、NVRAM33またはROM34に格納されているプログラムを読み込み、読み込んだプログラムを実行し、非接触ICカード11全体を制御する。また、制御部35は、通信部31から供給された各種のコマンドに対応する処理を実行するとともに、対応するコマンドおよびデータを生成し、通信部31に供給する。
【0027】
制御部35は、演算部51、攻撃検出部52、呼び出し部53、実行部54、および供給部55を含むように構成される。
【0028】
演算部51は、通信部31から供給された各種のコマンドに応じて、コマンドに対応する処理を実行するためのプログラムをNVRAM33やROM34から読み込み、所定の演算を行う。具体的には、演算部51は、NVRAM33やROM34からプログラムを読み込み、そのプログラムにより指定される関数をRAM32から呼び出し、実行する。例えば、演算部51は、RSA暗号等の公開鍵暗号方式による相互認証を行う処理を実行するためのプログラムを読み込み、データの暗号化または復号を行う関数を呼び出し、実行する。
【0029】
攻撃検出部52は、演算部51の演算結果の検算(再計算)や、図示せぬプログラムカウンタに記憶されている、次に実行すべき命令(タスク)のアドレスの確認、RAM32およびNVRAM33に格納されているデータについてのチェックサムの算出や、CRC(Cyclic Redundancy Check:巡回冗長検査)の実行等、データのチェックを行うことで、故障利用攻撃を検出する。
【0030】
呼び出し部53は、攻撃検出部52が故障利用攻撃を検出したときに、自分自身を呼び出す、すなわち再帰呼び出しをする再帰関数をRAM32から呼び出す。また、呼び出し部53は、再帰関数が実行されることにより、再帰呼び出しされる再帰関数をRAM32から呼び出す。
【0031】
実行部54は、呼び出し部53により呼び出された再帰関数を実行する。
【0032】
供給部55は、演算部51および実行部54により実行された関数の戻り値や、サブルーチンがコールされたときのリターンアドレスを、RAM32のスタック領域32aに供給する。
【0033】
[非接触ICカードの状態遷移図]
ここで、図2を参照して、非接触ICカード11が外部からの物理的障害により故障利用攻撃を受けるときの、非接触ICカード11の状態遷移について説明する。
【0034】
図2の状態遷移図において、各状態は、1つの楕円により表される。すなわち、図2の状態遷移図においては、状態A,B,Cの3つの状態が示されている。
【0035】
状態Aは、非接触ICカード11が正常状態、すなわち、外部の装置との間で、相互認証を行いながらコマンドの送受信を行い、データの暗号化または復号を行っている状態である。非接触ICカード11は、所定のタイミングで(例えば、所定時間経過後に)、状態Aから状態Bへと遷移する。
【0036】
状態Bは、非接触ICカード11が故障利用攻撃を検出する状態(故障利用攻撃検出状態)である。状態Bにおいて、非接触ICカード11は、状態Aにおける演算結果の検算や、格納されているデータのチェックを行うことにより、故障利用攻撃があったことを検出すると、状態Cへと遷移する。また、故障利用攻撃があったことを検出しない場合(故障利用攻撃がない場合)には、状態Aへと戻る。
【0037】
状態Cは、非接触ICカード11が再帰関数を呼び出す処理を行う状態(再帰関数呼び出し処理状態)である。この再帰関数は、状態Aで実行される処理とは無関係の、全く無意味な戻り値を返す。状態Cにおいて、再帰関数が呼び出され、実行されると、その無意味な戻り値とともに、再帰呼び出しをする際のリターンアドレスが、RAM32のスタック領域32aに格納され、再び、この再帰関数が呼び出される(再帰呼び出しをする)。すなわち、状態Cにおいては、再帰関数の呼び出しが繰り返される。
【0038】
このようにして、非接触ICカード11は、故障利用攻撃を検出すると、再帰関数の呼び出しを繰り返す。これにより、RAM32のスタック領域32aには、再帰関数の戻り値とリターンアドレスとが次々と格納されるようになる。
【0039】
[再帰関数呼び出し処理について]
次に、図3のフローチャートを参照して、非接触ICカード11による再帰関数呼び出し処理の詳細について説明する。
【0040】
ステップS11において、攻撃検出部52は、故障利用攻撃を検出したか否かを判定する。より具体的には、攻撃検出部52は、演算部51の演算結果の検算や、図示せぬプログラムカウンタに記憶されている、次に実行すべき命令のアドレスの確認、RAM32およびNVRAM33に格納されているデータについてのチェックサムの算出や、CRCの実行等、データのチェックを行い、エラーが発生しているか否かを判定する。
【0041】
ステップS11において、故障利用攻撃を検出していないと判定された場合、すなわち、非接触ICカード11は正常状態(図2の状態A)であるので、故障利用攻撃が検出されるまで、ステップS11の処理が繰り返される。
【0042】
一方、ステップS11において、故障利用攻撃を検出したと判定された場合、処理は、ステップS12に進み、呼び出し部53は、再帰関数である関数fをRAM32から呼び出す。関数fは、演算部51により実行される処理とは無関係の、全く無意味な戻り値を返す。
【0043】
ステップS13において、実行部54は、呼び出し部53により呼び出された関数fを実行する。これにより、関数fが再帰呼び出しされる。
【0044】
ステップS14において、供給部55は、実行部54により実行された関数fの戻り値とともに、リターンアドレスを、RAM32のスタック領域32aに供給する。
【0045】
ステップS15において、呼び出し部53は、関数fが実行されることにより(ステップS13)、再帰呼び出しされる関数fをRAM32から呼び出す。
【0046】
ステップS16において、実行部54は、呼び出し部53により呼び出された関数fを実行する。これにより、関数fが再帰呼び出しされる。
【0047】
ステップS17において、供給部55は、実行部54により実行された関数fの戻り値とともに、リターンアドレスを、RAM32のスタック領域32aに供給する。処理は、ステップS15に戻り、ステップS15乃至S17の処理が繰り返される。
【0048】
以上の処理によれば、非接触ICカード11は、故障利用攻撃を検出すると、関数fの呼び出しを繰り返す。これにより、RAM32のスタック領域32aには、関数fの戻り値とリターンアドレスとが、関数fが呼び出される毎に、次々と格納されるようになる。
【0049】
この結果、スタック領域32aはオーバーフローし、RAM32の他の領域もが侵食されて、元々、RAM32に格納されていたデータは書き換えられる。すなわち、RAM32には秘密情報が残っていない状態となるので、攻撃者は秘密情報を入手することが困難となり、秘密情報が漏洩する危険性を低下させるようにすることが可能となる。
【0050】
以上においては、本発明を非接触ICカードに適用した実施の形態について説明したが、本発明は、非接触ICカードの機能を有する携帯電話機等の情報処理装置などに適用することができる。
【0051】
上述した一連の処理は、ハードウェアにより実行することもできるし、ソフトウェアにより実行することもできる。一連の処理をソフトウェアにより実行する場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータ等に、プログラム記録媒体からインストールされる。
【0052】
図4は、上述した一連の処理をプログラムにより実行するコンピュータのハードウェアの構成例を示すブロック図である。
【0053】
コンピュータにおいて、CPU(Central Processing Unit)901,ROM(Read Only Memory)902,RAM(Random Access Memory)903は、バス904により相互に接続されている。
【0054】
バス904には、さらに、入出力インタフェース905が接続されている。入出力インタフェース905には、キーボード、マウス、マイクロホン等よりなる入力部906、ディスプレイ、スピーカ等よりなる出力部907、ハードディスクや不揮発性のメモリ等よりなる記憶部908、ネットワークインタフェース等よりなる通信部909、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリ等のリムーバブルメディア911を駆動するドライブ910が接続されている。
【0055】
以上のように構成されるコンピュータでは、CPU901が、例えば、記憶部908に記憶されているプログラムを、入出力インタフェース905およびバス904を介して、RAM903にロードして実行することにより、上述した一連の処理が行われる。
【0056】
コンピュータ(CPU901)が実行するプログラムは、例えば、磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)等)、光磁気ディスク、もしくは半導体メモリ等よりなるパッケージメディアであるリムーバブルメディア911に記録して、あるいは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供される。
【0057】
そして、プログラムは、リムーバブルメディア911をドライブ910に装着することにより、入出力インタフェース905を介して、記憶部908にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部909で受信し、記憶部908にインストールすることができる。その他、プログラムは、ROM902や記憶部908に、あらかじめインストールしておくことができる。
【0058】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【0059】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【0060】
【図1】本発明を適用した情報処理装置の一実施の形態としての非接触ICカードの機能構成例を示すブロック図である。
【図2】非接触ICカードの状態遷移を状態遷移図である。
【図3】再帰関数呼び出し処理について説明するフローチャートである。
【図4】コンピュータのハードウェアの構成例を示すブロック図である。
【符号の説明】
【0061】
11 非接触ICカード, 31 通信部, 32 RAM, 32a スタック領域, 33 NVRAM, 34 ROM, 35 制御部, 51 演算部, 52 攻撃検出部, 53 呼び出し部, 54 実行部, 55 供給部

【特許請求の範囲】
【請求項1】
秘密情報を含むデータを格納する、書き換え可能なメモリと、
実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出し手段と、
前記呼び出し手段により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給手段と
を備える情報処理装置。
【請求項2】
故障利用攻撃を検出する攻撃検出手段をさらに備え、
前記呼び出し手段は、前記攻撃検出手段が故障利用攻撃を検出したときに、前記再帰関数を呼び出す
請求項1に記載の情報処理装置。
【請求項3】
前記メモリは、揮発性メモリであり、
前記供給手段は、前記再帰関数のリターンアドレスを、前記メモリのスタック領域に供給する
請求項2に記載の情報処理装置。
【請求項4】
所定の演算を行う演算手段をさらに備え、
前記攻撃検出手段は、前記演算手段の演算結果の検算、または、前記メモリに格納されている前記データのチェックをすることで、故障利用攻撃を検出する
請求項2に記載の情報処理装置。
【請求項5】
外部の装置と非接触で通信を行う通信手段をさらに備え、
前記メモリは、前記通信手段が行う通信に関わる秘密情報を含む前記データを格納する
請求項2に記載の情報処理装置。
【請求項6】
秘密情報を含むデータを格納する、書き換え可能なメモリを備える情報処理装置の情報処理方法において、
実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出しステップと、
前記呼び出しステップの処理により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給ステップと
を含む情報処理方法。
【請求項7】
秘密情報を含むデータを格納する、書き換え可能なメモリを備える情報処理装置の処理をコンピュータに実行させるプログラムにおいて、
実行されることにより再帰呼び出しされる再帰関数を呼び出す呼び出しステップと、
前記呼び出しステップの処理により呼び出された前記再帰関数が実行されて、再帰呼び出しされる毎に、前記再帰関数の実行により得られるデータを、前記メモリに供給する供給ステップと
を含む処理をコンピュータに実行させるプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate


【公開番号】特開2010−136066(P2010−136066A)
【公開日】平成22年6月17日(2010.6.17)
【国際特許分類】
【出願番号】特願2008−309576(P2008−309576)
【出願日】平成20年12月4日(2008.12.4)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】