(57)【特許請求の範囲】
【請求項１】
外部装置から携帯可能情報記憶媒体に対するアクセスを行う際に、前記携帯可能情報記憶媒体が正しいものであることを確認する認証方法であって、
任意の認証用データＲに対して、第１のキーαを用いた暗号化演算を行うことにより暗号データＣが得られ、かつ、この暗号データＣに対して、第２のキーβを用いた復号化演算を行うことにより前記認証用データＲと同一のデータが得られるように、第１のキーαおよび第２のキーβ、ならびに暗号化演算および復号化演算を定める演算定義段階と、
前記携帯可能情報記憶媒体内に前記第１のキーαを記憶させるとともに、前記携帯可能情報記憶媒体に前記暗号化演算を行う処理機能を準備する媒体準備段階と、
前記外部装置において乱数を発生させ、この乱数を認証用データＲとして前記携帯可能情報記憶媒体に送信する乱数送信段階と、
認証用データＲの送信を受けて、これを前記携帯可能情報記憶媒体内の所定の記憶場所に記憶させる認証用データ記憶段階と、
前記携帯可能情報記憶媒体内において、新たに送信されてきた認証用データＲが、これまでに記憶されている認証用データＲと一致するか否かを調べ、いずれとも不一致の場合に暗号化許可なる判定を行う判定段階と、
前記判定段階において暗号化許可なる判定が行われた場合に、前記携帯可能情報記憶媒体内において、送信されてきた認証用データＲに対して、記憶している前記第１のキーαを用いた前記暗号化演算を実行させ、その結果得られる暗号データＣを前記外部装置に返信させる暗号化段階と、
前記外部装置において、前記携帯可能情報記憶媒体から返信された暗号データＣに対して、前記第２のキーβを用いた前記復号化演算を実行させる復号化段階と、
前記復号化演算の結果、前記乱数送信段階で送信した認証用データＲと同一のデータが得られた場合に、前記携帯可能情報記憶媒体を正しいものと確認する認証段階と、
を有し、
前記乱数送信段階によって送信された認証用データＲについて、前記認証用データ記憶段階に先立って前記判定段階を行い、この判定段階において暗号化許可なる判定結果が得られた場合にのみ、前記認証用データ記憶段階を実行するようにし、
前記携帯可能情報記憶媒体内に、認証用データＲを記憶することが可能な複数ｎ個の記憶場所を用意し、前記認証用データ記憶段階では、最近ｎ回分の認証用データＲのみを記憶させるようにしたことを特徴とする携帯可能情報記憶媒体の認証方法。
【請求項２】
外部装置から認証コマンドとともに認証用データＲが送信されてきたときに、この認証用データＲに対して所定の暗号化演算を実行し、その結果得られる暗号データＣをレスポンスとして前記外部装置に返信する機能をもった携帯可能情報記憶媒体であって、
前記外部装置から送信されるコマンドを受信するコマンド受信部と、
前記認証用データＲを記憶するための認証用データ記憶部と、
前記暗号化演算に利用するための秘密キーαを記憶するための秘密キー記憶部と、
前記コマンド受信部が、認証コマンドとともに認証用データＲを受信したときに、前記認証用データ記憶部内に記憶されている認証用データＲと、新たに受信した認証用データＲとが不一致であることを確認する不一致確認部と、
前記コマンド受信部が受信した認証用データＲを、前記認証用データ記憶部に書き込む認証用データ書込部と、
前記不一致確認部において不一致が確認されたことを条件として、前記秘密キー記憶部内に記憶されている秘密キーαを用いて、新たに受信した認証用データＲに対して暗号化演算を実行して暗号データＣを得る暗号化演算部と、
前記暗号データＣを含むレスポンスを前記外部装置に送信するレスポンス送信部と、
を備え、
新たに受信した認証用データＲについて、前記不一致確認部において不一致が確認されたことを条件として、前記認証用データ書込部における前記新たに受信した認証用データＲの書き込みが行われるようにし、
前記認証用データ記憶部には、複数ｎ通りの認証用データＲを記憶することができるように複数ｎ個の記憶場所が用意されており、
前記認証用データ書込部は、書込対象となる認証用データＲを各記憶場所に順次書き込む処理を実行し、複数ｎ個の記憶場所が既にすべて書き込み済みとなっていた場合には、最も古い認証用データＲが書き込まれている記憶場所に対する書き換え処理を実行することを特徴とする携帯可能情報記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、携帯可能情報記憶媒体およびその認証方法に関し、特に、ＩＣカードに対して外部装置からアクセスする際に、このＩＣカードが正しいものであることを認証するための認証方法およびそのような認証方法を行うのに適したＩＣカードに関する。
【０００２】
【従来の技術】
ＩＣカードに代表される携帯可能情報記憶媒体は、ＩＣチップの小型化技術とともに急速に普及しつつあり、一般の個人ユーザにまで１枚ずつ行き渡るようになるのも、もはや時間の問題である。このように、ＩＣカード等の携帯可能情報記憶媒体が、社会生活の基幹をなす道具として利用されるようになればなるほど、セキュリティの確保が重要な課題となってくる。ＩＣカードに対するアクセスには、いわゆるリーダライタ装置が利用され、コンピュータシステムは、このリーダライタ装置を介して、ＩＣカードの内部とデータのやりとりを行うことになる。そこで、通常は、リーダライタ装置にＩＣカードが挿入されると、相互に相手を認証する処理が行われる。
【０００３】
リーダライタ装置側からＩＣカードを見て、当該ＩＣカードが正しいものであるか否かを確認するための認証は、通常、認証コマンドとともに任意の認証用データ（乱数が利用されている）をリーダライタ装置からＩＣカードへ与え、これに対する正しいレスポンスが返ってくるか否かを検証する、という方法によって行われている。より具体的には、公開鍵暗号方式を利用して、正規のＩＣカードには、内部に秘密キーαを格納しておき、リーダライタ装置側から与えた認証用データ（任意の乱数）に対して、ＩＣカード内部において、この秘密キーαを用いた暗号化処理を実施させ、この暗号化処理によって得られた暗号データをレスポンスとして戻させ、リーダライタ装置側では、このレスポンスとして返された暗号データに対して、秘密キーαに対応した公開キーβを用いた復号化処理を実行し、この復号化処理によって得られたデータが、もとの認証用データに一致するか否かによって、ＩＣカードに対する認証を行っている。
【０００４】
ＩＣカード内に格納された秘密キーαは、通常、どのような方法によっても外部へは読み出されない構造となっているため、正しい秘密キーαを有するＩＣカードを偽造することは極めて困難である。したがって、上述した方法によって、暗号データをレスポンスとして返させ、これを復号化することにより得られたデータが、元の認証用データと一致すれば、当該ＩＣカードは正規のものであるとの認証が得られる。
【０００５】
【発明が解決しようとする課題】
上述したように、ＩＣカード内に格納された秘密キーαは、論理的には、どのような方法によっても外部へは読み出されない仕組みになっている。しかしながら、現実的には、ＩＣカード動作中の様々な物理現象（たとえば消費電流）を解析することで、非破壊的に、ＩＣカード内に格納されている秘密キーαを外部から検知する方法が存在する。たとえば、ＤＰＡ（Differential Power Analysis ）と呼ばれている手法は、ＩＣカードの消費電力の波形を統計的に解析することにより、秘密キーαの内容を推測するという原理に基づいている。具体的には、ＩＣカードの電力供給用端子などに、ＩＣカード内部における消費電流を測定するための測定系を接続した状態にし、リーダライタ装置側から所定の認証用データを繰り返し送信して、ＩＣカード内部で秘密キーαを用いた暗号化演算を実行し、このときの消費電力波形を解析することにより、統計的な手法で秘密キーαの内容を把握する。
【０００６】
そこで本発明は、上述したような不正な解析手法に対しても十分なセキュリティを確保することが可能な携帯可能情報記憶媒体の認証方法を提供することを目的とする。
【０００７】
【課題を解決するための手段】
(1)   本発明の第１の態様は、外部装置から携帯可能情報記憶媒体に対するアクセスを行う際に、この携帯可能情報記憶媒体が正しいものであることを確認する認証方法において、
任意の認証用データＲに対して、第１のキーαを用いた暗号化演算を行うことにより暗号データＣが得られ、かつ、この暗号データＣに対して、第２のキーβを用いた復号化演算を行うことにより元の認証用データＲと同一のデータが得られるように、第１のキーαおよび第２のキーβ、ならびに暗号化演算および復号化演算を定める演算定義段階と、
携帯可能情報記憶媒体内に第１のキーαを記憶させるとともに、この携帯可能情報記憶媒体に暗号化演算を行う処理機能を準備する媒体準備段階と、
外部装置において乱数を発生させ、この乱数を認証用データＲとして携帯可能情報記憶媒体に送信する乱数送信段階と、
認証用データＲの送信を受けて、これを携帯可能情報記憶媒体内の所定の記憶場所に記憶させる認証用データ記憶段階と、
携帯可能情報記憶媒体内において、新たに送信されてきた認証用データＲが、これまでに記憶されている認証用データＲと一致するか否かを調べ、いずれとも不一致の場合に暗号化許可なる判定を行う判定段階と、
この判定段階において暗号化許可なる判定が行われた場合に、携帯可能情報記憶媒体内において、送信されてきた認証用データＲに対して、記憶している第１のキーαを用いた暗号化演算を実行させ、その結果得られる暗号データＣを外部装置に返信させる暗号化段階と、
外部装置において、携帯可能情報記憶媒体から返信された暗号データＣに対して、第２のキーβを用いた復号化演算を実行させる復号化段階と、
この復号化演算の結果、乱数送信段階で送信した認証用データＲと同一のデータが得られた場合に、携帯可能情報記憶媒体を正しいものと確認する認証段階と、
を行うようにし、
乱数送信段階によって送信された認証用データＲについて、認証用データ記憶段階に先立って判定段階を行い、この判定段階において暗号化許可なる判定結果が得られた場合にのみ、認証用データ記憶段階を実行し、
携帯可能情報記憶媒体内に、認証用データＲを記憶することが可能な複数ｎ個の記憶場所を用意し、認証用データ記憶段階では、最近ｎ回分の認証用データＲのみを記憶させるようにしたものである。
【００１０】
(2)   本発明の第２の態様は、外部装置から認証コマンドとともに認証用データＲが送信されてきたときに、この認証用データＲに対して所定の暗号化演算を実行し、その結果得られる暗号データＣをレスポンスとして外部装置に返信する機能をもった携帯可能情報記憶媒体において、
外部装置から送信されるコマンドを受信するコマンド受信部と、
認証用データＲを記憶するための認証用データ記憶部と、
暗号化演算に利用するための秘密キーαを記憶するための秘密キー記憶部と、
コマンド受信部が、認証コマンドとともに認証用データＲを受信したときに、認証用データ記憶部内に記憶されている認証用データＲと、新たに受信した認証用データＲとが不一致であることを確認する不一致確認部と、
コマンド受信部が受信した認証用データＲを、認証用データ記憶部に書き込む認証用データ書込部と、
不一致確認部において不一致が確認されたことを条件として、秘密キー記憶部内に記憶されている秘密キーαを用いて、新たに受信した認証用データＲに対して暗号化演算を実行して暗号データＣを得る暗号化演算部と、
暗号データＣを含むレスポンスを外部装置に送信するレスポンス送信部と、
を設け、
新たに受信した認証用データＲについて、不一致確認部において不一致が確認されたことを条件として、認証用データ書込部における新たに受信した認証用データＲの書き込みが行われるようにし、
認証用データ記憶部に、複数ｎ通りの認証用データＲを記憶することができるように複数ｎ個の記憶場所を用意し、
認証用データ書込部が、書込対象となる認証用データＲを各記憶場所に順次書き込む処理を実行し、複数ｎ個の記憶場所が既にすべて書き込み済みとなっていた場合には、最も古い認証用データＲが書き込まれている記憶場所に対する書き換え処理を実行するようにしたものである。
【００１３】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。はじめに、図１のブロック図を参照しながら、従来の一般的な携帯可能情報記憶媒体（具体的には、ＩＣカード）において行われている認証方法の基本原理を説明する。この認証方法は、秘密鍵と公開鍵とからなるペア鍵を利用する公開鍵暗号方式を利用した認証方法である。
【００１４】
図１は、携帯可能情報記憶媒体（ＩＣカード）１００を、外部装置（リーダライタ装置）２００に挿入し、両者を電気的に接続した状態において、リーダライタ装置２００側から、ＩＣカード１００側を認証する手順を示すブロック図である。図示の例では、ＩＣカード１００内には、予め第１のキーα（秘密キー）が格納されており、リーダライタ装置２００内には、予め第２のキーβ（公開キー）が格納されている。ここで、第１のキーαは、たとえば、このＩＣカード１００の所有者に固有のキーであり、一般には知らされていない秘密のキーとなっている。これに対して、第２のキーβは、同じくこの所有者に固有のキーではあるが、一般に公開されたキーとなっている。したがって、第２のキーβは、リーダライタ装置２００内に常に格納しておかなくても、その都度、別な場所（たとえば、ホストコンピュータなど）からリーダライタ装置２００内に読み込むようにしてもかまわない。また、ＩＣカード１００には、第１のキーαを利用して、任意のデータに対する暗号化処理を実行する機能が備わっており、リーダライタ装置２００には、第２のキーβを利用して、任意の暗号データに対する復号化処理を実行する機能が備わっている。
【００１５】
また、リーダライタ装置２００には、乱数を発生させる機能が備わっており、リーダライタ装置２００で発生された乱数は、認証用データＲとして、認証コマンドとともに、ＩＣカード１００側へ送信されることになる。ＩＣカード１００側では、こうして送信されてきた認証用データＲに対して、第１のキーαを用いて暗号化演算を実行することにより、暗号データＣを生成することができる。暗号データＣは、第１のキーαを用いるという前提において、認証用データＲに基づいて一義的に求まるデータである。ＩＣカード１００は、こうして求めた暗号データＣを、認証コマンドに対するレスポンスとして、リーダライタ装置２００へと返信する。リーダライタ装置２００側では、こうして送信されてきた暗号データＣに対して、第２のキーβを用いて復号化演算を実行する。そして、この復号化演算によって得られたデータが、元の認証用データＲに一致すれば、ＩＣカード１００を正しいものとして認証することになる。
【００１６】
もちろん、このような認証方法を可能にするためには、予め、第１のキーαおよび第２のキーβならびに暗号化演算および復号化演算を、特定のものに定めておく必要がある。すなわち、任意の認証用データＲに対して、第１のキーαを用いた暗号化演算を行うことにより暗号データＣが得られ、かつ、この暗号データＣに対して、第２のキーβを用いた復号化演算を行うことにより前記認証用データＲと同一のデータが得られるように、第１のキーαおよび第２のキーβならびに暗号化演算および復号化演算を定めておかねばならない。別言すれば、第１のキーαと第２のキーβとは、公開鍵暗号方式における秘密鍵と公開鍵とに相当するペア鍵の関係になっている必要があり、ＩＣカード１００側で行われる暗号化演算およびリーダライタ装置２００側で行われる復号化演算は、この公開鍵暗号方式における暗号化演算および復号化演算になっている必要がある。
【００１７】
リーダライタ装置２００側で発生させる認証用データＲとしては、乱数が用いられるので、ＩＣカード１００側に与えられる認証用データＲの内容は毎回異なることになる。したがって、ＩＣカード１００側からレスポンスとして返される暗号データＣの内容も毎回異なる。しかしながら、ＩＣカード１００側が正しい秘密キーαを用いて正しい暗号化演算を実施している限り、リーダライタ装置２００側で正しい公開キーβを用いて正しい復号化演算を行えば、復号化されたデータは元の認証用データＲに一致する。よって、元の認証用データＲがどのような値であっても、ＩＣカード１００に対する認証が可能になる。しかも、ＩＣカード１００内に格納されている秘密キーαは、論理的には、ＩＣカードの外部に読み出されることはないので、一応、十分なセキュリティが確保されているように見える。
【００１８】
しかしながら、実際には、既に述べたように、ＩＣカードの消費電流を統計的に解析する手法を利用すると、ＩＣカード１００内の秘密キーαの内容を外部から察知することが可能になる。たとえば、「１１１１１１１１」なる認証用データＲを、何度も繰り返してＩＣカード１００に与え、そのときのＩＣカード１００内部の消費電力波形を電気的な測定方法で繰り返して観測すると、統計的に何らかのパターンが得られることになる。同様に、「００００００００」なる認証用データＲを、何度も繰り返してＩＣカード１００に与え、そのときのＩＣカード１００内部の消費電力波形を電気的な測定方法で繰り返して観測すると、やはり統計的に何らかのパターンが得られることになる。このようなパターンを解析することにより、内部に格納されている秘密キーαの内容を統計的に類推することが可能になる。
【００１９】
本発明の特徴は、このような不正な解析手法を困難にするために、ＩＣカード１００に対して、同一の認証用データＲが繰り返して与えられた場合には、ＩＣカード１００内部での暗号化演算を拒否するようにする、という点にある。たとえば、上述の例の場合、第１回目の認証コマンドにおいて、「１１１１１１１１」なる認証用データＲが与えられたとすると、この第１回目の認証コマンドに対しては、秘密キーαを用いた暗号化演算が実行され、得られた暗号データＣがレスポンスとして返信されることになるが、第２回目以降の認証コマンドにおいて、もし同一の「１１１１１１１１」なる認証用データＲが与えられた場合には、当該認証コマンドは拒否され、秘密キーαを用いた暗号化演算は実行されないことになる。もちろん、正常なレスポンスも得られない。
【００２０】
このような仕組みにしておけば、同一の認証用データＲを用いた暗号化演算を繰り返し実行させることはできなくなるので、消費電力波形を統計的な手法で解析することは困難になる。
【００２１】
このような目的を達成するためには、ＩＣカード１００の構成を、図２のブロック図に示すような構成にすればよい。この図２のブロック図は、本発明に係るＩＣカード１００（携帯可能情報記憶媒体）を、従来の一般的なリーダライタ装置２００（外部装置）に接続した状態を示している。図示のとおり、この実施形態に係るＩＣカード１００は、コマンド受信部１１０、認証用データ書込部１２０、認証用データ記憶部１３０、不一致確認部１４０、暗号化演算部１５０、秘密キー記憶部１６０、レスポンス送信部１７０を有している。一方、リーダライタ装置２００は、コマンド送信部２１０、認証用データ生成部２２０、レスポンス受信部２３０、復号化演算部２４０、公開キー記憶部２５０、認証部２６０を有している。もちろん、図２に図示されているのは、本発明に係る認証処理を実行するために必要な構成要素だけであり、実際のＩＣカードやリーダライタ装置には、ＩＣカードおよびリーダライタ装置としての本来の機能を実行するための他の構成要素も備わっている。
【００２２】
図２に示すリーダライタ装置２００は、従来の一般的なリーダライタ装置であり、逆に言えば、本発明を実施する上で、リーダライタ装置は従来のものをそのまま利用することが可能である。認証用データ生成部２２０は、実際には乱数を発生させる手段であり、ここで発生させた乱数が、認証用データＲとしてＩＣカード１００側に与えられることになる。すなわち、乱数として発生された認証用データＲは、コマンド送信部２１０から、認証コマンドとともにコマンド受信部１１０へ向けて送信される。ＩＣカード１００は、こうして認証コマンドとともに認証用データＲが送信されてきたときに、この認証用データＲに対して所定の暗号化演算を実行し、その結果得られる暗号データＣをレスポンスとして返信する機能をもった携帯可能情報記憶媒体であり、レスポンスとしての暗号データＣは、レスポンス送信部１７０からレスポンス受信部２３０へ向けて送信されることになる。
【００２３】
リーダライタ装置２００側では、こうして返信されてきた暗号データＣに対する復号化演算を行う。すなわち、公開キー記憶部２５０に格納されている公開キーβを用いて、復号化演算部２４０において、暗号データＣに対する復号化演算を行う。この演算結果として得られた復号データは、認証部２６０において、認証用データ生成部２２０が生成した元の認証用データＲと比較され、両者が一致した場合に、ＩＣカード１００が正しいものであるとの認証が行われる点は、既に述べたとおりである。
【００２４】
一方、ＩＣカード１００側で行われる暗号化演算の処理も、基本的には、既に述べたとおりである。すなわち、コマンド受信部１１０で受信された認証用データＲは、暗号化演算部１５０に与えられて暗号化される。秘密キー記憶部１６０には、秘密キーαが格納されている。暗号化演算部１５０は、この秘密キー記憶部１６０から秘密キーαを読み出し、これを利用して、認証用データＲに対する暗号化演算を実行し、暗号データＣを求める処理を行う。求まった暗号データＣは、レスポンス送信部１７０からレスポンスとして送信される。
【００２５】
ただし、暗号化演算部１５０がこの暗号化演算を行うためには、不一致確認部１４０からの許可が必要とされる。別言すれば、コマンド受信部１１０に認証用データＲが与えられたとしても、不一致確認部１４０から、この認証用データＲについての暗号化演算を許可する旨の信号が与えられない限り、暗号化演算部１５０は暗号化演算を行わないことになる。不一致確認部１４０は、コマンド受信部１１０に新たに与えられた認証用データＲが、過去に与えられた認証用データＲに一致するか否かを判定し、不一致であった場合にのみ、暗号化演算部１５０に対して暗号化演算を許可する旨の信号を与える。不一致確認部１４０に、このような判定を行わせるためには、これまで与えられた認証用データＲを蓄積しておく必要がある。このような蓄積処理は、認証用データ書込部１２０および認証用データ記憶部１３０によって行われる。認証用データ記憶部１３０は、これまでに与えられた複数の認証用データＲを蓄積記憶するための記憶場所を有しており、認証用データ書込部１２０は、コマンド受信部１１０が受信した認証用データＲを、この認証用データ記憶部１３０に順次書き込む処理を行う。
【００２６】
もちろん、このＩＣカード１００を初めて使用するときには、認証用データ記憶部１３０内にはまだ認証用データＲは蓄積されていないが、コマンド送信部２１０から認証コマンドとともに認証用データＲが送信されてくるたびに、認証用データ書込部１２０によって、この認証用データＲが認証用データ記憶部１３０へと書き込まれることになる。不一致確認部１４０は、コマンド受信部１１０が、認証コマンドとともに認証用データＲを受信したときに、認証用データ記憶部１３０内に記憶されている認証用データＲと、新たに受信した認証用データＲとが不一致であることを確認して、暗号化演算部１５０に対して暗号化演算を許可する旨の信号を与えることになる。暗号化演算部１５０は、この不一致確認部１４０において不一致が確認されたことを条件として、秘密キー記憶部１６０内に記憶されている秘密キーαを用いて、新たに受信した認証用データＲに対して暗号化演算を実行して暗号データＣを得る演算を実行する。
【００２７】
なお、この実施形態では、認証用データ書込部１２０は、新たに受信した認証用データＲについて、不一致確認部１４０において不一致が確認されたことを条件として、この新たに受信した認証用データＲの書き込みを行うようにしている。すなわち、コマンド受信部１１０に認証コマンドとともに新たな認証用データＲが受信されたとき、まず、不一致確認部１４０による不一致確認の処理が実行され、不一致が確認されたときにのみ、認証用データ書込部１２０によって当該認証用データＲが認証用データ記憶部１３０に書き込まれることになる。逆に言えば、もし不一致確認部１４０において一致が確認された場合には、当該認証用データＲは、認証用データ書込部１２０によって書き込まれることはない。このような運用は、認証用データ記憶部１３０内のデータから冗長性を排除する上で意味がある。すなわち、既に認証用データ記憶部１３０内に記憶されているデータと同一のデータについては、再度の書き込みが行われることはない。
【００２８】
また、実用上、ＩＣカード１００内のメモリ容量は有限であり、当然、認証用データ記憶部１３０の記憶容量も有限である。したがって、ＩＣカード１００が長期間利用され、何度もリーダライタ装置２００へと挿入されて認証を受けることになると、認証用データ記憶部１３０内の空領域は徐々に減少してゆき、やがて全領域に認証用データＲが書き込まれた状態になってしまう。このような場合には、認証用データ記憶部１３０内には、最近の認証用データＲのみを残し、古いデータから書き換えるような処理を行えばよい。たとえば、認証用データ記憶部１３０内に、認証用データＲを記憶することが可能な複数ｎ個の記憶場所が用意されていた場合、最近ｎ回分の認証用データＲのみが記憶された状態になるようにすればよい。すなわち、空領域がなくなるまでは、書込対象となる認証用データＲを各記憶場所に順次書き込む処理を実行し、複数ｎ個の記憶場所が既にすべて書き込み済みとなった後は、最も古い認証用データＲが書き込まれている記憶場所に対する書き換え処理を実行すればよい。
【００２９】
図３は、このような書き換え処理の一例を示す図である。まず、図３(a) に示すように、記憶場所番号１〜ｎで示される複数ｎ個の記憶場所が用意されている場合に、３つの認証用データＲ（１），Ｒ（２），Ｒ（３）が順次与えられたとすると、これらのデータは、図示のとおり記憶場所番号１，２，３へと順次書き込まれることになる。ここでは、最後の書込場所を、ポインタＰで示すことができるようにしてある。続いて、たとえば、新たな認証用データＲ（４）が与えられた場合には、ポインタＰが指し示す最後の書込場所の次に位置する記憶場所番号４への書き込みを行い、ポインタＰを更新すればよい。図３(b) は、このようにして順次書き込みを行ってゆき、合計ｎ個の認証用データＲ（１）〜Ｒ（ｎ）がすべて書き込まれた状態を示している。この状態において、更に次の認証用データＲ（ｎ＋１）が与えられた場合には、図３(c) に示すように、最も古い認証用データＲ（１）が書き込まれていた記憶場所番号１の位置に対する書き換えを行えばよい。図３(d) は、更に、新たな認証用データＲ（ｎ＋２），Ｒ（ｎ＋３）が与えられた場合の書込状態を示している。このような書換処理を行えば、常に、最新のｎ個の認証用データが蓄積記憶されることになる。
【００３０】
図４は、本発明に係る携帯可能情報記憶媒体の認証方法の手順を示す流れ図である。もちろん、この図４に示す手順を実施する際には、所定の秘密キーαが格納され、この秘密キーαを用いて所定の暗号化演算を実行する機能をもった携帯可能情報記憶媒体（ＩＣカード１００）を準備しておく必要があり、これにアクセスするための外部装置（リーダライタ装置２００）を準備しておく必要がある。
【００３１】
さて、ＩＣカード１００がリーダライタ装置２００に挿入されると、まず、ステップＳ１において、リーダライタ装置２００側で認証用データＲ（乱数）が発生され、続くステップＳ２において、この認証用データＲがＩＣカード１００側へと送信される。実際には、上述したように、認証コマンドとともに認証用データＲがＩＣカード１００側へと与えられることになる。ＩＣカード１００は、ステップＳ３において、この認証用データＲを受信したら、続くステップＳ４において、過去ｎ回分の認証用データＲとの一致判定が行われる（もちろん、認証用データ記憶部１３０内にまだｎ回分の認証用データＲが蓄積されていない場合には、これまでに蓄積されている認証用データＲとの一致判定を行えばよい）。
【００３２】
ここで、蓄積されている認証用データＲのいずれとも不一致である旨の判定がなされたら、ステップＳ５からステップＳ６へと進み、この新たに受信された認証用データＲを、認証用データ記憶部１３０へと書き込む処理が行われる。このように、ステップＳ６の認証用データの書込処理に先立って、ステップＳ４の一致判定を行い、不一致なる判定結果が得られた場合にのみ、ステップＳ６の書込処理を行うようにするのは、前述したように、認証用データ記憶部１３０内に蓄積される認証用データＲの冗長性を排除するため（同一のデータが重複して書き込まれないようにするため）である。次に、ステップＳ７において、この認証用データＲに対して、秘密キーαを用いた暗号化演算が実行され、得られた暗号データＣが、ステップＳ８において、レスポンスとして送信される。
【００３３】
リーダライタ装置２００は、ステップＳ９において、このレスポンスとして送信された暗号データＣを受信し、ステップＳ１０において、この暗号データＣに対して、公開キーβを用いた復号化演算を実行する。そして、ステップＳ１１において、この復号化演算の結果として得られた復号データと、元の認証用データＲ（ステップＳ１で発生した乱数）との一致を判定する。両者が一致していれば、ステップＳ１２からステップＳ１３へと進み認証成功となり、両者が一致していなければ、ステップＳ１２からステップＳ１４へと進み認証失敗となる
【００３４】
一方、ＩＣカード１００側において実施されたステップＳ４の一致判定の結果、認証用データ記憶部１３０内に蓄積されていたいずれかの認証用データＲと一致する結果が得られたら、ステップＳ５からステップＳ１５へと進み、リーダライタ装置２００に対するレスポンスとして、エラーの送信が行われる。この場合、リーダライタ装置２００は、ステップＳ１６において、レスポンスとしてエラーを受信することになるので、続くステップＳ１７において、所定のエラー処理を行うようにする。
【００３５】
このような手順でＩＣカード１００に対する認証を行うようにすれば、ステップＳ４における判定において、新たに与えられた認証用データＲが過去ｎ回分の認証用データＲとは不一致の場合に限って、ステップＳ７における暗号化演算が実行されることになるので、同一の認証用データＲをＩＣカード１００に繰り返して与え、そのときの消費電力を繰り返し観測し、統計的な手法により秘密キーαを類推するという不正な解析手法の実施を困難にすることができる。
【００３６】
以上、本発明を図示する実施形態に基づいて説明したが、本発明はこの実施形態に限定されるものではなく、この他にも種々の形態で実施可能である。たとえば、上述の実施形態では、リーダライタ装置を介してＩＣカードに対する認証を行う例を述べたが、本発明は、一般的な携帯可能情報記憶媒体に対して、外部装置から認証を行う場合に広く適用可能である。
【００３７】
【発明の効果】
以上のとおり本発明に係る携帯可能情報記憶媒体の認証方法によれば、不正な解析手法に対しても十分なセキュリティを確保することが可能になる。
【図面の簡単な説明】
【図１】携帯可能情報記憶媒体（ＩＣカード）１００を、外部装置（リーダライタ装置）２００に挿入し、両者を電気的に接続した状態において、リーダライタ装置２００側から、ＩＣカード１００側を認証する手順を示すブロック図である。
【図２】本発明に係る携帯可能情報記憶媒体（ＩＣカード）１００を、外部装置（リーダライタ装置）２００に接続した状態における両者の構成要素を示すブロック図である。
【図３】図２に示す携帯可能情報記憶媒体（ＩＣカード）１００内の認証用データ記憶部１３０の構成例および認証用データの格納例を示す図である。
【図４】本発明に係る携帯可能情報記憶媒体の認証方法の基本手順を示す流れ図である。
【符号の説明】
１００…携帯可能情報記憶媒体（ＩＣカード）
１１０…コマンド受信部
１２０…認証用データ書込部
１３０…認証用データ記憶部
１４０…不一致確認部
１５０…暗号化演算部
１６０…秘密キー記憶部
１７０…レスポンス送信部
２００…外部装置（リーダライタ装置）
２１０…コマンド送信部
２２０…認証用データ生成部
２３０…レスポンス受信部
２４０…復号化演算部
２５０…公開キー記憶部
２６０…認証部
Ｃ…暗号データ
Ｐ…ポインタ
Ｒ…認証用データ（乱数）
Ｒ（１）〜Ｒ（ｎ＋３）…認証用データ（乱数）
α…第１のキー（秘密キー）
β…第２のキー（公開キー）
【図１】
0004651212.tif 000002
【図２】
0004651212.tif 000003
【図３】
0004651212.tif 000004
【図４】
0004651212.tif 000005