図1は、本発明を適用した非接触カードシステム(システムとは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは問わない)の一実施の形態の構成例を示している。
この非接触カードシステムは、R/W1,ICカード2、およびコントローラ3で構成され、R/W1とICカード2との間では、電磁波を利用して非接触で、データの送受信が行われるようになされている。
即ち、R/W1が、所定のコマンドをICカード2に送信し、ICカード2は、そのコマンドを受信し、そのコマンドに対応する処理を行う。そして、ICカード2は、その処理結果に対応する応答データをR/W1に送信する。
R/W1は、所定のインタフェース(例えば、RS−485Aの規格などに準拠したもの)を介してコントローラ3に接続されており、コントローラ3は、R/W1に対して所定の制御信号を供給することで、所定の処理を行わせる。
図2は、図1のR/W1の構成例を示している。
IC21においては、データの処理を行うDPU(Data Processing Unit)31、ICカード2に送信するデータおよびICカード2から受信したデータの処理を行うSPU(Signal Processing Unit)32、コントローラ3との通信を行うSCC(Serial Communication Controller)33、およびデータの処理に必要な情報を予め記憶しているROM部41と処理途中のデータを一時的に記憶するRAM部42とで構成されるメモリ部34が、バスを介して接続されている。
また、このバスには、所定のデータを記憶するフラッシュメモリ22も接続されている。
DPU31は、ICカード2に送信するコマンドをSPU32に出力するとともに、ICカード2から受信した応答データをSPU32から受け取るようになされている。
SPU32は、ICカード2に送信するコマンドに対して所定の処理(例えば、BPSK(BiPhase Shift Keying)変調(ワンチェスタコードへのコーディング)など)を行った後、変調回路23に出力するとともに、ICカード2により送信されてきた応答データを復調回路25から受け取り、そのデータに対して所定の処理を施すようになされている。
変調回路23は、発振器(OSC)26より供給される所定の周波数(例えば13.56MHz)の搬送波を、SPU32より供給されるデータで、ASK(Amplitude Shift Keying)変調し、生成された変調波をアンテナ27を介して、電磁波としてICカード2に出力するようになされている。なお、このとき、変調回路23は、変調度を1未満にして、ASK変調を行うようになされており、これにより、データがローレベルのときにおいても、変調波の最大振幅がゼロにならないようになされている。
復調回路25は、アンテナ27を介して受信した変調波(ASK変調波)を復調し、復調されたデータをSPU32に出力するようになされている。
図3は、図1のICカード2の構成例を示している。
このICカード2においては、IC51が、アンテナ53を介して、R/W1により送信された変調波を受信するようになされている。なお、コンデンサ52は、アンテナ53とともにLC回路を構成し、所定の周波数(キャリア周波数)の電磁波に同調(共振)するようになされている。
IC51において、RFインタフェース部61(通信手段)は、ASK復調部81で、アンテナ53を介して受信した変調波(ASK変調波)を検波して復調し、復調後のデータを、BPSK復調回路62およびPLL(Phase Locked Loop)部63に出力するとともに、電圧レギュレータ82で、ASK復調部81が検波した信号を安定化し、各回路に直流電源として供給するようになされている。
また、RFインタフェース部61は、発振回路83でデータのクロック周波数と同一の周波数の信号を発振し、その信号をPLL部63に出力するようになされている。
さらに、RFインタフェース部61では、ASK変調部81において、演算部64より、BPSK変調回路68を介して供給されるデータに対応して、ICカード2の電源としてのアンテナ53の負荷を変動させる(例えば、データに対応して所定のスイッチング素子をオン/オフさせ、スイッチング素子がオン状態であるときだけ所定の負荷をアンテナ53に並列に接続させる)ことにより、アンテナ53を介して受信している変調波をASK変調し(ICカード2からデータを送信するときは(ICカード2にデータを送信させるときは)、R/W1は、その出力する変調波の最大振幅を一定にしており、この変調波が、アンテナ53の負荷の変動により、ASK変調される)、その変調成分を、アンテナ53を介してR/W1に送信する(R/W1のアンテナ27の端子電圧を変動させる)ようになされている。
PLL部63は、ASK復調部81より供給されるデータから、そのデータに同期したクロック信号を生成し、そのクロック信号をBPSK復調回路62およびBPSK変調回路68に出力するようになされている。
BPSK復調回路62は、ASK復調部81で復調されたデータが、BPSK変調されている場合、PLL部63より供給されたクロック信号に従って、そのデータの復調(ワンチェスタコードのデコード)を行い、復調したデータを演算部64に出力するようになされている。
演算部64は、BPSK復調回路62より供給されたデータが暗号化されている場合、そのデータを暗号/復号部92で復号化した後、そのデータを、シーケンサ91で処理するようになされている。なお、データが暗号化されていない場合、BPSK復調回路62より供給されたデータは、暗号/復号部92を介さず、シーケンサ91に、直接供給される。
シーケンサ91(管理手段)(生成手段)(認証手段)は、そこに供給されるコマンドとしてのデータに対応する処理を行うようになされている。即ち、例えば、シーケンサ91は、EEPROM66に対するデータの書き込みや読み出し、その他データに対する必要な演算処理などを行う。さらに、シーケンサ91は、認証を行うことによるEEPROM66へのアクセス制御や、EEPROM66の管理などをも行うようになされている。
演算部64のパリティ演算部93は、EEPROM66に記憶されるデータや、EEPROM66に記憶されているデータから、パリティとして、例えば、リードソロモン符号を算出するようになされている。
さらに、演算部64は、シーケンサ91で所定の処理を行った後、その処理に対応する応答データ(R/W1に送信するデータ)をBPSK変調回路68に出力するようになされている。
BPSK変調回路68は、演算部64より供給されたデータをBPSK変調し、変調後のデータをRFインタフェース部61のASK変調部84に出力するようになされている。
ROM(Read Only Memory)65は、シーケンサ91が処理を行うためのプログラムその他の必要なデータを記憶している。RAM67は、シーケンサ91が処理を行うとき、その処理の途中のデータなどを、一時的に記憶するようになされている。
EEPROM(Electrically Erasable and Programmable ROM)66(記憶手段)(データ記憶手段)は、不揮発性のメモリであり、ICカード2がR/W1との通信を終了し、電力供給が停止した後も、データを記憶し続けるようになされている。
次に、R/W1とICカード2との間のデータの送受信処理について説明する。
R/W1(図2)は、アンテナ27から所定の電磁波を放射して、アンテナ27の負荷状態を監視し、ICカード2が接近することによる負荷状態の変化が検出されるまで待機する。なお、R/W1には、所定の短いパターンのデータでASK変調した電磁波を放射して、ICカード2への呼びかけを、ICカード2からの応答が一定時間内に得られるまで繰り返す処理(ポーリング)を行わせるようにしてもよい。
R/W1において、ICカード2の接近が検出されると、R/W1のSPU32は、所定の周波数(例えば、データのクロック周波数の2倍の周波数)の矩形波を搬送波として、ICカード2に送信するデータ(ICカード2に実行させる処理に対応するコマンドや、ICカード2に書き込むデータなど)で、BPSK変調を行い、生成した変調波(BPSK変調信号)(ワンチェスタコード)を変調回路23に出力する。
なお、BPSK変調時においては、差動変換を利用して、変調波の位相の変化に、データを対応させることができ、このようにした場合、BPSK変調信号が反転しても、元のデータに復調されるので、復調するとき変調波の極性を配慮する必要が無くなる。
変調回路23は、入力されたBPSK変調信号で、所定の搬送波を1未満(例えば0.1)の変調度(=データ信号の最大振幅/搬送波の最大振幅)でASK変調し、生成された変調波(ASK変調波)を、アンテナ27を介してICカード2に送信する。
なお、送信を行わないとき、変調回路23は、ディジタル信号の2つのレベル(ハイレベルとローレベル)のうちの、例えばハイレベルで変調波を生成するようになされている。
ICカード2(図3)では、アンテナ53およびコンデンサ52で構成されるLC回路において、R/W1のアンテナ27が放射した電磁波の一部が電気信号に変換され、その電気信号(変調波)が、IC51のRFインタフェース61に出力される。そして、RFインタフェース61のASK復調部81は、その変調波を整流平滑化することで、包絡線検波を行い、これにより生成される信号を電圧レギュレータ82に供給するとともに、その信号の直流成分を抑制してデータ信号を抽出し、そのデータ信号をBPSK復調回路62およびPLL部63に出力する。
なお、このとき、アンテナ53の端子電圧V0は、例えば次のようになる。
V0=V10(1+k×Vs(t))cos(ωt)
但し、V10cos(ωt)は、搬送波を、kは変調度を、Vs(t)はSPU32が出力するデータを、それぞれ表す。
また、ASK復調部81による整流後の電圧V1におけるローレベルの値VLRは、例えば次のようになる。
VLR=V10(1+k×(−1))−Vf
ここで、Vfは、ASK復調部81において、整流平滑化を行うための整流回路を構成するダイオード(図示せず)における電圧降下を示しており、一般に0.7ボルト程度である。
電圧レギュレータ82は、ASK復調部81により整流平滑化された信号を受信すると、その信号を安定化し、直流電源として、演算部64を始めとする各回路に供給する。なお、ここでは、上述したように、変調波の変調度kは1未満であるので、整流後の電圧変動(ハイレベルとローレベルの差)が小さい。従って、電圧レギュレータ82において、直流電源を容易に生成することができる。
ここで、例えば、変調度kが5%の変調波を、V10が3ボルト以上になるように受信した場合、整流後のローレベル電圧VLRは、2.15(=3×(1−0.05)−0.7)ボルト以上となり、電圧レギュレータ82は、電源として充分な電圧を各回路に供給することができる。さらに、この場合、整流後の電圧V1の交流成分(データ成分)の振幅2×k×V10(Peak-to-Peak値)は、0.3(=2×0.05×3)ボルト以上になり、ASK復調部81は、十分高いS/N比でデータの復調を行うことができる。
このように、変調度kが1未満のASK変調波を利用することにより、エラーレートの低い(S/N比の高い状態で)通信を行うとともに、電源として充分な直流電圧がICカード2に供給される。
BPSK復調回路62は、ASK復調部81からデータ信号(BPSK変調信号)を受信すると、そのデータ信号を、PLL部63より供給されるクロック信号に従って復調し、復調したデータを演算部64に出力する。
演算部64は、BPSK復調回路62より供給されたデータが暗号化されている場合は、暗号/復号部92で復号化した後、そのデータ(コマンド)をシーケンサ91に供給して処理する。なお、この期間、即ち、ICカード2にデータを送信後、それに対する返答を受信するまでの間、R/W1は、値が1のデータを送信したまま待機している。従って、この期間においては、ICカード2は、最大振幅が一定である変調波を受信している。
シーケンサ91は、処理が終了すると、その処理結果などについてのデータ(R/W1に送信するデータ)を、BPSK変調回路68に出力する。BPSK変調回路68は、R/W1のSPU32と同様に、そのデータをBPSK変調(ワンチェスタコードにコーディング)した後、RFインタフェース部61のASK変調部84に出力する。
そして、ASK変調部84は、アンテナ53の両端に接続される負荷を、スイッチング素子などを利用し、BPSK変調回路68からのデータに応じて変動させることにより、受信している変調波(ICカード2によるデータの送信時においては、上述したように、R/W1が出力する変調波の最大振幅は一定になっている)を、送信するデータに応じてASK変調し、これによりR/W1のアンテナ27の端子電圧を変動させて、そのデータをR/W1に送信する。
一方、R/W1の変調回路23は、ICカード2からのデータの受信時においては、値が1(ハイレベル)のデータの送信を継続している。そして、復調回路25において、ICカード2のアンテナ53と電磁気的に結合しているアンテナ27の端子電圧の微小な変動(例えば、数十マイクロボルト)から、ICカード2により送信されてきたデータが検出される。
さらに、復調回路25では、検出した信号(ASK変調波)が高利得の増幅器(図示せず)で増幅されて復調され、その結果得られるディジタルデータがSPU32に出力される。SPU32は、そのデータ(BPSK変調信号)を復調し、DPU31に出力する。DPU31は、SPU32からのデータを処理し、その処理結果に応じて、通信を終了するか否かを判断する。そして、再度、通信を行うと判断した場合、上述した場合と同様にして、R/W1とICカード2との間で通信が行われる。一方、通信を終了すると判断した場合、R/W1は、ICカード2との通信処理を終了する。
以上のように、R/W1は、変調度kが1未満であるASK変調を利用して、ICカード2にデータを送信し、ICカード2は、そのデータを受け取り、そのデータに対応する処理を行って、その処理の結果に対応するデータを、R/W1に返送する。
次に、図4は、図3のEEPROM66の論理フォーマットを示している。
EEPROM66は、ブロックを単位として構成され、図4の実施の形態では、1ブロックは、例えば、16バイトで構成されている。
さらに、図4の実施の形態では、最も上のブロックの論理アドレスを#0000h(hは、16進数を表す)として、昇順に、論理アドレスが付されている。なお、図4では、論理アドレスとして、#0000h乃至#FFFFhが付されており、従って、65536(=216)個のブロックが構成されている。
ブロックは、ユーザブロックまたはシステムブロックとして使用されるようになされている。EEPROM66のブロックは、論理アドレスの昇順に、ユーザブロックに割り当てられていき、また、論理アドレスの降順に、システムブロックに割り当てられていくようになされている。即ち、図4において、ユーザブロックは下方向に、システムブロックは上方向に、それぞれ増えていき、空きブロックがなくなった時点で、ユーザブロックおよびシステムブロックをつくることはできなくなる。従って、ユーザブロックとシステムブロックとの境界は固定ではなく、また、ユーザブロックの数、またはシステムブロックの数それぞれには、特に制限がない(但し、図4の実施の形態では、ユーザブロックとシステムブロックとの合計は、65536個以下に制限される)。
システムブロックには、製造ID(Identification)ブロック、発行IDブロック、システム定義ブロック、エリア定義ブロック、サービス定義ブロックの5種類がある。なお、図4の実施の形態では、エリア定義ブロックまたはサービス定義ブロックとなっているブロックを、エリア/サービス定義ブロックと示してある。
システムブロックのうち、製造IDブロック、発行IDブロック、システム定義ブロックの3つは、基本的に、ICカード2の発行時には、既に配置されているもので、論理アドレス#FFFFh,#FFFEh,#FFFDhにそれぞれ配置される。そして、エリア/サービス定義ブロックは、論理アドレス#FFFChより上に、作成順に配置されていく。
製造IDブロックには、ICカード2の製造に関する情報が配置される。即ち、製造IDブロックには、例えば、ユニークな製造IDや、製造年月日、製造者のコードなどが配置される。
発行IDブロックには、ICカード2の発行に関する情報が配置される。即ち、発行IDブロックには、例えば、ICカード2が発行された日付や、ICカードを発行した順番を表すコードなどが配置される。
システム定義ブロックには、例えば、EEPROM66が有するシステムブロックまたはユーザブロックの数や、システムキーなどが配置される。なお、システムキーは、ICカード2と、R/W1およびコントローラ3との間で、相互認証を行うときに用いられる。
エリア定義ブロックは、例えば、EEPROM66の記憶領域(エリア)が、管理者に割り当てられることにより作成され、そこには、管理者が、自身に割り当てられた記憶領域を管理するための情報などが配置される。即ち、エリア定義ブロックには、例えば、後述するコード範囲、空き容量、およびエリアキーなどが配置される。
サービス定義ブロックには、後述するサービス領域を管理するための情報(サービス領域の容量やサービスキーなど)などが配置される。
次に、シーケンサ91では、EEPROM66の記憶領域が階層化されて管理されるようになされている。
即ち、図5は、EEPROM66のディレクトリ構造を示している。
EEPROM66の記憶領域は、エリア定義領域を階層とする階層構造をなしており、エリア定義領域は、エリア定義領域およびサービス定義領域を有することができるようになされている。
エリア定義領域(階層キー記憶手段)は、管理者に割り当てられ、そこには、管理者が、エリア定義領域やサービス定義領域を識別するための名前として使用可能な識別コードの範囲を表すコード範囲、使用可能な空きブロック数を表す空き容量、認証に用いる、後述するアクセスキーを生成するためのエリアキーなどが配置される。ここで、1のエリア定義領域は、図4で説明した1のエリア定義ブロックに対応する。
図5の実施の形態では、管理者Aに割り当てられたエリア定義領域が最上位階層を構成しており、これを親の階層として、管理者B1およびB2のエリア定義領域が作成されている。さらに、管理者B1のエリア定義領域を、親の階層として、管理者Cのエリア定義領域が作成されている。
サービス定義領域(データ記憶領域キー記憶手段)は、管理者が提供するサービスに割り当てられ、そこには、そのサービスの提供に必要なデータを記憶するサービス領域の容量や、アクセスキーを生成するためのサービスキーなどが配置される。ここで、1のサービス定義領域は、図4で説明した1のサービス定義ブロックに対応する。
サービス領域は、サービスの提供に必要なデータが記憶される記憶領域で、図4のユーザブロックに対応する。即ち、サービス領域は、0以上のユーザブロックで構成され、サービス領域を構成するユーザブロック数が、そのサービス領域を管理するサービス定義領域の容量として配置される。
また、エリア定義領域およびサービス定義領域には、それらを識別するための識別コードも配置される。ここで、エリア定義領域またはサービス定義領域を識別するための識別コードそれぞれを、以下、適宜、エリアコードまたはサービスコードという。なお、サービスコードは、あるサービス領域を管理するサービス定義領域を識別するものであるから、そのサービス領域を識別する識別コード(サービス領域識別コード)であるということもできる。
図5の実施の形態では、管理者Aに、最上位階層のエリア定義領域が割り当てられている。そして、使用可能な識別コードの範囲(コード範囲)として、0000h乃至FFFFhが、エリアキーとして、0123456789abcdefが、それぞれ定義されている。ここで、エリア定義領域におけるコード範囲内の識別コードであれば、いずれの識別コードも、そのエリア定義領域のエリアコードとして使用可能であるが、本実施の形態では、例えば、エリア定義領域のコード範囲の最小値が、そのエリアコードとして使用されるようになされている。従って、コード範囲が、0000h乃至FFFFhとなっているエリア定義領域、即ち、管理者Aに割り当てられているエリア定義領域のエリアコードは、0000hとなっている。ここで、エリアコード#xxxxhのエリア定義領域を、以下、適宜、エリア定義領域#xxxxhと記載する。
管理者Aのエリア定義領域#0000hの階層には、管理者Aがサービスを提供するためのサービス定義領域が設けられている。このサービス定義領域には、エリア定義領域#0000hのコード範囲である0000h乃至FFFFhのうち、0008hが、サービスコードとして割り当てられている。ここで、サービスコード#xxxxhのサービス定義領域を、以下、適宜、サービス定義領域#xxxxhと記載する。
サービス定義領域#0008hの容量は8とされており、従って、8のユーザブロックで構成されるサービス領域の使用が可能となっている。また、サービス定義領域#0008hのサービスキーは、0101010101010101となっている。
さらに、管理者Aのエリア定義領域#0000hの階層には、管理者B1のエリア定義領域#0100h、および管理者B2のエリア定義領域#1000hが、その子の階層として設けられている。また、エリア定義領域#0000hの階層には、図示せぬその他のエリア定義領域も設けられており、これにより、エリア定義領域#0000hが使用可能なブロック数(空き容量)は、例えば、37ブロックとなっている。
管理者B1のエリア定義領域#0100hのコード範囲としては、その親の階層であるエリア定義領域#0000hのコード範囲である0000h乃至FFFFhのうちの、0100h乃至03FFhが割り当てられている。ここで、管理者B1のエリア定義領域のコード範囲が0100h乃至03FFhであるため、その最小値である0100hが、管理者B1のエリア定義領域のエリアコードとなっている。
また、エリア定義領域#0100hの空き容量またはエリアキーは、それぞれ、14またはa0a0a0a0a0a0a0a0になっている。
さらに、管理者B1のエリア定義領域#0100hの階層には、管理者Cのエリア定義領域#0300hが、その子の階層として設けられている。そして、管理者Cのエリア定義領域#0300hのコード範囲としては、その親の階層であるエリア定義領域#0100hのコード範囲である0100h乃至03FFhのうちの、0300h乃至03FFhが割り当てられている。ここで、管理者Cのエリア定義領域のコード範囲が0300h乃至03FFhであるため、その最小値である0300hが、管理者Cのエリア定義領域のエリアコードとなっている。
また、エリア定義領域#0300hの空き容量またはエリアキーは、それぞれ、0またはb0b0b0b0b0b0b0b0になっている。
管理者Cのエリア定義領域#0300hの階層には、管理者Cがサービスを提供するためのサービス定義領域が設けられている。このサービス定義領域には、エリア定義領域#0300hのコード範囲である0300h乃至03FFhのうちの、030Chが、サービスコードとして割り当てられている。
このサービスコード030Chが割り当てられているサービス定義領域、即ち、サービス定義領域#030Chの容量は16とされており、従って、16のユーザブロックで構成されるサービス領域の使用が可能となっている。また、サービス定義領域#030Chのサービスキーは、0202020202020202となっている。
ここで、サービス定義領域#030Chが管理するサービス領域の容量が16であり、そのサービス定義領域#030Ch自体が、1のブロックを、サービス定義ブロックとして使用することから、サービス定義領域#030Chが存在することによって使用されるブロック数は17(=16+1)ブロックとなる。また、サービス定義領域#030Chが属する階層のエリア定義領域#0300hが使用可能なブロック数は、その空き容量が0であるから、0ブロックである。さらに、エリア定義領域#0300h自体が、1のブロックを、エリア定義ブロックとして使用する。従って、エリア定義領域#0300hの階層においては、使用されているブロックが18(=17+1)ブロックで、使用可能なブロックが0ブロックであるから、その親の階層(上位階層)であるエリア定義領域#0100hから割り当てられたブロック数が、18(=18+0)ブロックであることが分かる。
さらに、エリア定義領域#0100hの階層については、その子の階層(下位階層)であるエリア定義領域#0300hで、上述のように、18ブロックが使用されている。また、エリア定義領域#0100h自体が1のブロックを、エリア定義ブロックとして使用している。そして、エリア定義領域#0100hの空き容量は、上述したように14となっている。従って、エリア定義領域#0100hの階層においては、使用されているブロックが19(=18+1)ブロックで、使用可能なブロックが14であるから、その親の階層であるエリア定義領域#0000hから割り当てられたブロックは、33(=19+14)ブロックであることが分かる。
一方、管理者B2のエリア定義領域#1000hのコード範囲としては、その親の階層であるエリア定義領域#0000hのコード範囲である0000h乃至FFFFhのうちの、1000h乃至1FFFhが割り当てられている。ここで、管理者B2のエリア定義領域のコード範囲が1000h乃至1FFFhであるため、その最小値である1000hが、管理者B2のエリア定義領域のエリアコードとなっている。
また、エリア定義領域#1000hの空き容量またはエリアキーは、それぞれ、43またはc0c0c0c0c0c0c0c0になっている。
管理者B2のエリア定義領域#1000hの階層には、管理者B2がサービスを提供するためのサービス定義領域が設けられている。このサービス定義領域には、エリア定義領域#1000hのコード範囲である1000h乃至1FFFhのうちの、1022hが、サービスコードとして割り当てられている。
このサービスコード1022hが割り当てられているサービス定義領域、即ち、サービス定義領域#1022hの容量は4とされており、従って、4のユーザブロックで構成されるサービス領域の使用が可能となっている。また、サービス定義領域#1022hのサービスキーは、0303030303030303となっている。
ここで、サービス定義領域#1022hが管理するサービス領域の容量が4であり、そのサービス定義領域#1022h自体が、1のブロックを、サービス定義ブロックとして使用することから、サービス定義領域#1022hが存在することによって使用されるブロック数は5(=4+1)ブロックとなる。また、サービス定義領域#1022hが属する階層のエリア定義領域#1000hが使用可能なブロック数は、その空き容量が43であるから、43ブロックである。さらに、エリア定義領域#1000h自体が1のブロックを、エリア定義ブロックとして使用している。従って、エリア定義領域#1000hの階層においては、使用されているブロックが6(=5+1)ブロックで、使用可能なブロックが43ブロックであるから、エリア定義領域#1000hに割り当てられたブロックは、49(=6+43)ブロックであることが分かる。
以上のように、管理対象のエリア定義領域に割り当て可能な識別コードの範囲であるコード範囲をエリア定義領域に記憶させるようにしたので、そのコード範囲に基づき、管理対象のエリア定義領域を子の階層とし、そのエリア定義領域を管理するエリア定義領域を親の階層とする、図5に示したような階層構造を規定することができる。
次に、図6を参照して、最上位階層のエリア定義領域#0000hが割り当てられた管理者Aが、例えば、ICカード2の発行者であるとして、図5に示した階層構造が構成されていく過程について説明する。
管理者Aは、例えば、ユーザの要求に応じて、ICカード2を発行する(1)。このICカード2には、図5の階層構造のうち、例えば、エリア定義領域#0000hだけが作成されている。
そして、管理者Aは、サービス定義領域#0008hによって管理されるサービス領域を利用して、所定のサービスの提供を開始する場合、そのサービス定義領域#0008hの作成を行うのに必要な情報を、発券機101に登録する(2)。
ここで、発券機101は、例えば、図1のR/W1とコントローラ3から構成される。また、発券機101は、例えば、駅や、小売店、その他の施設などに設置することができる。
その後、ユーザが、ICカード2を、発券機101に装着すると(ICカード2を、発券機101が内蔵するR/W1との間で通信を行うことが可能な状態にすると)、発券機101は、登録された情報に基づいて、ICカード2にコマンドおよび必要なデータを送信し、サービス定義領域#0008hを作成させる。これにより、ユーザは、サービス定義領域#0008hによって管理されるサービス領域を利用した、管理者Aによるサービスの提供を受けることが可能となる。
一方、管理者B1,B2それぞれは、ICカード2を利用したサービスの提供を行いたい場合、管理者Aとの間で契約を結び、管理者Aに、エリア定義領域#0100hおよび#1000hの作成を行うのに必要な情報を、発券機101に登録してもらう(3),(4)。そして、ユーザが、ICカード2を、発券機101に装着すると、発券機101は、登録された情報に基づいて、ICカード2にコマンドおよび必要なデータを送信し、エリア定義領域#0100hおよび#1000hを作成させる。これにより、管理者B1またはB2は、エリア定義領域#0100hまたは#1000hにおいて定義されている範囲内において、ICカード2のリソースを使用することが可能となる。
その後、管理者B2が、サービス定義領域#1022hによって管理されるサービス領域を利用して、所定のサービスの提供を開始する場合、そのサービス定義領域#1022hの作成を行うのに必要な情報を、発券機101に登録する(5)。そして、ユーザが、ICカード2を、発券機101に装着すると、発券機101は、登録された情報に基づいて、ICカード2にコマンドおよび必要なデータを送信し、サービス定義領域#1022hを作成させる。これにより、ユーザは、サービス定義領域#1022hによって管理されるサービス領域を利用した、管理者B2によるサービスの提供を受けることが可能となる。
また、管理者Cは、管理者B1の管理下において、ICカード2を利用したサービスの提供を行いたい場合、管理者B1との間で契約を結び、管理者B1に、エリア定義領域#0300hの作成を行うのに必要な情報を、発券機101に登録してもらう(6)。そして、ユーザが、ICカード2を、発券機101に装着すると、発券機101は、登録された情報に基づいて、ICカード2にコマンドおよび必要なデータを送信し、エリア定義領域#0300hを作成させる。これにより、管理者Cは、エリア定義領域#0300hにおいて定義されている範囲内において、ICカード2のリソースを使用することが可能となる。
その後、管理者Cが、サービス定義領域#030Chによって管理されるサービス領域を利用して、所定のサービスの提供を開始する場合、そのサービス定義領域#030Chの作成を行うのに必要な情報を、発券機101に登録する(7)。そして、ユーザが、ICカード2を、発券機101に装着すると、発券機101は、登録された情報に基づいて、ICカード2にコマンドおよび必要なデータを送信し、サービス定義領域#030Chを作成させる。これにより、ユーザは、サービス定義領域#030Chによって管理されるサービス領域を利用した、管理者Cによるサービスの提供を受けることが可能となる。
ICカード2では、以上のように、発券機101からのコマンドにしたがって、エリア定義領域やサービス定義領域が作成される。このエリア定義領域を作成するエリア作成処理、およびサービス定義領域を作成するサービス作成処理は、例えば、シーケンサ91によって行われるが、このエリア作成処理およびサービス作成処理について、図7および図8を参照して説明する。
まず最初に、図7のフローチャートを参照して、エリア作成処理について説明する。
ICカード2が発券機101に装着されると、発券機101は、ICカード2に対して、エリア定義領域を作成することを指令するコマンド(以下、定義、エリア作成コマンドという)と、そのエリア定義領域を作成するために必要な情報、即ち、例えば、作成するエリア定義領域のコード範囲、そのエリア定義領域に割り当てられたブロック数(以下、適宜、割り当てブロック数という)、エリアキー、および親の階層とするエリア定義領域のエリアコード(以下、適宜、親エリアコードという)などを送信する。
ここで、エリア定義領域を作成するために必要な情報は、セキュリティの観点から、暗号化した状態で、ICカード2に送信するのが望ましい。なお、暗号化は、例えば、親エリアコードを有するエリア定義領域に記憶されたエリアキーなどと同一のキーを用いて行うことができる。親エリアコードを有するエリア定義領域に記憶されたエリアキーは、EEPROM66に記憶されているから、ICカード2では、その暗号化された情報をデコードすることが可能である。
ICカード2(シーケンサ91)は、エリア作成コマンドを受信すると、それとともに送信されてくる暗号化された情報を復号し、これにより、親エリアコード、並びに作成対象のエリア定義領域のコード範囲、割り当てブロック数、およびエリアキーなどを認識する。さらに、ICカード2では、作成対象のエリア定義領域のエリアコードを認識する。即ち、ここでは、作成対象のエリア定義領域のコード範囲の最小値が、そのエリアコードとして認識される。
そして、ICカード2では、ステップS1において、作成対象のエリア定義領域が、EEPROM66の中に既に作成されているかどうかが判定される。即ち、ステップS1では、作成対象のエリア定義領域のエリアコードと同一のエリアコードを有するエリア定義領域が、既に作成されているかどうかが判定される。
ステップS1において、作成対象のエリア定義領域が既に作成されていると判定された場合、エリア作成処理を終了する。即ち、作成対象のエリア定義領域が既に作成されている場合は、同一のエリア定義領域を重複して作成する必要はないから、以降の処理は行われない。
また、ステップS1において、作成対象のエリア定義領域が作成されていないと判定された場合、ステップS2に進み、作成対象のエリア定義領域のコード範囲および割り当てブロック数(容量)が適正かどうかが判定される。即ち、ステップS2では、作成対象のエリア定義領域のコード範囲が、親エリアコードを有するエリア定義領域に記憶されているコード範囲に含まれており、かつ作成対象のエリア定義領域の割り当てブロック数が、親エリアコードを有するエリア定義領域に記憶されている空き容量以下であるかどうかが判定される。
ステップS2において、作成対象のエリア定義領域のコード範囲および割り当てブロック数が適正でないと判定された場合、即ち、作成対象のエリア定義領域のコード範囲が、親エリアコードを有するエリア定義領域に記憶されているコード範囲に含まれていないか、または作成対象のエリア定義領域の割り当てブロック数が、親エリアコードを有するエリア定義領域に記憶されている空き容量を越えている場合、ステップS3に進み、エラー処理が行われ、エリア作成処理を終了する。即ち、ステップS3では、例えば、親エリアコードを有するエリア定義領域を親の階層として、その子の階層となるエリア定義領域を作成することができない旨のメッセージが、発券機101に送信される。従って、この場合、エリア定義領域は作成されない。
一方、ステップS2において、作成対象のエリア定義領域のコード範囲および割り当てブロック数が適正であると判定された場合、即ち、作成対象のエリア定義領域のコード範囲が、親エリアコードを有するエリア定義領域に記憶されているコード範囲に含まれおり、かつ作成対象のエリア定義領域の割り当てブロック数が、親エリアコードを有するエリア定義領域に記憶されている空き容量以下である場合、ステップS4に進み、作成対象のエリア定義領域が、親エリアコードを有するエリア定義領域の階層(親の階層)の子の階層として作成される。
即ち、ステップS4では、EEPROM66(図4)の中の空きブロックのうち、最も下のブロック(論理アドレスの最も大きい空きブロック)が、作成対象のエリア定義領域に対応するエリア定義ブロックとして確保される。さらに、そのエリア定義ブロックに、コード範囲、空き容量、エリアキーなどが書き込まれる。ここで、ステップS4では、コード範囲およびエリアキーとしては、発券機101から送信されてきたものが、そのまま書き込まれる。また、空き容量としては、発券機101から送信されてきた割り当てブロック数から1を減算した値が書き込まれる。なお、空き容量として、割り当てブロック数から1を減算した値を書き込むのは、作成されたエリア定義領域が、1のブロックを使用するためである。
その後、ステップS5に進み、親エリアコードを有するエリア定義領域の空き容量が書き換えられ、エリア作成処理を終了する。即ち、ステップS5では、親エリアコードを有するエリア定義領域の空き容量から、割り当てブロック数を減算した値が、そのエリア定義領域の空き容量として、新たに書き込まれる。
図5に示した管理者B1,B2,Cのエリア定義領域#0100h,#1000h,#0300hは、以上のエリア作成処理が行われることで作成される。
即ち、ICカード2の発行時において、その発行者でもある管理者Aが、ICカード2のリソースすべてを有しており、ICカード2の使用可能な識別コードまたは容量が、例えば、0000h乃至FFFFhまたは65533ブロックであるとすると、ICカード2の発行時においては、エリア定義領域としては、コード範囲が0000h乃至FFFFhで、空き容量が65532となっている、最上位階層のエリア定義領域#0000hだけが存在している。
なお、本実施の形態では、図4に示したように、EEPROM66は、65536のブロックを有しているが、発行直後のICカード2において、使用可能な容量が、それより3ブロック少ない65533ブロックであるのは、図4に示したように、製造IDブロック、発行IDブロック、システム定義ブロックが存在するためである。
また、最上位階層のエリア定義領域#0000hの空き容量が、使用可能な容量である65533ブロックより1ブロック少ない65532ブロックとなるのは、エリア定義領域#0000h自体が、1ブロックを使用するためである。
管理者Aが、自身のリソースのうち、例えば、0100h乃至03FFhの範囲の識別コードと、33ブロックを、管理者B1に分け与える場合には、エリア作成処理が行われることにより、エリア定義領域#0100hが作成される。即ち、この場合、0100h乃至03FFhがコード範囲として、また、32ブロックが空き容量として、エリア定義領域#0100hに書き込まれる。なお、空き容量が、管理者Aから分け与えられる33ブロックより1ブロック少ないのは、エリア定義領域#0100h自体が、1ブロックを使用するからである。
エリア定義領域#0100hが作成されると、管理者Aのエリア定義領域#0000hの空き容量は、管理者B1に分け与えた33ブロックだけ減らされる。
また、管理者Aが、自身のリソースのうち、例えば、1000h乃至1FFFhの範囲の識別コードと、49ブロックを、管理者B2に分け与える場合には、エリア作成処理が行われることにより、エリア定義領域#1000hが作成される。即ち、この場合、1000h乃至1FFFhがコード範囲として、また、48ブロックが空き容量として、エリア定義領域#1000hに書き込まれる。なお、空き容量が、管理者Aから分け与えられる49ブロックより1ブロック少ないのは、エリア定義領域#1000h自体が、1ブロックを使用するからである。
エリア定義領域#1000hが作成されると、管理者Aのエリア定義領域#0000hの空き容量は、管理者B2に分け与えた33ブロックだけ減らされる。
管理者B1またはB2それぞれは、以上のようにして、エリア定義領域#0100hまたは#1000hが作成されると、そのエリア定義領域#0100hまたは#1000hの階層に、その子の階層としてのエリア定義領域や、サービス定義領域を作成することが可能となる。
例えば、いま、管理者B1が、自身のリソースのうち、例えば、0300h乃至03FFhの範囲の識別コードと、18ブロックを、管理者Cに分け与える場合には、エリア作成処理が行われることにより、エリア定義領域#0300hが作成される。即ち、この場合、0300h乃至03FFhがコード範囲として、また、17ブロックが空き容量として、エリア定義領域#0300hに書き込まれる。なお、空き容量が、管理者B1から分け与えられる18ブロックより1ブロック少ないのは、エリア定義領域#0300h自体が、1ブロックを使用するからである。
エリア定義領域#0300hが作成されると、管理者B1エリア定義領域#0100hの空き容量は、管理者Cに分け与えた18ブロックだけ減らされる。即ち、上述したように、エリア定義領域#0100hが作成された時点では、その空き領域は、32ブロックであったが、18ブロックだけ減らされて、図5に示したように、14ブロックとなる。
次に、図8のフローチャートを参照して、サービス作成処理について説明する。
ICカード2が発券機101に装着されると、発券機101は、ICカード2に対して、サービス定義領域を作成することを指令するコマンド(以下、定義、サービス作成コマンドという)と、そのサービス定義領域を作成するために必要な情報、即ち、例えば、作成するサービス定義領域のサービスコード、そのサービス定義領域に割り当てられたブロック数(これも、以下、適宜、割り当てブロック数という)、サービスキー、およびサービス定義領域を作成する階層のエリア定義領域のエリアコード(これも、以下、適宜、親エリアコードという)などを送信する。
ここで、サービス定義領域を作成するために必要な情報も、エリア作成処理における場合と同様に、セキュリティの観点から、例えば、親エリアコードを有するエリア定義領域に記憶されたエリアキーと同一のキーを用いて暗号化した状態で、ICカード2に送信するのが望ましい。
ICカード2(シーケンサ91)は、サービス作成コマンドを受信すると、それとともに送信されてくる暗号化された情報を復号し、これにより、親エリアコード、並びに作成対象のサービス定義領域のサービスコード、割り当てブロック数、およびサービスキーなどを認識する。
そして、ICカード2では、ステップS11において、作成対象のサービス定義領域が、EEPROM66の中に既に作成されているかどうかが判定される。即ち、ステップS11では、作成対象のサービス定義領域のサービスコードと同一のサービスコードを有するサービス定義領域が、既に作成されているかどうかが判定される。
ステップS11において、作成対象のサービス定義領域が既に作成されていると判定された場合、サービス作成処理を終了する。即ち、作成対象のサービス定義領域が既に作成されている場合は、同一のサービス定義領域を重複して作成する必要はないから、以降の処理は行われない。
また、ステップS11において、作成対象のサービス定義領域が作成されていないと判定された場合、ステップS12に進み、作成対象のサービス定義領域のサービスコードおよび割り当てブロック数(容量)が適正かどうかが判定される。即ち、ステップS12では、作成対象のサービス定義領域のサービスコードが、親エリアコードを有するエリア定義領域に記憶されているコード範囲に含まれており、かつ作成対象のサービス定義領域の割り当てブロック数が、親エリアコードを有するエリア定義領域に記憶されている空き容量以下であるかどうかが判定される。
ステップS12において、作成対象のサービス定義領域のサービスコードおよび割り当てブロック数が適正でないと判定された場合、即ち、作成対象のサービス定義領域のサービスコードが、親エリアコードを有するエリア定義領域に記憶されているコード範囲に含まれていないか、または作成対象のサービス定義領域の割り当てブロック数が、親エリアコードを有するエリア定義領域に記憶されている空き容量を越えている場合、ステップS13に進み、エラー処理が行われ、エリア作成処理を終了する。即ち、ステップS3では、例えば、親エリアコードを有するエリア定義領域の階層に、サービス定義領域を作成することができない旨のメッセージが、発券機101に送信される。従って、この場合、サービス定義領域は作成されない。
一方、ステップS12において、作成対象のサービス定義領域のサービスコードおよび割り当てブロック数が適正であると判定された場合、即ち、作成対象のサービス定義領域のサービスコードが、親エリアコードを有するエリア定義領域に記憶されているコード範囲に含まれおり、かつ作成対象のサービス定義領域の割り当てブロック数が、親エリアコードを有するエリア定義領域に記憶されている空き容量以下である場合、ステップS14に進み、作成対象のサービス定義領域が、親エリアコードを有するエリア定義領域の階層に作成される。
即ち、ステップS14では、EEPROM66(図4)の中の空きブロックのうち、最も下のブロック(論理アドレスの最も大きい空きブロック)が、作成対象のサービス定義領域に対応するサービス定義ブロックとして確保される。さらに、そのサービス定義ブロックに、サービスコード、容量、サービスキーなどが書き込まれる。ここで、ステップS14では、サービスコードおよびサービスキーとしては、発券機101から送信されてきたものが、そのまま書き込まれる。また、容量としては、発券機101から送信されてきた割り当てブロック数から1を減算した値が書き込まれる。なお、容量として、割り当てブロック数から1を減算した値を書き込むのは、作成されたサービス定義領域が、1のブロックを使用するためである。
また、ステップS14では、作成されたサービス定義領域に書き込まれた容量に対応する数の空きブロックが、論理アドレスの小さい順に選択され、そのサービス定義領域が管理するサービス領域を構成するユーザブロックとして確保され、ステップS15に進む。
ステップS15では、親エリアコードを有するエリア定義領域の空き容量が書き換えられ、サービス作成処理を終了する。即ち、ステップS15では、親エリアコードを有するエリア定義領域の空き容量から、割り当てブロック数を減算した値が、そのエリア定義領域の空き容量として、新たに書き込まれる。
図5に示した管理者A,B2,Cのサービス定義領域#0008h,#1022h,#030Chは、以上のサービス作成処理が行われることで作成される。
即ち、管理者Aが、自身のリソースのうち、例えば、0008hの識別コードと、9ブロックの容量を用いてサービスの提供を行う場合には、サービス作成処理が行われることにより、サービス定義領域#0008hが作成され、そこに、容量として、8ブロックが書き込まれる。さらに、8個の空きブロックがユーザブロックとして確保され、エリア定義領域#0008hによって管理されるサービス領域とされる。なお、サービス定義領域#0008hに書き込まれる容量が、9ブロックより1ブロック少ないのは、サービス定義領域#0008h自体が、1ブロックを使用するからである。
サービス定義領域#0008hが作成されると、管理者Aのエリア定義領域#0000hの空き容量は、サービス定義領域#0008hに分け与えた9ブロックだけ減らされる。
以上により、管理者Aは、サービス定義領域#0008hで管理される8ブロックのサービス領域を用いて、サービスを提供することが可能となる。
また、管理者B2が、自身のリソースのうち、例えば、1022hの識別コードと、5ブロックの容量を用いてサービスの提供を行う場合には、サービス作成処理が行われることにより、サービス定義領域#1022hが作成され、そこに、容量として、4ブロックが書き込まれる。さらに、4個の空きブロックがユーザブロックとして確保され、エリア定義領域#1022hによって管理されるサービス領域とされる。なお、サービス定義領域#1022hに書き込まれる容量が、5ブロックより1ブロック少ないのは、サービス定義領域#1022h自体が、1ブロックを使用するからである。
サービス定義領域#1022hが作成されると、管理者B2のエリア定義領域#1000hの空き容量は、サービス定義領域#1022hに分け与えた5ブロックだけ減らされる。即ち、上述したように、エリア定義領域#1000hが作成された時点では、その空き容量は、48ブロックであったが、5ブロックだけ減らされて、図5に示したように、43ブロックとなる。
以上により、管理者B2は、サービス定義領域#1022hで管理される4ブロックのサービス領域を用いて、サービスを提供することが可能となる。
さらに、管理者Cが、自身のリソースのうち、例えば、030Chの識別コードと、17ブロックの容量を用いてサービスの提供を行う場合には、サービス作成処理が行われることにより、サービス定義領域#030Chが作成され、そこに、容量として、16ブロックが書き込まれる。さらに、16個の空きブロックがユーザブロックとして確保され、エリア定義領域#030Chによって管理されるサービス領域とされる。なお、サービス定義領域#030Chに書き込まれる容量が、17ブロックより1ブロック少ないのは、サービス定義領域#030Ch自体が、1ブロックを使用するからである。
サービス定義領域#030Chが作成されると、管理者Cのエリア定義領域#0300hの空き容量は、サービス定義領域#030Chに分け与えた17ブロックだけ減らされる。即ち、上述したように、エリア定義領域#0300hが作成された時点では、その空き容量は、17ブロックであったが、17ブロックだけ減らされて、図5に示したように、0ブロックとなる。
以上により、管理者Cは、サービス定義領域#030Chで管理される16ブロックのサービス領域を用いて、サービスを提供することが可能となる。
以上のように、コード範囲および空き容量を記憶しているエリア定義領域に基づいて、EEPROM66を管理するようにしたので、ICカード2のリソース管理を行うことが可能となる。即ち、あるエリア定義領域の階層の中で使用可能な容量および識別コードを制限することができる。
ところで、ICカードを、複数の管理者によるサービスの提供に用いる場合には、その複数の管理者それぞれに、階層としてのDFを割り当て、そのDFに、各管理者によるサービスの提供に供するデータとしてのEFを格納するようにする方法が考えられる。
しかしながら、ISO7816等では、DFごとに、使用可能な容量や、DFおよびEFを識別するための識別コード(ファイル名やディレクトリ名に相当する)などのICカードのリソースを制限することが困難であった。
このため、識別コードが、異なる管理者の間で重複することを防止したり、管理者が、あらかじめ、契約等で定められた容量を超えてICカードが内蔵するメモリを使用することを制限すること等が困難であった。
ここで、上述したように、本実施の形態のICカード2においては、コード範囲および空き容量を記憶しているエリア定義領域に基づいて、EEPROM66を管理するようにしたので、ICカード2のリソース管理を行うことが可能となる。即ち、あるエリア定義領域の階層の中で使用可能な容量および識別コードを制限することができる。その結果、例えば、ある管理者が、自身に割り当てられたリソース(ここでは、使用可能な容量および識別コード)の一部を、他の管理者に分け与えて、ICカード2を共有したとしても、識別コードが、異なる管理者の間で重複することや、管理者が、あらかじめ、契約等で定められた容量を超えてEEPROM66を使用することなどを防止することができる。
次に、ICカード2では、図5で説明したように、EEPROM66の記憶領域が、エリア定義領域を階層とする階層構造をなしており、さらに、各エリア定義領域およびサービス定義領域に、認証のためのキー(本実施の形態では、エリア定義領域またはサービス定義領域のキーを、それぞれエリアキーまたはサービスキーと呼んでいる)が記憶されている結果、ICカード2に対するフレキシブルでセキュリティの高いアクセス制御を行うことが可能となっている。
即ち、管理者どうしの間において、例えば、図9に示すような情報のやりとりを行うことで、ICカード2に対するフレキシブルでセキュリティの高いアクセス制御を実現することができる。
具体的には、ICカード2の発行者でもある管理者Aは、EEPROM66(図4)のシステム定義ブロックに記憶させるシステムキーと、自身のエリア定義領域#0000hのエリアキーを決定し、システムキーをシステム定義ブロックに、エリアキー#0000hをエリア定義領域#0000hに、それぞれ記憶させておく。ここで、エリア定義領域#xxxxhのエリアキーを、以下、適宜、エリアキー#xxxxhと記載する。
さらに、管理者Aは、システムキーを、エリアキー#0000hで暗号化し、エリア中間キーKAを生成しておく。なお、暗号化の手法としては、例えば、DES(Data Encryption Standard)や、FEAL(Fast Data Encipherment Algolithm)などを採用することができる。
そして、管理者Aは、自身のリソースを、管理者B1に分け与えるとき、エリア中間キーKAを、管理者B1に与える。さらに、管理者Aは、管理者B1のエリアキー#0100hを決定し、自身のエリアコード#0000hとともに、管理者B1に与える(配布する)。
従って、管理者B1は、エリア中間キーKAおよび自身のエリアキー#0100hを認識することができるが、システムキー、および、いわば親である管理者Aのエリアキー#0000hは認識することができない。但し、管理者B1のエリアキー#0100hは、親である管理者Aが、いわば子である管理者B1に与えたものであるから、親である管理者Aは、子である管理者B1のエリアキー#0100hを認識している。
なお、管理者Aが管理者B1に与えたエリアキー#0100hは、管理者B1のエリア定義領域#0100hのエリア作成処理(図7)において、そのエリア定義領域#0100hに書き込まれる。
管理者B1は、その親である管理者Aから得たエリア中間キーKAを、やはり管理者Aから得たエリアキー#0100hで暗号化し、エリア中間キーKB1を生成しておく。
また、管理者Aは、自身のリソースを、管理者B2に分け与えるときも、エリア中間キーKAを、管理者B2に与える。さらに、管理者Aは、管理者B2のエリアキー#1000hを決定し、自身のエリアコード#0000hとともに、管理者B2に与える。
従って、管理者B2は、エリア中間キーKAおよび自身のエリアキー#1000hを認識することができるが、システムキー、および親である管理者Aのエリアキー#0000hは認識することができない。但し、管理者B2のエリアキー#1000hは、親である管理者Aが、子である管理者B2に与えたものであるから、親である管理者Aは、子である管理者B2のエリアキー#1000hを認識している。
なお、管理者Aが管理者B2に与えたエリアキー#1000hは、管理者B2のエリア定義領域#1000hのエリア作成処理において、そのエリア定義領域#1000hに書き込まれる。
管理者B2は、その親である管理者Aから得たエリア中間キーKAを、やはり管理者Aから得たエリアキー#1000hで暗号化し、エリア中間キーKB2を生成しておく。
一方、管理者B1は、自身のリソースを、管理者Cに分け与えるとき、エリア中間キーKB1を、管理者Cに与える。さらに、管理者B1は、管理者Cのエリアキー#0300hを決定し、自身のエリアコード#0100hおよび親である管理者Aのエリアコード#0000hとともに、管理者Cに与える。
従って、管理者Cは、エリア中間キーKB1および自身のエリアキー#03000hを認識することができるが、親である管理者B1のエリアキー#0100hは認識することができない。但し、エリアキー#0100hは、親である管理者B1が、子である管理者Cに与えたものであるから、親である管理者B1は、子である管理者Cのエリアキー#0300hを認識している。
なお、管理者B1が管理者Cに与えたエリアキー#0300hは、管理者Cのエリア定義領域#0300hのエリア作成処理において、そのエリア定義領域#0300hに書き込まれる。
管理者Cは、その親である管理者B1から得たエリア中間キーKB1を、やはり管理者B1から得たエリアキー#0300hで暗号化し、エリア中間キーKCを生成しておく。
そして、管理者Aは、自身のエリア定義領域#0000hの階層に作成されたサービス定義領域#0008hで管理されるサービス領域を利用してサービスを提供するとき、図10に示すように、サービス定義領域#0008hに記憶させたサービスキー(サービス定義領域#xxxxhに記憶されたサービスキーを、以下、適宜、サービスキー#xxxxhと記載する)を、エリア中間キーKAで暗号化し、サービス中間キーK#0008hを生成して、エリア中間キーKAとともに、サービス提供装置111に登録する。さらに、管理者Aは、自身のエリア定義領域#0000hのエリアコード#0000hと、そのエリア定義領域#0000hの階層に作成されたサービス定義領域#0008hのサービスコード#0008hも、サービス提供装置111に登録する。
ここで、サービス提供装置111は、例えば、図1のR/W1とコントローラ3から構成され、所定のサービス領域に対してデータを読み書きすることで、所定のサービスを提供するようになされている。
この場合、サービス提供装置111に、ICカード2が装着されると、サービス提供装置111とICカード2との間で、次のようにして相互認証が行われる。
即ち、サービス提供装置111は、図11に示すように、登録されているエリアコード#0000hと、サービスコード#0008hとを、ICカード2に送信する。ICカード2(シーケンサ91)では、サービス提供装置111からのエリアコード#0000hおよびサービスコード#0008hが受信される。
そして、ICカード2では、システム定義ブロック(図4)に記憶されているシステムキーが読み出されるとともに、サービス提供装置111から受信したエリアコード#0000hを有するエリア定義領域からエリアキー#0000hが読み出される。さらに、システムキーが、エリアキー#0000hで暗号化され、その結果、図10のサービス提供装置111に登録されているエリア中間キーKAと同一のキーが生成される。このエリア中間キーKAと同一のキーは、認証に用いる第1アクセスキー(認証キー)Kbcとされる。
また、ICカード2では、サービス提供装置111から受信したサービスコード#0008hを有するサービス定義領域からサービスキー#0008hが読み出される。そして、そのサービスキー#0008hで、エリア中間キーKAが暗号化され、その結果、図10のサービス提供装置111に登録されているサービス中間キーK#0008hと同一のキーが生成される。このサービス中間キーK#0008hと同一のキーは、認証に用いる第2アクセスキーKacとされる。
従って、いまの場合、サービス提供装置111には、第1アクセスキーKbcまたは第2アクセスキーKacであるエリア中間キーKAまたはサービス中間キーK#0008hが登録されており、ICカード2では、第1アクセスキーKbcまたは第2アクセスキーKacであるエリア中間キーKAまたはサービス中間キーK#0008hが生成される。
そして、サービス提供装置111は、例えば、図12に示すようにして、ICカード2の認証を行う。
即ち、サービス提供装置111では、乱数が発生され、その乱数が、アルゴリズムE1にしたがって変換される。即ち、乱数が、第2アクセスキーKacで暗号化(例えば、DES暗号化)され、その暗号化結果が、第1アクセスキーKbcで復号(例えば、DES復号)される。さらに、その復号結果が、第2アクセスキーKacで暗号化される。アルゴリズムE1による乱数の変換結果は、ICカード2に送信される。
ICカード2では、サービス提供装置111からのアルゴリズムE1による乱数の変換結果が、アルゴルズムD1にしたがって変換される。即ち、アルゴリズムE1による変換結果が、第2アクセスキーKacで復号され、その復号結果が、第1アクセスキーKbcで暗号化される。さらに、その暗号化結果が、第2アクセスキーKacで復号される。
そして、ICカード2では、アルゴリズムD1による変換結果が、さらに、アルゴリズムE2にしたがって変換される。即ち、アルゴリズムD1による変換結果が、第1アクセスキーKbcで暗号化される一方、第1アクセスキーKbcが、第2アクセスキーKacで暗号化される。そして、アルゴリズムD1による変換結果の、第1アクセスキーKbcでの暗号化結果が、第1アクセスキーKbcの、第2アクセスキーKacでの暗号化結果で復号される。さらに、その復号結果が、第1アクセスキーKbcで暗号化され、サービス提供装置111に送信される。
サービス提供装置111では、ICカード2からのアルゴリズムE2による変換結果が、アルゴリズムD2にしたがって変換される。即ち、アルゴリズムE2による変換結果が、第1アクセスキーKbcで復号される一方、第1アクセスキーKbcが、第2アクセスキーKacで暗号化される。そして、アルゴリズムE2による変換結果の、第1アクセスキーKbcでの復号結果が、第1アクセスキーKbcの、第2アクセスキーKacでの暗号化結果で暗号化される。さらに、その暗号化結果が、第1アクセスキーKbcで復号される。
そして、サービス提供装置111では、元の乱数と、アルゴリズムD2による変換結果とを比較することで、ICカード2の認証を行う。即ち、元の乱数と、アルゴリズムD2による変換結果とが一致している場合は、ICカード2が適正なものとして認識され、一致していない場合は、ICカード2が不適正なもの(例えば、偽造されたもの)として認識される。
ICカード2が適正なものとして認識されると、ICカード2において、例えば、図13に示すようにして、サービス提供装置111の認証が行われる。
即ち、ICカード2では、乱数が発生され、その乱数が、アルゴリズムE2にしたがって変換され、サービス提供装置111に送信される。
サービス提供装置111では、ICカード2からのアルゴリズムE2による乱数の変換結果が、アルゴルズムD2にしたがって変換される。さらに、そのアルゴリズムD2による変換結果が、アルゴリズムE1にしたがって変換され、ICカード2に送信される。
ICカード2では、サービス提供装置111からのアルゴリズムE1による変換結果が、アルゴリズムD1にしたがって変換され、その変換結果と、元の乱数とを比較することで、サービス提供装置111の認証が行われる。即ち、元の乱数と、アルゴリズムD2による変換結果とが一致している場合は、サービス提供装置111が適正なものとして認識され、一致していない場合は、サービス提供装置111が不適正なもの(例えば、改造されたもの)として認識される。
ICカード2およびサービス提供装置111のいずれも適正なものと認められた場合、ICカード2では、サービス提供装置111から送信されてきたサービスコードを有するサービス定義領域によって管理されているサービス領域のみへのアクセスが許可される。従って、図10および図11で説明した場合においては、サービス定義領域#0008hで管理されているサービス領域のみへのアクセスが可能となる。
即ち、エリア中間キーKA、エリアコード#0000h、サービスキー#0008h、およびサービスコード#0008hを知っている管理者Aは、サービス定義領域#0008hで管理されているサービス領域にアクセスすることができる。但し、管理者Aは、サービスキー#1022hや#030Chを知らないから、基本的に、サービス定義領域#1022hや#030Chで管理されているサービス領域にアクセスすることはできない。
次に、管理者B2が、自身のエリア定義領域#1000hの階層に作成されたサービス定義領域#1022hで管理されるサービス領域を利用してサービスを提供するときは、図14に示すように、サービス定義領域#1022hに記憶させたサービスキー#1022hを、エリア中間キーKB2で暗号化し、サービス中間キーK#1022hを生成して、エリア中間キーKB2とともに、サービス提供装置111に登録する。そして、管理者B2は、自身のエリア定義領域#1000hの階層より上位の階層のエリア定義領域のエリアコード、即ち、いまの場合、管理者Aのエリア定義領域#0000hのエリアコード#0000h、および自身のエリア定義領域#1000hのエリアコード#1000hと、そのエリア定義領域#1000hの階層に作成されたサービス定義領域#1022hのサービスコード#1022hも、サービス提供装置111に登録する。
この場合、サービス提供装置111に、ICカード2が装着されると、サービス提供装置111とICカード2との間で、次のようにして相互認証が行われる。
即ち、サービス提供装置111は、図15に示すように、登録されているエリアコード#0000hおよび#1000hと、サービスコード#1022hとを、ICカード2に送信する。ICカード2(シーケンサ91)では、サービス提供装置111からのエリアコード#0000hおよび#1000h、並びにサービスコード#1022hが受信される。
そして、ICカード2では、システム定義ブロック(図4)に記憶されているシステムキーが読み出されるとともに、サービス提供装置111から受信したエリアコード#0000hまたは#1000hを有するエリア定義領域それぞれからエリアキー#0000hまたは#1000hが読み出される。さらに、システムキーが、エリアキー#0000hで暗号化され、その結果、エリア中間キーKAと同一のキーが生成される。そして、そのエリア中間キーKAと同一のキーが、エリアキー#1000hで暗号化され、その結果、図14のサービス提供装置111に登録されているエリア中間キーKB2と同一のキーが生成される。このエリア中間キーKB2と同一のキーは、認証に用いる第1アクセスキーKbcとされる。
また、ICカード2では、サービス提供装置111から受信したサービスコード#1022hを有するサービス定義領域からサービスキー#1022hが読み出される。そして、そのサービスキー#1022hで、エリア中間キーKB2と同一のキーが暗号化され、その結果、図14のサービス提供装置111に登録されているサービス中間キーK#1022hと同一のキーが生成される。このサービス中間キーK#1022hと同一のキーは、認証に用いる第2アクセスキーKacとされる。
従って、いまの場合、サービス提供装置111には、第1アクセスキーKbcまたは第2アクセスキーKacであるエリア中間キーKB2またはサービス中間キーK#1022hが登録されており、ICカード2では、第1アクセスキーKbcまたは第2アクセスキーKacであるエリア中間キーKB2またはサービス中間キーK#1022hが生成される。
そして、ICカード2およびサービス提供装置111の間で、図12および図13で説明した場合と同様にして、相互認証が行われる。
その相互認証の結果、ICカード2およびサービス提供装置111のいずれも適正なものと認められた場合、ICカード2では、サービス提供装置111から送信されてきたサービスコードを有するサービス定義領域によって管理されているサービス領域のみへのアクセスが許可される。従って、図14および図15で説明した場合においては、サービス定義領域#1022hで管理されているサービス領域のみへのアクセスが可能となる。
即ち、エリア中間キーKB2、エリアコード#0000h、#1000h、サービスキー#1022h、並びにサービスコード#1022hを知っている管理者B2は、サービス定義領域#1022hで管理されているサービス領域にアクセスすることができる。但し、管理者B2は、サービスキー#0008hや#030Chを知らないから、基本的に、サービス定義領域#0008hや#030Chで管理されているサービス領域にアクセスすることはできない。
次に、管理者Cが、自身のエリア定義領域#0300hの階層に作成されたサービス定義領域#030Chで管理されるサービス領域を利用してサービスを提供するときは、図16に示すように、サービス定義領域#030Chに記憶させたサービスキー#030Chを、エリア中間キーKCで暗号化し、サービス中間キーK#030Chを生成して、エリア中間キーKCとともに、サービス提供装置111に登録する。そして、管理者Cは、自身のエリア定義領域#0300hの階層より上位の階層のエリア定義領域のエリアコード、即ち、いまの場合、管理者Aのエリア定義領域#0000hのエリアコード#0000hおよび管理者B1のエリア定義領域#0100hのエリアコード0100h、並びに自身のエリア定義領域#0300hのエリアコード#0300hと、そのエリア定義領域#0300hの階層に作成されたサービス定義領域#030Chのサービスコード#030Chも、サービス提供装置111に登録する。
この場合、サービス提供装置111に、ICカード2が装着されると、サービス提供装置111とICカード2との間で、次のようにして相互認証が行われる。
即ち、サービス提供装置111は、図17に示すように、登録されているエリアコード#0000h、#0100h、および#0300hと、サービスコード#030Chとを、ICカード2に送信する。ICカード2(シーケンサ91)では、サービス提供装置111からのエリアコード#0000h、#0100h、および#0300h、並びにサービスコード#030Chが受信される。
そして、ICカード2では、システム定義ブロック(図4)に記憶されているシステムキーが読み出されるとともに、サービス提供装置111から受信したエリアコード#0000h、#0100h、または#0300hを有するエリア定義領域それぞれからエリアキー#0000h、#0100h、または#0300hが読み出される。さらに、システムキーが、エリアキー#0000hで暗号化され、その結果、エリア中間キーKAと同一のキーが生成される。また、そのエリア中間キーKAと同一のキーが、エリアキー#0100hで暗号化され、その結果、エリア中間キーKB1と同一のキーが生成される。そして、そのエリア中間キーKB1と同一のキーが、エリアキー#0300hで暗号化され、その結果、図16のサービス提供装置111に登録されているエリア中間キーKCと同一のキーが生成される。このエリア中間キーKCと同一のキーは、認証に用いる第1アクセスキーKbcとされる。
また、ICカード2では、サービス提供装置111から受信したサービスコード#030Chを有するサービス定義領域からサービスキー#030Chが読み出される。そして、そのサービスキー#030Chで、エリア中間キーKCが暗号化され、その結果、図16のサービス提供装置111に登録されているサービス中間キーK#030Chと同一のキーが生成される。このサービス中間キーK#030Chと同一のキーは、認証に用いる第2アクセスキーKacとされる。
従って、いまの場合、サービス提供装置111には、第1アクセスキーKbcまたは第2アクセスキーKacであるエリア中間キーKCまたはサービス中間キーK#030Chがそれぞれ登録されており、ICカード2では、第1アクセスキーKbcまたは第2アクセスキーKacであるエリア中間キーKCまたはサービス中間キーK#030Chがそれぞれ生成される。
そして、ICカード2およびサービス提供装置111の間で、図12および図13で説明した場合と同様にして、相互認証が行われる。
その相互認証の結果、ICカード2およびサービス提供装置111のいずれも適正なものと認められた場合、ICカード2では、サービス提供装置111から送信されてきたサービスコードを有するサービス定義領域によって管理されているサービス領域のみへのアクセスが許可される。従って、図16および図17で説明した場合においては、サービス定義領域#030Chで管理されているサービス領域のみへのアクセスが可能となる。
即ち、エリア中間キーKC、エリアコード#0000h、#0100h、#0300h、サービスキー#030Ch、並びにサービスコード#030Chを知っている管理者Cは、サービス定義領域#030Chで管理されているサービス領域にアクセスすることができる。但し、管理者Cは、サービスキー#0008hや#1022Chを知らないから、基本的に、サービス定義領域#0008hや#1022Chで管理されているサービス領域にアクセスすることはできない。
以上のように、上位の階層のエリアキーを知らなくても、管理者は、自身のサービス領域にアクセスすることができる。
ところで、上述のように、各管理者は、サービスキーを知らないサービス定義領域によって管理されるサービス領域にはアクセスすることができないが、例えば、管理者Cが、自身のサービス定義領域#030Chによって管理されるサービス領域を利用したサービスの他、管理者B2のサービス定義領域#1022hによって管理されるサービス領域を利用したサービスも行いたい場合がある。
この場合、管理者Cが、サービス定義領域#1022hによって管理されるサービス領域にアクセスするには、図14および図15で説明したように、エリア中間キーKB2、エリアコード#0000h、#1000h、サービスキー#1022h、並びにサービスコード#1022hを知る必要があり、従って、単純には、これらの情報を、管理者B2から教えてもらう必要がある。
しかしながら、管理者B2が知っているサービスキー#1022hは、その親である管理者Aでも知り得ないものであり、このような管理者B2しか知り得ないサービスキー#1022hを、管理者Cに教えてしまうのは、セキュリティの観点から好ましくない。
また、この場合、セキュリティの問題を無視しても、管理者Cが、サービス定義領域#030Chまたは#1022hによってそれぞれ管理される2つのサービス領域の両方にアクセスするには、ICカード2において、図15で説明した処理を行うことにより、第1アクセスキーKbcおよび第2アクセスキーKacを生成し、サービス定義領域#030Chによって管理されるサービス領域へのアクセスのための相互認証を行うとともに、図17で説明した処理を行うことにより第1アクセスキーKbcおよび第2アクセスキーKacを生成し、サービス定義領域#1022hによって管理されるサービス領域へのアクセスのための相互認証を行う必要がある。
従って、サービス領域ごとに、そのサービス領域へのアクセスのための相互認証を行う場合には、各サービス領域に、迅速にアクセスすることが困難となり、その結果、例えば、図1のカードシステムを駅の改札に通用した場合には、通勤者が、改札口に設けられているゲートを通過する、比較的に短い時間に、ICカード2の所定のサービス領域にアクセスして、データを書き込み、または読み出すことが困難となる。
そこで、例えば、管理者Cが、自身のサービス定義領域#030Chによって管理されるサービス領域を利用したサービスの他、管理者B2のサービス定義領域#1022hによって管理されるサービス領域を利用したサービスも行う場合には、セキュリティの問題を解決し、かつサービス領域への迅速なアクセスを確保するために、管理者CおよびB2との間で、例えば、図18に示すような、情報のやりとりを行い、サービス提供装置111への登録を行う。
即ち、管理者Cは、図16における場合と同様に、サービス定義領域#030Chに記憶させたサービスキー#030Chを、エリア中間キーKCで暗号化し、サービス中間キーK#030Chを生成する。さらに、管理者Cは、このサービス中間キーK#030Chを、管理者B2に渡し、サービスキー#1022hで暗号化してもらう。そして、管理者Cは、サービス中間キーK#030Chの、サービスキー#1022hでの暗号化結果であるサービス中間キーK#1022h'を、サービスコード#1022hとともに受け取る。
従って、管理者CとB2との間でやりとりされるキーは、サービス中間キーK#030ChおよびK#1022h'だけであり、管理者Cしか知り得ないサービスキー#030Chが、管理者B2に知られたり、また、管理者B2しか知り得ないサービスキー#1022hが、管理者Cに知られることはない。即ち、セキュリティ上の問題はない。
管理者B2から、サービス中間キーK#1022h'およびサービスコード#1022hを受け取った管理者Cは、それらとともに、自身のエリア定義領域#0300hの階層より上位の階層のエリア定義領域のエリアコード、即ち、いまの場合、管理者Aのエリア定義領域#0000hのエリアコード#0000hおよび管理者B1のエリア定義領域#0100hのエリアコード0100h、並びに自身のエリア定義領域#0300hのエリアコード#0300hを、サービス提供装置111に登録する。さらに、管理者Cは、エリア中間キーKC、およびエリア定義領域#0300hの階層に作成されたサービス定義領域#030Chのサービスコード#030Chも、サービス提供装置111に登録する。
この場合、サービス提供装置111に、ICカード2が装着されると、サービス提供装置111とICカード2との間で、次のようにして相互認証が行われる。
即ち、サービス提供装置111は、図19に示すように、登録されているエリアコード#0000h、#0100h、および#0300hと、サービスコード#030Chおよび#1022hとを、ICカード2に送信する。ICカード2(シーケンサ91)では、サービス提供装置111からのエリアコード#0000h、#0100h、および#0300h、並びにサービスコード#030Chおよび#1022hが受信される。
そして、ICカード2では、システム定義ブロック(図4)に記憶されているシステムキーが読み出されるとともに、サービス提供装置111から受信したエリアコード#0000h、#0100h、または#0300hを有するエリア定義領域それぞれからエリアキー#0000h、#0100h、または#0300hが読み出され、図17で説明した場合と同様にして、図18のサービス提供装置111に登録されているエリア中間キーKCと同一のキーが生成される。このエリア中間キーKCと同一のキーは、認証に用いる第1アクセスキーKbcとされる。
また、ICカード2では、サービス提供装置111から受信したサービスコード#030Chまたは#1022hを有するサービス定義領域それぞれからサービスキー#030Chまたは#1022hが読み出される。そして、まず、サービスキー#030Chで、エリア中間キーKCが暗号化され、その結果、サービス中間キーK#030Chと同一のキーが生成される。さらに、そのサービス中間キーK#030Chと同一のキーが、サービスキー#1022hで暗号化され、図18のサービス提供装置111に登録されているサービス中間キーK#1022h'と同一のキーーが生成される。このサービス中間キーK#1022h'と同一のキーは、認証に用いる第2アクセスキーKacとされる。
従って、いまの場合、サービス提供装置111には、第1アクセスキーKbcまたは第2アクセスキーKacであるエリア中間キーKCまたはサービス中間キーK#1022h'が登録されており、ICカード2では、第1アクセスキーKbcまたは第2アクセスキーKacであるエリア中間キーKCまたはサービス中間キーK#1022h'が生成される。
そして、ICカード2およびサービス提供装置111の間で、図12および図13で説明した場合と同様にして、相互認証が行われる。
その相互認証の結果、ICカード2およびサービス提供装置111のいずれも適正なものと認められた場合、ICカード2では、サービス提供装置111から送信されてきたサービスコードを有するサービス定義領域によって管理されているサービス領域のみへのアクセスが許可される。従って、図18および図19で説明した場合においては、サービス定義領域#030Chで管理されているサービス領域、およびサービス定義領域#1022Chで管理されているサービス領域へのアクセスが可能となる。
以上のように、システムキーを、2以上のエリアキーまたはサービスキーで暗号化することにより、その2以上のエリアキーまたはサービスキーを、2つの第1アクセスキーKbcおよび第2アクセスキーKacに縮退(合成)し、その第1アクセスキーKbcおよび第2アクセスキーKacを用いて、サービス提供装置111から送信されてきたサービスコードを有するサービス定義領域によって管理されているサービス領域へのアクセスを許可するための相互認証を行うようにしたので、複数のサービス定義領域へのアクセスを対象とする場合でも、短時間で、相互認証を終了することができ、これにより、サービス領域への迅速なアクセスを確保することができる。
なお、図12および図13で説明した場合には、相互認証処理を、第1アクセスキーKbcおよび第2アクセスキーKacの2つのキーを用いて行うようにしたが、例えば、第2アクセスキーKacだけを用いて行うようにすることも可能である。この場合、ICカード2では、システムキーを、2以上のエリアキーまたはサービスキーで暗号化することにより、その2以上のエリアキーまたはサービスキーが、1の第2アクセスキーKacに縮退されることになる。
また、相互認証には、図20に示すように、第1アクセスキーKbcおよび第2アクセスキーKacを、ICカード2に固有の値である、例えば、製造IDブロックに記憶された製造IDなどで暗号化した暗号化結果を用いることも可能である。ここで、図20においては、第1アクセスキーKbcについては、製造IDとのEXORをとられることで暗号化が行われており、第2アクセスキーKacについては、DES方式による暗号化が行われている。なお、第2アクセスキーKacについては、第1アクセスキーKbcと製造IDとのEXORの結果をキーとして、DES方式による暗号化を行うことも可能である。
このように、第1アクセスキーKbcおよび第2アクセスキーKacを暗号化した暗号化結果を相互認証に用いる場合には、セキュリティを、より向上させることが可能となる。なお、この場合、サービス提供装置111において、製造IDが必要となるが、これは、ICカード2から送信するようにすれば良い。
次に、EEPROM66の記憶領域が、エリア定義領域を階層とする階層構造をなしており、さらに、各エリア定義領域およびサービス定義領域が、認証のためのエリアキーおよびサービスキーを記憶するようになされている結果、例えば、次のような、フレキシビリティのあるアクセス制御を行うことができる。
即ち、例えば、ある管理者を、親の管理者として、そのリソースを分け与えられた子の管理者が、不正なサービスなどを行っており、そのサービスの提供を停止させたい場合には、親の管理者が、そのエリア定義領域に記憶されたエリアキーを変更することで、子の管理者による、ICカード2へのアクセスを禁止することができる。
具体的には、例えば、図5において、管理者B1が、管理者Cによるサービスの提供を停止させる場合、ICカード2のエリア定義領域#0100hに記憶されたエリアキー#0100hを変更する。この場合、図17において、ICカード2において生成されるエリア中間キーKB1、さらには、エリア中間キーKCも変更されることとなるから、変更前のエリア中間キーKCしか知らない管理者Cは、サービス定義領域#030Chにアクセスすることはできなくなる。
なお、管理者Cの親の管理者である管理者B1の、さらに親の管理者である管理者Aが、そのエリア定義領域#0000hに記憶されたエリアキー#0000hを変更することによっても、サービス定義領域#030Chへのアクセスを禁止することが可能である。但し、この場合は、管理者Aの子の管理者B2が、自身のサービス定義領域#1022hによって管理されるサービス領域にアクセスすることもできなくなる。即ち、ある管理者が、そのエリアキーを変更した場合には、そのエリア定義領域の階層の中にある階層(子の階層、孫の階層、・・・)のエリア定義領域が管理しているサービス定義領域へのアクセスはできなくなる。
また、図18および図19では、管理者Cが、管理者B2のサービス定義領域#1022h(によって管理されるサービス領域)を、管理者B2と共有する場合について説明したが、キーの管理によっては、管理者どうしの間で、より複雑な関係のサービス定義領域の共有が可能となる。
具体的には、例えば、いま、EEPROM66において、図21に示すような階層構造が構成されているとする。即ち、図21では、ICカード2の発行者でもある管理者Aのエリア定義領域#0000hの階層の子の階層として、管理者Eのエリア定義領域#5000h、および管理者Gのエリア定義領域#7000hが作成されている。さらに、管理者Eのエリア定義領域#5000hの階層には、サービス定義領域#5008h、#5048h、#5088h、および#50C8hが作成されているとともに、管理者Fのエリア定義領域#6000hが作成されている。
また、管理者Fのエリア定義領域#6000hの階層には、サービス定義領域#6008hおよび#6048hが作成されており、管理者Gのエリア定義領域#7000hの階層には、サービス定義領域#7008hおよび#70C8hが作成されている。
以上のような階層構造において、管理者Aは、図22(A)に示すように、システムキーを、エリアキー#0000hで暗号化し、その暗号化結果を、子の管理者である管理者EおよびGに渡す。
管理者Eは、図22(B)に示すように、管理者Aからの、システムキーの、エリアキー#0000hでの暗号化結果を、エリアキー#5000hで暗号化し、その暗号化結果を、第1アクセスキーKE1として用いることとする。さらに、管理者Eは、第1アクセスキーKE1(エリアキー#5000hによる暗号化結果)を、サービスキー#5008h、#5048h、#5088h、#50C8hで順次暗号化し、その最終的な暗号化結果を、第2アクセスキーKE2として用いることとする。
また、管理者Fは、図22(C)に示すように、管理者Eから第1アクセスキーKE1(エリアキー#5000hによる暗号化結果)をもらい、それを、エリアキー#6000hで暗号化し、その暗号化結果を、第1アクセスキーKF1とする。さらに、管理者Fは、第1アクセスキーKF1(エリアキー#6000hによる暗号化結果)を、サービスキー#6008h,#6048hで順次暗号化する。そして、その暗号化結果を、管理者Eに渡し、サービスキー#5048h、#5088hで順次暗号化してもらう。その後、管理者Fは、その暗号化結果を、管理者Eからもらい、管理者Gに渡し、サービスキー#70C8hで暗号化してもらう。そして、管理者Fは、その暗号化結果を、管理者Gからもらい、第2アクセスキーKF2として用いることとする。
一方、管理者Gは、図22(D)に示すように、管理者Aからの、システムキーの、エリアキー#0000hでの暗号化結果を、エリアキー#7000hで暗号化し、その暗号化結果を、第1アクセスキーKG1として用いることとする。さらに、管理者Gは、第1アクセスキーKG1(エリアキー#7000hによる暗号化結果)を、サービスキー#7008h、#70C8hで順次暗号化し、その最終的な暗号化結果を、管理者Fに渡して、サービスキー#6048hで暗号化してもらう。その後、管理者Gは、管理者Fによるサービスキー#6048を用いた暗号化結果を、管理者Eに渡し、サービスキー#5088h、#50C8hで順次暗号化してもらう。そして、管理者Gは、その暗号化結果を、管理者Eからもらい、第2アクセスキーKG2として用いることとする。
この場合、ICカード2において、図22で説明した場合と同様の手順で、EEPROM66に記憶されているエリアキー、サービスキーを用いて、システムキーを暗号化し、第1アクセスキーおよび第2アクセスキーを生成することで、管理者E,F,G相互の間では、図23に示すようなサービス定義領域の共有が可能となる。
即ち、管理者Eは、自身のサービス定義領域#5008、#5048h、#5088h、#50C8hのみにアクセスすることができる。管理者Fは、自身のサービス定義領域#6008h、#6048hにアクセスする他、管理者Eのサービス定義領域#5048h、#5088h、および管理者Gのサービス定義領域#70C8hにアクセスすることが可能となる。管理者Gは、自身のサービス定義領域#7008h、#70C8hにアクセスする他、管理者Eのサービス定義領域#5088h、#50C8h、および管理者Fのサービス定義領域#6048hにアクセスすることが可能となる。
なお、図22に示したようなキーの受け渡しにおいて、ある管理者のサービスキー自体が、他の管理者に知られることはない。即ち、管理者Eのサービスキー#5008h、#5048h、#5088h、#50C8hは、親の管理者Aは勿論、管理者FおよびGにも知られることはない。同様に、管理者Fのサービスキー#6008h、#6048hは、管理者EおよびGに知られることはなく、管理者Gのサービスキー#7008h、#70C8hは、管理者EおよびFに知られることはない。
また、上述したように、ある管理者が、そのエリアキーを変更した場合には、そのエリア定義領域の階層の中にある階層のエリア定義領域が管理しているサービス定義領域すべてへのアクセスはできなくなるが、即ち、親の管理者がエリアキーを変更した場合には、その子の管理者は、ICカード2へのアクセスをすることができなくなるが、キー管理の仕方によっては、特定の子の管理者だけのアクセスを禁止することが可能となる。
具体的には、例えば、いま、EEPROM66において、図24に示すような階層構造が構成されているとする。即ち、図24では、ICカード2の発行者でもある管理者Aのエリア定義領域#0000hの階層の子の階層として、管理者Hのエリア定義領域#8000h、管理者Iのエリア定義領域#9000h、および管理者Jのエリア定義領域#A000hが作成されている。さらに、管理者Hのエリア定義領域#8000hの階層には、サービス定義領域#8008h、#8104h、および#8105hが作成されている。
以上のような階層構造において、管理者Aは、図25(A)に示すように、システムキーを、エリアキー#0000hで暗号化し、その暗号化結果を、子の管理者である管理者IおよびJに渡す。
管理者Iは、図25(C)に示すように、管理者Aからの、システムキーの、エリアキー#0000hでの暗号化結果を、エリアキー#9000hで暗号化し、その暗号化結果を、第1アクセスキーKI1として用いることとする。さらに、管理者Iは、第1アクセスキーKI1(エリアキー#9000hによる暗号化結果)を、管理者Hに渡し、図25(B)に示すように、サービスキー#8008h、#8104hで順次暗号化してもらう。そして、管理者Iは、その暗号化結果を、図25(C)に示すように、第2アクセスキーKI2として用いることとする。
また、管理者Jは、図25(D)に示すように、管理者Aからの、システムキーの、エリアキー#0000hでの暗号化結果を、エリアキー#A000hで暗号化し、その暗号化結果を、第1アクセスキーKJ1として用いることとする。さらに、管理者Jは、第1アクセスキーKJ1(エリアキー#A000hによる暗号化結果)を、管理者Hに渡し、図25(B)に示すように、サービスキー#8008h、#8105hで順次暗号化してもらう。そして、管理者Jは、その暗号化結果を、図25(D)に示すように、第2アクセスキーKJ2として用いることとする。
この場合、ICカード2において、図25で説明した場合と同様の手順で、EEPROM66に記憶されているエリアキー、サービスキーを用いて、システムキーを暗号化し、第1アクセスキーおよび第2アクセスキーを生成することで、管理者Iは、管理者Hのサービス定義領域#8008hおよび#8104hにアクセスすることが、管理者Jは、管理者Hのサービス定義領域#8008hおよび#8105hにアクセスすることが、それぞれ可能となる。
一方、管理者Hは、サービス定義領域#8008hを、管理者IおよびJとの間でデータを共有するものとして作成しておき、サービス定義領域#8104hまたは#8105hを、管理者IまたはJそれぞれによるサービス定義領域#8008hへのアクセスを制御するための、いわばダミーのサービス定義領域として作成しておく。従って、サービス定義領域#8104hおよび#8105hで管理されるサービス領域は必要なく、その容量は0ブロックで良い。
この場合において、管理者Hが、例えば、サービスキー#8104hを変更すると、ICカード2において、そのサービスキー#8104hを用いて、第2アクセスキーKI2が生成されて認証が行われる管理者Iは、サービス定義領域#8008hにアクセスすることができなくなる。即ち、管理者Iによるサービス定義領域#8008hへのアクセスだけが禁止される。一方、管理者Hが、例えば、サービスキー#8105hを変更すると、ICカード2において、そのサービスキー#8105hを用いて、第2アクセスキーKJ2が生成されて認証が行われる管理者Jは、サービス定義領域#8008hにアクセスすることができなくなる。即ち、管理者Jによるサービス定義領域#8008hへのアクセスだけが禁止される。
以上のように、ダミーのサービス定義領域を利用することで、特定の子の管理者だけのアクセスを禁止することができる。
以上、本発明を、非接触で通信が行われる非接触カードシステムに適用した場合について説明したが、本発明は、接触した状態で通信が行われるカードシステムにも適用可能である。また、本発明の適用範囲は、カードシステムに限定されるものではない。
なお、本実施の形態では、認証を、いわゆる秘密鍵方式で行うようにしたが、認証は、いわゆる公開鍵方式で行うようにすることも可能である。
また、本実施の形態では、あるエリア定義領域の階層のサービス定義領域にアクセスするときに、そのエリア定義領域の階層から、最上位階層までのパス上にあるエリア定義領域のエリアキーを順次用いて、第1アクセスキーを生成するようにしたが、第1アクセスキーの生成方法は、これに限定されるものではない。さらに、本実施の形態では、アクセス対象のサービス定義領域のサービスキーを順次用いて、第2アクセスキーを生成するようにしたが、第2アクセスキーの生成方法も、これに限定されるものではない。即ち、第1アクセスキーおよび第2アクセスキーは、任意の2以上のエリアキーまたはサービスキーを順次用いて生成することが可能である。
さらに、本実施の形態では、ユーザブロックおよびシステムブロックのいずれも、1のメモリであるEEPROM66に記憶させるようにしたが、ユーザブロックとシステムブロックとは、物理的に、別々のメモリに記憶させるようにすることが可能である。
また、本実施の形態では、データをEEPROMに記憶させるようにしたが、本発明は、EEPROM以外の半導体メモリや、磁気ディスクなどを対象とすることも可能である。
本実施の形態に記載のデータ記憶装置およびデータ記憶方法によれば、管理対象の記憶領域に割り当て可能な、記憶領域を識別するための記憶領域識別コードの範囲、および管理対象の記憶領域の空き容量を記憶するエリア定義領域を有する記憶手段のエリア定義領域の記憶内容に基づいて、記憶手段が管理される。従って、記憶手段のリソース管理を行うことが可能となる。
本実施の形態に記載のデータ記憶装置およびに記載のデータ記憶方法によれば、データ記憶手段の記憶領域が階層構造にされて管理されており、データ記憶手段の記憶領域の各階層に対する階層キー、またはデータが記憶された記憶領域に対するデータ記憶領域キーを、2以上用いて、認証に用いる1以上の認証キーが生成され、その認証キーに基づいて、認証が行われる。従って、データ記憶手段に対する、フレキシブルでセキュリティの高いアクセス制御を行うことが可能となる。
1 リーダ/ライタ, 2 ICカード, 3 コントローラ, 21 IC, 23 変調回路, 25 復調回路, 27 アンテナ, 51 IC, 52 コンデンサ, 53 アンテナ, 61 RFインタフェース部, 62 BPSK復調回路, 63 PLL部, 64 演算部, 65 ROM, 66 EEPROM, 67 RAM, 68 BPSK変調回路, 81 ASK復調部, 82 電圧レギュレータ, 83 発振回路, 84 ASK変調部, 91 シーケンサ, 92 暗号/復号部, 93 パリティ演算部, 101 発券機, 111 サービス提供装置