JP4245959B2 - Icカードにおけるメモリ管理方法、及びicカード - Google Patents
Icカードにおけるメモリ管理方法、及びicカード Download PDFInfo
- Publication number
- JP4245959B2 JP4245959B2 JP2003104978A JP2003104978A JP4245959B2 JP 4245959 B2 JP4245959 B2 JP 4245959B2 JP 2003104978 A JP2003104978 A JP 2003104978A JP 2003104978 A JP2003104978 A JP 2003104978A JP 4245959 B2 JP4245959 B2 JP 4245959B2
- Authority
- JP
- Japan
- Prior art keywords
- record
- data file
- shared
- file
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
- 238000007726 management method Methods 0.000 title claims description 197
- 230000015654 memory Effects 0.000 title claims description 60
- 238000012545 processing Methods 0.000 claims description 36
- 238000000034 method Methods 0.000 description 152
- 230000008569 process Effects 0.000 description 42
- 230000010365 information processing Effects 0.000 description 30
- 230000004044 response Effects 0.000 description 20
- 238000010586 diagram Methods 0.000 description 12
- 230000002159 abnormal effect Effects 0.000 description 11
- 230000006854 communication Effects 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 230000001174 ascending effect Effects 0.000 description 7
- 125000004122 cyclic group Chemical group 0.000 description 5
- 230000000717 retained effect Effects 0.000 description 5
- 238000012795 verification Methods 0.000 description 4
- 102100036848 C-C motif chemokine 20 Human genes 0.000 description 3
- 101000713099 Homo sapiens C-C motif chemokine 20 Proteins 0.000 description 3
- 238000010187 selection method Methods 0.000 description 3
- 101001139126 Homo sapiens Krueppel-like factor 6 Proteins 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 238000004904 shortening Methods 0.000 description 2
- 101000760620 Homo sapiens Cell adhesion molecule 1 Proteins 0.000 description 1
- 101000661816 Homo sapiens Suppression of tumorigenicity 18 protein Proteins 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
【発明の属する技術分野】
本発明は、ICカードにおけるメモリ管理方法、及びICカードに関し(IC:Integrated Circuit)、詳しくは、不揮発性メモリを内蔵するICカードにおいてISO規格(ISO:International Organization for Standardization)のファイル構造及びコマンドを保ちつつ、複数ファイルにより共有されたデータ領域に書き込みを行うためのICカードにおけるメモリ管理方法、及びその実施に直接使用するICカードに係わる。
【0002】
【従来の技術】
ICカードは、主にEEPROM(Electronically Erasable and Programmable Read Only Memory )やフラッシュメモリなどの不揮発性メモリが搭載され、この不揮発性メモリの書き換え単位(以下、ブロックという)は数十バイト以上であり、その書き換えに要する処理時間は数十ミリ秒程度である。
【0003】
また、ICカードは、複数のファイルを保持可能なファイル構造が国際規格であるISO/IEC 7816-4 (ISO:International Organization for Standardization/IEC:International Electrotechnical Commission )で規定されており、従来、このデータファイルに含まれるデータや管理するための情報は、前記ブロックの境界とは関係なく配置されていた。
【0004】
【非特許文献】
ISO/IEC 7816-4:1995, “Identification cards - Integrated circuit(s) cards with contacts - Part 4: Interindustry commands for interchange”
【0005】
さらに、ICカードは搭載可能なメモリの制限や、互換性の観点から、同国際規格で規定されている命令は、多くの場合、少数のファイル、あるいは、少数の管理情報のみを対象に処理を行っていた。
【0006】
このような性質を持つICカードを用いたアプリケーションでは、データの性質やセキュリティの観点から、保持すべきデータを複数のファイルに分けてICカードに保持させ、ICカードを利用する際には、複数の命令を実行することで、複数のファイルの読み出し、書き出し又は追記や照合を行って、アプリケーションに必要なデータの読み出し、書き換え又は追記や、認証・照合処理を可能としていた。
【0007】
ICカードの利用の形態として、交通機関の切符や、コンサートなどのチケット、コンビニエンスストアなどで買い物の決済に使用されることが多くなっている。その際、ICカード利用者を待たせないためには、できる限り短時間でICカードのメモリの読み書きの処理を行って迅速にこの処理を終了することが望まれる。
【0008】
そこで、従来、データを書き込んだ部分を極力書き換えないようにしたり、複数のブロックに分散しないようなファイル管理方法を用いたり、複数のファイルの書き換えをまとめて行う特殊な命令を用いたり、素子の特性を調整することによりデータの消去時間を短縮するなどして、処理時間を短くする方法があった。
【0009】
【発明が解決しようとする課題】
しかしながら、従来のICカードにおいてメモリの読み書きの処理を行うには、複数の命令を実行し、複数ファイルの操作が必要であるために、分散配置されたブロックを複数書き換えることとなり、長い処理時間が必要であった。
【0010】
また、特に非接触ICカードにおいては、書き込み途中に電力供給を絶たれる場合が想定され、このようなときに、安全にICカード内のデータを書き込み前の状態に復帰させる処理(以下、書き込み保証という)が必要であるが、この書き込み保証の機能を実現するためには、データの二重化等、さらに多くの書き換え処理が必要となり、処理時間増加の要因の一つとなっていた。
【0011】
さらに、命令やファイル構造の特殊化は、従来のICカードや他のICカードとの互換性がなくなり、また、特別なハードウェアを必要とするものであるために、システムの導入や維持に必要なコストが高額になるという欠点があった。
【0012】
ここにおいて、本発明が解決すべき主要な目的は、次のとおりである。
【0013】
即ち、本発明の第1の目的は、国際規格や業界標準と互換性のある命令を使用しながらも、ICカードの書き込み及び読み込みに必要な処理時間を短縮して高速化された処理を可能とするICカードにおけるメモリ管理方法、及びICカードを提供せんとするものである。
【0014】
本発明の第2の目的は、非接触ICカードにおいて、処理時間の増加を最小限に抑えたまま、ファイルの書き込み保証を実現したICカードにおけるメモリ管理方法、及びICカードを提供せんとするものである。
【0015】
本発明の第3の目的は、既に利用者に配布された従来のICカードにおいて、ICカード上の不揮発性メモリにプログラムを追加するだけで、ICカードの処理時間を高速化することが可能なICカードにおけるメモリ管理方法及びICカードを提供せんとするものである。
【0016】
本発明の他の目的は、明細書、図面、特に特許請求の範囲の各請求項の記載から、自ずと明らかとなろう。
【0017】
【課題を解決するための手段】
まず、本発明方法においては、課題の解決にあたり、ファイル識別子と、レコード番号と、を引数とした読み出し、書き換え又は追記の実行命令を受信し、データファイルが保持する当該レコード番号により識別された1以上のレコードと、同一のレコード長を持つ共有データファイルの共有レコードを参照して、参照された当該レコードに記録されたデータに対して、当該実行命令に対応した読み出し、書き換え又は追記の実行可能に当該データファイルの管理を行う、という特徴的構成手法を講じる。
【0018】
一方、本発明装置においては、課題の解決にあたり、複数同一の長さで配置されそれぞれレコード番号により識別可能なレコードを有して、それぞれ識別可能なファイル識別子が付与されたデータファイルを格納保持するメモリと、当該データファイル内の前記レコードと同一のレコード長を有する前記他のデータファイルである共有データファイル内の前記共有レコードを当該データファイルの実データとして参照するファイル参照手段と、前記ファイル識別子と前記レコード番号とから特定されるデータ領域に対して読み出し、書き換え又は追記の実行命令を受信して、当該実行命令に従い対応する読み出し、書き換え又は追記の前記実行命令を行う実行命令処理手段と、を具備させる、という特徴的構成手段を講じる。
【0019】
さらに、具体的詳細に述べると、当該課題の解決では、本発明が次に列挙する上位概念から下位概念に亙る新規な特徴的構成手法及び手段を採用することにより、前記目的を達成するよう為される。
【0020】
即ち、本発明方法の第1の特徴は、複数バイトを書き換え単位とする不揮発性を有したメモリを内蔵するICカードに適用されて、それぞれ識別可能なファイル識別子が付与されたデータファイルが保持しかつ、前記メモリに複数同一の長さで配置されそれぞれレコード番号により識別可能なレコードを参照する場合に、前記データファイルの保持する前記レコードから共有データファイルが備える共有レコードを参照するメモリ管理方法であって、前記ICカードにおいて、前記ファイル識別子と、前記レコード番号と、を引数とした読み出し、書き換え又は追記の実行命令を受信し、前記データファイルが保持する前記レコード番号により識別された1以上の前記レコードと、同一のレコード長を持つ前記共有データファイルの共有レコードを参照して、参照された当該共有レコードに記録されたデータに対して、前記実行命令に対応した読み出し、書き換え又は追記の実行を可能に当該データファイルの管理を行ってなる、ICカードにおけるメモリ管理方法の構成採用にある。
【0021】
本発明方法の第2の特徴は、上記本発明方法の第1の特徴における前記共有データファイルの共有レコードの参照を、前記データファイルにおいて、保持する前記レコード毎に、前記共有レコードを参照先として設定されたレコード共有状態を示すレコード識別子を随時更新可能に格納する参照管理情報を保持しておき、当該レコード識別子から、当該レコードが当該共有レコードを参照先とするレコード共有状態に設定された場合に、当該レコードのデータとして、該当する当該共有レコードを参照してなる、ICカードにおけるメモリ管理方法の構成採用にある。
【0022】
本発明方法の第3の特徴は、上記本発明方法の第2の特徴における前記読み出し、書き換え又は追記の実行を、前記参照管理情報中に、合わせて前記レコードの当該参照先として設定された前記共有データファイルの前記ファイル識別子と、当該参照先の前記共有レコードの前記レコード番号とを格納しておき、前記共有レコード状態を示した前記レコードの当該参照管理情報が読み出されたときに、当該ファイル識別子と、当該レコード番号から特定される当該共有データファイルの当該共有レコードに対して前記実行命令に対応した読み出し、書き換え又は追記を実行してなる、ICカードにおけるメモリ管理方法の構成採用にある。
【0023】
本発明方法の第4の特徴は、上記本発明方法の第2又は第3の特徴における前記読み出し、書き換え又は追記の実行を、前記参照管理情報中に、合わせて前記レコードへのアクセス権を管理するアクセス権情報を保持しておき、前記共有レコード状態を示した前記レコードの当該参照管理情報が読み出されたときに、先に受信した前記実行命令に対して、前記アクセス権情報を基に、当該レコードへのアクセス権を確認して、当該アクセス権を満たす場合にのみ、当該レコードに対する当該実行命令に対応した読み出し、書き換え又は追記を実行してなる、ICカードにおけるメモリ管理方法の構成採用にある。
【0024】
本発明方法の第5の特徴は、上記本発明方法の第1、第2、第3又は第4の特徴における前記レコードの参照を、予め、前記複数のデータファイルを、前記ICカード内において唯一のディレクトリ識別子が付与されたディレクトリに属するツリー構造として格納しておくとともに、前記実行命令の対象として選択指定された当該データファイルの属する当該ディレクトリの当該ディレクトリ識別子を、チャネル番号により識別可能なチャネル管理情報として随時更新可能に保持しておき、前記チャネル番号と前記ファイル識別子と前記レコード番号を受信したときに、当該チャネル番号により特定される当該チャネル管理情報から、前記ディレクトリ識別子を読み出し、当該ディレクトリ識別子から特定される前記ディレクトリに属する前記データファイルを、前記ファイル識別子から特定し、当該データファイルから、前記レコード番号により特定される前記レコードを参照してなる、ICカードにおけるメモリ管理方法の構成採用にある。
【0025】
本発明方法の第6の特徴は、上記本発明方法の第5の特徴における前記読み出し、書き換え又は追記の実行を、前記チャネル管理情報中に、合わせて受信した前記実行命令の実行可否を管理するセキュリティステータス情報を当該チャネル管理情報が更新されるまで保持可能に格納しておき、当該チャネル管理情報が読み出されたときに、前記実行命令の対象となる前記レコードの前記アクセス権情報と前記セキュリティステータス情報とから、当該レコードへのアクセス権を確認して、当該アクセス権を満たす場合にのみ、前記実行命令を実行してなる、ICカードにおけるメモリ管理方法の構成作用にある。
【0026】
本発明方法の第7の特徴は、上記本発明方法の第1、第2、第3、第4、第5又は第6の特徴における前記データファイルの管理を、ブロック群番号で識別可能な2以上のブロック群からなる当該データファイルに、当該ブロック群番号を新規に更新された当該ブロック群から順次昇順に付番して、最新の前記ブロック群番号と当該ブロック群番号により特定されるブロック群数とブロック群長とを前記データファイル毎のデータファイル管理情報として保持して、前記実行命令を受信したときには、当該実行命令対象となる前記データファイルの前記データファイル管理情報を読み出して、当該実行命令が前記読み出し命令であったときには、
(最新のブロック群番号−1)×ブロック群長
により求められる最新のブロック群の格納位置を算出し、当該格納位置に記録された前記最新のブロック群の読み出しを実行する一方、当該実行命令が前記書き換え命令であったときには、
{(最新のブロック群番号+ブロック群数−2)mod ブロック群数}×ブロック群長
により求められる最旧のブロック群の格納位置を算出し、当該格納位置に記録された当該最旧のブロック群の書き換えを実行するとともに、前記データファイル管理情報の前記最新ブロック群番号を、
{(最新のブロック群番号+ブロック群数−2)mod ブロック群数}+1
により算出された値に更新してなる、ICカードにおけるメモリ管理方法の構成採用にある。
【0027】
本発明方法の第8の特徴は、上記本発明方法の第7の特徴における前記データファイルの管理を、世代番号を有する前記データファイル管理情報を前記データファイル毎に二つ保持して、同一の前記データファイルに基づく当該二つのデータファイル管理情報がそれぞれ有する世代番号の初期値として異なる値を設定しておき、一方、当該データファイル管理情報を読み出すときには、前記世代番号が大きい当該データファイル管理情報を読み出して、他方、当該データファイル管理情報を更新するときには、前記世代番号が小さい当該データファイル管理情報を当該更新の対象として検出して、前記世代番号が大きい前記データファイル管理情報の有する当該世代番号より大きい値を更新後の当該世代番号として設定してなる、ICカードにおけるメモリ管理方法の構成採用にある。
【0028】
本発明方法の第9の特徴は、上記本発明方法の第7又は第8の特徴における前記データファイルの管理を、当該データファイルについて、当該データファイルの作成のときに固定的に先頭の前記レコードから昇順に付番された順編成レコード構造を持つ一般データファイルと、新規に更新された前記レコード番号から昇順に付番され前記レコード長がファイル毎に一定である循環レコード構造を持つ循環データファイルと、で当該データファイルを分別管理して、一つの当該循環データファイル及び所要の前記一般データファイルの前記参照先として設定された前記共有レコードを保持する前記共有データファイルを参照するにあたり、当該共有データファイルは、当該一般データファイルのレコード共有状態に設定された複数レコードと、前記循環データファイルのレコード共有状態に設定された一つのレコードと、を特定の順番で並べた前記共有レコードを有する前記ブロック群を当該循環データファイルの前記総レコード数分保持しておき、前記チャネル番号と追記データと前記レコード番号と前記共有データファイルの前記ファイル識別子とともに前記追記の実行命令を受信したときには、当該レコード番号に基づく前記データファイルが前記一般データファイルの場合には、前記最新のブロック群の格納位置を算出して、当該格納位置の前記ブロック群に対して前記追記レコードを用いた追記を実行し、一方、前記チャネル番号に基づく前記データファイルが前記循環データファイルの場合には、前記最旧のブロック群の格納位置を算出して、当該格納位置の前記ブロック群に対して前記追記データによる追記を実行するとともに、前記ブロック群番号の更新処理を行ってなる、ICカードにおけるメモリ管理方法の構成採用にある。
【0029】
本発明方法の第10の特徴は、上記本発明方法の第9の特徴における前記データファイルの管理を、前記読み出しの実行命令による当該読み込みが失敗したときには、前記最旧のブロック群の読み出しを実行して、前記実行命令により前記データ領域が更新される際には、予め、前記最旧のブロック群を読み取り、
{(最新のブロック群番号+ブロック群数−2)mod ブロック群数}×ブロック群長+1
により求められる格納位置で特定される領域に当該読み取ったブロック群の複製を行ってなる、ICカードにおけるメモリ管理方法の構成採用にある。
【0030】
一方、本発明装置の第1の特徴は、複数バイトを書き換え単位とする不揮発性を有したメモリを内蔵するICカードであって、複数同一の長さで配置されそれぞれレコード番号により識別可能なレコードからなり、それぞれ識別可能なファイル識別子が付与されたデータファイルを格納保持する前記メモリと、当該データファイル内の前記レコードと同一のレコード長を有する共有データファイル内の共有レコードを当該データファイルのデータとして参照するデータファイル参照手段と、前記ファイル識別子と前記レコード番号とから、当該データファイル参照手段により特定された前記データに対して読み出し、書き換え又は追記の実行命令を受信して、当該実行命令に従い対応する読み出し、書き換え又は追記の当該実行命令を行う実行命令処理手段と、を具備してなる、ICカードの構成採用にある。
【0031】
本発明装置の第2の特徴は、上記本発明装置の第1の特徴における前記データファイルが、保持する前記レコード毎に、前記データファイル参照手段により前記共有レコードを参照先として設定されたレコード共有状態を示すとともに、随時更新可能なレコード識別子を格納する参照管理情報を具備してなる、ICカードの構成採用にある。
【0032】
本発明装置の第3の特徴は、上記本発明装置の第2の特徴における前記参照管理情報が、前記参照先の前記共有データファイルの前記ファイル識別子と、当該参照先の前記共有レコードのレコード番号とを含んでなる、ICカードの構成採用にある。
【0033】
本発明装置の第4の特徴は、上記本発明装置の第2又は第3の特徴における前記参照管理情報が、前記レコードに対するアクセスの許否を確認可能に格納されたアクセス権情報を含んでなる、ICカードの構成採用にある。
【0034】
本発明装置の第5の特徴は、上記本発明装置の第1、第2、第3又は第4の特徴における前記メモリが、前記データファイルを、前記ICカード内において唯一のディレクトリ識別子が付与されたディレクトリに属するツリー構造として保持管理して、前記ディレクトリ識別子と識別可能に付与されたチャネル番号とを、新規に同一の当該チャネル番号とともに他の前記ディレクトリ識別子を受信して更新されるまで継続保持して、前記データファイルが属する前記ディレクトリの選択状況を示すチャネル管理情報を保有する、メモリ管理手段を具備してなる、ICカードの構成採用にある。
【0035】
本発明装置の第6の特徴は、上記本発明装置の第5の特徴における前記チャネル管理情報が、前記実行命令の実行可否を管理するセキュリティステータス情報を当該チャネル管理情報が更新されるまで継続保持してなる、ICカードの構成採用にある。
【0036】
本発明装置の第7の特徴は、上記本発明装置の第1、第2、第3、第4、第5又は第6の特徴における前記実行命令処理手段が、前記メモリ管理手段に、ブロック群番号で識別可能な2以上のブロック群からなる前記データファイルの、新規に更新された当該ブロック群から順次昇順に付番される最新の当該ブロック群番号と、当該ブロック番号により特定されるブロック群数とブロック群長とを前記ファイル毎に保持するデータファイル管理情報を保有するとともに、前記実行命令を受信したときに、当該実行命令対象となる前記データファイルの前記データファイル管理情報を用いて、
(最新のブロック群番号−1)×ブロック群長
により最新のブロック群の格納位置を算出する処理手段と、
{(最新のブロック群番号+ブロック群数−2)mod ブロック群数}×ブロック群長
により最旧のブロック群の格納位置を算出する処理手段と、前記ファイルのデータ領域に更新があった場合に、
{(最新のブロック群番号+ブロック群数−2)mod ブロック群数}+1
により算出された値に当該最新のブロック群番号を更新する処理手段と、を具備してなる、ICカードの構成採用にある。
【0037】
本発明装置の第8の特徴は、上記本発明装置の第7の特徴における前記データファイル管理情報が、世代番号を有して前記データファイル毎に二つ保持され、同一の前記データファイルに基づく当該二つのファイル管理情報がそれぞれ有する世代番号の初期値として異なる値が設定されて、当該世代番号が小さい当該データファイル管理情報に対して、他方の当該データファイル管理情報の有する前記世代番号より大きい値を新規の前記世代番号として設定されて順次更新されてなる、ICカードの構成採用にある。
【0038】
本発明装置の第9の特徴は、上記本発明装置の第7又は第8の特徴における前記メモリ管理手段が、前記データファイルとして、データファイル作成時に固定的に先頭の前記レコードから昇順に付番された順編成レコード構成を持つ一般データファイルと、新規に更新された前記レコード番号から昇順に付番され前記レコード長がデータファイル毎に一定である循環レコード構造を持つ循環データファイルと、所要の前記一般データファイルの前記参照先として設定されて、当該一般データファイルのレコード共有状態に設定された複数レコードと、前記循環データファイルのレコード共有状態に設定された一つのレコードと、からなる前記共有レコードを有する前記ブロック群を当該循環データファイルの前記総レコード数分保持する、共有データファイルと、を保持して、当該共有データファイルの前記データファイル管理情報として、前記循環データファイルの前記レコード番号付与順番と等しく新規に書き込まれた前記ブロック群から昇順に付与された最新の前記ブロック群番号と、当該ブロック群数と、当該ブロック長と、前記データファイル参照手段による参照先として対応する前記循環レコード番号とを具備してなる、ICカードの構成採用にある。
【0039】
本発明装置の第10の特徴は、上記本発明装置の第9の特徴における前記メモリ管理手段が、前記ブロック群数を、前記循環データファイルのレコード数+1として保持し、前記実行命令処理手段により前記ブロック群が更新される際には、前記最旧のブロック群の格納位置を算出する処理手段により当該更新前に読み取られた当該ブロック群を、
{(最新のブロック群番号+ブロック群数−2)mod ブロック群数}×ブロック群長+1
により算出される格納位置に当該ブロック群を複製するよう機能構築されてなる、ICカードの構成採用にある。
【0040】
【発明の実施の形態】
以下、本発明の実施の形態につき、添付図面を参照しつつ、装置例を説明し、次いで、同装置例に基づき具現化される方法例を順に挙げて説明する。
【0041】
(装置例)
まず、図1は、本発明の装置例に係るICカードの機能構成図及び、それを動作させるためのリーダライタと情報処理端末の機能構成図である。
【0042】
同図に示すように本装置例に係るICカードαは、その内部に当該ICカードαの機能構成を得るためのICチップ1と、同ICカードαが非接触型として機能する場合に、外部のリーダライタβとの間で無線による通信を行うためのアンテナ2とを具備する。また、リーダライタβは情報通信端末γに接続され、ICカードαとの各種データの入出力可能に構成される。
【0043】
ここで、リーダライタβは、ICカードαや情報処理端末γと通信を行う機能と、実際にICカードαと無線で通信するためにデータを送受する機能を具備する。
【0044】
また、情報処理端末γにおいては、パーソナルコンピュータやワークステーションなどで構成され、ICカードα及びリーダライタβの機能を得るための各種プログラムの実行、それらプログラムの実行に伴って各種データの入出力、またそれらプログラムや書き換え不要なデータ並びにプログラムの実行に伴って生成されるデータの記憶、及び、外部入力手段、外部出力手段のそれぞれ機能を具備して構成される。
【0045】
さらに、ICカードαのICチップ1は、ICカードαの機能を実現するため、各種通信処理、後述するメモリ内のデータファイル参照手段として、また、データファイルの読み出し、書き換え又は追記の実行命令を受信してこの実行命令に則した入出力を行う実行命令処理手段としてCPU11(CPU:Central Processing Unit )を備える。
【0046】
さらに、ICチップ1には、データファイルを格納保持するメモリとして、上記プログラムや書き換え不要なデータを保持するためのROM12(ROM:Read Only Memory)と、プログラムの実行に伴って生成されるデータを一時的に記憶するRAM13(RAM:Random Access Memory)と、プログラムの実行に伴って生成されるデータを追記可能に記憶するEEPROM14(EEPROM:Electronically Erasable and Programmable Read Only Memory )とを搭載して、加えて、リーダライタβから電波信号を使って通信するためのRF部15から構成される。
【0047】
本装置例で示すEEPROM14は、例えば64バイトの書き換え単位(以下ブロックと言う)を持ち、1バイトだけを書き換えるときにも、64バイト全てを書き換える必要があるものとする。
【0048】
なお、本装置例において採用するICカードαは、非接触方式によりリーダライタβと通信を行うものとして示したが、ICカードαとリーダライタβとの接続形態を電気的な接続として有線(オンライン)の方式をとる接触方式により通信を行うものとしても構わない。
【0049】
次に、図2は、本装置例に係るEEPROMにおいて採用されるデータファイル構造を示す図である。
同図に示すように、ICカードαでは、例えば、ディレクトリd0,d1,d2,d3(ルートディレクトリd0)を用いて、このディレクトリd1,d2,d3にそれぞれ属するデータファイルf1,f2,f3a,f3b及び鍵ファイルk1,k2,k3等にツリー構造が設定されて管理される。例えば、ディレクトリd1にはデータファイルf1及び鍵ファイルk1が存在する。
【0050】
ここで、データファイルf1,f2,f3a,f3bは、レコード構造を持ち、アプリケーションを管理するためのデータが保存される。鍵ファイルk1,k2,k3には、データファイルf1,f2,f3a,f3bのアクセス権を制御するための鍵情報が保存される。さらに、データファイルf1,f2は一般データファイル形式、f3aは循環データファイル形式及びf3bは共有データファイル形式の各ファイル形式により構成される。
【0051】
一般データファイル形式(以下一般データファイルf1,f2という)は、レコード位置が固定されたデータファイル形式であり、循環データファイル形式(以下循環データファイルf3aという)は、レコード位置を、レコードの追記をするたびに新しいものから順に並べ替えるファイル形式、共有データファイル形式(以下共有データファイルf3bという)は、複数の一般データファイルf1,f2のレコードと一つの循環データファイルf3aをまとめて仮想的に一つのファイルとしたものである。
【0052】
また、共有データファイルf3bの各レコード(以下共有レコードという)は、例えば共有レコード1,2が一般データファイルf1のレコード1,2と、共有レコード3が一般データファイルf2のレコード3と、共有レコード4が循環データファイルのレコード3の最新レコードと共有している。
【0053】
次に、図3は、本装置例に係るEEPROMにおけるディレクトリ及びデータファイルの管理情報の論理構成を示す図である。なお、本装置例に係るICカードαにおいて適用されるデータファイルは、実データが格納されるデータ領域データとファイル管理領域からなり、まずデータファイル管理領域にて管理されるデータファイル管理情報について詳細に説明する。
【0054】
まず、同図(a)に示すように、本装置例において、ディレクトリd0,d1(ID=0101h),d2(ID=0102h),d3(ID=0103h)は、それぞれ各ディレクトリ毎にディレクトリ管理情報として不揮発性メモリであるEEPROM14に保持され、例えば、1バイトの種別である「01h」(「h」は16進表記を表す。以下同じ)、2バイトのディレクトリID「0101h」、2バイトの所属ファイルアドレス「XXXXh」、2バイトの次ディレクトリアドレス「XXXXh」からなる。なお、「XXXXh」については、任意のアドレスが設定されるものであり、以下の記載についても同様である。
【0055】
ここで、種別は、管理情報の種類を示し、例えばディレクトリ管理情報を一意に示す種別として「01h」とする。ディレクトリIDはICカード内において個別に識別可能なディレクトリの識別子を示す。所属ファイルアドレスは、本ディレクトリに所属するファイル群の一つの先頭アドレスである。次ディレクトリアドレスは、次に位置するディレクトリを示す管理情報の先頭のアドレスである。
【0056】
次に、同図(b)は、一般データファイルf1,f2をそれぞれ管理するためにEEPROM14に保持される一般データファイル管理情報を示す。一般データファイルf1,f2は、アプリケーションで用いるデータを保持、管理するものであるが、例えば一般データファイル管理情報として、同一ディレクトリd1内で他のデータファイルと重複しない2バイトの識別子であるファイルID「0001h」を割り振られる。
【0057】
また、一般データファイルf1,f2は、そのデータファイル毎に固定長、固定総レコード数のレコードの集合からなり、各レコードは参照管理情報として、「00h」を除く1バイトのレコード識別子(以下タグという)、1バイトのデータ長、データの内容を有して、先頭から順番に1バイトで、1から始まるレコード番号が固定的に割り振られる。
【0058】
さらに、一般データファイルf1,f2はそれぞれ各データファイル毎に、一般データファイル管理情報として、1バイトの種別「02h」、2バイトのファイルID「0001h」、2バイトのデータアドレス「0000h」、1バイトのレコード数「05h」、1バイトのレコード長「10h」、2バイトのセキュリティ属性「00000001b」(「b」は2進表記を表す。以下同じ)、2バイトの次ファイルアドレスからなる。
【0059】
種別「02h」は、管理情報の種類を示し、ここでは一般データファイル管理情報であることを示す。また、ファイルID「0001h」は、例えばディレクトリ内で重複がなくデータファイルを個別に識別可能に付与されるデータファイルの識別子を示す。データアドレス「0000h」は、当該一般データファイルf1のデータが保存されるデータブロック群の先頭アドレスとする。
【0060】
また、レコード数「05h」は、一般データファイルf1で保持できるレコード数の総数であり、レコード長「10h」は、保持するレコードの長さである。セキュリティ属性「00000001b」は、後に述べるセキュリティステータスと対にしてアクセス判定を可能するためのファイルアクセス権管理用のデータである。次ファイルアドレス「XXXXh」は、同一の例えばディレクトリd1に属する次のファイル管理情報の先頭アドレスである。ここで、自データファイル例えば一般データファイルf2が最後であるならば、「FFFFh」が格納される。
【0061】
続いて、同図(b)は、本装置例における循環データファイルf3aの管理情報を示す。循環データファイルf3aは、アプリケーションで用いるデータを保持管理して、同一の例えばディレクトリd3内で、他のデータファイルと重複のない2バイトの識別子のファイルID例えば「0004」を付与される。
【0062】
ここで、循環データファイルf3aは、各データファイル毎に設定された固定長、固定総レコード数のレコードの集合から構成される。各レコードは参照管理情報として「00h」を除く1バイトのタグ、1バイトのデータ長、データの内容からなるものであるが、循環データファイルf3aのレコードは、新しいものから順番に1バイトで1から始まるレコード番号が、動的に割り振られる。
【0063】
循環データファイルf3aの管理情報は、一般データファイルf1,f2の管理情報「02h」の他に2バイトの循環開始レコード例えば「FFh」が付加される。循環データファイルの種別は「03h」とした。循環開始レコード番号「FFh」は、確保されたデータブロック群内の複数レコードの何番目が最も新しいレコードかを示す。本循環データファイルf3aを他のデータファイルと共有する場合の循環開始レコード番号は「FFh」とする。
【0064】
一方、図3(d)は、共有データファイルf3bの管理情報である。共有データファイルf3bは、複数のデータファイルに一括してアクセスする場合に用いられる。また、例えば同一ディレクトリd3内で、他のデータファイルf3a,・・・と重複のない2バイトの識別子であるファイルIDを例えば「0004h」として割り振られる。
【0065】
また、各レコードは、それぞれ特定の一般データファイルf1,f2又は循環データファイルf3aのレコードから参照される共有レコードからなる。ただし、参照されるレコードの長さは全て等しいものとし、1つの共有データファイルf3bを参照する循環データファイルf3aは一つに限定される。各レコードは参照管理情報としての「00h」を除く1バイトのタグ、1バイトのデータ長、データの内容からなり、レコード番号は先頭から順番に1バイトで表され、1から順に始まり、固定的に割り振られる。
【0066】
さらに、一般データファイルf1,f2の特定のレコードは、特定のレコード番号が割り当てられて、循環データファイルf3aのレコードは、特定の一つのレコード番号に割り当てられる。
【0067】
ここで、共有データファイル管理情報は、連続したメモリ領域に二つ保持されるものであり、その内容は、一般データファイルf1,f2の管理情報で用いられたものの他に、1バイトの循環レコード番号「04h」、1バイトの循環開始ブロック群番号「01h」、1バイトの循環レコード数「03h」、2バイトのブロック群長「0040h」、2バイトの世代番号「0002h」、そして、レコード毎に、2バイトの参照しているディレクトリID「0101h」,「0101h」,「0102h」,「0103h」、と組になる2バイトのセキュリティ属性「00000001b」,「00000001b」,「00000010b」,「00000100b」からなる。
【0068】
共有データファイルの種別は、例えば「04h」と「05h」とする。循環レコード番号「04h」は循環データファイルf3bに対応する共有データファイルのレコード番号を示し、循環開始ブロック群番号「01h」は、循環データファイルf1bの最も新しいレコードを含むブロック群の番号を示し、循環レコード数「03h」は、循環するレコードの数を示す。
【0069】
さらに、二つ保持した循環データファイル管理情報で、世代番号が大きい方が新しい管理情報であることを示して、参照しているディレクトリID「0101h」,「0101h」,「0102h」,「0103h」は、各レコードにおいて共有するデータファイルが属するディレクトリd1,d2,d3のディレクトリIDを示し、同じく、セキュリティ属性「00000001b」,「00000001b」,「00000010b」,「00000100b」は、各レコードにおいて共有するデータファイルのセキュリティ属性を示す。
【0070】
また、同図(e)は、鍵ファイルk1,k2,k3の管理情報を示すものである。鍵ファイルk1,k2,k3は、それぞれアクセス権を制御するために用いるものであり、例えば鍵ファイルk1には同一ディレクトリd1において重複のない2バイトの識別子である「0011h」をファイルIDとして付与される。鍵ファイルk1,k2,k3は、16種類の異なる鍵を作成可能な鍵区分を有する。
【0071】
鍵ファイルk1の管理情報は、1バイトの種別「06h」、2バイトのファイルID「0011h」、2バイトのデータアドレス「0050h」、1バイトの鍵の長さ「10h」、1バイトの鍵区分「01h」、2バイトの次ファイルアドレス「XXXXh」からなる。
【0072】
ここで、種別は、データファイル管理情報の種類を示し、鍵ファイルk1,k2,k3の種別は06hである。データアドレス「0050h」は、鍵の内容が保持されるデータブロック群のアドレスを示し、鍵の長さ「10h」は、保持する鍵の長さのバイト数を示す。また、鍵区分は、「01h」〜「10h」の16種類からなり、次ファイルアドレス「XXXXh」は同一ディレクトリd1に属する次のデータファイルの管理情報の先頭アドレスである。
【0073】
次に、図4は、本装置例に係るEEPROMの物理構成図である。
まず、同図に示すように、ディレクトリd1,d2,d3及び各データファイルf1,f2,f3a,f3b及び鍵ファイルk1,k2,k3は、EEPROM14において実データが保持されるデータ領域と、それぞれの各管理情報を保持する管理情報領域とで構成される。
【0074】
同図に示すように、例えば、各ディレクトリ内のファイルのデータファイルのデータは、最下位から順にディレクトリd1が、「0000h」〜「005Fh」、ディレクトリd2が「0060h」〜「00CFh」、ディレクトリd3が「00D0h」〜「023Fh」に配置されて、各管理情報は、最上位から順に配置される。
【0075】
ここで、一般データファイルf1,f2及び循環データファイルf3aのレコードは、それぞれディレクトリd1,d2のデータ領域と管理情報領域とに保持されて、そのレコードは下位アドレスから順に保存されて、各レコードの保存形式は、タグ、長さ、データで構成される。
【0076】
ここで、一般データファイルf1,f2の参照管理情報を含むレコードは、共有データファイルf3bに格納された共有レコードを参照先としてレコード共有状態に設定された場合、タグは、「00h」となり、各データは1,2バイト目が参照先ファイルのあるディレクトリID「0103h」、3,4バイト目が参照先ファイルID「0004h」、5バイト目が参照先レコード番号「0001h」、「0002h」又は「0003h」を格納している。
【0077】
また、循環データファイルf3aのレコードが共有データファイルf3bに格納された共有レコードを参照している場合、物理的に先頭に位置するレコードのタグは「00h」となり、データは1,2バイト目が参照先ファイルのあるディレクトリID「0103h」、3,4バイト目が参照先ファイルID「0004h」となり、その他のレコードは無視される。
【0078】
さらに、共有データファイルf3bについては、そのレコード長を16バイト(10h)として、ブロック長は64バイト(40h)としている。したがって、共有データファイルf3bのデータ領域には、4つのブロック群を含む。ここで、共有データファイルf3bの各ブロックの先頭から順にレコード1,2,3,4として、一般データファイルf1,f2及び循環データファイルf3aについても同様に構成するレコードを先頭から順次、レコード1,2,・・・と呼ぶ。
【0079】
それにより、共有データファイルf3bのデータ領域の共有レコード1及び共有レコード2は、一般データファイルf1(ファイルID=0001h)のレコード1及びレコード2であり、共有レコード3は、一般データファイルf2(ファイルID=0002h)のレコード3、共有レコード4は循環データファイルf3a(ファイルID=0003h)のそれぞれから参照されたものである。
【0080】
続いて、共有データファイルf3bのデータ領域は、連続する複数のブロック群を構成することにより管理されている。ここで説明するブロック群とは、参照されているレコードそれぞれの内容を保持するメモリ領域であり、例えば、ブロックの境界を先頭に下位から上位アドレスに向かって割り当てられる領域のことである。
【0081】
ここで、ブロック長を「BlockSize」、レコード長を「RecLen」、レコード数(レコードの総数)を「RecNum」とすると、ブロック群の長さ「BlockLen」は、
BlockLen=BlockSize×{(RecLen×RecNum)%BlockSize}
である。ただし、X%YはXをYで割った値を切り上げたものである。
【0082】
共有データファイルf3bは、このブロック群を参照している循環データファイルf3aのレコード数+1個の複数ブロック群用いて管理されてなる。一般データファイルf1,f2の各レコードは、各ブロック群に、レコード番号に従って下位から順に割り当てられている。
【0083】
また、循環データファイルf3aのレコードが保持される位置は、循環開始ブロック群番号から始まるブロック群を第1レコードに対応するブロック群として、参照される循環データファイルf3aのレコード番号に従って、1レコードずつ各ブロック群に割り当てられ、個別のブロック群内では、参照されるレコード番号に従って割り当てられる。
【0084】
さらに、共有データファイルf3bのデータ領域は、循環データファイルf3aのレコード数3に1を加えた4つのブロック群からなっており、循環データファイルf3aの開始レコード番号が1であるため、共有データファイルf3bの先頭のブロック群から順に循環データファイルf3aの各レコードが割り当てられ、残りの1つのブロック群(ここでは4つ目の最後尾のブロック群)はバックアップ用となる。
【0085】
次に、図5は、本装置例に係るRAMにおけるチャネル、一時共有データファイルの管理情報、及び一時ファイルデータの論理構成を示す図である。本装置例に適用されるICカードαは、同図に示すように、メモリ管理手段として、チャネルと呼ぶアクセス権を保持する環境を複数保持し、RAM13上に保持されるチャネルごとにディレクトリ、セキュリティ状態を管理するよう機能構成される。
【0086】
まず、同図(a)に示すように、チャネル管理情報は、2バイトのディレクトリID、2バイトのディレクトリアドレス、2バイトのセキュリティステータスから構成される。ディレクトリID「0101h」は、現在当該チャネルとして格納保持しているディレクトリd1のIDであり、更新可能に保持されるものである。また、ディレクトリアドレス「XXXXh」は、同じくこのチャネルに格納されるディレクトリd1の管理情報の先頭アドレスを示す。セキュリティステータス「00000000b」は、このチャネルにおけるセキュリティ状態を示している。
【0087】
さらに、RAM13には、処理途中の状態を保持するために、同図(b)に示した一時共有データファイル管理情報及び同図(c)に示した一時ファイルデータを保持している。一時共有データファイル管理情報は、管理情報内のデータを書き換える際にバッファとして用いるものであり、一時ファイルデータは、ブロック群を書き換える際にバッファとして用いることが可能に構成される。
【0088】
(方法例)
続いて、以上のように構成されたICカードαにおいて、データファイルf1,f2,f3a,f3b毎に設定されたアクセス権の制御方法、ディレクトリd1,d2,d3を選択するディレクトリ選択の選択手順、鍵ファイルk1,k2,k3を用いた鍵照合の手順及びデータファイルf1,f2,f3a,f3bの読み出し手順を順に追って説明する。
【0089】
まず、本実施形態例におけるICカードαは、データファイルf1,f2,f3a,f3b毎に保持するセキュリティ属性と、チャネル毎に保持するセキュリティステータス、そして鍵ファイル毎に保持する鍵区分を使ってデータファイルf1,f2,f3a,f3bへのアクセス制御を行う。
【0090】
データファイルf1,f2,f3a,f3b毎に保持したセキュリティ属性は、どの鍵で照合したらアクセス可能であるのかを示すものであり、一方チャネル毎に設定されたセキュリティステータスは、現在どの鍵で照合したかどうかを示している。例えば、鍵区分「01h」の鍵を照合したとすると、セキュリティステータスの該当ビットを「1」として、「00000001b」となる。
【0091】
この状態でセキュリティ属性が「00000001b」のデータファイルf1をアクセスする場合、このセキュリティステータス「00000001b」とセキュリティ属性「00000001b」の論理積を計算して、その結果が「00000001b」となることから、アクセス可能と判断する。
【0092】
また、この状態で、セキュリティ属性が「00000010b」のデータファイルf2をアクセスする場合は、論理積の結果が「00000000b」となるため、アクセス不可と判断することが可能となり、予め設定されたセキュリティ属性、セキュリティステータス及び鍵ファイルにしたがって、データファイルf1,f2,f3a,f3bへのアクセス制御が可能となる。
【0093】
次に、図6は、本発明の方法例に係るディレクトリの選択手順を示すフローチャートである。同図を用いて各種データファイルを格納するディレクトリd1,d2,d3を選択する手順を説明する。
【0094】
本方法例によるICカードαは、上位装置である、例えば情報処理端末γから引数として、1バイトのチャネル番号(以下Chという)、2バイトのディレクトリID(以下DirIDという)を持つディレクトリ選択命令を受信する。
【0095】
ICカードαはディレクトリ選択命令を受信すると、最初のディレクトリであるディレクトリd1の管理情報内の次ディレクトリアドレス「XXXXh」からディレクトリd2,・・・と順次たどることにより、ディレクトリ管理情報内のディレクトリIDが受信した引数「DirID」と等しいディレクトリ管理情報を検索する(ST1)。
【0096】
ST1の後、「DirID」と合致するディレクトリIDの検出を確認して(ST2)、所望のディレクトリIDが検出されなかった場合には、ディレクトリ指定誤りの異常終了を情報処理端末γにリーダライタβを介して送信して(ST3)終了する。ST2にて、引数「DirID」と合致するディレクトリIDが検出された場合には、そのディレクトリ管理情報の先頭アドレスを「DirAddr」に代入する(ST4)。
【0097】
引数「Ch」で特定されるチャネル管理情報内のディレクトリアドレスに「DirAddr」を(ST5)、ディレクトリIDに「DirID」を(ST6)それぞれ書き込み、全ての処理が正常に終了した場合には、正常終了応答を情報処理端末γに送信して(ST7)ディレクトリの選択処理を終了する。
【0098】
続いて、図7は、本方法例に係る鍵の照合手順を示すフローチャートである。本方法例において適用するICカードαは、引数として1バイトのチャネル番号「Ch」、2バイトの鍵ファイルのID(以下KeyIDという)、複数バイトの鍵内容(以下KeyValueという)、1バイトの鍵の長さ(以下KeyLenという)を持つ鍵照合命令を上位装置である情報処理端末γからリーダライタβを介して受け取る。
【0099】
そこで、まず、同図に示すように、「Ch」にて特定されるチャネル管理情報内にあるディレクトリIDを「DirID」に、ディレクトリアドレスを「DirAddr」に、セキュリティステータスを「SS」として代入する(ST11)。代入された「DirAddr」のアドレスから始まるディレクトリ管理情報を読み込み、さらにこのディレクトリ管理情報中の所属ファイルアドレスをたどり、ファイルIDが「KeyID」と等しく、かつ種別が「06h」である鍵ファイル管理情報を探す(ST12)。
【0100】
ST12の後、鍵ファイルが検出されたかどうか確認して(ST13)、検出されなかった場合は、鍵ファイルIDの指定誤りの異常応答を上位装置に送信して(ST14)鍵の照合手順の処理を終了する。一方、所望の鍵ファイルが検出された場合には、その鍵ファイル管理情報の先頭アドレスを「KeyAddr」に代入する(ST15)。
【0101】
「KeyAddr」で特定されるアドレスから始まる鍵ファイル管理情報内のデータアドレスをKeyValue´に代入して(ST16)、先に情報通信端末γから受け取った「KeyValue」とこの「KeyValue´」が等しいどうか例えば「KeyLen」の長さから確認する(ST17)。
【0102】
「KeyValue」と「KeyValue´」が等しくない場合、鍵照合不一致として鍵内容不一致異常終了応答を情報通信端末γに送信し(ST18)、鍵照合の処理を終了する。一方、「KeyValue」と「KeyValue´」が等しい場合には、「KeyAddr」のアドレスから始まる鍵ファイル管理情報内の鍵区分を「KeyKind」とおく(ST19)。
【0103】
さらに、引数として先に受け取った「SS」の「KeyKind」ビット目を「1」に置き換える(ST20)。ST20まで、全て正常に終了したときには、正常終了応答を上位装置である情報通信端末γにリーダライタβを介して送信して(ST21)、鍵の照合処理を終了する。
【0104】
次に、図8は、本方法例に係るデータファイルの読み出し手順を示すフローチャートである。同図を用いて各データファイルf1,f2,f3a,f3bを読み出す手順を説明する。
まず、本方法例にて適用するICカードαは、引数として、1バイトのチャネル番号「Ch」、2バイトのデータファイルのファイルID(以下FileIDという)、1バイトのレコード番号(以下RecNo)を持つ読み出し命令を上位装置情報通信端末γから受け取る。
【0105】
受け取った「Ch」により特定されるチャネル管理情報内にあるディレクトリIDを「DirID」、ディレクトリアドレスを「DirAddr」、セキュリティステータスを「SS」にそれぞれ代入して(ST31)、「DirAddr」で特定されるアドレスから始まるディレクトリ管理情報内に格納された所属ファイルアドレスからデータファイル管理情報を順次たどっていき、種別が「02h」、「03h」、「04h」又は「05h」でファイルIDがFileIDと等しいデータファイル管理情報を探す(ST32)。
【0106】
ST32の後に、データファイル管理情報が検出されたかどうかを確認して(ST33)、検出されなかった場合には、ファイルID指定誤りの異常終了応答を情報通信端末γに送信して、データファイル読み出しの処理を終了する。一方、所望のデータファイル管理情報が検出されたときには、このデータファイル管理情報の先頭アドレスを「FileAddr」とおく(ST35)。
【0107】
さらに、「FileAddr」で特定されるデータファイル管理情報内の種別を「FileKind」として(ST36)、先ず、この「FileKind」に代入された値が、一般データファイルf1,f2を示す「02h」であるかどうかを確認する(ST37)。ここで、「FileKind」が「02h」であった場合には、該当する一般データファイルf1又はf2の読み出しを行う(ST38)。
【0108】
「FileKind」の値が、「02h」でない場合には、さらに、循環データファイルf3aを示す「03h」であるかどうか確認して(ST39)、「03h」であれば、循環データファイルf3aの読み出し処理を行い(ST40)、循環データファイルf3aを示す「03h」でなければ、引続き、「FileKind」が「04h」又は「05h」であるかどうか確認する(ST41)。
【0109】
この「FileKind」が、共有データファイルf3bの種別として設定された「04h」又は「05h」であれば、共有データファイルf3bの読み出し処理を行い(ST42)、「FileKind」が以上の「02h」〜「05h」のいずれにも該当しないときには、データファイル種別の指定誤りとして異常終了を情報処理端末γに送信して(ST43)読み出し処理を終了する。
【0110】
さらに、ST38、ST40及びST42にて行う一般データファイルf1,f2、循環データファイルf3a及び共有データファイルf3bの読み出し処理について順に説明する。
【0111】
図9は、本方法例に係る一般データファイルの読み出し手順を示すフローチャートである。同図に示すように、ST38にて一般データファイルf1,f2を読み出す処理を実行するにあたり、まず、「FileAddr」で始まる一般データファイル管理情報を特定して、この一般データファイル管理情報内に格納されたセキュリティ属性と、先に「Ch」にて特定されるチャネル管理情報内のセキュリティステータスを代入された「SS」との論理積を算出して結果を「Ans」に代入する(ST51)。
【0112】
ST51の後、この論理積の結果「Ans」が「00000000b」であるかどうかを確認して(ST52)、「Ans」が「00000000b」の場合には、アクセス権不足としてアクセス権誤り異常終了を情報処理端末γに送信して(ST53)一般データファイルの読み出し処理を終了する。
【0113】
一方、ST52で論理積の結果「Ans」が「00000000b」でない場合には、「FileAddr」のアドレスにより特定される一般データファイル管理情報内のデータアドレスを「DataAddr」、レコード長を「RecLen」としてそれぞれ代入する(ST54)。
【0114】
続いて、読み出すべきレコードのアドレス「RecAddr」を、
RecAddr=DataAddr+RecLen×(RecNo−1)
の式から算出して(ST55)、この「RecAddr」から始まるデータの1バイト目を「タグ」(以下、「Tag」という)として(ST56)、この「Tag」が「00h」かどうか確認する(ST57)。
【0115】
ここで、「Tag」が「00h」ではない場合、通常のレコードとして「RecAddr」から「RecLen」分のデータと、一般データファイルの読み出しの正常終了の通知を合わせて情報処理端末γに送信して(ST58)、一般データファイルの読み出しを正常に終了する。
【0116】
一方、「Tag」が「00h」であった場合には、共有データファイルf3bからのレコードの参照であると判断して、「RecAddr」で特定されるアドレスから始まるレコードの、例えば第3バイトから第4バイトを共有データファイルf3bの属するディレクトリd3のディレクトリID(以下LDirID)とし、第5バイトと第6バイトを共有データファイルf3bのファイルID(以下LFileID)とし、第7バイトを共有データファイルf3bの参照先レコード番号(以下LRecNo)とする(ST59)。
【0117】
ST59の後、一般データファイルから共有レコードの読み出し処理を行う(ST60)ものであるが、一般データファイルから共有レコードの読み出し処理を行うにあたっては、以下にさらに詳細に説明する。
図10は、本方法例に係る一般データファイルからの共有レコード読み出し手順を示すフローチャートである。ST60について同図を参照して説明する。
【0118】
まず、「LDirID」をディレクトリIDとするディレクトリ管理情報を、「DirAddr」を先頭アドレスとするディレクトリ管理情報内の次ディレクトリアドレスから順位たどって探し、検出したディレクトリ管理情報の先頭アドレスを「LDirAddr」とする(ST61)。
【0119】
次いで、この「LDirAddr」で始まるディレクトリ管理情報内の所属ファイルアドレスをたどり、種別が「04h」又は「05h」であり、かつ、ファイルIDが「LFileID」で特定される共有データファイル管理情報を検索し(ST62)、その結果、二つの共有データファイルの管理情報が検出された確認する(ST63)。
【0120】
ST63にて共有データファイル管理情報が一つしか検出されなかった場合には、検出した共有データファイル管理情報の先頭アドレスを「LFileAddr」とする(ST64)ものであるが、二つの共有データファイル管理情報が検出されたときには、種別が「04h」である共有データファイル管理情報の先頭アドレスを「LFileAddr1」とし、種別が「05h」の共有データファイル管理情報の先頭アドレスを「LFileAddr2」とする(ST65)。
【0121】
次いで、「LFileAddr1」と「LFileAddr2」とで始まる二つの共有データファイル管理情報内の世代番号を比較して、大きいほうの管理情報の先頭アドレスを「LFileAddr」とする(ST66)ことで、「LFileAddr」を決定する。
【0122】
ST64又はST66により「LFileAddr」が決定された後に、この「LFileAddr」のアドレスを先頭アドレスとする共有データファイル管理情報内のデータアドレスを「LDataAddr」、循環開始ブロック群番号を「LStartBlock」、レコード長を「LRecLen」、レコード数を「LRecNum」、ブロック群長を「LBlockLen」、循環レコード数を「LRRecNum」とする(ST67)。
【0123】
ST67にて代入した値を用いて、まず、最新ブロック群の先頭アドレス「LBlockAddr」を、
LBlockAddr=LDataAddr+LBlockLen×(LStartBlock−1)
の式より算出する(ST68)。
【0124】
引続き、レコード番号「LRecNo」で示されるレコードの先頭アドレス「LRecAddr」を、
LRecAddr=LBlockAddr+LRecLen×(LRecNo−1)
の式により算出する(ST69)
【0125】
ここで、ST69より求めた「LRecAddr」のアドレスを先頭アドレスとするレコードが実際に読み出せるかどうか確認して(ST70)、実際にデータとして読み出せた場合には、この「LRecAddr」から「LRecLen」長さ分のデータを読み出し、正常終了の通知ともに情報処理端末γに応答する(ST71)。
【0126】
一方、実データとしてメモリ上から、算出することで得た「LRecAddr」から始まるレコードを読み出せなかった場合には、バックアップブロック群の先頭アドレス「LBBlockAddr」を、
LBBlockAddr=LDataAddr+BlockLen×{(LSartBlock+LRRecNum−1)mod(LRRecNum+1)}の式より算出して求める(ST72)。
【0127】
さらに、レコード番号「LRecNo」で示されるレコードの先頭アドレス「LRecAddr」を、
LRecAddr=LBBlockAddr+LRecLen×(LRecNo−1)
の式を用いて算出する(ST73)。
【0128】
「LRecAddr」のアドレスを先頭アドレスとするレコードから、「LRecLen」長さ分のデータを読み出して、正常終了の通知とともに情報処理端末γに送信して応答し(ST74)、一般データファイル内の共有レコード読み出し処理を終了する。
【0129】
次に、図11は、本方法例に係る循環データファイルの読み出し手順を示すフローチャートである。同図に示すように、前述のST40にて循環データファイルf3aを読み出す処理を実行するにあたり、まず、「FileAddr」で始まるデータファイル管理情報内のセキュリティ属性と、先に「Ch」にて特定されるチャネル管理情報内のセキュリティステータスである「SS」との論理積を算出してその結果を「Ans」とする(ST81)。
【0130】
次に、この「Ans」が「00000000b」であるかどうかを確認して(ST82)、「00000000b」であった場合には、アクセス権不足としてアクセス権誤りの異常終了を情報通信端末γに応答として送信して(ST83)、循環データファイルの読み出し処理を終了する。
【0131】
一方、「Ans」が「00000000b」でない場合には、「FileAddr」で始まる循環データファイル管理情報内の循環開始レコード番号を「RecStart」、データアドレスを「DataAddr」とおき(ST84)、この「RecStart」が「FFh」であるかどうかを確認して(ST85)、「FFh」でない場合、「FileAddr」で始まる循環データファイル管理情報内のレコード長を「RecLen」、レコード数を「RecNum」とおく(ST86)。
【0132】
引続き、所望の読み出す対象レコードの先頭アドレス「RecAddr」を、RecAddr=DataAddr+RecLen×(RecStart−1)
の式を用いて算出して(ST87)、この算出した「RecAddr」から始まるレコードの「RecLen」で示される長さ分を読み出し、これを正常終了の応答とともに情報処理端末γに送信して読み出し処理を終了する(ST88)。
【0133】
一方、ST85において「RecStart」が「FFh」であった場合には、「DataAddr」を先頭アドレスとするレコードの第3バイトから第4バイトを共有データファイルの属するディレクトリID(以下LDirIDという)とし、第5バイトと第6バイトを共有データファイルのファイルID(以下LFileIDという)とする(ST89)。
【0134】
その後、循環データファイルから共有レコードの読み出し処理を行う(ST90)ものであるが、循環データファイルからの共有レコード読み出し手順の詳細については、以下のような手順を順次実行するものである。
図12は、本方法例に係る循環データファイルからの共有レコード読み出し手順を示すフローチャートである。ST90について同図を参照して説明する。
【0135】
まず、同図に示したST91〜ST96の過程により共有データファイル管理情報の先頭アドレス「LFileAddr」を決定するものであるが、この手順については、図10に示した一般データファイル内共有レコードの読み出し手順のST61〜ST66と同一のものであり、説明の繰り返しを避けるため、ここでの説明を省略する。
【0136】
ST94又はST96までの過程を経て「LFileAddr」が決定された後、「LFileAddr」で示されたアドレスから始まる共有データファイル管理情報内のデータアドレスを「LDataAddr」、循環開始ブロック群番号を「LStartBlock」、レコード長を「LRecLen」、レコード数を「LRecNum」、循環レコード数を「LRRecNum」、ブロック群長を「LBlockLen」、循環レコード番号を「LRRecNo」とおく(ST97)。
【0137】
以上の代入された値を用いて、最新のブロック群の先頭アドレス「LBlockAddr」は、
LBlockAddr=LDataAddr+LBlockLen×(LStartBlock−1)
により算出する(ST98)。
【0138】
さらに、レコード番号「LRRecNo」で示されるレコードの先頭アドレス「LRecAddr」を、
LRecAddr=LBlockAddr+LRecLen×(LRRecNo−1)
により算出して(ST99)、算出された「LRecAddr」を先頭アドレスとして始まるデータが実際のメモリ上にて読み出せるか確認する(ST100)。
【0139】
ここで、「LRecAddr」から始まるデータが実際に読み出せた場合には、この「LRecAddr」から始まるデータを「LRecLen」分読み出して、情報処理装置γに正常終了の通知とともに送信して読み出し処理を終了する(ST101)。
【0140】
一方、「LRecAddr」から始まるデータが読み出せなかったときには、バックアップブロック群の先頭アドレス「LBBlockAddr」を、
LBBlockAddr=LDataAddr+LBlockLen×{(LStartBlock+LRRecNum−1)mod(LRRecNum+1)}
から算出する(ST102)。
【0141】
続いて、レコード番号「LRRecNo」で示されるレコードの先頭アドレス「LRecAddr」を、
LRecAddr=LBBlockAddr+LRecLen×(LRRecNo−1)
から算出して(ST103)、「LRecAddr」の先頭アドレスから始まるデータを「LRecLen」分だけ読み出し、正常終了の通知とともに情報処理端末γに応答として送信して(ST104)、読み出し処理を終了する。
【0142】
続いて、図13は、本方法例に係る共有データファイルの読み出し手順を示すフローチャートである。同図に示すように、前述のST42にて共有データファイルf3bを読み出す処理を実行するにあたり、まず、「DirAddr」を先頭アドレスとするディレクトリ管理情報内の所属ファイルアドレスから、データファイル管理情報をたどり、「FileAddr」を先頭アドレスとして、かつ、種別が「04h」又は「05h」であり、「FileID」をファイルIDとする共有データファイル管理情報を検索する(ST111)。
【0143】
ここで、共有データファイル管理情報が検出されたか確認して(ST112)、共有データファイル管理情報が検出された場合、この検出された共有データファイル管理情報の先頭アドレスを「FileAddr´」とする(ST113)。
【0144】
「FileAddr」を先頭アドレスとする共有データファイル管理情報と、「FileAddr´」を先頭アドレスとする共有データファイル管理情報とで保持する世代番号を比較して、世代番号の大きい方の共有データファイル管理情報の先頭アドレスを改めて「FileAddr」とする(ST114)。
【0145】
次に、ST112にて共有データファイル管理情報が検出されなかった場合、又は、ST114を経て一意に「FileAddr」が決定された後に、この「FileAddr」を先頭アドレスとする共有データファイル管理情報内のレコード番号「RecNo」のディレクトリIDを「LDirID」に、セキュリティ属性を「SA」に代入する(ST115)。
【0146】
続いて、チャネル管理情報内でディレクトリIDが「LDirID」と等しいものを検索して、その検索されたチャネル管理情報内のセキュリティステータスと「SA」との論理積を算出して、「Ans」とし(ST116)、この「Ans」が「00000000b」であるかどうか確認する(ST117)。
【0147】
ここで、「Ans」が「00000000b」であった場合、この共有データファイルについてのアクセス権不足としてアクセス権誤りの異常終了を情報処理端末γに応答して(ST118)処理を終了する。
【0148】
一方、「Ans」が「00000000b」でなかった場合には、「FileAddr」を先頭アドレスとする共有データファイル管理情報内の循環開始ブロック群番号を「StartBlock」、データアドレスを「DataAddr」、レコード数を「RecNum」、レコード長を「RecLen」、ブロック群長を「BlockLen」、循環レコード数を「RecNum」とする(ST119)。
【0149】
以上、代入された値を用いて、読み出すブロック群の先頭アドレス「BlockAddr」は、
BlockAddr=DataAddr+BlockLen×(StartBlock−1)
の式により算出して(ST120)、この算出した「BlockAddr」のアドレスを先頭アドレスとしたブロック群が読み出せるかを確認する(ST121)。
【0150】
「BlockAddr」を先頭アドレスとするブロック群が読み出せた場合には、先に受け渡されたレコード番号「RecNo」で示されるレコードの先頭アドレス「RecAddr」を、
RecAddr=BlockAddr+RecLen×(RecNo−1)
の式を用いて算出する(ST122)。
【0151】
この算出した「RecAddr」を先頭アドレスとして長さ「RecLen」分のデータを読み出し、読み出したデータを情報処理端末γに送信するとともに、正常終了の応答をして(ST123)、共有データファイルf3bの読み出し処理を終了する。
【0152】
一方、ST121にて「BlockAddr」から始まるデータが読み出せない場合には、バックアップブロック群の先頭アドレス「BBlockAddr」を、
BBlockAdr=DataAddr+BlockLen×{(StartBlock+RRecNum−1)mod(RRecNum+1)}
の式を用いて算出する(ST124)。
【0153】
引続き、先に受け渡されたレコード番号「RecNo」で示されるレコードの先頭アドレス「RecAddr」を、
RecAddr=BBlockAddr+RecRen×(RecNo−1)の式を用いて算出し(ST125)、この「RecAddr」を先頭アドレスとして「RecLen」長さ分のデータを読み出し、正常終了の通知とともに情報処理端末γに応答として送信して(ST126)、読み出し処理を終了する。
【0154】
続いて、図14は、本方法例に係るデータファイルの追記・書き換え手順を示すフローチャートである。同図を用いて各データファイルf1,f2,f3a,f3bを追記又は書き換える手順を説明する。
まず、本方法例におけるICカードαは、引数として1バイトのチャネル番号(以下Chという)、2バイトのデータファイルのID(以下FileIDという)、1バイトのレコード番号(以下RecNoという)、複数バイトの書き換えデータ(以下WriteDataという)を持つ追記又は書き換え命令を情報処理端末γから受け取る。
【0155】
以下、同図に示した過程を経るものであるが、ST131〜ST143の過程は、図8に示したST31〜ST43の各過程と対応しており、読み出し命令を追記又は書き換え命令と置き換えるものであり、繰り返しを避けるため説明は省略する。また、ST138、ST140及びST142の各処理過程については、以下に順を追って説明する。
【0156】
図15は、本方法例に係る一般データファイルの追記・書き換え手順を示すフローチャートである。同図に示すように、ST138にて一般データファイルf1,f2を追記又は書き換え処理を実行するにあたり、図9にて示したST51〜ST57に対応するST151〜ST157の過程を順次行う。
【0157】
その後、ST157において「Tag」が「01h」と等しくない場合に、「RecAddr」を先頭アドレスとして「RecLen」分の長さに「WriteData」を書き込み、情報処理端末γに応答として正常終了の通知を送信して(ST158)、一般データファイルf1,f2の追記又は書き込み手順を終了する。
【0158】
一方、ST157において「Tag」が「01h」であった場合には、ST59と同様に、「RecAddr」から始まるレコードの第3バイトから第4バイトを共有データファイルf3bの属するディレクトリd3のディレクトリID、ファイルID、レコード番号を取り出して、それぞれ「LDirID」、「LFileID」、「LRecNo」とする(ST159)。
【0159】
続いて、一般データファイルからの共有レコードの追記又は書き換え処理(ST160)について説明する。
図16は、本方法例に係る一般データファイルからの共有レコードの追記・書き換え手順を示すフローチャートである。ST160について同図を参照して説明するが、同図ST161〜ST167は図10のST61〜ST67に対応するものであり、説明を省略する。
【0160】
ST167の後に、最新のブロック群の先頭アドレス「LBlockAddr」を、
LBlockAddr=LDataAddr+LBlockLen×(LStartBlock−1)
の式により算出して、さらに、バックアップブロック群の先頭アドレス「LBBlockAddr」を、
LBBlockAddr=LDataAddr+LBlockLen×{(LStartBlock+LRRecNum−1)mod(LRRecNum+1)}
の式より代入して算出する(ST168)。
【0161】
その後、一時ファイルデータ内のレコード番号「LRecNo」で示されるレコードの先頭アドレス「LTRecData」を、
LTRecData=LRecLen×(LRecNo−1)
の式より算出して(ST169)、ST168にて算出した「LBlockAddr」を先頭アドレスとするブロック群が読み出せるかどうか確認する(ST170)。
【0162】
ここで、「LBlockAddr」から始まるブロック群が読み出せない場合には、「LBBlockAddr」から始まるブロック群を一時ファイルデータに複製して(ST171)、一方、読み出せる場合には、読み出したブロック群を一時ファイルデータとともに、「LBBlockAddr」から始まるブロック群とに複製する(ST172)。
【0163】
ST171又はST172を経て一時ファイルデータに複製が完了した後に、この一時ファイルデータの「LTRecData」からレコード長「LRecLen」分だけ「WriteData」を書き込み(ST173)、一時ファイルデータの内容を「LBlockAddr」に複製して(ST174)、情報処理端末γに正常終了の応答を送信して(ST175)、追記又は書き換えの処理を終了する。
【0164】
次に、図17は、本方法例に係る循環データファイルの書き換え手順を示すフローチャートである。同図に示すように、前述のST140にて循環データファイルf3aの書き換え処理を実行するにあたり、まず、ST181〜ST185までは、図11に示したST81〜ST85と同一のものであり、説明を省略する。
【0165】
ST185にて、「RecStart」が「FFh」でない場合には、「FileAddr」を先頭アドレスとする循環データファイル管理情報内のレコード長を「RecLen」、レコード数を「RecNum」とおき(ST186)、書き換える所望のレコードの先頭アドレスを「RecAddr」を、
RecAddr=DataAddr+RecLen×{(RecStart+RecNum+RecNo−1)mod RecNum}
の式より算出する(ST188)。
【0166】
この算出した「RecAddr」を先頭アドレスとするレコードに対して、長さ「RecLen」分の領域に「WriteData」を書き込み、以上の処理が正常に終了した後に書き換えの正常終了通知を情報処理端末γに応答として送信する(ST189)。
【0167】
一方、ST185にて「RecStart」が「FFh」であった場合には、循環レコード内の共有レコードの書き換え処理を実行するものであるが、まず、「DirAddr」から始まるレコードの第3バイトから第4バイトを共有データファイルの属するディレクトリd3のディレクトリID(以下LDirIDという)とし、第5バイトと第6バイトを共有データファイルのファイルID(以下LFileIDという)とする(ST190)。
【0168】
ここで、先に受け渡されたレコード番号「RecNo」が「01h」であるかどうか確認して(ST191)、「RecNo」が「01h」でなければレコード番号指定誤りとして異常応答を送信して(ST192)、循環ファイルの書き換え処理を終了する。一方、ST191にて「RecNo」が「01h」であった場合には、循環データファイルから共有レコードの書き換え処理を行う(ST193)。
【0169】
図18は、本方法例に係る循環データファイルからの共有レコード書き換え手順を示すフローチャートである。
引続き、ST193の循環データファイルの書き換え手順について詳細に説明するものであるが、同図に示したST201〜ST206については、図12に示したST91〜ST96の処理手順と同様のものであり、説明を省略する。
【0170】
ST204又はST206にて「LFileAddr」が一意に決定された後に、この「LFileAddr」を先頭アドレスとする共有データファイル管理情報内のデータアドレスを「LDataAddr」、循環開始ブロック群番号を「LStartBlock」、レコード長を「LRecLen」、ブロック長を「LBlockLen」、循環レコード数を「LRRecNum」とおく(ST207)。
【0171】
続いて、例えばレコード番号1で示される最新のブロック群の先頭アドレス「LBlockAddr」を、
LBlockAddr=LDataAddr+LBlockLen×(LStartBlock−1)
の式より算出する。
【0172】
加えて、バックアップブロック群の先頭アドレス「LBBlockAddr」を、
LBBlockAddr=LDataAddr+LBlockLen×{(LStartBlock+LRRecNum−1)mod(LRRecNum+1)}
の式に先に代入した値を用いて算出する(ST208)。
【0173】
ここで、算出して求めた「LBlockAddr」を先頭アドレスとするデータの領域が実際に読めるものであるか確認して(ST209)、読み出せない場合には、「LBBlockAddr」を先頭アドレスとするブロック群の内容を一時ファイルデータに複製する(ST210)。一方、「LBBlockAddr」から始まるブロック群が読み出せた場合には、このブロック群の内容を一時ファイルデータと、「LBBlockAddr」から始まるブロック群とに複製する(ST211)。
【0174】
ST210又はST211を経て、一時ファイルデータに新規なデータを複製した後に、一時ファイルデータ内のレコード番号「LRecNo」で示されるレコードの先頭アドレス「LTRecData」を、
LTRecData=LRecLen×(LRecNo−1)
の式より算出する(ST212)。
【0175】
その後、一時ファイルデータ内の「LTRecData」からレコード長「LRecLen」分に「WriteData」を書き込み(ST213)、引続き、一時ファイルデータの内容を「LBlockAddr」を先頭アドレスとするブロック群に複製し(ST214)、情報処理端末γに正常終了の応答を送信して(ST215)、書き換え処理を終了する。
【0176】
続いて、図19は、本方法例に係る共有データファイルの書き換え手順を示すフローチャートである。同図に示すように、前述のST142にて共有データファイルf3bを書き換える処理を実行するにあたっては、まず、ST221〜ST229までは、図13に示したST111〜ST119と同様の手順であり、その説明を省略する。
【0177】
ST229にて代入された値を用いて、最新ブロック群の先頭アドレス「BlockAddr」を、
BlockAddr=DataAddr+BlockLen×{(StartBlock+RRecNum−1)mod(RRecNum+1)}
の式より算出する。
【0178】
さらに、バックアップブロック群の先頭アドレス「BBlockAddr」を、
BBlockAddr=DataAddr+BlockLen×{(StartBlock+RRecNum−1)mod(RRecNum+1)}
の式を用いて算出する(ST230)。ここで、算出して求めた「BlockAddr」を先頭アドレスとするブロック群がよみだせるものであるか確認する(ST231)。
【0179】
ST231にて「BlockAddr」から始まるブロック群が読み出せない場合には、「BBlockAddr」から始まるブロック群を一時ファイルデータに複製して(ST232)、一方、読み出せるものであれば、このブロック群の内容を一時ファイルデータと、「BBlockAddr」を先頭アドレスとする領域とに複製する(ST233)。
【0180】
ST232又はST233を経て一時ファイルデータに複製がされた後に、一時データファイル内のレコード番号「RecNo」で示されるレコードの先頭アドレス「TRecData」を、
TRecData=RecLen×(RecNo−1)
の式により算出する(ST234)。
【0181】
引続き、一時ファイルデータ内の「TRecData」からレコード長「RecLen」分に「WriteData」を書き込み(ST235)、一時ファイルデータの内容を「BlockAddr」に複製し(ST236)、ST236の処理が終了した後に、情報処理端末γに正常終了の応答を送信して(ST237)、書き換え処理を終了する。
【0182】
次に、本方法例に係るデータファイルf1,f2,f3a,f3bの追記手順について説明するものの、追記命令を受信した後に所定のデータファイル指定の手順については図14に示した手順と同様のフローを用いるものであり、その説明は省略する。また、特に一般データファイルf1,f2の追記手順については合わせて図15及び図16の手順に従うものとする。ここでは、循環データファイルf3a及び共有データファイルf3bの追記について順に説明する。
【0183】
図20は、本方法例に係る循環データファイルの追記手順を示すフローチャートである。同図に示すように、前述のST140にて循環データファイルf3bの追記処理を実行するにあたり、まず、引数として受け渡されたレコード番号「RecNo」が「01h」であるかどうか確認して(ST241)、「01h」でない場合には、レコード番号誤りとして異常応答を送信して(ST242)、追記の処理を終了する。
【0184】
一方、ST241にて「RecNo」が「01h」であった場合には、以下ST243〜ST247の過程、即ち、図11に示したST81〜ST85又は図17のST181〜ST185と同様の手順を踏むものであり、ここでの説明は省略する。
【0185】
引続き、ST247にて「RecStart」が「FFh」ではなかった場合には、まず、「FileAddr」を先頭アドレスとする循環データファイル管理情報内のレコード長を「RecLen」、レコード数を「RecNum」とおく(ST248)。
【0186】
次いで、追記の対象となるレコードのアドレス「RecAddr」を、
RecAddr=DataAddr+RecLen×{(RecStart+RecNum−2)mod RecNum}
の式により算出して(ST249)、「RecAddr」から長さ「RecLen」分の領域に「WriteData」を書き込む(ST250)。
【0187】
その後、新規に更新するための新しい循環開始レコード番号「RecNum´」を、
RecNum´=(RecStart+RecNum−2)mod RecNum−1
の式を用いて算出する(ST251)。
【0188】
続いて、「FileAddr」から始まる循環データファイル管理情報内の循環開始レコード番号を「RecNum´」に更新書き換えて(ST252)、ST252の完了後に正常終了の通知として、情報処理端末γに応答を送信して(ST253)、追記処理を終了する。
【0189】
一方、ST247にて「RecStart」が「FFh」であった場合には、まず、「DataAddr」から始まるレコードの第3バイトから第4バイトを共有データファイルの属するディレクトリのディレクトリIDを「LDirID」、第5バイトと第6バイトを共有データファイルのファイルIDを「LFileID」とおき(ST254)、循環データファイルから共有レコードの追記処理を実行する(ST255)。
【0190】
図21は、本方法例に係る循環データファイルからの共有レコード追記手順を示すフローチャートである。
引続き、ST255の循環データファイルの追記手順について詳細に説明するが、同図に示したST261〜ST269については、図18に示したST201〜ST209と同様の処理であり、その説明を省略するものであるが、ST266において世代番号を比較した際、世代番号が小さい共有データファイル管理情報の先頭アドレスを「LFileAddr´」とする。
【0191】
ST269の後、「LBBlockAddr」を先頭アドレスとするブロック群が読み出せない場合には、「LBBlockAddr」から始まるブロック群の内容を「LBlockAddr」を先頭アドレスとするブロック群と、一時ファイルデータとに複製し(ST270)、一方、読み出せる場合には、この「LBlockAddr」から始まるブロック群の内容を一時ファイルデータに複製する(ST271)。
【0192】
ST270又はST271を経て、一時データファイルに複製がされた後に、この一時ファイルデータ内のレコード番号「LRRecNo」で示されるレコードの先頭アドレス「LTRecAddr」を、
LTRecAddr=LRecLen×(LRRecNo−1)
の式より算出する(ST272)。
【0193】
その後、一時ファイルデータ内においてST272にて算出した「LTRecAddr」を先頭アドレスとしてレコード長「LRecLen」分の領域に「WriteData」を書き込み(ST273)、また、この一時データファイルの内容を「LBBlockAddr」から始まるブロック群に複製する(ST274)とともに、「LFileAddr」から始まる共有データファイル管理情報を一時共有データファイル管理情報に複製する(ST275)。
【0194】
続いて、新規に更新するための新しい循環開始ブロック番号「LStartBlock´」を、
(LStartBlock+LRRecNum−1)mod(LRRecNum+1)
の式を用いて算出する。
【0195】
加えて、この共有データファイル管理情報内の既存の世代番号「LHNum」に対して新しい世代番号「LHNum´」を、
LHNum´=LHNum+1
の式より算出して(ST276)、一時共有データファイル管理情報内の循環開始ブロック群番号を「LStartBlock´に、世代番号を「LHNum´」に変更する(ST277)。
【0196】
その後、一時共有データファイル管理情報を、ST266にて決定した「LFileAddr´」を先頭アドレスとするブロック群に複製して(ST278)、以上、ST278までの処理が完了した後に、情報処理端末γに正常終了の通知として応答を送信し(ST279)、循環データファイル内の共有レコード追記処理を終了する。
【0197】
続いて、図22は、本方法例に係る共有データファイルの追記手順を示すフローチャートである。同図に示すように、前述のST142にて共有データファイルf3bを追記する処理を実行するにあたっては、まず、ST281〜ST287までの手順は図19に示したST221〜ST227までの手順と同様のものであり、その説明は省略するものであるが、ST284において世代番号を比較した際に、世代番号が小さい共有データファイル管理情報の先頭アドレスを「LFileAddr´」とする。
【0198】
ST287において論理積の解「Ans」が「00000000b」であった場合には、ST228同様に、情報処理端末γに対して、アクセス権不足による異常終了である旨通知する応答を為す(ST288)。一方、「00000000b」ではない場合には、「FileAddr」を先頭アドレスとする共有データファイル管理情報内の循環開始ブロック群番号を「StartBlock」、データアドレスを「DataAddr」、レコード数を「RecNum」、レコード長を「RecLen」、ブロック群長を「BlockLen」、循環レコード数を「RRecNum」、循環レコード番号を「RRecNo」とおく(ST289)。
【0199】
続いて、先に引数として受け渡された追記対象を示す「RecNo」が、循環レコード番号「RRecNo」と等しいものであるかどうか確認して(ST290)、等しくない場合は、一般レコードの追記手順を実行して(ST291)、等しい場合には、循環レコードの追記を行う(ST292)。ここで、ST291の手順は図19に示したST230〜ST237の手順に従い実行可能なものである。
【0200】
図23は、共有データファイルの循環レコードの追記手順を示すフローチャートである。図22に示したST292については、図23を参照して説明する。同図に示すとおり、まず、最新ブロック群の先頭アドレス「BlockAddr」を、
BlockAddr=DataAddr+BlockLen×(StartBlock−1)
の式より算出する。
【0201】
さらに、バックアップブロック群の先頭アドレス「BBlockAddr」を、
BBlockAddr=DataAddr+BlockLen×{(StartBlock+RRecNum−1)mod(RRecNum+1)}
の式を用いて算出する(ST301)。
【0202】
次いで、算出した「BlockAddr」を先頭アドレスとするブロック群が読み出せるかどうかを確認して(ST302)、読み出せない場合には、「BBlockAddr」を先頭アドレスとするブロック群の内容を、「BlockAddr」から始まるブロック群と一時ファイルデータとに複製する(ST303)。一方、読み出せる場合には、この「BlockAddr」から始まるブロック群の内容を一時ファイルデータに複製する(ST304)。
【0203】
ST303又はST304にて複製された一時ファイルデータ内のレコード番号「RRecNo」で示されるレコードの先頭アドレス「TRecAddr」を、
TRecAddr=RecLen×(RRecNo−1)
の式より算出して(ST305)、「TRecAddr」からレコード長「RecLen」分の領域に「WriteData」を書き込む(ST306)。
【0204】
さらに、一時共有データファイル管理情報の内容を「BBlockAddr」から始まるブロック群に複製した(ST307)後に、「FileAddr」から始まる共有データファイル管理情報の内容を一時共有データファイル管理情報に複製する(ST308)。
【0205】
続いて、新規に更新する新しい循環開始ブロック群番号「StartBlock´」を、
StartBlock´=(StartBlock+RRecNum−1)mod(RRecNum+1)
の式を用いて算出する。
【0206】
さらに合わせて、既存の世代番号「LHNum」に対して新しい世代番号「LHNum´」を、
LHNum´=LHNum+1
の式より算出して(ST309)、一時共有データファイル管理情報内の循環開始ブロック群番号を「StartBlock´」に、世代番号を「LHNum´」にそれぞれ更新する(ST310)。
【0207】
その後、一時共有データファイル管理情報をST284にて決定した「LFileAddr´」を先頭アドレスとするブロック群に複製して(ST311)、ST311まで完了した後に、正常終了の通知として応答を情報処理端末γに送信して(ST312)、追記処理を終了する。
【0208】
以上、本発明の実施の形態につき、装置例及び方法例を挙げて説明したが、本発明は、必ずしも上述した手段及び手法にのみ限定されるものではなく、後述の効果を有する範囲内において、適宜、変更実施可能なものである。
【0209】
【発明の効果】
以上、詳細に説明したように、本発明によれば、EEPROMなど一般的な不揮発性メモリを搭載したICカードにおいて、複数のファイルに分散したデータを一つの共有データファイルとして一度読み書きすることにより、その処理時間を大幅に短縮することが可能となり、処理時間を延ばすことなくカードに蓄積するデータの読み書き頻度やデータの長さに応じて、複数のファイルにデータを分散させて管理することができる。
【0210】
また、ICカードに複数の事業者が相乗りしている交通機関の切符や、公共機関が発行するIDカードに民間が相乗りするなどのように、一枚のICカードに複数の事業者のサービスを載せる場合にも、共通するデータを共有データファイルとして利用することで、処理時間を短縮することができる。
【0211】
さらに、非接触方式のICカードにデータを書き込む途中に、電力が無くなる場合に、必要な書き込み保証の機能を共有データファイルに対して実現することにより、交通機関の切符として利用される場合等、リーダライタにICカードをかざして通るときなど、電力供給が不安定な利用場面でも、安心してデータの書き換えが可能となる。
【0212】
しかも、共有データファイル以外のデータファイルは、国際規格ISO/IEC7816に準拠したICカードと互換性を保つことが可能であり、ICカードの不揮発性メモリに、例えば本発明に基づくプログラムを追加することにより、従来機能を拡張することが可能となる。
【図面の簡単な説明】
【図1】本発明の装置例に係るICカードの機能構成図及び、それを動作させるためのリーダライタと情報処理端末の機能構成図である。
【図2】図1に示したEEPROMにおいて採用されるデータファイル構造を示す図である。
【図3】同上、EEPROMにおけるディレクトリ及びデータファイルの管理情報の論理構成を示す図である。
【図4】同上、EEPROMの物理構成図である。
【図5】同上、RAMにおけるチャネル、一時共有データファイルの管理情報、及び一時ファイルデータの論理構成を示す図である。
【図6】本発明の方法例に係るディレクトリの選択手順を示すフローチャートである。
【図7】同上、鍵の照合手順を示すフローチャートである。
【図8】同上、データファイルの読み出し手順を示すフローチャートである。
【図9】同上、一般データファイルの読み出し手順を示すフローチャートである。
【図10】同上、一般データファイルからの共有レコード読み出し手順を示すフローチャートである。
【図11】同上、循環データファイルの読み出し手順を示すフローチャートである。
【図12】同上、循環データファイルからの共有レコード読み出し手順を示すフローチャートである。
【図13】同上、共有データファイルの読み出し手順を示すフローチャートである。
【図14】同上、データファイルの追記・書き換え手順を示すフローチャートである。
【図15】同上、一般データファイルの追記・書き換え手順を示すフローチャートである。
【図16】同上、一般データファイルからの共有レコードの追記・書き換え手順を示すフローチャートである。
【図17】同上、循環データファイルの書き換え手順を示すフローチャートである。
【図18】同上、循環データファイルからの共有レコード書き換え手順を示すフローチャートである。
【図19】同上、共有データファイルの書き換え手順を示すフローチャートである。
【図20】同上、循環データファイルの追記手順を示すフローチャートである。
【図21】同上、循環データファイルからの共有レコード追記手順を示すフローチャートである。
【図22】同上、共有データファイルの追記手順を示すフローチャートである。
【図23】同上、共有データファイルの循環レコードの追記手順を示すフローチャートである。
【符号の説明】
α…ICカード
β…リーダライタ
γ…情報処理端末
1…ICチップ
2…アンテナ
11…CPU
12…ROM
13…RAM
14…EEPROM
15…RF部
d0…ディレクトリ(ルートディレクトリ)
d1,d2,d3…ディレクトリ
f1,f2…一般データファイル
f3a…循環データファイル
f3b…共有データファイル
k1,k2,k3…鍵ファイル
Claims (10)
- 複数バイトを書き換え単位とする不揮発性を有したメモリを内蔵するICカードに適用されて、それぞれ識別可能なファイル識別子が付与されたデータファイルが保持しかつ、前記メモリに複数同一の長さで配置されそれぞれレコード番号により識別可能なレコードを参照する場合に、前記データファイルの保持する前記レコードから共有データファイルが備える共有レコードを参照するメモリ管理方法であって、
前記ICカードにおいて、
前記ファイル識別子と、前記レコード番号と、を引数とした読み出し、書き換え又は追記の実行命令を受信し、
前記データファイルが保持する前記レコード番号により識別された1以上の前記レコードと、同一のレコード長を持つ前記共有データファイルの共有レコードを参照して、
参照された当該共有レコードに記録されたデータに対して、前記実行命令に対応した読み出し、書き換え又は追記の実行を可能に当該データファイルの管理を行う、
ことを特徴とするICカードにおけるメモリ管理方法。 - 前記共有データファイルの共有レコードの参照は、
前記データファイルにおいて、保持する前記レコード毎に、前記共有レコードを参照先として設定されたレコード共有状態を示すレコード識別子を随時更新可能に格納する参照管理情報を保持しておき、
当該レコード識別子から、当該レコードが当該共有レコードを参照先とするレコード共有状態に設定された場合に、
当該レコードのデータとして、該当する当該共有レコードを参照する、
ことを特徴とする請求項1に記載のICカードにおけるメモリ管理方法。 - 前記読み出し、書き換え又は追記の実行は、
前記参照管理情報中に、合わせて前記レコードの当該参照先として設定された前記共有データファイルの前記ファイル識別子と、当該参照先の前記共有レコードの前記レコード番号とを格納しておき、
前記共有レコード状態を示した前記レコードの当該参照管理情報が読み出されたときに、当該ファイル識別子と、当該レコード番号から特定される当該共有データファイルの当該共有レコードに対して前記実行命令に対応した読み出し、書き換え又は追記を実行する、ことを特徴とする請求項2に記載のICカードにおけるメモリ管理方法。 - 前記読み出し、書き換え又は追記の実行は、
前記参照管理情報中に、合わせて前記レコードへアクセス権を管理するアクセス権情報を保持しておき、
前記共有レコード状態を示した前記レコードへの当該参照管理情報が読み出されたときに、
先に受信した前記実行命令に対して、前記アクセス権情報を基に、当該レコードへのアクセス権を確認して、
当該アクセス権を満たす場合にのみ、当該レコードに対する当該実行命令に対応した読み出し、書き換え又は追記を実行する、
ことを特徴とする請求項2又は3に記載のICカードにおけるメモリ管理方法。 - 前記レコードの参照は、
予め、前記複数のデータファイルを、前記ICカード内において唯一のディレクトリ識別子が付与されたディレクトリに属するツリー構造として格納しておくとともに、前記実行命令の対象として選択指定された当該データファイルの属する当該ディレクトリの当該ディレクトリ識別子を、チャネル番号により識別可能なチャネル管理情報として随時更新可能に保持しておき、
前記チャネル番号と前記ファイル識別子と前記レコード番号を受信したときに、当該チャネル番号により特定される当該チャネル管理情報から、前記ディレクトリ識別子を読み出し、
当該ディレクトリ識別子から特定される前記ディレクトリに属する前記データファイルを、前記ファイル識別子から特定し、
当該データファイルから、前記レコード番号により特定される前記レコードを参照する、ことを特徴とする請求項1、2、3又は4に記載のICカードにおけるメモリ管理方法。 - 複数バイトを書き換え単位とする不揮発性を有したメモリを内蔵するICカードであって、
複数同一の長さで配置されそれぞれレコード番号により識別可能なレコードからなり、それぞれ識別可能なファイル識別子が付与されたデータファイルを格納保持する前記メモリと、
当該データファイル内の前記レコードと同一のレコード長を有する共有データファイル内の共有レコードを当該データファイルのデータとして参照するデータファイル参照手段と、
前記ファイル識別子と前記レコード番号とから、当該データファイル参照手段により特定された前記データに対して読み出し、書き換え又は追記の実行命令を受信して、当該実行命令に従い対応する読み出し、書き換え又は追記の当該実行命令を行う実行命令処理手段と、を具備する、
ことを特徴とするICカード。 - 前記データファイルは、
保持する前記レコード毎に、前記データファイル参照手段により前記共有レコードを参照先として設定されたレコード共有状態を示すとともに、随時更新可能なレコード識別子を格納する参照管理情報を具備する、
ことを特徴とする請求項6に記載のICカード。 - 前記参照管理情報は、
前記参照先の前記共有データファイルの前記ファイル識別子と、当該参照先の前記共有レコードのレコード番号とを含む、
ことを特徴とする請求項7に記載のICカード。 - 前記参照管理情報は、
前記レコードに対するアクセスの許否を確認可能に格納されたアクセス権情報を含む、
ことを特徴とする請求項7又は8に記載のICカード。 - 前記メモリは、
前記データファイルを、前記ICカード内において唯一のディレクトリ識別子が付与されたディレクトリに属するツリー構造として保持管理して、
前記ディレクトリ識別子と識別可能に付与されたチャネル番号とを、新規に同一の当該チャネル番号とともに他の前記ディレクトリ識別子を受信して更新されるまで継続保持して、前記データファイルが属する前記ディレクトリの選択状況を示すチャネル管理情報を保有する、
メモリ管理手段を具備する、
ことを特徴とする請求項6、7、8又は9に記載のICカード。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003104978A JP4245959B2 (ja) | 2003-04-09 | 2003-04-09 | Icカードにおけるメモリ管理方法、及びicカード |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003104978A JP4245959B2 (ja) | 2003-04-09 | 2003-04-09 | Icカードにおけるメモリ管理方法、及びicカード |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004310573A JP2004310573A (ja) | 2004-11-04 |
JP4245959B2 true JP4245959B2 (ja) | 2009-04-02 |
Family
ID=33467618
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003104978A Expired - Lifetime JP4245959B2 (ja) | 2003-04-09 | 2003-04-09 | Icカードにおけるメモリ管理方法、及びicカード |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4245959B2 (ja) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101272642B1 (ko) * | 2005-08-03 | 2013-06-10 | 쌘디스크 코포레이션 | 플래시 메모리시스템 내의 데이터 저장 용량의 리클레이밍 |
US7949845B2 (en) | 2005-08-03 | 2011-05-24 | Sandisk Corporation | Indexing of file data in reprogrammable non-volatile memories that directly store data files |
US7480766B2 (en) * | 2005-08-03 | 2009-01-20 | Sandisk Corporation | Interfacing systems operating through a logical address space and on a direct data file basis |
US7409489B2 (en) | 2005-08-03 | 2008-08-05 | Sandisk Corporation | Scheduling of reclaim operations in non-volatile memory |
JP4547028B2 (ja) * | 2005-08-03 | 2010-09-22 | サンディスク コーポレイション | ブロック管理を伴う不揮発性メモリ |
US7669003B2 (en) | 2005-08-03 | 2010-02-23 | Sandisk Corporation | Reprogrammable non-volatile memory systems with indexing of directly stored data files |
US7814262B2 (en) | 2005-10-13 | 2010-10-12 | Sandisk Corporation | Memory system storing transformed units of data in fixed sized storage blocks |
JP5329884B2 (ja) * | 2008-09-18 | 2013-10-30 | 株式会社東芝 | 携帯可能電子装置および携帯可能電子装置におけるデータ処理方法 |
JP2011048437A (ja) * | 2009-08-25 | 2011-03-10 | Alpine Electronics Inc | 文字列検索システム、文字列データベースのデータ構造及びナビゲーション装置 |
-
2003
- 2003-04-09 JP JP2003104978A patent/JP4245959B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2004310573A (ja) | 2004-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4322021B2 (ja) | メモリカード | |
US7127570B2 (en) | Proximity communication system, proximity communication method, data managing apparatus and data management method, storage medium, and computer program | |
US7653796B2 (en) | Information recording medium and region management method for a plurality of recording regions each managed by independent file system | |
TWI272540B (en) | Portable data recording medium | |
KR970004106B1 (ko) | Ic 카드 | |
US5608902A (en) | File management system for memory card | |
JP3721725B2 (ja) | 情報処理方法および情報処理装置 | |
US6687800B1 (en) | Chip card comprising means and method for managing a virtual memory and associated communication method | |
JP4245959B2 (ja) | Icカードにおけるメモリ管理方法、及びicカード | |
KR20140108666A (ko) | 스마트 카드의 비휘발성 메모리에 데이터 쓰기 | |
US5929428A (en) | File managing method requiring a change in key data and IC card device using the method | |
EP1450235B1 (en) | Memory device | |
CN101930551A (zh) | 数据处理装置和方法 | |
US20050216684A1 (en) | Information recording medium, data processing apparatus, and recording region setting method of information recording medium | |
JP4742469B2 (ja) | 複数のosを用いるicカード、icカード処理装置および処理方法 | |
JPH1139450A (ja) | Icカード | |
JPH10105472A (ja) | メモリのアクセス管理方法 | |
KR100977640B1 (ko) | 거래하는 동안 메모리 카드의 데이터를 수정하기 위한 방법 | |
JP7043886B2 (ja) | 電子情報記憶媒体、icカード、電子情報記憶媒体による情報処理方法及びos | |
JP2004185242A (ja) | Icカード通信方式切換方法及びicカード | |
JP7582527B1 (ja) | 電子情報記憶媒体、icチップ、レコード処理方法、及びプログラム | |
JP7468765B1 (ja) | 電子情報記憶媒体、icチップ、icカード、データ一括更新方法、及びプログラム | |
JP7438432B1 (ja) | 電子情報記憶媒体、icチップ、icカード、レコード書き込み方法、及びプログラム | |
JP2012138125A (ja) | データの安全な書き込み | |
JP3483925B2 (ja) | Icカード |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050719 |
|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7426 Effective date: 20070626 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20070807 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20071109 |
|
RD05 | Notification of revocation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7425 Effective date: 20080418 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081028 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20081209 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090106 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090107 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4245959 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120116 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130116 Year of fee payment: 4 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
EXPY | Cancellation because of completion of term |