(57)【特許請求の範囲】
【請求項１】
他の情報処理装置から所定のコマンドを受信する受信部と、
受信した前記コマンドのパラメータの少なくとも一部、および、前記コマンドに対応して前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータを算出する演算部と、
前記第１のデータおよび前記第２のデータを前記他の情報処理装置に送信する送信部と
を備える情報処理装置。
【請求項２】
記憶媒体からのデータの読み出しを制御する読み出し制御部をさらに備え、
前記コマンドは、前記第１のデータを読み出す位置を示す位置情報をパラメータに含み、前記位置情報により示される位置から前記第１のデータを読み出すためのコマンドであり、
前記読み出し制御部は、前記位置情報に示される前記記憶媒体の位置から前記第１のデータを読み出し、
前記演算部は、受信した前記コマンドのパラメータに含まれる前記位置情報、および、前記記憶媒体から読み出された前記第１のデータに基づいて、前記第２のデータを算出する
請求項１に記載の情報処理装置。
【請求項３】
前記演算部は、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第２のデータを算出する
請求項２に記載の情報処理装置。
【請求項４】
情報処理装置が、
他の情報処理装置から所定のコマンドを受信し、
受信した前記コマンドのパラメータの少なくとも一部、および、前記コマンドに対応して前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータを算出し、
前記第１のデータおよび前記第２のデータを前記他の情報処理装置に送信する
ステップを含む情報処理方法。
【請求項５】
他の情報処理装置に所定のコマンドを送信する送信部と、
前記コマンドに対応して前記他の情報処理装置から送信されてくる、第１のデータ、および、受信した前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて前記他の情報処理装置が所定のアルゴリズムにより算出した認証用の第２のデータを受信する受信部と、
前記他の情報処理装置に送信した前記コマンドのパラメータの少なくとも一部、および、前記他の情報処理装置から受信した前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータを算出する演算部と、
前記第２のデータと前記第３のデータの認証を行う認証部と
を備える情報処理装置。
【請求項６】
前記コマンドは、前記第１のデータを読み出す位置を示す位置情報をパラメータに含み、前記位置情報により示される位置から前記第１のデータを読み出すためのコマンドであり、
前記他の情報処理装置は、受信した前記コマンドのパラメータに含まれる前記位置情報、および、前記位置情報により示される位置から読み出した前記第１のデータに基づいて、前記第２のデータを算出し、
前記演算部は、送信した前記コマンドのパラメータに含まれる前記位置情報、および、前記他の情報処理装置から受信した前記第１のデータに基づいて、前記第３のデータを算出する
請求項５に記載の情報処理装置。
【請求項７】
前記他の情報処理装置は、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第２のデータを算出し、
前記演算部は、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第３のデータを算出する
請求項６に記載の情報処理装置。
【請求項８】
情報処理装置が、
他の情報処理装置に所定のコマンドを送信し、
前記コマンドに対応して前記他の情報処理装置から送信されてくる、第１のデータ、および、受信した前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて前記他の情報処理装置が所定のアルゴリズムにより算出した認証用の第２のデータを受信し、
前記他の情報処理装置に送信した前記コマンドのパラメータの少なくとも一部、および、前記他の情報処理装置から受信した前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータを算出し、
前記第２のデータと前記第３のデータの認証を行う
ステップを含む情報処理方法。
【請求項９】
他の情報処理装置に送信するコマンドのパラメータの少なくとも一部、および、前記コマンドとともに前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータを算出する演算部と、
前記コマンド、前記第１のデータおよび前記第２のデータを前記他の情報処理装置に送信する送信部と
を備える情報処理装置。
【請求項１０】
前記コマンドは、前記第１のデータを書き込む位置を示す位置情報をパラメータに含み、前記位置情報により示される位置に前記第１のデータを書き込むためのコマンドであり、
前記演算部は、前記位置情報および前記第１のデータに基づいて、前記第２のデータを算出する
請求項９に記載の情報処理装置。
【請求項１１】
前記演算部は、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第２のデータを算出する
請求項１０に記載の情報処理装置。
【請求項１２】
情報処理装置が、
他の情報処理装置に送信するコマンドのパラメータの少なくとも一部、および、前記コマンドとともに前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータを算出し、
前記コマンド、前記第１のデータおよび前記第２のデータを前記他の情報処理装置に送信する
ステップを含む情報処理方法。
【請求項１３】
他の情報処理装置から送信されてくる、所定のコマンド、第１のデータ、および、前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて所定のアルゴリズムにより算出された認証用の第２のデータを受信する受信部と、
受信した前記コマンドのパラメータの少なくとも一部、および、前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータを算出する演算部と、
前記第２のデータと前記第３のデータの認証を行う認証部と
を備える情報処理装置。
【請求項１４】
記憶媒体へのデータの書き込みを制御する書き込み制御部をさらに備え、
前記コマンドは、前記第１のデータを書き込む位置を示す位置情報をパラメータに含み、前記位置情報により示される位置に前記第１のデータを書き込むためのコマンドであり、
前記他の情報処理装置は、送信する前記コマンドのパラメータに含まれる前記位置情報、および、送信する前記第１のデータに基づいて、前記第２のデータを算出し、
前記演算部は、受信した前記コマンドのパラメータに含まれる前記位置情報、および、受信した前記第１のデータに基づいて、前記第３のデータを算出する
請求項１３に記載の情報処理装置。
【請求項１５】
前記他の情報処理装置は、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第２のデータを算出し、
前記演算部は、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第３のデータを算出する
請求項１４に記載の情報処理装置。
【請求項１６】
情報処理装置が、
他の情報処理装置から送信されてくる、所定のコマンド、第１のデータ、および、前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて所定のアルゴリズムにより算出された認証用の第２のデータを受信し、
受信した前記コマンドのパラメータの少なくとも一部、および、前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータを算出し、
前記第２のデータと前記第３のデータの認証を行う
ステップを含む情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、情報処理装置および情報処理方法に関し、特に、データの改ざんを検出する場合に用いて好適な情報処理装置および情報処理方法に関する。
【背景技術】
【０００２】
従来、ICカードからデータを読み出す場合に、伝送路におけるデータの改ざんを検出するためにメッセージダイジェストが用いられている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−１４１６３９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のメッセージダイジェストを用いた方法では、通信に用いられるコマンドのパラメータの改ざんに対応することができない。
【０００５】
例えば、ICカードからデータを読み出すための読み出しコマンドのパラメータに含まれるアドレスが改ざんされ、改ざんされたアドレスからデータが読み出された場合、ICカードとリーダライタで、同じデータに基づいてメッセージダイジェストが生成される。従って、両者のメッセージダイジェストが一致するため、アドレスの改ざんにより別のデータが読み出されたことを検出することができない。
【０００６】
本技術の目的は、データおよびコマンドのパラメータの少なくとも一方が改ざんされたことを検出できるようにするものである。
【課題を解決するための手段】
【０００７】
本技術の第１の側面の情報処理装置は、他の情報処理装置から所定のコマンドを受信する受信部と、受信した前記コマンドのパラメータの少なくとも一部、および、前記コマンドに対応して前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータを算出する演算部と、前記第１のデータおよび前記第２のデータを前記他の情報処理装置に送信する送信部とを備える。
【０００８】
記憶媒体からのデータの読み出しを制御する読み出し制御部をさらに設け、前記コマンドを、前記第１のデータを読み出す位置を示す位置情報をパラメータに含み、前記位置情報により示される位置から前記第１のデータを読み出すためのコマンドとし、前記読み出し制御部には、前記位置情報に示される前記記憶媒体の位置から前記第１のデータを読み出させ、前記演算部には、受信した前記コマンドのパラメータに含まれる前記位置情報、および、前記記憶媒体から読み出された前記第１のデータに基づいて、前記第２のデータを算出させることができる。
【０００９】
前記演算部には、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第２のデータを算出させることができる。
【００１０】
本技術の第１の側面の情報処理方法は、情報処理装置が、他の情報処理装置から所定のコマンドを受信し、受信した前記コマンドのパラメータの少なくとも一部、および、前記コマンドに対応して前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータを算出し、前記第１のデータおよび前記第２のデータを前記他の情報処理装置に送信するステップを含む。
【００１１】
本技術の第２の側面の情報処理装置は、他の情報処理装置に所定のコマンドを送信する送信部と、前記コマンドに対応して前記他の情報処理装置から送信されてくる、第１のデータ、および、受信した前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて前記他の情報処理装置が所定のアルゴリズムにより算出した認証用の第２のデータを受信する受信部と、前記他の情報処理装置に送信した前記コマンドのパラメータの少なくとも一部、および、前記他の情報処理装置から受信した前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータを算出する演算部と、前記第２のデータと前記第３のデータの認証を行う認証部とを備える。
【００１２】
前記コマンドを、前記第１のデータを読み出す位置を示す位置情報をパラメータに含み、前記位置情報により示される位置から前記第１のデータを読み出すためのコマンドとし、前記他の情報処理装置には、受信した前記コマンドのパラメータに含まれる前記位置情報、および、前記位置情報により示される位置から読み出した前記第１のデータに基づいて、前記第２のデータを算出させ、前記演算部には、送信した前記コマンドのパラメータに含まれる前記位置情報、および、前記他の情報処理装置から受信した前記第１のデータに基づいて、前記第３のデータを算出させることができる。
【００１３】
前記他の情報処理装置には、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第２のデータを算出させ、前記演算部には、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第３のデータを算出させることができる。
【００１４】
本技術の第２の側面の情報処理方法は、情報処理装置が、他の情報処理装置に所定のコマンドを送信し、前記コマンドに対応して前記他の情報処理装置から送信されてくる、第１のデータ、および、受信した前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて前記他の情報処理装置が所定のアルゴリズムにより算出した認証用の第２のデータを受信し、前記他の情報処理装置に送信した前記コマンドのパラメータの少なくとも一部、および、前記他の情報処理装置から受信した前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータを算出し、前記第２のデータと前記第３のデータの認証を行うステップを含む。
【００１５】
本技術の第３の側面の情報処理装置は、他の情報処理装置に送信するコマンドのパラメータの少なくとも一部、および、前記コマンドとともに前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータを算出する演算部と、前記コマンド、前記第１のデータおよび前記第２のデータを前記他の情報処理装置に送信する送信部とを備える。
【００１６】
前記コマンドを、前記第１のデータを書き込む位置を示す位置情報をパラメータに含み、前記位置情報により示される位置に前記第１のデータを書き込むためのコマンドとし、前記演算部には、前記位置情報および前記第１のデータに基づいて、前記第２のデータを算出させることができる。
【００１７】
前記演算部には、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第２のデータを算出させることができる。
【００１８】
本技術の第３の側面の情報処理方法は、情報処理装置が、他の情報処理装置に送信するコマンドのパラメータの少なくとも一部、および、前記コマンドとともに前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータを算出し、前記コマンド、前記第１のデータおよび前記第２のデータを前記他の情報処理装置に送信するステップを含む。
【００１９】
本技術の第４の側面の情報処理装置は、他の情報処理装置から送信されてくる、所定のコマンド、第１のデータ、および、前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて所定のアルゴリズムにより算出された認証用の第２のデータを受信する受信部と、受信した前記コマンドのパラメータの少なくとも一部、および、前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータを算出する演算部と、前記第２のデータと前記第３のデータの認証を行う認証部とを備える。
【００２０】
記憶媒体へのデータの書き込みを制御する書き込み制御部をさらに設け、前記コマンドを、前記第１のデータを書き込む位置を示す位置情報をパラメータに含み、前記位置情報により示される位置に前記第１のデータを書き込むためのコマンドとし、前記他の情報処理装置には、送信する前記コマンドのパラメータに含まれる前記位置情報、および、送信する前記第１のデータに基づいて、前記第２のデータを算出させ、前記演算部には、受信した前記コマンドのパラメータに含まれる前記位置情報、および、受信した前記第１のデータに基づいて、前記第３のデータを算出させることができる。
【００２１】
前記他の情報処理装置には、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第２のデータを算出させ、前記演算部には、前記位置情報および前記第１のデータに加えて、前記第１のデータの個数に基づいて、前記第３のデータを算出させることができる。
【００２２】
本技術の第４の側面の情報処理方法は、情報処理装置が、他の情報処理装置から送信されてくる、所定のコマンド、第１のデータ、および、前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて所定のアルゴリズムにより算出された認証用の第２のデータを受信し、受信した前記コマンドのパラメータの少なくとも一部、および、前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータを算出し、前記第２のデータと前記第３のデータの認証を行うステップを含む。
【００２３】
本技術の第１の側面においては、他の情報処理装置から所定のコマンドが受信され、受信された前記コマンドのパラメータの少なくとも一部、および、前記コマンドに対応して前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータが算出され、前記第１のデータおよび前記第２のデータが前記他の情報処理装置に送信される。
【００２４】
本技術の第２の側面においては、他の情報処理装置に所定のコマンドが送信され、前記コマンドに対応して前記他の情報処理装置から送信されてくる、第１のデータ、および、受信した前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて前記他の情報処理装置が所定のアルゴリズムにより算出した認証用の第２のデータが受信され、前記他の情報処理装置に送信された前記コマンドのパラメータの少なくとも一部、および、前記他の情報処理装置から受信された前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータが算出され、前記第２のデータと前記第３のデータの認証が行われる。
【００２５】
本技術の第３の側面においては、他の情報処理装置に送信するコマンドのパラメータの少なくとも一部、および、前記コマンドとともに前記他の情報処理装置に送信する第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第２のデータが算出され、前記コマンド、前記第１のデータおよび前記第２のデータが前記他の情報処理装置に送信される。
【００２６】
本技術の第４の側面においては、他の情報処理装置から送信されてくる、所定のコマンド、第１のデータ、および、前記コマンドのパラメータの少なくとも一部と前記第１のデータとに基づいて所定のアルゴリズムにより算出された認証用の第２のデータが受信され、受信された前記コマンドのパラメータの少なくとも一部、および、前記第１のデータに基づいて、前記他の情報処理装置と共通のアルゴリズムにより認証用の第３のデータが算出され、前記第２のデータと前記第３のデータの認証が行われる。
【発明の効果】
【００２７】
本技術の第１乃至第４の側面によれば、データおよびコマンドのパラメータの少なくとも一方が改ざんされたことを検出することができる。
【図面の簡単な説明】
【００２８】
【図１】本技術を適用した情報処理システムの一実施の形態を示すブロック図である。
【図２】認証部の構成例を示すブロック図である。
【図３】リーダライタがICカードからデータを読み出す場合の処理を説明するためのフローチャートである。
【図４】MAC演算の具体例を説明するための図である。
【図５】リーダライタからICカードにデータを書き込む場合の処理を説明するためのフローチャートである。
【図６】コンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００２９】
以下、本技術を実施するための形態（以下、実施の形態という）について説明する。なお、説明は以下の順序で行う。
１．実施の形態
２．変形例
【００３０】
＜１．実施の形態＞
［情報処理システムの構成例］
図１は、本技術を適用した情報処理システムの一実施の形態を示すブロック図である。
【００３１】
図１の情報処理システム１は、リーダライタ１１およびICカード１２を含むように構成される。
【００３２】
リーダライタ１１は、ICカード１２と所定の通信方式による近接通信を行い、ICカード１２にデータを書き込んだり、ICカード１２からデータを読み込んだりする。
【００３３】
なお、リーダライタ１１とICカード１２の間の通信方式は、例えばNFC（Near Field Communication）等、任意の方式を採用することができる。
【００３４】
リーダライタ１１は、入力部２１、コマンド生成部２２、コマンド送信部２３、アンテナ２４、レスポンス受信部２５、MAC演算部２６、および、認証部２７を含むように構成される。
【００３５】
入力部２１は、例えば、ボタン、キー、スイッチなどの入力装置により構成され、リーダライタ１１への各種の指令等の入力に用いられる。入力部２１は、入力された指令等をコマンド生成部２２に供給する。
【００３６】
コマンド生成部２２は、入力部２１から供給される指令に基づいて、各種のコマンドを生成する。
【００３７】
例えば、コマンド生成部２２は、ICカード１２のメモリ４６の指定したアドレス（以下、読み出しアドレスと称する）からデータを読み出すための読み出しコマンドを生成する。そして、コマンド生成部２２は、生成した読み出しコマンドをコマンド送信部２３に供給し、読み出しアドレスをMAC演算部２６に供給する。
【００３８】
また、例えば、コマンド生成部２２は、ICカード１２のメモリ４６の指定したアドレス（以下、書き込みアドレスと称する）にデータ（以下、書き込みデータと称する）を書き込むための書き込みコマンドを生成する。このとき、コマンド生成部２２は、書き込みデータと書き込みアドレスをMAC演算部２６に供給し、書き込みデータと書き込みアドレスに基づくMAC（Message Authentication Code）を算出させ、算出されたMACを取得する。そして、コマンド生成部２２は、書き込みアドレスをパラメータに設定し、書き込みデータおよびMACを添付した書き込みコマンドを生成し、コマンド送信部２３に供給する。
【００３９】
コマンド送信部２３は、コマンド生成部２２から供給されるコマンドを、アンテナ２４を介してICカード１２に送信する。
【００４０】
レスポンス受信部２５は、リーダライタ１１が送信したコマンドに対応してICカード１２から送信されてくる応答コマンドを、アンテナ２４を介して受信する。また、レスポンス受信部２５は、読み出しコマンドに対する応答コマンドを受信した場合、応答コマンドに添付されている、メモリ４６から読み出されたデータ（以下、読み出しデータと称する）をMAC演算部２６に供給し、MACを認証部２７に供給する。
【００４１】
MAC演算部２６は、コマンド生成部２２から供給される読み出しアドレス、および、レスポンス受信部２５から供給される読み出しデータに基づいて、所定のアルゴリズムによりMACを算出し、算出したMACを認証部２７に供給する。
【００４２】
また、MAC演算部２６は、コマンド生成部２２から供給される書き込みデータおよび書き込みアドレスに基づいて、所定のアルゴリズムによりMACを算出し、算出したMACをコマンド生成部２２に供給する。
【００４３】
認証部２７は、MAC演算部２６により算出されたMACとICカード１２から受信したMACとの認証を行う。
【００４４】
ICカード１２は、アンテナ４１、コマンド受信部４２、MAC演算部４３、認証部４４、メモリアクセス部４５、メモリ４６、レスポンス生成部４７、および、レスポンス送信部４８を含むように構成される。
【００４５】
コマンド受信部４２は、リーダライタ１１から送信されてくる各種のコマンドを、アンテナ４１を介して受信する。
【００４６】
また、コマンド受信部４２は、読み出しコマンドを受信した場合、読み出しコマンドに設定されている読み出しアドレスをメモリアクセス部４５に供給する。
【００４７】
さらに、コマンド受信部４２は、書き込みコマンドを受信した場合、書き込みコマンドに添付されている書き込みデータ、および、書き込みコマンドに設定されている書き込みアドレスをMAC演算部４３に供給する。また、コマンド受信部４２は、書き込みコマンドに添付されているMACを認証部４４に供給する。
【００４８】
MAC演算部４３は、コマンド受信部４２から供給される書き込みデータおよび書き込みアドレスに基づいて、リーダライタ１１のMAC演算部２６と共通のアルゴリズムによりMACを算出する。そして、MAC演算部４３は、算出したMAC、並びに、算出に用いた書き込みデータおよび書き込みアドレスを認証部４４に供給する。
【００４９】
また、MAC演算部４３は、コマンド受信部４２から供給される読み出しアドレス、および、メモリアクセス部４５から供給される読み出しデータに基づいて、リーダライタ１１のMAC演算部２６と共通のアルゴリズムによりMACを算出する。そして、MAC演算部４３は、算出したMACをレスポンス生成部４７に供給する。
【００５０】
認証部４４は、リーダライタ１１から受信した書き込みコマンドに添付されているMACと、MAC演算部４３により算出されたMACとの認証を行う。認証部４４は、認証に成功した場合、書き込みデータと書き込みアドレスをメモリアクセス部４５に供給する。
【００５１】
メモリアクセス部４５は、メモリ４６からのデータの読み出し、および、メモリ４６へのデータの書き込みを制御する。
【００５２】
例えば、メモリアクセス部４５は、読み出しコマンドに設定されている読み出しアドレスにより示されるメモリ４６のアドレスからデータを読み出し、読み出したデータ（読み出しデータ）をMAC演算部４３およびレスポンス生成部４７に供給する。
【００５３】
また、例えば、メモリアクセス部４５は、書き込みコマンドに設定されている書き込みアドレスにより示されるメモリ４６のアドレスに書き込みデータを書き込み、書き込みの完了をレスポンス生成部４７に通知する。
【００５４】
レスポンス生成部４７は、リーダライタ１１から受信したコマンドに対する応答コマンドを生成し、レスポンス送信部４８に供給する。
【００５５】
例えば、レスポンス生成部４７は、読み出しコマンドに対して、メモリ４６から読み出されたデータ（読み出しデータ）、および、MAC演算部４３により算出されたMACを添付した応答コマンドを生成し、レスポンス送信部４８に供給する。
【００５６】
また、例えば、レスポンス送信部４８は、書き込みコマンドに対して、書き込みデータの書き込みの完了を通知するための応答コマンドを生成し、レスポンス送信部４８に供給する。
【００５７】
レスポンス送信部４８は、レスポンス生成部４７から供給される応答コマンドを、アンテナ４１を介してリーダライタ１１に送信する。
【００５８】
［MAC演算部２６の構成例］
図２は、リーダライタ１１のMAC演算部２６の構成例を示すブロック図である。
【００５９】
MAC演算部２６は、入力されたデータをDES-CBC（Data Encryption Standard for Cipher Block Chaining）により暗号化することにより、MACを算出する。MAC演算部２６は、トリプルDES暗号化部１０１−１乃至１０１−ｎ、および、EXOR演算部１０２−１乃至１０２−（ｎ−１）を含むように構成される。
【００６０】
MAC演算部２６は、入力されたデータを所定のバイト（例えば、８バイト）数毎に分割して処理する。そして、分割後の先頭のデータ１が、トリプルDES暗号化部１０１−１に入力され、２番目以降のデータｉ（ｉ＝２〜ｎ）が、それぞれEXOR演算部１０２−（ｉ−１）に入力される。
【００６１】
トリプルDES暗号化部１０１−１は、データ１に対してトリプルDESによる暗号化を行い、得られた暗号化データをEXOR演算部１０２−１に供給する。
【００６２】
EXOR演算部１０２−１は、トリプルDES暗号化部１０１−１から取得した暗号化データとデータ２の排他的論理和を算出し、算出したデータをトリプルDES暗号化部１０１−２に供給する。
【００６３】
トリプルDES暗号化部１０１−２は、EXOR演算部１０２−１から取得したデータに対してトリプルDESによる暗号化を行い、得られた暗号化データをEXOR演算部１０２−２に供給する。
【００６４】
EXOR演算部１０２−２（不図示）は、トリプルDES暗号化部１０１−２から取得した暗号化データとデータ３の排他的論理和を算出し、算出したデータをトリプルDES暗号化部１０１−３（不図示）に供給する。
【００６５】
トリプルDES暗号化部１０１−３は、EXOR演算部１０２−２から取得したデータに対してトリプルDESによる暗号化を行い、得られた暗号化データをEXOR演算部１０２−３（不図示）に供給する。
【００６６】
MAC演算部２６は、以上の処理を最後のｎ番目のデータｎが、トリプルDES１０１−ｎにより暗号化されるまで繰り返す。そして、MAC演算部２６は、トリプルDES１０１−ｎによる暗号化データをMACとして出力する。
【００６７】
なお、ICカード１２のMAC演算部４３は、MAC演算部２６と同様の構成を有しており、その説明は繰り返しになるため省略する。
【００６８】
また、図２に示されるMAC演算部２６およびMAC演算部４３の構成は、その一例であり、例えば、DES-CBCとは異なるアルゴリズムによりMAC演算を行う構成にすることが可能である。
【００６９】
［データ読み出し処理］
次に、図３のフローチャートを参照して、リーダライタ１１がICカード１２からデータを読み出す場合の処理について説明する。
【００７０】
なお、この処理は、例えば、ICカード１２の指定したアドレス（読み出しアドレス）からデータを読み出す旨の指令が、リーダライタ１１の入力部２１を介して、コマンド生成部２２に入力されたとき開始される。
【００７１】
なお、図３のフローチャートでは、リーダライタ１１がICカード１２を捕捉し、リーダライタ１１とICカード１２との間で相互認証を行う処理の記載を省略している。また、以下、すでにリーダライタ１１とICカード１２の間の認証処理が実行済みであるものとして説明する。
【００７２】
ステップＳ１において、リーダライタ１１のコマンド生成部２２は、読み出しコマンドを生成する。具体的には、コマンド生成部２２は、入力部２１から取得した読み出しアドレスをパラメータに設定した読み出しコマンドを生成する。そして、コマンド生成部２２は、生成した読み出しコマンドをコマンド送信部２３に供給する。また、コマンド生成部２２は、読み出しアドレスをMAC演算部２６に供給する。
【００７３】
ステップＳ２において、コマンド送信部２３は、アンテナ２４を介して、ICカード１２に読み出しコマンドを送信する。
【００７４】
ステップＳ１１において、ICカード１２のコマンド受信部４２は、アンテナ４１を介して、リーダライタ１１から送信された読み出しコマンドを受信する。コマンド受信部４２は、受信した読み出しコマンドのパラメータに含まれる読み出しアドレスをMAC演算部４３およびメモリアクセス部４５に供給する。
【００７５】
ステップＳ１２において、メモリアクセス部４５は、読み出しコマンドにより指定されたメモリ４６のアドレス（すなわち、読み出しアドレス）からデータを読み出す。メモリアクセス部４５は、読み出したデータ（読み出しデータ）をMAC演算部４３およびレスポンス生成部４７に供給する。
【００７６】
ステップＳ１３において、MAC演算部４３は、メモリ４６から読み出しデータ、および、リーダライタ１１から受信した読み出しアドレスに基づいて、MACを算出する。MAC演算部４３は、算出したMACをレスポンス生成部４７に供給する。
【００７７】
ここで、図４を参照して、MACの演算方法を具体例について説明する。なお、以下、読み出しコマンドにメモリ４６の0001乃至0005番地が設定されており、当該アドレスから合計５つのデータが読み出されたものとする。
【００７８】
この場合、トリプルDES暗号化部１０１−１には、読み出しコマンドによりデータの読み出しが指示されたアドレスの数、換言すれば、読み出されたデータの個数（0x0005）、および、データを読み出したアドレスの先頭から３番目までの値（0x0001，0x0002，0x0003）からなる８バイトのデータ（0x0005000100020003）が入力される。
【００７９】
また、EXOR演算部１０２−１には、データを読み出したアドレスの４番目と５番目の値（0004,0005）、および、入力データを８バイトにするためのフィラー（0x00000000）からなる８バイトのデータ（0x0004000500000000）が入力される。
【００８０】
また、0001番地から読み出されたデータ１の前半８バイトがEXOR演算部１０２−２に入力され、データ１の後半８バイトがEXOR演算部１０２−３に入力される。0002番地から読み出されたデータ２の前半８バイトがEXOR演算部１０２−４（不図示）に入力され、データ２の後半８バイトがEXOR演算部１０２−５（不図示）に入力される。0003番地から読み出されたデータ３の前半８バイトがEXOR演算部１０２−６（不図示）に入力され、データ３の後半８バイトがEXOR演算部１０２−７（不図示）に入力される。0004番地から読み出されたデータ４の前半８バイトがEXOR演算部１０２−８（不図示）に入力され、データ４の後半８バイトがEXOR演算部１０２−９（不図示）に入力される。0005番地から読み出されたデータ５の前半８バイトがEXOR演算部１０２−１０に入力され、データ５の後半８バイトがEXOR演算部１０２−１１に入力される。
【００８１】
そして、図２を参照して上述したアルゴリズムにより、リーダライタ１１から受信した読み出しコマンドに設定されている読み出しアドレス、並びに、メモリ４６から読み出されたデータおよびその個数に基づいてMACが演算される。
【００８２】
なお、必ずしも読み出されたデータの個数をMACの演算に用いる必要はない。ただし、データの個数を用いるようにした方が、実際のアドレスと、入力データを８バイトにするためのフィラーとを正確に区別することが可能になる。例えば、上述した例では、フィラーとして追加したデータが、値だけではアドレスかフィラーか区別できないが、データの個数に基づいて、フィラーであると認識することが可能になる。
【００８３】
ステップＳ１４において、レスポンス生成部４７は、メモリ４６から読み出したデータ、および、算出したMACを添付した応答コマンドを生成する。すなわち、レスポンス生成部４７は、読み出しコマンドに対応して、メモリ４６から読み出した読み出しデータおよびMAC演算部４３により算出されたMACを添付した応答コマンドを生成する。そして、レスポンス生成部４７は、生成した応答コマンドをレスポンス送信部４８に供給する。
【００８４】
ステップＳ１５において、レスポンス送信部４８は、アンテナ４１を介してリーダライタ１１に応答コマンドを送信する。このとき、応答コマンドに添付されている読み出しデータは、暗号化されずにICカード１２からリーダライタ１１に送信される。
【００８５】
ステップＳ３において、リーダライタ１１のレスポンス受信部２５は、アンテナ２４を介して、ICカード１２から応答コマンドを受信する。レスポンス受信部２５は、応答コマンドに添付されている読み出しデータをMAC演算部２６に供給し、MACを認証部２７に供給する。
【００８６】
ステップＳ４において、MAC演算部２６は、ICカード１２から受信したデータ、および、ICカード１２に送信した読み出しアドレスに基づいて、MACを算出する。このとき、MAC演算部２６は、ICカード１２のMAC演算部４３と同様のアルゴリズムによりMACを算出する。すなわち、MAC演算部２６は、ICカードに送信した読み出しコマンドに設定した読み出しアドレス、および、読み出しを指示したデータの個数（＝アドレスの数）、並びに、ICカード１１から受信した読み出しデータに基づいて、図４を参照して上述したアルゴリズムによりMACを算出する。MAC演算部２６は、算出したMACを認証部２７に供給する。
【００８７】
ステップＳ５において、認証部２７は、算出したMACとICカード１２から受信したMACの認証を行う。そして、認証部２７は、両者が一致する場合、リーダライタ１１とICカード１２との間の伝送路において改ざんが行われていないと判定する。
【００８８】
一方、認証部２７は、両者が一致しない場合、リーダライタ１１とICカード１２との間の伝送路において改ざんが行われた可能性があると判定する。すなわち、認証部２７は、リーダライタ１１とICカード１２との間の伝送路において、読み出しコマンドに設定された読み出しアドレスおよび応答コマンドに添付された読み出しデータのうち少なくとも一方が改ざんされた可能性があると判定する。
【００８９】
その後、リーダライタ１１とICカード１２との間で通信を終了させるための処理が行われ、一連の処理は終了する。
【００９０】
このようにして、読み出しコマンドに設定された読み出しアドレスおよび応答コマンドに添付された読み出しデータのうち少なくとも一方が改ざんされたことを、複雑な処理を行わずに、簡単に検出することができる。
【００９１】
［データ書き込み処理］
次に、図５のフローチャートを参照して、リーダライタ１１からICカード１２にデータを書き込む場合の処理について説明する。
【００９２】
なお、この処理は、例えば、ICカード１２の指定したアドレス（書き込みアドレス）に入力データ（書き込みデータ）を書き込む旨の指令が、リーダライタ１１の入力部２１を介して、コマンド生成部２２に入力されたとき開始される。
【００９３】
なお、図５のフローチャートでは、リーダライタ１１がICカード１２を捕捉し、リーダライタ１１とICカード１２との間で相互認証を行う処理の記載を省略している。また、以下、すでにリーダライタ１１とICカード１２の間の認証処理が実行済みであるものとして説明する。
【００９４】
ステップＳ５１において、MAC演算部２６は、書き込みデータと書き込みアドレスに基づいて、MACを算出する。具体的には、コマンド生成部２２は、入力部２１から取得した書き込みデータと書き込みアドレスをMAC演算部２６に供給する。MAC演算部２６は、送信する書き込みデータおよびその個数、並びに、書き込みアドレスに基づいて、図４を参照して上述したアルゴリズムによりMACを算出する。MAC演算部２６は、算出したMACをコマンド生成部２２に供給する。
【００９５】
ステップＳ５２において、コマンド生成部２２は、書き込みデータ、書き込みアドレス、および、MACを含む書き込みコマンドを生成する。具体的には、コマンド生成部２２は、書き込みアドレスをパラメータに設定し、書き込みデータおよびMAC演算部２６により算出されたMACを添付した書き込みコマンドを生成する。コマンド生成部２２は、生成した書き込みコマンドをコマンド送信部２３に供給する。
【００９６】
ステップＳ５３において、コマンド送信部２３は、アンテナ２４を介してICカード１２に書き込みコマンドを送信する。このとき、書き込みコマンドに添付されている書き込みデータは、暗号化されずにリーダライタ１１からICカード１２に送信される。
【００９７】
ステップＳ６１において、ICカード１２のコマンド受信部４２は、アンテナ４１を介して、リーダライタ１１から送信された書き込みコマンドを受信する。コマンド受信部４２は、受信した書き込みコマンドのパラメータに含まれる書き込みアドレス、および、書き込みコマンドに添付されている書き込みデータをMAC演算部４３に供給する。また、コマンド受信部４２は、受信した書き込みコマンドに添付されているMACを認証部４４に供給する。
【００９８】
ステップＳ６２において、MAC演算部４３は、リーダライタ１１から受信した書き込みデータおよび書き込みアドレスに基づいて、MACを算出する。このとき、MAC演算部４３は、リーダライタ１１のMAC演算部２６と同様のアルゴリズムによりMACを算出する。すなわち、MAC演算部４３は、受信した書き込みデータおよびその個数、並びに、受信した書き込みアドレスに基づいて、図４を参照して上述したアルゴリズムによりMACを算出する。MAC演算部４３は、算出したMAC、並びに、算出に用いた書き込みデータおよび書き込みアドレスを認証部４４に供給する。
【００９９】
ステップＳ６３において、認証部４４は、算出したMACとリーダライタ１１から受信したMACの認証を行い、両者が一致するか否かを判定する。両者が一致すると判定された場合、処理はステップＳ６４に進む。
【０１００】
ステップＳ６４において、メモリアクセス部４５は、指定されたメモリ４６のアドレスに書き込みデータを書き込む。具体的には、認証部４４は、書き込みデータおよび書き込みアドレスをメモリアクセス部４５に供給する。メモリアクセス部４５は、書き込みアドレスにより示されるメモリ４６のアドレスに書き込みデータを書き込む。メモリアクセス部４５は、書き込みの完了をレスポンス生成部４７に通知する。
【０１０１】
ステップＳ６５において、レスポンス生成部４７は、書き込みコマンドに対応し、データの書き込み完了を通知するための応答コマンドを生成する。そして、レスポンス生成部４７は、生成した応答コマンドをレスポンス送信部４８に供給する。
【０１０２】
ステップＳ６６において、レスポンス送信部４８は、アンテナ４１を介してリーダライタ１１に応答コマンドを送信する。
【０１０３】
ステップＳ５４において、リーダライタ１１のレスポンス受信部２５は、アンテナ２４を介して、ICカード１２から送信された応答コマンドを受信する。
【０１０４】
その後、リーダライタ１１とICカード１２との間で通信を終了させるための処理が行われ、一連の処理は終了する。
【０１０５】
一方、ステップＳ６３において、ICカード１２の認証部４４が、算出したMACとリーダライタ１１から受信したMACが一致しないと判定した場合、ステップＳ６４乃至Ｓ６６の処理はスキップされ、ICカード１２の処理は終了する。
【０１０６】
すなわち、この場合、リーダライタ１１とICカード１２との間の伝送路において、書き込みコマンドに設定された書き込みアドレスおよび添付された書き込みデータの少なくとも一方が改ざんされた可能性がある。従って、メモリ４６へのデータの書き込みは行われずに、一連の処理が終了する。
【０１０７】
このようにして、書き込みコマンドに設定された書き込みアドレスおよび添付された書き込みデータのうち少なくとも一方が改ざんされたことを、複雑な処理を行わずに、簡単に検出することができる。
【０１０８】
＜２.変形例＞
以下、本技術の実施の形態の変形例について説明する。
【０１０９】
［変形例１］
以上の説明では、データの読み出し時および書き込み時の両方において、本技術を適用する例を示したが、いずれか一方のみに適用することも可能である。例えば、データの書き込みを行わないシステムにおいては、データの読み出し時のみに本技術を適用することが可能である。
【０１１０】
［変形例２］
また、本技術は、上述したリーダライタ１１とICカード１２との間の通信に限定されるものではなく、各種の装置間の通信に適用することができる。例えば、ICカード１２の代わりに、近接通信が可能なICチップ、または、ICチップを搭載した各種の装置（例えば、ICタグ、携帯電話機、携帯情報端末等）を用いた通信に適用することができる。また、例えば、ICカード１２のように記憶媒体を内蔵した装置だけでなく、記憶媒体が外付けの装置を用いた通信にも適用することが可能である。
【０１１１】
さらに、通信方式も近接通信に限定されるものではなく、有線または無線を問わず、任意の通信方式を採用することが可能である。
【０１１２】
［変形例３］
また、改ざんの検出対象である、コマンドに設定する読み出しアドレスおよび書き込みアドレス等の位置情報は、任意の態様にすることが可能である。
【０１１３】
例えば、全てのアドレスを個々に指定するようにしてもよいし、アドレスの範囲を、開始アドレスと終了アドレスにより指定したり、開始アドレスとアドレス数により指定したりするようにしてもよい。また、例えば、絶対アドレスまたは相対アドレスのいずれを用いてもよい。さらに、例えば、ブロック番号や領域名など、アドレス以外の単位で位置を示すようにしてもよい。
【０１１４】
［変形例４］
さらに、以上の説明では、読み出しアドレスまたは書き込みアドレスを改ざんの検出対象とする例を示したが、本技術は、それ以外のパラメータの改ざんを検出する場合にも適用することができる。
【０１１５】
例えば、読み出しを開始するアドレス、読み出すデータの数、および、データを読み出す方向（アドレスの昇順または降順）を、読み出しコマンドにパラメータとして設定する場合、それらの全てのパラメータを用いてMACを演算することにより、当該全てのパラメータの改ざんを検出することが可能になる。
【０１１６】
［変形例５］
また、本技術では、必ずしもコマンドの全てのパラメータをMACの演算に用いる必要はなく、少なくとも一部のみ（例えば、改ざんを検出したいパラメータのみ）を用いて演算するようにしてもよい。
【０１１７】
［変形例６］
また、例えば、リーダライタ１１がICカード１２にデータを書き込むときに、ICカード１２に保持されているカウンタをインクリメントするようにするとともに、そのカウンタの値も含めてMAC演算を行うようにしてもよい。例えば、リーダライタ１１が、MACを演算する前にICカード１２からカウンタの値を読み出し、書き込みデータ、書き込みアドレス、および、読み出したカウンタの値に基づいて、MACを算出するようにしてもよい。
【０１１８】
［変形例７］
さらに、上述したMAC演算のアルゴリズムは、その一例であり、他のセキュリティ強度の高いアルゴリズムを採用することが可能である。
【０１１９】
また、改ざんの検出に用いる認証用データには、上述したMAC以外にも、送信側と受信側で共通のセキュリティ強度の高いアルゴリズムにより算出されるデータを採用することができる。
【０１２０】
さらに、認証用データの演算アルゴリズムには、共通鍵暗号化方式および公開鍵暗号化方式のいずれの暗号化方式を採用してもよい。なお、公開鍵暗号化方式を採用した場合、認証用データの送信側が秘密鍵を用いて演算し、受信側が公開鍵を用いて演算するようにすればよい。
【０１２１】
あるいは、セッション毎に生成され、送信側と受信側で共有されるセッション鍵を用いて認証用データを演算するようにしてもよい。
【０１２２】
なお、セッション鍵の生成方法には、任意の方法を採用することができる。例えば、情報処理システム１においては、リーダライタ１１がICカード１２に乱数を書き込み、その乱数に基づいて、ICカード１２がセッション鍵を生成するようにすることが可能である。生成されたセッション鍵は、例えば、電源が切断されたり、再度ICカード１２に乱数が書き込まれるまで有効とされる。
【０１２３】
また、認証用データの演算アルゴリズムには、鍵を用いないアルゴリズムを採用することも可能である。ただし、この場合、得られた認証用データを、共通鍵暗号化方式および公開鍵暗号化方式のいずれかの暗号化方式により暗号化して送信する必要がある。なお、公開鍵暗号化方式を採用した場合、認証用データの送信側が秘密鍵を用いて暗号化し、受信側が公開鍵を用いて復号するようにすればよい。
【０１２４】
［変形例８］
さらに、本技術は、データを暗号化して送受信する場合にも適用することができる。この場合、伝送路上でデータが改ざんされる可能性が低くなるため、認証用データが一致しない場合、コマンドのパラメータが改ざんされた可能性が高いことを検出することができる。
【０１２５】
［コンピュータの構成例］
上述した一連の処理は、ハードウエアにより実行することもできるし、ソフトウエアにより実行することもできる。一連の処理をソフトウエアにより実行する場合には、そのソフトウエアを構成するプログラムが、コンピュータにインストールされる。ここで、コンピュータには、専用のハードウエアに組み込まれているコンピュータや、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどが含まれる。
【０１２６】
図６は、上述した一連の処理をプログラムにより実行するコンピュータのハードウエアの構成例を示すブロック図である。
【０１２７】
コンピュータにおいて、CPU（Central Processing Unit）２０１，ROM（Read Only Memory）２０２，RAM（Random Access Memory）２０３は、バス２０４により相互に接続されている。
【０１２８】
バス２０４には、さらに、入出力インタフェース２０５が接続されている。入出力インタフェース２０５には、入力部２０６、出力部２０７、記憶部２０８、通信部２０９、及びドライブ２１０が接続されている。
【０１２９】
入力部２０６は、キーボード、マウス、マイクロフォンなどよりなる。出力部２０７は、ディスプレイ、スピーカなどよりなる。記憶部２０８は、ハードディスクや不揮発性のメモリなどよりなる。通信部２０９は、ネットワークインタフェースなどよりなる。ドライブ２１０は、磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリなどのリムーバブルメディア２１１を駆動する。
【０１３０】
以上のように構成されるコンピュータでは、CPU２０１が、例えば、記憶部２０８に記憶されているプログラムを、入出力インタフェース２０５及びバス２０４を介して、RAM２０３にロードして実行することにより、上述した一連の処理が行われる。
【０１３１】
コンピュータ（CPU２０１）が実行するプログラムは、例えば、パッケージメディア等としてのリムーバブルメディア２１１に記録して提供することができる。また、プログラムは、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の伝送媒体を介して提供することができる。
【０１３２】
コンピュータでは、プログラムは、リムーバブルメディア２１１をドライブ２１０に装着することにより、入出力インタフェース２０５を介して、記憶部２０８にインストールすることができる。また、プログラムは、有線または無線の伝送媒体を介して、通信部２０９で受信し、記憶部２０８にインストールすることができる。その他、プログラムは、ROM２０２や記憶部２０８に、あらかじめインストールしておくことができる。
【０１３３】
なお、コンピュータが実行するプログラムは、本明細書で説明する順序に沿って時系列に処理が行われるプログラムであっても良いし、並列に、あるいは呼び出しが行われたとき等の必要なタイミングで処理が行われるプログラムであっても良い。
【０１３４】
また、本明細書において、システムの用語は、複数の装置、手段などより構成される全体的な装置を意味するものとする。
【０１３５】
さらに、本技術の実施の形態は、上述した実施の形態に限定されるものではなく、本技術の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０１３６】
１  情報処理システム，  １１  リーダライタ，  １２  ICカード，  ２２  コマンド生成部，  ２３  コマンド送信部，  ２５  レスポンス受信部，  ２６  MAC演算部，  ２７  認証部，  ４２  コマンド受信部，  ４３  MAC演算部，  ４４  認証部，  ４５  メモリアクセス部，  ４６  メモリ，  ４７  レスポンス生成部，  ４８  レスポンス送信部
【図１】
0005824849.tif 000002
【図２】
0005824849.tif 000003
【図３】
0005824849.tif 000004
【図４】
0005824849.tif 000005
【図５】
0005824849.tif 000006
【図６】
0005824849.tif 000007