(57)【要約】【課題】盗聴を検出できるようにする。【解決手段】リーダライタ２１１が、信号の方式を指定する指定情報を送信し、ＩＣカード２１２が、リーダライタ２１１からの指定情報を受信する。ＩＣカード２１２が、指定情報により指定された方式でリーダライタ２１１に信号を送信する。リーダライタ２１１が、ＩＣカード２１２からの信号を受信し、リーダライタ２１１が、リーダライタ２１１から受信した信号の方式と、指定情報により指定した方式とから、リーダライタ２１１とＩＣカード２１２との間に、リーダライタシミュレータ１１１とカードシミュレータ１１２が介在して信号を授受していることを検出する。【選択図】図１５
2010074349.tif 000002
【特許請求の範囲】
【請求項１】
信号の方式を指定する指定情報を送信する送信部と、
他の情報処理装置から信号を受信する受信部と、
受信した信号の方式と、前記指定情報により指定された方式とから、前記他の情報処理装置との間に他の装置が介在して信号を授受していることを検出する検出部と
を備える情報処理装置。
【請求項２】
前記指定情報は、信号の符号化方式または変調方式を指定する
請求項１に記載の情報処理装置。
【請求項３】
前記指定情報は、信号の全部または一部の方式を指定する
請求項２に記載の情報処理装置。
【請求項４】
前記検出部は、暗号化された状態で送られてきたチェックサムを復号し、復号された前記チェックサムにより検出を行う
請求項３に記載の情報処理装置。
【請求項５】
指定される前記変調方式は、ＡＳＫ変調またはＰＳＫ変調である
請求項４に記載の情報処理装置。
【請求項６】
指定される前記符号化方式は、マンチェスタ符号またはＲＺ符号による符号化方式である
請求項４に記載の情報処理装置。
【請求項７】
前記他の情報処理装置が予め設定された回数以上認証されなかった場合、警告を出力する警告部をさらに備える
請求項４に記載の情報処理装置。
【請求項８】
前記指定情報は、信号の値をさらに指定する
請求項３に記載の情報処理装置。
【請求項９】
前記情報処理装置と前記他の情報処理装置は、リーダライタとＩＣカードの一方と他方である
請求項４に記載の情報処理装置。
【請求項１０】
送信部が、信号の方式を指定する指定情報を送信し、
受信部が、他の情報処理装置から信号を受信し、
検出部が、受信した信号の方式と、前記指定情報により指定された方式とから、前記他の情報処理装置との間に他の装置が介在して信号を授受していることを検出する
情報処理装置の情報処理方法。
【請求項１１】
コンピュータに、
信号の方式を指定する指定情報を送信する手順と、
他の情報処理装置から信号を受信する手順と、
受信した信号の方式と、前記指定情報により指定された方式とから、前記他の情報処理装置との間に他の装置が介在して信号を授受していることを検出する手順と
を実行させるためのプログラム。
【請求項１２】
コンピュータに、
信号の方式を指定する指定情報を送信する手順と、
他の情報処理装置から信号を受信する手順と、
受信した信号の方式と、前記指定情報により指定された方式とから、前記他の情報処理装置との間に他の装置が介在して信号を授受していることを検出する手順と
を実行させるためのプログラムが記録されている記録媒体。
【請求項１３】
第1の情報処理装置が、信号の方式を指定する指定情報を送信し、
第2の情報処理装置が、前記第1の情報処理装置からの前記指定情報を受信し、
前記第2の情報処理装置が、前記指定情報により指定された方式で前記第1の情報処理装置に信号を送信し、
前記第1の情報処理装置が、第2の情報処理装置からの信号を受信し、
前記第1の情報処理装置が、前記第1の情報処理装置から受信した信号の方式と、前記指定情報により指定した方式とから、前記第１の情報処理装置と前記第2の情報処理装置との間に他の装置が介在して信号を授受していることを検出する
情報処理システム。
【請求項１４】
第1の情報処理装置が、信号の方式を指定する指定情報を送信し、
第2の情報処理装置が、前記第1の情報処理装置からの前記指定情報を受信し、
前記第2の情報処理装置が、前記指定情報により指定された方式で前記第1の情報処理装置に信号を送信し、
前記第1の情報処理装置が、第2の情報処理装置からの信号を受信し、
前記第1の情報処理装置が、前記第1の情報処理装置から受信した信号の方式と、前記指定情報により指定した方式とから、前記第１の情報処理装置と前記第2の情報処理装置との間に他の装置が介在して信号を授受していることを検出する
情報処理システムの情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置および方法、プログラム、記録媒体、並びに情報処理システムに関し、特に、盗聴を検出できるようにした情報処理装置および方法、プログラム、記録媒体、並びに情報処理システムに関する。
【背景技術】
【０００２】
最近、ＩＣカードが普及し、多くのユーザにより店舗における支払いなどに利用されている。ＩＣカードの利用時には、不正なＩＣカードの利用を防止するため、認証処理が必要となる。このような認証方法については、各種の提案がなされている（例えば特許文献１）。
【０００３】
図１は従来のＩＣカードシステムの構成を表している。このＩＣカードシステム１は、リーダライタ１１とＩＣカード１２により構成されている。
【０００４】
リーダライタ１１は、ＣＰＵ２１、ＲＡＭ２２、ＲＯＭ２３、ＥＥＰＲＯＭ２４、ＵＡＲＴ２５、表示部２６、マンチェスタ符号化部２７、ＡＳＫ変調部２８、ＡＳＫ復調部２９、マンチェスタ復号部３０、およびＤＥＳ暗号化部３１を有している。
【０００５】
ＣＰＵ２１は、各部の動作を制御する。ＲＡＭ２２は、必要なデータを一時的に記憶する。ＲＯＭ２３は、データ、プログラムなどを記憶する。ＥＥＰＲＯＭ２４は、電源のオフ後も保持する必要があるデータなどを記憶する。ＵＡＲＴ２５は、図示せぬ外部のコントローラとの間で授受される信号のシリアル／パラレル変換を行う。表示部２６は、所定の情報を表示する。
【０００６】
マンチェスタ符号化部２７は、送信するデータをマンチェスタ符号化する。ＡＳＫ変調部２８は、データをＡＳＫ変調し、ＩＣカード１２に送信する。
【０００７】
ＡＳＫ復調部２９は、ＩＣカード１２からの信号を受信し、ＡＳＫ復調する。マンチェスタ復号部３０は、ＡＳＫ復調された信号をマンチェスタ復号する。ＤＥＳ暗号化部３１は、送信するデータを暗号化し、また受信した暗号化されているデータを復号する。
【０００８】
ＩＣカード１２は、ＣＰＵ５１、ＲＡＭ５２、ＲＯＭ５３、ＥＥＰＲＯＭ５４、マンチェスタ符号化部５５、ＡＳＫ変調部５６、ＡＳＫ復調部５７、マンチェスタ復号部５８、およびＤＥＳ暗号化部５９を有している。
【０００９】
ＣＰＵ５１は、各部の動作を制御する。ＲＡＭ５２は、必要なデータを一時的に記憶する。ＲＯＭ５３は、データ、プログラムなどを記憶する。ＥＥＰＲＯＭ５４は、電源のオフ後も保持する必要があるデータなどを記憶する。
【００１０】
マンチェスタ符号化部５５は、送信するデータをマンチェスタ符号化する。ＡＳＫ変調部５６は、データをＡＳＫ変調し、リーダライタ１１に送信する。
【００１１】
ＡＳＫ復調部５７は、リーダライタ１１からの信号を受信し、ＡＳＫ復調する。マンチェスタ復号部５８は、ＡＳＫ復調された信号をマンチェスタ復号する。ＤＥＳ暗号化部５９は、送信するデータを暗号化し、また受信した暗号化されているデータを復号する。
【００１２】
図２は、ＩＣカードシステム１の処理を表している。リーダライタ１１の相互認証アルゴリズムＡ１がＩＣカード１２に認証メッセージ１を送信する。この認証メッセージ１には、リーダライタ１１が内蔵する鍵で暗号化した認証情報が含まれている。
【００１３】
ＩＣカード１２の相互認証アルゴリズムａ１は、リーダライタ１１が有する鍵と共通の鍵を有しているので、その鍵で、認証メッセージ１に含まれている暗号化されている認証情報を復号することができる。相互認証アルゴリズムａ１は、復号された認証情報と、新たな認証情報とを鍵で暗号化し、認証レスポンス１としてリーダライタ１１に送信する。
【００１４】
リーダライタ１１の正当性検証アルゴリズムＢ１は、認証レスポンス１に含まれる認証情報を鍵で復号し、認証メッセージ１に含めた認証情報と比較することで、ＩＣカード１２を認証する。
【００１５】
同様に、ＩＣカード１２がリーダライタ１１を次のように認証する。すなわち、ＩＣカード１２の相互認証アルゴリズムａ２がリーダライタ１１に認証メッセージ２を送信する。この認証メッセージ２には、ＩＣカード１２が鍵で暗号化した認証情報が含まれている。
【００１６】
リーダライタ１１の相互認証アルゴリズムＡ２は、認証メッセージ２に含まれている暗号化されている認証情報を鍵で復号する。相互認証アルゴリズムＡ２は、復号された認証情報と、新たな認証情報とを鍵で暗号化し、認証レスポンス２としてＩＣカード１２に送信する。
【００１７】
ＩＣカード１２の正当性検証アルゴリズムｂ１は、認証レスポンス２に含まれる認証情報を鍵で復号し、認証メッセージ２に含めた認証情報と比較することで、リーダライタ１１を認証する。
【００１８】
【特許文献１】特許第３７０９９４６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１９】
しかしながら、従来のシステムでは、盗聴を防止することが困難である。
【００２０】
すなわち、図３に示されるように、盗聴者１１４はリーダライタ１１とＩＣカード１２の通信を盗聴する場合、リーダライタ１１とＩＣカード１２の間に、カードシミュレータ１１２とリーダライタシミュレータ１１１を介在させ、信号を授受させる。そしてカードシミュレータ１１２とリーダライタシミュレータ１１１の間で授受される信号が、パーソナルコンピュータ１１３により解析される。
【００２１】
図４は、図３に示されるように、リーダライタ１１とＩＣカード１２の間に、カードシミュレータ１１２とリーダライタシミュレータ１１１を介在させた場合の信号の授受を表している。カードシミュレータ１１２はＩＣカード１２と同様の機能を有しており、リーダライタシミュレータ１１１もリーダライタ１１と同様の機能を有している。
【００２２】
リーダライタ１１の相互認証アルゴリズムＡ１がＩＣカード１２に向けて認証メッセージ１を送信する。この認証メッセージ１には、リーダライタ１１が内蔵する鍵で暗号化した認証情報が含まれている。
【００２３】
カードシミュレータ１１２は、リーダライタ１１がＩＣカード１２に向けて送信した認証メッセージ１を傍受すると、これを一旦復調、および復号した後、再生成し、パーソナルコンピュータ１１３とリーダライタシミュレータ１１１に供給する。パーソナルコンピュータ１１３は認証メッセージ１に含まれるコマンドなどを分析する。リーダライタシミュレータ１１１はカードシミュレータ１１２からの認証メッセージ１を再び符号化、および変調した後、ＩＣカード１２に送信する。
【００２４】
リーダライタシミュレータ１１１により送信された認証メッセージ１は、リーダライタ１１が送信した認証メッセージ１と同様の信号である。従って、ＩＣカード１２の相互認証アルゴリズムａ１は、認証メッセージ１に含まれている暗号化されている認証情報を内蔵する鍵で復号する。相互認証アルゴリズムａ１は、復号された認証情報と、新たな認証情報とを鍵で暗号化し、認証レスポンス１としてリーダライタ１１に向けて送信する。
【００２５】
リーダライタシミュレータ１１１は、ＩＣカード１２がリーダライタ１１に向けて送信した認証レスポンス１を傍受すると、それを一旦復調、および復号した後、パーソナルコンピュータ１１３とカードシミュレータ１１２に送信する。パーソナルコンピュータ１１３は認証レスポンス１を分析する。カードシミュレータ１１２はリーダライタシミュレータ１１１からの認証レスポンス１を再び符号化、および変調した後、リーダライタ１１に送信する。
【００２６】
カードシミュレータ１１２により送信された認証レスポンス１は、ＩＣカード１２が送信した認証レスポンス１と同様の信号である。リーダライタ１１の正当性検証アルゴリズムＢ１は、認証レスポンス１に含まれる認証情報を鍵で復号し、認証メッセージ１に含めた認証情報と比較することで、ＩＣカード１２を認証する。
【００２７】
さらに、ＩＣカード１２の相互認証アルゴリズムａ２はリーダライタ１１に向けて認証メッセージ２を送信する。この認証メッセージ２には、ＩＣカード１２が鍵で暗号化した認証情報が含まれている。
【００２８】
リーダライタシミュレータ１１１は認証メッセージ２を傍受すると、それを一旦復調、および復号した後、パーソナルコンピュータ１１３とカードシミュレータ１１２に送信する。パーソナルコンピュータ１１３は認証メッセージ２に含まれるコマンドなどを分析する。カードシミュレータ１１２はリーダライタシミュレータ１１１からの認証メッセージ２を再び符号化、および変調した後、リーダライタ１１に送信する。
【００２９】
カードシミュレータ１１２により送信された認証メッセージ２は、ＩＣカード１２が送信した認証メッセージ２と同様の信号である。リーダライタ１１の相互認証アルゴリズムＡ２は、認証メッセージ２に含まれている暗号化されている認証情報を鍵で復号する。相互認証アルゴリズムＡ２は、復号された認証情報と、新たな認証情報とを鍵で暗号化し、認証レスポンス２としてＩＣカード１２に向けて送信する。
【００３０】
カードシミュレータ１１２は、リーダライタ１１が送信した認証レスポンス２を傍受すると、これを一旦復調、および復号した後、パーソナルコンピュータ１１３とリーダライタシミュレータ１１１に供給する。パーソナルコンピュータ１１３は認証レスポンス２を分析する。リーダライタシミュレータ１１１はカードシミュレータ１１２からの認証レスポンス２を再び符号化、および変調した後、ＩＣカード１２に送信する。
【００３１】
リーダライタシミュレータ１１１により送信された認証レスポンス２は、リーダライタ１１が送信した認証レスポンス２と同様の信号である。従って、ＩＣカード１２の正当性検証アルゴリズムｂ１は、認証レスポンス２に含まれる認証情報を鍵で復号し、認証メッセージ２に含めた認証情報と比較することで、リーダライタ１１を認証する。
【００３２】
このように、従来のＩＣシステム１においては、盗聴者１１４が存在しても、ＩＣカード１２とリーダライタ１１の間の通信には何ら障害が発生せず、エラーのない正常な通信が行えるので、盗聴者１１４による盗聴を検出することができない。その結果、機密の情報が盗まれてしまうおそれがあった。
【００３３】
本発明は、このような状況に鑑みてなされたものであり、盗聴を検出することができるようにするものである。
【課題を解決するための手段】
【００３４】
本発明の一側面は、信号の方式を指定する指定情報を送信する送信部と、他の情報処理装置から信号を受信する受信部と、受信した信号の方式と、指定情報により指定された方式とから、他の情報処理装置との間にさらに他の装置が介在することを検出する検出部とを備える情報処理装置である。
【００３５】
指定情報は、信号の符号化方式または変調方式を指定することができる。
【００３６】
指定情報は、信号の全部または一部の方式を指定することができる。
【００３７】
指定情報は、信号の値をさらに指定することができる。
【００３８】
検出部は、暗号化された状態で送られてきたチェックサムを復号し、復号されたチェックサムにより検出を行うことができる。
【００３９】
指定される変調方式は、ＡＳＫ変調またはＰＳＫ変調とすることができる。
【００４０】
指定される符号化方式は、マンチェスタ符号またはＲＺ符号による符号化とすることができる。
【００４１】
他の情報処理装置が所定の回数以上認証されなかった場合、警告を表示することができる。
【００４２】
情報処理装置と他の情報処理装置は、リーダライタとＩＣカードの一方と他方とすることができる。
【００４３】
本発明の一側面はまた、送信部が、信号の方式を指定する指定情報を送信し、受信部が、他の情報処理装置から信号を受信し、検出部が、受信した信号の方式と、指定情報により指定された方式とから、他の情報処理装置との間に他の装置が介在して信号を授受していることを検出する情報処理装置の情報処理方法である。
【００４４】
本発明の一側面は、コンピュータに、信号の方式を指定する指定情報を送信する手順と、  他の情報処理装置から信号を受信する手順と、受信した信号の方式と、指定情報により指定された方式とから、他の情報処理装置との間に他の装置が介在して信号を授受していることを検出する手順とを実行させるためのプログラムである。
【００４５】
さらに本発明の一側面は、コンピュータに、信号の方式を指定する指定情報を送信する手順と、他の情報処理装置から信号を受信する手順と、受信した信号の方式と、指定情報により指定された方式とから、他の情報処理装置との間に他の装置が介在して信号を授受していることを検出する手順とを実行させるためのプログラムが記録されている記録媒体である。
【００４６】
本発明の他の側面は、第1の情報処理装置が、信号の方式を指定する指定情報を送信し、  第2の情報処理装置が、第1の情報処理装置からの指定情報を受信し、第2の情報処理装置が、指定情報により指定された方式で第1の情報処理装置に信号を送信し、第1の情報処理装置が、第2の情報処理装置からの信号を受信し、第1の情報処理装置が、第1の情報処理装置から受信した信号の方式と、指定情報により指定した方式とから、第１の情報処理装置と第2の情報処理装置との間に他の装置が介在して信号を授受していることを検出する情報処理システムである。
【００４７】
さらに本発明の他の側面は、第1の情報処理装置が、信号の方式を指定する指定情報を送信し、第2の情報処理装置が、第1の情報処理装置からの指定情報を受信し、第2の情報処理装置が、指定情報により指定された方式で第1の情報処理装置に信号を送信し、第1の情報処理装置が、第2の情報処理装置からの信号を受信し、第1の情報処理装置が、第1の情報処理装置から受信した信号の方式と、指定情報により指定した方式とから、第１の情報処理装置と第2の情報処理装置との間に他の装置が介在して信号を授受していることを検出する情報処理システムの情報処理方法である。
【００４８】
本発明の一側面においては、送信部が、信号の方式を指定する指定情報を送信し、受信部が、他の情報処理装置から信号を受信し、検出部が、受信した信号の方式と、指定情報により指定された方式とから、他の情報処理装置との間に他の装置が介在して信号を授受していることを検出する。
【００４９】
本発明の一側面においては、第1の情報処理装置が、信号の方式を指定する指定情報を送信し、  第2の情報処理装置が、第1の情報処理装置からの指定情報を受信し、第2の情報処理装置が、指定情報により指定された方式で第1の情報処理装置に信号を送信し、第1の情報処理装置が、第2の情報処理装置からの信号を受信し、第1の情報処理装置が、第1の情報処理装置から受信した信号の方式と、指定情報により指定した方式とから、第１の情報処理装置と第2の情報処理装置との間に他の装置が介在して信号を授受していることを検出する。
【発明の効果】
【００５０】
以上のように、本発明の一側面によれば、盗聴を検出することができる。
【発明を実施するための最良の形態】
【００５１】
以下、発明を実施するための最良の形態（以下、実施の形態と称する）について説明する。なお、説明は以下の順序で行う。
１．第１の実施の形態（図７乃至図１２：一部のビットの符号化方式を変更する例）
２．第２の実施の形態（図１６乃至図２１：検出を複数回行う例）
３．第３の実施の形態（図２２乃至図２７：全体の符号化方式を変更する例）
４．第４の実施の形態（図３０乃至図３５：一部のビットの変調方式を変更する例）
５．第５の実施の形態（図３７乃至図４２：全体の変調方式を変更する例）
６．第６の実施の形態（図４４乃至図５３：認証処理と盗聴検出処理を個別に実行する例）
７．第７の実施の形態（図５５乃至図６０：一部のビットの他の符号化方式の有無により検出を行う例）
８．第８の実施の形態（図６２乃至図６７：一部のビットの他の変調方式の有無により検出する例）
【００５２】
＜１．第１の実施の形態＞
［原理］
【００５３】
最初に図５を参照して、本発明の原理について説明する。
【００５４】
リーダライタ２１１はアプリケーション層２３１、データリンク層２３２、符号化層２３３、および物理層２３４を有している。同様にＩＣカード２１２は、アプリケーション層２４１、データリンク層２４２、符号化層２４３、および物理層２４４を有している。
【００５５】
アプリケーション層２３１，２４１は、符号化層２３３，２４３と物理層２３４，２４４に、盗聴を検出するために実行させる通信方式の特徴について交渉し、決定する（図５において番号１で示される処理）。アプリケーション層２３１，２４１は、決定された特徴を符号化層２３３，２４３と物理層２３４，２４４に指示する（図５において番号２で示される処理）。この指示に基づいて、符号化層２３３，２４３と物理層２３４，２４４は、指示された特徴を有する通信を実行する（図５において番号３で示される処理）。そしてデータリンク層２３２，２４２は、チェックサムにより通信の特徴が破壊されていないかをチェックし、破壊されていれば盗聴されていると判断する（図５において番号４で示される処理）。
【００５６】
［情報処理システムの構成］
【００５７】
図６は本発明のＩＣカードシステムの一実施の形態の構成を表している。情報処理システムとしてのＩＣカードシステム２０１は、情報処理装置としてのリーダライタ２１１とＩＣカード２１２により構成されている。これらは例えばＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）に代表される非接触通信を行う。
【００５８】
リーダライタ２１１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１１、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３１２、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３１３、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３１４、ＵＡＲＴ（Ｕｎｉｖｅｒｓａｌ  Ａｓｙｎｃｈｒｏｎｏｕｓ  Ｒｅｃｅｉｖｅｒ  Ｔｒａｎｓｍｉｔｔｅｒ）３１５を有する。またリーダライタ２１１は、表示部３１６、ＤＥＳ（Ｄａｔａ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ）暗号化部３１７、送信調停部３１８、マンチェスタ符号化部３１９、ＲＺ符号化部３２０、ＡＳＫ（Ａｍｐｌｉｔｕｄｅ  Ｓｈｉｆｔ  Ｋｅｙｉｎｇ）変調部３２１、ＡＳＫ復調部３２２、受信調停部３２３、マンチェスタ復号部３２４、およびＲＺ復号部３２５を有している。
【００５９】
ＣＰＵ３１１は、各部の動作を制御する。ＲＡＭ３１２は、必要なデータを一時的に記憶する。ＲＯＭ３１３は、データ、プログラムなどを記憶する。ＥＥＰＲＯＭ３１４は、電源のオフ後も保持する必要があるデータなどを記憶する。ＵＡＲＴ３１５は、図示せぬ外部のコントローラとの間で授受される信号のシリアル／パラレル変換を行う。警告を出力する警告部として機能する出力部３１６は、所定の情報を出力する。出力部３１６はディスプレイ、スピーカなどにより構成される。ＤＥＳ暗号化部３１７は、送信するデータを暗号化し、また受信した暗号化されているデータを復号する。
【００６０】
送信調停部３１８は、送信するデータを、ビット単位でマンチェスタ符号化部３１９とＲＺ符号化部３２０に供給するか、またはＡＳＫ変調部３２１に直接供給する。マンチェスタ符号化部３１９は、送信するデータをマンチェスタ符号化する。ＲＺ符号化部３２０は、送信するデータをＲＺ符号化する。ＡＳＫ変調部３２１は、データをＡＳＫ変調し、電磁誘導によりＩＣカード２１２に送信する。
【００６１】
ＡＳＫ復調部３２２は、ＩＣカード２１２からの信号を受信し、ＡＳＫ復調する。受信調停部３２３は、ＡＳＫ復調された信号を、マンチェスタ復号部３２４とＲＺ復号部３２５に供給するとともに、バスを介してＣＰＵ３１１に供給する。マンチェスタ復号部３２４は、ＡＳＫ復調された信号をマンチェスタ復号する。ＲＺ復号部３２５は、ＡＳＫ復調された信号をＲＺ復号する。
【００６２】
ＩＣカード２１２は、ＣＰＵ３５１、ＲＡＭ３５２、ＲＯＭ３５３、ＥＥＰＲＯＭ３５４、ＤＥＳ暗号化部３５５、送信調停部３５６、マンチェスタ符号化部３５７、ＲＺ符号化部３５８、ＡＳＫ変調部３５９、ＡＳＫ復調部３６０、受信調停部３６１、マンチェスタ復号部３６２、およびＲＺ復号部３６３を有している。
【００６３】
ＣＰＵ３５１は、各部の動作を制御する。ＲＡＭ３５２は、必要なデータを一時的に記憶する。ＲＯＭ３５３は、データ、プログラムなどを記憶する。ＥＥＰＲＯＭ３５４は、電源のオフ後も保持する必要があるデータなどを記憶する。ＤＥＳ暗号化部３５５は、送信するデータを暗号化し、また受信した暗号化されているデータを復号する。
【００６４】
送信調停部３５６は、送信するデータを、ビット単位でマンチェスタ符号化部３５７とＲＺ符号化部３５８に供給するか、またはＡＳＫ変調部３５９に直接供給する。マンチェスタ符号化部３５７は、送信するデータをマンチェスタ符号化する。ＲＺ符号化部３５８は、送信するデータをＲＺ符号化する。ＡＳＫ変調部３５９は、データをＡＳＫ変調し、リーダライタ２１１に電磁誘導により送信する。
【００６５】
ＡＳＫ復調部３６１は、リーダライタ２１１からの信号を電磁誘導により受信し、ＡＳＫ復調する。受信調停部３６１は、ＡＳＫ復調された信号をマンチェスタ復号部３６２とＲＺ復号部３６３に供給するとともに、バスを介してＣＰＵ３５１に供給する。マンチェスタ復号部３６２は、ＡＳＫ復調された信号をマンチェスタ復号する。ＲＺ復号部３６３は、ＡＳＫ復調された信号をＲＺ復号する。
【００６６】
［動作説明］
【００６７】
次に図７乃至図１２を参照して、リーダライタ２１１とＩＣカード２１２の相互認証処理について説明する。図７乃至図９は、リーダライタ２１１の処理を表し、図１０乃至図１２は、それに対応するＩＣカード２１２の処理を表す。
【００６８】
図７のステップＳ１００１においてリーダライタ２１１のＣＰＵ３１１は、チャレンジデータ１ｒを生成する。このチャレンジデータ１ｒには、乱数値が用いられる。ステップＳ１００２においてＣＰＵ３１１は、選択ビットをランダムに決定する。すなわち、この実施の形態の場合、データは基本的にマンチェスタ符号として送信されるのであるが、盗聴を検出するために、データ中の選択された所定のビットはＲＺ符号とされる。ここでその選択ビットが決定される。
【００６９】
ステップＳ１００３においてＤＥＳ暗号化部３１７は、ステップＳ１００２において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【００７０】
ステップＳ１００４においてＣＰＵ３１１は、例えば図１３に示されるように、チェックサムを計算する。図１３の実施の形態においては、ビットＤ00乃至D07で構成される１バイトのデータD０のうちの１ビットD06は、後述するステップＳ１１０８でＲＺ符号化されるビット（すなわち選択ビット）であり、その他のビットＤ00乃至D05とビットD07は、後述するステップＳ１１０７でマンチェスタ符号化されるビットである。また、Ｄ１乃至Ｄｎのｎバイトの各ビットも、マンチェスタ符号化されるビットである。
【００７１】
チェックサムは１バイトとされ、これらの（ｎ＋１）バイトのデータＤ０乃至Ｄｎから次式を満足するように計算される。すなわち、（ｎ＋１）バイトのデータＤ０乃至Ｄｎと、チェックサムＣＳを加算して得られる値の下位１バイトが、００ｈ（ｈは１６進数を表す）となるようにチェックサムが決定される。
（Ｄ０＋Ｄ１＋Ｄ２＋・・・＋Ｄｎ＋ＣＳ）の下位１バイト＝００ｈ    （１）
【００７２】
ステップＳ１００５においてＤＥＳ暗号化部３５５は、ステップＳ１００４で計算されたチェックサムをアクセス鍵で暗号化する。
【００７３】
ステップＳ１００６においてマンチェスタ符号化部３１９は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化される。そしてそれらが認証メッセージ１Ｒとされる。
【００７４】
ステップＳ１００７においてＡＳＫ変調部３２１は、認証メッセージ１ＲをＡＳＫ変調し、送信する。この認証メッセージ１Ｒには、ステップＳ１００１で生成されたチャレンジデータ１ｒ、ステップＳ１００３で暗号化された指定情報、およびステップＳ１００５で暗号化されたチェックサムが含まれている。なお、このときＡＳＫ変調率は例えば１０％とされる。
【００７５】
ＩＣカード２１２のＡＳＫ復調部３６０は、図１０のステップＳ１１０１において、リーダライタ２１１から送信されてきた認証メッセージ１Ｒを受信し、ＡＳＫ復調する。
【００７６】
ステップＳ１１０２において受信調停部３６１は、復調された全てのデータをマンチェスタ復号部３６２に供給する。マンチェスタ復号部３６２は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムが得られる。
【００７７】
ステップＳ１１０３においてＤＥＳ暗号化部３５５は、指定情報をアクセス鍵で復号する。すなわち、図７のステップＳ１００３においてリーダライタ２１１により暗号化された指定情報が復号される。
【００７８】
次に、ステップＳ１１０４においてＣＰＵ３５１は、乱数を生成し、この乱数とステップＳ１１０２において復号して得たチャレンジデータ１ｒを組み合わせた値を、ＤＥＳ暗号化部３５５に供給し、アクセス鍵で暗号化させることでチャレンジデータ１ｃを生成する。具体的には、例えば、Xビットの乱数とYビットのチャレンジデータ１ｒが結合され、Ｘ＋Ｙビットのデータが作成され、それを暗号化したものがチャレンジデータ１ｃとされる。
【００７９】
ステップＳ１１０５においてＣＰＵ３５１は、上述した式（１）に従ってチェックサムを計算する。
【００８０】
ステップＳ１１０６においてＤＥＳ暗号化部３５５は、ステップＳ１１０５で計算されたチェックサムをアクセス鍵で暗号化する。
【００８１】
ステップＳ１１０７においてマンチェスタ符号化部３５７は、ステップＳ１１０４の処理で生成されたチャレンジデータ１ｃのうち、選択ビット以外のビットをマンチェスタ符号化する。ステップＳ１１０８においてＲＺ符号化部３５８は、チャレンジデータ１ｃの選択ビットをＲＺ符号化する。すなわち、ステップＳ１１０３で復号された指定情報により指定されている選択ビットがＲＺ符号化され、それ以外のビットがマンチェスタ符号化される。
【００８２】
ステップＳ１１０９においてマンチェスタ符号化部３５７は、ステップＳ１１０６で暗号化されているチェックサムをマンチェスタ符号化する。
【００８３】
ステップＳ１１１０においてＡＳＫ変調部３５９は、認証レスポンス１ＣをＡＳＫ変調し、送信する。認証レスポンス１Cには、ステップＳ１１０７，Ｓ１１０８で得られた、指定情報で指定された選択ビットのみがＲＺ符号とされ、その他のビットがマンチェスタ符号とされたチャレンジデータ１ｃと、ステップＳ１１０６で暗号化され、ステップＳ１１０９でマンチェスタ符号化されたチェックサムとが含まれている。
【００８４】
リーダライタ２１１のＡＳＫ復調部３２２は、図８のステップＳ１００８において、ＩＣカード２１２からの認証レスポンス１Ｃを受信し、ＡＳＫ復調する。これにより、指定情報で指定された選択ビットのみがＲＺ符号とされ、その他のビットがマンチェスタ符号化されているチャレンジデータ１ｃと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【００８５】
ステップＳ１００９において、受信調停部３２３は、チャレンジデータ１ｃの選択ビット以外のビットをマンチェスタ復号部３２４に供給する。マンチェスタ復号部３２４は、チャレンジデータ１ｃの選択ビット以外のビットをマンチェスタ復号する。選択ビットは図７のステップＳ１００２においてリーダライタ２１１が決定しているので、リーダライタ２１１には既知である。
【００８６】
また、ステップＳ１０１０において、受信調停部３２３は、チャレンジデータ１ｃの選択ビットをＲＺ復号部３２５に供給する。ＲＺ復号部３２５は、選択ビットをＲＺ復号する。
【００８７】
ＣＰＵ３１１は、ステップＳ１００９のマンチェスタ復号の結果得られたデータと、ステップＳ１０１０のＲＺ復号の結果得られたデータを合成することで、チャレンジデータ１ｃを復元する。
【００８８】
ステップＳ１０１１においてマンチェスタ復号部３２４は、チェックサムをマンチェスタ復号する。
【００８９】
ステップＳ１０１２においてＤＥＳ暗号化部３１７は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図１０のステップＳ１１０６でＩＣカード２１２により暗号化されたチェックサムが復号される。
【００９０】
ステップＳ１０１３においてＣＰＵ３１１は、チェックサムを含む検証演算を行う。式（１）が成立するのかを検証する演算が行われる。式（１）中のチェックサムの値として、ステップＳ１０１２で復号された値が用いられる。
【００９１】
盗聴者はデータ中の一部のビットがマンチェスタ符号ではなく、ＲＺ符号であることをしらない。従って、盗聴者が通信データ全てをマンチェスタ復号すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復号によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、リーダライタ２１１は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のＩＣカード２１２から直接送られてきたデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【００９２】
ステップＳ１０１４においてＣＰＵ３１１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ１０１５においてＣＰＵ３１１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【００９３】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合（カードシミュレータやリーダライタシミュレータといった他の装置が介在していない場合）、ステップＳ１０１６においてＣＰＵ３１１は、チャレンジデータ１ｒとチャレンジデータ１ｃにより正当性検証の演算を行う。すなわち、ステップＳ１００１において生成されたチャレンジデータ１ｒと、ステップＳ１００９，Ｓ１０１０で復号の結果得られたチャレンジデータ１ｃとが比較される。まず、ＤＥＳ暗号化部３１７はチャレンジデータ１ｃ（乱数とチャレンジデータ１ｒとの結合により構成されている）をアクセス鍵で復号する。そして、ＣＰＵ３１１は復号されたデータのうち、チャレンジデータ１ｒに相当する箇所のビット値が、本当にチャレンジデータ１ｒと一致するかをチェックする。もし、両者が対応すれば、ＩＣカード２１２は同じアクセス鍵を持つ適正なＩＣカードであることが確認される。両者が対応しなければ、ＩＣカード２１２は不正なＩＣカードであることになる。
【００９４】
そこで、ステップＳ１０１７においてＣＰＵ３１１は、ステップＳ１０１６の演算結果に基づいて、ＩＣカード２１２が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの該当箇所とが対応しない場合、通信相手としてのＩＣカード２１２が適正でないとして、ＣＰＵ３１１はステップＳ１０１５において相互認証を中止する。
【００９５】
ＩＣカード２１２が適正である場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの対応する部分が一致する場合、リーダライタ２１１によりＩＣカード２１２が認証されたので、さらにＩＣカード２１２がリーダライタ２１１を認証する処理が次のように行われる。
【００９６】
図１１のステップＳ１１１１においてＩCカード２１２のＣＰＵ３５１は、チャレンジデータ２ｃを生成する。このチャレンジデータ２ｃには、ランダムな乱数値が用いられる。ステップＳ１１１２においてＣＰＵ３５１は、選択ビットをランダムに決定する。
【００９７】
ステップＳ１１１３においてＤＥＳ暗号化部３５５は、ステップＳ１１１２において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【００９８】
ステップＳ１１１４においてＣＰＵ３５１は、式（１）に従ってチャレンジデータ２ｃのチェックサムを計算する。
【００９９】
ステップＳ１１１５においてＤＥＳ暗号化部３５５は、ステップＳ１１１４で計算されたチェックサムをアクセス鍵で暗号化する。
【０１００】
ステップＳ１１１６においてマンチェスタ符号化部３５７は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ２ｃ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化され、これが認証メッセージ２Cとされる。なお、チャレンジデータ２ｃは、ＣＰＵ３５１からバスを介して送信調停部３５６に供給され、さらに送信調停部３５６からマンチェスタ符号化部３５７に供給される。
【０１０１】
ステップＳ１１１７においてＡＳＫ変調部３５９は、認証メッセージ２ＣをＡＳＫ変調し、送信する。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０１０２】
リーダライタ２１１のＡＳＫ復調部３２２は、図９のステップＳ１０１８において、ＩＣカード２１２から送信されてきた認証メッセージ２Ｃを受信し、ＡＳＫ復調する。ステップＳ１０１９において受信調停部３２３は、マンチェスタ符号化されている全てのデータをマンチェスタ復号部３２４に供給する。マンチェスタ復号部３２４は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ２ｃ、暗号化されている指定情報、および暗号化されているチェックサムが得られる。
【０１０３】
ステップＳ１０２０においてＤＥＳ暗号化部３１７は、指定情報をアクセス鍵で復号する。すなわち、図１１のステップＳ１１１３においてＩＣカード２１２により暗号化された指定情報が復号される。
【０１０４】
次に、ステップＳ１０２１においてＣＰＵ３１１は、チャレンジデータ２ｒを生成する。具体的には、乱数が生成され、この乱数とチャレンジデータ２ｃを組み合わせた値を、ＤＥＳ暗号化部３１７によりアクセス鍵で暗号化して得られた値がチャレンジデータ２ｒとされる。例えば、 Xビットの乱数とYビットのチャレンジデータ２ｃを結合して、Ｘ＋Ｙビットのデータが生成され、それを暗号化したものがチャレンジデータ２ｒとされる。
【０１０５】
ステップＳ１０２２においてＣＰＵ３１１は、式（１）に従って、チャレンジデータ２ｒのチェックサムを計算する。ステップＳ１０２３においてＤＥＳ暗号化部３１７は、ステップＳ１０２２で計算されたチェックサムをアクセス鍵で暗号化する。
【０１０６】
ステップＳ１０２４においてマンチェスタ符号化部３１９は、ステップＳ１０２１の処理で生成されたチャレンジデータ２ｒのうち、選択ビット以外のビットをマンチェスタ符号化する。ステップＳ１０２５においてＲＺ符号化部３２０は、チャレンジデータ２ｒの選択ビットをＲＺ符号化する。すなわち、ステップＳ１０２０で復号された指定情報により指定されている選択ビットがＲＺ符号化され、それ以外のビットがマンチェスタ符号化される。ステップＳ１０２６でマンチェスタ符号化部３１９は暗号化されているチェックサムをマンチェスタ符号化する。
【０１０７】
ステップＳ１０２７においてＡＳＫ変調部３２１は、認証レスポンス２ＲをＡＳＫ変調し、送信する。認証レスポンス２Ｒには、ステップＳ１０２４，Ｓ１０２５で得られた、指定情報で指定された選択ビットのみがＲＺ符号とされ、その他のビットがマンチェスタ符号とされたチャレンジデータ２ｒと、ステップＳ１０２３で暗号化され、マンチェスタ符号化されたチェックサムとが含まれている。
【０１０８】
ＩＣカード２１２のＡＳＫ復調部３６０は、図１２のステップＳ１１１８において、リーダライタ２１１からの認証レスポンス２Ｒを受信し、ＡＳＫ復調する。これにより、指定情報で指定された選択ビットのみがＲＺ符号とされ、その他のビットがマンチェスタ符号化されているチャレンジデータ２ｒと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【０１０９】
ステップＳ１１１９において受信調停部３６１は、ステップＳ１１１８の処理で復調して得られた、チャレンジデータ２ｒの選択ビット以外のビットをマンチェスタ復号部３６２に供給する。マンチェスタ復号部３６２は、このチャレンジデータ２ｒの選択ビット以外のビットをマンチェスタ復号する。選択ビットは図１１のステップＳ１１１２においてＩＣカード２１２が決定しているので、ＩＣカード２１２には既知である。
【０１１０】
また、ステップＳ１１２０において、受信調停部３６１は、チャレンジデータ２ｒの選択ビットをＲＺ復号部３６３に供給する。ＲＺ復号部３６３は、選択ビットをＲＺ復号する。
【０１１１】
ＣＰＵ３５１は、ステップＳ１１１９のマンチェスタ復号の結果得られたデータと、ステップＳ１１２０のＲＺ復号の結果得られたデータを合成することで、チャレンジデータ２ｒを復元する。
【０１１２】
ステップＳ１１２１においてマンチェスタ復号部３６２は、チェックサムをマンチェスタ復号する。
【０１１３】
ステップＳ１１２２においてＤＥＳ暗号化部３５５は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図９のステップＳ１０２３でリーダライタ２１１により暗号化されたチェックサムが復号される。
【０１１４】
ステップＳ１１２３においてＣＰＵ３５１は、チェックサムを含む検証演算を行う。上述したように式（１）が成立するのかを確認する演算が行われる。そして式（１）中のチェックサムの値として、ステップＳ１１２２で復号された値が用いられる。
【０１１５】
盗聴者はデータ中の一部のビットがマンチェスタ符号ではなく、ＲＺ符号であることをしらない。従って、盗聴者が通信データ全てをマンチェスタ復号すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復号によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、ＩＣカード２１２は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のリーダライタ２１１から直接送られてきたデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【０１１６】
ステップＳ１１２４においてＣＰＵ３５１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ１１２５においてＣＰＵ３５１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０１１７】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合、ステップＳ１１２６においてＣＰＵ３５１は、チャレンジデータ２ｃとチャレンジデータ２ｒにより正当性検証の演算を行う。すなわち、ステップＳ１１１１において生成されたチャレンジデータ２ｃと、ステップＳ１１１９，Ｓ１１２０で復号の結果得られたチャレンジデータ２ｒとが比較される。まず、ＤＥＳ暗号化部３５５はチャレンジデータ２ｒ（乱数とチャレンジデータ２ｃとの結合により構成されている）をアクセス鍵で復号する。そしてＣＰＵ３５１は、復号されたデータのうち、チャレンジデータ２ｃに相当する箇所のビット値が、本当にチャレンジデータ２ｃと一致するどうかチェックする。もし、両者が対応すれば、リーダライタ２１１は同じアクセス鍵をもつ適正なリーダライタであることが確認される。両者が対応しなければ、リーダライタ２１１は不正なリーダライタであることになる。
【０１１８】
そこで、ステップＳ１１２７においてＣＰＵ３５１は、ステップＳ１１２６の演算結果に基づいて、リーダライタ２１１が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒとが対応しない場合、通信相手としてのリーダライタ２１１が適正でないとして、ＣＰＵ３５１はステップＳ１１２５において相互認証を中止する。
【０１１９】
生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒの対応する部分が一致する場合、ステップＳ１１２８において、ＣＰＵ３５１は完了レスポンスを送信する。この完了レスポンスは、マンチェスタ符号化部３５７によりマンチェスタ符号化され、ＡＳＫ変調部３５９によりＡＳＫ変調され、送信される。
【０１２０】
図９のステップＳ１０２８においてリーダライタ２１１は、ＩＣカード２１２からの完了レスポンスを受信する。すなわち、完了レスポンスはＡＳＫ復調部３２２によりＡＳＫ復調され、マンチェスタ復号部３２４によりマンチェスタ復号され、ＣＰＵ３１１により取得される。これにより、リーダライタ２１１は、自身がＩＣカード２１２により認証されたことを知ることができる。
【０１２１】
以上のようにしてリーダライタ２１１とＩＣカード２１２との間で相互認証が行われる。
【０１２２】
［動作のまとめ］
【０１２３】
以上のＩＣカードシステム２０１の処理をまとめると図１４に示されるようになる。リーダライタ２１１の相互認証アルゴリズムＡ１１がＩＣカード２１２に認証メッセージ１Rを送信する。この認証メッセージ１Rには、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムが、マンチェスタ符号化された状態で含まれている。
【０１２４】
ＩＣカード２１２の相互認証アルゴリズムａ１１は、受信データをマンチェスタ復号してチャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムを得る。また相互認証アルゴリズムａ１１は、アクセス鍵で、暗号化されている指定情報とチェックサムを復号する。相互認証アルゴリズムａ１１は、復号されたチャレンジデータ１ｒと新たな乱数値との結合をアクセス鍵で暗号化し、チャレンジデータ１ｃとする。
【０１２５】
チャレンジデータ１ｃのチェックサムが計算され、アクセス鍵で暗号化され、マンチェスタ符号化される。またチャレンジデータ１ｃのうち指定情報で指定された選択ビットがＲＺ符号化され、その他のビットがマンチェスタ符号化される。
【０１２６】
暗号化され、マンチェスタ符号化されたチェックサム、選択ビットがＲＺ符号化され、その他のビットがマンチェスタ符号化されたチャレンジデータ１ｃが、認証レスポンス１Cとしてリーダライタ２１１に送信される。
【０１２７】
リーダライタ２１１の正当性検証アルゴリズムＢ１１は、認証レスポンス１Cに含まれるチェックサムと選択ビット以外のチャレンジデータ１ｃをマンチェスタ復号し、選択ビットのチャレンジデータ１ｃをＲＺ復号する。暗号化されているチェックサムとチャレンジデータ１ｃはさらにアクセス鍵で復号される。
【０１２８】
正当性検証アルゴリズムＢ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者検出処理を実行する。正当性検証アルゴリズムＢ１１は、さらにチャレンジデータ１ｒとチャレンジデータ１ｃの検証演算を実行し、演算結果に基づいてＩＣカード２１２を認証する。
【０１２９】
同様に、ＩＣカード２１２がリーダライタ２１１を認証する処理が行われる。すなわち、ＩＣカード２１２の相互認証アルゴリズムａ１２がリーダライタ２１１に認証メッセージ２Cを送信する。この認証メッセージ２Cには、チャレンジデータ２ｃ、チャレンジデータ２ｃの暗号化されたチェックサム、および暗号化された指定情報が、マンチェスタ符号化された状態で含まれている。
【０１３０】
リーダライタ２１１の相互認証アルゴリズムＡ１２は、認証メッセージ２Cをマンチェスタ復号し、チャレンジデータ２ｃ、チャレンジデータ２ｃの暗号化されたチェックサム、および暗号化された指定情報を得る。チャレンジデータ２ｃと乱数の結合が暗号化され、チャレンジデータ２ｒとされる。
【０１３１】
チャレンジデータ２ｒのチェックサムが計算され、暗号化され、マンチェスタ符号化される。チャレンジデータ２ｒのうち、指定情報で指定された選択ビットがＲＺ符号化され、その他のビットがマンチェスタ符号化される。これらのデータが、認証レスポンス２RとしてＩＣカード２１２に送信される。
【０１３２】
ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、認証レスポンス２Ｒのチェックサムと選択ビット以外のチャレンジデータ２ｒをマンチェスタ復号し、選択ビットのチャレンジデータ２ｒをＲＺ復号する。暗号化されているチャレンジデータ２ｒとチェックサムはさらに復号される。
【０１３３】
正当性検証アルゴリズムｂ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者検出処理を実行する。正当性検証アルゴリズムｂ１１は、さらにチャレンジデータ２ｃとチャレンジデータ２ｒの検証演算を実行し、演算結果に基づいてリーダライタ２１１を認証する。
【０１３４】
認証が成功した場合、ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、リーダライタ２１１に完了レスポンスを返す。
【０１３５】
［盗聴時の動作］
【０１３６】
図１５は、リーダライタ２１１とＩＣカード２１２の間に、カードシミュレータ１１２とリーダライタシミュレータ１１１を介在させた場合の信号の授受を表している。カードシミュレータ１１２は図１に示した従来のＩＣカード１２と同様の機能を有しており、リーダライタシミュレータ１１１も従来のリーダライタ１１と同様の機能を有している。
【０１３７】
リーダライタ２１１の相互認証アルゴリズムＡ１１がＩＣカード２１２に向けて認証メッセージ１Ｒを送信する。この認証メッセージ１Ｒには、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムが、マンチェスタ符号化された状態で含まれている。
【０１３８】
カードシミュレータ１１２は、リーダライタ２１１がＩＣカード２１２に向けて送信した認証メッセージ１Rを傍受すると、それを一旦ＡＳＫ復調し、マンチェスタ復号した後、パーソナルコンピュータ１１３とリーダライタシミュレータ１１１に送信する。パーソナルコンピュータ１１３はこのデータを分析する。リーダライタシミュレータ１１１はカードシミュレータ１１２からの認証メッセージ１Rをマンチェスタ符号化し、ＡＳＫ変調した後、ＩＣカード２１２に送信する。
【０１３９】
ＩＣカード２１２の相互認証アルゴリズムａ１１は、上述したように認証メッセージ１Rに基づいて認証レスポンス１Cを生成し、リーダライタ２１１に向けて送信する。この認証レスポンス１Cには、指定情報により指定された選択ビットがＲＺ符号化され、その他のビットがマンチェスタ符号化されたチャレンジデータ１ｃ、および暗号化され、マンチェスタ符号化されたチェックサムが含まれている。
【０１４０】
リーダライタシミュレータ１１１は、ＩＣカード２１２がリーダライタ２１１に向けて送信した認証レスポンス１Cを傍受すると、それを一旦ＡＳＫ復調し、マンチェスタ復号した後、パーソナルコンピュータ１１３とカードシミュレータ１１２に送信する。パーソナルコンピュータ１１３はリーダライタシミュレータ１１１から供給されたデータを分析する。
【０１４１】
しかしながら、不正な装置であるリーダライタシミュレータ１１１はアクセス鍵を有しておらず、暗号化されたデータを正しく復号することはできない。また、指定情報が暗号化されているので、リーダライタシミュレータ１１１はチャレンジデータ１ｃのビットのうち、どのビットがＲＺ符号化されているのか分からない。従って、リーダライタシミュレータ１１１は、傍受した認証レスポンス１Cを復号して、元の正しいデータを得ることはできない。
【０１４２】
その結果、リーダライタシミュレータ１１１が認証レスポンス１Cを傍受して、ＡＳＫ復調し、マンチェスタ復号してカードシミュレータ１１２に出力するデータは、ＩＣカード２１２がリーダライタ２１１に向けて送信する認証レスポンス１Ｃとは異なるデータとなる。従って、リーダライタシミュレータ１１１からデータの供給を受け、再生成してリーダライタ２１１にデータを送信するカードシミュレータ１１２は、ＩＣカード２１２がリーダライタ２１１からのデータの入力を受けて出力するデータと同じデータを生成することはできない。
【０１４３】
さらにカードシミュレータ１１２も不正な装置であり、アクセス鍵を有しておらず、暗号化されたデータを正しく復号することはできないし、指定情報で指定されたビットをＲＺ符号化したり、ＲＺ復号する機能を有していない。このことからも、カードシミュレータ１１２は、ＩＣカード２１２がリーダライタ２１１からのデータの入力を受けて出力するデータと同じデータを生成することはできない。
【０１４４】
以上のことから、リーダライタ２１１の正当性検証アルゴリズムＢ１１は、チェックサムの式（１）が成立しないことを確認することで、リーダライタ２１１とＩＣカード２１２の間に、他の不正な装置（図１５の例においては、リーダライタシミュレータ１１１とカードシミュレータ１１２）が介在していることを検出することができる。
【０１４５】
同様の原理で、ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、リーダライタ２１１とＩＣカード２１２の間に、他の不正な装置が介在していることを検出することができる。
【０１４６】
このように、盗聴が検出された場合、相互認証を中止するなどの対処が可能になるので、機密の情報が盗まれてしまうおそれが抑制される。
【０１４７】
＜２．第２の実施の形態＞
［動作説明］
第１の実施の形態においては、演算結果が００ｈではなかった場合、直ちに相互認証を中止するようにしたが、同様の結果が所定の回数発生した場合に相互認証を中止させることもできる。図１６乃至図２１は、この場合の実施の形態を表している。
【０１４８】
図１６乃至図１８は、リーダライタ２１１の処理を表し、図１９乃至図２１は、それに対応するＩＣカード２１２の処理を表す。
【０１４９】
図１６のステップＳ１２０１乃至図１７のステップＳ１２２１のリーダライタ２１１の処理と、それに対応する図１９のステップＳ１３０１乃至ステップＳ１３１０のＩＣカード２１２の処理は、リーダライタ２１１がＩＣカード２１２を認証する処理である。図２０のステップＳ１３１１乃至図２１のステップＳ１３３１のＩＣカード２１２の処理と、それに対応する図１８のステップＳ１２２２乃至ステップＳ１２３２のリーダライタ２１１の処理は、ＩＣカード２１２がリーダライタ２１１を認証する処理である。
【０１５０】
図１６のステップＳ１２０２乃至ステップＳ１２０８の処理は、図７のステップＳ１００１乃至ステップＳ１００７の処理と同様の処理である。図１６においては、ステップＳ１２０２の前に、ステップＳ１２０１の処理が付加されている点が、図７の処理と異なっている。
【０１５１】
図１７のステップＳ１２０９乃至ステップＳ１２１５、ステップＳ１２１９乃至ステップＳ１２２１の処理は、図８のステップＳ１００８乃至ステップＳ１０１７の処理と同様の処理である。図１７においては、ステップＳ１２１５とステップＳ１２１９の間に、ステップＳ１２１６乃至ステップＳ１２１８の処理が付加されている点が、図８の処理と異なっている。
【０１５２】
図１８ステップＳ１２２２乃至ステップＳ１２３２、図１９のステップＳ１３０１乃至ステップＳ１３１０の処理は、図９のステップＳ１０１８乃至ステップＳ１０２８と図１０のステップＳ１１０１乃至ステップＳ１１１０処理と同様の処理である。
【０１５３】
図２０のステップＳ１３１２乃至ステップＳ１３１８の処理は、図１１のステップＳ１１１１乃至ステップＳ１１１７の処理と同様の処理である。図２０においては、ステップＳ１３１２の前に、ステップＳ１３１１の処理が付加されている点が、図１１の処理と異なっている。
【０１５４】
図２１のステップＳ１３１９乃至ステップＳ１３２５、ステップＳ１３２８乃至ステップＳ１３３１の処理は、図１２のステップＳ１１１８乃至ステップＳ１１２８の処理と同様の処理である。図２１においては、ステップＳ１３２５とステップＳ１３２８の間に、ステップＳ１３２６とステップＳ１３２７の処理が付加されている点が、図１２の処理と異なっている。
【０１５５】
このように、図１６乃至図２１の処理は、基本的に図７乃至図１２の処理と同様であるので、異なる点のみを説明すると次のようになる。
【０１５６】
すなわち、リーダライタ２１１がＩＣカード２１２を認証するとき、リーダライタ２１１のＣＰＵ３１１は、図１６のステップＳ１２０１において、エラーの発生回数を表す変数Ｅｒｒｏｒを０に初期設定する。
【０１５７】
その後、ステップＳ１２０２乃至ステップＳ１２１５の処理が行われる。ステップＳ１２１５においてチェックサムの演算結果が００ｈではないと判定された場合、ステップＳ１２１６において、ＣＰＵ３１１は変数Ｅｒｒｏｒを１だけインクリメントする。ステップＳ１２１７において、ＣＰＵ３１１はインクリメントした変数Ｅｒｒｏｒが予め設定されている基準値ＴＨより大きいかを判定する。変数Ｅｒｒｏｒが予め設定されている基準値ＴＨ以下である場合、処理はステップＳ１２０２に戻り、それ以降の処理が繰り返される。すなわち、リーダライタ２１１がＩＣカード２１２を認証する処理が繰り返される。
【０１５８】
変数Ｅｒｒｏｒが基準値ＴＨより大きくなった場合、ステップＳ１２１８においてＣＰＵ３１１は、表示部３１６を制御し、「盗聴者有り」の警告メッセージを画像や音声で出力させる。そしてステップＳ１２１９において相互認証処理は中止される。
【０１５９】
同様に、ＩＣカード２１２がリーダライタ２１１を認証するとき、ＩＣカード２１２のＣＰＵ３５１は、図２０のステップＳ１３１１において、エラーの発生回数を表す変数Ｅｒｒｏｒを０に初期設定する。
【０１６０】
その後、ステップＳ１３１２乃至ステップＳ１３２５の処理が行われる。ステップＳ１３２５においてチェックサムの演算結果が００ｈではないと判定された場合、ステップＳ１３２６において、ＣＰＵ３５１は変数Ｅｒｒｏｒを１だけインクリメントする。ステップＳ１２１７において、ＣＰＵ３５１はインクリメントした変数Ｅｒｒｏｒが予め設定されている基準値ＴＨより大きいかを判定する。変数Ｅｒｒｏｒが予め設定されている基準値ＴＨ以下である場合、処理はステップＳ１３１２に戻り、それ以降の処理が繰り返される。すなわち、ＩＣカード２１２がリーダライタ２１１を認証する処理が繰り返される。
【０１６１】
変数Ｅｒｒｏｒが基準値ＴＨより大きくなった場合、ステップＳ１２２８においてＣＰＵ３５１は、相互認証処理を中止する。
【０１６２】
このようにこの実施の形態の場合、チェックサムの演算結果が００ｈでない結果が、予め設定されている回数だけ発生したとき、警告が出力される。従って、チェックサムの演算結果が００ｈでない結果が１回発生したとき、直ちに相互認証処理を中止する第１の実施の形態に比べて、より確実な動作が可能となる。
【０１６３】
第２の実施の形態のその他の動作は第１の実施の形態と同様であるので、その説明は省略する。
【０１６４】
＜３．第３の実施の形態＞
［動作説明］
【０１６５】
第１の実施の形態と第２の実施の形態においては、伝送するビットの一部を指定する符号化方式のビットに変更するようにしたが、全体の符号化方式を変更すること、すなわち全部のビットを変更することもできる。図２２乃至図２７は、この場合の実施の形態を表している。
【０１６６】
図２２のステップＳ１４０１乃至図２３のステップＳ１４１６のリーダライタ２１１の処理と、それに対応する図２５のステップＳ１５０１乃至ステップＳ１５０９のＩＣカード２１２処理は、リーダライタ２１１がＩＣカード２１２を認証する処理である。図２６のステップＳ１５１０乃至図２７のステップＳ１５２６のＩＣカード２１２処理と、それに対応する図２４のステップＳ１４１７乃至ステップＳ１４２６のリーダライタ２１１の処理は、ＩＣカード２１２がリーダライタ２１１を認証する処理である。
【０１６７】
図２２のステップＳ１４０１においてリーダライタ２１１のＣＰＵ３１１は、チャレンジデータ１ｒを生成する。このチャレンジデータ１ｒには、乱数値が用いられる。ステップＳ１４０２においてＣＰＵ３１１は、符号化方式をランダムに決定する。すなわち、この実施の形態の場合、データは基本的にマンチェスタ符号として送信されるのであるが、盗聴を検出するために、データは他の異なる符号化方式の符号化ビットとして送信される。その符号化方式は、例えばＲＺ符号化方式とされる。その符号化方式がここで決定される。勿論符号化方式は、予め用意されているものの中から選択される。
【０１６８】
ステップＳ１４０３においてＤＥＳ暗号化部３１７は、ステップＳ１４０２において決定された符号化方式を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０１６９】
ステップＳ１４０４においてＣＰＵ３１１は、式（１）に従ってチャレンジデータ１ｒのチェックサムを計算する。
【０１７０】
ステップＳ１４０５においてＤＥＳ暗号化部３５５は、ステップＳ１４０４で計算されたチェックサムをアクセス鍵で暗号化する。
【０１７１】
ステップＳ１４０６においてマンチェスタ符号化部３１９は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化される。そしてそれが認証メッセージ１Ｒとされる。
【０１７２】
ステップＳ１４０７においてＡＳＫ変調部３２１は、認証メッセージ１ＲをＡＳＫ変調し、送信する。この認証メッセージ１Ｒには、ステップＳ１４０１で生成されたチャレンジデータ１ｒ、ステップＳ１４０３で暗号化された指定情報、およびステップＳ１４０５で暗号化されたチェックサムが含まれている。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０１７３】
ＩＣカード２１２のＡＳＫ復調部３６０は、図２５のステップＳ１５０１において、リーダライタ２１１から送信されてきた認証メッセージ１Ｒを受信し、ＡＳＫ復調する。
【０１７４】
ステップＳ１５０２において受信調停部３６１は、復調された全てのデータをマンチェスタ復号部３６２に供給する。マンチェスタ復号部３６２は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムが得られる。
【０１７５】
ステップＳ１５０３においてＤＥＳ暗号化部３５５は、指定情報をアクセス鍵で復号する。すなわち、図２２のステップＳ１４０３においてリーダライタ２１１により暗号化された指定情報が復号される。
【０１７６】
次に、ステップＳ１５０４においてＣＰＵ３５１は、乱数を生成し、この乱数とステップＳ１５０２において復号して得たチャレンジデータ１ｒを組み合わせた値を、ＤＥＳ暗号化部３５５に供給し、アクセス鍵で暗号化させることでチャレンジデータ１ｃを生成する。
【０１７７】
ステップＳ１５０５においてＣＰＵ３５１は、上述したように式（１）に基づいて、チェックサムを計算する。ステップＳ１５０６においてＤＥＳ暗号化部３５５は、ステップＳ１５０５で計算されたチェックサムをアクセス鍵で暗号化する。
【０１７８】
ステップＳ１５０７においてマンチェスタ符号化部３５７は、ステップＳ１５０４の処理で生成されたチャレンジデータ１ｃを、復号された指定情報で指定されている符号化方式で符号化する。例えばＲＺ符号化方式が指定されていれば、ＲＺ符号化方式により符号化が行われる。
【０１７９】
ステップＳ１５０８においてマンチェスタ符号化部３５７は、チェックサムをマンチェスタ符号化する。このチェックサムはステップＳ１５０６で暗号化されている。
【０１８０】
ステップＳ１５０９においてＡＳＫ変調部３５９は、認証レスポンス１ＣをＡＳＫ変調し、送信する。認証レスポンス１Cには、ステップＳ１５０３で得られた指定情報により指定された符号化方式で符号化されたチャレンジデータ１ｃと、ステップＳ１５０６で暗号化され、ステップＳ１５０８でマンチェスタ符号化された１バイトのチェックサムとが含まれている。
【０１８１】
リーダライタ２１１のＡＳＫ復調部３２２は、図２３のステップＳ１４０８において、ＩＣカード２１２からの認証レスポンス１Ｃを受信し、ＡＳＫ復調する。これにより、指定情報で指定された符号化方式で符号化されているチャレンジデータ１ｃと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【０１８２】
ステップＳ１４０９において、受信調停部３２３は、チャレンジデータ１ｃを指定した符号化方式に対応する復号部（いまの場合、ＲＺ復号部３２５）に供給する。ＲＺ復号部３２５は、チャレンジデータ１ｃをＲＺ復号する。符号化方式は図２２のステップＳ１４０２においてリーダライタ２１１が決定しているので、リーダライタ２１１には既知である。
【０１８３】
ステップＳ１４１０においてマンチェスタ復号部３２４は、チェックサムをマンチェスタ復号する。
【０１８４】
ステップＳ１４１１においてＤＥＳ暗号化部３１７は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図２５のステップＳ１５０６でＩＣカード２１２により暗号化されたチェックサムが復号される。
【０１８５】
ステップＳ１４１２においてＣＰＵ３１１は、チェックサムを含む式（１）に従って検証演算を行う。式（１）中のチェックサムの値として、ステップＳ１４１１で復号された値が用いられる。
【０１８６】
盗聴者はデータがマンチェスタ符号ではなく、ＲＺ符号であることをしらない。従って、盗聴者が通信データ全てをマンチェスタ復号すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復号によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、リーダライタ２１１は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のＩＣカード２１２から直接送られてきたデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【０１８７】
ステップＳ１４１３においてＣＰＵ３１１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ１４１４においてＣＰＵ３１１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０１８８】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合、ステップＳ１４１５においてＣＰＵ３１１は、チャレンジデータ１ｒとチャレンジデータ１ｃにより正当性検証の演算を行う。すなわち、ステップＳ１４０１において生成したチャレンジデータ１ｒと、ステップＳ１４０９で復号の結果得られたチャレンジデータ１ｃとが比較される。まず、ＤＥＳ暗号化部３１７はチャレンジデータ１ｃ（乱数とチャレンジデータ１ｒとの結合により構成されている）をアクセス鍵で復号する。そして、ＣＰＵ３１１は復号されたデータのうち、チャレンジデータ１ｒに相当する箇所のビット値が、本当にチャレンジデータ１ｒと一致するかチェックする。もし、両者が対応すれば、ＩＣカード２１２は同じアクセス鍵を持つ適正なＩＣカードであることが確認される。両者が対応しなければ、ＩＣカード２１２は不正なＩＣカードであることになる。
【０１８９】
そこで、ステップＳ１４１６においてＣＰＵ３１１は、ステップＳ１４１５の演算結果に基づいて、ＩＣカード２１２が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの該当箇所とが対応しない場合、通信相手としてのＩＣカード２１２が適正でないとして、ＣＰＵ３１１はステップＳ１４１４において相互認証を中止する。
【０１９０】
ＩＣカード２１２が適正である場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの対応する部分が一致する場合、リーダライタ２１１によりＩＣカード２１２が認証されたので、さらにＩＣカード２１２がリーダライタ２１１を認証する処理が次のように行われる。
【０１９１】
図２６のステップＳ１５１０においてＩCカード２１２のＣＰＵ３５１は、チャレンジデータ２ｃを生成する。このチャレンジデータ２ｃには、ランダムな乱数値が用いられる。ステップＳ１５１１においてＣＰＵ３５１は、符号化方式をランダムに決定する。
【０１９２】
ステップＳ１５１２においてＤＥＳ暗号化部３５５は、ステップＳ１５１１において決定された符号化方式を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０１９３】
ステップＳ１５１３においてＣＰＵ３５１は、式（１）に従ってチャレンジデータ２ｃのチェックサムを計算する。
【０１９４】
ステップＳ１５１４においてＤＥＳ暗号化部３５５は、ステップＳ１５１３で計算されたチェックサムをアクセス鍵で暗号化する。
【０１９５】
ステップＳ１５１５においてマンチェスタ符号化部３５７は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ２ｃ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化され、これが認証メッセージ２Cとされる。
【０１９６】
ステップＳ１５１６においてＡＳＫ変調部３５９は、認証メッセージ２ＣをＡＳＫ変調し、送信する。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０１９７】
リーダライタ２１１のＡＳＫ復調部３２２は、図２４のステップＳ１４１７において、ＩＣカード２１２から送信されてきた認証メッセージ２Ｃを受信し、ＡＳＫ復調する。ステップＳ１４１８において受信調停部３２３は、マンチェスタ符号化されている全てのデータをマンチェスタ復号部３２４に供給する。マンチェスタ復号部３２４は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ２ｃ、暗号化されている指定情報、および暗号化されているチェックサムが得られる。
【０１９８】
ステップＳ１４１９においてＤＥＳ暗号化部３１７は、指定情報をアクセス鍵で復号する。すなわち、図２６のステップＳ１５１２においてＩＣカード２１２により暗号化された指定情報が復号される。
【０１９９】
次に、ステップＳ１４２０においてＣＰＵ３１１は、チャレンジデータ２ｒを生成する。具体的には、乱数が生成され、この乱数とチャレンジデータ２ｃを組み合わせた値を、ＤＥＳ暗号化部３１７によりアクセス鍵で暗号化して得られた値がチャレンジデータ２ｒとされる。
【０２００】
ステップＳ１４２１においてＣＰＵ３１１は、式（１）に従って、チャレンジデータ２ｒのチェックサムを計算する。ステップＳ１４２２においてＤＥＳ暗号化部３１７は、ステップＳ１４２１で計算されたチェックサムをアクセス鍵で暗号化する。
【０２０１】
ステップＳ１４２３においてチャレンジデータ２ｒが、ステップＳ１４２３で復号された指定情報で指定された符号化方式で符号化される。いまの場合、ＲＺ符号化部３２０が、チャレンジデータ２ｒを符号化する。ステップＳ１４２４でマンチェスタ符号化部３１９は暗号化されているチェックサムをマンチェスタ符号化する。
【０２０２】
ステップＳ１４２５においてＡＳＫ変調部３２１は、認証レスポンス２ＲをＡＳＫ変調し、送信する。認証レスポンス２Ｒには、指定情報で指定された符号化方式であるＲＺ符号化方式で符号化されたチャレンジデータ２ｒと、ステップＳ１４２２で暗号化され、ステップＳ１４２４でマンチェスタ符号化されたチェックサムとが含まれている。
【０２０３】
ＩＣカード２１２のＡＳＫ復調部３６０は、図２７のステップＳ１５１７において、リーダライタ２１１からの認証レスポンス２Ｒを受信し、ＡＳＫ復調する。これにより、指定情報で指定された符号化方式であるＲＺ符号化方式で符号化されているチャレンジデータ２ｒと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【０２０４】
ステップＳ１５１８において受信調停部３６１は、ステップＳ１５１７の処理で復調して得られた、チャレンジデータ２ｒをＲＺ復号部３６３に供給する。ＲＺ復号部３６３は、選択ビットをＲＺ復号する。すなわち、チャレンジデータ２ｒが指定した符号化方式に対応する復号方式で復号される。符号化方式は図２６のステップＳ１５１１においてＩＣカード２１２が決定しているので、ＩＣカード２１２には既知である。
【０２０５】
ステップＳ１５１９においてマンチェスタ復号部３６２は、チェックサムをマンチェスタ復号する。
【０２０６】
ステップＳ１５２０においてＤＥＳ暗号化部３５５は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図２４のステップＳ１４２２でリーダライタ２１１により暗号化されたチェックサムが復号される。
【０２０７】
ステップＳ１５２１においてＣＰＵ３５１は、チェックサムを含む式（１）に従って検証演算を行う。式（１）中のチェックサムの値として、ステップＳ１５２０で復号された値が用いられる。
【０２０８】
盗聴者はデータがマンチェスタ符号ではなく、ＲＺ符号であることをしらない。従って、盗聴者が通信データ全てをマンチェスタ復号すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復号によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、ＩＣカード２１２は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のリーダライタ２１１から直接送られてきたデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【０２０９】
ステップＳ１５２２においてＣＰＵ３５１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ１５２３においてＣＰＵ３５１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０２１０】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合、ステップＳ１５２４においてＣＰＵ３５１は、チャレンジデータ２ｃとチャレンジデータ２ｒにより正当性検証の演算を行う。すなわち、ステップＳ１５１０において生成したチャレンジデータ２ｃと、ステップＳ１５１８で復号の結果得られたチャレンジデータ２ｒとが比較される。まず、ＤＥＳ暗号化部３５５はチャレンジデータ２ｒ（乱数とチャレンジデータ２ｃとの結合により構成されている）をアクセス鍵で復号する。そしてＣＰＵ３５１は、復号されたデータのうち、チャレンジデータ２ｃに相当する箇所のビット値が、本当にチャレンジデータ２ｃと一致するどうかチェックする。もし、両者が対応すれば、リーダライタ２１１は同じアクセス鍵をもつ適正なリーダライタであることが確認される。両者が対応しなければ、リーダライタ２１１は不正なリーダライタであることになる。
【０２１１】
そこで、ステップＳ１５２５においてＣＰＵ３５１は、ステップＳ１５２４の演算結果に基づいて、リーダライタ２１１が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒとが対応しない場合、通信相手としてのリーダライタ２１１が適正でないとして、ＣＰＵ３５１はステップＳ１５２３において相互認証を中止する。
【０２１２】
生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒの対応する部分が一致する場合、ステップＳ１５２６において、ＣＰＵ３５１は完了レスポンスを送信する。この完了レスポンスは、マンチェスタ符号化部３５７によりマンチェスタ符号化され、ＡＳＫ変調部３５９によりＡＳＫ変調され、送信される。
【０２１３】
図２４のステップＳ１４２６においてリーダライタ２１１は、ＩＣカード２１２からの完了レスポンスを受信する。すなわち、完了レスポンスはＡＳＫ復調部３２２によりＡＳＫ復調され、マンチェスタ復号部３２４によりマンチェスタ復号され、ＣＰＵ３１１により取得される。これにより、リーダライタ２１１は、自身がＩＣカード２１２により認証されたことを知ることができる。
【０２１４】
以上のようにしてリーダライタ２１１とＩＣカード２１２との間で相互認証が行われる。
【０２１５】
［動作のまとめ］
【０２１６】
以上のＩＣカードシステム２０１の処理をまとめると図２８に示されるようになる。リーダライタ２１１の相互認証アルゴリズムＡ１１がＩＣカード２１２に認証メッセージ１Rを送信する。この認証メッセージ１Rには、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムが、マンチェスタ符号化された状態で含まれている。
【０２１７】
ＩＣカード２１２の相互認証アルゴリズムａ１１は、受信データをマンチェスタ復号してチャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムを得る。また相互認証アルゴリズムａ１１は、アクセス鍵で、暗号化されている指定情報とチェックサムを復号する。相互認証アルゴリズムａ１１は、復号されたチャレンジデータ１ｒと新たな乱数値との結合をアクセス鍵で暗号化し、チャレンジデータ１ｃとする。
【０２１８】
チャレンジデータ１ｃのチェックサムが計算され、アクセス鍵で暗号化され、マンチェスタ符号化される。またチャレンジデータ１ｃは、指定情報で指定された符号化方式であるＲＺ符号化方式で符号化される。
【０２１９】
暗号化され、マンチェスタ符号化されたチェックサムと、ＲＺ符号化されチャレンジデータ１ｃが、認証レスポンス１Cとしてリーダライタ２１１に送信される。
【０２２０】
リーダライタ２１１の正当性検証アルゴリズムＢ１１は、認証レスポンス１Cに含まれるチェックサムをマンチェスタ復号し、チャレンジデータ１ｃをＲＺ復号する。暗号化されているチェックサムとチャレンジデータ１ｃはさらにアクセス鍵で復号される。
【０２２１】
正当性検証アルゴリズムＢ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者の検出処理を実行する。正当性検証アルゴリズムＢ１１は、さらにチャレンジデータ１ｒとチャレンジデータ１ｃの検証演算を実行し、演算結果に基づいてＩＣカード２１２を認証する。
【０２２２】
同様に、ＩＣカード２１２がリーダライタ２１１を認証する処理が行われる。すなわち、ＩＣカード２１２の相互認証アルゴリズムａ１２がリーダライタ２１１に認証メッセージ２Cを送信する。この認証メッセージ２Cには、チャレンジデータ２ｃ、チャレンジデータ２ｃの暗号化されたチェックサム、および暗号化された指定情報が、マンチェスタ符号化された状態で含まれている。
【０２２３】
リーダライタ２１１の相互認証アルゴリズムＡ１２は、認証メッセージ２Cをマンチェスタ復号し、チャレンジデータ２ｃ、チャレンジデータ２ｃの暗号化されたチェックサム、および暗号化された指定情報を得る。チャレンジデータ２ｃと乱数の結合が暗号化され、チャレンジデータ２ｒとされる。
【０２２４】
チャレンジデータ２ｒのチェックサムが計算され、暗号化され、マンチェスタ符号化される。チャレンジデータ２ｒは、指定情報で指定された符号化方式であるＲＺ符号化方式で符号化される。これらのデータが、認証レスポンス２RとしてＩＣカード２１２に送信される。
【０２２５】
ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、認証レスポンス２Ｒのチェックサムをマンチェスタ復号し、チャレンジデータ２ｒをＲＺ復号する。暗号化されているチャレンジデータ２ｒとチェックサムはさらに復号される。
【０２２６】
正当性検証アルゴリズムｂ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者検出処理を実行する。正当性検証アルゴリズムｂ１１は、さらにチャレンジデータ２ｃとチャレンジデータ２ｒの検証演算を実行し、演算結果に基づいてリーダライタ２１１を認証する。
【０２２７】
認証が成功した場合、ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、リーダライタ２１１に完了レスポンスを返す。
【０２２８】
＜４．第４の実施の形態＞
［ＩＣカードシステムの構成］
【０２２９】
以上の実施の形態においては、符号化方式を変更するようにしたが、変調方式を変更することもできる。この場合、ＩＣカードシステム２０１は、図２９に示されるように構成される。
【０２３０】
このＩＣカードシステム２０１のリーダライタ２１１は、ＡＳＫ変調方式に関して、ＡＳＫ変調部３２１とＡＳＫ復調部３２２を有する他、ＰＳＫ変調方式に関しても、ＰＳＫ変調部４０１とＰＳＫ復調部４０２を有する。送信調停部３１８は、マンチェスタ符号化部３１９から供給されるデータ、およびバスから供給されるデータを、ＡＳＫ変調部３２１とＰＳＫ変調部４０１に供給する。受信調停部３２３は、ＡＳＫ復調部３２２とＰＳＫ復調部４０２から供給されるデータを、マンチェスタ復号部３２４およびバスに供給する。
【０２３１】
ＩＣカード２１２も、ＡＳＫ変調方式に関して、ＡＳＫ変調部３５９とＡＳＫ復調部３６０を有する他、ＰＳＫ変調方式に関しても、ＰＳＫ変調部４２１とＰＳＫ復調部４２２を有する。送信調停部３５６は、マンチェスタ符号化部３５７から供給されるデータ、およびバスから供給されるデータを、ＡＳＫ変調部３５９とＰＳＫ変調部４２１に供給する。受信調停部３６１は、ＡＳＫ復調部３６０とＰＳＫ復調部４２２から供給されるデータを、マンチェスタ復号部３６２およびバスに供給する。
【０２３２】
その他の構成は、図６における場合と同様であるので、その説明は省略する。
【０２３３】
［動作説明］
【０２３４】
次に図３０乃至図３５を参照して、リーダライタ２１１とＩＣカード２１２の相互認証処理について説明する。図３０乃至図３２は、リーダライタ２１１の処理を表し、図３３乃至図３５は、それに対応するＩＣカード２１２の処理を表す。
【０２３５】
図３０のステップＳ１６０１乃至図３１のステップＳ１６１７のリーダライタ２１１の処理と、それに対応する図３３のステップＳ１７０１乃至ステップＳ１７０９のＩＣカード２１２の処理は、リーダライタ２１１がＩＣカード２１２を認証する処理である。図３４のステップＳ１７１０乃至図３５のステップＳ１７２７のＩＣカード２１２の処理と、それに対応する図３２のステップＳ１６１８乃至ステップＳ１６２７のリーダライタ２１１の処理は、ＩＣカード２１２がリーダライタ２１１を認証する処理である。
【０２３６】
図３０のステップＳ１６０１においてリーダライタ２１１のＣＰＵ３１１は、チャレンジデータ１ｒを生成する。このチャレンジデータ１ｒには、乱数値が用いられる。ステップＳ１６０２においてＣＰＵ３１１は、選択ビットをランダムに決定する。すなわち、この実施の形態の場合、データは基本的にＡＳＫ変調されて送信されるのであるが、盗聴を検出するために、データ中の選択された所定のビットはＰＳＫ変調されて送信される。ここでその選択ビットが決定される。
【０２３７】
ステップＳ１６０３においてＤＥＳ暗号化部３１７は、ステップＳ１６０２において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０２３８】
ステップＳ１６０４においてＣＰＵ３１１は、式（１）に従ってチャレンジデータ１ｒのチェックサムを計算する。
【０２３９】
ステップＳ１６０５においてＤＥＳ暗号化部３５５は、ステップＳ１６０４で計算されたチェックサムをアクセス鍵で暗号化する。
【０２４０】
ステップＳ１６０６においてマンチェスタ符号化部３１９は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化される。そしてそれらが認証メッセージ１Ｒとされる。
【０２４１】
ステップＳ１６０７においてＡＳＫ変調部３２１は、認証メッセージ１ＲをＡＳＫ変調し、送信する。この認証メッセージ１Ｒには、ステップＳ１６０１で生成されたチャレンジデータ１ｒ、ステップＳ１６０３で暗号化された指定情報、およびステップＳ１６０５で暗号化されたチェックサムが含まれている。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０２４２】
ＩＣカード２１２のＡＳＫ復調部３６０は、図３３のステップＳ１７０１において、リーダライタ２１１から送信されてきた認証メッセージ１Ｒを受信し、ＡＳＫ復調する。
【０２４３】
ステップＳ１７０２において受信調停部３６１は、復調された全てのデータをマンチェスタ復号部３６２に供給する。マンチェスタ復号部３６２は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムが得られる。
【０２４４】
ステップＳ１７０３においてＤＥＳ暗号化部３５５は、指定情報をアクセス鍵で復号する。すなわち、図３０のステップＳ１６０３においてリーダライタ２１１により暗号化された指定情報が復号される。
【０２４５】
次に、ステップＳ１７０４においてＣＰＵ３５１は、乱数を生成し、この乱数とステップＳ１７０２において復号して得たチャレンジデータ１ｒを組み合わせた値を、ＤＥＳ暗号化部３５５に供給し、アクセス鍵で暗号化させることでチャレンジデータ１ｃを生成する。具体的には、例えば、Xビットの乱数とYビットのチャレンジデータ１ｒが結合され、Ｘ＋Ｙビットのデータが作成され、それを暗号化したものがチャレンジデータ１ｃとされる。
【０２４６】
ステップＳ１７０５においてＣＰＵ３５１は、式（１）に従って、チェックサムを計算する。ステップＳ１７０６においてＤＥＳ暗号化部３５５は、ステップＳ１７０５で計算されたチェックサムをアクセス鍵で暗号化する。
【０２４７】
ステップＳ１７０７においてマンチェスタ符号化部３５７は、ステップＳ１７０４の処理で生成されたチャレンジデータ１ｃをマンチェスタ符号化する。
【０２４８】
ステップＳ１７０８においてマンチェスタ符号化部３５７は、チェックサムをマンチェスタ符号化する。このチェックサムはステップＳ１７０６で暗号化されている。
【０２４９】
ステップＳ１７０９においてＰＳＫ変調部４２１は、認証レスポンス１Ｃのうちチャレンジデータ１ｃの選択ビットをＰＳＫ変調し、ＡＳＫ変調部３５９は、その他のビットをＡＳＫ変調し、送信する。選択ビットは、ステップＳ１７０３で復号された指定情報により指定されている。
【０２５０】
リーダライタ２１１のＡＳＫ復調部３２２は、図３１のステップＳ１６０８において、ＩＣカード２１２からの認証レスポンス１Ｃを受信し、ＡＳＫ復調する。また、ＰＳＫ復調部４０２も認証レスポンス１Ｃを受信し、ＰＳＫ復調する。これにより、マンチェスタ符号化されているチャレンジデータ１ｃと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【０２５１】
ステップＳ１６０９において、受信調停部３２３は、チャレンジデータ１ｃをマンチェスタ復号部３２４に供給する。マンチェスタ復号部３２４は、チャレンジデータ１ｃをマンチェスタ復号する。ステップＳ１６１０において、ＣＰＵ３１１は、チャレンジデータ１ｃの選択ビットをＰＳＫ変調信号の復調データから取得する。すなわち、チャレンジデータ１ｃの選択ビットをＰＳＫ復調データから取得し、選択ビット以外のビットをＡＳＫ変調信号の復調データから取得し、得られたデータを合成することで、チャレンジデータ１ｃを復元する。選択ビットは図３０のステップＳ１６０２においてリーダライタ２１１が決定しているので、リーダライタ２１１には既知である。
【０２５２】
ステップＳ１６１１においてマンチェスタ復号部３２４は、チェックサムをマンチェスタ復号する。
【０２５３】
ステップＳ１６１２においてＤＥＳ暗号化部３１７は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図３３のステップＳ１７０６でＩＣカード２１２により暗号化されたチェックサムが復号される。
【０２５４】
ステップＳ１６１３においてＣＰＵ３１１は、チェックサムを含む式（１）に従って検証演算を行う。式（１）中のチェックサムの値として、ステップＳ１６１１で復号された値が用いられる。
【０２５５】
盗聴者はデータの選択ビットがＰＳＫ変調されていることをしらない。従って、盗聴者が通信データ全てをＡＳＫ復調すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復調によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、リーダライタ２１１は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のＩＣカード２１２から直接送られてきたデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【０２５６】
ステップＳ１６１４においてＣＰＵ３１１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ１６１５においてＣＰＵ３１１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０２５７】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合、ステップＳ１６１６においてＣＰＵ３１１は、チャレンジデータ１ｒとチャレンジデータ１ｃにより正当性検証の演算を行う。すなわち、ステップＳ１６０１において生成したチャレンジデータ１ｒと、ステップＳ１６１０で復号の結果得られたチャレンジデータ１ｃとが比較される。まず、ＤＥＳ暗号化部３１７はチャレンジデータ１ｃ（乱数とチャレンジデータ１ｒとの結合により構成されている）をアクセス鍵で復号する。そして、ＣＰＵ３１１は復号されたデータのうち、チャレンジデータ１ｒに相当する箇所のビット値が、本当にチャレンジデータ１ｒと一致するかチェックする。もし、両者が対応すれば、ＩＣカード２１２は同じアクセス鍵を持つ適正なＩＣカードであることが確認される。両者が対応しなければ、ＩＣカード２１２は不正なＩＣカードであることになる。
【０２５８】
そこで、ステップＳ１６１７においてＣＰＵ３１１は、ステップＳ１６１６の演算結果に基づいて、ＩＣカード２１２が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの該当箇所とが対応しない場合、通信相手としてのＩＣカード２１２が適正でないとして、ＣＰＵ３１１はステップＳ１６１５において相互認証を中止する。
【０２５９】
ＩＣカード２１２が適正である場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの対応する部分が一致する場合、リーダライタ２１１によりＩＣカード２１２が認証されたので、さらにＩＣカード２１２がリーダライタ２１１を認証する処理が次のように行われる。
【０２６０】
図３４のステップＳ１７１０においてＩCカード２１２のＣＰＵ３５１は、チャレンジデータ２ｃを生成する。このチャレンジデータ２ｃには、ランダムな乱数値が用いられる。ステップＳ１７１１においてＣＰＵ３５１は、選択ビットをランダムに決定する。
【０２６１】
ステップＳ１７１２においてＤＥＳ暗号化部３５５は、ステップＳ１７１１において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０２６２】
ステップＳ１７１３においてＣＰＵ３５１は、式（１）に従ってチャレンジデータ２ｃのチェックサムを計算する。
【０２６３】
ステップＳ１７１４においてＤＥＳ暗号化部３５５は、ステップＳ１７１３で計算されたチェックサムをアクセス鍵で暗号化する。
【０２６４】
ステップＳ１７１５においてマンチェスタ符号化部３５７は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ２ｃ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化され、これが認証メッセージ２Cとされる。
【０２６５】
ステップＳ１７１６においてＡＳＫ変調部３５９は、認証メッセージ２ＣをＡＳＫ変調し、送信する。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０２６６】
リーダライタ２１１のＡＳＫ復調部３２２は、図３２のステップＳ１６１８において、ＩＣカード２１２から送信されてきた認証メッセージ２Ｃを受信し、ＡＳＫ復調する。ステップＳ１６１９において受信調停部３２３は、マンチェスタ符号化されている全てのデータをマンチェスタ復号部３２４に供給する。マンチェスタ復号部３２４は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ２ｃ、暗号化されている指定情報、および暗号化されているチェックサムが得られる。
【０２６７】
ステップＳ１６２０においてＤＥＳ暗号化部３１７は、指定情報をアクセス鍵で復号する。すなわち、図３４のステップＳ１７１２においてＩＣカード２１２により暗号化された指定情報が復号される。
【０２６８】
次に、ステップＳ１６２１においてＣＰＵ３１１は、チャレンジデータ２ｒを生成する。具体的には、乱数が生成され、この乱数とチャレンジデータ２ｃを組み合わせた値を、ＤＥＳ暗号化部３１７によりアクセス鍵で暗号化して得られた値がチャレンジデータ２ｒとされる。例えば、 Xビットの乱数とYビットのチャレンジデータ２ｃを結合して、Ｘ＋Ｙビットのデータが生成され、それを暗号化したものがチャレンジデータ２ｒとされる。
【０２６９】
ステップＳ１６２２においてＣＰＵ３１１は、式（１）に従って、チャレンジデータ２ｒのチェックサムを計算する。ステップＳ１６２３においてＤＥＳ暗号化部３１７は、ステップＳ１６２２で計算されたチェックサムをアクセス鍵で暗号化する。
【０２７０】
ステップＳ１６２４においてマンチェスタ符号化部３１９は、ステップＳ１６２０の処理で生成されたチャレンジデータ２ｒをマンチェスタ符号化する。ステップＳ１６２５でマンチェスタ符号化部３１９は暗号化されているチェックサムをマンチェスタ符号化する。
【０２７１】
ステップＳ１６２６においてＰＳＫ変調部４０１は、認証レスポンス２Ｒのチャレンジデータ２ｒの選択ビットをＰＳＫ変調し、ＡＳＫ変調部３２１はその他のデータをＡＳＫ変調し、送信する。
【０２７２】
ＩＣカード２１２のＡＳＫ復調部３６０は、図３５のステップＳ１７１７において、リーダライタ２１１からの認証レスポンス２Ｒを受信し、ＡＳＫ復調する。また、ＰＳＫ変調部４２２も認証レスポンス２Ｒを受信し、ＰＳＫ復調する。これにより、マンチェスタ符号化されているチャレンジデータ２ｒと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【０２７３】
ステップＳ１７１８において受信調停部３６１は、ステップＳ１７１７の処理で復調して得られた全部のデータをマンチェスタ復号部３６２に供給する。マンチェスタ復号部３６２は、チャレンジデータ２ｒをマンチェスタ復号する。
【０２７４】
ステップＳ１７１９においてＣＰＵ３５１は、チャレンジデータ２ｒの選択ビットを、ＰＳＫ変調信号の復調データから取得する。すなわち、ＣＰＵ３５１は、ＡＳＫ変調信号の復調データから得られた選択ビット以外のデータと、ＰＳＫ変調信号の復調データから得られた選択ビットのデータを合成することで、チャレンジデータ２ｒを復元する。選択ビットは図３４のステップＳ１７１１においてＩＣカード２１２が決定しているので、ＩＣカード２１２には既知である。
【０２７５】
ステップＳ１７２０においてマンチェスタ復号部３６２は、チェックサムをマンチェスタ復号する。
【０２７６】
ステップＳ１７２１においてＤＥＳ暗号化部３５５は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図３２のステップＳ１６２３でリーダライタ２１１により暗号化されたチェックサムが復号される。
【０２７７】
ステップＳ１７２２においてＣＰＵ３５１は、チェックサムを含む式（１）に従って検証演算を行う。式（１）中のチェックサムの値として、ステップＳ１７２１で復号された値が用いられる。
【０２７８】
盗聴者はデータの選択ビットがＰＳＫ変調されていることをしらない。従って、盗聴者が通信データ全てをＡＳＫ復調すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復調によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、ＩＣカード２１２は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のリーダライタ２１１から直接送られてきたデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【０２７９】
ステップＳ１７２３においてＣＰＵ３５１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ１７２４においてＣＰＵ３５１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０２８０】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合、ステップＳ１７２５においてＣＰＵ３５１は、チャレンジデータ２ｃとチャレンジデータ２ｒにより正当性検証の演算を行う。すなわち、ステップＳ１７１０において生成したチャレンジデータ２ｃと、ステップＳ１７１９で復号の結果得られたチャレンジデータ２ｒとが比較される。まず、ＤＥＳ暗号化部３５５はチャレンジデータ２ｒ（乱数とチャレンジデータ２ｃとの結合により構成されている）をアクセス鍵で復号する。そしてＣＰＵ３５１は、復号されたデータのうち、チャレンジデータ２ｃに相当する箇所のビット値が、本当にチャレンジデータ２ｃと一致するどうかチェックする。もし、両者が対応すれば、リーダライタ２１１は同じアクセス鍵をもつ適正なリーダライタであることが確認される。両者が対応しなければ、リーダライタ２１１は不正なリーダライタであることになる。
【０２８１】
そこで、ステップＳ１７２６においてＣＰＵ３５１は、ステップＳ１７２５の演算結果に基づいて、リーダライタ２１１が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒとが対応しない場合、通信相手としてのリーダライタ２１１が適正でないとして、ＣＰＵ３５１はステップＳ１７２４において相互認証を中止する。
【０２８２】
生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒの対応する部分が一致する場合、ステップＳ１７２７において、ＣＰＵ３５１は完了レスポンスを送信する。この完了レスポンスは、マンチェスタ符号化部３５７によりマンチェスタ符号化され、ＡＳＫ変調部３５９によりＡＳＫ変調され、送信される。
【０２８３】
図３２のステップＳ１６２７においてリーダライタ２１１は、ＩＣカード２１２からの完了レスポンスを受信する。すなわち、完了レスポンスはＡＳＫ復調部３２２によりＡＳＫ復調され、マンチェスタ復号部３２４によりマンチェスタ復号され、ＣＰＵ３１１により取得される。これにより、リーダライタ２１１は、自身がＩＣカード２１２により認証されたことを知ることができる。
【０２８４】
以上のようにしてリーダライタ２１１とＩＣカード２１２との間で相互認証が行われる。
【０２８５】
［動作のまとめ］
【０２８６】
以上のＩＣカードシステム２０１の処理をまとめると図３６に示されるようになる。リーダライタ２１１の相互認証アルゴリズムＡ１１がＩＣカード２１２に認証メッセージ１Rを送信する。この認証メッセージ１Rには、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムが、マンチェスタ符号化された状態で含まれている。
【０２８７】
ＩＣカード２１２の相互認証アルゴリズムａ１１は、受信データをマンチェスタ復号してチャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムを得る。また相互認証アルゴリズムａ１１は、アクセス鍵で、暗号化されている指定情報とチェックサムを復号する。相互認証アルゴリズムａ１１は、復号されたチャレンジデータ１ｒと新たな乱数値との結合をアクセス鍵で暗号化し、チャレンジデータ１ｃとする。
【０２８８】
チャレンジデータ１ｃのチェックサムが計算され、アクセス鍵で暗号化され、マンチェスタ符号化される。
【０２８９】
暗号化され、マンチェスタ符号化されたチェックサム、マンチェスタ符号化されたチャレンジデータ１ｃが、認証レスポンス１Cとしてリーダライタ２１１に送信される。このとき、チャレンジデータ１ｃの選択ビットはＰＳＫ変調され、その他のビットはＡＳＫ変調される。
【０２９０】
リーダライタ２１１の正当性検証アルゴリズムＢ１１は、認証レスポンス１Cに含まれるチェックサムとチャレンジデータ１ｃをマンチェスタ復号する。暗号化されているチェックサムとチャレンジデータ１ｃはさらにアクセス鍵で復号される。
【０２９１】
正当性検証アルゴリズムＢ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者検出処理を実行する。正当性検証アルゴリズムＢ１１は、さらにチャレンジデータ１ｒとチャレンジデータ１ｃの検証演算を実行し、演算結果に基づいてＩＣカード２１２を認証する。
【０２９２】
同様に、ＩＣカード２１２がリーダライタ２１１を認証する処理が行われる。すなわち、ＩＣカード２１２の相互認証アルゴリズムａ１２がリーダライタ２１１に認証メッセージ２Cを送信する。この認証メッセージ２Cには、チャレンジデータ２ｃ、チャレンジデータ２ｃの暗号化されたチェックサム、および暗号化された指定情報が、マンチェスタ符号化された状態で含まれている。
【０２９３】
リーダライタ２１１の相互認証アルゴリズムＡ１２は、認証メッセージ２Cをマンチェスタ復号し、チャレンジデータ２ｃ、チャレンジデータ２ｃの暗号化されたチェックサム、および暗号化された指定情報を得る。チャレンジデータ２ｃと乱数の結合が暗号化され、チャレンジデータ２ｒとされる。
【０２９４】
チャレンジデータ２ｒのチェックサムが計算され、暗号化され、マンチェスタ符号化される。チャレンジデータ２ｒがマンチェスタ符号化される。これらのデータが、認証レスポンス２RとしてＩＣカード２１２に送信される。
【０２９５】
ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、認証レスポンス２Ｒのチェックサムとチャレンジデータ２ｒをマンチェスタ復号する。暗号化されているチャレンジデータ２ｒとチェックサムはさらに復号される。
【０２９６】
正当性検証アルゴリズムｂ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者検出処理を実行する。正当性検証アルゴリズムｂ１１は、さらにチャレンジデータ２ｃとチャレンジデータ２ｒの検証演算を実行し、演算結果に基づいてリーダライタ２１１を認証する。
【０２９７】
認証が成功した場合、ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、リーダライタ２１１に完了レスポンスを返す。
【０２９８】
＜５．第５の実施の形態＞
［動作説明］
【０２９９】
第４の実施の形態においては、選択ビットのみの変調方式を変更するようにしたが、チャレンジデータ全部を選択された変調方式で変調することができる。図３７乃至図４２は、この場合の実施の形態を表している。この処理は、図２９のＩＣカードシステム２０１で行われる。
【０３００】
図３７乃至図３９は、リーダライタ２１１の処理を表し、図４０乃至図４２は、それに対応するＩＣカード２１２の処理を表す。
【０３０１】
図３７のステップＳ１８０１乃至図３８のステップＳ１８１６のリーダライタ２１１の処理と、それに対応する図４０のステップＳ１９０１乃至ステップＳ１９０８のＩＣカード２１２の処理は、リーダライタ２１１がＩＣカード２１２を認証する処理である。図４１のステップＳ１９０９乃至図４２のステップＳ１９２５のＩＣカード２１２の処理と、それに対応する図３９のステップＳ１８１７乃至ステップＳ１８２６のリーダライタ２１１の処理は、ＩＣカード２１２がリーダライタ２１１を認証する処理である。
【０３０２】
図３７のステップＳ１８０１においてリーダライタ２１１のＣＰＵ３１１は、チャレンジデータ１ｒを生成する。このチャレンジデータ１ｒには、乱数値が用いられる。ステップＳ１８０２においてＣＰＵ３１１は、変調方式をランダムに決定する。すなわち、この実施の形態の場合、データは基本的にＡＳＫ変調されて送信されるのであるが、盗聴を検出するために、チャレンジデータはＰＳＫ変調されて送信される。ここでその変調方式が決定される。勿論、変調方式は、予め用意されているものの中から選択される。
【０３０３】
ステップＳ１８０３においてＤＥＳ暗号化部３１７は、ステップＳ１８０２において決定された変調方式を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０３０４】
ステップＳ１８０４においてＣＰＵ３１１は、式（１）に従ってチャレンジデータ１ｒのチェックサムを計算する。
【０３０５】
ステップＳ１８０５においてＤＥＳ暗号化部３５５は、ステップＳ１８０４で計算されたチェックサムをアクセス鍵で暗号化する。
【０３０６】
ステップＳ１８０６においてマンチェスタ符号化部３１９は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化される。そしてそれが認証メッセージ１Ｒとされる。
【０３０７】
ステップＳ１８０７においてＡＳＫ変調部３２１は、認証メッセージ１ＲをＡＳＫ変調し、送信する。この認証メッセージ１Ｒには、ステップＳ１８０１で生成されたチャレンジデータ１ｒ、ステップＳ１８０３で暗号化された指定情報、およびステップＳ１８０５で暗号化されたチェックサムが含まれている。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０３０８】
ＩＣカード２１２のＡＳＫ復調部３６０は、図４０のステップＳ１９０１において、リーダライタ２１１から送信されてきた認証メッセージ１Ｒを受信し、ＡＳＫ復調する。
【０３０９】
ステップＳ１９０２において受信調停部３６１は、復調された全てのデータをマンチェスタ復号部３６２に供給する。マンチェスタ復号部３６２は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムが得られる。
【０３１０】
ステップＳ１９０３においてＤＥＳ暗号化部３５５は、指定情報をアクセス鍵で復号する。すなわち、図３７のステップＳ１８０３においてリーダライタ２１１により暗号化された指定情報が復号される。
【０３１１】
次に、ステップＳ１９０４においてＣＰＵ３５１は、乱数を生成し、この乱数とステップＳ１９０２において復号して得たチャレンジデータ１ｒを組み合わせた値を、ＤＥＳ暗号化部３５５に供給し、アクセス鍵で暗号化させることでチャレンジデータ１ｃを生成する。具体的には、例えば、Xビットの乱数とYビットのチャレンジデータ１ｒが結合され、Ｘ＋Ｙビットのデータが作成され、それを暗号化したものがチャレンジデータ１ｃとされる。
【０３１２】
ステップＳ１９０５においてＣＰＵ３５１は、式（１）に従って、チェックサムを計算する。ステップＳ１９０６においてＤＥＳ暗号化部３５５は、ステップＳ１９０５で計算されたチェックサムをアクセス鍵で暗号化する。
【０３１３】
ステップＳ１９０７においてマンチェスタ符号化部３５７は、全データをマンチェスタ符号化する。すなわち、ステップＳ１９０４の処理で生成されたチャレンジデータ１ｃとチェックサムがマンチェスタ符号化される。このチェックサムはステップＳ１７０６で暗号化されている。
【０３１４】
ステップＳ１９０８において変調部は、認証レスポンス１Ｃのチャレンジデータ１ｃを、指定された変調方式で変調し、その他のデータをＡＳＫ変調し、送信する。いまの場合、ステップＳ１９０３で復号された指定情報により、ＰＳＫ変調方式が指定されている。従って、ＰＳＫ変調部４２１がチャレンジデータ１ｃをＰＳＫ変調し、ＡＳＫ変調部３５９がチェックサムをＡＳＫ変調する。
【０３１５】
リーダライタ２１１のＡＳＫ復調部３２２は、図３８のステップＳ１８０８において、ＩＣカード２１２からの認証レスポンス１Ｃを受信し、ＡＳＫ復調する。また、ＰＳＫ復調部４０２も認証レスポンス１Ｃを受信し、ＰＳＫ復調する。これにより、マンチェスタ符号化されているチャレンジデータ１ｃと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【０３１６】
ステップＳ１８０９において、受信調停部３２３は、チャレンジデータ１ｃをマンチェスタ復号部３２４に供給する。マンチェスタ復号部３２４は、チャレンジデータ１ｃをマンチェスタ復号する。ステップＳ１８１０において、マンチェスタ復号部３２４は、チェックサムをマンチェスタ復号する。チャレンジデータ１ｃはＰＳＫ復調信号から得られ、チェックサムはＡＳＫ復調信号から得られる。変調方式は図３７のステップＳ１８０２においてリーダライタ２１１が決定しているので、リーダライタ２１１には既知である。
【０３１７】
ステップＳ１８１１においてＤＥＳ暗号化部３１７は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図４０のステップＳ１９０６でＩＣカード２１２により暗号化されたチェックサムが復号される。
【０３１８】
ステップＳ１８１２においてＣＰＵ３１１は、チェックサムを含む式（１）に従って検証演算を行う。式（１）中のチェックサムの値として、ステップＳ１８１０で復号された値が用いられる。
【０３１９】
盗聴者はチャレンジデータがＰＳＫ変調されていることをしらない。従って、盗聴者が通信データ全てをＡＳＫ復調すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復調によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、リーダライタ２１１は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のＩＣカード２１２から直接送られてきたチャレンジデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【０３２０】
ステップＳ１８１３においてＣＰＵ３１１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ１８１４においてＣＰＵ３１１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０３２１】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合、ステップＳ１８１５においてＣＰＵ３１１は、チャレンジデータ１ｒとチャレンジデータ１ｃにより正当性検証の演算を行う。すなわち、ステップＳ１８０１において生成したチャレンジデータ１ｒと、ステップＳ１８０９で復号の結果得られたチャレンジデータ１ｃとが比較される。まず、ＤＥＳ暗号化部３１７はチャレンジデータ１ｃ（乱数とチャレンジデータ１ｒとの結合により構成されている）をアクセス鍵で復号する。そして、ＣＰＵ３１１は復号されたデータのうち、チャレンジデータ１ｒに相当する箇所のビット値が、本当にチャレンジデータ１ｒと一致するかチェックする。もし、両者が対応すれば、ＩＣカード２１２は同じアクセス鍵を持つ適正なＩＣカードであることが確認される。両者が対応しなければ、ＩＣカード２１２は不正なＩＣカードであることになる。
【０３２２】
そこで、ステップＳ１８１６においてＣＰＵ３１１は、ステップＳ１８１５の演算結果に基づいて、ＩＣカード２１２が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの該当箇所とが対応しない場合、通信相手としてのＩＣカード２１２が適正でないとして、ＣＰＵ３１１はステップＳ１８１４において相互認証を中止する。
【０３２３】
ＩＣカード２１２が適正である場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの対応する部分が一致する場合、リーダライタ２１１によりＩＣカード２１２が認証されたので、さらにＩＣカード２１２がリーダライタ２１１を認証する処理が次のように行われる。
【０３２４】
図４１のステップＳ１９０９においてＩCカード２１２のＣＰＵ３５１は、チャレンジデータ２ｃを生成する。このチャレンジデータ２ｃには、ランダムな乱数値が用いられる。ステップＳ１９１０においてＣＰＵ３５１は、用意されているものの中から変調方式をランダムに決定する。
【０３２５】
ステップＳ１９１１においてＤＥＳ暗号化部３５５は、ステップＳ１９１０において決定された変調方式を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０３２６】
ステップＳ１９１２においてＣＰＵ３５１は、式（１）に従ってチャレンジデータ２ｃのチェックサムを計算する。
【０３２７】
ステップＳ１９１３においてＤＥＳ暗号化部３５５は、ステップＳ１９１２で計算されたチェックサムをアクセス鍵で暗号化する。
【０３２８】
ステップＳ１９１４においてマンチェスタ符号化部３５７は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ２ｃ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化され、これが認証メッセージ２Cとされる。
【０３２９】
ステップＳ１９１５においてＡＳＫ変調部３５９は、認証メッセージ２ＣをＡＳＫ変調し、送信する。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０３３０】
リーダライタ２１１のＡＳＫ復調部３２２は、図３９のステップＳ１８１７において、ＩＣカード２１２から送信されてきた認証メッセージ２Ｃを受信し、ＡＳＫ復調する。ステップＳ１８１８において受信調停部３２３は、マンチェスタ符号化されている全てのデータをマンチェスタ復号部３２４に供給する。マンチェスタ復号部３２４は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ２ｃ、暗号化されている指定情報、および暗号化されているチェックサムが得られる。
【０３３１】
ステップＳ１８１９においてＤＥＳ暗号化部３１７は、指定情報をアクセス鍵で復号する。すなわち、図４１のステップＳ１９１１においてＩＣカード２１２により暗号化された指定情報が復号される。
【０３３２】
次に、ステップＳ１８２０においてＣＰＵ３１１は、チャレンジデータ２ｒを生成する。具体的には、乱数が生成され、この乱数とチャレンジデータ２ｃを組み合わせた値を、ＤＥＳ暗号化部３１７によりアクセス鍵で暗号化して得られた値がチャレンジデータ２ｒとされる。例えば、 Xビットの乱数とYビットのチャレンジデータ２ｃを結合して、Ｘ＋Ｙビットのデータが生成され、それを暗号化したものがチャレンジデータ２ｒとされる。
【０３３３】
ステップＳ１８２１においてＣＰＵ３１１は、式（１）に従って、チャレンジデータ２ｒのチェックサムを計算する。ステップＳ１８２２においてＤＥＳ暗号化部３１７は、ステップＳ１８２１で計算されたチェックサムをアクセス鍵で暗号化する。
【０３３４】
ステップＳ１８２３においてマンチェスタ符号化部３１９は、ステップＳ１８２０の処理で生成されたチャレンジデータ２ｒをマンチェスタ符号化する。ステップＳ１８２４でマンチェスタ符号化部３１９は暗号化されているチェックサムをマンチェスタ符号化する。
【０３３５】
ステップＳ１８２５においてＰＳＫ変調部４０１は、認証レスポンス２Ｒのチャレンジデータ２ｒを指定された変調方式で、すなわちＰＳＫ変調方式で変調し、ＡＳＫ変調部３２１はその他のデータであるチェックサムをＡＳＫ変調し、送信する。
【０３３６】
ＩＣカード２１２のＡＳＫ復調部３６０は、図４２のステップＳ１９１６において、リーダライタ２１１からの認証レスポンス２Ｒを受信し、ＡＳＫ復調する。また、ＰＳＫ変調部４２２も認証レスポンス２Ｒを受信し、ＰＳＫ復調する。これにより、マンチェスタ符号化されているチャレンジデータ２ｒと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【０３３７】
ステップＳ１９１７において受信調停部３６１は、ステップＳ１９１６の処理で復調して得られた全部のデータをマンチェスタ復号部３６２に供給する。マンチェスタ復号部３６２は、チャレンジデータ２ｒをマンチェスタ復号する。
【０３３８】
ステップＳ１９１８においてマンチェスタ復号部３６２は、チェックサムをマンチェスタ復号する。チャレンジデータ２ｒはＰＳＫ復調信号から得られ、チェックサムはＡＳＫ復調信号から得られる。変調方式は図４１のステップＳ１９１０においてＩＣカード２１２が決定しているので、ＩＣカード２１２には既知である。
【０３３９】
ステップＳ１９１９においてＤＥＳ暗号化部３５５は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図３９のステップＳ１８２２でリーダライタ２１１により暗号化されたチェックサムが復号される。
【０３４０】
ステップＳ１９２０においてＣＰＵ３５１は、チェックサムを含む式（１）に従って検証演算を行う。式（１）中のチェックサムの値として、ステップＳ１９１９で復号された値が用いられる。
【０３４１】
盗聴者はチャレンジデータがＰＳＫ変調されていることをしらない。従って、盗聴者が通信データ全てをＡＳＫ復調すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復調によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、ＩＣカード２１２は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のリーダライタ２１１から直接送られてきたデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【０３４２】
ステップＳ１９２１においてＣＰＵ３５１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ１９２２においてＣＰＵ３５１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０３４３】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合、ステップＳ１９２３においてＣＰＵ３５１は、チャレンジデータ２ｃとチャレンジデータ２ｒにより正当性検証の演算を行う。すなわち、ステップＳ１９０９において生成したチャレンジデータ２ｃと、ステップＳ１９１７で復号の結果得られたチャレンジデータ２ｒとが比較される。まず、ＤＥＳ暗号化部３５５はチャレンジデータ２ｒ（乱数とチャレンジデータ２ｃとの結合により構成されている）をアクセス鍵で復号する。そしてＣＰＵ３５１は、復号されたデータのうち、チャレンジデータ２ｃに相当する箇所のビット値が、本当にチャレンジデータ２ｃと一致するどうかチェックする。もし、両者が対応すれば、リーダライタ２１１は同じアクセス鍵をもつ適正なリーダライタであることが確認される。両者が対応しなければ、リーダライタ２１１は不正なリーダライタであることになる。
【０３４４】
そこで、ステップＳ１９２４においてＣＰＵ３５１は、ステップＳ１９２３の演算結果に基づいて、リーダライタ２１１が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒとが対応しない場合、通信相手としてのリーダライタ２１１が適正でないとして、ＣＰＵ３５１はステップＳ１９２２において相互認証を中止する。
【０３４５】
生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒの対応する部分が一致する場合、ステップＳ１９２５において、ＣＰＵ３５１は完了レスポンスを送信する。この完了レスポンスは、マンチェスタ符号化部３５７によりマンチェスタ符号化され、ＡＳＫ変調部３５９によりＡＳＫ変調され、送信される。
【０３４６】
図３９のステップＳ１８２６においてリーダライタ２１１は、ＩＣカード２１２からの完了レスポンスを受信する。すなわち、完了レスポンスはＡＳＫ復調部３２２によりＡＳＫ復調され、マンチェスタ復号部３２４によりマンチェスタ復号され、ＣＰＵ３１１により取得される。これにより、リーダライタ２１１は、自身がＩＣカード２１２により認証されたことを知ることができる。
【０３４７】
以上のようにしてリーダライタ２１１とＩＣカード２１２との間で相互認証が行われる。
【０３４８】
［動作のまとめ］
【０３４９】
以上のＩＣカードシステム２０１の処理をまとめると図４３に示されるようになる。リーダライタ２１１の相互認証アルゴリズムＡ１１がＩＣカード２１２に認証メッセージ１Rを送信する。この認証メッセージ１Rには、チャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムが、マンチェスタ符号化された状態で含まれている。
【０３５０】
ＩＣカード２１２の相互認証アルゴリズムａ１１は、受信データをマンチェスタ復号してチャレンジデータ１ｒ、暗号化された指定情報、および暗号化されたチェックサムを得る。また相互認証アルゴリズムａ１１は、アクセス鍵で、暗号化されている指定情報とチェックサムを復号する。相互認証アルゴリズムａ１１は、復号されたチャレンジデータ１ｒと新たな乱数値との結合をアクセス鍵で暗号化し、チャレンジデータ１ｃとする。
【０３５１】
チャレンジデータ１ｃのチェックサムが計算され、アクセス鍵で暗号化され、マンチェスタ符号化される。
【０３５２】
暗号化され、マンチェスタ符号化されたチェックサム、マンチェスタ符号化されたチャレンジデータ１ｃが、認証レスポンス１Cとしてリーダライタ２１１に送信される。このとき、チャレンジデータ１ｃはＰＳＫ変調され、チェックサムはＡＳＫ変調される。
【０３５３】
リーダライタ２１１の正当性検証アルゴリズムＢ１１は、ＡＳＫ復調またはＰＳＫ復調された認証レスポンス１Cに含まれるチェックサムとチャレンジデータ１ｃをマンチェスタ復号する。暗号化されているチェックサムとチャレンジデータ１ｃはさらにアクセス鍵で復号される。
【０３５４】
正当性検証アルゴリズムＢ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者検出処理を実行する。正当性検証アルゴリズムＢ１１は、さらにチャレンジデータ１ｒとチャレンジデータ１ｃの検証演算を実行し、演算結果に基づいてＩＣカード２１２を認証する。
【０３５５】
同様に、ＩＣカード２１２がリーダライタ２１１を認証する処理が行われる。すなわち、ＩＣカード２１２の相互認証アルゴリズムａ１２がリーダライタ２１１に認証メッセージ２Cを送信する。この認証メッセージ２Cには、チャレンジデータ２ｃ、チャレンジデータ２ｃの暗号化されたチェックサム、および暗号化された指定情報が、マンチェスタ符号化された状態で含まれている。
【０３５６】
リーダライタ２１１の相互認証アルゴリズムＡ１２は、認証メッセージ２Cをマンチェスタ復号し、チャレンジデータ２ｃ、チャレンジデータ２ｃの暗号化されたチェックサム、および暗号化された指定情報を得る。チャレンジデータ２ｃと乱数の結合が暗号化され、チャレンジデータ２ｒとされる。
【０３５７】
チャレンジデータ２ｒのチェックサムが計算され、暗号化され、マンチェスタ符号化される。チャレンジデータ２ｒがマンチェスタ符号化される。これらのデータが、認証レスポンス２RとしてＩＣカード２１２に送信される。このとき、チャレンジデータ２ｒはＰＳＫ変調され、チェックサムはＡＳＫ変調される。
【０３５８】
ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、認証レスポンス２Ｒのチェックサムとチャレンジデータ２ｒをマンチェスタ復号する。暗号化されているチャレンジデータ２ｒとチェックサムはさらに復号される。
【０３５９】
正当性検証アルゴリズムｂ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者検出処理を実行する。正当性検証アルゴリズムｂ１１は、さらにチャレンジデータ２ｃとチャレンジデータ２ｒの検証演算を実行し、演算結果に基づいてリーダライタ２１１を認証する。
【０３６０】
認証が成功した場合、ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、リーダライタ２１１に完了レスポンスを返す。
【０３６１】
＜６．第６の実施の形態＞
［動作説明］
【０３６２】
以上においては、盗聴者の検出と認証処理を同時に行うようにしたが、別々に行うこともできる。図４４乃至図５３はこの場合の実施の形態を表している。この処理は、図６のＩＣカードシステム２０１で行われる。
【０３６３】
図４４乃至図４８は、リーダライタ２１１の処理を表し、図４９乃至図５３は、それに対応するＩＣカード２１２の処理を表す。
【０３６４】
図４４のステップＳ２００１乃至ステップＳ２００８のリーダライタ２１１の処理と、それに対応する図４９のステップＳ２１０１乃至ステップＳ２１０５のＩＣカード２１２の処理は、リーダライタ２１１がＩＣカード２１２を認証する処理である。図４９のステップＳ２１０６乃至図５０のステップＳ２１１４のＩＣカード２１２の処理と、それに対応する図４５のステップＳ２００９乃至ステップＳ２０１４のリーダライタ２１１の処理は、ＩＣカード２１２がリーダライタ２１１を認証する処理である。
【０３６５】
図４６のステップＳ２０１５乃至図４７のステップＳ２０２９のリーダライタ２１１の処理と、それに対応する図５１のステップＳ２１１５乃至ステップＳ２１２４のＩＣカード２１２の処理は、リーダライタ２１１がＩＣカード２１２との間の盗聴者を検出する処理である。図５２のステップＳ２１２５乃至図５３のステップＳ２１４０のＩＣカード２１２の処理と、それに対応する図４８のステップＳ２０３０乃至ステップＳ２０４０のリーダライタ２１１の処理は、ＩＣカード２１２がリーダライタ２１１との間の盗聴者を検出する処理である。
【０３６６】
図４４のステップＳ２００１においてリーダライタ２１１のＣＰＵ３１１は、チャレンジデータ１ｒを生成する。このチャレンジデータ１ｒには、乱数値が用いられる。
【０３６７】
ステップＳ２００２においてマンチェスタ符号化部３１９は、チャレンジデータ１ｒをマンチェスタ符号化する。そしてそれが認証メッセージ１Ｒとされる。
【０３６８】
ステップＳ２００３においてＡＳＫ変調部３２１は、認証メッセージ１ＲをＡＳＫ変調し、送信する。この認証メッセージ１Ｒには、ステップＳ１００１で生成されたチャレンジデータ１ｒが含まれている。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０３６９】
ＩＣカード２１２のＡＳＫ復調部３６０は、図４９のステップＳ２１０１において、リーダライタ２１１から送信されてきた認証メッセージ１Ｒを受信し、ＡＳＫ復調する。
【０３７０】
ステップＳ２１０２においてマンチェスタ復号部３６２は、マンチェスタ符号化されているチャレンジデータ１ｒをマンチェスタ復号する。これにより、チャレンジデータ１ｒが得られる。
【０３７１】
ステップＳ２１０３においてＣＰＵ３５１は、乱数を生成し、この乱数とステップＳ２１０２において復号して得たチャレンジデータ１ｒを組み合わせた値を、ＤＥＳ暗号化部３５５に供給し、アクセス鍵で暗号化させることでチャレンジデータ１ｃを生成する。具体的には、例えば、Xビットの乱数とYビットのチャレンジデータ１ｒが結合され、Ｘ＋Ｙビットのデータが作成され、それを暗号化したものがチャレンジデータ１ｃとされる。
【０３７２】
ステップＳ２１０４においてマンチェスタ符号化部３５７は、ステップＳ２１０３の処理で生成されたチャレンジデータ１ｃをマンチェスタ符号化する。
【０３７３】
ステップＳ２１０５においてＡＳＫ変調部３５９は、認証レスポンス１ＣをＡＳＫ変調し、送信する。認証レスポンス１Cには、マンチェスタ符号化されたチャレンジデータ１ｃが含まれている。
【０３７４】
リーダライタ２１１のＡＳＫ復調部３２２は、図４４のステップＳ２００４において、ＩＣカード２１２からの認証レスポンス１Ｃを受信し、ＡＳＫ復調する。これにより、チャレンジデータ１ｃが得られる。
【０３７５】
ステップＳ２００５において、マンチェスタ復号部３２４は、チャレンジデータ１ｃをマンチェスタ復号する。
【０３７６】
ステップＳ２００６においてＣＰＵ３１１は、チャレンジデータ１ｒとチャレンジデータ１ｃにより正当性検証の演算を行う。すなわち、ステップＳ２００１において生成したチャレンジデータ１ｒと、ステップＳ２００５で復号の結果得られたチャレンジデータ１ｃとが比較される。まず、ＤＥＳ暗号化部３１７はチャレンジデータ１ｃ（乱数とチャレンジデータ１ｒとの結合により構成されている）をアクセス鍵で復号する。そして、ＣＰＵ３１１は復号されたデータのうち、チャレンジデータ１ｒに相当する箇所のビット値が、本当にチャレンジデータ１ｒと一致するかチェックする。もし、両者が対応すれば、ＩＣカード２１２は同じアクセス鍵を持つ適正なＩＣカードであることが確認される。両者が対応しなければ、ＩＣカード２１２は不正なＩＣカードであることになる。
【０３７７】
そこで、ステップＳ２００７においてＣＰＵ３１１は、ステップＳ２００６の演算結果に基づいて、ＩＣカード２１２が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの該当箇所とが対応しない場合、通信相手としてのＩＣカード２１２が適正でないとして、ＣＰＵ３１１はステップＳ２００８において相互認証を中止する。
【０３７８】
ＩＣカード２１２が適正である場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの対応する部分が一致する場合、リーダライタ２１１によりＩＣカード２１２が認証されたので、さらにＩＣカード２１２がリーダライタ２１１を認証する処理が次のように行われる。
【０３７９】
図４９のステップＳ２１０６においてＩCカード２１２のＣＰＵ３５１は、チャレンジデータ２ｃを生成する。このチャレンジデータ２ｃには、ランダムな乱数値が用いられる。
【０３８０】
ステップＳ２１０７においてマンチェスタ符号化部３５７は、チャレンジデータ２ｃをマンチェスタ符号化する。これが認証メッセージ２Cとされる。
【０３８１】
ステップＳ２１０８においてＡＳＫ変調部３５９は、認証メッセージ２ＣをＡＳＫ変調し、送信する。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０３８２】
リーダライタ２１１のＡＳＫ復調部３２２は、図４５のステップＳ２００９において、ＩＣカード２１２から送信されてきた認証メッセージ２Ｃを受信し、ＡＳＫ復調する。ステップＳ２０１０においてマンチェスタ復号部３２４は、マンチェスタ符号化されているチャレンジデータ２ｃをマンチェスタ復号する。これにより、チャレンジデータ２ｃが得られる。
【０３８３】
次に、ステップＳ２０１１においてＣＰＵ３１１は、チャレンジデータ２ｒを生成する。具体的には、乱数が生成され、この乱数とチャレンジデータ２ｃを組み合わせた値を、ＤＥＳ暗号化部３１７によりアクセス鍵で暗号化して得られた値がチャレンジデータ２ｒとされる。例えば、 Xビットの乱数とYビットのチャレンジデータ２ｃを結合して、Ｘ＋Ｙビットのデータが生成され、それを暗号化したものがチャレンジデータ２ｒとされる。
【０３８４】
ステップＳ２０１２においてマンチェスタ符号化部３１９は、ステップＳ２０１１の処理で生成されたチャレンジデータ２ｒをマンチェスタ符号化する。
【０３８５】
ステップＳ２０１３においてＡＳＫ変調部３２１は、認証レスポンス２ＲをＡＳＫ変調し、送信する。認証レスポンス２Ｒには、マンチェスタ符号化されたチャレンジデータ２ｒが含まれている。
【０３８６】
ＩＣカード２１２のＡＳＫ復調部３６０は、図５０のステップＳ２０１９において、リーダライタ２１１からの認証レスポンス２Ｒを受信し、ＡＳＫ復調する。これにより、マンチェスタ符号化されているチャレンジデータ２ｒが得られる。
【０３８７】
ステップＳ２１１０においてマンチェスタ復号部３６２は、このチャレンジデータ２ｒをマンチェスタ復号する。
【０３８８】
ステップＳ２１１１においてＣＰＵ３５１は、チャレンジデータ２ｃとチャレンジデータ２ｒにより正当性検証の演算を行う。すなわち、ステップＳ２１０６において生成したチャレンジデータ２ｃと、ステップＳ２１１０で復号の結果得られたチャレンジデータ２ｒとが比較される。まず、ＤＥＳ暗号化部３５５はチャレンジデータ２ｒ（乱数とチャレンジデータ２ｃとの結合により構成されている）をアクセス鍵で復号する。そしてＣＰＵ３５１は、復号されたデータのうち、チャレンジデータ２ｃに相当する箇所のビット値が、本当にチャレンジデータ２ｃと一致するどうかチェックする。もし、両者が対応すれば、リーダライタ２１１は同じアクセス鍵をもつ適正なリーダライタであることが確認される。両者が対応しなければ、リーダライタ２１１は不正なリーダライタであることになる。
【０３８９】
そこで、ステップＳ２１１２においてＣＰＵ３５１は、ステップＳ２１１１の演算結果に基づいて、リーダライタ２１１が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒとが対応しない場合、通信相手としてのリーダライタ２１１が適正でないとして、ＣＰＵ３５１はステップＳ２１１３において相互認証を中止する。
【０３９０】
生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒの対応する部分が一致する場合、ステップＳ２１１４において、ＣＰＵ３５１は完了レスポンスを送信する。この完了レスポンスは、マンチェスタ符号化部３５７によりマンチェスタ符号化され、ＡＳＫ変調部３５９によりＡＳＫ変調され、送信される。
【０３９１】
図４５のステップＳ２０１４においてリーダライタ２１１は、ＩＣカード２１２からの完了レスポンスを受信する。すなわち、完了レスポンスはＡＳＫ復調部３２２によりＡＳＫ復調され、マンチェスタ復号部３２４によりマンチェスタ復号され、ＣＰＵ３１１により取得される。これにより、リーダライタ２１１は、自身がＩＣカード２１２により認証されたことを知ることができる。
【０３９２】
以上のようにしてリーダライタ２１１とＩＣカード２１２との間で相互認証が行われると、さらに盗聴者検出処理が行われる。
【０３９３】
図４６のステップＳ２０１５においてリーダライタ２１１のＣＰＵ３１１は、チャレンジデータ３ｒを生成する。このチャレンジデータ３ｒには、乱数値が用いられる。ステップＳ２０１６においてＣＰＵ３１１は、選択ビットをランダムに決定する。すなわち、この実施の形態の場合、データは基本的にマンチェスタ符号として送信されるのであるが、盗聴を検出するために、データ中の選択された所定のビットはＲＺ符号とされる。ここでその選択ビットが決定される。
【０３９４】
ステップＳ２０１７においてＤＥＳ暗号化部３１７は、ステップＳ２０１６において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０３９５】
ステップＳ２０１８においてＣＰＵ３１１は、式（１）に従ってチャレンジデータ３ｒのチェックサムを計算する。
【０３９６】
ステップＳ２０１９においてＤＥＳ暗号化部３５５は、ステップＳ２０１８で計算されたチェックサムをアクセス鍵で暗号化する。
【０３９７】
ステップＳ２０２０においてマンチェスタ符号化部３１９は、全データをマンチェスタ符号化する。すなわち、チャレンジデータ３ｒ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化され、それが盗聴者検出メッセージ３Ｒとされる。
【０３９８】
ステップＳ２０２１においてＡＳＫ変調部３２１は、盗聴者検出メッセージ３ＲをＡＳＫ変調し、送信する。この盗聴者検出メッセージ３Ｒには、チャレンジデータ３ｒ、暗号化された指定情報、および暗号化されたチェックサムが、マンチェスタ符号化された状態で含まれている。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０３９９】
ＩＣカード２１２のＡＳＫ復調部３６０は、図５１のステップＳ２１１５において、リーダライタ２１１から送信されてきた盗聴者検出メッセージ３Ｒを受信し、ＡＳＫ復調する。
【０４００】
ステップＳ２１１６においてマンチェスタ復号部３６２は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。
【０４０１】
ステップＳ２１１７においてＤＥＳ暗号化部３５５は、指定情報をアクセス鍵で復号する。すなわち、図４６のステップＳ２０１７においてリーダライタ２１１により暗号化された指定情報が復号される。
【０４０２】
次に、ステップＳ２１１８においてＣＰＵ３５１は、乱数を生成し、この乱数とステップＳ２１１６において復号して得たチャレンジデータ３ｒを組み合わせた値を、ＤＥＳ暗号化部３５５に供給し、アクセス鍵で暗号化させることでチャレンジデータ３ｃを生成する。具体的には、例えば、Xビットの乱数とYビットのチャレンジデータ３ｒが結合され、Ｘ＋Ｙビットのデータが作成され、それを暗号化したものがチャレンジデータ３ｃとされる。
【０４０３】
ステップＳ２１１９においてＣＰＵ３５１は、式（１）に従ってチャレンジデータ３ｃのチェックサムを計算する。
【０４０４】
ステップＳ２１２０においてＤＥＳ暗号化部３５５は、ステップＳ２１１９で計算されたチェックサムをアクセス鍵で暗号化する。
【０４０５】
ステップＳ２１２１においてマンチェスタ符号化部３５７は、ステップＳ２１１８の処理で生成されたチャレンジデータ３ｃのうち、選択ビット以外のビットをマンチェスタ符号化する。ステップＳ２１２２においてＲＺ符号化部３５８は、チャレンジデータ３ｃの選択ビットをＲＺ符号化する。すなわち、ステップＳ２１１７で復号された指定情報により指定されている選択ビットがＲＺ符号化され、それ以外のビットがマンチェスタ符号化される。
【０４０６】
ステップＳ２１２３においてマンチェスタ符号化部３５７は、チェックサムをマンチェスタ符号化する。このチェックサムはステップＳ２１２０で暗号化されている。
【０４０７】
ステップＳ２１２４においてＡＳＫ変調部３５９は、認証レスポンス３ＣをＡＳＫ変調し、送信する。認証レスポンス３Cには、指定情報で指定された選択ビットのみがＲＺ符号とされ、その他のビットがマンチェスタ符号とされたチャレンジデータ３ｃと、マンチェスタ符号化されたチェックサムとが含まれている。
【０４０８】
リーダライタ２１１のＡＳＫ復調部３２２は、図４７のステップＳ２０２２において、ＩＣカード２１２からの認証レスポンス３Ｃを受信し、ＡＳＫ復調する。これにより、指定情報で指定された選択ビットのみがＲＺ符号とされ、その他のビットがマンチェスタ符号化されているチャレンジデータ３ｃと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【０４０９】
ステップＳ２０２３において、マンチェスタ復号部３２４は、チャレンジデータ３ｃの選択ビット以外のビットをマンチェスタ復号する。選択ビットは図４６のステップＳ２０１６においてリーダライタ２１１が決定しているので、リーダライタ２１１には既知である。
【０４１０】
また、ステップＳ２０２４において、ＲＺ復号部３２５は、チャレンジデータ３ｃの選択ビットをＲＺ復号する。
【０４１１】
ＣＰＵ３１１は、ステップＳ２０２３のマンチェスタ復号の結果得られたデータと、ステップＳ２０２４のＲＺ復号の結果得られたデータを合成することで、チャレンジデータ３ｃを復元する。
【０４１２】
ステップＳ２０２５においてマンチェスタ復号部３２４は、チェックサムをマンチェスタ復号する。
【０４１３】
ステップＳ２０２６においてＤＥＳ暗号化部３１７は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図５１のステップＳ２１２０でＩＣカード２１２により暗号化されたチェックサムが復号される。
【０４１４】
ステップＳ２０２７においてＣＰＵ３１１は、チェックサムを含む式（１）に従って検証演算を行う。式（１）中のチェックサムの値として、ステップＳ２０２６で復号された値が用いられる。
【０４１５】
盗聴者はデータ中の一部のビットがマンチェスタ符号ではなく、ＲＺ符号であることをしらない。従って、盗聴者が通信データ全てをマンチェスタ復号すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復号によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、リーダライタ２１１は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のＩＣカード２１２から直接送られてきたデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【０４１６】
ステップＳ２０２８においてＣＰＵ３１１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ２０２９においてＣＰＵ３１１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０４１７】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合、今度はＩＣカード  ２１２が盗聴者検出処理を行う。
【０４１８】
すなわち、図５２のステップＳ２１２５においてＩCカード２１２のＣＰＵ３５１は、チャレンジデータ４ｃを生成する。このチャレンジデータ４ｃには、ランダムな乱数値が用いられる。ステップＳ２１２６においてＣＰＵ３５１は、選択ビットをランダムに決定する。
【０４１９】
ステップＳ２１２７においてＤＥＳ暗号化部３５５は、ステップＳ２１２６において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０４２０】
ステップＳ２１２８においてＣＰＵ３５１は、式（１）に従ってチャレンジデータ４ｃのチェックサムを計算する。
【０４２１】
ステップＳ２１２９においてＤＥＳ暗号化部３５５は、ステップＳ２１２８で計算されたチェックサムをアクセス鍵で暗号化する。
【０４２２】
ステップＳ２１３０においてマンチェスタ符号化部３５７は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ４ｃ、暗号化された指定情報、および暗号化されたチェックサムがマンチェスタ符号化され、これが認証メッセージ４Cとされる。
【０４２３】
ステップＳ２１３１においてＡＳＫ変調部３５９は、認証メッセージ４ＣをＡＳＫ変調し、送信する。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０４２４】
リーダライタ２１１のＡＳＫ復調部３２２は、図４８のステップＳ２０３０において、ＩＣカード２１２から送信されてきた認証メッセージ４Ｃを受信し、ＡＳＫ復調する。ステップＳ２０３１においてマンチェスタ復号部３２４は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ４ｃ、暗号化されている指定情報、および暗号化されているチェックサムが得られる。
【０４２５】
ステップＳ２０３２においてＤＥＳ暗号化部３１７は、指定情報をアクセス鍵で復号する。すなわち、図５２のステップＳ２１２７においてＩＣカード２１２により暗号化された指定情報が復号される。
【０４２６】
次に、ステップＳ２０２３においてＣＰＵ３１１は、チャレンジデータ４ｒを生成する。具体的には、乱数が生成され、この乱数とチャレンジデータ４ｃを組み合わせた値を、ＤＥＳ暗号化部３１７によりアクセス鍵で暗号化して得られた値がチャレンジデータ４ｒとされる。例えば、 Xビットの乱数とYビットのチャレンジデータ４ｃを結合して、Ｘ＋Ｙビットのデータが生成され、それを暗号化したものがチャレンジデータ４ｒとされる。
【０４２７】
ステップＳ２０３４においてＣＰＵ３１１は、式（１）に従って、チャレンジデータ４ｒのチェックサムを計算する。ステップＳ２０３５においてＤＥＳ暗号化部３１７は、ステップＳ２０３４で計算されたチェックサムをアクセス鍵で暗号化する。
【０４２８】
ステップＳ２０３６においてマンチェスタ符号化部３１９は、ステップＳ２０３３の処理で生成されたチャレンジデータ４ｒのうち、選択ビット以外のビットをマンチェスタ符号化する。ステップＳ２０３７においてＲＺ符号化部３２０は、チャレンジデータ４ｒの選択ビットをＲＺ符号化する。すなわち、ステップＳ２０３２で復号された指定情報により指定されている選択ビットがＲＺ符号化され、それ以外のビットがマンチェスタ符号化される。ステップＳ２０３８でマンチェスタ符号化部３１９は暗号化されているチェックサムをマンチェスタ符号化する。
【０４２９】
ステップＳ２０３９においてＡＳＫ変調部３２１は、盗聴者検出レスポンス４ＲをＡＳＫ変調し、送信する。盗聴者検出レスポンス４Ｒには、指定情報で指定された選択ビットのみがＲＺ符号とされ、その他のビットがマンチェスタ符号とされたチャレンジデータ４ｒと、マンチェスタ符号化されたチェックサムとが含まれている。
【０４３０】
ＩＣカード２１２のＡＳＫ復調部３６０は、図５３のステップＳ２１３２において、リーダライタ２１１からの盗聴者検出レスポンス４Ｒを受信し、ＡＳＫ復調する。これにより、指定情報で指定された選択ビットのみがＲＺ符号とされ、その他のビットがマンチェスタ符号化されているチャレンジデータ４ｒと、暗号化され、マンチェスタ符号化されているチェックサムが得られる。
【０４３１】
ステップＳ２１３３においてマンチェスタ復号部３６２は、チャレンジデータ４ｒの選択ビット以外のビットをマンチェスタ復号する。選択ビットは図５２のステップＳ２１２６においてＩＣカード２１２が決定しているので、ＩＣカード２１２には既知である。
【０４３２】
また、ステップＳ２１３４において、ＲＺ復号部３６３は、チャレンジデータ４ｒの選択ビットをＲＺ復号する。
【０４３３】
ＣＰＵ３５１は、ステップＳ２１３３のマンチェスタ復号の結果得られたデータに、ステップＳ２１３４のＲＺ復号の結果得られたデータを合成することで、チャレンジデータ４ｒを復元する。
【０４３４】
ステップＳ２１３５においてマンチェスタ復号部３６２は、チェックサムをマンチェスタ復号する。
【０４３５】
ステップＳ２１３６においてＤＥＳ暗号化部３５５は、暗号化されているチェックサムをアクセス鍵で復号する。すなわち図４８のステップＳ２０３５でリーダライタ２１１により暗号化されたチェックサムが復号される。
【０４３６】
ステップＳ２１３７においてＣＰＵ３５１は、チェックサムを含む式（１）に従って検証演算を行う。式（１）中のチェックサムの値として、ステップＳ２１３５で復号された値が用いられる。
【０４３７】
盗聴者はデータ中の一部のビットがマンチェスタ符号ではなく、ＲＺ符号であることをしらない。従って、盗聴者が通信データ全てをマンチェスタ復号すると、データに誤りが発生するが、チェックサムは暗号化されているので、チェックサムから復号によりデータに誤りが発生したか否かを盗聴者は検出できない。一方、ＩＣカード２１２は、暗号化されたチェックサムを復号することができ、チェックサムを含む式（１）の検証演算を行える。盗聴者が存在する場合、データに誤りが発生しているので、式（１）の左辺の項で計算された値は、００ｈにならない。これに対して、正規のリーダライタ２１１から直接送られてきたデータに基づき、式（１）の左辺の項で計算された値は、００ｈになる。そこで、計算の結果が００ｈになるか否かで、盗聴者の有無が検出される。
【０４３８】
ステップＳ２１３８においてＣＰＵ３５１は、演算結果が００ｈであるかを判定する。演算結果が００ｈではない場合、ステップＳ２１３９においてＣＰＵ３５１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０４３９】
演算結果が００ｈである場合、すなわち、盗聴者が存在しない場合、ステップＳ２１４０において、ＣＰＵ３５１は盗聴者検出完了レスポンスを送信する。この盗聴者検出完了レスポンスは、マンチェスタ符号化部３５７によりマンチェスタ符号化され、ＡＳＫ変調部３５９によりＡＳＫ変調され、送信される。
【０４４０】
図４８のステップＳ２０４０においてリーダライタ２１１は、ＩＣカード２１２からの盗聴者検出完了レスポンスを受信する。すなわち、盗聴者検出完了レスポンスはＡＳＫ復調部３２２によりＡＳＫ復調され、マンチェスタ復号部３２４によりマンチェスタ復号され、ＣＰＵ３１１により取得される。これにより、リーダライタ２１１は、自身がＩＣカード２１２により認証されたことを知ることができる。
【０４４１】
以上のようにしてリーダライタ２１１とＩＣカード２１２との間で盗聴者検出処理が行われる。
【０４４２】
［動作のまとめ］
【０４４３】
以上のＩＣカードシステム２０１の処理をまとめると図５４に示されるようになる。リーダライタ２１１の相互認証アルゴリズムＡ１１がＩＣカード２１２に認証メッセージ１Rを送信する。この認証メッセージ１Rには、チャレンジデータ１ｒがマンチェスタ符号化された状態で含まれている。
【０４４４】
ＩＣカード２１２の相互認証アルゴリズムａ１１は、受信データをマンチェスタ復号してチャレンジデータ１ｒを得る。相互認証アルゴリズムａ１１は、復号されたチャレンジデータ１ｒと新たな乱数値との結合をアクセス鍵で暗号化し、チャレンジデータ１ｃとする。
【０４４５】
チャレンジデータ１ｃはマンチェスタ符号化される。マンチェスタ符号化されたチャレンジデータ１ｃが、認証レスポンス１Cとしてリーダライタ２１１に送信される。
【０４４６】
リーダライタ２１１の正当性検証アルゴリズムＢ１１は、認証レスポンス１Cに含まれるチャレンジデータ１ｃをマンチェスタ復号する。
【０４４７】
正当性検証アルゴリズムＢ１１は、チャレンジデータ１ｒとチャレンジデータ１ｃの検証演算を実行し、演算結果に基づいてＩＣカード２１２を認証する。
【０４４８】
同様に、ＩＣカード２１２がリーダライタ２１１を認証する処理が行われる。すなわち、ＩＣカード２１２の相互認証アルゴリズムａ１２がリーダライタ２１１に認証メッセージ２Cを送信する。この認証メッセージ２Cには、チャレンジデータ２ｃがマンチェスタ符号化された状態で含まれている。
【０４４９】
リーダライタ２１１の相互認証アルゴリズムＡ１２は、認証メッセージ２Cをマンチェスタ復号する。そして相互認証アルゴリズムＡ１２は、チャレンジデータ２ｃと乱数の結合を暗号化し、チャレンジデータ２ｒを生成する。
【０４５０】
チャレンジデータ２ｒはマンチェスタ符号化され、認証レスポンス２RとしてＩＣカード２１２に送信される。
【０４５１】
ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、認証レスポンス２Ｒのチャレンジデータ２ｒを復号する。そして正当性検証アルゴリズムｂ１１は、チャレンジデータ２ｃとチャレンジデータ２ｒの検証演算を実行し、演算結果に基づいてリーダライタ２１１を認証する。
【０４５２】
認証が成功した場合、ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、リーダライタ２１１に完了レスポンスを返す。
【０４５３】
さらに盗聴者検出のため、次のような処理が行われる。すなわち、リーダライタ２１１の相互認証アルゴリズムＡ１１がＩＣカード２１２に盗聴者検出メッセージ３Rを送信する。この盗聴者検出メッセージ３Rには、チャレンジデータ３ｒ、暗号化された指定情報、および暗号化されたチェックサムが、マンチェスタ符号化された状態で含まれている。
【０４５４】
ＩＣカード２１２の相互認証アルゴリズムａ１１は、受信データをマンチェスタ復号してチャレンジデータ３ｒ、暗号化された指定情報、および暗号化されたチェックサムを得る。また相互認証アルゴリズムａ１１は、アクセス鍵で、暗号化されている指定情報とチェックサムを復号する。相互認証アルゴリズムａ１１は、復号されたチャレンジデータ３ｒと新たな乱数値との結合をアクセス鍵で暗号化し、チャレンジデータ３ｃとする。
【０４５５】
チャレンジデータ３ｃのチェックサムが計算され、アクセス鍵で暗号化され、マンチェスタ符号化される。またチャレンジデータ３ｃのうち指定情報で指定された選択ビットがＲＺ符号化され、その他のビットがマンチェスタ符号化される。
【０４５６】
暗号化され、マンチェスタ符号化されたチェックサム、選択ビットがＲＺ符号化され、その他のビットがマンチェスタ符号化されたチャレンジデータ３ｃが、盗聴者検出レスポンス３Cとしてリーダライタ２１１に送信される。
【０４５７】
リーダライタ２１１の正当性検証アルゴリズムＢ１１は、盗聴者検出レスポンス３Cに含まれるチェックサムと選択ビット以外のチャレンジデータ３ｃをマンチェスタ復号し、選択ビットのチャレンジデータ３ｃをＲＺ復号する。暗号化されているチェックサムとチャレンジデータ１ｃはさらにアクセス鍵で復号される。
【０４５８】
正当性検証アルゴリズムＢ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者検出処理を実行する。
【０４５９】
同様に、ＩＣカード２１２がリーダライタ２１１との間の盗聴者検出処理を行う。すなわち、ＩＣカード２１２の相互認証アルゴリズムａ１２がリーダライタ２１１に盗聴者検出メッセージ４Cを送信する。この盗聴者検出メッセージ４Cには、チャレンジデータ４ｃ、チャレンジデータ４ｃの暗号化されたチェックサム、および暗号化された指定情報が、マンチェスタ符号化された状態で含まれている。
【０４６０】
リーダライタ２１１の相互認証アルゴリズムＡ１２は、盗聴者検出メッセージ４Cをマンチェスタ復号し、チャレンジデータ４ｃ、チャレンジデータ４ｃの暗号化されたチェックサム、および暗号化された指定情報を得る。チャレンジデータ４ｃと乱数の結合が暗号化され、チャレンジデータ４ｒとされる。
【０４６１】
チャレンジデータ４ｒのチェックサムが計算され、暗号化され、マンチェスタ符号化される。チャレンジデータ４ｒのうち、指定情報で指定された選択ビットがＲＺ符号化され、その他のビットがマンチェスタ符号化される。これらのデータが、認証レスポンス４RとしてＩＣカード２１２に送信される。
【０４６２】
ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、盗聴者検出レスポンス４Ｒのチェックサムと選択ビット以外のチャレンジデータ４ｒをマンチェスタ復号し、選択ビットのチャレンジデータ４ｒをＲＺ復号する。暗号化されているチャレンジデータ４ｒとチェックサムはさらに復号される。
【０４６３】
正当性検証アルゴリズムｂ１１は、チェックサムを式（１）に基づいて検証演算し、演算結果に基づいて盗聴者検出処理を実行する。
【０４６４】
盗聴者検出処理で非盗聴が確認された場合、ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、リーダライタ２１１に盗聴者検出完了レスポンスを返す。
【０４６５】
＜７．第７の実施の形態＞
［動作説明］
【０４６６】
チェックサムではなく、指定されたビットの指定された符号の有無から盗聴者検出処理を行うこともできる。図５５乃至図６０はこの場合の実施の形態を表している。この処理は、図６のICカードシステム２０１により実行される。
【０４６７】
図５５乃至図５７は、リーダライタ２１１の処理を表し、図５８乃至図６０は、それに対応するＩＣカード２１２の処理を表す。
【０４６８】
図５５のステップＳ２２０１乃至図５６のステップＳ２２１４のリーダライタ２１１の処理と、それに対応する図５８のステップＳ２３０１乃至ステップＳ２３０７のＩＣカード２１２処理は、リーダライタ２１１がＩＣカード２１２を認証する処理である。図５９のステップＳ２３０８乃至図６０のステップＳ２３２２のＩＣカード２１２処理と、それに対応する図５７のステップＳ２２１５乃至ステップＳ２２２２のリーダライタ２１１の処理は、ＩＣカード２１２がリーダライタ２１１を認証する処理である。
【０４６９】
図５５のステップＳ２２０１においてリーダライタ２１１のＣＰＵ３１１は、チャレンジデータ１ｒを生成する。このチャレンジデータ１ｒには、乱数値が用いられる。ステップＳ２２０２においてＣＰＵ３１１は、選択ビットをランダムに決定する。すなわち、この実施の形態の場合、データは基本的にマンチェスタ符号として送信されるのであるが、盗聴を検出するために、データ中の選択された所定のビットはＲＺ符号とされる。ここでその選択ビットが決定される。
【０４７０】
ステップＳ２３０３においてＤＥＳ暗号化部３１７は、ステップＳ２２０２において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０４７１】
ステップＳ２２０４においてＣＰＵ３１１は、選択ビットの値を決定する。選択ビットはＲＺ符号化されるので、このビット値としては、例えば高（１）または低（０）のレベルが決定される。
【０４７２】
ステップＳ２２０５において、ＤＥＳ暗号化部３５５は、ステップＳ２２０４で決定された選択ビットの値を指定する指定情報をアクセス鍵で暗号化する。
【０４７３】
ステップＳ２２０６においてマンチェスタ符号化部３１９は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ１ｒ、暗号化された選択ビットの位置の指定情報、および暗号化された選択ビットの値の指定情報がマンチェスタ符号化される。そしてそれが認証メッセージ１Ｒとされる。
【０４７４】
ステップＳ２２０７においてＡＳＫ変調部３２１は、認証メッセージ１ＲをＡＳＫ変調し、送信する。この認証メッセージ１Ｒには、チャレンジデータ１ｒ、暗号化された位置の指定情報、および暗号化された値の指定情報が含まれている。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０４７５】
ＩＣカード２１２のＡＳＫ復調部３６０は、図５８のステップＳ２３０１において、リーダライタ２１１から送信されてきた認証メッセージ１Ｒを受信し、ＡＳＫ復調する。
【０４７６】
ステップＳ２３０２においてマンチェスタ復号部３６２は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ１ｒ、暗号化された位置の指定情報、および暗号化された値の指定情報が得られる。
【０４７７】
ステップＳ２３０３においてＤＥＳ暗号化部３５５は、指定情報をアクセス鍵で復号する。すなわち、図５５のステップＳ２２０３，Ｓ２２０５においてリーダライタ２１１により暗号化された位置と値の指定情報が復号される。
【０４７８】
次に、ステップＳ２３０４においてＣＰＵ３５１は、乱数を生成し、この乱数とステップＳ２３０２において復号して得たチャレンジデータ１ｒを組み合わせた値を、ＤＥＳ暗号化部３５５に供給し、アクセス鍵で暗号化させることでチャレンジデータ１ｃを生成する。具体的には、例えば、Xビットの乱数とYビットのチャレンジデータ１ｒが結合され、Ｘ＋Ｙビットのデータが作成され、それを暗号化したものがチャレンジデータ１ｃとされる。
【０４７９】
ステップＳ２３０５においてＣＰＵ３５１は、マンチェスタ符号化部３５７は、ステップＳ２３０４の処理で生成されたチャレンジデータ１ｃのうち、選択ビット以外のビットをマンチェスタ符号化する。ステップＳ２３０６においてＲＺ符号化部３５８は、チャレンジデータ１ｃの選択ビットを指定された値にＲＺ符号化する。すなわち、ステップＳ２３０３で復号された位置の指定情報により指定されている選択ビットが、値の指定情報で指定されている値にＲＺ符号化され、それ以外のビットがマンチェスタ符号化される。
【０４８０】
ステップＳ２３０７においてＡＳＫ変調部３５９は、認証レスポンス１ＣをＡＳＫ変調し、送信する。認証レスポンス１Cには、指定情報で指定された選択ビットのみが、指定された値にＲＺ符号とされ、その他のビットがマンチェスタ符号とされたチャレンジデータ１ｃが含まれている。
【０４８１】
リーダライタ２１１のＡＳＫ復調部３２２は、図５６のステップＳ２２０８において、ＩＣカード２１２からの認証レスポンス１Ｃを受信し、ＡＳＫ復調する。これにより、指定情報で指定された選択ビットのみが、指定された値にＲＺ符号とされ、その他のビットがマンチェスタ符号化されているチャレンジデータ１ｃが得られる。
【０４８２】
ステップＳ２２０９において、マンチェスタ復号部３２４は、チャレンジデータ１ｃの選択ビット以外のビットをマンチェスタ復号する。選択ビットは図５５のステップＳ２２０２においてリーダライタ２１１が決定しているので、リーダライタ２１１には既知である。
【０４８３】
また、ステップＳ２２１０において、ＲＺ復号部３２５は、チャレンジデータ１ｃの選択ビットをＲＺ復号する。
【０４８４】
ＣＰＵ３１１は、ステップＳ２２０９のマンチェスタ復号の結果得られたデータと、ステップＳ２２１０のＲＺ復号の結果得られたデータを合成することで、チャレンジデータ１ｃを復元する。
【０４８５】
ステップＳ２２１１においてＣＰＵ３１１は、選択ビットの値は指定された値であるかを判定する。すなわち、指定されたビット位置に、指定された値のＲＺ符号が存在するかが判定される。
【０４８６】
盗聴者はデータ中の指定されたビットが指定された値のＲＺ符号であることをしらない。従って、カードシミュレータとリーダライタシミュレータを介して送信されてくるデータは、データ中の指定されたビットが指定された値のＲＺ符号にはなっていない。これにより、盗聴者の存在が検出される。
【０４８７】
盗聴者の存在が検出された場合、ＣＰＵ３１１はステップＳ２２１４において相互認証を中止する。
【０４８８】
盗聴者の存在が検出されない場合、ステップＳ２２１２においてＣＰＵ３１１は、チャレンジデータ１ｒとチャレンジデータ１ｃにより正当性検証の演算を行う。すなわち、ステップＳ２２０１において生成したチャレンジデータ１ｒと、ステップＳ２２０９，Ｓ２２１０で復号の結果得られたチャレンジデータ１ｃとが比較される。まず、ＤＥＳ暗号化部３１７はチャレンジデータ１ｃ（乱数とチャレンジデータ１ｒとの結合により構成されている）をアクセス鍵で復号する。そして、ＣＰＵ３１１は復号されたデータのうち、チャレンジデータ１ｒに相当する箇所のビット値が、本当にチャレンジデータ１ｒと一致するかチェックする。もし、両者が対応すれば、ＩＣカード２１２は同じアクセス鍵を持つ適正なＩＣカードであることが確認される。両者が対応しなければ、ＩＣカード２１２は不正なＩＣカードであることになる。
【０４８９】
そこで、ステップＳ２２１３においてＣＰＵ３１１は、ステップＳ２２１２の演算結果に基づいて、ＩＣカード２１２が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの該当箇所とが対応しない場合、通信相手としてのＩＣカード２１２が適正でないとして、ＣＰＵ３１１はステップＳ２２１４において相互認証を中止する。
【０４９０】
ＩＣカード２１２が適正である場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの対応する部分が一致する場合、リーダライタ２１１によりＩＣカード２１２が認証されたので、さらにＩＣカード２１２がリーダライタ２１１を認証する処理が次のように行われる。
【０４９１】
図５９のステップＳ２３０８においてＩCカード２１２のＣＰＵ３５１は、チャレンジデータ２ｃを生成する。このチャレンジデータ２ｃには、ランダムな乱数値が用いられる。ステップＳ２３０９においてＣＰＵ３５１は、選択ビットをランダムに決定する。
【０４９２】
ステップＳ２３１０においてＤＥＳ暗号化部３５５は、ステップＳ２３０９において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０４９３】
ステップＳ２３１１においてＣＰＵ３５１は、選択ビットの値を決定する。
【０４９４】
ステップＳ２３１２においてＤＥＳ暗号化部３５５は、ステップＳ２３１１で決定された選択ビットの値を指定する指定情報をアクセス鍵で暗号化する。
【０４９５】
ステップＳ２３１３においてマンチェスタ符号化部３５７は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ２ｃ、選択ビットの暗号化された位置の指定情報、および選択ビットの暗号化された値の指定情報がマンチェスタ符号化され、これが認証メッセージ２Cとされる。
【０４９６】
ステップＳ２３１４においてＡＳＫ変調部３５９は、認証メッセージ２ＣをＡＳＫ変調し、送信する。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０４９７】
リーダライタ２１１のＡＳＫ復調部３２２は、図５７のステップＳ２２１５において、ＩＣカード２１２から送信されてきた認証メッセージ２Ｃを受信し、ＡＳＫ復調する。ステップＳ２２１６においてマンチェスタ復号部３２４は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ２ｃ、暗号化されている位置の指定情報、および暗号化されている値の指定情報が得られる。
【０４９８】
ステップＳ２２１７においてＤＥＳ暗号化部３１７は、位置と値の指定情報をアクセス鍵で復号する。すなわち、図５９のステップＳ２３１０，Ｓ２３１２においてＩＣカード２１２により暗号化された指定情報が復号される。
【０４９９】
次に、ステップＳ２２１８においてＣＰＵ３１１は、チャレンジデータ２ｒを生成する。具体的には、乱数が生成され、この乱数とチャレンジデータ２ｃを組み合わせた値を、ＤＥＳ暗号化部３１７によりアクセス鍵で暗号化して得られた値がチャレンジデータ２ｒとされる。例えば、 Xビットの乱数とYビットのチャレンジデータ２ｃを結合して、Ｘ＋Ｙビットのデータが生成され、それを暗号化したものがチャレンジデータ２ｒとされる。
【０５００】
ステップＳ２２１９においてマンチェスタ符号化部３１９は、ステップＳ２２１８の処理で生成されたチャレンジデータ２ｒのうち、選択ビット以外のビットをマンチェスタ符号化する。ステップＳ２２２０においてＲＺ符号化部３２０は、チャレンジデータ２ｒの選択ビットを指定された値にＲＺ符号化する。すなわち、ステップＳ２２１７で復号された指定情報により指定されている選択ビットが指定された値にＲＺ符号化され、それ以外のビットがマンチェスタ符号化される。
【０５０１】
ステップＳ２２２１においてＡＳＫ変調部３２１は、認証レスポンス２ＲをＡＳＫ変調し、送信する。認証レスポンス２Ｒには、指定情報で指定された選択ビットのみが指定された値にＲＺ符号とされ、その他のビットがマンチェスタ符号とされたチャレンジデータ２ｒが含まれている。
【０５０２】
ＩＣカード２１２のＡＳＫ復調部３６０は、図６０のステップＳ２３１５において、リーダライタ２１１からの認証レスポンス２Ｒを受信し、ＡＳＫ復調する。これにより、指定情報で指定された選択ビットのみが指定された値にＲＺ符号とされ、その他のビットがマンチェスタ符号化されているチャレンジデータ２ｒが得られる。
【０５０３】
ステップＳ２３１６においてマンチェスタ復号部３６２は、チャレンジデータ２ｒの選択ビット以外のビットをマンチェスタ復号する。選択ビットは図５９のステップＳ２３０９においてＩＣカード２１２が決定しているので、ＩＣカード２１２には既知である。
【０５０４】
また、ステップＳ２３１７において、ＲＺ復号部３６３は、チャレンジデータ２ｒの選択ビットをＲＺ復号する。
【０５０５】
ＣＰＵ３５１は、ステップＳ２３１６のマンチェスタ復号の結果得られたデータと、ステップＳ２３１７のＲＺ復号の結果得られたデータを合成することで、チャレンジデータ２ｒを復元する。
【０５０６】
ステップＳ２３１８においてＣＰＵ３５１は、選択ビットの値は、指定された値であるかを判定する。すなわち、指定されたビット位置に、指定された値のＲＺ符号が存在するかが判定される。
【０５０７】
盗聴者はデータ中の指定されたビットが指定された値のＲＺ符号であることをしらない。従って、カードシミュレータとリーダライタシミュレータを介して送信されてくるデータは、データ中の指定されたビットが指定された値のＲＺ符号にはなっていない。これにより、盗聴者の存在が検出される。
【０５０８】
盗聴者の存在が検出された場合、ＣＰＵ３１１はステップＳ２３２１において相互認証を中止する。
【０５０９】
指定されたビット位置に、指定された値のＲＺ符号が存在する場合、すなわち盗聴者が存在しない場合、ステップＳ２３１９においてＣＰＵ３５１は、チャレンジデータ２ｃとチャレンジデータ２ｒにより正当性検証の演算を行う。すなわち、ステップＳ２３０８において生成したチャレンジデータ２ｃと、ステップＳ２３１６，Ｓ２３１７で復号の結果得られたチャレンジデータ２ｒとが比較される。まず、ＤＥＳ暗号化部３５５はチャレンジデータ２ｒ（乱数とチャレンジデータ２ｃとの結合により構成されている）をアクセス鍵で復号する。そしてＣＰＵ３５１は、復号されたデータのうち、チャレンジデータ２ｃに相当する箇所のビット値が、本当にチャレンジデータ２ｃと一致するどうかチェックする。もし、両者が対応すれば、リーダライタ２１１は同じアクセス鍵をもつ適正なリーダライタであることが確認される。両者が対応しなければ、リーダライタ２１１は不正なリーダライタであることになる。
【０５１０】
そこで、ステップＳ２３２０においてＣＰＵ３５１は、ステップＳ２３１９の演算結果に基づいて、リーダライタ２１１が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒとが対応しない場合、通信相手としてのリーダライタ２１１が適正でないとして、ＣＰＵ３５１はステップＳ２３２１において相互認証を中止する。
【０５１１】
生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒの対応する部分が一致する場合、ステップＳ２３２２において、ＣＰＵ３５１は完了レスポンスを送信する。この完了レスポンスは、マンチェスタ符号化部３５７によりマンチェスタ符号化され、ＡＳＫ変調部３５９によりＡＳＫ変調され、送信される。
【０５１２】
図５７のステップＳ２２２２においてリーダライタ２１１は、ＩＣカード２１２からの完了レスポンスを受信する。すなわち、完了レスポンスはＡＳＫ復調部３２２によりＡＳＫ復調され、マンチェスタ復号部３２４によりマンチェスタ復号され、ＣＰＵ３１１により取得される。これにより、リーダライタ２１１は、自身がＩＣカード２１２により認証されたことを知ることができる。
【０５１３】
以上のようにしてリーダライタ２１１とＩＣカード２１２との間で相互認証が行われる。
【０５１４】
［動作のまとめ］
【０５１５】
以上のＩＣカードシステム２０１の処理をまとめると図６１に示されるようになる。リーダライタ２１１の相互認証アルゴリズムＡ１１がＩＣカード２１２に認証メッセージ１Rを送信する。この認証メッセージ１Rには、チャレンジデータ１ｒ、選択ビットの暗号化された位置の指定情報、および選択ビットの暗号化された値の指定情報が、マンチェスタ符号化された状態で含まれている。
【０５１６】
ＩＣカード２１２の相互認証アルゴリズムａ１１は、受信データをマンチェスタ復号してチャレンジデータ１ｒ、暗号化された位置の指定情報、および暗号化された値の指定情報を得る。また相互認証アルゴリズムａ１１は、アクセス鍵で、暗号化されている指定情報を復号する。相互認証アルゴリズムａ１１は、復号されたチャレンジデータ１ｒと新たな乱数値との結合をアクセス鍵で暗号化し、チャレンジデータ１ｃとする。
【０５１７】
チャレンジデータ１ｃのうち指定情報で指定された選択ビットが指定された値にＲＺ符号化され、その他のビットがマンチェスタ符号化される。
【０５１８】
選択ビットが指定された値にＲＺ符号化され、その他のビットがマンチェスタ符号化されたチャレンジデータ１ｃが、認証レスポンス１Cとしてリーダライタ２１１に送信される。
【０５１９】
リーダライタ２１１の正当性検証アルゴリズムＢ１１は、認証レスポンス１Cに含まれる選択ビット以外のチャレンジデータ１ｃをマンチェスタ復号し、選択ビットのチャレンジデータ１ｃをＲＺ復号する。暗号化されているチャレンジデータ１ｃはさらにアクセス鍵で復号される。
【０５２０】
正当性検証アルゴリズムＢ１１は、指定されたビット位置に、指定された値のＲＺ符号が存在するかを判定することで、盗聴者検出処理を実行する。正当性検証アルゴリズムＢ１１は、さらにチャレンジデータ１ｒとチャレンジデータ１ｃの検証演算を実行し、演算結果に基づいてＩＣカード２１２を認証する。
【０５２１】
同様に、ＩＣカード２１２がリーダライタ２１１を認証する処理が行われる。すなわち、ＩＣカード２１２の相互認証アルゴリズムａ１２がリーダライタ２１１に認証メッセージ２Cを送信する。この認証メッセージ２Cには、チャレンジデータ２ｃ、および暗号化された位置と値の指定情報が、マンチェスタ符号化された状態で含まれている。
【０５２２】
リーダライタ２１１の相互認証アルゴリズムＡ１２は、認証メッセージ２Cをマンチェスタ復号し、チャレンジデータ２ｃ、並びに暗号化された位置と値の指定情報を得る。チャレンジデータ２ｃと乱数の結合が暗号化され、チャレンジデータ２ｒとされる。
【０５２３】
チャレンジデータ２ｒのうち、指定情報で指定された選択ビットが指定された値にＲＺ符号化され、その他のビットがマンチェスタ符号化される。これらのデータが、認証レスポンス２RとしてＩＣカード２１２に送信される。
【０５２４】
ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、認証レスポンス２Ｒの選択ビット以外のチャレンジデータ２ｒをマンチェスタ復号し、選択ビットのチャレンジデータ２ｒをＲＺ復号する。暗号化されているチャレンジデータ２ｒはさらに復号される。
【０５２５】
正当性検証アルゴリズムｂ１１は、指定されたビット位置に、指定された値のＲＺ符号が存在するかを判定することで、盗聴者検出処理を実行する。正当性検証アルゴリズムｂ１１は、さらにチャレンジデータ２ｃとチャレンジデータ２ｒの検証演算を実行し、演算結果に基づいてリーダライタ２１１を認証する。
【０５２６】
認証が成功した場合、ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、リーダライタ２１１に完了レスポンスを返す。
【０５２７】
＜８．第８の実施の形態＞
［動作説明］
【０５２８】
指定されたビットの指定された変調方式の信号の有無から盗聴者検出処理を行うこともできる。図６２乃至図６７はこの場合の実施の形態を表している。この処理は、図２９のＩＣカードシステム２０１で実行される。
【０５２９】
図６２乃至図６４は、リーダライタ２１１の処理を表し、図６５乃至図６７は、それに対応するＩＣカード２１２の処理を表す。
【０５３０】
図６２のステップＳ２４０１乃至図６３のステップＳ２４１３のリーダライタ２１１の処理と、それに対応する図６５のステップＳ２５０１乃至ステップＳ２５０６のＩＣカード２１２処理は、リーダライタ２１１がＩＣカード２１２を認証する処理である。図６６のステップＳ２５０７乃至図６７のステップＳ２５２０のＩＣカード２１２処理と、それに対応する図６４のステップＳ２４１４乃至ステップＳ２４２０のリーダライタ２１１の処理は、ＩＣカード２１２がリーダライタ２１１を認証する処理である。
【０５３１】
図６２のステップＳ２４０１においてリーダライタ２１１のＣＰＵ３１１は、チャレンジデータ１ｒを生成する。このチャレンジデータ１ｒには、乱数値が用いられる。ステップＳ２４０２においてＣＰＵ３１１は、選択ビットをランダムに決定する。すなわち、この実施の形態の場合、データは基本的にＡＳＫ変調信号として送信されるのであるが、盗聴を検出するために、データ中の選択された所定のビットはＰＳＫ変調信号として送信される。ここでその選択ビットが決定される。
【０５３２】
ステップＳ２４０３においてＤＥＳ暗号化部３１７は、ステップＳ２４０２において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０５３３】
ステップＳ２４０４においてＣＰＵ３１１は、選択ビットのＰＳＫ変調信号の値を決定する。このＰＳＫ変調信号の値としては、例えば０°または１８０°のいずれかを表す値とされる。
【０５３４】
ステップＳ２４０５においてＤＥＳ暗号化部３５５は、ステップＳ２４０４で決定された、ＰＳＫ変調信号の値を指定する指定情報をアクセス鍵で暗号化する。
【０５３５】
ステップＳ２４０６においてマンチェスタ符号化部３１９は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ１ｒ、選択ビットの暗号化された位置の指定情報、および選択ビットの暗号化された値の指定情報がマンチェスタ符号化される。そしてそれが認証メッセージ１Ｒとされる。
【０５３６】
ステップＳ２４０７においてＡＳＫ変調部３２１は、認証メッセージ１ＲをＡＳＫ変調し、送信する。この認証メッセージ１Ｒには、チャレンジデータ１ｒ、暗号化された位置の指定情報、および暗号化された値の指定情報が含まれている。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０５３７】
ＩＣカード２１２のＡＳＫ復調部３６０は、図６５のステップＳ２５０１において、リーダライタ２１１から送信されてきた認証メッセージ１Ｒを受信し、ＡＳＫ復調する。
【０５３８】
ステップＳ２５０２においてマンチェスタ復号部３６２は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ１ｒ、暗号化された位置の指定情報、および暗号化された値の指定情報が得られる。
【０５３９】
ステップＳ２５０３においてＤＥＳ暗号化部３５５は、指定情報をアクセス鍵で復号する。すなわち、図６２のステップＳ２４０３，Ｓ２４０５においてリーダライタ２１１により暗号化された位置と値の指定情報が復号される。
【０５４０】
次に、ステップＳ２５０４においてＣＰＵ３５１は、乱数を生成し、この乱数とステップＳ２５０２において復号して得たチャレンジデータ１ｒを組み合わせた値を、ＤＥＳ暗号化部３５５に供給し、アクセス鍵で暗号化させることでチャレンジデータ１ｃを生成する。具体的には、例えば、Xビットの乱数とYビットのチャレンジデータ１ｒが結合され、Ｘ＋Ｙビットのデータが作成され、それを暗号化したものがチャレンジデータ１ｃとされる。
【０５４１】
ステップＳ２５０５においてマンチェスタ符号化部３５７は、ステップＳ２５０４の処理で生成されたチャレンジデータ１ｃをマンチェスタ符号化する。
【０５４２】
ステップＳ２５０６においてＡＳＫ変調部３５９は、認証レスポンス１Ｃのチャレンジデータ１ｃの選択ビットを指定された値のＰＳＫ変調信号とし、その他のビットをＡＳＫ変調信号として、送信する。
【０５４３】
リーダライタ２１１のＡＳＫ復調部３２２とＰＳＫ復調部４０２は、図６３のステップＳ２４０８において、ＩＣカード２１２からの認証レスポンス１Ｃを受信し、ＡＳＫ復調するとともに、ＰＳＫ復調する。これにより、指定情報で指定された値にＰＳＫ変調されていた選択ビットと、ＡＳＫ変調されていた、その他のビットからなる、マンチェスタ符号化されているチャレンジデータ１ｃが得られる。
【０５４４】
ステップＳ２４０９において、マンチェスタ復号部３２４は、チャレンジデータ１ｃをマンチェスタ復号する。
【０５４５】
ＣＰＵ３１１は、マンチェスタ復号の結果得られたＡＳＫ復調信号から得られたデータと、ＰＳＫ復調信号から得られたデータを合成することで、チャレンジデータ１ｃを復元する。
【０５４６】
ステップＳ２４１０においてＣＰＵ３１１は、指定されたビット位置に、指定された値のＰＳＫ変調信号が存在するかを判定する。
【０５４７】
盗聴者はデータ中の所定の位置のビットが、所定の値のＰＳＫ変調信号であることをしらない。従って、リーダライタシミュレータとカードシミュレータを介して送信されてくるデータは、すべてのビットがＡＳＫ変調信号を復号して得られたデータとされている。その結果、指定されたビット位置に、指定された値のＰＳＫ変調信号が存在するかを判定することで、盗聴者の有無が検出される。
【０５４８】
指定されたビット位置に、指定された値のＰＳＫ変調信号が存在しない場合、ステップＳ２４１１においてＣＰＵ３１１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０５４９】
指定されたビット位置に、指定された値のＰＳＫ変調信号が存在する場合、すなわち、盗聴者が存在しない場合、ステップＳ２４１２においてＣＰＵ３１１は、チャレンジデータ１ｒとチャレンジデータ１ｃにより正当性検証の演算を行う。すなわち、ステップＳ２４０１において生成したチャレンジデータ１ｒと、ステップＳ２４０９で復号の結果得られたチャレンジデータ１ｃとが比較される。まず、ＤＥＳ暗号化部３１７はチャレンジデータ１ｃ（乱数とチャレンジデータ１ｒとの結合により構成されている）をアクセス鍵で復号する。そして、ＣＰＵ３１１は復号されたデータのうち、チャレンジデータ１ｒに相当する箇所のビット値が、本当にチャレンジデータ１ｒと一致するかチェックする。もし、両者が対応すれば、ＩＣカード２１２は同じアクセス鍵を持つ適正なＩＣカードであることが確認される。両者が対応しなければ、ＩＣカード２１２は不正なＩＣカードであることになる。
【０５５０】
そこで、ステップＳ２４１３においてＣＰＵ３１１は、ステップＳ２４１２の演算結果に基づいて、ＩＣカード２１２が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの該当箇所とが対応しない場合、通信相手としてのＩＣカード２１２が適正でないとして、ＣＰＵ３１１はステップＳ２４１１において相互認証を中止する。
【０５５１】
ＩＣカード２１２が適正である場合、すなわち、生成されたチャレンジデータ１ｒと復号されたチャレンジデータ１ｃの対応する部分が一致する場合、リーダライタ２１１によりＩＣカード２１２が認証されたので、さらにＩＣカード２１２がリーダライタ２１１を認証する処理が次のように行われる。
【０５５２】
図６６のステップＳ２５０７においてＩCカード２１２のＣＰＵ３５１は、チャレンジデータ２ｃを生成する。このチャレンジデータ２ｃには、ランダムな乱数値が用いられる。ステップＳ２５０８においてＣＰＵ３５１は、選択ビットをランダムに決定する。
【０５５３】
ステップＳ２５０９においてＤＥＳ暗号化部３５５は、ステップＳ２５０８において決定された選択ビットの位置を指定する指定情報をアクセス鍵で暗号化する。アクセス鍵はリーダライタ２１１とＩＣカード２１２が共通に保持する秘密鍵である。
【０５５４】
ステップＳ２５１０においてＣＰＵ３５１は、選択ビットのＰＳＫ変調信号の値を決定する。
【０５５５】
ステップＳ２５１１においてＤＥＳ暗号化部３５５は、ステップＳ２５１０で決定されたＰＳＫ変調信号の値を指定する指定情報をアクセス鍵で暗号化する。
【０５５６】
ステップＳ２５１２においてマンチェスタ符号化部３５７は、全てのデータをマンチェスタ符号化する。すなわち、チャレンジデータ２ｃ、並びに暗号化された位置と値の指定情報がマンチェスタ符号化され、これが認証メッセージ２Cとされる。
【０５５７】
ステップＳ２５１３においてＡＳＫ変調部３５９は、認証メッセージ２ＣをＡＳＫ変調し、送信する。なお、このときＡＳＫ変調率は例えば１０％とされる。
【０５５８】
リーダライタ２１１のＡＳＫ復調部３２２は、図６４のステップＳ２４１４において、ＩＣカード２１２から送信されてきた認証メッセージ２Ｃを受信し、ＡＳＫ復調する。ステップＳ２４１５においてマンチェスタ復号部３２４は、マンチェスタ符号化されている全てのデータをマンチェスタ復号する。これにより、チャレンジデータ２ｃ、暗号化されている位置の指定情報、および暗号化されている値の指定情報が得られる。
【０５５９】
ステップＳ２４１６においてＤＥＳ暗号化部３１７は、指定情報をアクセス鍵で復号する。すなわち、図６６のステップＳ２５０９，Ｓ２５１１においてＩＣカード２１２により暗号化された指定情報が復号される。
【０５６０】
次に、ステップＳ２４１７においてＣＰＵ３１１は、チャレンジデータ２ｒを生成する。具体的には、乱数が生成され、この乱数とチャレンジデータ２ｃを組み合わせた値を、ＤＥＳ暗号化部３１７によりアクセス鍵で暗号化して得られた値がチャレンジデータ２ｒとされる。例えば、 Xビットの乱数とYビットのチャレンジデータ２ｃを結合して、Ｘ＋Ｙビットのデータが生成され、それを暗号化したものがチャレンジデータ２ｒとされる。
【０５６１】
ステップＳ２４１８においてマンチェスタ符号化部３１９は、ステップＳ２４１７の処理で生成されたチャレンジデータ２ｒをマンチェスタ符号化する。
【０５６２】
ステップＳ２４１９においてＡＳＫ変調部３２１は、認証レスポンス２Ｒのチャレンジデータ２ｒの選択ビットを指定された値のＰＳＫ変調信号とし、その他のビットをＡＳＫ変調信号として、送信する。
【０５６３】
ＩＣカード２１２のＡＳＫ復調部３６０は、図６７のステップＳ２５１４において、リーダライタ２１１からの認証レスポンス２Ｒを受信し、ＡＳＫ復調するとともに、ＰＳＫ復調する。これにより、ＰＳＫ復調信号から、指定情報で指定されたチャレンジデータ２ｒの選択ビットが、そしてＡＳＫ復調信号から、チャレンジデータ２ｒのその他のビットが得られる。
【０５６４】
ステップＳ２５１５においてマンチェスタ復号部３６２は、チャレンジデータ２ｒをマンチェスタ復号する。
【０５６５】
ＣＰＵ３５１は、マンチェスタ復号の結果得られたＰＳＫ変調信号からの選択ビットと、ＡＳＫ変調信号からのその他のビットを合成することで、チャレンジデータ２ｒを復元する。
【０５６６】
ステップＳ２５１６においてＣＰＵ３５１は、指定されたビット位置に、指定された値のＰＳＫ変調信号が存在するかを判定する
【０５６７】
盗聴者はデータ中の所定の位置のビットが、所定の値のＰＳＫ変調信号であることをしらない。従って、リーダライタシミュレータとカードシミュレータを介して送信されてくるデータは、すべてのビットがＡＳＫ変調信号を復号して得られたデータとされている。その結果、指定されたビット位置に、指定された値のビットのＰＳＫ変調信号が存在するかを判定することで、盗聴者の有無が検出される。
【０５６８】
指定されたビット位置に、指定された値のビットのＰＳＫ変調信号が存在しない場合、ステップＳ２５１７においてＣＰＵ３５１は、盗聴が検出されたとして、相互認証を中止する処理を行う。
【０５６９】
指定されたビット位置に、指定された値のＰＳＫ変調信号が存在する場合、すなわち盗聴者が存在しない場合、ステップＳ２５１８においてＣＰＵ３５１は、チャレンジデータ２ｃとチャレンジデータ２ｒにより正当性検証の演算を行う。すなわち、ステップＳ２５０７において生成したチャレンジデータ２ｃと、ステップＳ２５１５で復号の結果得られたチャレンジデータ２ｒとが比較される。まず、ＤＥＳ暗号化部３５５はチャレンジデータ２ｒ（乱数とチャレンジデータ２ｃとの結合により構成されている）をアクセス鍵で復号する。そしてＣＰＵ３５１は、復号されたデータのうち、チャレンジデータ２ｃに相当する箇所のビット値が、本当にチャレンジデータ２ｃと一致するどうかチェックする。もし、両者が対応すれば、リーダライタ２１１は同じアクセス鍵をもつ適正なリーダライタであることが確認される。両者が対応しなければ、リーダライタ２１１は不正なリーダライタであることになる。
【０５７０】
そこで、ステップＳ２５１９においてＣＰＵ３５１は、ステップＳ２５１８の演算結果に基づいて、リーダライタ２１１が適正であるかを判定する。適正でない場合、すなわち、生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒとが対応しない場合、通信相手としてのリーダライタ２１１が適正でないとして、ＣＰＵ３５１はステップＳ２５１７において相互認証を中止する。
【０５７１】
生成されたチャレンジデータ２ｃと復号されたチャレンジデータ２ｒの対応する部分が一致する場合、ステップＳ２５２０において、ＣＰＵ３５１は完了レスポンスを送信する。この完了レスポンスは、マンチェスタ符号化部３５７によりマンチェスタ符号化され、ＡＳＫ変調部３５９によりＡＳＫ変調され、送信される。
【０５７２】
図６４のステップＳ２４２０においてリーダライタ２１１は、ＩＣカード２１２からの完了レスポンスを受信する。すなわち、完了レスポンスはＡＳＫ復調部３２２によりＡＳＫ復調され、マンチェスタ復号部３２４によりマンチェスタ復号され、ＣＰＵ３１１により取得される。これにより、リーダライタ２１１は、自身がＩＣカード２１２により認証されたことを知ることができる。
【０５７３】
以上のようにしてリーダライタ２１１とＩＣカード２１２との間で相互認証が行われる。
【０５７４】
［動作のまとめ］
【０５７５】
以上のＩＣカードシステム２０１の処理をまとめると図６８に示されるようになる。リーダライタ２１１の相互認証アルゴリズムＡ１１がＩＣカード２１２に認証メッセージ１Rを送信する。この認証メッセージ１Rには、チャレンジデータ１ｒ、暗号化された位置の指定情報、および暗号化された値の指定情報が、マンチェスタ符号化された状態で含まれている。
【０５７６】
ＩＣカード２１２の相互認証アルゴリズムａ１１は、受信データをマンチェスタ復号してチャレンジデータ１ｒ、暗号化された位置の指定情報、および暗号化された値の指定情報を得る。また相互認証アルゴリズムａ１１は、アクセス鍵で、暗号化されている指定情報を復号する。相互認証アルゴリズムａ１１は、復号されたチャレンジデータ１ｒと新たな乱数値との結合をアクセス鍵で暗号化し、チャレンジデータ１ｃとする。
【０５７７】
チャレンジデータ１ｃはマンチェスタ符号化され、さらに暗号化される。マンチェスタ符号化され、暗号化されたチャレンジデータ１ｃが、認証レスポンス１Cとしてリーダライタ２１１に送信される。
【０５７８】
リーダライタ２１１の正当性検証アルゴリズムＢ１１は、認証レスポンス１Cに含まれるチャレンジデータ１ｃをマンチェスタ復号する。暗号化されているチャレンジデータ１ｃはさらにアクセス鍵で復号される。
【０５７９】
正当性検証アルゴリズムＢ１１は、指定されたビット位置に、指定された値のＰＳＫ変調信号が存在するかを判定することで盗聴者検出処理を実行する。正当性検証アルゴリズムＢ１１は、さらにチャレンジデータ１ｒとチャレンジデータ１ｃの検証演算を実行し、演算結果に基づいてＩＣカード２１２を認証する。
【０５８０】
同様に、ＩＣカード２１２がリーダライタ２１１を認証する処理が行われる。すなわち、ＩＣカード２１２の相互認証アルゴリズムａ１２がリーダライタ２１１に認証メッセージ２Cを送信する。この認証メッセージ２Cには、チャレンジデータ２ｃ、選択ビットの暗号化された位置の指定情報、および選択ビットの暗号化された値の指定情報が、マンチェスタ符号化された状態で含まれている。
【０５８１】
リーダライタ２１１の相互認証アルゴリズムＡ１２は、認証メッセージ２Cをマンチェスタ復号し、チャレンジデータ２ｃ、暗号化された位置の指定情報、および暗号化された値の指定情報を得る。チャレンジデータ２ｃと乱数の結合が暗号化され、チャレンジデータ２ｒとされる。
【０５８２】
チャレンジデータ２ｒはマンチェスタ符号化される。チャレンジデータ２ｒの指定情報で指定された選択ビットが指定された値にＰＳＫ変調され、その他のビットがＡＳＫ変調される。これらのデータが、認証レスポンス２RとしてＩＣカード２１２に送信される。
【０５８３】
ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、認証レスポンス２Ｒの選択ビット以外のチャレンジデータ２ｒをＡＳＫ復調した後、マンチェスタ復号し、選択ビットのチャレンジデータ２ｒをＰＳＫ復調した後、マンチェスタ復号する。暗号化されているチャレンジデータ２ｒはさらに復号される。
【０５８４】
正当性検証アルゴリズムｂ１１は、指定されたビット位置に、指定された値のＰＳＫ変調信号が存在するかを判定することで盗聴者検出処理を実行する。正当性検証アルゴリズムｂ１１は、さらにチャレンジデータ２ｃとチャレンジデータ２ｒの検証演算を実行し、演算結果に基づいてリーダライタ２１１を認証する。
【０５８５】
認証が成功した場合、ＩＣカード２１２の正当性検証アルゴリズムｂ１１は、リーダライタ２１１に完了レスポンスを返す。
【０５８６】
以上においては、マンチェスタ符号化方式とＲＺ符号化方式を用いたが、その他の符号化方式を用いることもできる。同様に変調方式としても、ＡＳＫ変調とＰＳＫ変調以外の変調方式を採用することもできる。さらにこれらの符号化方式や変調方式は、入れ替えて使用することもできる。
【０５８７】
また本発明は、リーダライタとＩＣカード以外の情報処理装置から構成されるシステムに適用することが可能である。
【０５８８】
上述した一連の処理は、ハードウエアにより実行させることもできるし、ソフトウエアにより実行させることもできる。一連の処理をソフトウエアにより実行させる場合には、そのソフトウエアを構成するプログラムが、専用のハードウエアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、プログラム記録媒体からインストールされる。
【０５８９】
なお、本明細書において、プログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【０５９０】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【０５９１】
なお、本発明の実施の形態は、上述した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の変更が可能である。
【図面の簡単な説明】
【０５９２】
【図１】従来のＩＣカードシステムの構成を示すブロック図である。
【図２】従来のＩＣカードシステムの処理を説明する図である。
【図３】盗聴者による傍受の構成を示す図である。
【図４】盗聴者による傍受の処理を説明する図である。
【図５】本発明の原理を説明するブロック図である。
【図６】本発明のＩＣカードシステムの一実施の形態の構成を示すブロック図である。
【図７】第１の実施の形態のリーダライタの動作を説明するフローチャートである。
【図８】第１の実施の形態のリーダライタの動作を説明するフローチャートである。
【図９】第１の実施の形態のリーダライタの動作を説明するフローチャートである。
【図１０】第１の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図１１】第１の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図１２】第１の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図１３】チェックサムの演算を説明する図である。
【図１４】第１の実施の形態の動作を説明する図である。
【図１５】盗聴者による傍受があった場合の動作を説明する図である。
【図１６】第２の実施の形態のリーダライタの動作を説明するフローチャートである。
【図１７】第２の実施の形態のリーダライタの動作を説明するフローチャートである。
【図１８】第２の実施の形態のリーダライタの動作を説明するフローチャートである。
【図１９】第２の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図２０】第２の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図２１】第２の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図２２】第３の実施の形態のリーダライタの動作を説明するフローチャートである。
【図２３】第３の実施の形態のリーダライタの動作を説明するフローチャートである。
【図２４】第３の実施の形態のリーダライタの動作を説明するフローチャートである。
【図２５】第３の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図２６】第３の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図２７】第３の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図２８】第３の実施の形態の動作を説明する図である。
【図２９】本発明のＩＣカードシステムの他の実施の形態の構成を示すブロック図である。
【図３０】第４の実施の形態のリーダライタの動作を説明するフローチャートである。
【図３１】第４の実施の形態のリーダライタの動作を説明するフローチャートである。
【図３２】第４の実施の形態のリーダライタの動作を説明するフローチャートである。
【図３３】第４の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図３４】第４の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図３５】第４の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図３６】第４の実施の形態の動作を説明する図である。
【図３７】第５の実施の形態のリーダライタの動作を説明するフローチャートである。
【図３８】第５の実施の形態のリーダライタの動作を説明するフローチャートである。
【図３９】第５の実施の形態のリーダライタの動作を説明するフローチャートである。
【図４０】第５の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図４１】第５の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図４２】第５の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図４３】第５の実施の形態の動作を説明する図である。
【図４４】第６の実施の形態のリーダライタの動作を説明するフローチャートである。
【図４５】第６の実施の形態のリーダライタの動作を説明するフローチャートである。
【図４６】第６の実施の形態のリーダライタの動作を説明するフローチャートである。
【図４７】第６の実施の形態のリーダライタの動作を説明するフローチャートである。
【図４８】第６の実施の形態のリーダライタの動作を説明するフローチャートである。
【図４９】第６の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図５０】第６の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図５１】第６の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図５２】第６の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図５３】第６の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図５４】第６の実施の形態の動作を説明する図である。
【図５５】第７の実施の形態のリーダライタの動作を説明するフローチャートである。
【図５６】第７の実施の形態のリーダライタの動作を説明するフローチャートである。
【図５７】第７の実施の形態のリーダライタの動作を説明するフローチャートである。
【図５８】第７の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図５９】第７の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図６０】第７の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図６１】第７の実施の形態の動作を説明する図である。
【図６２】第８の実施の形態のリーダライタの動作を説明するフローチャートである。
【図６３】第８の実施の形態のリーダライタの動作を説明するフローチャートである。
【図６４】第８の実施の形態のリーダライタの動作を説明するフローチャートである。
【図６５】第８の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図６６】第８の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図６７】第８の実施の形態のＩＣカードの動作を説明するフローチャートである。
【図６８】第８の実施の形態の動作を説明する図である。
【符号の説明】
【０５９３】
２０１  ＩＣカードシステム，２１１  リーダライタ，  ２１２  ＩＣカード，  ３１７  ＤＥＳ暗号化部，  ３１８  送信調停部，  ３１９  マンチェスタ符号化部，  ３２０  ＲＺ符号化部，  ３２１  ＡＳＫ変調部，  ３２２  ＡＳＫ復調部，  ３５５  ＤＥＳ暗号化部，  ３５６  送信調停部，  ３５７  マンチェスタ符号化部，  ３５８  ＲＺ符号化部，  ３５９  ＡＳＫ変調部，  ３６０  ＡＳＫ復調部
【図１】
2010074349.tif 000003
【図２】
2010074349.tif 000004
【図３】
2010074349.tif 000005
【図４】
2010074349.tif 000006
【図５】
2010074349.tif 000007
【図６】
2010074349.tif 000008
【図７】
2010074349.tif 000009
【図８】
2010074349.tif 000010
【図９】
2010074349.tif 000011
【図１０】
2010074349.tif 000012
【図１１】
2010074349.tif 000013
【図１２】
2010074349.tif 000014
【図１３】
2010074349.tif 000015
【図１４】
2010074349.tif 000016
【図１５】
2010074349.tif 000017
【図１６】
2010074349.tif 000018
【図１７】
2010074349.tif 000019
【図１８】
2010074349.tif 000020
【図１９】
2010074349.tif 000021
【図２０】
2010074349.tif 000022
【図２１】
2010074349.tif 000023
【図２２】
2010074349.tif 000024
【図２３】
2010074349.tif 000025
【図２４】
2010074349.tif 000026
【図２５】
2010074349.tif 000027
【図２６】
2010074349.tif 000028
【図２７】
2010074349.tif 000029
【図２８】
2010074349.tif 000030
【図２９】
2010074349.tif 000031
【図３０】
2010074349.tif 000032
【図３１】
2010074349.tif 000033
【図３２】
2010074349.tif 000034
【図３３】
2010074349.tif 000035
【図３４】
2010074349.tif 000036
【図３５】
2010074349.tif 000037
【図３６】
2010074349.tif 000038
【図３７】
2010074349.tif 000039
【図３８】
2010074349.tif 000040
【図３９】
2010074349.tif 000041
【図４０】
2010074349.tif 000042
【図４１】
2010074349.tif 000043
【図４２】
2010074349.tif 000044
【図４３】
2010074349.tif 000045
【図４４】
2010074349.tif 000046
【図４５】
2010074349.tif 000047
【図４６】
2010074349.tif 000048
【図４７】
2010074349.tif 000049
【図４８】
2010074349.tif 000050
【図４９】
2010074349.tif 000051
【図５０】
2010074349.tif 000052
【図５１】
2010074349.tif 000053
【図５２】
2010074349.tif 000054
【図５３】
2010074349.tif 000055
【図５４】
2010074349.tif 000056
【図５５】
2010074349.tif 000057
【図５６】
2010074349.tif 000058
【図５７】
2010074349.tif 000059
【図５８】
2010074349.tif 000060
【図５９】
2010074349.tif 000061
【図６０】
2010074349.tif 000062
【図６１】
2010074349.tif 000063
【図６２】
2010074349.tif 000064
【図６３】
2010074349.tif 000065
【図６４】
2010074349.tif 000066
【図６５】
2010074349.tif 000067
【図６６】
2010074349.tif 000068
【図６７】
2010074349.tif 000069
【図６８】
2010074349.tif 000070