(57)【特許請求の範囲】
【請求項１】
情報処理機能を有する第１の携帯可能情報記録媒体と、情報処理機能を有する第２の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第１の携帯可能情報記録媒体が第２の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第１の認証処理と、第２の携帯可能情報記録媒体が第１の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第２の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体であって、
リーダライタ装置から所定の乱数とともに乱数暗号化コマンドが与えられたときに、内部に記録されている所定のキーを利用して、与えられた乱数を暗号化して認証コードを作成し、作成した認証コードをリーダライタ装置に送出する乱数暗号化処理を実行する機能を有し、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、相手方認証済情報を記録する領域を設け、相手方の携帯可能情報記録媒体が正当な媒体であると認証された場合に、前記領域に相手方認証済情報を書き込む処理を行い、
リーダライタ装置から乱数暗号化コマンドが与えられたときに、前記領域を参照し、相手方認証済情報が書き込まれている場合にのみ、内部での乱数暗号化処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。
【請求項２】
情報処理機能を有する第１の携帯可能情報記録媒体と、情報処理機能を有する第２の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第１の携帯可能情報記録媒体が第２の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第１の認証処理と、第２の携帯可能情報記録媒体が第１の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第２の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体であって、
リーダライタ装置から乱数生成コマンドが与えられたときに、内部で乱数を生成し、生成した乱数をリーダライタ装置に送出する乱数生成処理を実行する機能と、
リーダライタ装置から、相手方の携帯可能情報記録媒体内で作成された認証コードとともに認証コード照合コマンドが与えられたときに、内部に記録されている所定のキーを利用して、過去に内部で実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成し、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果をリーダライタ装置に送出する認証コード照合処理を実行する機能と、
を有し、
リーダライタ装置に接続した後、少なくとも１回は内部で乱数生成処理が実行されており、かつ、内部で最後に実行された乱数生成処理の後に、まだ１回も内部で認証コード照合処理が実行されていない場合に限り、内部での認証コード照合処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。
【請求項３】
請求項２に記載の携帯可能情報記録媒体において、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、乱数生成済情報を記録する領域を設け、
内部で乱数生成処理を実行した後には、この領域に「生成済」を示す情報を書き込む処理を行い、
内部で認証コード照合処理を実行した後には、この領域に「未生成」を示す情報を書き込む処理を行い、
リーダライタ装置から認証コード照合コマンドが与えられたときに、前記領域を参照し、「生成済」を示す情報が書き込まれている場合にのみ、内部での認証コード照合処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。
【請求項４】
情報処理機能を有する第１の携帯可能情報記録媒体と、情報処理機能を有する第２の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第１の携帯可能情報記録媒体が第２の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第１の認証処理と、第２の携帯可能情報記録媒体が第１の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第２の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体であって、
リーダライタ装置から乱数生成コマンドが与えられたときに、内部で乱数を生成し、生成した乱数をリーダライタ装置に送出する乱数生成処理を実行する機能と、
リーダライタ装置から、相手方の携帯可能情報記録媒体内で作成された認証コードとともに認証コード照合コマンドが与えられたときに、内部に記録されている所定のキーを利用して、過去に内部で実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成し、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果をリーダライタ装置に送出する認証コード照合処理を実行する機能と、
を有し、
リーダライタ装置から乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、内部での認証コード照合処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。
【請求項５】
請求項４に記載の携帯可能情報記録媒体において、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、乱数生成済情報を記録する領域を設け、
乱数生成コマンドに基く内部での乱数生成処理を実行した後には、この領域に「生成済」を示す情報を書き込む処理を行い、
乱数生成コマンド以外のコマンドに基く内部での処理を実行した後には、この領域に「未生成」を示す情報を書き込む処理を行い、
リーダライタ装置から認証コード照合コマンドが与えられたときに、前記領域を参照し、「生成済」を示す情報が書き込まれている場合にのみ、内部での認証コード照合処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、携帯可能情報記録媒体に関し、特に、ＩＣカードのように、情報処理機能を有する携帯可能情報記録媒体を２組用いてセキュリティを高めた情報処理システムに利用される携帯可能情報記録媒体に関する。
【０００２】
【従来の技術】
磁気カードに代わる次世代の携帯可能情報記録媒体として、ＩＣカードが注目を集めている。最近では、半導体集積回路の小型化、低コスト化のための技術進歩により、実社会の種々のシステムにおいてＩＣカードが実用されるに至っている。
【０００３】
特に、ＣＰＵを内蔵したＩＣカードでは、単なる情報記録媒体としての機能に情報処理機能が付加されるため、高度なセキュリティを必要とする情報処理システムへの利用が期待されている。セキュリティを確保するための代表的な手法としては、ＩＣカードの所有者、発行者、製造者などに固有のＰＩＮ（Personal Identification Number）を設定し、このＰＩＮを個々のＩＣカード内部に記録しておき、外部から与えられるＰＩＮと内部に記録されているＰＩＮとを照合することにより、操作者の正当性を確認する方法が一般に利用されている。ただ、このようなＰＩＮ照合による方法では、ＰＩＮ自体が不正漏洩したような場合には、十分なセキュリティが確保できない。
【０００４】
そこで、２組の媒体を用いて相互認証を行うことにより、より高いセキュリティを確保する手法も実用化されている。たとえば、ＩＣカードに銀行預金の取引データを記録して預金通帳代わりに用いる情報処理システムでは、ＩＣカード内部に記録された取引データが不正な手段によって改竄されるようなことがあると重大な問題になる。そこで、個々の預金者に通帳代わりに手渡す預金者用ＩＣカードについては、単独では取引データにアクセスすることができないようにし、別個に用意した銀行用ＩＣカードと併用することによって初めてアクセスが可能になるような構成にしておけば、セキュリティを高めることができる。たとえば、銀行の店舗に設置されたリーダライタ装置に、同時に２枚のＩＣカードを挿入することができる挿入口を設けておき、一方の口から預金者用ＩＣカードを挿入し、他方の口から銀行用ＩＣカードを挿入するようにする。そして、双方において、相手方が正当なカードであることを認証する処理を行い、双方ともに肯定的な認証結果が得られた場合に限って、取引データへのアクセスが可能になるようにすれば、セキュリティを向上させることができる。
【０００５】
このように、２組の媒体を用いた相互認証を前提としてシステムを構築すれば、ＰＩＮ照合のみに頼っているシステムに比べて非常に高いセキュリティを確保できる。上述の例では、銀行用ＩＣカードは、銀行の担当者によって確実な管理がなされるので、盗難などの被害が発生する可能性は極めて小さい。これに対して、預金者用ＩＣカードは、一般の預金者が携帯するため、盗難や紛失のおそれがあるが、銀行用ＩＣカードを併用しなくては、取引データにアクセスすることはできないため、実害の発生を極力抑えることが可能になる。
【０００６】
２組の媒体についての相互認証を行う方法として、秘密のキーと乱数とを用いる方法が提案されている。たとえば、預金者用ＩＣカードと銀行用ＩＣカードとの間で相互認証を行う場合には、次のような処理が実行される。まず、預金者用ＩＣカードと銀行用ＩＣカードとのそれぞれに、同一の秘密のキーを記録しておく。この秘密のキーは、一旦書き込んだら、外部には決して読み出すことができないようにしておく。そして、まず預金者用ＩＣカード内部で乱数を発生させ、この乱数を銀行用ＩＣカードに与える。銀行用ＩＣカード側では、内部に記録されていた秘密のキーを用いて、与えられた乱数を暗号化して認証コードを作成し、作成した認証コードを預金者用ＩＣカードへと返す。預金者用ＩＣカード側では、内部に記録されていた秘密のキーを用いて、先程内部で発生させた乱数を暗号化して認証コードを作成し、この作成した認証コードと銀行用ＩＣカードから返された認証コードとが一致するか否かを照合する。両者が一致していれば、預金者用ＩＣカードによって銀行用ＩＣカードを認証する処理、別言すれば、預金者用ＩＣカード自身が、「相手方である銀行用ＩＣカードは正当なものである」と認める処理が完了したことになる。この処理と全く逆の処理を行えば、銀行用ＩＣカードによって預金者用ＩＣカードを認証する処理、別言すれば、銀行用ＩＣカード自身が、「相手方である預金者用ＩＣカードは正当なものである」と認める処理が完了することになる。
【０００７】
【発明が解決しようとする課題】
上述のように、２組の媒体を用いて相互認証を行う情報処理システムでは、ＰＩＮ照合のみに頼ったシステムに比べれば、はるかに高度なセキュリティを確保することが可能である。しかしながら、いわゆる「ハッカー」と称される不正利用者の技術水準も年々高くなってきており、上述したような相互認証システムは、必ずしも十分なセキュリティを備えたものとは言えない状況になってきている。
【０００８】
たとえば、ＩＣカード内部に記録されている秘密のキーそのものを外部に読み出すことはできないかもしれないが、ＩＣカードに対して何らかの数とともに暗号化コマンドを与え、秘密のキーを用いてこの数を暗号化して認証コードを作成する処理を内部で実行させた後、得られた認証コードを外部へ出力させることは可能である。したがって、どのような数を与えたときに、どのような認証コードが出力されるかを解析すれば、内部に記録された秘密のキーを推定することができる。
【０００９】
また、別な方法として、ＩＣカードに対して何らかの認証コードとともに認証コード照合コマンドを与えて認証コード照合処理を実行させれば、少なくとも肯定的な照合結果か、否定的な照合結果か、のいずれかが得られることになる。そこで、種々の認証コードを試行錯誤的に与える操作を、肯定的な照合結果が得られるまで繰り返し実行すれば、どのような認証コードを与えたときに、肯定的な照合結果が得られるかを知ることが可能になり、やはり秘密のキーを推定する材料が得られることになる。
【００１０】
そこで本発明は、より高度なセキュリティを確保した相互認証が可能な携帯可能情報記録媒体およびこれを用いた情報処理システムを提供することを目的とする。
【００１２】
【課題を解決するための手段】
(1)   本発明の第１の態様は、情報処理機能を有する第１の携帯可能情報記録媒体と、情報処理機能を有する第２の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第１の携帯可能情報記録媒体が第２の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第１の認証処理と、第２の携帯可能情報記録媒体が第１の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第２の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体において、
リーダライタ装置から所定の乱数とともに乱数暗号化コマンドが与えられたときに、内部に記録されている所定のキーを利用して、与えられた乱数を暗号化して認証コードを作成し、作成した認証コードをリーダライタ装置に送出する乱数暗号化処理を実行する機能を設け、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、相手方認証済情報を記録する領域を設け、相手方の携帯可能情報記録媒体が正当な媒体であると認証された場合に、この領域に相手方認証済情報を書き込む処理を行い、
リーダライタ装置から乱数暗号化コマンドが与えられたときに、この領域を参照し、相手方認証済情報が書き込まれている場合にのみ、内部での乱数暗号化処理が実行されるように構成したものである。
【００１４】
(2)   本発明の第２の態様は、情報処理機能を有する第１の携帯可能情報記録媒体と、情報処理機能を有する第２の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第１の携帯可能情報記録媒体が第２の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第１の認証処理と、第２の携帯可能情報記録媒体が第１の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第２の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体において、
リーダライタ装置から乱数生成コマンドが与えられたときに、内部で乱数を生成し、生成した乱数をリーダライタ装置に送出する乱数生成処理を実行する機能と、
リーダライタ装置から、相手方の携帯可能情報記録媒体内で作成された認証コードとともに認証コード照合コマンドが与えられたときに、内部に記録されている所定のキーを利用して、過去に内部で実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成し、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果をリーダライタ装置に送出する認証コード照合処理を実行する機能と、
を設け、
リーダライタ装置に接続した後、少なくとも１回は内部で乱数生成処理が実行されており、かつ、内部で最後に実行された乱数生成処理の後に、まだ１回も内部で認証コード照合処理が実行されていない場合に限り、内部での認証コード照合処理が実行されるように構成したものである。
【００１５】
(3)   本発明の第３の態様は、上述の第２の態様に係る携帯可能情報記録媒体において、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、乱数生成済情報を記録する領域を設け、
内部で乱数生成処理を実行した後には、この領域に「生成済」を示す情報を書き込む処理を行い、
内部で認証コード照合処理を実行した後には、この領域に「未生成」を示す情報を書き込む処理を行い、
リーダライタ装置から認証コード照合コマンドが与えられたときに、この領域を参照し、「生成済」を示す情報が書き込まれている場合にのみ、内部での認証コード照合処理が実行されるように構成したものである。
【００１６】
(4)   本発明の第４の態様は、情報処理機能を有する第１の携帯可能情報記録媒体と、情報処理機能を有する第２の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第１の携帯可能情報記録媒体が第２の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第１の認証処理と、第２の携帯可能情報記録媒体が第１の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第２の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体において、
リーダライタ装置から乱数生成コマンドが与えられたときに、内部で乱数を生成し、生成した乱数をリーダライタ装置に送出する乱数生成処理を実行する機能と、
リーダライタ装置から、相手方の携帯可能情報記録媒体内で作成された認証コードとともに認証コード照合コマンドが与えられたときに、内部に記録されている所定のキーを利用して、過去に内部で実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成し、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果をリーダライタ装置に送出する認証コード照合処理を実行する機能と、
を設け、
リーダライタ装置から乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、内部での認証コード照合処理が実行されるように構成したものである。
【００１７】
(5)   本発明の第５の態様は、上述の第４の態様に係る携帯可能情報記録媒体において、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、乱数生成済情報を記録する領域を設け、
乱数生成コマンドに基く内部での乱数発生処理を実行した後には、この領域に「生成済」を示す情報を書き込む処理を行い、
乱数生成コマンド以外のコマンドに基く内部での処理を実行した後には、この領域に「未生成」を示す情報を書き込む処理を行い、
リーダライタ装置から認証コード照合コマンドが与えられたときに、この領域を参照し、「生成済」を示す情報が書き込まれている場合にのみ、内部での認証コード照合処理が実行されるように構成したものである。
【００１８】
【作  用】
本発明に係る携帯可能情報記録媒体を用いた情報処理システムは、２組の携帯可能情報記録媒体をリーダライタ装置に接続して相互認証を行う場合に、第１の携帯可能情報記録媒体が第２の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第１の認証処理を行った結果、肯定的な認証結果が得られた場合に限り、その逆の認証処理、すなわち第２の携帯可能情報記録媒体が第１の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第２の認証処理を実行可能とする点に特徴がある。
【００１９】
たとえば、預金者用ＩＣカードを第１の携帯可能情報記録媒体とし、銀行用ＩＣカードを第２の携帯可能情報記録媒体とする具体的なシステムを考えてみると、預金者用ＩＣカードが銀行用ＩＣカードを正当であると認証する第１の認証処理を行った結果、肯定的な認証結果が得られた場合に限り、銀行用ＩＣカードが預金者用ＩＣカードを正当であると認証する第２の認証処理を実行することが可能になる。したがって、預金者用ＩＣカードが盗難や紛失の被害に遭ったとしても、正当な銀行用ＩＣカードがない限り、この預金者用ＩＣカードを正当であると認識するための認証処理は実行されないため、預金者用ＩＣカードからは、このような認証処理の実行に基く応答は一切得られないことになる。すなわち、預金者用ＩＣカードを正当であると認識するための認証処理の一環として、預金者用ＩＣカードに対して乱数暗号化コマンドを与え、乱数の暗号化によって認証コードを作成させ、これを外部に送出させる機能をもたせた場合であっても、銀行用ＩＣカードが正当な媒体であると認証された場合に限り、このような機能の実行が行われるように構成しておけば、正当な銀行用ＩＣカードがない限り、預金者用ＩＣカードにこのような機能の実行をさせることはできなくなる。
【００２０】
また、乱数生成コマンドを受けて内部で乱数を生成し、生成した乱数を相手方の携帯可能情報記録媒体に与え、相手方の携帯可能情報記録媒体において、この乱数に基いて認証コードを作成させた後、この相手方の携帯可能情報記録媒体内において作成された認証コードと自分自身で作成した認証コードとの照合を行う機能を有する場合に、最後に実行された乱数生成処理の後に、まだ１回も認証コード照合処理が実行されていない場合に限り、認証コード照合処理を実行するように構成しておけば、同一の乱数について多数の認証コードを試行錯誤的に与えて認証コード照合処理を実行させるようなことが不可能になり、不正な試行錯誤行為によるセキュリティ低下を防ぐことができる。また、乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、認証コード照合処理を実行するように構成しても、不正な試行錯誤行為を防止することができる。
【００２１】
【実施例】
以下、本発明を図示する実施例に基いて説明する。
【００２２】
§１．  相互認証を行う一般的な情報処理システムの基本構成
はじめに、相互認証を行う一般的な情報処理システムの基本構成を説明する。この情報処理システムは、２組の携帯可能情報記録媒体を用いたシステムとして、従来から提案されている一般的なシステムである。図１は、このようなシステムの全体構成を示す概念図であり、ここでは、携帯可能情報記録媒体としてＩＣカードを用いた例が示されている。
【００２３】
図１において、第１のＩＣカード１０と第２のＩＣカード２０とは、いずれも情報処理機能を有するＩＣカードである。リーダライタ装置３０は、これらのＩＣカードに対してアクセスする機能をもった装置であり、通常は、図示されていないコンピュータに接続して利用される。リーダライタ装置３０には、２つの挿入口が設けられており、一方の挿入口には第１のＩＣカード１０が挿入され、他方の挿入口には第２のＩＣカード２０が挿入される。
【００２４】
図２は、第１のＩＣカード１０の内部構成を示すブロック図である。このブロック図に示されているように、ＩＣカード１０には、ＣＰＵ１１と、ＲＯＭ１２と、ＲＡＭ１３と、ＥＥＰＲＯＭ１４とが内蔵されている。ＣＰＵ１１は、このＩＣカードの情報処理機能を司る構成要素であり、ＲＯＭ１２内に格納されたプログラムに基いて所定の情報処理を実行する。ＲＡＭ１３は、ＣＰＵ１１が情報処理を実行する上での作業領域として利用されるメモリである。ＥＥＰＲＯＭ１４は、このＩＣカード本来の目的である情報記録に利用されるメモリであり、ユーザデータや各種キーなどが記録される。このＩＣカード１０に対しては、リーダライタ装置３０から電源やクロック信号が供給され、カードと外部とはＩ／Ｏ信号を使い通信を行う。ここで、ＲＯＭ１２やＥＥＰＲＯＭ１４は、電源の供給が停止しても記録内容が保持される不揮発性メモリであるが、ＲＡＭ１３は、電源の供給が停止すると記録内容が失われる揮発性メモリである。なお、図２には、ＲＡＭ１３内に相手方認証済フラグおよび乱数生成済フラグが書き込まれた状態が示されているが、これらのフラグは本発明を適用する場合に利用されるフラグであり、その説明は後述する。
【００２５】
このＩＣカード１０内の各メモリに対するアクセスは、すべてＣＰＵ１１によって行われ、リーダライタ装置３０のような外部装置から、直接ＩＣカード１０内のメモリをアクセスすることはできない。ＣＰＵ１１は、外部装置から与えられる所定のコマンドに基いて、このＩＣカード１０全体を統括管理する機能をもっている。たとえば、外部装置からＥＥＰＲＯＭ１４の所定領域へデータを書き込むためには、ＣＰＵ１１に対して所定の書き込みコマンドを与える必要があり、ＥＥＰＲＯＭ１４の所定領域内のデータを外部へ読み出すためには、ＣＰＵ１１に対して所定の読出しコマンドを与える必要がある。このような書き込みコマンドや読出しコマンドを実行する上では、必要に応じて、ＥＥＰＲＯＭ１４内に記録されたキーと、外部装置から与えられたキーとの照合が行われる。
【００２６】
以上、第１のＩＣカード１０の内部構成を説明したが、第２のＩＣカード２０もそのハードウエア構成は全く同じである。ただ、ソフトウエアは、その用途の相違に基いて若干相違する。
【００２７】
この情報処理システムの本質的な部分は、少なくとも第１のＩＣカード１０のＥＥＰＲＯＭ１４内のユーザデータの部分に対するアクセスを行うには、両ＩＣカード１０，２０についての相互認証が必要であるという点である。すなわち、まず、両ＩＣカード１０，２０をリーダライタ装置３０の挿入口に挿入し、リーダライタ装置３０に対して両ＩＣカード１０，２０が電気的に接続された状態にし、かつ、両者間において、それぞれ相手方のＩＣカードが正当なカードであることが認証された状態になっていなければ、少なくとも第１のＩＣカード１０のＥＥＰＲＯＭ１４内のユーザデータの部分に対するアクセスは禁止される。
【００２８】
ここでは、理解を容易にするために、第１のＩＣカード１０が預金者用ＩＣカードとして用いられ、第２のＩＣカード２０が銀行用ＩＣカードとして用いられる具体的な例について、以下の説明を行うことにする。預金者用ＩＣカードには、ユーザデータとして銀行預金に関する取引情報が記録されることになり、預金者はこのＩＣカードを通帳代わりに利用することになる。銀行の支店には、リーダライタ装置３０およびこれに接続されたコンピュータ（図示されていない）が設置されており、このリーダライタ装置３０には銀行用ＩＣカードが挿入された状態になっている。預金者が預金者用ＩＣカードを利用して何らかの取引を行う場合、預金者用ＩＣカードをこのリーダライタ装置３０内に挿入し、必要に応じてＰＩＮなどの暗証キーをコンピュータに対して入力する。入力した暗証キーは、リーダライタ装置３０を介して、預金者用ＩＣカードに与えられ、預金者用ＩＣカードの内部では、ＥＥＰＲＯＭ１４内に予め記録されていた暗証キーと、外部から与えられた暗証キーとの照合が行われる。
【００２９】
このシステムでは、このようなＰＩＮ照合が行われるとともに、両ＩＣカード間での相互認証が行われる。すなわち、預金者用ＩＣカードが、相手方である銀行用ＩＣカードが正当なものであるか否かを認証する処理と、逆に、銀行用ＩＣカードが、相手方である預金者用ＩＣカードが正当なものであるか否かを認証する処理と、が行われ、双方ともに肯定的な認証結果が得られた場合に、預金者用ＩＣカード内のユーザデータに対する読出しや書き込みなどのアクセスが許可されることになる。このような相互認証システムを採ることにより、セキュリティを非常に向上させることができる。たとえば、預金者用ＩＣカードが、盗難もしくは紛失により不正利用者の手に渡った場合を考える。この場合、ＰＩＮ照合のみしかセキュリティ手段をもたないシステムでは、何らかの方法でＰＩＮが知られてしまうと、不正利用者によって不正アクセスが行われる可能性がある。たとえば、不正利用者がリーダライタ装置３０と同等の機能をもった装置を所持していれば、ＰＩＮさえ知っていれば、この装置により不正入手した預金者用ＩＣカードに対するアクセスが可能になる。ところが、相互認証を条件とするシステムでは、銀行用ＩＣカードを不正入手しない限り、このような不正アクセスを行うことはできない。
【００３０】
§２．  一般的な相互認証処理
続いて、§１で述べたような相互認証をセキュリティ条件にもつ情報処理システムにおいて、従来提案されている一般的な相互認証処理を説明する。図３は、このような相互認証をセキュリティ条件にもつＩＣカードにおけるＣＰＵの一般的な処理手順を示す流れ図である。前述したように、ＩＣカードに対する電源供給は、リーダライタ装置側から行われるのが一般的であり、ＩＣカードをリーダライタ装置に接続すると、電源供給が行われ、ＣＰＵに対してリセットがかかることになる。図３の流れ図は、このリセット後の処理手順を示すものである。
【００３１】
まず、ステップＳ１において、リセット応答処理が行われる。これは、ＩＣカードからリーダライタ装置に対して、ＣＰＵがリセットされたことを示す応答信号を送信する処理である。続いて、ステップＳ２において、ＩＣカードはコマンド受信待ちの状態に入る。そして、リーダライタ装置から何らかのコマンドが与えられると、ステップＳ３で、与えられたコマンドに基いた分岐処理が行われ、各コマンドに対応した処理がステップＳ４〜Ｓ７において実行される。そして、続くステップＳ８において、レスポンス送信が行われる。すなわち、何らかの送信データが、ＩＣカードからリーダライタ装置側にレスポンスとして送信されることになる。どのようなデータが送信されるかは、どのようなコマンド処理が実行されたかによってそれぞれ異なる。いずれにせよ、リーダライタ装置からＩＣカードに対して何らかのコマンドが与えられると、ＩＣカード内のＣＰＵは、このコマンドに応じた処理を実行し、何らかのレスポンスを送信し、次のコマンドを待つ、という操作が繰り返されることになる。
【００３２】
各コマンドについての処理内容は、ＩＣカード内のＲＯＭにプログラムされており、ステップＳ３のコマンド分岐は、対応するコマンドについての各処理ルーチンへの分岐に相当する。ここでは、相互認証処理の内容を説明するのが目的であるため、図３の流れ図においては、この相互認証処理に関連した３つのコマンド、すなわち、乱数生成コマンド、乱数暗号化コマンド、認証コード照合コマンドを、それぞれステップＳ４，Ｓ５，Ｓ６と独立して示し、その他のコマンドをステップＳ７に示した。実際には、このステップＳ７に示した「その他のコマンド」の中には、ユーザデータの書き込みコマンドや読出しコマンドなど、このＩＣカードを本来の目的に利用するために必要な種々のコマンドが含まれることになるが、ここでは、これらのコマンドについての説明は省略する。
【００３３】
続いて、相互認証処理に関連した３つのコマンドが与えられた場合の処理内容を簡単に説明する。まず、ステップＳ４で行われる乱数生成コマンドは、一般に、「GENERATE CHALLENGE」と呼ばれているコマンドである。このコマンドが与えられると、ＣＰＵは、内部で乱数を生成し、生成した乱数を送信データとしてセットする処理を実行する。したがって、後に実行されるステップＳ８では、このセットされた乱数の値が、レスポンスデータとしてリーダライタ装置側へ送信されることになる。結局、リーダライタ装置から見れば、乱数生成コマンドをＩＣカードに与えると、乱数値がレスポンスとして戻されることになる。
【００３４】
また、ステップＳ５で行われる乱数暗号化コマンドは、一般に（ＩＣカードの国際標準規格によれば）、「INTERNAL AUTHENTICATE 」と呼ばれているコマンドである。このコマンドは、所定の乱数とともに与えられる。このコマンドが与えられると、ＣＰＵは、ＥＥＰＲＯＭ内に記録されている所定のキーを利用して、与えられた乱数を暗号化して認証コードを作成する。そして、この作成した認証コードを送信データとしてセットする処理を実行する。したがって、後に実行されるステップＳ８では、このセットされた認証コードの値が、レスポンスデータとしてリーダライタ装置側へ送信されることになる。
【００３５】
たとえば、リーダライタ装置からＩＣカードに対して、乱数「ＲＮＤ」とともに乱数暗号化コマンドを与えたとする。ＣＰＵは、ＥＥＰＲＯＭ内に記録されている所定のキー「ＫＥＹ」を用いて、この乱数「ＲＮＤ」を暗号化する処理を行う。この暗号化のアルゴリズムとしては種々の方法が利用されているが、この暗号化のアルゴリズムを関数「ｆ」として把握すれば、暗号化によって得られる認証コードＡは、Ａ＝ｆ（ＲＮＤ，ＫＥＹ）で表される値になる。別言すれば、認証コードＡは、与えられた乱数「ＲＮＤ」と所定のキー「ＫＥＹ」との関数で表されることになる。結局、リーダライタ装置から見れば、乱数「ＲＮＤ」とともに乱数暗号化コマンドをＩＣカードに与えると、Ａ＝ｆ（ＲＮＤ，ＫＥＹ）で表される認証コードＡがレスポンスとして戻されることになる。
【００３６】
更に、ステップＳ６で行われる認証コード照合コマンドは、一般に、「EXTERNAL AUTHENTICATE 」と呼ばれているコマンドである。このコマンドは、所定の認証コードとともに与えられる。このコマンドが与えられると、ＣＰＵは、ＥＥＰＲＯＭ内に記録されている所定のキーを利用して、過去に実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成する。そして、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果を送信データとしてセットする処理を実行する。したがって、後に実行されるステップＳ８では、このセットされた照合結果が、レスポンスデータとしてリーダライタ装置側へ送信されることになる。
【００３７】
たとえば、リーダライタ装置からＩＣカードに対して、認証コード「Ａ」とともに認証コード照合コマンドを与えたとする。そして、このとき、このＩＣカードの内部では、過去に所定の乱数「ＲＮＤ」が生成されていたとする。この場合、ＣＰＵは、ＥＥＰＲＯＭ内に記録されている所定のキー「ＫＥＹ」を用いて、過去に生成した乱数「ＲＮＤ」を暗号化する処理を行い、認証コード「Ｂ」を作成する。すなわち、認証コードＢは、Ｂ＝ｆ（ＲＮＤ，ＫＥＹ）で表される値になる。更に、ＣＰＵは、作成した認証コード「Ｂ」と、リーダライタ装置から与えられた認証コード「Ａ」とが一致するか否か照合を行い、その結果を送信データとしてセットする。結局、リーダライタ装置から見れば、認証コード「Ａ」とともに認証コード照合コマンドをＩＣカードに与えると、ＩＣカード内部で作成された認証コード「Ｂ」と認証コード「Ａ」との比較照合が行われ、一致か不一致を示す照合結果がレスポンスとして戻されることになる。
【００３８】
以上、相互認証処理に関連した３つのコマンドが与えられた場合の処理内容を簡単に説明したが、続いて、これらのコマンドを用いた具体的な認証処理の手順を説明する。図４は、第１のＩＣカード１０（この例では預金者用ＩＣカード）による第２のＩＣカード２０（この例では銀行用ＩＣカード）についての認証処理の手順を示すダイヤグラムである。いわば、この認証処理は、預金者用ＩＣカード側のＣＰＵが、相手方の銀行用ＩＣカードが正当なものであるか否かを認証する処理ということができる。もっとも、各ＩＣカードのＣＰＵは、いずれもリーダライタ装置からコマンドが与えられることにより初めて何らかの処理を実施する機能しかもたないので、このような認証処理を実行するには、リーダライタ装置からＩＣカードに対して何らかのコマンドを与える動作を行わねばならない。図４において▲１▼〜▲９▼で示した動作は、このようなコマンドを与える動作もしくはそのコマンドに誘発されて実行される動作である。以下、これらの動作を順に説明する。
【００３９】
まず、動作▲１▼として、リーダライタ装置から預金者用ＩＣカードに対して、乱数生成コマンドを与える。このコマンドを受け取った預金者用ＩＣカード内部では、動作▲２▼として、乱数「ＲＮＤ」の生成が行われ、生成された乱数「ＲＮＤ」は、動作▲３▼において、リーダライタ装置へレスポンスとして戻される。続いて、動作▲４▼として、リーダライタ装置から銀行用ＩＣカードに対して、乱数暗号化コマンドを与える。前述したように、この乱数暗号化コマンドは、所定の乱数を伴うコマンドである。そこで、リーダライタ装置は、動作▲３▼として戻された乱数「ＲＮＤ」を、動作▲４▼において、乱数暗号化コマンドとともに銀行用ＩＣカードに与える。銀行用ＩＣカードは、動作▲５▼として、与えられた乱数「ＲＮＤ」の暗号化を実行する。すなわち、ＥＥＰＲＯＭ内に記録されている所定のキー「ＫＥＹ」を用いて、関数ｆで表される所定のアルゴリズムに基いて乱数「ＲＮＤ」を暗号化し、Ａ＝ｆ（ＲＮＤ，ＫＥＹ）で表される認証コードＡを作成する。こうして作成された認証コードＡは、動作▲６▼において、リーダライタ装置へレスポンスとして戻される。
【００４０】
次に、動作▲７▼として、リーダライタ装置から預金者用ＩＣカードに対して、認証コード照合コマンドを与える。前述したように、この認証コード照合コマンドは、所定の認証コードを伴うコマンドである。そこで、リーダライタ装置は、動作▲６▼として戻された認証コードＡを、動作▲７▼において、認証コード照合コマンドとともに預金者用ＩＣカードに与える。預金者用ＩＣカードは、動作▲８▼として、過去に生成した乱数、すなわち動作▲２▼において生成した乱数「ＲＮＤ」の暗号化を実行する。すなわち、ＥＥＰＲＯＭ内に記録されている所定のキー「ＫＥＹ」を用いて、関数ｆで表される所定のアルゴリズムに基いて乱数「ＲＮＤ」を暗号化し、Ｂ＝ｆ（ＲＮＤ，ＫＥＹ）で表される認証コードＢを作成する。そして、こうして作成された認証コードＢと、リーダライタ装置から与えられた認証コードＡとが一致するか否かの照合を行う。この照合結果（一致を示す「ＯＫ」または不一致を示す「ＮＧ」）は、動作▲９▼において、リーダライタ装置へレスポンスとして戻される。
【００４１】
以上が認証処理のひととおりの手順である。ここで、預金者用ＩＣカード側で用いられる所定のキー「ＫＥＹ」と銀行用ＩＣカード側で用いられる所定のキー「ＫＥＹ」とが全く同一になるようにしておき（別言すれば、両ＩＣカードのＥＥＰＲＯＭに、予め全く同一の「ＫＥＹ」を書き込んでおくようにしておき）、かつ、預金者用ＩＣカード側で用いられる暗号化のアルゴリズムｆと銀行用ＩＣカード側で用いられる暗号化のアルゴリズムｆとが全く同一になるようにしておけば（別言すれば、乱数暗号化コマンドの実行ルーチンとして、同一のルーチンを両ＩＣカードのＲＯＭ内に予め書き込んでおくようにしておけば）、認証コードＡと認証コードＢとは一致するはずである。したがって、動作▲９▼において、一致を示す「ＯＫ」なる照合結果が得られたとすれば、預金者用ＩＣカードから見て、相手方となる銀行用ＩＣカードが正当なものであるとの認証が得られたことになる。
【００４２】
一方、図５は、第２のＩＣカード２０（この例では銀行用ＩＣカード）による第１のＩＣカード１０（この例では預金者用ＩＣカード）についての認証処理の手順を示すダイヤグラムである。いわば、この認証処理は、銀行用ＩＣカード側のＣＰＵが、相手方の預金者用ＩＣカードが正当なものであるか否かを認証する処理ということができる。この認証処理の手順は、図４に示した認証処理の手順における両ＩＣカードの役割を全く入れ替えたものであり、図４のダイヤグラムの左右を入れ替えたものが図５のダイヤグラムに相当する。したがって、この図５のダイヤグラムについての詳しい説明は省略するが、その概要だけを簡単に説明すれば、次のようになる。
【００４３】
まず、動作▲１▼として、銀行用ＩＣカードに対して、乱数生成コマンドを与え、動作▲２▼として乱数「ＲＮＤ」を生成させ、動作▲３▼においてこれをレスポンスとして戻す。次に、動作▲４▼として、預金者用ＩＣカードに対して、乱数「ＲＮＤ」とともに乱数暗号化コマンドを与え、動作▲５▼における暗号化により認証コードＣ＝ｆ（ＲＮＤ，ＫＥＹ）を作成し、動作▲６▼においてこれをレスポンスとして戻す。更に、動作▲７▼として、銀行用ＩＣカードに対して、認証コードＣとともに認証コード照合コマンドを与えると、動作▲８▼において、Ｄ＝ｆ（ＲＮＤ，ＫＥＹ）で表される認証コードＤが作成され、認証コードＣとの照合が行われ、動作▲９▼において、照合結果がレスポンスとして戻される。そして、一致を示す「ＯＫ」なる照合結果が得られたとすれば、銀行用ＩＣカードから見て、相手方となる預金者用ＩＣカードが正当なものであるとの認証が得られたことになる。
【００４４】
リーダライタ装置は、図４に示す認証処理による最終手順で得られた照合結果と、図５に示す認証処理による最終手順で得られた照合結果と、の双方において、一致を示す「ＯＫ」が得られた場合には、肯定的な相互認証が行われたものと判断し、ユーザデータへのアクセス処理など、本来の処理を実行することになり、預金者用ＩＣカードおよび銀行用ＩＣカードは、このようなアクセス処理を受け入れることになる。
【００４５】
§３．  従来の相互認証処理の問題点
以上のように、§２では、従来提案されている一般的な相互認証システムの処理内容を簡単に説明したが、実は、このようなシステムでは、必ずしも十分なセキュリティを確保することはできない。ここでは、このような従来の相互認証システムについて、２つの問題点を指摘する。後述するように、本発明を適用することにより、この２つの問題点はいずれも解決される。
【００４６】
第１の問題点は、乱数暗号化コマンドが不正使用される問題である。たとえば、預金者用ＩＣカードが不正利用者の手に渡ったとし、この不正利用者が、リーダライタ装置と同等の機能を備えた不正アクセス装置を持っていたものとしよう。この場合、確かに、銀行用ＩＣカードがこの不正利用者の手に渡らない限り、相互認証を行うことはできないわけであるから、この預金者用ＩＣカード内のユーザデータに対するアクセスを直ちに行うことはできない。しかしながら、不正アクセス装置から預金者用ＩＣカードに対して、乱数暗号化コマンドを与えることは可能である。すなわち、図５における動作▲４▼と同等の処理を、不正アクセス装置を用いて行うことは可能である。このとき、乱数暗号化コマンドとともに、何らかの値Ｘを乱数として与えるようにすれば、預金者用ＩＣカード側では、動作▲５▼が実行され、Ｙ＝ｆ（Ｘ，ＫＥＹ）で表される認証コードＹが作成され、動作▲６▼により、この認証コードＹが不正アクセス装置に対してレスポンスとして戻されることになる。すなわち、不正利用者は、「ある値Ｘを与えて動作▲５▼を実行させると、特定の値Ｙがレスポンスとして得られる」という事実を知得することができることになる。
【００４７】
そこで、Ｘとして種々の異なる値を用い、それぞれの場合にどのようなレスポンスＹが得られるかを実際に試してみれば、ＸとＹとの１対１の対応表を作成することができ、この対応表を解析することにより、暗号化のアルゴリズムｆや暗号化に利用されるキーＫＥＹを推定することが可能になる。万一、不正利用者に、暗号化のアルゴリズムｆやキーＫＥＹが知得されると、銀行用ＩＣカードが偽造されるおそれがあり、セキュリティに重大な支障を来すことになる。
【００４８】
第２の問題点は、認証コード照合コマンドが不正使用される問題である。やはり預金者用ＩＣカードが不正利用者の手に渡ったとし、この不正利用者が、リーダライタ装置と同等の機能を備えた不正アクセス装置を持っていたものとしよう。この場合、不正アクセス装置から預金者用ＩＣカードに対して、乱数生成コマンドを与えることは可能であり、また、認証コード照合コマンドを与えることは可能である。すなわち、図４における動作▲１▼や動作▲７▼と同等の処理を、不正アクセス装置を用いて行うことは可能である。そこで、まず動作▲１▼により乱数生成コマンドを与え、動作▲２▼によって何らかの乱数ＲＮＤを生成させれば、動作▲３▼により、生成した乱数ＲＮＤが不正アクセス装置に対してレスポンスとして戻されることになる。もちろん、この乱数ＲＮＤが得られたとしても、銀行用ＩＣカードがない限りは、図４における動作▲５▼を実行することはできないので、この不正利用者は、正しい認証コードＡを得ることはできない。
【００４９】
しかしながら、この不正利用者は、でたらめな認証コードＰを用いて、動作▲７▼を実行することは可能である。すなわち、不正アクセス装置を用いて、認証コード照合コマンドとともに、何らかの認証コードＰを与えるようにすれば、預金者用ＩＣカード側では、動作▲８▼が実行され、Ｂ＝ｆ（ＲＮＤ，ＫＥＹ）で表される認証コードＢが作成される。そして、この作成された認証コードＢとでたらめた認証コードＰとが照合され、動作▲９▼により、その照合結果が不正アクセス装置に対してレスポンスとして戻されることになる。もちろん、でたらめな認証コードＰを用いたのであるから、多くの場合、不一致を示す照合結果「ＮＧ」が得られることになる。ところが、でたらめな認証コードＰを試行錯誤的にいろいろと変えながら（たとえば、００００，０００１，０００２，…と１ずつ増やしながら）、動作▲７▼における認証コード照合コマンドを与える処理を繰り返し実行してゆけば、でたらめな認証コードＰが、偶然、正しい認証コードＡに一致する場合に遭遇することになる。
【００５０】
すなわち、「ＯＫ」なる照合結果が得られるまで、でたらめな認証コードをいろいろと変えて、試行錯誤的に認証コード照合コマンドを与え続ければ、「ＯＫ」なる照合結果が得られた時点で与えた認証コードが正しい認証コードであることを認識することができる。このとき、乱数ＲＮＤは、動作▲３▼によって得られているので、特定の乱数ＲＮＤを暗号化することによって得られる正しい認証コードＡを特定することができることになる。したがって、乱数ＲＮＤと認証コードＡとの関係を解析することにより、やはり暗号化のアルゴリズムｆや暗号化に利用されるキーＫＥＹを推定することが可能になる。
【００５１】
§４．  本発明に係る相互認証処理
本発明に係る相互認証処理では、図２のブロック図に示すように、ＲＡＭ１３内に、相手方認証済フラグおよび乱数生成済フラグを格納するための領域が設けられ、相互認証処理に関連した３つのコマンド、すなわち、乱数生成コマンド、乱数暗号化コマンド、認証コード照合コマンドは、それぞれ図６，図７，図８に示すような処理手順によって実行される。以下、これらの各処理手順を順に説明する。なお、これら各処理手順のステップにおいて、「＊」印を付したステップは、前述した第１の問題点を解決するために付加された本発明特有のステップであり、「＊＊」印を付したステップは、前述した第２の問題点を解決するために付加された本発明特有のステップである。その他のステップは、いずれも従来から行われている一般的な処理を示すステップである。本発明に係るＩＣカードでは、ＲＯＭ内に図６，図７，図８に示すような処理を行うためのプログラムルーチンが書き込まれていることになる。
【００５２】
まず、図６を参照しながら、本発明に係る乱数生成コマンドの処理を説明する。この処理は、図４または図５のダイヤグラムにおける動作▲１▼〜▲３▼に対応する処理である。すなわち、本発明に係るＩＣカードに対して、リーダライタ装置から乱数生成コマンド（一般的なＩＣカードの規格において「GENERATE CHALLENGE」と呼ばれているコマンド）を与えると、ＩＣカード内部では、まずステップＳ４１において、乱数の生成が行われ、続くステップＳ４２において、生成した乱数が送信データとしてセットされる。ここまでは、従来の一般的な乱数生成コマンドの処理手順である。本発明の特徴は、更に、ステップＳ４３において、乱数生成済フラグが「ＯＮ」の状態になる点である。前述したように、乱数生成済フラグは、ＲＡＭ内の所定領域に設定されるフラグであり、「ＯＮ」または「ＯＦＦ」のいずれかの状態が示されれば足りるので、最低限１ビットの記録領域があればよい。ただ、この実施例では、１バイト分の領域を乱数生成済フラグに充てており、１６進数で「０１」の場合に「ＯＮ」、それ以外の場合に「ＯＦＦ」を示すものとして取り扱っている。なお、揮発性メモリであるＲＡＭは、電源投入当時は「０１」以外の値をとるようになっており、本実施例において、ＩＣカードをリーダライタ装置に接続した当初においては、乱数生成済フラグは「ＯＦＦ」の状態になっている。
【００５３】
以上の手順で、この乱数生成コマンドの処理は完了し、この処理ルーチンをコールしたもとのプログラムへと制御が戻ることになる。すなわち、図３の流れ図では、ステップＳ４の処理が完了したことになり、続いてステップＳ８が実行され、生成した乱数がレスポンスとしてリーダライタ装置へ戻されることになる。
【００５４】
次に、図７を参照しながら、本発明に係る乱数暗号化コマンドの処理を説明する。この処理は、図４または図５のダイヤグラムにおける動作▲４▼〜▲６▼に対応する処理である。すなわち、本発明に係るＩＣカードに対して、リーダライタ装置から所定の乱数ＲＮＤとともに乱数暗号化コマンド（一般的なＩＣカードの規格において「INTERNAL AUTHENTICATE 」と呼ばれているコマンド）を与えると、ＩＣカード内部では、まずステップＳ５１において、相手方認証済フラグが「ＯＮ」か否かが判断される。前述したように、相手方認証済フラグは、ＲＡＭ内の所定領域に設定されるフラグであり、「ＯＮ」または「ＯＦＦ」のいずれかの状態が示されれば足りるので、最低限１ビットの記録領域があればよい。ただ、この実施例では、乱数生成済フラグと同様に、１バイト分の領域を相手方認証済フラグに充てており、１６進数で「０１」の場合に「ＯＮ」、それ以外の場合に「ＯＦＦ」を示すものとして取り扱っている。また、揮発性メモリであるＲＡＭは、電源投入当時は「０１」以外の値をとるようになっており、本実施例において、ＩＣカードをリーダライタ装置に接続した当初においては、相手方認証済フラグは「ＯＦＦ」の状態になっている。
【００５５】
ステップＳ５１の判断において、相手方認証済フラグが「ＯＮ」であった場合には、続くステップＳ５２へと進み、乱数ＲＮＤの暗号化が行われる。すなわち、ＥＥＰＲＯＭ内に記録されている所定のキー「ＫＥＹ」を用いて、与えられた乱数「ＲＮＤ」を暗号化する処理を行い、その結果として、認証コードＡまたはＣを得る。ここで、認証コードＡまたはＣは、暗号化のアルゴリズムを関数「ｆ」として表せば、Ａ＝ｆ（ＲＮＤ，ＫＥＹ）あるいはＣ＝ｆ（ＲＮＤ，ＫＥＹ）で表される値になる（ＡとＣとの相違は、各カードが認証時に用いる乱数やＫＥＹの相違から生じる）。
【００５６】
一方、ステップＳ５１の判断において、相手方認証済フラグが「ＯＦＦ」であった場合には、ステップＳ５２は実行されない。いずれの場合にも、続くステップＳ５３において、送信データがセットされることになる。ここで、ステップＳ５２が実行された場合には、ここで得られた認証コードＡまたはＣが、送信データとしてセットされる。一方、ステップＳ５２が実行されなかった場合には、この実施例では、認証コードが得られなかったことを示す特定の値が送信データとしてセットされる。
【００５７】
この図７の手順についての本発明の特徴は、ステップＳ５１の判断処理を付加した点であり、ステップＳ５２，Ｓ５３は、従来の一般的な乱数暗号化コマンドの処理手順である。結局、以上の手順で、この乱数暗号化コマンドの処理は完了し、この処理ルーチンをコールしたもとのプログラムへと制御が戻ることになる。すなわち、図３の流れ図では、ステップＳ５の処理が完了したことになり、続いてステップＳ８が実行され、「得られた認証コード」もしくは「認証コードが得られなかったことを示す特定の値」がレスポンスとしてリーダライタ装置へ戻されることになる。
【００５８】
次に、図８を参照しながら、本発明に係る認証コード照合コマンドの処理を説明する。この処理は、図４または図５のダイヤグラムにおける動作▲７▼〜▲９▼に対応する処理である。すなわち、本発明に係るＩＣカードに対して、リーダライタ装置から所定の認証コードＡまたはＣとともに認証コード照合コマンド（一般的なＩＣカードの規格において「EXTERNAL AUTHENTICATE 」と呼ばれているコマンド）を与えると、ＩＣカード内部では、まずステップＳ６１において、乱数生成済フラグが「ＯＮ」か否かが判断される。前述したように、この乱数生成済フラグは、図６に示すステップＳ４３において「ＯＮ」にされるフラグである。このステップＳ６１の判断において、乱数生成済フラグが「ＯＮ」であった場合には、続くステップＳ６２において、リーダライタ装置から与えられた認証コードＡまたはＣを入力する処理が行われ、更に、ステップＳ６３において、乱数ＲＮＤの暗号化が行われる。ここで用いる乱数ＲＮＤは、過去に実施した乱数生成コマンドにおけるステップＳ４１で生成した数値である。すなわち、ＥＥＰＲＯＭ内に記録されている所定のキー「ＫＥＹ」を用いて、過去に生成された乱数「ＲＮＤ」を暗号化する処理を行い、その結果として、認証コードＢまたはＤが得られる。ここで、認証コードＢまたはＤは、暗号化のアルゴリズムを関数「ｆ」として表せば、Ｂ＝ｆ（ＲＮＤ，ＫＥＹ）あるいはＤ＝ｆ（ＲＮＤ，ＫＥＹ）で表される値になる。
【００５９】
続くステップＳ６４では、ステップＳ６２で入力した認証コードＡまたはＣと、ステップＳ６３で作成した認証コードＢまたはＤとが一致するか否か調べる照合処理が行われる。そして、照合の結果、一致していれば、続くステップＳ６５において、相手方認証済フラグを「ＯＮ」にする処理が行われる。不一致の場合には、ステップＳ６５の処理は実行されず、相手方認証済フラグは「ＯＦＦ」の状態のままになる。続くステップＳ６６において、乱数生成済フラグが「ＯＦＦ」の状態になり、ステップＳ６７において、送信データがセットされる。ここでセットされる送信データは、ステップＳ６４の照合結果の一致「ＯＫ」または不一致「ＮＧ」を示すデータである。
【００６０】
なお、ステップＳ６１で、乱数生成済フラグが「ＯＦＦ」であると判断された場合には、ステップＳ６２〜Ｓ６６の処理は実行されず、直ちにステップＳ６７で送信データがセットされる。本実施例では、この場合、照合結果の不一致「ＮＧ」を示すデータを送信データとしてセットするようにしているが、その他のデータ、たとえば、照合不能を示すデータをセットするようにしてもよい。
【００６１】
この図８の手順についての本発明の特徴は、ステップＳ６１の判断処理を付加した点と、ステップＳ６５およびＳ６６のフラグ操作処理を付加した点である。それ以外のステップは、従来の一般的な認証コード照合コマンドの処理手順である。結局、以上の手順で、この認証コード照合コマンドの処理は完了し、この処理ルーチンをコールしたもとのプログラムへと制御が戻ることになる。すなわち、図３の流れ図では、ステップＳ６の処理が完了したことになり、続いてステップＳ８が実行され、照合結果の一致「ＯＫ」または不一致「ＮＧ」、あるいは「照合不能」を示すデータがレスポンスとしてリーダライタ装置へ戻されることになる。
【００６２】
§５．  本発明による問題点の解消
既に§４において述べたように、本発明の特徴は、相互認証処理に関連した３つのコマンド、すなわち、乱数生成コマンド、乱数暗号化コマンド、認証コード照合コマンドの処理手順において、それぞれ図６，図７，図８に「＊」印および「＊＊」印を付して示すステップを付加した点にある。そこで、これらの付加的なステップにより、§３で述べた２つの問題点が解消することを示そう。
【００６３】
まず、第１の問題点は、乱数暗号化コマンドの不正使用の問題である。すなわち、図５における動作▲４▼と同等の処理を、不正アクセス装置を用いて行い、預金者用ＩＣカードに対して、乱数暗号化コマンドとともに、何らかの値Ｘを乱数として与えるようにすれば、預金者用ＩＣカード側では、動作▲５▼が実行され、Ｙ＝ｆ（Ｘ，ＫＥＹ）で表される認証コードＹが作成され、動作▲６▼により、この認証コードＹが不正アクセス装置に対してレスポンスとして戻されることになる。こうして、ＸとＹとの１対１の対応表を作成することができれば、この対応表を解析することにより、暗号化のアルゴリズムｆや暗号化に利用されるキーＫＥＹを推定することが可能になることは既に述べたとおりである。
【００６４】
本発明によれば、図７および図８に「＊」を付したステップが付加されているため、このような不正アクセスを防止することができる。すなわち、図７に示す乱数暗号化コマンドの処理手順によれば、まず、ステップＳ５１において、相手方認証済フラグが「ＯＮ」であるか否かが判断され、「ＯＮ」であった場合のみ、ステップＳ５２以下の手順が実行される。ここで、相手方認証済フラグは、ＩＣカードをリーダライタ装置に接続した当初は「ＯＦＦ」であり、図８のステップＳ６５が実行された場合にのみ「ＯＮ」になる。これは、図４に示す動作▲８▼を実行し、認証コードの照合一致が得られた後でなければ、図５に示す動作▲５▼が実行されないことを意味する。別言すれば、預金者用ＩＣカードによる銀行用ＩＣカードの認証処理（図４）について肯定的な認証結果が得られた場合に限り、銀行用ＩＣカードによる預金者用ＩＣカードの認証処理（図５）の実行が可能になるような構成になっている。このため、預金者用ＩＣカードが不正使用者の手に渡ったとしても、銀行用ＩＣカードがない限り、図４に示す認証処理を行うことはできないので、必然的に、図５の動作▲５▼は実行されないことになる。
【００６５】
なお、念のために述べておくが、図７および図８に「＊」を付したステップＳ５１，Ｓ６５は、相互認証が行われる２組のＩＣカードのうちのいずれか一方のＩＣカードのみに適用すべき手順である。なぜなら、これらの手順を、預金者用ＩＣカードと銀行用ＩＣカードとの双方に適用してしまった場合は、相互認証のいずれもが不可能になってしまうからである。すなわち、預金者用ＩＣカードにより銀行用ＩＣカードを認証するためには、銀行用ＩＣカードに乱数暗号化コマンドの処理を実行させる必要があり、逆に、銀行用ＩＣカードにより預金者用ＩＣカードを認証するためには、預金者用ＩＣカードに乱数暗号化コマンドの処理を実行させる必要があるので、両ＩＣカードともに、相手方の認証が済まない限り乱数暗号化コマンドが実行されないようにプログラムされていたとすると、相手方からの認証要求に応える処理がいずれも拒絶されてしまうためである。
【００６６】
２組のＩＣカードを用いて相互認証を行う情報処理システムでは、通常、一方のＩＣカードの管理が他方のＩＣカードの管理よりも厳重になされるのが一般的である。たとえば、預金者用ＩＣカードと銀行用ＩＣカードとを用いるシステムの場合、銀行用ＩＣカードは銀行の担当者によって管理されることになるので、一般大衆が携帯することになる預金者用ＩＣカードに比べて、厳重な管理がなされるのが普通であり、この銀行用ＩＣカードに対して不正なアクセスがなされる可能性は低いと言える。したがって、このようなシステムに本発明を適用するには、「＊」印を付したステップＳ５１，Ｓ６５を、預金者用ＩＣカード側のＲＯＭ内ルーチンにのみ付加するようにすればよい。この場合、預金者用ＩＣカード内における乱数暗号化コマンドの実行（図５の動作▲５▼）は、預金者用ＩＣカード側のＲＡＭ内の相手方認証済フラグが「ＯＮ」になった状態、別言すれば、預金者用ＩＣカードが正当な銀行用ＩＣカードを認証した状態でなければ、許可されないことになり、預金者用ＩＣカードに対する不正アクセスは防止できる。一方、銀行用ＩＣカード内における乱数暗号化コマンドの実行（図４の動作▲５▼）は、銀行用ＩＣカードが正当な預金者用ＩＣカードを認証したか否かにかかわらず許可されるので、図４に示す認証処理は何ら支障なく実行できる。もちろん、銀行用ＩＣカードに対しては、動作▲５▼を実行させる不正アクセスは可能であるが、厳重な管理がなされている銀行用ＩＣカードについては、そのような不正アクセスがなされる可能性は極めて低いために問題にはならない。
【００６７】
次に、第２の問題点は、認証コード照合コマンドが不正使用される問題である。すなわち、図４における動作▲１▼や動作▲７▼と同等の処理が、不正アクセス装置によって行われた場合の問題である。動作▲１▼を実行して、乱数ＲＮＤを発生させた後、認証コードＡの代わりに、でたらめな認証コードＰを用いて、動作▲７▼を試行錯誤的に繰り返し実行すれば、いずれは、一致を示す「ＯＫ」なる照合結果が動作▲９▼として得られることになる。
【００６８】
本発明によれば、図７および図８に「＊＊」を付したステップが付加されているため、このような不正アクセスを防止することができる。すなわち、図６に示す乱数生成コマンドの処理手順によれば、乱数ＲＮＤが生成された後、ステップＳ４３において、乱数生成済フラグが「ＯＮ」の状態になる。ところが、図８に示す認証コード照合コマンドの処理手順によれば、最初のステップＳ６１において、乱数生成済フラグが「ＯＮ」であることを条件として、以下の処理が実行され、最後のステップＳ６６において、乱数生成済フラグは「ＯＦＦ」の状態になる。このような乱数生成済フラグの「ＯＮ」／「ＯＦＦ」の動作を、図４のダイヤグラムで追ってみると次のようになる。まず、預金者用ＩＣカードに対して、動作▲１▼を実行して、乱数ＲＮＤを生成（動作▲２▼）させると、乱数生成済フラグは「ＯＮ」の状態になる。続いて、動作▲７▼として、認証コード照合コマンドを与えると、その時点では、乱数生成済フラグは「ＯＮ」の状態を維持しているので、預金者用ＩＣカード内において、認証コード照合コマンドの処理（動作▲８▼）は支障なく実行される。ただし、動作▲８▼の実行後には、乱数生成済フラグは「ＯＦＦ」の状態となる。したがって、続けて、動作▲７▼として、認証コード照合コマンドを再度与えると、その時点では、乱数生成済フラグは「ＯＦＦ」の状態になっているので、今度は、認証コード照合コマンドの処理（動作▲８▼）は実行されない。認証コード照合コマンドを再度実行するためには、再び、動作▲１▼として、乱数生成コマンドを与え、新たな乱数ＲＮＤを発生させる必要がある。
【００６９】
このような構成にしておけば、同一の乱数ＲＮＤについて、でたらめな認証コードＰを試行錯誤的に与えて、動作▲７▼を繰り返し実行することはできなくなる。もちろん、動作▲１▼と動作▲７▼とをそれぞれ交互に繰り返して実行することは可能であるが、毎回、発生される乱数ＲＮＤは異なるため、動作▲９▼において一致を示す照合結果「ＯＫ」が偶然得られる可能性は極めて低くなる。
【００７０】
結局、図７および図８に「＊＊」印を付したステップを付加すると、ＩＣカードをリーダライタ装置に接続した後、少なくとも１回は乱数生成処理が実行されており、かつ、最後に実行された乱数生成処理の後に、まだ１回も認証コード照合処理が実行されていない場合に限り、認証コード照合処理が実行できるように構成することができ、これにより不正アクセスを防止することが可能になる。なお、この「＊＊」印を付したステップは、預金者用ＩＣカードと銀行用ＩＣカードとの双方に適用してかまわない。
【００７１】
さて、最後に、前述した第２の問題点を解決するための本発明の変形例を述べておく。この変形例の要点は、リーダライタ装置から乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、認証コード照合処理を実行するように構成するものである。たとえば、図４の認証処理の場合、預金者用ＩＣカードに対しては、動作▲１▼により乱数生成コマンドが与えられ、続いて動作▲７▼により認証コード照合コマンドが与えられる。そして、この預金者用ＩＣカードに対して正当な認証処理が行われる限り、乱数生成コマンドの次に与えられるコマンドは、認証コード照合コマンドであり、両コマンドの間に別なコマンドが介在することはない。したがって、乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、認証コード照合処理を実行するように構成しても、正当な認証処理を行う上では何ら支障は生じない。一方、不正アクセス防止の面では、このような構成にしておくことは大きな意味がある。すなわち、認証コード照合コマンドは、乱数生成コマンドの直後に与えた場合にだけ実行されるのであるから、でたらめな認証コードＸとともに連続的に認証コード照合コマンドを与えて試行錯誤を繰り返すような不正アクセスが一切禁止されるのみならず、乱数生成コマンドと認証コード照合コマンドとの間に、何らかのコマンドを介在させて何らかの不正アクセスを行おうとする試みは一切排除されることになる。
【００７２】
このようなことを実現するためには、動作▲７▼として認証コード照合コマンドを与えたとき、ＩＣカード側では、このコマンドが乱数生成コマンドの直後のコマンドであることを確認し、別言すれば、このコマンドの直前に乱数生成コマンドが与えられていたことを確認し、そのような確認が得られた場合に限り、動作▲８▼としての認証コード照合処理を実行するように構成すればよい。具体的には、上述した「＊＊」印を付したステップを付加した上に、乱数生成コマンド以外のすべてのコマンドの処理手順の最後に、乱数生成済フラグを「ＯＦＦ」にするステップを追加するようにすればよい。こうしておけば、乱数生成コマンドを実行した直後には、乱数生成済フラグは「ＯＮ」になるが、その後、他のいかなるコマンドを実行しても、乱数生成済フラグは「ＯＦＦ」になってしまうので、結局、認証コード照合コマンドは、乱数生成コマンドの直後にのみ実行可能ということになる。
【００７３】
以上、本発明を図示する実施例に基いて説明したが、本発明はこの実施例に限定されるものではなく、この他にも種々の態様で実施可能である。たとえば、上述の実施例では、乱数暗号化コマンドの処理が、常に同一のキー「ＫＥＹ」に基いて行われるという前提で話を進めたが、複数のキーを用意しておき、暗号化に用いるキーを特定する情報をコマンドとともに与えることも可能である。たとえば、預金者用ＩＣカードのＥＥＰＲＯＭ内に、３種類の暗号化用キー「ＫＥＹ１」，「ＫＥＹ２」，「ＫＥＹ３」を用意しておき、銀行用ＩＣカードのＥＥＰＲＯＭ内にも、同じく３種類の暗号化用キー「ＫＥＹ１」，「ＫＥＹ２」，「ＫＥＹ３」を用意しておいたとする。この場合、動作▲４▼における乱数暗号化コマンドを与えるときに、乱数ＲＮＤとキー番号（３つの暗号化用キーのいずれか１つを特定する情報）とをコマンドとともにＩＣカードに与えるようにする。すると、動作▲５▼において、特定されたキーを用いて乱数ＲＮＤの暗号化処理が実行されることになる。また、動作▲７▼における認証コード照合コマンドを与えるときにも、認証コードとキー番号とをコマンドとともにＩＣカードに与えるようにし、動作▲８▼において、やはり特定されたキーを用いて乱数ＲＮＤの暗号化処理が実行されるようにする。このようにすれば、複数の暗号化用キーを用いるシステムが可能になり、本発明はこのようなシステムにも同様に適用可能である。
【００７４】
また、上述の実施例では、預金者用ＩＣカードと銀行用ＩＣカードとを用いた情報処理システムに本発明を適用したが、本発明はどのような情報処理システムに適用してもかまわない。特に、本発明の適用対象は、ＩＣカードに限定されるものではなく、情報処理機能を有する携帯可能情報記録媒体に広く適用可能なものである。
【００７５】
【発明の効果】
以上のとおり本発明に係る２組の携帯可能情報記録媒体を用いた情報処理システムによれば、相手方を正当な媒体であると認証したことを条件として、相手方からの認証要求に応答する処理を実行するようにしたため、また、認証コード照合コマンドが繰り返し実行されることを禁止するようにしたため、十分なセキュリティを確保することが可能になる。
【図面の簡単な説明】
【図１】２組のＩＣカードによる相互認証を行う一般的な情報処理システムの基本構成を説明する図である。
【図２】図１に示された第１のＩＣカード１０の内部構成を示すブロック図である。
【図３】相互認証をセキュリティ条件にもつＩＣカードにおけるＣＰＵの一般的な処理手順を示す流れ図である。
【図４】第１のＩＣカード１０（預金者用ＩＣカード）による第２のＩＣカード２０（銀行用ＩＣカード）の認証処理の手順を示すダイヤグラムである。
【図５】第２のＩＣカード２０（銀行用ＩＣカード）による第１のＩＣカード１０（預金者用ＩＣカード）の認証処理の手順を示すダイヤグラムである。
【図６】本発明に係る乱数生成コマンドの処理手順を説明する流れ図である。
【図７】本発明に係る乱数暗号化コマンドの処理手順を説明する流れ図である。
【図８】本発明に係る認証コード照合コマンドの処理手順を説明する流れ図である。
【符号の説明】
１０…第１のＩＣカード（預金者用ＩＣカード）
１１…ＣＰＵ
１２…ＲＯＭ
１３…ＲＡＭ
１４…ＥＥＰＲＯＭ
２０…第２のＩＣカード（銀行用ＩＣカード）
３０…リーダライタ装置
【図１】
0003652409.tif 000002
【図２】
0003652409.tif 000003
【図３】
0003652409.tif 000004
【図４】
0003652409.tif 000005
【図５】
0003652409.tif 000006
【図６】
0003652409.tif 000007
【図７】
0003652409.tif 000008
【図８】
0003652409.tif 000009