特許第6780462号(P6780462)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 大日本印刷株式会社の特許一覧

特許6780462電子情報記憶媒体、セキュア処理実行方法、及びセキュア処理実行プログラム
<>
  • 特許6780462-電子情報記憶媒体、セキュア処理実行方法、及びセキュア処理実行プログラム 図000002
  • 特許6780462-電子情報記憶媒体、セキュア処理実行方法、及びセキュア処理実行プログラム 図000003
  • 特許6780462-電子情報記憶媒体、セキュア処理実行方法、及びセキュア処理実行プログラム 図000004
  • 特許6780462-電子情報記憶媒体、セキュア処理実行方法、及びセキュア処理実行プログラム 図000005
  • 特許6780462-電子情報記憶媒体、セキュア処理実行方法、及びセキュア処理実行プログラム 図000006
  • 特許6780462-電子情報記憶媒体、セキュア処理実行方法、及びセキュア処理実行プログラム 図000007
  • 特許6780462-電子情報記憶媒体、セキュア処理実行方法、及びセキュア処理実行プログラム 図000008
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6780462
(24)【登録日】2020年10月19日
(45)【発行日】2020年11月4日
(54)【発明の名称】電子情報記憶媒体、セキュア処理実行方法、及びセキュア処理実行プログラム
(51)【国際特許分類】
   H04L 9/14 20060101AFI20201026BHJP
   G06F 21/44 20130101ALI20201026BHJP
   G06F 21/60 20130101ALI20201026BHJP
   G06K 19/073 20060101ALI20201026BHJP
   G06K 19/07 20060101ALI20201026BHJP
【FI】
   H04L9/00 641
   G06F21/44 350
   G06F21/60 360
   G06K19/073
   G06K19/07 190
