説明

携帯可能電子装置、ICカード、及び携帯可能電子装置の制御方法

【課題】 より安定して動作する携帯可能電子装置、ICカード、及び携帯可能電子装置の制御方法を提供する。
【解決手段】 一実施形態に係る携帯可能電子装置は、データを記憶する第1のメモリと、復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第2のメモリと、外部機器から送信された書込みコマンドを受信する受信部と、前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第1のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第2のメモリに記憶し、前記アドレスを復元アドレスとして前記第2のメモリに記憶する制御部と、特定された前記第1のメモリ上の領域に前記書込みデータを書込む書込み処理部と、を具備する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明の実施形態は、携帯可能電子装置、ICカード、及び携帯可能電子装置の制御方法に関する。
【背景技術】
【0002】
一般的に、携帯可能電子装置として用いられるICカードは、プラスチックなどで形成されたカード状の本体と本体に埋め込まれたICモジュールとを備えている。ICモジュールは、ICチップを有している。ICチップは、電源が無い状態でもデータを保持することができるEEPROM(Electrically Erasable Programmable Read−Only Memory)またはフラッシュROMなどの不揮発性メモリと、種々の演算を実行するCPUとを有している。
【0003】
ICカードは、例えば、国際標準規格ISO/IEC7816に準拠したICカードである。ICカードは、携帯性に優れ、且つ、外部装置との通信及び複雑な演算処理を行う事ができる。また、偽造が難しい為、ICカードは、機密性の高い情報などを格納してセキュリティシステム、電子商取引などに用いられることが想定される。
【0004】
ICカードは、ICカードを処理する処理装置からコマンドを受信した場合、受信したコマンドに応じてアプリケーションを実行する。これにより、ICカードは、種々の機能を実現することができる。例えば、ICカードは、書き込みコマンドを受信した場合、受信した書込みコマンドに基づいてデータを不揮発性メモリに書き込む。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2007−320456号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ICカードが1つのコマンドで受信することができるデータサイズは、通信方式に応じた制限値が存在する。ICカードに書き込むデータ量が、1つのコマンドに付加することができるデータ量を上回る場合、処理装置は、データを複数のデータに分割し、分割されたデータを複数の書き込みコマンドに付加してICカードに送信する。
【0007】
しかし、複数の書き込みコマンドに応じてデータの書き込みを行っている際に処理装置からの電源の供給が断たれた場合、ICカードの不揮発性メモリ内のデータに不整合が生じる可能性がある。
【0008】
そこで、より安定して動作する携帯可能電子装置、ICカード、及び携帯可能電子装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
一実施形態に係る携帯可能電子装置は、データを記憶する第1のメモリと、復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第2のメモリと、外部機器から送信された書込みコマンドを受信する受信部と、前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第1のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第2のメモリに記憶し、前記アドレスを復元アドレスとして前記第2のメモリに記憶する制御部と、特定された前記第1のメモリ上の領域に前記書込みデータを書込む書込み処理部と、を具備する。
【図面の簡単な説明】
【0010】
【図1】図1は、一実施形態に係るICカード処理システムの例について説明するための図である。
【図2】図2は、一実施形態に係るICカードの例について説明するための図である。
【図3】図3は、一実施形態に係るICカード処理システムの例について説明するための図である。
【図4】図4は、一実施形態に係るICカード処理システムの例について説明するための図である。
【図5】図5は、一実施形態に係るICカード処理システムの例について説明するための図である。
【発明を実施するための形態】
【0011】
以下、図面を参照しながら、一実施形態に係る携帯可能電子装置、ICカード、及び携帯可能電子装置の制御方法について詳細に説明する。
【0012】
本実施形態に係る携帯可能電子装置(ICカード)20及びICカード20を処理する処理装置(端末装置)10は、例えば、接触通信、及び/または非接触通信の機能を備える。これにより、ICカード20及び端末装置10は、互いにデータの送受信を行うことができる。
【0013】
図1は、一実施形態に係るICカード処理システム1の構成例を示す。
ICカード処理システム1は、ICカード20を処理する端末装置10と、ICカード20と、を備える。
【0014】
端末装置10は、CPU11、ROM12、RAM13、不揮発性メモリ14、カードリーダライタ15、操作部17、ディスプレイ18、及び電源部19を備える。CPU11、ROM12、RAM13、不揮発性メモリ14、カードリーダライタ15、操作部17、及びディスプレイ18は、それぞれバスを介して互いに接続されている。
【0015】
CPU11は、端末装置10全体の制御を司る制御部として機能する。CPU11は、ROM12又は不揮発性メモリ14に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。例えば、CPU11は、カードリーダライタ15を介してICカード20とコマンド及びレスポンスの送受信を行う。
【0016】
ROM12は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。RAM13は、ワーキングメモリとして機能する揮発性のメモリである。RAM13は、CPU11の処理中のデータなどを一時的に格納する。例えば、RAM13は、カードリーダライタ15を介して外部の機器と送受信するデータを一時的に格納する。また、RAM13は、CPU11が実行するプログラムを一時的に格納する。
【0017】
不揮発性メモリ14は、例えばEEPROM、FRAMなどを備える。不揮発性メモリ14は、例えば、制御用のプログラム、制御データ、アプリケーション、及びアプリケーションに用いられるデータなどを記憶する。
【0018】
カードリーダライタ15は、ICカード20と通信を行うためのインターフェース装置である。カードリーダライタ15は、接触通信、または非接触通信によりICカード20とデータの送受信を行う。
【0019】
接触通信のインターフェースとして用いられる場合、カードリーダライタ15は、ICカード20が装着されるスロットと、ICカード20が備えるコンタクトパターンと接続される複数の接触端子を備える。
【0020】
スロットにICカード20が装着される場合、カードリーダライタ15の複数の接触端子は、ICカード20のコンタクトパターンに接続される。これにより、端末装置10とICカード20とは電気的に接続される。カードリーダライタ15は、スロットに装着されるICカード20に対して、電力の供給、クロックの供給、リセット信号の入力、及びデータの送受信などを行う。
【0021】
また、非接触通信のインターフェースとして用いられる場合、カードリーダライタ15は、送受信するデータに対して信号処理を施す信号処理部と、所定の共振周波数を有するアンテナとを備える。
【0022】
カードリーダライタ15は、例えば、信号処理部により、送受信するデータに対して符号化、復号、変調、及び復調などの信号処理を行なう。また、カードリーダライタ15は、符号化及び変調を施したデータをアンテナに供給する。アンテナは、供給されたデータに応じて磁界を発生させる。これにより、端末装置10は、通信可能範囲に存在するICカード20に対してデータを非接触で送信することができる。
【0023】
さらに、カードリーダライタ15のアンテナは、磁界を検知し、検知した磁界に応じて信号を生成する。これにより、カードリーダライタ15は、信号を非接触で受信することができる。信号処理部は、アンテナにより受信された信号に対して復調及び復号を行う。これにより、端末装置10は、ICカード20から送信された元のデータを取得することができる。
【0024】
操作部17は、例えば操作キーなどを備え、操作者により入力される操作に基づいて、操作信号を生成する。操作部17は、生成した操作信号をCPUに入力する。これにより、CPU11は、操作者により入力された操作に基づいて処理を事項することができる。
【0025】
ディスプレイ18は、CPU11、または図示されないグラフィックコントローラなどの表示処理モジュールから入力される映像を表示するための信号に基づいて種々の情報を表示する。
【0026】
電源部19は、端末装置10の各部に電力を供給する。電源部19は、例えば、商用電源より電力を受け取り、所定の電圧に変換し、端末装置10の各部に供給する。
【0027】
図2は、一実施形態に係るICカード20の構成例を示す。
図2に示すように、ICカード20は、例えば、矩形状の本体21と、本体21内に内蔵されたICモジュール22とを備える。ICモジュール22は、ICチップ23と、通信部24とを備える。ICチップ23と通信部24とは、互いに接続された状態でICモジュール22内に形成されている。
【0028】
なお、本体21は、少なくとも通信部24が配設されるICモジュール22を設置可能な形状であれば、矩形状に限らず如何なる形状であっても良い。
【0029】
ICチップ23は、通信部24、CPU25、ROM26、RAM27、不揮発性メモリ28、電源部31、及びロジック部32などを備える。通信部24、CPU25、ROM26、RAM27、不揮発性メモリ28、電源部31、及びロジック部32は、バスを介して互いに接続されている。
【0030】
通信部24は、端末装置(外部機器)10のカードリーダライタ15と通信を行うためのインターフェースである。通信部24は、接触通信、または非接触通信により、端末装置10とデータの送受信を行う。
【0031】
接触通信のインターフェースとして用いられる場合、通信部24は、カードリーダライタ15の接触端子と接続されるコンタクトパターンを備える。コンタクトパターンは、導電性を有する金属などによりICモジュール22の表面に形成される接触端子である。即ち、コンタクトパターンは、端末装置10のカードリーダライタ15の接触端子と接触可能に形成されている。
【0032】
コンタクトパターンは、金属により形成される面が複数のエリアに区切られて形成される。区切られた各エリアは、それぞれ端子として機能する。通信部24は、コンタクトパターンを介してカードリーダライタ15とデータの送受信を行うことができる。
【0033】
また、非接触通信のインターフェースとして用いられる場合、通信部24は、信号処理部とアンテナとを備える。
【0034】
信号処理部は、端末装置10に送信するデータに対して符号化、負荷変調などの信号処理を行う。例えば、信号処理部は、端末装置10に送信するデータの変調(増幅)を行う。信号処理部は、信号処理を施したデータをアンテナに供給する。
【0035】
アンテナは、例えば、ICモジュール22内に所定の形状で配設される金属線により構成される。ICカード20は、端末装置10に送信するデータに応じてアンテナにより磁界を発生させる。これにより、ICカード20は、端末装置10に対してデータを送信することができる。また、ICカード20は、電磁誘導によりアンテナに発生する誘導電流に基づいて端末装置10から送信されるデータを認識する。
【0036】
例えば、信号処理部は、アンテナに発生する誘導電流に対して復調、及び復号を行う。例えば、信号処理部は、アンテナにより受信する信号の解析を行う。これにより、通信部24は、2値の論理データを取得する。通信部24は、解析したデータをバスを介してCPU25に送信する。
【0037】
CPU25は、ICカード20全体の制御を司る制御部として機能する。CPU25は、ROM26あるいは不揮発性メモリ28に記憶されている制御プログラム及び制御データに基づいて種々の処理を行う。例えば、端末装置10から受信したコマンドに応じて種々の処理を行い、処理結果としてのレスポンスなどのデータの生成を行なう。
【0038】
ROM26は、予め制御用のプログラム及び制御データなどを記憶する不揮発性のメモリである。ROM26は、製造段階で制御プログラム及び制御データなどを記憶した状態でICカード20内に組み込まれる。即ち、ROM26に記憶される制御プログラム及び制御データは、予めICカード20の仕様に応じて組み込まれる。
【0039】
RAM27は、ワーキングメモリとして機能する揮発性のメモリである。RAM27は、CPU25の処理中のデータなどを一時的に格納する。例えば、RAM27は、通信部24を介して端末装置10から受信したデータを一時的に格納する。またRAM27は、通信部24を介して端末装置10に送信するデータを一時的に格納する。またさらに、RAM27は、CPU25が実行するプログラムを一時的に格納する。
【0040】
不揮発性メモリ28は、例えば、EEPROMあるいはフラッシュROMなどのデータの書き込み及び書換えが可能な不揮発性のメモリを備える。不揮発性メモリ28は、ICカード20の運用用途に応じて制御プログラム及び種々のデータを格納する。
【0041】
たとえば、不揮発性メモリ28では、プログラムファイル及びデータファイルなどが創成される。創成された各ファイルには、制御プログラム及び種々のデータなどが書き込まれる。CPU25は、不揮発性メモリ28、または、ROM26に記憶されているプログラムを実行することにより、種々の処理を実現することができる。
【0042】
例えば、不揮発性メモリ28は、Master File(MF)、Dedicated File(DF)、及びElementary File(EF)などを有する。
【0043】
MFは、ファイル構造の根幹となるファイルである。DFは、MFの下位に創成される。DFは、アプリケーション及びアプリケーションに用いられるデータなどをグループ化して格納するファイルである。EFは、DFの下位に創成される。EFは、様々なデータを格納するためのファイルである。また、MFの直下にEFが置かれる場合もある。
【0044】
EFには、Working Elementary File(WEF)及びInternal Elementary File(IEF)などの種類がある。WEFは、作業用EFであり、個人情報などを格納する。IEFは、内部EFであり、例えば、セキュリティのための暗号鍵(暗証番号)などのデータを記憶する。
【0045】
さらに、不揮発性メモリ28内には、管理ファイルなどが格納される。ICカード20は、管理ファイルにより、不揮発性メモリ28内のデータをファイル構造として認識することができる。
【0046】
また、不揮発性メモリ28は、自身が保持しているデータを保障する処理(メモリ保障処理)に用いるコミットバッファメモリ(コミットバッファ)28aを有する。メモリ保障処理、及びコミットバッファについては後述する。
【0047】
電源部31は、端末装置10の各部に電力を供給する。ICカード20が接触通信を行う構成を備える場合、電源部31は、通信部24のコンタクトパターンを介してカードリーダライタ15から供給される電力をICカード20の各部に供給する。
【0048】
また、ICカード20が非接触通信を行う構成を備える場合、カードリーダライタ15のアンテナから送信される電波、特にキャリア波に基づいて電力を生成する。さらに、電源部31は、動作クロックを生成する。電源部31は、発生させた電力及び動作クロックをICカード20の各部に電力を供給する。ICカード20の各部は、電力の供給を受けた場合、動作可能な状態になる。
【0049】
ロジック部32は、演算処理をハードウエアにより行う演算部である。例えば、ロジック部32は、端末装置10からのコマンドに基づいて、暗号化、復号、ハッシュ計算、及び乱数の生成などの処理を行う。例えば、端末装置10から相互認証コマンドを受信する場合、ロジック部32は、乱数を生成し、生成した乱数をCPU25に伝送する。
【0050】
例えば、端末装置10は、1つのコマンドで送信することができるデータ量を上回るデータをICカード20に書き込む場合、データを複数のデータに分割し、分割されたデータを複数の書き込みコマンドに付加してICカード20に送信する。なお、本例では、ICカード20に書き込むデータを第1の書込みコマンド、第2の書込みコマンド、及び第3の書込みコマンドに付加する。
【0051】
図3は、端末装置10によるICカード20の発行処理の例を示す。
まず、端末装置10は、ICカード20にコマンドを送信することにより、ICカード20との間で論理チャネルを開設することができる。これにより、端末装置10は、ICカード20との間で通信路が確立される。さらに、端末装置10は、不揮発性メモリ28内のファイルを選択する為のコマンドをICカード20に送信する。これにより、ICカード20は、コマンドにより指定されたファイルを選択する状態になる。
【0052】
ここで、メモリ保障処理を用いてICカード20にデータ(書込みデータ)を書き込む場合、端末装置10は、ICカード20の不揮発性メモリ28のコミットバッファ28aの容量を問い合わせるコマンド(コミットバッファ問合せコマンド)をICカード20に送信する(ステップS11)。
【0053】
コミットバッファ28aは、ICカード20のオペレーティングシステムにより管理されるシステムエリアである。コミットバッファ28aは、不揮発性メモリ28内のファイルに用いられなかった領域である。即ち、コミットバッファ28aのサイズ(容量)は、不揮発性メモリ28のスペック、及び不揮発性メモリ28内のファイルの容量に関連する。
【0054】
ICカード20は、コミットバッファ問合せコマンドを受信した場合、自身の不揮発性メモリ28のコミットバッファ28aの容量を確認する(ステップS12)。例えば、ICカード20は、自身が保持する仕様書と、ファイルとして用いられている容量とに基づいて、コミットバッファ28aの容量を算出する。ICカード20は、コミットバッファ28aの容量を示す情報を含むレスポンスを生成し、生成されたレスポンスを端末装置10に送信する(ステップS13)。
【0055】
端末装置10は、受信したレスポンスを解析することにより、ICカード20のコミットバッファ28aの容量を認識する。さらに、端末装置10は、コミットバッファ28aの容量と、ICカード20に書き込む書込みデータの容量とに基づいて、メモリ保障処理の実行の可否を判断する。例えば、端末装置10は、コミットバッファ28aの容量が書込みデータの容量以上である場合、メモリ保障処理を実行可能と判断する。
【0056】
端末装置10は、ICカード20に送信する書込みコマンドを生成する(ステップS14)。上記したように、端末装置10は、書込みデータが1つのコマンドで送信することができるデータ量を上回る場合、書込みデータを複数の書込みデータに分割する。端末装置10は、分割した各書込みデータをそれぞれ有する書込みコマンドを生成する。
【0057】
例えば、書込みデータを第1の書込みデータ、第2の書込みデータ、及び第3の書込みデータに分割した場合、端末装置10は、第1の書込みデータを有する第1の書込みコマンド、第2の書込みデータを有する第2の書込みコマンド、及び第3の書込みデータを有する第3の書込みコマンドを生成する。
【0058】
さらに、端末装置10は、メモリ保障処理の開始、または終了を示す情報を上記の各書込みコマンドに付加する。例えば、第1の書込みコマンド、第2の書込みコマンド、第3の書込みコマンドの順でコマンドがICカード20に送信される場合、端末装置10は、第1の書込みコマンドにメモリ保障処理の開始を示す情報を付加し、第3の書込みコマンドにメモリ保障処理の終了を示す情報を付加する。
【0059】
端末装置10は、生成した書込みコマンドをICカード20に順次送信する。まず、端末装置10は、第1の書込みコマンドをICカード20に送信する(ステップS15)。ICカード20は、受信した書込みコマンドがメモリ保障処理の開始を示す情報を有する場合、メモリ保障処理を用いてデータの書込みを行う(ステップS16)。ICカード20は、メモリ保障処理の結果に基づいてレスポンスを生成し、生成されたレスポンスを端末装置10に送信する(ステップS17)。
【0060】
端末装置10は、第1の書込みコマンドに対するレスポンスを受信した場合、第2の書込みコマンドをICカード20に送信する(ステップS18)。ICカード20は、既にメモリ保障処理が開始されている場合、メモリ保障処理を用いてデータの書込みを行う(ステップS19)。ICカード20は、メモリ保障処理の結果に基づいてレスポンスを生成し、生成されたレスポンスを端末装置10に送信する(ステップS20)。
【0061】
端末装置10は、第2の書込みコマンドに対するレスポンスを受信した場合、第3の書込みコマンドをICカード20に送信する(ステップS21)。ICカード20は、既にメモリ保障処理が開始されている場合、メモリ保障処理を用いてデータの書込みを行う(ステップS22)。ICカード20は、メモリ保障処理の結果に基づいてレスポンスを生成し、生成されたレスポンスを端末装置10に送信する(ステップS23)。
【0062】
さらに、ICカード20は、受信した書込みコマンドがメモリ保障処理の終了を示す情報を有する場合、コミットバッファ28a内の全てのデータを消去する。即ち、ICカード20は、コミットバッファ28aをクリアする。
【0063】
図4は、ICカード20の処理の例を示す。
ICカード20は、起動した場合、端末装置10からのコマンドを待つ状態を保持する。ICカード20は、端末装置から受信するコマンドに応じて初期設定を行い、論理チャネルを開設する。さらに、ICカード20は、端末装置10から受信したコマンドに応じて、不揮発性メモリ28内のファイルを選択する。
【0064】
ここで、ICカード20は、端末装置10から送信された書込みコマンドを受信する(ステップS31)。さらに、ICカード20は、受信した書込みコマンドを解析する(ステップS32)。これにより、ICカード20は、書込みコマンドから書込みデータと、書込みデータの書込み先を示すアドレスと、メモリ保障処理に関する情報と、を取得する。
【0065】
書込みコマンドは、例えば「CLA」、「INS」、「P1」、「P2」、「Lc」、「Data」、及び「Le」を有する。
【0066】
「CLA」は、コマンドの層別を示すclass byteである。「INS」は、コマンドの種別を示すinstruction byteである。「P1」及び「P2」は、「INS」に応じたパラメータを示すparameter byteである。
【0067】
「Lc」は、「Data」のデータの長さ(バイト数)を示すlength field for cording number Ncである。「Data」は、当該コマンドのデータ本体を示すcommand data fieldである。「Le」は、当該コマンドに対するレスポンスのデータ長を示すlength field for cording number Neである。
【0068】
即ち、「CLA」及び「INS」により、当該コマンドが書込みコマンドであるのか、または他のコマンドであるのかが示される。ICカード20は、受信したコマンドの「CLA」及び「INS」の値を解析することにより、受信したコマンドの種類を認識することができる。
【0069】
例えば、コマンドが書込みコマンドである場合、ICカード20は、「Data」内から書込みデータを取得する。また、ICカード20は、「Data」、「P1」、または「P2」などからアドレスを取得する。また、ICカード20は、「Data」、「P1」、または「P2」などからメモリ保障処理に関する情報を取得する。メモリ保障処理に関する情報は、メモリ保障処理の開始を示す情報、またはメモリ保障処理の終了を示す情報である。
【0070】
ICカード20は、メモリ保障処理を開始するか否か判定する(ステップS33)。即ち、ICカード20は、受信した書込みコマンドにメモリ保障処理の開始を示す情報が含まれている場合、メモリ保障処理を開始すると判定する。
【0071】
ステップS33で、受信した書込みコマンドにメモリ保障処理の開始を示す情報が含まれていると判定した場合、ICカード20は、復元アドレスをセットする(ステップS34)。すなわち、ICカード20は、書込みコマンドから取得したアドレスを復元アドレスとして不揮発性メモリ28のコミットバッファ28aに記憶する。
【0072】
また、ステップS33で、受信した書込みコマンドにメモリ保障処理の開始を示す情報が含まれていないと判定した場合、ICカード20は、ステップS35に移行する。
【0073】
ICカード20は、メモリ保障処理が継続中であるか否か判定する(ステップS35)。ICカード20は、上記のステップS33において、メモリ保障処理を開始すると判定した場合、メモリ保障処理が継続中であることを示す情報をRAM27、または不揮発性メモリ28に記憶する。ICカード20は、メモリ保障処理が継続中であることを示す情報の有無に基づいて、メモリ保障処理が継続中であるか否か判定する。
【0074】
ステップS35でメモリ保障処理が継続中であると判定した場合、ICカード20は、データサイズをセットする(ステップS36)。ICカード20は、取得した書込みデータのサイズに基づいて書込みデータのサイズを示す情報(データサイズ)を生成し、不揮発性メモリ28のコミットバッファ28aに記憶する。ICカード20は、ステップS34でコミットバッファ28aに記憶した復元アドレスに対応付けてデータサイズを記憶する。また、既に復元アドレスにデータサイズが対応付けられている場合、生成したデータサイズが示す値を、復元アドレスに対応付けられているデータサイズに加算する。
【0075】
ICカード20は、メモリ保障処理を実行することが出来るか否か判定する(ステップS37)。例えば、ICカード20は、復元アドレスに対応付けられているデータサイズが示す容量が、自身のコミットバッファ28aの容量以下であるか否か判定する。ICカード20は、復元アドレスに対応付けられているデータサイズが示す容量が、自身のコミットバッファ28aの容量以下である場合、メモリ保障処理を実行することが出来ると判定する。
【0076】
ステップS37で、メモリ保障処理を実行することが出来ると判定した場合、ICカード20は、書込みコマンドから取得したアドレスにより示される位置に記憶されているデータを退避する(ステップS38)。
【0077】
ICカード20は、不揮発性メモリ28から、書込みコマンドから取得したアドレスにより示される位置から、書込みコマンドに含まれている書込みデータのデータサイズに相当する量のデータを読み出す。即ち、ICカード20は、書込みコマンドから取得したアドレスと、書込みデータのデータサイズとに基づいて不揮発性メモリ28上の領域を特定し、特定した領域に記憶されているデータを読み出す。
【0078】
ICカード20は、読み出したデータをコミットバッファ28a中の復元アドレスに対応付けて復元データとして記憶する。即ち、ICカード20は、書込みデータが書き込まれる位置に記憶されているデータをコミットバッファ28aに退避させる。また、既に復元アドレスに復元データが対応付けられている場合、復元データを既に記憶されている復元データに追記する。
【0079】
上記の処理により、不揮発性メモリ28のコミットバッファ28a内には、図5により示されるようにメモリ保障データ281が記憶される。メモリ保障データ281は、復元アドレスと、データサイズと、復元データとを対応付けて記憶する。また、不揮発性メモリ28のコミットバッファ28a内には、メモリ保障データ281の復元アドレスとは異なる復元アドレスを有するメモリ保障データ282をさらに記憶する構成であってもよい。この場合、不揮発性メモリ28中の連続していない複数の領域のデータを保障することができる。なお、連続していない複数の領域のデータを保障する処理については後述する。
【0080】
また、ステップS35でメモリ保障処理が継続中ではないと判定した場合、ICカード20は、ステップS39に移行する。
【0081】
ICカード20は、書込みコマンドから取得したアドレスにより示される不揮発性メモリ28上の領域に、書込みコマンドから取得した書込みデータを書き込む(ステップS39)。
【0082】
ICカード20は、メモリ保障処理を終了するか否か判定する(ステップS40)。即ち、ICカード20は、受信した書込みコマンドにメモリ保障処理の終了を示す情報が含まれている場合、メモリ保障処理を終了すると判定する。
【0083】
ステップS40で、受信した書込みコマンドにメモリ保障処理の終了を示す情報が含まれていると判定した場合、ICカード20は、コミットバッファ28aをクリアする(ステップS41)。すなわち、ICカード20は、コミットバッファ28aにより記憶されているメモリ保障データのうち、受信した書込みコマンドに対応するメモリ保障データを削除する。
【0084】
ステップS40で、受信した書込みコマンドにメモリ保障処理の終了を示す情報が含まれていないと判定した場合、ICカード20は、ステップS42に移行する。
【0085】
ICカード20は、受信した書込みコマンドに基づいて実行した処理の結果に基づいて、レスポンスを生成する(ステップS42)。即ち、ICカード20は、書込み処理を正常に完了させることができた場合、正常終了を示すレスポンスを生成する。ICカード20は、書込み処理においてエラーが発生した場合、エラーが発生したことを示すレスポンスを生成する。
【0086】
また、ステップS37で、メモリ保障処理を実行することが出来ないと判定した場合、ICカード20は、メモリ保障処理においてエラー(オーバーフロー)が発生したことを示すレスポンスを生成する(ステップS43)。
【0087】
ICカード20は、生成したレスポンスを端末装置10に送信し、1つのコマンドに基づく処理を終了する。
【0088】
ここで、図3に示すように関連する複数の書込みコマンドの処理中にICカード20に対する電力の供給が断たれた場合、ICカード20は、上記のメモリ保障データをコミットバッファ28aに記憶したまま停止する。
【0089】
ICカード20は、次に起動した際に、コミットバッファ28a内にメモリ保障データが存在するか否か判定する。即ち、ICカード20は、起動した場合、コミットバッファ28aを参照し、メモリ保障データの有無を判定する。
【0090】
ICカード20は、メモリ保障データがコミットバッファ28aに存在すると判定した場合、メモリ保障データの復元アドレスに基づいて、不揮発性メモリ28内の位置を特定する。ICカード20は、メモリ保障データの復元データを読み出し、読み出した復元データを特定した位置から書き込む。これにより、ICカード20は、不揮発性メモリ28のデータを復元することができる。さらに、ICカード20は、復元に用いたメモリ保障データをコミットバッファ28aから削除する。
【0091】
また、ICカード20は、端末装置10から所定のコマンドを受信した場合に上記の復元を行う構成であってもよい。例えば、ICカード20は、端末装置10から書込み処理の中止を指示するコマンドを受信した場合に上記の復元を行う構成であってもよい。
【0092】
また、ICカード20は、書込みコマンドに基づく書込み処理を中止する必要があると自身で判定した場合に上記の復元を行う構成であってもよい。例えば、ICカード20は、コミットバッファ28aのオーバーフローが発生した場合、端末装置10側で異常が検知された場合、または後続の書込みコマンドが端末装置10から送信されなくなった場合などに復元を行う。
【0093】
上記したように、ICカード20は、不揮発性メモリ28上の書込みデータを書き込む先に既に記憶されているデータをアドレスと供にメモリ保障データとしてコミットバッファ28aに記憶する。さらに、ICカード20は、起動時にメモリ保障データの有無を確認し、メモリ保障データが存在する場合、メモリ保障データに基づいて、不揮発性メモリ28のデータを復元する。
【0094】
これにより、連続する複数の書込みコマンドの処理の途中でICカード20が停止した場合であっても、不揮発性メモリ28のデータを復元することが出来る。これにより、不揮発性メモリ28上のデータに不整合が生じることを防ぐことができる。この結果、より安定して動作する携帯可能電子装置、ICカード、及び携帯可能電子装置の制御方法を提供することができる。
【0095】
また、上記したように、ICカード20は、不揮発性メモリ28上の不連続な領域のデータを保障することもできる。
【0096】
この場合、ICカード20は、書込みコマンドから取得したアドレス毎にメモリ保障データを生成する。ICカード20は、例えば、書込みコマンドに含まれるアドレスに基づいて、対応するメモリ保障データを特定することができる。新たに書込みコマンドを受信した場合、ICカード20は、書込みコマンドからアドレスを取得し、取得したアドレスに対応するメモリ保障データに対して、データサイズのセット、及び復元データの退避を行う。これにより、ICカード20は、不揮発性メモリ28上の複数の不連続な領域のデータを保障することができる。
【0097】
上記した実施形態では、ICカード20は、コミットバッファ問合せコマンドを受信した場合、コミットバッファ28aの容量を端末装置10に通知する構成として説明したが、この構成に限定されない。例えば、ICカード20は、論理チャネルの確立などを指示する初期設定コマンドを端末装置10から受信した場合にコミットバッファ28aの容量を端末装置10に通知する構成であってもよい。
【0098】
また、端末装置10は、メモリ保障処理の開始または終了を示す情報を書込みコマンドに付加する構成として説明したが、この構成に限定されない。
【0099】
例えば、端末装置10は、関連するコマンドの数を示す情報を書込みコマンドに付加する構成であってもよい。この場合、ICカード20は、書込みコマンドに付加された関連するコマンドの数に基づいて、メモリ保障処理を行うコマンドを特定する。
【0100】
また、例えば、端末装置10は、関連するコマンドがさらに存在するか否かを示す情報を書込みコマンドに付加する構成であってもよい。この場合、ICカード20は、関連するコマンドがさらに存在しないことを示す情報を受信するまでの間、メモリ保障処理を行う。
【0101】
また、例えば、端末装置10は、メモリ保障処理の開始と終了とを所定のコマンドで指示する構成であってもよい。この場合、ICカード20は、メモリ保障処理の開始を指示するコマンドを受信してから、メモリ保障処理の終了を指示するコマンドを受信するまでの間、メモリ保障処理を行う。
【0102】
なお、上述の各実施の形態で説明した機能は、ハードウエアを用いて構成するに留まらず、ソフトウエアを用いて各機能を記載したプログラムをコンピュータに読み込ませて実現することもできる。また、各機能は、適宜ソフトウエア、ハードウエアのいずれかを選択して構成するものであっても良い。
【0103】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組み合せてもよい。
【符号の説明】
【0104】
1…ICカード処理システム、10…端末装置、11…CPU、12…ROM、13…RAM、14…不揮発性メモリ、15…カードリーダライタ、17…操作部、18…ディスプレイ、19…電源部、20…ICカード、21…本体、22…ICモジュール、23…ICチップ、24…通信部、25…CPU、26…ROM、27…RAM、28…不揮発性メモリ、28a…コミットバッファ、31…電源部、32…ロジック部。

