(57)【要約】【課題】セキュリティを確保しつつ、無線タグの小規模化、及び、低コスト化を図る。【解決手段】無線タグ２０は、メモリ部２４に記憶された、データがメモリ部２４に書き込まれるごとに値が更新されるシーケンスナンバを、リーダライタ１０に送信する。リーダライタ１０は、シーケンスナンバに基づく値と、書き込み対象データとを用いて、第１の暗号化データを生成し、無線タグ２０に送信する。無線タグ２０は、シーケンスナンバに基づく値と、書き込み対象データとを用いて、第２の暗号化データを生成し、第１の暗号化データと第２の暗号化データとが一致する場合、書き込み対象データを、メモリ部２４に書き込み、シーケンスナンバを更新する。本発明は、例えば、近接通信を行う通信装置等に適用できる。【選択図】図１
2014135082.tif 000002
【特許請求の範囲】
【請求項１】
他の装置との間で近接通信を行う通信手段と、
データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段と、
前記他の装置からのコマンドに従い、前記記憶手段に対するデータの書き込みを制御する制御手段と
を備え、
前記通信手段は、
前記記憶手段に記憶された前記値情報を、前記他の装置に送信し、
前記他の装置が、前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて生成した第１の暗号化データ、及び、前記書き込み対象データを、前記他の装置から受信し、
前記制御手段は、
前記値情報に基づく値と、前記通信手段で受信された前記書き込み対象データとを用いて、第２の暗号化データを生成し、
前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段で受信された前記書き込み対象データを、前記記憶手段に書き込み、前記記憶手段に記憶された値情報を更新する
通信装置。
【請求項２】
前記値情報に基づく値は、前記値情報そのもの、又は、更新後の値情報である
請求項１に記載の通信装置。
【請求項３】
前記他の装置は、乱数を生成して、前記通信装置に送信し、
前記通信手段は、前記他の装置から送信されてくる前記乱数を受信し、
前記制御手段は、
前記通信装置を識別する識別情報を用いて生成される前記通信装置に固有の個別鍵と、前記通信手段で受信された前記乱数とを用いて、前記他の装置とのセッションに用いるセッション鍵を生成し、
前記識別情報と、前記セッション鍵とを用いて、第３の暗号化データを生成し、
前記通信手段は、前記識別情報と、前記第３の暗号化データとを、前記他の装置に送信し、
前記他の装置は、
前記通信手段から送信されてくる前記識別情報を用いて、前記個別鍵を生成し、
前記個別鍵と、前記乱数とを用いて、前記セッション鍵を生成し、
前記通信手段から送信されてくる前記識別情報と、前記セッション鍵とを用いて、第４の暗号化データを生成し、
前記第３の暗号化データと前記第４の暗号化データとを比較することによって、前記通信装置を認証する片側認証を行い、
前記片側認証に成功した場合、前記第１の暗号化データ、及び、前記書き込み対象データを、前記通信装置に送信する
請求項１に記載の通信装置。
【請求項４】
前記値情報は、前記記憶手段に、１つだけ記憶される
請求項１に記載の通信装置。
【請求項５】
前記記憶手段の記憶領域の一部は、サービスに割り当てられる最小単位の記憶領域であるユーザブロックであり、
前記ユーザブロックは、複数のユニットを有し、
前記ユニットは、書き込みが行われる所定単位の記憶領域であるページを１ページ以上有し、
前記ユーザブロックを構成する複数のユニットのうちの１のユニットは、前記ユーザブロックに書き込まれるデータをバッファリングするバッファとして機能するバッファユニットであり、
前記記憶手段は、前記記憶手段の記憶領域を管理するための管理情報を記憶し、
前記管理情報は、前記ユニットを特定するユニットナンバを含み、
前記制御手段は、
前記他の装置からのコマンドに従い、前記書き込み対象データを、バッファユニットに書き込み、
前記バッファユニットのユニットナンバとして、データを書き込むべき対象のユニットである対象ユニットの前記ユニットナンバを書き込み、
前記対象ユニットを、新たなバッファユニットとする
ことで、対象ユニットへのデータの書き込みを行う
請求項１に記載の通信装置。
【請求項６】
前記ユニットは、１ページで構成され、
前記記憶手段の記憶領域の他の一部は、前記ユーザブロックごとの管理情報を記憶する管理ブロックであり、
前記ユーザブロックの管理情報は、そのユーザブロックが有する複数のユニットそれぞれのユニットナンバと、１の値情報とを含み、
前記制御手段は、前記書き込み対象データを書き込んだユニットを有する前記ユーザブロックの前記管理情報に含まれる前記１の値情報を更新する
請求項５に記載の通信装置。
【請求項７】
前記ユニットは、複数のページで構成され、
１のユニットが有する複数のページのうちの１のページは、前記ユニットごとの管理情報を記憶する管理ページであり、
前記ユニットの管理情報は、そのユニットのユニットナンバと、１の値情報とを含み、
前記制御手段は、前記書き込み対象データを書き込んだユニットの前記管理情報に含まれる前記１の値情報を更新する
請求項５に記載の通信装置。
【請求項８】
前記第１の暗号化データ、及び、前記第２の暗号化データは、前記値情報に基づく値、前記書き込み対象データ、及び、前記対象ユニットのユニットナンバを用いて生成される
請求項５に記載の通信装置。
【請求項９】
他の装置との間で近接通信を行う通信手段と、
データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段と、
前記他の装置からのコマンドに従い、前記記憶手段に対するデータの書き込みを制御する制御手段と
を備える通信装置の
前記通信手段が、
前記記憶手段に記憶された前記値情報を、前記他の装置に送信し、
前記他の装置が、前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて生成した第１の暗号化データ、及び、前記書き込み対象データを、前記他の装置から受信し、
前記制御手段が、
前記値情報に基づく値と、前記通信手段で受信された前記書き込み対象データとを用いて、第２の暗号化データを生成し、
前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段で受信された前記書き込み対象データを、前記記憶手段に書き込み、前記記憶手段に記憶された値情報を更新する
ステップを含む通信方法。
【請求項１０】
データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段を有する他の装置との間で近接通信を行う通信手段と、
前記他の装置から送信されてくる前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて、第１の暗号化データを生成する生成手段と
を備え、
前記通信手段は、前記第１の暗号化データ、及び、前記書き込み対象データを、前記他の装置に送信し、
前記他の装置では、
前記値情報に基づく値と、前記通信手段からの前記書き込み対象データとを用いて、第２の暗号化データが生成され、
前記通信手段により送信されてきた前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段により送信されてきた前記書き込み対象データが前記記憶手段に書き込まれ、前記記憶手段に記憶された値情報が更新される
通信装置。
【請求項１１】
前記値情報に基づく値は、前記値情報そのもの、又は、更新後の値情報である
請求項１０に記載の通信装置。
【請求項１２】
前記通信装置が前記他の装置を認証するのに用いる乱数を生成する乱数生成手段をさらに備え、
前記通信手段は、
前記乱数を、前記他の装置に送信し、
前記他の装置は、
前記通信手段から送信されてくる前記乱数を受信し、
前記他の装置を識別する識別情報を用いて生成される前記他の装置に固有の個別鍵と、前記乱数とを用いて、前記通信装置とのセッションに用いるセッション鍵を生成し、
前記識別情報と、前記セッション鍵とを用いて、第３の暗号化データを生成し、
前記識別情報と、前記第３の暗号化データとを、前記通信装置に送信し、
前記生成手段は、
前記他の装置から送信されてくる前記識別情報を用いて、前記個別鍵を生成し、
前記個別鍵と、前記乱数とを用いて、前記セッション鍵を生成し、
前記他の装置から送信されてくる前記識別情報と、前記セッション鍵とを用いて、第４の暗号化データを生成し、
前記第３の暗号化データと前記第４の暗号化データとを比較することによって、前記他の装置を認証する片側認証を行い、
前記通信手段は、前記片側認証に成功した場合、前記第１の暗号化データ、及び、前記書き込み対象データを、前記他の装置に送信する
請求項１０に記載の通信装置。
【請求項１３】
データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段を有する他の装置との間で近接通信を行う通信手段と、
前記他の装置から送信されてくる前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて、第１の暗号化データを生成する生成手段と
を備える通信装置の
前記生成手段が、前記第１の暗号化データを生成し、
前記通信手段が、前記第１の暗号化データ、及び、前記書き込み対象データを、前記他の装置に送信する
ステップを含み、
前記他の装置では、
前記値情報に基づく値と、前記通信手段からの前記書き込み対象データとを用いて、第２の暗号化データが生成され、
前記通信手段により送信されてきた前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段により送信されてきた前記書き込み対象データが前記記憶手段に書き込まれ、前記記憶手段に記憶された値情報が更新される
通信方法。
【請求項１４】
近接通信を行う第１の装置と第２の装置とを備え、
前記第１の装置は、
データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段を有する前記第２の装置との間で近接通信を行う第１の通信手段と、
前記第２の装置から送信されてくる前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて、第１の暗号化データを生成する生成手段と
を有し、
前記第１の通信手段は、前記第１の暗号化データ、及び、前記書き込み対象データを、前記第２の装置に送信し、
前記第２の装置は、
前記第１の装置との間で近接通信を行う第２の通信手段と、
前記記憶手段と、
前記第１の装置からのコマンドに従い、前記記憶手段に対するデータの書き込みを制御する制御手段と
を有し、
前記第２の通信手段は、
前記記憶手段に記憶された前記値情報を、前記第１の装置に送信し、
前記第１の装置から送信されてくる前記第１の暗号化データ、及び、前記書き込み対象データを受信し、
前記制御手段は、
前記値情報に基づく値と、前記第２の通信手段で受信された前記書き込み対象データとを用いて、第２の暗号化データを生成し、
前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記第２の通信手段で受信された前記書き込み対象データを、前記記憶手段に書き込み、前記記憶手段に記憶された値情報を更新する
通信システム。
【請求項１５】
近接通信を行う第１の装置と第２の装置とを備え、
前記第１の装置は、
データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段を有する前記第２の装置との間で近接通信を行う第１の通信手段と、
前記第２の装置から送信されてくる前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて、第１の暗号化データを生成する生成手段と
を有し、
前記第２の装置は、
前記第１の装置との間で近接通信を行う第２の通信手段と、
前記記憶手段と、
前記第１の装置からのコマンドに従い、前記記憶手段に対するデータの書き込みを制御する制御手段と
を有する
通信システムの
前記第１の通信手段が、前記第１の暗号化データ、及び、前記書き込み対象データを、前記第２の装置に送信するステップと、
前記第２の通信手段が、
前記記憶手段に記憶された前記値情報を、前記第１の装置に送信し、
前記第１の装置から送信されてくる前記第１の暗号化データ、及び、前記書き込み対象データを受信し、
前記制御手段が、
前記値情報に基づく値と、前記第２の通信手段で受信された前記書き込み対象データとを用いて、第２の暗号化データを生成し、
前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記第２の通信手段で受信された前記書き込み対象データを、前記記憶手段に書き込み、前記記憶手段に記憶された値情報を更新する
ステップと
を含む通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、通信方法、及び、通信システムに関し、特に、例えば、リーダライタとの間で近接通信を行うICカードやICチップ等の無線タグについて、セキュリティを確保しつつ、無線タグの小規模化、及び、低コスト化を図ることができるようにする通信装置、通信方法、及び、通信システムに関する。
【背景技術】
【０００２】
近年、IC(Integrated Circuit)カード等を用いて、近距離で非接触により無線通信を行う近接通信が、例えば、電子定期券や、電子マネー等で利用されており、また、近接通信を利用した電子定期券や、電子マネーの機能を有する携帯電話機が広く普及してきている。
【０００３】
近接通信は、例えば、ISO/IEC 14443や、ISO/IEC 18092（以下、NFC(Near Field Communication)ともいう)として規格化されている。
【０００４】
ここで、NFCの規格に準拠した通信等の近接通信を行う通信装置のうちの、RF(Radio Frequency)信号を出力するリーダライタとの間で、リーダライタからの信号に応答する形で近接通信を行うICカードやICチップ等の通信装置を、無線タグともいう。
【０００５】
無線タグは、例えば、EEPROM(Electrically Erasable Programmable Read Only Memory)等の不揮発性メモリを内蔵し、近接通信により、リーダライタとの間でやりとりされるデータの、不揮発性メモリに対する読み書きを行うことで、各種のサービスを提供する。
【０００６】
リーダライタ、及び、無線タグでは、不正な装置との間で近接通信を行うことによって、無線タグが内蔵する不揮発性メモリに記憶されるデータが改竄されることを防止するため、例えば、対称暗号アルゴリズム等に従った相互認証が行われる（例えば、特許文献１を参照）。
【０００７】
対称暗号アルゴリズムに従った相互認証では、リーダライタ、及び、無線タグのうちの一方である、例えば、リーダライタが、乱数RAを生成し、その乱数RAを、共通鍵KAによって暗号化することで、乱数RAの暗号化データ{RA}KAを生成して、無線タグに送信する。
【０００８】
無線タグは、リーダライタからの暗号化データ{RA}KAを受信し、共通鍵KAによって復号する。さらに、無線タグは、暗号化データ{RA}KAの復号結果RA'を、共通鍵KBによって暗号化することで、復号結果RA'の暗号化データ{RA'}KBを生成して、リーダライタに送信する。
【０００９】
リーダライタは、無線タグからの暗号化データ{RA'}KBを受信し、共通鍵KBによって復号する。そして、リーダライタは、暗号化データ{RA'}KBの復号結果RA''と、乱数RAとを比較することによって、無線タグが正当な装置であるかどうかの認証を行う。
【００１０】
すなわち、暗号化データ{RA'}KBの復号結果RA''と、乱数RAとが一致している場合、無線タグは、共通鍵KA及びKBを有するので、リーダライタは、無線タグが、正当な装置であると認識する（無線タグの認証に成功する）。
【００１１】
また、対称暗号アルゴリズムに従った相互認証では、リーダライタ、及び、無線タグのうちの他方である無線タグでも、乱数RBが生成され、以下、リーダライタが無線タグを認証した場合と同様の処理が行われることで、無線タグは、リーダライタが正当な装置であるかどうかの認証を行う。
【００１２】
そして、無線タグにおいて、リーダライタの認証に成功すると、リーダライタ、及び、無線タグでは、乱数RA及びRBを用いて、暗号鍵が生成され、その暗号鍵によって、データを暗号化して、データのやりとりが行われる。
【００１３】
したがって、相互認証が成功したリーダライタと無線タグとの間では、暗号鍵によって、データを暗号化することで得られる暗号化データがやりとりされるので、データの盗聴を防止することができる。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】特開2009-276916号公報
【発明の概要】
【発明が解決しようとする課題】
【００１５】
以上のように、リーダライタと無線タグとの間で、対称暗号アルゴリズムに従った相互認証を行う場合には、リーダライタ、及び、無線タグのいずれにも、乱数を生成する回路（乱数生成回路）が必要となる。
【００１６】
しかしながら、無線タグに、乱数生成回路を設けることは、無線タグの小規模化、及び、低コスト化を妨げることになる。
【００１７】
一方、無線タグに、乱数生成回路を設けない場合には、対称暗号アルゴリズムに従った相互認証において、無線タグから、リーダライタが正当な装置であるかどうかの認証を行うことができない。
【００１８】
ところで、無線タグについては、例えば、特定の日や、数日等の短い期間に開催されるコンサート等のイベントのチケット等のサービスに利用することの期待が高まってきている。
【００１９】
イベントのチケットの他、テーマパーク等で使用する回数券等であっても、有効期間（チケットや回数券の使用可能な期間）が、短い期間に制限されているサービス（以下、短期間サービスともいう）については、不正な無線タグを使用するために、正当な無線タグの解析が行われたとしても、その解析が完了するまでには、有効期間が経過するため、電子マネー等のような有効期間がないサービスに要求されるほどの強力なセキュリティは、必要ない。
【００２０】
以上のように、短期間サービスに利用される無線タグについては、有効期間がないサービスに要求されるほどの強力なセキュリティまでは必要ないが、それでも、短期間サービスの有効期間の間では、無線タグの解析が困難な程度のセキュリティは確保する必要がある。
【００２１】
本発明は、このような状況に鑑みてなされたものであり、無線タグについて、セキュリティを確保しつつ、無線タグの小規模化、及び、低コスト化を図ることができるようにするものである。
【課題を解決するための手段】
【００２２】
本発明の第１の側面の通信装置は、他の装置との間で近接通信を行う通信手段と、データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段と、前記他の装置からのコマンドに従い、前記記憶手段に対するデータの書き込みを制御する制御手段とを備え、前記通信手段は、前記記憶手段に記憶された前記値情報を、前記他の装置に送信し、前記他の装置が、前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて生成した第１の暗号化データ、及び、前記書き込み対象データを、前記他の装置から受信し、前記制御手段は、前記値情報に基づく値と、前記通信手段で受信された前記書き込み対象データとを用いて、第２の暗号化データを生成し、前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段で受信された前記書き込み対象データを、前記記憶手段に書き込み、前記記憶手段に記憶された値情報を更新する通信装置である。
【００２３】
本発明の第１の側面の通信方法は、他の装置との間で近接通信を行う通信手段と、データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段と、前記他の装置からのコマンドに従い、前記記憶手段に対するデータの書き込みを制御する制御手段とを備える通信装置の前記通信手段が、前記記憶手段に記憶された前記値情報を、前記他の装置に送信し、前記他の装置が、前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて生成した第１の暗号化データ、及び、前記書き込み対象データを、前記他の装置から受信し、前記制御手段が、前記値情報に基づく値と、前記通信手段で受信された前記書き込み対象データとを用いて、第２の暗号化データを生成し、前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段で受信された前記書き込み対象データを、前記記憶手段に書き込み、前記記憶手段に記憶された値情報を更新するステップを含む通信方法である。
【００２４】
本発明の第１の側面においては、前記通信手段において、前記記憶手段に記憶された前記値情報が、前記他の装置に送信され、前記他の装置が、前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて生成した第１の暗号化データ、及び、前記書き込み対象データが、前記他の装置から受信される。そして、前記制御手段において、前記値情報に基づく値と、前記通信手段で受信された前記書き込み対象データとを用いて、第２の暗号化データが生成され、前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段で受信された前記書き込み対象データが、前記記憶手段に書き込まれ、前記記憶手段に記憶された値情報が更新される。
【００２５】
本発明の第２の側面の通信装置は、データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段を有する他の装置との間で近接通信を行う通信手段と、前記他の装置から送信されてくる前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて、第１の暗号化データを生成する生成手段とを備え、前記通信手段は、前記第１の暗号化データ、及び、前記書き込み対象データを、前記他の装置に送信し、前記他の装置では、前記値情報に基づく値と、前記通信手段からの前記書き込み対象データとを用いて、第２の暗号化データが生成され、前記通信手段により送信されてきた前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段により送信されてきた前記書き込み対象データが前記記憶手段に書き込まれ、前記記憶手段に記憶された値情報が更新される通信装置である。
【００２６】
本発明の第２の通信方法は、データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段を有する他の装置との間で近接通信を行う通信手段と、前記他の装置から送信されてくる前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて、第１の暗号化データを生成する生成手段とを備える通信装置の前記生成手段が、前記第１の暗号化データを生成し、前記通信手段が、前記第１の暗号化データ、及び、前記書き込み対象データを、前記他の装置に送信するステップを含み、前記他の装置では、前記値情報に基づく値と、前記通信手段からの前記書き込み対象データとを用いて、第２の暗号化データが生成され、前記通信手段により送信されてきた前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段により送信されてきた前記書き込み対象データが前記記憶手段に書き込まれ、前記記憶手段に記憶された値情報が更新される通信方法である。
【００２７】
本発明の第２の側面においては、前記他の装置から送信されてくる前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて、第１の暗号化データが生成され、前記第１の暗号化データ、及び、前記書き込み対象データが、前記他の装置に送信される。前記他の装置では、前記値情報に基づく値と、前記通信手段からの前記書き込み対象データとを用いて、第２の暗号化データが生成され、前記通信手段により送信されてきた前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記通信手段により送信されてきた前記書き込み対象データが前記記憶手段に書き込まれ、前記記憶手段に記憶された値情報が更新される。
【００２８】
本発明の第３の側面の通信システムは、近接通信を行う第１の装置と第２の装置とを備え、前記第１の装置は、データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段を有する前記第２の装置との間で近接通信を行う第１の通信手段と、前記第２の装置から送信されてくる前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて、第１の暗号化データを生成する生成手段とを有し、前記第１の通信手段は、前記第１の暗号化データ、及び、前記書き込み対象データを、前記第２の装置に送信し、前記第２の装置は、前記第１の装置との間で近接通信を行う第２の通信手段と、前記記憶手段と、前記第１の装置からのコマンドに従い、前記記憶手段に対するデータの書き込みを制御する制御手段とを有し、前記第２の通信手段は、前記記憶手段に記憶された前記値情報を、前記第１の装置に送信し、前記第１の装置から送信されてくる前記第１の暗号化データ、及び、前記書き込み対象データを受信し、前記制御手段は、前記値情報に基づく値と、前記第２の通信手段で受信された前記書き込み対象データとを用いて、第２の暗号化データを生成し、前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記第２の通信手段で受信された前記書き込み対象データを、前記記憶手段に書き込み、前記記憶手段に記憶された値情報を更新する通信システムである。
【００２９】
本発明の第３の側面の通信方法は、近接通信を行う第１の装置と第２の装置とを備え、前記第１の装置は、データと、データが記憶手段に書き込まれるごとに値が更新される値情報とを記憶する前記記憶手段を有する前記第２の装置との間で近接通信を行う第１の通信手段と、前記第２の装置から送信されてくる前記値情報に基づく値と、前記記憶手段に書き込む対象のデータである書き込み対象データとを用いて、第１の暗号化データを生成する生成手段とを有し、前記第２の装置は、前記第１の装置との間で近接通信を行う第２の通信手段と、前記記憶手段と、前記第１の装置からのコマンドに従い、前記記憶手段に対するデータの書き込みを制御する制御手段とを有する通信システムの前記第１の通信手段が、前記第１の暗号化データ、及び、前記書き込み対象データを、前記第２の装置に送信するステップと、前記第２の通信手段が、前記記憶手段に記憶された前記値情報を、前記第１の装置に送信し、前記第１の装置から送信されてくる前記第１の暗号化データ、及び、前記書き込み対象データを受信し、前記制御手段が、前記値情報に基づく値と、前記第２の通信手段で受信された前記書き込み対象データとを用いて、第２の暗号化データを生成し、前記第１の暗号化データと前記第２の暗号化データとが一致する場合、前記第２の通信手段で受信された前記書き込み対象データを、前記記憶手段に書き込み、前記記憶手段に記憶された値情報を更新するステップとを含む通信方法である。
【００３０】
本発明の第３の側面においては、前記第２の装置において、前記記憶手段に記憶された前記値情報が、前記第１の装置に送信され、前記第１の装置が、前記値情報に基づく値と、前記書き込み対象データとを用いて生成した前記第１の暗号化データ、及び、前記書き込み対象データが受信される。さらに、前記第２の装置において、前記値情報に基づく値と、受信された前記書き込み対象データとを用いて、第２の暗号化データが生成され、前記第１の暗号化データと前記第２の暗号化データとが一致する場合、受信された前記書き込み対象データが、前記記憶手段に書き込まれ、前記記憶手段に記憶された値情報が更新される。
【００３１】
なお、通信装置は、独立した装置であっても良いし、１つの装置を構成している内部ブロックであっても良い。
【発明の効果】
【００３２】
本発明の第１ないし第３の側面によれば、セキュリティを確保しつつ、無線タグの小規模化、及び、低コスト化を図ることができる
【図面の簡単な説明】
【００３３】
【図１】本発明を適用した通信システムの一実施の形態の構成例を示すブロック図である。
【図２】メモリ部２４の論理フォーマットの例を示す図である。
【図３】メモリ部２４に対するデータの書き込みを説明する図である。
【図４】メモリコラプションに対する対処を説明する図である。
【図５】リーダライタ１０のメモリ部１４、及び、無線タグ２０のメモリ部２４が記憶している、片側認証に必要な情報を示す図である。
【図６】リーダライタ１０が片側認証を行う場合の、リーダライタ１０及び無線タグ２０の処理を説明する図である。
【図７】リーダライタ１０が片側認証を行い、無線タグ２０が、その片側認証を利用して、リーダライタ１０の認証を行う場合の、リーダライタ１０及び無線タグ２０の処理を説明する図である。
【図８】リーダライタ１０が片側認証を行い、無線タグ２０が、その片側認証を利用して、リーダライタ１０の認証を行う場合の、リーダライタ１０及び無線タグ２０の処理を説明する図である。
【図９】メモリ部２４の論理フォーマットの他の例を示す図である。
【発明を実施するための形態】
【００３４】
［本発明を適用した通信システムの一実施の形態］
【００３５】
図１は、本発明を適用した通信システム（システムとは、複数の装置が論理的に集合した物をいい、各構成の装置が同一筐体中にあるか否かは、問わない）の一実施の形態の構成例を示すブロック図である。
【００３６】
図１において、通信システムは、リーダライタ１０、及び、無線タグ２０から構成される。
【００３７】
リーダライタ１０は、アンテナ１１からRF信号を出力することにより、無線タグ２０との間で、非接触で近接通信を行い、無線タグ２０（が内蔵するメモリ部２４）に、データを記憶させ（書き込み）、また、無線タグ２０からデータを読み出す。
【００３８】
すなわち、リーダライタ１０は、アンテナ１１、RF部１２、CPU(Central Processing Unit)１３、メモリ部１４、及び、乱数生成部１５を有する。
【００３９】
アンテナ１１は、例えば、コイルとコンデンサとからなる共振回路で構成され、RF部１２からのRF信号を送信する。
【００４０】
RF部１２は、無線タグ２０との間で近接通信を行う。
【００４１】
すなわち、RF部１２は、RF信号としての、キャリアをCPU１３からのコマンドやデータに従って変調することにより得られる変調信号を、アンテナ１１から出力することで、コマンドやデータを、無線タグ２０に送信する。
【００４２】
また、RF部１２は、RF信号としてのキャリアを、アンテナ１１から出力し、無線タグが、そのRF信号としてのキャリアを負荷変調することで送信してくるデータ等を受信する。
【００４３】
CPU１３は、メモリ部１４に記憶されたプログラムを実行することにより、リーダライタ１０を構成する各ブロックの制御、その他の処理を行う。
【００４４】
メモリ部１４は、CPU１３が実行するプログラムを記憶する。また、メモリ部１４は、無線タグ２０から読み出されたデータや、無線タグ２０に書き込むデータ等を記憶する。
【００４５】
乱数生成部１５は、無線タグ２０が正当な装置であるかどうかを（リーダライタ１０が）認証する片側認証に用いられる乱数を生成する。
【００４６】
無線タグ２０は、リーダライタ１０に近接すると、リーダライタ１０がアンテナ１１から出力するRF信号を電源として動作を開始し、リーダライタ１０との間で近接通信を行う。
【００４７】
近接通信では、リーダライタ１０は、RF信号をデータに従って変調することにより、データを送信し、無線タグ２０は、リーダライタ１０がRF信号によって送信してくるデータを受信して、内蔵するメモリ部２４に書き込む。
【００４８】
また、無線タグ２０は、メモリ部２４に記憶されたデータを読み出し、リーダライタ１０から送信されてくるRF信号を負荷変調することで、データを、リーダライタ１０に送信する。
【００４９】
すなわち、無線タグ２０は、アンテナ２１、RF部２２、コマンドシーケンサ部２３、及び、メモリ部２４を有する。
【００５０】
アンテナ２１は、例えば、コイルとコンデンサとからなる共振回路で構成され、リーダライタ１０からのRF信号を受信し、RF部２２に供給する。
【００５１】
RF部２２は、リーダライタ１０との間で近接通信を行う。
【００５２】
すなわち、RF部２２は、リーダライタ１０と無線タグ２０とが近接することにより、アンテナ２１で、リーダライタ１０からのRF信号が受信されると、そのRF信号から電源となる電力を得て、必要なブロックに供給する。
【００５３】
また、RF部２２は、リーダライタ１０からのRF信号を、コマンドやデータに復調し、コマンドシーケンサ部２３に供給する。
【００５４】
さらに、RF部２２は、コマンドシーケンサ部２３から供給されるデータに従って、リーダライタ１０からのRF信号を負荷変調することで、データを、リーダライタ１０に送信する。
【００５５】
コマンドシーケンサ部２３は、RF部２２から供給される、リーダライタ１０からのコマンドに従って、シーケンス制御を行うことで、メモリ部２４に対するデータの読み書き等の制御を行う。
【００５６】
すなわち、コマンドシーケンサ部２３は、リーダライタ１０からのコマンドが、データの書き込みを要求するライトコマンドである場合、そのライトコマンドとともに、リーダライタ１０から送信され、RF部２２から供給されるデータを、メモリ部２４に書き込む。
【００５７】
また、コマンドシーケンサ部２３は、リーダライタ１０からのコマンドが、データの読み出しを要求するリードコマンドである場合、メモリ部２４からデータを読み出し、RF部２２に供給する。
【００５８】
メモリ部２４は、例えば、EEPROM等の不揮発性メモリであり、コマンドシーケンサ部２３の制御（管理）の下、データを記憶する。
【００５９】
ここで、以上のように、リーダライタ１０は、無線タグ２０を認証するのに用いる乱数を生成する乱数生成部１５を有するが、無線タグ２０は、リーダライタ１０を認証するのに用いる乱数を生成する回路を有していない。
【００６０】
したがって、無線タグ２０は、乱数を生成する回路を有していない分、小規模化、かつ、低コスト化することができる。
【００６１】
なお、無線タグ２０は、乱数を生成する回路を有していないので、乱数を用いて、リーダライタ１０を認証することはできない。
【００６２】
しかしながら、無線タグ２０において、リーダライタ１０の認証を一切行わないのは、セキュリティ上好ましいことではない。
【００６３】
そこで、無線タグ２０は、後述するような、いわば簡易的な認証方法によって、リーダライタ１０の認証を行うことで、不正なリーダライタからのアクセスを制限し、これにより、必要最低限以上のセキュリティを確保する。
【００６４】
［メモリ部２４の論理フォーマット］
【００６５】
図２は、図１の無線タグ２０が有するメモリ部２４の論理フォーマットを説明する図である。
【００６６】
メモリ部２４の記憶領域の一部は、例えば、定期券や、所定のサービス提供者が管理する電子マネー、イベント等のチケット等のサービスに割り当てられる最小単位の記憶領域であるユーザブロックになっている。
【００６７】
メモリ部２４には、１個以上のユーザブロックが設けられる。
【００６８】
ここで、サービスには、１個以上のユーザブロックが割り当てられ、その１個以上のユーザブロックに、サービスを提供するためのデータが記憶される。
【００６９】
ユーザブロックは、複数であるM+1個のユニットを有する（Mは、1以上の整数）。
【００７０】
ユニットには、サービスを提供するためのデータが書き込まれる。但し、ユーザブロックを構成するM+1個のユニットのうちの１個のユニットは、ユーザブロックに書き込まれるデータをバッファリングするバッファとして機能する。
【００７１】
以上のように、ユーザブロックを構成する１個のユニットは、バッファとして機能するため、ユーザブロックは、バッファとして機能する１個のユニットと、サービスを提供するためのデータを記憶する１以上のM個のユニットとの、合計で、複数であるM+1個のユニットを有する。
【００７２】
ここで、以下、ユーザブロックを構成するM+1個のユニットのうちの、バッファとして機能するユニットを、バッファユニットともいい、バッファユニットではないユニットを、データユニットともいう。
【００７３】
図２では、ユーザブロックを構成するM+1個のユニットのうちの、M+1番目のユニットが、バッファユニットになっており、他の1ないしM番目のM個のユニットは、データユニットになっている。
【００７４】
なお、バッファユニットとなるユニットは、ユーザブロックに対するデータの書き込みが行われると変化するが、その説明は、後述する。
【００７５】
ユニットは、１以上であるK個のページを有する。
【００７６】
ページは、メモリ部２４に対する書き込みが行われる最小単位の記憶領域であり、図２では、１ページは、Nバイトの記憶領域になっている。
【００７７】
ここで、図２では、ユニットが有するページのうちの１ページは、メモリ部２４の記憶領域を管理するための管理情報を記憶するページ（管理ページ）として使用される。
【００７８】
すなわち、図２では、ユニットを構成するK個のページのうちの特定の１個のページは、そのユニットを管理するための管理情報が記憶される管理ページになっている。
【００７９】
したがって、図２では、ユニットには、データを記憶する１ページ以上のページ（データページ）と、１ページの管理ページとが必要であるため、ユニットを構成するページ数Kは、複数である。
【００８０】
なお、図２では、ユニットを構成するK個のページのうちのK番目のページが、管理ページになっている。管理ページとなるページは、（バッファユニットのように）変化せず、固定のページである。
【００８１】
管理ページには、ユニットナンバ、（１個の）シーケンスナンバ、及び、エラー検出コードが、ユニットの管理情報として書き込まれる。
【００８２】
ユニットナンバは、そのユニットナンバが書き込まれる管理ページを有するユニットを特定する情報である。
【００８３】
シーケンスナンバは、メモリ部２４にデータが書き込まれるごとに規則的に更新される値であり、例えば、直前の値に対して、1などの所定値をインクリメント又はデクリメントした値や、直前の値を引数として所定の関数を演算することにより求められる値、入力値と出力値とを対応付けたテーブルを用い、直前の値を入力値として求められる出力値等を採用することができる。
【００８４】
なお、ここでは、例えば、メモリ部２４にデータが書き込まれるごとに1ずつインクリメントされる値を、シーケンスナンバとして用いることとする。
【００８５】
エラー検出コードは、ユニットに書き込まれたデータの誤り（エラー）を検出する誤り検出用のコードで、例えば、CRC(Cyclic Redundancy Checking)等である。
【００８６】
［メモリ部２４に対するデータの書き込み制御］
【００８７】
図３は、コマンドシーケンサ部２３による、メモリ部２４に対するデータの書き込みの制御を説明する図である。
【００８８】
図３において、データが書き込まれるユニットを有するユーザブロックは、M+1個のユニット#1,#2,・・・,#M+1を有する。
【００８９】
そして、図３では、データの書き込みが行われる直前（書き込み前）においては、M+1個のユニット#1ないし#M+1のうちの、例えば、M+1番目のユニット#M+1が、バッファユニットになっており、他の1ないしM番目のユニット#1ないし#Mが、データユニットになっている。
【００９０】
また、図３では、書き込み前においては、データユニット#mのユニットナンバS_PADは、値mになっている。
【００９１】
なお、バッファユニットには、ユニットナンバS_PADは付与されないが、図３では（後述する図５でも同様）、便宜上、バッファユニットになっているユニット#M+1のユニットナンバS_PADを、バッファユニットを表す値としての0としてある。
【００９２】
また、図３では、書き込み前のデータユニット#1のシーケンスナンバSEQが、値Xになっている。他のデータユニット#2ないし#MのシーケンスナンバSEQの図示は、省略してある。
【００９３】
ここで、１つのユニット#mは、K個のページから構成される。いま、ユーザブロックの１番目のユニット#1の１番目のページを、第1ページということとすると、ユニット#mは、第(m-1)K＋1ページないし第mKページのK個のページから構成される。そして、各ユニット#mの最後のページである第mKページは、管理ページである。
【００９４】
いま、例えば、リーダライタ１０から無線タグ２０に対して、ユニットナンバS_PADが値1のユニットへのデータの書き込みを要求するライトコマンドが、データとともに送信されてきたとする。
【００９５】
この場合、コマンドシーケンサ部２３は、リーダライタ１０からのライトコマンドに従い、そのライトコマンドとともに送信されてきたデータを、書き込みを行うべき対象のユニットである対象ユニット、すなわち、ユニットナンバS_PADが値1になっているユニット#1（ライトコマンドによって書き込みが要求されているユニットナンバS_PADのユニット）ではなく、バッファユニットになっているユニット#M+1に書き込む。
【００９６】
さらに、コマンドシーケンサ部２３は、バッファユニットになっているユニット#M+1の管理ページに、対象ユニットであるユニット#1のユニットナンバS_PAD=1と同一のユニットナンバS_PAD=1、所定の値Yに更新されたシーケンスナンバSEQ、及び、エラー検出コードを書き込む。
【００９７】
ここで、図３では（後述する図４でも同様）、エラー検出コードの図示を省略してある。
【００９８】
また、図３において、バッファユニットになっているユニット#M+1の管理ページに書き込まれるシーケンスナンバSEQの値Yは、対象ユニットであるユニット#1の管理ページに書き込まれているシーケンスナンバSEQ=Xを1だけインクリメントすることにより更新した値X+1である。
【００９９】
以上のように、バッファユニットになっているユニット#M+1の管理ページに、値が1のユニットナンバS_PAD、所定の値Yに更新されたシーケンスナンバSEQ、及び、エラー検出コードが書き込まれることで、ユニット#M+1は、バッファユニットではなく、ユニットナンバS_PADが値1のデータユニットとなる。
【０１００】
その結果、この時点では、ユニットナンバS_PADが値1のユニットは、ユニット#1及び#M+1の２個となる。
【０１０１】
但し、ユニット#M+1のシーケンスナンバSEQ=Yは、ユニット#1のシーケンスナンバSEQ=Xよりも新しい値、すなわち、シーケンスナンバSEQ=Xを更新した値X+1になっている。
【０１０２】
したがって、ユニットナンバS_PADが値1の、２個のユニット#1及び#M+1については、シーケンスナンバSEQを参照することで、最新のデータが書き込まれたユニット#M+1と、データが過去に書き込まれたユニット#1（ユニットナンバS_PADが値1のユニットに書き込まれたデータのうちの、最新のデータの直前に書き込まれたデータを記憶しているユニット）とを区別することができる。
【０１０３】
ここで、ユニットナンバS_PADが同一の２個のユニットが存在する場合に、その２個のユニットのうちの、最新のデータが書き込まれたユニット（本実施の形態では、シーケンスナンバが大きい方のユニット）を、新ユニットともいい、データが過去に書き込まれたユニット（シーケンスナンバが小さい方のユニット）を、旧ユニットともいう。
【０１０４】
その後、コマンドシーケンサ部２３は、ユニットナンバS_PADが値1になっている２個のユニット#1及び#M+1のうちの旧ユニット、すなわち、対象ユニットであるユニット#1の管理ページをイレースし、イレース状態にすることで、ユニット#1を、新たに、バッファユニットとして、メモリ部２４にデータを書き込む書き込み処理を完了する。
【０１０５】
なお、上述したように、バッファユニットには、ユニットナンバS_PADは付与されないが、図３では、新たにバッファユニットになったユニット#1のユニットナンバS_PADを、バッファユニットであることを表す値0としてある。
【０１０６】
以上のように、コマンドシーケンサ部２３は、リーダライタ１０からのライトコマンドに従い、データを、バッファユニットであるユニット#M+1に書き込み、バッファユニットのユニットナンバとして、対象ユニットであるユニット#1のユニットナンバS_PAD=1を書き込み、ユニット#1を、新たなバッファユニットとすることで、結果的に対象ユニットとなった、ユニットナンバS_PADが値1のユニット#M+1へのデータの書き込みを行う。
【０１０７】
その結果、メモリ部２４では、ユニットナンバS_PADが値1のユニットに記憶されるデータに関して、最新のデータ（図３では、ユニット#M+1に書き込まれたデータ）が、直前（前回）のデータ（図３では、ユニット#1に書き込まれていたデータ）を残したまま書き込まれるので、メモリコラプション、すなわち、例えば、メモリ部２４にアクセスが行われている最中に、無線タグ２０がリーダライタ１０から離れること等によって、メモリ部２４に記憶されたデータに不整合が生じた場合に対処することができる。
【０１０８】
図４は、メモリコラプションに対する対処を説明する図である。
【０１０９】
図４において、書き込み前においては、図３の場合と同様に、M+1番目のユニット#M+1が、バッファユニットになっており、他の1ないしM番目のユニット#1ないし#Mが、データユニットになっている。
【０１１０】
また、書き込み前においては、データユニット#mのユニットナンバS_PADは、値mになっており、バッファユニットであるユニット#M+1のユニットナンバS_PADは、バッファユニットを表す値0になっている。
【０１１１】
いま、例えば、図３の場合と同様に、リーダライタ１０から無線タグ２０に対して、ユニットナンバS_PADが値1のユニットを対象ユニットとするデータの書き込みを要求するライトコマンドが、データとともに送信されてきたとする。
【０１１２】
この場合、コマンドシーケンサ部２３は、図３で説明したように、リーダライタ１０からのライトコマンドに従い、そのライトコマンドとともに送信されてきたデータを、バッファユニットになっているユニット#M+1（ユニットナンバS_PADが値0になっているユニット）に書き込む。
【０１１３】
さらに、コマンドシーケンサ部２３は、図３で説明したように、バッファユニットになっているユニット#M+1の管理ページに、対象ユニットであるユニット#1のユニットナンバS_PAD=1と同一のユニットナンバS_PAD=1、対象ユニットであるユニット#1のシーケンスナンバSEQ=Xを更新した値Y=X+1のシーケンスナンバSEQ、及び、エラー検出コードを書き込み、その後、対象ユニットであるユニット#1の管理ページをイレースし、イレース状態にすることで、ユニット#1を、新たに、バッファユニットとして、メモリ部２４にデータを書き込む書き込み処理を完了する。
【０１１４】
いま、書き込み処理の途中、すなわち、例えば、バッファユニットになっているユニット#M+1の管理ページに、ユニットナンバS_PAD=1、所定の値Yに更新されたシーケンスナンバSEQ、及び、エラー検出コードを書き込んでいる最中に、無線タグ２０が、リーダライタ１０から離れ、無線タグ２０に、必要な電力が供給されなくなった（電源断になった）とする。
【０１１５】
この場合、コマンドシーケンサ部２３は、次に、リーダライタ１０と無線タグ２０とが近接することにより、電源が供給されて起動したとき（次回の起動時）に、メモリ部２４の記憶内容をリカバリする。
【０１１６】
すなわち、例えば、バッファユニットになっているユニット#M+1の管理ページに、ユニットナンバS_PAD=1、所定の値YのシーケンスナンバSEQ、及び、エラー検出コードのうちの、少なくとも、ユニットナンバS_PAD=1、及び、所定の値Yに更新されたシーケンスナンバSEQが書き込まれた後に、電源断になったとすると、ユニットナンバS_PADが値1で同一の２個のユニット#1及び#M+1が存在する。
【０１１７】
図３で説明したように、ユニットナンバS_PADが値1の、２個のユニット#1及び#M+1については、シーケンスナンバSEQを参照することで、最新のデータが書き込まれたユニット（新ユニット）#M+1と、データが過去に書き込まれたユニット（旧ユニット）#1とを区別することができる。
【０１１８】
次回の起動時、コマンドシーケンサ部２３は、新ユニットであるユニット#M+1の管理ページのエラー検出コードとしてのCRCを用いて、誤り検出を行い、誤りが検出されなかった場合（エラー検出コードが正常である場合）、新ユニットであるユニット#M+1へのデータの書き込みが正常に完了しているとして、旧ユニットであるユニット#1の管理ページをイレースし、イレース状態にすることで（図４では、ユニットナンバS_PADが、バッファユニットであることを表す値0にされている）、ユニット#1を、バッファユニットとする。
【０１１９】
そして、その後、図３で説明したように、バッファユニットへの新たなデータの書き込みが行われる。
【０１２０】
一方、新ユニットであるユニット#M+1の管理ページのエラー検出コードとしてのCRCを用いた誤り検出の結果、誤りが検出された場合（エラー検出コードがエラーである場合）、コマンドシーケンサ部２３は、新ユニットであるユニット#M+1へのデータの書き込みが正常に完了していないとして、メモリ部２４の状態を、例えば、新ユニットであるユニット#M+1へのデータの書き込みが行われる直前の状態に戻す。
【０１２１】
すなわち、コマンドシーケンサ部２３は、新ユニットであるユニット#M+1の管理ページをイレースし、イレース状態にすることで（図４では、ユニットナンバS_PADが、バッファユニットであることを表す値0にされている）、ユニット#M+1を、バッファユニットとする。
【０１２２】
そして、その後、図３で説明したように、バッファユニットへの新たなデータの書き込みが行われる。
【０１２３】
［片側認証］
【０１２４】
図５は、片側認証を説明するための図である。
【０１２５】
ここで、図１で説明したように、リーダライタ１０は、無線タグ２０を認証するのに用いる乱数を生成する乱数生成部１５を有するが、無線タグ２０は、リーダライタ１０を認証するのに用いる乱数を生成する回路を有していない。
【０１２６】
そこで、乱数生成部１５を有するリーダライタ１０は、乱数生成部１５が生成する乱数を用いて、いわゆるチャレンジアンドレスポンス方式により、無線タグ２０を認証する片側認証を行う。
【０１２７】
このため、リーダライタ１０のメモリ部１４、及び、無線タグ２０のメモリ部２４は、片側認証に必要な情報を記憶している。
【０１２８】
図５は、リーダライタ１０のメモリ部１４、及び、無線タグ２０のメモリ部２４が記憶している、片側認証に必要な情報を示す図である。
【０１２９】
リーダライタ１０のメモリ部１４には、リーダライタ１０が提供するサービスに固有の鍵である固有鍵KGが記憶されている。
【０１３０】
一方、無線タグ２０のメモリ部２４には、無線タグ２０を識別する識別情報としてのユニークなIDである個別ID(=UID)が記憶されている。
【０１３１】
さらに、無線タグ２０のメモリ部２４には、無線タグ２０に固有の鍵である個別鍵UCKが記憶されている。
【０１３２】
個別鍵UCKは、個別IDと、固有鍵KGとを用いて生成される。すなわち、個別鍵UCKは、個別IDに、固有鍵KGに対応した処理を施す（例えば、個別IDを、固有鍵KGによって暗号化する）ことによって生成される。
【０１３３】
したがって、固有鍵KGに対応した処理を、{}KGと表すこととすると、個別鍵UCKは、式UCK={UID}KGで表される。
【０１３４】
なお、無線タグ２０が、複数のサービスに利用される場合には、その複数のサービスの数だけの個別鍵UCKが、無線タグ２０のメモリ部２４に記憶される。
【０１３５】
以下では、説明を簡単にするために、無線タグ２０が有するメモリ部２４には、ユーザブロックが１個だけ存在し、したがって、無線タグ２０が利用可能なサービスも、１つだけであることとする。
【０１３６】
図６は、リーダライタ１０、及び、無線タグ２０において、リーダライタ１０が、無線タグ２０を認証する片側認証を行い、無線タグ２０が、リーダライタ１０の認証を行わない場合の処理を説明する図である。
【０１３７】
例えば、無線タグ２０が、リーダライタ１０にかざされること等によって、リーダライタ１０と無線タグ２０とが近接した状態となると、リーダライタ１０と無線タグ２０との間で、近接通信が開始される。
【０１３８】
そして、ステップＳ１１において、リーダライタ１０の乱数生成部１５は、乱数Rを生成し、RF部１２に供給する。
【０１３９】
ステップＳ１２において、RF部１２は、乱数生成部１５からの乱数Rを、アンテナ１１を介して、無線タグ２０に送信し、無線タグ２０のRF部２２は、リーダライタ１０のRF部１２からの乱数Rを、アンテナ２１を介して受信し、コマンドシーケンサ部２３に供給する。
【０１４０】
ステップＳ２１において、コマンドシーケンサ部２３は、RF部２２からの乱数Rと、メモリ部２４に記憶された個別鍵UCKとを用いて、リーダライタ１０と無線タグ２０との間のセッションに用いるセッション鍵KSを生成する。
【０１４１】
すなわち、コマンドシーケンサ部２３は、乱数Rに、個別鍵UCKに対応した処理を施すことによって、セッション鍵KS={R}UCKを生成する。
【０１４２】
その後、ステップＳ２２において、コマンドシーケンサ部２３は、RF部２２を制御することにより、RF部２２に、乱数Rを受信した旨を通知するレスポンスを、リーダライタ１０に対して送信させる。
【０１４３】
リーダライタ１０のRF部１２は、無線タグ２０（のRF部２２）からのレスポンスを受信する。そして、ステップＳ１３において、リーダライタ１０のCPU１３は、RF部１２を制御することにより、無線タグ２０の個別ID=UIDと、その個別IDを正当性を検証するための、その個別IDの暗号化データとしての、例えば、MAC(Message Authentication Code)値とを要求するリードコマンドを、無線タグ２０に送信する。
【０１４４】
無線タグ２０では、RF部２２が、リーダライタ１０（のRF部１２）からのリードコマンドを受信し、コマンドシーケンサ部２３に供給する。
【０１４５】
ステップＳ２３において、コマンドシーケンサ部２３は、RF部２２からのリードコマンドに従い、メモリ部２４から、個別ID=UIDを読み出し、その個別IDと、直前に生成したセッション鍵KSとを用いて、個別ID=UIDの暗号化データ（第３の暗号化データ）としてのMAC値T=MAC(KS,UID)を生成する。
【０１４６】
そして、コマンドシーケンサ部２３は、個別ID=UIDと、その個別IDを用いて生成したMAC値Tとを、RF部２２に供給する。
【０１４７】
ステップＳ２４において、RF部２２は、コマンドシーケンサ部２３からの個別ID=UID、及び、MAC値Tを、リーダライタ１０に送信する。
【０１４８】
ここで、個別ID=UIDとセッション鍵KSとを用いて、MAC値T=MAC(KS,UID)を生成する方法としては、個別ID=UIDを、セッション鍵KSによって、DES(Data Encryption Standard)等の所定の暗号化方式で暗号化する方法や、個別ID=UIDとセッション鍵KSとを用いて、所定のハッシュ関数を演算する方法等を採用することができる。
【０１４９】
なお、MAC値Tは、メッセージ（いまの場合、個別ID=UID）が改竄されていないことを検証することができれば良いので、元の情報（ここでは、個別ID=UIDやセッション鍵KS）を復号することができる値である必要はない。
【０１５０】
したがって、MAC値Tの生成には、例えば、一方向関数を用いることができる。
【０１５１】
リーダライタ１０のRF部１２は、無線タグ２０（のRF部２２）からの個別ID=UID、及び、MAC値Tを受信し、CPU１３に供給する。
【０１５２】
ステップＳ１４において、CPU１３は、メモリ部１４から固有鍵KGを読み出し、その固有鍵KGと、RF部１２からの個別ID=UIDとを用いて、無線タグ２０の個別鍵UCK={UID}KGを生成する。
【０１５３】
そして、ステップＳ１５において、CPU１３は、個別鍵UCKと、直前に乱数生成部１５が生成した乱数Rとを用い、無線タグ２０と同様にして、セッション鍵KS={R}UCKを生成する。
【０１５４】
その後、ステップＳ１６において、CPU１３は、セッション鍵KSと、RF部１２からの個別ID=UIDとを用いて、その個別ID=UIDの暗号化データ（第４の暗号化データ）としてのMAC値T'=MAC(KS,UID)を、無線タグ２０と同様にして生成する。
【０１５５】
そして、ステップＳ１７において、CPU１３は、以上のようにして生成したMAC値T'と、RF部１２からのMAC値Tとを比較する。
【０１５６】
MAC値T'とTとの比較の結果、MAC値T'とTとが等しくない場合、CPU１３は、無線タグ２０の認証に失敗したとして、所定のエラー処理（例えば、図示せぬディスプレイに、認証が失敗した旨を表示する処理等）を行って、処理を終了する。
【０１５７】
したがって、リーダライタ１０は、認証に失敗した無線タグ２０へのアクセスを行わない。
【０１５８】
一方、MAC値T'とTとが等しい場合、CPU１３は、無線タグ２０の認証に成功したとして、以下、無線タグ２０に対するデータの読み書きが必要に応じて行われる。
【０１５９】
以上のように、リーダライタ１０が、乱数を用い、片側認証を行う場合には、正当なリーダライタ１０が、不正な無線タグにアクセスすることを防止することができる。
【０１６０】
しかしながら、リーダライタ１０が、片側認証を行うだけでは、不正なリーダライタが、正当な無線タグ２０にアクセスすることを防止することができない。
【０１６１】
そこで、無線タグ２０は、リーダライタ１０が行う片側認証を利用して、簡易的な認証方法によって、リーダライタ１０の認証を行う。
【０１６２】
［無線タグ２０によるリーダライタ１０の認証］
【０１６３】
図７は、リーダライタ１０が、無線タグ２０を認証する片側認証を行い、無線タグ２０が、その片側認証を利用して、リーダライタ１０の認証を行う場合の、リーダライタ１０、及び、無線タグ２０の処理を説明する図である。
【０１６４】
例えば、無線タグ２０が、リーダライタ１０にかざされること等によって、リーダライタ１０と無線タグ２０とが近接した状態となると、リーダライタ１０と無線タグ２０との間で、近接通信が開始される。
【０１６５】
そして、ステップＳ５１において、リーダライタ１０の乱数生成部１５は、乱数Rを生成し、RF部１２に供給する。
【０１６６】
ステップＳ５２において、RF部１２は、乱数生成部１５からの乱数Rを、無線タグ２０に送信し、無線タグ２０のRF部２２は、リーダライタ１０のRF部１２からの乱数Rを受信し、コマンドシーケンサ部２３に供給する。
【０１６７】
ステップＳ７１において、コマンドシーケンサ部２３は、RF部２２からの乱数Rと、メモリ部２４に記憶された個別鍵UCKとを用いて、セッション鍵KSを生成する。
【０１６８】
その後、ステップＳ７２において、コマンドシーケンサ部２３は、RF部２２を制御することにより、RF部２２に、乱数Rを受信した旨を通知するレスポンスを、リーダライタ１０に対して送信させる。
【０１６９】
リーダライタ１０のRF部１２は、無線タグ２０（のRF部２２）からのレスポンスを受信する。そして、ステップＳ５３において、リーダライタ１０のCPU１３は、RF部１２を制御することにより、無線タグ２０の個別ID=UID、その個別IDの正当性を検証するためのMAC値、及び、シーケンスナンバSEQ（の読み出し）を要求するリードコマンドを、無線タグ２０に送信する。
【０１７０】
ここで、メモリ部２４の論理フォーマットが、図２に示したようになっており、ユニットごとに、管理情報を記憶する管理ページが存在し、したがって、管理情報に含まれるシーケンスナンバSEQが、ユニットごとに存在する場合には、ステップＳ５３において、CPU１３がリードコマンドによって要求するシーケンスナンバSEQは、データの書き込みを行う対象ユニットのシーケンスナンバSEQである。
【０１７１】
無線タグ２０では、RF部２２が、リーダライタ１０（のRF部１２）からのリードコマンドを受信し、コマンドシーケンサ部２３に供給する。
【０１７２】
ステップＳ７３において、コマンドシーケンサ部２３は、RF部２２からのリードコマンドに従い、メモリ部２４から、個別ID=UIDと、対象ユニットのシーケンスナンバSEQ=Xを読み出す。
【０１７３】
さらに、ステップＳ７３において、コマンドシーケンサ部２３は、メモリ部２４から読み出した個別IDと、直前に生成したセッション鍵KSとを用いて、個別ID=UIDの暗号化データ（第３の暗号化データ）としてのMAC値T=MAC(KS,UID)を生成する。
【０１７４】
そして、コマンドシーケンサ部２３は、個別ID=UID、シーケンスナンバSEQ=X、及び、MAC値Tを、RF部２２に供給する。
【０１７５】
ステップＳ７４において、RF部２２は、コマンドシーケンサ部２３からの個別ID=UID、シーケンスナンバSEQ=X、及び、MAC値Tを、リーダライタ１０に送信する。
【０１７６】
リーダライタ１０のRF部１２は、無線タグ２０（のRF部２２）からの個別ID=UID、シーケンスナンバSEQ=X、及び、MAC値Tを受信し、CPU１３に供給する。
【０１７７】
ステップＳ５４において、CPU１３は、メモリ部１４から固有鍵KGを読み出し、その固有鍵KGと、RF部１２からの個別ID=UIDとを用いて、無線タグ２０の個別鍵UCK={UID}KGを生成する。
【０１７８】
そして、ステップＳ５５において、CPU１３は、個別鍵UCKと、直前に乱数生成部１５が生成した乱数Rとを用い、無線タグ２０と同様にして、セッション鍵KS={R}UCKを生成する。
【０１７９】
その後、ステップＳ５６において、CPU１３は、セッション鍵KSと、RF部１２からの個別ID=UIDとを用いて、その個別ID=UIDの暗号化データ（第４の暗号化データ）としてのMAC値T'=MAC(KS,UID)を生成する。
【０１８０】
そして、ステップＳ５７において、CPU１３は、以上のようにして生成したMAC値T'と、RF部１２からのMAC値Tとを比較する。
【０１８１】
MAC値T'とTとの比較の結果、MAC値T'とTとが等しくない場合、CPU１３は、無線タグ２０の認証に失敗したとして、所定のエラー処理を行って、処理を終了する。
【０１８２】
したがって、リーダライタ１０は、認証に失敗した無線タグ２０へのアクセスを行わない。
【０１８３】
一方、MAC値T'とTとが等しい場合、CPU１３は、無線タグ２０の認証に成功したとして、無線タグ２０がリーダライタ１０を認証するのに用いる暗号化データとしての、例えば、MAC値Wを生成する。
【０１８４】
すなわち、CPU１３は、無線タグ２０からのシーケンスナンバSEQ=Xに基づく値と、対象ユニットに書き込み対象のデータである書き込み対象データDとを用いて、そのシーケンスナンバSEQ=Xに基づく値、及び、書き込み対象データDの暗号化データ（第１の暗号化データ）としての、例えば、MAC値Wを生成する。
【０１８５】
具体的には、CPU１３は、シーケンスナンバSEQ=Xに基づく値、及び、書き込み対象データDの暗号化データとして、例えば、セッション鍵KS、対象ユニットのユニットナンバS_PAD=m、無線タグ２０からのシーケンスナンバSEQ=Xそのもの、及び、書き込み対象データDのMAC値W=MAC(KS,S_PAD=m,SEQ=X,D)を生成する。
【０１８６】
そして、CPU１３は、書き込み対象データDの書き込みを要求するライトコマンド、書き込み対象データD、対象ユニットのユニットナンバS_PAD=m、及び、MAC値W=MAC(KS,S_PAD=m,SEQ=X,D)を、RF部１２に供給する。
【０１８７】
ステップＳ５９において、リーダライタ１０のRF部１２は、CPU１３からのライトコマンド、書き込み対象データD、対象ユニットのユニットナンバS_PAD=m、及び、MAC値Wを、無線タグ２０に送信する。
【０１８８】
無線タグ２０では、RF部２２が、リーダライタ１０（のRF部１２）からのライトコマンド、書き込み対象データD、対象ユニットのユニットナンバS_PAD=m、及び、MAC値Wを受信し、コマンドシーケンサ部２３に供給する。
【０１８９】
ステップＳ７５において、コマンドシーケンサ部２３は、直前にリーダライタ１０に送信したシーケンスナンバSEQ=Xに基づく値と、RF部２２で受信された書き込み対象データDとを用いて、そのシーケンスナンバSEQ=Xに基づく値、及び、RF部２２で受信された書き込み対象データDの暗号化データ（第２の暗号化データ）としてのMAC値W'を生成する。
【０１９０】
すなわち、コマンドシーケンサ部２３は、シーケンスナンバSEQ=Xに基づく値、及び、書き込み対象データDの暗号化データとして、直前に生成したセッション鍵KS、対象ユニットのユニットナンバS_PAD=m、直前にリーダライタ１０に送信したシーケンスナンバSEQ=Xそのもの、及び、RF部２２で受信された書き込み対象データDのMAC値W'=MAC(KS,S_PAD=m,SEQ=X,D)を生成する。
【０１９１】
そして、ステップＳ７６において、コマンドシーケンサ部２３は、以上のようにして生成したMAC値W'と、RF部２２からのMAC値Wとを比較する。
【０１９２】
MAC値W'とWとの比較の結果、MAC値W'とWとが等しくない場合、コマンドシーケンサ部２３は、リーダライタ１０の認証に失敗したとして、処理を終了する。
【０１９３】
したがって、この場合、無線タグ２０では、リーダライタ１０からの書き込み対象データDの書き込みは、行われず、その後のリーダライタ１０からのアクセスに対しても応答しない。
【０１９４】
一方、MAC値W'とWとが等しい場合、ステップＳ７７において、無線タグ２０のコマンドシーケンサ部２３は、リーダライタ１０の認証に成功したとして、RF部２２で受信された書き込み対象データD、すなわち、リーダライタ１０から送信されてきた書き込み対象データDを、対象ユニット（となるバッファユニット）に書き込む。
【０１９５】
その後、ステップＳ７８において、コマンドシーケンサ部２３は、対象ユニット（となるバッファユニット）の管理ページの管理情報の更新の処理、すなわち、対象ユニットの管理情報となるユニットナンバS_PAD、及び、シーケンスナンバSEQ=Xの更新、並びに、エラー検出コードの算出を行う。
【０１９６】
そして、ステップＳ７９において、コマンドシーケンサ部２３は、RF部２２を制御することにより、RF部２２に、書き込みが完了した旨を通知するレスポンスを、リーダライタ１０に対して送信させる。
【０１９７】
リーダライタ１０のRF部１２は、無線タグ２０（のRF部２２）からのレスポンスを受信する。
【０１９８】
以上のように、無線タグ２０のRF部２２は、シーケンスナンバSEQを、リーダライタ１０に送信し、リーダライタ１０のCPU１３は、無線タグ２０から送信されてくるシーケンスナンバSEQに基づく値と、無線タグ２０のメモリ部２４に書き込む書き込み対象データDとを用いて、MAC値W=MAC(KS,S_PAD=m,SEQ=X,D)（第１の暗号化データ）を生成する。
【０１９９】
さらに、リーダライタ１０のRF部１２は、MAC値W、及び、書き込み対象データDを、無線タグ２０に送信し、無線タグ２０のRF部２２は、そのMAC値W、及び、書き込み対象データDを受信する。
【０２００】
また、無線タグ２０のコマンドシーケンサ部２３は、（リーダライタ１０に送信した）シーケンスナンバSEQに基づく値と、RF部２２で受信された書き込み対象データDとを用いて、MAC値W'=MAC(KS,S_PAD=m,SEQ=X,D)（第２の暗号化データ）を生成する。
【０２０１】
そして、無線タグ２０のコマンドシーケンサ部２３は、MAC値W'とWとが一致する場合にのみ、RF部２２で受信された書き込み対象データDを、メモリ部２４（の対象ユニット）に書き込み、メモリ部２４に記憶された（対象ユニットの）シーケンスナンバSEQを更新する。
【０２０２】
したがって、無線タグ２０は、MAC値W'とWとの比較により、リーダライタ１０が正当な装置であるかどうかの認証を行うことができ、さらに、その認証に成功した場合に、書き込み対象データDを、メモリ部２４に書き込むことができる。
【０２０３】
その結果、無線タグ２０においては、セキュリティを確保すること、すなわち、不正なリーダライタによって、メモリ部２４のデータが不正に書き換えられることを防止することができる。
【０２０４】
また、相互認証を行う場合に比較して、リーダライタ１０が無線タグ２０にデータを書き込むのに要する時間（リーダライタ１０と無線タグ２０とが近接通信を開始してから、書き込み対象データDがメモリ部２４に書き込まれるまでの時間）を短縮することができる。
【０２０５】
すなわち、リーダライタ１０と無線タグ２０との間で相互認証を行う場合には、リーダライタ１０が、無線タグ２０の認証を行うトランザクションと、無線タグ２０が、リーダライタ１０の認証を行うトランザクションとの２つのトランザクションが必要な相互認証が行われ、その相互認証の成功後、リーダライタ１０から無線タグ２０に、書き込み対象データDが送信され、無線タグ２０のメモリ部２４に書き込まれる。
【０２０６】
一方、図７で説明したように、リーダライタ１０が、片側認証によって、無線タグ２０の認証を行い、無線タグ２０が、片側認証を利用した簡易的な認証方法によって、リーダライタ１０の認証を行う場合には（このような、リーダライタ１０と無線タグ２０との間の認証を、以下、簡易認証ともいう）、リーダライタ１０による片側認証が行われた後、リーダライタ１０から無線タグ２０に、書き込み対象データD、及び、MAC値Wが送信される。
【０２０７】
そして、無線タグ２０では、MAC値Wを用いて、そのMAC値Wの生成に用いられたシーケンスナンバSEQ、及び、書き込み対象データDの検証（MAC値WとW'との比較）が行われ、そのシーケンスナンバSEQ、及び、書き込み対象データDに問題がなければ（MAC値WとW'とが一致すれば）、書き込み対象データDが改竄されておらず、かつ、リーダライタ１０の認証に成功したとして、書き込み対象データDが、メモリ部２４に書き込まれる。
【０２０８】
したがって、無線タグ２０によるリーダライタ１０の認証（及び、書き込み対象データDの検証）に用いるデータとして、書き込み対象データDが、リーダライタ１０から無線タグ２０に送信されるので、無線タグ２０によるリーダライタ１０の認証の成功後に、書き込み対象データDを、リーダライタ１０から無線タグ２０に送信する必要がない。
【０２０９】
よって、簡易認証では、相互認証が成功してから、リーダライタ１０から無線タグ２０に、書き込み対象データDが送信される場合に比較して、リーダライタ１０が無線タグ２０にデータを書き込むのに要する時間を短縮することができる。
【０２１０】
また、MAC値W及びW'の生成に用いられるシーケンスナンバSEQは、データが無線タグ２０のメモリ部２４に書き込まれるごとに規則的に値が更新されるので、リーダライタ１０から無線タグ２０に送信されるMAC値Wが盗聴され、そのMAC値Wを用いて、無線タグ２０に対するリプレイアタックが行われても、そのリプレイアタックに用いられるMAC値Wは、無線タグ２０において、更新後のシーケンスナンバSEQを用いて生成されるMAC値W'に一致しない。
【０２１１】
したがって、リプレイアタックを防止することができる。
【０２１２】
なお、図７では（後述する図８でも同様）、MAC値W及びW'の生成に、セッション鍵KS、対象ユニットのユニットナンバS_PAD=m、シーケンスナンバSEQ=X、及び、書き込み対象データDを用いたが、MAC値W及びW'は、対象ユニットのユニットナンバS_PAD=mを用いずに、セッション鍵KS、シーケンスナンバSEQ=X、及び、書き込み対象データDを用いて生成することができる。
【０２１３】
但し、対象ユニットのユニットナンバS_PAD=mをも用いて、MAC値W及びW'を生成することにより、外部からのユニットナンバS_PAD=mの改竄、すなわち、書き込み対象データDを書き込む書き込み先のユニットが、不正に変更されることを防止することができる。
【０２１４】
図８は、リーダライタ１０、及び、無線タグ２０が行う簡易認証の他の処理を説明する図である。
【０２１５】
図７の簡易認証の処理では、MAC値W及びW'の生成に用いるシーケンスナンバSEQに基づく値として、シーケンスナンバSEQ=Xそのものを用いることとしたが、MAC値W及びW'の生成に用いるシーケンスナンバSEQに基づく値としては、その他、更新後のシーケンスナンバSEQ=X+1を採用することができる。
【０２１６】
但し、MAC値W及びW'を、更新後のシーケンスナンバSEQ=X+1を用いて生成する場合には、リーダライタ１０には、データがメモリ部２４に書き込まれるごとに規則的に値が更新されるシーケンスナンバSEQの更新の規則を実装しておく（リーダライタ１０に、シーケンスナンバSEQの更新の規則を認識させておく）必要がある。
【０２１７】
図８では、リーダライタ１０が、ステップＳ１０１ないしＳ１０９において、図７のステップＳ５１ないしＳ５９とそれぞれ同様の処理を行い、無線タグ２０が、ステップＳ１２１ないしＳ１２９において、図７のステップＳ７１ないしＳ７９とそれぞれ同様の処理を行う。
【０２１８】
但し、リーダライタ１０は、図７のステップＳ５８に対応するステップＳ１０８において、無線タグ１０からのシーケンスナンバSEQ=Xを更新した更新後のシーケンスナンバSEQ=X+1を求め、シーケンスナンバSEQ=Xそのものに代えて、更新後のシーケンスナンバSEQ=X+1を用いて、MAC値W=MAC(KS,S_PAD=m,SEQ=X+1,D)を生成する。
【０２１９】
また、無線タグ２０は、図７のステップＳ７５に対応するステップＳ１２５において、対象ユニットのシーケンスナンバSEQ=Xを更新した更新後のシーケンスナンバSEQ=X+1を求め、シーケンスナンバSEQ=Xそのものに代えて、更新後のシーケンスナンバSEQ=X+1を用いて、MAC値W'=MAC(KS,S_PAD=m,SEQ=X+1,D)を生成する。
【０２２０】
以上のように、更新後のシーケンスナンバSEQ=X+1を用いて、MAC値W及びW'を生成する場合には、シーケンスナンバSEQ=Xが盗聴されたとしても、シーケンスナンバSEQの更新の規則を知らなければ、無線タグ２０で生成されるMAC値W'と一致するMAC値Wを生成することはできないので、シーケンスナンバSEQそのものを用いて、MAC値W及びW'を生成する場合よりも、セキュリティを向上させることができる。
【０２２１】
［メモリ部２４の論理フォーマットの他の実施の形態］
【０２２２】
図９は、図１の無線タグ２０が有するメモリ部２４の論理フォーマットの他の実施の形態を説明する図である。
【０２２３】
図９の論理フォーマットは、メモリ部２４の記憶領域の一部が、サービスに割り当てられる1個以上のユーザブロックになっている点で、図２の場合と共通する。
【０２２４】
但し、図９の論理フォーマットは、メモリ部２４の記憶領域の他の一部が、管理情報を記憶する管理ブロックになっている点で、管理情報がページ（管理ページ）に記憶される図２の場合と異なる。
【０２２５】
ここで、図２では、ユニットには、データを記憶する１ページ以上のページ（データページ）と、１ページの管理ページとが必要であるため、ユニットは、複数のページで構成されるが、図９では、管理情報は、管理ブロックに記憶され、管理ページが不要であるため、ユニットは、１ページ以上で構成することができる。
【０２２６】
図９では、ユニットは、１ページで構成されている。
【０２２７】
したがって、図９では、ユニットは、ページに等しい。
【０２２８】
また、図９では、ユーザブロックのユニット（ページに等しい）には、データと、そのデータのエラー検出コードとしてのCRCが記憶される。
【０２２９】
管理ブロックは、例えば、ユーザブロックの個数の２倍の個数であるM'個のユニット（図９では、ページでもある）で構成される。
【０２３０】
したがって、メモリ部２４が、１個のユーザブロックを有することとすると、管理ブロックは、２個のユニットを有する。
【０２３１】
管理ブロックには、ユーザブロックごとの管理情報が記憶される。１個のユーザブロックの管理情報は、管理ブロックの２個のユニットに記憶される。
【０２３２】
ここで、１個のユーザブロックの管理情報を記憶する、管理ブロックの２個のユニットを、そのユーザブロックに対応する管理ブロックの２個のユニットともいう。
【０２３３】
いま、ある１個のユーザブロックに注目すると、その注目する注目ユーザブロックに対応する管理ブロックの２個のユニット（ページ）のそれぞれには、注目ユーザブロックの管理情報として、注目ユーザブロックを構成するM+1個のユニットのユニットナンバS_PAD、及び、１個のシーケンスナンバ、並びに、それら（M+1個のユニットのユニットナンバS_PAD、及び、１個のシーケンスナンバ）のエラー検出コードとしてのCRCが記憶される。
【０２３４】
ここで、注目ユーザブロックに対応する管理ブロックの２個のユニットには、注目ユーザブロックにデータが書き込まれるごとに、そのデータの書き込みの後に、注目ユーザブロックの管理情報が、交互に書き込まれる。
【０２３５】
したがって、注目ユーザブロックに対応する管理ブロックの２個のユニットのうちの一方のユニットには、注目ユーザブロックの最新の管理情報が記憶されており、他方のユニットには、その最新の管理情報が書き込まれる直前の管理情報が記憶されている。
【０２３６】
以上のように、注目ユーザブロックに対応する管理ブロックの２個のユニットには、注目ユーザブロックにデータが書き込まれるごとに、注目ユーザブロックの管理情報が、交互に書き込まれることによって、注目ユーザブロックの最新の管理情報と、その最新の管理情報が書き込まれる直前の管理情報とが記憶されるので、メモリコラプションに対処することができる。
【０２３７】
なお、注目ユーザブロックに対応する管理ブロックの２個のユニット（ページ）それぞれの、M+1個のユニットのユニットナンバS_PADを記憶する記憶領域は、注目ユーザブロックを構成するM+1個のユニットのユニットナンバS_PADを特定するための情報（以下、ユニットナンバ特定情報ともいう）を記憶するM+1個の記憶領域（以下、ユニットナンバ用領域ともいう）に区分されている。
【０２３８】
そして、注目ユーザブロックを構成するM+1個のユニット#1ないし#M+1のうちの、m番目のユニット#mのユニットナンバ特定情報として、値mが採用され、M+1個のユニットナンバ用領域のうちの、先頭からi番目のユニットナンバ用領域には、ユニットナンバS_PADが値iのユニット#mのユニットナンバ特定情報#mが記憶される。
【０２３９】
したがって、M+1個のユニットナンバ用領域のうちの、先頭からi番目のユニットナンバ用領域に、ユニットナンバ特定情報#mが記憶されている場合、注目ユーザブロックを構成するM+1個のユニット#1ないし#M+1のうちの、m番目のユニット#mのユニットナンバS_PADは、値iである。
【０２４０】
以上のように、図９では、ユニット#mのユニットナンバ特定情報#mが、i番目のユニットナンバ用領域に書き込まれることによって、ユニット#mのユニットナンバS_PADが、値iであることが特定されるので、実質的（等価的）に、管理情報には、ユニット#mのユニットナンバS_PAD#iが含まれているということができる。
【０２４１】
ここで、図９では、上述したように、注目ユーザブロックの管理情報に、１個のシーケンスナンバSEQが含まれるので、そのシーケンスナンバSEQは、注目ユーザブロックのいずれのユニットに、データが書き込まれても更新される。
【０２４２】
すなわち、図２では、ユニットごとに、管理情報が存在し、その管理情報に、１個のシーケンスナンバSEQが含まれるので、あるユニットの管理情報に含まれるシーケンスナンバSEQは、そのユニットに、データが書き込まれるごとに更新される。
【０２４３】
一方、図９では、ユーザブロックごとに、管理情報が存在し、その管理情報に、１個のシーケンスナンバSEQが含まれるので、あるユーザブロックの管理情報に含まれるシーケンスナンバSEQは、そのユーザブロックのいずれのユニットに、データが書き込まれても更新される（ユーザブロックに、データが書き込まれるごとに更新される）。
【０２４４】
なお、シーケンスナンバSEQは、メモリ部２４に対して、１個だけ設けることができる。この場合、メモリ部２４のどのユーザブロックの、どのユニットに、データが書き込まれても、メモリ部２４に対して１個だけ設けられたシーケンスナンバSEQが更新される。
【０２４５】
メモリ部２４が、図９の論理フォーマットを有する場合も、図２の場合と同様にして、コマンドシーケンサ部２３は、メモリ部２４に対するデータの書き込みの制御を行う。
【０２４６】
すなわち、例えば、データの書き込みが行われる直前（書き込み前）に、注目ユーザブロックのM+1個のユニット#1ないし#M+1のうちの、例えば、M+1番目のユニット#M+1が、バッファユニットになっており、他の1ないしM番目のユニット#1ないし#Mが、データユニットになっていることとする。
【０２４７】
また、データユニット#mのユニットナンバS_PADが、値mになっており、注目ユーザブロックの（管理情報に含まれる）シーケンスナンバSEQが、値Xになっていることとする。
【０２４８】
そして、いま、例えば、リーダライタ１０から無線タグ２０に対して、（注目ユーザブロックの）ユニットナンバS_PADが値1のユニットへのデータの書き込みを要求するライトコマンドが、データとともに送信されてきたとする。
【０２４９】
この場合、コマンドシーケンサ部２３は、リーダライタ１０からのライトコマンドに従い、そのライトコマンドとともに送信されてきたデータを、書き込みを行うべき対象のユニットである対象ユニット、すなわち、ユニットナンバS_PADが値1になっているユニット#1（ライトコマンドによって書き込みが要求されているユニットナンバS_PADのユニット）ではなく、バッファユニットになっているユニット#M+1に書き込む。
【０２５０】
その後、コマンドシーケンサ部２３は、注目ユーザブロックの管理情報を更新する。
【０２５１】
すなわち、注目ユーザブロックの管理情報としては、メモリ部２４に、上述したように、最新の管理情報（以下、最新管理情報ともいう）と、その最新の管理情報が書き込まれる直前の管理情報（以下、直前管理情報ともいう）が記憶されている。
【０２５２】
いま、メモリ部２４に、注目ユーザブロックの最新管理情報として、管理情報C#tが記憶されており、注目ユーザブロックの直前管理情報として、管理情報C#t-1が記憶されていることとする。
【０２５３】
コマンドシーケンサ部２３は、バッファユニットになっているユニット#M+1のユニットナンバS_PADを、対象ユニットであるユニット#1のユニットナンバS_PAD=1と同一のユニットナンバS_PAD=1とし、新たにバッファユニットとするユニット#1のユニットナンバS_PADを、バッファユニットであることを表す値0とするように、管理情報C#tを更新する。
【０２５４】
さらに、コマンドシーケンサ部２３は、管理情報C#tに含まれるシーケンスナンバSEQを更新し、新たなエラー検出コードを算出する。
【０２５５】
そして、以上の結果得られる管理情報を、管理情報C#t+1と表すこととすると、コマンドシーケンサ部２３は、管理情報C#t+1を、注目ユーザブロックの管理情報として、メモリ部２４の直前管理情報である管理情報C#t-1に上書きする形で書き込む。
【０２５６】
その結果、管理情報C#t+1が、注目ユーザブロックの最新管理情報となり、管理情報C#tが、注目ユーザブロックの直前管理情報となる。
【０２５７】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【０２５８】
すなわち、例えば、本実施の形態では、不揮発性メモリであるメモリ部２４として、EEPROMを採用することとしたが、メモリ部２４としては、EEPROM以外の、例えば、FeRAM(Ferroelectric Random Access Memory)等の不揮発性メモリを採用することが可能である。
【０２５９】
また、本実施の形態では、メモリ部２４に、データユニットの他に、バッファユニットを設けることとしたが、バッファユニットは、設けなくても良い。但し、バッファユニットを設けない場合には、メモリコラプションに対処することが困難となる。
【０２６０】
なお、対称暗号アルゴリズムに従った相互認証では、リーダライタは、無線タグに、乱数を生成させ、その乱数を暗号化した暗号化データを、リーダライタに対して送信させる処理等を行わせるための専用のコマンドである認証専用コマンドを送信する。
【０２６１】
したがって、無線タグは、そのような認証専用コマンドを解釈する必要がある。
【０２６２】
また、対称暗号アルゴリズムに従った相互認証が行われる場合、相互認証後は、リーダライタと無線タグの間では、盗聴を防止するために、データが、乱数を用いて生成される暗号鍵を用いて暗号化されてやりとりされることがある。
【０２６３】
データを暗号化してやりとりする場合には、データの復号が伴うため、データを、復号を伴わずに（平文で）やりとりする場合とは、別のコマンドが必要となる。
【０２６４】
すなわち、データを暗号化してやりとりすることがある場合には、復号を伴わないデータのやりとりを行うための通常のリードコマンド及びライトコマンドの他に、データの復号を伴うデータのやりとりを行うための暗号化専用のリードコマンド及びライトコマンドが必要となる。
【０２６５】
これに対して、リーダライタ１０と無線タグ２０とでは、対称暗号アルゴリズムに従った相互認証を行わず、また、データは、平文でやりとりされるので、認証専用コマンドや、暗号化専用のリードコマンド及びライトコマンドは、必要ない。
【０２６６】
したがって、無線タグ２０において解釈すべきコマンドの数を少なくすることができ、その結果、無線タグ２０のコマンドシーケンサ部２３としては、CPU等の高機能なプロセッサではなく、PLC(Programmable Logic Controller)を採用することができる。
【符号の説明】
【０２６７】
１０  リーダライタ，  １１  アンテナ，  １２  RF部，  １３  CPU，  １４  メモリ部，  １５  乱数生成部，  ２０  無線タグ，  ２１  アンテナ，  ２２  RF部，  ２３  コマンドシーケンサ部，  ２４  メモリ部
【図１】
2014135082.tif 000003
【図２】
2014135082.tif 000004
【図３】
2014135082.tif 000005
【図４】
2014135082.tif 000006
【図５】
2014135082.tif 000007
【図６】
2014135082.tif 000008
【図７】
2014135082.tif 000009
【図８】
2014135082.tif 000010
【図９】
2014135082.tif 000011