(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0028】
<第1実施形態>
[ICカードの記憶媒体におけるデータ構造]
以下、本発明の実施形態としてのICカード(記憶媒体装置の一例)とリーダライタ(データ読出装置の一例)とについて図面を参照して説明する。
本実施形態のICカードは、内部に記憶媒体を備え、リーダライタなどの外部通信装置と通信が可能に構成される。リーダライタとの通信が可能とされることで、リーダライタからデータ読み出しの指示が行われた場合、ICカードは、記憶媒体からデータを読み出し、読み出したデータをリーダライタに出力する。
【0029】
本実施形態において、ICカードの記憶媒体にはファイル単位で管理されるようにしてデータの書き込み、読み出しが行われる。
ICカードの記憶媒体に書き込まれるファイルは、DF(Dedicated File:専用ファイル)あるいはEF(Elementary File:基礎ファイル)である。
DFは、下位のEFやDFをグループ化するためのファイルである。
EFは、データを格納するファイルである。EFは、IEF(Internal Elementary File:内部基礎ファイル)とWEF(Work Elementary File:作業基礎ファイル)との2つの種別に分けられる。
IEFは、セキュリティのためのキーデータが格納されるファイルである。IEFは、セキュリティ上、ICカードから外部への出力が不可のファイルであり、ICカードの内部においてのみ使用される。
WEFは、ICカードから外部への出力が可能なファイルである。WEFは、例えば、ユーザに付与されたポイントに関する情報などの一般的なデータを格納する。
【0030】
図1から
図3を参照して、ICカードの記憶媒体のユーザデータ領域AR3に格納される基本的データ構造と、本実施形態に至った経緯について説明する。
図1は、本実施形態のICカードが備える記憶媒体203の記憶領域についてのマッピング例を示している。同図に示すように、記憶媒体203の記憶領域は、ファイル管理領域AR1、システム領域AR2及びユーザデータ領域AR3を備える。
【0031】
ファイル管理領域AR1は、システム領域AR2、ユーザデータ領域AR3に記憶されるデータをファイル単位で管理するファイル管理情報が記憶される領域である。一例として本実施形態におけるファイル管理領域AR1には、FAT(File Allocation Table)ファイルシステムに対応したファイル管理情報が格納されればよい。
【0032】
システム領域AR2は、OS(Operating System)や各種設定情報などをはじめとするシステム情報が記憶される領域である。
ユーザデータ領域AR3は、アプリケーションが使用するユーザデータが記憶される領域である。ファイルのデータは、ユーザデータ領域AR3に記憶される。
なお、記憶媒体203の記憶領域においては、ファイル管理領域AR1、システム領域AR2及びユーザデータ領域AR3以外の領域が含まれていてもよい。
【0033】
図2は、EFであるファイルFLの構造例を示している。同図に示すように、ファイルFLは、ファイルヘッダとデータ領域とを含む構造である。
ファイルヘッダには、ファイルに関連する所定のパラメータが格納される。
データ領域には、ファイルとしてのデータが格納される。本実施形態において、データ領域に格納されるファイルは、固定長によるレコード(単位データ格納領域の一例)が配置されるレコード構造を有する。このようなレコード構造においては、レコードごとにデータ(単位データの一例)が格納される。レコードに格納されるデータ(レコードデータ)は、以下に例示するように、それぞれ所定の定義に従った内容を有する。
【0034】
ここで、同図に示すファイルFLを記憶するICカードはクレジットカードであって、クレジットカードとしてICカードが記憶すべき情報には氏名、住所、カード番号が含まれる場合を例に挙げる。
同図には、レコード#1に氏名のデータが格納され、レコード#2に住所のデータが格納され、レコード#3にカード番号が格納された例が示されている。
このように、1つのファイルは1以上のレコードにより形成され、各レコードには、所定の定義に従った種別のデータが格納される。即ち、データをレコード単位で書き込むことにより、1つのファイルに複数の異なる種別のデータをまとめて格納することができる。
【0035】
ただし、上記のようにファイルに書き込まれる種別ごとのデータの間で、例えばセキュリティのために、アクセス権が異なるような場合がある。ここでは、具体例として、同図に例示したようにアクセス権が異なる態様を例に挙げる。
即ち、同図のレコード#1〜#3に格納される氏名、住所、カード番号の各データのうち、氏名のデータとカード番号のデータは、例えばICカードのカード面にも印字されていることから、機密性を要さないデータである。そこで、氏名のデータとカード番号のデータについては、特にアクセス権が設定されない(アクセス権無し)。
一方、レコード#2に格納される住所は、個人情報の1つであって、クレジットカードであるICカード200のカード面には印字されていない。従って、住所のデータは個人情報として機密性を要するデータである。そこで、住所のデータについては、所定のアクセス権を有するユーザのみがアクセス可能なアクセス権が設定される(アクセス権有り)。
【0036】
ICカードの記憶媒体203に記憶されるデータについてのアクセス権はファイル単位で指定されることが定められている。このために、上記のように、氏名、カード番号、住所の各データについて、アクセス権無しとアクセス権有りとで異なるアクセス権が設定された場合には、
図3のようにファイルへのデータの書き込みを行う。
【0037】
図3においては、ファイルFL1とファイルFL2の2つのファイルが示されている。ファイルFL1とファイルFL2のうち、ファイルFL1は、アクセス権は特に設定されておらず、いかなるユーザであってもアクセスすることができる。
このようにアクセス権が設定されていないファイルFL1においては、氏名、住所、カード番号のデータのうち、アクセス権が設定されていない氏名とカード番号のデータがそれぞれレコード#1とレコード#2とに書き込まれている。
【0038】
また、ファイルFL2は、所定のアクセス権を有するユーザのみがアクセス可能なアクセス権が設定されており、アクセス権を有するユーザによる認証が成立しなければアクセスすることができないファイルである。そのうえで、ファイルFL2については、住所のデータへのアクセスが許可されたユーザに対応するアクセス権が設定されたうえで、氏名、住所、カード番号のデータのうち、住所のデータがレコード#1に書き込まれている。
【0039】
このように作成されたファイルFL1とファイルFL2とを記憶媒体203に記憶させておくことによって、住所のデータにアクセスできるユーザを制限できる。つまり、氏名とカード番号のデータについては全てのユーザが読み出し可能である。一方、住所のデータについてはアクセス権を有するユーザは読み出せるが、アクセス権を有さないユーザによっては読み出せないようにできる。
【0040】
図2にて例示したように、クレジットカードであるICカードにおいて、氏名、住所、カード番号のデータは、例えばアクセス権の設定に相違が無ければ、1つのファイルにまとめて格納されてもよいファイルである。
しかし、
図3にてファイルFL1、FL2として示したように、例えば氏名、カード番号のデータと、住所のデータとでアクセス権の設定が異なる場合には、アクセス権有りのデータとアクセス権無しのデータとのそれぞれに応じて複数のファイルが必要になる。
【0041】
図3のようにファイルが複数になるのに応じては、ファイルごとに対応して作成されるファイルヘッダやファイルシステムのディレクトリ情報(ディレクトリエントリ)などのファイルについての管理情報も複数に増加する。このために、同じ内訳のデータを格納するために必要な容量としては、
図2のように1つのファイルにデータをまとめる場合よりも大きくなってしまい、例えば記憶媒体203の記憶容量の効率的な使用の妨げとなってしまう。
【0042】
[本実施形態のファイルにおけるデータ構造]
そこで、本実施形態としては、ICカードの記憶媒体203において、
図4に示す構造によりファイルのデータが書き込まれるようにする。同図の説明にあたり、
図2にて説明したのと同様に、氏名、住所、カード番号の各データのうち、氏名、カード番号のデータについてはアクセス権無しが設定され、住所のデータについてはアクセス権有りが設定されている場合を例に挙げる。
【0043】
図4に示すファイルFLのデータ領域における各レコードは、先頭の1バイトに暗号状態情報が書き込まれ、続く2バイト目以降にデータ(レコードデータ)が書き込まれる構造を有する。
暗号状態情報は、同じレコード#1に格納されるレコードデータの暗号状態を示す。ここでの暗号状態は、暗号化が施されていない平文の状態と、暗号化が施されて発行装置から送信されたままの暗号文(原暗号文)の状態のうちのいずれかである。
この場合の暗号状態情報は、00hの値により平文の状態であることを示し、01hの値により暗号文の状態であることを示している。
【0044】
具体的に、レコード#1に格納されるべき氏名のデータはアクセス権無しが設定されたレコードデータである。このようなアクセス権の設定に応じて、レコード#1においては、先頭の1バイトに00hの値の暗号状態情報が格納され、続く2バイト目以降において、平文による氏名のデータが格納される。
また、レコード#2に格納されるべき住所のデータはアクセス権有りが設定されたレコードデータである。このようなアクセス権の設定に応じて、レコード#2においては、先頭の1バイトに01hの値の暗号状態情報が格納され、続く2バイト目以降において、原暗号文による住所のデータが格納される。
また、レコード#3に格納されるべき氏名のデータはアクセス権無しが設定されたレコードデータである。このようなアクセス権の設定に応じて、レコード#3においては、先頭の1バイトに00hの値の暗号状態情報が格納され、続く2バイト目以降において、平文による氏名のデータが格納される。
なお、同図においては、暗号状態情報が1バイト(8ビット)である場合を例に挙げているが、暗号状態情報のサイズとしては特に限定されない。
【0045】
図4に示した構造により書き込まれるファイルのデータ(暗号状態情報、レコードデータ)は、例えばICカードの発行を行う発行装置によって以下のように書き込みが行われる。発行装置は、ICカード200に対してファイルへのデータの書き込みを行うに先だってファイル生成を行う。つまり、発行装置は、ICカード200の記憶媒体203におけるユーザデータ領域AR3にファイル格納領域が作成されるようにするための制御を実行する。
【0046】
発行装置は、1つのファイルに対応するファイル格納領域の作成をICカード200に指示するためにICカード200に対してファイル生成コマンドを送信する。
図5は、ファイル生成コマンドの構造例を示している。
同図に示すファイル生成コマンドは、コマンドヘッダCH、第1パラメータP1、第2パラメータP2、データ長Lc、データ部Dataが配置された構造を有する。
コマンドヘッダCHは、当該コマンドの種別を示す。ファイル生成コマンドの場合、コマンドヘッダCHには、ファイル生成コマンドであることを示す所定値が格納される。
第1パラメータP1、第2パラメータP2による領域は、コマンドヘッダCHが示すコマンドの種別に応じた所定のパラメータを格納する。
データ長Lcは、データ部Dataのデータ長(サイズ)を示す。
ファイル生成コマンドにおけるデータ部Dataは、ファイル種別情報、サイズ情報、ファイル識別子、初期値情報及び暗号状態情報を含む。
【0047】
ファイル種別情報は、作成対象のファイル格納領域が対応するファイルの種別が、例えばDF、IEF、WEFのうちのいずれであるのかを示す情報である。即ち、ファイル種別情報がDFを示す場合、当該ファイル生成コマンドは、DFのファイル格納領域の作成を指示する。また、ファイル種別情報がIEFを示す場合、当該ファイル生成コマンドは、IEFのファイル格納領域の作成を指示する。また、ファイル種別情報がWEFを示す場合、当該ファイル生成コマンドは、WEFのファイル格納領域の作成を指示する。
サイズ情報は、作成対象のファイル格納領域のサイズを示す情報である。
ファイル識別子は、作成対象のファイル格納領域に格納されるべきEFのファイル識別子を示す。
初期値情報は、ファイル格納領域の作成にあたって書き込むべき初期値を示す情報である。
【0048】
暗号状態情報は、作成対象のファイル格納領域に格納されるファイルに含まれるレコードごとに対応付けられた情報である。1つの暗号状態情報は、対応付けされたレコードに格納されるレコードデータの暗号状態を示す。
【0049】
図6は、ファイル生成コマンドのデータ部Dataに含まれる暗号状態情報の内容例を示している。同図に示す暗号状態情報は、
図4に示したファイルFLの内容に対応している。
同図に示すように、ファイル生成コマンドのデータ部Dataに含まれる暗号状態情報は、レコード番号ごとに対応付けられている。
レコード#1に対応付けられた暗号状態情報は、平文状態を示す00hである。レコード#2に対応付けられた暗号状態情報は、原暗号文を示す01hである。レコード#3に対応付けられた暗号状態情報は、平文状態を示す00hである。
【0050】
このように、ファイル生成コマンドのデータ部Dataに含まれる暗号状態情報は、対応のレコードに格納すべきデータの暗号状態を指示する。
つまり、ファイル生成コマンドのデータ部Dataに含まれる00hの暗号状態情報は、発行装置が暗号化して送信したときのままの原暗号文の状態のレコードデータを対応のレコードに格納すべきことを指示する。
また、ファイル生成コマンドのデータ部Dataに含まれる01hの暗号状態情報は、平文の状態のデータを対応のレコードに格納すべきことを指示する。
【0051】
発行装置から送信されたファイル生成コマンドは、ICカードにて受信される。ファイル生成コマンドが受信されると、本実施形態のICカードは、データ部Dataから取得したサイズ情報が示すサイズによる領域をユーザデータ領域AR3から確保する。そして、ICカードは、確保した領域がデータ部Dataから取得したファイル種別情報により示されるファイルの領域として管理されるようにファイル管理情報(例えばFATなど)を更新する。なお、ファイル管理情報としてのデータは、ファイルのデータとは異なるものであり、従ってレコードに格納される構造を有さなくともよい。
【0052】
また、ICカードは、上記のように新規に登録されたファイルの領域におけるファイルヘッダと、データ領域に初期値を書き込む処理を実行する。ファイルヘッダと、データ領域に書き込むべき初期値は、ファイル生成コマンドのデータ部Dataに格納される初期値情報によって指定されている。また、データ領域は固定長のレコード単位が連結して形成されている。このために、データ領域に対応する初期値情報はレコードごとに設けられる。
【0053】
以下、
図7を参照して、本実施形態のICカードによるファイルFLへの初期値の書き込み手順例について説明する。
先ず、ICカードは、ファイルヘッダの初期値を指定する初期値情報が示す初期値を、ファイルFLにおけるファイルヘッダに書き込む。
次に、ICカードは、ファイルFLのデータ領域におけるレコード#1に対して、初期値を書き込む。レコード#1への初期値の書き込みにあたり、先ず、レコード#1の領域の先頭の1バイトに、レコード#1に対応する暗号状態情報の値である00hを書き込む。次に、ICカードは、レコード#1の2バイト目以降に、レコード#1の初期値情報が示す初期値を書き込む。
また、ICカードは、データ領域におけるレコード#2の領域において、先頭の1バイトに、レコード#2に対応する暗号状態情報の値である01hを書き込み、2バイト目以降に、レコード#2の初期値情報が示す初期値を書き込む。
また、ICカードは、データ領域におけるレコード#3の領域において、先頭の1バイトにレコード#3に対応する暗号状態情報の値である00hを書き込み、2バイト目以降に、レコード#3の初期値情報が示す初期値を書き込む。
以降同様にして、ICカードは、レコード#3以降の各領域において、先頭の1バイトには、当該レコードに対応付けられた暗号状態情報の値を書き込み、2バイト目以降に対応のレコード番号の初期値情報が示す初期値を書き込む。
【0054】
このようにファイル生成が行われることで、記憶媒体203のユーザデータ領域AR3上に確保されたファイルFLの領域において、データ領域における各レコードには暗号状態情報とレコードデータの初期値とが書き込まれる。このように初期値の書き込み時においてレコードに暗号状態情報が書き込まれることにより、レコードと暗号状態情報との対応付けが行われる。
【0055】
そして、上記のようにファイル生成が行われた後において、発行装置は、ICカードにおいて作成されたファイル格納領域におけるファイルヘッダと、データ領域における各レコードに、アプリケーションに応じたデータの書き込みを行う。
【0056】
ICカードにファイルのデータの書き込みを行う際、発行装置は、書込データとしてのレコードデータを格納したデータ書き込みコマンドをICカードに対して送信する。
本実施形態の発行装置は、レコード単位に対応するデータ書き込みコマンドをICカードに送信する。なお、ファイルヘッダは、1つのレコードとして扱われればよい。
データ書き込みコマンドには書込データとしてレコードに格納すべきデータが格納される。本実施形態の発行装置は、データ書き込みコマンドに格納する書込データについては、全て所定の鍵により暗号化されており、暗号文の状態である。
このように発行装置からICカードに送信する書込データについて全て暗号化することによっては、例えばデータ書き込みに際してのデータの傍受に対するセキュリティを高めることができる。
【0057】
ここで、レコード#1、#2、#3のそれぞれに、
図4と同様の平文による氏名のデータ、原暗号文による住所のデータ、平文によるカード番号のデータを書き込む場合の手順例について、再度、
図4を参照して説明する。
【0058】
発行装置は、先ず、ファイルヘッダ、レコード#1、レコード#2、レコード#3・・・・の順に従って、データ書込コマンドを送信する。
ICカードは、ファイルヘッダのデータ書込コマンドが受信されると、受信したデータ書込コマンドからファイルヘッダのデータを取得する。ICカードは、ファイルヘッダのデータについては例えば平文によりファイルヘッダに書き込むようにされている。従って、この場合のICカードは、データ書込コマンドから取得した暗号文の状態のファイルヘッダを復号して平文化し、平文によるデータをファイルヘッダの領域に書き込めばよい。
【0059】
一方、ファイルのデータ領域については、レコードごとに平文の状態と暗号文の状態のいずれのデータを格納すべきなのかは、ファイルに応じて異なる。
そこで、ICカードは、レコードに対しては以下のようにレコードデータの書き込みを行う。
【0060】
先ず、レコード#1に対応するデータ書込コマンドを受信するのに応じて、ICカードは、レコード#1の先頭の1バイトに書き込まれている暗号状態情報の値が何であるのかを認識する。この場合、レコード#1の先頭の1バイトに書き込まれている暗号状態情報の値は00hであり、平文の状態であることを示す。
そこで、この場合のICカードは、レコード#1に対応するデータ書込コマンドから取得した氏名のデータについて復号を行って平文とする。そして、ICカードは、平文による氏名のデータを、レコード#1における2バイト目を開始位置として書き込みを行う。
このように書き込みが行われることで、
図4に示されるように、レコード#1は、先頭の1バイトにおける00hの暗号状態情報に続けて、平文による氏名のデータが格納された状態となる。
【0061】
次に、ICカードは、レコード#2に対応するデータ書込コマンドを受信するのに応じて、レコード#2の先頭の1バイトに書き込まれている暗号状態情報の値が01hであり、原暗号文の状態を示していることを認識する。
そこで、この場合のICカードは、レコード#2に対応するデータ書込コマンドから取得した住所のデータについては、復号を行わない。そして、ICカードは、発行装置から送信されたときと同じ原暗号文のままの住所のデータを、レコード#2における2バイト目を開始位置として書き込みを行う。
このように書き込みが行われることで、
図4に例示するように、レコード#2は、先頭の1バイトにおける01hの暗号状態情報に続けて、原暗号文による住所のデータが格納された状態となる。
【0062】
次に、レコード#3に対応するデータ書込コマンドを受信するのに応じて、ICカードは、レコード#3の先頭の1バイトに書き込まれている暗号状態情報の値が00hであり、平文の状態を示していることを認識する。
そこで、この場合のICカードは、レコード#3に対応するデータ書込コマンドから取得したカード番号のデータについて復号を行って平文を得る。そして、ICカードは、平文によるカード番号のデータを、レコード#3における2バイト目を開始位置として書き込みを行う。
このように書き込みが行われることで、
図7に例示するように、レコード#3は、先頭の1バイトにおける00hの暗号状態情報に続けて、平文によるカード番号のデータが格納された状態となる。
【0063】
以降、ICカードは、同様にして、レコードに対応するデータ書込コマンドを受信するのに応じて、受信されたデータ書込コマンドが対応するレコードの先頭に書き込まれた暗号状態情報が示す暗号状態を認識する。そして、ICカードは、認識した暗号状態が平文の状態であれば、原暗号文の状態で受信された書込データの復号を行って平文とし、対応のレコードにおける暗号状態情報に続けて平文の書込データを書き込む。
これに対して、ICカードは、認識した暗号状態が原暗号文の状態であれば、原暗号文の状態で受信された書込データについて復号を行うことなく、対応のレコードにおける暗号状態情報に続けて書き込みを行う。
このようにして、ファイルFLにおけるレコードの各々には、暗号状態情報と、暗号状態情報が示す暗号状態によるデータが格納される。
【0064】
上記のように記憶媒体203にファイルのデータが書き込まれた本実施形態のICカードによるデータ出力の動作について、
図4に示したファイルの場合を例に挙げて説明する。
この場合、リーダライタは、
図4に示したファイルFLのレコードに格納されるレコードデータの読み出しを要求するデータ読出コマンドを、例えばレコードの番号の昇順に従って送信する。
上記のようにリーダライタから順次送信されるデータ読出コマンドの受信に応じて、ICカードは、ファイルFLのデータ領域におけるレコード#1から、順次、各レコードに格納されるレコードデータを読み出し、読み出したレコードデータをリーダライタに送信する。
ここで、本実施形態におけるICカードは、上記のように読み出したレコードデータを、レコードに格納されていたときと同じ暗号状態のままでリーダライタに送信する。
【0065】
従って、
図4のファイルFLの場合であれば、ICカードは、レコード#1に格納された平文の状態の氏名のデータを読み出し、平文のままの状態でリーダライタに送信する。
次に、ICカードは、レコード#2に格納された原暗号文の状態の住所のデータを読み出し、原暗号文のままの状態でリーダライタに送信する。
次に、ICカードは、レコード#3に格納された平文の状態のカード番号のデータを読み出し、平文のままの状態でリーダライタに送信する。
以降、ICカードは、残るレコードについても同様に、レコードから読み出したデータを、レコードに格納されていたのと同じ暗号状態のままでリーダライタに送信する。
【0066】
上記のようにレコードデータが送信されることで、リーダライタは、レコードの番号順に従って、平文による氏名とカード番号の各データと原暗号文による住所のデータとを受信する。ここで、住所のデータへのアクセス権を有していないユーザのリーダライタの場合には、以下のように受信されたレコードデータの取得が行われる。
先ず、氏名、住所、カード番号の各データのうち、氏名とカード番号のデータについては受信された段階で平文の状態である。従って、この場合のリーダライタは、氏名とカード番号の各データについては特に復号を行うことなく正常に取得できる。
【0067】
一方、受信された住所のデータは原暗号文の状態である。しかし、住所のデータへのアクセス権を有さないユーザのリーダライタは、受信された原暗号文の状態の住所のデータを復号できる正当な鍵を有していない。従って、この場合のリーダライタは、住所のデータを復号することができない。この場合、住所のデータは原暗号文のままであって有意性を持たないために、正常に取得できたことにはならない。
このように、住所のデータへのアクセス権を有さないユーザのリーダライタは、ファイルFLの読み出し結果として、アクセス権無しのレコードデータを正常に取得することはできるが、アクセス権有りのレコードデータを正常に取得することはできない。
【0068】
一方、住所のデータへのアクセス権を有するユーザのリーダライタの場合、先ず、氏名とカード番号のデータについては、住所のデータへのアクセス権を有するユーザのリーダライタと同様に特に復号を行うこと無く正常に取得できる。
そのうえで、住所のデータへのアクセス権を有するユーザのリーダライタは、原暗号文による住所のデータを復号できる鍵を有している。具体的には、リーダライタは、00hの値による暗号状態情報が示す原暗号文のデータを復号できる鍵を有している。リーダライタは、受信された暗号状態情報が01hを示していることにより、受信されたデータにについて自己が有する鍵で復号可能であることを認識できる。そこで、リーダライタは、自己が有する鍵を利用して住所のデータを復号して平文とすることができる。即ち、この場合のリーダライタは、氏名とカード番号のデータとともに、住所のデータについても正常に取得できる。
【0069】
このように、本実施形態においては、同じ1つのファイルを対象としてデータの読み出しを行うリーダライタでありながら、各リーダライタが有するアクセス権に応じてアクセス可能なデータのみが適切に取得されるようになっている。
【0070】
これまでの説明から理解されるように、本実施形態におけるICカードの記憶媒体203は、1つのファイルに対してアクセス権の異なる種別のレコードデータがまとめて格納されるデータ構造を有する。そのうえで、レコードデータごとに、アクセス権に対応する暗号状態を示す暗号状態情報が対応付けられ、リーダライタは、データとともに受信された暗号状態情報に基づいて、自己がアクセス権を有するデータについては復号を行って正常に取得できる。
【0071】
このような構成により、本実施形態においては、例えば
図3に示したようにアクセス権の異なるデータをそれぞれ異なるファイルに格納する必要が無く、アクセス権の異なるデータを1つのファイルにまとめて格納することが可能になる。
これにより、本実施形態では、アクセス権の異なる複数のデータを格納するファイルは1つでよいことになり、これに伴って、ファイルヘッダやファイルシステムにおけるディレクトリ情報などのファイルについての管理情報も1つでよいことになる。この結果、本実施形態は、
図3の場合と比較してユーザデータ領域AR3の使用サイズを小さくすることが可能になり、記憶媒体203の記憶領域の使用効率が向上する。
【0072】
次に、
図8を参照して、本実施形態における暗号状態情報の拡張例について説明する。先ず、同図に示すファイルFLにおけるレコード#1、レコード#2、レコード#3に格納されるデータの内容は、それぞれ、
図4と同様である。
つまり、レコード#1においては、先頭の1バイトに平文の状態を示す00hの値による暗号状態情報が格納され、2バイト目以降に平文による氏名のデータが格納される。
また、レコード#2においては、先頭の1バイトに原暗号文の状態を示す01hの値による暗号状態情報が格納され、2バイト目以降に原暗号文による住所のデータが格納される。
また、レコード#3においては、先頭の1バイトに平文の状態を示す00hの値による暗号状態情報が格納され、2バイト目以降に平文によるカード番号のデータが格納される。
【0073】
そのうえで、さらにレコード#4において、先頭の1バイトに02hの値による暗号状態情報が格納され、2バイト目以降において再暗号文による電話番号のデータが格納される。
暗号状態情報としての02hは、暗号状態として再暗号文の状態であることを示す。また、再暗号文とは、発行装置から受信された原暗号文としての書込データを、原暗号文を暗号化したときと異なる暗号化処理により再び暗号化して得られる暗号文である。本実施形態において、原暗号文を暗号化したときと異なる暗号化処理は、例えば、原暗号文を暗号化したときと異なる鍵により暗号化することである。
また、02hの値の暗号状態情報は、00h、01hの値の暗号状態情報と同様に、ファイル生成の際に、ファイル生成コマンドに含まれる暗号状態情報に基づいてレコード#4の先頭に書き込まれたものである。
【0074】
本実施形態のICカードは、ファイルヘッダとレコード#1〜#3までについては、
図7と同様にデータ書き込みを実行する。
そして、ICカードは、同図に示すレコード#4についてのデータ書込コマンドを受信した場合には、以下のようにデータ書き込みを行う。
ICカードは、レコード#4の先頭の1バイトに書き込まれた02hの暗号状態情報を参照することによって、レコード#4に対して再暗号文を書き込むべきことを認識する。
そこで、ICカードは、受信されたデータ書込コマンドから取得した原暗号文による電話番号の書込データについて、一旦復号を行って平文とする。そのうえで、ICカードは、平文とした書込データについて、原暗号文を暗号化したときとは異なる鍵を使用して、再び暗号化して暗号文とする。このように得られた暗号文が再暗号文である。
ICカードは、上記のようにして再暗号文として生成した電話番号の書込データをレコード#4の2バイト目以降を開始位置として書き込みを行う。
【0075】
このようにして、暗号状態情報を拡張することによって、ファイルのレコードには、原暗号文によるレコードデータと、平文によるレコードデータとに加え、再暗号文によるレコードデータも格納することができる。
図8のように、暗号文として原暗号文と再暗号文とが併用される場合、原暗号文と再暗号文とについて、それぞれ異なるアクセス権を対応させることが可能である。
なお、
図8の変形例として、ファイルのレコードに格納されるレコードデータの暗号状態については、原暗号文は使用せずに、平文と再暗号文による2つを使用するように構成してもよい。
【0076】
[データ読出システムの構成例]
続いて、
図9を参照して、第1実施形態におけるデータ読出システムの構成例について説明する。同図に示すように、本実施形態のデータ読出システムは、リーダライタ100(データ読出装置の一例)とICカード200とを通信経由で接続して構成される。
【0077】
リーダライタ100は、ICカード200からデータの読み出しを行う。リーダライタ100は、ファイル単位でのデータの読み出しを行う。リーダライタ100はファイル単位によるデータの読み出しに際して、さらに、ファイルに格納されるレコード単位で、順次、レコードデータの読み出しを行う。
【0078】
同図に示すリーダライタ100は、通信部101と制御部102とを備える。
通信部101は、ICカード200と通信を実行する。通信部101によるICカード200との通信は接触式であってもよいし非接触式であってもよい。
【0079】
制御部102は、リーダライタ100における各種制御を実行する。制御部102としての機能は、例えばリーダライタ100が備えるCPU(Central Processing Unit)がプログラムを実行することにより実現される。
本実施形態における制御部102は、ICカード200からのデータの読み出しに対応する機能部として、データ読出コマンド送信部121と、復号部122とを備える。
【0080】
データ読出コマンド送信部121は、レコードデータの読み出しを要求するデータ読出コマンドをICカード200に送信する。
【0081】
上記のように送信されたデータ読出コマンドを受信すると、ICカード200はデータ読出コマンドが指定するレコードに格納される暗号状態情報とレコードデータとを記憶媒体203から読み出してリーダライタ100に送信する。送信された暗号状態情報とレコードデータは、リーダライタ100の通信部101にて受信される。
【0082】
復号部122は、データ読出コマンドに対する応答として記憶媒体203から読み出されたレコードデータと、レコードデータに対応付けられた暗号状態情報とをICカード200から受信するのに応じて、以下の処理を実行する。つまり、復号部122は、受信された暗号状態情報が示す暗号状態のレコードデータへのアクセス権を有する場合にはレコードデータの復号を行い、レコードデータへのアクセス権を有さない場合にはレコードデータの復号を行わない。
【0083】
また、同図に示すICカード200は、通信部201、制御部202及び記憶媒体203を備える。
通信部201は、リーダライタ100と通信を実行する。
制御部202は、ICカード200における各種制御を実行する。制御部202としての機能は、例えばICカード200が備えるCPUが、記憶媒体203に記憶されたプログラムを実行することにより実現される。
本実施形態における制御部202は、リーダライタ100から受信したデータ読出コマンドに応じた記憶媒体203からのデータ読み出しに対応する機能部として、データ読出部221とデータ送信部222とを備える。
【0084】
データ読出部221は、リーダライタ100から送信されたデータ読出コマンドの受信に応じて以下の処理を実行する。つまり、データ読出部221は、記憶媒体203から、受信されたデータ読出コマンドが要求するレコードデータと、レコードデータに対応付けられた暗号状態情報とを読み出す。
【0085】
データ送信部222は、データ読出部221によって読み出されたレコードデータと暗号状態情報とをリーダライタ100に対して送信する。
【0086】
記憶媒体203は、制御部202が利用する各種の情報を記憶する。前述のように、本実施形態の記憶媒体203は、
図1に示した領域の設定が行われたうえで、ユーザデータ領域AR3において
図4、
図8などに示した構造のファイルを記憶することができる。
なお、記憶媒体203が対応するハードウェアは、例えばEEPROM(Electrically Erasable Programmable Read-Only Memory)やフラッシュメモリなどであればよい。
【0087】
[処理手順例]
図10のフローチャートを参照して、本実施形態におけるリーダライタ100とICカード200がデータ読み出しに関して実行する処理手順例について説明する。なお、同図においては、読み出し対象である1つのファイルが指定されたうえで、読み出し対象のファイルのデータ領域における1つのレコードに格納されたデータを読み出すための処理が示される。
【0088】
また、同図に示す処理は、レコードデータの暗号状態として、
図8に例示したように、00hによる平文の状態、01hによる原暗号文の状態、02hによる再暗号文の状態が定義されている場合を例に挙げる。
そのうえで、同図に示す処理を実行するリーダライタ100は、以下のユーザに対応する場合を例に挙げる。つまり、リーダライタ100は、01hの値の暗号状態情報に対応する原暗号文の状態のレコードデータへのアクセス権は有するが、02hの値の暗号状態情報に対応する再暗号文の状態のレコードデータへのアクセス権は有さないユーザに対応する。
【0089】
また、同図に示す処理は、例えば、ファイルの読み出しに先だってICカード200からデータを読み出すことのできる正当なリーダライタ100であるか否かについての認証処理が行われてもよい。そして、認証処理による認証が成立して、正当な権限を有するリーダライタ100であるとICカード200側で認識された場合に、同図に示す処理が実行されればよい。
【0090】
リーダライタ100におけるデータ読出コマンド送信部121は、1つのレコードを指定してデータの読み出しを要求するデータ読出コマンドを、通信部101からICカード200に対して送信する(ステップS101)。
【0091】
ステップS101によるデータ読出コマンドの送信に応じて、ICカード200からは送信したデータ読出コマンドが指定するレコードに格納されていた暗号状態情報とレコードデータとが送信される。
通信部101は、上記のようにICカード200から送信された暗号状態情報とレコードデータとを受信する(ステップS102)。
【0092】
次に、復号部122は、ステップS102にて受信された暗号状態情報を参照し(ステップS103)、暗号状態情報の値について判定する(ステップS104)。
暗号状態の値が00hである場合(ステップS104:00h)、受信されたレコードデータは平文の状態である。そこで、この場合の復号部122は、受信されたレコードデータについて特に復号を行うことなく、受信されたレコードデータをそのまま読出データとして取得する(ステップS105)。
【0093】
また、暗号状態情報の値が01hである場合(ステップS104:01h)、受信されたレコードデータは原暗号文の状態である。前述のように、この場合のリーダライタ100は、原暗号文へのアクセス権を有しており、例えば記憶媒体203には原暗号文に対応する鍵が記憶されている。復号部122は、暗号状態情報の値が01hである場合には、アクセスが可能であると判断する。
そこで、この場合の復号部122は、受信されたレコードデータについて、自己が有する原暗号文に対応する鍵により復号し、復号により得られたレコードデータを読出データとして取得する(ステップS106)。
【0094】
これに対して、暗号状態情報の値が00h、01h以外の値である場合(ステップS104:その他)、受信されたレコードデータは、原暗号文以外の形式の暗号文である。具体的に、この場合のレコードデータは、02hの値の暗号状態情報が示す再暗号文である。この場合において、再暗号文は、原暗号文とは異なる暗号文である。そして、再暗号文は、原暗号文とは異なる鍵を用いて復号が行われる。
しかし、この場合のリーダライタ100は、再暗号文のレコードデータへのアクセス権を有しておらず、従って、記憶媒体203には再暗号文を復号可能な鍵も記憶されていない。このため、復号部122は、受信された再暗号文としてのレコードデータを正常に復号することができないことから復号エラーであると判定する(ステップS107)。この場合、正常な読出データは得られない。
なお、リーダライタ100に対応するユーザが再暗号文のレコードデータへのアクセス権を有している場合、復号部122は、ステップS107において、再暗号文を復号可能な鍵を用いてレコードデータを復号することができる。
【0095】
また、ICカード200において通信部201は、ステップS101によりリーダライタ100から送信されたデータ読出コマンドを受信する(ステップS201)。
データ読出コマンドが受信されるのに応じて、データ読出部221は、受信されたデータ読出コマンドによって指定されたファイルのレコードに格納される暗号状態情報とレコードデータとを記憶媒体203から読み出す(ステップS202)。
【0096】
次に、データ送信部222は、ステップS202により記憶媒体203から読み出された暗号状態情報とレコードデータとを通信部201からリーダライタ100に送信させる(ステップS203)。
【0097】
このようにリーダライタ100とICカード200とが処理を実行することによって、アクセス権の異なるデータが混在して格納されたファイルを対象として、リーダライタ100が有するアクセス権に応じた適切なレコードデータの読み出しが行われる。つまり、リーダライタ100は、アクセス権を有するレコードデータについては平文の状態で取得可能であるが、アクセス権を有さないレコードデータについては暗号文のままとされて平文の状態では取得できないように適切にアクセスが制限される。
【0098】
<第2実施形態>
[データ読出システムの構成例]
続いて、第2実施形態について説明する。第2実施形態においては、データ読出コマンドが要求するレコードデータが暗号文である場合には、読み出し対象のレコードデータについての認証が成立していればICカード200側で暗号文の復号を行ったうえでリーダライタ100に送信する。一方、読み出し対象のレコードデータについての認証が成立していなければ、ICカード200においては復号を行わずに、暗号文の状態のままでリーダライタ100に送信するように構成される。
このように構成することにより、リーダライタ100では、ファイルにおいてアクセス権を有するレコードデータについては平文の状態で取得できるが、アクセス権を有さないレコードデータについては暗号文の状態で取得される。つまり、ファイルにおいてアクセス権を有するレコードデータのみが正常に読み出されるように適切なアクセス制限が実現される。
【0099】
図11は、本実施形態におけるリーダライタ100とICカード200との構成例を示している。同図において、
図9と同一部分には同一符号を付して説明を省略する。
本実施形態のリーダライタ100における制御部102は、データ読出コマンド送信部121、認証処理部123及びデータ取得部124を備える。
データ読出コマンド送信部121は、
図9と同様に、ICカード200からファイルのデータを読み出すにあたり、レコード単位でデータの読み出しを要求するデータ読出コマンドをICカード200に送信する。
認証処理部123は、ICカード200との間で認証処理を実行する。認証処理部123が実行する認証処理は、ファイルに格納される特定の暗号状態のレコードデータへのアクセス権を有するか否かをICカード200側で判断するために実行される。
データ取得部124は、データ読出コマンドの送信に応じてICカード200から送信されるレコードデータを、通信部101経由で取得する。
【0100】
また、同図に示されるICカードにおいて制御部202は、データ読出部221、データ送信部222、認証処理部223及び復号部224を備える。
認証処理部223は、リーダライタ100との間で認証処理を実行する。具体的に、認証処理部223は、リーダライタ100に対応するユーザについて、特定の暗号状態の暗号文によるレコードデータへのアクセス権を有するか否かを判断するための認証処理を実行する。
【0101】
データ読出部221は、認証処理部223による認証の後において、
図9の場合と同様に、リーダライタ100から受信されたデータ読出コマンドが指定するファイルのレコードに格納された暗号状態情報とレコードデータとを読み出す。
【0102】
復号部224は、データ読出部221によって読み出された暗号状態情報が示す暗号状態のレコードデータへのアクセス権を有する場合には、レコードデータを復号して出力し、レコードデータへのアクセス権を有さない場合にはレコードデータを復号せずに出力する。
データ送信部222は、復号部224から出力されたレコードデータを通信部201からリーダライタ100に対して送信させる。
【0103】
[処理手順例]
本実施形態のリーダライタ100における認証処理部123とICカード200における認証処理部223とは、ICカード200からのファイルの読み出しに先立ち、所定のタイミングで、ファイルのレコードデータへのアクセス権に対応する認証処理を実行する。
【0104】
図12のフローチャートは、本実施形態のリーダライタ100とICカード200とが実行する処理手順例を示している。
リーダライタ100における認証処理部123は、レコードデータへのアクセス権に対応する認証処理を要求するための認証コマンドをICカード200に対して送信する(ステップS301)。認証処理部123は、ステップS301により送信する認証コマンドに、認証キーを含める。
【0105】
ステップS301により送信された認証コマンドの送信に応答して、ICカード200は認証処理を実行し、認証処理の結果として認証が成立したか否かを示す認証応答をリーダライタ100に対して送信する。
リーダライタ100の通信部101は、上記のようにリーダライタ100から送信された認証応答を受信する(ステップS302)。
認証処理部123は、ステップS302にて受信された認証応答により、ICカード200側で実行された認証処理の認証結果を認識する(ステップS303)。具体的に、認証処理部123は、ステップS303において認証が成立したか否かについて認識することができる。
【0106】
また、ICカード200において、通信部201は、は、ステップS301によりリーダライタ100から送信された認証コマンドを受信する(ステップS401)。
認証処理部223は、ステップS401にて認証コマンドが受信されるのに応じて認証処理を実行する(ステップS402)。この場合の認証処理部223は、受信された認証コマンドに含まれていた認証キーが、特定の暗号状態のレコードデータに設定されたアクセス権に応じた正当なユーザのものであるか否かについて判定する。認証キーが正当なユーザのものであれば認証が成立し、認証キーが正当なユーザのものでなければ、認証は不成立となる。
【0107】
認証処理部223は、ステップS402による認証処理の結果として、認証が成立したか否かについて判定する(ステップS403)。
認証が成立した場合(ステップS403:YES)、認証が成立したユーザが有するアクセス権に対応する認証フラグの値について、認証が成立したことを示す1を設定する(ステップS404)。認証フラグは、記憶媒体203における所定の領域に記憶されればよい。
一方、認証が不成立であった場合(ステップS403:NO)、認証処理部223は、認証フラグの値について、認証が不成立であったことを示す0を設定する(ステップS405)。
【0108】
ステップS404あるいはステップS405の処理により、認証フラグに1あるいは0の値を設定した後、認証処理部223は、ステップS403にて判定された認証結果を示す認証応答をリーダライタ100に対して送信する(ステップS406)。
ステップS406として、認証処理部223は、ステップS403にて認証が成立したと判定された場合には、認証が成立したことを示す認証応答を送信する。一方、認証が不成立であると判定された場合、認証処理部223は、認証が不成立であることを示す認証応答を送信する。
このようにして、ICカード200により、リーダライタ100からの認証コマンドに応答して、レコードデータへのアクセス権に対応する認証処理が行われる。
【0109】
なお、
図12に示した認証処理は、ファイルに格納されるレコードデータの読み出しに先立って、一回実行されるものであってもよいし、レコードデータの読み出しごとに対応して毎回実行されるものであってもよい。
そして、
図12に示した認証処理が実行された後において、リーダライタ100はICカードから以下のようにレコードデータの読み出しを行う。
【0110】
図13のフローチャートは、レコードデータの読み出しに対応してリーダライタ100とICカード200とが実行する処理手順例を示している。
リーダライタ100において、データ読出コマンド送信部121は、レコードを指定してデータの読み出しを要求するデータ読み出しコマンドを送信する(ステップS501)。
ステップS501により送信されたデータ読出コマンドに応答して、ICカード200は、記憶媒体203から読み出した読出データをリーダライタ100に送信する。
リーダライタ100において、データ取得部124は、ICカード200から送信された読出データを、通信部101を介して受信する(ステップS502)。
【0111】
続いて、ICカード200の処理について説明する。ICカード200において、データ読出部221は、ステップS501によりリーダライタ100から送信されたデータ読出コマンドを、通信部201を介して受信する(ステップS601)。
ステップS601によりデータ読出コマンドを受信するのに応じて、データ読出部221は、受信されたデータ読出コマンドが指定するファイルのレコードに格納される暗号状態情報とレコードデータとを記憶媒体203から読み出す(ステップS602)。
【0112】
次に、復号部224は、ステップS602により読み出した暗号状態情報を参照し(ステップS603)、参照した暗号状態情報の値が00hであるか否かについて判定する(ステップS604)。
暗号状態情報の値が00hである場合(ステップS604:00h)、ステップS602により読み出したレコードデータは、平文の状態である。そこで、この場合の復号部224は、ステップS602にて読み出したレコードデータについて特に復号を行うことなく、そのまま読出データとして出力する(ステップS605)。この場合のステップS607によっては、平文の状態による読出データが出力される。
【0113】
一方、暗号状態情報の値が00h以外の値である場合(ステップS604:00h以外)、暗号状態情報の値は、
図8の暗号状態情報の定義例との対応では、01hまたは02hであって、ステップS602により読み出したレコードデータは、原暗号文または再暗号文である。
例えば、
図8のように、暗号文として原暗号文と再暗号文とが定義されている場合、
図12による認証処理によっては、以下のように複数のパターンの認証が成立する。
1つは原暗号文と再暗号文とのいずれについてもアクセス権を有するユーザについて認証が成立するパターンである。もう1つは原暗号文へのアクセス権を有するが、再暗号文へのアクセス権を有さないユーザについて認証が成立するパターンである。さらにもう1つは、原暗号文へのアクセス権を有さないが、再暗号文へのアクセス権を有するユーザについて認証が成立するパターンである。
【0114】
そこで、この場合の復号部224は、ステップS602にて読み出されたレコードデータについて、先の
図12による認証処理によって認証が成立したユーザがアクセス権を有しているか否かについて判定する(ステップS606)。
アクセス権を有していない場合(ステップS606:NO)、復号部224は、ステップS602にて読み出したレコードデータについて特に復号を行うことなく、そのまま読出データとして出力する(ステップS605)。この場合のステップS605によっては、暗号文(原暗号文または再暗号文)の状態による読出データが取得される。
【0115】
これに対して、アクセス権を有している場合(ステップS606:YES)、復号部224は、ステップS602にて読み出したレコードデータを、暗号状態に対応する鍵で復号し、復号したレコードデータを読出データとして出力する(ステップS607)。
具体的に、復号部224は、レコードデータが原暗号文の状態であれば、原暗号文を復号可能な鍵を用いた復号アルゴリズム(第1復号アルゴリズムの一例)によりレコードデータを復号する。また、復号部224は、レコードデータが再暗号文の状態であれば、原暗号文を復号可能な鍵とは異なる、再暗号文を復号可能な鍵を用いた復号アルゴリズム(第2復号アルゴリズムの一例)によりレコードデータを復号する。そして、復号部224は、上記のように復号されたレコードデータを読出データとして出力する。
【0116】
データ送信部222は、ステップS605またはステップS607によって出力された読出データを通信部201からリーダライタ100に送信させる(ステップS608)。
【0117】
上記の処理によれば、データ読出コマンドにより指定されたレコードに格納されるデータが平文の状態である場合には、平文による読出データがICカード200からリーダライタ100に送信される。
また、データ読出コマンドにより指定されたレコードに格納されるデータが暗号文の状態である場合には、認証が成立したユーザにアクセス権が有れば、ICカード200側にて復号された平文の状態による読出データがリーダライタ100に送信される。
一方、認証が成立したユーザにアクセス権が無ければ、復号されずに暗号文のままとされた暗号文の状態による読出データがリーダライタ100に送信される。
【0118】
従って、リーダライタ100は、アクセス権が設定されていないレコードデータと、ユーザがアクセス権を有するレコードデータとを平文の状態による読出データとして取得することができる。一方、リーダライタ100は、ユーザがアクセス権を有さないレコードデータについては、暗号文の状態のままの読出データとして取得する。リーダライタ100は、このように暗号文の状態で取得された読出データについては復号可能な鍵を有していないことから復号が行えない。復号できなければ、有意な読出データとして処理できないため、この場合には読出エラーとなる。
【0119】
このように、本実施形態においても、リーダライタ100によって対応のユーザが有するアクセス権によりアクセス可能なレコードデータのみを正常に読み出せるように適切にアクセス制限が行われる。
【0120】
なお、
図13におけるICカード200の処理として、ステップS606にてアクセス権を有していないことが判定された場合には、暗号状態のままの読出データを送信するのに代えて、データ読出コマンドに対するエラー応答をリーダライタ100に送信してもよい。
【0121】
<第3実施形態>
続いて、第3実施形態について説明する。先の第1実施形態及び第2実施形態においては、ファイルのデータ領域が、固定長のレコードにより形成されている場合を例に挙げた。
ファイルにおけるデータ領域としては、上記の固定長のレコードによる構造の他に、TLV構造と呼ばれる、可変長のレコードによる構造であってもよい。第3実施形態は、ファイルにおけるデータ領域がTLV構造である場合に対応する構成である。
【0122】
図14を参照してTLV構造について説明する。同図に示すように、TLV構造における1つのレコードは、先頭から順にTag領域、Length領域、Value領域を配列させた構造を有する。
Tag領域には、レコードを識別する識別子(タグ)が格納される。
Length領域には、続くValue領域のデータ長(サイズ)を示す情報が格納される。
Value領域には、Length領域により示されるデータ長によるデータ(レコードデータ)が格納される。
そして、ファイルFLのデータ領域においては、上記のTLV構造によるレコードが、同じ
図14に示すように、先頭から詰められていくように格納される。このようにして、TLV構造によるファイルが形成される。
【0123】
図15には、TLV構造によるファイルに対して
図8と同様のデータが書き込まれた場合のデータマッピング例が示されている。
つまり、同図に示すファイルFLのデータ領域においては、TLV構造のもとで、1番目のレコードのValue領域において、先頭の1バイトに00hの値の暗号状態情報が書き込まれ、続く2バイト目以降において平文による氏名のデータが書き込まれている。
また、2番目のレコードのValue領域において、先頭の1バイトに01hの値の暗号状態情報が書き込まれ、続く2バイト目以降において原暗号文による住所のデータが書き込まれている。
また、3番目のレコードのValue領域において、先頭の1バイトに00hの値の暗号状態情報が書き込まれ、続く2バイト目以降において平文によるカード番号のデータが書き込まれている。
また、4番目のレコードのValue領域において、先頭の1バイトに02hの値の暗号状態情報が書き込まれ、続く2バイト目以降において再暗号文による電話番号のデータが書き込まれている。
【0124】
このようにファイルのデータ領域がTLV構造である場合においても、データの読み出しの処理は、第1実施形態における
図10の処理、あるいは第2実施形態における
図13の処理と同様に実行されればよい。
従って、ファイルのデータ領域がTLV構造である場合にも、異なるアクセス権が設定されたレコードデータを1つのファイルに格納することが可能であり、記憶媒体203の容量を効率的に使用できる。そのうえで、アクセス権を有するレコードデータのみがICカード200から正常に読み出されるように適切にアクセス制限が行われる。
【0125】
なお、これまでの実施形態において、暗号状態情報は、対応のレコードデータが格納されるレコードに格納されていた。これに対して、各レコードデータに対応する暗号状態情報は、対応のレコードデータが格納されるファイルを管理する管理情報に含められてもよい。
具体的に、暗号状態情報は、レコードとの対応関係が示された状態でファイルヘッダに書き込まれてもよい。あるいは、暗号状態情報は、ファイルシステムにおいてファイルを管理するディレクトリ情報などの管理情報において、レコードとの対応関係が示された状態で書き込まれてもよい。
【0126】
なお、上述のリーダライタ100またはICカード200の機能を実現するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより上述のリーダライタ100またはICカード200としての処理を行ってもよい。ここで、「記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行する」とは、コンピュータシステムにプログラムをインストールすることを含む。ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピュータシステム」は、インターネットやWAN、LAN、専用回線等の通信回線を含むネットワークを介して接続された複数のコンピュータ装置を含んでもよい。また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。このように、プログラムを記憶した記録媒体は、CD−ROM等の非一過性の記録媒体であってもよい。また、記録媒体には、当該プログラムを配信するために配信サーバからアクセス可能な内部または外部に設けられた記録媒体も含まれる。配信サーバの記録媒体に記憶されるプログラムのコードは、端末装置で実行可能な形式のプログラムのコードと異なるものでもよい。すなわち、配信サーバからダウンロードされて端末装置で実行可能な形でインストールができるものであれば、配信サーバで記憶される形式は問わない。なお、プログラムを複数に分割し、それぞれ異なるタイミングでダウンロードした後に端末装置で合体される構成や、分割されたプログラムのそれぞれを配信する配信サーバが異なっていてもよい。さらに「コンピュータ読み取り可能な記録媒体」とは、ネットワークを介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(RAM)のように、一定時間プログラムを保持しているものも含むものとする。また、上記プログラムは、上述した機能の一部を実現するためのものであってもよい。さらに、上述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であってもよい。