JP2004220403A - 携帯可能情報記録媒体 - Google Patents
携帯可能情報記録媒体 Download PDFInfo
- Publication number
- JP2004220403A JP2004220403A JP2003008099A JP2003008099A JP2004220403A JP 2004220403 A JP2004220403 A JP 2004220403A JP 2003008099 A JP2003008099 A JP 2003008099A JP 2003008099 A JP2003008099 A JP 2003008099A JP 2004220403 A JP2004220403 A JP 2004220403A
- Authority
- JP
- Japan
- Prior art keywords
- value
- phase
- random number
- external device
- switching flag
- 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.)
- Pending
Links
Images
Landscapes
- Credit Cards Or The Like (AREA)
Abstract
【課題】乱数の発生を伴う処理機能に関して効率的なテストを実施する。
【解決手段】ICカード内のEEPROMに、フェイズ切替フラグを設定し、RAM内に、モード切替フラグおよび値切替フラグを設定しておく。リーダライタ装置から、乱数をレスポンスとして返すことを要求する「GET CHALLENGE」コマンドが与えられた場合、フェイズ切替フラグを確認し(S1)、運用フェイズになっていれば、通常どおり乱数Rを返す(S4)。テストフェイズになら、モード切替フラグを確認し(S2)、乱数モードなら乱数Rを返す(S4)。予測可能値モードなら、値切替フラグを確認し(S3)、固定値なら、固定値FFを返し(S5)、シーケンス値ならシーケンス値を返す(S6)。フェイズ切替フラグは、テスト段階までは0とし、出荷時に1に書き換える。
【選択図】 図5
【解決手段】ICカード内のEEPROMに、フェイズ切替フラグを設定し、RAM内に、モード切替フラグおよび値切替フラグを設定しておく。リーダライタ装置から、乱数をレスポンスとして返すことを要求する「GET CHALLENGE」コマンドが与えられた場合、フェイズ切替フラグを確認し(S1)、運用フェイズになっていれば、通常どおり乱数Rを返す(S4)。テストフェイズになら、モード切替フラグを確認し(S2)、乱数モードなら乱数Rを返す(S4)。予測可能値モードなら、値切替フラグを確認し(S3)、固定値なら、固定値FFを返し(S5)、シーケンス値ならシーケンス値を返す(S6)。フェイズ切替フラグは、テスト段階までは0とし、出荷時に1に書き換える。
【選択図】 図5
Description
【0001】
【発明の属する技術分野】
本発明は、携帯可能情報記録媒体に関し、特に、外部装置からのコマンドに応じて乱数を発生させる機能を有する携帯可能情報記録媒体に関する。
【0002】
【従来の技術】
ICカードに代表される携帯可能情報記録媒体は、社会生活の様々な環境で利用されるようになってきている。特に、CPUを内蔵したICカードは、高度なセキュリティを確保した携帯可能情報記録媒体として機能するため、信頼性のある記録手段として注目されており、クレジットカード、プリペイドカード、キャッシュカード、会員IDカードなど、様々な分野での利用が試みられている。
【0003】
携帯可能情報記録媒体を利用したシステムにおいて、セキュリティを確保する上で採られる1つの措置は、外部装置との間での認証処理である。たとえば、CPUを内蔵したICカードの場合、内蔵CPUに対するアクセスを行う際には、いわゆるリーダライタ装置と呼ばれている外部装置を介した通信を行うのが一般的である。このとき、本来の通信を行う前に、両者間での相互認証が行われる。すなわち、ICカードと外部装置とを接続した後、ICカード側から外部装置が正規のものであるか否かを認証する処理と、逆に、外部装置側からICカードが正規のものであるか否かを認証する処理が実行され、正しい認証結果が得られた場合に限り、以後の処理を続行する、という形態をとることにより、不正なアクセスを未然に防ぐ工夫が施されている。
【0004】
このような相互認証のプロセスには、通常、乱数を発生させるプロセスが含まれる。たとえば、ICカード側から外部装置を認証するプロセスでは、まず、外部装置からICカードに対して乱数を発生させるコマンドを与える。ICカードは、このコマンドを受けて乱数を発生し、これをレスポンスとして返す処理を行う。外部装置は、ICカードから返された乱数を特定のアルゴリズムで暗号化し、これを所定の認証コマンドとともにICカードに与える。一方、ICカードは、前回発生させた乱数を同じアルゴリズムで暗号化し、得られた暗号が、外部装置から与えられた暗号と一致した場合に、当該外部装置を正規のものであると認証する。
【0005】
たとえば、下記特許文献1には、このような乱数を利用して、外部装置から与えられたコマンドが正当なものであるか否かを認証する技術が開示されている。また、下記特許文献2には、乱数を利用して、2組のICカードの相互認証を行う技術が開示されている。
【特許文献1】
特開平9−179951号公報
【特許文献2】
特開平8−339429号公報
【0006】
【発明が解決しようとする課題】
ICカードなどの携帯可能情報記録媒体を利用して、クレジットの決済システム、現金の入出金システム、会員情報処理システムなどを構築する場合、セキュリティを含めたシステム全体の正常な動作が保障されていなければならない。このため、システムを構築する際には、システム全体に関する綿密なテストが実施され、また、各携帯可能情報記録媒体についても、出荷前のテストが実施される。
【0007】
しかしながら、上述した認証処理などの乱数の発生を伴う処理機能に関しては、現状では、効率的なテストを実施することができない。これは、乱数の発生を伴う処理機能である以上、実際にどのような数値が発生するかを予測することができず、再現性のある系統立てたテストを実施することができないためである。このような事情から、テストにおいて何らかの異常が生じたとしても、その原因が携帯可能情報記録媒体側に存在するのか、外部装置側に存在するのかを認識することが非常に困難になる。
【0008】
そこで本発明は、乱数の発生を伴う処理機能に関して効率的なテストを実施することが可能な携帯可能情報記録媒体を提供することを目的とする。
【0009】
【課題を解決するための手段】
(1) 本発明の第1の態様は、CPUと、メモリと、外部装置に対する通信手段と、を備え、外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして外部装置へと返す機能をもった携帯可能情報記録媒体において、
メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示している場合には、「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行するようにしたものである。
【0010】
(2) 本発明の第2の態様は、CPUと、メモリと、外部装置に対する通信手段と、を備え、外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして外部装置へと返す機能をもった携帯可能情報記録媒体において、
メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
メモリ内に、現在の動作モードが、乱数モードか予測可能値モードかを示すモード切替フラグを格納する領域を設け、外部装置から与えられるモード切替コマンドに基づいて、モード切替が可能となるように構成し、
外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが乱数モードを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが予測可能値モードを示している場合には、「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行するようにしたものである。
【0011】
(3) 本発明の第3の態様は、上述の第2の態様に係る携帯可能情報記録媒体において、
メモリ内に、固定値かシーケンス値かを示す値切替フラグを格納する領域を更に設け、外部装置から与えられる値切替コマンドに基づいて、値切替が可能となるように構成し、
値切替フラグが固定値を示している場合には、予測可能な値として、予め定められた固定値を採用し、値切替フラグがシーケンス値を示している場合には、予測可能な値として、所定の規則で並んだ数列から順に取り出されたシーケンス値を採用するようにしたものである。
【0012】
(4) 本発明の第4の態様は、上述の第2または第3の態様に係る携帯可能情報記録媒体において、
フェイズ切替フラグを不揮発性メモリ内に格納し、モード切替フラグおよび値切替フラグを揮発性メモリ内に格納するようにしたものである。
【0013】
(5) 本発明の第5の態様は、上述の第1〜第4の態様に係る携帯可能情報記録媒体において、
外部装置から与えられるフェイズ切替コマンドに基づいて、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成したものである。
【0014】
(6) 本発明の第6の態様は、上述の第1〜第5の態様に係る携帯可能情報記録媒体において、
「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した乱数自身をレスポンスとして返す処理」を実行する機能を有し、
「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した予測可能な値自身をレスポンスとして返す処理」を実行する機能を有するようにしたものである。
【0015】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。
【0016】
<<< §0.ICカードにおける一般的な認証処理 >>>
図1は、一般的なICカード10と外部装置20との間での認証処理プロセスの手順を示すブロック図である。ここで、ICカード10は、CPU11と、メモリ12と、外部装置20に対する通信手段13と、を備えており、外部装置20から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして外部装置20へと返す機能をもっている。外部装置20は、一般にリーダライタ装置と呼ばれる装置であり、通常、コンピュータに接続して用いられる。
【0017】
メモリ12は、ROM,RAM,EEPROMによって構成されている。ROMは書き換え不能な不揮発性メモリ、RAMは書き換え可能な揮発性メモリ、EEPROMは書き換え可能な不揮発性メモリであり、それぞれ用途に応じて所定のプログラムやデータが格納される。通常、CPU11が実行するプログラムは、ROMもしくはEEPROMに格納されており、外部装置20から与えられたコマンドは、このプログラムに基づいて実行されることになる。
【0018】
図1には、ICカード10が、外部装置20を認証するための処理プロセスの手順が描かれている。ICカード10と外部装置20との間の交信は、外部装置20からICカード10に対して所定のコマンドを与えると、これに応じたレスポンスが返される、という手順を繰り返すことによって行われる。そこで、ここに示す例では、まず、外部装置20側から、「GET CHALLENGE」なるコマンドが与えられる。このコマンドは、認証処理のためにICカード10に対して、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドである。ICカード10は、このようなコマンドを受けると、メモリ内のプログラムに基づいて、このコマンドを解釈して実行する。具体的には、所定のアルゴリズムに基づいて乱数Rを発生させ、これをレスポンスとして外部装置20側へと返す処理を行う。なお、このとき、発生させた乱数Rは、RAM内に一時的に格納される。
【0019】
こうして、ICカード10側からのレスポンスとして乱数Rを受け取った外部装置20は、予め定められた所定のアルゴリズムに基づいて、この乱数Rに対する認証演算を実行する。通常、RSA暗号方式などのアルゴリズムを用いることにより、乱数Rに対する暗号化が行われる。ここでは、乱数Rに対する暗号化により、暗号C(R)が生成されたものとしよう。続いて、外部装置20は、この暗号C(R)に基づく認証を求めるために、「EXTERNAL AUTHENTICATE」なるコマンドとともに暗号C(R)をICカード10へと与える。ICカード10は、このようなコマンドを受け取ると、先ほど、RAM内に一時的に格納しておいた乱数Rに対して、外部装置20側で実行された暗号化処理と全く同一の暗号化処理を実行して暗号C(R)を生成し、外部装置20側から与えられた暗号C(R)と一致するか否かを判定する処理を行う。両者が一致すれば、現在接続されている外部装置20は正当な装置であると判断できるが、両者が不一致であれば、不正な装置であると判断できる。そこで、ICカード10は、当該判断結果(一致ならOK、不一致ならNG)をレスポンスとして返す。OKなるレスポンスが返された場合には、ICカード10は、この後、外部装置20から後続して与えられるコマンドを受け付ける状態になるが、NGなるレスポンスが返された場合には、以後のコマンドを拒絶する状態になる。
【0020】
以上が一般的な認証プロセスの手順であるが、このような手順を実施する上では、「GET CHALLENGE」なるコマンド、すなわち、ICカード10に対して、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドを与える必要がある。しかも、確実な認証手続を行う上で、このようなコマンドに対するレスポンスとして返される乱数Rは、外部からは予測することができない完全な乱数に近いものであることが要求される。実際、商業的に利用されている多くのICカードでは、FIPS140−2などの厳格な基準に合致した安全性の高い乱数が用いられている。
【0021】
しかしながら、ICカードのもつ高度な乱数発生機能は、システムの開発段階やテスト段階において、効率的なテストの実施を阻む要因になることは、既に述べたとおりである。たとえば、上述の例の場合、外部装置20側から、「GET CHALLENGE」なるコマンドを与えた場合、ICカード10側からどのような値が乱数Rとして返されるかは予想がつかないので、システム開発やテストを行う上では、再現性のある系統立てた解析を行うことができなくなる。本発明は、このような問題を解決するため、新しい機能を備えたICカードを提案するものである。
【0022】
<<< §1.第1の実施形態 >>>
図2は、本発明の第1の実施形態を説明するための模式図である。本発明に係るICカードは、本来の動作を行うことによりシステムの運用に供するための運用フェイズと、システム開発やテストに利用するのに適したテストフェイズと、の2通りの動作フェイズで機能することができる。そのために、メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域が設けられている。図2(a) には、ICカードのEEPROM内に、フェイズ切替フラグを格納した例が示されている。この例では、フェイズ切替フラグは1ビットのフラグから構成されており、このフラグのビットが0であれば、現在の動作フェイズがテストフェイズであることを示し、このフラグのビットが1であれば、現在の動作フェイズが運用フェイズであることを示している。
【0023】
動作フェイズは、外部装置20から与えられるフェイズ切替コマンドによって行うことができる。具体的には、図2(b) の(1) に示すように、「SWITCH PHASE」なるフェイズ切替コマンドを外部装置20からICカード10に対して与えると、フェイズ切替フラグを切り替えることができる。ただし、フェイズ切替フラグは、0から1に切り替えることは可能であるが、逆に、1から0に切り替えることはできないようになっている。別言すれば、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成されている。
【0024】
フェイズ切替フラグは、初期状態ではビット0、すなわち、テストフェイズの設定になっている。この状態で、外部装置20から「SWITCH PHASE」なるフェイズ切替コマンドが与えられると、CPU11は、フェイズ切替フラグをビット0からビット1に書き換える処理を行う。しかし、一旦、フェイズ切替フラグがビット1に書き換えられた後は、外部装置20から「SWITCH PHASE」なるフェイズ切替コマンドが再び与えられても、CPU11はフェイズ切替フラグの書き換えを行うことはない。このような機能をもたせるには、「SWITCH PHASE」なるコマンドが与えられたときの処理として、まず、フェイズ切替フラグを読出し、フラグの値が0であった場合には、これを1に書き換える処理を行い、フラグの値が1であって場合には、そのままの状態とする処理を実行するプログラムを、ROMなどに用意しておけばよい。
【0025】
本発明に係るICカードのもうひとつの特徴は、外部装置20から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンド(たとえば、前述した「GET CHALLENGE」コマンド)が与えられたときに、上述したフェイズ切替フラグを読出し、フラグの値が1の場合、すなわち、運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行するが、フラグの値が0の場合、すなわち、テストフェイズを示している場合には、「乱数の代わりに外部装置20側で予測可能な値をレスポンスとして返す処理」を実行するようにした点にある。このような機能をもたせるには、「GET CHALLENGE」などのコマンド処理プログラムとして、上述の2通りの処理プログラムをROMなどに用意しておき、フェイズ切替フラグが0か1かによって、いずれか一方の処理プログラムが実行されるような構成にしておけばよい。
【0026】
図2(b) の(2) には、「GET CHALLENGE」なるコマンドが与えられたときに、ICカード10が実行する2通りの処理が示されている。すなわち、フェイズ切替フラグが0になっており、テストフェイズにある場合には、乱数の代わりに、固定値FFをレスポンスとして返す処理が行われる。ここで、固定値FFは、外部装置20側で予測可能な値の一例である。もちろん、固定値は必ずしもFFにする必要はなく、予め定めた任意の値にしておけばよい。また、この固定値は、ICカードごとに変えるようにしておいてもかまわない。要するに、外部装置20側において、「GET CHALLENGE」なるコマンドに対するレスポンスとして、どのような値が返されるかが予め予測可能となっていれば、どのような値を返すようにしておいてもよい。一方、フェイズ切替フラグが1になっており、運用フェイズにある場合には、通常どおり、乱数Rを発生させ、これをレスポンスとして返す処理が行われる。
【0027】
このような機能をもったICカードは、実際のシステムで運用する場合には、フェイズ切替フラグをビット1の運用フェイズに切り替える操作を行っておきさえすれば、従来のICカードと全く同等の機能を果たすことができる。すなわち、図1に示すような認証処理の手順を実行する場合であれば、「GET CHALLENGE」なるコマンドに対しては、乱数Rをレスポンスとして返す処理を行い、「EXTERNAL AUTHENTICATE」なるコマンドに対しては、上述した手順に基づく認証演算を行い、認証結果をレスポンスとして返す処理行う。
【0028】
一方、このICカードは、初期段階では、フェイズ切替フラグがビット0のテストフェイズとなっているため、システムの開発段階やテスト段階において、効率的なテストを実行することが可能になる。すなわち、このICカードに対して、テストフェイズの状態のまま、「GET CHALLENGE」なるコマンドを与えると、乱数Rではなく、所定の固定値(たとえば、FF)が返されることになる。このように、「GET CHALLENGE」なるコマンドに対しては、常に、FFなどの予め決められた固定値がレスポンスとして戻されることになるので、システム開発やテストを行う上では、再現性のある系統立てた解析を行うことが可能になる。
【0029】
通常、ICカードを利用したシステム開発の受注を受けた事業者は、システム全体の設計を行うとともに必要なソフトウエアを作成し、適宜、テストを行いながら、不都合な部分を修正するプロセスを踏むことになる。また、個々のICカードを出荷する前には、ハードウエアおよびソフトウエアに関するテストを行うことになる。本発明に係るICカードは、初期段階の動作フェイズがテストフェイズとなっているため、システム開発へ利用したり、出荷前のテストを実行したりすれば、上述したとおり、本来は乱数を返させるコマンドを与えたにもかかわらず、常に所定の固定値が返されることになるので、再現性のある系統的かつ効率的な解析やテストが可能になる。
【0030】
こうして、システム開発や出荷前のテストが完了し、ICカードを出荷する際には、「SWITCH PHASE」なるフェイズ切替コマンドを与えることにより、フェイズ切替フラグを0から1に書き換えて、運用フェイズの状態にすれば、出荷後のICカードは、本来の機能による動作が可能になるので、実用上は何ら支障は生じない。しかも、フェイズ切替は、テストフェイズから運用フェイズへの一方通行の切替しか許されないので、出荷された後、実際のシステム運用に供せられている状態のICカードは、常に運用フェイズの状態を維持することになり、テストフェイズに戻されることはない。したがって、実際のシステム運用に供せられているICカードが、テストフェイズに戻されて不正利用されるような危険性もない。
【0031】
<<< §2.第2の実施形態 >>>
図3は、本発明の第2の実施形態を説明するための模式図である。上述した第1の実施形態では、テストフェイズでは、乱数を要求するコマンドに対して、必ず乱数Rの代わりに所定の固定値がレスポンスとして返されることになるが、システム開発の段階やテストの段階であっても、場合によっては、任意の乱数Rが返される方が都合がよいこともある。ところが、動作フェイズを運用フェイズに切り替えてしまうと、再びテストフェイズに戻すことはできないので、上述した第1の実施形態では、テスト段階において、一時的に乱数Rを返させる設定を行うことができない。
【0032】
ここに述べる第2の実施形態では、テストフェイズの動作に、乱数Rを返させるモード(乱数モードと呼ぶ)と、固定値などの予測可能な値を返させるモード(予測可能値モードと呼ぶ)と、の2通りの動作モードが設けられ、これらの動作モードを自由に切り替えることが可能になる。すなわち、この第2の実施形態においても、EEPROM内には、図2(a) に示すようなフェイズ切替フラグを格納する領域が設けられており、動作フェイズの切替が行われる点は、前述の第1の実施形態と全く同様であるが、この第2の実施形態では、更に、メモリ内に、現在の動作モードが、乱数モードか予測可能値モードかを示すモード切替フラグを格納する領域が設けられている。
【0033】
図3(a) には、ICカードのRAM内に、モード切替フラグを格納した例が示されている。この例では、モード切替フラグは1ビットのフラグから構成されており、このフラグのビットが0であれば、現在の動作モードが乱数モードであることを示し、このフラグのビットが1であれば、現在の動作モードが予測可能値モードであることを示している。
【0034】
動作モードは、外部装置20から与えられるモード切替コマンドによって切り替えることができる。具体的には、図3(b) の(1) に示すように、「SWITCH MODE」なるモード切替コマンドを外部装置20からICカード10に対して与えると、モード切替フラグを切り替えることができる。ここで、モード切替フラグは、0から1に切り替えることも可能であるし、逆に、1から0に切り替えることも可能である。これは、モード切替フラグが意味をもつのは、テストフェイズにある場合に限られるため、安全上の点で何ら問題はなく、しかも開発やテスト段階では、何度でも好みのモードに設定することができた方が好ましいからである。
【0035】
モード切替フラグの初期状態は、0でも1でもかまわない。外部装置20から「SWITCH MODE」なるモード切替コマンドが与えられると、CPU11は、まず、モード切替フラグを読出し、フラグの値が0であった場合には、これを1に書き換える処理を行い、フラグの値が1であった場合には、これを0に書き換える処理を行うことになる。
【0036】
さて、この第2の実施形態に係るICカード10に対して、外部装置20から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンド、たとえば、前述した「GET CHALLENGE」コマンドが与えられたときの動作は次のとおりである。まず、このコマンドが与えられると、CPU11は、前述した第1の実施形態の場合と同様に、EEPROM内のフェイズ切替フラグを読出し、フラグの値が1の場合、すなわち、運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行する。ところが、フェイズ切替フラグの値が0の場合、すなわち、テストフェイズを示している場合には、続いて、RAM内のモード切替フラグを読出す。そして、このモード切替フラグの値が0の場合、すなわち、乱数モードを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行するが、モード切替フラグの値が1の場合、すなわち、予測可能値モードを示している場合には、「乱数の代わりに外部装置20側で予測可能な値をレスポンスとして返す処理」を実行する。
【0037】
要するに、外部装置20から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが乱数モードを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが予測可能値モードを示している場合には、「乱数の代わりに外部装置側で予測可能な値をレスポンスとして返す処理」を実行することになる。
【0038】
図3(b) の(2) には、「GET CHALLENGE」なるコマンドが与えられたときに、ICカード10が実行する処理が示されている。すなわち、フェイズ切替フラグが0になっており、テストフェイズにある場合には、乱数モード(モード切替フラグが0)なら、通常どおり乱数Rをレスポンスとして返す処理が行われるが、予測可能値モード(モード切替フラグが1)なら、乱数の代わりに、たとえば固定値FFをレスポンスとして返す処理が行われる。一方、フェイズ切替フラグが1になっており、運用フェイズにある場合には、通常どおり乱数Rをレスポンスとして返す処理が行われる。
【0039】
結局、この第2の実施形態に係るICカードは、前述した第1の実施形態に係るICカードと同様に、運用フェイズに切り替えられるまでは、テストフェイズの状態で利用することができる。しかも、このテストフェイズでは、「SWITCH MODE」なるモード切替コマンドを与えるたびに、乱数モードと予測可能値モードとが何度でも切り替わることになる。このため、テストの内容に応じて、乱数を返させるか、固定値を返させるかを選択することができるようになり、システム開発やテスト段階において、より自由度の高い解析が可能になる。
【0040】
<<< §3.第3の実施形態 >>>
図4は、本発明の第3の実施形態を説明するための模式図である。上述した第1および第2の実施形態では、テストフェイズにおいて乱数Rの代わりにレスポンスとして返す値として所定の固定値(たとえばFF)を用いていたが、レスポンスとして返す値は、必ずしも特定の固定値にする必要はない。システム開発やテスト段階における解析を容易にする上では、乱数Rの代わりに、外部装置20側において予測可能な何らかの値が返されれば足りる。
【0041】
ここに述べる第3の実施形態は、上述した第2の実施形態を更に拡張したものであり、第2の実施形態において、テストフェイズかつ予測可能値モードの場合に、乱数の代わりに返させる値を、固定値にするかシーケンス値にするかを任意に切り替えることができるようにしたものである。ここで、固定値とは、既に述べたとおり、FFのような固定の値であり、固定値を戻させるような設定を行った場合、「GET CHALLENGE」のようなコマンドを与えると、常に、FFのような同一の値がレスポンスとして戻されることになる。これに対して、シーケンス値とは、所定の規則で並んだ数列から順に取り出された値であり、たとえば、「00,01,02,03,…,FE,FF」のように1バイトの等差数列をもとの数列として設定し、「00」,「01」,「02」,「03」といった1バイトずつの値をそれぞれシーケンス値として設定することができる。このような設定を行った場合、「GET CHALLENGE」のようなコマンドを与えると、最初は、「00」なる値が返されるが、2回目は「01」なる値が返され、3回目は「02」なる値が返されることになる。返される値は毎回異なるものの、次に返される値は、所定の規則に基づいて予測することができる。なお、シーケンス値を用いる場合には、前回のレスポンスで返したシーケンス値を一時的にRAMなどのメモリに格納しておくようにし、これを参照して次回のレスポンスで返すシーケンス値を決定するようにすればよい。
【0042】
システム開発やテスト段階における解析を行う上では、毎回同じ固定値が返されるよりも、むしろ上述のシーケンス値のように、毎回異なる予測可能な値が返された方が好ましいケースもある。この第3の実施形態では、乱数Rの代わりの戻り値として、固定値かシーケンス値かを自由に選択することが可能になる。
【0043】
この第3の実施形態においても、EEPROM内には、図2(a) に示すようなフェイズ切替フラグを格納する領域が設けられており、動作フェイズの切替が行われる点は、前述の第1の実施形態と全く同様であり、また、RAM内には、図3(a) に示すようなモード切替フラグを格納する領域が設けられており、動作モードの切替が行われる点は、前述の第2の実施形態と全く同様である。ただ、この第3の実施形態では、更に、メモリ内に、現在の戻り値(乱数Rの代わりにレスポンスとして返される予測可能値)が、固定値かシーケンス値かを示す値切替フラグを格納する領域が設けられている。
【0044】
図4(a) には、ICカードのRAM内に、値切替フラグを格納した例が示されている。この例では、値切替フラグは1ビットのフラグから構成されており、このフラグのビットが0であれば、戻り値として固定値が指定されていることを示し、このフラグのビットが1であれば、戻り値としてシーケンス値が指定されていることを示している。
【0045】
戻り値は、外部装置20から与えられる値切替コマンドによって切り替えることができる。具体的には、図4(b) の(1) に示すように、「SWITCH VALUE」なる値切替コマンドを外部装置20からICカード10に対して与えると、値切替フラグを切り替えることができる。ここで、値切替フラグは、0から1に切り替えることも可能であるし、逆に、1から0に切り替えることも可能である。これは、値切替フラグが意味をもつのは、テストフェイズにある場合に限られるため、安全上の点で何ら問題はなく、しかも開発やテスト段階では、何度でも好みの戻り値に設定することができた方が好ましいからである。
【0046】
値切替フラグの初期状態は、0でも1でもかまわない。外部装置20から「SWITCH VALUE」なる値切替コマンドが与えられると、CPU11は、まず、値切替フラグを読出し、フラグの値が0であった場合には、これを1に書き換える処理を行い、フラグの値が1であった場合には、これを0に書き換える処理を行うことになる。
【0047】
さて、この第3の実施形態に係るICカード10に対して、外部装置20から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンド、たとえば、前述した「GET CHALLENGE」コマンドが与えられたときの動作は次のとおりである。まず、このコマンドが与えられると、CPU11は、前述した第1の実施形態の場合と同様に、EEPROM内のフェイズ切替フラグを読出し、フラグの値が1の場合、すなわち、運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行する。一方、フェイズ切替フラグの値が0の場合、すなわち、テストフェイズを示している場合には、続いて、RAM内のモード切替フラグを読出す。そして、このモード切替フラグの値が0の場合、すなわち、乱数モードを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行するが、モード切替フラグの値が1の場合、すなわち、予測可能値モードを示している場合には、「乱数の代わりに外部装置20側で予測可能な値をレスポンスとして返す処理」を実行する。しかも、このときに、レスポンスとして返される予測可能な値(戻り値)は、RAM内の値切替フラグを読出すことによって決定される。値切替フラグの値が0の場合、すなわち、固定値が設定されている場合には、FFなどの所定の固定値がレスポンスとして返され、値切替フラグの値が1の場合、すなわち、シーケンス値が設定されている場合には、「00」,「01」,「02」,「03」といった規則にしたがった所定値がレスポンスとして返されることになる。
【0048】
要するに、この第3の実施形態では、メモリ内に、固定値かシーケンス値かを示す値切替フラグを格納する領域を更に設け、外部装置20から与えられる値切替コマンドに基づいて、値切替が可能となるようにしておき、値切替フラグが固定値を示している場合には、予測可能な値として、予め定められた固定値を採用し、値切替フラグがシーケンス値を示している場合には、予測可能な値として、所定の規則で並んだ数列から順に取り出されたシーケンス値を採用するようにしたことになる。
【0049】
図4(b) の(2) には、「GET CHALLENGE」なるコマンドが与えられたときに、フェイズ切替フラグが0(テストフェイズ)、かつ、モード切替フラグが1(予測可能値モード)の場合のICカードの処理動作が示されている。この例では、値切替フラグが0(固定値)に設定されている場合には、固定値FFがレスポンスとして返され、値切替フラグが1(シーケンス値)に設定されている場合には、「00」,「01」,「02」,「03」といったシーケンス値がレスポンスとして返される。
【0050】
図5は、この第3の実施形態に係るICカード10に対して、「GET CHALLENGE」なるコマンドが与えられたときの所定手順を示す流れ図である。外部装置から、「GET CHALLENGE」なるコマンドが与えられると、まず、ステップS1において、フェイズ切替フラグの確認が行われる。ここで、フェイズ切替フラグが「1:運用フェイズ」となっていた場合には、そのままステップS4へ進み、乱数Rをレスポンスとして返す処理が行われる。一方、「0:テストフェイズ」となっていた場合には、ステップS2へと進み、モード切替フラグの確認が行われる。ここで、モード切替フラグが「0:乱数モード」となっていた場合には、ステップS4へ進み、乱数Rをレスポンスとして返す処理が行われる。一方、「1:予測可能値モード」となっていた場合には、ステップS3へと進み、値切替フラグの確認が行われる。ここで、値切替フラグが「0:固定値」となっていた場合には、ステップS5へ進み、たとえば、固定値FFを返す処理が行われ、値切替フラグが「1:シーケンス値」となっていた場合には、ステップS6へ進み、たとえば、「00」,「01」,「02」,「03」といったシーケンス値をレスポンスとして返す処理が行われる。
【0051】
以上、本発明を図示するいくつかの実施形態に基づいて説明したが、本発明は、これらの実施形態に限定されるものではなく、この他にも種々の態様で実施可能である。たとえば、上述の実施形態では、ICカードに対して「GET CHALLENGE」なるコマンドを与えて認証処理を行うプロセスを述べたが、本発明において乱数の代わりに予測可能値を戻り値として返す処理は、必ずしも認証処理コマンドが与えられたときに限定されるわけではなく、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドが与えられたときであれば、どのようなコマンドが与えられた場合に行ってもかまわない。
【0052】
レスポンスとして返す固定値やシーケンス値は、外部装置からのコマンドによって、その都度、変更できるような構成にしておくことも可能である。また、安全性を高める上では、各フラグの値を切り替えるためのコマンド実行には、所定のアクセス権を要求するような設定も可能である。
【0053】
なお、上述の実施形態では、外部装置から与えられるフェイズ切替コマンドに基づいて、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成したが、このような構成は、本発明の実施にあたり、必ずしも必須のものではない。ただ、実用上は、運用フェイズにおけるセキュリティを確保する上で、上述のような構成にしておくのが好ましい。
【0054】
また、上述の実施形態では、外部装置から、「乱数を発生してレスポンスとして返す処理」の実行を指示された例を述べたが、本発明の適用は、必ずしも「発生した乱数自身をレスポンスとして返す処理」を実行する場合に限定されるものではない。例えば、外部装置から、「乱数を発生し、この発生した乱数と所定のキーコードとを用いて所定の演算を行い、この演算結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられた場合、運用フェイズ(もしくはテストフェイズの乱数モード)ではそのとおりの処理を実行するが、テストフェイズ(もしくはテストフェイズの予測可能値モード)では「乱数の代わりに、固定値もしくはシーケンス値を発生し、この発生した固定値もしくはシーケンス値と所定のキーコードを用いて所定の演算を行い、この演算結果をレスポンスとして返す処理」を実行することもできる。
【0055】
要するに本発明では、外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンス(必ずしも当該コマンドに対するレスポンスでなくてもよく、後に与えられる別なコマンドに対するレスポンスでもよい。)として返す処理」の実行を指示するコマンドが与えられたときに、運用フェイズ(もしくはテストフェイズの乱数モード)ではそのとおりの処理を実行するが、テストフェイズ(もしくはテストフェイズの予測可能値モード)では、「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンス(必ずしも当該コマンドに対するレスポンスでなくてもよく、後に与えられる別なコマンドに対するレスポンスでもよい。)として返す処理」を実行するようにすればよい。ここで、「所定の処理」には、「何もしない処理」も含まれており、「発生した値を利用して所定の処理を実行し、その結果をレスポンスとして返す処理」には、「発生した値自身をレスポンスとして返す処理」という形態も含まれている。前述の実施形態は、正に、そのような形態に該当するものである。
【0056】
なお、上述の実施形態は、ICカードに本発明を適用した例を述べたが、本発明は、ICカードだけでなく、CPUを内蔵した携帯可能情報記録媒体に広く適用可能な技術である。
【0057】
更に、上述の実施形態では、モード切替フラグおよび値切替フラグをRAM(揮発性メモリ)内に格納しているが、これらをEEPROM(不揮発性メモリ)内に格納するようにしてもかまわない。ただ、実用上は、モード切替フラグおよび値切替フラグは、テストフェイズでのみ意味のあるフラグであり、何回でも切替が可能なフラグであるため、書き込み処理が容易なRAM(揮発性メモリ)内に格納するのが好ましい。
【0058】
【発明の効果】
以上のとおり、本発明に係る携帯可能情報記録媒体によれば、テストフェイズにおいて、乱数の代わりに固定値やシーケンス値などの予測可能値をレスポンスとして返させる設定を行うことができるようにしたため、乱数の発生を伴う処理機能に関して効率的なテストを実施することが可能になる。
【図面の簡単な説明】
【図1】一般的なICカード10と外部装置20との間での認証処理プロセスの手順を示すブロック図である。
【図2】本発明の第1の実施形態を説明するための模式図である。
【図3】本発明の第2の実施形態を説明するための模式図である。
【図4】本発明の第3の実施形態を説明するための模式図である。
【図5】本発明の第3の実施形態の処理手順を説明するための流れ図である。
【符号の説明】
10…ICカード
11…CPU
12…メモリ
13…通信手段
20…外部装置(リーダライタ装置)
S1〜S6…流れ図の各ステップ
【発明の属する技術分野】
本発明は、携帯可能情報記録媒体に関し、特に、外部装置からのコマンドに応じて乱数を発生させる機能を有する携帯可能情報記録媒体に関する。
【0002】
【従来の技術】
ICカードに代表される携帯可能情報記録媒体は、社会生活の様々な環境で利用されるようになってきている。特に、CPUを内蔵したICカードは、高度なセキュリティを確保した携帯可能情報記録媒体として機能するため、信頼性のある記録手段として注目されており、クレジットカード、プリペイドカード、キャッシュカード、会員IDカードなど、様々な分野での利用が試みられている。
【0003】
携帯可能情報記録媒体を利用したシステムにおいて、セキュリティを確保する上で採られる1つの措置は、外部装置との間での認証処理である。たとえば、CPUを内蔵したICカードの場合、内蔵CPUに対するアクセスを行う際には、いわゆるリーダライタ装置と呼ばれている外部装置を介した通信を行うのが一般的である。このとき、本来の通信を行う前に、両者間での相互認証が行われる。すなわち、ICカードと外部装置とを接続した後、ICカード側から外部装置が正規のものであるか否かを認証する処理と、逆に、外部装置側からICカードが正規のものであるか否かを認証する処理が実行され、正しい認証結果が得られた場合に限り、以後の処理を続行する、という形態をとることにより、不正なアクセスを未然に防ぐ工夫が施されている。
【0004】
このような相互認証のプロセスには、通常、乱数を発生させるプロセスが含まれる。たとえば、ICカード側から外部装置を認証するプロセスでは、まず、外部装置からICカードに対して乱数を発生させるコマンドを与える。ICカードは、このコマンドを受けて乱数を発生し、これをレスポンスとして返す処理を行う。外部装置は、ICカードから返された乱数を特定のアルゴリズムで暗号化し、これを所定の認証コマンドとともにICカードに与える。一方、ICカードは、前回発生させた乱数を同じアルゴリズムで暗号化し、得られた暗号が、外部装置から与えられた暗号と一致した場合に、当該外部装置を正規のものであると認証する。
【0005】
たとえば、下記特許文献1には、このような乱数を利用して、外部装置から与えられたコマンドが正当なものであるか否かを認証する技術が開示されている。また、下記特許文献2には、乱数を利用して、2組のICカードの相互認証を行う技術が開示されている。
【特許文献1】
特開平9−179951号公報
【特許文献2】
特開平8−339429号公報
【0006】
【発明が解決しようとする課題】
ICカードなどの携帯可能情報記録媒体を利用して、クレジットの決済システム、現金の入出金システム、会員情報処理システムなどを構築する場合、セキュリティを含めたシステム全体の正常な動作が保障されていなければならない。このため、システムを構築する際には、システム全体に関する綿密なテストが実施され、また、各携帯可能情報記録媒体についても、出荷前のテストが実施される。
【0007】
しかしながら、上述した認証処理などの乱数の発生を伴う処理機能に関しては、現状では、効率的なテストを実施することができない。これは、乱数の発生を伴う処理機能である以上、実際にどのような数値が発生するかを予測することができず、再現性のある系統立てたテストを実施することができないためである。このような事情から、テストにおいて何らかの異常が生じたとしても、その原因が携帯可能情報記録媒体側に存在するのか、外部装置側に存在するのかを認識することが非常に困難になる。
【0008】
そこで本発明は、乱数の発生を伴う処理機能に関して効率的なテストを実施することが可能な携帯可能情報記録媒体を提供することを目的とする。
【0009】
【課題を解決するための手段】
(1) 本発明の第1の態様は、CPUと、メモリと、外部装置に対する通信手段と、を備え、外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして外部装置へと返す機能をもった携帯可能情報記録媒体において、
メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示している場合には、「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行するようにしたものである。
【0010】
(2) 本発明の第2の態様は、CPUと、メモリと、外部装置に対する通信手段と、を備え、外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして外部装置へと返す機能をもった携帯可能情報記録媒体において、
メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
メモリ内に、現在の動作モードが、乱数モードか予測可能値モードかを示すモード切替フラグを格納する領域を設け、外部装置から与えられるモード切替コマンドに基づいて、モード切替が可能となるように構成し、
外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが乱数モードを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが予測可能値モードを示している場合には、「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行するようにしたものである。
【0011】
(3) 本発明の第3の態様は、上述の第2の態様に係る携帯可能情報記録媒体において、
メモリ内に、固定値かシーケンス値かを示す値切替フラグを格納する領域を更に設け、外部装置から与えられる値切替コマンドに基づいて、値切替が可能となるように構成し、
値切替フラグが固定値を示している場合には、予測可能な値として、予め定められた固定値を採用し、値切替フラグがシーケンス値を示している場合には、予測可能な値として、所定の規則で並んだ数列から順に取り出されたシーケンス値を採用するようにしたものである。
【0012】
(4) 本発明の第4の態様は、上述の第2または第3の態様に係る携帯可能情報記録媒体において、
フェイズ切替フラグを不揮発性メモリ内に格納し、モード切替フラグおよび値切替フラグを揮発性メモリ内に格納するようにしたものである。
【0013】
(5) 本発明の第5の態様は、上述の第1〜第4の態様に係る携帯可能情報記録媒体において、
外部装置から与えられるフェイズ切替コマンドに基づいて、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成したものである。
【0014】
(6) 本発明の第6の態様は、上述の第1〜第5の態様に係る携帯可能情報記録媒体において、
「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した乱数自身をレスポンスとして返す処理」を実行する機能を有し、
「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した予測可能な値自身をレスポンスとして返す処理」を実行する機能を有するようにしたものである。
【0015】
【発明の実施の形態】
以下、本発明を図示する実施形態に基づいて説明する。
【0016】
<<< §0.ICカードにおける一般的な認証処理 >>>
図1は、一般的なICカード10と外部装置20との間での認証処理プロセスの手順を示すブロック図である。ここで、ICカード10は、CPU11と、メモリ12と、外部装置20に対する通信手段13と、を備えており、外部装置20から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして外部装置20へと返す機能をもっている。外部装置20は、一般にリーダライタ装置と呼ばれる装置であり、通常、コンピュータに接続して用いられる。
【0017】
メモリ12は、ROM,RAM,EEPROMによって構成されている。ROMは書き換え不能な不揮発性メモリ、RAMは書き換え可能な揮発性メモリ、EEPROMは書き換え可能な不揮発性メモリであり、それぞれ用途に応じて所定のプログラムやデータが格納される。通常、CPU11が実行するプログラムは、ROMもしくはEEPROMに格納されており、外部装置20から与えられたコマンドは、このプログラムに基づいて実行されることになる。
【0018】
図1には、ICカード10が、外部装置20を認証するための処理プロセスの手順が描かれている。ICカード10と外部装置20との間の交信は、外部装置20からICカード10に対して所定のコマンドを与えると、これに応じたレスポンスが返される、という手順を繰り返すことによって行われる。そこで、ここに示す例では、まず、外部装置20側から、「GET CHALLENGE」なるコマンドが与えられる。このコマンドは、認証処理のためにICカード10に対して、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドである。ICカード10は、このようなコマンドを受けると、メモリ内のプログラムに基づいて、このコマンドを解釈して実行する。具体的には、所定のアルゴリズムに基づいて乱数Rを発生させ、これをレスポンスとして外部装置20側へと返す処理を行う。なお、このとき、発生させた乱数Rは、RAM内に一時的に格納される。
【0019】
こうして、ICカード10側からのレスポンスとして乱数Rを受け取った外部装置20は、予め定められた所定のアルゴリズムに基づいて、この乱数Rに対する認証演算を実行する。通常、RSA暗号方式などのアルゴリズムを用いることにより、乱数Rに対する暗号化が行われる。ここでは、乱数Rに対する暗号化により、暗号C(R)が生成されたものとしよう。続いて、外部装置20は、この暗号C(R)に基づく認証を求めるために、「EXTERNAL AUTHENTICATE」なるコマンドとともに暗号C(R)をICカード10へと与える。ICカード10は、このようなコマンドを受け取ると、先ほど、RAM内に一時的に格納しておいた乱数Rに対して、外部装置20側で実行された暗号化処理と全く同一の暗号化処理を実行して暗号C(R)を生成し、外部装置20側から与えられた暗号C(R)と一致するか否かを判定する処理を行う。両者が一致すれば、現在接続されている外部装置20は正当な装置であると判断できるが、両者が不一致であれば、不正な装置であると判断できる。そこで、ICカード10は、当該判断結果(一致ならOK、不一致ならNG)をレスポンスとして返す。OKなるレスポンスが返された場合には、ICカード10は、この後、外部装置20から後続して与えられるコマンドを受け付ける状態になるが、NGなるレスポンスが返された場合には、以後のコマンドを拒絶する状態になる。
【0020】
以上が一般的な認証プロセスの手順であるが、このような手順を実施する上では、「GET CHALLENGE」なるコマンド、すなわち、ICカード10に対して、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドを与える必要がある。しかも、確実な認証手続を行う上で、このようなコマンドに対するレスポンスとして返される乱数Rは、外部からは予測することができない完全な乱数に近いものであることが要求される。実際、商業的に利用されている多くのICカードでは、FIPS140−2などの厳格な基準に合致した安全性の高い乱数が用いられている。
【0021】
しかしながら、ICカードのもつ高度な乱数発生機能は、システムの開発段階やテスト段階において、効率的なテストの実施を阻む要因になることは、既に述べたとおりである。たとえば、上述の例の場合、外部装置20側から、「GET CHALLENGE」なるコマンドを与えた場合、ICカード10側からどのような値が乱数Rとして返されるかは予想がつかないので、システム開発やテストを行う上では、再現性のある系統立てた解析を行うことができなくなる。本発明は、このような問題を解決するため、新しい機能を備えたICカードを提案するものである。
【0022】
<<< §1.第1の実施形態 >>>
図2は、本発明の第1の実施形態を説明するための模式図である。本発明に係るICカードは、本来の動作を行うことによりシステムの運用に供するための運用フェイズと、システム開発やテストに利用するのに適したテストフェイズと、の2通りの動作フェイズで機能することができる。そのために、メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域が設けられている。図2(a) には、ICカードのEEPROM内に、フェイズ切替フラグを格納した例が示されている。この例では、フェイズ切替フラグは1ビットのフラグから構成されており、このフラグのビットが0であれば、現在の動作フェイズがテストフェイズであることを示し、このフラグのビットが1であれば、現在の動作フェイズが運用フェイズであることを示している。
【0023】
動作フェイズは、外部装置20から与えられるフェイズ切替コマンドによって行うことができる。具体的には、図2(b) の(1) に示すように、「SWITCH PHASE」なるフェイズ切替コマンドを外部装置20からICカード10に対して与えると、フェイズ切替フラグを切り替えることができる。ただし、フェイズ切替フラグは、0から1に切り替えることは可能であるが、逆に、1から0に切り替えることはできないようになっている。別言すれば、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成されている。
【0024】
フェイズ切替フラグは、初期状態ではビット0、すなわち、テストフェイズの設定になっている。この状態で、外部装置20から「SWITCH PHASE」なるフェイズ切替コマンドが与えられると、CPU11は、フェイズ切替フラグをビット0からビット1に書き換える処理を行う。しかし、一旦、フェイズ切替フラグがビット1に書き換えられた後は、外部装置20から「SWITCH PHASE」なるフェイズ切替コマンドが再び与えられても、CPU11はフェイズ切替フラグの書き換えを行うことはない。このような機能をもたせるには、「SWITCH PHASE」なるコマンドが与えられたときの処理として、まず、フェイズ切替フラグを読出し、フラグの値が0であった場合には、これを1に書き換える処理を行い、フラグの値が1であって場合には、そのままの状態とする処理を実行するプログラムを、ROMなどに用意しておけばよい。
【0025】
本発明に係るICカードのもうひとつの特徴は、外部装置20から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンド(たとえば、前述した「GET CHALLENGE」コマンド)が与えられたときに、上述したフェイズ切替フラグを読出し、フラグの値が1の場合、すなわち、運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行するが、フラグの値が0の場合、すなわち、テストフェイズを示している場合には、「乱数の代わりに外部装置20側で予測可能な値をレスポンスとして返す処理」を実行するようにした点にある。このような機能をもたせるには、「GET CHALLENGE」などのコマンド処理プログラムとして、上述の2通りの処理プログラムをROMなどに用意しておき、フェイズ切替フラグが0か1かによって、いずれか一方の処理プログラムが実行されるような構成にしておけばよい。
【0026】
図2(b) の(2) には、「GET CHALLENGE」なるコマンドが与えられたときに、ICカード10が実行する2通りの処理が示されている。すなわち、フェイズ切替フラグが0になっており、テストフェイズにある場合には、乱数の代わりに、固定値FFをレスポンスとして返す処理が行われる。ここで、固定値FFは、外部装置20側で予測可能な値の一例である。もちろん、固定値は必ずしもFFにする必要はなく、予め定めた任意の値にしておけばよい。また、この固定値は、ICカードごとに変えるようにしておいてもかまわない。要するに、外部装置20側において、「GET CHALLENGE」なるコマンドに対するレスポンスとして、どのような値が返されるかが予め予測可能となっていれば、どのような値を返すようにしておいてもよい。一方、フェイズ切替フラグが1になっており、運用フェイズにある場合には、通常どおり、乱数Rを発生させ、これをレスポンスとして返す処理が行われる。
【0027】
このような機能をもったICカードは、実際のシステムで運用する場合には、フェイズ切替フラグをビット1の運用フェイズに切り替える操作を行っておきさえすれば、従来のICカードと全く同等の機能を果たすことができる。すなわち、図1に示すような認証処理の手順を実行する場合であれば、「GET CHALLENGE」なるコマンドに対しては、乱数Rをレスポンスとして返す処理を行い、「EXTERNAL AUTHENTICATE」なるコマンドに対しては、上述した手順に基づく認証演算を行い、認証結果をレスポンスとして返す処理行う。
【0028】
一方、このICカードは、初期段階では、フェイズ切替フラグがビット0のテストフェイズとなっているため、システムの開発段階やテスト段階において、効率的なテストを実行することが可能になる。すなわち、このICカードに対して、テストフェイズの状態のまま、「GET CHALLENGE」なるコマンドを与えると、乱数Rではなく、所定の固定値(たとえば、FF)が返されることになる。このように、「GET CHALLENGE」なるコマンドに対しては、常に、FFなどの予め決められた固定値がレスポンスとして戻されることになるので、システム開発やテストを行う上では、再現性のある系統立てた解析を行うことが可能になる。
【0029】
通常、ICカードを利用したシステム開発の受注を受けた事業者は、システム全体の設計を行うとともに必要なソフトウエアを作成し、適宜、テストを行いながら、不都合な部分を修正するプロセスを踏むことになる。また、個々のICカードを出荷する前には、ハードウエアおよびソフトウエアに関するテストを行うことになる。本発明に係るICカードは、初期段階の動作フェイズがテストフェイズとなっているため、システム開発へ利用したり、出荷前のテストを実行したりすれば、上述したとおり、本来は乱数を返させるコマンドを与えたにもかかわらず、常に所定の固定値が返されることになるので、再現性のある系統的かつ効率的な解析やテストが可能になる。
【0030】
こうして、システム開発や出荷前のテストが完了し、ICカードを出荷する際には、「SWITCH PHASE」なるフェイズ切替コマンドを与えることにより、フェイズ切替フラグを0から1に書き換えて、運用フェイズの状態にすれば、出荷後のICカードは、本来の機能による動作が可能になるので、実用上は何ら支障は生じない。しかも、フェイズ切替は、テストフェイズから運用フェイズへの一方通行の切替しか許されないので、出荷された後、実際のシステム運用に供せられている状態のICカードは、常に運用フェイズの状態を維持することになり、テストフェイズに戻されることはない。したがって、実際のシステム運用に供せられているICカードが、テストフェイズに戻されて不正利用されるような危険性もない。
【0031】
<<< §2.第2の実施形態 >>>
図3は、本発明の第2の実施形態を説明するための模式図である。上述した第1の実施形態では、テストフェイズでは、乱数を要求するコマンドに対して、必ず乱数Rの代わりに所定の固定値がレスポンスとして返されることになるが、システム開発の段階やテストの段階であっても、場合によっては、任意の乱数Rが返される方が都合がよいこともある。ところが、動作フェイズを運用フェイズに切り替えてしまうと、再びテストフェイズに戻すことはできないので、上述した第1の実施形態では、テスト段階において、一時的に乱数Rを返させる設定を行うことができない。
【0032】
ここに述べる第2の実施形態では、テストフェイズの動作に、乱数Rを返させるモード(乱数モードと呼ぶ)と、固定値などの予測可能な値を返させるモード(予測可能値モードと呼ぶ)と、の2通りの動作モードが設けられ、これらの動作モードを自由に切り替えることが可能になる。すなわち、この第2の実施形態においても、EEPROM内には、図2(a) に示すようなフェイズ切替フラグを格納する領域が設けられており、動作フェイズの切替が行われる点は、前述の第1の実施形態と全く同様であるが、この第2の実施形態では、更に、メモリ内に、現在の動作モードが、乱数モードか予測可能値モードかを示すモード切替フラグを格納する領域が設けられている。
【0033】
図3(a) には、ICカードのRAM内に、モード切替フラグを格納した例が示されている。この例では、モード切替フラグは1ビットのフラグから構成されており、このフラグのビットが0であれば、現在の動作モードが乱数モードであることを示し、このフラグのビットが1であれば、現在の動作モードが予測可能値モードであることを示している。
【0034】
動作モードは、外部装置20から与えられるモード切替コマンドによって切り替えることができる。具体的には、図3(b) の(1) に示すように、「SWITCH MODE」なるモード切替コマンドを外部装置20からICカード10に対して与えると、モード切替フラグを切り替えることができる。ここで、モード切替フラグは、0から1に切り替えることも可能であるし、逆に、1から0に切り替えることも可能である。これは、モード切替フラグが意味をもつのは、テストフェイズにある場合に限られるため、安全上の点で何ら問題はなく、しかも開発やテスト段階では、何度でも好みのモードに設定することができた方が好ましいからである。
【0035】
モード切替フラグの初期状態は、0でも1でもかまわない。外部装置20から「SWITCH MODE」なるモード切替コマンドが与えられると、CPU11は、まず、モード切替フラグを読出し、フラグの値が0であった場合には、これを1に書き換える処理を行い、フラグの値が1であった場合には、これを0に書き換える処理を行うことになる。
【0036】
さて、この第2の実施形態に係るICカード10に対して、外部装置20から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンド、たとえば、前述した「GET CHALLENGE」コマンドが与えられたときの動作は次のとおりである。まず、このコマンドが与えられると、CPU11は、前述した第1の実施形態の場合と同様に、EEPROM内のフェイズ切替フラグを読出し、フラグの値が1の場合、すなわち、運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行する。ところが、フェイズ切替フラグの値が0の場合、すなわち、テストフェイズを示している場合には、続いて、RAM内のモード切替フラグを読出す。そして、このモード切替フラグの値が0の場合、すなわち、乱数モードを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行するが、モード切替フラグの値が1の場合、すなわち、予測可能値モードを示している場合には、「乱数の代わりに外部装置20側で予測可能な値をレスポンスとして返す処理」を実行する。
【0037】
要するに、外部装置20から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが乱数モードを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行し、フェイズ切替フラグがテストフェイズを示しており、かつ、モード切替フラグが予測可能値モードを示している場合には、「乱数の代わりに外部装置側で予測可能な値をレスポンスとして返す処理」を実行することになる。
【0038】
図3(b) の(2) には、「GET CHALLENGE」なるコマンドが与えられたときに、ICカード10が実行する処理が示されている。すなわち、フェイズ切替フラグが0になっており、テストフェイズにある場合には、乱数モード(モード切替フラグが0)なら、通常どおり乱数Rをレスポンスとして返す処理が行われるが、予測可能値モード(モード切替フラグが1)なら、乱数の代わりに、たとえば固定値FFをレスポンスとして返す処理が行われる。一方、フェイズ切替フラグが1になっており、運用フェイズにある場合には、通常どおり乱数Rをレスポンスとして返す処理が行われる。
【0039】
結局、この第2の実施形態に係るICカードは、前述した第1の実施形態に係るICカードと同様に、運用フェイズに切り替えられるまでは、テストフェイズの状態で利用することができる。しかも、このテストフェイズでは、「SWITCH MODE」なるモード切替コマンドを与えるたびに、乱数モードと予測可能値モードとが何度でも切り替わることになる。このため、テストの内容に応じて、乱数を返させるか、固定値を返させるかを選択することができるようになり、システム開発やテスト段階において、より自由度の高い解析が可能になる。
【0040】
<<< §3.第3の実施形態 >>>
図4は、本発明の第3の実施形態を説明するための模式図である。上述した第1および第2の実施形態では、テストフェイズにおいて乱数Rの代わりにレスポンスとして返す値として所定の固定値(たとえばFF)を用いていたが、レスポンスとして返す値は、必ずしも特定の固定値にする必要はない。システム開発やテスト段階における解析を容易にする上では、乱数Rの代わりに、外部装置20側において予測可能な何らかの値が返されれば足りる。
【0041】
ここに述べる第3の実施形態は、上述した第2の実施形態を更に拡張したものであり、第2の実施形態において、テストフェイズかつ予測可能値モードの場合に、乱数の代わりに返させる値を、固定値にするかシーケンス値にするかを任意に切り替えることができるようにしたものである。ここで、固定値とは、既に述べたとおり、FFのような固定の値であり、固定値を戻させるような設定を行った場合、「GET CHALLENGE」のようなコマンドを与えると、常に、FFのような同一の値がレスポンスとして戻されることになる。これに対して、シーケンス値とは、所定の規則で並んだ数列から順に取り出された値であり、たとえば、「00,01,02,03,…,FE,FF」のように1バイトの等差数列をもとの数列として設定し、「00」,「01」,「02」,「03」といった1バイトずつの値をそれぞれシーケンス値として設定することができる。このような設定を行った場合、「GET CHALLENGE」のようなコマンドを与えると、最初は、「00」なる値が返されるが、2回目は「01」なる値が返され、3回目は「02」なる値が返されることになる。返される値は毎回異なるものの、次に返される値は、所定の規則に基づいて予測することができる。なお、シーケンス値を用いる場合には、前回のレスポンスで返したシーケンス値を一時的にRAMなどのメモリに格納しておくようにし、これを参照して次回のレスポンスで返すシーケンス値を決定するようにすればよい。
【0042】
システム開発やテスト段階における解析を行う上では、毎回同じ固定値が返されるよりも、むしろ上述のシーケンス値のように、毎回異なる予測可能な値が返された方が好ましいケースもある。この第3の実施形態では、乱数Rの代わりの戻り値として、固定値かシーケンス値かを自由に選択することが可能になる。
【0043】
この第3の実施形態においても、EEPROM内には、図2(a) に示すようなフェイズ切替フラグを格納する領域が設けられており、動作フェイズの切替が行われる点は、前述の第1の実施形態と全く同様であり、また、RAM内には、図3(a) に示すようなモード切替フラグを格納する領域が設けられており、動作モードの切替が行われる点は、前述の第2の実施形態と全く同様である。ただ、この第3の実施形態では、更に、メモリ内に、現在の戻り値(乱数Rの代わりにレスポンスとして返される予測可能値)が、固定値かシーケンス値かを示す値切替フラグを格納する領域が設けられている。
【0044】
図4(a) には、ICカードのRAM内に、値切替フラグを格納した例が示されている。この例では、値切替フラグは1ビットのフラグから構成されており、このフラグのビットが0であれば、戻り値として固定値が指定されていることを示し、このフラグのビットが1であれば、戻り値としてシーケンス値が指定されていることを示している。
【0045】
戻り値は、外部装置20から与えられる値切替コマンドによって切り替えることができる。具体的には、図4(b) の(1) に示すように、「SWITCH VALUE」なる値切替コマンドを外部装置20からICカード10に対して与えると、値切替フラグを切り替えることができる。ここで、値切替フラグは、0から1に切り替えることも可能であるし、逆に、1から0に切り替えることも可能である。これは、値切替フラグが意味をもつのは、テストフェイズにある場合に限られるため、安全上の点で何ら問題はなく、しかも開発やテスト段階では、何度でも好みの戻り値に設定することができた方が好ましいからである。
【0046】
値切替フラグの初期状態は、0でも1でもかまわない。外部装置20から「SWITCH VALUE」なる値切替コマンドが与えられると、CPU11は、まず、値切替フラグを読出し、フラグの値が0であった場合には、これを1に書き換える処理を行い、フラグの値が1であった場合には、これを0に書き換える処理を行うことになる。
【0047】
さて、この第3の実施形態に係るICカード10に対して、外部装置20から、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンド、たとえば、前述した「GET CHALLENGE」コマンドが与えられたときの動作は次のとおりである。まず、このコマンドが与えられると、CPU11は、前述した第1の実施形態の場合と同様に、EEPROM内のフェイズ切替フラグを読出し、フラグの値が1の場合、すなわち、運用フェイズを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行する。一方、フェイズ切替フラグの値が0の場合、すなわち、テストフェイズを示している場合には、続いて、RAM内のモード切替フラグを読出す。そして、このモード切替フラグの値が0の場合、すなわち、乱数モードを示している場合には、指示どおり「乱数を発生してレスポンスとして返す処理」を実行するが、モード切替フラグの値が1の場合、すなわち、予測可能値モードを示している場合には、「乱数の代わりに外部装置20側で予測可能な値をレスポンスとして返す処理」を実行する。しかも、このときに、レスポンスとして返される予測可能な値(戻り値)は、RAM内の値切替フラグを読出すことによって決定される。値切替フラグの値が0の場合、すなわち、固定値が設定されている場合には、FFなどの所定の固定値がレスポンスとして返され、値切替フラグの値が1の場合、すなわち、シーケンス値が設定されている場合には、「00」,「01」,「02」,「03」といった規則にしたがった所定値がレスポンスとして返されることになる。
【0048】
要するに、この第3の実施形態では、メモリ内に、固定値かシーケンス値かを示す値切替フラグを格納する領域を更に設け、外部装置20から与えられる値切替コマンドに基づいて、値切替が可能となるようにしておき、値切替フラグが固定値を示している場合には、予測可能な値として、予め定められた固定値を採用し、値切替フラグがシーケンス値を示している場合には、予測可能な値として、所定の規則で並んだ数列から順に取り出されたシーケンス値を採用するようにしたことになる。
【0049】
図4(b) の(2) には、「GET CHALLENGE」なるコマンドが与えられたときに、フェイズ切替フラグが0(テストフェイズ)、かつ、モード切替フラグが1(予測可能値モード)の場合のICカードの処理動作が示されている。この例では、値切替フラグが0(固定値)に設定されている場合には、固定値FFがレスポンスとして返され、値切替フラグが1(シーケンス値)に設定されている場合には、「00」,「01」,「02」,「03」といったシーケンス値がレスポンスとして返される。
【0050】
図5は、この第3の実施形態に係るICカード10に対して、「GET CHALLENGE」なるコマンドが与えられたときの所定手順を示す流れ図である。外部装置から、「GET CHALLENGE」なるコマンドが与えられると、まず、ステップS1において、フェイズ切替フラグの確認が行われる。ここで、フェイズ切替フラグが「1:運用フェイズ」となっていた場合には、そのままステップS4へ進み、乱数Rをレスポンスとして返す処理が行われる。一方、「0:テストフェイズ」となっていた場合には、ステップS2へと進み、モード切替フラグの確認が行われる。ここで、モード切替フラグが「0:乱数モード」となっていた場合には、ステップS4へ進み、乱数Rをレスポンスとして返す処理が行われる。一方、「1:予測可能値モード」となっていた場合には、ステップS3へと進み、値切替フラグの確認が行われる。ここで、値切替フラグが「0:固定値」となっていた場合には、ステップS5へ進み、たとえば、固定値FFを返す処理が行われ、値切替フラグが「1:シーケンス値」となっていた場合には、ステップS6へ進み、たとえば、「00」,「01」,「02」,「03」といったシーケンス値をレスポンスとして返す処理が行われる。
【0051】
以上、本発明を図示するいくつかの実施形態に基づいて説明したが、本発明は、これらの実施形態に限定されるものではなく、この他にも種々の態様で実施可能である。たとえば、上述の実施形態では、ICカードに対して「GET CHALLENGE」なるコマンドを与えて認証処理を行うプロセスを述べたが、本発明において乱数の代わりに予測可能値を戻り値として返す処理は、必ずしも認証処理コマンドが与えられたときに限定されるわけではなく、「乱数を発生してレスポンスとして返す処理」の実行を指示するコマンドが与えられたときであれば、どのようなコマンドが与えられた場合に行ってもかまわない。
【0052】
レスポンスとして返す固定値やシーケンス値は、外部装置からのコマンドによって、その都度、変更できるような構成にしておくことも可能である。また、安全性を高める上では、各フラグの値を切り替えるためのコマンド実行には、所定のアクセス権を要求するような設定も可能である。
【0053】
なお、上述の実施形態では、外部装置から与えられるフェイズ切替コマンドに基づいて、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成したが、このような構成は、本発明の実施にあたり、必ずしも必須のものではない。ただ、実用上は、運用フェイズにおけるセキュリティを確保する上で、上述のような構成にしておくのが好ましい。
【0054】
また、上述の実施形態では、外部装置から、「乱数を発生してレスポンスとして返す処理」の実行を指示された例を述べたが、本発明の適用は、必ずしも「発生した乱数自身をレスポンスとして返す処理」を実行する場合に限定されるものではない。例えば、外部装置から、「乱数を発生し、この発生した乱数と所定のキーコードとを用いて所定の演算を行い、この演算結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられた場合、運用フェイズ(もしくはテストフェイズの乱数モード)ではそのとおりの処理を実行するが、テストフェイズ(もしくはテストフェイズの予測可能値モード)では「乱数の代わりに、固定値もしくはシーケンス値を発生し、この発生した固定値もしくはシーケンス値と所定のキーコードを用いて所定の演算を行い、この演算結果をレスポンスとして返す処理」を実行することもできる。
【0055】
要するに本発明では、外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンス(必ずしも当該コマンドに対するレスポンスでなくてもよく、後に与えられる別なコマンドに対するレスポンスでもよい。)として返す処理」の実行を指示するコマンドが与えられたときに、運用フェイズ(もしくはテストフェイズの乱数モード)ではそのとおりの処理を実行するが、テストフェイズ(もしくはテストフェイズの予測可能値モード)では、「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンス(必ずしも当該コマンドに対するレスポンスでなくてもよく、後に与えられる別なコマンドに対するレスポンスでもよい。)として返す処理」を実行するようにすればよい。ここで、「所定の処理」には、「何もしない処理」も含まれており、「発生した値を利用して所定の処理を実行し、その結果をレスポンスとして返す処理」には、「発生した値自身をレスポンスとして返す処理」という形態も含まれている。前述の実施形態は、正に、そのような形態に該当するものである。
【0056】
なお、上述の実施形態は、ICカードに本発明を適用した例を述べたが、本発明は、ICカードだけでなく、CPUを内蔵した携帯可能情報記録媒体に広く適用可能な技術である。
【0057】
更に、上述の実施形態では、モード切替フラグおよび値切替フラグをRAM(揮発性メモリ)内に格納しているが、これらをEEPROM(不揮発性メモリ)内に格納するようにしてもかまわない。ただ、実用上は、モード切替フラグおよび値切替フラグは、テストフェイズでのみ意味のあるフラグであり、何回でも切替が可能なフラグであるため、書き込み処理が容易なRAM(揮発性メモリ)内に格納するのが好ましい。
【0058】
【発明の効果】
以上のとおり、本発明に係る携帯可能情報記録媒体によれば、テストフェイズにおいて、乱数の代わりに固定値やシーケンス値などの予測可能値をレスポンスとして返させる設定を行うことができるようにしたため、乱数の発生を伴う処理機能に関して効率的なテストを実施することが可能になる。
【図面の簡単な説明】
【図1】一般的なICカード10と外部装置20との間での認証処理プロセスの手順を示すブロック図である。
【図2】本発明の第1の実施形態を説明するための模式図である。
【図3】本発明の第2の実施形態を説明するための模式図である。
【図4】本発明の第3の実施形態を説明するための模式図である。
【図5】本発明の第3の実施形態の処理手順を説明するための流れ図である。
【符号の説明】
10…ICカード
11…CPU
12…メモリ
13…通信手段
20…外部装置(リーダライタ装置)
S1〜S6…流れ図の各ステップ
Claims (6)
- CPUと、メモリと、外部装置に対する通信手段と、を備え、前記外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして前記外部装置へと返す機能をもった携帯可能情報記録媒体であって、
前記メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、前記外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
前記外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、前記フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、前記フェイズ切替フラグがテストフェイズを示している場合には、「乱数の代わりに前記外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行することを特徴とする携帯可能情報記録媒体。 - CPUと、メモリと、外部装置に対する通信手段と、を備え、前記外部装置から所定のコマンドが与えられたときに、このコマンドに応じた処理を実行し、その結果をレスポンスとして前記外部装置へと返す機能をもった携帯可能情報記録媒体であって、
前記メモリ内に、現在の動作フェイズが、テストフェイズか運用フェイズかを示すフェイズ切替フラグを格納する領域を設け、前記外部装置から与えられるフェイズ切替コマンドに基づいて、フェイズ切替が可能となるように構成し、
前記メモリ内に、現在の動作モードが、乱数モードか予測可能値モードかを示すモード切替フラグを格納する領域を設け、前記外部装置から与えられるモード切替コマンドに基づいて、モード切替が可能となるように構成し、
前記外部装置から、「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」の実行を指示するコマンドが与えられたときに、前記フェイズ切替フラグが運用フェイズを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、前記フェイズ切替フラグがテストフェイズを示しており、かつ、前記モード切替フラグが乱数モードを示している場合には、指示どおり「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行し、前記フェイズ切替フラグがテストフェイズを示しており、かつ、前記モード切替フラグが予測可能値モードを示している場合には、「乱数の代わりに前記外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」を実行することを特徴とする携帯可能情報記録媒体。 - 請求項2に記載の携帯可能情報記録媒体において、
メモリ内に、固定値かシーケンス値かを示す値切替フラグを格納する領域を更に設け、外部装置から与えられる値切替コマンドに基づいて、値切替が可能となるように構成し、
前記値切替フラグが固定値を示している場合には、予測可能な値として、予め定められた固定値を採用し、前記値切替フラグがシーケンス値を示している場合には、予測可能な値として、所定の規則で並んだ数列から順に取り出されたシーケンス値を採用することを特徴とする携帯可能情報記録媒体。 - 請求項2または3に記載の携帯可能情報記録媒体において、
フェイズ切替フラグを不揮発性メモリ内に格納し、モード切替フラグおよび値切替フラグを揮発性メモリ内に格納することを特徴とする携帯可能情報記録媒体。 - 請求項1〜4のいずれかに記載の携帯可能情報記録媒体において、
外部装置から与えられるフェイズ切替コマンドに基づいて、テストフェイズから運用フェイズへのフラグ切替は可能であるが、運用フェイズからテストフェイズへのフラグ切替は不能となるように構成したことを特徴とする携帯可能情報記録媒体。 - 請求項1〜5のいずれかに記載の携帯可能情報記録媒体において、
「乱数を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した乱数自身をレスポンスとして返す処理」を実行する機能を有し、
「乱数の代わりに外部装置側で予測可能な値を発生し、これを利用して所定の処理を実行し、その結果をレスポンスとして返す処理」として、「発生した予測可能な値自身をレスポンスとして返す処理」を実行する機能を有することを特徴とする携帯可能情報記録媒体。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003008099A JP2004220403A (ja) | 2003-01-16 | 2003-01-16 | 携帯可能情報記録媒体 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003008099A JP2004220403A (ja) | 2003-01-16 | 2003-01-16 | 携帯可能情報記録媒体 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004220403A true JP2004220403A (ja) | 2004-08-05 |
Family
ID=32898000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003008099A Pending JP2004220403A (ja) | 2003-01-16 | 2003-01-16 | 携帯可能情報記録媒体 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004220403A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014232492A (ja) * | 2013-05-30 | 2014-12-11 | 凸版印刷株式会社 | 携帯情報処理装置、ホスト装置、情報処理方法及びプログラム |
-
2003
- 2003-01-16 JP JP2003008099A patent/JP2004220403A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2014232492A (ja) * | 2013-05-30 | 2014-12-11 | 凸版印刷株式会社 | 携帯情報処理装置、ホスト装置、情報処理方法及びプログラム |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8447889B2 (en) | Portable mass storage device with virtual machine activation | |
EP2115655B1 (en) | Virtual secure on-chip one time programming | |
EP1785902B1 (en) | Decryption key table access control on ASIC or ASSP | |
US20070162964A1 (en) | Embedded system insuring security and integrity, and method of increasing security thereof | |
JP2007226839A (ja) | データ構造を記憶するメモリ及び方法 | |
JP4651212B2 (ja) | 携帯可能情報記憶媒体およびその認証方法 | |
WO1999038078A1 (en) | Storage device, encrypting/decrypting device, and method for accessing nonvolatile memory | |
JP2004104539A (ja) | メモリカード | |
US7500605B2 (en) | Tamper resistant device and file generation method | |
JPH11306088A (ja) | Icカードおよびicカードシステム | |
JP2003198528A (ja) | 単一の集積回路識別子の多様化 | |
CN107688756B (zh) | 硬盘控制方法、设备及可读存储介质 | |
US20020044655A1 (en) | Information appliance and use of same in distributed productivity environments | |
KR100350931B1 (ko) | 휴대용 카드에서의 일회용 패스워드 생성방법 및 이를기록한 기록매체 | |
KR102466866B1 (ko) | 데이터의 검증 방법 | |
JP2004220403A (ja) | 携帯可能情報記録媒体 | |
CN114239006A (zh) | 一种基于标准接口的社保卡pin重置方法、系统及介质 | |
JPH10301854A (ja) | チップ・カードおよびその上に情報をインポートする方法 | |
Wilder et al. | Multi-factor stateful authentication using nfc, and mobile phones | |
US10853476B2 (en) | Method for the security of an electronic operation | |
JP2002230511A (ja) | 多重認証可搬情報処理媒体 | |
US20020190130A1 (en) | Portable storage device with function for preventing illegal access thereto | |
JP2002117381A (ja) | Icカード | |
JPH03224047A (ja) | 携帯可能電子装置 | |
KR20230131864A (ko) | 리소스에 대한 액세스를 제어하기 위한 방법 및 디바이스 |