(57)【要約】      （修正有）【課題】コマンドの存在を攻撃者に把握されることなく、正規の使用者にどの箇所でエラーとなったのかを把握させることが可能なＩＣカードを提供する。【解決手段】ＩＣカードは、コマンドの処理中の複数の異なるエラーの内容ごとに、コマンドがサポートされていることを示す正規のステータスワードと、コマンドがサポートされていないことを示す非正規のステータスワードとの何れか一方を予め保持するＳＷリストを記憶しておき、外部端末から受信されたコマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードであって、ＳＷリストに保持されたステータスワードを外部端末へ応答する。【選択図】図３
2014203248.tif 000002
【特許請求の範囲】
【請求項１】
コマンドの処理中の複数の異なるエラーの内容ごとに、コマンドがサポートされていることを示す正規のステータスワードと、コマンドがサポートされていないことを示す非正規のステータスワードとの何れか一方を予め保持するリストを記憶する記憶手段と、
外部端末からコマンドを受信する受信手段と、
前記受信手段により受信されたコマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードであって、前記リストに保持された前記ステータスワードを前記外部端末へ応答する応答手段と、
を備えることを特徴とするＩＣカード。
【請求項２】
前記リストは、複数の異なるコマンドごとに、且つ前記エラーの内容ごとに、前記正規のステータスワードと前記非正規のステータスワードとの何れか一方を予め保持することを特徴とする請求項１に記載のＩＣカード。
【請求項３】
複数の異なるコマンドごと且つ前記エラーの内容ごとの各前記ステータスワードは、前記受信手段により受信されたコマンドが受信された時に一括で切り替えられることを特徴とする請求項１又は２に記載のＩＣカード。
【請求項４】
コマンドの処理中の複数の異なるエラーの内容ごとに、コマンドがサポートされていることを示す正規のステータスワードと、コマンドがサポートされていないことを示す非正規のステータスワードとの何れか一方を予め保持するリストを記憶するステップと、
外部端末からコマンドを受信するステップと、
前記受信されたコマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードであって、前記リストに保持された前記ステータスワードを前記外部端末へ応答するステップと、
を含むことを特徴とするステータスワード出力方法。
【請求項５】
コマンドの処理中の複数の異なるエラーの内容ごとに、コマンドがサポートされていることを示す正規のステータスワードと、コマンドがサポートされていないことを示す非正規のステータスワードとの何れか一方を予め保持するリストを記憶する記憶手段を備えるＩＣカードに含まれるコンピュータを、
外部端末からコマンドを受信する受信手段、及び
前記受信手段により受信されたコマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードであって、前記リストに保持された前記ステータスワードを前記外部端末へ応答する応答手段として機能させることを特徴とするステータスワード出力処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードを外部端末へ応答するＩＣカードの技術分野に関する。
【背景技術】
【０００２】
国際標準規格であるＩＳＯ／ＩＥＣ７８１６が適用されるＩＣカードは、ＡＰＤＵ（Application protocol data unit）と呼ばれるデータ列を有するコマンドを外部機器から受信し、そこに示されている情報を基に、処理するコマンドを切り替える。どのコマンドを実行するかはＡＰＤＵ内の情報を基に切り替えるが、コマンドの処理中にエラーが発生した場合、ＩＣカードは、エラーに応じたステータスワード（ＳＷ）を外部端末へ応答する。このようなステータスワードは、例えば、「ＰＩＮが一致しない」、「有効期限が切れている」、「アクセス権限がない」、「対象のファイルが存在しない」などの異常終了を示すことが可能になっている（例えば特許文献１参照）。このような異常終了を示すステータスワードによって、外部端末は、どのようなエラーが発生したかを認識することができる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−２１６０６８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ところで、異常終了を示すステータスワードは、ＩＣカードに対してランダムアタックを行う不正な攻撃者にも有用な情報として働く場合がある。例えば、攻撃者がＩＣカードへランダムにコマンドを与えた場合において、サポートされている（ＩＮＳが提供されている）コマンドであるとき、正常終了又は異常終了を示す正規のステータスワードが応答されてしまので、当該コマンドが存在する（サポートされている）ことが攻撃者に把握されてしまうという問題がある。この問題を解決するため、コマンドの処理中にエラーが発生した場合、正規のステータスワードを、コマンドがサポートされていない（ＩＮＳが提供されていない）ことを示す非正規のステータスワードに一括で変更して（つまり、ステータスワードを選択的に切り替えて）応答する方法が考えられる。しかしながら、ステータスワードを一括で変更した場合、ＩＣカードの正規の使用者はコマンドの処理中のどの箇所で（どのような理由で）エラーとなったのかを把握することができなくなるという問題が生じる。
【０００５】
そこで、本発明は、上記問題等に鑑みてなされたものであり、コマンドの存在を攻撃者に把握されることなく、正規の使用者にどの箇所でエラーとなったのかを把握させることが可能なＩＣカード、ステータスワード出力方法、及びステータスワード出力処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、請求項１に記載の発明は、コマンドの処理中の複数の異なるエラーの内容ごとに、コマンドがサポートされていることを示す正規のステータスワードと、コマンドがサポートされていないことを示す非正規のステータスワードとの何れか一方を予め保持するリストを記憶する記憶手段と、外部端末からコマンドを受信する受信手段と、前記受信手段により受信されたコマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードであって、前記リストに保持された前記ステータスワードを前記外部端末へ応答する応答手段と、を備えることを特徴とする。
【０００７】
請求項２に記載の発明は、請求項１に記載のＩＣカードにおいて、前記リストは、複数の異なるコマンドごとに、且つ前記エラーの内容ごとに、前記正規のステータスワードと前記非正規のステータスワードとの何れか一方を予め保持することを特徴とする。
【０００８】
請求項３に記載の発明は、請求項１又は２に記載のＩＣカードにおいて、複数の異なるコマンドごと且つ前記エラーの内容ごとの各前記ステータスワードは、前記受信手段により受信されたコマンドが受信された時に一括で切り替えられることを特徴とする。  請求項４に記載の発明は、コマンドの処理中の複数の異なるエラーの内容ごとに、コマンドがサポートされていることを示す正規のステータスワードと、コマンドがサポートされていないことを示す非正規のステータスワードとの何れか一方を予め保持するリストを記憶するステップと、外部端末からコマンドを受信するステップと、前記受信されたコマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードであって、前記リストに保持された前記ステータスワードを前記外部端末へ応答するステップと、を含むことを特徴とする。
【０００９】
請求項５に記載の発明は、コマンドの処理中の複数の異なるエラーの内容ごとに、コマンドがサポートされていることを示す正規のステータスワードと、コマンドがサポートされていないことを示す非正規のステータスワードとの何れか一方を予め保持するリストを記憶する記憶手段を備えるＩＣカードに含まれるコンピュータを、外部端末からコマンドを受信する受信手段、及び前記受信手段により受信されたコマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードであって、前記リストに保持された前記ステータスワードを前記外部端末へ応答する応答手段として機能させることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、コマンドの存在を攻撃者に把握されることなく、正規の使用者にどの箇所でエラーとなったのかを把握させることが可能なＩＣカード、ステータスワード出力方法、及びステータスワード出力処理プログラムを提供する。
【図面の簡単な説明】
【００１１】
【図１】ＩＣカード１の概要構成例を示す図である。
【図２】ＡＰＤＵから構成されるコマンドのフォーマットの一例を示す図である。
【図３】ＳＷリストの内容の一例を示す図である。
【図４】ＣＰＵ１１におけるコマンドの処理を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、図面を参照して本発明の実施形態について詳細に説明する。
【００１３】
先ず、図１を参照して、本実施形態に係るＩＣカードについて説明する。図１は、ＩＣカード１の概要構成例を示す図である。なお、ＩＣカード１は、キャッシュカード、クレージットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等に組み込まれる。
【００１４】
図１に示すように、ＩＣカード１には、ＩＣチップ１ａが搭載されている。ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１１、ＲＡＭ（Random Access Memory）１２、フラッシュメモリ１３、及びＩ／Ｏ回路１４を備えて構成される。なお、フラッシュメモリの代わりにＥＥＰＲＯＭ（Electrically Erasable Programmable Read-Only Memory)であっても構わない。
【００１５】
ＣＰＵ１１は、各種プログラムを実行するコントローラであり、外部端末２からコマンドを受信し、当該受信したコマンドの処理を実行する。ＣＰＵ１１は、本発明における受信手段及び応答手段の一例である。外部端末２は、ＩＣカード１との間で接触または非接触で通信を行うためのリーダーライタを備える。外部端末２の例としてはＡＴＭ、改札機、認証用ゲート等が挙げられる。なお、外部からの攻撃者の外部端末がＩＣカード１の通信相手となる場合もある。Ｉ／Ｏ回路１４は、外部端末２とのインターフェイスを担う。Ｉ／Ｏ回路１４には、例えばＩＳＯ／ＩＥＣ７８１６によって定められたＣ１〜Ｃ８の８個の端子が設けられている。例えば、Ｃ１端子は電源端子、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部端末２とのデータ通信を行う端子である。
【００１６】
なお、外部端末２から受信されるコマンドは、ヘッダとボディを含むＡＰＤＵと呼ばれるデータ列から構成される。図２は、ＡＰＤＵから構成されるコマンドのフォーマットの一例を示す図である。コマンドの構成には、図２（Ａ）〜（Ｄ）に示すように、幾つかのバリエーションがあり、何れの場合も、ヘッダは、ＣＬＡ（命令クラス）、ＩＮＳ（命令コード）、Ｐ１（命令パラメータ１）、及びＰ２（命令パラメータ２）からなる。一方、ボディは、無い場合（図２（Ａ））と、Ｌｅフィールドからなる場合（図２（Ｂ））と、Ｌｃフィールド及びデータ（Ｄａｔａ）フィールドからなる場合（図２（Ｃ））と、Ｌｃフィールド、データフィールド、及びＬｅフィールドからなる場合（図２（Ｄ））とがある。
【００１７】
ＲＡＭ１２は、データを一時的に記憶する揮発性メモリである。ＲＡＭ１２の所定の記憶領域は、通信用バッファとして使用される。通信用バッファに格納されたデータは、Ｉ／Ｏ回路１４を介して外部端末２へ出力されることになる。フラッシュメモリ１３は、プログラム（本発明のステータスワード出力処理プログラムを含む）やデータを格納する不揮発性メモリである。フラッシュメモリ１３（記憶手段の一例）には、複数の異なるコマンドごとに、且つコマンドの処理中の複数の異なるエラーの内容ごとに、コマンドがサポートされていることを示す正規のステータスワードと、コマンドがサポートされていないことを示す非正規のステータスワードとの何れか一方を予め保持するリスト（以下、「ＳＷリスト」という）が記憶される。正規のステータスワードと非正規のステータスワードは、双方とも異常終了を示すステータスワードである。なお、ＳＷリストには、正常終了を示すステータスワードが保持されていてもよい。
【００１８】
図３は、ＳＷリストの内容の一例を示す図である。図３において、sw_set[0]は、正常終了を示すステータスワードであり、全てのコマンドで共通のステータスワード「９０００ｈ」になっている。一方、sw_set[1]〜sw_set[3]は、エラーの内容に対応する異常終了を示すステータスワードであり、コマンドごとに異なる場合もあれば同一である場合もある。
【００１９】
図３に示す「ＳＥＬＥＣＴ ＦＩＬＥ」コマンドの場合、sw_set[1]は、対象のファイルの存在有無チェック処理の結果、対象のファイルが存在しない場合に応答されるステータスワードであり、この例では、正規のステータスワード「６Ａ８２ｈ」になっている。一方、図３に示す「ＶＥＲＩＦＹ」コマンドの場合、sw_set[1]は、有効期限チェック処理の結果、有効期限が切れている場合に応答されるステータスワードであり、この例では、正規のステータスワード「６９８２ｈ」になっている。一方、図３に示す「ＲＥＡＤ ＲＥＣＯＲＤ」コマンドの場合も、sw_set[1]は、対象のファイルの存在有無チェック処理の結果、対象のファイルが存在しない場合に応答されるステータスワードであり、この例では、非正規のステータスワード「６Ｄ００ｈ」になっている。
【００２０】
また、図３に示す「ＳＥＬＥＣＴ ＦＩＬＥ」コマンドの場合、sw_set[2]は、アクセス権限チェック処理の結果、アクセス権限がない場合に応答されるステータスワードであり、この例では、正規のステータスワード「６９８５ｈ」になっている。一方、図３に示す「ＶＥＲＩＦＹ」コマンド及び「ＲＥＡＤ ＲＥＣＯＲＤ」コマンドの場合も、sw_set[2]は、アクセス権限チェック処理の結果、アクセス権限がない場合に応答されるステータスワードであるが、この例では、非正規のステータスワード「６Ｄ００ｈ」になっている。
【００２１】
また、図３に示す「ＳＥＬＥＣＴ ＦＩＬＥ」コマンドの場合、sw_set[3]は、Ｐ１Ｐ２チェック処理の結果、Ｐ１Ｐ２の値が正しくない場合に応答されるステータスワードであり、この例では、正規のステータスワード「６Ａ８６ｈ」になっている。一方、図３に示す「ＶＥＲＩＦＹ」コマンドの場合、sw_set[3]は、ＰＩＮチェック（照合）処理の結果、ＰＩＮが一致しない場合に応答されるステータスワードであり、この例では、非正規のステータスワード「６Ｄ００ｈ」になっている。なお、「ＶＥＲＩＦＹ」コマンドの場合も、sw_set[3]は、Ｐ１Ｐ２チェック処理の結果、Ｐ１Ｐ２の値が正しくない場合に応答されるステータスワードであってもよい。一方、図３に示す「ＲＥＡＤ ＲＥＣＯＲＤ」コマンドの場合も、sw_set[3]は、Ｐ１Ｐ２チェック処理の結果、Ｐ１Ｐ２の値が正しくない場合に応答されるステータスワードであり、この例では、非正規のステータスワード「６Ｄ００ｈ」になっている。
【００２２】
以上のように保持されるステータスワードは、例えば管理者等により決定され、予めＳＷリストに保持される。そして、ＣＰＵ１１は、外部端末２から受信されたコマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードであって、ＳＷリストに保持されたステータスワードを外部端末２へ応答するようになっている。図３の例では、「ＳＥＬＥＣＴ ＦＩＬＥ」コマンドの場合、ＣＰＵ１１は、正常時、エラー時を問わず処理結果に応じたステータスワードを応答する。これは、「ＳＥＬＥＣＴ ＦＩＬＥ」コマンドは、基本的にほぼ全てのＩＣカードへ搭載されているコマンドであるためであり、ランダム攻撃への対抗策を取る必要がないため、常に処理結果に応じたステータスワードが応答される。一方、図３の例では、「ＶＥＲＩＦＹ」コマンドの場合、ＣＰＵ１１は、ＰＩＮチェック処理の結果がＰＩＮが一致しない、またはアクセス権限チェック処理の結果がアクセス権限がないというエラー発生時には、非正規のステータスワード「６Ｄ００ｈ」を応答する。ただし、この場合、ＰＩＮチェック処理及びアクセス権限チェック処理を通過した後の処理では、処理結果に応じたステータスワード（「９０００ｈ」または「６９８２ｈ」）が応答される。一方、図３の例では、「ＲＥＡＤ ＲＥＣＯＲＤ」コマンドの場合、ＣＰＵ１１は、正常終了以外の全てのエラーを固定のステータスワード「６Ｄ００ｈ」で応答する。これは、「ＲＥＡＤ ＲＥＣＯＲＤ」コマンドはコマンドで指定されるデータ形式がある程度決まっているためであり、ランダム攻撃に対する耐性を強くするため、常に固定の非正規のステータスワード「６Ｄ００ｈ」が応答される。
【００２３】
なお、異常終了を示すステータスワードは、ケースによっては、全てのコマンドで共通するように構成してもよい。この場合、例えば図３に示すようにコマンドごとにステータスワードを保持させる必要がない（１レコードで済む）ので、メモリ容量を削減することができる。
【００２４】
次に、図４を参照して、ＣＰＵ１１におけるコマンドの処理について説明する。図４は、ＣＰＵ１１におけるコマンドの処理を示すフローチャートである。なお、図４は、ＰＩＮ照合に利用される「ＶＥＲＩＦＹ」コマンドを例にとった場合を示す。
【００２５】
図４において、ＣＰＵ１１は、コマンドを受信すると、例えば図３に示すＳＷリストから当該コマンドに対応する各ステータスワード（sw_set[x]：x=0,1,2,3）を取得して設定（ＲＡＭ１２の所定領域に設定）する（例１のステップＳ１）。つまり、コマンドに応じて（コマンドが受信された時に）各ステータスワード（sw_set[x]：x=0,1,2,3）が予め一括で切り替えられる。また、別の例として、ＣＰＵ１１は、コマンドを受信すると、当該コマンドに対応する各ステータスワードのポインタのアドレスを取得して設定（ＲＡＭ１２の所定領域に設定）する（例２のステップＳ１’）。この構成によれば、ＳＷリストの値は操作せず、そのリストを保持しているデータのアドレスだけを設定すればよい。
【００２６】
次いで、ＣＰＵ１１は、ＰＩＮチェック（照合）処理を実行し、ＰＩＮが一致するか否かを判定する（ステップＳ２）。そして、ＰＩＮが一致しない場合（エラーが発生した場合）（ステップＳ２：ＮＯ）、ＣＰＵ１１は、当該エラーの内容に対応するステータスワード（例えば、sw_set[3]＝６Ｄ００ｈ）を通信バッファにセットし（ステップＳ３）、外部端末２へ応答（送信）する（ステップＳ９）。
【００２７】
一方、ＰＩＮが一致した場合（ステップＳ２：ＹＥＳ）、ＣＰＵ１１は、アクセス権限チェック処理を実行し、アクセス権限があるか否かを判定する（ステップＳ４）。そして、アクセス権限がない場合（エラーが発生した場合）（ステップＳ４：ＮＯ）、ＣＰＵ１１は、当該エラーの内容に対応するステータスワード（例えば、sw_set[2]＝６Ｄ００ｈ）を通信バッファにセットし（ステップＳ５）、外部端末２へ応答（送信）する（ステップＳ９）。
【００２８】
一方、アクセス権限がある場合（ステップＳ４：ＹＥＳ）、ＣＰＵ１１は、有効期限チェック処理を実行し、有効期限が切れているか否かを判定する（ステップＳ６）。そして、有効期限が切れている場合（エラーが発生した場合）（ステップＳ６：ＹＥＳ）、ＣＰＵ１１は、当該エラーの内容に対応するステータスワード（例えば、sw_set[1]＝６９８２ｈ）を通信バッファにセットし（ステップＳ７）、外部端末２へ応答（送信）する（ステップＳ９）。
【００２９】
一方、有効期限が切れていない場合（ステップＳ６：ＮＯ）、ＣＰＵ１１は、正常終了を示すステータスワード（例えば、sw_set[0]＝９０００ｈ）を通信バッファにセットし（ステップＳ８）、外部端末２へ応答（送信）する（ステップＳ９）。
【００３０】
図３で例示したように、ＰＩＮが一致しない場合は非正規のステータスワード「６Ｄ００ｈ」とする一方、有効期限が切れている場合は正規のステータスワード「６９８２ｈ」とすれば、攻撃者によるランダム攻撃にて適当なコマンドが送信された場合は非正規のステータスワード「６Ｄ００ｈ」が応答される一方、正規の使用者によってＰＩＮの照合が成功しつつＩＣカード１の有効期限が切れてしまっていた場合は正規のステータスワード「６９８２ｈ」が応答される。この場合、正規の使用者である例えば管理者等がＩＣカード１の異常を調査することが容易となるため、利便性の向上を期待できる。
【００３１】
以上説明したように、本実施形態によれば、複数の異なるコマンドごとに、且つコマンドの処理中の複数の異なるエラーの内容ごとに、コマンドがサポートされていることを示す正規のステータスワードと、コマンドがサポートされていないことを示す非正規のステータスワードとの何れか一方を予め保持するＳＷリストをフラッシュメモリ１３に記憶しておき、ＣＰＵ１１は、外部端末２から受信されたコマンドの処理中にエラーが発生した場合、当該エラーの内容に対応するステータスワードであって、ＳＷリストに保持されたステータスワードを外部端末２へ応答するように構成したので、コマンドの存在を攻撃者に把握されることなく、正規の使用者にどの箇所でエラーとなったのかを把握させることできる。また、上記実施形態によれば、ステータスワード（sw_set[x]：x=0,1,2,3）をコマンドごとに保持しておき、コマンドが受信された場合に、当該コマンドに対応するステータスワード（sw_set[x]：x=0,1,2,3）が設定されるので、ステータスワードの応答についての細かい制御が可能になる。
【符号の説明】
【００３２】
１  ＩＣカード
１ａ  ＩＣチップ
１１  ＣＰＵ
１２  ＲＡＭ
１３  フラッシュメモリ
１４  Ｉ／Ｏ回路
【図１】
2014203248.tif 000003
【図２】
2014203248.tif 000004
【図３】
2014203248.tif 000005
【図４】
2014203248.tif 000006