以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ICカードの一例としての上述したJAVAカードに対して本発明を適用した場合の実施の形態である。以下、JAVAカードに対応したICカードを、単にICカードと称する。
[1. ICカードのハードウェア構成及び機能概要]
まず、図1を参照して、本願のICカードのハードウェア構成及び機能概要について説明する。本実施形態にかかるICカードの構成及び機能概要を示すブロック図である。
図1は、本実施形態にかかるICカードの構成及び機能概要を示すブロック図である。
図1に示すように、ICカード8は、ICチップ1をカード基体7に備えている。
そして、ICチップ1は、I/O回路2、ROM(Read Only Memory)3、RAM(Random Access Memory)4、本願の記憶部の一例としての不揮発性メモリ(例えば、EEPROM(Electrically Erasable and Programmable Read Only Memory))5、CPU(Central Processing Unit)6等を備えて構成されている。なお、I/O回路2を介した外部機器とのデータ通信は、接触方式と非接触方式の何れの方式であってもよい。I/O回路2は、図示しない外部機器とデータ通信するための処理回路である。ROM3は、CPU6によって実行されるべきプログラムが記憶されており、CPU6は、このプログラムに基づいてICチップ1を統括的に制御する。
また、ROM3に記憶されるプログラムとしては、カードOS(本願のオペレーティングシステムの一例)、複数種類のアプリケーションプログラム、及び本発明のICチップ用処理プログラムがある。なお、本発明のICチップ用処理プログラムは、カードOS又はアプリケーションプログラムの一機能として組み込まれてもよい。また、これらのプログラムは、不揮発性メモリ5に記憶されるようにしてもよい。
RAM4は、CPU6がICチップ1を統括的に制御等するために作業領域として使用する記憶領域である。
不揮発性メモリ5は、不揮発性半導体メモリの一種であり、記憶領域に記憶されるデータを消去し、何度でも再記憶ができるPROM(Programmable Rom)である。
また、本実施形態における不揮発性メモリ5は、各領域にアドレスが付されており、所定の領域を1のページとして、一又は複数のページに区画される。このアドレスに基づいて、CPU6は、更新要求に基づいて、前記記憶部の指定されたページの指定された領域に記憶されるデータを更新することができる。
そして、不揮発性メモリ5は、CPU6により各種データが書き込まれる(記憶される)データ領域と、詳しくは後述するがバックアップデータが書き込まれるバックアップ領域を有する。
CPU6は、上述したようにプログラムに基づいてICチップ1全体の動作を統括的に制御するとともに、その機能の一部として、データ領域の指定されたページの指定された領域のデータを更新し、さらに、本願の第1の保護手段、第2の保護手段、検索手段、監視手段等として機能する。
なお、更新といった場合には、少なくともデータ領域等に記憶されたデータを書き換えることのみならず、新たにデータを書き込むことを含むものとする。
[2.ICカードのソフトウェア構成及び機能概要]
次に、図2を参照して、ICカードのソフトウェア構成について説明する。
図2は、ICカードのソフトウェア構成を模式的に示す図である。
図2に示すように、ICカードのハードウェアを構成するRAM4、不揮発性メモリ5、及びCPU6等のハードウェア層21は、OS(オペレーティング)層22のカードOSによって制御される。
OS層22は、JAVAカードを動作させるための環境を含めたバーチャルマシン(Virtual Machine)、アプリケーション(アプレット)の管理をするI.S.D.(Issuer Security Domain)、アプレットの関数であるAPIといったモジュールがカードOSにのった状態となっていて、アプリケーション(アプレット)層23が最上位に位置する。
このカードOSは、当該ICカードの基本的な動作を管理するプログラムであり、ハードウェア層21の各ハードウェアを制御したり、各ハードウェアからの処理結果などの情報を受けて動作するプログラムである。
そして、上述した「カードOSによる非更新領域の保護機能」は、メモリ管理者としてカードOSの基本的な機能として提供される。
この「カードOSによる非更新領域の保護機能」は、CPU6を、本願の第1の保護手段として機能させ、本願のカードOSの制御に基づいて、不揮発性メモリ5に記憶されるデータを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータを保護するようになっている。
アプリケーション層23は、カードOS上で動作し、CPU6に所定の機能を実行させるための各種のアプリケーション(アプリケーションA、アプリケーションB等。本願のアプリケーションの一例、以下単に「アプリケーション」とする。)から構成される。
そして、上述した「トランザクションによる更新領域の保護機能」は、アプリケーション層23のアプリケーションの機能として提供されている。
この「トランザクションによる更新領域の保護機能」は、CPU6を、本願の第2の保護手段として機能させ、上記アプリケーションの要求に応じたカードOSの制御に基づいて、更新前の前記更新領域に記憶されるデータを保護するようになっている。
ここで、「カードOSによる非更新領域の保護機能」及び「トランザクションによる更新領域の保護機能」の詳細について説明する。
まず、図3を参照して、「カードOSによる非更新領域の保護機能」が適用される場合のCPU6の動作の概要について説明する。
図3は、カードOSによる非更新領域の保護機能が適用される場合のCPU6の動作の概要を示すフローチャートである。
なお、カードOSが備える機能(例えば、後述する保護機能動作)、及びアプリケーションが備える機能(例えは、後述するコマンドの処理)は、当該カードOS又はアプリケーションの制御に基づいてCPU6によって実行される。すなわち、カードOSが備える機能、及びアプリケーションが備える機能が実行される場合の動作主体は、ICカードのCPU6である。しかし、本実施形態においては、説明の便宜上、カードOSが備える機能が実行される場合の動作主体をカードOSとし、アプリケーションが備える機能が実行される場合の動作主体をアプリケーションとする。
まず、カードOS(CPU6)が、例えばI/O回路2を介して、コマンドを受信すると(ステップS101)、カードOSは、受信したコマンドをどのアプリケーションへ渡すか決定する(ステップS102)。そして、カードOSは、受信したコマンドを、決定されたアプリケーションへ渡す。アプリケーション(CPU6)は、コマンドを取得すると(ステップS103)、コマンドを処理して(例えば、コマンド解釈等)(ステップS104)、必要があれば不揮発性メモリ5のデータを更新する(不揮発性メモリ5へデータを書き込ませる)(ステップS105)。
この不揮発性メモリ5のデータを更新(不揮発性メモリ5への書き込み)は、カードOSが提供する機能の一部になっているので、実際には、カードOSへ、更新の依頼をする(ステップS106へ)。
ここで、図4及び図5を参照して、一般的な不揮発性メモリ5に記憶されるデータの更新について説明する。
図4は不揮発性メモリ5のデータ領域にデータが記憶される状態を示す概念図であり、図5はページ単位で不揮発性メモリ5のデータ領域にデータが記憶される状態を示す概念図である。
一般的に、ICカードの不揮発性メモリのデータの更新は、初期化を行ってから更新される。
具体的に、この更新は、不揮発性メモリのデータ領域に記憶されるデータの値を、0から1、又は1から0へ、一方向へ値を書き込むことをいう。そして、不揮発性メモリでは、初期状態の値が0か1に必ず決定されている。即ち、この更新は、初期状態が0の場合は1へ、初期状態が1であれば0へ値を書き込むことをいう。
初期状態の値にないもの、例えば、初期状態の値が0で、その領域に1の値が書き込まれているものに対して、さらにその値を0と書き込みたいときは、書き込みというよりも初期状態に戻すという(クリアする)概念になっている。
ここで、この書き込みについて図4を参照して説明すると、不揮発性メモリのデータ領域(記憶領域)に、0xAAの値が書き込まれているものに対して(図4(A))、0x55の値を書き込む場合(図4(C))には、初期化が行われて、0xFFという初期値に戻される(図4(B))。その上で改めて、0の値にしなければならないところに対して、0の値が書き込まれるため、書き込みの動作は、データを一度消去して、書き込むといった2段階の動作を伴うものとなっている。
このとき、一度に初期化される領域を1ページとすると、図5に示すように更新領域X(データが書き込まれる領域)が3ページにわたる場合、上述したように不揮発性メモリのデータが更新される際には一度初期化が行われるため、ページA、ページB、及びページCの全てのデータが一度消去されることとなる。
このページA及びページCには、更新データ以外のデータY(非更新領域)が含まれているが、ページ単位でしか消去されないため、この非更新領域に記憶されるデータが消去の対象となり、もともと存在していたデータが消されてしまうこととなる。
この処理の最中、即ち、非更新領域が一度消されたときに瞬断が発生してしまうと、当該非更新領域のデータは消去されたまま(0xFFのまま)になってしまうので、こういった非更新領域を保護、即ち、消去される前の状態に戻そうというのが上述した「カードOSによる非更新領域の保護機能」である。
具体的に、図5においては、非更新領域のデータYは、ページA及びページCに記憶されている。従って、保護されるべきデータは、データYである。従って、ページA及びページCがページ単位で保護対象(バックアップ対象)として、例えば、バックアップ領域等に書き込まれる。以下に、保護対象としてバックアップ領域に書き込まれたデータを、バックアップデータと称する。
このようにして、「カードOSによる非更新領域の保護機能」によって、非更新領域が保護されるようになっている。
図3のフローチャートの説明に戻り、カードOSは、この保護機能を使って、瞬断に備えた更新を行う(ステップS106)。
そして、アプリケーションは、残りの処理があれば、コマンド処理をして(ステップS107)、レスポンスデータを送信するのはカードOSの処理となるため、カードOSへレスポンスデータを通知する(ステップS108)。そして、カードOSはレスポンスデータを取得すると(ステップS109)、例えば、外部装置(リーダライタ装置等)へレスポンスデータを送信する(ステップS110)。
次に、図6を参照して、「トランザクションによる更新領域の保護機能」が適用される場合のCPU6の動作の概要について説明する。
図6は、「トランザクションによる更新領域の保護機能」が適用される場合のCPU6の動作の概要を示すフローチャートである。
上述したように、「トランザクションによる更新領域の保護機能」は、トランザクションにより実現されており、このトランザクションは例えば、上記アプリケーションの機能として提供されている。
この「トランザクションによる更新領域の保護機能」について説明すると、あるコマンド処理の中で、不揮発性メモリに対して、3回の連続した書き込み(書き込み1、書き込み2、書き込み3)が行われる場合を考える。そして、書き込み1及び書き込み2が、連続した書き込みとして定義されているとする。
この場合、「トランザクションによる更新領域の保護機能」として、書き込み1及び書き込み2は、連続した書き込みの保障として、書き込み1と書き込み2の両方を更新する前の更新領域の状態、又は、書き込み1と書き込み2の両方を更新した後の更新領域の状態何れかの状態が保障される。
具体的には、書き込み2の途中で引き抜き等の瞬断が発生した場合、書き込み1を実施する前の書き込み1と書き込み2の更新領域の状態へ戻るようになっている。一方、書き込み3は、予め定められた書き込みとして定義されていないため、連続した書き込みの保障に含まれない。従って、書き込み3の途中に引き抜き等の瞬断が発生しても、書き込み3が書き込まれる前の状態に戻るだけである。
ここで、図6のフローチャートを説明する。
図6で示すフローチャートでは、書き込み1及び書き込み2が連続した書き込みとして定義されているものとする。この連続した書き込みとは、例えば、会員登録において氏名と会員番号に関連性を持たせてカードOSに登録させる場合が想定できる。会員登録における氏名と会員番号の登録は、関連した処理であると想定でき、これらの登録を統括して管理するために、連続した書き込みとして定義するのである。
図6で示すフローチャートの説明として、まず、カードOSが、例えばインターフェースを介して、コマンドを受信すると(ステップS201)、カードOSは、受信したコマンドをどのアプリケーションへ渡すか決定する。そして、カードOSは、受信したコマンドを、決定されたアプリケーションへ渡す(ステップS202)。アプリケーションは、コマンドを取得すると(ステップS203)、コマンドを処理(例えば、コマンド解釈等)する(ステップS204)。
そして、アプリケーションは、取得したコマンドが連続した書き込みとして定義された書き込み命令であると判断した場合には、カードOSへ、"Begin transaction"と称されるトランザクション機能を開始させる指示を与える(ステップS205)。
このトランザクション機能とは、上述したトランザクションによる更新領域の保護機能のことをいい、カードOSへ、上述した連続した書き込みの保障させるものである。以下、カードOSによって連続した書き込みの保障が開始された状態を、「transaction開始」と称する。
カードOSによる「transaction開始」の状態では(ステップS206)、記憶領域のうち、連続した書き込みとしての書き込み1(ステップS207)及び書き込み2(ステップS209)が書き込まれる領域(更新領域)のデータがバックアップ(予め他の領域にコピー)される。そして、トランザクション機能が終了した状態である「Commit transaction」の状態にある場合には(ステップS211)、カードOSは、トランザクション機能を停止する(ステップS212)。
このステップS205〜ステップS212のアプリケーション及びカードOSの処理の一例としては、書き込み1(ステップS207)及び書き込み2(ステップS209)が行われる間に、引き抜き等の瞬断が発生すると、「transaction開始」の前の状態、又は、トランザクション機能が終了した状態である「Commit transaction」の状態にある場合にはトランザクション機能が終了した状態の何れかの状態となる(ステップS208及びステップS209のtransaction機能/保護機能動作。)。
ここで、「transaction開始」の前の状態とは、バックアップされた書き込み1及び書き込み2が書き込まれる領域のデータが読み込まれ、例えば、データ領域に書き込まれることをいう。また、「transaction開始」の前の状態とは、書き込み1及び書き込み2が書き込まれた後(即ち更新された後)に、データ領域に書き込まれたデータが維持されることをいう。
次に、アプリケーションは、他に受信したコマンドがあれば、コマンドを処理する(ステップS213)。ここでは、コマンドの処理Bとして、連続した書き込みとして定義されていない書き込み命令が実行される場合を説明する。
この場合、「トランザクションによる更新領域の保護機能」は働かず、通常の「カードOSによる非更新領域の保護機能」が働くこととなる。
そして、アプリケーションは、カードOSへ、書き込みの依頼をする(ステップS214)。カードOSは、この保護機能を使って、瞬断に備えた書き込みを行う(ステップS215の保護機能動作)。
そして、アプリケーションは、処理が終了すると、カードOSへレスポンスデータを通知する(ステップS216)。そして、カードOSは、レスポンスデータを取得すると(ステップS217)、例えば、外部装置(リーダライタ装置等)へレスポンスデータを送信する(ステップS218)。
このように、従来のICカードでは、「カードOSによる非更新領域の保護機能」(記憶領域の更新領域を保護する機能)と「トランザクションによる更新領域の保護機能」(非更新領域を保護する機能)が別々に定義されていた。
そして、従来のICカードでは、ICカードがデータを更新する際に、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」がそれぞれ機能するようになっていた。
ここで、図7を参照して、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」がそれぞれ機能する場合のCPU6の動作の詳細について説明する。
図7は、ICカードによって更新されるデータを概念的に示す図である。
図7では、不揮発性メモリ5のデータ領域が概念的に示されている。この図7では、1byteを1ブロックとして2つのブロックに区切られた領域を一のページ(例えば、Page−a等)、として、複数のページに区画されたICカードの不揮発性メモリ5のデータ領域が示されている。図7では、複数のページの一例として、Page−aからPage−eが示されている。
そして、この不揮発性メモリ5に対する更新として、A)書き込み1、B)書き込み2、及び、C)書き込み3、が行われる場合を説明する。
これらの書き込みは、不揮発性メモリ5の指定されたページ(Page−a等)の指定された領域(1ブロック目か2ブロック目等)に記憶されるデータを更新するものである。また、書き込み1及び書き込み2は、上述した連続した書き込みとして定義されているものとする。
具体的には、書き込み1はPage−aの2ブロック目からPage−bの1ブロック目までの2ページにわたる2byteの領域の書き込み(図7の11及び12参照)を、書き込み2はPage−c全体に対して2byteの領域の書き込み(図7の21及び22参照)を、書き込み3はPage−dの2ブロック目からPage−e全体に対して2ページにわたる3byteの領域の書き込み(図7の31、32、及び33参照)を、それぞれ実施させるものとする。
A)書き込み1について
A−1)「トランザクションによる更新領域の保護機能」について
書き込み1及び書き込み2は、連続した書き込みとして定義されているため、上述した「トランザクションによる更新領域の保護機能」が働く。この場合、アプリケーションは、書き込み1を実施する前の書き込み1と書き込み2の更新領域の状態を取り得ることを可能とするため、書き込み1が実施される前のPage−aの2ブロック目からPage−bの1ブロック目までに記憶されたデータをバックアップさせる。
具体的には、例えば、アプリケーションは、書き込み1が実施される前のPage−aの2ブロック目からPage−bの1ブロック目までに記憶されたデータ(図7の11及び12参照)をRAM4に一時的に記憶し、その後バックアップ領域へ当該データを、カードOSに書き込ませる。
A−2)「カードOSによる非更新領域の保護機能」について
次に、「カードOSによる非更新領域の保護機能」が働く。具体的には、カードOSは、以下のa)〜j)の動作を実施する。
a)まず、カードOSは、Page−aにおける非更新領域のデータを保護するため、Page−aに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−aRとする。
b)次に、カードOSは、Page−aRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−aRを書き込む。
c)次に、カードOSは、Page−aRの2ブロック目に、書き込み1で書き込まれるべきデータを書き込む(図7の11のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−aRを更新する。
d)次に、カードOSは、更新されたPage−aRを、不揮発性メモリ5のPage−aへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−aを更新する。
e)次に、カードOSは、バックアップ領域に書き込まれたPage−aRを消去する。
f)次に、カードOSは、Page−bにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−bRとする。
g)次に、カードOSは、Page−bRをバックアップする。具体的には、カードOSは、バックアップ領域へPage−bRを書き込む。
h)次に、カードOSは、Page−bRの1ブロック目に、書き込み1で書き込まれるべきデータを書き込む(図7の12のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−bRを更新する。
i)次に、カードOSは、更新されたPage−bRを、不揮発性メモリ5のPage−bへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−bを更新する。
j)次に、カードOSは、バックアップ領域に書き込まれたPage−bRを消去する。
以上で、書き込み1が実施されたこととなる。
B)書き込み2について
B−1)「トランザクションによる更新領域の保護機能」について
書き込み2も同様に、連続した書き込みとして定義されているため、上述した「トランザクションによる更新領域の保護機能」が働く。この場合、アプリケーションは、書き込み1を実施する前の書き込み1と書き込み2の更新領域の状態を取り得ることを可能とするため、書き込み2が実施される前のPage−cの全てに記憶されたデータをバックアップさせる。
具体的には、例えば、アプリケーションは、書き込み1が実施される前のPage−cに記憶されたデータ(図7の21及び22のデータ)をRAM4に一時的に記憶し、バックアップ領域へ当該データを、カードOSに書き込ませる。
B−2)「カードOSによる非更新領域の保護機能」について
書き込み2ではPage−cに記憶される全てのデータが更新対象であるため、Page−cには非更新領域が存在しない。従って、「カードOSによる非更新領域の保護機能」は働かないこととなる。この場合、カードOSは、以下のa)〜c)の動作を実施する。
a)まず、カードOSは、Page−cに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−cRとする。ここでは、例えば、A−2)「カードOSによる非更新領域の保護機能」でPage−aR及びPage−bRがバックアップされたのとは異なり、Page−cRはバックアップされないこととなる。
b)次に、カードOSは、Page−cRに、書き込み2で書き込まれるべきデータを書き込む(図7の21及び22のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−cRを更新する。
c)次に、カードOSは、更新されたPage−cRを、不揮発性メモリ5のPage−cへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−cを更新する。
以上で、書き込み2が実施されたこととなる。
そして、書き込み2が実施されたことで、「トランザクションによる更新領域の保護機能」は終了する。従って、カードOSは、バックアップ領域に記憶された書き込み1が実施される前のPage−aからPage−cに記憶された更新領域のデータ(図7の11、12、21、及び22)を消去する。
C)書き込み3について
C−1)「トランザクションによる更新領域の保護機能」について
書き込み3では、連続した書き込みとして定義されていないため、上述した「トランザクションによる更新領域の保護機能」は働かず、「カードOSによる非更新領域の保護機能」のみが働くこととなる。
C−2)「カードOSによる非更新領域の保護機能」について
具体的に、カードOSは、以下のa)〜h)の動作を実施する。
a)まず、カードOSは、Page−dにおける非更新領域のデータを保護するため、Page−dに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−dRとする。
b)次に、カードOSは、Page−dRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−dRを書き込む。
c)次に、カードOSは、Page−dRの2ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図7の21及び22のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−dRを更新する。
d)次に、カードOSは、更新されたPage−dRを、不揮発性メモリ5のPage−dへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−dを更新する。
e)次に、カードOSは、バックアップ領域に書き込まれたPage−dRを消去する。
また、書き込み3のうちPage−eに記憶されるデータを更新する場合には、Page−eに記憶される全てのデータが更新対象であるため、Page−eには非更新領域が存在しない。従って、「カードOSによる非更新領域の保護機能」は働かないこととなる。この場合、カードOSは、以下のf)〜h)の動作を実施する。
f)まず、カードOSは、Page−eに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−eRとする。
g)次に、カードOSは、Page−eRに、書き込み3で書き込まれるべきデータを書き込む。すなわち、カードOSは、RAM4に記憶されたPage−eRを更新する。
ここでは、Page−eRはバックアップされないこととなる。
h)次に、カードOSは、更新されたPage−eRを、不揮発性メモリ5のPage−eへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−eを更新する。
以上で、書き込み3が実施されたこととなる。
また、不揮発性メモリ5のページあたりに記憶されるデータの容量が、128byte、又は256byteと大容量である場合がある。このページあたりに記憶されるデータの容量の増加に伴い、同一ページ内に対する更新が連続したり、複数のページに跨る更新が発生するケースが増加する。
ここで、図8を参照して、ページあたりに記憶されるデータの容量が大容量である場合に、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」がそれぞれ機能する場合のCPU6の動作の詳細について説明する。
図8は、ページあたりに記憶されるデータの容量が大容量である場合に、ICカードによって更新されるデータを概念的に示す図である。
図8では、不揮発性メモリ5の領域が概念的に示されている。この図8では、1byteを1ブロックとして256のブロックに区切られた領域を一のページ(例えば、Page−x等)、として、複数のページに区画されたICカードの不揮発性メモリ5が示されている。図8では、複数のページの一例として、Page−xとPage−yが示されている。
そして、この不揮発性メモリ5に対する更新として、A)書き込み1、B)書き込み2、及び、C)書き込み3、が行われる場合を説明する。
これらの書き込みは、不揮発性メモリ5の指定されたページ(Page−x等)の指定された領域(1ブロック目か2ブロック目等)に記憶されるデータを更新するものである。また、書き込み1及び書き込み2は、上述した連続した書き込みとして定義されているものとする。
具体的には、書き込み1は、Page−xの領域のうち連続する2ブロックに対して、2byteの領域の書き込み(図8の11及び12参照)を、書き込み2は、Page−xの256ブロック目からPage−yの1ブロック目までの2ページにわたる2byteの領域の書き込み(図8の21及び22参照)を、書き込み3は、Page−yの領域のうち連続する3ブロックに対して、3byteの領域の書き込み(図8の31、32、及び33参照)を、それぞれ実施させるものとする。
A)書き込み1について
A−1)「トランザクションによる更新領域の保護機能」について
書き込み1及び書き込み2は、連続した書き込みとして定義されているため、上述した「トランザクションによる更新領域の保護機能」が働く。この場合、アプリケーションは、書き込み1を実施する前の書き込み1と書き込み2の更新領域の状態を取り得ることを可能とするため、書き込み1が実施される前のデータであるPage−xの領域のうち連続する2ブロックに記憶されたデータ(図8の11及び12参照)をバックアップする。
具体的には、例えば、アプリケーションは、書き込み1が実施される前のPage−xの領域のうち連続する2ブロックに記憶されたデータをRAM4に一時的に記憶し、バックアップ領域へ当該データを、カードOSに書き込ませる。
A−2)「カードOSによる非更新領域の保護機能」について
次に、「カードOSによる非更新領域の保護機能」が働く。具体的には、カードOSは、以下のa)〜j)の動作を実施する。
a)まず、カードOSは、Page−xにおける非更新領域のデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−xRとする。
b)次に、カードOSは、Page−xRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−xRを書き込む。
c)次に、カードOSは、Page−xRの領域のうち連続する2ブロックに、書き込み1で書き込まれるべきデータを書き込む(図8の11及び12のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−xRを更新する。
d)次に、カードOSは、更新されたPage−xRを、不揮発性メモリ5のPage−xへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−aを更新する。
e)次に、カードOSは、バックアップ領域に書き込まれたPage−xRを消去する。
以上で、書き込み1が実施されたこととなる。
B)書き込み2について
B−1)「トランザクションによる更新領域の保護機能」について
書き込み2も同様に、連続した書き込みとして定義されているため、上述した「トランザクションによる更新領域の保護機能」が働く。従って、アプリケーションは、書き込み1が実施される前のPage−xの256ブロック目からPage−yの1ブロック目までに記憶されたデータ(図8の21及び22のデータを更新する)を、RAM4に一時的に記憶し、その後不揮発性メモリ5に設定されたバックアップ領域へ当該データを書き込む。
B−2)「カードOSによる非更新領域の保護機能」について
次に、「カードOSによる非更新領域の保護機能」が働く。具体的には、カードOSは、以下のa)〜i)の動作を実施する。
a)まず、カードOSは、Page−xにおける非更新領域のデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−xRとする。
b)次に、カードOSは、Page−xRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−xRを書き込む。
c)次に、カードOSは、Page−xRの256ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の21のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−xRを更新する。
d)次に、カードOSは、更新されたPage−xRを、不揮発性メモリ5のPage−xへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−aを更新する。
e)次に、カードOSは、バックアップ領域に書き込まれたPage−xRを消去する。
f)次に、カードOSは、Page−yにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
g)次に、カードOSは、Page−yRをバックアップする。具体的には、カードOSは、バックアップ領域へPage−yRを書き込む。
h)次に、カードOSは、Page−yRの1ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の22のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−yRを更新する。
i)次に、カードOSは、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−yを更新する。
以上で、書き込み2が実施されたこととなる。
そして、書き込み2が実施されたことで、「トランザクションによる更新領域の保護機能」は終了する。従って、カードOSは、バックアップ領域に記憶された書き込み1が実施される前のPage−xからPage−yに記憶された更新領域のデータ(図8の11、12、21、及び22)を消去する。
C)書き込み3について
C−1)「トランザクションによる更新領域の保護機能」について
書き込み3は、連続した書き込みとして定義されていないため、上述した「トランザクションによる更新領域の保護機能」は働かず、「カードOSによる非更新領域の保護機能」のみが働くこととなる。
C−2)「カードOSによる非更新領域の保護機能」について
具体的に、カードOSは、以下のa)〜e)の動作を実施する。
a)まず、カードOSは、Page−yにおける非更新領域のデータを保護するため、Page−yに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
b)次に、カードOSは、Page−yRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−yRを書き込む。
c)次に、カードOSは、Page−yRの2ブロック目に、書き込み3で書き込まれるべきデータ(図8の31、32、及び33)を書き込む。すなわち、カードOSは、RAM4に記憶されたPage−yRを更新する。
d)次に、カードOSは、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−yを更新する。
e)次に、カードOSは、バックアップ領域に書き込まれたPage−yRを消去する。
以上で、書き込み3が実施されたこととなる。
[3.第1の実施形態]
上述したように、「カードOSによる非更新領域の保護機能」及び「トランザクションによる更新領域の保護機能」では、更新毎(例えば、上記書き込み1、又は上記書き込み2毎)に、当該更新の対象となるデータが属するページの非更新領域及び更新領域のデータがバックアップされる。従って、同一のページに記憶されたデータに対して連続する個別の更新が行われる場合には、同一のページのバックアップが重複して行われることとなる。また、隣り合うページに記憶されたデータに対して一の更新(例えば、上記書き込み1のみ)が行われる場合には、2ページ分の非更新領域及び更新領域のデータがバックアップされることとなる。不揮発性メモリのページあたりに記憶されるデータの容量が、128byte、又は256byteと大容量である場合には、RAM4や不揮発性メモリ5への書き込み、バックアップ、消去等のページ操作が非常に重い処理になってくる(CPU6等の処理負担の増加を招く)。
そこで、本実施形態においては、「カードOSによる非更新領域の保護機能」と「トランザクションによる更新領域の保護機能」が働くICカード8において、「カードOSによる非更新領域の保護機能」と「トランザクションによる更新領域の保護機能」と、を統合させるようにした。
上述したように、「カードOSによる非更新領域の保護機能」では、ページにおいて非更新領域が存在しない場合(ページ全てのデータを更新する場合)には、「カードOSによる非更新領域の保護機能」は働かない。また、「トランザクションによる更新領域の保護機能」では、バックアップされるデータは、ページにおいて更新領域のデータのみである。
そこで、上記の点に着目し、アプリケーションが、更新の対象となるページにおいて、当該ページに記憶されるデータ全てを更新するものとしてカードOSへ通知して、「カードOSによる非更新領域の保護機能」を機能させないようにする。そして、アプリケーションが、更新の対象となるページに記憶されるデータ全て(ページ全て)を、バックアップするようにした。
具体的には、本発明のICチップ用処理プログラムの制御によって、第2の保護手段としてのCPU6は、更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを不揮発性メモリ5に書き込み(記憶し)、当該ページに非更新領域が存在しないものとしてカードOSに通知して、「カードOSによる非更新領域の保護機能」を機能させないようになっている。以下、この動作を、「transaction機能/保護機能付き書き込み」と称する。
これによって、一のバックアップ処理のみが行われるため、データの保護機能による処理時間の短縮を図ることができる。
ここで、図8を参照して、「transaction機能/保護機能付き書き込み」が適用された場合のCPU6の動作の詳細について説明する。
なお、ここでは、上述した本発明のICチップ用処理プログラムが備える機能が実行される場合の動作主体をCPU6として説明する。
また、ここで説明する例では、図8で定義される不揮発性メモリ5に対する更新として、A)書き込み1、B)書き込み2、及び、C)書き込み3、が行われるものとし、これらの書き込み条件(例えば、上述した連続した書き込みとして定義されていること等)は、図8で定義された条件と同一の条件を適用するものとする。
A)書き込み1について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜d)の動作を実施する。
a)まず、CPU6は、Page−xに記憶される全てのデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−xRとする。
この場合、CPU6は、書き込み1で更新の対象となるPage−xに記憶される全てのデータをRAM4へ書き込み、その後、不揮発性メモリ5へ書き込むことで、Page−xに記憶される全てのデータを更新の対象とし、非更新領域が存在しないものとしてカードOSへ通知する。
この通知を受けたカードOSは、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
b)次に、CPU6は、Page−xRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−xRを書き込む。
c)次に、CPU6は、Page−xRの領域のうち連続する2ブロックに、書き込み1で書き込まれるべきデータを書き込む(図8の11及び12のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−xRを更新する。
d)次に、CPU6は、更新されたPage−xRを、不揮発性メモリ5のPage−xへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−xを更新する。
以上で、書き込み1が実施されたこととなる。
B)書き込み2について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜h)の動作を実施する。
a)まず、CPU6は、Page−xに記憶される全てのデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。
なお、ここで書き込まれたPage−xに記憶されるデータは、上述した書き込み1で更新されたもの(図8の11及び12が更新されたもの)である。従って、上述したA)書き込み1についてa)で、RAM4に書き込まれたPage−xとは異なるデータである。以後、説明の便宜上、B)書き込み2についてa)でPage−xに記憶される全てのデータをPage−x´と、RAM4に書き込まれるデータを、Page−x´Rとする。
b)次に、CPU6は、Page−x´Rをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−x´Rを書き込む。
c)次に、CPU6は、Page−x´Rの256ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の21のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−x´Rを更新する。
d)次に、カードOSは、更新されたPage−x´Rを、不揮発性メモリ5のPage−x´へ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−aを更新する。
e)次に、CPU6は、Page−yにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
f)次に、CPU6は、Page−yRをバックアップする。具体的には、CPU6は、バックアップ領域へPage−yRを書き込む。
g)次に、CPU6は、Page−yRの1ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の22のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−yRを更新する。
h)次に、CPU6は、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−yを更新する。
以上で、書き込み2が実施されたこととなる。
そして、書き込み2が実施されたことで、「トランザクションによる更新領域の保護機能」は終了する。
そこで、CPU6は、バックアップ領域に記憶された書き込み1が実施される前のPage−xに記憶された全てのデータであるPage−xR、書き込み2が実施される前のPage−x´に記憶された全てのデータであるPage−x´R、書き込み2が実施される前のPage−yに記憶された全てのデータであるPage−yRをそれぞれ消去する。
C)書き込み3について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜e)の動作を実施する。
a)まず、CPU6は、Page−yに記憶される全てのデータを保護するため、Page−yに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
b)次に、CPU6は、Page−yRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−yRを書き込む。
c)次に、CPU6は、Page−yRの2ブロック目に、書き込み3で書き込まれるべきデータ(図8の31、32、及び33)を書き込む。すなわち、CPU6は、RAM 4に記憶されたPage−yRを更新する。
d)次に、CPU6は、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−yを更新する。
e)次に、CPU6は、バックアップ領域に書き込まれたPage−yRを消去する。
以上で、書き込み3が実施されたこととなる。
なお、上述した「transaction機能/保護機能付き書き込み」は、連続した書き込みとして定義された書き込みの間(即ち、上記トランザクションが実行されている間)、働かせるようにしてもよい。
この場合、監視手段としてのCPU6は、トランザクションの実行状態、即ち、連続した書き込みとして定義された書き込みが行われているか否かを監視する。
そして、CPU6は、連続した書き込みとして定義された書き込みが行われている間、「transaction機能/保護機能付き書き込み」を働かせるようになっている。
以上説明したように、本実施形態におけるICチップ1は、所定の領域を一のページとして、一又は複数のページに区画される不揮発性メモリ5を備え、更新要求に基づいて、不揮発性メモリ5の指定されたページの指定された領域に記憶されるデータを更新し、ICチップの基本的な動作を管理するカードOSが備える基本的な機能であって、当該カードOSの制御に基づいて、前記データを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータをバックアップ領域へ書き込む「カードOSによる非更新領域の保護機能」と、前記カードOS上で動作し前記CPU6に所定の機能を実行させるアプリケーションの要求に応じた前記カードOSの制御に基づいて、更新前の前記更新領域に記憶されるデータをバックアップ領域へ書き込む「トランザクションによる更新領域の保護機能」とを備え、「トランザクションによる更新領域の保護機能」は、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記バックアップ領域に書き込み、当該ページに非更新領域が存在しないものとして前記カードOSに通知して、「カードOSによる非更新領域の保護機能」を機能させないように構成したので、適切な保護機能によってデータをバックアップすることにより、不要なバックアップ処理を行わないため、データの保護機能による処理時間の短縮を図ることができる。
なお、上述した例では、「transaction機能/保護機能付き書き込み」は、ICチップ用処理プログラムの制御によりCPU6が実行することとして説明したが、これに限られず、例えば、「transaction機能/保護機能付き書き込み」は、「トランザクションによる更新領域の保護機能」をCPU6に実行させるアプリケーションによって実行させるようにしてもよい。
[4.第2の実施形態]
次に、図8及び図9を参照して、本願の実施例2について説明する。
第2の実施形態が、第1の実施形態と異なる点は、これから更新されるページと同一のページのバックアップデータが既に書き込まれているか否かを検索し、既に書き込まれている場合には、これから更新されるページのバックアップデータを書き込まない構成を追加した点である。以下、この構成を「バックアップ検索機能」と称する。
まず、図9を参照して、本願の第1の実施形態におけるバックアップ領域に書き込まれるデータについて説明する。
図9は、本願の第1の実施形態におけるバックアップ領域に書き込まれるデータ構造を概念的に示す図である。
なお、既に説明した第1の実施形態と少なくとも同様の機能を果たす部分には、同一の符号を付して、重複する説明や図面を省略する。
図9に示すように、第1の実施形態におけるバックアップ領域に書き込まれるデータは、Page−xのバックアップデータとしてのPage−xR(A)書き込み1についてb)参照)と、Page−x´(図8の11及び12が更新されたもの)のバックアップデータとしてのPage−x´R(B)書き込み2についてb)参照)と、Page−yのバックアップデータとしてのPage−yR(B)書き込み2についてb)参照)の3つである。
ここで、「トランザクションによる更新領域の保護機能」として保障されるのは、連続した書き込みの保証として、書き込み1と書き込み2の両方を更新する前の更新領域の状態である。
そして、例えば、書き込み1で瞬断が発生した場合には、書き込み1と書き込み2の両方を更新する前の更新領域の状態として、Page−xRとPage−yRが不揮発性メモリ5に書き込まれることとなる。
ここで、Page−xRは、と同一のページであり、Page−x´Rは「トランザクションによる更新領域の保護機能」を機能させる際に省略することができるバックアップデータであることに気が付く。
そこで、本願の第2の実施形態では、検索手段としてのCPU6は、更新領域が属するページが、バックアップ管理領域を参照して、バックアップ領域に既に書き込まれている(記憶されている)か否かを検索し、前記更新領域が属するページが、バックアップ領域に既に書き込まれていることが検索されなかった場合には、第2の保護手段としてのCPU6は、当該更新領域が属するページに記憶される全てのデータを、バックアップ領域に記憶するようになっている。
ここで、図8及び図9を参照して、「バックアップ検索機能」が適用された場合のCPU6の動作の詳細について説明する。
また、ここで説明する例では、図8で定義される不揮発性メモリ5に対する更新として、A)書き込み1、B)書き込み2、及び、C)書き込み3、が行われるものとし、これらの書き込み条件(例えば、上述した連続した書き込みとして定義されていること等)は、図8で定義された条件と同一の条件を適用するものとする。
A)書き込み1について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜d)の動作を実施する。
a)まず、CPU6は、Page−xに記憶される全てのデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−xRとする。
この場合、CPU6は、書き込み1で更新の対象となるPage−xに記憶される全てのデータをRAM4へ書き込み、その後、不揮発性メモリ5へ書き込むことで、Page−xに記憶される全てのデータを更新の対象とし、非更新領域が存在しないものとしてカードOSへ通知するのは、第1の実施形態の場合と同様である。
この通知を受けたカードOSは、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
b)次に、CPU6は、Page−xRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−xRを書き込む。
c)次に、CPU6は、Page−xRの領域のうち連続する2ブロックに、書き込み1で書き込まれるべきデータを書き込む(図8の11及び12のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−xRを更新する。
d)次に、CPU6は、更新されたPage−xRを、不揮発性メモリ5のPage−xへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−xを更新する。
以上で、書き込み1が実施されたこととなる。
B)書き込み2について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜g)の動作を実施する。
a)まず、CPU6は、Page−xに記憶される全てのデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。
ここで、CPU6は、バックアップ管理領域を参照して、更新領域が属するページとしてのPage−xがバックアップ領域に既に記憶されているか否かを検索する。
ここでは、バックアップ管理領域に、A)書き込み1についてb)において、既にPage−xのバックアップデータが記憶されていることが示されている。
そこで、CPU6は、現在のPage−xに記憶されるデータである書き込み1で更新された(図8の11及び12が更新された)Page−x´のバックアップデータを書き込まないようになっている。
b)次に、CPU6は、Page−x´Rの256ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の21のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−x´Rを更新する。
c)次に、カードOSは、更新されたPage−x´Rを、不揮発性メモリ5のPage−x´へ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−aを更新する。
d)次に、CPU6は、Page−yにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
e)次に、CPU6は、Page−yRをバックアップする。具体的には、CPU6は、バックアップ領域へPage−yRを書き込む。
f)次に、CPU6は、Page−yRの1ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の22のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−yRを更新する。
g)次に、CPU6は、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−yを更新する。
以上で、書き込み2が実施されたこととなる。
そして、書き込み2が実施されたことで、「トランザクションによる更新領域の保護機能」は終了する。
そこで、CPU6は、バックアップ領域に記憶された書き込み1が実施される前のPage−xに記憶された全てのデータであるPage−xR、書き込み2が実施される前のPage−x´に記憶された全てのデータであるPage−x´R、書き込み2が実施される前のPage−yに記憶された全てのデータであるPage−yRをそれぞれ消去する。
C)書き込み3について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜e)の動作を実施する。
a)まず、CPU6は、Page−yに記憶される全てのデータを保護するため、Page−yに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
b)次に、CPU6は、Page−yRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−yRを書き込む。
c)次に、CPU6は、Page−yRの2ブロック目に、書き込み3で書き込まれるべきデータ(図8の31、32、及び33)を書き込む。すなわち、CPU6は、RAM4に記憶されたPage−yRを更新する。
d)次に、CPU6は、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−yを更新する。
e)次に、CPU6は、バックアップ領域に書き込まれたPage−yRを消去する。
以上で、書き込み3が実施されたこととなる。
以上説明したように、本実施形態におけるICチップ1は、更新領域が属するページが、バックアップ管理領域を参照して、バックアップ領域に既に書き込まれているか否かを検索し、前記更新領域が属するページが、バックアップ領域に既に書き込まれていることが検索されなかった場合には、CPU6は、当該更新領域が属するページに記憶される全てのデータを、バックアップ領域に記憶するように構成したため、不要なバックアップ処理を行わないため、データの保護機能による処理時間の短縮を図ることができる。
なお、上述した例では、「transaction機能/保護機能付き書き込み」において、「バックアップ検索機能」を適用するように構成したが、これに限定されず、「バックアップ検索機能」を単独で機能させるようにしても良い。
具体的には、通常の更新要求が入力された場合に、CPU6は、更新要求に示される更新領域が属するページが、バックアップ領域に既に記憶されているか否かを検索し、更新領域が属するページが、バックアップ領域に既に記憶されていることが検索されなかった場合には、当該更新領域が属するページに記憶される全てのデータを、バックアップ領域に記憶するようにしても良い。
また、上述した例では、CPU6を本願の第2の保護機能として機能させる「トランザクションによる更新領域の保護機能」は、アプリケーションが備える機能として説明したが、これに限定されることはなく、種々の形態を採ることができる。例えば、上記「トランザクションによる更新領域の保護機能」を、カードOSが備える機能とするようにしても良いし、バーチャルマシン(図2参照)や、OS層22(図2参照)に新たに設けられるモジュールに備えるようにしても良い。
同様に、CPU6を本願の第1の保護機能として機能させる「カードOSによる非更新領域の保護機能」は、カードOSが備える機能として説明したが、これに限定されることはなく、種々の形態を採ることができる。例えば、上記「カードOSによる非更新領域の保護機能」を、アプリケーションが備える機能とするようにしても良いし、バーチャルマシン(図2参照)や、OS層22(図2参照)に新たに設けられるモジュールに備えるようにしても良い。
また、上記実施形態においては、JAVAカードに対応したICカード8を適用したがこれに限られず、カードOS上で所定の機能を実行するアプリケーションが搭載できるICカードであれば種々のICカードを適用することができる。