(57)【要約】【課題】ＩＣカードリーダやリーダライタが要求するＩＣカード起動時間にＩＣカードの起動処理が間に合わない場合でも完全な起動処理を実行可能とすることにより、セキュリティ的に問題がないようにすること。【解決手段】リーダライタからの起動要求信号に対して規定時間内に初期応答する手段を有するＩＣカードであって、前記起動要求信号を受信してから初期応答までの間に起動処理を実行する手段と、前記初期応答の後に前記リーダライタからのコマンドＡＰＤＵを受信する手段と、前記コマンドＡＰＤＵを受信した後でも前記起動処理が完了していない場合に、未完の起動処理の実行をし、該起動処理が完了した後に当該コマンドＡＰＤＵに対するレスポンスＡＰＤＵを生成するための処理であるコマンドＡＰＤＵ処理を実行する手段と、前記起動処理の完了に続いて実行される前記コマンドＡＰＤＵ処理により生成されたレスポンスＡＰＤＵを前記リーダライタに送信する手段とを備えることを特徴するＩＣカード。【選択図】図３
2016099711.tif 000002
【特許請求の範囲】
【請求項１】
リーダライタからの起動要求信号に対して規定時間内に初期応答する手段を有するＩＣカードであって、
前記起動要求信号を受信してから初期応答までの間に起動処理を実行する手段と、
前記初期応答の後に前記リーダライタからのコマンドＡＰＤＵを受信する手段と、
前記コマンドＡＰＤＵを受信した後でも前記起動処理が完了していない場合に、未完の起動処理の実行をし、該起動処理が完了した後に当該コマンドＡＰＤＵを実行処理するコマンドＡＰＤＵ処理と当該コマンドＡＰＤＵに対するレスポンスとして該コマンドＡＰＤＵ処理の結果であるレスポンスＡＰＤＵを生成する処理とを実行する手段と、
前記起動処理の完了に続いて実行される前記コマンドＡＰＤＵ処理の結果として生成されたレスポンスＡＰＤＵを前記リーダライタに送信する手段と
を備えることを特徴するＩＣカード。
【請求項２】
前記起動処理の完了に続いて実行される前記コマンドＡＰＤＵ処理および前記レスポンスＡＰＤＵの生成が完了するまで、前記コマンドＡＰＤＵに対するレスポンスＡＰＤＵの応答時間の延長を要求する手段をさらに備えることを特徴とする請求項１に記載のＩＣカード。
【請求項３】
前記初期応答から前記コマンドＡＰＤＵの受信までの間に処理可能な未完のハードウェアチェックが存在する場合に、当該未完のハードウェアチェックを実行する手段をさらに備えることを特徴とする請求項１または２に記載のＩＣカード。
【請求項４】
リーダライタからの起動要求信号に対して規定時間内に初期応答する手段を有するＩＣカードの起動処理方法であって、
前記起動要求信号を受信してから初期応答までの間に起動処理を実行するステップと、
前記初期応答の後に前記リーダライタからのコマンドＡＰＤＵを受信するステップと、
前記コマンドＡＰＤＵを受信した後でも前記起動処理が完了していない場合に、未完の起動処理の実行をし、該起動処理が完了した後に当該コマンドＡＰＤＵを実行処理するコマンドＡＰＤＵ処理と当該コマンドＡＰＤＵに対するレスポンスとして該コマンドＡＰＤＵ処理の結果であるレスポンスＡＰＤＵを生成する処理とを実行するステップと、
前記起動処理の完了に続いて実行される前記コマンドＡＰＤＵ処理の結果として生成されたレスポンスＡＰＤＵを前記リーダライタに送信するステップと
を含むことを特徴するＩＣカードの起動処理方法。
【請求項５】
前記起動処理の完了に続いて実行される前記コマンドＡＰＤＵ処理および前記レスポンスＡＰＤＵの生成が完了するまで、前記コマンドＡＰＤＵに対するレスポンスＡＰＤＵの応答時間の延長を要求するステップをさらに含むことを特徴とする請求項４に記載のＩＣカードの起動処理方法。
【請求項６】
前記初期応答から前記コマンドＡＰＤＵの受信までの間に処理可能な未完のハードウェアチェックが存在する場合に、当該未完のハードウェアチェックを実行するステップをさらに備えることを特徴とする請求項４または５に記載のＩＣカードの起動処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はＩＣカードおよびその起動方法に関し、詳細には、ＩＣカードリーダ（リーダライタ）との情報通信を開始する際のＩＣカードの起動方法に関する。
【背景技術】
【０００２】
ＩＣカードは、リーダライタとの情報のやりとりの方式により、接触型と非接触型とに分類される。これらのいずれのタイプのＩＣカードにおいても、リーダライタからの電源投入、リセット信号等のＩＣカード起動要求に対してＩＣカードが初期応答を返すまでの時間範囲（応答時間）が規定されている。
【０００３】
例えば接触型ＩＣカードの場合、ＩＣカードはリセット信号を受信すると、初期設定として通信関係のパラメータ設定を行い、初期応答としてＡＴＲ（Ａｎｓｗｅｒ  ｔｏ  ｒｅｓｅｔ）をレスポンスする。このＡＴＲのレスポンスは、リーダライタからのリセット信号に対して規定時間内にする必要がある。
【０００４】
この起動処理は実際には例えば４００クロックから４００００クロック程度の非常に短い応答時間が規定されているため、規定の応答時間内にＩＣカードの起動処理を間に合わせるべく、短い時間で実施可能な起動処理のみを行なっている。すなわち、通常のＩＣカードの起動処理では、ＩＣカードの動作に最低限必要な設定のみを行うだけであって、メモリが壊れていないか等の完全なチェックは行なっていない。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来の起動処理方法では、上述したようにＩＣカードからの初期応答を規定時間内に収めるべく必要最低限の設定やチェックしか行なうことができないため、一部に何らかの異常があった場合でもそれを検知することができなかった。リーダライタは、起動したＩＣカードを制御するために、制御内容を格納したコマンドＡＰＤＵ（Application Protocol Data Unit)を送信している。ＩＣカードはこのコマンドＡＰＤＵを受け取ると、受け取ったコマンドＡＰＤＵの内容に応じたＡＰＤＵ処理を行い、応答として所定時間内にレスポンスＡＰＤＵを返信し、リーダライタはこのレスポンスを確認することで制御が成功したか否かなどを特定している。よって、従来の起動処理方法では、起動時に検知できなかった異常が原因で、ＩＣカードが引き続くコマンドＡＰＤＵの処理動作中にエラーとなったり、不正な動作をしてしまう可能性があった。
【０００６】
上記のようなコマンドＡＰＤＵの処理動作中のエラーや、不正な動作は悪意のある攻撃者にとってＩＣカード内の秘密データを取り出す手がかりとなるなど、ＩＣカードにとって致命的な欠陥となり得るという問題がある。また今まではメモリチェックは時間がかかるので実行していなかったが、チェックしていないメモリが悪意のある攻撃にさらされると、例えばフラッシュメモリやＥＥＰＲＯＭを書き換えてしまい誤動作することが多いという問題がある。
【０００７】
さらに近年、ソフトウェアのセキュリティ基準が厳格になっているので、セキュリティ的に問題とならないように完全チェックをすることが必要である。
【０００８】
そこで本発明は上記従来の問題に鑑みなされたものであって、ＩＣカードリーダやリーダライタが要求するＩＣカード起動時間にＩＣカードの起動処理が間に合わない場合でも、完全な起動処理を実行可能とすることにより、セキュリティ的に問題がないようにしたＩＣカードおよびＩＣカードの起動方法に関する。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、一実施形態に記載の発明は、リーダライタからの起動要求信号に対して規定時間内に初期応答する手段を有するＩＣカードであって、前記起動要求信号を受信してから初期応答までの間に起動処理を実行する手段と、前記初期応答の後に前記リーダライタからのコマンドＡＰＤＵを受信する手段と、前記コマンドＡＰＤＵを受信した後でも前記起動処理が完了していない場合に、未完の起動処理の実行をし、該起動処理が完了した後に当該コマンドＡＰＤＵを実行処理するコマンドＡＰＤＵ処理と当該コマンドＡＰＤＵに対するレスポンスとして該コマンドＡＰＤＵ処理の結果であるレスポンスＡＰＤＵを生成する処理とを実行する手段と、前記起動処理の完了に続いて実行される前記コマンドＡＰＤＵ処理の結果として生成されたレスポンスＡＰＤＵを前記リーダライタに送信する手段とを備えることを特徴するＩＣカードである。
【発明の効果】
【００１０】
本発明により、ハードウェアの異常を内包したままコマンドＡＰＤＵ処理を行なうことがなくなるので、ＩＣカードの不正な動作や、コマンドＡＰＤＵ処理中のエラー発生を防止することができる。またその結果として、ＩＣカード内のデータを悪意のある攻撃者から保護することができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態にかかるＩＣカードのハードウェア構成を示す図である。
【図２】リーダライタと通信する本実施形態にかかるＩＣカードの機能構成を示す図である。
【図３】本実施形態にかかるＩＣカードの起動処理のタイミングチャートを示す図である。
【図４】本実施形態にかかるＩＣカードにおける待ち時間管理プログラムのタイミングチャートを示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施形態にかかるＩＣカードおよびＩＣカードの起動処理方法について、詳細に説明する。
【００１３】
本実施形態のＩＣカードでは、ＩＣカードの初期応答の時間制限に依存せずＩＣカードのハードウェアチェックや設定をＩＣカード動作前に行なうことができるようにする。具体的には、初期応答までに必要最低限の設定のみを行い、初期応答を行う。その後、ＩＣカード内で初期応答までにはできなかったハードウェアチェックや設定を行い、Ｒ／Ｗからの最初のコマンドＡＰＤＵを受信した後は、受信したＡＰＤＵに対するレスポンスＡＰＤＵの返信待ち時間を随時延長し、完全チェックの結果異常がなかった場合にコマンドＡＰＤＵの処理を開始する。
【００１４】
図１は本実施形態にかかるＩＣカードのハードウェア構成を示している。本実施形態のＩＣカード１は、ＣＰＵ１１と、コプロセッサ１２と、乱数発生器１３と、Ｉ／Ｏ１４と、ＲＯＭ１５と、ＲＡＭ１６と、ＥＥＰＲＯＭ１７とを備えている。ＣＰＵ１１と、コプロセッサ１２と、乱数発生器１３と、Ｉ／Ｏ１４と、ＲＯＭ１５と、ＲＡＭ１６と、ＥＥＰＲＯＭ１７とはバスを介して相互に接続されている。
【００１５】
ＣＰＵ１１は、ＩＣカード１全体の制御する制御部として機能する。ＣＰＵ１１は、ＲＯＭ１５やＥＥＰＲＯＭ１７に記憶されている制御プログラムや制御データに基づいて処理を実行する。例えば、ＣＰＵ１１は、リーダライタから受信した信号・コマンドに応じて様々な処理を実行し、処理結果としてのＡＴＲ、レスポンスなどのデータの生成を行なう。また、ＣＰＵ１１は、リーダライタに実行させるコマンドを生成することができる。
【００１６】
コプロセッサ１２は、暗号演算専用の処理装置として機能する。コプロセッサ１２は、リーダライタからの信号・コマンドに基づいてＣＰＵ１１に制御されて、暗号化、復号などの必要な暗号演算を行い、演算の結果をＣＰＵに送る。
【００１７】
乱数発生器１３は、乱数発生専用の処理装置として機能する。乱数発生器１３は、リーダライタからの信号・コマンドに基づいて、ＣＰＵ１１に制御されて乱数の生成処理を行う。例えば、ＩＣカード１が相互認証コマンドを受信した場合、乱数を生成し、生成した乱数をＣＰＵ１１に送る。
【００１８】
Ｉ／Ｏ１４は、リーダライタに送信するデータに対して符号化、負荷変調などの信号処理を行なったうえで、送受信する。例えば、Ｉ／Ｏ１４は、外部機器に送信するデータの変調（増幅）を行い、信号処理を施したデータをリーダライタに送信する。
【００１９】
ＲＯＭ１５は、予め制御用のプログラムや制御データなどを記憶する不揮発性のメモリである。ＲＯＭ１５は、製造段階で制御プログラムや制御データなどを記憶した状態でＩＣカード１内に組み込まれる。すなわち、ＲＯＭ１５に記憶される制御プログラムや制御データは、予めＩＣカード１の仕様に応じて組み込まれる。
【００２０】
ＲＡＭ１６は、ワーキングメモリとして機能する揮発性のメモリである。ＲＡＭ１６は、ＣＰＵ２５やコプロセッサ１２において処理中のデータなどを一時的に格納する。
【００２１】
ＥＥＰＲＯＭ１７は、データの書き込み及び書き換えが可能な不揮発性メモリである。ＥＥＰＲＯＭ１７は、例えば、制御用のプログラム、制御データ、アプリケーション、個人情報、暗号鍵などのセキュリティ情報、アプリケーションに用いられるデータなどを記憶することができる。
【００２２】
図２はリーダライタと通信する本実施形態にかかるＩＣカードの機能構成を示している。本実施形態のＩＣカード１は、リーダライタ１０と接触または非接触で通信が可能である。通信方式は接触、非接触で異なり、非接触型では、信号の乗せ方やコマンドによって異なる方式が規定されている。例えば、ｔｙｐｅＡ方式、ｔｙｐｅＢ方式、フェリカ方式などがある。
【００２３】
ＩＣカード１は、接触、非接触いずれかまたは両方の通信方式に対応した受信部２１および送信部２２と、リーダライタに対するレスポンス処理を実行するレスポンス処理部２３を備えている。レスポンス処理部２３は、起動処理を実行する起動処理部２４と、ＡＰＤＵ処理を実行するＡＰＤＵ処理部２５と、コマンドＡＰＤＵに対する応答時間を管理する待ち時間管理部２６を備えている。
【００２４】
起動処理部２４は、リーダライタ１０からの起動要求にしたがってＩＣカード１を起動する起動処理を実行する。起動処理としては、例えば、前回のＩＣカード動作時にＥＥＰＲＯＭへの書き込み中に電源ＯＦＦとなった場合のデータ復旧等が実行されメモリが壊れていないかをチェックすることができる。また、ＲＯＭ及びＥＥＰＲＯＭの完全性チェックや、プログラムコードのチェックを実行することによりプログラム自体が改ざんされていないかをチェックすることができる。さらに、サンプルデータで暗号演算を行い、正しい結果が出力されるか確認することによりコプロセッサなどの暗号演算用ハードウェアは正常に動作しているかチェックすることができ、複数乱数を発生させ、乱数性をチェックすることにより乱数発生器は正常に動作しているかをチェックすることができる。
【００２５】
例えば接触型ＩＣカードにおいては、接続回路の活性化がされコールドリセット待ち状態となっている間に、リーダライタ１０からのリセット信号を受信したことをトリガとして、起動処理部２４は起動処理である通信パラメータの設定などを行う。電源ＯＮから初期応答までの間に起動処理部２４が実行する起動処理は一部の限られた処理のみとなることが多い。コールドリセット待ち状態でクロック信号の供給が開始されてから少なくとも３００クロックサイクルの間に受け取るリセット信号の受信から４００００クロックサイクル以内の初期応答（ＡＴＲ）までの間に起動処理を実行する必要があるからである。本実施形態の起動処理部２４では、残りの起動処理を、初期応答後に実行することができる。例えば、コマンドＡＰＤＵの受信後、コマンドＡＰＤＵ処理の実行を開始するまでに残りの起動処理を実行することができる。コマンドＡＰＤＵの受信後に起動処理を実行する場合、待ち時間管理部２６により、待ち時間が制御されるので、起動処理部２４は起動処理を完了することができる。
【００２６】
ＡＰＤＵ処理部２５は、リーダライタ１０からのコマンドＡＰＤＵを実行処理するコマンドＡＰＤＵ処理と、コマンドＡＰＤＵに対するレスポンスとして該コマンドＡＰＤＵ処理の結果であるレスポンスＡＰＤＵを生成するＡＰＤＵ処理を実行する。例えば、コマンドＡＰＤＵとしてｓｅｌｅｃｔコマンドが送信された場合は、ｓｅｌｅｃｔ処理を実行し、レスポンスＡＰＤＵを生成する。生成されたレスポンスＡＰＤＵは送信部２２によりリーダライタ１０に送信される。
【００２７】
待ち時間管理部２６は、リーダライタ１０からのコマンドＡＰＤＵを受信してからレスポンスＡＰＤＵを送信するまでの時間である応答時間を管理し、必要に応じてその時間を延長する処理を行う。起動処理とコマンドＡＰＤＵ処理を完了するまでは、応答時間を延長する必要がある。
【００２８】
次いで、図２に示す機能構成を備えるＩＣカードの起動時の処理について説明する。図３は本実施形態にかかるＩＣカードの起動処理のタイミングチャートを示す図である。
【００２９】
まず、ＩＣカード１がリーダライタ（Ｒ／Ｗ）１０と接続されると、リーダライタ１０はリセット信号をＩＣカード１に送信する（Ｓ１）。ＩＣカード１はリセット信号を受信部２１で受信すると（Ｓ２）、起動処理部２４により必要最低限の起動処理を行う（Ｓ３）。例えば、必要最低限の起動処理として、通信速度等の通信パラメータや、動作クロック、割り込み設定等をレジスタに設定することができる。ＩＣカード１は必要最低限の設定を行った後、送信部２２により、規定時間内に初期応答であるＡＴＲ（Ａｎｓｗｅｒ  Ｔｏ  Ｒｅｓｅｔ）をリーダライタ１０に送信する（Ｓ４）。
【００３０】
リーダライタ１０は、初期応答（ＡＴＲ）を受信すると（Ｓ５）、例えばＳｅｌｅｃｔコマンドなどの最初のコマンドＡＰＤＵを送信する（Ｓ６）。
【００３１】
ＩＣカード１は受信部２１で最初のコマンドＡＰＤＵを受信すると（Ｓ７）、待ち時間管理部２６により待ち時間管理処理を開始し（Ｓ８）、起動処理部２４により内部でハードウェアに異常がないかの等の未完の起動処理を行う（Ｓ９）。未完の起動処理とは、ＩＣカード１の安全性が担保できるように予め設定された起動処理のうち、未だ完了していない処理のことをいう。例えば、起動処理として、通信パラメータの設定とメモリチェックとプログラムチェックとが設定されており、必要最低限の起動処理として通信パラメータの設定のみが完了している場合は、メモリチェックとプログラムチェックが未完の起動処理としてＳ９において実行される。
【００３２】
ここで待ち時間管理部２６（図２参照）による待ち時間管理処理について説明する。図４は本実施形態にかかるＩＣカード１における待ち時間管理プログラムのタイミングチャートを示す図である。待ち時間管理プログラムが起動すると、コマンドＡＰＤＵの受信からの計時を開始し（Ｓ２１）、所定時間毎にレスポンスＡＰＤＵを返信しなければならない時間である待ち時間に近づいているか否かが確認される（Ｓ２２）。待ち時間に近づいていると判断されると（Ｓ２２：Ｙｅｓ）、起動処理およびＡＰＤＵ処理が完了したか否かが判断される（Ｓ２３）。ここでＳ２３において完了が確認される起動処理およびＡＰＤＵ処理とは、上述した起動処理として実行されるメモリチェックやプログラムチェックに加えて、受信したコマンドＡＰＤＵを実行処理するコマンドＡＰＤＵ処理およびレスポンスＡＰＤＵの生成が含まれる。
【００３３】
チェック等が完了したと判断された場合は（Ｓ２３：Ｙｅｓ）、待ち時間管理プログラムは終了し、送信部２２によりレスポンスＡＰＤＵを送信する処理（図３のＳ１３）が行なわれる。一方、起動処理およびＡＰＤＵ処理が完了していないと判断された場合（Ｓ２３：Ｎｏ）は、待ち時間を延長するための待ち時間延長要求を送信する（Ｓ２４）。リーダライタは、待ち時間延長要求を受信すると（Ｓ２５）、待ち時間の延長を受け付けたことを示す待ち時間延長応答を送信する（Ｓ２６）。ＩＣカード１は、待ち時間延長応答を受信すると（Ｓ２７）、Ｓ２１に再び戻って待ち時間延長応答の受信からの計時を開始し（Ｓ２１）、起動処理およびＡＰＤＵ処理が完了するまで（Ｓ２３：Ｙｅｓ）続く処理を実行する。例えば、メモリチェックとプログラムチェックが完了したが、その後に実行されるＡＰＤＵ処理に時間がかかり、待ち時間内にＡＰＤＵ処理が終了しないときは待ち時間延長要求がなされる。
【００３４】
このように待ち時間管理部２６は、コマンドＡＰＤＵの受信（Ｓ７）からレスポンスＡＰＤＵの送信（Ｓ１３）までの間、ＩＣカード１は各プロトコルに規定された任意のタイミングでリーダライタ１０に対し、待ち時間延長要求を行うことができる。待ち時間延長要求ができるため、起動処理およびＡＰＤＵ処理に時間がかかる場合でも、待ち時間延長要求を行うことで、処理を最後まで行うことができる。ちなみに、リセットから初期応答の間は待ち時間延長はできない。
【００３５】
図３に戻って、起動処理部２４によるハードウェアチェック（Ｓ９）が完了すると、ＩＣカード１の起動処理部２４は起動処理における各種のチェック結果についてエラーの有無を判断し（Ｓ１０）、チェック結果に異常があった場合（Ｓ１０：Ｙｅｓ）、起動処理部２４はエラー処理を行う（Ｓ１１）。エラー処理としては、例えばエラーレスポンスを送信し、それ以上は動作しないように無応答となる、ＩＣカード１自体を恒久的に使用不可能となるように自己処理を行うことができる。
【００３６】
ＩＣカード１はチェック結果に異常がなかった場合（Ｓ１０：Ｎｏ）、ＡＰＤＵ処理部２５により受信したコマンドＡＰＤＵに基づいてＡＰＤＵ処理を行い（Ｓ１２）、コマンドＡＰＤＵに対して生成されたレスポンスＡＰＤＵを送信部２２により送信する（Ｓ１３）。リーダライタ１０はレスポンスＡＰＤＵ（Ｓ１４）を受信することでＩＣカード１の起動時の処理は完了する。
【００３７】
以上の実施形態では、未完の起動処理を最初のコマンドＡＰＤＵの受信の後に開始する態様を例に挙げて説明したが、初期応答の後に未完の起動処理（Ｓ９’）を開始する態様であれば、これに限定されない。初期応答からコマンドＡＰＤＵの受信までの間に未完の起動処理を実行する場合、予想されるコマンドＡＰＤＵ受信時間までの間に処理可能なものを実行すればよい。
【００３８】
以上説明した本実施形態のＩＣカードおよびＩＣカードの起動方法によれば、ハードウェアの異常を内包したままコマンドＡＰＤＵ処理を行なうことがなくなるので、ＩＣカードの不正な動作や、コマンドＡＰＤＵ処理中のエラー発生を防止することができる。またその結果として、ＩＣカード内のデータを悪意のある攻撃者から保護することができる。
【符号の説明】
【００３９】
１    ＩＣカード
１０  リーダライタ
１１  ＣＰＵ
１２  コプロセッサ
１３  乱数発生器
１４  Ｉ／Ｏ
１５  ＲＯＭ
１６  ＲＡＭ
１７  ＥＥＰＲＯＭ
２１  受信部
２２  送信部
２３  レスポンス処理部
２４  起動処理部
２５  ＡＰＤＵ処理部
２６  待ち時間管理部
【図１】
2016099711.tif 000003
【図２】
2016099711.tif 000004
【図３】
2016099711.tif 000005
【図４】
2016099711.tif 000006