説明

ICチップ、ICチップにおける処理方法、ICチップ用処理プログラム、及びICカード等

【課題】適切な保護機能によってデータを保護することにより、データの保護機能による処理時間の短縮を図るICチップ、ICチップにおける処理方法、ICチップ用処理プログラム、及びICカード等を提供する。
【解決手段】CPU6は、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」とを備え、「トランザクションによる更新領域の保護機能」は、更新前の更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記バックアップ領域に書き込み、当該ページに非更新領域が存在しないものとしてカードOSに通知して、「カードOSによる非更新領域の保護機能」を機能させない。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データを管理する装置及び方法等の技術分野に関する。
【背景技術】
【0002】
ICカードを用いた商取引等では、ICカードに搭載されたICチップの不揮発性メモリ等に記憶される種々の重要なデータ(例えば、決済処理に用いられる個人情報等)が、必要に応じて読み出され、消去され、又は、新たなデータに書き換えられる。
【0003】
この不揮発性メモリは、電力を失ってもデータを保持し続ける特性があるが、ICカードの処理中、例えば、当該不揮発性メモリに対してデータが書き込まれている間は、書き込み中のデータを保障することができない。
【0004】
具体的には、ICカードがリーダライタ装置に挿入され、当該不揮発性メモリに対してデータが書き込まれている間に、利用者によってICカードがリーダライタ装置から強制的に引き抜かれた場合(所謂、利用者による引き抜き)や、ICカードとリーダライタ装置との端子間で接触不良が生じた場合等の瞬断が発生した場合には、ICカードにおける処理が中断され、カード内の大切なデータが破壊される虞がある。
【0005】
このため、一般的なICカードは、瞬断によるデータの破壊を防止すべく、瞬断を考慮した保護機能(専用の保護機能)が搭載されている。
【0006】
そして、上述した瞬断を考慮した保護機能は、メモリ管理者としてカードOSの基本的な機能として提供されている。以下、この瞬断を考慮した保護機能を単に「カードOSによる非更新領域の保護機能」と称する。
【0007】
この「カードOSによる非更新領域の保護機能」の概要は、更新されるデータ以外のデータである非更新領域のデータを保護するため、当該データのバックアップを、予め他の領域(例えば、不揮発性メモリに設定されたバックアップ領域等)に書き込んだ後、実際にデータの更新(書き込みを含む)を行う。更新作業が完了した場合は、バックアップ領域に更新が成功した情報を追加する。そして、バックアップ領域に記憶された当該データのバックアップを消去する。一方、更新の途中に処理が中断(瞬断)されたならば、次にカードが活性化した直後にバックアップ領域の内容を調べ、更新作業が完了していないデータに対して実際のデータ領域(この場合、非更新領域)に書き戻すようになっている。
【0008】
また、特許文献1では、書き込み領域縮小化及びバックアップの処理時間の短縮化の観点から、バックアップ対象として、非更新領域のデータのみを、予め他の領域にコピーする技術が開示されている。
【0009】
一方、更新領域の保護に関しては、JAVA(登録商標)カードが有する機能において提供されている。
【0010】
JAVAカードは、公知の技術であるため詳しい説明は省略するが、一般的なICカードのOSの上にバーチャルマシン(Virtual Machine)をのせたICカードであり、所定のプラットフォームのもと、JAVA言語でICカードのアプリケーションを作成することが可能となっている。このプラットフォームは、例えば、JAVA CARD 3.0等で規格化されている。
【0011】
そして、JAVAカードでは、更新領域の保護に関してトランザクション(Transaction)という仕組みが利用されている。トランザクションとは、特定の一連の処理の開始前もしくは終了後の何れかの状態のみを取り得る仕組みをいう。
【0012】
上述した「カードOSの保護機能における非更新領域の保護機能」は、一度の更新(例えば、一のデータの書き込み)に対して有効であるのに対して、このトランザクションによる更新領域の保護では、予め定められた一又は複数の書き込み(以下、単に「連続した書き込み」と称する。)において、連続した書き込みの保障が可能である。この連続した書き込みの保障とは、更新前の更新領域の状態、又は更新後の更新領域の状態の何れかの状態を取り得ることができることをいう。以下、トランザクションにおける更新領域の保護について、単に、「トランザクションによる更新領域の保護機能」と称する。
【0013】
この「トランザクションによる更新領域の保護機能」の一例として、上記更新前の更新領域の状態を取り得ることを可能とするため、不揮発性メモリに記憶されたデータのうち、更新される領域に既に記憶されているデータをバックアップ領域へ書き込む。そして、更新の途中に処理が中断されたならば、次にカードが活性化した直後にバックアップ領域の内容を調べ、更新作業が完了していないデータに対して、バックアップ領域へ書き込まれたデータを、実際のデータ領域(この場合、更新領域)へ書き戻すようになっている。一方、上記連続した書き込みが完了した場合には、バックアップ領域に記憶された当該データのバックアップが消去される。
【0014】
また、従来のICカードでは、不揮発性メモリに対してページ単位でデータが更新されるのであるが、このページあたりに記憶されるデータの容量(単位)が1byte、2byte、又は4byte、と小さいことが通常であり、更新(データの書き込み及び消去等)される時間も短かった。
【0015】
そのため、従来のICカードでは、「カードOSによる非更新領域の保護機能」(記憶領域の更新領域を保護する機能)と「トランザクションによる更新領域の保護機能」(非更新領域を保護する機能)が別々に定義されており、ICカードがデータを更新する際に、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」がそれぞれ機能するようになっていた。
【先行技術文献】
【特許文献】
【0016】
【特許文献1】特開2008−134945号公報
【発明の概要】
【発明が解決しようとする課題】
【0017】
近年、不揮発性メモリの大容量化が進み、ページあたりに記憶されるデータの容量が128byte、又は256byteと増加している。このページあたりに記憶されるデータの容量の増加に伴い、バックアップされる更新領域及び非更新領域のデータも拡大しており、更新やバックアップに要する処理時間が増加している。
【0018】
さらに、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」がそれぞれ機能すると、更新やバックアップに要する処理時間はさらに増加し、ユーザの利便性を損なうといった問題点がある。
【0019】
そこで、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」を統合して、適切な保護機能によってデータを保護することにより、データの保護機能による処理時間の短縮を図るといった考え方もある。
【0020】
この統合では、上記トランザクションの実行中に、「トランザクションによる更新領域の保護機能」によって、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとしてカードOSに通知して、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0021】
しかしながら、この統合は、上記トランザクションの実行中でなければ働かない。従って、連続した書き込みとして定義されない書き込み要求が、連続してなされた場合には、当該書き込み要求毎に「カードOSによる非更新領域の保護機能」が働き、バックアップ領域に対してデータの記憶及び当該データの消去が繰り返され、更新やバックアップに要する処理時間が増加するといった問題点がある。
【0022】
そこで、本発明は、このような点等に鑑みてなされたものであり、データの保護機能を複数備えるICチップにおいて、適切な保護機能によってデータを保護することにより、データの保護機能による処理時間の短縮を図るICチップ、ICチップにおける処理方法、ICチップ用処理プログラム、及びICカード等を提供することを目的とする。
【課題を解決するための手段】
【0023】
上記課題を解決するために、請求項1に記載の発明は、所定の領域を一のページとして、一又は複数のページに区画される記憶部を備え、更新要求に基づいて、前記記憶部の指定されたページの指定された領域に記憶されるデータを更新するICチップであって、前記データを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータを保護する第1の保護手段と、特定の一連の更新処理の開始前又は終了後の何れかにおける記憶部に記憶されるデータを保護可能とするトランザクションの実行中に、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記第1の保護手段を機能させない第2の保護手段と、を備え、前記第2の保護手段は、更新要求があった場合には、前記トランザクションの実行中であるものとして、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記第1の保護手段を機能させないことを特徴とする。
【0024】
請求項2に記載の発明は、請求項1に記載のICチップであって、前記第1の保護手段は、ICチップの基本的な動作を管理するオペレーティングシステムが備える基本的な機能であって、当該オペレーティングシステムの制御に基づいて実行され、前記第2の保護手段は、前記オペレーティングシステム上で動作し、前記ICチップに所定の機能を実行させるアプリケーションの要求に応じた前記オペレーティングシステムの制御に基づいて実行されることを特徴とする。
【0025】
請求項3に記載の発明は、請求項1又は2に記載のICチップであって、前記更新が終了した場合には、前記第2の保護手段によって記憶されたデータを消去するバックアップデータ消去手段をさらに備えることを特徴とする。
【0026】
請求項4に記載の発明は、請求項1乃至3の何れか一項に記載のICチップであって、前記バックアップデータ消去手段は、前記第2の保護手段によって記憶されたデータが記憶される前記記憶部の記憶容量が上限に達した場合には、当該データを消去することを特徴とする。
【0027】
請求項5に記載の発明は、請求項1乃至4の何れか一項に記載のICチップと、ICカード基体と、を備えることを特徴とする。
【0028】
請求項6に記載の発明は、所定の領域を一のページとして、一又は複数のページに区画される記憶部を備え、更新要求に基づいて、前記記憶部の指定されたページの指定された領域に記憶されるデータを更新するICチップにおいて実行されるICチップにおける処理方法であって、前記データを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータを保護する第1の保護工程と、特定の一連の更新処理の開始前又は終了後の何れかにおける記憶部に記憶されるデータを保護可能とするトランザクションの実行中に、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記オペレーティングシステムに通知して、前記第1の保護手段を機能させない第2の保護工程と、を備え、前記第2の保護工程更新要求があった場合には、前記トランザクションの実行中であるものとして、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記第1の保護手段を機能させないことを特徴とする。
【0029】
請求項7に記載の発明は、所定の領域を一のページとして、一又は複数のページに区画される記憶部を備え、更新要求に基づいて、前記記憶部の指定されたページの指定された領域に記憶されるデータを更新するICチップに含まれるコンピュータを、前記データを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータを保護する第1の保護手段、特定の一連の更新処理の開始前又は終了後の何れかにおける記憶部に記憶されるデータを保護可能とするトランザクションの実行中に、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記オペレーティングシステムに通知して、前記第1の保護手段を機能させない第2の保護手段、として機能させ、前記第2の保護手段は、更新要求があった場合には、前記トランザクションの実行中であるものとして、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記第1の保護手段を機能させないことを特徴とする。
【発明の効果】
【0030】
本発明によれば、データの保護機能を複数備えるICチップにおいて、適切な保護機能によってデータを保護することにより、データの保護機能による処理時間の短縮を図ることができる。
【図面の簡単な説明】
【0031】
【図1】本実施形態にかかるICカードの構成及び機能概要を示すブロック図である。
【図2】ICカードのソフトウェア構成を模式的に示す図である。
【図3】カードOSによる非更新領域の保護機能が適用される場合のCPU6の動作の概要を示すフローチャートである。
【図4】不揮発性メモリ5のデータ領域にデータが記憶される状態を示す概念図である。
【図5】ページ単位で不揮発性メモリ5のデータ領域にデータが記憶される状態を示す概念図である。
【図6】トランザクションによる更新領域の保護機能が適用される場合のCPU6の動作の概要を示すフローチャートである。
【図7】ICカードによって更新されるデータを概念的に示す図である。
【図8】ページあたりに記憶されるデータの容量が大容量である場合に、ICカードによって更新されるデータを概念的に示す図である。
【図9】「バックアップ検索機能」が適用されない場合のバックアップ領域に書き込まれるデータ構造を概念的に示す図である。
【図10】連続した書き込みとして定義されない複数の更新要求があった場合のCPU6の動作を示すフローチャートである。
【図11】複数の更新要求を概念的に示す図である。
【図12】複数の更新要求と「カードOSによる保護機能」の詳細を概念的に示す図である。
【図13】本実施形態のCPU6の動作の詳細を示すフローチャートである。
【発明を実施するための形態】
【0032】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ICカードの一例としての上述したJAVAカードに対して本発明を適用した場合の実施の形態である。以下、JAVAカードに対応したICカードを、単にICカードと称する。
【0033】
[1.ICカードのハードウェア構成及び機能概要]
まず、図1を参照して、本願のICカードのハードウェア構成及び機能概要について説明する。本実施形態にかかるICカードの構成及び機能概要を示すブロック図である。
【0034】
図1は、本実施形態にかかるICカードの構成及び機能概要を示すブロック図である。
【0035】
図1に示すように、ICカード8は、ICチップ1をカード基体7に備えている。
【0036】
そして、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を介した外部機器とのデータ通信は、接触方式と非接触方式の何れの方式であってもよい。
【0037】
I/O回路2は、図示しない外部機器とデータ通信するための処理回路である。
【0038】
ROM3は、CPU6によって実行されるべきプログラムが記憶されており、CPU6は、このプログラムに基づいてICチップ1を統括的に制御する。
【0039】
また、ROM3に記憶されるプログラムとしては、カードOS(本願のオペレーティングシステムの一例)、複数種類のアプリケーションプログラム、及び本発明のICチップ用処理プログラムがある。なお、本発明のICチップ用処理プログラムは、カードOS又はアプリケーションプログラムの一機能として組み込まれてもよい。また、これらのプログラムは、不揮発性メモリ5に記憶されるようにしてもよい。
【0040】
RAM4は、CPU6がICチップ1を統括的に制御等するために作業領域として使用する記憶領域である。
【0041】
不揮発性メモリ5は、不揮発性半導体メモリの一種であり、記憶領域に記憶されるデータを消去し、何度でも再記憶ができるPROM(Programmable Rom)である。
【0042】
また、本実施形態における不揮発性メモリ5は、各領域にアドレスが付されており、所定の領域を1のページとして、一又は複数のページに区画される。
【0043】
そして、不揮発性メモリ5は、CPU6により各種データが書き込まれる(記憶される)データ領域と、詳しくは後述するがバックアップデータが書き込まれるバックアップ領域を有する。
【0044】
CPU6は、上述したようにプログラムに基づいてICチップ1全体の動作を統括的に制御するとともに、その機能の一部として、データ領域の指定されたページの指定された領域のデータを更新し、さらに、本願の第1の保護手段、第2の保護手段、又は、バックアップデータ消去手段等として機能する。
【0045】
なお、更新といった場合には、少なくともデータ領域等に記憶されたデータを書き換えることのみならず、新たにデータを書き込むことを含むものとする。
【0046】
[2.ICカードのソフトウェア構成及び機能概要]
次に、図2を参照して、ICカードのソフトウェア構成について説明する。
【0047】
図2は、ICカードのソフトウェア構成を模式的に示す図である。
【0048】
図2に示すように、ICカードのハードウェアを構成するRAM4、不揮発性メモリ5、及びCPU6等のハードウェア層21は、OS(オペレーティング)層22のカードOSによって制御される。
【0049】
OS層22は、JAVAカードを動作させるための環境を含めたバーチャルマシン(Virtual Machine)、アプリケーション(アプレット)の管理をするI.S.D.(Issuer Security Domain)、アプレットの関数であるAPIといったモジュールがカードOSにのった状態となっていて、アプリケーション(アプレット)層23が最上位に位置する。
【0050】
このカードOSは、当該ICカードの基本的な動作を管理するプログラムであり、ハードウェア層21の各ハードウェアを制御したり、各ハードウェアからの処理結果などの情報を受けて動作するプログラムである。
【0051】
そして、上述した「カードOSによる非更新領域の保護機能」は、メモリ管理者としてカードOSの基本的な機能として提供される。
【0052】
この「カードOSによる非更新領域の保護機能」は、CPU6を、本願の第1の保護手段として機能させ、本願のカードOSの制御に基づいて、不揮発性メモリ5に記憶されるデータを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータを保護するようになっている。
【0053】
アプリケーション層23は、カードOS上で動作し、CPU6に所定の機能を実行させるための各種のアプリケーション(アプリケーションA、アプリケーションB等。本願のアプリケーションの一例、以下単に「アプリケーション」とする。)から構成される。
【0054】
そして、上述した「トランザクションによる更新領域の保護機能」は、アプリケーション層23のアプリケーションの機能として提供されている。
【0055】
この「トランザクションによる更新領域の保護機能」は、CPU6を、本願の第2の保護手段として機能させ、上記アプリケーションの要求に応じたカードOSの制御に基づいて、更新前の前記更新領域に記憶されるデータを保護するようになっている。
【0056】
ここで、「カードOSによる非更新領域の保護機能」及び「トランザクションによる更新領域の保護機能」の詳細について説明する。
【0057】
まず、図3を参照して、「カードOSによる非更新領域の保護機能」が適用される場合のCPU6の動作の概要について説明する。
【0058】
図3は、カードOSによる非更新領域の保護機能が適用される場合のCPU6の動作の概要を示すフローチャートである。
【0059】
なお、カードOSが備える機能(例えば、後述する保護機能動作)、及びアプリケーションが備える機能(例えは、後述するコマンドの処理)は、当該カードOS又はアプリケーションの制御に基づいてCPU6によって実行される。すなわち、カードOSが備える機能、及びアプリケーションが備える機能が実行される場合の動作主体は、ICカードのCPU6である。しかし、本実施形態においては、説明の便宜上、カードOSが備える機能が実行される場合の動作主体をカードOSとし、アプリケーションが備える機能が実行される場合の動作主体をアプリケーションとする。
【0060】
図3に示すように、まず、カードOS(CPU6)が、例えばI/O回路2を介して、コマンドを受信すると(ステップS101)、カードOSは、受信したコマンドをどのアプリケーションへ渡すか決定する(ステップS102)。そして、カードOSは、受信したコマンドを、決定されたアプリケーションへ渡す。アプリケーション(CPU6)は、コマンドを取得すると(ステップS103)、コマンドを処理して(例えば、コマンド解釈等)(ステップS104)、必要があれば不揮発性メモリ5のデータを更新する(不揮発性メモリ5へデータを書き込ませる)(ステップS105)。
【0061】
この不揮発性メモリ5のデータを更新(不揮発性メモリ5への書き込み)は、カードOSが提供する機能の一部になっているので、実際には、カードOSへ、更新の依頼をする(ステップS106)。
【0062】
ここで、図4及び図5を参照して、一般的な不揮発性メモリに記憶されるデータの更新について説明する。
【0063】
図4は不揮発性メモリのデータ領域にデータが記憶される状態を示す概念図であり、図5はページ単位で不揮発性メモリのデータ領域にデータが記憶される状態を示す概念図である。
【0064】
一般的に、ICカードの不揮発性メモリのデータの更新は、初期化を行ってから更新される。
【0065】
具体的に、この更新は、不揮発性メモリのデータ領域に記憶されるデータの値を、0から1、又は1から0へ、一方向へ値を書き込むことをいう。そして、不揮発性メモリでは、初期状態の値が0か1に必ず決定されている。即ち、この更新は、初期状態が0の場合は1へ、初期状態が1であれば0へ値を書き込むことをいう。
【0066】
初期状態の値にないもの、例えば、初期状態の値が0で、その領域に1の値が書き込まれているものに対して、さらにその値を0と書き込みたいときは、書き込みというよりも初期状態に戻すという(クリアする)概念になっている。
【0067】
ここで、この書き込みについて図4を参照して説明すると、不揮発性メモリのデータ領域(記憶領域)に、0xAAの値が書き込まれているものに対して(図4(A))、0x55の値を書き込む場合(図4(C))には、初期化が行われて、0xFFという初期値に戻される(図4(B))。その上で改めて、0の値にしなければならないところに対して、0の値が書き込まれるため、書き込みの動作は、データを一度消去して、書き込むといった2段階の動作を伴うものとなっている。
【0068】
このとき、一度に初期化される領域を1ページとすると、図5に示すように更新領域X(データが書き込まれる領域)が3ページにわたる場合、上述したように不揮発性メモリのデータが更新される際には一度初期化が行われるため、ページA、ページB、及びページCの全てのデータが一度消去されることとなる。
【0069】
このページA及びページCには、更新データ以外のデータY(非更新領域Y)が含まれているが、ページ単位でしか消去されないため、この非更新領域に記憶されるデータが消去の対象となり、もともと存在していたデータが消されてしまうこととなる。
【0070】
この処理の最中、即ち、非更新領域が一度消されたときに瞬断が発生してしまうと、当該非更新領域のデータは消去されたまま(0xFFのまま)になってしまうので、こういった非更新領域を保護、即ち、消去される前の状態に戻そうというのが上述した「カードOSによる非更新領域の保護機能」である。
【0071】
具体的に、図5においては、非更新領域のデータYは、ページA及びページCに記憶されている。従って、保護されるべきデータは、データYである。従って、ページA及びページCがページ単位で保護対象(バックアップ対象)として、例えば、バックアップ領域等に書き込まれる。以下に、保護対象としてバックアップ領域に書き込まれたデータを、バックアップデータと称する。
【0072】
このようにして、「カードOSによる非更新領域の保護機能」によって、非更新領域が保護されるようになっている。
【0073】
図3のフローチャートの説明に戻り、カードOSは、この保護機能を使って、瞬断に備えた更新を行う(ステップS106)。
【0074】
そして、アプリケーションは、残りの処理があれば、コマンド処理をして(ステップS107)、レスポンスデータを送信するのはカードOSの処理となるため、カードOSへレスポンスデータを通知する(ステップS108)。そして、カードOSはレスポンスデータを取得すると(ステップS109)、例えば、外部装置(リーダライタ装置等)へレスポンスデータを送信する(ステップS110)。
【0075】
次に、図6を参照して、「トランザクションによる更新領域の保護機能」が適用される場合のCPU6の動作の概要について説明する。
【0076】
図6は、「トランザクションによる更新領域の保護機能」が適用される場合のCPU6の動作の概要を示すフローチャートである。
【0077】
上述したように、「トランザクションによる更新領域の保護機能」は、トランザクションにより実現されており、このトランザクションは例えば、上記アプリケーションの機能として提供されている。
【0078】
この「トランザクションによる更新領域の保護機能」について説明すると、あるコマンド処理の中で、不揮発性メモリに対して、3回の連続した書き込み(書き込み1、書き込み2、書き込み3)が行われる場合を考える。そして、書き込み1及び書き込み2が、連続した書き込みとして定義されているとする。
【0079】
この場合、「トランザクションによる更新領域の保護機能」として連続した書き込みの保障がなされる。具体的に、書き込み1及び書き込み2は、連続した書き込みの保障として、書き込み1と書き込み2の両方を更新する前の更新領域の状態、又は、書き込み1と書き込み2の両方を更新した後の更新領域の状態何れかの状態が保障される。
【0080】
具体的には、書き込み2の途中で引き抜き等の瞬断が発生した場合、書き込み1を実施する前の書き込み1と書き込み2の更新領域の状態へ戻るようになっている。一方、書き込み3は、予め定められた書き込みとして定義されていないため、連続した書き込みの保障に含まれない。従って、書き込み3の途中に引き抜き等の瞬断が発生しても、書き込み3が書き込まれる前の状態に戻るだけである。
【0081】
ここで、図6のフローチャートを説明する。
【0082】
図6に示すフローチャートでは、書き込み1及び書き込み2が連続した書き込みとして定義されているものとする。この連続した書き込みとは、例えば、会員登録において氏名と会員番号に関連性を持たせてカードOSに登録させる場合が想定できる。会員登録における氏名と会員番号の登録は、関連した処理であると想定でき、これらの登録を統括して管理するために、連続した書き込みとして定義するのである。
【0083】
図6で示すフローチャートの説明として、まず、カードOSが、例えばインターフェースを介して、コマンドを受信すると(ステップS201)、カードOSは、受信したコマンドをどのアプリケーションへ渡すか決定する。そして、カードOSは、受信したコマンドを、決定されたアプリケーションへ渡す(ステップS202)。アプリケーションは、コマンドを取得すると(ステップS203)、コマンドを処理(例えば、コマンド解釈等)する(ステップS204)。
【0084】
そして、アプリケーションは、取得したコマンドが連続した書き込みとして定義された書き込み命令であると判断した場合には、カードOSへ、"Begin transaction"と称されるトランザクション機能を開始させる指示を与える(ステップS205)。
【0085】
このトランザクション機能とは、上述した「トランザクションによる更新領域の保護機能」のことをいい、カードOSへ、上述した連続した書き込みの保障させるものである。以下、カードOSによって連続した書き込みの保障が開始された状態を、「transaction開始」と称する。
【0086】
カードOSによる「transaction開始」の状態では(ステップS206)、記憶領域のうち、連続した書き込みとしての書き込み1(ステップS207)及び書き込み2(ステップS209)が書き込まれる領域(更新領域)のデータがバックアップ(予め他の領域にコピー)される。そして、トランザクション機能が終了した状態である「Commit transaction」の状態にある場合には(ステップS211)、カードOSは、トランザクション機能を停止する(ステップS212)。
【0087】
このステップS205〜ステップS212のアプリケーション及びカードOSの処理の一例としては、書き込み1(ステップS207)及び書き込み2(ステップS209)が行われる間に、引き抜き等の瞬断が発生すると、「transaction開始」の前の状態、又は、トランザクション機能が終了した状態である「Commit transaction」の状態にある場合にはトランザクション機能が終了した状態の何れかの状態となる(ステップS208及びステップS209のtransaction機能/保護機能動作。)。
【0088】
ここで、「transaction開始」の前の状態とは、バックアップされた書き込み1及び書き込み2が書き込まれる領域のデータが読み込まれ、例えば、データ領域に書き込まれることをいう。また、「transaction開始」の前の状態とは、書き込み1及び書き込み2が書き込まれた後(即ち更新された後)に、データ領域に書き込まれたデータが維持されることをいう。
【0089】
次に、アプリケーションは、他に受信したコマンドがあれば、コマンドを処理する(ステップS213)。ここでは、コマンドの処理Bとして、連続した書き込みとして定義されていない書き込み命令が実行される場合を説明する。
【0090】
この場合、「トランザクションによる更新領域の保護機能」は働かず、通常の「カードOSによる非更新領域の保護機能」が働くこととなる。
【0091】
そして、アプリケーションは、カードOSへ、書き込みの依頼をする(ステップS214)。カードOSは、この保護機能を使って、瞬断に備えた書き込みを行う(ステップS215の保護機能動作)。
【0092】
そして、アプリケーションは、処理が終了すると、カードOSへレスポンスデータを通知する(ステップS216)。そして、カードOSは、レスポンスデータを取得すると(ステップS217)、例えば、外部装置(リーダライタ装置等)へレスポンスデータを送信する(ステップS218)。
【0093】
このように、従来のICカードでは、「カードOSによる非更新領域の保護機能」(記憶領域の更新領域を保護する機能)と「トランザクションによる更新領域の保護機能」(非更新領域を保護する機能)が別々に定義されていた。
【0094】
そして、従来のICカードでは、ICカードがデータを更新する際に、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」がそれぞれ機能するようになっていた。
【0095】
ここで、図7を参照して、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」がそれぞれ機能する場合のCPU6の動作の詳細について説明する。
【0096】
図7は、ICカードによって更新されるデータを概念的に示す図である。
【0097】
図7では、不揮発性メモリ5のデータ領域が概念的に示されている。この図7では、1byteを1ブロックとして2つのブロックに区切られた領域を一のページ(例えば、Page−a等)、として、複数のページに区画されたICカードの不揮発性メモリ5のデータ領域が示されている。図7では、複数のページの一例として、Page−aからPage−eが示されている。
【0098】
そして、この不揮発性メモリ5に対する更新として、A)書き込み1、B)書き込み2、及び、C)書き込み3、が行われる場合を説明する。
【0099】
これらの書き込みは、不揮発性メモリ5の指定されたページ(Page−a等)の指定された領域(1ブロック目か2ブロック目等)に記憶されるデータを更新するものである。また、書き込み1及び書き込み2は、上述した連続した書き込みとして定義されているものとする。
【0100】
具体的には、書き込み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参照)を、それぞれ実施させるものとする。
【0101】
A)書き込み1について
A−1)「トランザクションによる更新領域の保護機能」について
書き込み1及び書き込み2は、連続した書き込みとして定義されているため、上述した「トランザクションによる更新領域の保護機能」が働く。この場合、アプリケーションは、書き込み1を実施する前の書き込み1と書き込み2の更新領域の状態を取り得ることを可能とするため、書き込み1が実施される前のPage−aの2ブロック目からPage−bの1ブロック目までに記憶されたデータをバックアップさせる。
【0102】
具体的には、例えば、アプリケーションは、書き込み1が実施される前のPage−aの2ブロック目からPage−bの1ブロック目までに記憶されたデータ(図7の11及び12参照)をRAM4に一時的に記憶し、その後バックアップ領域へ当該データを、カードOSに書き込ませる。
【0103】
A−2)「カードOSによる非更新領域の保護機能」について
次に、「カードOSによる非更新領域の保護機能」が働く。具体的には、カードOSは、以下のa)〜j)の動作を実施する。
【0104】
a)まず、カードOSは、Page−aにおける非更新領域のデータを保護するため、Page−aに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−aRとする。
【0105】
b)次に、カードOSは、Page−aRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−aRを書き込む。
【0106】
c)次に、カードOSは、Page−aRの2ブロック目に、書き込み1で書き込まれるべきデータを書き込む(図7の11のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−aRを更新する。
【0107】
d)次に、カードOSは、更新されたPage−aRを、不揮発性メモリ5のPage−aへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−aを更新する。
【0108】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−aRを消去する。
【0109】
f)次に、カードOSは、Page−bにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−bRとする。
【0110】
g)次に、カードOSは、Page−bRをバックアップする。具体的には、カードOSは、バックアップ領域へPage−bRを書き込む。
【0111】
h)次に、カードOSは、Page−bRの1ブロック目に、書き込み1で書き込まれるべきデータを書き込む(図7の12のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−bRを更新する。
【0112】
i)次に、カードOSは、更新されたPage−bRを、不揮発性メモリ5のPage−bへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−bを更新する。
【0113】
j)次に、カードOSは、バックアップ領域に書き込まれたPage−bRを消去する。
【0114】
以上で、書き込み1が実施されたこととなる。
【0115】
B)書き込み2について
B−1)「トランザクションによる更新領域の保護機能」について
書き込み2も同様に、連続した書き込みとして定義されているため、上述した「トランザクションによる更新領域の保護機能」が働く。この場合、アプリケーションは、書き込み1を実施する前の書き込み1と書き込み2の更新領域の状態を取り得ることを可能とするため、書き込み2が実施される前のPage−cの全てに記憶されたデータをバックアップさせる。
【0116】
具体的には、例えば、アプリケーションは、書き込み1が実施される前のPage−cに記憶されたデータ(図7の21及び22のデータ)をRAM4に一時的に記憶し、バックアップ領域へ当該データを、カードOSに書き込ませる。
【0117】
B−2)「カードOSによる非更新領域の保護機能」について
書き込み2ではPage−cに記憶される全てのデータが更新対象であるため、Page−cには非更新領域が存在しない。従って、「カードOSによる非更新領域の保護機能」は働かないこととなる。この場合、カードOSは、以下のa)〜c)の動作を実施する。
【0118】
a)まず、カードOSは、Page−cに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−cRとする。ここでは、例えば、A−2)「カードOSによる非更新領域の保護機能」でPage−aR及びPage−bRがバックアップされたのとは異なり、Page−cRはバックアップされないこととなる。
【0119】
b)次に、カードOSは、Page−cRに、書き込み2で書き込まれるべきデータを書き込む(図7の21及び22のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−cRを更新する。
【0120】
c)次に、カードOSは、更新されたPage−cRを、不揮発性メモリ5のPage−cへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−cを更新する。
【0121】
以上で、書き込み2が実施されたこととなる。
【0122】
そして、書き込み2が実施されたことで、「トランザクションによる更新領域の保護機能」は終了する。従って、カードOSは、バックアップ領域に記憶された書き込み1が実施される前のPage−aからPage−cに記憶された更新領域のデータ(図7の11、12、21、及び22)を消去する。
【0123】
C)書き込み3について
C−1)「トランザクションによる更新領域の保護機能」について
書き込み3では、連続した書き込みとして定義されていないため、上述した「トランザクションによる更新領域の保護機能」は働かず、「カードOSによる非更新領域の保護機能」のみが働くこととなる。
【0124】
C−2)「カードOSによる非更新領域の保護機能」について
具体的に、カードOSは、以下のa)〜h)の動作を実施する。
【0125】
a)まず、カードOSは、Page−dにおける非更新領域のデータを保護するため、Page−dに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−dRとする。
【0126】
b)次に、カードOSは、Page−dRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−dRを書き込む。
【0127】
c)次に、カードOSは、Page−dRの2ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図7の21及び22のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−dRを更新する。
【0128】
d)次に、カードOSは、更新されたPage−dRを、不揮発性メモリ5のPage−dへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−dを更新する。
【0129】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−dRを消去する。
【0130】
また、書き込み3のうちPage−eに記憶されるデータを更新する場合には、Page−eに記憶される全てのデータが更新対象であるため、Page−eには非更新領域が存在しない。従って、「カードOSによる非更新領域の保護機能」は働かないこととなる。この場合、カードOSは、以下のf)〜h)の動作を実施する。
【0131】
f)まず、カードOSは、Page−eに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−eRとする。
【0132】
b)次に、カードOSは、Page−eRに、書き込み3で書き込まれるべきデータを書き込む。すなわち、カードOSは、RAM4に記憶されたPage−eRを更新する。
【0133】
ここでは、Page−eRはバックアップされないこととなる。
【0134】
c)次に、カードOSは、更新されたPage−eRを、不揮発性メモリ5のPage−eへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−eを更新する。
【0135】
以上で、書き込み3が実施されたこととなる。
【0136】
また、不揮発性メモリ5のページあたりに記憶されるデータの容量が、128byte、又は256byteと大容量である場合がある。このページあたりに記憶されるデータの容量の増加に伴い、同一ページ内に対する更新が連続したり、複数のページに跨る更新が発生するケースが増加する。
【0137】
ここで、図8を参照して、ページあたりに記憶されるデータの容量が大容量である場合に、「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」がそれぞれ機能する場合のCPU6の動作の詳細について説明する。
【0138】
図8は、ページあたりに記憶されるデータの容量が大容量である場合に、ICカードによって更新されるデータを概念的に示す図である。
【0139】
図8では、不揮発性メモリ5の領域が概念的に示されている。この図8では、1byteを1ブロックとして256のブロックに区切られた領域を一のページ(例えば、Page−x等)、として、複数のページに区画されたICカードの不揮発性メモリ5が示されている。図8では、複数のページの一例として、Page−xとPage−yが示されている。
【0140】
そして、この不揮発性メモリ5に対する更新として、A)書き込み1、B)書き込み2、及び、C)書き込み3、が行われる場合を説明する。
【0141】
これらの書き込みは、不揮発性メモリ5の指定されたページ(Page−x等)の指定された領域(1ブロック目か2ブロック目等)に記憶されるデータを更新するものである。また、書き込み1及び書き込み2は、上述した連続した書き込みとして定義されているものとする。
【0142】
具体的には、書き込み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参照)を、それぞれ実施させるものとする。
【0143】
A)書き込み1について
A−1)「トランザクションによる更新領域の保護機能」について
書き込み1及び書き込み2は、連続した書き込みとして定義されているため、上述した「トランザクションによる更新領域の保護機能」が働く。この場合、アプリケーションは、書き込み1を実施する前の書き込み1と書き込み2の更新領域の状態を取り得ることを可能とするため、書き込み1が実施される前のデータであるPage−xの領域のうち連続する2ブロックに記憶されたデータ(図8の11及び12参照)をバックアップする。
【0144】
具体的には、例えば、アプリケーションは、書き込み1が実施される前のPage−xの領域のうち連続する2ブロックに記憶されたデータをRAM4に一時的に記憶し、バックアップ領域へ当該データを、カードOSに書き込ませる。
【0145】
A−2)「カードOSによる非更新領域の保護機能」について
次に、「カードOSによる非更新領域の保護機能」が働く。具体的には、カードOSは、以下のa)〜j)の動作を実施する。
【0146】
a)まず、カードOSは、Page−xにおける非更新領域のデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−xRとする。
【0147】
b)次に、カードOSは、Page−xRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−xRを書き込む。
【0148】
c)次に、カードOSは、Page−xRの領域のうち連続する2ブロックに、書き込み1で書き込まれるべきデータを書き込む(図8の11及び12のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−xRを更新する。
【0149】
d)次に、カードOSは、更新されたPage−xRを、不揮発性メモリ5のPage−xへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−xを更新する。
【0150】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−xRを消去する。
【0151】
以上で、書き込み1が実施されたこととなる。
【0152】
B)書き込み2について
B−1)「トランザクションによる更新領域の保護機能」について
書き込み2も同様に、連続した書き込みとして定義されているため、上述した「トランザクションによる更新領域の保護機能」が働く。従って、アプリケーションは、書き込み1が実施される前のPage−xの256ブロック目からPage−yの1ブロック目までに記憶されたデータ(図8の21及び22のデータを更新する)を、RAM4に一時的に記憶し、その後不揮発性メモリ5に設定されたバックアップ領域へ当該データを書き込む。
【0153】
B−2)「カードOSによる非更新領域の保護機能」について
次に、「カードOSによる非更新領域の保護機能」が働く。具体的には、カードOSは、以下のa)〜j)の動作を実施する。
【0154】
a)まず、カードOSは、Page−xにおける非更新領域のデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−xRとする。
【0155】
b)次に、カードOSは、Page−xRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−xRを書き込む。
【0156】
c)次に、カードOSは、Page−xRの256ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の21のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−xRを更新する。
【0157】
d)次に、カードOSは、更新されたPage−xRを、不揮発性メモリ5のPage−xへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−xを更新する。
【0158】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−xRを消去する。
【0159】
f)次に、カードOSは、Page−yにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
【0160】
g)次に、カードOSは、Page−yRをバックアップする。具体的には、カードOSは、バックアップ領域へPage−yRを書き込む。
【0161】
h)次に、カードOSは、Page−yRの1ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の22のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−yRを更新する。
【0162】
i)次に、カードOSは、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−yを更新する。
【0163】
以上で、書き込み2が実施されたこととなる。
【0164】
そして、書き込み2が実施されたことで、「トランザクションによる更新領域の保護機能」は終了する。従って、カードOSは、バックアップ領域に記憶された書き込み1が実施される前のPage−xからPage−yに記憶された更新領域のデータ(図8の11、12、21、及び22)を消去する。
【0165】
C)書き込み3について
C−1)「トランザクションによる更新領域の保護機能」について
書き込み3は、連続した書き込みとして定義されていないため、上述した「トランザクションによる更新領域の保護機能」は働かず、「カードOSによる非更新領域の保護機能」のみが働くこととなる。
【0166】
C−2)「カードOSによる非更新領域の保護機能」について
具体的に、カードOSは、以下のa)〜e)の動作を実施する。
【0167】
a)まず、カードOSは、Page−yにおける非更新領域のデータを保護するため、Page−yに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
【0168】
b)次に、カードOSは、Page−yRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−yRを書き込む。
【0169】
c)次に、カードOSは、Page−yRの2ブロック目に、書き込み3で書き込まれるべきデータ(図8の31、32、及び33)を書き込む。すなわち、カードOSは、RAM4に記憶されたPage−yRを更新する。
【0170】
d)次に、カードOSは、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−yを更新する。
【0171】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−yRを消去する。
【0172】
以上で、書き込み3が実施されたこととなる。
【0173】
[3.「カードOSによる非更新領域の保護機能」と、「トランザクションによる更新領域の保護機能」の統合について]
上述したように、「カードOSによる非更新領域の保護機能」及び「トランザクションによる更新領域の保護機能」では、更新毎(例えば、上記書き込み1、又は上記書き込み2毎)に、当該更新の対象となるデータが属するページの非更新領域及び更新領域のデータがバックアップされる。従って、同一のページに記憶されたデータに対して連続する個別の更新が行われる場合には、同一のページのバックアップが重複して行われることとなる。また、隣り合うページに記憶されたデータに対して一の更新(例えば、上記書き込み1のみ)が行われる場合には、2ページ分の非更新領域及び更新領域のデータがバックアップされることとなる。不揮発性メモリのページあたりに記憶されるデータの容量が、128byte、又は256byteと大容量である場合には、RAM4や不揮発性メモリ5への書き込み、バックアップ、消去等のページ操作が非常に重い処理になってくる(CPU6等の処理負担の増加を招く)。
【0174】
そこで、本実施形態においては、「カードOSによる非更新領域の保護機能」と「トランザクションによる更新領域の保護機能」が働くICカード8において、「カードOSによる非更新領域の保護機能」と「トランザクションによる更新領域の保護機能」と、を統合させるようにした。
【0175】
上述したように、「カードOSによる非更新領域の保護機能」では、ページにおいて非更新領域が存在しない場合(ページ全てのデータを更新する場合)には、「カードOSによる非更新領域の保護機能」は働かない。また、「トランザクションによる更新領域の保護機能」では、バックアップされるデータは、ページにおいて更新領域のデータのみである。
【0176】
そこで、上記の点に着目し、アプリケーションが、更新の対象となるページにおいて、当該ページに記憶されるデータ全てを更新するものとしてカードOSへ通知して、「カードOSによる非更新領域の保護機能」を機能させないようにする。そして、アプリケーションが、更新の対象となるページに記憶されるデータ全て(ページ全て)を、バックアップするようにした。
【0177】
具体的には、本発明のICチップ用処理プログラムの制御によって、第2の保護手段としてのCPU6は、上記トランザクションの実行中に、更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを不揮発性メモリ5に書き込み(記憶し)、当該ページに非更新領域が存在しないものとしてカードOSに通知して、「カードOSによる非更新領域の保護機能」を機能させないようになっている。以下、この動作を、「transaction機能/保護機能付き書き込み」と称する。
【0178】
これによって、一のバックアップ処理のみが行われるため、データの保護機能による処理時間の短縮を図ることができる。
【0179】
ここで、図8を参照して、「transaction機能/保護機能付き書き込み」が適用された場合のCPU6の動作の詳細について説明する。
【0180】
なお、ここでは、上述した本発明のICチップ用処理プログラムが備える機能が実行される場合の動作主体をCPU6として説明する。
【0181】
また、ここで説明する例では、図8で定義される不揮発性メモリ5に対する更新として、A)書き込み1、B)書き込み2、及び、C)書き込み3、が行われるものとし、これらの書き込み条件(例えば、上述した連続した書き込みとして定義されていること等)は、図8で定義された条件と同一の条件を適用するものとする。
【0182】
A)書き込み1について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜d)の動作を実施する。
【0183】
a)まず、CPU6は、Page−xに記憶される全てのデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−xRとする。
【0184】
この場合、CPU6は、書き込み1で更新の対象となるPage−xに記憶される全てのデータをRAM4へ書き込み、その後、不揮発性メモリ5へ書き込むことで、Page−xに記憶される全てのデータを更新の対象とし、非更新領域が存在しないものとしてカードOSへ通知する。
【0185】
この通知を受けたカードOSは、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0186】
b)次に、CPU6は、Page−xRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−xRを書き込む。
【0187】
c)次に、CPU6は、Page−xRの領域のうち連続する2ブロックに、書き込み1で書き込まれるべきデータを書き込む(図8の11及び12のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−xRを更新する。
【0188】
d)次に、CPU6は、更新されたPage−xRを、不揮発性メモリ5のPage−xへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−xを更新する。
【0189】
以上で、書き込み1が実施されたこととなる。
【0190】
B)書き込み2について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜h)の動作を実施する。
【0191】
a)まず、CPU6は、Page−xに記憶される全てのデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。
【0192】
なお、ここで書き込まれたPage−xに記憶されるデータは、上述した書き込み1で更新されたもの(図8の11及び12が更新されたもの)である。従って、上述したA)書き込み1についてa)で、RAM4に書き込まれたPage−xとは異なるデータである。以後、説明の便宜上、B)書き込み2についてa)でPage−xに記憶される全てのデータをPage−x´と、RAM4に書き込まれるデータを、Page−x´Rとする。
【0193】
b)次に、CPU6は、Page−x´Rをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−x´Rを書き込む。
【0194】
c)次に、CPU6は、Page−x´Rの256ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の21のデータを更新する)。すなわち、カードOSは、RAM4に記憶されたPage−x´Rを更新する。
【0195】
d)次に、カードOSは、更新されたPage−x´Rを、不揮発性メモリ5のPage−x´へ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−aを更新する。
【0196】
e)次に、CPU6は、Page−yにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
【0197】
f)次に、CPU6は、Page−yRをバックアップする。具体的には、CPU6は、バックアップ領域へPage−yRを書き込む。
【0198】
g)次に、CPU6は、Page−yRの1ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の22のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−yRを更新する。
【0199】
h)次に、CPU6は、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−yを更新する。
【0200】
以上で、書き込み2が実施されたこととなる。
【0201】
そして、書き込み2が実施されたことで、「トランザクションによる更新領域の保護機能」は終了する。
【0202】
そこで、CPU6は、バックアップ領域に記憶された書き込み1が実施される前のPage−xに記憶された全てのデータであるPage−xR、書き込み2が実施される前のPage−x´に記憶された全てのデータであるPage−x´R、書き込み2が実施される前のPage−yに記憶された全てのデータであるPage−yRをそれぞれ消去する。
【0203】
C)書き込み3について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜e)の動作を実施する。
【0204】
a)まず、CPU6は、Page−yに記憶される全てのデータを保護するため、Page−yに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
【0205】
b)次に、CPU6は、Page−yRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−yRを書き込む。
【0206】
c)次に、CPU6は、Page−yRの2ブロック目に、書き込み3で書き込まれるべきデータ(図8の31、32、及び33)を書き込む。すなわち、CPU6は、RAM4に記憶されたPage−yRを更新する。
【0207】
d)次に、CPU6は、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−yを更新する。
【0208】
e)次に、CPU6は、バックアップ領域に書き込まれたPage−yRを消去する。
【0209】
以上で、書き込み3が実施されたこととなる。
【0210】
なお、上述した「transaction機能/保護機能付き書き込み」は、連続した書き込みとして定義された書き込みの間(即ち、上記トランザクションが実行されている間)、働かせるようにしてもよい。
【0211】
この場合、CPU6は、トランザクションの実行状態、即ち、連続した書き込みとして定義された書き込みが行われているか否かを監視する。
【0212】
そして、CPU6は、連続した書き込みとして定義された書き込みが行われている間、「transaction機能/保護機能付き書き込み」を働かせるようになっている。
【0213】
なお、上述した例では、「transaction機能/保護機能付き書き込み」は、ICチップ用処理プログラムの制御によりCPU6が実行することとして説明したが、これに限られず、例えば、「transaction機能/保護機能付き書き込み」は、「トランザクションによる更新領域の保護機能」をCPU6に実行させるアプリケーションによって実行させるようにしてもよい。
【0214】
次に、図8及び図9を参照して、「バックアップ検索機能」について説明する。
【0215】
この「バックアップ検索機能」とは、これから更新されるページと同一のページのバックアップデータが既に書き込まれているか否かを検索し、既に書き込まれている場合には、これから更新されるページのバックアップデータを書き込まない構成を追加した点である。以下、この構成を「バックアップ検索機能」と称する。
【0216】
まず、図9を参照して、「バックアップ検索機能」が適用されない場合のバックアップ領域に書き込まれるデータについて説明する。
【0217】
図9は、「バックアップ検索機能」が適用されない場合のバックアップ領域に書き込まれるデータ構造を概念的に示す図である。
【0218】
なお、既に説明した実施形態と少なくとも同様の機能を果たす部分には、同一の符号を付して、重複する説明や図面を省略する。
【0219】
図9に示すように、「バックアップ検索機能」が適用されない場合のバックアップ領域に書き込まれるデータは、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つである。
【0220】
ここで、「トランザクションによる更新領域の保護機能」として保障されるのは、連続した書き込みの保証として、書き込み1と書き込み2の両方を更新する前の更新領域の状態である。
【0221】
そして、例えば、書き込み1で瞬断が発生した場合には、書き込み1と書き込み2の両方を更新する前の更新領域の状態として、Page−xRとPage−yRが不揮発性メモリ5に書き込まれることとなる。
【0222】
ここで、Page−xRは、と同一のページであり、Page−x´Rは「トランザクションによる更新領域の保護機能」を機能させる際に省略することができるバックアップデータであることに気が付く。
【0223】
そこで、「バックアップ検索機能」が適用される場合には、CPU6は、更新領域が属するページが、バックアップ管理領域を参照して、バックアップ領域に既に書き込まれている(記憶されている)か否かを検索し、前記更新領域が属するページが、バックアップ領域に既に書き込まれていることが検索されなかった場合には、第2の保護手段としてのCPU6は、当該更新領域が属するページに記憶される全てのデータを、バックアップ領域に記憶するようになっている。
【0224】
ここで、図8及び図9を参照して、「バックアップ検索機能」が適用された場合のCPU6の動作の詳細について説明する。
【0225】
また、ここで説明する例では、図8で定義される不揮発性メモリ5に対する更新として、A)書き込み1、B)書き込み2、及び、C)書き込み3、が行われるものとし、これらの書き込み条件(例えば、上述した連続した書き込みとして定義されていること等)は、図8で定義された条件と同一の条件を適用するものとする。
【0226】
A)書き込み1について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜d)の動作を実施する。
【0227】
a)まず、CPU6は、Page−xに記憶される全てのデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−xRとする。
【0228】
この場合、CPU6は、書き込み1で更新の対象となるPage−xに記憶される全てのデータをRAM4へ書き込み、その後、不揮発性メモリ5へ書き込むことで、Page−xに記憶される全てのデータを更新の対象とし、非更新領域が存在しないものとしてカードOSへ通知するのは、第1の実施形態の場合と同様である。
【0229】
この通知を受けたカードOSは、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0230】
b)次に、CPU6は、Page−xRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−xRを書き込む。
【0231】
c)次に、CPU6は、Page−xRの領域のうち連続する2ブロックに、書き込み1で書き込まれるべきデータを書き込む(図8の11及び12のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−xRを更新する。
【0232】
d)次に、CPU6は、更新されたPage−xRを、不揮発性メモリ5のPage−xへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−xを更新する。
【0233】
以上で、書き込み1が実施されたこととなる。
【0234】
B)書き込み2について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜g)の動作を実施する。
【0235】
a)まず、CPU6は、Page−xに記憶される全てのデータを保護するため、Page−xに記憶されるデータを、ページ単位でRAM4へ書き込む。
【0236】
ここで、CPU6は、バックアップ管理領域を参照して、更新領域が属するページとしてのPage−xがバックアップ領域に既に記憶されているか否かを検索する。
【0237】
ここでは、バックアップ管理領域に、A)書き込み1についてb)において、既にPage−xのバックアップデータが記憶されていることが示されている。
【0238】
そこで、CPU6は、現在のPage−xに記憶されるデータである書き込み1で更新された(図8の11及び12が更新された)Page−x´のバックアップデータを書き込まないようになっている。
【0239】
b)次に、CPU6は、Page−x´Rの256ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の21のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−x´Rを更新する。
【0240】
c)次に、カードOSは、更新されたPage−x´Rを、不揮発性メモリ5のPage−x´へ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−aを更新する。
【0241】
d)次に、CPU6は、Page−yにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
【0242】
e)次に、CPU6は、Page−yRをバックアップする。具体的には、CPU6は、バックアップ領域へPage−yRを書き込む。
【0243】
f)次に、CPU6は、Page−yRの1ブロック目に、書き込み2で書き込まれるべきデータを書き込む(図8の22のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−yRを更新する。
【0244】
g)次に、CPU6は、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−yを更新する。
【0245】
以上で、書き込み2が実施されたこととなる。
【0246】
そして、書き込み2が実施されたことで、「トランザクションによる更新領域の保護機能」は終了する。
【0247】
そこで、CPU6は、バックアップ領域に記憶された書き込み1が実施される前のPage−xに記憶された全てのデータであるPage−xR、書き込み2が実施される前のPage−x´に記憶された全てのデータであるPage−x´R、書き込み2が実施される前のPage−yに記憶された全てのデータであるPage−yRをそれぞれ消去する。
【0248】
C)書き込み3について
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜e)の動作を実施する。
【0249】
a)まず、CPU6は、Page−yに記憶される全てのデータを保護するため、Page−yに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−yRとする。
【0250】
b)次に、CPU6は、Page−yRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−yRを書き込む。
【0251】
c)次に、CPU6は、Page−yRの2ブロック目に、書き込み3で書き込まれるべきデータ(図8の31、32、及び33)を書き込む。すなわち、CPU6は、RAM4に記憶されたPage−yRを更新する。
【0252】
d)次に、CPU6は、更新されたPage−yRを、不揮発性メモリ5のPage−yへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−yを更新する。
【0253】
e)次に、CPU6は、バックアップ領域に書き込まれたPage−yRを消去する。
【0254】
以上で、書き込み3が実施されたこととなる。
【0255】
[4.第1の実施形態]
上述した統合では、上記トランザクションの実行中に、「トランザクションによる更新領域の保護機能」によって、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとしてカードOSに通知して、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0256】
しかしながら、この統合は、上記トランザクションの実行中でなければ働かない。従って、連続した書き込みとして定義されない書き込み要求が、複数連続してあった場合には、当該書き込み要求毎に「カードOSによる非更新領域の保護機能」が働き、書き込み要求毎に、バックアップ領域に対してデータの記憶及び当該データの消去が繰り返され、更新やバックアップに要する処理時間が増加する。
【0257】
ここで、図10〜図12を参照して、上述した統合が適用された場合に、連続した書き込みとして定義されない複数の書き込み要求(更新要求)があった場合のCPU6の動作の詳細について説明する。
【0258】
図10は連続した書き込みとして定義されない複数の更新要求があった場合のCPU6の動作を示すフローチャートであり、図11は複数の更新要求を概念的に示す図であり、図12は複数の更新要求と「カードOSによる保護機能」の詳細を概念的に示す図である。
【0259】
なお、ここでも図3と同様に、説明の便宜上、カードOSが備える機能が実行される場合の動作主体をカードOSとし、アプリケーションが備える機能が実行される場合の動作主体をアプリケーションとする。
【0260】
図10に示すように、まず、カードOS(CPU6)が、例えばI/O回路2を介して、コマンドを受信すると(ステップS301)、カードOSは、受信したコマンドをどのアプリケーションへ渡すか決定する(ステップS302)。そして、カードOSは、受信したコマンドを、決定されたアプリケーションへ渡す。アプリケーション(CPU6)は、コマンドを取得すると(ステップS303)、コマンドを処理して(例えば、コマンド解釈等)(ステップS304)、必要があれば不揮発性メモリ5のデータを更新する(不揮発性メモリ5へデータを書き込ませる)。
【0261】
ここでは、コマンドの処理A(ステップS304)及びコマンドの処理B(ステップS311)において、連続した書き込みとして定義されない更新要求としての書き込み1〜書き込み5が要求されたことを解釈したものとする。
【0262】
この書き込み1〜書き込み5の詳細は、図11に示すように、書き込み1は不揮発性メモリ5のPage−aの所定の領域のデータを更新するものであり、書き込み2は不揮発性メモリ5のPage−bの所定の領域のデータを更新するものであり、書き込み3は不揮発性メモリ5のPage−bの所定の領域のデータを更新するものであり、書き込み4は不揮発性メモリのPage−cの所定の領域のデータを更新するものであり、書き込み5は不揮発性メモリのPage−cの所定の領域のデータを更新するものである。
【0263】
そして、この書き込み1〜書き込み5(ステップS305等)は、連続した書き込みとして定義されていないため、「トランザクションによる更新領域の保護機能」は働かず、通常の「カードOSによる非更新領域の保護機能」が働く(ステップS306の保護機能等)。
【0264】
ここで、図12を参照して、A)書き込み1〜E)書き込み5と「カードOSによる保護機能」の詳細について、図10のフローチャートと対比して説明する。
【0265】
A)書き込み1について(ステップS305)
A−1)「トランザクションによる更新領域の保護機能」について
書き込み1は、連続した書き込みとして定義されていないため、上述した「トランザクションによる更新領域の保護機能」は働かず、「カードOSによる非更新領域の保護機能」のみが働くこととなる。
【0266】
A−2)「カードOSによる非更新領域の保護機能」について(ステップS306)
具体的に、カードOSは、以下のa)〜e)の動作を実施する。
【0267】
a)まず、カードOSは、Page−aにおける非更新領域のデータを保護するため、Page−aに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−aRとする。
【0268】
b)次に、カードOSは、Page−aRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−aRを書き込む。
【0269】
c)次に、カードOSは、Page−aRの所定の領域に、書き込み1で書き込まれるべきデータ(図12の1)を書き込む。すなわち、カードOSは、RAM4に記憶されたPage−aRを更新する。
【0270】
d)次に、カードOSは、更新されたPage−aRを、不揮発性メモリ5のPage−aへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−yを更新する。
【0271】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−aRを消去する。
【0272】
以上で、書き込み1が実施されたこととなる。
【0273】
B)書き込み2について(ステップS307)
B−1)「トランザクションによる更新領域の保護機能」について
書き込み1は、連続した書き込みとして定義されていないため、上述した「トランザクションによる更新領域の保護機能」は働かず、「カードOSによる非更新領域の保護機能」のみが働くこととなる。
【0274】
B−2)「カードOSによる非更新領域の保護機能」について(ステップS308)
具体的に、カードOSは、以下のa)〜e)の動作を実施する。
【0275】
a)まず、カードOSは、Page−bにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−bRとする。
【0276】
b)次に、カードOSは、Page−bRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−bRを書き込む。
【0277】
c)次に、カードOSは、Page−bRの所定の領域に、書き込み2で書き込まれるべきデータ(図12の2)を書き込む。すなわち、カードOSは、RAM4に記憶されたPage−bRを更新する。
【0278】
d)次に、カードOSは、更新されたPage−bRを、不揮発性メモリ5のPage−bへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−bを更新する。
【0279】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−bRを消去する。
【0280】
以上で、書き込み2が実施されたこととなる。
【0281】
C)書き込み3について(ステップS309)
B−1)「トランザクションによる更新領域の保護機能」について
書き込み1は、連続した書き込みとして定義されていないため、上述した「トランザクションによる更新領域の保護機能」は働かず、「カードOSによる非更新領域の保護機能」のみが働くこととなる。
【0282】
C−2)「カードOSによる非更新領域の保護機能」について(ステップS310)
具体的に、カードOSは、以下のa)〜e)の動作を実施する。
【0283】
a)まず、カードOSは、Page−bにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−bRとする。
【0284】
b)次に、カードOSは、Page−bRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−bRを書き込む。
【0285】
c)次に、カードOSは、Page−bRの所定の領域に、書き込み3で書き込まれるべきデータ(図12の3)を書き込む。すなわち、カードOSは、RAM4に記憶されたPage−bRを更新する。
【0286】
d)次に、カードOSは、更新されたPage−bRを、不揮発性メモリ5のPage−bへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−bを更新する。
【0287】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−bRを消去する。
【0288】
以上で、書き込み3が実施されたこととなる。
【0289】
D)書き込み4について(ステップS312)
D−1)「トランザクションによる更新領域の保護機能」について
書き込み1は、連続した書き込みとして定義されていないため、上述した「トランザクションによる更新領域の保護機能」は働かず、「カードOSによる非更新領域の保護機能」のみが働くこととなる。
【0290】
D−2)「カードOSによる非更新領域の保護機能」について(ステップS313)
具体的に、カードOSは、以下のa)〜e)の動作を実施する。
【0291】
a)まず、カードOSは、Page−cにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−cRとする。
【0292】
b)次に、カードOSは、Page−cRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−cRを書き込む。
【0293】
c)次に、カードOSは、Page−cRの所定の領域に、書き込み4で書き込まれるべきデータ(図12の4)を書き込む。すなわち、カードOSは、RAM4に記憶されたPage−cRを更新する。
【0294】
d)次に、カードOSは、更新されたPage−cRを、不揮発性メモリ5のPage−cへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−cを更新する。
【0295】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−cRを消去する。
【0296】
以上で、書き込み4が実施されたこととなる。
【0297】
E)書き込み5について(ステップS314)
E−1)「トランザクションによる更新領域の保護機能」について
書き込み1は、連続した書き込みとして定義されていないため、上述した「トランザクションによる更新領域の保護機能」は働かず、「カードOSによる非更新領域の保護機能」のみが働くこととなる。
【0298】
E−2)「カードOSによる非更新領域の保護機能」について(ステップS315)
具体的に、カードOSは、以下のa)〜e)の動作を実施する。
【0299】
a)まず、カードOSは、Page−cにおける非更新領域のデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−cRとする。
【0300】
b)次に、カードOSは、Page−cRをバックアップする。具体的には、カードOSは、不揮発性メモリ5に設定されたバックアップ領域へPage−cRを書き込む。
【0301】
c)次に、カードOSは、Page−cRの所定の領域に、書き込み4で書き込まれるべきデータ(図12の5)を書き込む。すなわち、カードOSは、RAM4に記憶されたPage−cRを更新する。
【0302】
d)次に、カードOSは、更新されたPage−cRを、不揮発性メモリ5のPage−cへ書き込む。すなわち、カードOSは、不揮発性メモリ5に記憶されたPage−cを更新する。
【0303】
e)次に、カードOSは、バックアップ領域に書き込まれたPage−cRを消去する。
【0304】
以上で、書き込み5が実施されたこととなる。
【0305】
そして、アプリケーションは、処理が終了すると、カードOSへレスポンスデータを通知する(ステップS316)。そして、カードOSは、レスポンスデータを取得すると(ステップS317)、例えば、外部装置(リーダライタ装置等)へレスポンスデータを送信する(ステップS318)。
【0306】
このように、連続した書き込みとして定義されない複数の書き込み要求がなされると、上述した統合は、上記トランザクションの実行中でなければ働かない。従って、当該書き込み要求毎に「カードOSによる非更新領域の保護機能」が働き、バックアップ領域に対してデータの記憶及び当該データの消去が繰り返され、更新やバックアップに要する処理時間が増加する。
【0307】
上述した例では、書き込み毎(書き込み1〜5)に、カードOSは、バックアップ領域に書き込まれたPage−aR〜Page−aRを消去(上記A−2)e)等)しているため、不要な消去が繰り返しなされている。
【0308】
そこで、本実施形態では、更新要求があった場合には、CPU6に「transaction機能/保護機能付き書き込み」を実行させるようになっている。
【0309】
具体的には、本発明のICチップ用処理プログラムの制御によって、第2の保護手段としてのCPU6は、更新要求としての書き込み要求があった場合には、当該書き込みを連続した書き込みとして定義されたものとしてトランザクションを実行させる。そして、CPU6は、更新前の更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを不揮発性メモリ5に書き込み(記憶し)、当該ページに非更新領域が存在しないものとしてカードOSに通知して、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0310】
ここで、図10及び図13を参照して、本実施形態のCPU6の動作の詳細について説明する。なお、ここでは、上述した本発明のICチップ用処理プログラムが備える機能が実行される場合の動作主体をCPU6として説明する。
【0311】
また、ここで説明する例では、図10で定義される不揮発性メモリ5に対する更新として、A)書き込み1〜E)書き込み5、が行われるものとし、これらの書き込み条件(例えば、連続した書き込みとして定義されない更新要求としての書き込み1〜書き込み5が要求されること等)は、図10で定義された条件と同一の条件を適用するものとする。
【0312】
図13は、本実施形態のCPU6の動作の詳細を示すフローチャートである。
【0313】
図13に示すように、まず、カードOS(CPU6)が、例えばI/O回路2を介して、コマンドを受信すると(ステップS401)、カードOSは、受信したコマンドをどのアプリケーションへ渡すか決定する(ステップS402)。そして、カードOSは、受信したコマンドを、決定されたアプリケーションへ渡す。アプリケーション(CPU6)は、コマンドを取得すると(ステップS403)、コマンドを処理して(例えば、コマンド解釈等)(ステップS404)、必要があれば不揮発性メモリ5のデータを更新する(不揮発性メモリ5へデータを書き込ませる)。
【0314】
ここでは、コマンドの処理A(ステップS404)及びコマンドの処理B(ステップS413)において、連続した書き込みとして定義されない更新要求としての書き込み1〜書き込み5が要求されたものとする。
【0315】
すると、CPU6は、トランザクションの実行中であるか否かを、カードOSへ問い合わせる(ステップS406)。
【0316】
そして、トランザクションの実行中でない場合には(ステップS406:NO)、CPU6は、トランザクションを強制的に実行させる(ステップS407)。すなわち、CPU6は、A)書き込み1〜E)書き込み5を、連続して定義された書き込みと擬制し、「transaction機能/保護機能付き書き込み」を実行する(ステップS408等)。
【0317】
ここで、図12を参照して、A)書き込み1〜E)書き込み5と「transaction機能/保護機能付き書き込み」の詳細について、図13のフローチャートと対比して説明する。
【0318】
A)書き込み1について(ステップS405)
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜d)の動作を実施する(ステップ408)。
【0319】
a)まず、CPU6は、Page−aに記憶される全てのデータを保護するため、Page−aに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−aRとする。
【0320】
この場合、CPU6は、書き込み1で更新の対象となるPage−aに記憶される全てのデータをRAM4へ書き込み、その後、不揮発性メモリ5へ書き込むことで、Page−aに記憶される全てのデータを更新の対象とし、非更新領域が存在しないものとしてカードOSへ通知する。
【0321】
この通知を受けたカードOSは、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0322】
b)次に、CPU6は、Page−aRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−aRを書き込む。
【0323】
c)次に、CPU6は、Page−aRの所定の領域に、書き込み1で書き込まれるべきデータを書き込む(図12の1のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−aRを更新する。
【0324】
d)次に、CPU6は、更新されたPage−aRを、不揮発性メモリ5のPage−aへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−aを更新する。
【0325】
以上で、書き込み1が実施されたこととなる。
【0326】
B)書き込み2について(ステップS409)
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜d)の動作を実施する(ステップ410)。
【0327】
a)まず、CPU6は、Page−bに記憶される全てのデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−bRとする。
【0328】
この場合、CPU6は、書き込み2で更新の対象となるPage−bに記憶される全てのデータをRAM4へ書き込み、その後、不揮発性メモリ5へ書き込むことで、Page−bに記憶される全てのデータを更新の対象とし、非更新領域が存在しないものとしてカードOSへ通知する。
【0329】
この通知を受けたカードOSは、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0330】
b)次に、CPU6は、Page−bRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−bRを書き込む。
【0331】
c)次に、CPU6は、Page−bRの所定の領域に、書き込み2で書き込まれるべきデータを書き込む(図12の2のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−bRを更新する。
【0332】
d)次に、CPU6は、更新されたPage−bRを、不揮発性メモリ5のPage−bへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−bを更新する。
【0333】
以上で、書き込み2が実施されたこととなる。
【0334】
C)書き込み3について(ステップS411)
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜d)の動作を実施する(ステップ412)。
【0335】
a)まず、CPU6は、Page−bに記憶される全てのデータを保護するため、Page−bに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−bRとする。
【0336】
この場合、CPU6は、書き込み3で更新の対象となるPage−bに記憶される全てのデータをRAM4へ書き込み、その後、不揮発性メモリ5へ書き込むことで、Page−bに記憶される全てのデータを更新の対象とし、非更新領域が存在しないものとしてカードOSへ通知する。
【0337】
この通知を受けたカードOSは、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0338】
b)次に、CPU6は、Page−bRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−bRを書き込む。
【0339】
なお、上述した「バックアップ検索機能」が働く場合には、Page−bRのバックアップは、既に、B)書き込み2b)で記憶されているため、ここでは、CPU6は、Page−bRをバックアップしない。
【0340】
c)次に、CPU6は、Page−bRの所定の領域に、書き込み3で書き込まれるべきデータを書き込む(図12の3のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−bRを更新する。
【0341】
d)次に、CPU6は、更新されたPage−bRを、不揮発性メモリ5のPage−bへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−bを更新する。
【0342】
以上で、書き込み3が実施されたこととなる。
【0343】
D)書き込み4について(ステップS414)
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜d)の動作を実施する(ステップ415)。
【0344】
a)まず、CPU6は、Page−cに記憶される全てのデータを保護するため、Page−cに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−cRとする。
【0345】
この場合、CPU6は、書き込み4で更新の対象となるPage−cに記憶される全てのデータをRAM4へ書き込み、その後、不揮発性メモリ5へ書き込むことで、Page−cに記憶される全てのデータを更新の対象とし、非更新領域が存在しないものとしてカードOSへ通知する。
【0346】
この通知を受けたカードOSは、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0347】
b)次に、CPU6は、Page−cRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−cRを書き込む。
【0348】
c)次に、CPU6は、Page−cRの所定の領域に、書き込み4で書き込まれるべきデータを書き込む(図12の4のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−cRを更新する。
【0349】
d)次に、CPU6は、更新されたPage−cRを、不揮発性メモリ5のPage−cへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−cを更新する。
【0350】
以上で、書き込み4が実施されたこととなる。
【0351】
E)書き込み5について(ステップS416)
「transaction機能/保護機能付き書き込み」が働く。具体的には、CPU6は、以下のa)〜d)の動作を実施する(ステップ417)。
【0352】
a)まず、CPU6は、Page−cに記憶される全てのデータを保護するため、Page−cに記憶されるデータを、ページ単位でRAM4へ書き込む。説明の便宜上、このRAM4に書き込まれたデータを、Page−cRとする。
【0353】
この場合、CPU6は、書き込み5で更新の対象となるPage−cに記憶される全てのデータをRAM4へ書き込み、その後、不揮発性メモリ5へ書き込むことで、Page−cに記憶される全てのデータを更新の対象とし、非更新領域が存在しないものとしてカードOSへ通知する。
【0354】
この通知を受けたカードOSは、「カードOSによる非更新領域の保護機能」を機能させないようになっている。
【0355】
b)次に、CPU6は、Page−cRをバックアップする。具体的には、CPU6は、不揮発性メモリ5に設定されたバックアップ領域へPage−cRを書き込む。
【0356】
なお、上述した「バックアップ検索機能」が働く場合には、Page−cRのバックアップは、既に、D)書き込み4b)で記憶されているため、ここでは、CPU6は、Page−cRをバックアップしない。
【0357】
c)次に、CPU6は、Page−cRの所定の領域に、書き込み5で書き込まれるべきデータを書き込む(図12の5のデータを更新する)。すなわち、CPU6は、RAM4に記憶されたPage−cRを更新する。
【0358】
d)次に、CPU6は、更新されたPage−cRを、不揮発性メモリ5のPage−cへ書き込む。すなわち、CPU6は、不揮発性メモリ5に記憶されたPage−cを更新する。
【0359】
以上で、書き込み5が実施されたこととなる。
【0360】
このように、本実施形態におけるCPU6は、図10のフローチャートのステップS306の説明におけるA−2)e)、図10のフローチャートのステップS308の説明におけるB−2)e)、図10のフローチャートのステップS310の説明におけるC−2)e)、図10のフローチャートのステップS312の説明におけるD−2)e)、図10のフローチャートのステップS314の説明におけるE−2)e)のように、書き込み毎(書き込み1〜5)に、カードOSは、バックアップ領域に書き込まれたPage−aR〜Page−aRを消去するといった不要な消去が繰り返しなされることはないため、更新やバックアップに要する処理時間が短縮される。
【0361】
そして、アプリケーションは、処理が終了すると、カードOSへレスポンスデータを通知する(ステップS418)。そして、カードOSは、レスポンスデータを取得すると(ステップS419)、トランザクションの開始状態にあるかないか判断し(ステップS420)、トランザクションの開始状態にない場合には(ステップS420:NO)、トランザクションを停止して(ステップS421)、例えば、外部装置(リーダライタ装置等)へレスポンスデータを送信する(ステップS422)。
【0362】
なお、これらの更新が終了した場合に、バックアップデータ消去手段としてのCPU6は、バックアップ領域に記憶されたバックアップデータを消去するように構成してもよい。
【0363】
また、バックアップデータ消去手段としてのCPU6は、バックアップ領域に記憶可能な情報量である記憶容量を監視し、バックアップ領域の記憶容量が上限(任意に設定可能)に達した場合には、バックアップデータを消去するように構成してもよい。
【0364】
この消去の方法としては種々の方法を適用することができ、例えば、バックアップ領域に記憶されたバックアップデータのうち、当該記憶された日時(バックアップ領域に追加された日時)が古いものから順に消去するようにしてもよいし、当該バックアップデータのうち、データのサイズ(ファイルサイズ)に応じて(例えば、データのサイズが大きいものを優先的に消去等)消去するようにしてもよい。また、バックアップ領域に記憶されたバックアップデータが所定の数量に達した場合に、消去するようにしてもよい。
【0365】
以上説明したように、本実施形態におけるICチップ1は、所定の領域を一のページとして、一又は複数のページに区画される不揮発性メモリ5を備え、更新要求に基づいて、不揮発性メモリ5の指定されたページの指定された領域に記憶されるデータを更新し、ICチップの基本的な動作を管理するカードOSが備える基本的な機能であって、当該カードOSの制御に基づいて、前記データを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータをバックアップ領域へ書き込む「カードOSによる非更新領域の保護機能」と、上記トランザクションの実行中に、前記カードOS上で動作し前記CPU6に所定の機能を実行させるアプリケーションの要求に応じた前記カードOSの制御に基づいて、更新前の前記更新領域に記憶されるデータをバックアップ領域へ書き込む「トランザクションによる更新領域の保護機能」とを備え、「トランザクションによる更新領域の保護機能」は、更新要求があった場合には、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記バックアップ領域に書き込み、当該ページに非更新領域が存在しないものとして前記カードOSに通知して、「カードOSによる非更新領域の保護機能」を機能させないように構成したので、適切な保護機能によってデータをバックアップすることにより、不要なバックアップ処理を行わないため、データの保護機能による処理時間の短縮を図ることができる。
【0366】
なお、上述した例では、CPU6を本願の第2の保護手段として機能させる「トランザクションによる更新領域の保護機能」は、アプリケーションが備える機能として説明したが、これに限定されることはなく、種々の形態を採ることができる。例えば、上記「トランザクションによる更新領域の保護機能」を、カードOSが備える機能とするようにしても良いし、バーチャルマシン(図2参照)や、OS層22(図2参照)に新たに設けられるモジュールに備えるようにしても良い。
【0367】
同様に、CPU6を本願の第1の保護手段として機能させる「カードOSによる非更新領域の保護機能」は、カードOSが備える機能として説明したが、これに限定されることはなく、種々の形態を採ることができる。例えば、上記「カードOSによる非更新領域の保護機能」を、アプリケーションが備える機能とするようにしても良いし、バーチャルマシン(図2参照)や、OS層22(図2参照)に新たに設けられるモジュールに備えるようにしても良い。
【0368】
また、上記実施形態においては、JAVAカードに対応したICカード8を適用したがこれに限られず、カードOS上で所定の機能を実行するアプリケーションが搭載できるICカードであれば種々のICカードを適用することができる。
【符号の説明】
【0369】
1 ICチップ
2 I/O回路
3 ROM
4 RAM
5 不揮発性メモリ
6 CPU
7 カード基体
8 ICカード

