(57)【要約】【課題】乱数の発生を伴う処理機能に関して効率的なテストを実施する。【解決手段】ＩＣカード内のＥＥＰＲＯＭに、フェイズ切替フラグを設定し、ＲＡＭ内に、モード切替フラグおよび値切替フラグを設定しておく。リーダライタ装置から、乱数をレスポンスとして返すことを要求する「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」コマンドが与えられた場合、フェイズ切替フラグを確認し（Ｓ１）、運用フェイズになっていれば、通常どおり乱数Ｒを返す（Ｓ４）。テストフェイズになら、モード切替フラグを確認し（Ｓ２）、乱数モードなら乱数Ｒを返す（Ｓ４）。予測可能値モードなら、値切替フラグを確認し（Ｓ３）、固定値なら、固定値ＦＦを返し（Ｓ５）、シーケンス値ならシーケンス値を返す（Ｓ６）。フェイズ切替フラグは、テスト段階までは０とし、出荷時に１に書き換える。【選択図】        図５
2004220403.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、メモリと、外部装置に対する通信手段と、を備え、前記外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして前記外部装置へと返す機能をもった携帯可能情報記録媒体であって、
前記メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、前記外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
前記外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、前記フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、前記フェイズ切替フラグがテストフェイズを示している場合には、「乱数の代わりに前記外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行することを特徴とする携帯可能情報記録媒体。
【請求項２】
ＣＰＵと、メモリと、外部装置に対する通信手段と、を備え、前記外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして前記外部装置へと返す機能をもった携帯可能情報記録媒体であって、
前記メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、前記外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
前記メモリ内に、現在の動作モードが、乱数モードか予測可能値モードかを示すモード切替フラグを格納する領域を設け、前記外部装置から与えられるモード切替コマンドに基づいて、モード切替が可能となるように構成し、
前記外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、前記フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、前記フェイズ切替フラグがテストフェイズを示しており、かつ、前記モード切替フラグが乱数モードを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、前記フェイズ切替フラグがテストフェイズを示しており、かつ、前記モード切替フラグが予測可能値モードを示している場合には、「乱数の代わりに前記外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行することを特徴とする携帯可能情報記録媒体。
【請求項３】
請求項２に記載の携帯可能情報記録媒体において、
メモリ内に、固定値かシーケンス値かを示す値切替フラグを格納する領域を更に設け、外部装置から与えられる値切替コマンドに基づいて、値切替が可能となるように構成し、
前記値切替フラグが固定値を示している場合には、予測可能な値として、予め定められた固定値を採用し、前記値切替フラグがシーケンス値を示している場合には、予測可能な値として、所定の規則で並んだ数列から順に取り出されたシーケンス値を採用することを特徴とする携帯可能情報記録媒体。
【請求項４】
請求項２または３に記載の携帯可能情報記録媒体において、
フェイズ切替フラグを不揮発性メモリ内に格納し、モード切替フラグおよび値切替フラグを揮発性メモリ内に格納することを特徴とする携帯可能情報記録媒体。
【請求項５】
請求項１〜４のいずれかに記載の携帯可能情報記録媒体において、
外部装置から与えられるフェイズ切替コマンドに基づいて、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成したことを特徴とする携帯可能情報記録媒体。
【請求項６】
請求項１〜５のいずれかに記載の携帯可能情報記録媒体において、
「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した乱数自身をレスポンスとして返す処理」を実行する機能を有し、
「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した予測可能な値自身をレスポンスとして返す処理」を実行する機能を有することを特徴とする携帯可能情報記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、携帯可能情報記録媒体に関し、特に、外部装置からのコマンドに応じて乱数を発生させる機能を有する携帯可能情報記録媒体に関する。
【０００２】
【従来の技術】
ＩＣカードに代表される携帯可能情報記録媒体は、社会生活の様々な環境で利用されるようになってきている。特に、ＣＰＵを内蔵したＩＣカードは、高度なセキュリティを確保した携帯可能情報記録媒体として機能するため、信頼性のある記録手段として注目されており、クレジットカード、プリペイドカード、キャッシュカード、会員ＩＤカードなど、様々な分野での利用が試みられている。
【０００３】
携帯可能情報記録媒体を利用したシステムにおいて、セキュリティを確保する上で採られる１つの措置は、外部装置との間での認証処理である。たとえば、ＣＰＵを内蔵したＩＣカードの場合、内蔵ＣＰＵに対するアクセスを行う際には、いわゆるリーダライタ装置と呼ばれている外部装置を介した通信を行うのが一般的である。このとき、本来の通信を行う前に、両者間での相互認証が行われる。すなわち、ＩＣカードと外部装置とを接続した後、ＩＣカード側から外部装置が正規のものであるか否かを認証する処理と、逆に、外部装置側からＩＣカードが正規のものであるか否かを認証する処理が実行され、正しい認証結果が得られた場合に限り、以後の処理を続行する、という形態をとることにより、不正なアクセスを未然に防ぐ工夫が施されている。
【０００４】
このような相互認証のプロセスには、通常、乱数を発生させるプロセスが含まれる。たとえば、ＩＣカード側から外部装置を認証するプロセスでは、まず、外部装置からＩＣカードに対して乱数を発生させるコマンドを与える。ＩＣカードは、このコマンドを受けて乱数を発生し、これをレスポンスとして返す処理を行う。外部装置は、ＩＣカードから返された乱数を特定のアルゴリズムで暗号化し、これを所定の認証コマンドとともにＩＣカードに与える。一方、ＩＣカードは、前回発生させた乱数を同じアルゴリズムで暗号化し、得られた暗号が、外部装置から与えられた暗号と一致した場合に、当該外部装置を正規のものであると認証する。
【０００５】
たとえば、下記特許文献１には、このような乱数を利用して、外部装置から与えられたコマンドが正当なものであるか否かを認証する技術が開示されている。また、下記特許文献２には、乱数を利用して、２組のＩＣカードの相互認証を行う技術が開示されている。
【特許文献１】
特開平９−１７９９５１号公報
【特許文献２】
特開平８−３３９４２９号公報
【０００６】
【発明が解決しようとする課題】
ＩＣカードなどの携帯可能情報記録媒体を利用して、クレジットの決済システム、現金の入出金システム、会員情報処理システムなどを構築する場合、セキュリティを含めたシステム全体の正常な動作が保障されていなければならない。このため、システムを構築する際には、システム全体に関する綿密なテストが実施され、また、各携帯可能情報記録媒体についても、出荷前のテストが実施される。
【０００７】
しかしながら、上述した認証処理などの乱数の発生を伴う処理機能に関しては、現状では、効率的なテストを実施することができない。これは、乱数の発生を伴う処理機能である以上、実際にどのような数値が発生するかを予測することができず、再現性のある系統立てたテストを実施することができないためである。このような事情から、テストにおいて何らかの異常が生じたとしても、その原因が携帯可能情報記録媒体側に存在するのか、外部装置側に存在するのかを認識することが非常に困難になる。
【０００８】
そこで本発明は、乱数の発生を伴う処理機能に関して効率的なテストを実施することが可能な携帯可能情報記録媒体を提供することを目的とする。
【０００９】
【課題を解決するための手段】
（１）    本発明の第１の態様は、ＣＰＵと、メモリと、外部装置に対する通信手段と、を備え、外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして外部装置へと返す機能をもった携帯可能情報記録媒体において、
メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示している場合には、「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行するようにしたものである。
【００１０】
（２）    本発明の第２の態様は、ＣＰＵと、メモリと、外部装置に対する通信手段と、を備え、外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして外部装置へと返す機能をもった携帯可能情報記録媒体において、
メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
メモリ内に、現在の動作モードが、乱数モードか予測可能値モードかを示すモード切替フラグを格納する領域を設け、外部装置から与えられるモード切替コマンドに基づいて、モード切替が可能となるように構成し、
外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが乱数モードを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが予測可能値モードを示している場合には、「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行するようにしたものである。
【００１１】
（３）    本発明の第３の態様は、上述の第２の態様に係る携帯可能情報記録媒体において、
メモリ内に、固定値かシーケンス値かを示す値切替フラグを格納する領域を更に設け、外部装置から与えられる値切替コマンドに基づいて、値切替が可能となるように構成し、
値切替フラグが固定値を示している場合には、予測可能な値として、予め定められた固定値を採用し、値切替フラグがシーケンス値を示している場合には、予測可能な値として、所定の規則で並んだ数列から順に取り出されたシーケンス値を採用するようにしたものである。
【００１２】
（４）    本発明の第４の態様は、上述の第２または第３の態様に係る携帯可能情報記録媒体において、
フェイズ切替フラグを不揮発性メモリ内に格納し、モード切替フラグおよび値切替フラグを揮発性メモリ内に格納するようにしたものである。
【００１３】
（５）    本発明の第５の態様は、上述の第１〜第４の態様に係る携帯可能情報記録媒体において、
外部装置から与えられるフェイズ切替コマンドに基づいて、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成したものである。
【００１４】
（６）        本発明の第６の態様は、上述の第１〜第５の態様に係る携帯可能情報記録媒体において、
「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した乱数自身をレスポンスとして返す処理」を実行する機能を有し、
「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した予測可能な値自身をレスポンスとして返す処理」を実行する機能を有するようにしたものである。
【００１５】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。
【００１６】
＜＜＜  §０．ＩＣカードにおける一般的な認証処理  ＞＞＞
図１は、一般的なＩＣカード１０と外部装置２０との間での認証処理プロセスの手順を示すブロック図である。ここで、ＩＣカード１０は、ＣＰＵ１１と、メモリ１２と、外部装置２０に対する通信手段１３と、を備えており、外部装置２０から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして外部装置２０へと返す機能をもっている。外部装置２０は、一般にリーダライタ装置と呼ばれる装置であり、通常、コンピュータに接続して用いられる。
【００１７】
メモリ１２は、ＲＯＭ，ＲＡＭ，ＥＥＰＲＯＭによって構成されている。ＲＯＭは書き換え不能な不揮発性メモリ、ＲＡＭは書き換え可能な揮発性メモリ、ＥＥＰＲＯＭは書き換え可能な不揮発性メモリであり、それぞれ用途に応じて所定のプログラムやデータが格納される。通常、ＣＰＵ１１が実行するプログラムは、ＲＯＭもしくはＥＥＰＲＯＭに格納されており、外部装置２０から与えられたコマンドは、このプログラムに基づいて実行されることになる。
【００１８】
図１には、ＩＣカード１０が、外部装置２０を認証するための処理プロセスの手順が描かれている。ＩＣカード１０と外部装置２０との間の交信は、外部装置２０からＩＣカード１０に対して所定のコマンドを与えると、これに応じたレスポンスが返される、という手順を繰り返すことによって行われる。そこで、ここに示す例では、まず、外部装置２０側から、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドが与えられる。このコマンドは、認証処理のためにＩＣカード１０に対して、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドである。ＩＣカード１０は、このようなコマンドを受けると、メモリ内のプログラムに基づいて、このコマンドを解釈して実行する。具体的には、所定のアルゴリズムに基づいて乱数Ｒを発生させ、これをレスポンスとして外部装置２０側へと返す処理を行う。なお、このとき、発生させた乱数Ｒは、ＲＡＭ内に一時的に格納される。
【００１９】
こうして、ＩＣカード１０側からのレスポンスとして乱数Ｒを受け取った外部装置２０は、予め定められた所定のアルゴリズムに基づいて、この乱数Ｒに対する認証演算を実行する。通常、ＲＳＡ暗号方式などのアルゴリズムを用いることにより、乱数Ｒに対する暗号化が行われる。ここでは、乱数Ｒに対する暗号化により、暗号Ｃ（Ｒ）が生成されたものとしよう。続いて、外部装置２０は、この暗号Ｃ（Ｒ）に基づく認証を求めるために、「ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥ」なるコマンドとともに暗号Ｃ（Ｒ）をＩＣカード１０へと与える。ＩＣカード１０は、このようなコマンドを受け取ると、先ほど、ＲＡＭ内に一時的に格納しておいた乱数Ｒに対して、外部装置２０側で実行された暗号化処理と全く同一の暗号化処理を実行して暗号Ｃ（Ｒ）を生成し、外部装置２０側から与えられた暗号Ｃ（Ｒ）と一致するか否かを判定する処理を行う。両者が一致すれば、現在接続されている外部装置２０は正当な装置であると判断できるが、両者が不一致であれば、不正な装置であると判断できる。そこで、ＩＣカード１０は、当該判断結果（一致ならＯＫ、不一致ならＮＧ）をレスポンスとして返す。ＯＫなるレスポンスが返された場合には、ＩＣカード１０は、この後、外部装置２０から後続して与えられるコマンドを受け付ける状態になるが、ＮＧなるレスポンスが返された場合には、以後のコマンドを拒絶する状態になる。
【００２０】
以上が一般的な認証プロセスの手順であるが、このような手順を実施する上では、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンド、すなわち、ＩＣカード１０に対して、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドを与える必要がある。しかも、確実な認証手続を行う上で、このようなコマンドに対するレスポンスとして返される乱数Ｒは、外部からは予測することができない完全な乱数に近いものであることが要求される。実際、商業的に利用されている多くのＩＣカードでは、ＦＩＰＳ１４０−２などの厳格な基準に合致した安全性の高い乱数が用いられている。
【００２１】
しかしながら、ＩＣカードのもつ高度な乱数発生機能は、システムの開発段階やテスト段階において、効率的なテストの実施を阻む要因になることは、既に述べたとおりである。たとえば、上述の例の場合、外部装置２０側から、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドを与えた場合、ＩＣカード１０側からどのような値が乱数Ｒとして返されるかは予想がつかないので、システム開発やテストを行う上では、再現性のある系統立てた解析を行うことができなくなる。本発明は、このような問題を解決するため、新しい機能を備えたＩＣカードを提案するものである。
【００２２】
＜＜＜  §１．第１の実施形態  ＞＞＞
図２は、本発明の第１の実施形態を説明するための模式図である。本発明に係るＩＣカードは、本来の動作を行うことによりシステムの運用に供するための運用フェイズと、システム開発やテストに利用するのに適したテストフェイズと、の２通りの動作フェイズで機能することができる。そのために、メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域が設けられている。図２（ａ）  には、ＩＣカードのＥＥＰＲＯＭ内に、フェイズ切替フラグを格納した例が示されている。この例では、フェイズ切替フラグは１ビットのフラグから構成されており、このフラグのビットが０であれば、現在の動作フェイズがテストフェイズであることを示し、このフラグのビットが１であれば、現在の動作フェイズが運用フェイズであることを示している。
【００２３】
動作フェイズは、外部装置２０から与えられるフェイズ切替コマンドによって行うことができる。具体的には、図２（ｂ）  の（１）  に示すように、「ＳＷＩＴＣＨ  ＰＨＡＳＥ」なるフェイズ切替コマンドを外部装置２０からＩＣカード１０に対して与えると、フェイズ切替フラグを切り替えることができる。ただし、フェイズ切替フラグは、０から１に切り替えることは可能であるが、逆に、１から０に切り替えることはできないようになっている。別言すれば、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成されている。
【００２４】
フェイズ切替フラグは、初期状態ではビット０、すなわち、テストフェイズの設定になっている。この状態で、外部装置２０から「ＳＷＩＴＣＨ  ＰＨＡＳＥ」なるフェイズ切替コマンドが与えられると、ＣＰＵ１１は、フェイズ切替フラグをビット０からビット１に書き換える処理を行う。しかし、一旦、フェイズ切替フラグがビット１に書き換えられた後は、外部装置２０から「ＳＷＩＴＣＨ  ＰＨＡＳＥ」なるフェイズ切替コマンドが再び与えられても、ＣＰＵ１１はフェイズ切替フラグの書き換えを行うことはない。このような機能をもたせるには、「ＳＷＩＴＣＨ  ＰＨＡＳＥ」なるコマンドが与えられたときの処理として、まず、フェイズ切替フラグを読出し、フラグの値が０であった場合には、これを１に書き換える処理を行い、フラグの値が１であって場合には、そのままの状態とする処理を実行するプログラムを、ＲＯＭなどに用意しておけばよい。
【００２５】
本発明に係るＩＣカードのもうひとつの特徴は、外部装置２０から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンド（たとえば、前述した「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」コマンド）が与えられたときに、上述したフェイズ切替フラグを読出し、フラグの値が１の場合、すなわち、運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行するが、フラグの値が０の場合、すなわち、テストフェイズを示している場合には、「乱数の代わりに外部装置２０側で予測可能な値をレスポンスとして返す処理」を実行するようにした点にある。このような機能をもたせるには、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」などのコマンド処理プログラムとして、上述の２通りの処理プログラムをＲＯＭなどに用意しておき、フェイズ切替フラグが０か１かによって、いずれか一方の処理プログラムが実行されるような構成にしておけばよい。
【００２６】
図２（ｂ）  の（２）  には、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドが与えられたときに、ＩＣカード１０が実行する２通りの処理が示されている。すなわち、フェイズ切替フラグが０になっており、テストフェイズにある場合には、乱数の代わりに、固定値ＦＦをレスポンスとして返す処理が行われる。ここで、固定値ＦＦは、外部装置２０側で予測可能な値の一例である。もちろん、固定値は必ずしもＦＦにする必要はなく、予め定めた任意の値にしておけばよい。また、この固定値は、ＩＣカードごとに変えるようにしておいてもかまわない。要するに、外部装置２０側において、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドに対するレスポンスとして、どのような値が返されるかが予め予測可能となっていれば、どのような値を返すようにしておいてもよい。一方、フェイズ切替フラグが１になっており、運用フェイズにある場合には、通常どおり、乱数Ｒを発生させ、これをレスポンスとして返す処理が行われる。
【００２７】
このような機能をもったＩＣカードは、実際のシステムで運用する場合には、フェイズ切替フラグをビット１の運用フェイズに切り替える操作を行っておきさえすれば、従来のＩＣカードと全く同等の機能を果たすことができる。すなわち、図１に示すような認証処理の手順を実行する場合であれば、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドに対しては、乱数Ｒをレスポンスとして返す処理を行い、「ＥＸＴＥＲＮＡＬ  ＡＵＴＨＥＮＴＩＣＡＴＥ」なるコマンドに対しては、上述した手順に基づく認証演算を行い、認証結果をレスポンスとして返す処理行う。
【００２８】
一方、このＩＣカードは、初期段階では、フェイズ切替フラグがビット０のテストフェイズとなっているため、システムの開発段階やテスト段階において、効率的なテストを実行することが可能になる。すなわち、このＩＣカードに対して、テストフェイズの状態のまま、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドを与えると、乱数Ｒではなく、所定の固定値（たとえば、ＦＦ）が返されることになる。このように、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドに対しては、常に、ＦＦなどの予め決められた固定値がレスポンスとして戻されることになるので、システム開発やテストを行う上では、再現性のある系統立てた解析を行うことが可能になる。
【００２９】
通常、ＩＣカードを利用したシステム開発の受注を受けた事業者は、システム全体の設計を行うとともに必要なソフトウエアを作成し、適宜、テストを行いながら、不都合な部分を修正するプロセスを踏むことになる。また、個々のＩＣカードを出荷する前には、ハードウエアおよびソフトウエアに関するテストを行うことになる。本発明に係るＩＣカードは、初期段階の動作フェイズがテストフェイズとなっているため、システム開発へ利用したり、出荷前のテストを実行したりすれば、上述したとおり、本来は乱数を返させるコマンドを与えたにもかかわらず、常に所定の固定値が返されることになるので、再現性のある系統的かつ効率的な解析やテストが可能になる。
【００３０】
こうして、システム開発や出荷前のテストが完了し、ＩＣカードを出荷する際には、「ＳＷＩＴＣＨ  ＰＨＡＳＥ」なるフェイズ切替コマンドを与えることにより、フェイズ切替フラグを０から１に書き換えて、運用フェイズの状態にすれば、出荷後のＩＣカードは、本来の機能による動作が可能になるので、実用上は何ら支障は生じない。しかも、フェイズ切替は、テストフェイズから運用フェイズへの一方通行の切替しか許されないので、出荷された後、実際のシステム運用に供せられている状態のＩＣカードは、常に運用フェイズの状態を維持することになり、テストフェイズに戻されることはない。したがって、実際のシステム運用に供せられているＩＣカードが、テストフェイズに戻されて不正利用されるような危険性もない。
【００３１】
＜＜＜  §２．第２の実施形態  ＞＞＞
図３は、本発明の第２の実施形態を説明するための模式図である。上述した第１の実施形態では、テストフェイズでは、乱数を要求するコマンドに対して、必ず乱数Ｒの代わりに所定の固定値がレスポンスとして返されることになるが、システム開発の段階やテストの段階であっても、場合によっては、任意の乱数Ｒが返される方が都合がよいこともある。ところが、動作フェイズを運用フェイズに切り替えてしまうと、再びテストフェイズに戻すことはできないので、上述した第１の実施形態では、テスト段階において、一時的に乱数Ｒを返させる設定を行うことができない。
【００３２】
ここに述べる第２の実施形態では、テストフェイズの動作に、乱数Ｒを返させるモード（乱数モードと呼ぶ）と、固定値などの予測可能な値を返させるモード（予測可能値モードと呼ぶ）と、の２通りの動作モードが設けられ、これらの動作モードを自由に切り替えることが可能になる。すなわち、この第２の実施形態においても、ＥＥＰＲＯＭ内には、図２（ａ）  に示すようなフェイズ切替フラグを格納する領域が設けられており、動作フェイズの切替が行われる点は、前述の第１の実施形態と全く同様であるが、この第２の実施形態では、更に、メモリ内に、現在の動作モードが、乱数モードか予測可能値モードかを示すモード切替フラグを格納する領域が設けられている。
【００３３】
図３（ａ）  には、ＩＣカードのＲＡＭ内に、モード切替フラグを格納した例が示されている。この例では、モード切替フラグは１ビットのフラグから構成されており、このフラグのビットが０であれば、現在の動作モードが乱数モードであることを示し、このフラグのビットが１であれば、現在の動作モードが予測可能値モードであることを示している。
【００３４】
動作モードは、外部装置２０から与えられるモード切替コマンドによって切り替えることができる。具体的には、図３（ｂ）  の（１）  に示すように、「ＳＷＩＴＣＨ  ＭＯＤＥ」なるモード切替コマンドを外部装置２０からＩＣカード１０に対して与えると、モード切替フラグを切り替えることができる。ここで、モード切替フラグは、０から１に切り替えることも可能であるし、逆に、１から０に切り替えることも可能である。これは、モード切替フラグが意味をもつのは、テストフェイズにある場合に限られるため、安全上の点で何ら問題はなく、しかも開発やテスト段階では、何度でも好みのモードに設定することができた方が好ましいからである。
【００３５】
モード切替フラグの初期状態は、０でも１でもかまわない。外部装置２０から「ＳＷＩＴＣＨ  ＭＯＤＥ」なるモード切替コマンドが与えられると、ＣＰＵ１１は、まず、モード切替フラグを読出し、フラグの値が０であった場合には、これを１に書き換える処理を行い、フラグの値が１であった場合には、これを０に書き換える処理を行うことになる。
【００３６】
さて、この第２の実施形態に係るＩＣカード１０に対して、外部装置２０から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンド、たとえば、前述した「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」コマンドが与えられたときの動作は次のとおりである。まず、このコマンドが与えられると、ＣＰＵ１１は、前述した第１の実施形態の場合と同様に、ＥＥＰＲＯＭ内のフェイズ切替フラグを読出し、フラグの値が１の場合、すなわち、運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行する。ところが、フェイズ切替フラグの値が０の場合、すなわち、テストフェイズを示している場合には、続いて、ＲＡＭ内のモード切替フラグを読出す。そして、このモード切替フラグの値が０の場合、すなわち、乱数モードを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行するが、モード切替フラグの値が１の場合、すなわち、予測可能値モードを示している場合には、「乱数の代わりに外部装置２０側で予測可能な値をレスポンスとして返す処理」を実行する。
【００３７】
要するに、外部装置２０から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが乱数モードを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが予測可能値モードを示している場合には、「乱数の代わりに外部装置側で予測可能な値をレスポンスとして返す処理」を実行することになる。
【００３８】
図３（ｂ）  の（２）  には、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドが与えられたときに、ＩＣカード１０が実行する処理が示されている。すなわち、フェイズ切替フラグが０になっており、テストフェイズにある場合には、乱数モード（モード切替フラグが０）なら、通常どおり乱数Ｒをレスポンスとして返す処理が行われるが、予測可能値モード（モード切替フラグが１）なら、乱数の代わりに、たとえば固定値ＦＦをレスポンスとして返す処理が行われる。一方、フェイズ切替フラグが１になっており、運用フェイズにある場合には、通常どおり乱数Ｒをレスポンスとして返す処理が行われる。
【００３９】
結局、この第２の実施形態に係るＩＣカードは、前述した第１の実施形態に係るＩＣカードと同様に、運用フェイズに切り替えられるまでは、テストフェイズの状態で利用することができる。しかも、このテストフェイズでは、「ＳＷＩＴＣＨ  ＭＯＤＥ」なるモード切替コマンドを与えるたびに、乱数モードと予測可能値モードとが何度でも切り替わることになる。このため、テストの内容に応じて、乱数を返させるか、固定値を返させるかを選択することができるようになり、システム開発やテスト段階において、より自由度の高い解析が可能になる。
【００４０】
＜＜＜  §３．第３の実施形態  ＞＞＞
図４は、本発明の第３の実施形態を説明するための模式図である。上述した第１および第２の実施形態では、テストフェイズにおいて乱数Ｒの代わりにレスポンスとして返す値として所定の固定値（たとえばＦＦ）を用いていたが、レスポンスとして返す値は、必ずしも特定の固定値にする必要はない。システム開発やテスト段階における解析を容易にする上では、乱数Ｒの代わりに、外部装置２０側において予測可能な何らかの値が返されれば足りる。
【００４１】
ここに述べる第３の実施形態は、上述した第２の実施形態を更に拡張したものであり、第２の実施形態において、テストフェイズかつ予測可能値モードの場合に、乱数の代わりに返させる値を、固定値にするかシーケンス値にするかを任意に切り替えることができるようにしたものである。ここで、固定値とは、既に述べたとおり、ＦＦのような固定の値であり、固定値を戻させるような設定を行った場合、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」のようなコマンドを与えると、常に、ＦＦのような同一の値がレスポンスとして戻されることになる。これに対して、シーケンス値とは、所定の規則で並んだ数列から順に取り出された値であり、たとえば、「００，０１，０２，０３，…，ＦＥ，ＦＦ」のように１バイトの等差数列をもとの数列として設定し、「００」，「０１」，「０２」，「０３」といった１バイトずつの値をそれぞれシーケンス値として設定することができる。このような設定を行った場合、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」のようなコマンドを与えると、最初は、「００」なる値が返されるが、２回目は「０１」なる値が返され、３回目は「０２」なる値が返されることになる。返される値は毎回異なるものの、次に返される値は、所定の規則に基づいて予測することができる。なお、シーケンス値を用いる場合には、前回のレスポンスで返したシーケンス値を一時的にＲＡＭなどのメモリに格納しておくようにし、これを参照して次回のレスポンスで返すシーケンス値を決定するようにすればよい。
【００４２】
システム開発やテスト段階における解析を行う上では、毎回同じ固定値が返されるよりも、むしろ上述のシーケンス値のように、毎回異なる予測可能な値が返された方が好ましいケースもある。この第３の実施形態では、乱数Ｒの代わりの戻り値として、固定値かシーケンス値かを自由に選択することが可能になる。
【００４３】
この第３の実施形態においても、ＥＥＰＲＯＭ内には、図２（ａ）  に示すようなフェイズ切替フラグを格納する領域が設けられており、動作フェイズの切替が行われる点は、前述の第１の実施形態と全く同様であり、また、ＲＡＭ内には、図３（ａ）  に示すようなモード切替フラグを格納する領域が設けられており、動作モードの切替が行われる点は、前述の第２の実施形態と全く同様である。ただ、この第３の実施形態では、更に、メモリ内に、現在の戻り値（乱数Ｒの代わりにレスポンスとして返される予測可能値）が、固定値かシーケンス値かを示す値切替フラグを格納する領域が設けられている。
【００４４】
図４（ａ）  には、ＩＣカードのＲＡＭ内に、値切替フラグを格納した例が示されている。この例では、値切替フラグは１ビットのフラグから構成されており、このフラグのビットが０であれば、戻り値として固定値が指定されていることを示し、このフラグのビットが１であれば、戻り値としてシーケンス値が指定されていることを示している。
【００４５】
戻り値は、外部装置２０から与えられる値切替コマンドによって切り替えることができる。具体的には、図４（ｂ）  の（１）  に示すように、「ＳＷＩＴＣＨ  ＶＡＬＵＥ」なる値切替コマンドを外部装置２０からＩＣカード１０に対して与えると、値切替フラグを切り替えることができる。ここで、値切替フラグは、０から１に切り替えることも可能であるし、逆に、１から０に切り替えることも可能である。これは、値切替フラグが意味をもつのは、テストフェイズにある場合に限られるため、安全上の点で何ら問題はなく、しかも開発やテスト段階では、何度でも好みの戻り値に設定することができた方が好ましいからである。
【００４６】
値切替フラグの初期状態は、０でも１でもかまわない。外部装置２０から「ＳＷＩＴＣＨ  ＶＡＬＵＥ」なる値切替コマンドが与えられると、ＣＰＵ１１は、まず、値切替フラグを読出し、フラグの値が０であった場合には、これを１に書き換える処理を行い、フラグの値が１であった場合には、これを０に書き換える処理を行うことになる。
【００４７】
さて、この第３の実施形態に係るＩＣカード１０に対して、外部装置２０から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンド、たとえば、前述した「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」コマンドが与えられたときの動作は次のとおりである。まず、このコマンドが与えられると、ＣＰＵ１１は、前述した第１の実施形態の場合と同様に、ＥＥＰＲＯＭ内のフェイズ切替フラグを読出し、フラグの値が１の場合、すなわち、運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行する。一方、フェイズ切替フラグの値が０の場合、すなわち、テストフェイズを示している場合には、続いて、ＲＡＭ内のモード切替フラグを読出す。そして、このモード切替フラグの値が０の場合、すなわち、乱数モードを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行するが、モード切替フラグの値が１の場合、すなわち、予測可能値モードを示している場合には、「乱数の代わりに外部装置２０側で予測可能な値をレスポンスとして返す処理」を実行する。しかも、このときに、レスポンスとして返される予測可能な値（戻り値）は、ＲＡＭ内の値切替フラグを読出すことによって決定される。値切替フラグの値が０の場合、すなわち、固定値が設定されている場合には、ＦＦなどの所定の固定値がレスポンスとして返され、値切替フラグの値が１の場合、すなわち、シーケンス値が設定されている場合には、「００」，「０１」，「０２」，「０３」といった規則にしたがった所定値がレスポンスとして返されることになる。
【００４８】
要するに、この第３の実施形態では、メモリ内に、固定値かシーケンス値かを示す値切替フラグを格納する領域を更に設け、外部装置２０から与えられる値切替コマンドに基づいて、値切替が可能となるようにしておき、値切替フラグが固定値を示している場合には、予測可能な値として、予め定められた固定値を採用し、値切替フラグがシーケンス値を示している場合には、予測可能な値として、所定の規則で並んだ数列から順に取り出されたシーケンス値を採用するようにしたことになる。
【００４９】
図４（ｂ）  の（２）  には、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドが与えられたときに、フェイズ切替フラグが０（テストフェイズ）、かつ、モード切替フラグが１（予測可能値モード）の場合のＩＣカードの処理動作が示されている。この例では、値切替フラグが０（固定値）に設定されている場合には、固定値ＦＦがレスポンスとして返され、値切替フラグが１（シーケンス値）に設定されている場合には、「００」，「０１」，「０２」，「０３」といったシーケンス値がレスポンスとして返される。
【００５０】
図５は、この第３の実施形態に係るＩＣカード１０に対して、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドが与えられたときの所定手順を示す流れ図である。外部装置から、「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドが与えられると、まず、ステップＳ１において、フェイズ切替フラグの確認が行われる。ここで、フェイズ切替フラグが「１：運用フェイズ」となっていた場合には、そのままステップＳ４へ進み、乱数Ｒをレスポンスとして返す処理が行われる。一方、「０：テストフェイズ」となっていた場合には、ステップＳ２へと進み、モード切替フラグの確認が行われる。ここで、モード切替フラグが「０：乱数モード」となっていた場合には、ステップＳ４へ進み、乱数Ｒをレスポンスとして返す処理が行われる。一方、「１：予測可能値モード」となっていた場合には、ステップＳ３へと進み、値切替フラグの確認が行われる。ここで、値切替フラグが「０：固定値」となっていた場合には、ステップＳ５へ進み、たとえば、固定値ＦＦを返す処理が行われ、値切替フラグが「１：シーケンス値」となっていた場合には、ステップＳ６へ進み、たとえば、「００」，「０１」，「０２」，「０３」といったシーケンス値をレスポンスとして返す処理が行われる。
【００５１】
以上、本発明を図示するいくつかの実施形態に基づいて説明したが、本発明は、これらの実施形態に限定されるものではなく、この他にも種々の態様で実施可能である。たとえば、上述の実施形態では、ＩＣカードに対して「ＧＥＴ  ＣＨＡＬＬＥＮＧＥ」なるコマンドを与えて認証処理を行うプロセスを述べたが、本発明において乱数の代わりに予測可能値を戻り値として返す処理は、必ずしも認証処理コマンドが与えられたときに限定されるわけではなく、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドが与えられたときであれば、どのようなコマンドが与えられた場合に行ってもかまわない。
【００５２】
レスポンスとして返す固定値やシーケンス値は、外部装置からのコマンドによって、その都度、変更できるような構成にしておくことも可能である。また、安全性を高める上では、各フラグの値を切り替えるためのコマンド実行には、所定のアクセス権を要求するような設定も可能である。
【００５３】
なお、上述の実施形態では、外部装置から与えられるフェイズ切替コマンドに基づいて、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成したが、このような構成は、本発明の実施にあたり、必ずしも必須のものではない。ただ、実用上は、運用フェイズにおけるセキュリティを確保する上で、上述のような構成にしておくのが好ましい。
【００５４】
また、上述の実施形態では、外部装置から、「乱数を発生してレスポンスとして返す処理」の実行を指示された例を述べたが、本発明の適用は、必ずしも「発生した乱数自身をレスポンスとして返す処理」を実行する場合に限定されるものではない。例えば、外部装置から、「乱数を発生し、この発生した乱数と所定のキーコードとを用いて所定の演算を行い、この演算結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられた場合、運用フェイズ（もしくはテストフェイズの乱数モード）ではそのとおりの処理を実行するが、テストフェイズ（もしくはテストフェイズの予測可能値モード）では「乱数の代わりに、固定値もしくはシーケンス値を発生し、この発生した固定値もしくはシーケンス値と所定のキーコードを用いて所定の演算を行い、この演算結果をレスポンスとして返す処理」を実行することもできる。
【００５５】
要するに本発明では、外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンス（必ずしも当該コマンドに対するレスポンスでなくてもよく、後に与えられる別なコマンドに対するレスポンスでもよい。）として返す処理」の実行を指示するコマンドが与えられたときに、運用フェイズ（もしくはテストフェイズの乱数モード）ではそのとおりの処理を実行するが、テストフェイズ（もしくはテストフェイズの予測可能値モード）では、「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンス（必ずしも当該コマンドに対するレスポンスでなくてもよく、後に与えられる別なコマンドに対するレスポンスでもよい。）として返す処理」を実行するようにすればよい。ここで、「所定の処理」には、「何もしない処理」も含まれており、「発生した値を利用して所定の処理を実行し、その結果をレスポンスとして返す処理」には、「発生した値自身をレスポンスとして返す処理」という形態も含まれている。前述の実施形態は、正に、そのような形態に該当するものである。
【００５６】
なお、上述の実施形態は、ＩＣカードに本発明を適用した例を述べたが、本発明は、ＩＣカードだけでなく、ＣＰＵを内蔵した携帯可能情報記録媒体に広く適用可能な技術である。
【００５７】
更に、上述の実施形態では、モード切替フラグおよび値切替フラグをＲＡＭ（揮発性メモリ）内に格納しているが、これらをＥＥＰＲＯＭ（不揮発性メモリ）内に格納するようにしてもかまわない。ただ、実用上は、モード切替フラグおよび値切替フラグは、テストフェイズでのみ意味のあるフラグであり、何回でも切替が可能なフラグであるため、書き込み処理が容易なＲＡＭ（揮発性メモリ）内に格納するのが好ましい。
【００５８】
【発明の効果】
以上のとおり、本発明に係る携帯可能情報記録媒体によれば、テストフェイズにおいて、乱数の代わりに固定値やシーケンス値などの予測可能値をレスポンスとして返させる設定を行うことができるようにしたため、乱数の発生を伴う処理機能に関して効率的なテストを実施することが可能になる。
【図面の簡単な説明】
【図１】一般的なＩＣカード１０と外部装置２０との間での認証処理プロセスの手順を示すブロック図である。
【図２】本発明の第１の実施形態を説明するための模式図である。
【図３】本発明の第２の実施形態を説明するための模式図である。
【図４】本発明の第３の実施形態を説明するための模式図である。
【図５】本発明の第３の実施形態の処理手順を説明するための流れ図である。
【符号の説明】
１０…ＩＣカード
１１…ＣＰＵ
１２…メモリ
１３…通信手段
２０…外部装置（リーダライタ装置）
Ｓ１〜Ｓ６…流れ図の各ステップ
【図１】
2004220403.tif 000003
【図２】
2004220403.tif 000004
【図３】
2004220403.tif 000005
【図４】
2004220403.tif 000006
【図５】
2004220403.tif 000007