(57)【要約】【課題】機器の処理効率を向上させるとともに、国際標準規格に適合する確実な相互認証方式を提供することができるようにする。【解決手段】データＭ１は、通信相手が発生した乱数Ｒａのうちの１６バイト分のデータとされ、データＭ２は、乱数ＲａのうちのデータＭ１を除いた１６バイト分のデータとされる。データＭ３は、自身が発生した乱数Ｒｂとされる。復号により得られたデータＭ３が、自身が生成した乱数Ｒｂと等しいと判定され、かつデータＣ１に対応して得られたデータＭ１と、データＣ４に対応して得られたデータＭ１が等しいと判定された場合、通信相手が正当な機器であると認証される。【選択図】図１１
2011066636.tif 000002
【特許請求の範囲】
【請求項１】
通信相手に送信された第１の乱数に対応して前記通信相手から送信されるデータを受信する受信手段と、
前記データを分割することで得られる複数のブロック暗号化データを、ＣＢＣモードの暗号アルゴリズムに対応する復号方式で復号するＣＢＣ復号手段と、
前記ＣＢＣ復号手段の復号結果として得られる複数のブロック復号データのうちの１のブロック復号データが前記第１の乱数と等しいか否かを判定する第１の判定手段と、
前記複数のブロック復号データのうちの第１のブロック復号データが、前記第1の判定手段により前記第１の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第２のブロック復号データと等しいか否かを判定する第２の判定手段と、
前記第２の判定手段により、前記２つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証する認証手段と
を備える認証装置。
【請求項２】
前記通信相手から送信されるデータは、前記第１の乱数および前記通信相手が発生した第２の乱数を組み合わせてＣＢＣモードで暗号化したブロック暗号化データとされ、
前記ＣＢＣ復号手段は、前記通信相手との通信に用いる共通鍵を用いて、前記複数のブロック暗号化データを復号する
請求項１に記載の認証装置。
【請求項３】
前記認証手段が前記通信相手を正当な機器であると認証した場合、
前記複数のブロック復号データを組み合わせて得られる前記第２の乱数を、前記通信相手とのトランザクション処理に関する通信に用いるセッション鍵として利用する
請求項２に記載の認証装置。
【請求項４】
前記第２の判定手段により、前記２つのブロック復号データが等しいと判定された場合、
前記複数のブロック復号データのうちの第３のブロック復号データが、前記第１の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第４のブロック復号データをさらに得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第５のブロック復号データと等しいか否かを判定する第３の判定手段をさらに備え、
前記認証手段は、前記第３の判定手段により、前記２つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証する
請求項１に記載の認証装置。
【請求項５】
非接触ＩＣカード機能を有する機器として構成される前記通信相手を認証する
請求項１に記載の認証装置。
【請求項６】
受信手段が、通信相手に送信された第１の乱数に対応して前記通信相手から送信されるデータを受信し、
ＣＢＣ復号手段が、前記データを分割することで得られる複数のブロック暗号化データを、ＣＢＣモードの暗号アルゴリズムに対応する復号方式で復号し、
第１の判定手段が、前記復号結果として得られる複数のブロック復号データのうちの１のブロック復号データが前記第１の乱数と等しいか否かを判定し、
第２の判定手段が、前記複数のブロック復号データのうちの第１のブロック復号データが、前記第1の判定手段により前記第１の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第２のブロック復号データと等しいか否かを判定し、
認証手段が、前記２つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証するステップ
を含む認証方法。
【請求項７】
通信相手から送信された第１の乱数を受信する受信手段と、
第２の乱数を発生する発生手段と、
前記第２の乱数を複数のデータに分割する分割手段と、
前記第２の乱数、および前記第１の乱数から成るデータに、前記分割された複数の前記データのうち、第１のデータを、冗長データとして付加して処理対象データを生成する処理対象データ生成手段と、
前記処理対象データを、複数のデータに分割してＣＢＣモードで暗号化するＣＢＣ暗号化手段と、
前記暗号化されたデータを、前記通信相手に送信する送信手段と
を備える通信装置。
【請求項８】
前記データは、前記通信相手によりＣＢＣモードで復号され、
前記ＣＢＣ暗号化手段は、前記通信相手との通信に用いる共通鍵を用いて、前記複数のデータを暗号化する
請求項７に記載の通信装置。
【請求項９】
前記第２の乱数を、前記通信相手とのトランザクション処理に関する通信に用いるセッション鍵として利用する
請求項８に記載の通信装置。
【請求項１０】
非接触ＩＣカード機能を有する機器として構成される
請求項７に記載の通信装置。
【請求項１１】
受信手段が、通信相手から送信された第１の乱数を受信し、
発生手段が、第２の乱数を発生し、
分割手段が、前記第２の乱数を複数のデータに分割し、
処理対象データ生成手段が、前記第２の乱数、および前記第１の乱数から成るデータに、前記分割された複数の前記データのうち、第１のデータを、冗長データとして付加して処理対象データを生成し、
ＣＢＣ暗号化手段が、前記処理対象データを、複数のデータに分割してＣＢＣモードで暗号化し、
送信手段が、前記暗号化されたデータを、前記通信相手に送信するステップ
を含む通信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、認証装置および方法、並びに通信装置および方法に関し、特に、機器の処理効率を向上させるとともに、国際標準規格に適合する確実な相互認証方式を提供することができる認証装置および方法、並びに通信装置および方法に関する。
【背景技術】
【０００２】
従来、ＩＣカードとリーダライタ間での暗号化メッセージの完全性を保証するためには、ＭＡＣ（Message Authentication Code）などの方式が採用されていた。
【０００３】
国際標準の相互認証方式（ＩＳＯ/ＩＥＣ９７９８−２）では、ＩＣカードとリーダライタ間で送受信される認証メッセージに冗長情報を付加し、冗長情報の正当性を検証するなどして、認証メッセージの完全性を確保するなどの規定がなされている。ＩＳＯ/ＩＥＣ９７９８−２）では、冗長情報の例として、ＭＡＣを用いる方式が記載されている。
【０００４】
また、コンピューティングシステムにおいて、その次の動作においてそのコードが変わっていないことを保証するためにプログラムの完全性をチェックする方式も提案されている（例えば、特許文献１参照）。
【０００５】
特許文献１の技術では、実行前にプログラムが修正されたか、あるいは改ざんされたかを決定するための公開鍵／秘密鍵などを使用し、完全性をチェックする。チェックの結果、プログラムが変わっていない場合には、そのプログラムは実行され、ブートプロセスの間、プログラムは実行制御が次のレベルに転送されることを許可する。チェックの結果、プログラムは修正されていた場合には、コンピューティングシステムはそのプログラムの実行を許可しない。
【０００６】
【特許文献１】特表２００８−５３７２２４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、非接触ＩＣカードとリーダライタ間で送受信されるメッセージの認証において、公開鍵／秘密鍵を用いた電子署名などが利用されることは稀である。非接触ＩＣカードとリーダライタ間で行われる処理は、例えば、鉄道の改札の処理、コンビニエンスストアなどの小額の買い物の決済の処理などに適用されるため、極めて高速に実行されることを要するからである。
【０００８】
そこで、上述したＩＳＯ/ＩＥＣ９７９８−２においても、ＩＣカードとリーダライタ間で送受信される認証メッセージに冗長情報の生成に、ＭＡＣを用いる方式の例が記載されている。この方式であれば、公開鍵／秘密鍵を用いた電子署名などを用いることなく、メッセージの完全性をチェックすることができる。
【０００９】
しかしながら、ＭＡＣ方式を採用する場合、例えば、ＩＣカードやリーダライタなどに予め記憶されている共通鍵とは別に、ＭＡＣ用の鍵を設ける必要がある。この場合、システムのセキュリティを確実なものとすべく、ＭＡＣ用の鍵の管理や保存などを適切に行なわなければならない。
【００１０】
このため、例えば、特にメッセージが短い場合、上記のようにＭＡＣ方式を採用した認証メッセージの完全性の確保の方式は、非効率的といわざるを得ない。
【００１１】
本発明はこのような状況に鑑みてなされたものであり、機器の処理効率を向上させるとともに、国際標準規格に適合する確実な相互認証方式を提供することができるようにするものである。
【課題を解決するための手段】
【００１２】
本発明の第１の側面は、通信相手に送信された第１の乱数に対応して前記通信相手から送信されるデータを受信する受信手段と、前記データを分割することで得られる複数のブロック暗号化データを、ＣＢＣモードの暗号アルゴリズムに対応する復号方式で復号するＣＢＣ復号手段と、前記ＣＢＣ復号手段の復号結果として得られる複数のブロック復号データのうちの１のブロック復号データが前記第１の乱数と等しいか否かを判定する第１の判定手段と、前記複数のブロック復号データのうちの第１のブロック復号データが、前記第1の判定手段により前記第１の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第２のブロック復号データと等しいか否かを判定する第２の判定手段と、前記第２の判定手段により、前記２つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証する認証手段とを備える認証装置である。
【００１３】
前記通信相手から送信されるデータは、前記第１の乱数および前記通信相手が発生した第２の乱数を組み合わせてＣＢＣモードで暗号化したブロック暗号化データとされ、前記ＣＢＣ復号手段は、前記通信相手との通信に用いる共通鍵を用いて、前記複数のブロック暗号化データを復号するようにすることができる。
【００１４】
前記認証手段が前記通信相手を正当な機器であると認証した場合、前記複数のブロック復号データを組み合わせて得られる前記第２の乱数を、前記通信相手とのトランザクション処理に関する通信に用いるセッション鍵として利用するようにすることができる。
【００１５】
前記第２の判定手段により、前記２つのブロック復号データが等しいと判定された場合、前記複数のブロック復号データのうちの第３のブロック復号データが、前記第１の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第４のブロック復号データをさらに得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第５のブロック復号データと等しいか否かを判定する第３の判定手段をさらに備え、前記認証手段は、前記第３の判定手段により、前記２つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証するようにすることができる。
【００１６】
非接触ＩＣカード機能を有する機器として構成される前記通信相手を認証するようにすることができる。
【００１７】
本発明の第１の側面は、受信手段が、通信相手に送信された第１の乱数に対応して前記通信相手から送信されるデータを受信し、ＣＢＣ復号手段が、前記データを分割することで得られる複数のブロック暗号化データを、ＣＢＣモードの暗号アルゴリズムに対応する復号方式で復号し、第１の判定手段が、前記復号結果として得られる複数のブロック復号データのうちの１のブロック復号データが前記第１の乱数と等しいか否かを判定し、第２の判定手段が、前記複数のブロック復号データのうちの第１のブロック復号データが、前記第1の判定手段により前記第１の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第２のブロック復号データと等しいか否かを判定し、認証手段が、前記２つのブロック復号データが等しいと判定された場合、前記通信相手を正当な機器であると認証するステップを含む認証方法である。
【００１８】
本発明の第１の側面においては、通信相手に送信された第１の乱数に対応して前記通信相手から送信されるデータが受信され、前記データを分割することで得られる複数のブロック暗号化データが、ＣＢＣモードの暗号アルゴリズムに対応する復号方式で復号され、前記復号結果として得られる複数のブロック復号データのうちの１のブロック復号データが前記第１の乱数と等しいか否が判定され、前記複数のブロック復号データのうちの第１のブロック復号データが、前記第１の乱数と等しいと判定されたブロック復号データを得るために用いられる暗号化データとその他の暗号化データから得られるブロック復号データである第２のブロック復号データと等しいか否かが判定され、認証手段が、前記２つのブロック復号データが等しいと判定された場合、前記通信相手が正当な機器であると認証される。
【００１９】
本発明の第２の側面は、通信相手から送信された第１の乱数を受信する受信手段と、第２の乱数を発生する発生手段と、前記第２の乱数を複数のデータに分割する分割手段と、前記第２の乱数、および前記第１の乱数から成るデータに、前記分割された複数の前記データのうち、第１のデータを、冗長データとして付加して処理対象データを生成する処理対象データ生成手段と、前記処理対象データを、複数のデータに分割してＣＢＣモードで暗号化するＣＢＣ暗号化手段と、前記暗号化されたデータを、前記通信相手に送信する送信手段とを備える通信装置である。
【００２０】
前記データは、前記通信相手によりＣＢＣモードで復号され、前記ＣＢＣ暗号化手段は、前記通信相手との通信に用いる共通鍵を用いて、前記複数のデータを暗号化するようにすることができる。
【００２１】
前記第２の乱数を、前記通信相手とのトランザクション処理に関する通信に用いるセッション鍵として利用するようにすることができる。
【００２２】
非接触ＩＣカード機能を有する機器として構成されるようにすることができる。
【００２３】
本発明の第２の側面は、受信手段が、通信相手から送信された第１の乱数を受信し、発生手段が、第２の乱数を発生し、分割手段が、前記第２の乱数を複数のデータに分割し、処理対象データ生成手段が、前記第２の乱数、および前記第１の乱数から成るデータに、前記分割された複数の前記データのうち、第１のデータを、冗長データとして付加して処理対象データを生成し、ＣＢＣ暗号化手段が、前記処理対象データを、複数のデータに分割してＣＢＣモードで暗号化し、送信手段が、前記暗号化されたデータを、前記通信相手に送信するステップを含む通信方法である。
【００２４】
本発明の第２の側面においては、通信相手から送信された第１の乱数が受信され、第２の乱数が発生され、前記第２の乱数が複数のデータに分割され、前記第２の乱数、および前記第１の乱数から成るデータに、前記分割された複数の前記データのうち、第１のデータを、冗長データとして付加して処理対象データが生成され、前記処理対象データが、複数のデータに分割されてＣＢＣモードで暗号化され、前記暗号化されたデータが、前記通信相手に送信される。
【発明の効果】
【００２５】
本発明によれば、機器の処理効率を向上させるとともに、国際標準規格に適合する確実な相互認証方式を提供することができる。
【図面の簡単な説明】
【００２６】
【図１】本発明の一実施の形態に係る情報処理システムの構成例を示す図である。
【図２】リーダライタの構成例を示すブロック図である。
【図３】非接触ICカードの構成例を示すブロック図である。
【図４】図１の機器Ａと機器Ｂとの間で行われる相互認証の処理の流れを説明するアローチャートである。
【図５】図４を参照した相互認証処理における機器Ａと機器Ｂの内部の処理を説明する図である。
【図６】ＡＥＳ−ＣＢＣモードの暗号化の処理を説明する図である。
【図７】冗長データＲｅｄの生成を説明する図である。
【図８】ＡＥＳ−ＣＢＣモードの復号の処理を説明する図である。
【図９】乱数ＲａのうちのデータＣ１に対応する部分が改竄された場合の影響を説明する図である。
【図１０】データＭ１を冗長データとして用いる場合のＡＥＳ−ＣＢＣモードの暗号化の処理を説明する図である。
【図１１】データＭ１を冗長データとして用いる場合のＡＥＳ−ＣＢＣモードの復号の処理を説明する図である。
【図１２】Ａｕｔ２送信処理の例を説明するフローチャートである。
【図１３】機器認証処理の例を説明するフローチャートである。
【図１４】データＭ１およびデータＭ２を冗長データとして用いる場合のＡＥＳ−ＣＢＣモードの復号の処理を説明する図である。
【図１５】データＭ１およびデータＭ２を冗長データとして用いる場合のＡＥＳ−ＣＢＣモードの復号の処理を説明する図である。
【図１６】パーソナルコンピュータの構成例を示すブロック図である。
【発明を実施するための形態】
【００２７】
以下、図面を参照して、本発明の実施の形態について説明する。
【００２８】
図１は、本発明の一実施の形態に係る情報処理システムの構成例を示すブロック図である。同図に示されるように、情報処理システム１においては、機器Ａと機器Ｂとが通信を行い、機器Ａと機器Ｂとがお互いに認証し合う相互認証を行ったあと、トランザクション処理が行われる。
【００２９】
機器Ａは、例えば、非接触ＩＣカード用のリーダライタなどの機器とされる。機器Ｂは、例えば、非接触ＩＣカードなどの機器とされる。機器Ａと機器Ｂは、例えば、それぞれが有するアンテナなどを介して無線による通信を行う。
【００３０】
図２は、機器Ａ（リーダライタ）の内部構成例を示すブロック図である。同図に示されるリーダライタ１１は、例えば、非接触ＩＣカードに近接されることにより、非接触ＩＣカードに記憶されたデータを読み出したり、更新したりする処理を実行するようになされている。リーダライタ１１は、例えば、非接触ＩＣカードを利用する改札機やＰＯＳレジスタなどに組み込まれる構成としてもよいし、改札機やＰＯＳレジスタなどに接続される構成としてもよい。
【００３１】
制御部２０１は、ＣＰＵ２１１、ＲＯＭ２１２、ＲＡＭ２１３、ＳＣＣ（Serial Communication Controller）２１４、ＳＰＵ（Signal Processing Unit）２１６、並びに、これらのＣＰＵ２１１乃至ＳＰＵ２１６を相互に接続するバス２１５から構成されている。
【００３２】
ＣＰＵ２１１は、ＲＯＭ２１２に格納されている制御プログラムをＲＡＭ２１３に展開し、例えば、非接触ＩＣカードから送信されてきた応答データや、外部のプロセッサなどから供給されてきた制御信号に基づいて、各種の処理を実行する。例えば、ＣＰＵ２１１は、非接触ＩＣカードに送信するコマンドを生成し、それを、バス２１５を介してＳＰＵ２１６に出力したり、非接触ＩＣカードから送信されてきたデータの認証処理などを行ったりする。
【００３３】
ＳＣＣ２１４は、バス２００を介して接続される外部のプロセッサなどから供給されてきたデータを、バス２１５を介してＣＰＵ２１１に供給する。また、ＳＣＣ２１４は、ＣＰＵ２１１から、バス２１５を介して供給されてきたデータを、バス２００を介して接続される外部のプロセッサなどに出力する。
【００３４】
ＳＰＵ２１６は、非接触ＩＣカードからの応答データが復調部２０４から供給されてきたとき、そのデータに対して、例えば、ＢＰＳＫ復調（マンチェスターコードのデコード）などを施し、取得したデータをＣＰＵ２１１に供給する。また、ＳＰＵ２１６は、非接触ＩＣカードに送信するコマンドがバス２１５を介して供給されてきたとき、そのコマンドにＢＰＳＫ（Binary Phase Shift Keying）変調（マンチェスターコードへのコーディング）を施し、取得したデータを変調部２０２に出力する。
【００３５】
変調部２０２は、発振回路（ＯＳＣ）２０３から供給される所定の周波数の搬送波を、ＳＰＵ２１６より供給されるデータに基づいて、ＡＳＫ（Amplitude Shift Keying）変調し、生成された変調波を、電磁波としてアンテナ２０５から出力する。一方、復調部２０４は、アンテナ２０５を介して取得した変調波（ＡＳＫ変調波）を復調し、復調されたデータをＳＰＵ２１６に出力する。
【００３６】
アンテナ２０５は、所定の電磁波を輻射し、それに対する負荷の変化に基づいて、非接触ＩＣカードが近接されたか否かを検出する。そして、例えば、非接触ＩＣカードが近接されたとき、アンテナ２０５は、非接触ＩＣカードと各種のデータを送受信する。
【００３７】
図３は、機器Ｂ（非接触ＩＣカード）の内部構成例を示すブロック図である。同図に示される非接触ＩＣカード２１は、例えば、カード状の構成としてもよいし、携帯電話機などに組み込まれる構成としてもよい。
【００３８】
非接触ＩＣカードは、例えば、図に示すアンテナ（ループアンテナ）２３０およびコンデンサ２３１と、それ以外の構成が１チップに格納されたＩＣから構成され、電磁誘導を利用してリーダライタなどと各種のデータを半二重通信するものであって、必ずしもカード状のものとして構成されるわけではない。
【００３９】
ＣＰＵ２２１は、ＲＯＭ２２２に格納されている制御プログラムをＲＡＭ２２３に展開し、非接触ＩＣカードの全体の動作を制御する。例えば、ＣＰＵ２２１は、リーダライタから輻射されている電磁波がアンテナ２３０において受信されたとき、それに応じて、非接触ＩＣカードに設定されているカード識別番号等を含むＩＣカード情報をリーダライタに通知したり、リーダライタからの要求に応じて、トランザクション処理に必要となる情報をリーダライタに供給したりする。
【００４０】
アンテナ２３０とコンデンサ２３１により構成されるＬＣ回路は、近傍に配置されたリーダライタから輻射される所定の周波数の電磁波と共振する。インタフェース部２２９は、ＡＳＫ復調部２４３において、アンテナ２３０を介して受信した変調波（ＡＳＫ変調波）を包絡線検波して復調し、復調後のデータをＢＰＳＫ（Binary Phase Shift Keying）復調部２３２に出力する。
【００４１】
また、インタフェース部２２９は、アンテナ２３０において励起された交流磁界をＡＳＫ復調部２４３により整流し、それを電圧レギュレータ２４１において安定化し、各部に直流電源として供給する。リーダライタから輻射される電磁波の電力は、非接触ＩＣカードに必要な電力を賄う磁界を発生させるように調整されている。
【００４２】
また、インタフェース部２２９の発振回路２４４はＰＬＬ（Phase Locked Loop）回路を内蔵し、受信信号のクロック周波数と同一の周波数のクロック信号を発生する。
【００４３】
さらに、インタフェース部２２９は、所定の情報をリーダライタに送信する場合、ＢＰＳＫ変調部２２８から供給されるデータに対応して、例えば、所定のスイッチング素子（図示せず）をオン／オフさせるようになされている。そして、インタフェース部２２９は、スイッチング素子がオン状態であるときだけ、所定の負荷をアンテナ２３０に並列に接続させることにより、アンテナ２３０の負荷を変動させる。
【００４４】
ＡＳＫ変調部２４２は、アンテナ２３０の負荷の変動により、ＢＰＳＫ変調部２２８より供給されたＢＰＳＫ変調波をＡＳＫ変調し、その変調成分を、アンテナ２３０を介してリーダライタに送信する。
【００４５】
ＢＰＳＫ復調部２３２は、ＡＳＫ復調部２４３で復調されたデータがＢＰＳＫ変調されている場合、図示せぬＰＬＬ回路から供給されるクロック信号に基づいて、そのデータの復調（マンチェスターコードのデコード）を行う。ＢＰＳＫ復調部２３２は、復調したデータをデータ受信部２３３に出力する。
【００４６】
データ受信部２３３は、供給されてきたデータをＣＰＵ２２１に適宜出力する。ＣＰＵ２２１はこのデータをＲＡＭ２２３またはＥＥＰＲＯＭ２２４に記憶させる。
【００４７】
ＥＥＰＲＯＭ２２４に記憶されたデータは、ＣＰＵ２２１により読み出され、データ送信部２２７に供給される。ＢＰＳＫ変調部２２８は、データ送信部２２７から供給されてきたデータにＢＰＳＫ変調（マンチェスターコードへのコーディング）を行い、それをＡＳＫ変調部２４２に出力する。
【００４８】
ＥＥＰＲＯＭ２２４には、例えば、相互認証において必要となる情報、トランザクション処理において必要となる情報などが適宜記憶される。
【００４９】
ここでは、機器Ａを非接触ＩＣカード用のリーダライタ、機器Ｂを非接触ＩＣカードにより構成する例について説明したが、機器Ａを接触型ＩＣカード用のリーダライタ、機器Ｂを接触型ＩＣカードにより構成するようにすることも勿論可能である。さらに、機器ＡがＰＯＳレジスタ、機器ＢがＩＣカード用のリーダライタとして構成されるようにしてもよい。あるいはまた、機器Ａと機器Ｂとが、それぞれパーソナルコンピュータ、ＰＤＡ（Personal Digital Assistants）、携帯電話機などとして構成される場合であっても、本発明を適用することが可能である。
【００５０】
図４は、機器Ａと機器Ｂとの間で行われる相互認証の処理の流れを説明するアローチャートである。
【００５１】
ステップＳ１１において、機器Ａは、機器Ｂを認証するための認証メッセージのデータＡｕｔ１を送信し、ステップＳ２１において、機器Ｂによりこれが受信される。
【００５２】
ステップＳ２２において、機器Ｂは、機器Ａから送信された認証メッセージに対する応答、および機器Ｂを認証するための認証メッセージを含むデータＡｕｔ２を送信し、ステップＳ１２で機器Ａによりこれが受信される。
【００５３】
ステップＳ１３において、機器Ａは、ステップＳ１２で受信したデータＡｕｔ２に基づいて、機器Ｂを認証する。認証に失敗した場合、処理はここで終了する。認証が成功した場合、処理は、ステップＳ１４に進む。
【００５４】
ステップＳ１４において、機器Ａは、機器Ｂから送信された認証メッセージに対する応答のデータＡｕｔ３を機器Ｂに送信し、ステップＳ２３において、機器Ａによりこれが受信される。
【００５５】
ステップＳ２４において、機器Ｂは、ステップＳ２３で受信したデータＡｕｔ３に基づいて機器Ａを認証し、ステップＳ２５において認証結果を機器Ａに送信する。そして、ステップＳ１５において、機器Ａによりこれが受信されることになる。
【００５６】
ステップＳ１３の機器Ｂの認証の処理、またはステップＳ２３の機器Ａの認証の処理は、それぞれ、ＡＥＳ（Advanced Encryption Standard）暗号アルゴリズムを用いた暗号化、復号の処理により行われるようになされている。
【００５７】
本発明では、機器Ａおよび機器ＢがそれぞれＡＥＳ−ＣＢＣ（Cipher Block Chaining）モードでの暗号化処理および復号処理を実行できるようになされているものとする。
【００５８】
また、非接触ＩＣカードとリーダライタ間で行われる処理は、例えば、鉄道の改札の処理、コンビニエンスストアなどの小額の買い物の決済の処理などに適用されるため、図４を参照して上述した処理は、極めて高速に実行されることを要する。
【００５９】
さらに、図４の処理により相互認証が成功した場合、機器Ａと機器Ｂとの間でのトランザクション処理などが実行されることになる。トランザクション処理は、例えば、ＩＣカード内のデータを検証して更新することなどにより改札の処理を実行したり、買い物の代金を、電子マネーにより決済する処理を実行するなどのものとされる。
【００６０】
なお、トランザクション処理における機器Ａと機器Ｂとの間の通信は、例えば、トランザクション処理が実行される都度、機器Ａと機器Ｂとの間で交換されるセッション鍵を用いて暗号化される。このようにすることで、情報処理システム１は、高度のセキュリティ性能を有するようになされている。
【００６１】
図５は、図４を参照した相互認証処理における機器Ａと機器Ｂの内部の処理を説明する図である。この例では、２５６ビット鍵のＡＥＳ−ＣＢＣモードの暗号化処理を用いて相互認証処理を行う例について説明する。
【００６２】
なお、ＡＥＳ−ＣＢＣモードの暗号化処理において、鍵長は必ずしも２５６ビットに限られるものではない。例えば、鍵長が短いほど、高速な処理が可能となるが、セキュリティ上の耐性が劣ることになる。また、鍵長が長いほど、セキュリティ上の耐性に優れることになるが、高速に処理を行うことが困難となる。非接触ＩＣカードとリーダライタ間で行われる処理の高速性とセキュリティ上の耐性を考慮すると、ＡＥＳ−ＣＢＣモードの暗号化処理を２５６ビット長の鍵を用いて行うことが望ましいと考えられる。
【００６３】
同図に示されるように、機器Ａは、１６バイトの乱数Ｒｂを生成し、これをデータＡｕｔ１として機器Ｂに送信する。なお、同図において、カッコ内に記された数値は、データのサイズ（バイト数）を表している。
【００６４】
ここで送信されるデータＡｕｔ１は、例えば、ＳＳＨ（Secure Shell）などで用いられているチャレンジ／レスポンス方式の認証におけるチャレンジデータに対応するものとなる。すなわち、機器Ａは、この後、機器Ｂが、チャレンジデータに対応して送信してくるレスポンスデータを確認することで、機器Ｂが正当な機器であるか否かを認証するのである。
【００６５】
機器Ｂは、機器Ａから送信された乱数Ｒｂおよび機器Ｂ自身が生成した３２バイトの乱数Ｒａを組み合わせて、機器Ａから送信されたチャレンジデータに対するレスポンスデータを生成する。なお、このレスポンスデータは、上述したように、機器Ａが機器Ｂを認証するために用いられるとともに、機器Ｂが機器Ａを正当な機器であるか否かを認証するためのチャレンジデータとしても用いられる。
【００６６】
なお、後述する国際標準に適合させるべく、データＡｕｔ２には、乱数Ｒａおよび乱数Ｒｂに加えて冗長データＲｅｄが付加されるようになされている。
【００６７】
２５６ビット鍵のＡＥＳ−ＣＢＣモードの暗号化処理を用いて相互認証処理を行う場合、乱数Ｒａは３２バイトのデータとされ、冗長データＲｅｄは、１６バイトのデータとされる。
【００６８】
なお、高速な処理を要するＩＣカードとリーダライタ間の相互認証処理においては、相互認証を行うと同時に、通信路の暗号化に用いられるセッション鍵の交換を行なうことが一般的に行なわれている。例えば、相互認証処理におけるチャレンジデータとして、セッション鍵を送信するようにすれば、通信相手を認証することができるとともに、その後に用いるセッション鍵を、暗号化されて秘匿された状態で通信相手に渡すことができるからである。
【００６９】
例えば、相互認証が成功し、トランザクション処理などが開始される際には、機器Ｂが生成する乱数Ｒａが通信路のセッション鍵として用いられるようになされている。すなわち、いまの場合、機器Ｂが生成する乱数Ｒａは、機器Ｂが機器Ａを認証するためのチャレンジデータであると同時に、セッション鍵としても利用されるものである。
【００７０】
機器Ｂは、乱数Ｒａ、および乱数Ｒｂからなるデータを、共通鍵Ｋａｂを用いて暗号化する。共通鍵Ｋａｂは、予め機器Ａと機器Ｂのそれぞれが記憶している暗号鍵であって、２５６ビット（３２バイト）のデータとされる。
【００７１】
すなわち、機器Ｂは、暗号化の対象となるデータとして、上位３２ビットを乱数Ｒａとし、下位１６ビットを乱数Ｒｂとした４８バイトのデータを生成する。そして、この４８バイトのデータを後述するように、ＡＥＳ−ＣＢＣモードで暗号化して得られたデータを、上位４８バイトとし、下位１６バイトを冗長データＲｅｄとして６４バイトのデータＣｉｐｈ１を生成するのである。
【００７２】
図６は、ＡＥＳ−ＣＢＣモードの暗号化の処理を説明する図である。ＡＥＳ−ＣＢＣモードでは、１６バイト単位にデータが暗号化されるようになされている。このため、暗号化の対象となるデータ（いまの場合、乱数Ｒａ、および乱数Ｒｂからなるデータ）が、それぞれ１６バイトのデータＭ１乃至データＭ３に分割される。すなわち、データＭ１は、乱数Ｒａのうちの１６バイト分のデータとされ、データＭ２は、乱数ＲａのうちのデータＭ１を除いた１６バイト分のデータとされる。そして、データＭ３は、１６バイトの乱数Ｒｂとされる。
【００７３】
また、図中に「ＥＮＣ」で表された機能ブロックであって、暗号化処理部３１２、暗号化処理部３２２、および暗号化処理部３３２は、それぞれ共通鍵Ｋａｂを用いてデータを暗号化するようになされている。
【００７４】
ＡＥＳ−ＣＢＣモードの暗号化の処理では、まず、データＭ１と初期ベクトルＩＶとの排他的論理和が演算器３１１により演算される。そして、演算器３１１の出力が、暗号化処理部３１２に供給され、暗号化された１６バイトのデータＣ１が出力される。
【００７５】
なお、初期ベクトルＩＶは、０ベクトルとされるようにしてもよい。
【００７６】
データＣ１は、演算器３２１にも供給され、データＭ２とデータＣ１の排他的論理和が演算される。そして、演算器３２１の出力が、暗号化処理部３２２に供給され、暗号化された１６バイトのデータＣ２が出力される。
【００７７】
データＣ２は、演算器３３１にも供給され、データＭ３とデータＣ２の排他的論理和が演算される。そして、演算器３３１の出力が、暗号化処理部３３２に供給され、暗号化された１６バイトのデータＣ３が出力される。
【００７８】
このように、ＡＥＳ−ＣＢＣモードの暗号化の処理では、最初のブロックの暗号化処理により得られたデータが、次のブロックの暗号化処理により得られるデータに影響を与えるようになされている。すなわち、ＡＥＳ−ＣＢＣモードの暗号化の処理では、暗号化処理の結果が次々と伝搬していくのである。
【００７９】
つまり、仮にデータＭ１が異なるデータとされた場合、異なるデータとしてのデータＣ１が出力されるだけでなく、データＣ２も異なるデータとなる。
【００８０】
なお、冗長データＲｅｄは、暗号化されずに付加される。
【００８１】
このようにして生成されたデータＣ１乃至データＣ３に、冗長データＲｅｄが付加されることで、６４バイトのデータＣｉｐｈ１が生成される。データＣｉｐｈ１は、データＡｕｔ２として機器Ａに送信される。
【００８２】
図７は、冗長データＲｅｄの生成を説明する図である。
【００８３】
図４を参照して上述した相互認証の処理は、例えば、機器Ａと機器Ｂのベンダーが異なる場合でも、適切に行われる必要がある。国際標準の相互認証方式（ＩＳＯ/ＩＥＣ９７９８−２）では、ＩＣカードとリーダライタ間で送受信される認証メッセージに冗長データを付加し、冗長データの正当性を検証するなどして、認証メッセージの完全性を確保するなどの規定がなされている。ＩＳＯ/ＩＥＣ９７９８−２では、冗長データの例として、ＭＡＣ（Message Authentication Code）を用いる方式が記載されている。図７では、冗長データＲｅｄがＣＢＣ−ＭＡＣ方式により生成される場合の例について説明する。
【００８４】
ここでは、ＡＥＳ−ＣＢＣモードの暗号アルゴリズムを用いたＣＢＣ−ＭＡＣ方式の例について説明する。なお、ＣＢＣ−ＭＡＣ方式において暗号化処理を施す場合、図６を参照して上述した場合とは、異なる鍵を用いる必要がある。例えば、ＣＢＣ−ＭＡＣで用いる鍵Ｋｍを生成し、予め機器Ａと機器Ｂのそれぞれに記憶させておく必要がある。
【００８５】
図７においても、図６の場合と同様に、１６バイト単位にデータが暗号化されるようになされている。このため、暗号化の対象となるデータ（いまの場合、乱数Ｒａ、および乱数Ｒｂからなるデータ）が、それぞれ１６バイトのデータＭ１乃至データＭ３に分割される。すなわち、データＭ１は、乱数Ｒａのうちの１６バイト分のデータとされ、データＭ２は、乱数ＲａのうちのデータＭ１を除いた１６バイト分のデータとされる。そして、データＭ３は、１６バイトの乱数Ｒｂとされる。
【００８６】
また、図中に「ＥＮＣ」で表された機能ブロックであって、暗号化処理部３７２、暗号化処理部３８２、および暗号化処理部３９２は、それぞれ鍵Ｋｍを用いてデータを暗号化するようになされている。
【００８７】
まず、データＭ１が、暗号化処理部３７２に供給され、暗号化された１６バイトのデータＣ´１が出力される。
【００８８】
データＣ´１は、演算器３８１にも供給され、データＭ２とデータＣ´１の排他的論理和が演算される。そして、演算器３８１の出力が、暗号化処理部３８２に供給され、暗号化された１６バイトのデータＣ´２が出力される。
【００８９】
データＣ´２は、演算器３９１にも供給され、データＭ３とデータＣ´２の排他的論理和が演算される。そして、演算器３９１の出力が、暗号化処理部３９２に供給され、暗号化された１６バイトのデータｔａｇが出力される。
【００９０】
このデータｔａｇが冗長データＲｅｄとして付加されることになる。
【００９１】
図５に戻って、機器Ａは、機器ＢからデータＡｕｔ２として送信されたデータＣｉｐｈ１を受信して、復号する。
【００９２】
図８は、ＡＥＳ−ＣＢＣモードの復号の処理を説明する図である。ＡＥＳ−ＣＢＣモードでは、１６バイト単位にデータが復号されるようになされている。このため、復号の対象となるデータ（いまの場合、データＣｉｐｈ１）が、それぞれ１６バイトのデータＣ１乃至データＣ３に分割される。
【００９３】
また、図中に「ＤＥＣ」で表された機能ブロックであって、復号処理部４１２、復号処理部４２２、および復号処理部４３２は、それぞれ共通鍵Ｋａｂを用いてデータを復号するようになされている。
【００９４】
まず、データＣ１が復号処理部４１２に供給され、復号結果のデータと初期ベクトルＩＶとの排他的論理和が演算器４１１により演算される。演算器４１１の出力が、復号により得られたデータＭ１となる。
【００９５】
データＣ２は、復号処理部４２２に供給され、復号結果のデータとデータＣ１との排他的論理和が演算器４２１により演算される。演算器４２１の出力が、復号により得られたデータＭ２となる。
【００９６】
データＣ３は、復号処理部４３２に供給され、復号結果のデータとデータＣ２との排他的論理和が演算器４３１により演算される。演算器４３１の出力が、復号により得られたデータＭ３となる。
【００９７】
このように、ＡＥＳ−ＣＢＣモードの復号の処理では、最初のブロックの復号処理の対象となるデータが、次のブロックの復号処理により得られるデータに影響を与えるようになされている。すなわち、ＡＥＳ−ＣＢＣモードの復号の処理では、復号処理の対象が、復号結果に次々と伝搬していくのである。
【００９８】
つまり、仮にデータＣ１が異なるデータとされた場合、異なるデータとしてのデータＭ１が出力されるだけでなく、データＭ２も異なるデータとなる。
【００９９】
上述したように、データＭ１は、乱数Ｒａのうちの１６バイト分のデータとされ、データＭ２は、乱数ＲａのうちのデータＭ１を除いた１６バイト分のデータとされる。そして、データＭ３は、１６バイトの乱数Ｒｂとされる。よって、機器Ａは、データＣｉｐｈ１を復号して得られたデータＭ３が、自身が生成した乱数Ｒｂと等しいか否かを判定することにより、機器Ｂが正当な機器であるか否かを認証することができる。
【０１００】
例えば、機器Ａと機器Ｂとの通信路上に、機器Ｂになりすました機器Ｃがあったとする。機器Ｃは、機器Ｂから送信されたデータＡｕｔ２の一部を改竄し、通信路のセッション鍵を勝手に変更することを図ったものとする。
【０１０１】
ここで、ＡＥＳ−ＣＢＣモードの復号の処理では、１６バイトのデータに分割された各ブロックのデータ（データＣ１乃至データＣ３）が、次のブロックの復号結果に伝搬するため、改竄の有無の検知に優れているといえる。
【０１０２】
しかし、図９に示されるように、乱数ＲａのうちのデータＣ１に対応する部分が改竄された場合、改竄を検知することができない。
【０１０３】
図９は、図８と同様に、ＡＥＳ−ＣＢＣモードの復号の処理を説明する図である。図９の場合、データＣ１に「×」印が付されており、データＣ１が改竄されたことを表している。すなわち、図９において、データＣ１は、本来のデータＣ１、すなわち、機器Ｂが生成したデータＣｉｐｈ１（データＡｕｔ２）の最上位１６バイトのデータではない。
【０１０４】
データＡｕｔ２のうち、データＣ３に対応する部分が改竄された場合、当然にデータＭ３（すなわち乱数Ｒｂ）を復号できないので、改竄を検知できる。データＡｕｔ２のうち、データＣ２に対応する部分が改竄された場合、データＣ２の改竄が、データＣ３の復号結果に伝搬するので、やはりデータＭ３を復号することができない。
【０１０５】
一方、データＡｕｔ２のうち、データＣ１に対応する部分が改竄された場合、データＣ１の改竄が、データＣ２の復号結果に伝搬するので、データＭ２を復号することができない。しかし、データＣ１の改竄は、データＣ３の復号結果には伝搬しないので、データＭ３を復号することができる。この場合、機器Ａは、乱数Ｒｂのみを既知のデータとして通信相手が正当な機器であるか否かを認証するので、誤って、機器Ｃを正当な機器であると認証してしまうおそれがある。
【０１０６】
このため、上述した冗長データＲｅｄが用いられる。すなわち、復号により得られたデータＭ１乃至データＭ３に基づいて、機器Ａにおいて、図７を参照して上述したように、ＣＢＣ−ＭＡＣ方式により冗長データＲｅｄを生成するのである。このようにすれば、例えば、データＡｕｔ２のうち、データＣ１に対応する部分が改竄された場合であっても、機器Ａでは、機器Ｂにより生成された冗長データＲｅｄとは異なるデータが得られることとなり、改竄を検知することができる。
【０１０７】
図５に戻って、機器ＡによるデータＣｉｐｈ１の復号が完了したところから、説明を続ける。なお、いまの場合、データの改竄などは行われず、機器Ａは、機器Ｂを正当な機器と認証したこととする。
【０１０８】
機器Ａは、データＣｉｐｈ１の復号の結果得られた３２バイトの乱数Ｒａと、１６バイトの乱数Ｒｂとを並べ替えて、４８（＝１６＋３２）バイトのデータを生成する。そして、そのデータを暗号化する。ここでの暗号化処理は、やはりＡＥＳ−ＣＢＣモードの暗号化処理であり、図６を参照して上述した場合と同様に行なわれるものであるため、詳細な説明は省略する。
【０１０９】
機器Ａは、上述した４８バイトのデータを暗号化して得られたデータＣｉｐｈ２を、データＡｕｔ３として機器Ｂに送信する。ここで送信されるデータＡｕｔ３は、機器Ｂが機器Ａを正当な機器であるか否かを認証するためのレスポンスデータとして用いられる。
【０１１０】
機器Ｂは、機器ＡからデータＡｕｔ３として送信されたデータＣｉｐｈ２を受信して、復号する。ここでの復号処理は、やはりＡＥＳ−ＣＢＣモードの復号処理であり、図８を参照して上述した場合と同様に行なわれるものであるため、詳細な説明は省略する。
【０１１１】
機器Ｂは、データＣｉｐｈ２の復号の結果として、１６バイトの乱数Ｒｂと、３２バイトの乱数Ｒａを得て、自信が生成した乱数Ｒａと等しいか否かを判定することにより、機器Ａが正当な機器であるか否かを認証する。
【０１１２】
このように、機器Ａと機器Ｂとの間の通信は、なりすましなどの攻撃にも耐えうるセキュリティ性能を発揮できるようになされている。
【０１１３】
しかしながら、上述したように、非接触ＩＣカードとリーダライタ間で行われる相互認証処理は、極めて高速に実行されることを要する。上述したＣＢＣ−ＭＡＣ方式により生成される冗長データＲｅｄは、情報処理システム１のセキュリティ性能を高めるために有用であるものの、機器Ａと機器Ｂのそれぞれに演算負荷を課すものとなる。
【０１１４】
このため、ＣＢＣ−ＭＡＣ方式により生成される冗長データＲｅｄに代えて、別の冗長データを簡単に生成することができれば、非接触ＩＣカードとリーダライタ間で行われる相互認証処理において、極めて有利な効果を発揮するものとなる。
【０１１５】
そこで、本発明では、ＣＢＣ−ＭＡＣ方式により生成される冗長データＲｅｄに代えて、別の冗長データを簡単に生成することができるようにする。本発明では、冗長データＲｅｄに代えて、乱数Ｒａの一部である１６バイトのデータ、すなわち、データＭ１を冗長データとして用いることとする。なお、データＭ１は、３２バイトの乱数Ｒａのうちの上位１６バイト分のデータとされる。
【０１１６】
本発明においては、機器Ｂが、乱数Ｒａ、乱数Ｒｂおよび冗長データとして付加されたデータＭ１からなるデータを、共通鍵Ｋａｂを用いて暗号化することで６４バイトのデータＣｉｐｈ１が生成される。すなわち、最上位３２バイトが乱数Ｒａ、その次の１６バイトが乱数Ｒｂ、最下位１６バイトがデータＭ１として構成される６４バイトのデータがＡＥＳ−ＣＢＣモードで暗号化されてデータＣｉｐｈ１が生成される。
【０１１７】
いまの場合、ＡＥＳ−ＣＢＣモードの暗号化の処理は、図６に替えて、図１０のように行なわれることになる。図１０は、データＭ１を冗長データとして用いる場合のＡＥＳ−ＣＢＣモードの暗号化の処理を説明する図である。上述したように、ＡＥＳ−ＣＢＣモードでは、１６バイト単位にデータが暗号化されるようになされている。このため、暗号化の対象となるデータが、それぞれ１６バイトのデータＭ１乃至データＭ３、および冗長データとして付加されたデータＭ１に分割される。すなわち、データＭ１は、乱数Ｒａのうちの上位１６バイト分のデータとされ、データＭ２は、乱数ＲａのうちのデータＭ１を除いた１６バイト分のデータとされる。そして、データＭ３は、１６バイトの乱数Ｒｂとされる。
【０１１８】
また、図中に「ＥＮＣ」で表された機能ブロックであって、暗号化処理部３１２、暗号化処理部３２２、暗号化処理部３３２、および暗号化処理部３４２は、それぞれ共通鍵Ｋａｂを用いてデータを暗号化するようになされている。
【０１１９】
ＡＥＳ−ＣＢＣモードの暗号化の処理では、まず、データＭ１と初期ベクトルＩＶとの排他的論理和が演算器３１１により演算される。そして、演算器３１１の出力が、暗号化処理部３１２に供給され、暗号化された１６バイトのデータＣ１が出力される。
【０１２０】
データＣ１は、演算器３２１にも供給され、データＭ２とデータＣ１の排他的論理和が演算される。そして、演算器３２１の出力が、暗号化処理部３２２に供給され、暗号化された１６バイトのデータＣ２が出力される。
【０１２１】
データＣ２は、演算器３３１にも供給され、データＭ３とデータＣ２の排他的論理和が演算される。そして、演算器３３１の出力が、暗号化処理部３３２に供給され、暗号化された１６バイトのデータＣ３が出力される。
【０１２２】
データＣ３は、演算器３４１にも供給され、データＭ１とデータＣ３の排他的論理和が演算される。そして、演算器３４１の出力が、暗号化処理部３４２に供給され、暗号化された１６バイトのデータＣ４が出力される。
【０１２３】
このようにして生成されたデータＣ１乃至データＣ４によって、６４バイトのデータＣｉｐｈ１が生成される。データＣｉｐｈ１は、データＡｕｔ２として機器Ａに送信される。
【０１２４】
機器Ａは、機器ＢからデータＡｕｔ２として送信されたデータＣｉｐｈ１を受信して、復号する。
【０１２５】
いまの場合、機器ＡにおけるＡＥＳ−ＣＢＣモードの復号の処理は、図８に替えて、図１１のように行なわれることになる。図１１は、図８と同様に、ＡＥＳ−ＣＢＣモードの復号の処理を説明するものであって、データＭ１を冗長データとして用いる場合のＡＥＳ−ＣＢＣモードの復号の処理を説明する図である。上述したように、ＡＥＳ−ＣＢＣモードでは、１６バイト単位にデータが復号されるようになされている。このため、復号の対象となるデータ（いまの場合、データＣｉｐｈ１）が、それぞれ１６バイトのデータＣ１乃至Ｃ４に分割される。
【０１２６】
また、図中に「ＤＥＣ」で表された機能ブロックであって、復号処理部４１２、復号処理部４２２、復号処理部４３２、および復号処理部４４２は、それぞれ共通鍵Ｋａｂを用いてデータを復号するようになされている。
【０１２７】
図１１の場合、データＣ１に「×」印が付されており、データＣ１が改竄されたことを表している。つまり、図１１において、データＣ１は、本来のデータＣ１、すなわち、機器Ｂが生成したデータＣｉｐｈ１（データＡｕｔ２）の最上位１６バイトのデータではない。
【０１２８】
まず、データＣ１が復号処理部４１２に供給され、復号結果のデータと初期ベクトルＩＶとの排他的論理和が演算器４１１により演算される。演算器４１１の出力が、復号により得られたデータＭ１となる。
【０１２９】
データＣ２は、復号処理部４２２に供給され、復号結果のデータとデータＣ１との排他的論理和が演算器４２１により演算される。演算器４２１の出力が、復号により得られたデータＭ２となる。
【０１３０】
データＣ３は、復号処理部４３２に供給され、復号結果のデータとデータＣ２との排他的論理和が演算器４３１により演算される。演算器４３１の出力が、復号により得られたデータＭ３となる。
【０１３１】
データＣ４は、復号処理部４４２に供給され、復号結果のデータとデータＣ３との排他的論理和が演算器４４１により演算される。演算器４４１の出力が、復号により得られたデータＭ１となる。
【０１３２】
上述したように、データＭ１は、乱数Ｒａのうちの１６バイト分のデータとされ、データＭ２は、乱数ＲａのうちのデータＭ１を除いた１６バイト分のデータとされる。そして、データＭ３は、１６バイトの乱数Ｒｂとされる。よって、機器Ａは、データＣｉｐｈ１を復号して得られたデータＭ３が、自身が生成した乱数Ｒｂと等しいか否かを判定することにより、機器Ｂが正当な機器であるか否かを認証することができる。
【０１３３】
例えば、機器Ａと機器Ｂとの通信路上に、機器Ｂになりすました機器Ｃがあったとする。機器Ｃは、機器Ｂから送信されたデータＡｕｔ２の一部を改竄し、通信路のセッション鍵を勝手に変更することを図ったものとする。
【０１３４】
図１１の例の場合、データＡｕｔ２のうちのどの部分が改竄されたとしても、改竄を検知することができる。特に、図９を参照して上述した場合と異なり、データＣ１の改竄も検知することができるようになされている。
【０１３５】
すなわち、データＡｕｔ２のうち、データＣ３に対応する部分が改竄された場合、当然にデータＭ３（すなわち乱数Ｒｂ）を復号できないので、改竄を検知できる。データＡｕｔ２のうち、データＣ２に対応する部分が改竄された場合、データＣ２の改竄が、データＣ３の復号結果に伝搬するので、やはりデータＭ３を復号することができない。
【０１３６】
よって、データＡｕｔ２のうち、データＣ３またはデータＣ４に対応する部分が改竄された場合、機器Ａは改竄を検知できる。
【０１３７】
また、データＡｕｔ２のうち、データＣ１に対応する部分が改竄された場合、データＣ１の改竄が、データＣ２の復号結果に伝搬するので、データＭ２を復号することができないが、データＣ３の復号結果には伝搬しないので、データＭ３を復号することができる。ここで、データＭ３は、乱数Ｒｂと等しいものとなる。
【０１３８】
本発明において、機器Ａは、データＣｉｐｈ１を復号して得られたデータＭ３が、自身が生成した乱数Ｒｂと等しいと判定された場合、データＣ１を復号して得られたデータＭ１と、データＣ４を復号して得られたデータＭ１とが等しいか否かをさらに判定する。そして、データＣ１を復号して得られたデータＭ１と、データＣ４を復号して得られたデータＭ１とが等しいと判定されたとき、機器Ｂを正当な機器であると認証するようになされている。
【０１３９】
データＡｕｔ２のうち、データＣ１に対応する部分が改竄された場合、データＣ１を復号して得られたデータＭ１と、データＣ４を復号して得られたデータＭ１とが異なるものとなる。換言すれば、データＣ１に対応する部分が改竄された場合、演算器４１１から出力されるデータは、データＭ１とはならないのである。
【０１４０】
一方、データＣ４は、復号処理部４４２に供給され、復号結果のデータとデータＣ３との排他的論理和が演算器４４１により演算される。データＣ３は改竄されていないので、データＣ４を復号して得られたデータＭ１は、本来のデータＭ１（乱数Ｒａのうちの１６バイト分のデータ）となる。
【０１４１】
また、データＡｕｔ２のうち、データＣ４に対応する部分が改竄された場合も、データＣ１を復号して得られたデータＭ１と、データＣ４を復号して得られたデータＭ１とが異なるものとなる。
【０１４２】
なお、データＡｕｔ２のうち、データＣ１に対応する部分とデータＣ４に対応する部分とが同時に改竄されることも考えられる。しかし、データＣ１を復号して得られたデータＭ１と、データＣ４を復号して得られたデータＭ１とが等しくなるように、データＣ１に対応する部分とデータＣ４に対応する部分とが同時に改竄される可能性は極めて低い。
【０１４３】
このように、図１１の図中最も左側のデータＭ１と最も右側のデータＭ１とを比較することにより、データの改竄を確実に検知できるようになるのである。すなわち、データＡｕｔ２のうちのどの部分が改竄されたとしても、改竄を検知することができる。
【０１４４】
次に、図１２のフローチャートを参照して、機器ＢによるＡｕｔ２送信処理の例について説明する。なお、図１２のフローチャートは、例えば、図４におけるステップＳ２２とステップＳ２２の処理を詳細に説明するものとなる。ここでは、機器Ａが図２のリーダライタに対応するものとし、機器Ｂが図３の非接触ＩＣカードに対応するものとして説明する。
【０１４５】
ステップＳ１０１において、機器ＢのＣＰＵ２２１（図３）は、機器Ａから送信されてきたデータＡｕｔ１を受信する。
【０１４６】
ステップＳ１０２において、ＣＰＵ２２１は、乱数Ｒａを発生（生成）する。なお、上述したように、乱数Ｒａは、トランザクション処理において、通信路を暗号化するためのセッション鍵としても用いられる。生成された乱数Ｒａは、例えば、ＲＡＭ２２３、ＥＥＰＲＯＭ２２４などに記憶される。
【０１４７】
ステップＳ１０３において、ＣＰＵ２２１は、乱数Ｒａを１６バイトのデータに分割する。すなわち、図１０のデータＭ１とデータＭ２に分割する。
【０１４８】
ステップＳ１０４において、ＣＰＵ２２１は、乱数Ｒａ、およびステップＳ１０１の処理でデータＡｕｔ１として得られた乱数Ｒｂに、データＭ１を冗長データとして付加する。これにより、図１０のデータＭ１乃至データＭ３、およびデータＭ１から成るデータが得られたことになる。
【０１４９】
ステップＳ１０５において、ＣＰＵ２２１は、ステップＳ１０４の処理の結果得られたデータを、ＡＥＳ−ＣＢＣモードで暗号化する。このとき、図１０を参照して上述したように、暗号化が行なわれ、暗号化されたデータとして、データＣ１乃至データＣ４が得られることになる。
【０１５０】
ステップＳ１０６において、ＣＰＵ２２１は、ステップＳ１０５の処理結果として得られた６４バイトのデータ（データＣｉｐｈ１）を得る。すなわち、データＣ1乃至データＣ４からなる６４バイトのデータを得るのである。
【０１５１】
ステップＳ１０７において、ＣＰＵ２２１は、ステップＳ１０６の処理により得られたデータを、データＡｕｔ２として機器Ａに送信する。
【０１５２】
このようにして、Ａｕｔ２送信処理が実行される。
【０１５３】
次に、図１３のフローチャートを参照して、機器Ａによる機器認証処理の例について説明する。なお、図１３のフローチャートは、例えば、図４におけるステップＳ１２とステップＳ１３の処理を詳細に説明するものとなる。ここでは、機器Ａが図２のリーダライタに対応するものとし、機器Ｂが図３の非接触ＩＣカードに対応するものとして説明する。
【０１５４】
ステップＳ１２１において、機器ＡのＣＰＵ２１１（図２）は、機器Ａから送信されてきたデータＡｕｔ１を受信する。
【０１５５】
ステップＳ１２２において、ＣＰＵ２１１は、ステップＳ１２１で受信したデータを、１６バイトのデータに分割する。これにより、例えば、図１１を参照して上述した、それぞれ１６バイトのデータＣ１乃至データＣ４が得られることになる。
【０１５６】
ステップＳ１２３において、ＣＰＵ２１１は、ステップＳ１２２の処理で分割したデータを、ＡＥＳ−ＣＢＣモードで復号する。このとき、例えば、図１１を参照して上述したように復号が行われる。そして、データＣ１に対応してデータＭ１が出力され、データＣ２に対応してデータＭ２が出力され、データＣ３に対応してデータＭ３が出力され、データＣ４に対応してデータＭ１が出力されることになる。
【０１５７】
ステップＳ１２４において、ＣＰＵ２１１は、データＭ３と乱数Ｒｂとを比較する。なお、乱数Ｒｂは、ＲＡＭ２１３に格納されているものとする。
【０１５８】
ステップＳ１２５において、ＣＰＵ２１１は、ステップＳ１２４の比較の結果、データＭ３と乱数Ｒｂとが一致したか否かを判定する。ステップＳ１２５において、データＭ３と乱数Ｒｂとが一致したと判定された場合、処理は、ステップＳ１２６に進む。
【０１５９】
ステップＳ１２６において、ＣＰＵ２１１は、ステップＳ１２３の処理結果として得られた最初のデータＭ１と最後のデータＭ１とを比較する。すなわち、図１１の図中最も左側のデータＭ１と最も右側のデータＭ１とが比較される。
【０１６０】
換言すれば、ステップＳ１２６では、ＡＥＳ−ＣＢＣモードで復号の結果得られた複数のデータのうちの最初のデータが、乱数Ｒｂと等しいと判定されたデータ（いまの場合、データＭ３）の次のデータと等しいか否かが判定されるのである。
【０１６１】
ステップＳ１２７において、ＣＰＵ２１１は、ステップＳ１２６の比較の結果、最初のデータＭ１と最後のデータＭ１とが一致したか否かを判定する。ステップＳ１２７において、最初のデータＭ１と最後のデータＭ１とが一致したと判定された場合、処理は、ステップＳ１２８に進む。
【０１６２】
ステップＳ１２８において、ＣＰＵ２１１は、認証フラグをＯＮに設定する。認証フラグは、通信相手の機器を認証したか否かを表す情報とされる。例えば、図４のステップＳ１４において、認証フラグがＯＮであるときにのみ、データＡｕｔ３が機器Ｂに送信され、認証フラグがＯＦＦであるときは、処理が中止されるようになされている。
【０１６３】
すなわち、いまの場合、機器Ｂの認証に成功したことになる。
【０１６４】
一方、ステップＳ１２５において、データＭ３と乱数Ｒｂとが一致しなかったと判定された場合、または、ステップＳ１２７において、最初のデータＭ１と最後のデータＭ１とが一致しなかったと判定された場合、処理は、ステップＳ１２９に進む。
【０１６５】
ステップＳ１２９において、ＣＰＵ２１１は、認証フラグをＯＦＦに設定する。
【０１６６】
すなわち、いまの場合、機器Ｂの認証に失敗したことになる。
【０１６７】
このようにして、機器認証処理が実行される。
【０１６８】
上述したように、非接触ＩＣカードとリーダライタ間で行われる相互認証処理は、極めて高速に実行されることを要する。ＣＢＣ−ＭＡＣ方式により生成される冗長データＲｅｄは、情報処理システム１のセキュリティ性能を高めるために有用であるものの、機器Ａと機器Ｂのそれぞれに多大な演算負荷を課すものとなる。
【０１６９】
例えば、図６に示される暗号化処理部３１２、暗号化処理部３２２、および暗号化処理部３３２は、実際には、ＣＰＵ２２１で実行されるソフトウェアの機能ブロックとして構成されるものである。暗号化処理部３１２、暗号化処理部３２２、および暗号化処理部３３２に暗号化の処理を実行させるためには、鍵をロードする必要がある。
【０１７０】
しかしながら、冗長データＲｅｄを生成するＣＢＣ−ＭＡＣ方式の暗号化において用いられる鍵Ｋｍと、データＭ１乃至データＭ３を暗号化してデータＣ１乃至データＣ３を得るための暗号化において用いられる共通鍵Ｋａｂは異なるものとしなければならない。
【０１７１】
従って、ＣＢＣ−ＭＡＣ方式により生成される冗長データＲｅｄを用いる場合、ＣＰＵ２２１で実行されるソフトウェアの処理において、共通鍵Ｋａｂと鍵Ｋｍとをそれぞれ１回ずつロードしなければならないこととなる。また、鍵のロードに伴って、初期化設定なども行なわれることになるので、処理の高速化を考慮すると、鍵のロードに費やされる時間は無視できないものとなる。
【０１７２】
これに対して、本発明では、冗長データＲｅｄに代えて、乱数Ｒａの一部である１６バイトのデータを用いることにしたので、冗長データＲｅｄを生成するために、鍵Ｋｍをロードする必要がない。すなわち、本発明によれば、鍵のロード回数を削減して、処理負荷を軽減し、処理時間を短縮することができるのである。
【０１７３】
また、ＣＢＣ−ＭＡＣ方式により生成される冗長データＲｅｄを用いる場合、冗長データＲｅｄを生成するために、１６バイトのデータを３回暗号化する必要があり、さらに、データＣ１乃至データＣ３を得るために、１６バイトのデータを３回暗号化する必要がある。すなわち、ＣＢＣ−ＭＡＣ方式により生成される冗長データＲｅｄを用いる場合、データＡｕｔ２の送信を行なうために、１６バイトのデータの暗号化の処理を、６回実行する必要がある。
【０１７４】
これに対して、本発明では、冗長データを、ＣＢＣ−ＭＡＣ方式により生成する必要がないので、データＣ１乃至データＣ４を得るために、１６バイトのデータを４回暗号化するだけで足りる。すなわち、本発明によれば、暗号化の処理回数を削減して、処理負荷を軽減し、処理時間を短縮することができるのである。
【０１７５】
また、例えば、国際標準において、共通鍵Ｋａｂに予め決められた演算を施すことなどにより鍵Ｋｍを生成することで、鍵管理の負担を軽減することも記載されている。しかしながら、このようにすると、何らかの原因で、上記の予め決められた演算が外部に漏洩した場合、共通鍵Ｋａｂまたは鍵Ｋｍの推測が、かえって容易になってしまうおそれがある。
【０１７６】
このため、望ましくは、共通鍵Ｋａｂと鍵Ｋｍを別々に生成して、予め機器Ａと機器Ｂに記憶させておく必要がある。しかしながら、極めて厳重な管理を要する暗号アルゴリズムの鍵を、２種類以上記憶させることは、そもそも記憶容量や利用可能な電力量が制限されている非接触ＩＣカードなどにとって容易なことではない。
【０１７７】
これに対して、本発明では、冗長データＲｅｄに代えて、乱数Ｒａの一部である１６バイトのデータを用いることにしたので、冗長データＲｅｄを生成するために、鍵Ｋｍを記憶する必要がない。すなわち、本発明によれば、鍵の管理負担を軽減し、非接触ＩＣカードなどのリソースを有効に活用することができるのである。
【０１７８】
さらに、本発明の方式は、ＩＣカードとリーダライタ間で送受信される認証メッセージに冗長データを付加し、冗長データの正当性を検証して認証メッセージの完全性を確保するものである。よって、本発明の方式は、国際標準の相互認証方式（ＩＳＯ/ＩＥＣ９７９８−２）に適合するものとなる。
【０１７９】
従って、本発明を適用すれば、例えば、機器Ａと機器Ｂのベンダーが異なる場合でも、国際標準に適合する相互認証を適切に行うことが可能となる。
【０１８０】
なお、ここでは、主に、ＩＣカードとリーダライタ間で送受信される認証メッセージを例として説明しているが、上述したように、本発明は、例えば、リーダライタとＰＯＳレジスタなどの機器との間での認証にも適用することが可能である。すなわち、本発明は、リーダライタとコントローラ間の処理にも適用することができるものである。
【０１８１】
以上においては、主に２５６ビット鍵のＡＥＳ−ＣＢＣモードの暗号化処理を用いて相互認証処理を行う例について説明したが、これは、相互認証処理の後のトランザクション処理においても２５６ビット長の鍵を用いて通信路を暗号化することが多いからである。すなわち、非接触ＩＣカードとリーダライタ間で行われる処理の高速性とセキュリティ上の耐性を考慮すると、機器Ｂが生成する乱数Ｒａのデータ長は２５６ビット（＝３２バイト）であることが多いと考えられるからである。
【０１８２】
しかしながら、仮に鍵長が長くなった場合であっても、本発明を適用することが可能である。例えば、３８４ビット鍵のＡＥＳ−ＣＢＣモードの暗号化処理を用いて相互認証処理を行う場合、機器Ｂが生成する乱数Ｒａのデータ長は３８４ビット（＝４８バイト）の場合を考える。この場合、機器Ｂは、４８バイトの乱数Ｒａを、それぞれ１６バイトのデータＭ１乃至データＭ３に分割し、１６バイトの乱数ＲｂをデータＭ４とし、冗長データとしてデータＭ１およびデータＭ２を付加する。そして、機器Ｂは、データＭ１乃至データＭ４に、データＭ１およびデータＭ２が付加されたデータを暗号化して、９６バイトのデータＣｉｐｈ１を生成し、これをデータＡｕｔ２として機器Ａに送信する。
【０１８３】
この場合の機器ＡにおけるＡＥＳ−ＣＢＣモードの復号の処理は、図１４と図１５に示されるように行なわれることになる。図１４と図１５は、機器Ｂが４８バイトの乱数Ｒａを生成する場合であって、データＭ１およびデータＭ２を冗長データとして用いる場合のＡＥＳ−ＣＢＣモードの復号の処理を説明する図である。上述したように、ＡＥＳ−ＣＢＣモードでは、１６バイト単位にデータが復号されるようになされている。このため、復号の対象となるデータ（いまの場合、データＣｉｐｈ１）が、それぞれ１６バイトのデータＣ１乃至データＣ６に分割される。
【０１８４】
また、復号処理部４１２、復号処理部４２２、復号処理部４３２、復号処理部４４２、復号処理部４５２、および復号処理部４６２は、それぞれ共通鍵Ｋａｂを用いてデータを復号するようになされている。
【０１８５】
まず、データＣ１が復号処理部４１２に供給され、復号結果のデータと初期ベクトルＩＶとの排他的論理和が演算器４１１により演算される。演算器４１１の出力が、復号により得られたデータＭ１となる。
【０１８６】
データＣ２は、復号処理部４２２に供給され、復号結果のデータとデータＣ１との排他的論理和が演算器４２１により演算される。演算器４２１の出力が、復号により得られたデータＭ２となる。
【０１８７】
データＣ３は、復号処理部４３２に供給され、復号結果のデータとデータＣ２との排他的論理和が演算器４３１により演算される。演算器４３１の出力が、復号により得られたデータＭ３となる。
【０１８８】
データＣ４は、復号処理部４４２に供給され、復号結果のデータとデータＣ３との排他的論理和が演算器４４１により演算される。演算器４４１の出力が、復号により得られたデータＭ４となる。
【０１８９】
データＣ５は、復号処理部４５２に供給され、復号結果のデータとデータＣ４との排他的論理和が演算器４５１により演算される。演算器４５１の出力が、復号により得られたデータＭ１となる。
【０１９０】
データＣ６は、復号処理部４６２に供給され、復号結果のデータとデータＣ５との排他的論理和が演算器４６１により演算される。演算器４６１の出力が、復号により得られたデータＭ２となる。
【０１９１】
上述したように、データＭ１は、乱数Ｒａのうちの最上位１６バイト分のデータとされ、データＭ２は、乱数ＲａのうちのデータＭ１に続く１６バイト分のデータとされ、データＭ３は、乱数ＲａのうちのデータＭ１とデータＭ２を除く１６バイト分のデータとされる。そして、データＭ４は、１６バイトの乱数Ｒｂとされる。よって、機器Ａは、データＣｉｐｈ１を復号して得られたデータＭ４が、自身が生成した乱数Ｒｂと等しいか否かを判定することにより、機器Ｂが正当な機器であるか否かを認証することができる。
【０１９２】
例えば、機器Ａと機器Ｂとの通信路上に、機器Ｂになりすました機器Ｃがあったとする。機器Ｃは、機器Ｂから送信されたデータＡｕｔ２の一部を改竄し、通信路のセッション鍵を勝手に変更することを図ったものとする。
【０１９３】
図１４と図１５の例の場合もやはり、データＡｕｔ２のうちのどの部分が改竄されたとしても、改竄を検知することができる。いまの場合、機器Ａは、データＣｉｐｈ１を復号して得られたデータＭ４が、自身が生成した乱数Ｒｂと等しいと判定された場合、データＣ１を復号して得られたデータＭ１と、データＣ５を復号して得られたデータＭ１とが等しいか否かをさらに判定する。また、データＣ２を復号して得られたデータＭ２と、データＣ６を復号して得られたデータＭ２とが等しいか否かをさらに判定する。そして、データＣ１の復号、データＣ５の復号によるデータＭ１が等しいと判定され、かつ、データＣ２の復号、データＣ６の復号によるデータＭ２とが等しいと判定された場合、機器Ｂを正当な機器であると認証する。
【０１９４】
なお、図１４の場合、データＣ１に「×」印が付されており、データＣ１が改竄されたことを表している。すなわち、図１４において、データＣ１は、本来のデータＣ１、すなわち、機器Ｂが生成したデータＣｉｐｈ１（データＡｕｔ２）の最上位１６バイトのデータではない。
【０１９５】
また、図１５の場合、データＣ２に「×」印が付されており、データＣ２が改竄されたことを表している。すなわち、図１５において、データＣ２は、本来のデータＣ２、すなわち、機器Ｂが生成したデータＣｉｐｈ１（データＡｕｔ２）の最上位１６バイトの次の１６バイト分のデータではない。
【０１９６】
データＡｕｔ２のうち、データＣ４に対応する部分が改竄された場合、当然にデータＭ４（すなわち乱数Ｒｂ）を復号できないので、改竄を検知できる。データＡｕｔ２のうち、データＣ３に対応する部分が改竄された場合、データＣ３の改竄が、データＣ４の復号結果に伝搬するので、やはりデータＭ４を復号することができない。
【０１９７】
よって、データＡｕｔ２のうち、データＣ３またはデータＣ４に対応する部分が改竄された場合、機器Ａは改竄を検知できる。
【０１９８】
図１４に示されるように、データＡｕｔ２のうち、データＣ１に対応する部分が改竄された場合、データＣ１の改竄が、データＣ２の復号結果に伝搬するので、データＭ２を復号することができない。しかし、データＣ３、データＣ４の復号結果には伝搬しないので、データＭ３とデータＭ４を復号することができる。ここで、データＭ４は、乱数Ｒｂと等しいものとなる。
【０１９９】
データＡｕｔ２のうち、データＣ１に対応する部分が改竄された場合、データＣ１を復号して得られたデータＭ１と、データＣ５を復号して得られたデータＭ１とが異なるものとなる。換言すれば、データＣ１に対応する部分が改竄された場合、演算器４１１から出力されるデータは、データＭ１とはならないのである。
【０２００】
一方、データＣ５は、復号処理部４４２に供給され、復号結果のデータとデータＣ４との排他的論理和が演算器４４１により演算される。データＣ４は改竄されていないので、データＣ５を復号して得られたデータＭ１は、本来のデータＭ１（乱数Ｒａのうちの最上位１６バイト分のデータ）となる。
【０２０１】
また、データＡｕｔ２のうち、データＣ５に対応する部分が改竄された場合も、データＣ１を復号して得られたデータＭ１と、データＣ５を復号して得られたデータＭ１とが異なるものとなる。
【０２０２】
なお、データＡｕｔ２のうち、データＣ１に対応する部分とデータＣ５に対応する部分とが同時に改竄されることも考えられる。しかし、データＣ１を復号して得られたデータＭ１と、データＣ５を復号して得られたデータＭ１とが等しくなるように、データＣ１に対応する部分とデータＣ５に対応する部分とが同時に改竄される可能性は極めて低い。
【０２０３】
また、図１５に示されるように、データＡｕｔ２のうち、データＣ２に対応する部分が改竄された場合、データＣ２の改竄が、データＣ３の復号結果に伝搬するので、データＭ３を復号することができない。しかし、データＣ４の復号結果には伝搬しないので、データＭ４を復号することができる。ここで、データＭ４は、乱数Ｒｂと等しいものとなる。
【０２０４】
データＡｕｔ２のうち、データＣ２に対応する部分が改竄された場合、データＣ２を復号して得られたデータＭ２と、データＣ６を復号して得られたデータＭ２とが異なるものとなる。換言すれば、データＣ２に対応する部分が改竄された場合、演算器４２１から出力されるデータは、データＭ２とはならないのである。
【０２０５】
一方、データＣ６は、復号処理部４６２に供給され、復号結果のデータとデータＣ５との排他的論理和が演算器４６１により演算される。データＣ５は改竄されていないので、データＣ６を復号して得られたデータＭ２は、本来のデータＭ２（乱数ＲａのうちのデータＭ１に続く１６バイト分のデータ）となる。
【０２０６】
また、データＡｕｔ２のうち、データＣ６に対応する部分が改竄された場合も、データＣ２を復号して得られたデータＭ２と、データＣ６を復号して得られたデータＭ２とが異なるものとなる。
【０２０７】
なお、データＡｕｔ２のうち、データＣ２に対応する部分とデータＣ６に対応する部分とが同時に改竄されることも考えられる。しかし、データＣ２を復号して得られたデータＭ２と、データＣ６を復号して得られたデータＭ２とが等しくなるように、データＣ２に対応する部分とデータＣ６に対応する部分とが同時に改竄される可能性は極めて低い。
【０２０８】
さらに、データＣ１、データＣ２、データＣ５、およびデータＣ６に対応する部分が同時に改竄されることも考えられる。しかし、復号により得られた最初のデータＭ１と最後のデータＭ１とが等しくなり、かつ最初のデータＭ２と最後のデータＭ２とが等しくなるように、上述の部分が同時に改竄される可能性は極めて低い。
【０２０９】
すなわち、機器Ｂが４８バイトの乱数Ｒａを生成する場合、機器Ａは、データＣｉｐｈ１を復号して得られたデータＭ４が、自身が生成した乱数Ｒｂと等しいか否かを判定された場合、さらに次の判定を行なうようにすればよい。すなわち、データＣ１を復号して得られたデータＭ１（最初のデータＭ１）と、データＣ５を復号して得られたデータＭ１（最後のデータＭ１）とが等しいか否かをさらに判定する。また、データＣ２を復号して得られたデータＭ２（最初のデータＭ２）と、データＣ６を復号して得られたデータＭ２（最後のデータＭ２）とが等しいか否かをさらに判定する。そして、最初のデータＭ１と最後のデータＭ１が等しいと判定され、かつ最初のデータＭ２と最後のデータＭ２が等しいと判定されたとき、機器Ｂを正当な機器であると認証するようにすればよい。
【０２１０】
このようにすることで、機器Ｂが４８バイトの乱数Ｒａを生成する場合であっても、やはり、データの改竄を確実に検知できるようになるのである。すなわち、データＡｕｔ２のうちのどの部分が改竄されたとしても、改竄を検知することができるのである。
【０２１１】
なお、機器Ｂが４８バイト（＝１２８ビット）の乱数Ｒａを生成する場合は、冗長データを付加しなくとも、改竄を検知することは可能である。すなわち、この場合、機器Ａで復号されるデータは、１６バイトのデータＣ１とデータＣ２のみとなるので、いずれか一方が改竄されれば、復号により乱数Ｒｂ（いまの場合データＭ２）を得ることはできないからである。
【０２１２】
なお、上述した一連の処理は、ハードウェアにより実行させることもできるし、ソフトウェアにより実行させることもできる。上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータにネットワークや記録媒体からインストールされる。また、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば図１６に示されるような汎用のパーソナルコンピュータ７００などに、ネットワークや記録媒体からインストールされる。
【０２１３】
図１６において、CPU（Central Processing Unit）７０１は、ROM（Read Only Memory）７０２に記憶されているプログラム、または記憶部７０８からＲＡＭ（Random Access Memory）７０３にロードされたプログラムに従って各種の処理を実行する。ＲＡＭ７０３にはまた、CPU７０１が各種の処理を実行する上において必要なデータなども適宜記憶される。
【０２１４】
CPU７０１、ROM７０２、およびＲＡＭ７０３は、バス７０４を介して相互に接続されている。このバス７０４にはまた、入出力インタフェース７０５も接続されている。
【０２１５】
入出力インタフェース７０５には、キーボード、マウスなどよりなる入力部７０６、ＬＣＤ(Liquid Crystal display)などよりなるディスプレイ、並びにスピーカなどよりなる出力部７０７が接続されている。また、入出力インタフェース７０５には、ハードディスクなどより構成される記憶部７０８、モデム、LANカードなどのネットワークインタフェースカードなどより構成される通信部７０９が接続されている。通信部７０９は、インターネットを含むネットワークを介しての通信処理を行う。
【０２１６】
入出力インタフェース７０５にはまた、必要に応じてドライブ７１０が接続され、磁気ディスク、光ディスク、光磁気ディスク、或いは半導体メモリなどのリムーバブルメディア７１１が適宜装着されている。そして、それらのリムーバブルメディアから読み出されたコンピュータプログラムが、必要に応じて記憶部７０８にインストールされる。
【０２１７】
上述した一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、インターネットなどのネットワークや、リムーバブルメディア７１１などからなる記録媒体からインストールされる。
【０２１８】
なお、この記録媒体は、図１６に示される、装置本体とは別に、ユーザにプログラムを配信するために配布される、プログラムが記録されている磁気ディスク（フロッピディスク（登録商標）を含む）、光ディスク（CD-ROM(Compact Disk-Read Only Memory),DVD(Digital Versatile Disk)を含む）、光磁気ディスク（MD（Mini-Disk）（登録商標）を含む）、もしくは半導体メモリなどよりなるリムーバブルメディア７１１により構成されるものだけでなく、装置本体に予め組み込まれた状態でユーザに配信される、プログラムが記録されているROM７０２や、記憶部７０８に含まれるハードディスクなどで構成されるものも含む。
【０２１９】
なお、本明細書において上述した一連の処理は、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０２２０】
また、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【符号の説明】
【０２２１】
１  情報処理システム，  １１  リーダライタ，  ２１  非接触ＩＣカード，  ２００  バス，  ２０１  制御部，２０２  変調部，  ２０３  発振回路，  ２０４  復調部，  ２０５  アンテナ，  ２１１  ＣＰＵ，  ２１２  ＲＯＭ，  ２１３  ＲＡＭ，  ２２１  ＣＰＵ，  ２２２  ＲＯＭ，  ２２３  ＲＡＭ，  ２２４  ＥＥＰＲＯＭ，  ２２９  インタフェース部，  ２３０  アンテナ
【図１】
2011066636.tif 000003
【図２】
2011066636.tif 000004
【図３】
2011066636.tif 000005
【図４】
2011066636.tif 000006
【図５】
2011066636.tif 000007
【図６】
2011066636.tif 000008
【図７】
2011066636.tif 000009
【図８】
2011066636.tif 000010
【図９】
2011066636.tif 000011
【図１０】
2011066636.tif 000012
【図１１】
2011066636.tif 000013
【図１２】
2011066636.tif 000014
【図１３】
2011066636.tif 000015
【図１４】
2011066636.tif 000016
【図１５】
2011066636.tif 000017
【図１６】
2011066636.tif 000018