【特許請求の範囲】
【請求項1】
データを記憶する第1のメモリと、
復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第2のメモリと、
外部機器から送信された書込みコマンドを受信する受信部と、
前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第1のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第2のメモリに記憶し、前記アドレスを復元アドレスとして前記第2のメモリに記憶する制御部と、
特定された前記第1のメモリ上の領域に前記書込みデータを書込む書込み処理部と、
を具備する携帯可能電子装置。
【請求項2】
前記第2のメモリは、異なる復元アドレス毎に前記メモリ保障データを記憶する、請求項1に記載の携帯可能電子装置。
【請求項3】
前記制御部は、当該携帯可能電子装置の起動時に前記第2のメモリに前記メモリ保障データが存在する場合、前記メモリ保障データの前記復元アドレスに基づいて前記第1のメモリ上の位置を特定し、特定された位置に前記メモリ保障データの前記復元データを書き込む、請求項1または2に記載の携帯可能電子装置。
【請求項4】
レスポンスを前記外部機器に送信する送信部をさらに具備し、
前記制御部は、前記外部機器から前記第2のメモリの容量を問い合わせるコマンドを受信した場合、前記第2のメモリの容量を確認し、前記第2のメモリの容量に基づいて前記レスポンスを生成する、請求項1または2に記載の携帯可能電子装置。
【請求項5】
レスポンスを前記外部機器に送信する送信部をさらに具備し、
前記制御部は、前記第2のメモリの容量が前記書込みデータのデータサイズ未満である場合、エラーを示す前記レスポンスを生成する請求項1または2に記載の携帯可能電子装置。
【請求項6】
前記受信部は、前記外部機器から開始を示す情報と、終了を示す情報とを受信し、
前記制御部は、前記受信部により前記開始を示す情報を受信してから、前記終了を示す情報を受信するまでの間、前記復元データ及び前記復元アドレスを前記第2のメモリに記憶する、請求項1または2に記載の携帯可能電子装置。
【請求項7】
前記制御部は、前記受信部により前記終了を示す情報を受信した場合、前記第2のメモリにより記憶されている前記メモリ保障データを削除する、請求項6に記載の携帯可能電子装置。
【請求項8】
前記各部を備えるICモジュールと、
前記ICモジュールが配設される本体と、
を具備する請求項1または2に記載のICカード。
【請求項9】
データを記憶する第1のメモリと、復元アドレスと復元データとを対応付けてメモリ保障データとして記憶する第2のメモリと、を具備する携帯可能電子装置に用いられる携帯可能電子装置の制御方法であって、
外部機器から送信された書込みコマンドを受信し、
前記書込みコマンドからアドレス及び書込みデータを取得し、前記アドレスと、前記書込みデータのデータサイズと、に基づいて前記第1のメモリ上の領域を特定し、特定された前記領域のデータを復元データとして前記第2のメモリに記憶し、前記アドレスを復元アドレスとして前記第2のメモリに記憶し、
特定された前記第1のメモリ上の領域に前記書込みデータを書込む、
携帯可能電子装置の制御方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2012−252655(P2012−252655A)
【公開日】平成24年12月20日(2012.12.20)
【国際特許分類】
【出願番号】特願2011−126735(P2011−126735)
【出願日】平成23年6月6日(2011.6.6)
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.FRAM
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】