JP3652409B2 - 携帯可能情報記録媒体 - Google Patents
携帯可能情報記録媒体 Download PDFInfo
- Publication number
- JP3652409B2 JP3652409B2 JP16809495A JP16809495A JP3652409B2 JP 3652409 B2 JP3652409 B2 JP 3652409B2 JP 16809495 A JP16809495 A JP 16809495A JP 16809495 A JP16809495 A JP 16809495A JP 3652409 B2 JP3652409 B2 JP 3652409B2
- Authority
- JP
- Japan
- Prior art keywords
- random number
- recording medium
- information recording
- portable information
- reader
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Images
Description
【産業上の利用分野】
本発明は、携帯可能情報記録媒体に関し、特に、ICカードのように、情報処理機能を有する携帯可能情報記録媒体を2組用いてセキュリティを高めた情報処理システムに利用される携帯可能情報記録媒体に関する。
【0002】
【従来の技術】
磁気カードに代わる次世代の携帯可能情報記録媒体として、ICカードが注目を集めている。最近では、半導体集積回路の小型化、低コスト化のための技術進歩により、実社会の種々のシステムにおいてICカードが実用されるに至っている。
【0003】
特に、CPUを内蔵したICカードでは、単なる情報記録媒体としての機能に情報処理機能が付加されるため、高度なセキュリティを必要とする情報処理システムへの利用が期待されている。セキュリティを確保するための代表的な手法としては、ICカードの所有者、発行者、製造者などに固有のPIN(Personal Identification Number)を設定し、このPINを個々のICカード内部に記録しておき、外部から与えられるPINと内部に記録されているPINとを照合することにより、操作者の正当性を確認する方法が一般に利用されている。ただ、このようなPIN照合による方法では、PIN自体が不正漏洩したような場合には、十分なセキュリティが確保できない。
【0004】
そこで、2組の媒体を用いて相互認証を行うことにより、より高いセキュリティを確保する手法も実用化されている。たとえば、ICカードに銀行預金の取引データを記録して預金通帳代わりに用いる情報処理システムでは、ICカード内部に記録された取引データが不正な手段によって改竄されるようなことがあると重大な問題になる。そこで、個々の預金者に通帳代わりに手渡す預金者用ICカードについては、単独では取引データにアクセスすることができないようにし、別個に用意した銀行用ICカードと併用することによって初めてアクセスが可能になるような構成にしておけば、セキュリティを高めることができる。たとえば、銀行の店舗に設置されたリーダライタ装置に、同時に2枚のICカードを挿入することができる挿入口を設けておき、一方の口から預金者用ICカードを挿入し、他方の口から銀行用ICカードを挿入するようにする。そして、双方において、相手方が正当なカードであることを認証する処理を行い、双方ともに肯定的な認証結果が得られた場合に限って、取引データへのアクセスが可能になるようにすれば、セキュリティを向上させることができる。
【0005】
このように、2組の媒体を用いた相互認証を前提としてシステムを構築すれば、PIN照合のみに頼っているシステムに比べて非常に高いセキュリティを確保できる。上述の例では、銀行用ICカードは、銀行の担当者によって確実な管理がなされるので、盗難などの被害が発生する可能性は極めて小さい。これに対して、預金者用ICカードは、一般の預金者が携帯するため、盗難や紛失のおそれがあるが、銀行用ICカードを併用しなくては、取引データにアクセスすることはできないため、実害の発生を極力抑えることが可能になる。
【0006】
2組の媒体についての相互認証を行う方法として、秘密のキーと乱数とを用いる方法が提案されている。たとえば、預金者用ICカードと銀行用ICカードとの間で相互認証を行う場合には、次のような処理が実行される。まず、預金者用ICカードと銀行用ICカードとのそれぞれに、同一の秘密のキーを記録しておく。この秘密のキーは、一旦書き込んだら、外部には決して読み出すことができないようにしておく。そして、まず預金者用ICカード内部で乱数を発生させ、この乱数を銀行用ICカードに与える。銀行用ICカード側では、内部に記録されていた秘密のキーを用いて、与えられた乱数を暗号化して認証コードを作成し、作成した認証コードを預金者用ICカードへと返す。預金者用ICカード側では、内部に記録されていた秘密のキーを用いて、先程内部で発生させた乱数を暗号化して認証コードを作成し、この作成した認証コードと銀行用ICカードから返された認証コードとが一致するか否かを照合する。両者が一致していれば、預金者用ICカードによって銀行用ICカードを認証する処理、別言すれば、預金者用ICカード自身が、「相手方である銀行用ICカードは正当なものである」と認める処理が完了したことになる。この処理と全く逆の処理を行えば、銀行用ICカードによって預金者用ICカードを認証する処理、別言すれば、銀行用ICカード自身が、「相手方である預金者用ICカードは正当なものである」と認める処理が完了することになる。
【0007】
【発明が解決しようとする課題】
上述のように、2組の媒体を用いて相互認証を行う情報処理システムでは、PIN照合のみに頼ったシステムに比べれば、はるかに高度なセキュリティを確保することが可能である。しかしながら、いわゆる「ハッカー」と称される不正利用者の技術水準も年々高くなってきており、上述したような相互認証システムは、必ずしも十分なセキュリティを備えたものとは言えない状況になってきている。
【0008】
たとえば、ICカード内部に記録されている秘密のキーそのものを外部に読み出すことはできないかもしれないが、ICカードに対して何らかの数とともに暗号化コマンドを与え、秘密のキーを用いてこの数を暗号化して認証コードを作成する処理を内部で実行させた後、得られた認証コードを外部へ出力させることは可能である。したがって、どのような数を与えたときに、どのような認証コードが出力されるかを解析すれば、内部に記録された秘密のキーを推定することができる。
【0009】
また、別な方法として、ICカードに対して何らかの認証コードとともに認証コード照合コマンドを与えて認証コード照合処理を実行させれば、少なくとも肯定的な照合結果か、否定的な照合結果か、のいずれかが得られることになる。そこで、種々の認証コードを試行錯誤的に与える操作を、肯定的な照合結果が得られるまで繰り返し実行すれば、どのような認証コードを与えたときに、肯定的な照合結果が得られるかを知ることが可能になり、やはり秘密のキーを推定する材料が得られることになる。
【0010】
そこで本発明は、より高度なセキュリティを確保した相互認証が可能な携帯可能情報記録媒体およびこれを用いた情報処理システムを提供することを目的とする。
【0012】
【課題を解決するための手段】
(1) 本発明の第1の態様は、情報処理機能を有する第1の携帯可能情報記録媒体と、情報処理機能を有する第2の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第1の携帯可能情報記録媒体が第2の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第1の認証処理と、第2の携帯可能情報記録媒体が第1の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第2の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体において、
リーダライタ装置から所定の乱数とともに乱数暗号化コマンドが与えられたときに、内部に記録されている所定のキーを利用して、与えられた乱数を暗号化して認証コードを作成し、作成した認証コードをリーダライタ装置に送出する乱数暗号化処理を実行する機能を設け、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、相手方認証済情報を記録する領域を設け、相手方の携帯可能情報記録媒体が正当な媒体であると認証された場合に、この領域に相手方認証済情報を書き込む処理を行い、
リーダライタ装置から乱数暗号化コマンドが与えられたときに、この領域を参照し、相手方認証済情報が書き込まれている場合にのみ、内部での乱数暗号化処理が実行されるように構成したものである。
【0014】
(2) 本発明の第2の態様は、情報処理機能を有する第1の携帯可能情報記録媒体と、情報処理機能を有する第2の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第1の携帯可能情報記録媒体が第2の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第1の認証処理と、第2の携帯可能情報記録媒体が第1の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第2の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体において、
リーダライタ装置から乱数生成コマンドが与えられたときに、内部で乱数を生成し、生成した乱数をリーダライタ装置に送出する乱数生成処理を実行する機能と、
リーダライタ装置から、相手方の携帯可能情報記録媒体内で作成された認証コードとともに認証コード照合コマンドが与えられたときに、内部に記録されている所定のキーを利用して、過去に内部で実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成し、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果をリーダライタ装置に送出する認証コード照合処理を実行する機能と、
を設け、
リーダライタ装置に接続した後、少なくとも1回は内部で乱数生成処理が実行されており、かつ、内部で最後に実行された乱数生成処理の後に、まだ1回も内部で認証コード照合処理が実行されていない場合に限り、内部での認証コード照合処理が実行されるように構成したものである。
【0015】
(3) 本発明の第3の態様は、上述の第2の態様に係る携帯可能情報記録媒体において、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、乱数生成済情報を記録する領域を設け、
内部で乱数生成処理を実行した後には、この領域に「生成済」を示す情報を書き込む処理を行い、
内部で認証コード照合処理を実行した後には、この領域に「未生成」を示す情報を書き込む処理を行い、
リーダライタ装置から認証コード照合コマンドが与えられたときに、この領域を参照し、「生成済」を示す情報が書き込まれている場合にのみ、内部での認証コード照合処理が実行されるように構成したものである。
【0016】
(4) 本発明の第4の態様は、情報処理機能を有する第1の携帯可能情報記録媒体と、情報処理機能を有する第2の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第1の携帯可能情報記録媒体が第2の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第1の認証処理と、第2の携帯可能情報記録媒体が第1の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第2の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体において、
リーダライタ装置から乱数生成コマンドが与えられたときに、内部で乱数を生成し、生成した乱数をリーダライタ装置に送出する乱数生成処理を実行する機能と、
リーダライタ装置から、相手方の携帯可能情報記録媒体内で作成された認証コードとともに認証コード照合コマンドが与えられたときに、内部に記録されている所定のキーを利用して、過去に内部で実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成し、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果をリーダライタ装置に送出する認証コード照合処理を実行する機能と、
を設け、
リーダライタ装置から乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、内部での認証コード照合処理が実行されるように構成したものである。
【0017】
(5) 本発明の第5の態様は、上述の第4の態様に係る携帯可能情報記録媒体において、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、乱数生成済情報を記録する領域を設け、
乱数生成コマンドに基く内部での乱数発生処理を実行した後には、この領域に「生成済」を示す情報を書き込む処理を行い、
乱数生成コマンド以外のコマンドに基く内部での処理を実行した後には、この領域に「未生成」を示す情報を書き込む処理を行い、
リーダライタ装置から認証コード照合コマンドが与えられたときに、この領域を参照し、「生成済」を示す情報が書き込まれている場合にのみ、内部での認証コード照合処理が実行されるように構成したものである。
【0018】
【作 用】
本発明に係る携帯可能情報記録媒体を用いた情報処理システムは、2組の携帯可能情報記録媒体をリーダライタ装置に接続して相互認証を行う場合に、第1の携帯可能情報記録媒体が第2の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第1の認証処理を行った結果、肯定的な認証結果が得られた場合に限り、その逆の認証処理、すなわち第2の携帯可能情報記録媒体が第1の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第2の認証処理を実行可能とする点に特徴がある。
【0019】
たとえば、預金者用ICカードを第1の携帯可能情報記録媒体とし、銀行用ICカードを第2の携帯可能情報記録媒体とする具体的なシステムを考えてみると、預金者用ICカードが銀行用ICカードを正当であると認証する第1の認証処理を行った結果、肯定的な認証結果が得られた場合に限り、銀行用ICカードが預金者用ICカードを正当であると認証する第2の認証処理を実行することが可能になる。したがって、預金者用ICカードが盗難や紛失の被害に遭ったとしても、正当な銀行用ICカードがない限り、この預金者用ICカードを正当であると認識するための認証処理は実行されないため、預金者用ICカードからは、このような認証処理の実行に基く応答は一切得られないことになる。すなわち、預金者用ICカードを正当であると認識するための認証処理の一環として、預金者用ICカードに対して乱数暗号化コマンドを与え、乱数の暗号化によって認証コードを作成させ、これを外部に送出させる機能をもたせた場合であっても、銀行用ICカードが正当な媒体であると認証された場合に限り、このような機能の実行が行われるように構成しておけば、正当な銀行用ICカードがない限り、預金者用ICカードにこのような機能の実行をさせることはできなくなる。
【0020】
また、乱数生成コマンドを受けて内部で乱数を生成し、生成した乱数を相手方の携帯可能情報記録媒体に与え、相手方の携帯可能情報記録媒体において、この乱数に基いて認証コードを作成させた後、この相手方の携帯可能情報記録媒体内において作成された認証コードと自分自身で作成した認証コードとの照合を行う機能を有する場合に、最後に実行された乱数生成処理の後に、まだ1回も認証コード照合処理が実行されていない場合に限り、認証コード照合処理を実行するように構成しておけば、同一の乱数について多数の認証コードを試行錯誤的に与えて認証コード照合処理を実行させるようなことが不可能になり、不正な試行錯誤行為によるセキュリティ低下を防ぐことができる。また、乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、認証コード照合処理を実行するように構成しても、不正な試行錯誤行為を防止することができる。
【0021】
【実施例】
以下、本発明を図示する実施例に基いて説明する。
【0022】
§1. 相互認証を行う一般的な情報処理システムの基本構成
はじめに、相互認証を行う一般的な情報処理システムの基本構成を説明する。この情報処理システムは、2組の携帯可能情報記録媒体を用いたシステムとして、従来から提案されている一般的なシステムである。図1は、このようなシステムの全体構成を示す概念図であり、ここでは、携帯可能情報記録媒体としてICカードを用いた例が示されている。
【0023】
図1において、第1のICカード10と第2のICカード20とは、いずれも情報処理機能を有するICカードである。リーダライタ装置30は、これらのICカードに対してアクセスする機能をもった装置であり、通常は、図示されていないコンピュータに接続して利用される。リーダライタ装置30には、2つの挿入口が設けられており、一方の挿入口には第1のICカード10が挿入され、他方の挿入口には第2のICカード20が挿入される。
【0024】
図2は、第1のICカード10の内部構成を示すブロック図である。このブロック図に示されているように、ICカード10には、CPU11と、ROM12と、RAM13と、EEPROM14とが内蔵されている。CPU11は、このICカードの情報処理機能を司る構成要素であり、ROM12内に格納されたプログラムに基いて所定の情報処理を実行する。RAM13は、CPU11が情報処理を実行する上での作業領域として利用されるメモリである。EEPROM14は、このICカード本来の目的である情報記録に利用されるメモリであり、ユーザデータや各種キーなどが記録される。このICカード10に対しては、リーダライタ装置30から電源やクロック信号が供給され、カードと外部とはI/O信号を使い通信を行う。ここで、ROM12やEEPROM14は、電源の供給が停止しても記録内容が保持される不揮発性メモリであるが、RAM13は、電源の供給が停止すると記録内容が失われる揮発性メモリである。なお、図2には、RAM13内に相手方認証済フラグおよび乱数生成済フラグが書き込まれた状態が示されているが、これらのフラグは本発明を適用する場合に利用されるフラグであり、その説明は後述する。
【0025】
このICカード10内の各メモリに対するアクセスは、すべてCPU11によって行われ、リーダライタ装置30のような外部装置から、直接ICカード10内のメモリをアクセスすることはできない。CPU11は、外部装置から与えられる所定のコマンドに基いて、このICカード10全体を統括管理する機能をもっている。たとえば、外部装置からEEPROM14の所定領域へデータを書き込むためには、CPU11に対して所定の書き込みコマンドを与える必要があり、EEPROM14の所定領域内のデータを外部へ読み出すためには、CPU11に対して所定の読出しコマンドを与える必要がある。このような書き込みコマンドや読出しコマンドを実行する上では、必要に応じて、EEPROM14内に記録されたキーと、外部装置から与えられたキーとの照合が行われる。
【0026】
以上、第1のICカード10の内部構成を説明したが、第2のICカード20もそのハードウエア構成は全く同じである。ただ、ソフトウエアは、その用途の相違に基いて若干相違する。
【0027】
この情報処理システムの本質的な部分は、少なくとも第1のICカード10のEEPROM14内のユーザデータの部分に対するアクセスを行うには、両ICカード10,20についての相互認証が必要であるという点である。すなわち、まず、両ICカード10,20をリーダライタ装置30の挿入口に挿入し、リーダライタ装置30に対して両ICカード10,20が電気的に接続された状態にし、かつ、両者間において、それぞれ相手方のICカードが正当なカードであることが認証された状態になっていなければ、少なくとも第1のICカード10のEEPROM14内のユーザデータの部分に対するアクセスは禁止される。
【0028】
ここでは、理解を容易にするために、第1のICカード10が預金者用ICカードとして用いられ、第2のICカード20が銀行用ICカードとして用いられる具体的な例について、以下の説明を行うことにする。預金者用ICカードには、ユーザデータとして銀行預金に関する取引情報が記録されることになり、預金者はこのICカードを通帳代わりに利用することになる。銀行の支店には、リーダライタ装置30およびこれに接続されたコンピュータ(図示されていない)が設置されており、このリーダライタ装置30には銀行用ICカードが挿入された状態になっている。預金者が預金者用ICカードを利用して何らかの取引を行う場合、預金者用ICカードをこのリーダライタ装置30内に挿入し、必要に応じてPINなどの暗証キーをコンピュータに対して入力する。入力した暗証キーは、リーダライタ装置30を介して、預金者用ICカードに与えられ、預金者用ICカードの内部では、EEPROM14内に予め記録されていた暗証キーと、外部から与えられた暗証キーとの照合が行われる。
【0029】
このシステムでは、このようなPIN照合が行われるとともに、両ICカード間での相互認証が行われる。すなわち、預金者用ICカードが、相手方である銀行用ICカードが正当なものであるか否かを認証する処理と、逆に、銀行用ICカードが、相手方である預金者用ICカードが正当なものであるか否かを認証する処理と、が行われ、双方ともに肯定的な認証結果が得られた場合に、預金者用ICカード内のユーザデータに対する読出しや書き込みなどのアクセスが許可されることになる。このような相互認証システムを採ることにより、セキュリティを非常に向上させることができる。たとえば、預金者用ICカードが、盗難もしくは紛失により不正利用者の手に渡った場合を考える。この場合、PIN照合のみしかセキュリティ手段をもたないシステムでは、何らかの方法でPINが知られてしまうと、不正利用者によって不正アクセスが行われる可能性がある。たとえば、不正利用者がリーダライタ装置30と同等の機能をもった装置を所持していれば、PINさえ知っていれば、この装置により不正入手した預金者用ICカードに対するアクセスが可能になる。ところが、相互認証を条件とするシステムでは、銀行用ICカードを不正入手しない限り、このような不正アクセスを行うことはできない。
【0030】
§2. 一般的な相互認証処理
続いて、§1で述べたような相互認証をセキュリティ条件にもつ情報処理システムにおいて、従来提案されている一般的な相互認証処理を説明する。図3は、このような相互認証をセキュリティ条件にもつICカードにおけるCPUの一般的な処理手順を示す流れ図である。前述したように、ICカードに対する電源供給は、リーダライタ装置側から行われるのが一般的であり、ICカードをリーダライタ装置に接続すると、電源供給が行われ、CPUに対してリセットがかかることになる。図3の流れ図は、このリセット後の処理手順を示すものである。
【0031】
まず、ステップS1において、リセット応答処理が行われる。これは、ICカードからリーダライタ装置に対して、CPUがリセットされたことを示す応答信号を送信する処理である。続いて、ステップS2において、ICカードはコマンド受信待ちの状態に入る。そして、リーダライタ装置から何らかのコマンドが与えられると、ステップS3で、与えられたコマンドに基いた分岐処理が行われ、各コマンドに対応した処理がステップS4〜S7において実行される。そして、続くステップS8において、レスポンス送信が行われる。すなわち、何らかの送信データが、ICカードからリーダライタ装置側にレスポンスとして送信されることになる。どのようなデータが送信されるかは、どのようなコマンド処理が実行されたかによってそれぞれ異なる。いずれにせよ、リーダライタ装置からICカードに対して何らかのコマンドが与えられると、ICカード内のCPUは、このコマンドに応じた処理を実行し、何らかのレスポンスを送信し、次のコマンドを待つ、という操作が繰り返されることになる。
【0032】
各コマンドについての処理内容は、ICカード内のROMにプログラムされており、ステップS3のコマンド分岐は、対応するコマンドについての各処理ルーチンへの分岐に相当する。ここでは、相互認証処理の内容を説明するのが目的であるため、図3の流れ図においては、この相互認証処理に関連した3つのコマンド、すなわち、乱数生成コマンド、乱数暗号化コマンド、認証コード照合コマンドを、それぞれステップS4,S5,S6と独立して示し、その他のコマンドをステップS7に示した。実際には、このステップS7に示した「その他のコマンド」の中には、ユーザデータの書き込みコマンドや読出しコマンドなど、このICカードを本来の目的に利用するために必要な種々のコマンドが含まれることになるが、ここでは、これらのコマンドについての説明は省略する。
【0033】
続いて、相互認証処理に関連した3つのコマンドが与えられた場合の処理内容を簡単に説明する。まず、ステップS4で行われる乱数生成コマンドは、一般に、「GENERATE CHALLENGE」と呼ばれているコマンドである。このコマンドが与えられると、CPUは、内部で乱数を生成し、生成した乱数を送信データとしてセットする処理を実行する。したがって、後に実行されるステップS8では、このセットされた乱数の値が、レスポンスデータとしてリーダライタ装置側へ送信されることになる。結局、リーダライタ装置から見れば、乱数生成コマンドをICカードに与えると、乱数値がレスポンスとして戻されることになる。
【0034】
また、ステップS5で行われる乱数暗号化コマンドは、一般に(ICカードの国際標準規格によれば)、「INTERNAL AUTHENTICATE 」と呼ばれているコマンドである。このコマンドは、所定の乱数とともに与えられる。このコマンドが与えられると、CPUは、EEPROM内に記録されている所定のキーを利用して、与えられた乱数を暗号化して認証コードを作成する。そして、この作成した認証コードを送信データとしてセットする処理を実行する。したがって、後に実行されるステップS8では、このセットされた認証コードの値が、レスポンスデータとしてリーダライタ装置側へ送信されることになる。
【0035】
たとえば、リーダライタ装置からICカードに対して、乱数「RND」とともに乱数暗号化コマンドを与えたとする。CPUは、EEPROM内に記録されている所定のキー「KEY」を用いて、この乱数「RND」を暗号化する処理を行う。この暗号化のアルゴリズムとしては種々の方法が利用されているが、この暗号化のアルゴリズムを関数「f」として把握すれば、暗号化によって得られる認証コードAは、A=f(RND,KEY)で表される値になる。別言すれば、認証コードAは、与えられた乱数「RND」と所定のキー「KEY」との関数で表されることになる。結局、リーダライタ装置から見れば、乱数「RND」とともに乱数暗号化コマンドをICカードに与えると、A=f(RND,KEY)で表される認証コードAがレスポンスとして戻されることになる。
【0036】
更に、ステップS6で行われる認証コード照合コマンドは、一般に、「EXTERNAL AUTHENTICATE 」と呼ばれているコマンドである。このコマンドは、所定の認証コードとともに与えられる。このコマンドが与えられると、CPUは、EEPROM内に記録されている所定のキーを利用して、過去に実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成する。そして、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果を送信データとしてセットする処理を実行する。したがって、後に実行されるステップS8では、このセットされた照合結果が、レスポンスデータとしてリーダライタ装置側へ送信されることになる。
【0037】
たとえば、リーダライタ装置からICカードに対して、認証コード「A」とともに認証コード照合コマンドを与えたとする。そして、このとき、このICカードの内部では、過去に所定の乱数「RND」が生成されていたとする。この場合、CPUは、EEPROM内に記録されている所定のキー「KEY」を用いて、過去に生成した乱数「RND」を暗号化する処理を行い、認証コード「B」を作成する。すなわち、認証コードBは、B=f(RND,KEY)で表される値になる。更に、CPUは、作成した認証コード「B」と、リーダライタ装置から与えられた認証コード「A」とが一致するか否か照合を行い、その結果を送信データとしてセットする。結局、リーダライタ装置から見れば、認証コード「A」とともに認証コード照合コマンドをICカードに与えると、ICカード内部で作成された認証コード「B」と認証コード「A」との比較照合が行われ、一致か不一致を示す照合結果がレスポンスとして戻されることになる。
【0038】
以上、相互認証処理に関連した3つのコマンドが与えられた場合の処理内容を簡単に説明したが、続いて、これらのコマンドを用いた具体的な認証処理の手順を説明する。図4は、第1のICカード10(この例では預金者用ICカード)による第2のICカード20(この例では銀行用ICカード)についての認証処理の手順を示すダイヤグラムである。いわば、この認証処理は、預金者用ICカード側のCPUが、相手方の銀行用ICカードが正当なものであるか否かを認証する処理ということができる。もっとも、各ICカードのCPUは、いずれもリーダライタ装置からコマンドが与えられることにより初めて何らかの処理を実施する機能しかもたないので、このような認証処理を実行するには、リーダライタ装置からICカードに対して何らかのコマンドを与える動作を行わねばならない。図4において▲1▼〜▲9▼で示した動作は、このようなコマンドを与える動作もしくはそのコマンドに誘発されて実行される動作である。以下、これらの動作を順に説明する。
【0039】
まず、動作▲1▼として、リーダライタ装置から預金者用ICカードに対して、乱数生成コマンドを与える。このコマンドを受け取った預金者用ICカード内部では、動作▲2▼として、乱数「RND」の生成が行われ、生成された乱数「RND」は、動作▲3▼において、リーダライタ装置へレスポンスとして戻される。続いて、動作▲4▼として、リーダライタ装置から銀行用ICカードに対して、乱数暗号化コマンドを与える。前述したように、この乱数暗号化コマンドは、所定の乱数を伴うコマンドである。そこで、リーダライタ装置は、動作▲3▼として戻された乱数「RND」を、動作▲4▼において、乱数暗号化コマンドとともに銀行用ICカードに与える。銀行用ICカードは、動作▲5▼として、与えられた乱数「RND」の暗号化を実行する。すなわち、EEPROM内に記録されている所定のキー「KEY」を用いて、関数fで表される所定のアルゴリズムに基いて乱数「RND」を暗号化し、A=f(RND,KEY)で表される認証コードAを作成する。こうして作成された認証コードAは、動作▲6▼において、リーダライタ装置へレスポンスとして戻される。
【0040】
次に、動作▲7▼として、リーダライタ装置から預金者用ICカードに対して、認証コード照合コマンドを与える。前述したように、この認証コード照合コマンドは、所定の認証コードを伴うコマンドである。そこで、リーダライタ装置は、動作▲6▼として戻された認証コードAを、動作▲7▼において、認証コード照合コマンドとともに預金者用ICカードに与える。預金者用ICカードは、動作▲8▼として、過去に生成した乱数、すなわち動作▲2▼において生成した乱数「RND」の暗号化を実行する。すなわち、EEPROM内に記録されている所定のキー「KEY」を用いて、関数fで表される所定のアルゴリズムに基いて乱数「RND」を暗号化し、B=f(RND,KEY)で表される認証コードBを作成する。そして、こうして作成された認証コードBと、リーダライタ装置から与えられた認証コードAとが一致するか否かの照合を行う。この照合結果(一致を示す「OK」または不一致を示す「NG」)は、動作▲9▼において、リーダライタ装置へレスポンスとして戻される。
【0041】
以上が認証処理のひととおりの手順である。ここで、預金者用ICカード側で用いられる所定のキー「KEY」と銀行用ICカード側で用いられる所定のキー「KEY」とが全く同一になるようにしておき(別言すれば、両ICカードのEEPROMに、予め全く同一の「KEY」を書き込んでおくようにしておき)、かつ、預金者用ICカード側で用いられる暗号化のアルゴリズムfと銀行用ICカード側で用いられる暗号化のアルゴリズムfとが全く同一になるようにしておけば(別言すれば、乱数暗号化コマンドの実行ルーチンとして、同一のルーチンを両ICカードのROM内に予め書き込んでおくようにしておけば)、認証コードAと認証コードBとは一致するはずである。したがって、動作▲9▼において、一致を示す「OK」なる照合結果が得られたとすれば、預金者用ICカードから見て、相手方となる銀行用ICカードが正当なものであるとの認証が得られたことになる。
【0042】
一方、図5は、第2のICカード20(この例では銀行用ICカード)による第1のICカード10(この例では預金者用ICカード)についての認証処理の手順を示すダイヤグラムである。いわば、この認証処理は、銀行用ICカード側のCPUが、相手方の預金者用ICカードが正当なものであるか否かを認証する処理ということができる。この認証処理の手順は、図4に示した認証処理の手順における両ICカードの役割を全く入れ替えたものであり、図4のダイヤグラムの左右を入れ替えたものが図5のダイヤグラムに相当する。したがって、この図5のダイヤグラムについての詳しい説明は省略するが、その概要だけを簡単に説明すれば、次のようになる。
【0043】
まず、動作▲1▼として、銀行用ICカードに対して、乱数生成コマンドを与え、動作▲2▼として乱数「RND」を生成させ、動作▲3▼においてこれをレスポンスとして戻す。次に、動作▲4▼として、預金者用ICカードに対して、乱数「RND」とともに乱数暗号化コマンドを与え、動作▲5▼における暗号化により認証コードC=f(RND,KEY)を作成し、動作▲6▼においてこれをレスポンスとして戻す。更に、動作▲7▼として、銀行用ICカードに対して、認証コードCとともに認証コード照合コマンドを与えると、動作▲8▼において、D=f(RND,KEY)で表される認証コードDが作成され、認証コードCとの照合が行われ、動作▲9▼において、照合結果がレスポンスとして戻される。そして、一致を示す「OK」なる照合結果が得られたとすれば、銀行用ICカードから見て、相手方となる預金者用ICカードが正当なものであるとの認証が得られたことになる。
【0044】
リーダライタ装置は、図4に示す認証処理による最終手順で得られた照合結果と、図5に示す認証処理による最終手順で得られた照合結果と、の双方において、一致を示す「OK」が得られた場合には、肯定的な相互認証が行われたものと判断し、ユーザデータへのアクセス処理など、本来の処理を実行することになり、預金者用ICカードおよび銀行用ICカードは、このようなアクセス処理を受け入れることになる。
【0045】
§3. 従来の相互認証処理の問題点
以上のように、§2では、従来提案されている一般的な相互認証システムの処理内容を簡単に説明したが、実は、このようなシステムでは、必ずしも十分なセキュリティを確保することはできない。ここでは、このような従来の相互認証システムについて、2つの問題点を指摘する。後述するように、本発明を適用することにより、この2つの問題点はいずれも解決される。
【0046】
第1の問題点は、乱数暗号化コマンドが不正使用される問題である。たとえば、預金者用ICカードが不正利用者の手に渡ったとし、この不正利用者が、リーダライタ装置と同等の機能を備えた不正アクセス装置を持っていたものとしよう。この場合、確かに、銀行用ICカードがこの不正利用者の手に渡らない限り、相互認証を行うことはできないわけであるから、この預金者用ICカード内のユーザデータに対するアクセスを直ちに行うことはできない。しかしながら、不正アクセス装置から預金者用ICカードに対して、乱数暗号化コマンドを与えることは可能である。すなわち、図5における動作▲4▼と同等の処理を、不正アクセス装置を用いて行うことは可能である。このとき、乱数暗号化コマンドとともに、何らかの値Xを乱数として与えるようにすれば、預金者用ICカード側では、動作▲5▼が実行され、Y=f(X,KEY)で表される認証コードYが作成され、動作▲6▼により、この認証コードYが不正アクセス装置に対してレスポンスとして戻されることになる。すなわち、不正利用者は、「ある値Xを与えて動作▲5▼を実行させると、特定の値Yがレスポンスとして得られる」という事実を知得することができることになる。
【0047】
そこで、Xとして種々の異なる値を用い、それぞれの場合にどのようなレスポンスYが得られるかを実際に試してみれば、XとYとの1対1の対応表を作成することができ、この対応表を解析することにより、暗号化のアルゴリズムfや暗号化に利用されるキーKEYを推定することが可能になる。万一、不正利用者に、暗号化のアルゴリズムfやキーKEYが知得されると、銀行用ICカードが偽造されるおそれがあり、セキュリティに重大な支障を来すことになる。
【0048】
第2の問題点は、認証コード照合コマンドが不正使用される問題である。やはり預金者用ICカードが不正利用者の手に渡ったとし、この不正利用者が、リーダライタ装置と同等の機能を備えた不正アクセス装置を持っていたものとしよう。この場合、不正アクセス装置から預金者用ICカードに対して、乱数生成コマンドを与えることは可能であり、また、認証コード照合コマンドを与えることは可能である。すなわち、図4における動作▲1▼や動作▲7▼と同等の処理を、不正アクセス装置を用いて行うことは可能である。そこで、まず動作▲1▼により乱数生成コマンドを与え、動作▲2▼によって何らかの乱数RNDを生成させれば、動作▲3▼により、生成した乱数RNDが不正アクセス装置に対してレスポンスとして戻されることになる。もちろん、この乱数RNDが得られたとしても、銀行用ICカードがない限りは、図4における動作▲5▼を実行することはできないので、この不正利用者は、正しい認証コードAを得ることはできない。
【0049】
しかしながら、この不正利用者は、でたらめな認証コードPを用いて、動作▲7▼を実行することは可能である。すなわち、不正アクセス装置を用いて、認証コード照合コマンドとともに、何らかの認証コードPを与えるようにすれば、預金者用ICカード側では、動作▲8▼が実行され、B=f(RND,KEY)で表される認証コードBが作成される。そして、この作成された認証コードBとでたらめた認証コードPとが照合され、動作▲9▼により、その照合結果が不正アクセス装置に対してレスポンスとして戻されることになる。もちろん、でたらめな認証コードPを用いたのであるから、多くの場合、不一致を示す照合結果「NG」が得られることになる。ところが、でたらめな認証コードPを試行錯誤的にいろいろと変えながら(たとえば、0000,0001,0002,…と1ずつ増やしながら)、動作▲7▼における認証コード照合コマンドを与える処理を繰り返し実行してゆけば、でたらめな認証コードPが、偶然、正しい認証コードAに一致する場合に遭遇することになる。
【0050】
すなわち、「OK」なる照合結果が得られるまで、でたらめな認証コードをいろいろと変えて、試行錯誤的に認証コード照合コマンドを与え続ければ、「OK」なる照合結果が得られた時点で与えた認証コードが正しい認証コードであることを認識することができる。このとき、乱数RNDは、動作▲3▼によって得られているので、特定の乱数RNDを暗号化することによって得られる正しい認証コードAを特定することができることになる。したがって、乱数RNDと認証コードAとの関係を解析することにより、やはり暗号化のアルゴリズムfや暗号化に利用されるキーKEYを推定することが可能になる。
【0051】
§4. 本発明に係る相互認証処理
本発明に係る相互認証処理では、図2のブロック図に示すように、RAM13内に、相手方認証済フラグおよび乱数生成済フラグを格納するための領域が設けられ、相互認証処理に関連した3つのコマンド、すなわち、乱数生成コマンド、乱数暗号化コマンド、認証コード照合コマンドは、それぞれ図6,図7,図8に示すような処理手順によって実行される。以下、これらの各処理手順を順に説明する。なお、これら各処理手順のステップにおいて、「*」印を付したステップは、前述した第1の問題点を解決するために付加された本発明特有のステップであり、「**」印を付したステップは、前述した第2の問題点を解決するために付加された本発明特有のステップである。その他のステップは、いずれも従来から行われている一般的な処理を示すステップである。本発明に係るICカードでは、ROM内に図6,図7,図8に示すような処理を行うためのプログラムルーチンが書き込まれていることになる。
【0052】
まず、図6を参照しながら、本発明に係る乱数生成コマンドの処理を説明する。この処理は、図4または図5のダイヤグラムにおける動作▲1▼〜▲3▼に対応する処理である。すなわち、本発明に係るICカードに対して、リーダライタ装置から乱数生成コマンド(一般的なICカードの規格において「GENERATE CHALLENGE」と呼ばれているコマンド)を与えると、ICカード内部では、まずステップS41において、乱数の生成が行われ、続くステップS42において、生成した乱数が送信データとしてセットされる。ここまでは、従来の一般的な乱数生成コマンドの処理手順である。本発明の特徴は、更に、ステップS43において、乱数生成済フラグが「ON」の状態になる点である。前述したように、乱数生成済フラグは、RAM内の所定領域に設定されるフラグであり、「ON」または「OFF」のいずれかの状態が示されれば足りるので、最低限1ビットの記録領域があればよい。ただ、この実施例では、1バイト分の領域を乱数生成済フラグに充てており、16進数で「01」の場合に「ON」、それ以外の場合に「OFF」を示すものとして取り扱っている。なお、揮発性メモリであるRAMは、電源投入当時は「01」以外の値をとるようになっており、本実施例において、ICカードをリーダライタ装置に接続した当初においては、乱数生成済フラグは「OFF」の状態になっている。
【0053】
以上の手順で、この乱数生成コマンドの処理は完了し、この処理ルーチンをコールしたもとのプログラムへと制御が戻ることになる。すなわち、図3の流れ図では、ステップS4の処理が完了したことになり、続いてステップS8が実行され、生成した乱数がレスポンスとしてリーダライタ装置へ戻されることになる。
【0054】
次に、図7を参照しながら、本発明に係る乱数暗号化コマンドの処理を説明する。この処理は、図4または図5のダイヤグラムにおける動作▲4▼〜▲6▼に対応する処理である。すなわち、本発明に係るICカードに対して、リーダライタ装置から所定の乱数RNDとともに乱数暗号化コマンド(一般的なICカードの規格において「INTERNAL AUTHENTICATE 」と呼ばれているコマンド)を与えると、ICカード内部では、まずステップS51において、相手方認証済フラグが「ON」か否かが判断される。前述したように、相手方認証済フラグは、RAM内の所定領域に設定されるフラグであり、「ON」または「OFF」のいずれかの状態が示されれば足りるので、最低限1ビットの記録領域があればよい。ただ、この実施例では、乱数生成済フラグと同様に、1バイト分の領域を相手方認証済フラグに充てており、16進数で「01」の場合に「ON」、それ以外の場合に「OFF」を示すものとして取り扱っている。また、揮発性メモリであるRAMは、電源投入当時は「01」以外の値をとるようになっており、本実施例において、ICカードをリーダライタ装置に接続した当初においては、相手方認証済フラグは「OFF」の状態になっている。
【0055】
ステップS51の判断において、相手方認証済フラグが「ON」であった場合には、続くステップS52へと進み、乱数RNDの暗号化が行われる。すなわち、EEPROM内に記録されている所定のキー「KEY」を用いて、与えられた乱数「RND」を暗号化する処理を行い、その結果として、認証コードAまたはCを得る。ここで、認証コードAまたはCは、暗号化のアルゴリズムを関数「f」として表せば、A=f(RND,KEY)あるいはC=f(RND,KEY)で表される値になる(AとCとの相違は、各カードが認証時に用いる乱数やKEYの相違から生じる)。
【0056】
一方、ステップS51の判断において、相手方認証済フラグが「OFF」であった場合には、ステップS52は実行されない。いずれの場合にも、続くステップS53において、送信データがセットされることになる。ここで、ステップS52が実行された場合には、ここで得られた認証コードAまたはCが、送信データとしてセットされる。一方、ステップS52が実行されなかった場合には、この実施例では、認証コードが得られなかったことを示す特定の値が送信データとしてセットされる。
【0057】
この図7の手順についての本発明の特徴は、ステップS51の判断処理を付加した点であり、ステップS52,S53は、従来の一般的な乱数暗号化コマンドの処理手順である。結局、以上の手順で、この乱数暗号化コマンドの処理は完了し、この処理ルーチンをコールしたもとのプログラムへと制御が戻ることになる。すなわち、図3の流れ図では、ステップS5の処理が完了したことになり、続いてステップS8が実行され、「得られた認証コード」もしくは「認証コードが得られなかったことを示す特定の値」がレスポンスとしてリーダライタ装置へ戻されることになる。
【0058】
次に、図8を参照しながら、本発明に係る認証コード照合コマンドの処理を説明する。この処理は、図4または図5のダイヤグラムにおける動作▲7▼〜▲9▼に対応する処理である。すなわち、本発明に係るICカードに対して、リーダライタ装置から所定の認証コードAまたはCとともに認証コード照合コマンド(一般的なICカードの規格において「EXTERNAL AUTHENTICATE 」と呼ばれているコマンド)を与えると、ICカード内部では、まずステップS61において、乱数生成済フラグが「ON」か否かが判断される。前述したように、この乱数生成済フラグは、図6に示すステップS43において「ON」にされるフラグである。このステップS61の判断において、乱数生成済フラグが「ON」であった場合には、続くステップS62において、リーダライタ装置から与えられた認証コードAまたはCを入力する処理が行われ、更に、ステップS63において、乱数RNDの暗号化が行われる。ここで用いる乱数RNDは、過去に実施した乱数生成コマンドにおけるステップS41で生成した数値である。すなわち、EEPROM内に記録されている所定のキー「KEY」を用いて、過去に生成された乱数「RND」を暗号化する処理を行い、その結果として、認証コードBまたはDが得られる。ここで、認証コードBまたはDは、暗号化のアルゴリズムを関数「f」として表せば、B=f(RND,KEY)あるいはD=f(RND,KEY)で表される値になる。
【0059】
続くステップS64では、ステップS62で入力した認証コードAまたはCと、ステップS63で作成した認証コードBまたはDとが一致するか否か調べる照合処理が行われる。そして、照合の結果、一致していれば、続くステップS65において、相手方認証済フラグを「ON」にする処理が行われる。不一致の場合には、ステップS65の処理は実行されず、相手方認証済フラグは「OFF」の状態のままになる。続くステップS66において、乱数生成済フラグが「OFF」の状態になり、ステップS67において、送信データがセットされる。ここでセットされる送信データは、ステップS64の照合結果の一致「OK」または不一致「NG」を示すデータである。
【0060】
なお、ステップS61で、乱数生成済フラグが「OFF」であると判断された場合には、ステップS62〜S66の処理は実行されず、直ちにステップS67で送信データがセットされる。本実施例では、この場合、照合結果の不一致「NG」を示すデータを送信データとしてセットするようにしているが、その他のデータ、たとえば、照合不能を示すデータをセットするようにしてもよい。
【0061】
この図8の手順についての本発明の特徴は、ステップS61の判断処理を付加した点と、ステップS65およびS66のフラグ操作処理を付加した点である。それ以外のステップは、従来の一般的な認証コード照合コマンドの処理手順である。結局、以上の手順で、この認証コード照合コマンドの処理は完了し、この処理ルーチンをコールしたもとのプログラムへと制御が戻ることになる。すなわち、図3の流れ図では、ステップS6の処理が完了したことになり、続いてステップS8が実行され、照合結果の一致「OK」または不一致「NG」、あるいは「照合不能」を示すデータがレスポンスとしてリーダライタ装置へ戻されることになる。
【0062】
§5. 本発明による問題点の解消
既に§4において述べたように、本発明の特徴は、相互認証処理に関連した3つのコマンド、すなわち、乱数生成コマンド、乱数暗号化コマンド、認証コード照合コマンドの処理手順において、それぞれ図6,図7,図8に「*」印および「**」印を付して示すステップを付加した点にある。そこで、これらの付加的なステップにより、§3で述べた2つの問題点が解消することを示そう。
【0063】
まず、第1の問題点は、乱数暗号化コマンドの不正使用の問題である。すなわち、図5における動作▲4▼と同等の処理を、不正アクセス装置を用いて行い、預金者用ICカードに対して、乱数暗号化コマンドとともに、何らかの値Xを乱数として与えるようにすれば、預金者用ICカード側では、動作▲5▼が実行され、Y=f(X,KEY)で表される認証コードYが作成され、動作▲6▼により、この認証コードYが不正アクセス装置に対してレスポンスとして戻されることになる。こうして、XとYとの1対1の対応表を作成することができれば、この対応表を解析することにより、暗号化のアルゴリズムfや暗号化に利用されるキーKEYを推定することが可能になることは既に述べたとおりである。
【0064】
本発明によれば、図7および図8に「*」を付したステップが付加されているため、このような不正アクセスを防止することができる。すなわち、図7に示す乱数暗号化コマンドの処理手順によれば、まず、ステップS51において、相手方認証済フラグが「ON」であるか否かが判断され、「ON」であった場合のみ、ステップS52以下の手順が実行される。ここで、相手方認証済フラグは、ICカードをリーダライタ装置に接続した当初は「OFF」であり、図8のステップS65が実行された場合にのみ「ON」になる。これは、図4に示す動作▲8▼を実行し、認証コードの照合一致が得られた後でなければ、図5に示す動作▲5▼が実行されないことを意味する。別言すれば、預金者用ICカードによる銀行用ICカードの認証処理(図4)について肯定的な認証結果が得られた場合に限り、銀行用ICカードによる預金者用ICカードの認証処理(図5)の実行が可能になるような構成になっている。このため、預金者用ICカードが不正使用者の手に渡ったとしても、銀行用ICカードがない限り、図4に示す認証処理を行うことはできないので、必然的に、図5の動作▲5▼は実行されないことになる。
【0065】
なお、念のために述べておくが、図7および図8に「*」を付したステップS51,S65は、相互認証が行われる2組のICカードのうちのいずれか一方のICカードのみに適用すべき手順である。なぜなら、これらの手順を、預金者用ICカードと銀行用ICカードとの双方に適用してしまった場合は、相互認証のいずれもが不可能になってしまうからである。すなわち、預金者用ICカードにより銀行用ICカードを認証するためには、銀行用ICカードに乱数暗号化コマンドの処理を実行させる必要があり、逆に、銀行用ICカードにより預金者用ICカードを認証するためには、預金者用ICカードに乱数暗号化コマンドの処理を実行させる必要があるので、両ICカードともに、相手方の認証が済まない限り乱数暗号化コマンドが実行されないようにプログラムされていたとすると、相手方からの認証要求に応える処理がいずれも拒絶されてしまうためである。
【0066】
2組のICカードを用いて相互認証を行う情報処理システムでは、通常、一方のICカードの管理が他方のICカードの管理よりも厳重になされるのが一般的である。たとえば、預金者用ICカードと銀行用ICカードとを用いるシステムの場合、銀行用ICカードは銀行の担当者によって管理されることになるので、一般大衆が携帯することになる預金者用ICカードに比べて、厳重な管理がなされるのが普通であり、この銀行用ICカードに対して不正なアクセスがなされる可能性は低いと言える。したがって、このようなシステムに本発明を適用するには、「*」印を付したステップS51,S65を、預金者用ICカード側のROM内ルーチンにのみ付加するようにすればよい。この場合、預金者用ICカード内における乱数暗号化コマンドの実行(図5の動作▲5▼)は、預金者用ICカード側のRAM内の相手方認証済フラグが「ON」になった状態、別言すれば、預金者用ICカードが正当な銀行用ICカードを認証した状態でなければ、許可されないことになり、預金者用ICカードに対する不正アクセスは防止できる。一方、銀行用ICカード内における乱数暗号化コマンドの実行(図4の動作▲5▼)は、銀行用ICカードが正当な預金者用ICカードを認証したか否かにかかわらず許可されるので、図4に示す認証処理は何ら支障なく実行できる。もちろん、銀行用ICカードに対しては、動作▲5▼を実行させる不正アクセスは可能であるが、厳重な管理がなされている銀行用ICカードについては、そのような不正アクセスがなされる可能性は極めて低いために問題にはならない。
【0067】
次に、第2の問題点は、認証コード照合コマンドが不正使用される問題である。すなわち、図4における動作▲1▼や動作▲7▼と同等の処理が、不正アクセス装置によって行われた場合の問題である。動作▲1▼を実行して、乱数RNDを発生させた後、認証コードAの代わりに、でたらめな認証コードPを用いて、動作▲7▼を試行錯誤的に繰り返し実行すれば、いずれは、一致を示す「OK」なる照合結果が動作▲9▼として得られることになる。
【0068】
本発明によれば、図7および図8に「**」を付したステップが付加されているため、このような不正アクセスを防止することができる。すなわち、図6に示す乱数生成コマンドの処理手順によれば、乱数RNDが生成された後、ステップS43において、乱数生成済フラグが「ON」の状態になる。ところが、図8に示す認証コード照合コマンドの処理手順によれば、最初のステップS61において、乱数生成済フラグが「ON」であることを条件として、以下の処理が実行され、最後のステップS66において、乱数生成済フラグは「OFF」の状態になる。このような乱数生成済フラグの「ON」/「OFF」の動作を、図4のダイヤグラムで追ってみると次のようになる。まず、預金者用ICカードに対して、動作▲1▼を実行して、乱数RNDを生成(動作▲2▼)させると、乱数生成済フラグは「ON」の状態になる。続いて、動作▲7▼として、認証コード照合コマンドを与えると、その時点では、乱数生成済フラグは「ON」の状態を維持しているので、預金者用ICカード内において、認証コード照合コマンドの処理(動作▲8▼)は支障なく実行される。ただし、動作▲8▼の実行後には、乱数生成済フラグは「OFF」の状態となる。したがって、続けて、動作▲7▼として、認証コード照合コマンドを再度与えると、その時点では、乱数生成済フラグは「OFF」の状態になっているので、今度は、認証コード照合コマンドの処理(動作▲8▼)は実行されない。認証コード照合コマンドを再度実行するためには、再び、動作▲1▼として、乱数生成コマンドを与え、新たな乱数RNDを発生させる必要がある。
【0069】
このような構成にしておけば、同一の乱数RNDについて、でたらめな認証コードPを試行錯誤的に与えて、動作▲7▼を繰り返し実行することはできなくなる。もちろん、動作▲1▼と動作▲7▼とをそれぞれ交互に繰り返して実行することは可能であるが、毎回、発生される乱数RNDは異なるため、動作▲9▼において一致を示す照合結果「OK」が偶然得られる可能性は極めて低くなる。
【0070】
結局、図7および図8に「**」印を付したステップを付加すると、ICカードをリーダライタ装置に接続した後、少なくとも1回は乱数生成処理が実行されており、かつ、最後に実行された乱数生成処理の後に、まだ1回も認証コード照合処理が実行されていない場合に限り、認証コード照合処理が実行できるように構成することができ、これにより不正アクセスを防止することが可能になる。なお、この「**」印を付したステップは、預金者用ICカードと銀行用ICカードとの双方に適用してかまわない。
【0071】
さて、最後に、前述した第2の問題点を解決するための本発明の変形例を述べておく。この変形例の要点は、リーダライタ装置から乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、認証コード照合処理を実行するように構成するものである。たとえば、図4の認証処理の場合、預金者用ICカードに対しては、動作▲1▼により乱数生成コマンドが与えられ、続いて動作▲7▼により認証コード照合コマンドが与えられる。そして、この預金者用ICカードに対して正当な認証処理が行われる限り、乱数生成コマンドの次に与えられるコマンドは、認証コード照合コマンドであり、両コマンドの間に別なコマンドが介在することはない。したがって、乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、認証コード照合処理を実行するように構成しても、正当な認証処理を行う上では何ら支障は生じない。一方、不正アクセス防止の面では、このような構成にしておくことは大きな意味がある。すなわち、認証コード照合コマンドは、乱数生成コマンドの直後に与えた場合にだけ実行されるのであるから、でたらめな認証コードXとともに連続的に認証コード照合コマンドを与えて試行錯誤を繰り返すような不正アクセスが一切禁止されるのみならず、乱数生成コマンドと認証コード照合コマンドとの間に、何らかのコマンドを介在させて何らかの不正アクセスを行おうとする試みは一切排除されることになる。
【0072】
このようなことを実現するためには、動作▲7▼として認証コード照合コマンドを与えたとき、ICカード側では、このコマンドが乱数生成コマンドの直後のコマンドであることを確認し、別言すれば、このコマンドの直前に乱数生成コマンドが与えられていたことを確認し、そのような確認が得られた場合に限り、動作▲8▼としての認証コード照合処理を実行するように構成すればよい。具体的には、上述した「**」印を付したステップを付加した上に、乱数生成コマンド以外のすべてのコマンドの処理手順の最後に、乱数生成済フラグを「OFF」にするステップを追加するようにすればよい。こうしておけば、乱数生成コマンドを実行した直後には、乱数生成済フラグは「ON」になるが、その後、他のいかなるコマンドを実行しても、乱数生成済フラグは「OFF」になってしまうので、結局、認証コード照合コマンドは、乱数生成コマンドの直後にのみ実行可能ということになる。
【0073】
以上、本発明を図示する実施例に基いて説明したが、本発明はこの実施例に限定されるものではなく、この他にも種々の態様で実施可能である。たとえば、上述の実施例では、乱数暗号化コマンドの処理が、常に同一のキー「KEY」に基いて行われるという前提で話を進めたが、複数のキーを用意しておき、暗号化に用いるキーを特定する情報をコマンドとともに与えることも可能である。たとえば、預金者用ICカードのEEPROM内に、3種類の暗号化用キー「KEY1」,「KEY2」,「KEY3」を用意しておき、銀行用ICカードのEEPROM内にも、同じく3種類の暗号化用キー「KEY1」,「KEY2」,「KEY3」を用意しておいたとする。この場合、動作▲4▼における乱数暗号化コマンドを与えるときに、乱数RNDとキー番号(3つの暗号化用キーのいずれか1つを特定する情報)とをコマンドとともにICカードに与えるようにする。すると、動作▲5▼において、特定されたキーを用いて乱数RNDの暗号化処理が実行されることになる。また、動作▲7▼における認証コード照合コマンドを与えるときにも、認証コードとキー番号とをコマンドとともにICカードに与えるようにし、動作▲8▼において、やはり特定されたキーを用いて乱数RNDの暗号化処理が実行されるようにする。このようにすれば、複数の暗号化用キーを用いるシステムが可能になり、本発明はこのようなシステムにも同様に適用可能である。
【0074】
また、上述の実施例では、預金者用ICカードと銀行用ICカードとを用いた情報処理システムに本発明を適用したが、本発明はどのような情報処理システムに適用してもかまわない。特に、本発明の適用対象は、ICカードに限定されるものではなく、情報処理機能を有する携帯可能情報記録媒体に広く適用可能なものである。
【0075】
【発明の効果】
以上のとおり本発明に係る2組の携帯可能情報記録媒体を用いた情報処理システムによれば、相手方を正当な媒体であると認証したことを条件として、相手方からの認証要求に応答する処理を実行するようにしたため、また、認証コード照合コマンドが繰り返し実行されることを禁止するようにしたため、十分なセキュリティを確保することが可能になる。
【図面の簡単な説明】
【図1】2組のICカードによる相互認証を行う一般的な情報処理システムの基本構成を説明する図である。
【図2】図1に示された第1のICカード10の内部構成を示すブロック図である。
【図3】相互認証をセキュリティ条件にもつICカードにおけるCPUの一般的な処理手順を示す流れ図である。
【図4】第1のICカード10(預金者用ICカード)による第2のICカード20(銀行用ICカード)の認証処理の手順を示すダイヤグラムである。
【図5】第2のICカード20(銀行用ICカード)による第1のICカード10(預金者用ICカード)の認証処理の手順を示すダイヤグラムである。
【図6】本発明に係る乱数生成コマンドの処理手順を説明する流れ図である。
【図7】本発明に係る乱数暗号化コマンドの処理手順を説明する流れ図である。
【図8】本発明に係る認証コード照合コマンドの処理手順を説明する流れ図である。
【符号の説明】
10…第1のICカード(預金者用ICカード)
11…CPU
12…ROM
13…RAM
14…EEPROM
20…第2のICカード(銀行用ICカード)
30…リーダライタ装置
Claims (5)
- 情報処理機能を有する第1の携帯可能情報記録媒体と、情報処理機能を有する第2の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第1の携帯可能情報記録媒体が第2の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第1の認証処理と、第2の携帯可能情報記録媒体が第1の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第2の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体であって、
リーダライタ装置から所定の乱数とともに乱数暗号化コマンドが与えられたときに、内部に記録されている所定のキーを利用して、与えられた乱数を暗号化して認証コードを作成し、作成した認証コードをリーダライタ装置に送出する乱数暗号化処理を実行する機能を有し、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、相手方認証済情報を記録する領域を設け、相手方の携帯可能情報記録媒体が正当な媒体であると認証された場合に、前記領域に相手方認証済情報を書き込む処理を行い、
リーダライタ装置から乱数暗号化コマンドが与えられたときに、前記領域を参照し、相手方認証済情報が書き込まれている場合にのみ、内部での乱数暗号化処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。 - 情報処理機能を有する第1の携帯可能情報記録媒体と、情報処理機能を有する第2の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第1の携帯可能情報記録媒体が第2の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第1の認証処理と、第2の携帯可能情報記録媒体が第1の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第2の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体であって、
リーダライタ装置から乱数生成コマンドが与えられたときに、内部で乱数を生成し、生成した乱数をリーダライタ装置に送出する乱数生成処理を実行する機能と、
リーダライタ装置から、相手方の携帯可能情報記録媒体内で作成された認証コードとともに認証コード照合コマンドが与えられたときに、内部に記録されている所定のキーを利用して、過去に内部で実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成し、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果をリーダライタ装置に送出する認証コード照合処理を実行する機能と、
を有し、
リーダライタ装置に接続した後、少なくとも1回は内部で乱数生成処理が実行されており、かつ、内部で最後に実行された乱数生成処理の後に、まだ1回も内部で認証コード照合処理が実行されていない場合に限り、内部での認証コード照合処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。 - 請求項2に記載の携帯可能情報記録媒体において、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、乱数生成済情報を記録する領域を設け、
内部で乱数生成処理を実行した後には、この領域に「生成済」を示す情報を書き込む処理を行い、
内部で認証コード照合処理を実行した後には、この領域に「未生成」を示す情報を書き込む処理を行い、
リーダライタ装置から認証コード照合コマンドが与えられたときに、前記領域を参照し、「生成済」を示す情報が書き込まれている場合にのみ、内部での認証コード照合処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。 - 情報処理機能を有する第1の携帯可能情報記録媒体と、情報処理機能を有する第2の携帯可能情報記録媒体と、の双方を、これら情報記録媒体に対してアクセスする機能を有するリーダライタ装置に接続し、第1の携帯可能情報記録媒体が第2の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第1の認証処理と、第2の携帯可能情報記録媒体が第1の携帯可能情報記録媒体について正当な媒体であるか否かを認証する第2の認証処理と、が実行できるように構成された情報処理システムに利用されるいずれか一方の携帯可能情報記録媒体であって、
リーダライタ装置から乱数生成コマンドが与えられたときに、内部で乱数を生成し、生成した乱数をリーダライタ装置に送出する乱数生成処理を実行する機能と、
リーダライタ装置から、相手方の携帯可能情報記録媒体内で作成された認証コードとともに認証コード照合コマンドが与えられたときに、内部に記録されている所定のキーを利用して、過去に内部で実行した乱数生成処理によって生成された乱数を暗号化して認証コードを作成し、この作成した認証コードがリーダライタ装置から与えられた認証コードと一致するか否かを照合し、照合結果をリーダライタ装置に送出する認証コード照合処理を実行する機能と、
を有し、
リーダライタ装置から乱数生成コマンドの直後のコマンドとして、認証コード照合コマンドが与えられた場合に限り、内部での認証コード照合処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。 - 請求項4に記載の携帯可能情報記録媒体において、
リーダライタ装置に接続されている間だけ記憶内容が保持される揮発性メモリ内に、乱数生成済情報を記録する領域を設け、
乱数生成コマンドに基く内部での乱数生成処理を実行した後には、この領域に「生成済」を示す情報を書き込む処理を行い、
乱数生成コマンド以外のコマンドに基く内部での処理を実行した後には、この領域に「未生成」を示す情報を書き込む処理を行い、
リーダライタ装置から認証コード照合コマンドが与えられたときに、前記領域を参照し、「生成済」を示す情報が書き込まれている場合にのみ、内部での認証コード照合処理が実行されるように構成したことを特徴とする携帯可能情報記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16809495A JP3652409B2 (ja) | 1995-06-09 | 1995-06-09 | 携帯可能情報記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP16809495A JP3652409B2 (ja) | 1995-06-09 | 1995-06-09 | 携帯可能情報記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH08339429A JPH08339429A (ja) | 1996-12-24 |
JP3652409B2 true JP3652409B2 (ja) | 2005-05-25 |
Family
ID=15861737
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP16809495A Expired - Lifetime JP3652409B2 (ja) | 1995-06-09 | 1995-06-09 | 携帯可能情報記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3652409B2 (ja) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2794595B1 (fr) * | 1999-06-03 | 2002-03-15 | Gemplus Card Int | Pre-controle d'un programme dans une carte a puce additionnelle d'un terminal |
WO2007132518A1 (ja) * | 2006-05-15 | 2007-11-22 | Renesas Technology Corp. | マスタ機器及びデータ処理システム |
-
1995
- 1995-06-09 JP JP16809495A patent/JP3652409B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH08339429A (ja) | 1996-12-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5513261A (en) | Key management scheme for use with electronic cards | |
EP0973125B1 (en) | Method for managing security for card-type storage medium, and a card-type storage medium and a transaction apparatus therefor | |
US20050086497A1 (en) | IC card system | |
US7257708B2 (en) | Steganographic authentication | |
US5694471A (en) | Counterfeit-proof identification card | |
US7752445B2 (en) | System and method for authentication of a hardware token | |
JPH04143881A (ja) | 相互認証方式 | |
JPH06501324A (ja) | スマートカード妥当性検証装置および方法 | |
JPS63229541A (ja) | データ交換システム | |
AU8545398A (en) | Method for managing a secure terminal | |
JP2003123032A (ja) | Icカード端末および本人認証方法 | |
JP2000011113A (ja) | 記録媒体の受け渡し方法、発行システム及びその構成部品 | |
JP3652409B2 (ja) | 携帯可能情報記録媒体 | |
JPH0822517A (ja) | ハイブリッドカードの改ざん防止方式 | |
JP3792808B2 (ja) | 認証方法及び認証システム | |
JP4303768B2 (ja) | カード型記憶装置用セキュリティ管理方法,カード型記憶装置およびカード型記憶装置用取引装置 | |
JP2853549B2 (ja) | 可搬型データ担体処理システム | |
JPH11328325A (ja) | Icカードシステム | |
JP3128567B2 (ja) | Icカードシステム | |
JPH09106456A (ja) | カード利用における本人確認方法及びicカードを用いた本人確認システム並びに当該システムに用いるicカード | |
JPS63248246A (ja) | 暗証照合方式 | |
JP3231466B2 (ja) | キーを記憶した情報記録媒体 | |
JPH1069435A (ja) | Icカード | |
US20020190130A1 (en) | Portable storage device with function for preventing illegal access thereto | |
JPS62251946A (ja) | Icカ−ドの不正アクセス防止方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040908 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041026 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041214 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050222 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050223 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090304 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100304 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100304 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110304 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110304 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120304 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130304 Year of fee payment: 8 |