(57)【要約】【課題】本発明は、運用中にサポートされているＳＣＰ等の暗号化プロトコルを変更することを可能にし、危殆化した暗号アルゴリズムに基づく暗号化プロトコルの使用を防ぐことが可能な電子情報記憶媒体、ＩＣカード、サポート情報更新方法、及びサポート情報更新プログラムを提供する。【解決手段】ＩＣカード１は、ＳＣＰがサポート済であるか否かを示すＳＣＰ情報を記憶しておき、複数種類のＳＣＰのうち、サポート済であるＳＣＰを用いて外部機器２との間でセキュアな通信路を形成する。そして、ＩＣカード１は、所定のイベント発生に応じて、ＳＣＰ情報が示す何れかのＳＣＰに対応するサポートの状況を更新する。【選択図】図７
2018061193.tif 000002
【特許請求の範囲】
【請求項１】
外部機器との間でセキュアな通信路を形成するためのプロトコルであって複数種類の前記プロトコルのそれぞれに対応するプログラムを記憶する電子情報記憶媒体であって、
前記プロトコルがサポート済であるか否かを示すサポート情報を記憶するメモリと、
前記複数種類の前記プロトコルのうち、前記サポート済である前記プロトコルを用いて前記外部機器との間でセキュアな通信路を形成する通信制御手段と、
所定のイベント発生に応じて、前記サポート情報を更新する更新手段と、
を備えることを特徴とする電子情報記憶媒体。
【請求項２】
サポート済でない前記プロトコルに対応する前記サポート情報は、前記更新手段により前記サポート済への変更が許容されるサポート可能と、前記更新手段による前記サポート済への変更が禁止されるサポート禁止とのうち何れか一方を示すことを特徴とする請求項１に記載の電子情報記憶媒体。
【請求項３】
前記更新手段は、前記サポート情報を更新させるコマンドが受信されたことに応じて、前記サポート情報を更新することを特徴とする請求項１または２に記載の電子情報記憶媒体。
【請求項４】
前記電子情報記憶媒体は、前記電子情報記憶媒体における異常を検知する検知手段を更に備え、
前記更新手段は、前記検知手段により異常が検知されたことに応じて、前記サポート情報を更新することを特徴とする請求項１または２に記載の電子情報記憶媒体。
【請求項５】
前記電子情報記憶媒体は、前記電子情報記憶媒体に対する外部からの攻撃を検知する検知手段を更に備え、
前記更新手段は、前記検知手段により検知された回数が閾値を超えたことに応じて、前記サポート情報を更新することを特徴とする請求項１または２に記載の電子情報記憶媒体。
【請求項６】
前記電子情報記憶媒体は、前記電子情報記憶媒体にインストールされたアプリケーションを管理するセキュリティドメインを複数備え、
前記サポート情報は、前記セキュリティドメイン毎に管理され、
それぞれの前記セキュリティドメインは、前記通信制御手段と前記更新手段を備えることを特徴とする請求項１乃至５の何れか一項に記載の電子情報記憶媒体。
【請求項７】
複数の前記セキュリティドメイン間で階層構造が形成されており、
何れか１の前記セキュリティドメインは、前記サポート情報の更新に連動して、当該１の前記セキュリティドメインの配下に位置する他の前記セキュリティドメインにより管理される前記サポート情報を更新することを特徴とする請求項６に記載の電子情報記憶媒体。
【請求項８】
前記何れか１の前記セキュリティドメインは、前記配下に位置する他の前記セキュリティドメインにより管理される前記サポート情報を更新するか否かを示す設定情報にしたがって、前記配下に位置する他の前記セキュリティドメインにより管理される前記サポート情報を更新することを特徴とする請求項７に記載の電子情報記憶媒体。
【請求項９】
外部機器との間でセキュアな通信路を形成するためのプロトコルであって複数種類の前記プロトコルのそれぞれに対応するプログラムを記憶するＩＣカードであって、
前記プロトコルがサポート済であるか否かを示すサポート情報を記憶するメモリと、
前記複数種類の前記プロトコルのうち、前記サポート済である前記プロトコルを用いて前記外部機器との間でセキュアな通信路を形成する通信制御手段と、
所定のイベント発生に応じて、前記サポート情報を更新する更新手段と、
を備えることを特徴とするＩＣカード。
【請求項１０】
外部機器との間でセキュアな通信路を形成するためのプロトコルであって複数種類の前記プロトコルのそれぞれに対応するプログラムを記憶する電子情報記憶媒体が備えるプロセッサにより実行されるサポート情報更新方法であって、
前記プロトコルがサポート済であるか否かを示すサポート情報を記憶するステップと、
前記複数種類の前記プロトコルのうち、前記サポート済である前記プロトコルを用いて前記外部機器との間でセキュアな通信路を形成するステップと、
所定のイベント発生に応じて、前記サポート情報を更新するステップと、
を含むことを特徴とするサポート情報更新方法。
【請求項１１】
外部機器との間でセキュアな通信路を形成するためのプロトコルであって複数種類の前記プロトコルのそれぞれに対応するプログラム、及び前記プロトコルがサポート済であるか否かを示すサポート情報を記憶する電子情報記憶媒体が備えるプロセッサに、
前記複数種類の前記プロトコルのうち、前記サポート済である前記プロトコルを用いて前記外部機器との間でセキュアな通信路を形成するステップと、
所定のイベント発生に応じて、前記サポート情報を更新するステップと、
を実行させることを特徴とするサポート情報更新プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
複数のアプリケーションを搭載するＩＣカード等の技術分野に関する。
【背景技術】
【０００２】
複数のアプリケーションを搭載するUIM（User Identity Module）等のＩＣ（Integrated Circuit）カードでは、Java（登録商標）Card仕様及びGlobalPlatform（登録商標）仕様に準拠した製品が事実上のデファクトスタンダードになっている。ここで、アプリケーションは、アプリケーションインスタンスを指す。アプリケーションインスタンスとは、アプリケーションプログラム等をメモリに展開して実行可能な状態にインストールされたモジュールをいう。なお、アプリケーションは、アプリケーションプログラムを指す場合もある。特許文献１には、複数のアプリケーションを切り替えて使用可能なＩＣカードの技術が開示されている。
【０００３】
ところで、上述したＩＣカード内には、当該ＩＣカード自身及びＩＣカード内のアプリケーションを管理するためのセキュリティドメイン（Security Domain、以下、「SD」という）が、必ず１つ以上存在する。ＳＤには、ＩＳＤ（Issuer Security Domain）とＳＳＤ（Supplementary Security Domains）とがある。このようなＳＤは、主に、以下の(1)〜(9)の機能をサポートする。
【０００４】
(1)ＩＣカードのライフサイクル管理
(2)アプリケーションプログラムのライフサイクル管理
(3)アプリケーションインスタンスのライフサイクル管理
(4)アプリケーションプログラムのロード
(5)アプリケーションインスタンスの生成（インストール）
(6)アプリケーションプログラムまたはアプリケーションインスタンスの削除
(7)アプリケーション向け発行データの書き込み
(8)データの読出し
(9)セキュアチャネルプロトコル（SecureChannel Protocol、以下、「ＳＣＰ」という)に従ったセキュアな通信路の確保
【０００５】
ＩＳＤは、上記(1)〜(9)の機能をサポートすることで、ＩＣカード内のカードコンテント（アプリケーションプログラム、アプリケーションインスタンス等）に対して、ＩＣカードの発行者の管理及びセキュリティポリシーを実現する。一方、ＳＳＤは、上記(1)〜(9)の機能をサポートすることで、ＩＣカード内のカードコンテントに対して、ＩＣカード上でサービスを提供する第三者の管理及びセキュリティポリシーを実現する。ここで、ＩＣカード上でサービスを提供する第三者とは、ＩＣカードの発行者及びＩＣカードの保持者（ＩＣカードの発行対象である利用者）以外の立場としての者をいう。また、上記(9)の機能において、ＳＣＰは、ＩＣカード内のＳＤとＩＣカード外部エンティティ間の通信路に対して、コマンドデータの機密性、コマンドの完全性（及びコマンドシークエンスの保証）、コマンドデータ（平文）内のセンシティブデータ（例えば、鍵やPINコード）のさらなる機密性を提供する。GlobalPlatform（登録商標）仕様では、上記(1)〜(7)の機能を実行する場合は、ＳＣＰ上で実行することが必須とされている。
【０００６】
これまでは、主に、SCP01またはSCP02（特にUIMの世界ではSCP02）が使用されてきた経緯がある。しかし、これらのＳＣＰは、Triple DES(2 Keys)を使い、機密性、完全性を提供していたが、近年、DES（Data Encryption Standard）アルゴリズムの危殆化に備え、AES（Advanced Encryption Standard）鍵を用いた新しいSCP03が検討され、GlobalPlatform（登録商標）仕様としてリリースされた。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第４１８４７５１号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
今後、ＩＣカード外部の既存エンティティ（例えば、スマートフォン上のアプリケーションやアプリケーション発行サーバなど）との互換性を確保しながら、AES鍵ベースのSCP03へマイグレーションされると予想される。このように、DESからAESへの過渡期においては、SCP01（またはSCP02）とSCP03をサポートしたＩＣカードが望まれるが、最終的にはAESに対応したSCP03のみのサポートで十分となる。
【０００９】
しかしながら、現状の仕様ではサポートするＳＣＰを変更することができないため、例えば、SCP02とSCP03の両方をサポートしたＩＣカードの製品に対して、運用中にSCP02のサポートを停止することができない。そのため、SCP02とSCP03の両方をサポートしたＩＣカードの製品については、セキュリティ強度が低いアルゴリズムが使われ続ける可能性がある。
【００１０】
そこで、本発明は、このような点に鑑みてなされたものであり、運用中にサポートされているＳＣＰ等の暗号化プロトコルを変更することを可能にし、危殆化した暗号アルゴリズムに基づく暗号化プロトコルの使用を防ぐことが可能な電子情報記憶媒体、ＩＣカード、サポート情報更新方法、及びサポート情報更新プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、請求項１に記載の発明は、外部機器との間でセキュアな通信路を形成するためのプロトコルであって複数種類の前記プロトコルのそれぞれに対応するプログラムを記憶する電子情報記憶媒体であって、前記プロトコルがサポート済であるか否かを示すサポート情報を記憶するメモリと、前記複数種類の前記プロトコルのうち、前記サポート済である前記プロトコルを用いて前記外部機器との間でセキュアな通信路を形成する通信制御手段と、所定のイベント発生に応じて、前記サポート情報を更新する更新手段と、を備えることを特徴とする。
【００１２】
請求項２に記載の発明は、請求項１に記載の電子情報記憶媒体において、サポート済でない前記プロトコルに対応する前記サポート情報は、前記更新手段により前記サポート済への変更が許容されるサポート可能と、前記更新手段による前記サポート済への変更が禁止されるサポート禁止とのうち何れか一方を示すことを特徴とする。
【００１３】
請求項３に記載の発明は、請求項１または２に記載の電子情報記憶媒体において、前記更新手段は、前記サポート情報を更新させるコマンドが受信されたことに応じて、前記サポート情報を更新することを特徴とする。
【００１４】
請求項４に記載の発明は、請求項１または２に記載の電子情報記憶媒体において、前記電子情報記憶媒体は、前記電子情報記憶媒体における異常を検知する検知手段を更に備え、前記更新手段は、前記検知手段により異常が検知されたことに応じて、前記サポート情報を更新することを特徴とする。
【００１５】
請求項５に記載の発明は、請求項１または２に記載の電子情報記憶媒体において、前記電子情報記憶媒体は、前記電子情報記憶媒体に対する外部からの攻撃を検知する検知手段を更に備え、前記更新手段は、前記検知手段により検知された攻撃の回数が閾値を超えたことに応じて、前記サポート情報を更新することを特徴とする。
【００１６】
請求項６に記載の発明は、請求項１乃至５の何れか一項に記載の電子情報記憶媒体において、前記電子情報記憶媒体は、前記電子情報記憶媒体にインストールされたアプリケーションを管理するセキュリティドメインを複数備え、前記サポート情報は、前記セキュリティドメイン毎に管理され、それぞれの前記セキュリティドメインは、前記通信制御手段と前記更新手段を備えることを特徴とする。
【００１７】
請求項７に記載の発明は、請求項６に記載の電子情報記憶媒体において、複数の前記セキュリティドメイン間で階層構造が形成されており、何れか１の前記セキュリティドメインは、前記サポート情報の更新に連動して、当該１の前記セキュリティドメインの配下に位置する他の前記セキュリティドメインにより管理される前記サポート情報を更新することを特徴とする。
【００１８】
請求項８に記載の発明は、請求項７に記載の電子情報記憶媒体において、前記何れか１の前記セキュリティドメインは、前記配下に位置する他の前記セキュリティドメインにより管理される前記サポート情報を更新するか否かを示す設定情報にしたがって、前記配下に位置する他の前記セキュリティドメインにより管理される前記サポート情報を更新することを特徴とする。
【００１９】
請求項９に記載の発明は、外部機器との間でセキュアな通信路を形成するためのプロトコルであって複数種類の前記プロトコルのそれぞれに対応するプログラムを記憶するＩＣカードであって、前記プロトコルがサポート済であるか否かを示すサポート情報を記憶するメモリと、前記複数種類の前記プロトコルのうち、前記サポート済である前記プロトコルを用いて前記外部機器との間でセキュアな通信路を形成する通信制御手段と、所定のイベント発生に応じて、前記サポート情報を更新する更新手段と、を備えることを特徴とする。
【００２０】
請求項１０に記載の発明は、外部機器との間でセキュアな通信路を形成するためのプロトコルであって複数種類の前記プロトコルのそれぞれに対応するプログラムを記憶する電子情報記憶媒体が備えるプロセッサにより実行されるサポート情報更新方法であって、前記プロトコルがサポート済であるか否かを示すサポート情報を記憶するステップと、前記複数種類の前記プロトコルのうち、前記サポート済である前記プロトコルを用いて前記外部機器との間でセキュアな通信路を形成するステップと、所定のイベント発生に応じて、前記サポート情報を更新するステップと、を含むことを特徴とする。
【００２１】
請求項１１に記載の発明は、外部機器との間でセキュアな通信路を形成するためのプロトコルであって複数種類の前記プロトコルのそれぞれに対応するプログラム、及び前記プロトコルがサポート済であるか否かを示すサポート情報を記憶する電子情報記憶媒体が備えるプロセッサに、前記複数種類の前記プロトコルのうち、前記サポート済である前記プロトコルを用いて前記外部機器との間でセキュアな通信路を形成するステップと、所定のイベント発生に応じて、前記サポート情報を更新するステップと、を実行させることを特徴とする。
【発明の効果】
【００２２】
本発明によれば、運用中にサポートされているプロトコルを変更することを可能にし、危殆化した暗号アルゴリズムに基づくプロトコルの使用を防ぐことができる。
【図面の簡単な説明】
【００２３】
【図１】（Ａ）は、ＩＣカード１に搭載されるＩＣチップ１ａのハードウェア構成例を示す図であり、（Ｂ）は、ＩＣカード１の機能構成例を示す図である。
【図２】ＳＤにより管理される論理的な鍵空間の一例を示す図である。
【図３】（Ａ）は、ＩＳＤにより管理されるＳＣＰ情報の一例を示す図であり、（Ｂ）は、ＳＳＤ-1により管理されるＳＣＰ情報の一例を示す図であり、（Ｃ）は、ＳＳＤ-2により管理されるＳＣＰ情報の一例を示す図である。
【図４】複数のＳＤ及び複数のApplication間で形成される階層構造の一例を示す図である。
【図５】（Ａ）は、インストール処理の初期段階におけるＳＣＰ情報の一例を示す図であり、（Ｂ）は、インストール処理の途中段階におけるＳＣＰ情報の一例を示す図であり、（Ｃ）は、実施例１及び実施例２におけるＳＣＰ情報の更新処理により、（Ｂ）に示す状態から更新されたＳＣＰ情報の一例を示す図であり、（Ｄ）は、実施例３におけるＳＣＰ情報の更新処理により、（Ｃ）に示す状態から更新されたＳＣＰ情報の一例を示す図であり、（Ｅ）は、実施例４におけるＳＣＰ情報の更新処理により、（Ｄ）に示す状態から更新されたＳＣＰ情報の一例を示す図である。
【図６】実施例１において、ＳＣＰ情報を更新するためのTLVデータを示す図である。
【図７】実施例１において、ＳＤがコマンドを受信した場合におけるＳＣＰ情報の更新処理の一例を示すフローチャートである。
【図８】実施例２において、ＳＤがコマンドを受信した場合におけるＳＣＰ情報の更新処理の一例を示すフローチャートである。
【図９】実施例３において、ＳＤの各種設定情報を格納するSecurity Domain Dataの構成例である。
【図１０】実施例３において、ＳＤがコマンドを受信した場合におけるＳＣＰ情報の更新処理の一例を示すフローチャートである。
【図１１】実施例４において、ＩＣチップ１ａ内の異常が検知された場合におけるＳＣＰ情報の更新処理の一例を示すフローチャートである。
【図１２】実施例５において、ＳＤ及び複数のApplication間で形成される階層構造（ＳＳＤが２階層となる場合）の一例を示す図である。
【図１３】図８に示すステップＳ１８の直後に複数階層構造の連動更新処理を追加したフローチャートを示す図である。
【発明を実施するための形態】
【００２４】
以下、図面を参照して本発明の実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣチップを搭載するＩＣカードに対して本発明を適用した場合の実施の形態である。
【００２５】
［１．ＩＣチップ１ａの構成及び機能概要］
先ず、図１（Ａ）を参照して、本実施形態に係るＩＣカード１に搭載されるＩＣチップ１ａの構成及び機能概要について説明する。図１（Ａ）は、ＩＣカード１に搭載されるＩＣチップ１ａのハードウェア構成例を示す図である。ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等の通信機器に組み込まれる。或いは、ＩＣチップ１ａが通信機器の回路基板上に直接組み込まれて構成されるようにしてもよい。なお、ＩＣチップ１ａは、本発明の電子情報記憶媒体の一例である。
【００２６】
図１（Ａ）に示すように、ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１０、ＲＡＭ（Random Access Memory）１１、ＲＯＭ（Read Only Memory）１２、不揮発性メモリ１３、及びＩ／Ｏ回路１４を備えて構成される。ＣＰＵ１０は、ＲＯＭ１２または不揮発性メモリ１３に記憶された各種プログラムを実行するプロセッサ（コンピュータ）である。なお、Ｉ／Ｏ回路１４は、外部機器２とのインターフェイスを担う。これにより、ＩＣチップ１ａは、ＩＣリーダ・ライタを備える外部機器２との間で接触または非接触で通信を行うことができる。接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、Ｃ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子（ＩＣチップ１ａへ電源供給する端子）、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部機器２との間で通信を行うための端子である。一方、非接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部機器２の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣチップ１ａが通信機器に組み込まれる場合、外部機器２には通信機器の機能を担う制御部が該当する。
【００２７】
不揮発性メモリ１３には、例えばフラッシュメモリが適用される。不揮発性メモリ１３に記憶される各種プログラム及びデータの一部は、ＲＯＭ１２に記憶されてもよい。なお、不揮発性メモリ１３は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。本実施形態において、ＲＯＭ１２と不揮発性メモリ１３との何れかに記憶されるプログラムには、オペレーティングシステム（Operating System、以下、「ＯＳ」という）、本発明のサポート情報更新プログラム、複数（つまり、複数種類）のアプリケーションプログラム、及び複数のＳＤプログラム（複数種類のＳＤ（例えば、ＩＳＤ、ＳＳＤ）のそれぞれに対応するＳＤプログラム）、及び複数のＳＣＰプログラム（複数種類のＳＣＰ（例えば、SCP02、SCP03）のそれぞれに対応するＳＣＰプログラム）等が含まれる。なお、本発明のサポート情報更新プログラムは、ＯＳまたはＳＤプログラム内に組み込まれてもよいし、或いは、ＯＳ及びＳＤプログラムとは独立したミドルウェアとしてインストールされてもよい。なお、ＯＳまたはＳＤは、本発明における通信制御手段、及び更新手段を備える。
【００２８】
ここで、アプリケーションプログラムは、ＩＣカード１においてアプリケーションインスタンス（以下、「Application」という）の機能（言い換えれば、モジュール）を実現するためのプログラムである。これにより、ＣＰＵ１０は、Applicationとして機能する。ＳＤプログラムは、ＩＣカード１においてＳＤの機能を実現するためのプログラムである。これにより、ＣＰＵ１０は、Application等を管理するＳＤとして機能する。ＳＣＰプログラムは、ＩＣカード１においてＳＣＰの機能を実現するためのプログラムである。ＳＣＰは、ＩＣカード１と外部機器２（ホスト）との間でセキュアな通信路を形成するための（言い換えれば、暗号通信をするための）暗号化手順（例えば、鍵の生成方法や暗号化の方法などの手順）を定めた暗号化プロトコルの一例である。このような通信路を形成するために、ＩＣカード１と外部機器２（ホスト）とは、ＳＣＰで決められたアルゴリズムに従い、暗号演算の元となる鍵を互いが知っているという前提の下、ＳＣＰに従った通信（以下、「ＳＣＰ通信」という）を開設するための相互認証を行うようになっている。ＳＣＰ通信の開設後、ＩＣカード１と外部機器２の間で送受信されるデータ（例えば、コマンド及びレスポンス）は、そのセッションの間、ＳＣＰにより保護される。つまり、ＩＣカード１と外部機器２とは、そのセッションの間、相互認証において生成されたセッションキーを用いて、ＭＡＣと呼ばれるチェックコードを生成、及び検証することでデータを保護する。
【００２９】
図１（Ｂ）は、ＩＣカード１の機能構成例を示す図である。図１（Ｂ）の例では、ＩＣカード１のＯＳ上で、ＩＳＤ、ＳＳＤ-1、ＳＳＤ-2、Application-1（複数のファイル（MF,DF,EF)を階層構造で管理するFile Systemを持つ）、Application-2（File Systemを持たない）、及びApplication-3（File Systemを持たない）が実現されている。つまり、図１（Ｂ）の例では、ＩＣカード１は、当該ＩＣカード１にインストールされた各Applicationを管理するＳＤを複数備えることになる。図１（Ｂ）において、ＳＣＰ通信のＩＣカード１におけるエンドポイントは、ＩＳＤ、ＳＳＤ-1、及びＳＳＤ-2のそれぞれとなる。よって、ＳＣＰで用いられる鍵はＳＤ毎に管理される。各ＳＤは、例えば、論理的な鍵空間を鍵ストレージで管理する。鍵ストレージは、例えば不揮発性メモリ１３におけるセキュアな記憶領域に設けられる。図２は、ＳＤにより管理される論理的な鍵空間の一例を示す図である。各ＳＤは、独立した鍵空間を持ち、図２に示すように、鍵空間をkey version number(0x01〜0x7F)で管理する。各ＳＤは、key version numberで管理する鍵空間（鍵ストレージ）へ、key ID(0x00〜0x7F)を割り当てた鍵を格納する。そして、各ＳＤは、key version numberとkey IDを参照し、自己が保持する鍵情報（Key1 ,Key2等）を一意に特定する。このような鍵情報には、鍵の値の他に、key type(DES, AES, RSAなど)、及びkey lengthが含まれる。なお、各ＳＤが実際にメモリ上へ確保する鍵空間のサイズについては例えばＩＣカード１の発行前に決められる。
【００３０】
また、各ＳＤがサポートするＳＣＰは、例えば各ＳＤのインストール時に決定される。例えば、ＩＳＤは、SCP02とSCP03とSCP80をサポートし、ＳＳＤ-1は、SCP02のみをサポートするといった状況となる。ここで、SCP80は、セキュアなパケット上にコマンドを格納してＩＣカードへ送信する通信プロトコルである。この他にも、HTTPS上にコマンドを格納してＩＣカードへ送信するSCP81などがある。各ＳＤは、ＳＣＰがサポート済であるか否かを示すＳＣＰ情報（サポート情報の一例）をリスト（言い換えれば、テーブル）形式で管理する。例えば、ＳＣＰ情報は、各ＳＤのインストール時に設定され、ＳＤ毎に管理される。或いは、ＯＳがＳＣＰ情報のデフォルト値を予め保持しており、各ＳＤのインストール時にデフォルト値を参照して各ＳＤに設定してもよい。或いは、ＯＳがＩＣカード１上の全ＳＤ間で共通するＳＣＰ情報を１つ管理してもよい。なお、ＳＣＰ情報は、例えば不揮発性メモリ１３に記憶される。図３（Ａ）は、ＩＳＤにより管理されるＳＣＰ情報の一例を示す図であり、図３（Ｂ）は、ＳＳＤ-1により管理されるＳＣＰ情報の一例を示す図であり、図３（Ｃ）は、ＳＳＤ-2により管理されるＳＣＰ情報の一例を示す図である。このようなＳＣＰ情報は、ＳＣＰ種別毎（ＳＣＰ毎）のサポートの状況（言い換えれば、使用状況）を含む。図３（Ａ）〜（Ｃ）の例では、サポートの状況として、サポート済“81h”、サポート可能“80h”、またはサポート禁止“82h”が、各ＳＣＰ種別に対応付けられている。ＳＣＰ種別は、例えば、SCP識別情報（例えば、SCP02，SCP03などを示す）と、SCPオプションとで表される。SCPオプションは、一例として、認証コード生成に使う乱数は「真正乱数」であるか、または「擬似乱数」であるかを示す。例えば、図３（Ａ）に示すＳＣＰ種別“0255h”は、SCP識別情報“02h”（１バイト）とオプション“55h” （１バイト）との計２バイトからなる。なお、SCP識別情報“02h”は、SCP02を示し、オプション“55h”は、鍵３本使用、擬似乱数、及びコマンドによる明示的なセキュアチャネル開始などを示す。
【００３１】
また、サポート済は、該当するＳＣＰがサポートされている状況にあることを示す。ＯＳまたは各ＳＤは、通信制御手段として、複数種類のＳＣＰのうちサポート済であるＳＣＰを用いて外部機器２との間でセキュアな通信路を形成することになる。図３（Ａ）の例では、ＩＳＤは、複数種類のＳＣＰのうちサポート済であるSCP02、SCP03、またはSCP80を用いて外部機器２との間でセキュアな通信路を形成することができる。一方、サポート可能は、該当するＳＣＰがサポートされている状況にはない（つまり、設定上は未サポートであり、当該ＳＣＰを使用できない）が、サポート済への変更が許容される状況にあることを示す。つまり、サポート可能は、例えばセキュリティが担保できるのであれば、サポート済への変更が許容されることを示す。一方、サポート禁止は、該当するＳＣＰがサポートされている状況にはなく、且つサポート済への変更が禁止されている（つまり、サポート済への変更を許容しない）状況にあることを示す。このように、図３（Ａ）〜（Ｃ）の例では、サポート済でないＳＣＰに対応するＳＣＰ情報は、サポート可能と、サポート禁止とのうち何れか一方を示す。なお、ＳＣＰ情報の形式は、図３（Ａ）〜（Ｃ）に示す形式でなくてもよい。例えば、ＳＣＰ情報は、サポート済であるＳＣＰのみのリスト（つまり、ホワイトリスト）であってもよいし、サポート禁止であるＳＣＰのみのリスト（つまり、ブラックリスト）であってもよい。
【００３２】
また、ＯＳまたは各ＳＤは、更新手段として、所定のイベント発生に応じて、ＳＣＰ情報を更新（つまり、ＳＣＰ情報が示す何れかのＳＣＰに対応するサポートの状況を更新）する。例えば、ＩＳＤは、所定のイベント発生に応じて、サポート済であるSCP02をサポート禁止へ変更することができる。所定のイベント発生の例として、（i）ＳＣＰ情報を更新させるコマンド（例えば、StoreDataコマンド）の受信、（ii）ＩＣカード１における異常の検知、などが挙げられる。上記（i）のイベント発生に応じた更新は、サポートの状況の明示的な更新である。これは、外部機器２からＯＳまたは各ＳＤに対して上記コマンドを送信することで、該当するＳＣＰに対応するサポートの状況を更新する（例えば、該当するＳＣＰの使用を禁止する）趣旨である。なお、各ＳＤは、様々な情報を内部に保持しており、ＳＤをSelectコマンドで選択した際にレスポンスとして出力されるSD Recognition DataやGetDataコマンドで取得するTLVデータなどが保持される。これらのデータを登録するためコマンドであるStoreDataコマンドが、上記サポートの状況を更新させるコマンドとして利用されるとよい。
【００３３】
一方、上記（ii）のイベント発生に応じた更新は、サポートの状況の暗黙的な更新である。これは、ＩＣチップ１ａ内の異常が検知されることで、該当するＳＣＰに対応するサポートの状況を更新する（例えば、該当するＳＣＰの使用を禁止する）趣旨である。このような異常は、ＩＣカード１に搭載される検知手段により検知される。例えば、ＣＰＵ１０は、異常検知プログラムの実行により検知手段として機能し、ＣＲＣ（Cyclic Redundancy Check）のチェック、不揮発性メモリ１３におけるアクセス先のメモリ領域のアドレスのチェック、或いは、暗号演算結果のチェック等を行うことで異常を検知する。これにより、重要な処理のバイパスやアクセス禁止メモリ領域へのアクセス発生など、ＩＣカード１に対する外部からの攻撃（ＩＣカード１内部の資産（攻撃者にとって価値のあるもの）に対する攻撃）を検知することができる。なお、このように検知された回数（以下、「検知回数」という）は積算されてもよい。この場合、ＯＳまたは各ＳＤは、積算された検知回数が閾値を超えたことに応じて、サポート済であるＳＣＰをサポート禁止へ更新するとよい。例えば、SCP02では検知回数が10を超えた場合にサポート禁止へ変更され、SCP03では検知回数が30を超えた場合にサポート禁止へ変更されるというように、ＳＣＰ毎に異なる閾値が設定されてもよい。
【００３４】
また、複数のＳＤ及び複数のApplicationは互いの間で階層構造を形成する。図４は、複数のＳＤ及び複数のApplication間で形成される階層構造の一例を示す図である。図４の例では、階層構造における最上位に位置するＩＳＤの配下には、ＳＳＤ-1、ＳＳＤ-2、及びApplication-1が位置（存在）するため、ＳＳＤ-1、ＳＳＤ-2、及びApplication-1は、ＩＳＤのセキュリティポリシーが適応される。また、ＳＳＤ-1の配下には、Application-2が位置するため、Application-2は、ＳＳＤ-1のセキュリティポリシーが適応され、さらに、その上位のＩＳＤのセキュリティポリシーも適応される。また、ＳＳＤ-2の配下には、Application-3が位置するため、Application-3は、ＳＳＤ-2のセキュリティポリシーが適応され、さらに、その上位のＩＳＤのセキュリティポリシーも適応される。
【００３５】
そして、このような階層構造における何れか１のＳＤは、自己が管理するＳＣＰ情報の更新（つまり、当該ＳＣＰ情報が示す何れかのＳＣＰに対応するサポートの状況の更新）に連動（言い換えれば、依存）して、当該１のＳＤの配下に位置する（配下にある）他のＳＤにより管理されるＳＣＰ情報を更新（つまり、当該ＳＣＰ情報が示す上記ＳＣＰに対応するサポートの状況を更新、以下、「連動更新」という）するとよい。このような連動更新により、例えば、ＩＳＤのサポート済であるSCP02について、StoreDataコマンドによってサポート禁止へ変更された場合に、その配下に位置するＳＳＤ-1のサポート済であるSCP02（つまり、上位のＳＤのサポート済であるＳＣＰと同一のＳＣＰ）についてもサポート禁止へ変更される。これにより、上位のＳＤのセキュリティポリシーを維持することができる。
【００３６】
なお、例えばＩＳＤは、配下に位置するＳＳＤ-1により管理されるＳＣＰ情報を更新するか否かを示す連動設定フラグ（設定情報の一例）にしたがって、当該配下に位置するＳＳＤ-1により管理されるＳＣＰ情報を連動更新するとよい。連動設定フラグは、言い換えれば、上位のＳＤに依存するか否かを示すフラグである。連動設定フラグがＯＮであれば当該連動更新が行われる一方、連動設定フラグがＯＮでなければ当該連動更新が行われない。例えば、ＳＳＤ-1が上位のＩＳＤのセキュリティポリシーに依存しなくてもよい状況に至った場合、ＳＳＤ-1が管理する連動設定フラグがＯＦＦに設定されるとよい。このような連動設定フラグは、例えば、配下に位置するＳＤ毎に管理される。つまり、この場合、ＳＤポリシーとして、当該ＳＤが設定連動フラグを持つ。なお、連動設定フラグは、ＯＳにより管理されてもよい。この場合、連動設定フラグは、ＩＣカード１上の全ＳＤ間で共通となり、ＩＣカードポリシーとして、ＯＳが設定連動フラグを持つ。
【００３７】
［２．ＩＣチップ１ａにおけるＳＣＰ情報の更新動作］
次に、ＩＣチップ１ａにおけるＳＣＰ情報の更新動作について、実施例１〜５に分けて説明する。実施例１〜５の前提として、ＩＳＤのインストール処理においてＳＣＰ情報がリスト形式で生成される。図５（Ａ）は、インストール処理の初期段階におけるＳＣＰ情報の一例を示す図であり、図５（Ｂ）は、インストール処理の途中段階におけるＳＣＰ情報の一例を示す図である。インストール処理の初期段階では、ＩＳＤのＳＣＰ情報のテーブルが作成され、且つ、ＩＳＤによりサポート可能なＳＣＰ種別が全て抽出され、作成されたテーブルにおいて、図５（Ａ）に示すように、抽出された全てのＳＣＰ種別のサポートの状況がサポート可能“80h”へ初期化される。そして、インストール処理の途中段階では、ＳＤインストールコマンド内のパラメータによって設定されたサポート済であるＳＣＰ種別が参照され、上記作成されたテーブルにおいて、図５（Ｂ）に示すように、当該ＳＣＰ種別（この例では、“0255h”（SCP0255）と、“8000”（SCP8000））のサポートの状況がサポート済“81h”へ変更される。なお、図５（Ｃ）は、実施例１及び実施例２におけるＳＣＰ情報の更新処理により、図５（Ｂ）に示す状態から更新されたＳＣＰ情報の一例を示す図である。また、図５（Ｄ）は、実施例３におけるＳＣＰ情報の更新処理により、図５（Ｃ）に示す状態から更新されたＳＣＰ情報の一例を示す図である。また、図５（Ｅ）は、実施例４におけるＳＣＰ情報の更新処理により、図５（Ｄ）に示す状態から更新されたＳＣＰ情報の一例を示す図である。なお、このようなＳＣＰ情報は、ApplicationのDeleteコマンドが受信されたときに、当該Applicationと共に削除されてもよい。
【００３８】
（実施例１）
実施例１は、ＯＳが設定連動フラグを持ち、新たに定義したTLVデータ（独自のTLVデータ）を用いてＳＣＰ情報を更新する例である。TLVデータとは、T(Tag),L(Length),V(Value)の構造を持つデータである。図６は、実施例１において、ＳＣＰ情報を更新するためのTLVデータの一例を示す図である。図６に示すTLVデータは、いわゆる構造化TLVであり、VのデータについてもTLVの構造を持つ。図６に示すTLVデータにおいて、Tの値である“FF40h”は、ＳＣＰ情報のタグ値である。また、Vの値である“81020255FF410182h”は、更新対象となるＳＣＰ種別を指定するためのTLVデータaと、更新後のサポートの状況を指定するためのTLVデータbとから構成される。TLVデータaにおいて、Tの値である“81h”は、ＳＣＰ種別のタグ値であり、Vの値である“0255h”は、ＳＣＰ種別の内容を示す。また、TLVデータbにおいて、Tの値である“FF41h”は、サポートの状況のタグ値であり、Vの値である“82h”は、サポート禁止を示す。実施例１では、任意のタイミングで外部機器２から送信されるStoreDataコマンド中に、図６に示すTLVデータを組み込むことで、SCP0255に対応するサポートの状況をサポート禁止“82h”へ遷移させることができる。
【００３９】
図７は、実施例１において、ＳＤがコマンドを受信した場合におけるＳＣＰ情報の更新処理の一例を示すフローチャートである。以下、ＩＳＤがコマンドを受信した場合を例にとって説明する。ＩＳＤは、外部機器２からＩ／Ｏ回路１４を介してコマンドを受信すると、図７に示す処理を開始し、受信したコマンドが、StoreDataコマンドであるか否かを判定する（ステップＳ１）。このコマンドは、例えば、ＣＬＡ（クラスバイト）、ＩＮＳ（インストラクションバイト）、Ｐ１及びＰ２（パラメータフィールド）を含むヘッダと、Ｌｃフィールド、データフィールド、及びＬｅフィールドを含むボディとから構成される。なお、当該コマンドがStoreDataコマンドであるか否かは、当該受信されたコマンド中のＣＬＡ及びＩＮＳから判別される。ＩＳＤは、受信したコマンドがStoreDataコマンドでないと判定した場合（ステップＳ１：ＮＯ）、処理をステップＳ２へ進める。ステップＳ２では、ＩＳＤは、受信したコマンドに応じた処理を実行する。次いで、ＩＳＤは、当該処理の結果を含むレスポンス（応答）を外部機器２へ送信し（ステップＳ３）、図７に示す処理を終了する。
【００４０】
一方、ＩＳＤは、ステップＳ１において、受信したコマンドがStoreDataコマンドであると判定した場合（ステップＳ１：ＹＥＳ）、処理をステップＳ４へ進める。ステップＳ４では、ＩＳＤは、受信したStoreDataコマンドのデータフィールドにタグ値“FF40h”が含まれるか否かを判定する。ＩＳＤは、StoreDataコマンドにタグ値“FF40h”が含まれる（つまり、StoreDataコマンドが、ＳＣＰ情報を更新するためのTLVデータを含むコマンドである）と判定した場合（ステップＳ４：ＹＥＳ）、処理をステップＳ５へ進める。一方、ＩＳＤは、StoreDataコマンドにタグ値“FF40h”が含まれないと判定した場合（ステップＳ４：ＮＯ）、処理をステップＳ１０へ進める。なお、StoreDataコマンドは、複数のTLVをコーディング可能である。図６の例では、タグ値“FF40h”が１つのみコーディングされたことを前提としたが、もし複数含まれる場合は、同じタグ値“FF40h”の処理が繰り返されることになる。
【００４１】
ステップＳ５では、ＩＳＤは、StoreDataコマンドに含まれるTLVデータに従って、当該ＩＳＤが管理するＳＣＰ情報を更新する。例えば、ＩＳＤは、図６に示すTLVデータaにより特定されるＳＣＰ種別（SCP0255）に対応する現在のサポートの状況（不揮発性メモリ１３に記憶）を、図６に示すTLVデータbにより特定されるサポート禁止へ変更（つまり、不揮発性メモリ１３上で上書き）する。こうして、例えば、図５（Ｃ）に示すように、当該ＳＣＰ種別（“0255h”（SCP0255））のサポートの状況がサポート済“81h”からサポート禁止“82h”へ変更される。
【００４２】
次いで、ＩＳＤは、ＯＳにより管理されている設定連動フラグを取得し、取得した設定連動フラグがＯＮになっているか否かを判定する（ステップＳ６）。ＩＳＤは、設定連動フラグがＯＮになっていると判定した場合（ステップＳ６：ＹＥＳ）、処理をステップＳ７へ進める。一方、ＩＳＤは、設定連動フラグがＯＮになっていないと判定した場合（ステップＳ６：ＮＯ）、処理をステップＳ１０へ進める。なお、ステップＳ５の直後に、配下のＳＤが存在するか否かを判定するステップを加え、配下のＳＤが存在すると判定された場合に限り、処理がステップＳ６へ進む（一方、配下のＳＤが存在しないと判定された場合、処理がステップＳ１０へ進む）ように構成してもよい。
【００４３】
ステップＳ７では、ＩＳＤは、自己の配下に位置するＳＤの１つを選択する。例えば、ＳＳＤ-1が選択される。次いで、ＩＳＤは、ステップＳ７で選択されたＳＤにより管理されるＳＣＰ情報を連動更新する（ステップＳ８）。つまり、ステップＳ５でサポートの状況が更新されたＳＣＰ種別と同一のＳＣＰ種別に対応するサポートの状況がＩＳＤの配下に位置するＳＤにおいても更新される。例えば、ＩＳＤがＯＳへ依頼してＯＳ経由で、ステップＳ７で選択されたＳＤへ更新指令を与えることで当該ＳＣＰ情報を更新させる。なお、ＩＳＤは、ステップＳ７で選択されたＳＤに対して、直接、ＳＣＰ情報の更新指令を与えることで当該ＳＣＰ情報を更新させてもよい。次いで、ＩＳＤは、自己の配下に位置する全てのＳＤを選択したか否かを判定する（ステップＳ９）。ＩＳＤは、自己の配下に位置する全てのＳＤを選択していないと判定した場合（ステップＳ９：ＮＯ）、ステップＳ７に戻り、まだ選択されていないＳＤを選択して、ステップＳ８の処理を行う。一方、ＩＳＤは、自己の配下に位置する全てのＳＤを選択したと判定した場合（ステップＳ９：ＹＥＳ）、処理をステップＳ１０へ進める。ステップＳ１０では、ＩＳＤは、その他のタグ値についての処理を実行する。次いで、ＩＳＤは、上記処理の結果を含むレスポンスを外部機器２へ送信し（ステップＳ３）、図７に示す処理を終了する。
【００４４】
なお、図７に示す処理を行うＳＤ（例えば、ＩＳＤ）の配下に他のＳＤ（例えば、ＳＳＤ）が存在しない場合、または当該ＳＤの配下に他のＳＤが存在するが連動更新を行わないポリシーである（つまり、設定連動フラグを設けない）場合、図７に示すステップＳ６〜Ｓ９の処理は行われない（つまり、処理はステップＳ５からステップＳ１０へ進むことになる）。
【００４５】
以上のように、実施例１によれば、独自のTLVデータを用いてＳＣＰ情報を迅速に更新することができ、なおかつ、ＩＣカードポリシーとして、各ＳＤにより管理されるＳＣＰ情報を統一的に更新することができる。
【００４６】
（実施例２）
実施例２は、何れかのＳＤの配下に位置する各ＳＤが設定連動フラグを持ち、実施例１と同様、図６に示すようなTLVデータを用いてＳＣＰ情報を更新する例である。図８は、実施例２において、ＳＤがコマンドを受信した場合におけるＳＣＰ情報の更新処理の一例を示すフローチャートである。以下、ＩＳＤがコマンドを受信した場合を例にとって説明する。なお、図８に示すステップＳ１１〜Ｓ１５の処理は、図７に示すステップＳ１〜Ｓ５の処理と同様である。
【００４７】
図８に示すステップＳ１６では、ＩＳＤは、自己の配下に位置するＳＤの１つを選択する。次いで、ＩＳＤは、ステップＳ１６で選択されたＳＤにより管理されている設定連動フラグを取得し、取得した設定連動フラグがＯＮになっているか否かを判定する（ステップＳ１７）。ＩＳＤは、設定連動フラグがＯＮになっていると判定した場合（ステップＳ１７：ＹＥＳ）、処理をステップＳ１８へ進める。一方、ＩＳＤは、設定連動フラグがＯＮになっていないと判定した場合（ステップＳ１７：ＮＯ）、処理をステップＳ１９へ進める。なお、ステップＳ１５の直後に、配下のＳＤが存在するか否かを判定するステップを加え、配下のＳＤが存在すると判定された場合に限り、処理がステップＳ１６へ進む（一方、配下のＳＤが存在しないと判定された場合、処理がステップＳ２０へ進む）ように構成してもよい。
【００４８】
ステップＳ１８では、ＩＳＤは、ステップＳ１６で選択されたＳＤにより管理されるＳＣＰ情報を連動更新する。次いで、ＩＳＤは、自己の配下に位置する全てのＳＤを選択したか否かを判定する（ステップＳ１９）。ＩＳＤは、自己の配下に位置する全てのＳＤを選択していないと判定した場合（ステップＳ１９：ＮＯ）、ステップＳ１６に戻り、まだ選択されていないＳＤを選択して、ステップＳ１７の処理を行う。一方、ＩＳＤは、自己の配下に位置する全てのＳＤを選択したと判定した場合（ステップＳ１９：ＹＥＳ）、処理をステップＳ２０へ進める。なお、図８に示すステップＳ２０の処理は、図７に示すステップＳ１０の処理と同様である。また、実施例１と同様、図８に示す処理を行うＳＤ（例えば、ＩＳＤ）の配下に他のＳＤ（例えば、ＳＳＤ）が存在しない場合、または当該ＳＤの配下に他のＳＤが存在するが連動更新を行わないポリシーである場合、図８に示すステップＳ１６〜Ｓ１９の処理は行われない（つまり、処理はステップＳ１５からステップＳ２０へ進むことになる）。
【００４９】
以上のように、実施例２によれば、独自のTLVデータを用いてＳＣＰ情報を迅速に更新することができ、なおかつ、ＳＤポリシーとして、各ＳＤにより管理されるＳＣＰ情報を個別に更新することができる。
【００５０】
（実施例３）
実施例３は、何れかのＳＤの配下に位置する各ＳＤが設定連動フラグを持ち、既存のTLVデータであるSecurity Domain Dataを用いてＳＣＰ情報を更新する例である。図９は、実施例３において、ＳＤの各種設定情報を格納するSecurity Domain Dataの構成例である。Security Domain Dataは、例えばＳＤのインストール時に生成され、不揮発性メモリ１３に記憶される。図９に示すSecurity Domain Dataは、いわゆる構造化TLVである。図９に示すSecurity Domain Dataにおいて、先頭のTの値である“66h”は、Security Domain Dataのタグ値であり、このVのデータ中のTの値である“73h”は、SD Recognition Dataのタグ値である。そして、Security Domain Data には、ＳＤがサポートしているＳＣＰ種別（SCP＆Option）のタグ値“64h”を含むTLVデータが存在する。このTLVデータは、従来、あくまで出力データとして登録されるだけであったが、実施例３では、このTLVデータをＳＣＰ情報の更新のために利用する。すなわち、実施例２では、Security Domain Dataが生成されて記憶された後、任意のタイミングで外部機器２から送信されるStoreDataコマンド中に、図９に示すSecurity Domain Dataを組み込むことで、ＳＣＰに対応するサポートの状況を変更することができる。例えば、図９の（例１）に示すTLVデータ中のVの値には“0310h”が含まれるが、このようなTLVデータにより、SCP0310に対応するサポートの状況をサポート済“81h”とし、これ以外のＳＣＰに対応するサポートの状況（サポート禁止は除く）をサポート可能“80h”へ遷移させることができる。一方、図９の（例２）に示すTLVデータ中のVの値には“0282h”が含まれるが、このようなTLVデータにより、全種別のSCP02に対応するサポートの状況をサポート禁止“82h”へ遷移させることができる。
【００５１】
図１０は、実施例３において、ＳＤがコマンドを受信した場合におけるＳＣＰ情報の更新処理の一例を示すフローチャートである。以下、ＩＳＤがコマンドを受信した場合を例にとって説明する。なお、図１０に示すステップＳ２１〜Ｓ２３の処理は、図７に示すステップＳ１〜Ｓ３の処理と同様である。
【００５２】
図１０に示すステップＳ２４では、ＩＳＤは、受信したStoreDataコマンドのデータフィールドにタグ値“66h”（つまり、Security Domain Data）が含まれるか否かを判定する。ＩＳＤは、StoreDataコマンドにタグ値“66h”が含まれると判定した場合（ステップＳ２４：ＹＥＳ）、処理をステップＳ２５へ進める。一方、ＩＳＤは、StoreDataコマンドにタグ値“66h”が含まれないと判定した場合（ステップＳ２４：ＮＯ）、処理をステップＳ３２へ進める。なお、StoreDataコマンドは、複数のTLVをコーディング可能である。
【００５３】
ステップＳ２５では、ＩＳＤは、受信したStoreDataコマンドのデータフィールドにタグ値“73h”（つまり、SD Recognition Data）が含まれるか否かを判定する。ＩＳＤは、StoreDataコマンドにタグ値“73h”が含まれると判定した場合（ステップＳ２５：ＹＥＳ）、処理をステップＳ２６へ進める。一方、ＩＳＤは、StoreDataコマンドにタグ値“73h”が含まれないと判定した場合（ステップＳ２５：ＮＯ）、処理をステップＳ３２へ進める
【００５４】
ステップＳ２６では、ＩＳＤは、受信したStoreDataコマンドのデータフィールドにタグ値“64h”（つまり、ＳＣＰ種別）が含まれるか否かを判定する。ＩＳＤは、StoreDataコマンドにタグ値“64h”が含まれると判定した場合（ステップＳ２６：ＹＥＳ）、処理をステップＳ２７へ進める。一方、ＩＳＤは、StoreDataコマンドにタグ値“64h”が含まれないと判定した場合（ステップＳ２６：ＮＯ）、処理をステップＳ３２へ進める。図９の例では、タグ値“64h”が１つのみコーディングされたことを前提としたが、もし複数含まれる場合は、同じタグ値“64h”の処理が繰り返されることになる。なお、図１０に示すステップＳ２７〜Ｓ３２の処理は、図８に示すステップＳ１５〜Ｓ２０の処理と同様である。例えば、図９の（例１）に示すTLVデータを用いる場合、ステップＳ２７において、図５（Ｄ）に示すように、ＳＣＰ種別（“0310h”（SCP0310））のサポートの状況がサポート可能“80h”からサポート済“81h”へ変更され、且つ、ＳＣＰ種別（“8000”（SCP8000））のサポートの状況がサポート済“81h”からサポート可能“80h”へ変更される。ただし、ＳＣＰ種別（“0255”（SCP0255））のサポートの状況は、既にサポート禁止“82h”へ変更されているため、サポート可能“80h”へは変更されない。
【００５５】
以上のように、実施例３によれば、Security Domain Dataに含まれるＳＣＰ情報以外の設定情報の更新と共に、当該ＳＣＰ情報を効率良く更新することができ、なおかつ、ＳＤポリシーとして、各ＳＤにより管理されるＳＣＰ情報をそれぞれの設定連動フラグにしたがって個別に更新することができる。なお、実施例３においても、実施例１と同様、ＯＳが設定連動フラグを持つように構成してもよく、この場合、図１０に示すステップＳ２７〜Ｓ３２の処理に代えて、図７に示すステップＳ５〜Ｓ１０の処理が行われることになる。
【００５６】
（実施例４）
実施例４は、何れかのＳＤの配下に位置する各ＳＤが設定連動フラグを持ち、ＩＣチップ１ａ内の異常が検知された場合にＳＣＰ情報を更新する例である。図１１は、実施例４において、ＩＣチップ１ａ内の異常が検知された場合におけるＳＣＰ情報の更新処理の一例を示すフローチャートである。以下、ＩＳＤがコマンドを受信した場合を例にとって説明する。ＩＣチップ１ａ内の検知手段により異常（例えば、外部からの攻撃）が検知されると、異常検知を示す情報が階層構造の最上位に位置するＩＳＤへ通知される。ＩＳＤは、異常検知を示す情報が通知されると、図１１に示す処理を開始し、不揮発性メモリ１３に格納された検知回数を積算（つまり、１インクリメント）する（ステップＳ４１）。次いで、ＩＳＤは、自己が管理するＳＣＰ情報から、サポート禁止でないＳＣＰ種別の１つを選択する（ステップＳ４２）。
【００５７】
次いで、ＩＳＤは、ステップＳ４１で積算された検知回数が、ステップＳ４２で選択されたＳＣＰ種別（例えば、SCP0310）に対応する閾値を超えたか否かを判定する（ステップＳ４３）。ＩＳＤは、上記検知回数が上記閾値を超えたと判定した場合（ステップＳ４３：ＹＥＳ）、ステップＳ４２で選択されたＳＣＰ種別に対応するＳＣＰ情報を更新し（ステップＳ４４）、処理をステップＳ４５へ進める。例えば、ＩＳＤは、ＳＣＰ種別（SCP0310）に対応する現在のサポートの状況をサポート禁止へ変更する。こうして、例えば、図５（Ｅ）に示すように、当該ＳＣＰ種別（“0310”（SCP0310））のサポートの状況がサポート済“81h”からサポート禁止“82h”へ変更される。一方、ＩＳＤは、上記検知回数が上記閾値を超えていないと判定した場合（ステップＳ４３：ＮＯ）、処理をステップＳ４５へ進める。
【００５８】
ステップＳ４５では、自己が管理するＳＣＰ情報から、サポート禁止でない全てのＳＣＰ種別を選択したか否かを判定する。ＩＳＤは、サポート禁止でない全てのＳＣＰ種別を選択していないと判定した場合（ステップＳ４５：ＮＯ）、ステップＳ４２に戻り、まだ選択されていないＳＣＰ種別（例えば、SCP8000）を選択して、ステップＳ４３の処理を行う。例えば、上記検知回数が、上記選択されたＳＣＰ種別（例えば、SCP8000）に対応する閾値を超えていないと判定された場合、図５（Ｅ）に示すように、当該ＳＣＰ種別（“8000”（SCP8000））のサポートの状況は変更されない。一方、ＩＳＤは、サポート禁止でない全てのＳＣＰ種別を選択したと判定した場合（ステップＳ４５：ＹＥＳ）、処理をステップＳ４６へ進める。なお、図１１に示すステップＳ４６〜Ｓ４９の処理は、図８に示すステップＳ１６〜Ｓ１９の処理と同様である。
【００５９】
以上のように、実施例４によれば、ＩＣチップ１ａ内の異常の検知回数が閾値以上になったときにＳＣＰ情報を効率良く更新することができ、なおかつ、ＳＤポリシーとして、各ＳＤにより管理されるＳＣＰ情報をそれぞれの設定連動フラグにしたがって個別に更新することができる。なお、実施例４においても、実施例１と同様、ＯＳが設定連動フラグを持つように構成してもよい。
【００６０】
（実施例５）
上記実施例１〜４では、図４に示すように、ＩＳＤの配下にはＳＳＤが１階層のみ存在する場合を想定したが、実施例５では、ＩＳＤの配下にはＳＳＤが２階層、３階層・・・多階層というように、複数階層となる場合を想定する。図１２は、実施例５において、ＳＤ及び複数のApplication間で形成される階層構造（ＳＳＤが２階層となる場合）の一例を示す図である。図１２の例では、ＳＳＤ-1の配下には、ＳＳＤ-4及びApplication-3が位置するため、ＳＳＤ-4及びApplication-3は、ＳＳＤ-1のセキュリティポリシーが適応され、さらに、その上位のＩＳＤのセキュリティポリシーも適応される。また、ＳＳＤ-4の配下には、Application-2が位置するため、Application-2は、ＳＳＤ-4のセキュリティポリシーが適応され、さらに、その上位のＳＳＤ-1のセキュリティポリシーも適応され、さらに、その上位のＩＳＤのセキュリティポリシーも適応される。この例では、ＳＳＤ-1の配下に位置するＳＳＤ-4により管理されるＳＣＰ情報の更新は、当該ＳＳＤ-1により管理されるＳＣＰ情報の更新に連動させることができる。
【００６１】
図１３は、図８に示すステップＳ１８の直後に複数階層構造の連動更新処理を追加したフローチャートを示す図である。図１３に示す連動更新処理（ステップＳ１０１）は、再帰的に呼び出される。例えば、ＩＳＤは、ステップＳ１６で選択されたＳＤＤ-1により管理されている設定連動フラグがＯＮになっていると判定した場合（ステップＳ１７：ＹＥＳ）、当該ＳＳＤ-1により管理されるＳＣＰ情報を連動更新する（ステップＳ１８）。次いで、ＩＳＤは、ステップＳ１０１に示す連動更新処理において、ＳＤＤ-1の配下に位置するＳＤＤ-4により管理されている設定連動フラグがＯＮになっているか否かを判定し、ＯＮになっていると判定した場合、当該ＳＳＤ-4により管理されるＳＣＰ情報を連動更新する。もし、ＳＤＤ-4の配下にも他のＳＳＤが位置する場合、当該他のＳＳＤについても、上記と同様に連動更新処理が行われることになる。一方、ＩＳＤは、ステップＳ１０１に示す連動更新処理において、ＳＤＤ-1の配下に位置するＳＤＤ-4により管理されている設定連動フラグがＯＮになっていないと判定した場合、当該ＳＳＤ-4により管理されるＳＣＰ情報を更新しない。
【００６２】
なお、ステップＳ１６で選択されたＳＤＤ-1により管理されている設定連動フラグがＯＮになっていない場合、当該ＳＤＤ-1のＳＣＰ情報は変更されないため、その配下にあるＳＳＤ-4の設定連動フラグが評価されることなく、当該ＳＳＤ-4のＳＣＰ情報は更新されない。また、図１３に示す連動更新処理（ステップＳ１０１）は、図７に示すステップＳ８の直後、図１０に示すステップＳ３０の直後、または図１１に示すステップＳ４８の直後に追加されてもよい。図７に示すステップＳ８の直後に連動更新処理が追加される場合、ＯＳにより管理されている設定連動フラグがＯＮになっているか否かを判定し、ＯＮになっていると判定した場合、ＳＳＤ-4により管理されるＳＣＰ情報を連動更新することになる。
【００６３】
以上のように、実施例５によれば、ＳＳＤが複数階層となる場合であっても、各ＳＤにより管理されるＳＣＰ情報を効率良く更新することができる。
【００６４】
以上説明したように、ＩＣカード１は、ＳＣＰがサポート済であるか否かを示すＳＣＰ情報を記憶しておき、複数種類のＳＣＰのうち、サポート済であるＳＣＰを用いて外部機器２との間でセキュアな通信路を形成する。そして、ＩＣカード１は、所定のイベント発生に応じて、ＳＣＰ情報が示す何れかのＳＣＰに対応するサポートの状況を更新する。従って、上記実施形態によれば、運用中にサポートされているＳＣＰを変更することを可能にし、危殆化した暗号アルゴリズムに基づくＳＣＰの使用を効果的に防ぐことができる。例えば、DESからAESへの過渡期においては、SCP01かSCP02とSCP03の２種類、またはSCP01かSCP02とSCP03に対してSCP80とSCP81の何れかを加えた３種類もしくはSCP80とSCP81の両方を加えた４種類のＳＣＰをサポートしたＩＣカードが提供された場合に上記実施形態を適用することができる。
【００６５】
なお、上記実施形態においては、本発明の電子情報記憶媒体の一例としてＩＣチップ１ａを例にとって説明したが、本発明は、組込み型のマイクロチップ等に対して適用することもできる。また、上記実施形態においては、外部機器２との間でセキュアな通信路を形成するためのプロトコルとして、暗号化プロトコルを例にとって説明したが、本発明は、暗号化プロトコル以外のプロトコルに対して適用してもよい。
【符号の説明】
【００６６】
１  ＩＣカード
１ａ  ＩＣチップ
２  外部機器
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  不揮発性メモリ
１４  Ｉ／Ｏ回路
【図１】
2018061193.tif 000003
【図２】
2018061193.tif 000004
【図３】
2018061193.tif 000005
【図４】
2018061193.tif 000006
【図５】
2018061193.tif 000007
【図６】
2018061193.tif 000008
【図７】
2018061193.tif 000009
【図８】
2018061193.tif 000010
【図９】
2018061193.tif 000011
【図１０】
2018061193.tif 000012
【図１１】
2018061193.tif 000013
【図１２】
2018061193.tif 000014
【図１３】
2018061193.tif 000015