【特許請求の範囲】
【請求項1】
所定の領域を一のページとして、一又は複数のページに区画される記憶部を備え、更新要求に基づいて、前記記憶部の指定されたページの指定された領域に記憶されるデータを更新するICチップであって、
前記データを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータを保護する第1の保護手段と、
特定の一連の更新処理の開始前又は終了後の何れかにおける記憶部に記憶されるデータを保護可能とするトランザクションの実行中に、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして第1の保護手段を機能させない第2の保護手段と、
を備え、
前記第2の保護手段は、
更新要求があった場合には、前記トランザクションの実行中であるものとして、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記第1の保護手段を機能させないことを特徴とするICチップ。
【請求項2】
請求項1に記載のICチップであって、
前記第1の保護手段は、ICチップの基本的な動作を管理するオペレーティングシステムが備える基本的な機能であって、当該オペレーティングシステムの制御に基づいて実行され、
前記第2の保護手段は、前記オペレーティングシステム上で動作し、前記ICチップに所定の機能を実行させるアプリケーションの要求に応じた前記オペレーティングシステムの制御に基づいて実行されることを特徴とするICチップ。
【請求項3】
請求項1又は2に記載のICチップであって、
前記更新が終了した場合には、前記第2の保護手段によって記憶されたデータを消去するバックアップデータ消去手段をさらに備えることを特徴とするICチップ。
【請求項4】
請求項1乃至3の何れか一項に記載のICチップであって、
前記バックアップデータ消去手段は、前記第2の保護手段によって記憶されたデータが記憶される前記記憶部の記憶容量が上限に達した場合には、当該データを消去することを特徴とするICチップ。
【請求項5】
請求項1乃至4の何れか一項に記載のICチップと、ICカード基体と、を備えることを特徴とするICカード。
【請求項6】
所定の領域を一のページとして、一又は複数のページに区画される記憶部を備え、更新要求に基づいて、前記記憶部の指定されたページの指定された領域に記憶されるデータを更新するICチップにおいて実行されるICチップにおける処理方法であって、
前記データを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータを保護する第1の保護工程と、
特定の一連の更新処理の開始前又は終了後の何れかにおける記憶部に記憶されるデータを保護可能とするトランザクションの実行中に、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記オペレーティングシステムに通知して、前記第1の保護手段を機能させない第2の保護工程と、
を備え、
前記第2の保護工程は、
更新要求があった場合には、前記トランザクションの実行中であるものとして、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記オペレーティングシステムに通知して、前記第1の保護手段を機能させないことを特徴とするICチップにおける処理方法。
【請求項7】
所定の領域を一のページとして、一又は複数のページに区画される記憶部を備え、更新要求に基づいて、前記記憶部の指定されたページの指定された領域に記憶されるデータを更新するICチップに含まれるコンピュータを、
前記データを更新する領域である更新領域が属するページのうち、当該更新領域以外の領域である非更新領域に記憶されるデータを保護する第1の保護手段、
特定の一連の更新処理の開始前又は終了後の何れかにおける記憶部に記憶されるデータを保護可能とするトランザクションの実行中に、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記第1の保護手段を機能させない第2の保護手段、
として機能させ、
前記第2の保護手段は、
更新要求があった場合には、前記トランザクションの実行中であるものとして、前記更新前の更新領域及び非更新領域が属するページの全ての領域を更新領域として、当該ページに記憶される全てのデータを前記記憶部に記憶させ、当該ページに非更新領域が存在しないものとして前記第1の保護手段を機能させないことを特徴とするICチップ用処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate


【公開番号】特開2013−92938(P2013−92938A)
【公開日】平成25年5月16日(2013.5.16)
【国際特許分類】
【出願番号】特願2011−235295(P2011−235295)
【出願日】平成23年10月26日(2011.10.26)
【出願人】(000002897)大日本印刷株式会社 (14,506)
【Fターム(参考)】