以下に本発明の実施の形態を説明するが、特許請求の範囲に記載の発明の各手段と以下の実施の形態との対応関係を明らかにするために、各手段の後の括弧内に、対応する実施の形態(但し一例)を付加して本発明の特徴を記述すると、次のようになる。但し勿論この記載は、各手段を記載したものに限定することを意味するものではない。
請求項1に記載の情報処理装置は、所定のシステムを提供するプロバイダの装置からのコマンドを受信する受信手段(例えば、図3のアンテナ53,RFインタフェース部61、およびBPSK復調回路62)と、コマンドを処理する処理手段(例えば、図3のシーケンス91)と、処理の結果を送信する送信手段(例えば、図3のアンテナ53,RFインタフェース部61、およびBPSK変調回路68)と、1以上のユーザブロックが所定の大きさのブロック単位で管理され、複数のプロバイダの装置が利用するデータを記憶するユーザブロック領域と、ユーザブロックの利用を定義する複数の領域定義ブロックおよびシステムIDブロックを有するシステムブロック領域とが形成される記憶手段(例えば、図3のEEPROM66)とを備え、ユーザブロック領域には、記憶手段のブロックのうちの、システムブロック領域として使用されていないブロックが割り当てられ、領域定義ブロックは、ユーザブロック領域の所定のユーザブロックに対して複数の領域定義ブロックが割り当てられるように定義されるとともに、その複数の領域定義ブロックは、割り当てられたユーザブロックに対してリード/ライトとリードオンリーの異なるアクセス権を設定することを特徴とする。
図1は、R/W1およびICカード2を利用した非接触カードシステムの一例を示している。R/W1およびICカード2は、電磁波を利用して非接触で、データの送受信を行う。
R/W1が、所定のコマンドをICカード2に送信すると、ICカード2は、そのコマンドを受信し、そのコマンドに対応する処理を行うようになされている。
本発明の情報処理装置の一実施の形態であるICカード2は、R/W1がデータをICカード2に送信すると、そのコマンドを受信し、受信したコマンドを処理し、その処理結果に対応する応答データをR/W1に送信するようになされている。
また、R/W1は、所定のインタフェース(例えばRS−485A)を介してコントローラ3に接続され、コントローラ3より所定の制御信号を供給され、その制御信号に従って、処理を行うようになされている。
図2は、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は、発振器26より供給された所定の周波数(例えば13.56MHz)の搬送波を、SPU32より供給されたデータで、ASK(Amplitude Shift Keying)変調し、生成された変調波をアンテナ27を介して、電磁波としてICカード2に出力するようになされている。このとき、変調回路23は、変調度を1未満にして、ASK変調を行う。即ち、データがローレベルのときにおいても、変調波の最大振幅がゼロにならないようにする。
復調回路25は、アンテナ27を介して受信した変調波(ASK変調波)を復調し、復調されたデータをSPU32に出力するようになされている。
図3は、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変調部84は、演算部64より供給されたデータに対応して、ICカード2の電源としてのアンテナ53の負荷を変動させる(例えば、データに対応して所定のスイッチング素子をオン/オフさせ、スイッチング素子がオン状態であるときだけ所定の負荷をアンテナ53に並列に接続させる)ことにより、アンテナ53を介して受信している変調波(ICカード2からデータを送信するときは、変調波の最大振幅を一定にしている)を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に記憶されているデータの処理を行う。
演算部64のパリティ演算部93は、EEPROM66に記憶されるデータや、EEPROM66に記憶されているデータから、パリティとして、リードソロモン符号を算出するようになされている。
さらに、演算部64は、シーケンサ91で所定の処理を行った後、その処理に対応する応答データ(R/W1に送信するデータ)をBPSK変調回路68に出力するようになされている。
BPSK変調回路68は、演算部64より供給されたデータをBPSK変調し(後述)、変調後のデータをRFインタフェース部61のASK変調部84に出力するようになされている。
RAM67は、シーケンサ91が処理を行うとき、処理の途中のデータなどを、一時的に記憶するようになされている。
EEPROM(Electrically Erasable and Programmable ROM)66は、不揮発性のメモリであり、ICカード2がR/W1との通信を終了し、電力供給が停止した後も、データを記憶し続けるようになされている。ROM65には、シーケンサ91がR/W1からのコマンドを処理するのに必要な基礎的なプログラムが記憶されている。
図4は、EEPROM66のメモリの割り当ての一例を示している。
EEPROM66は、40バイトの物理ブロックを、256個有している。各物理ブロックは、32バイトのデータ部(D00乃至D1f)、2バイトのアトリビュート部(AT1,AT2)、および、6バイトのパリティ部(P0乃至P5)の合計40バイトで構成されている。
EEPROM66の物理ブロック番号ffH(Hは16進数を表している)は、システムIDブロックに割り当てられている。システムIDブロックは、ICカード2のセキュリティに関する情報を記憶している。
次に、物理ブロック番号fdHから00Hに向かって順次、物理ブロックが、共通領域定義ブロック(Common Area Definition Block)(第1の領域)またはプロバイダ領域定義ブロック(Provider Area Definition Block)(第1の領域)に割り当てられている。
EEPROM66には、ICカード2が発行されるとき、所定の装置(発行機)により、このICカード2を利用したシステムを提供する者(プロバイダ)が登録される。発行機は、1プロバイダ当たり1物理ブロックで、プロバイダ領域定義ブロックを、物理ブロック番号fdHから00Hに向かって順次使用し、プロバイダを登録する。
共通領域定義ブロックおよびプロバイダ領域定義ブロックは、プロバイダが使用する記憶領域の位置などの情報を記憶している。
そして、システムIDブロック、共通領域定義ブロック、およびプロバイダ領域定義ブロックとして利用されない物理ブロックが、プロバイダにより使用されるユーザブロック(User Block)に割り当てられる。
図5は、システムIDブロックに対する各データの割り当ての一例を示している。
データ部のD00乃至D0fは、EEPROM66の製造時の製造ID(Manufacture ID)(IDm)が記憶されている。領域D00乃至D03、領域D04乃至D07、領域D08乃至D0b、および、領域D0c乃至D0fは、EEPROM66のICコード、EEPROM66を作成した製造機のコード(Manufacture Equipment Code)、EEPROM66の製造日(Manufacture Date)、および、EEPROM66の製造シリアルナンバ(Manufacture Serial Number)を、それぞれ記憶している。
このIDmの情報を利用することにより、すべてのICカード2(EEPROM66)の識別を行うことができる。なお、製造日は、2000年1月1日を0000Hとして、2000年1月1日からの日数とする。なお、製造日が1990年台である場合、製造日は、2の補数を利用して、2000年1月1日からの負の日数として表現される。
データ部のD10乃至D1fは、このIDカード2を発行したときの発行ID(Issue ID)(IDi)が記憶されている。領域D10乃至D13、領域D14乃至D17、領域D18乃至D1b、および、領域D1c乃至1fは、ICカード2の属するカテゴリおよびグループを示すカテゴリ/グループナンバ、このICカード2を発行した発行機のコード、ICカード2を発行した日にち、および、ICカード2の有効期限を、それぞれ記憶している。
図6は、システムIDブロックのアトリビュート部を示している。アトリビュート部は、登録されているプロバイダの数を記憶している。発行機は、1つのプロバイダを登録する際に、1つの物理ブロックを使用し、そのとき、このアトリビュート部の値を更新する。
アトリビュート部の値は、製造時に、ゼロに設定されており、その後、発行機が、ICカード2にプロバイダを登録するとき、アトリビュート部の値を、登録されるプロバイダの数で更新する。
システムIDブロックのパリティ部は、データ部およびアトリビュート部の各ビットの値から、パリティ演算部93で演算されるリードソロモン符号(RS符号)を記憶している。従って、パリティ部の値は、データ部またはアトリビュート部が更新される度に、演算し直される。
図7は、共通領域定義ブロックおよびプロバイダ領域定義ブロックの一例を示している。なお、これらのブロックは、ICカード2が発行されるとき、予め、発行機により書き込まれている。
共通領域定義ブロックは、EEPROM66の物理ブロック番号feHに配置され、全プロバイダにより使用される記憶領域(共通領域(Common Area))(第2の領域)の設定を記憶している。
プロバイダ領域定義ブロックは、EEPROM66の物理ブロック番号fdHから、00Hに向かって配置され、1プロバイダ当たり1物理ブロックで、プロバイダの情報を記憶している。
図7に示すように、領域定義ブロック(共通領域定義ブロックおよびプロバイダ領域定義ブロック)のデータ部D00乃至D1fの領域D00,D01は、プロバイダの種類を示すプロバイダコード(Provider Code)を記憶している。共 通領域定義ブロックの場合、領域D00,D01の値は、0000Hとされ、プロバイダ領域定義ブロックの場合、領域D00,D01の値は、0001H乃至FFFFHのいずれかの値とされている。
領域定義ブロックのデータ部の領域D02乃至D05は、このプロバイダが使用する記憶領域(プロバイダ領域(Provider Area))(第2の領域)の先頭の物理ブロックの番号BN0(領域D02,D03)と、終わりの物理ブロックの番号の次の物理ブロックの番号BN1(領域D04,D05)(BN1>BN0)で構成されるアロケーションテーブル(Allocation Table)を記憶している。プロバイダ領域は、図8に示すように、システムブロック(システムIDブロック、領域定義ブロック)を除く、EEPROM66の所定の位置(物理ブロック番号BN0乃至(BN1−1))に設定される。
このように、BN0とBN1でプロバイダ領域を指定しているので、プロバイダ(利用者)により使用される領域の大きさではなく、プロバイダの数に比例した量の情報で、データを管理することができ、メモリの利用効率を高くすることができる。
領域定義ブロックのデータ部の領域D06乃至D09は、プロバイダが使用する記憶領域のうち、ランダムアクセス領域(後述)のブロック数BRA(領域D06,D07)と、ランダムアクセス領域中のリード/ライトブロックのブロック数BRW(領域D08,D09)で構成されるパーティションテーブル(Partition Table)を記憶している。このとき、ランダムアクセス領域のブロック数BRAは、式
BRA=0
または、式
2×n≦BRA≦BN1−BN0
(nはライトバッファ(後述)の数)
を満足する値に設定され、リード/ライトブロックのブロック数BRWは、BRA=0である場合においては、BRW=0に設定され、BRA≠0である場合においては、式
n≦BRW≦BRA−n
を満足する値に設定される。
領域定義ブロックのデータ部の領域D0a,D0bは、ランダムアクセス領域のライトバッファの数nを記憶している。n個のライトバッファは、n個のデータを、ランダムアクセス領域の論理ブロック番号00H乃至(00+n(16進数表示))Hに、同時に記憶させるときに利用される。なお、ランダムアクセス領域のうち、その他の論理ブロック番号を有する物理ブロックにデータを記憶するときにおいては、ライトバッファは、1個だけ利用される。
以上のように、領域定義ブロックに従って、図8に示すように、物理ブロック番号BN0乃至(BN1−1)の領域(プロバイダ領域または共通領域)は、プロバイダコードで指定されるプロバイダに割り当てられ、さらに、その領域(プロバイダ領域または共通領域)のうちのBRA個の物理ブロックが、ランダムアクセス領域に割り当てられ、残りの物理ブロックがシーケンシャルアクセス領域(後述)に割り当てられている。
さらに、領域定義ブロックに従って、図8に示すように、ランダムアクセス領域は、BRW個のリード/ライトブロック、リードオンリーブロック、および、n個のライトバッファに、論理的に割り当てられている。なお、リード/ライトブロックおよびライトバッファ以外の物理ブロックが、リードオンリーブロックに割り当てられる。
領域定義ブロックのデータ部の領域D0c,D0dは、このプロバイダが利用する記憶領域(ランダムアクセス領域)におけるパースブロック(Purse Block)(後述)に対するアクセス権の情報を有するパースブロックパーミッションを記憶している。
図9は、パースブロックパーミッションの一例を示している。
パースブロックパーミッション(16ビット、b0乃至bf)は、パースブロックに対する読み出し、加算命令、および、減算命令の許可または不許可を示している。
共通領域定義ブロックのパースブロックパーミッションは、共通領域定義ブロックで設定される記憶領域(共通領域)においてパースブロックを使用するか否かを、領域(ビット)bbに記憶している。即ち、bb=0の場合、パースブロックを使用しない。bb=1の場合、パースブロックを使用する。そして、共通領 域定義ブロックのパースブロックパーミッションにおけるその他の領域(ビット)は、特に使用されない。なお、bb=1の場合、論理ブロック番号が00Hで あるリード/ライトブロックが、パースブロックとして使用される。
次に、プロバイダ領域定義ブロックのパースブロックパーミッションにおいては、このプロバイダ領域定義ブロックで設定された記憶領域でパースブロックを使用するか否かを領域b3に記憶している。即ち、b3=0の場合、パースブロックを使用しない。b3=1の場合、パースブロックを使用する。なお、b3=1の場合、論理ブロック番号が00Hであるリード/ライトブロックが、パースブロックとして使用される。
そして、そのパースブロックに対する加算命令の可否を領域b2に記憶し、そのパースブロックに対する減算命令の可否を領域b1に記憶し、そのパースブロックに対する読み出しの可否を領域b0に記憶している(bi=1(i=0,1,2)の場合、その命令は許可され、bi=0の場合、その命令は許可されない)。また、共通領域定義ブロックで設定された記憶領域でパースブロックを使用するか否かを領域bbに記憶している。なお、bbには、共通領域定義ブロックのパースブロックパーミッションのbbと同じ値が記憶されている。
さらに、そのパースブロックに対する加算命令の可否を領域baに記憶し、そのパースブロックに対する減算命令の可否を領域b9に記憶し、そのパースブロックに対する読み出しの可否を領域b8に記憶している(bi=1(i=8,9,a)の場合、その命令は許可され、bi=0の場合、その命令は許可されない)。
図7の領域定義ブロックのデータ部の領域D0e,D0fは、プロバイダ(R/W1)の認証、並びに、暗号化および復号化に利用されるセキュリティキー(共通鍵とプロバイダ鍵)のバージョン番号を記憶し、領域D10乃至1fは、そのセキュリティキーを記憶している。
なお、R/W1がポーリングを行ったときは、ICカード2は、この2つのキー(共通鍵とプロバイダ鍵)のバージョン番号を返送する。従って、R/W1とICカード2との間の認証においては、複数のバージョンのセキュリティキーを使い分けることができる。
そして、領域定義ブロックのアトリビュート部AT1,AT2は、予備として設けられており、特に情報は記憶されていない。領域定義ブロックのパリティ部は、データ部およびアトリビュート部のすべてのビットの値より演算されるパリティ(RS符号)を記憶している。
このように、発行機により設定される領域定義ブロックは、プロバイダコード、アロケーションテーブル、パーティションテーブル、パースブロックパーミッション、セキュリティキーバージョン、および、セキュリティキーを記憶している。
図10は、ユーザブロックの一例を示している。図4を参照して上述したように、EEPROM66のメモリ空間のうち、システムIDブロック、共通領域定義ブロック、プロバイダ領域定義ブロック以外の物理ブロックが、ユーザブロックとして、プロバイダにより使用される。
例えば、図4に示すように、メモリ空間が256ブロックで構成されている場合において、8個のプロバイダが登録されると、システムIDブロック、共通領域定義ブロック、および、8個のプロバイダ領域定義ブロックの合計10(=1+1+8)個のシステムブロック以外の、246(=256−10)ブロックがユーザブロックとして使用される。また、40個のプロバイダを登録すると、システムブロックは合計42(=1+1+40)個となり、214(=256−42)個のユーザブロックが確保される。
ユーザブロックは、領域定義ブロックのアロケーションテーブル(図7)に従って、各プロバイダに割り当てられる。なお、プロバイダは、アロケーションテーブルを参照して、予め割り当てられているユーザブロックを使用するので、アロケーションテーブルで割り当てられた領域(プロバイダ領域または共通領域)以外にアクセスすることはない。
アロケーションテーブルで割り当てられた領域(プロバイダ領域または共通領域)のユーザブロックは、上述のパーティションテーブル(図7)に従って、ランダムアクセス領域と、シーケンシャルアクセス領域に割り当てられている。
さらに、ランダムアクセス領域のユーザブロックは、リード/ライトブロック、リードオンリーブロック、および、ライトバッファのいずれかとして利用され、これらのブロックの数は、上述のように、パーティションテーブルおよびライトバッファの数に従って設定されている。
このように割り当てられているユーザブロックのデータ部D00乃至D1fは、そのユーザブロックが割り当てられているプロバイダによる処理に応じて使用される。
ランダムアクセス領域のユーザブロックのアトリビュート部は、図11に示すように、インクリメンタルカウンタ(Incremental Counter)(ビットbf,be)および論理ブロック番号(ビットbd乃至b0)を記憶している。
論理ブロック番号とインクリメンタルカウンタは、ランダムアクセス領域のユーザブロックにアクセスするときに利用される。
ランダムアクセス領域に記憶されているデータを読み出すときにおいては、論理ブロック番号で、読み出すデータ(物理ブロック)を検索し、その論理ブロック番号を有するデータのインクリメンタルカウンタを参照して最も新しいデータを読み出す。
一方、ランダムアクセス領域にデータを記憶する場合、既にランダムアクセス領域に記憶されているデータの論理ブロック番号とインクリメンタルカウンタを参照し、不要となった物理ブロック(後述)を、ライトバッファとした後、そのライトバッファにデータを書き込む。
なお、上述の領域定義ブロックのパースブロックパーミッションが、パースブロックを使用するように設定されている場合、論理ブロック番号が00Hであるリード/ライトブロックは、パースブロックとして使用される。
パースブロックは、データの加算および減算を頻繁に行うとき、既に記憶している値を読み出したくないとき(情報が漏洩する可能性が増すので)、データに対するアクセス権を細かく設定するときなどに利用される。
図12は、パースブロックの一例を示している。パースブロックのデータ部D00乃至D1fの領域D00乃至D07は、パースデータ部として利用される。パースブロックのデータ部D00乃至D1fの領域D08乃至D0fは、エグゼキューションID(Execution ID)を記憶している。なお、パースブロックのデータ部の領域D10乃至D1fは、ユーザデータ部として利用されるが、読み出し専用に設定される。
パースデータ部は、所定のデータを記憶している。エグゼキューションIDは、パースブロックに対する加算命令または減算命令が実行されるときに参照され、その加算命令または減算命令に含まれているエグゼキューションIDと比較される。
一方、シーケンシャルアクセス領域のユーザブロックのアトリビュート部は、図13に示すように、ラップラウンド番号(ビットbf乃至b0)を記憶している。シーケンシャルアクセス領域には、領域の先頭の物理ブロックから順番に(シーケンシャルに)データが記憶されていき、領域の最後の物理ブロックまでデータが記憶されると、再び、領域の先頭の物理ブロックから順番にデータが記憶されていく(上書きされていく)。ラップラウンド番号は、その順番を記憶している。
従って、ラップラウンド番号は、シーケンシャルアクセス領域のユーザブロックにアクセスするときに利用されるとともに、シーケンシャルアクセス領域にデータを記憶する場合、順次参照される。そして、それまでの最後尾のラップラウンド番号を有する物理ブロックの次の物理ブロックに、データが記憶される。このとき、データが記憶された物理ブロックのラップラウンド番号は、それまでの最後尾のラップラウンド番号に1を加算した数に設定される。
なお、例えば前回の書込のときに書込の途中で障害が発生して、最後尾のラップラウンド番号を有する物理ブロックにパリティエラー(物理的なメモリコラプション)が生じている場合、新たなデータは、その物理ブロックに記憶される。また、最後尾のラップラウンド番号を有する物理ブロックがシーケンシャルアクセス領域の終わりの物理ブロックの場合、新たなデータは、シーケンシャルアクセス領域の先頭の物理ブロックに記憶される。
以上のように、EEPROM66は、各プロバイダに適宜利用される。
次に、図14のフローチャートおよび図15のタイミングチャートを参照して、ICカード2およびR/W1の動作について説明する。
最初にステップS1において、ICカード2に登録されているプロバイダに対応しているR/W1は、アンテナ27から所定の電磁波を放射して、アンテナ27の負荷状態を監視し、ICカード2が接近し、負荷状態の変化が検出されるまで待機する。なお、ステップS1においては、R/W1は、所定の短いパターンのデータでASK変調した電磁波を放射して、ICカード2への呼びかけを、ICカード2からの応答が一定時間内において得られるまで繰り返すようにしてもよい。
R/W1がステップS1においてICカード2の接近を検出した場合(図15の時刻t0)、ステップS2に進み、R/W1のSPU32は、図16(a)に 示すような所定の周波数(例えば、データのクロック周波数の2倍の周波数)の矩形波を搬送波として、ICカード2に送信するデータ(ICカード2に実行させる処理に対応するコマンド)(例えば、図16(b)に示すデータ)で、BPSK変調を行い、生成した変調波(BPSK変調信号)(図16(c))を変調回路23に出力する。
なお、BPSK変調時においては、差動変換を利用して、図16(c)に示すように、値が0のデータが現れた場合、直前のBPSK変調信号(「1」「0」または「0」「1」)と同じものをBPSK変調信号とし、値が1のデータが現れた場合、直前のBPSK変調信号の位相を反転させたもの(「1」を「0」に反転させ、「0」を「1」に反転させたもの)をBPSK変調信号としている。
このように差動変換を利用して、変調波の位相の変化でデータを保持することにより、BPSK変調信号が反転した場合も、元のデータに復調されるので、復調するとき変調波の極性を配慮する必要が無くなる。
そして、変調回路23は、そのBPSK変調信号で、所定の搬送波を1未満(例えば0.1)の変調度(=データ信号の最大振幅/搬送波の最大振幅)でASK変調させ、生成された変調波(ASK変調波)を、アンテナ27を介してICカード2に送信する(図15の時刻t0乃至時刻t1の間)。
なお、送信を行わないとき、変調回路23は、デジタル信号の2つのレベル(ハイレベルとローレベル)のうちのハイレベルで変調波を生成するようになされている。
次にステップS3において、ICカード2は、アンテナ53およびコンデンサ52で、R/W1のアンテナ27が放射した電磁波の一部を電気信号に変換し、その電気信号(変調波)を、IC51のRFインタフェース部61に出力する。そして、RFインタフェース部61のASK復調部81は、その変調波を整流および平滑し(即ち、包絡線検波し)、生成された信号を電圧レギュレータ82に供給するとともに、生成された信号の直流成分を抑制してデータ信号を抽出し、そのデータ信号をBPSK復調回路62およびPLL部63に出力する。
電圧レギュレータ82は、ASK復調部81より供給された信号を安定化し、直流電力を生成し、各回路に供給する。
なお、このとき、アンテナ53の端子電圧V0は、例えば次のようになる。
V0=V10(1+k×Vs(t))cos(ωt)
ここで、V10は、搬送波成分の振幅を、kは変調度を、Vs(t)は信号成分を、それぞれ示している。
また、ASK復調部81による整流後の電圧V1におけるローレベルの値VLRは、例えば次のようになる。
VLR=V10(1+k×(−1))−Vf
ここで、Vfは、整流回路のダイオードDにおける電圧降下を示している。通常Vfは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は、PLL部63より供給されるクロック信号に従って、ASK復調部81からのデータ信号(BPSK変調信号)を復調し、復調したデータを演算部64に出力する。
次に、ステップS4において、演算部64は、BPSK復調回路62より供給されたデータが暗号化されている場合は、暗号/復号部92で復号化した後、そのデータ(コマンド)をシーケンサ91に供給し、そのコマンドに対応する処理を行う(図15の時刻t1乃至時刻t2の間)。なお、この期間、即ちICカード2からの返答を受信するまでの間、R/W1は、値が1のデータを送信したまま待機している。従って、この期間においては、ICカード2は、最大振幅が一定である変調波を受信している。
次に、ステップS5において、演算部64のシーケンサ91は、処理結果などのデータ(R/W1に送信するデータ)を、BPSK変調回路68に出力する。BPSK変調回路68は、R/W1のSPU32と同様に、そのデータをBPSK変調した後、RFインタフェース部61のASK変調部84に出力する。
そして、ASK変調部84は、アンテナ53の両端に接続される負荷を、スイッチング素子を利用してデータに応じて変動させることにより、受信している変調波(ICカード2の送信時においては、変調波の最大振幅は一定になっている)を、送信するデータに応じてASK変調させ、それに応じてR/W1のアンテナ27の端子電圧を変動させて、そのデータをR/W1に送信する(図15の時刻t2乃至時刻t3の間)。
ステップS6において、R/W1の変調回路23は、ICカード2からのデータの受信時においても、値が1(ハイレベル)のデータの送信を継続している。そして、復調回路25は、ICカード2のアンテナ27と電磁気的に結合しているアンテナ27の端子電圧の微小な変動(例えば、数十マイクロボルト)から、ICカード2により送信されてきたデータを検出する。
そして、復調回路25は、検出した信号(ASK変調波)を高利得の増幅器で増幅した後、復調し、生成されたデジタルデータをSPU32に出力する。
そして、ステップS7において、R/W1のSPU32は、そのデータ(BPSK変調信号)を復調した後、DPU31に出力し、DPU31は、そのデータを処理する(図15の時刻t3乃至時刻t4の間)。
さらに、ステップS8において、R/W1のDPU31は、処理結果に応じて、通信を終了するか否かを判断し、再度、通信を行うと判断した場合、ステップS2に戻り、ステップS2乃至ステップS7で、次のデータ(コマンド)の通信を行う(図15の時刻t4乃至時刻t8)。一方、通信を終了すると判断した場合、R/W1は、ICカード2との通信を終了する。
以上のように、R/W1は、変調度kが1未満であるASK変調を利用して、ICカード2に所定のコマンドを送信し、ICカード2は、そのコマンドを受け取り、そのコマンドに対応する処理を行って、その処理の結果に対応するデータを、R/W1に返送する。
次に、上述のステップS4におけるICカード2による処理の例として、EEPROM66に対してデータの書込を行うときの動作について、図17乃至図21のフローチャートを参照して説明する。
最初に、図17乃至図19のフローチャートを参照して、EEPROM66のランダムアクセス領域にデータを書き込むときの動作について説明する。
ステップS21において、シーケンサ91は、データを書き込む物理ブロックがリード/ライトブロック(パースブロックは含まない)である(図8に示すように、BN0から順番に、BRW個までのブロックはリード/ライトブロックとされる)か否かを判断し、リード/ライトブロックであると判断した場合、ステップS22に進む。
シーケンサ91は、R/W1のプロバイダコードを有するプロバイダ領域定義ブロックのパースブロックパーミッション(図9)を参照し、パースブロックを使用している(b3=1)か否かを判断し、パースブロックを使用していない場
合(b3=0の場合)、ステップS23(図18)に進む。
一方、ステップS22においてパースブロックを使用していると判断した場合、シーケンサ91は、ステップS24において、記憶する(書き込む)データの論理ブロック番号が00Hであるか否か、即ち、データを書き込むリード/ライトブロックがパースブロックと重なっているか否かを判断し、データを書き込むリード/ライトブロックがパースブロックと重なっていないと判断した場合、ステップS23に進む。
データを書き込むリード/ライトブロックがパースブロックと重なっていると判断した場合、シーケンサ91は、ステップS25において、エラー処理を行った後、処理を終了する。
また、ステップS21においてデータを書き込む物理ブロックがリード/ライトブロックではないと判断した場合、ステップS26に進み、シーケンサ91は、データを書き込む物理ブロックがパースブロックであるか否かを判断し、パースブロックであると判断した場合、ステップS27に進む。
データを書き込む物理ブロックがパースブロックではないと判断した場合、シーケンサ91は、ステップS28において、エラー処理を行った後、処理を終了する。
ステップS27において、シーケンサ91は、ランダムアクセス領域において、パースブロック(論理ブロック番号が00Hの物理ブロック)を探し、パースブロックを発見した場合、ステップS29に進む。
ステップS27でパースブロックが発見されなかった場合、パースブロックに対する書込を行うことができないので、シーケンサ91は、ステップS30において、エラー処理を行った後、処理を終了する。
次に、ステップS29において、シーケンサ91は、そのパースブロックに対する命令(コマンド)が加算命令であるか否かを判断し、加算命令であると判断した場合、ステップS31に進み、プロバイダ領域定義ブロックのパースブロックパーミッションを参照して、加算命令が許可されているか(b2=1)否かを判断する。
そして、ステップS31で、シーケンサ91が、パースブロックに対する加算命令が許可されていると判断した場合、ステップS23に進む。
一方、ステップS31で、パースブロックに対する加算命令が許可されていないと判断した場合(b2=0の場合)、シーケンサ91は、加算命令を実行せずに、ステップS32において、エラー処理を行った後、処理を終了する。
また、ステップS29において、パースブロックに対する命令が加算命令ではないと判断した場合、ステップS33に進み、シーケンサ91は、そのパースブロックに対する命令が減算命令であるか否かを判断し、減算命令であると判断した場合、ステップS34に進む。
そして、ステップS34において、シーケンサ91は、プロバイダ領域定義ブロックのパースブロックパーミッションを参照して、減算命令が許可されている(b1=1)か否かを判断し、パースブロックに対する減算命令が許可されていると判断した場合、ステップS23に進む。
一方、ステップS34で、パースブロックに対する減算命令が許可されていないと判断した場合(b1=0の場合)、シーケンサ91は、減算命令を実行せずに、ステップS35において、エラー処理を行った後、処理を終了する。
また、ステップS33において、パースブロックに対する命令が減算命令ではないと判断した場合、シーケンサ91は、ステップS36において、エラー処理を行った後、処理を終了する。
次に、図18のステップS23において、シーケンサ91は、ランダムアクセス領域の物理ブロックを検索して、書込を行うデータの論理ブロック番号と同一の論理ブロック番号を有する物理ブロックを探す。
そして、ステップS37において、シーケンサ91は、ステップS23で発見した物理ブロックの数が2個であるか否かを判断する。すなわち、このシステムにおいては、各論理ブロックについて、少なくとも、前回のデータと、前々回のデータを記憶するようにする。そして、さらに新たなデータを記憶するときは、前々回のデータの上に新たなデータを記憶する(他の論理ブロック番号の前々回のデータの上に記憶される場合もある)。同一の論理ブロック番号の物理ブロックが2個存在する場合、ステップS38に進み、その2つの物理ブロックにおけるインクリメンタルカウンタの値(00,01,10,11のいずれか)を読み出し、比較する。
そして、インクリメンタルカウンタの値が大きい物理ブロックを、新しいデータが記憶されている物理ブロック(新しい物理ブロック)とし、インクリメンタルカウンタの値が小さい物理ブロックを、古いデータが記憶されている物理ブロック(古い物理ブロック)とする。
ただし、2つのインクリメンタルカウンタの値が00と11である場合は、インクリメンタルカウンタの値が00である物理ブロックを、新しい物理ブロックとし、インクリメンタルカウンタの値が11である物理ブロックを、古い物理ブロックとする。
ステップS39において、シーケンサ91は、2つの物理ブロックのうち、新しい物理ブロックの番号(物理ブロック番号)を、変数Yとして、RAM67に記憶し、古い物理ブロックの番号を、変数W(ライトブロックとして利用される物理ブロックの番号)として、RAM67に記憶させる。
このように、シーケンサ91が、変数Yと変数Wを記憶させた後、ステップS49に進む。
一方、ステップS37において、ステップS23で発見した物理ブロックの数が2個ではないと判断した場合、ステップS40に進み、シーケンサ91は、ステップS23で発見した物理ブロックの数が1個であるか否かを判断する。そして、1個であると判断した場合、ステップS41に進む。
ステップS40において、シーケンサ91が、ステップS23で発見した物理ブロックの数が1個ではないと判断した場合、ステップS42において、エラー処理を行った後、処理を終了する。
同一の論理ブロックが1個しか存在しないということは、何等かの理由により、前々回のデータが存在しないことになる。そこで、この場合は、他の論理ブロック番号の物理ブロックで、前回と前々回のデータを有する物理ブロック(すなわち、同一の論理ブロック番号を有する物理ブロックの数が2個である物理ブロック)を検索し、そのうちの前々回の物理ブロックをライトブロックとして利用する。このため、ステップS41において、シーケンサ91は、発見した物理ブロック(1個)の番号を、変数Yとして、RAM67に記憶させた後、ステップS43に進む。
ステップS43において、シーケンサ91は、ランダムアクセス領域の物理ブロックを検索して、所定の(任意の)同一の論理ブロック番号(いま書込対象としている論理ブロック番号とは無関係の論理ブロック番号)を有する2個の物理ブロックを探す。
なお、物理ブロックを検索するときは、論理ブロック番号00Hから順次検索していくので、頻繁に書込処理を行うデータの論理ブロック番号を、より小さい番号すると、検索時間を短くすることができる。
そして、ステップS44において、シーケンサ91は、論理ブロック番号が同一である2個の物理ブロックがステップS43で発見されたか否かを判断し、発見されたと判断した場合、ステップS45に進み、発見された2個の物理ブロックのインクリメンタルカウンタを参照し、2個の物理ブロックのうち、古い方の物理ブロックの番号を、変数W(ライトブロックの番号)として、RAM67に記憶させた後、ステップS49(図19)に進む。
一方、ステップS44において、ステップS43で2個の物理ブロックが発見されなかったと判断した場合、ステップS46に進み、シーケンサ91は、ランダムアクセス領域の各物理ブロックのパリティを順次計算して、各物理ブロックのパリティ部に記憶されている値と比較し、パリティエラーを起こしている物理ブロックを探す。
そして、パリティエラーを起こしている物理ブロックがあるか否かを判断し、パリティエラーを起こしている物理ブロックがあると判断した場合、ステップS47に進み、シーケンサ91は、その物理ブロックの番号を、変数W(ライトブロックの番号)として、RAM67に記憶させた後、ステップS49に進む。
ステップS46において、パリティエラーを起こしている物理ブロックがないと判断した場合、シーケンサ91は、ステップS48において、エラー処理を行った後、処理を終了する。
次に、図19のステップS49において、シーケンサ91は、データを書き込む物理ブロックがパースブロック(論理ブロック番号が00Hである物理ブロック)であるか否かを判断し、パースブロックであると判断した場合、ステップS50に進み、パースブロックに対して行われる命令のエグゼキューションIDが、ステップS39またはステップS41で変数Yとして記憶された番号の物理ブロックのエグゼキューションID(図12)と同一であるか否かを判断し、同一であると判断した場合、この命令は既に処理されていると判断し、処理を終了する。
このようにエグゼキューションIDを利用することにより、R/W1が同じコマンドをリトライした場合において、そのコマンドが既に処理されているときは、ICカード2は、そのコマンドの処理を行わないので、同じコマンドが2度処理されることはない。
ステップS50において、パースブロックに対して行われる命令のエグゼキューションIDが、変数Yとして記憶された番号の物理ブロックのエグゼキューションIDと同一ではないと判断した場合、シーケンサ91は、ステップS51において、パースブロックに対して行われる命令が加算命令であるか否かを判断し、加算命令である場合、ステップS52に進む。
ステップS52において、シーケンサ91は、変数Yの番号の物理ブロックのパースデータを読み出し、そのパースデータと、パースブロックに対して行われる命令に含まれているデータの和を計算し、その和を新規ブロックデータにおけるパースデータ(新規パースデータ)とする。このように処理を行った後、ステップS54に進む。なお、このとき、変数Yの番号の物理ブロックのエグゼキューションIDを新規ブロックデータのエグゼキューションIDとする。これにより2重の処理を防止する。
一方、ステップS51において、パースブロックに対して行われる命令が加算命令ではない(即ち、減算命令である)と判断した場合、ステップS53に進み、シーケンサ91は、変数Yの番号の物理ブロックのパースデータを読み出し、そのパースデータと、パースブロックに対して行われる命令に含まれているデータの差を計算し、その差を新規ブロックデータにおけるパースデータ(新規パースデータ)とする。このように処理を行った後、ステップS54に進む。なお、このとき、変数Yの番号の物理ブロックのエグゼキューションIDを新規ブロックデータのエグゼキューションIDとする。これにより2重の処理を防止する。
また、ステップS49において、シーケンサ91は、データを書き込む物理ブロックがパースブロックではない(即ち、リード/ライトブロックである)と判断した場合、ステップS54に進む。
そして、ステップS54において、シーケンサ91は、変数Yの番号の物理ブロックのインクリメンタルカウンタの値に1を加算した数を、新規ブロックデータのインクリメンタルカウンタの値とする。ただし、変数Yの番号の物理ブロックのインクリメンタルカウンタの値が11である場合、シーケンサ91は、新規ブロックデータのインクリメンタルカウンタの値を00とする。
次に、ステップS55において、シーケンサ91は、パリティ演算部93に、新たに書き込むデータ、インクリメンタルカウンタおよび論理ブロック番号のパリティを計算させ、そのパリティの値を、新規ブロックデータのパリティ部の値とする。
そして、ステップS56において、シーケンサ91は、ステップS39、ステップS45、または、ステップS47のいずれかで記憶された変数Wの番号の物理ブロック(ライトバッファ)に、新規ブロックデータ(新たに記憶するデータ(パースブロックの場合、パースデータとエグゼキューションID)、その論理ブロック番号、インクリメンタルカウンタ、および、これらのパリティ)を記憶させる。
以上のように、論理ブロック番号と、インクリメンタルカウンタを利用して、データを記憶する物理ブロック(ライトバッファ)を選択することにより、データの書込の最中に、障害が発生した場合においても、そのデータの論理ブロック番号と同一の論理ブロック番号のデータがメモリに残されているので、論理的には、メモリコラプションが発生することはない。
上記実施の形態では、ランダムアクセス領域の同一の論理ブロックのうち、新しいデータが記録されているブロックを判別するためにインクリメンタルカウンタを用いたが、例えば、記録時の絶対時刻(日付と時刻、あるいはカウンタの値)をランダムアクセス領域に、例えば4バイトの領域を確保して、そこに記録させることによって、新しいデータが記録されているブロックを判別することも可能である。
次に、図20および図21のフローチャートを参照して、EEPROM66のシーケンシャルアクセス領域にデータを書き込むときの動作について説明する。
ステップS61において、シーケンサ91は、シーケンシャルアクセス領域の先頭の物理ブロックの番号を、変数Zとして、RAM67に記憶させる。
次に、ステップS62において、シーケンサ91は、物理ブロック番号がZである物理ブロックのラップラウンド番号を読み出し、変数Aとして、RAM67に記憶させるとともに、物理ブロック番号がZ+1である物理ブロックのラップラウンド番号を読み出し、変数Bとして、RAM67に記憶させる。
そして、ステップS63において、シーケンサ91は、変数Aの値と変数Bの値の差(A−B)が1であるか否かを判断し、1ではない場合、物理ブロック番号Zの物理ブロックが、最後尾のラップラウンド番号を有するデータを記憶する物理ブロックであると判断し、ステップS66に進む。
変数Aの値と変数Bの値の差(A−B)が1であると判断した場合、シーケンサ91は、ステップS64において、物理ブロック番号Zが、シーケンシャルアクセス領域の終わりの物理ブロックの番号と同一であるか否かを判断し、同一であると判断した場合、シーケンシャルアクセス領域の終わりの物理ブロックが、最後尾のラップラウンド番号を有するデータを記憶する物理ブロックであると判断し、ステップS66に進む。
ステップS64において、物理ブロック番号Zが、シーケンシャルアクセス領域の終わりの物理ブロックの番号と同一ではないと判断した場合、シーケンサ91は、ステップS65において、RAM67に記憶させた変数Zの値を1だけ増加させた後、ステップS62に戻る。そして、ステップS62乃至ステップS65の処理を、変数Zの値(検索する物理ブロック番号の値)を変化させながら順次繰り返す。
このようにして、シーケンシャルに記憶されているデータのラップラウンド番号の最後尾を発見する。そして、ステップS66において、シーケンサ91は、変数Zの番号(=ラップラウンド番号の最後尾の物理ブロックの番号)のブロックのパリティチェックを行う。
そして、ステップS67において、シーケンサ91は、その物理ブロックにパリティエラーが生じているか否かを判断し、パリティエラーが生じていると判断した場合、ステップS68に進む。
ステップS68において、シーケンサ91は、変数Zの値が、シーケンシャルアクセス領域の先頭の物理ブロックの番号と同一であるか否かを判断し、同一であると判断した場合、データ(パリティエラーを起こしているものは含まない)の最後尾が、シーケンシャルアクセス領域の終わりの物理ブロックであると判断し、ステップS70において、シーケンシャルアクセス領域の終わりの物理ブロックの番号を、新たな変数Yとして、RAM67に記憶させた後、ステップS72(図21)に進む。
変数Zの値が、シーケンシャルアクセス領域の先頭の物理ブロックの番号と同一ではないと判断した場合、ステップS71において、シーケンサ91は、データの最後尾の物理ブロックの番号を、変数Zの値から1を減算して算出し、算出した値(Z−1)を、変数Yとして、RAM67に記憶させた後、ステップS72に進む。
一方、ステップS67でパリティエラーが生じていないと判断した場合、ステップS69において、シーケンサ91は、データの最後尾の物理ブロックの番号(この場合、変数Zの値)を、変数Yとして、RAM67に記憶させた後、ステップS72に進む。
次に、ステップS72において、シーケンサ91は、データの最後尾の物理ブロックの番号(変数Yの値)と、シーケンシャルアクセス領域の終わりの物理ブロックの番号が同一であるか否かを判断し、同一であると判断した場合、ステップS73に進む。
そして、ステップS73において、シーケンサ91は、シーケンシャルアクセス領域の先頭の物理ブロックの番号を、新たなデータを書き込む物理ブロックの番号とし、その番号を変数Wとして、RAM67に記憶させた後、ステップS75に進む。
ステップS72においてデータの最後尾の物理ブロックの番号(変数Yの値)と、シーケンシャルアクセス領域の終わりの物理ブロックの番号が同一ではないと判断した場合、ステップS74において、シーケンサ91は、変数Yの値に1を加算した数を、新たなデータを書き込む物理ブロックの番号とし、その番号を変数Wとして、RAM67に記憶させた後、ステップS75に進む。
次にステップS75において、シーケンサ91は、新たに記憶するデータと、変数Yの番号の物理ブロック(最後尾のデータ)が同一であるか否かを判断し、同一である場合、新たに記憶するデータが既に記憶されているので、処理を終了する。
一方、新たに記憶するデータと、変数Yの番号の物理ブロック(最後尾のデータ)が同一ではないと判断された場合、ステップS76において、シーケンサ91は、変数Yの番号の物理ブロックのラップラウンド番号を読み出し、その値に1を加算した数を、新たに記憶されるデータ(新規ブロックデータ)のラップラウンド番号とする。
次にステップS77において、シーケンサ91は、パリティ演算部93に、記憶するデータおよびラップラウンド番号(新規ブロックデータ)のパリティを演算させ、ステップS78において、番号Wの物理ブロックに新規ブロックデータを書き込む。
このように、シーケンシャルに記憶されているデータにおけるラップラウンド番号を順次検索していき、最後尾のデータの次の物理ブロック(または、シーケンシャルアクセス領域の先頭の物理ブロック)に、新たなデータを記憶するので、新たなデータの書込の最中に、障害が発生した場合においても、書き込んでいたデータのラップラウンド番号より小さいラップラウンド番号のデータが残っているので、論理的には、メモリコラプションは発生しない。
以上のように、EEPROM66は、複数のプロバイダに対して、独立に記憶領域を提供することができるとともに、アトリビュート部の情報を利用して、メモリコラプションの発生を抑制するようになされている。
なお、複数のプロバイダに対して、同一のユーザブロックを割り当てることもできる。その場合、それらのプロバイダ(オーバラッププロバイダ)が登録されているプロバイダ領域定義ブロックのアロケーションテーブルで、同一のユーザブロックを割り当てるようにする。このとき、各プロバイダ毎に、プロバイダ領域定義ブロックのパーティションテーブルを設定することにより、同一のユーザブロックに対して、プロバイダ毎に異なるアクセス権(リード/ライトまたはリードオンリー)を設定することができる。さらに、所定のプロバイダに対してはパースブロックを使用しないように設定し、他のプロバイダに対してはパースブロックを使用するように設定することにより、所定のプロバイダは、他のプロバイダが使用するパースブロックのユーザデータ部(他のプロバイダに対しては読み出し専用)に対して、データの書込を行うことができる。
また、領域定義ブロックの領域D0e,D0f(通常、セキュリティキーのバージョン番号が記憶されている領域)の値を、所定の値(例えば、FFFFH)に設定し、さらに、領域定義ブロックの領域D10乃至D1fに、所定のプロバイダのプロバイダコード(最大8個)を記憶することにより、そのプロバイダ(ローカルコモンプロバイダ)は、この領域定義ブロックのアロケーションテーブルで割り当てられるユーザブロックを、共通領域として使用することができる。
また、同一のユーザブロックを割り当てる2つの領域定義ブロックに、ローカルコモンプロバイダを登録し、領域定義ブロック毎に、異なるアクセス権を設定することにより、そのユーザブロックに対するアクセス権を、ローカルコモンプロバイダ毎に設定することができる。
このように、オーバラッププロバイダおよびローカルコモンプロバイダを設定することにより、複数のプロバイダ(即ち、R/W)に対応して個別の処理を行うことができる。
なお、本発明は、電波(非接触)で信号を授受する場合の他、物理的に結合された状態(接触)で信号を授受する場合にも適用することができる。停電の場合、あるいは、電池で動作する装置において、電池が取り外されてしまったような場合に、データを確保しておくことができる。
また、上記各処理を行うプログラムは、磁気ディスク、CD−ROMなどの記録媒体よりなる伝送媒体に記録してユーザに提供したり、ネットワークなどの伝送媒体を介してユーザに伝送し、ハードディスク、固体メモリなどの記録媒体よりなる伝送媒体に記録し、利用させるようにすることができる。
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 パリティ演算部