(57)【要約】【課題】外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーのキーバージョンについて、外部機器側でキーバージョンを明示的に指定しなくても、複数のデフォルトキーバージョンを使い分けることができる電子情報記憶媒体等を提供する。【解決手段】セキュア処理に用いるキーバージョンを示すキーバージョン情報として所定の情報を含むコマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶しておき、所定の情報を含むコマンドを受信した場合に、開設済の通信路に対応する識別情報により識別されるデフォルトキーバージョンのキーを用いてセキュア処理を実行する。【選択図】図３
2018082246.tif 000002
【特許請求の範囲】
【請求項１】
外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備える電子情報記憶媒体であって、
前記メモリは、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶し、
前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする電子情報記憶媒体。
【請求項２】
請求項１に記載の電子情報記憶媒体であって、
前記識別情報は、前記開設済の通信路に対応するロジカルチャネル番号を示す情報であって、
前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記ロジカルチャネル番号に対応するデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする電子情報記憶媒体。
【請求項３】
請求項１に記載の電子情報記憶媒体であって、
前記識別情報は、前記開設済の通信路を使用して前記外部機器と通信を行う前記アプリケーションを識別するアプリケーション情報であって、
前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記アプリケーション情報に対応するデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする電子情報記憶媒体。
【請求項４】
外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備える電子情報記憶媒体によるセキュア処理実行方法であって、
前記メモリは、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶し、
前記実行部が、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行するステップを含むことを特徴とするセキュア処理実行方法。
【請求項５】
外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備え、前記メモリが、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶する電子情報記憶媒体における前記実行部に、
前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行するステップを実行させることを特徴とするセキュア処理実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
複数のアプリケーションを搭載するＩＣカード等の技術分野に関する。
【背景技術】
【０００２】
複数のアプリケーションを搭載するUIM（User Identity Module）等のＩＣ（Integrated Circuit）カードでは、Java（登録商標）Card仕様及びGlobalPlatform（登録商標）仕様に準拠した製品が事実上のデファクトスタンダードになっている。ここで、アプリケーションは、アプリケーションインスタンスを指す。アプリケーションインスタンスとは、アプリケーションプログラム等をメモリに展開して実行可能な状態にインストールされたモジュールをいう。なお、アプリケーションは、アプリケーションプログラムを指す場合もある。特許文献１には、複数のアプリケーションを切り替えて使用可能なＩＣカードの技術が開示されている。
【０００３】
ところで、上述したＩＣカード内には、当該ＩＣカード自身及びＩＣカード内のアプリケーションを管理するためのアプリケーションであるセキュリティドメイン（Security Domain、以下、「ＳＤ」という）が、必ず１つ以上存在する。ＳＤには、ＩＳＤ（Issuer Security Domain）とＳＳＤ（Supplementary Security Domains）がある。このようなＳＤは、主に、以下の(1)〜(9)の機能をサポートする。
【０００４】
(1)ＩＣカードのライフサイクル管理
(2)アプリケーションプログラムのライフサイクル管理
(3)アプリケーションインスタンスのライフサイクル管理
(4)アプリケーションプログラムのロード
(5)アプリケーションインスタンスの生成（インストール）
(6)アプリケーションプログラムまたはアプリケーションインスタンスの削除
(7)アプリケーション向け発行データの書き込み
(8)データの読出し
(9)セキュアチャンネルプロトコル（Secure Channel Protocol、以下、「ＳＣＰ」という)に従ったセキュアな通信路の確保
【０００５】
ＩＳＤは、上記(1)〜(9)の機能をサポートすることで、ＩＣカード内のカードコンテント（アプリケーションプログラム、アプリケーションインスタンス等）に対して、ＩＣカードの発行者の管理及びセキュリティポリシーを実現する。一方、ＳＳＤは、上記(1)〜(9)の機能をサポートすることで、ＩＣカード内のカードコンテントに対して、ＩＣカード上でサービスを提供する第三者の管理及びセキュリティポリシーを実現する。ここで、ＩＣカード上でサービスを提供する第三者とは、ＩＣカードの発行者及びＩＣカードの保持者（ＩＣカードの発行対象である利用者）以外の立場としての者をいう。また、上記(9)の機能において、ＳＣＰは、ＩＣカード内のＳＤとＩＣカード外部エンティティ（外部機器）間の通信路に対して、コマンドデータの機密性、コマンドの完全性（及びコマンドシークエンスの保証）、コマンドデータ（平文）内のセンシティブデータ（例えば、鍵やPINコード）のさらなる機密性を提供する。GlobalPlatform仕様では、上記(1)〜(7)の機能を実行する場合は、ＳＣＰ上で実行することが必須とされている。
【０００６】
ここで、図１を用いてＳＣＰについて説明する。図１ではＩＣカードを「card」と表し、外部機器を「host」と表す。
【０００７】
まず、hostはcardに対してcard内のアプリケーションとの通信路を形成するためにSELECTコマンドを送信する（ステップＳ１）。SELECTコマンドは、通信路の相手先となるアプリケーションを識別するIDであるAIDと、当該アプリケーションとの通信路（ロジカルチャネル）を識別するロジカルチャネル番号を含む。これに対して、cardはコマンドに応じて通信路を形成するための処理を実行し、応答する（ステップＳ２）。これにより、ロジカルチャネル番号で識別される通信路（ロジカルチャネル）が形成され、以降、hostはコマンドに当該ロジカルチャネル番号を含ませることにより、当該ロジカルチャネル番号で識別される通信路を介して、SELECTコマンドで選択したアプリケーションと通信を行うことができる。次いで、hostは、例えば、アプリケーションに関連するデータ（例えば、アプリケーションがポイント管理アプリであれば、ポイントデータ）を取得するためにGET DATAコマンドをCardに送信する（ステップＳ３）。これに対して、cardはコマンドに応じた処理を実行し、応答する（例えば、ポイントデータを送信する）（ステップＳ４）。次いで、hostはcardから取得したデータを参照して、例えば、データを書き換えようとする場合、通信路の機密性を高めるためにそれまでに形成した通信路（ロジカルチャネル）をセキュアな通信路にするセキュア処理（ＳＣＰでコマンドを保護するための相互認証処理）を実行する。
【０００８】
相互認証は、プロトコルで決められたアルゴリズムに従い、暗号演算の元となる鍵（Key ID01, Key ID02, Key ID03の3つの鍵）を互いが知っているという前提の基、hostとcardが互いを認証する行為である。具体的には、hostが相互認証用のコマンドであるINITIALIZE UPDATEコマンド及びEXTERNAL AUTHENTICATEコマンドを送信し、cardがそれぞれのコマンドに応じた処理を実行することにより行われる。
【０００９】
まず、hostはHost challengeと呼ばれる乱数を生成し、Host challengeと、キーバージョンを示す値であるキーバージョン情報（「key version number」という場合がある）を含むINITIALIZE UPDATEコマンドをcardへ送信する（ステップＳ５）。なお、cardとhostは互いに相互認証に使用する３つの鍵からなる鍵の組み合わせを複数のキーバージョン（「key version」という場合がある）分保有している。INITIALIZE UPDATEコマンドに含まれるkey version numberは、互いに保有する複数のkey versionのうち、セキュア処理に使用するkey versionを示している（すなわち、hostがセキュア処理に使用するkey versionを指定する）。
【００１０】
これに対してcardはCard challengeと呼ばれる乱数を生成し、Card challenge と、key version numberで指定されたkey versionの鍵（Key ID01, Key ID02, Key ID03の３つの鍵）を基に、各Key ID対応した３つのセッションキーを生成する。例えば、Key ID01を基にKey ID01のセッションキーを生成する。各セッションキーの用途は各プロトコルに従った用途で使用される（例えば、MAC生成用セッションキー、データ暗号化用セッションキー、鍵暗号化用セッションキーの３つが生成される）。また、cardは、生成したCard challengeと受信したHost challengeを材料に、セッションキーを用いてCard cryptogramと呼ばれる暗号文を演算し、hostにCard challengeとCard cryptogramを送信する（ステップＳ６）。
【００１１】
次に、hostは、Card側と同様にCard challengeとkey version numberで指定したkey versionの鍵（hostが保有する鍵）を基にセッションキーを生成し、Card challengeとHost challengeを材料に、セッションキーを用いてCard cryptogramを生成する。hostは、自身で生成したCard cryptogramとcard側から受信したCard cryptogramを比較し、一致するか確認することによりcardが鍵値を知る正当な相手であることを確認する。hostは、これを確認すると、Card challengeとHost challengeを材料に、セッションキーを用いてHost cryptogramと呼ばれる暗号文を演算し、Host cryptogramを含むEXTERNAL AUTHENTICATEコマンドをCardに送信する（ステップＳ７）。
【００１２】
これに対してcardはhost側と同様にCard challengeとHost challengeを材料に、セッションキーを用いてHost cryptogramを生成し、自身で生成したHost cryptogramとhost側から受信したHost cryptogramを比較し、一致するか確認することにより、hostが鍵値を知る正当な相手であることを確認する。cardは、これを確認すると、相互認証が完了したことをhostに知らせる（ステップＳ８）。
【００１３】
相互認証完了以降は、互いに生成したセッションキーを用いてMAC（Message Authentication Code）と呼ばれるチェックコードを生成・検証することでコマンドを保護する（ステップＳ９〜ステップＳ１２）。
【００１４】
ところで、ＳＤにおいては自身が保有する複数のkey versionの中から１つだけをデフォルトキーバージョン（「デフォルトキー」という場合がある）として設定することができる。相互認証においてデフォルトキーを使用する場合、INITIALIZE UPDATEコマンドにおいてkey version numberを指定する際、「0x00」を指定することが、GlobalPlatformの仕様によって定められている。ＳＤが保有するkey versionは「0x01」〜「0x7F」まで存在し、「0x00」は存在しないが、GlobalPlatform仕様にて定義されるPUT KEYコマンド、STORE DATAコマンドと呼ばれるコマンドにより、key version「0x01」〜「0x7F」の鍵を設定する際に、デフォルトキーを設定することができる。そして、例えば、ＳＤが保有するkey versionの中で、key version number「0x20」のkey versionをデフォルトキーとして設定した場合において、INITIALIZE UPDATEコマンドにおいてkey version number「0x00」が指定されると、key version numberが「0x20」の鍵が使用されることになる。これにより、hostはINITIALIZE UPDATEコマンドの送信時毎に、key version numberを変更しなくても「0x00」を指定することにより同じkey version（デフォルトキー）を使い回すことができ、負荷を軽減することができる。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特許第４１８４７５１号
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、ＳＤが保有するkey versionにおいて、デフォルトキーとして設定可能なkey versionは１つだけである。これは、デフォルトキーを利用する際は、key version numberを明示的に指定せずとも所定の情報（「0x00」）を指定するだけで、暗黙的にkey version numberを一意に特定できるようにするためである。これにより、hostは、デフォルトキーを使用することで、key version numberを変更する負担を軽減することができるが、例えば、アプリケーションに応じて複数のデフォルトキーを使い分けて使用することができず、利便性が低いという問題がある。
【００１７】
そこで、本発明は、このような点に鑑みてなされたものであり、host等の外部機器とアプリケーション間における開設済の通信路（ロジカルチャネル）をセキュアな通信路にするセキュア処理に用いるキーのキーバージョンについて、外部機器側でキーバージョンを明示的に指定しなくても、複数のデフォルトキーバージョンを使い分けることができる電子情報記憶媒体等を提供する。
【課題を解決するための手段】
【００１８】
上記課題を解決するために、請求項１に記載の発明は、外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備える電子情報記憶媒体であって、前記メモリは、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶し、前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする。
【００１９】
請求項２に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記識別情報は、前記開設済の通信路に対応するロジカルチャネル番号を示す情報であって、前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記ロジカルチャネル番号に対応するデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする。
【００２０】
請求項３に記載の発明は、請求項１に記載の電子情報記憶媒体であって、前記識別情報は、前記開設済の通信路を使用して前記外部機器と通信を行う前記アプリケーションを識別するアプリケーション情報であって、前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記アプリケーション情報に対応するデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする。
【００２１】
請求項４に記載の発明は、外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備える電子情報記憶媒体によるセキュア処理実行方法であって、前記メモリは、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶し、前記実行部が、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行するステップを含むことを特徴とする。
【００２２】
請求項５に記載の発明は、外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備え、前記メモリが、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶する電子情報記憶媒体における前記実行部に、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行するステップを実行させることを特徴とする。
【発明の効果】
【００２３】
本発明によれば、複数のデフォルトキーバージョンがこれらを識別する識別情報とともに設定され、キーバージョン情報として所定の情報を含むコマンドを受信した場合に、開設済の通信路に対応する識別情報により識別されるデフォルトキーバージョンのキーを用いてセキュア処理を実行する。したがって、デフォルトキーバージョンの使い分け方に応じて識別情報を設定しておくことにより、コマンドにおいてキーバージョン情報を明示的に指定しなくても、複数のデフォルトキーバージョンを使い分けることができる。
【図面の簡単な説明】
【００２４】
【図１】相互認証処理の一例を示すシーケンス図である。
【図２】（Ａ）は、ＩＣカード１に搭載されるＩＣチップ１ａのハードウェア構成例を示す図であり、（Ｂ）は、ＩＣカード１の機能構成例を示す図である。
【図３】（Ａ）は、ＳＤにより管理される論理的な鍵空間の一例を示す図であり、（Ｂ）は、デフォルトキーテーブルの一例を示す図である。
【図４】複数のＳＤ及び複数のApplication間で形成される階層構造の一例を示す図である。
【図５】コマンド受信時処理の一例を示すフローチャートである。
【図６】第２実施形態におけるデフォルトキーテーブルの一例を示す図である。
【図７】第２実施形態におけるコマンド受信時処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２５】
［１．第１実施形態］
以下、図面を参照して本発明の第１実施形態について詳細に説明する。以下に説明する実施形態は、ＩＣチップを搭載するＩＣカードに対して本発明を適用した場合の実施の形態である。
【００２６】
［１．１．ＩＣチップ１ａの構成及び機能概要］
まず、図２（Ａ）を参照して、本実施形態に係るＩＣカード１に搭載されるＩＣチップ１ａの構成及び機能概要について説明する。図２（Ａ）は、ＩＣカード１に搭載されるＩＣチップ１ａのハードウェア構成例を示す図である。ＩＣカード１は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ＩＣカード１は、スマートフォンや携帯電話機等の通信機器に組み込まれる。或いは、ＩＣチップ１ａが通信機器の回路基板上に直接組み込まれて構成されるようにしてもよい。なお、ＩＣチップ１ａは、本発明の電子情報記憶媒体の一例である。
【００２７】
図２（Ａ）に示すように、ＩＣチップ１ａは、ＣＰＵ（Central Processing Unit）１０、ＲＡＭ（Random Access Memory）１１、ＲＯＭ（Read Only Memory）１２、不揮発性メモリ１３、及びＩ／Ｏ回路１４を備えて構成される。ＣＰＵ１０は、ＲＯＭ１２または不揮発性メモリ１３に記憶された各種プログラムを実行するプロセッサ（コンピュータ）である。なお、Ｉ／Ｏ回路１４は、外部機器２とのインターフェイスを担う。これにより、ＩＣチップ１ａは、ＩＣリーダ・ライタを備える外部機器２との間で接触または非接触で通信を行うことができる。接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、Ｃ１〜Ｃ８の８個の端子が備えられている。例えば、Ｃ１端子は電源端子（ＩＣチップ１ａへ電源供給する端子）、Ｃ２端子はリセット端子、Ｃ３端子はクロック端子、Ｃ５端子はグランド端子、Ｃ７端子は外部機器２との間で通信を行うための端子である。一方、非接触式のＩＣチップ１ａの場合、Ｉ／Ｏ回路１４には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部機器２の例としては、ＩＣカード発行機、ＡＴＭ、改札機、認証用ゲート等が挙げられる。或いは、ＩＣチップ１ａが通信機器に組み込まれる場合、外部機器２には通信機器の機能を担う制御部が該当する。
【００２８】
不揮発性メモリ１３には、例えばフラッシュメモリが適用される。不揮発性メモリ１３に記憶される各種プログラム及びデータの一部は、ＲＯＭ１２に記憶されてもよい。なお、不揮発性メモリ１３は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。本実施形態において、ＲＯＭ１２と不揮発性メモリ１３との何れかに記憶されるプログラムには、オペレーティングシステム（Operating System、以下、「ＯＳ」という）、複数（つまり、複数種類）のアプリケーションプログラム、及び複数のＳＤプログラム（複数種類のＳＤ（例えば、ＩＳＤ、ＳＳＤ）のそれぞれに対応するＳＤプログラム）等が含まれる。
【００２９】
ここで、アプリケーションプログラムは、ＩＣカード１においてアプリケーションインスタンス（以下、「Application」という）の機能（言い換えれば、モジュール）を実現するためのプログラムである。これにより、ＣＰＵ１０は、Applicationとして機能する。ＳＤプログラムは、ＩＣカード１においてＳＤの機能を実現するためのプログラムである。これにより、ＣＰＵ１０は、Application等を管理するＳＤとして機能する。ＳＣＰプログラムは、ＩＣカード１においてＳＣＰの機能を実現するためのプログラムである。ＳＣＰは、ＩＣカード１と外部機器２（ホスト）との間でセキュアな通信路を形成するための通信プロトコルの一例である。このような通信路を形成するために、ＩＣカード１と外部機器２（ホスト）とは、ＳＣＰで決められたアルゴリズムに従い、暗号演算の元となる鍵を互いが知っているという前提の下、ＳＣＰに従った通信路（以下、「ＳＣＰ通信路」という）を開設するための相互認証を行うようになっている。ＳＣＰ通信路の開設後、ＩＣカード１と外部機器２の間で送受信されるデータ（例えば、コマンド）は、そのセッションの間、ＳＣＰにより保護される。つまり、ＩＣカード１と外部機器２とは、そのセッションの間、相互認証において生成されたセッションキーを用いて、ＭＡＣと呼ばれるチェックコードを生成、及び検証することでデータを保護する。
【００３０】
図２（Ｂ）は、ＩＣカード１の機能構成例を示す図である。図２（Ｂ）の例では、ＩＣカード１のＯＳ上で、ＩＳＤ、ＳＳＤ-1、Application-1、Application-2、Application-3、及びApplication-4が実現されている。つまり、図２（Ｂ）の例では、ＩＣカード１は、当該ＩＣカード１にインストールされた各Applicationを管理するＳＤを複数備えることになる。図２（Ｂ）において、ＳＣＰ通信のＩＣカード１におけるエンドポイントは、ＩＳＤ及びＳＳＤ-1のそれぞれとなる。よって、ＳＣＰで用いられる鍵はＳＤ毎に管理される。各ＳＤは、例えば、論理的な鍵空間を鍵ストレージで管理する。鍵ストレージは、例えば不揮発性メモリ１３におけるセキュアな記憶領域に設けられる。
【００３１】
図３（Ａ）は、ＳＤにより管理される論理的な鍵空間の一例を示す図である。各ＳＤは、独立した鍵空間を持ち、図３（Ａ）に示すように、鍵空間を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が含まれる。なお、各ＳＤが実際にメモリ上へ確保する鍵空間のサイズについては例えばＩＣカード１の発行前に決められる。
【００３２】
図３（Ｂ）は、ＳＤにより管理されるデフォルトキーテーブルの一例を示す図である。各ＳＤは、独立したデフォルトキーテーブルを持ち、図３（Ｂ）に示すように、デフォルトキーテーブルはロジカルチャネル番号（01、02）とデフォルトキーバージョンを示すkey version numberを対応付けている。デフォルトキーテーブルは、外部機器２からkey version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した際にＳＤにより参照され、ＳＤは当該コマンドに含まれるロジカルチャネル番号に対応するデフォルトキーバージョンに対応する鍵を選択して、セッションキーの作成に使用する。
【００３３】
このように第１実施形態では、デフォルトキーバージョンに対して、ロジカルチャネルとの紐付けを行い、ロジカルチャネル別にデフォルトキーバージョンが存在することを可能にすることで、複数のデフォルトキーバージョンをロジカルチャネルに応じて使い分けることができる。ＳＤは、鍵を登録する際、PUT KEYコマンド、STORE DATAコマンドと呼ばれるコマンド(GlobalPlatform仕様にて定義)を実行する。当該コマンドを実行する際、既存仕様にて要求される鍵に関する情報(鍵値、鍵長、鍵の暗号アルゴリズム種別(AES/DES/RSAなど)、key version numberなど)に加え、新たに「鍵に紐付けるロジカルチャネル番号」を付与するものとする。
例えば、PUT KEYコマンド実行時に、key version number「0x20」とロジカルチャネル番号「01」を紐付け、key version number「0x30」とロジカルチャネル番号「02」を紐付け、key version number「0x20」及びkey version number「0x30」で示されるキーバージョンをデフォルトキーバージョンとして設定する。この場合、外部機器２は、INITIALIZE UPDATEコマンドをロジカルチャネル番号「01」で識別されるロジカルチャネルを介して送信し、key version numberとして「0x00」を指定すると、暗黙的にロジカルチャネル番号「01」に紐付けられているkey version number「0x20」で示されるキーバージョンの鍵を用いてセッションキーが作成される。
【００３４】
複数のＳＤ及び複数のApplicationは互いの間で階層構造を形成する。図４は、複数のＳＤ及び複数のApplication間で形成される階層構造の一例を示す図である。図４の例では、階層構造における最上位に位置するＩＳＤの配下には、ＳＳＤ-1、Application-1及びApplication-2が位置（存在）するため、ＳＳＤ-1、Application-1及びApplication-2は、ＩＳＤのセキュリティポリシーが適応される。また、ＳＳＤ-1の配下には、Application-3及びApplication-4が位置するため、Application-3及びApplication-4は、ＳＳＤ-1のセキュリティポリシーが適応され、さらに、その上位のＩＳＤのセキュリティポリシーも適応される。
【００３５】
なお、外部機器２とApplication-3との通信路（ロジカルチャネル）についてセキュア処理を実行する場合には、Application-3は独自の鍵ストレージを保有していないので、直ぐ上位のＳＳＤ-1にセキュア処理の一部又は全てを実行してもらう。
【００３６】
［１．２．ＩＣチップ１ａにおけるコマンド受信時処理］
次に、図５を用いて、ＩＣチップ１ａのＳＳＤ-1（SELECTコマンドにより選択されたアプリケーションとしてのＳＳＤ-1）が外部機器２からコマンド（SELECTコマンド以外のコマンド）を受信した際の動作について説明する。
【００３７】
まず、ＳＳＤ-1（を実行するＣＰＵ１０）は、ロジカルチャネルを通じて受信したコマンドがINITIALIZE UPDATEコマンドであるか否かを判定する（ステップＳ１０１）。ＳＳＤ-1は、受信したコマンドがINITIALIZE UPDATEコマンドではないと判定した場合には（ステップＳ１０１：ＮＯ）、受信したコマンドを実行し（ステップＳ１０２）、外部機器２に応答を送信して（ステップＳ１０９）、当該フローチャートに示す処理を終了する。一方、ＳＳＤ-1は、受信したコマンドがINITIALIZE UPDATEコマンドであると判定した場合には（ステップＳ１０１：ＹＥＳ）、INITIALIZE UPDATEコマンドに含まれるkey version numberが「0x00」であるか否かを判定する（ステップＳ１０３）。
【００３８】
ＳＳＤ-1はkey version numberが「0x00」であると判定した場合には（ステップＳ１０３：ＹＥＳ）、自らのデフォルトキーテーブルを参照して、INITIALIZE UPDATEコマンドに含まれるチャネル番号に対応するデフォルトキー（key version number）が存在するか否かを確認する（ステップＳ１０４）。ＳＳＤ-1は、デフォルトキーが存在すると判定した場合には（ステップＳ１０４：ＹＥＳ）、当該デフォルトキーの３つの鍵を用いてコマンド実行（Card challengeと３つの鍵を基に３つのセッションキーを生成し、Card challengeとHost challengeを材料に、セッションキーを用いてCard cryptogramを演算）して（ステップＳ１０５）、次いで、Card challengeとCard cryptogramを含む応答を外部機器２に送信し（ステップＳ１０９）、当該フローチャートに示す処理を終了する。また、ＳＳＤ-1は、デフォルトキー（key version number）が存在しないと判定した場合には（ステップＳ１０４：ＮＯ）、エラー処理（エラー情報の生成等）を実行し（ステップＳ１０６）、外部機器２に応答を送信し（ステップＳ１０９）、当該フローチャートに示す処理を終了する。
【００３９】
一方、ＳＳＤ-1はkey version numberが「0x00」ではないと判定した場合には（ステップＳ１０３：ＮＯ）、自らの論理的な鍵空間を参照して、INITIALIZE UPDATEコマンドに含まれるkey version numberに対応するキーバージョンの鍵が存在するか否かを確認する（ステップＳ１０７）。ＳＳＤ-1は、key version numberに対応するキーバージョンの鍵が存在すると判定した場合には（ステップＳ１０７：ＹＥＳ）、当該key version numberに対応する３つの鍵を用いてコマンド実行（Card challengeと３つの鍵を基に３つのセッションキーを生成し、Card challengeとHost challengeを材料に、セッションキーを用いてCard cryptogramを演算）して（ステップＳ１０８）、次いで、Card challengeとCard cryptogramを含む応答を外部機器２に送信し（ステップＳ１０９）、当該フローチャートに示す処理を終了する。また、ＳＳＤ-1は、key version numberに対応するキーバージョンの鍵が存在しないと判定した場合には（ステップＳ１０７：ＮＯ）、エラー処理（エラー情報の生成等）を実行し（ステップＳ１０６）、外部機器２に応答を送信し（ステップＳ１０９）、当該フローチャートに示す処理を終了する。
【００４０】
以上のように、第１実施形態のＩＣカード１は、ＲＡＭ１１（「メモリ」の一例）が、外部機器２とApplication間における開設済の通信路（ロジカルチャネル）をセキュアな通信路にするセキュア処理に用いる鍵（「キー」の一例）をkey version number（「キーバージョン」）毎に記憶し、ＣＰＵ１０（「実行部」の一例）がセキュア処理に使用する鍵のkey versionを示すkey version number（「キーバージョン情報」の一例）を含むINITIALIZE UPDATEコマンド（「コマンド」の一例）を受信した場合に当該key versionの鍵を用いてセキュア処理を実行する。また、ＲＡＭ１１は、key version numberとして「0x00」（「所定の情報」の一例）を含むINITIALIZE UPDATEコマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するためのロジカルチャネル番号（「識別情報」の一例）と対応付けて記憶し、ＣＰＵ１０は、key version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した場合に、開設済の通信路（ロジカルチャネル）に対応するロジカルチャネル番号により識別されるデフォルトキーバージョンの鍵を用いてセキュア処理を実行する。
【００４１】
したがって、第１実施形態のＩＣカード１によれば、複数のデフォルトキーバージョンがこれらを識別するロジカルチャネル番号とともに設定され、key version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した場合に、開設済の通信路（ロジカルチャネル）に対応するロジカルチャネル番号により識別されるデフォルトキーバージョンの鍵を用いてセキュア処理を実行する。すなわち、デフォルトキーバージョンの使い分け方に応じてロジカルチャネル番号を設定しておくことにより、INITIALIZE UPDATEコマンドにおいてkey version numberを明示的に指定しなくても、複数のデフォルトキーバージョンを使い分けることができる。
【００４２】
［２．第２実施形態］
以下、図面を参照して本発明の第２実施形態について詳細に説明する。なお、第２実施形態は、第１実施形態と一部を除き同様であるので、第１実施形態との相違点を中心に説明する。
【００４３】
［２．１．ＩＣチップ１ａの構成に関する相違点］
まず、第１実施形態では、図３（Ｂ）に示すデフォルトキーテーブルを使用したが、第２実施形態では、図６に示すデフォルトキーテーブルを使用する。本実施形態のデフォルトキーテーブルは、Applicationを識別するAID（Application ID）（01、02）とデフォルトキー（key version number）を対応付ける。デフォルトキーテーブルは、外部機器２からkey version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した際にＳＤにより参照され、ＳＤは当該コマンドの送信先であるApplicationに対応するデフォルトキー（key version number）に対応する鍵を選択する。
【００４４】
このように第２実施形態では、デフォルトキーバージョンに対して、Applicationとの紐付けを行い、Application別にデフォルトキーバージョンが存在することを可能にすることで、複数のデフォルトキーバージョンをApplicationに応じて使い分けることができる。ＳＤは、鍵を登録する際、PUT KEYコマンド、STORE DATAコマンドと呼ばれるコマンド(GlobalPlatform仕様にて定義)を実行する。当該コマンドを実行する際、既存仕様にて要求される鍵に関する情報(鍵値、鍵長、鍵の暗号アルゴリズム種別(AES/DES/RSAなど)、key version numberなど)に加え、新たに「鍵に紐付けるアプリケーションを識別するAID」を付与するものとする。AIDとはアプリケーションを一意に特定する名前を意味するものである。
【００４５】
ＳＤの配下にApplicationが存在する場合、ＳＤとApplicationは管理者と被管理者の関係にあり、ApplicationはＳＤに開設済の通信路についてセキュア処理を依頼することが可能である。例えば、図４の階層構造において、PUT KEYコマンド実行時に、key version number「0x20」とApplication-3のAID「03」を紐付け、key version number「0x30」とApplication-4のAID「04」を紐付け、key version number「0x20」及びkey version number「0x30」で示されるキーバージョンをデフォルトキーバージョンとして設定する。この場合、key version number「0x00」を指定するINITIALIZE UPDATEコマンドをApplication-3が実行し、ＳＳＤ-1にセキュアな通信路の開設を依頼すると、暗黙的にApplication-3に紐付けられているkey version number「0x20」の鍵が使用される。また、key version number「0x00」を指定するINITIALIZE UPDATEコマンドをApplication-4が実行し、ＳＳＤ-1にセキュアな通信路の開設を依頼すると、暗黙的にApplication-4に紐付けられているkey version number「0x30」の鍵が使用されることになる。アプリケーションが、ＳＤにセキュアな通信路の開設を依頼した場合だけでなく、ＳＤが自身でセキュアな通信路を開設する場合も同様に、INITIALIZE UPDATEコマンドをkey version number「0x00」を指定して実行した場合は、ＳＤ自身に紐付けられたデフォルトキーが暗黙的に使用されることになる。
【００４６】
［２．２．ＩＣチップ１ａにおけるコマンド受信時処理］
次に、図７を用いて、第２実施形態におけるＩＣチップ１ａの一のApplication（SELECTコマンドにより選択されたApplication）が外部機器２からコマンド（SELECTコマンド以外のコマンド）を受信した際の動作について説明する。
【００４７】
まず、Application（を実行するＣＰＵ１０）は、ロジカルチャネルを通じて受信したコマンドがINITIALIZE UPDATEコマンドであるか否かを判定する（ステップＳ２０１）。Applicationは、受信したコマンドがINITIALIZE UPDATEコマンドではないと判定した場合には（ステップＳ２０１：ＮＯ）、受信したコマンドを実行し（ステップＳ２０２）、外部機器２に応答を送信して（ステップＳ２０９）、当該フローチャートに示す処理を終了する。一方、Applicationは、受信したコマンドがINITIALIZE UPDATEコマンドであると判定した場合には（ステップＳ２０１：ＹＥＳ）、コマンド実行を直ぐ上位のＳＤに依頼する。そして、ＳＤ（を実行するＣＰＵ１０）は、INITIALIZE UPDATEコマンドに含まれるkey version numberが「0x00」であるか否かを判定する（ステップＳ２０３）。
【００４８】
ＳＤはkey version numberが「0x00」であると判定した場合には（ステップＳ２０３：ＹＥＳ）、自らのデフォルトキーテーブルを参照して、INITIALIZE UPDATEコマンドを受信したApplicationを識別するAIDに対応するデフォルトキー（key version number）が存在するか否かを確認する（ステップＳ２０４）。ＳＤは、デフォルトキー（key version number）が存在すると判定した場合には（ステップＳ２０４：ＹＥＳ）、当該デフォルトキー（key version number）の３つの鍵を用いてコマンド実行（Card challengeと３つの鍵を基に３つのセッションキーを生成し、Card challengeとHost challengeを材料に、セッションキーを用いてCard cryptogramを演算）して（ステップＳ２０５）、次いで、Card challengeとCard cryptogramを含む応答を外部機器２に送信し（ステップＳ２０９）、当該フローチャートに示す処理を終了する。また、ＳＤは、デフォルトキー（key version number）が存在しないと判定した場合には（ステップＳ２０４：ＮＯ）、エラー処理（エラー情報の生成等）を実行し（ステップＳ２０６）、外部機器２に応答を送信し（ステップＳ２０９）、当該フローチャートに示す処理を終了する。
【００４９】
一方、ＳＤはkey version numberが「0x00」ではないと判定した場合には（ステップＳ２０３：ＮＯ）、自らの論理的な鍵空間を参照して、INITIALIZE UPDATEコマンドに含まれるkey version numberに対応するキーバージョンの鍵が存在するか否かを確認する（ステップＳ２０７）。ＳＤは、key version numberに対応するキーバージョンの鍵が存在すると判定した場合には（ステップＳ２０７：ＹＥＳ）、当該key version numberに対応する３つの鍵を用いてコマンド実行（Card challengeと３つの鍵を基に３つのセッションキーを生成し、Card challengeとHost challengeを材料に、セッションキーを用いてCard cryptogramを演算）して（ステップＳ２０８）、次いで、Card challengeとCard cryptogramを含む応答を外部機器２に送信し（ステップＳ２０９）、当該フローチャートに示す処理を終了する。また、ＳＤは、key version numberに対応するキーバージョンの鍵が存在しないと判定した場合には（ステップＳ２０７：ＮＯ）、エラー処理（エラー情報の生成等）を実行し（ステップＳ２０６）、外部機器２に応答を送信し（ステップＳ２０９）、当該フローチャートに示す処理を終了する。
【００５０】
以上のように、第２実施形態のＩＣカード１は、ＲＡＭ１１（「メモリ」の一例）が、外部機器２とApplication間における開設済の通信路（ロジカルチャネル）をセキュアな通信路にするセキュア処理に用いる鍵（「キー」の一例）をkey version number（「キーバージョン」）毎に記憶し、ＣＰＵ１０（「実行部」の一例）がセキュア処理に使用する鍵のkey version numberを示す情報（「キーバージョン情報」の一例）を含むINITIALIZE UPDATEコマンド（「コマンド」の一例）を受信した場合に当該key version numberの鍵を用いてセキュア処理を実行する。また、ＲＡＭ１１は、key version numberとして「0x00」（「所定の情報」の一例）を含むINITIALIZE UPDATEコマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するためのAID（「識別情報」の一例）と対応付けて記憶し、ＣＰＵ１０は、key version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した場合に、開設済の通信路（ロジカルチャネル）に対応するアプリケーションを識別するAIDにより識別されるデフォルトキーバージョンの鍵を用いてセキュア処理を実行する。
【００５１】
したがって、第２実施形態のＩＣカード１によれば、複数のデフォルトキーバージョンがこれらを識別するAIDとともに設定され、key version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した場合に、開設済の通信路（ロジカルチャネル）に対応するアプリケーションのAIDにより識別されるデフォルトキーバージョンの鍵を用いてセキュア処理を実行する。すなわち、デフォルトキーバージョンの使い分け方に応じてAIDを設定しておくことにより、INITIALIZE UPDATEコマンドにおいてkey version numberを明示的に指定しなくても、複数のデフォルトキーバージョンを使い分けることができる。
【符号の説明】
【００５２】
１  ＩＣカード
１ａ  ＩＣチップ
２  外部機器
１０  ＣＰＵ
１１  ＲＡＭ
１２  ＲＯＭ
１３  不揮発性メモリ
１４  Ｉ／Ｏ回路
【図１】
2018082246.tif 000003
【図２】
2018082246.tif 000004
【図３】
2018082246.tif 000005
【図４】
2018082246.tif 000006
【図５】
2018082246.tif 000007
【図６】
2018082246.tif 000008
【図７】
2018082246.tif 000009