【請求項の数】5
【全頁数】15
(21)【出願番号】特願2016-221726(P2016-221726)
(22)【出願日】2016年11月14日
(65)【公開番号】特開2018-82246(P2018-82246A)
(43)【公開日】2018年5月24日
【審査請求日】2019年9月26日
(73)【特許権者】
【識別番号】000002897
【氏名又は名称】大日本印刷株式会社
(74)【代理人】
【識別番号】110000958
【氏名又は名称】特許業務法人 インテクト国際特許事務所
(74)【代理人】
【識別番号】100120189
【弁理士】
【氏名又は名称】奥 和幸
(72)【発明者】
【氏名】船津 直登
【審査官】 金沢 史明
(56)【参考文献】
【文献】 特表2016−515235(JP,A)
【文献】 国際公開第2016/126332(WO,A1)
【文献】 特開2004−266835(JP,A)
【文献】 特開2006−197059(JP,A)
【文献】 特開平09−134413(JP,A)
【文献】 米国特許出願公開第2012/0036363(US,A1)
【文献】 GlobalPlatform Card Specification,2011年 1月,Version 2.2.1,pp. 59-68, 156-160, 193-208,[2020年9月3日検索],インターネット,URL,https://globalplatform.org/wp-content/uploads/2018/06/GPC_Specification-2.2.1.pdf
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/14
G06F 21/44
G06F 21/60
G06K 19/07
G06K 19/073
(57)【特許請求の範囲】
【請求項1】
外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備える電子情報記憶媒体であって、
前記メモリは、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶し、
前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする電子情報記憶媒体。
【請求項2】
請求項1に記載の電子情報記憶媒体であって、
前記識別情報は、前記開設済の通信路に対応するロジカルチャネル番号を示す情報であって、
前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記ロジカルチャネル番号に対応するデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする電子情報記憶媒体。
【請求項3】
請求項1に記載の電子情報記憶媒体であって、
前記識別情報は、前記開設済の通信路を使用して前記外部機器と通信を行う前記アプリケーションを識別するアプリケーション情報であって、
前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記アプリケーション情報に対応するデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする電子情報記憶媒体。
【請求項4】
外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備える電子情報記憶媒体によるセキュア処理実行方法であって、
前記メモリは、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶し、
前記実行部が、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行するステップを含むことを特徴とするセキュア処理実行方法。
【請求項5】
外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備え、前記メモリが、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶する電子情報記憶媒体における前記実行部に、
前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行するステップを実行させることを特徴とするセキュア処理実行プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
複数のアプリケーションを搭載するICカード等の技術分野に関する。
【背景技術】
【0002】
複数のアプリケーションを搭載するUIM(User Identity Module)等のIC(Integrated Circuit)カードでは、Java(登録商標)Card仕様及びGlobalPlatform(登録商標)仕様に準拠した製品が事実上のデファクトスタンダードになっている。ここで、アプリケーションは、アプリケーションインスタンスを指す。アプリケーションインスタンスとは、アプリケーションプログラム等をメモリに展開して実行可能な状態にインストールされたモジュールをいう。なお、アプリケーションは、アプリケーションプログラムを指す場合もある。特許文献1には、複数のアプリケーションを切り替えて使用可能なICカードの技術が開示されている。
【0003】
ところで、上述したICカード内には、当該ICカード自身及びICカード内のアプリケーションを管理するためのアプリケーションであるセキュリティドメイン(Security Domain、以下、「SD」という)が、必ず1つ以上存在する。SDには、ISD(Issuer Security Domain)とSSD(Supplementary Security Domains)がある。このようなSDは、主に、以下の(1)〜(9)の機能をサポートする。
【0004】
(1)ICカードのライフサイクル管理
(2)アプリケーションプログラムのライフサイクル管理
(3)アプリケーションインスタンスのライフサイクル管理
(4)アプリケーションプログラムのロード
(5)アプリケーションインスタンスの生成(インストール)
(6)アプリケーションプログラムまたはアプリケーションインスタンスの削除
(7)アプリケーション向け発行データの書き込み
(8)データの読出し
(9)セキュアチャンネルプロトコル(Secure Channel Protocol、以下、「SCP」という)に従ったセキュアな通信路の確保
【0005】
ISDは、上記(1)〜(9)の機能をサポートすることで、ICカード内のカードコンテント(アプリケーションプログラム、アプリケーションインスタンス等)に対して、ICカードの発行者の管理及びセキュリティポリシーを実現する。一方、SSDは、上記(1)〜(9)の機能をサポートすることで、ICカード内のカードコンテントに対して、ICカード上でサービスを提供する第三者の管理及びセキュリティポリシーを実現する。ここで、ICカード上でサービスを提供する第三者とは、ICカードの発行者及びICカードの保持者(ICカードの発行対象である利用者)以外の立場としての者をいう。また、上記(9)の機能において、SCPは、ICカード内のSDとICカード外部エンティティ(外部機器)間の通信路に対して、コマンドデータの機密性、コマンドの完全性(及びコマンドシークエンスの保証)、コマンドデータ(平文)内のセンシティブデータ(例えば、鍵やPINコード)のさらなる機密性を提供する。GlobalPlatform仕様では、上記(1)〜(7)の機能を実行する場合は、SCP上で実行することが必須とされている。
【0006】
ここで、図1を用いてSCPについて説明する。図1ではICカードを「card」と表し、外部機器を「host」と表す。
【0007】
まず、hostはcardに対してcard内のアプリケーションとの通信路を形成するためにSELECTコマンドを送信する(ステップS1)。SELECTコマンドは、通信路の相手先となるアプリケーションを識別するIDであるAIDと、当該アプリケーションとの通信路(ロジカルチャネル)を識別するロジカルチャネル番号を含む。これに対して、cardはコマンドに応じて通信路を形成するための処理を実行し、応答する(ステップS2)。これにより、ロジカルチャネル番号で識別される通信路(ロジカルチャネル)が形成され、以降、hostはコマンドに当該ロジカルチャネル番号を含ませることにより、当該ロジカルチャネル番号で識別される通信路を介して、SELECTコマンドで選択したアプリケーションと通信を行うことができる。次いで、hostは、例えば、アプリケーションに関連するデータ(例えば、アプリケーションがポイント管理アプリであれば、ポイントデータ)を取得するためにGET DATAコマンドをCardに送信する(ステップS3)。これに対して、cardはコマンドに応じた処理を実行し、応答する(例えば、ポイントデータを送信する)(ステップS4)。次いで、hostはcardから取得したデータを参照して、例えば、データを書き換えようとする場合、通信路の機密性を高めるためにそれまでに形成した通信路(ロジカルチャネル)をセキュアな通信路にするセキュア処理(SCPでコマンドを保護するための相互認証処理)を実行する。
【0008】
相互認証は、プロトコルで決められたアルゴリズムに従い、暗号演算の元となる鍵(Key ID01, Key ID02, Key ID03の3つの鍵)を互いが知っているという前提の基、hostとcardが互いを認証する行為である。具体的には、hostが相互認証用のコマンドであるINITIALIZE UPDATEコマンド及びEXTERNAL AUTHENTICATEコマンドを送信し、cardがそれぞれのコマンドに応じた処理を実行することにより行われる。
【0009】
まず、hostはHost challengeと呼ばれる乱数を生成し、Host challengeと、キーバージョンを示す値であるキーバージョン情報(「key version number」という場合がある)を含むINITIALIZE UPDATEコマンドをcardへ送信する(ステップS5)。なお、cardとhostは互いに相互認証に使用する3つの鍵からなる鍵の組み合わせを複数のキーバージョン(「key version」という場合がある)分保有している。INITIALIZE UPDATEコマンドに含まれるkey version numberは、互いに保有する複数のkey versionのうち、セキュア処理に使用するkey versionを示している(すなわち、hostがセキュア処理に使用するkey versionを指定する)。
【0010】
これに対してcardはCard challengeと呼ばれる乱数を生成し、Card challenge と、key version numberで指定されたkey versionの鍵(Key ID01, Key ID02, Key ID03の3つの鍵)を基に、各Key ID対応した3つのセッションキーを生成する。例えば、Key ID01を基にKey ID01のセッションキーを生成する。各セッションキーの用途は各プロトコルに従った用途で使用される(例えば、MAC生成用セッションキー、データ暗号化用セッションキー、鍵暗号化用セッションキーの3つが生成される)。また、cardは、生成したCard challengeと受信したHost challengeを材料に、セッションキーを用いてCard cryptogramと呼ばれる暗号文を演算し、hostにCard challengeとCard cryptogramを送信する(ステップS6)。
【0011】
次に、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に送信する(ステップS7)。
【0012】
これに対してcardはhost側と同様にCard challengeとHost challengeを材料に、セッションキーを用いてHost cryptogramを生成し、自身で生成したHost cryptogramとhost側から受信したHost cryptogramを比較し、一致するか確認することにより、hostが鍵値を知る正当な相手であることを確認する。cardは、これを確認すると、相互認証が完了したことをhostに知らせる(ステップS8)。
【0013】
相互認証完了以降は、互いに生成したセッションキーを用いてMAC(Message Authentication Code)と呼ばれるチェックコードを生成・検証することでコマンドを保護する(ステップS9〜ステップS12)。
【0014】
ところで、SDにおいては自身が保有する複数のkey versionの中から1つだけをデフォルトキーバージョン(「デフォルトキー」という場合がある)として設定することができる。相互認証においてデフォルトキーを使用する場合、INITIALIZE UPDATEコマンドにおいてkey version numberを指定する際、「0x00」を指定することが、GlobalPlatformの仕様によって定められている。SDが保有するkey versionは「0x01」〜「0x7F」まで存在し、「0x00」は存在しないが、GlobalPlatform仕様にて定義されるPUT KEYコマンド、STORE DATAコマンドと呼ばれるコマンドにより、key version「0x01」〜「0x7F」の鍵を設定する際に、デフォルトキーを設定することができる。そして、例えば、SDが保有する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(デフォルトキー)を使い回すことができ、負荷を軽減することができる。
【先行技術文献】
【特許文献】
【0015】
【特許文献1】特許第4184751号
【発明の概要】
【発明が解決しようとする課題】
【0016】
しかしながら、SDが保有するkey versionにおいて、デフォルトキーとして設定可能なkey versionは1つだけである。これは、デフォルトキーを利用する際は、key version numberを明示的に指定せずとも所定の情報(「0x00」)を指定するだけで、暗黙的にkey version numberを一意に特定できるようにするためである。これにより、hostは、デフォルトキーを使用することで、key version numberを変更する負担を軽減することができるが、例えば、アプリケーションに応じて複数のデフォルトキーを使い分けて使用することができず、利便性が低いという問題がある。
【0017】
そこで、本発明は、このような点に鑑みてなされたものであり、host等の外部機器とアプリケーション間における開設済の通信路(ロジカルチャネル)をセキュアな通信路にするセキュア処理に用いるキーのキーバージョンについて、外部機器側でキーバージョンを明示的に指定しなくても、複数のデフォルトキーバージョンを使い分けることができる電子情報記憶媒体等を提供する。
【課題を解決するための手段】
【0018】
上記課題を解決するために、請求項1に記載の発明は、外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備える電子情報記憶媒体であって、前記メモリは、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶し、前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする。
【0019】
請求項2に記載の発明は、請求項1に記載の電子情報記憶媒体であって、前記識別情報は、前記開設済の通信路に対応するロジカルチャネル番号を示す情報であって、前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記ロジカルチャネル番号に対応するデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする。
【0020】
請求項3に記載の発明は、請求項1に記載の電子情報記憶媒体であって、前記識別情報は、前記開設済の通信路を使用して前記外部機器と通信を行う前記アプリケーションを識別するアプリケーション情報であって、前記実行部は、前記キーバージョン情報として前記所定の情報を含む前記コマンドを受信した場合に、前記アプリケーション情報に対応するデフォルトキーバージョンのキーを用いて前記セキュア処理を実行することを特徴とする。
【0021】
請求項4に記載の発明は、外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備える電子情報記憶媒体によるセキュア処理実行方法であって、前記メモリは、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶し、前記実行部が、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行するステップを含むことを特徴とする。
【0022】
請求項5に記載の発明は、外部機器とアプリケーション間における開設済の通信路をセキュアな通信路にするセキュア処理に用いるキーをキーバージョン毎に記憶するメモリと、前記セキュア処理に使用するキーのキーバージョンを示すキーバージョン情報を含むコマンドを受信した場合に当該キーバージョンのキーを用いて前記セキュア処理を実行する実行部と、を備え、前記メモリが、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するための識別情報と対応付けて記憶する電子情報記憶媒体における前記実行部に、前記キーバージョン情報として所定の情報を含む前記コマンドを受信した場合に、前記開設済の通信路に対応する前記識別情報により識別されるデフォルトキーバージョンのキーを用いて前記セキュア処理を実行するステップを実行させることを特徴とする。
【発明の効果】
【0023】
本発明によれば、複数のデフォルトキーバージョンがこれらを識別する識別情報とともに設定され、キーバージョン情報として所定の情報を含むコマンドを受信した場合に、開設済の通信路に対応する識別情報により識別されるデフォルトキーバージョンのキーを用いてセキュア処理を実行する。したがって、デフォルトキーバージョンの使い分け方に応じて識別情報を設定しておくことにより、コマンドにおいてキーバージョン情報を明示的に指定しなくても、複数のデフォルトキーバージョンを使い分けることができる。
【図面の簡単な説明】
【0024】
図1】相互認証処理の一例を示すシーケンス図である。
図2】(A)は、ICカード1に搭載されるICチップ1aのハードウェア構成例を示す図であり、(B)は、ICカード1の機能構成例を示す図である。
図3】(A)は、SDにより管理される論理的な鍵空間の一例を示す図であり、(B)は、デフォルトキーテーブルの一例を示す図である。
図4】複数のSD及び複数のApplication間で形成される階層構造の一例を示す図である。
図5】コマンド受信時処理の一例を示すフローチャートである。
図6】第2実施形態におけるデフォルトキーテーブルの一例を示す図である。
図7】第2実施形態におけるコマンド受信時処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0025】
[1.第1実施形態]
以下、図面を参照して本発明の第1実施形態について詳細に説明する。以下に説明する実施形態は、ICチップを搭載するICカードに対して本発明を適用した場合の実施の形態である。
【0026】
[1.1.ICチップ1aの構成及び機能概要]
まず、図2(A)を参照して、本実施形態に係るICカード1に搭載されるICチップ1aの構成及び機能概要について説明する。図2(A)は、ICカード1に搭載されるICチップ1aのハードウェア構成例を示す図である。ICカード1は、キャッシュカード、クレジットカード、社員カード等として使用される。或いは、ICカード1は、スマートフォンや携帯電話機等の通信機器に組み込まれる。或いは、ICチップ1aが通信機器の回路基板上に直接組み込まれて構成されるようにしてもよい。なお、ICチップ1aは、本発明の電子情報記憶媒体の一例である。
【0027】
図2(A)に示すように、ICチップ1aは、CPU(Central Processing Unit)10、RAM(Random Access Memory)11、ROM(Read Only Memory)12、不揮発性メモリ13、及びI/O回路14を備えて構成される。CPU10は、ROM12または不揮発性メモリ13に記憶された各種プログラムを実行するプロセッサ(コンピュータ)である。なお、I/O回路14は、外部機器2とのインターフェイスを担う。これにより、ICチップ1aは、ICリーダ・ライタを備える外部機器2との間で接触または非接触で通信を行うことができる。接触式のICチップ1aの場合、I/O回路14には、例えば、C1〜C8の8個の端子が備えられている。例えば、C1端子は電源端子(ICチップ1aへ電源供給する端子)、C2端子はリセット端子、C3端子はクロック端子、C5端子はグランド端子、C7端子は外部機器2との間で通信を行うための端子である。一方、非接触式のICチップ1aの場合、I/O回路14には、例えば、アンテナ、及び変復調回路が備えられている。なお、外部機器2の例としては、ICカード発行機、ATM、改札機、認証用ゲート等が挙げられる。或いは、ICチップ1aが通信機器に組み込まれる場合、外部機器2には通信機器の機能を担う制御部が該当する。
【0028】
不揮発性メモリ13には、例えばフラッシュメモリが適用される。不揮発性メモリ13に記憶される各種プログラム及びデータの一部は、ROM12に記憶されてもよい。なお、不揮発性メモリ13は、「Electrically Erasable Programmable Read-Only Memory」であってもよい。本実施形態において、ROM12と不揮発性メモリ13との何れかに記憶されるプログラムには、オペレーティングシステム(Operating System、以下、「OS」という)、複数(つまり、複数種類)のアプリケーションプログラム、及び複数のSDプログラム(複数種類のSD(例えば、ISD、SSD)のそれぞれに対応するSDプログラム)等が含まれる。
【0029】
ここで、アプリケーションプログラムは、ICカード1においてアプリケーションインスタンス(以下、「Application」という)の機能(言い換えれば、モジュール)を実現するためのプログラムである。これにより、CPU10は、Applicationとして機能する。SDプログラムは、ICカード1においてSDの機能を実現するためのプログラムである。これにより、CPU10は、Application等を管理するSDとして機能する。SCPプログラムは、ICカード1においてSCPの機能を実現するためのプログラムである。SCPは、ICカード1と外部機器2(ホスト)との間でセキュアな通信路を形成するための通信プロトコルの一例である。このような通信路を形成するために、ICカード1と外部機器2(ホスト)とは、SCPで決められたアルゴリズムに従い、暗号演算の元となる鍵を互いが知っているという前提の下、SCPに従った通信路(以下、「SCP通信路」という)を開設するための相互認証を行うようになっている。SCP通信路の開設後、ICカード1と外部機器2の間で送受信されるデータ(例えば、コマンド)は、そのセッションの間、SCPにより保護される。つまり、ICカード1と外部機器2とは、そのセッションの間、相互認証において生成されたセッションキーを用いて、MACと呼ばれるチェックコードを生成、及び検証することでデータを保護する。
【0030】
図2(B)は、ICカード1の機能構成例を示す図である。図2(B)の例では、ICカード1のOS上で、ISD、SSD-1、Application-1、Application-2、Application-3、及びApplication-4が実現されている。つまり、図2(B)の例では、ICカード1は、当該ICカード1にインストールされた各Applicationを管理するSDを複数備えることになる。図2(B)において、SCP通信のICカード1におけるエンドポイントは、ISD及びSSD-1のそれぞれとなる。よって、SCPで用いられる鍵はSD毎に管理される。各SDは、例えば、論理的な鍵空間を鍵ストレージで管理する。鍵ストレージは、例えば不揮発性メモリ13におけるセキュアな記憶領域に設けられる。
【0031】
図3(A)は、SDにより管理される論理的な鍵空間の一例を示す図である。各SDは、独立した鍵空間を持ち、図3(A)に示すように、鍵空間をkey version number(0x01〜0x7F)で管理する。各SDは、key version numberで管理する鍵空間(鍵ストレージ)へ、key ID(0x00〜0x7F)を割り当てた鍵を格納する。そして、各SDは、key version numberとkey IDを参照し、自己が保持する鍵情報(Key1 ,Key2等)を一意に特定する。このような鍵情報には、鍵の値の他に、key type(DES, AES, RSAなど)、及びkey lengthが含まれる。なお、各SDが実際にメモリ上へ確保する鍵空間のサイズについては例えばICカード1の発行前に決められる。
【0032】
図3(B)は、SDにより管理されるデフォルトキーテーブルの一例を示す図である。各SDは、独立したデフォルトキーテーブルを持ち、図3(B)に示すように、デフォルトキーテーブルはロジカルチャネル番号(01、02)とデフォルトキーバージョンを示すkey version numberを対応付けている。デフォルトキーテーブルは、外部機器2からkey version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した際にSDにより参照され、SDは当該コマンドに含まれるロジカルチャネル番号に対応するデフォルトキーバージョンに対応する鍵を選択して、セッションキーの作成に使用する。
【0033】
このように第1実施形態では、デフォルトキーバージョンに対して、ロジカルチャネルとの紐付けを行い、ロジカルチャネル別にデフォルトキーバージョンが存在することを可能にすることで、複数のデフォルトキーバージョンをロジカルチャネルに応じて使い分けることができる。SDは、鍵を登録する際、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」で示されるキーバージョンをデフォルトキーバージョンとして設定する。この場合、外部機器2は、INITIALIZE UPDATEコマンドをロジカルチャネル番号「01」で識別されるロジカルチャネルを介して送信し、key version numberとして「0x00」を指定すると、暗黙的にロジカルチャネル番号「01」に紐付けられているkey version number「0x20」で示されるキーバージョンの鍵を用いてセッションキーが作成される。
【0034】
複数のSD及び複数のApplicationは互いの間で階層構造を形成する。図4は、複数のSD及び複数のApplication間で形成される階層構造の一例を示す図である。図4の例では、階層構造における最上位に位置するISDの配下には、SSD-1、Application-1及びApplication-2が位置(存在)するため、SSD-1、Application-1及びApplication-2は、ISDのセキュリティポリシーが適応される。また、SSD-1の配下には、Application-3及びApplication-4が位置するため、Application-3及びApplication-4は、SSD-1のセキュリティポリシーが適応され、さらに、その上位のISDのセキュリティポリシーも適応される。
【0035】
なお、外部機器2とApplication-3との通信路(ロジカルチャネル)についてセキュア処理を実行する場合には、Application-3は独自の鍵ストレージを保有していないので、直ぐ上位のSSD-1にセキュア処理の一部又は全てを実行してもらう。
【0036】
[1.2.ICチップ1aにおけるコマンド受信時処理]
次に、図5を用いて、ICチップ1aのSSD-1(SELECTコマンドにより選択されたアプリケーションとしてのSSD-1)が外部機器2からコマンド(SELECTコマンド以外のコマンド)を受信した際の動作について説明する。
【0037】
まず、SSD-1(を実行するCPU10)は、ロジカルチャネルを通じて受信したコマンドがINITIALIZE UPDATEコマンドであるか否かを判定する(ステップS101)。SSD-1は、受信したコマンドがINITIALIZE UPDATEコマンドではないと判定した場合には(ステップS101:NO)、受信したコマンドを実行し(ステップS102)、外部機器2に応答を送信して(ステップS109)、当該フローチャートに示す処理を終了する。一方、SSD-1は、受信したコマンドがINITIALIZE UPDATEコマンドであると判定した場合には(ステップS101:YES)、INITIALIZE UPDATEコマンドに含まれるkey version numberが「0x00」であるか否かを判定する(ステップS103)。
【0038】
SSD-1はkey version numberが「0x00」であると判定した場合には(ステップS103:YES)、自らのデフォルトキーテーブルを参照して、INITIALIZE UPDATEコマンドに含まれるチャネル番号に対応するデフォルトキー(key version number)が存在するか否かを確認する(ステップS104)。SSD-1は、デフォルトキーが存在すると判定した場合には(ステップS104:YES)、当該デフォルトキーの3つの鍵を用いてコマンド実行(Card challengeと3つの鍵を基に3つのセッションキーを生成し、Card challengeとHost challengeを材料に、セッションキーを用いてCard cryptogramを演算)して(ステップS105)、次いで、Card challengeとCard cryptogramを含む応答を外部機器2に送信し(ステップS109)、当該フローチャートに示す処理を終了する。また、SSD-1は、デフォルトキー(key version number)が存在しないと判定した場合には(ステップS104:NO)、エラー処理(エラー情報の生成等)を実行し(ステップS106)、外部機器2に応答を送信し(ステップS109)、当該フローチャートに示す処理を終了する。
【0039】
一方、SSD-1はkey version numberが「0x00」ではないと判定した場合には(ステップS103:NO)、自らの論理的な鍵空間を参照して、INITIALIZE UPDATEコマンドに含まれるkey version numberに対応するキーバージョンの鍵が存在するか否かを確認する(ステップS107)。SSD-1は、key version numberに対応するキーバージョンの鍵が存在すると判定した場合には(ステップS107:YES)、当該key version numberに対応する3つの鍵を用いてコマンド実行(Card challengeと3つの鍵を基に3つのセッションキーを生成し、Card challengeとHost challengeを材料に、セッションキーを用いてCard cryptogramを演算)して(ステップS108)、次いで、Card challengeとCard cryptogramを含む応答を外部機器2に送信し(ステップS109)、当該フローチャートに示す処理を終了する。また、SSD-1は、key version numberに対応するキーバージョンの鍵が存在しないと判定した場合には(ステップS107:NO)、エラー処理(エラー情報の生成等)を実行し(ステップS106)、外部機器2に応答を送信し(ステップS109)、当該フローチャートに示す処理を終了する。
【0040】
以上のように、第1実施形態のICカード1は、RAM11(「メモリ」の一例)が、外部機器2とApplication間における開設済の通信路(ロジカルチャネル)をセキュアな通信路にするセキュア処理に用いる鍵(「キー」の一例)をkey version number(「キーバージョン」)毎に記憶し、CPU10(「実行部」の一例)がセキュア処理に使用する鍵のkey versionを示すkey version number(「キーバージョン情報」の一例)を含むINITIALIZE UPDATEコマンド(「コマンド」の一例)を受信した場合に当該key versionの鍵を用いてセキュア処理を実行する。また、RAM11は、key version numberとして「0x00」(「所定の情報」の一例)を含むINITIALIZE UPDATEコマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するためのロジカルチャネル番号(「識別情報」の一例)と対応付けて記憶し、CPU10は、key version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した場合に、開設済の通信路(ロジカルチャネル)に対応するロジカルチャネル番号により識別されるデフォルトキーバージョンの鍵を用いてセキュア処理を実行する。
【0041】
したがって、第1実施形態のICカード1によれば、複数のデフォルトキーバージョンがこれらを識別するロジカルチャネル番号とともに設定され、key version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した場合に、開設済の通信路(ロジカルチャネル)に対応するロジカルチャネル番号により識別されるデフォルトキーバージョンの鍵を用いてセキュア処理を実行する。すなわち、デフォルトキーバージョンの使い分け方に応じてロジカルチャネル番号を設定しておくことにより、INITIALIZE UPDATEコマンドにおいてkey version numberを明示的に指定しなくても、複数のデフォルトキーバージョンを使い分けることができる。
【0042】
[2.第2実施形態]
以下、図面を参照して本発明の第2実施形態について詳細に説明する。なお、第2実施形態は、第1実施形態と一部を除き同様であるので、第1実施形態との相違点を中心に説明する。
【0043】
[2.1.ICチップ1aの構成に関する相違点]
まず、第1実施形態では、図3(B)に示すデフォルトキーテーブルを使用したが、第2実施形態では、図6に示すデフォルトキーテーブルを使用する。本実施形態のデフォルトキーテーブルは、Applicationを識別するAID(Application ID)(01、02)とデフォルトキー(key version number)を対応付ける。デフォルトキーテーブルは、外部機器2からkey version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した際にSDにより参照され、SDは当該コマンドの送信先であるApplicationに対応するデフォルトキー(key version number)に対応する鍵を選択する。
【0044】
このように第2実施形態では、デフォルトキーバージョンに対して、Applicationとの紐付けを行い、Application別にデフォルトキーバージョンが存在することを可能にすることで、複数のデフォルトキーバージョンをApplicationに応じて使い分けることができる。SDは、鍵を登録する際、PUT KEYコマンド、STORE DATAコマンドと呼ばれるコマンド(GlobalPlatform仕様にて定義)を実行する。当該コマンドを実行する際、既存仕様にて要求される鍵に関する情報(鍵値、鍵長、鍵の暗号アルゴリズム種別(AES/DES/RSAなど)、key version numberなど)に加え、新たに「鍵に紐付けるアプリケーションを識別するAID」を付与するものとする。AIDとはアプリケーションを一意に特定する名前を意味するものである。
【0045】
SDの配下にApplicationが存在する場合、SDとApplicationは管理者と被管理者の関係にあり、ApplicationはSDに開設済の通信路についてセキュア処理を依頼することが可能である。例えば、図4の階層構造において、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が実行し、SSD-1にセキュアな通信路の開設を依頼すると、暗黙的にApplication-3に紐付けられているkey version number「0x20」の鍵が使用される。また、key version number「0x00」を指定するINITIALIZE UPDATEコマンドをApplication-4が実行し、SSD-1にセキュアな通信路の開設を依頼すると、暗黙的にApplication-4に紐付けられているkey version number「0x30」の鍵が使用されることになる。アプリケーションが、SDにセキュアな通信路の開設を依頼した場合だけでなく、SDが自身でセキュアな通信路を開設する場合も同様に、INITIALIZE UPDATEコマンドをkey version number「0x00」を指定して実行した場合は、SD自身に紐付けられたデフォルトキーが暗黙的に使用されることになる。
【0046】
[2.2.ICチップ1aにおけるコマンド受信時処理]
次に、図7を用いて、第2実施形態におけるICチップ1aの一のApplication(SELECTコマンドにより選択されたApplication)が外部機器2からコマンド(SELECTコマンド以外のコマンド)を受信した際の動作について説明する。
【0047】
まず、Application(を実行するCPU10)は、ロジカルチャネルを通じて受信したコマンドがINITIALIZE UPDATEコマンドであるか否かを判定する(ステップS201)。Applicationは、受信したコマンドがINITIALIZE UPDATEコマンドではないと判定した場合には(ステップS201:NO)、受信したコマンドを実行し(ステップS202)、外部機器2に応答を送信して(ステップS209)、当該フローチャートに示す処理を終了する。一方、Applicationは、受信したコマンドがINITIALIZE UPDATEコマンドであると判定した場合には(ステップS201:YES)、コマンド実行を直ぐ上位のSDに依頼する。そして、SD(を実行するCPU10)は、INITIALIZE UPDATEコマンドに含まれるkey version numberが「0x00」であるか否かを判定する(ステップS203)。
【0048】
SDはkey version numberが「0x00」であると判定した場合には(ステップS203:YES)、自らのデフォルトキーテーブルを参照して、INITIALIZE UPDATEコマンドを受信したApplicationを識別するAIDに対応するデフォルトキー(key version number)が存在するか否かを確認する(ステップS204)。SDは、デフォルトキー(key version number)が存在すると判定した場合には(ステップS204:YES)、当該デフォルトキー(key version number)の3つの鍵を用いてコマンド実行(Card challengeと3つの鍵を基に3つのセッションキーを生成し、Card challengeとHost challengeを材料に、セッションキーを用いてCard cryptogramを演算)して(ステップS205)、次いで、Card challengeとCard cryptogramを含む応答を外部機器2に送信し(ステップS209)、当該フローチャートに示す処理を終了する。また、SDは、デフォルトキー(key version number)が存在しないと判定した場合には(ステップS204:NO)、エラー処理(エラー情報の生成等)を実行し(ステップS206)、外部機器2に応答を送信し(ステップS209)、当該フローチャートに示す処理を終了する。
【0049】
一方、SDはkey version numberが「0x00」ではないと判定した場合には(ステップS203:NO)、自らの論理的な鍵空間を参照して、INITIALIZE UPDATEコマンドに含まれるkey version numberに対応するキーバージョンの鍵が存在するか否かを確認する(ステップS207)。SDは、key version numberに対応するキーバージョンの鍵が存在すると判定した場合には(ステップS207:YES)、当該key version numberに対応する3つの鍵を用いてコマンド実行(Card challengeと3つの鍵を基に3つのセッションキーを生成し、Card challengeとHost challengeを材料に、セッションキーを用いてCard cryptogramを演算)して(ステップS208)、次いで、Card challengeとCard cryptogramを含む応答を外部機器2に送信し(ステップS209)、当該フローチャートに示す処理を終了する。また、SDは、key version numberに対応するキーバージョンの鍵が存在しないと判定した場合には(ステップS207:NO)、エラー処理(エラー情報の生成等)を実行し(ステップS206)、外部機器2に応答を送信し(ステップS209)、当該フローチャートに示す処理を終了する。
【0050】
以上のように、第2実施形態のICカード1は、RAM11(「メモリ」の一例)が、外部機器2とApplication間における開設済の通信路(ロジカルチャネル)をセキュアな通信路にするセキュア処理に用いる鍵(「キー」の一例)をkey version number(「キーバージョン」)毎に記憶し、CPU10(「実行部」の一例)がセキュア処理に使用する鍵のkey version numberを示す情報(「キーバージョン情報」の一例)を含むINITIALIZE UPDATEコマンド(「コマンド」の一例)を受信した場合に当該key version numberの鍵を用いてセキュア処理を実行する。また、RAM11は、key version numberとして「0x00」(「所定の情報」の一例)を含むINITIALIZE UPDATEコマンドを受信した場合に用いる複数のデフォルトキーバージョンを、これらを識別するためのAID(「識別情報」の一例)と対応付けて記憶し、CPU10は、key version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した場合に、開設済の通信路(ロジカルチャネル)に対応するアプリケーションを識別するAIDにより識別されるデフォルトキーバージョンの鍵を用いてセキュア処理を実行する。
【0051】
したがって、第2実施形態のICカード1によれば、複数のデフォルトキーバージョンがこれらを識別するAIDとともに設定され、key version numberとして「0x00」を含むINITIALIZE UPDATEコマンドを受信した場合に、開設済の通信路(ロジカルチャネル)に対応するアプリケーションのAIDにより識別されるデフォルトキーバージョンの鍵を用いてセキュア処理を実行する。すなわち、デフォルトキーバージョンの使い分け方に応じてAIDを設定しておくことにより、INITIALIZE UPDATEコマンドにおいてkey version numberを明示的に指定しなくても、複数のデフォルトキーバージョンを使い分けることができる。
【符号の説明】
【0052】
1 ICカード
1a ICチップ
2 外部機器
10 CPU
11 RAM
12 ROM
13 不揮発性メモリ
14 I/O回路
図1
図2
図3
図4
図5
図6
図7