(57)【要約】【課題】正規のユーザによるＩＣタグやＩＣカードのデータ更新を容易にするとともに、ＩＣタグやＩＣカードのセキュリティを向上させること。【解決手段】コマンド実行部１３０ａが、ＷＯＲＭ領域設定およびロック・アンロック設定に係る情報を含んだWORM AREA SETコマンドを受信し、該WORM AREA SETコマンドによって指定される領域を、ＷＯＲＭ領域およびロック・アンロック状態に設定する。そして、ＷＯＲＭ領域に設定された領域は、一度データを書き込んだ後、書き込んだデータの変更や削除が不可能となり、ロック状態に設定された領域は、データの書き込みが禁止される。また、コマンド実行部１３０ａは、アンロック状態の領域にデータを書き込んだ後、データを書き込んだ領域をロック状態に変更する。【選択図】        図２
2006024012.tif 000002
【特許請求の範囲】
【請求項１】
リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体であって、
データの書き込みを禁止する領域を示す書き込み禁止領域を設定する書き込み禁止領域設定手段と、
書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定する領域判定手段と、
前記領域判定手段が、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更する書き込み処理手段と、
を備えたことを特徴とする非接触ＩＣ記録媒体。
【請求項２】
一回目のデータ書き込みを許可し、一度書き込んだデータの消去および変更を禁止する領域を示す変更禁止領域を設定する変更禁止領域設定手段を更に備えたことを特徴とする請求項１に記載の非接触ＩＣ記録媒体。
【請求項３】
前記書き込み禁止領域を、データ書き込み可能な通常の領域に変更する禁止領域変更手段を更に備えたことを特徴とする請求項１に記載の非接触ＩＣ記録媒体。
【請求項４】
前記禁止領域変更手段は、前記書き込み禁止領域を、通常の領域に変更する旨の命令を受取った際に、該命令に含まれるパスワードと、前記書き込み禁止領域に対応する領域パスワードとを比較し、双方のパスワードが等しい場合に、前記書き込み禁止領域を通常の領域に変更することを特徴とする請求項３に記載の非接触ＩＣ記録媒体。
【請求項５】
前記変更禁止領域を、データの変更および消去可能な通常の領域に変更する領域変更手段を更に備えたことを特徴とする請求項２に記載の非接触ＩＣ記録媒体。
【請求項６】
前記領域変更手段は、前記変更禁止領域を、通常の領域に変更する旨の命令を受取った際に、該命令に含まれるパスワードと、前記変更禁止領域に対応する領域パスワードとを比較し、双方のパスワードが等しい場合に、前記変更禁止領域を、通常の領域に変更することを特徴とする請求項５に記載の非接触ＩＣ記録媒体。
【請求項７】
前記領域パスワードを変更するパスワード変更手段を更に備えたことを特徴とする請求項４または６に記載の非接触ＩＣ記録媒体。
【請求項８】
リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体を管理する記録媒体管理プログラムであって、
データの書き込みを禁止する領域を示す書き込み禁止領域を設定する書き込み禁止領域設定手順と、
書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定する領域判定手順と、
前記領域判定手順が、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更する書き込み処理手順と、
をコンピュータに実行させることを特徴とする記録媒体管理プログラム。
【請求項９】
一回目のデータ書き込みを許可し、一度書き込んだデータの消去および変更を禁止する領域を示す変更禁止領域を設定する変更禁止領域設定手順を更にコンピュータに実行させることを特徴とする請求項８に記載の記録媒体管理プログラム。
【請求項１０】
リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体を管理する記録媒体管理方法であって、
データの書き込みを禁止する領域を示す書き込み禁止領域を設定する書き込み禁止領域設定工程と、
書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定する領域判定工程と、
前記領域判定工程が、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更する書き込み処理工程と、
を含んだことを特徴とする記録媒体管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体などに関し、特に、セキュリティを向上させることができる非接触ＩＣ記録媒体、記録媒体管理プログラムおよび記録媒体管理方法に関する。
【背景技術】
【０００２】
近年、ＲＦＩＤ（Radio Frequency Identification）が、物流管理システム、ユーザ認証システム、電子マネーシステム、交通システムなどの様々な場面で利用されつつある。例えば、物流管理システムでは、配達伝票やタグの代わりにデータが記録されたＩＣ（Integrated Circuit）タグを利用して荷物の仕分けや、在庫管理などが行われており、ユーザ認証システムでは、個人情報などを記録したＩＣカードを利用して、入室管理などを行っている。
【０００３】
しかしながら、ＩＣタグやＩＣカードに記録されたデータは、パスワードによって保護されているため、パスワードが第３者に漏洩した場合には、ＩＣタグやＩＣカードに記録されたデータが第３者によって、不正なデータに書き換えられてしまう恐れがあり、セキュリティ上の問題があった。
【０００４】
そこで、特許文献１に公開された技術では、ＩＣタグにワンタイムパスワードを設定し、必要なデータをＩＣタグに書き込んだ後に、ワンタイムパスワードを消去することで、ＩＣタグのデータ改竄を防いでいる。
【０００５】
また、特許文献２に公開された技術では、ＩＣカードに非接触外部インターフェースおよび接触外部インターフェースの２種類の外部インターフェースを保持させ、ＩＣカードは、双方の外部インターフェースにアクセスされた場合にのみ、データ書き込みを許可することで、データの不正な更新を防いでいる。
【０００６】
【特許文献１】特開２００３−３３７９２８号公報
【特許文献２】特開２００２−２４７８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来に係る技術では、セキュリティを向上させた反面、ＩＣタグおよびＩＣカードのデータを、正規のユーザが効率よく変更することができなくなるという問題があった。
【０００８】
例えば、ＩＣタグに設定されたワンタイムパスワードが消去された後、ＩＣタグに記録したデータに誤りが見つかった場合には、誤ったデータを修正することができないため、新たなＩＣタグを用意する必要がある。
【０００９】
また、２種類の外部インターフェースを利用して、データをＩＣカードに書き込む場合でも、正規のユーザが、データをＩＣカードに書き込む場合に、ＩＣカード一枚一枚に対して、定められた２種類のインターフェースを利用する必要があるため、ユーザにかかる負担が大きい。
【００１０】
すなわち、正規のユーザによるＩＣタグやＩＣカードのデータ更新を容易にするとともに、ＩＣタグやＩＣカードのセキュリティを向上させることが極めて重要な課題となっている。
【００１１】
この発明は、上述した従来技術による問題点を解消し、課題を解決するためになされたものであり、正規ユーザによるＩＣタグやＩＣカードのデータ更新を容易にしつつ、ＩＣタグやＩＣカードのセキュリティを向上させることができる非接触ＩＣ記録媒体、記録媒体管理プログラムおよび記録媒体管理方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上述した課題を解決し、目的を達成するため、本発明は、リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体であって、データの書き込みを禁止する領域を示す書き込み禁止領域を設定する書き込み禁止領域設定手段と、書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定する領域判定手段と、前記領域判定手段が、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更する書き込み処理手段と、を備えたことを備えたことを特徴とする。
【００１３】
また、本発明は、上記発明において、一回目のデータ書き込みを許可し、一度書き込んだデータの消去および変更を禁止する領域を示す変更禁止領域を設定する変更禁止領域設定手段を更に備えたことを特徴とする。
【００１４】
また、本発明は、上記発明において、前記書き込み禁止領域を、データ書き込み可能な通常の領域に変更する禁止領域変更手段を更に備えたことを特徴とする。
【００１５】
また、本発明は、上記発明において、前記禁止領域変更手段は、前記書き込み禁止領域を、通常の領域に変更する旨の命令を受取った際に、該命令に含まれるパスワードと、前記書き込み禁止領域に対応する領域パスワードとを比較し、双方のパスワードが等しい場合に、前記書き込み禁止領域を通常の領域に変更することを特徴とする。
【００１６】
また、本発明は、上記発明において、前記変更禁止領域を、データの変更および消去可能な通常の領域に変更する領域変更手段を更に備えたことを特徴とする。
【００１７】
また、本発明は、上記発明において、前記領域変更手段は、前記変更禁止領域を、通常の領域に変更する旨の命令を受取った際に、該命令に含まれるパスワードと、前記変更禁止領域に対応する領域パスワードとを比較し、双方のパスワードが等しい場合に、前記変更禁止領域を、通常の領域に変更することを特徴とする。
【００１８】
また、本発明は、上記発明において、前記領域パスワードを変更するパスワード変更手段を更に備えたことを特徴とする。
【００１９】
また、本発明は、リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体を管理する記録媒体管理プログラムであって、データの書き込みを禁止する領域を示す書き込み禁止領域を設定する書き込み禁止領域設定手順と、書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定する領域判定手順と、前記領域判定手順が、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更する書き込み処理手順と、をコンピュータに実行させることを特徴とする。
【００２０】
また、本発明は、リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体を管理する記録媒体管理方法であって、データの書き込みを禁止する領域を示す書き込み禁止領域を設定する書き込み禁止領域設定工程と、書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定する領域判定工程と、前記領域判定工程が、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更する書き込み処理工程と、を含んだことを特徴とする。
【発明の効果】
【００２１】
本発明によれば、データの書き込みを禁止する領域を示す書き込み禁止領域を設定し、書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定し、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更するので、第三者による不正なデータ改竄を防ぐとともに、正規のユーザは、効率よく非接触ＩＣ記録媒体にデータを書き込むことができる。
【発明を実施するための最良の形態】
【００２２】
以下に添付図面を参照して、この発明に係る非接触ＩＣ記録媒体、記録媒体管理プログラムおよび記録媒体管理方法の好適な実施の形態を詳細に説明する。
【実施例】
【００２３】
まず、本実施例に係るＩＣタグシステムのシステム構成について説明する。図１は、本実施例に係るＩＣタグシステムのシステム構成を示すブロック図である。同図に示すように、このＩＣタグシステムは、ＩＣ（Integrated Circuit）タグ１００と、リーダライタ２００と、ＰＣ（Personal Computer）３００とから構成される。また、ＩＣタグ１００およびリーダライタ２００は、無線によって相互にデータ通信を行う。
【００２４】
また、リーダライタ２００およびＰＣ３００は、ＵＳＢ（Universal Serial Bus）またはＬＡＮ（Local Area Network）などによって相互に接続され、相互にデータ通信を行う。
【００２５】
ＰＣ３００は、ＩＣタグ１００に対する命令などを生成し、該生成した命令などを、リーダライタ２００を利用してＩＣタグ１００に送信する。また、ＰＣ３００は、ＩＣタグ１００に記録されたデータを、リーダライタ２００を利用して受信する。また、ＰＣ３００は、上位ＡＰＬ（Application）３００ａ、ミドルウェア３００ｂおよびドライバ３００ｃを有する。
【００２６】
上位ＡＰＬ３００ａは、図示しないサーバまたは入力装置などからＩＣタグ１００のＩＤ（Identification）やパスワードなどの情報を取得し、該取得したＩＤ、パスワードおよびＩＣタグ１００に対する命令などを、ミドルウェア３００ｂに渡す。
【００２７】
ミドルウェア３００ｂは、上位ＡＰＬ３００ａおよびドライバ３００ｃ間でのデータの受け渡しをおこなう。
【００２８】
ドライバ３００ｃは、リーダライタ２００とのインターフェース制御などを行う。また、ドライバ３００ｃは、上位ＡＰＬ３００ａから渡されるデータをリーダライタ２００に送信し、リーダライタ２００から受信するデータを、ミドルウェア３００ｂを介して、上位ＡＰＬ３００ａに渡す。
【００２９】
リーダライタ２００は、ＰＣ３００から受信するデータに含まれる命令を理解し、ＩＣタグ１００にデータの書き込みを行う。また、リーダライタ２００は、ＩＣタグ１００に含まれるデータを読み出して、読み出したデータをＰＣ３００に送信する。なお、リーダライタ２００は、リーダライタファーム２００ａおよびＲＦモジュール２００ｂを有する。
【００３０】
リーダライタファーム２００ａは、ＰＣ３００とのインターフェース制御や、ＰＣ３００から送信される命令を理解する処理部であり、ＲＦモジュール２００ｂは、アンテナ（図示しない）を利用して、ＩＣタグ１００に対するデータの書き込みや読み込みを行う処理部である。
【００３１】
次に、図１に示したＩＣタグ１００の構成について説明する。図２は、図１に示したＩＣタグ１００の構成を示す機能ブロック図である。同図に示すように、このＩＣタグ１００は、アンテナ１１０と、ＲＦ部１２０と、ロジック部１３０と、メモリ１４０とを有する。
【００３２】
ＲＦ部１２０は、アンテナ１１０を利用して、リーダライタ２００とデータ通信などを行う処理部であり、データ送受信部１２０ａと、制御クロック生成部１２０ｂと、電源生成部１２０ｃとを有する。
【００３３】
データ送受信部１２０ａは、アンテナ１１０を利用してリーダライタ２００からデータを受信し、受信したデータをロジック部１３０に渡す。また、データ送受信部１２０ａは、ロジック部１３０から受取ったデータを、アンテナ１１０を利用してリーダライタ２００に送信する。
【００３４】
制御クロック生成部１２０ｂは、制御クロックを生成し、該生成した制御クロックをロジック部１３０に供給する。
【００３５】
電源生成部１２０ｃは、アンテナ１１０を利用して、リーダライタ２００から送信される電磁界を電力に変換し、該変換した電力をロジック部１３０およびメモリ１４０に供給する。
【００３６】
ロジック部１３０は、ＲＦ部１２０から渡されるデータに含まれる命令にしたがって、メモリ１４０に対して所定の処理を行う処理部である。ロジック部１３０は、コマンド実行部１３０ａと、コマンド判定部１３０ｂとを有する。
【００３７】
コマンド実行部１３０ａは、ＲＦ部１２０から渡されるデータに含まれる命令に基づいた処理を行う。なお、ＲＦ部１２０から渡されるデータに含まれる命令は、WORM AREA SETコマンド、WORM AREA STATUSコマンド、WRITEコマンド、KILLコマンド、READコマンド、GROUP SELECTコマンドが存在する。
【００３８】
まず、コマンド実行部１３０ａが、WORM AREA SETコマンドを受取った場合の処理について説明する。この、WORM AREA SETコマンドは、ＷＯＲＭ（Write Once Read only Memory）領域設定およびロック・アンロック設定、または該ＷＯＲＭ領域、ロック・アンロック設定を許可するために利用するパスワード（以下、領域設定パスワードと表記する）の変更を行うための命令である。
【００３９】
ここで、ＷＯＲＭ領域設定とは、一回のデータ書き込みは許可するが、一度書き込んだデータの変更や消去は禁止し（データの追記は許可する）、読み出すことのみ可能となるＷＯＲＭ領域を設定するものである。ＷＯＲＭ領域に設定された領域では、ＷＯＲＭ領域の設定が解除されるまで、ＷＯＲＭ領域に書き込まれたデータの改竄などを防ぐことが可能となり、ＩＣタグ１００のセキュリティを高めることが可能となる。
【００４０】
また、ロック・アンロック設定とは、特定の領域を、データの書き込みを許可しないロック状態、またはデータの書き込みを許可するアンロック状態のいずれかに設定することである。また、コマンド実行部１３０ａは、アンロック状態の領域にデータを書き込んだ後、該アンロック状態の領域を、ロック状態に変更する。
【００４１】
なお、ＷＯＲＭ領域の設定、およびロック・アンロック設定は、領域設定パスワードを利用することで可能となるため、領域設定パスワードを知らないユーザは、ＷＯＲＭ領域設定およびロック・アンロック設定を行うことができない。なお、領域設定パスワードの変更に関しては後述する。
【００４２】
また、ＷＯＲＭ領域設定およびロック・アンロック設定は、メモリ１４０に含まれるＷＯＲＭ設定領域１４０ｃに対して行うこととなる。図３は、ＷＯＲＭ設定領域のデータ構造の一例を示す図である。
【００４３】
図３に示すように、このＷＯＲＭ設定領域１４０ｃは、第１領域、第２領域、第３領域および第４領域の合計４つの領域が存在する。なお、ここでは、説明の便宜上、４つの領域のみを示したが、任意の数の領域を設定することもできる。
【００４４】
また、各領域には、各領域固有の領域設定パスワードが設定されている。すなわち、第１領域のＷＯＲＭ領域設定およびロック・アンロック設定を行うには、第１領域パスワードが必要となり、第２領域のＷＯＲＭ領域設定およびロック・アンロック設定を行うためには、第２領域パスワードが必要となる。
【００４５】
同様に、第３領域のＷＯＲＭ領域設定およびロック・アンロック設定を行うためには、第３領域パスワードが必要となり、第４領域のＷＯＲＭ領域設定およびロック・アンロック設定を行うためには、第４領域パスワードが必要となる。なお、領域設定パスワードが適切か否かの判断は、コマンド判定部１３０ｂが行うことになる。
【００４６】
また、コマンド判定部１３０ｂは、領域パスワードが適切か否かの判断で、領域パスワードが適切でないと判断した場合には、当該領域パスワードに対応するパスワード照合不一致フラグを領域パスワード記憶部１４０ｂにセットする。このパスワード照合不一致フラグは、該当する領域パスワードの照合が成功し、WORM AREA SETコマンドのレスポンスを返却した際にリセットされる。
【００４７】
なお、パスワード照合不一致フラグがセットされている間は、当該領域に対するWORM AREA SETコマンドを受付けてから領域パスワードの照合を開始するまでに所定時間のインターバルをおく。
【００４８】
なお、第１領域パスワード、第２領域パスワード、第３領域パスワードおよび第４領域パスワードは、領域パスワード記憶部１４０ｂが保持する。
【００４９】
また、各領域において、所定バイトごとに、ＷＯＲＭ領域設定用フラグおよびロック・アンロック設定用フラグが存在し、該ＷＯＲＭ領域設定フラグおよびロック・アンロック設定フラグを立てることで、対応する領域がＷＯＲＭ領域およびロック・アンロック状態となる。
【００５０】
例えば、所定バイトからなる領域１４１をＷＯＲＭ領域かつ、ロック状態に設定する場合には、ロック・アンロック設定用フラグ領域１４２にビットを立て、ＷＯＲＭ領域設定用フラグ領域１４３にビットを立てる。その他の領域も、対応するＷＯＲＭ領域設定用フラグ領域およびロック・アンロック設定用フラグ領域にビットを立てることで、ＷＯＲＭ領域およびロック状態に設定することができる。
【００５１】
なお、ロック・アンロック設定用フラグ領域にビットが立っていない場合には、対応する領域が、アンロック状態であることを示し、ＷＯＲＭ領域設定用フラグ領域にビットが立っていない場合には、ＷＯＲＭ領域でないことを示す。
【００５２】
ところで、ＷＯＲＭ設定領域１４０ｃの第１領域には、システムエリアが存在する。図４は、システムエリアのデータ構造の一例を示す図である。同図に示すように、システムエリアには、タグＩＤ、タグ・メーカ、タグのハードウェア種、タグメモリのレイアウトおよびシステムリザーブにかかる情報を含んでいる。
【００５３】
また、システムエリアに対応する領域は、予め、ＷＯＲＭ領域およびロック状態に設定されており、該設定の変更は行えない。すなわち、システムエリアに対するＷＯＲＭ領域およびロック状態の解除を行う旨の命令を、コマンド実行部１３０ａが受取った場合には、エラーをリーダライタ２００に送信することになる。
【００５４】
次に、WORM AREA SETコマンドのデータ構造の説明を行う。図５は、WORM AREA SETコマンドのデータ構造の一例を示す図である。同図に示すように、WORM AREA SETコマンド４００は、プリアンブル４１０と、デリミタ４２０と、コマンド４３０と、ＩＤ４４０と、アドレス４５０と、パスワード４６０と、ビットマップデータ４７０と、新パスワード設定領域４８０と、ＣＲＣ（Cyclic Redundancy Check）４９０とを含む。
【００５５】
ここで、プリアンブル４１０およびデリミタ４２０は、それぞれ、データの開始およびデータの区切りを通知するための情報を格納し、ＣＲＣ４８０は、WORM AREA SETコマンド４００にエラーが含まれているか否かを検査するためのデータを格納する。また、コマンド４３０は、WORM AREA SETコマンドを識別するためのデータを含む。つまり、コマンド実行部１３０ａは、コマンド４３０に格納されたデータを参照することで、リーダライタ２００からの命令がWORM AREA SETコマンドであることを把握する。
【００５６】
ＩＤ４４０は、WORM AREA SETコマンドの実行対象となる１Ｃタグを識別するためのデータを格納する。コマンド判定部１３０ｂは、ＩＤ４４０に含まれるデータと、メモリ１４０のＷＯＲＭ設定領域１４０ｂに含まれるＩＣタグ１００のＩＤとを比較し、結果をコマンド実行部１３０ａに通知する。
【００５７】
つまり、コマンド実行部１３０ａは、ＩＤ４４０に格納されたデータと、ＩＣタグ１００のＩＤとの双方が等しい場合に、WORM AREA SETコマンドを実行し、双方が等しくない場合には、WORM AREA SETコマンドを実行しない。
【００５８】
アドレス４５０は、後述するビットマップデータ４７０に含まれるデータの内容や、該ビットマップデータ４７０に含まれるデータを書き込むメモリの位置を指定するための情報を格納する。具体的には、図６に示すように、アドレス４５０は、ＷＯＲＭ設定領域アドレス４５１と、ＰＷアドレス４５２とを格納している。
【００５９】
ＷＯＲＭ設定領域アドレス４５１は、ＷＯＲＭ領域の設定を行う領域およびロック・アンロック設定を行う領域を特定するデータを格納する。
【００６０】
ＰＷアドレス４５２は、領域設定パスワードを変更する場合に、該領域設定パスワードの変更する位置を特定するためのデータを格納する。
【００６１】
パスワード４６０は、領域設定パスワードを含んでいる。なお、領域設定パスワードは、ＷＯＲＭ領域設定およびロック・アンロック設定をおこなう位置によって異なった領域設定パスワードとなる。
【００６２】
ビットマップデータ４７０は、図７に示すように、ロック状態ビットマップ４７１と、ＷＯＲＭ領域ビットマップ４７２とを格納する。
【００６３】
ロック状態ビットマップ４７１は、ＷＯＲＭ領域アドレス４５１によって特定されるＷＯＲＭ設定領域１４０ｃの位置から所定領域までのロック・アンロック設定に係るデータを格納する。
【００６４】
また、ＷＯＲＭ領域ビットマップ４７２は、ＷＯＲＭ領域アドレス４５１によって特定されるＷＯＲＭ設定領域１４０ｃの位置から所定領域までのＷＯＲＭ領域設定に係るデータを格納する。
【００６５】
すなわち、コマンド実行部１３０ａは、ＷＯＲＭ領域アドレス４５１と、ロック状態ビットマップ４７１と、ＷＯＲＭ領域ビットマップ４７２とを基に、ＷＯＲＭ設定領域１４０ｃのロック・アンロック設定用フラグ領域およびＷＯＲＭ領域設定用フラグ領域にビットを立てることになる。
【００６６】
図８は、ロック状態ビットマップ４７１およびＷＯＲＭ領域ビットマップ４７２の具体例を示す図である。同図に示すように、ロック状態ビットマップ４７１は、ｂ４、ｂ５、ｂ６およびｂ７を含み、ＷＯＲＭ領域ビットマップ４７２は、ｂ０、ｂ１、ｂ２およびｂ３を含む。
【００６７】
ここで、ｂ４〜７は、ロック・アンロック設定用フラグ領域のフラグを立てるか立てないかの情報を含み、ｂ０〜３は、ＷＯＲＭ領域設定用フラグ領域のフラグを立てるか立てないかの情報を含む。具体的には、ｂ０〜７は、「１」または「０」のいずれかの値を保持しており、「１」を保持する場合には、フラグを立てることを意味し、「０」を保持する場合には、フラグを立てないことを意味する。
【００６８】
例えば、図３に示すように、ＷＯＲＭ領域アドレス４５１によって特定される領域が１４５の場合には、ロック・アンロック設定用フラグ領域１４６がｂ４に対応し、ＷＯＲＭ領域設定用フラグ領域１４７がｂ０に対応する。また、ロック・アンロック設定用フラグ領域１４８〜１５０は、それぞれｂ５〜７に対応し、ＷＯＲＭ領域設定用フラグ領域１５１〜１５３は、それぞれｂ１〜３に対応する。
【００６９】
すなわち、コマンド実行部１３０ａは、ＷＯＲＭ領域アドレス４５１によって特定されるＷＯＲＭ設定領域１４０ｃの位置から４領域分のＷＯＲＭ領域設定およびロック・アンロック設定を同時に行う。
【００７０】
新パスワード設定領域４８０は、領域設定パスワードを変更する場合に、変更後の領域設定パスワードが格納される。
【００７１】
なお、コマンド実行部１３０ａは、領域設定パスワードを変更した場合には、該変更した最新の領域設定パスワードをリーダライタ２００に送信することになる。なぜなら、領域設定パスワードを変更する際には、変更前の領域設定パスワードでは変更が行えないためである。
【００７２】
また、本実施例では、一回のWORM AREA SETコマンドで全ての領域設定パスワードを変更したがこれに限定されるものではなく、例えば、複数回以上のWORM AREA SETコマンドで全ての領域設定パスワードを変更しても良い。
【００７３】
次に、コマンド実行部１３０ａが、WORM AREA STATUSコマンドを受取った場合の処理について説明する。この、WORM AREA STATUSコマンドを受取った場合、コマンド実行部１３０ａは、指定された領域に対するＷＯＲＭ領域設定の状況およびロック・アンロック設定の状況を、ＰＣ３００に通知する。
【００７４】
図９は、WORM AREA STATUSコマンドのデータ構造の一例を示す図である。同図に示すように、WORM AREA STATUSコマンド５００は、プリアンブル５１０と、デリミタ５２０と、コマンド５３０と、ＩＤ５４０と、アドレス５５０と、ＣＲＣ５６０とを含む。
【００７５】
ここで、プリアンブル５１０、デリミタ５２０およびＣＲＣ５６０は、図５に示したプリアンブル４１０、デリミタ４２０およびＣＲＣ４８０と等しいため説明を省略する。また、コマンド５３０は、WORM AREA STATUSコマンドを識別するためのデータを格納する。
【００７６】
ＩＤ５４０は、WORM AREA STATUSコマンドの実行対象となる１Ｃタグを識別するためのデータを含む。コマンド判定部１３０ａは、ＩＤ５４０に含まれるデータと、ＷＯＲＭ設定領域１４０ｃに含まれるＩＣタグ１００のＩＤとを比較し、比較結果をコマンド実行部１３０ａに渡す。
【００７７】
そして、コマンド実行部１３０ａは、ＩＤ５４０に含まれるデータと、ＩＣタグ１００のＩＤとの双方が等しい場合に、WORM AREA STATUSコマンドを実行し、双方が等しくない場合には、WORM AREA STATUSコマンドを実行しない。
【００７８】
アドレス５５０は、ＷＯＲＭ設定領域１４０ｃにおいて、ＷＯＲＭ領域設定の状況およびロック・アンロック設定の状況の調査対象となる位置を特定するための情報を含む。
【００７９】
すなわち、WORM AREA STATUSコマンドを受取ったコマンド実行部１３０ａは、アドレス５５０に含まれる情報を基にして、ＷＯＲＭ設定領域１４０ｃ内の領域を特定し、該特定した領域に係るＷＯＲＭ領域設定の状況およびロック・アンロック設定の状況を、ＰＣ３００に通知することになる。
【００８０】
図１０は、コマンド実行部１３０ａが作成するWORM AREA STATUSコマンドに対する出力データである。同図に示すように、この出力データは、プリアンブル５７０と、ビットマップ５８０と、ＣＲＣ５９０とを含む。ここで、プリアンブル５７０およびＣＲＣ５９０は上述したプリアンブル４１０およびＣＲＣ４８０と同様であるため説明を省略する。
【００８１】
ビットマップ５８０は、指定された領域に対するＷＯＲＭ領域設定の状況およびロック・アンロック設定の状況に係る情報を格納する。図１１は、出力データのビットマップの一例を示す図である。同図に示すように、ビットマップ５８０は、ＷＯＲＭ領域ビットマップ５８１と、ロック状態ビットマップ５８２とを含む。
【００８２】
また、ＷＯＲＭ領域ビットマップ５８１は、ＷＯＲＭ領域の設定状況を示すｂ０〜ｂ３を含み、ロック状態ビットマップ５８２は、ロック設定状況を示すｂ４〜７を含む。
【００８３】
例えば、アドレス５５０によって指定された領域が、図３の１４５ならば、ロック・アンロック設定用フラグ領域１４６がｂ４に対応し、ＷＯＲＭ領域設定用フラグ領域１４７が、ｂ０に対応することになる。また、ロック・アンロック設定用フラグ領域１４８〜１５０は、ｂ５〜７に対応し、ＷＯＲＭ領域設定用フラグ領域１５１〜１５３は、ｂ１〜３に対応する。そして、対応するフラグ領域にビットが立っている場合には、対応するビットマップ５８０のｂ０〜７に「１」を保持させ、ビットが立っていない場合には、「０」を保持させる。
【００８４】
次に、コマンド実行部１３０ａが、WRITEコマンドを受取った場合の処理について説明する。この、WRITEコマンドを受取った場合、コマンド実行部１３０ａは、WRITEコマンドに含まれるデータをＷＯＲＭ設定領域１４０ｃに書き込む。
【００８５】
図１２は、WRITEコマンドのデータ構造の一例を示す図である。同図に示すように、WRITEコマンド６００は、プリアンブル６１０と、デリミタ６２０と、コマンド６３０と、ＩＤ６４０と、アドレス６５０と、バイトマスク６６０と、ライトデータ６７０と、ＣＲＣ６８０とを含む。
【００８６】
ここで、プリアンブル６１０、デリミタ６２０、ＩＤ６４０およびＣＲＣ６８０は、それぞれ上述したプリアンブル４１０、デリミタ４２０、ＩＤ４４０およびＣＲＣ４８０とほぼ同様であるため説明を省略する。
【００８７】
コマンド６３０は、WRITEコマンドを識別するためのデータを格納する。つまり、コマンド実行部１３０ａは、コマンド６３０に格納されたデータを参照することで、リーダライタ２００からの命令がWRITEコマンドであることを把握する。
【００８８】
アドレス６５０は、ライトデータ６７０を記録する位置を特定するための情報が含まれている。なお、コマンド判定部１３０ｂは、アドレス６５０によって特定される領域が、ロック状態かアンロック状態かを判断し、ロック状態の場合には、エラーを、ＲＦ部１２０を介してリーダライタ２００に送信する。この場合、コマンド実行部１３０ａは、WRITEコマンドを取りやめる。
【００８９】
バイトマスク６６０は、ライトデータ６７０の有効範囲を特定するデータが格納される。すなわち、コマンド実行部１３０ａは、ライトデータ６７０に格納されるデータを全てＷＯＲＭ設定領域１４０ｃに書き込むのではなく、バイトマスク６６０に特定される範囲のデータのみを、ＷＯＲＭ設定領域１４０ｃに書き込む。なお、ライトデータ６７０には、ＩＣタグ１００に係る情報が格納される。
【００９０】
また、ライトデータ６７０には、ＰＣ３００によってKILLコマンド有効フラグデータが格納される場合がある。このKILLコマンド有効フラグとは、後述するKILLコマンドを実行するか実行しないかを示すフラグである。すなわち、コマンド実行部１３０ａは、KILLコマンドを受付けた際、KILLコマンド有効フラグにビットが立っている場合には、KILLコマンドを受付け、KILLコマンド有効フラグにビットが立っていない場合には、KILLコマンドを無効とする。
【００９１】
図１３は、KILLコマンド有効フラグデータのデータ構造の一例を示す図である。同図に示すように、KILLコマンド有効フラグデータ７００は、リザーブ７１０と、ＥＡＳ（Electronic Article Surveillance）７２０と、KILL-ENB（Enable）７３０とを含む。ここで、リザーブ７１０は、予備領域である。
【００９２】
ＥＡＳ７２０は、ＩＣタグ１００に取り付けられる商品等の販売状況に関する情報を格納する。具体的に、ＥＡＳ７２０に「１」が格納されている場合には、ＩＣタグ１００に取り付けられている商品が販売済みであることを示す。一方、ＥＡＳ７２０に「０」が格納されている場合には、ＩＣタグ１００に取り付けられている商品が未販売であることを示す。
【００９３】
KILL-ENB７３０は、KILLコマンドを受付けるか受けつかないかの情報を格納する。具体的には、KILL-ENB７３０に「１」が格納されている場合には、KILLコマンドを受付ける旨を示し、KILL-ENB７３０に「０」が格納されている場合には、KILLコマンドを受付けない旨を示す。
【００９４】
この、KILLコマンド有効フラグデータ７００は、通常のライトデータ６７０と同様に、アドレス６５０に格納されるデータを基にして、ＷＯＲＭ設定領域１４０ｃに記録される。また、コマンド判定部１３０ｂは、KILLコマンド有効フラグデータ７００の記録された位置を把握し、KILLコマンドを受付けた場合に、該KILLコマンド有効フラグデータ７００を基に、KILLコマンドを実行するか否かの判定を行う。
【００９５】
次に、コマンド実行部１３０ａが、READコマンドを受取った場合の処理について説明する。この、READコマンドを受取った場合、コマンド実行部１３０ａは、READコマンドによって指定される領域のデータをＷＯＲＭ設定領域１４０ｃから読み取り、読み取ったデータをリーダライタ２００に送信する。
【００９６】
図１４は、READコマンドのデータ構造の一例を示す図である。同図に示すように、このREADコマンド８００は、プリアンブル８１０と、デリミタ８２０と、コマンド８３０と、ＩＤ８４０と、アドレス８５０と、ＣＲＣ８６０とを含む。ここで、プリアンブル８１０、デリミタ８２０、ＩＤ８４０およびＣＲＣ８６０は、それぞれプリアンブル４１０、デリミタ４２０、ＩＤ４４０およびＣＲＣ４８０とほぼ同様であるため説明を省略する。
【００９７】
コマンド８３０は、READコマンドを識別するためのデータを格納する。つまり、コマンド実行部１３０ａは、コマンド８３０に格納されたデータを参照することで、リーダライタ２００からの命令がREADコマンドであることを把握する。
【００９８】
アドレス８５０は、データを読み取る領域の位置を特定するための情報が格納されている。したがって、コマンド実行部１３０ａは、アドレス８５０に格納されたデータをもとにＷＯＲＭ設定領域１４０ｃ内のデータを読み出す領域を特定し、該特定した領域のデータを読み取る。そして、コマンド実行部１３０ａは、読み取ったデータを、ＲＦ部１２０を介してリーダライタ２００に送信する。
【００９９】
次に、コマンド実行部１３０ａが、GROUP SELECTコマンドを受取った場合の処理について説明する。この、GROUP SELECTコマンドを受取った場合、コマンド実行部１３０ａは、GROUP SELECTコマンドによって指定される領域のデータと、GROUP SELECTコマンドに含まれるデータとを比較する。そして、コマンド実行部１３０ａは、双方のデータが等しい場合にのみタグＩＤを、ＲＦ部１２０を介して、リーダライタ２００に送信する。
【０１００】
一方、双方のデータが等しくない場合には、コマンド実行部１３０ａは、レスポンスをリーダライタ２００に返信せず、処理を終了することになる。
【０１０１】
図１５は、GROUP SELECTコマンドのデータ構造の一例を示す図である。同図に示すように、このGROUP SELECTコマンド９００は、プリアンブル９１０と、デリミタ９２０と、コマンド９３０と、アドレス９４０と、マスク９５０と、コマンドデータ９６０と、ＣＲＣ９７０とを有する。ここで、プリアンブル９１０、デリミタ９２０およびＣＲＣ９７０は、上述したプリアンブル４１０、デリミタ４２０およびＣＲＣ４８０とほぼ同様であるため説明を省略する。
【０１０２】
コマンド９３０は、GROUP SELECTコマンドを識別するためのデータを格納する。つまり、コマンド実行部１３０ａは、コマンド９３０に格納されたデータを参照することで、リーダライタ２００からの命令が、GROUP SELECTコマンドであることを把握する。
【０１０３】
アドレス９４０は、後述するコマンドデータ９６０の比較対象となる領域の位置を特定するための情報を格納しており、マスク９５０は、コマンドデータ９６０に含まれるデータの有効範囲を特定する情報を格納している。
【０１０４】
コマンドデータ９６０は、アドレス９４０によって特定される領域に対して期待されるデータを格納する。本実施例では特に、このGROUP SELECTコマンドを、ＷＯＲＭ設定領域１４０ｃに記録されたＥＡＳや、KILL-ENBに関する情報を調査する場合に利用する。
【０１０５】
したがって、ＥＡＳおよびKILL-ENBに関する情報を記録した領域をアドレス９４０によって指定し、期待するデータをコマンドデータに格納することで、ＩＣタグ１００の販売状況や、KILL有効フラグに係る情報を取得することができる。
【０１０６】
例えば、ＰＣ３００が、アドレス９４０に、ＥＡＳおよびKILL-ENBに関する情報を記録した領域の位置を特定するデータを格納し、コマンドデータ９６０に「０１」を格納して、ＩＣタグ１００に送信した際に、ＩＣタグ１００からＩＤを受信した場合には、ＥＡＳが「０」に設定されており、KILL-ENBが「１」に設定されていることが分かる。
【０１０７】
すなわち、ＩＣタグ１００が付加されている商品は、「未販売」で、KILLコマンド有効フラグが「有効」になっていることが分かる。このように、コマンドデータ９６０に格納するデータおよびＩＣタグ１００からのレスポンスを基に、ＰＣ３００は、ＩＣタグ１００の販売状況や、KILLコマンドを受付けるか否かの情報を把握することができる。
【０１０８】
次に、コマンド実行部１３０ａが、KILLコマンドを受取った場合の処理について説明する。この、KILLコマンドを受取った際、コマンド実行部１３０ａは、コマンド判定部１３０ｂが、KILLコマンド有効フラグが有効になっていると判断した場合に、KILLコマンドを実行し、ＩＣタグの機能を停止させる。
【０１０９】
具体的に、コマンド実行部１３０ａが、KILLコマンドを実行する場合には、KILL情報記憶部１４０ａにKILLSTATUSフラグを立てる。そして、電源生成部１２０ｃから電源が供給された際に、コマンド実行部１３０ａは、KILL情報記憶部１４０ａにKILLSTATUSフラグが立っているか否かを確認し、KILLSTATUSフラグが立っている場合には、コマンド実行部１３０ａは、一切の処理を行わずＩＣタグとしての機能を無効化する。
【０１１０】
図１６は、KILLコマンドのデータ構造の一例を示す図である。同図に示すように、このKILLコマンド１０００は、プリアンブル１０１０と、デリミタ１０２０と、コマンド１０３０と、ＩＤ１０４０と、KILLパスワード１０５０と、ＣＲＣ１０６０とを有する。
【０１１１】
ここで、プリアンブル１０１０、デリミタ１０２０、ＩＤ１０４０およびＣＲＣ１０６０は、上述したプリアンブル４１０、デリミタ４２０、ＩＤ４４０およびＣＲＣ４８０とほぼ同様であるため説明を省略する。
【０１１２】
コマンド１０３０は、KILLコマンドを識別するためのデータを格納する。つまり、コマンド実行部１３０ａは、コマンド１０３０に格納されたデータを参照することで、リーダライタ２００からの命令が、KILLコマンドであることを把握する。
【０１１３】
KILLパスワード１０５０は、KILLコマンドを実行するためのパスワードを格納している。したがって、コマンド判定部１３０ｂは、KILL情報記憶部１４０ａに記録されたパスワードと、KILLパスワード１０５０に格納されたパスワードとが等しく、かつKILLコマンド有効フラグが有効になっている場合にのみ、コマンド実行部１３０ａによるKILLコマンドの実行を許可することになる。
【０１１４】
次に、WORM AREA SETコマンドに係るＩＣタグシステムの処理について説明する。図１７は、WORM AREA SETコマンドに係るＩＣタグシステムの処理を示すフローチャートである。同図に示すように、上位ＡＰＬ３００ａは、ＩＣタグ１００のＩＤと、領域パスワードを示すＰＷａと、ビットマップデータを示すＢＭ（図５に示したビットマップデータ４７０とほぼ同様）とを、ミドルウェア３００ｂを介してドライバ３００ｃに渡す。
【０１１５】
ドライバ３００ｃは、リーダライタファーム２００ａと共通のＩＦ（Interface）暗号鍵Ｋｉを保持している。ドライバ３００ｃは、エンクリプトと、ＰＷａを基にして、ＰＷａを暗号化したＰＷｉを作成する。そして、ドライバ３００ｃは、ＩＤと、ＰＷｉと、ＢＭとをリーダライタファーム２００ａに送信する。
【０１１６】
リーダライタファーム２００ａは、ドライバ３００ｃと共通のＩＦ暗号鍵Ｋｉと、ＴＡＧ暗号鍵Ｋｐを保持している。リーダライタファーム２００ａは、デクリプトと、ＩＦ暗号鍵Ｋｉと、ＰＷｉとを基に、ＰＷａを取り出す。
【０１１７】
そして、リーダライタファーム２００ａは、ＰＷａと、ＴＡＧ暗号鍵Ｋｐと、エンクリプトとを基に、領域パスワードＰＷｔを生成する。その後、リーダライタファーム２００ａは、ＩＤと、ＰＷｔと、ＢＭをＲＦモジュール２００ｂに渡す。
【０１１８】
ＲＦモジュール２００ｂは、WORM AREA SETコマンド４００のＩＤ４４０にリーダライタファーム２００ａから受取ったＩＤを格納し、パスワード４６０にＰＷｔを格納し、ビットマップデータ４７０にＢＭを格納して、該WORM AREA SETコマンド４００をＩＣタグ１００に送信する。
【０１１９】
次に、WRITEコマンドに係るＩＣタグシステムの処理について説明する。図１８は、WRITEコマンドに係るＩＣタグシステムの処理を示すフローチャートである。なお、WRITEコマンドに係るＩＣタグシステムの処理は、上位ＡＰＬ３００ａで書き込みデータＤａを暗号化する場合と、リーダライタファーム２００ａで書き込みデータＤａを暗号化する場合とがある。
【０１２０】
まず、上位ＡＰＬ３００ａで、書き込みデータＤａを暗号化する場合の処理について説明する。図１８に示すように、上位ＡＰＬ３００ａは、データ暗号鍵Ｋｄを保持している。上位ＡＰＬ３００は、書き込みデータＤａと、エンクリプトＥと、データ暗号鍵Ｋｄとを基にして、書き込みデータＤａを暗号化し、暗号済み書き込みデータＤｉを作成する。
【０１２１】
そして、上位ＡＰＬ３００ａは、暗号化済み書き込みデータＤｉおよびＩＤをミドルウェア３００ｂ、ドライバ３００ｃおよびリーダライタファーム２００ａを介して、ＲＦモジュール２００ｂに渡し、ＲＦモジュール２００ｂは、暗号化済み書き込みデータＤｉおよびＩＤをWRITEコマンド６００に格納し、WRITEコマンド６００をＩＣタグ１００に送信する。
【０１２２】
次に、リーダライタファーム２００ａで、書き込みデータＤａを、暗号化する場合の処理について説明する。図１８に示すように、上位ＡＰＬ３００ａは、ＩＣタグ１００のＩＤおよび書き込みデータＤａを、ミドルウェア３００ｂを介してドライバ３００ｃに渡す。
【０１２３】
ドライバ３００ｃは、ＩＤおよび書き込みデータＤａを、上位ＡＰＬ３００ａから受取る。ドライバ３００ｃは、ＩＦ暗号鍵Ｋｉと、エンクリプトと、書き込みデータＤａを基に、書き込みデータＤａを暗号化した、暗号化済み書き込みデータＤｉを生成し、ＩＤおよび暗号化済み書き込みデータＤｉを、リーダライタファーム２００ａに送信する。
【０１２４】
リーダライタファーム２００ａは、ドライバ３００ｃからＩＤおよび暗号化済み書き込みデータＤｉを、受信する。なお、リーダライタファーム２００ａは、データ暗号鍵Ｋｄ１をさらに保持する。
【０１２５】
そして、リーダライタファーム２００ａは、ＩＦ暗号鍵Ｋｉと、暗号化済み書き込みデータＤｉと、デリクプトＤとを基にして、書き込みデータＤａを取り出す。
【０１２６】
その後、リーダライタファーム２００ａは、データ暗号鍵Ｋｄ１と、書き込みデータＤａと、エンクリプトとを基に、暗号化済み書き込みデータＤｔを生成し、ＩＤおよび暗号化済み書き込みデータＤｔをＲＦモジュール２００ｂに渡す。
【０１２７】
ＲＦモジュール２００ｂは、ＩＤおよび暗号化済み書き込みデータＤｔを、WRITEコマンド６００に格納し、WRITEコマンド６００をＩＣタグ１００に送信する。
【０１２８】
次に、KILLコマンドに係るＩＣタグシステムの処理について説明する。図１９は、KILLコマンドに係るＩＣタグシステムの処理を示すフローチャートである。同図に示すように、上位ＡＰＬ３００は、KILL暗号鍵Ｋｋを保持しており、KILLデータをKILL暗号鍵Ｋｋで暗号化し、KILLａとする。そして、上位ＡＰＬ３００ａは、KILLａと、ＩＤとをミドルウェア３００ｂを介してドライバ３００ｃに渡す。
【０１２９】
ドライバ３００ｃは、ＩＦ暗号鍵Ｋｉと、KILLａと、エンクリプトとを基に、KILLａを暗号化し、KILLｉを生成する。そして、ドライバ３００ｃは、ＩＤおよびKILLｉを、リーダライタファーム２００ａに送信する。
【０１３０】
リーダライタファーム２００ａは、KILL暗号鍵Ｋｋを保持している。リーダライタファーム２００ａは、ドライバ３００ｃからＩＤおよびKILLｉを受信し、ＩＦ暗号鍵Ｋｉと、KILLｉと、デクリプトとを基にKILLａを取り出す。
【０１３１】
そして、リーダライタファーム２００ａは、KILL暗号鍵Ｋｋと、KILLａと、エンクリプトとを基にKILLａを暗号化し、KILLｔを生成する。
【０１３２】
そして、リーダライタファーム２００ａは、ＩＤおよびKILLｔを、ＲＦモジュール２００ｂに渡す。ＲＦモジュール２００ｂは、KILLｔをKILLコマンド１０００に格納し、KILLコマンド１０００をＩＣタグ１００に送信する。
【０１３３】
上述したように、本実施例では、コマンド実行部１３０ａが、ＷＯＲＭ領域設定およびロック・アンロック設定に係る情報を含んだWORM AREA SETコマンドを受信し、該WORM AREA SETコマンドによって指定される領域を、ＷＯＲＭ領域およびロック・アンロック状態に設定する。そして、ＷＯＲＭ領域に設定された領域は、一度データを書き込んだ後、書き込んだデータの変更や削除が不可能となるので、領域設定パスワードを知らない第３者による、データの改竄等を防ぐことが可能となる。
【０１３４】
また、アンロック状態の領域にデータを書き込んだ後、コマンド実行部１３０ａが自動的に、データを書き込んだ領域をロック状態に遷移させるので、正規のユーザは、パスワードを知らなくとも、ＩＣタグ１００にデータを書き込むことが可能であり、データを書き込んだ後、領域パスワードを知らない一般のユーザは、ロック状態を解除することができず、ＩＣタグ１００のセキュリティを高めることができる。
【０１３５】
また、ＩＣタグ１００に係るパスワードを利用するのは、ＷＯＲＭ領域設定およびロック・アンロック設定を行う一部の管理者のみであり、正規のユーザは、ＩＣタグ１００のパスワードを利用する必要が無いため、パスワードの漏洩を防ぐことができる。
【０１３６】
なお、本実施の形態では、ＰＣとリーダライタ２００とをＵＳＢやＬＡＮなどで接続し、ＩＣタグ１００に対するデータの書き込みや読み込みを行ったが、これに限定されるものではなく、例えば、図２０に示すようにハンディターミナル３５０を利用して、ＩＣタグ１００に対するデータの書き込みや読み込みを行うことができる。
【０１３７】
ハンディターミナル３５０は、上位ＡＰＬ３５０ａと、ミドルウェア３５０ｂと、ドライバ３５０ｃと、ＲＦモジュール３５０ｄとを有する。なお、上位ＡＰＬ３５０ａ、ミドルウェア３５０ｂ、ドライバ３５０ｃおよびＲＦモジュール３５０ｄは、第１図に示した上位ＡＰＬ３００ａ、ミドルウェア３００ｂ、ドライバ３００ｃおよびＲＦモジュール３００ｄとほぼ同様であるため詳しい説明は省略する。
【０１３８】
また、本実施例では、本発明をＩＣタグに適応した場合を示したが、ＩＣカードに対しても同様に適応することができる。図２１は、本発明に係るＩＣカードの構成を示す機能ブロック図である。
【０１３９】
同図に示すように、ＩＣカード１５０は、制御部１６０を有する。その他の構成および動作は、図２に示したＩＣタグ１００とほぼ同様であるので同一の構成要素には同一の符号を付して説明を省略する。
【０１４０】
制御部１６０は、暗号・復号処理部１６０ａと、コマンド実行部１６０ｂと、コマンド判定部１６０ｃとを有する。
【０１４１】
ここで、コマンド実行部１６０ａと、コマンド判定部１６０ｃは、図２に示したコマンド実行部１３０ａおよびコマンド判定部１３０ｂとほぼ同様の処理を行うため、説明を省略する。
【０１４２】
暗号・復号化処理部１６０ａは、リーダライタおよびＩＣカード１５０間のデータ通信を暗号化して行うことを可能とする処理部である。具体的には、リーダライタから送信される暗号化されたコマンドを復号化し、該復号化したコマンドを、コマンド実行部１６０ｂに渡す。
【０１４３】
また、暗号・復号処理部１６０ａは、コマンド実行部１６０ｂが作成するコマンドに対するレスポンスデータを受け取り、該受取ったレスポンスデータを暗号化する。そして、暗号・復号処理部１６０ａは、暗号化したレスポンスデータをリーダライタに送信する。
【０１４４】
すなわち、ＩＣタグでは、暗号化・復号化といった複雑な処理を行えないため、リーダライタおよびＩＣタグ間で送受されるデータが盗聴される危険があったが、暗号・復号処理部１６０ａを利用して、データを暗号化することで、データの盗聴を防止し、セキュリティを高めることができる。
【０１４５】
（付記１）リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体であって、
データの書き込みを禁止する領域を示す書き込み禁止領域を設定する書き込み禁止領域設定手段と、
書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定する領域判定手段と、
前記領域判定手段が、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更する書き込み処理手段と、
を備えたことを特徴とする非接触ＩＣ記録媒体。
【０１４６】
（付記２）一回目のデータ書き込みを許可し、一度書き込んだデータの消去および変更を禁止する領域を示す変更禁止領域を設定する変更禁止領域設定手段を更に備えたことを特徴とする付記１に記載の非接触ＩＣ記録媒体。
【０１４７】
（付記３）前記書き込み禁止領域を、データ書き込み可能な通常の領域に変更する禁止領域変更手段を更に備えたことを特徴とする付記１に記載の非接触ＩＣ記録媒体。
【０１４８】
（付記４）前記禁止領域変更手段は、前記書き込み禁止領域を、通常の領域に変更する旨の命令を受取った際に、該命令に含まれるパスワードと、前記書き込み禁止領域に対応する領域パスワードとを比較し、双方のパスワードが等しい場合に、前記書き込み禁止領域を通常の領域に変更することを特徴とする付記３に記載の非接触ＩＣ記録媒体。
【０１４９】
（付記５）前記変更禁止領域を、データの変更および消去可能な通常の領域に変更する領域変更手段を更に備えたことを特徴とする付記２に記載の非接触ＩＣ記録媒体。
【０１５０】
（付記６）前記領域変更手段は、前記変更禁止領域を、通常の領域に変更する旨の命令を受取った際に、該命令に含まれるパスワードと、前記変更禁止領域に対応する領域パスワードとを比較し、双方のパスワードが等しい場合に、前記変更禁止領域を、通常の領域に変更することを特徴とする付記５に記載の非接触ＩＣ記録媒体。
【０１５１】
（付記７）前記領域パスワードを変更するパスワード変更手段を更に備えたことを特徴とする付記４または６に記載の非接触ＩＣ記録媒体。
【０１５２】
（付記８）リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体を管理する記録媒体管理プログラムであって、
データの書き込みを禁止する領域を示す書き込み禁止領域を設定する書き込み禁止領域設定手順と、
書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定する領域判定手順と、
前記領域判定手順が、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更する書き込み処理手順と、
をコンピュータに実行させることを特徴とする記録媒体管理プログラム。
【０１５３】
（付記９）一回目のデータ書き込みを許可し、一度書き込んだデータの消去および変更を禁止する領域を示す変更禁止領域を設定する変更禁止領域設定手順を更にコンピュータに実行させることを特徴とする付記８に記載の記録媒体管理プログラム。
【０１５４】
（付記１０）前記書き込み禁止領域を、データ書き込み可能な通常の領域に変更する禁止領域変更手順を更にコンピュータに実行させることを特徴とする付記８に記載の記録媒体管理プログラム。
【０１５５】
（付記１１）リーダライタからの無線による指示に応答して動作する非接触ＩＣ記録媒体を管理する記録媒体管理方法であって、
データの書き込みを禁止する領域を示す書き込み禁止領域を設定する書き込み禁止領域設定工程と、
書き込みデータを受信した場合に、該データを書き込む領域が、書き込み禁止領域であるか否かを判定する領域判定工程と、
前記領域判定工程が、書き込み禁止領域でないと判定した場合に、該当領域にデータを書き込み、該書き込んだ領域を書き込み禁止領域に変更する書き込み処理工程と、
を含んだことを特徴とする記録媒体管理方法。
【０１５６】
（付記１２）一回目のデータ書き込みを許可し、一度書き込んだデータの消去および変更を禁止する領域を示す変更禁止領域を設定する変更禁止領域設定工程を更に含んだことを特徴とする付記１１に記載の記録媒体管理方法。
【０１５７】
（付記１３）前記書き込み禁止領域を、データ書き込み可能な通常の領域に変更する禁止領域変更工程を更に含んだことを特徴とする付記１１に記載の記録媒体管理方法。
【産業上の利用可能性】
【０１５８】
以上のように、本発明にかかる非接触ＩＣ記録媒体、記録媒体管理プログラムおよび記録媒体管理方法は、重要なデータを保持するＩＣタグやＩＣカードなどに有用であり、特に、ＩＣタグやＩＣカードに係るパスワードを通知するユーザを最小限に抑える場合に適している。
【図面の簡単な説明】
【０１５９】
【図１】ＩＣタグシステムのシステム構成を示すブロック図である。
【図２】図１に示したＩＣタグの構成を示すブロック図である。
【図３】ＷＯＲＭ設定領域のデータ構造の一例を示す図である。
【図４】システムエリアのデータ構造の一例を示す図である。
【図５】WORM AREA SETコマンドのデータ構造の一例を示す図である。
【図６】アドレスのデータ構造の一例を示す図である。
【図７】ビットマップデータのデータ構造の一例を示す図である。
【図８】ロック状態ビットマップおよびＷＯＲＭ領域ビットマップの具体例を示す図である。
【図９】WORM AREA STATUSコマンドのデータ構造の一例を示す図である。
【図１０】WORM AREA STATUSコマンドに対する出力データを示す図である。
【図１１】出力データのビットマップの一例を示す図である。
【図１２】WRITEコマンドのデータ構造の一例を示す図である。
【図１３】KILLコマンド有効フラグデータのデータ構造の一例を示す図である。
【図１４】READコマンドのデータ構造の一例を示す図である。
【図１５】GROUP SELECTコマンドのデータ構造の一例を示す図である。
【図１６】KILLコマンドのデータ構造の一例を示す図である。
【図１７】WORM AREA SETコマンドに係るＩＣタグシステムの処理を示すフローチャートである。
【図１８】WRITEコマンドに係るＩＣタグシステムの処理を示すフローチャートである。
【図１９】KILLコマンドに係るＩＣタグシステムの処理を示すフローチャートである。
【図２０】ハンディターミナルを利用した場合のＩＣタグシステムを示す図である。
【図２１】本発明に係るＩＣカードの構成を示す機能ブロック図である。
【符号の説明】
【０１６０】
１００    ＩＣタグ
１１０    アンテナ
１２０    ＲＦ部
１２０ａ  データ送受信部
１２０ｂ  制御クロック生成部
１２０ｃ  電源生成部
１３０    ロジック部
１３０ａ  コマンド実行部
１３０ｃ  コマンド判定部
１４０    メモリ
１４０ａ  ＫＩＬＬ情報記憶部
１４０ｂ  領域パスワード記憶部
１４０ｃ  ＷＯＲＭ設定領域
１４０ｄ  認証情報記録部
２００    リーダライタファーム
２００ａ  ファーム
２００ｂ  ＲＦモジュール
３００    ＰＣ
３００ａ  上位ＡＰＬ
３００ｂ  ミドルウェア
３００ｃ  ドライバ
【図１】
2006024012.tif 000003
【図２】
2006024012.tif 000004
【図３】
2006024012.tif 000005
【図４】
2006024012.tif 000006
【図５】
2006024012.tif 000007
【図６】
2006024012.tif 000008
【図７】
2006024012.tif 000009
【図８】
2006024012.tif 000010
【図９】
2006024012.tif 000011
【図１０】
2006024012.tif 000012
【図１１】
2006024012.tif 000013
【図１２】
2006024012.tif 000014
【図１３】
2006024012.tif 000015
【図１４】
2006024012.tif 000016
【図１５】
2006024012.tif 000017
【図１６】
2006024012.tif 000018
【図１７】
2006024012.tif 000019
【図１８】
2006024012.tif 000020
【図１９】
2006024012.tif 000021
【図２０】
2006024012.tif 000022
【図２１】
2006024012.tif 000023