本発明はICカードの技術に属する。
複数のアプリケーション(実行モジュールと実行モジュールを用いたインスタンス)をロード可能に構成されたUIM(User Identity Module)等のICカードでは,非特許文献1で開示されているGlobal Platform(登録商標)に準拠した製品が事実上のデファクトスタンダードになっている。なお,これ以降,ICカードとは,Global Platformに準拠したICカードを意味する。
ICカードには,クレジットカードやデビットカードなど特定の用途向けに開発されたアプリケーションに加えて,特権(privileged)アプリケーションであるセキュリティドメイン(Security Domain)が実装される。ICカードには必ずカード発行者のセキュリティドメインであるISD(Issuer Security Domain)が実装され,カード発行者が提供するアプリケーションはISDに関連付けられてICカードに実装される。カード発行者が提供するアプリケーション以外のアプリケーションをICカードに実装する場合は,ISDに加えて,カード発行者以外のアプリケーション提供者のセキュリティドメインであるSSD(Supplementary Security Domain)がICカードに実装され,カード発行者以外のアプリケーション提供者が提供するアプリケーションは,アプリケーション提供者のSSDに関連付けられてICカードに実装される。
ICカードに実装されるセキュリティドメインは,セキュリティドメインに関連付けられているアプリケーションに提供するセキュリティ機能の一つとして,共通暗号方式の暗号鍵または公開暗号方式の暗号鍵を用いたセキュアチャネルプロトコル(Secure Channel Protocol)に対応する。セキュアチャネルプロトコルは,ICカードとICカードの外部になるホスト間の相互認証(Mutual Authentication)を行い,ICカードとホスト間の暗号路になるセキュアチャネルを確立するためのプロトコルである。
図4は,セキュアチャネルプロトコルに係る処理を説明する図である。セキュアチャネルプロトコルは,ホスト2aが,セキュアチャネルの確立対象とするICカード1aのセキュリティドメインを選択するセキュリティドメイン選択フェーズP1と,ホスト2aとICカード1a間で相互認証を行ってセキュアチャネルを確立するセキュアチャネル確立フェーズP2と,ホスト2aが,セキュアチャネルを利用してコマンドをICカード1aへ送信するセキュア通信フェーズP3を含む。
セキュリティドメイン選択フェーズP1のP1aにおいて,ホスト2aがICカード1aに対して送信するSELECTコマンドは,セキュアチャネルの確立対象となるセキュリティドメインの選択に用いられるコマンドである。また,図4では,セキュリティドメイン選択フェーズP1のP1bにおいて,ホスト2aが, SELECTコマンドを用いて選択したセキュリティドメインに係るデータ(例えば,Issuer Identification Number)を,GET DATAコマンドを利用してICカード1aから読み出している。
セキュアチャネル確立フェーズP2のP2aにおいて,ホスト2aがICカード1aへ送信するINITALIZE UPDATEコマンドは,セキュアチャネルの確立を開始することをICカード1aへ通知するためのコマンドで,INITALIZE UPDATEコマンドを用いてセキュアチャネルの確立に必要なデータがホスト2aとICカード1a間で交換されると共に,ホスト2aは,INITALIZE UPDATEコマンドのレスポンスメッセージに含まれる暗号データを用いてICカード1aを認証する。また,セキュアチャネル確立フェーズP2のP2bにおいて,ホスト2aがICカード1aへ送信するEXTERNAL AUTHENTICATEコマンドは,ICカード1aによるホスト2aの認証とセキュリティレベルの決定に用いられるコマンドで,ICカード1aは,EXTERNAL AUTHENTICATEコマンドのコマンドメッセージに含まれる暗号データを用いてホスト2aを認証する。
セキュア通信フェーズP3では,セキュアチャネル確立フェーズP2で確立したセキュアチャネルを利用してホスト2aがICカード1aへ送信するコマンドが保護される。
図5は,セキュアチャネル確立フェーズP2の詳細を説明する図である。セキュアチャネル確立フェーズP2は,ICカード1aとホスト2a間の相互認証が実行され,ICカード1aとホスト2a間のセキュアチャネルが確立されるフェーズになる。セキュアチャネル確立フェーズP2で実行される相互認証では,暗号演算の基となる鍵セットを互いが知っているという前提のもと,セキュアチャネルプロトコルで決められたアルゴリズムに従いICカード1aとホスト2aが互いを認証する。なお,暗号演算の基となる鍵セットには,セキュアチャネル暗号鍵と,セキュアチャネルMAC(Message Authentication Code)鍵およびデータ暗号鍵が含まれる
相互認証を実行する際,ホスト2は,Host Challengeと呼ばれる乱数を生成し(P20),INITALIZE UPDATEコマンドを用いて,Host Challenge とKey Version NumberをICカード1aへ送信する(P21)。Key Version Numberは,暗号演算の元となる鍵セットの識別に用いるデータで,Key Version Numberを利用してセキュアチャネルプロトコルで使用する鍵セットがICカード1a側で特定される。
INITALIZE UPDATEコマンドを受信したICカード1aは,Card Challengeと呼ばれる乱数,セキュアチャネルで用いる暗号鍵となるセッション鍵,Card Cryptogramと呼ばれる暗号文を生成した後(P22), Card ChallengeとCard Cryptogramを含ませたINITALIZE UPDATEコマンドのレスポンスメッセージをホスト2aへ送信することで,Card ChallengeとCard Cryptogramをホスト2aへ送信する(P23)。
ICカード1aは,Host Challenge, Card Challenge,および,Key Version Numberにより指定された鍵セットを用いてセッション鍵を生成する。鍵セットに含まれるセキュアチャネル暗号鍵を用いて暗号演算が行われることで暗号セッション鍵が生成され,鍵セットに含まれるMAC鍵を用いて暗号演算が行われることでMACセッション鍵が生成される。また,ICカード1aは, Host Challenge とCard Challengeを所定のルールに従い連結させたデータを,暗号セッション鍵を用いて暗号演算を行うことで,Card Cryptogramと呼ばれる暗号文を生成する。
ホスト2aは,ICカード1aと同様にセッション鍵を生成した後,暗号セッション鍵を用いて,ICカード1aと同様な手順でCard Cryptogramを生成し,ホスト2a自身が生成したCard CryptogramとICカード1aから渡されたCard Cryptogramを照合し,INITALIZE UPDATEコマンドの送信対象となったICカード1aの正当性を検証する(P24)。
INITALIZE UPDATEコマンドを送信したICカード1aの正当性検証に成功すると,ホスト2aは, Card Challenge とHost Challenge を所定のルールに従い連結させたデータを,暗号セッション鍵を用いて暗号演算を行うことで,Host Cryptogramと呼ばれる暗号文を生成した後(P25),EXTERNAL AUTHENTICATEコマンドを用いて,Host Cryptogramと共に,セキュアチャネルのセキュリティレベルを指定するデータをICカード1aへ送信する(P26)。なお,EXTERNAL AUTHENTICATEコマンドのコマンドメッセージには,MACセッション鍵を用いて生成されたMACが付加される。また, EXTERNAL AUTHENTICATEコマンドで指定されたセキュリティレベルは,セキュアチャネルが閉鎖するまで有効である。
EXTERNAL AUTHENTICATEコマンドを受信したICカード1aは,ICカード1aが生成したMACセッション鍵を用いて,EXTERNAL AUTHENTICATEコマンドのコマンドメッセージに付加されたMACの正当性を検証し,MACの正当性検証に成功すると,ホスト2aと同様な手順でHost Cryptogramを生成して,ICカード1a自身が生成したHost Cryptogramとホスト2aから渡されたHost Cryptogramを照合し,EXTERNAL AUTHENTICATEコマンドを送信したホスト2aの正当性を検証する(P27)。ICカード1aは,Host Cryptogramの照合に成功すると,EXTERNAL AUTHENTICATEコマンドのレスポンスメッセージを利用して,Host Cryptogramの照合に成功したことをホスト2aへ通知し(P28),セキュアチャネル確立フェーズP2が終了する。
ホスト2aとICカード1a間の相互認証が終了した後,EXTERNAL AUTHENTICATEコマンドにより指定されたセキュリティレベルに応じ,相互認証で生成されたセッション鍵を用いて,ホスト2aがICカード1aへ送信するコマンドが保護される。例えば,ホスト2aがICカード1aへ送信するコマンドの完全性が要求される場合,MACセッション鍵を用いて演算されたMACが,ホスト2aがICカード1aへ送信するコマンドのコマンドメッセージに付加される。また,ホスト2aがICカード1aへ送信するコマンドの秘匿性が要求される場合,ホスト2aがICカード1aへ送信するコマンドメッセージのコマンドデータは暗号セッション鍵により暗号化される。
これまで述べたように,Global Platform(登録商標)ではセキュアチャネルの確立手順は規定されているが,セキュアチャネルを確立した後のコマンド実行回数については規定されておらず,セキュアチャネルが閉鎖するまで,セキュアチャネルを利用してICカードへ何回でもコマンドを送信できる。セキュアチャネルが閉鎖するまでセッション鍵は変更されないので,セキュアチャネルを利用してICカードへ何回でもコマンドを送信できると,セキュアチャネルで利用しているセッション鍵が漏えいするリスクが高まり,その結果として,セッション鍵の生成に用いる鍵セットの内容が漏えいするリスクも高まってしまう。
コマンド実行回数を制限できるICカードに係る発明として,ICカードが活性化されてから実行したコマンドの累計個数を計数し,その累計個数が可能個数を越えた場合に動作を制限するICカードが特許文献1にて開示されている。しかし,上述のように,セキュアチャネルにはセキュリティレベルが指定されるが,特許文献1で開示されている発明は,セキュアチャネルのセキュアチャネルに応じて,セキュアチャネルを確立した後のコマンド実行回数を制限できるように構成されていない。
Global Platform Card Specification Version 2.2 March 2006
そこで,本発明は,ホストとの相互認証を実行して確立したセキュアチャネルのセキュリティレベルに応じて,セキュアチャネルを確立した後のコマンド実行回数を制限できるICカードを提供することを目的とする。
上述した課題を解決する本発明は,カード外部のホストと相互認証を行い,前記ホストと通信するときの暗号路になるセキュアチャネルを確立するプロトコルであるセキュアチャネルプロトコルに対応したセキュリティドメインを備え,前記セキュリティドメインは,前記セキュアチャネルプロトコルで規定されたセキュリティレベル毎にコマンド実行回数の上限値を記憶し,前記ホストと相互認証を行って前記セキュアチャネルを確立した後,前記セキュアチャネルを利用して受信したコマンドのコマンド実行回数をカウントし,前記セキュアチャネルを確立する際に前記ホストから指定された前記セキュリティレベルに対応するコマンド実行回数の上限値をコマンド実行回数のカウント値が超えると,前記セキュアチャネルを閉鎖する処理を実行することを特徴とするICカードである。
上述した本発明に係るICカードは,本発明に係る課題を解決するために,前記セキュアチャネルを確立する際に前記ホストから指定された前記セキュリティレベルに応じて,セキュアチャネルを確立した後のコマンド実行回数の上限値を決定し,セキュアチャネルを確立した後のコマンド実行回数が上限値を超えると,前記セキュアチャネルを閉鎖するように構成されている。
本実施形態に係るICカードのソフトウェア構成図。
実行回数上限値テーブルを説明する図。
セキュリティドメインの動作を説明する図。
ICカードのソフトウェア構成例を説明する図。
セキュアチャネル確立フェーズの詳細を説明する図。
ここから,本発明の好適な実施形態を記載する。なお,以下の記載は本発明の技術的範囲を束縛するものでなく,理解を助けるために記述するものである。
本実施形態に係るICカード1は,バックエンドになる外部のホスト2と通信して特定の処理を実行するように構成されたカードで,具体的には,クレジットカードやUIMである。
図1は,本実施形態に係るICカード1のソフトウェア構成図である。本実施形態に係るICカード1において,ソフトウェア階層の最下位層は,ICカード1のハードウェアになるICチップ13になる。ICチップ13は,ICカード1に実装されたコンピュータプログラムを実行するプロセッサ130,ICカード1のメインメモリとなるRAM131,電気的に書き換え不可能な不揮発性メモリであるROM132,電気的に書き換え可能な不揮発性メモリであるNVM(Non-volatile memory)133,フロントエンドとなるリーダライタと通信するときのインタフェースになるI/O134などを備えたICチップ13である。
本実施形態に係るICカード1は,Global Platform(登録商標)に準拠し,ICカード1のICチップ13上には,カードOS(Operating System)となるRuntime Environment12が実装される。Runtime Environment12は,ICチップ13が有するメモリのメモリ管理,アプリケーションのセキュアな実行環境,ICチップ13のI/O134を利用してフロントエンドと通信する時の伝送制御(ISO/IEC 7816-3に準拠した通信)などを提供するソフトウェアである。
図1では,ICカード1に実装されたRuntime Environment12上で動作するソフトウェアとして,セキュリティドメイン10と,セキュリティドメイン10の管理対象となるアプリケーション11が実装されている。セキュリティドメイン10は,セキュリティドメイン10に関連付けられたアプリケーション11に対して,暗号鍵の管理機能,暗号鍵を用いた暗号演算機能,デジタル署名の生成/検証機能などのセキュリティ機能を提供し,本実施形態に係るセキュリティドメイン10は,これらに加えて,ホスト2と相互認証を行い,ホスト2と通信するときの暗号路になるセキュアチャネル3を確立するプロトコルであるセキュアチャネルプロトコルに対応する。なお,ICカード1に実装されたセキュリティドメイン10は,Global Platform(登録商標)で定義されているISDまたはSSDのいずれであってもよい。
本実施形態に係るICカード1のセキュリティドメイン10がセキュアチャネル3を確立する手順は,図4,5を用いて説明した通りであるため,ここでは説明を省くが,本実施形態に係るICカード1のセキュリティドメイン10は, SELECTコマンド100,GET DATAコマンド101, INITALIZE UPDATEコマンド102およびEXTERNAL AUTHENTICATEコマンド103を利用してセキュアチャネル3を確立する処理を実行し,セキュリティドメイン10は,セキュアチャネル3の確立に用いるデータとして鍵セット104を記憶する。
また,本実施形態に係るセキュリティドメイン10は,セキュアチャネル3を確立する機能に加え,セキュアチャネル3を確立した後のコマンド実行回数を管理する機能を備え,セキュアチャネル3を確立した後のコマンド実行回数を管理する機能で用いるデータとして,ICカード1とホスト2間で確立したセキュアチャネル3のセキュリティレベルであるカレントセキュリティレベル105,セキュリティレベルに対応付けてコマンド実行回数の上限値を記憶した実行回数上限値テーブル106,および,セキュアチャネル3を利用して受信したコマンドのコマンド実行回数のカウントに用いる実行回数カウンタ107を有する。なお,セキュアチャネル3を確立した後のコマンド実行回数の管理とは,セキュアチャネル3を利用して受信したコマンドを実行できる回数を管理することを意味する。
本実施形態に係るセキュリティドメイン10が有するカレントセキュリティレベル105は,セキュアチャネル3を確立する際に,ホスト2から受信したEXTERNAL AUTHENTICATEコマンド103によって指定される。本実施形態に係るセキュリティドメイン10は,EXTERNAL AUTHENTICATEコマンド103のコマンドメッセージに含まれるセキュリティレベルをカレントセキュリティレベル105としてICチップ13のRAM131に記憶する。
図2は,実行回数上限値テーブル106を説明する図である。本実施形態に係るセキュリティドメイン10が有する実行回数上限値テーブル106は,セキュリティドメイン10をインストールする際に,ICチップ13のNVM133に書き込まれるデータテーブルで,セキュアチャネルプロトコルの規格で定められているセキュリティレベル毎に,セキュアチャネル3を確立した後のコマンド実行回数の上限値が記述される。
図2に図示したように,Global Platform(登録商標)で定められているセキュアチャネルプロトコルの一つであるセキュアチャネルプロトコル01では,セキュリティレベルとして,0x00(00000000b),0x01(00000001b),0x03(00000011b)が規定されている。なお,「0x」は16進表記を意味し,「b」はビット表記を意味する。
0x00のセキュリティレベルでは,コマンドメッセージのMACは「無し」(コマンドの実行にMAC検証は不要)に設定され,コマンドデータの暗号化も「無し」(コマンドの実行にコマンドデータの復号は不要)に設定される。また,0x01のセキュリティレベルでは,コマンドメッセージのMACは「有り」(コマンドの実行にMAC検証は必要)に設定されるが,コマンドデータの暗号化は「無し」(コマンドの実行にコマンドデータの復号は不要)に設定される。更に,0x03のセキュリティレベルでは,コマンドメッセージのMACは「有り」(コマンドの実行にMAC検証は必要)に設定され,コマンドデータの暗号化も「有り」(コマンドの実行にコマンドデータの復号は必要)に設定される。
このように,Global Platform(登録商標)で定められているセキュアチャネルプロトコルの一つであるセキュアチャネルプロトコル01では,セキュリティレベルが大きい値になるほどセキュリティが強化されるので,図2で図示した実行回数上限値テーブル106は,セキュリティレベルが大きい値ほどコマンド実行回数の上限値が小さくなるようにしている。
実行回数カウンタ107は,セキュアチャネル3を利用して受信したコマンドの実行回数をカウントするために,ICチップ13のRAM131に設けられるデータである。本実施形態に係るセキュリティドメイン10は,セキュアチャネル3を利用してホスト2からコマンドを受信すると,実行回数カウンタ107のカウント値を一つインクリメントする。
図3は,セキュリティドメイン10の動作を説明する図である。本実施形態に係るセキュリティドメイン10は,まず,セキュアチャネル3の確立に係る処理を実行する(S1)。上述したように, ホスト2とICカード1間にセキュアチャネル3を確立する際,ホスト2は,SELECTコマンド100を用いて,セキュアチャネル3の対象となるICカード1のセキュリティドメイン10を選択した後,INITALIZE UPDATEコマンド102およびEXTERNAL AUTHENTICATEコマンド103を用いてICカード1と相互認証を行う。なお,ホスト2とICカード1間にセキュアチャネル3が確立されると,上述しているセッション鍵(暗号セッション鍵,MACセッション鍵)がICチップ13のRAM131に生成される。
本実施形態に係るセキュリティドメイン10は,セキュアチャネル3の確立に係る処理(S1)において,ICチップ13のNVM133に記憶された実行回数上限値テーブル106を参照し,EXTERNAL AUTHENTICATEコマンド103により指定されたセキュリティレベルであるカレントセキュリティレベル105に対応するコマンド実行回数の上限値を特定する処理を行う(S1a)。
カレントセキュリティレベル105に対応するコマンド実行回数の上限値を特定する際,本実施形態に係るセキュリティドメイン10は,ICチップ13のNVM133に記憶された実行回数上限値テーブル106を参照し,カレントセキュリティレベル105に対応するコマンド実行回数の上限値を特定して,ICチップ13のRAM131に格納する。図2で図示した実行回数上限値テーブル106によれば,カレントセキュリティレベル105が0x01の場合,セキュアチャネル3を確立した後のコマンド実行回数の上限値は20回になる。
なお,ホスト2から送信されるEXTERNAL AUTHENTICATEコマンド103によってカレントセキュリティレベル105が示されるので,カレントセキュリティレベル105に対応するコマンド実行回数の上限値を特定する処理(S1a)は,ホスト2からEXTERNAL AUTHENTICATEコマンド103を受信した後で, Host Cryptogramの照合に成功したことをホスト2へ通知する前に実行されることになる。
カレントセキュリティレベル105に対応するコマンド実行回数の上限値を特定する処理を実行したセキュリティドメイン10はコマンド受信待ちの状態になり(S2),ホスト2からコマンドを受信すると,セキュリティドメイン10は,ICチップ13のRAM131に設けられた実行回数カウンタ107のカウント値を一つインクリメントする処理を行う(S3)。
実行回数カウンタ107を一つインクリメントしたセキュリティドメイン10は,カレントセキュリティレベル105に対応するコマンド実行回数の上限値と,インクリメント後の実行回数カウンタ107のカウント値を比較する処理を行う(S4)。
実行回数カウンタ107のカウント値が,カレントセキュリティレベル105に対応するコマンド実行回数の上限値を超えていない場合,セキュリティドメイン10は,ホスト2から受信したコマンドの実行が許可されていると判断し,ホスト2から受信したコマンドを実行した後(S5),図3のS2の処理に戻る。ホスト2から受信したコマンドがアプリケーション11のコマンドの場合,セキュリティドメイン10はアプリケーション11にコマンドを引き渡して,アプリケーション11にコマンドを処理させる。また,ホスト2から受信したコマンドがセキュリティドメイン10のコマンドの場合,セキュリティドメイン10がコマンドを処理する。
実行回数カウンタ107のカウント値が,カレントセキュリティレベル105に対応するコマンド実行回数の上限値を超えた場合,セキュリティドメイン10は,ホスト2から受信したコマンドの実行が許可されないと判断し,コマンド実行回数の上限値と実行回数カウンタ107のカウント値を初期化した後(S6),図3のS1で確立したセキュアチャネル3を閉鎖する処理を行う(S7)。なお,セキュアチャネル3を閉鎖することで,ICチップ13のRAM131に生成したセッション鍵やカレントセキュリティレベル105はRAM131から消去される。そして,セキュアチャネル3を閉鎖したセキュリティドメイン10は,コマンド実行回数がコマンド実行回数の上限値を超えたことを意味するエラーコードをホスト2へ送信して(S8),図3の手順は終了する。
1 ICカード
10 セキュリティドメイン
104 鍵セット
105 カレントセキュリティレベル
106 実行回数上限値テーブル
107 実行回数カウンタ
11 アプリケーション
12 Runtime Environment
13 ICチップ
2 ホスト
3 セキュアチャネル