以下、本発明を図示する実施形態に基づいて説明する。
<<< §1. ICカードに対する従来の一般的な通信形態 >>>
本発明は、2組の情報処理装置の間で所定の暗号化プロトコルに基づく暗号通信を行う技術に係り、特に、ICカードと別な装置との間で暗号通信を行うのに適した暗号通信技術に関するものである。そこで、ここでは、まず、ICカードに対する従来の一般的な通信形態を簡単に説明しておくことにする。
図1は、一般的なスマートフォン10,SIMカード11,外部サーバ20の間の情報通信の態様を示すブロック図である。通常、スマートフォン10は、内部にSIMカード11を装着した状態で利用され、必要に応じて、外部サーバ20と所定の通信路(インターネットや電話回線)を介して交信することになる。ここで、SIMカード11(UIMカードとも呼ばれる)は、Java Card(商標)やGlobalPlatform (登録商標)など、事実上の標準となっている国際的な仕様に準拠したICカードであり、外部装置との交信は、当該外部装置から与えられるコマンドと、これに対する応答(レスポンス)という形式で行われる。
SIMカード11に着目すると、スマートフォン10も外部サーバ20も、いずれも外部装置ということになり、これら外部装置との間の交信は、所定の通信路を介して行われる。図1には、スマートフォン10と外部サーバ20との間の通信路しか示されていないが、実際には、SIMカード11とスマートフォン10との間やSIMカード11と外部サーバ20との間にも通信路が形成される。そして、SIMカード11に対して、これらの通信路を介してコマンドおよびレスポンスのやりとりが行われることになる。
図2は、図1に示すSIMカード11と、スマートフォン10もしくは外部サーバ20と、の間で暗号通信を行うためのプログラム構成の一例を示すブロック図である。本発明は、ICカードに限らず、一般的な2組の情報処理装置の間で暗号通信を行う場合に広く適用できる技術であり、一般論として、任意の情報処理装置間での通信に利用可能である。したがって、図2には、第1の情報処理装置100と第2の情報処理装置200との間に通信路を開設して相互に交信を行う例が示されている。
ただ、上述したとおり、本発明は、ICカードに対する暗号通信を行うのに特に適した技術であり、ここでは、第1の情報処理装置100がスマートフォン10に装着されたSIMカード11であり、第2の情報処理装置200が当該スマートフォン10(もしくは、外部サーバ20でもよい)である場合について、以下の説明を行うことにする。
SIMカード11をはじめとするICカードには、通常、複数のアプリケーションプログラムが組み込まれる。図2に示す第1の情報処理装置100(SIMカード11)には、2組の一般アプリケーションプログラムAP1,AP2が組み込まれた状態が示されている。また、ICカードには、通常、少なくとも1組の管理プログラムSD(Security Domain プログラム)が組み込まれている。この管理プログラムSDは、分類上はアプリケーションプログラムの一種であるが、OSプログラムと協働して、ICカード全体の動作や、管理下にある他のアプリケーションプログラムを管理する役割を果たす。そこで、本願では、情報処理装置100(SIMカード11)に組み込まれるアプリケーションプログラムのうち、Security Domain プログラムを「管理プログラム」と呼び、それ以外のアプリケーションプログラムを「一般アプリケーションプログラム(略称:一般アプリ)」と呼ぶことにする。
管理プログラムSDには、管理下となるアプリケーションプログラムについてのロード機能、インストール機能、削除機能などの様々な機能が備わっているが、本発明に直接関連する機能は、暗号通信路開設機能である。図2に示す管理プログラムSDには、暗号通信路開設機能に必要な暗号通信路開設ルーチンR1および鍵テーブルT1が組み込まれている。鍵テーブルT1には、暗号通信路開設に用いる暗号鍵が格納されている。ICカードからなる情報処理装置100の場合、通常、「SCP:Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、第2の情報処理装置200との間にセキュアな暗号通信路を開設して暗号通信が行われる。このような機能を実現するため、管理プログラムSD内には、暗号通信路開設ルーチンR1と鍵テーブルT1とが組み込まれている。
一方、第2の情報処理装置200にも、これに応じた暗号通信を行う機能をもったアプリケーションプログラムAP3が用意されており、暗号通信路開設ルーチンR2と鍵テーブルT2とが組み込まれている。たとえば、第2の情報処理装置200がスマートフォン10の場合、アプリケーションプログラムAP3は、このスマートフォン10にインストールされたアプリケーションプログラムの1つである。
第1の情報処理装置100側の暗号通信路開設ルーチンR1と、第2の情報処理装置200側の暗号通信路開設ルーチンR2とは、両装置間にセキュアな暗号通信路を開設し、同一の暗号化プロトコルに基づいた暗号通信を行うためのルーチンであり、鍵テーブルT1と鍵テーブルT2には、同一の暗号鍵が収容されている。したがって、図示の例の場合、管理プログラムSDとアプリケーションプログラムAP3とによって、第1の情報処理装置100と第2の情報処理装置200との間に、同一の暗号鍵を用いた同一の暗号化プロトコルに基づく暗号通信を行うための暗号通信路が開設されることになる。
ICカードに対する暗号通信に利用される暗号化プロトコルとしては、SCP01,SCP02などのプロトコルが古くから利用されてきている。ただ、これらのプロトコルで用いられている「Triple-DES」という暗号アルゴリズムには危殆化の問題が指摘されており、近年は、AES(Advanced Encryption Standard)なる規格に基づく暗号アルゴリズムを利用したSCP03なるプロトコルも、GlobalPlatform (登録商標)に準拠した仕様として普及し始めている。また、3GPP/ETSIなどの標準化団体を中心に策定されたSCP80,SCP81などのプロトコルの利用も普及してきている。
また、ICカードに組み込まれる管理プログラムSD用の鍵テーブルTとしては、図3に例示するような鍵空間を用いる仕様が一般化している。図示の鍵テーブルTは、縦方向にキーバージョン番号(key version number)、横方向にキーID(key ID)を定義したマトリックスによって構成されており、キーバージョン番号については、0x01〜0x7Fの範囲内のアドレス空間が割り当てられ、キーIDについては、0x00〜0x7Fの範囲内のアドレス空間が割り当てられている(アドレス先頭の0xは、以下の数値が16進数であることを示す)。
個々の暗号鍵は、この鍵テーブルTのいずれかのセルに格納されることになり、キーバージョン番号とキーIDとの組み合わせにより特定される。たとえば、キーバージョン番号「0x01」とキーID「0x01」との組み合わせにより、暗号鍵KeyAが特定されることになる。図には、個々の暗号鍵の格納例として、KeyA〜KeyUが特定のセルに格納された状態が示されている。もちろん、暗号鍵はすべてのセルに格納する必要はなく、必要な暗号鍵が所定のセルに格納されていれば足りる。また、必要に応じて、後に、新たな暗号鍵を空いているセルに書き込むこともできる。
ある1つの暗号化プロトコルでは、ある1つのキーバージョン番号が指定され、当該キーバージョン番号をもったセルに格納されている1つもしくは複数組の暗号鍵を利用した暗号化処理もしくは復号処理が実行される。図示の例の場合、キーバージョン番号「0x01」,「0x02」,「0x20」,「0x21」,「0x22」,「0x7E」,「0x7F」の各行に何らかの暗号鍵が格納されている状態が示されている。また、図示の例の場合、いずれのキーバージョン番号についても、キーID「0x01」,「0x02」,「0x03」の3箇所のセルにそれぞれ暗号鍵が格納されている。
これは、いずれのキーバージョン番号も、3つの異なる暗号鍵を用いる暗号化プロトコル(たとえば、上述したSCP01,SCP02,SCP03など)に対応したものになっているためである。たとえば、キーバージョン番号「0x20」が指定された場合、キーID「0x01」,「0x02」,「0x03」の各セルに格納されている3つの暗号鍵KeyG,KeyH,KeyIが暗号化処理もしくは復号処理に利用されることになる。別言すれば、特定の暗号化プロトコルに基づく暗号化処理もしくは復号処理には、同一のキーバージョン番号をもつ1つもしくは複数組の暗号鍵が利用されることになる。もちろん、合計5個の暗号鍵を必要とする暗号化プロトコルのためには、同一のキーバージョン番号をもつ5個のセルにそれぞれ暗号鍵を用意することになる。要するに、図3に示す鍵テーブルTでは、常に、同一行のセルに収容されている1組もしくは複数組の暗号鍵が、特定の暗号化プロトコルに基づく暗号化処理もしくは復号処理に利用されることになる。
一方、図4(a) は、図3に示す鍵テーブルTの個々のセルに格納されている暗号鍵KeyA〜KeyUの一般的なデータ構造を示す図である。図示された暗号鍵Keyのデータ構造は、上述したICカードについての国際的な標準仕様として定められた暗号鍵Keyの標準フォーマットを示すものであり、先頭から順に、種別情報(key type)A,鍵長(key length)L,鍵値データ(key value)Vを並べたものになっている。ここで、種別情報(key type)Aは、「AES」,「Triple-DES」,「RSA」など、当該暗号鍵Keyを用いることを想定している暗号化プロトコルが採用する暗号アルゴリズムの種別を含む情報であり、鍵長(key length)Lは、後続する鍵値データ(key value)Vのデータ長(byte)を示す情報であり、最後の鍵値データ(key value)Vは、暗号化および復号の演算に用いられる鍵値データそのものである。
前述したとおり、図3に示す鍵テーブルTでは、同一行のセルに収容されている複数組の暗号鍵は、ある1つの暗号化プロトコルに基づく暗号化処理もしくは復号処理に利用される。したがって、同一行のセルに収容されている複数組の暗号鍵に含まれている種別情報Aは、必ず同一の情報になる。たとえば、図3に示す鍵テーブルTの第1行目に収容されている3組の暗号鍵「KeyA,KeyB,KeyC」は、互いに同一の種別情報Aを有し、これら3組の暗号鍵は、当該種別情報Aで示される特定の暗号アルゴリズムを採用した暗号化プロトコルにおいて利用される暗号鍵ということになる。暗号鍵「KeyD,KeyE,KeyF」や「KeyG,KeyH,KeyI」等についても同様である。
図4(b) は、暗号通信路開設コマンドCMDのデータ構造の概要を示す図である。実際のコマンドは、ISOなどの規格(たとえば、ISO7816-4)に準拠した、より複雑なデータ構造を有するものになるが、便宜上、図4(b) には、説明に必要な情報のみを抽出した概念的なデータ構造を示すことにする。図示の例は、上述した暗号化プロトコルSCP01,SCP02,SCP03を採用する場合に用いられている暗号通信路の開設コマンドを示しており、暗号通信路の開設を指示する文字列「INITIALIZE UPDATE」なるコマンド文字列情報(実際には、コマンド「INITIALIZE UPDATE」を意味するインストラクションバイト情報であるが、以下、便宜上、「INITIALIZE UPDATE」なる文字列として説明する)と、特定の暗号鍵の格納場所を示す格納場所指定情報(実際には、特定のキーバージョン番号)と、所定の乱数とによって構成されている。
たとえば、図3に示す鍵テーブルTに格納されている3組の暗号鍵「KeyG,KeyH,KeyI」を用いて暗号通信路を開設する場合には、文字列「INITIALIZE UPDATE」に「0x20」なるキーバージョン番号を後続させ、更にその後ろに所定の乱数を後続させた暗号通信路開設コマンドCMDをICカードに与えればよい。暗号通信路開設コマンドCMDの最後に付加される乱数は、外部装置(第2の情報処理装置200)がICカード(第1の情報処理装置100)を正規の交信相手であることを認証するために利用される。別言すれば、暗号通信路開設コマンドCMDは、ICカードに対して、暗号通信路の開設処理を実行する指示コマンドとしての役割とともに、所定の乱数に応じた認証コードを返信するよう求める認証コマンドとしての役割も果たす。
図5は、図2に示すSIMカード11(第1の情報処理装置100)に組み込まれた管理プログラムSDと、スマートフォン10(第2の情報処理装置200)に組み込まれたアプリケーションプログラムAP3と、の間でやりとりされる種々のコマンドおよびこれに対するレスポンスの具体例を示すダイアグラムである。ステップS1〜S6に示すとおり、いずれもスマートフォン10側からSIMカード11側に所定のコマンドを送信し、当該コマンドに対するレスポンスをSIMカード11側からスマートフォン10側へと返信する、という形態で、両者間の情報のやりとりが行われる。この例の場合、ステップS1〜S4までの情報のやりとりは、暗号化されていない通常の通信路を介して行われるが、ステップS5,S6の情報のやりとりは、管理プログラムSDによって開設された暗号通信路を介して行われる。
まず、ステップS1は、スマートフォン10側からSIMカード11側に「SELECTコマンド」を送信するプロセスである。この「SELECTコマンド」は、「アプリケーション選択コマンド」と呼ぶべきコマンドであり、特定のチャネル番号を指定して、SIMカード11側の特定のアプリケーションプログラム(この場合は、管理プログラムSD)を選択するコマンドである。SIMカード11側では、当該チャネル番号と当該管理プログラムSDとが対応づけられ、以後、同じチャネル番号をもつコマンドが与えられると、当該管理プログラムSDによって処理されることになる。「SELECTコマンド」が正常に受理されると、SIMカード11側からスマートフォン10側にレスポンスが返される。
続く、ステップS2は、「GET DATAコマンド」を送信するプロセスである。なお、ステップS2以降のコマンドには、ステップS1と同じチャネル番号が付与されており、SIMカード11側では、管理プログラムSDによって処理される。この「GET DATAコマンド」は、管理プログラムSDの「データの読出機能」に基づいて、所定のデータをSIMカード11側からスマートフォン10側に読み出すためのコマンドであり、読出対象となるデータを特定する情報が付加されている。管理プログラムSDは、当該コマンドに応じて、SIMカード11内のメモリから指定されたデータを読み出し、これを当該コマンドに対するレスポンスとしてスマートフォン10側へと返信する。
GlobalPlatform (登録商標)の仕様では、管理プログラムSDが「データの読出機能」を実行する場合は、暗号通信路を介した情報のやりとりが必須にはなっていない。図5のステップS2のプロセスは、暗号通信路の開設前に暗号通信路を介すことなく情報の読み出しが可能なデータの読出処理が行われた例を示すものである。このデータの読出処理は、本発明に直接関連する処理ではないが、ここでは、暗号通信路を介さずに行われる通信処理の一例として挙げておく。
続く、ステップS3,S4は、暗号通信路の開設準備を行うプロセスであり、後述するように、本発明に直接関連する処理である。まず、ステップS3では、「INITIALIZE UPDATEコマンド」の送信が行われる。このコマンドは、図4(b) に示すデータ構造をもつ「暗号通信路開設コマンドCMD」であり、前述したとおり、「INITIALIZE UPDATE」なるコマンド文字列情報に、キーバージョン番号および乱数を付加した形態をもつ。このコマンドは、スマートフォン10(第2の情報処理装置100)が、SIMカード11(第1の情報処理装置100)を正規の交信相手として認証するための認証コマンドとしての役割も果たす。
このような認証を行うため、スマートフォン10側では、認証用の乱数Raを発生させ、発生させた乱数を暗号通信路開設コマンドCMDに含ませて送信する。具体的には、たとえば、「INITIALIZE UPDATE,0x20,Ra」のような書式をもったコマンドが送信されることになる。ここで、「0x20」は、図3に示す鍵テーブルTのキーバージョン番号であり、「Ra」は発生させた乱数である。
一方、「INITIALIZE UPDATE,0x20,Ra」なる暗号通信路開設コマンドCMDを受信したSIMカード11は、図3に示す鍵テーブルTから、指定されたキーバージョン番号「0x20」に対応する3組の暗号鍵「KeyG,KeyH,KeyI」を取り出し、暗号通信路の設定処理(暗号化処理および復号処理の準備)を行うとともに、与えられた乱数Raに対して、これらの暗号鍵を利用した所定のアルゴリズムに基づく演算を施し、演算結果Ra′を得る(カード認証コード)。図5のステップS3に示す「Ra→Ra′」なる表記は、このような演算を示している。続いて、SIMカード11は、別な乱数Rbを発生させ、暗号通信路開設コマンドCMDに対するレスポンスとして、カード認証コードRa′と乱数Rbとをスマートフォン10側へと返信する。
一方、スマートフォン10は、返信されてきたレスポンスに含まれているカード認証コードRa′が、先ほど発生させた乱数Raに基づく正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のSIMカード11を正規の交信相手と認証する。具体的には、乱数Raに対して、SIMカード11側で行われた演算に用いられた暗号鍵と同一の暗号鍵を用いて同一のアルゴリズムに基づく演算を実行して演算結果Ra′を算出し、算出したRa′とレスポンスに含まれていたカード認証コードRa′との一致を確認する。このように、乱数Raは、スマートフォン10が、SIMカード11を正規の交信相手として認証するために用いられる。
続くステップS4では、「EXTERNAL AUTHENTICATEコマンド」の送信が行われる。このコマンドは、「外部認証コマンド」であり、SIMカード11(第1の情報処理装置100)がスマートフォン10(外部装置である第2の情報処理装置200)を正規の交信相手として認証するための認証コマンドである。スマートフォン10は、ステップS3のレスポンスにより返信されてきた乱数Rbに対して、所定の暗号鍵を利用した所定のアルゴリズムに基づく演算を実行し、演算結果Rb′(ホスト認証コード)を得る。図5のステップS4に示す「Rb→Rb′」なる表記は、このような演算を示している。続いて、スマートフォン10は、このホスト認証コードRb′を含む「EXTERNAL AUTHENTICATEコマンド」をSIMカード11に送信する。
この「EXTERNAL AUTHENTICATEコマンド」を受信したSIMカード11は、コマンドに含まれていたホスト認証コードRb′が、先ほど発生させた乱数Rbに基づく正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のスマートフォン10を正規の交信相手と認証する。具体的には、先ほど発生させた乱数Rbに対して、スマートフォン10側で行われた演算に用いられた暗号鍵と同一の暗号鍵を用いて同一のアルゴリズムに基づく演算を実行して演算結果Rb′を算出し、算出したRb′とコマンドに含まれていたホスト認証コードRb′との一致を確認する。このように、乱数Rbは、SIMカード11が、スマートフォン10を正規の交信相手として認証するために用いられる。
このステップS3,S4による相互認証処理は、暗号通信路を開設する準備段階の処理として実行される。SIMカード11とスマートフォン10との間で暗号通信を行うためには、両者が、同一の暗号鍵を保持しており、同一の暗号アルゴリズムに基づく暗号化処理および復号処理を行う機能を有していることが前提となる。上記相互認証処理は、このような前提において、それぞれが発生させた乱数に対して同一の暗号鍵を用いた同一の暗号アルゴリズムに基づく演算処理を実行させ、演算結果が一致することをもって、相手方を正規の交信相手として認証する処理ということができる。
この暗号化や復号の具体的なプロセスは、一般に利用されている公知の技術であるため、ここでは詳しい説明は省略する。こうして、SIMカード11とスマートフォン10との間での相互認証が完了すると、両者間に暗号通信路が開設される。図の破線より下に示されたステップS5以降のコマンドは、この暗号通信路を介して与えられることになる。すなわち、ステップS5以降のコマンドの実質的な内容部分は、所定の暗号化プロトコルに基づいて暗号化され、「SCP:Secure Channel Protocol」により保護されたコマンドとして送信される。
なお、図5のステップS5,S6には、スマートフォン10からSIMカード11に対して与えるコマンドについては、実線の円筒として示す暗号通信路を介して送信される例が示されているが、SIMカード11からスマートフォン10に対して返信されるレスポンスについては、破線の円筒として示す通信路を介して返信される例が示されている。これは、レスポンスデータについては、暗号化して返信するか、暗号化せずに平文のまま返信するか、を暗号処理細則として設定することができるためである。レスポンスを暗号化する旨の暗号処理細則が設定されている場合は、レスポンスデータも暗号通信路を介して返信されることになるが、レスポンスを暗号化しない旨の暗号処理細則が設定されている場合は、レスポンスデータは平文のまま通常の通信路を介して返信されることになる。
<<< §2. 従来のICカードにおける暗号処理細則の設定方法 >>>
図2に示す例の場合、第1の情報処理装置100(SIMカード11)に組み込まれた管理プログラムSDが実行する暗号通信路開設ルーチンR1と、第2の情報処理装置200(たとえば、スマートフォン10)に組み込まれたアプリAP3が実行する暗号通信路開設ルーチンR2と、が協働することにより、両者間で所定の暗号化プロトコルに基づく暗号通信が行われることになる。暗号化プロトコルとしては、現在、SCP01,SCP02,SCP03,SCP80,SCP81など、様々な様式が定められているが、暗号通信を行う両者では、同一の暗号化プロトコルに基づいて、暗号化処理や復号処理を行う必要がある。
そこで、GlobalPlatform (登録商標)の仕様に準拠したICカードの場合、管理プログラムSDをインストールする際に、当該管理プログラムSDがサポートする暗号化プロトコルを指定する方法が採用されている。たとえば、図2に示す例の場合、SIMカード11に管理プログラムSDをインストールする際に、特定の暗号化プロトコルを指定することにより、当該指定された特定の暗号化プロトコルによる暗号処理機能をもったルーチンR1が組み込まれることになる。インストール時に指定するプロトコルとしては、通信相手となる予定のスマートフォン10のアプリAP3に組み込まれているルーチンR2が採用しているプロトロルを選択すればよい。
ただ、同じ暗号化プロトロルを採用した場合であっても、暗号通信処理の細かな手順を定めた暗号処理細則の設定を変えると、両者間で行われる具体的な暗号通信形態も変わってくる。たとえば、図5のステップS5,S6に示す暗号通信の例で述べたように、SIMカード11からスマートフォン10にレスポンスを返信する際に、レスポンスデータを暗号化するか否か、といった細かな手順は、暗号処理細則によって設定される事項になる。同様に、図5のステップS3において発生する乱数Rbを、真性乱数にするか、擬似乱数にするか、といった細かな手順も、暗号処理細則によって設定される事項になる。その他、レスポンスデータにチェックコードを付与するか否か、送信コマンドへのチェックコード付与方法、暗号処理に用いる暗号鍵の数、など、個々の暗号化プロトコルごとに、それぞれ暗号通信処理の細かな手順を定めた暗号処理細則の設定が行われている。
要するに、暗号化プロトロルが暗号通信処理の大まかな手順を定める規則であるのに対して、ここでいう「暗号処理細則」とは、同一の暗号化プロトロルの範疇に入る細かな手順を定める規則、ということになる。GlobalPlatform (登録商標)の仕様に準拠したICカードの場合、この暗号処理細則についても、管理プログラムSDをインストールする際に、細かな指定を行う方法が採用されている。具体的には、パラメータ「i」と呼ばれている1バイトのデータの個々のビットフラグによって、いくつかの暗号処理細則が設定される。このパラメータ「i」の具体的内容については、後に詳述する。
結局、GlobalPlatform (登録商標)の仕様に準拠したICカードの場合、外部装置との間の暗号通信処理を担う管理プログラムSDをインストールする際に、特定の暗号化プロトロルを指定するとともに、当該特定の暗号化プロトロルに関する特定の暗号処理細則を指定する作業を行うことになる。そして、インストールされた管理プログラムSDは、指定された特定の暗号化プロトロルに基づき、指定された特定の暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して外部装置との間で暗号通信を行うことになる。そこで、ここでは便宜上、従来のICカードにおける管理プログラムSDのインストール手順を、関連するコマンドを例示しながら簡単に説明しておく。
図6は、GlobalPlatform (登録商標)の仕様に準拠したICカードに与える具体的なコマンドの書式例を示す図である。ICカード用のコマンドとしては、この他にも様々なものが用いられているが、図6(a) 〜(e) には、本発明に関連するいくつかのコマンドのみを抽出して示した。以下、これら各コマンドの書式および当該コマンドに応じてICカード側で実行される処理内容について簡単に説明を行う。なお、図6に示す各コマンド書式のデータ構造は、一部の情報のみを抽出した概念的なデータ構造であり、実際のデータ構造それ自体を示すものではない。
(a) アプリケーション選択コマンド
まず、図6(a) に示す「アプリケーション選択コマンド」について説明する。このコマンドは、図5のダイアグラムのステップS1で説明したコマンドであり、特定のチャネル番号を指定して、ICカード(第1の情報処理装置100)側の特定のアプリケーションプログラムを選択するコマンドである。図示のとおり、「SELECT (#n)+アプリ名」というデータ構造を有し、チャネル番号#nを指定して、「アプリ名」で特定されるアプリケーションプログラムを選択する指示である。
チャネル番号#nは、外部装置(第2の情報処理装置200)からICカードに対してコマンドを与える際に、当該コマンドがどのアプリケーションプログラム宛のコマンドであるかを識別させるために用いられる。ICカードには、複数のアプリケーションプログラムが格納されているため、外部装置から与えるコマンドのそれぞれにチャネル番号#nを付加して識別できるようにする必要がある。「アプリケーション選択コマンド」は、特定のアプリケーションプログラムに特定のチャネル番号#nを対応づけるための初期設定を行う役割を果たす。
たとえば、「SELECT (#3)+SD」というアプリケーション選択コマンドをICカードに与えると、管理プログラムSDがチャネル番号#3に対応づけられる。具体的には、当該コマンドを受信したICカード内のOSプログラムが、管理プログラムSDがチャネル番号#3に対応づけられた旨の記録を行うことになる。以後、チャネル番号#3が付与されたコマンドは、すべて管理プログラムSD宛のコマンドとして取り扱われ、管理プログラムSDによって実行されることになる。
(b) アプリケーションロードコマンド
次に、図6(b) に示す「アプリケーションロードコマンド」について説明する。このコマンドは、新たなアプリケーションプログラムを組み込む際の最初のステップとして実行されるコマンドである。実際には、図示のとおり、2つのコマンドによって構成される。
第1段階のロードコマンドは、「INSTALL for load (#n)+パッケージ名」というデータ構造を有し、チャネル番号#nを指定して、「パッケージ名」で特定されるパッケージをロードする旨の指示を伝えるコマンドになる。第2段階のロードコマンドは、「LOAD (#n)+バイナリデータ」というデータ構造を有し、チャネル番号#nを指定して、後続するバイナリデータのパッケージを、メモリにそのまま格納する旨の指示を伝えるコマンドになる。
ここでは、新たなアプリケーションプログラムとして、管理プログラムSDを組み込む場合の手順を例にとって、この「アプリケーションロードコマンド」を説明する。この新たなアプリケーションプログラムの組込処理は、ICカードに既に組み込まれている管理プログラムISDによって実行される。したがって、「管理プログラムSD」を新たに組み込む作業は、既に組み込み済みの別な「管理プログラムISD」によって実行されることになる。ICカードには、複数組の「管理プログラム」を相互に階層構造をもたせて組み込むことが可能であり、既に組み込み済みの「上位管理プログラム」の下に、新たに「下位管理プログラム」を組み込むことが可能である。ここで、最上位の管理プログラムは、ISD(Issuer Security Domain)と呼ばれ、ICカードの工場出荷時に既に組み込まれている。
以下、便宜上、図6(a) に例示した「SELECT (#3)+ISD」というアプリケーション選択コマンドによって、既に、上位管理プログラムISDがチャネル番号#3に対応づけられている状態において、その下に、新たに下位管理プログラムSDを組み込む作業を行う場合を例にとって説明を行う。この場合、図6(b) に示す第1段階のロードコマンドとしては「INSTALL for load (#3)+PackSD」のようなコマンドを与え、第2段階のロードコマンドとしては「LOAD (#3)+バイナリデータ」のようなコマンドを与えることになる。
上記2段階からなるアプリケーションロードコマンドは、いずれもチャネル番号「#3」が付与されたコマンドなので、「#3」への対応づけがなされている上位管理プログラムISDによって処理されることになる。上位管理プログラムISDは、第2段階のロードコマンドに含まれていた「バイナリデータ」の部分をそのままメモリの所定箇所に格納し、当該「バイナリデータ」が「PackSD」なるパッケージ名であるかの確認を行う。ここで、「バイナリデータ」の実体は、新たに組み込まれる下位管理プログラムSD用のプログラムデータである。
このように、「アプリケーションロードコマンド」は、特定のアプリケーションプログラムのパッケージをICカード内のメモリに格納するためのコマンドであり、上例の場合、当該コマンドの実行によって、新たに組み込むべき下位管理プログラムSDのバイナリデータがICカード内のメモリに格納されることになる。
(c) アプリケーションプログラムのインストールコマンド
続いて、図6(c) に示す「アプリケーションプログラムのインストールコマンド」について説明する。このコマンドは、特定の管理プログラムの管理下に、新たなアプリケーションプログラムを組み込む際の第2段階のステップとして実行されるコマンドである。したがって、ここで言うアプリケーションプログラムのインストールとは、アプリケーションのロードによってメモリ上に格納された状態になっているアプリケーションプログラムのパッケージを、メモリ上にアプリケーションインスタンスとして展開し、CPUが実行できる状態にする処理である。別言すれば、アプリケーションプログラムのインストールとは、既にロードされているパッケージをメモリ上に展開して、アプリケーションインスタンスを生成する処理ということになる。
このアプリケーションプログラムのインストールコマンドは、図示のとおり、「INSTALL for install (#n)+パッケージ名+アプリ名+パラメータ」というデータ構造を有し、チャネル番号#nを指定して、「パッケージ名」で特定されるパッケージを展開して、アプリケーションインスタンスを生成し、当該アプリケーションインスタンスに「アプリ名」で指定される名称を付与する旨の指示を伝えるコマンドになる。なお、GlobalPlatform(登録商標)の仕様に準拠したインストールコマンドでは、「パッケージ名」の後に「クラス名」なるデータを配置し、当該「クラス名」で特定されるアプリケーションインスタンスが生成されることになるが、本願では便宜上、「クラス名」の説明については省略する。
上例の場合、図6(b) に示す「アプリケーションロードコマンド」の実行により、既に、新たに組み込むべき下位管理プログラムSDのバイナリデータが、「PackSD」なるパッケージ名でICカード内のメモリに格納されているので、図6(c) に示す「インストールコマンド」としては、「INSTALL for install (#3)+PackSD+SD+パラメータ」のようなコマンドを与えればよい。このコマンドにもチャネル番号「#3」が付与されているため、「#3」に対応づけられた上位管理プログラムISDによって、当該コマンドが処理される。
すなわち、上位管理プログラムISDは、「PackSD」なるパッケージ名で既にロードされているアプリケーションプログラムパッケージをメモリ上に展開してアプリケーションインスタンスを作成するインストール処理を実行する。こうして新たにインストールされた下位管理プログラムには、指定されたアプリ名「SD」が付与され、階層構造上、上位管理プログラムISDの管理下におかれることになる。
なお、図6(c) に示されているように、アプリケーションプログラムのインストールコマンドの末尾には、パラメータが付加されている。図示のとおり、このパラメータには、「暗号化プロトコル指定パラメータ」と「暗号処理細則指定パラメータ」とが含まれている。実際には、この他にもいくつかの個別パラメータが含まれているが、本発明に直接関連しないため、ここでは説明は省略する。
ここで、暗号化プロトコル指定パラメータは、新たに組み込まれる管理プログラムSDの暗号通信路開設機能が採用する暗号化プロトコルを指定するパラメータであり、図には、「SCP03」を指定した例が示されている。一方、暗号処理細則指定パラメータは、一般にパラメータ「i」と呼ばれているパラメータであり、図には、「擬似乱数使用/レスポンス暗号化せず/チェックコード付与」という細則を指定した例が示されている。
上述したとおり、この図6(c) に示すインストールコマンドは、上位管理プログラムISDによって実行される。上位管理プログラムISDは、当該コマンドに応じて、下位管理プログラムSDとして機能するアプリケーションインスタンスを作成するインストール処理を実行することになるが、このとき、インストール後の下位管理プログラムSDが、上記パラメータの指定に応じた態様で動作するような設定を行う。したがって、上例の場合、インストール後の下位管理プログラムSDは、指定された暗号化プロトコル「SCP03」に基づき、指定された暗号処理細則「擬似乱数使用/レスポンス暗号化せず/チェックコード付与」に従った暗号通信を行うことになる。
このように、管理プログラムSDについてのアプリケーションプログラムのインストールコマンドには、パラメータの部分に、当該管理プログラムSDが将来利用することになる暗号化プロトコルおよび当該プロトコルによる暗号通信処理の細かな手順を定めた暗号処理細則を指定する情報が含まれており、インストールされた管理プログラムSDは、外部装置から暗号通信路開設コマンドが与えられた場合、このインストール時に指定された暗号化プロトコルおよび暗号処理細則に従った暗号通信路を開設することになる。
(d) 暗号通信路開設コマンド
続いて、図6(d) に示す「暗号通信路開設コマンド」について説明する。このコマンドは、既に説明したとおり、ICカードに対して暗号通信路の開設を指示するためのコマンドである。すなわち、この暗号通信路開設コマンドは、図6(d) に示すとおり、「INITIALIZE UPDATE (#n)+パラメータ」というデータ構造を有し、チャネル番号#nで指定される管理プログラムSDに対して、暗号通信路を開設する指示を与えるとともに、外部装置が、ICカードを正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。
この暗号通信路開設コマンドには、パラメータとして、キーバージョン番号および乱数が付加されている。既に述べたとおり、当該コマンドを受けた管理プログラムSDは、図3に示す鍵テーブルTからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化プロトコルを用いて、外部装置との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数Raに対して所定のアルゴリズムに基づく演算を施し、演算結果Ra′を当該コマンドに対するレスポンスとして返信する。このような処理は、既に、図5のダイアグラムのステップS3で述べたとおりである。
(e) 外部認証コマンド
続いて、図6(e) に示す「外部認証コマンド」について説明する。このコマンドは、チャネル番号#nで指定される管理プログラムSDが、現在通信を行っている外部装置を正規の交信相手として認証するためのコマンドであり、図示のとおり、「EXTERNAL AUTHENTICATE (#n)+ホスト認証コード」というデータ構造を有する。当該コマンドを受けたICカード側では、チャネル番号#nで指定された管理プログラムSDが、コマンドに付加されていたホスト認証コードを認証し、正当なものであれば、外部装置を正規の交信相手と判断する。
具体的には、既に、図5のダイアグラムのステップS4で説明を行った認証処理が行われる。すなわち、このコマンドに付加されているホスト認証コードは、図5において、スマートフォン10(外部装置)においてRb→Rb′なる演算処理によって得た演算結果Rb′であり、管理プログラムSDは、同じくRb→Rb′なる演算処理を行い、得られた演算結果がホスト認証コードRb′に一致することを確認することにより、スマートフォン10(外部装置)を正規の交信相手として認証することになる。
こうして、図5のダイアグラムのステップS3,S4の相互認証処理が完了すると、暗号通信路が開設され、ステップS5,S6の暗号通信が実行されることになる。上例の場合、前述したとおり、インストール時に指定された暗号化プロトコル「SCP03」に基づき、インストール時に指定された暗号処理細則「擬似乱数使用/レスポンス暗号化せず/チェックコード付与」に従った暗号通信が実行される。
<<< §3. 暗号処理細則指定パラメータの実例 >>>
図6(c) に示す「アプリケーションプログラムのインストールコマンド」の末尾には、パラメータが付加されており、このパラメータには、「暗号化プロトコル指定パラメータ」と「暗号処理細則指定パラメータ」とが含まれていることは、既に§2で述べたとおりである。ここで、「暗号処理細則指定パラメータ」は、一般にパラメータ「i」と呼ばれている1バイトの数値であり、「暗号化プロトコル指定パラメータ」によって指定された特定の暗号化プロトコルによる暗号通信処理の細かな手順を定めた細則を定めるものである。ここでは、現在利用されている暗号処理細則指定パラメータ(パラメータ「i」)の実例をいくつか例示しておく。
(a) 暗号化プロトコルSCP03についてのパラメータ「i」
図7(a) は、暗号化プロトコルSCP03についてのパラメータ「i」によって定められる暗号処理細則の実例を示す表であり、図7(b) は、各暗号処理細則の具体的な内容を示す表である。前述したとおり、パラメータ「i」は1バイトの値からなるデータであり、図7(a) におけるb1〜b8は、このパラメータ「i」の各ビット(b1がLSB,b8がMSB)を示している。
図7(a) の表における項目(1) は、パラメータ「i」のビットb1〜b4(X印のビット)が、RFU(Reserved for Future Use:将来のための予約ビット)であることを示しており、現時点では、いずれもビット値を「0」に設定することが決められている。なお、図7(a) の表において、各項目の行に「−」が記入されたビットは、当該項目には当該ビットは無関係であることを示す。
項目(2) ,(3) は、パラメータ「i」のビットb5(図において、0もしくは1のビット)が、相互認証時に、ICカードが生成する乱数に真正乱数を用いるか、擬似乱数を用いるか、を示すビットであることを定めている。パラメータ「i」のビットb5のビット値が「0」の場合、ICカードは図5のステップ3において真正乱数を用いて乱数Rbを発生し、パラメータ「i」のビットb5のビット値が「1」の場合、ICカードは図5のステップS3において擬似乱数を用いて乱数Rbを発生することになる。擬似乱数の具体的な発生方法については、GlobalPlatform (登録商標)に定義されているため、ここでは説明は省略する。
項目(4) 〜(6) は、パラメータ「i」のビットb6およびb7(図において、00,01,11のいずれか)が、暗号通信路開設後に返信するレスポンスデータに関する処理細則を定めるデータであることを示している。具体的には、パラメータ「i」のビットb7は、図5のステップS5,S6におけるレスポンスデータを暗号化するか否かを定めており、ICカードは、ビットb7のビット値が「0」の場合は暗号化せずに返信し、ビットb7のビット値が「1」の場合は暗号化して返信することになる。一方、パラメータ「i」のビットb6は、図5のステップS5,S6におけるレスポンスデータにチェックコードを付与するか否かを定めており、ICカードは、ビットb6のビット値が「0」の場合はチェックコードを付与しないで返信し、ビットb6のビット値が「1」の場合はチェックコードを付与して返信することになる。
項目(7) は、パラメータ「i」のビットb8(X印のビット)が、予約済ビットであることを示している。このビットb8は、暗号処理細則の指定には利用することができない。以下、このビットb8のビット値が「0」に固定されているものとして説明を行う。
以上説明した図7(a) の各項目(1) 〜(7) に示す暗号処理細則の内容は、図7(b) の表にまとめてある。図6(c) に示すインストールコマンドにおいて、暗号化プロトコル指定パラメータによって「SCP03」を指定した場合、暗号処理細則指定パラメータ(パラメータ「i」)の値は、図7の各項目に示す暗号処理細則を定めるパラメータとして機能する。パラメータ「i」は、必ず特定の暗号化プロトコルに対応させて設定され、たとえば、「SCP03 i=10h」のように表記される。ここで、末尾のhは、値「10」が16進数であることを示す(以下、同様)。「10h」はビット列「00010000」に対応する(ビットb5の値が「1」)。よって、「SCP03 i=10h」は、図7(a) の項目(3) に対応し、ICカードが生成する乱数に擬似乱数を用いることを示す暗号処理細則指定パラメータということになる。
(b) 暗号化プロトコルSCP02についてのパラメータ「i」
図8は、暗号化プロトコルSCP02についてのパラメータ「i」によって定められる暗号処理細則の実例を示す表であり、図9は、各暗号処理細則の具体的な内容を示す表である。図8の表においても、パラメータ「i」は1バイトの値からなるデータであり、b1〜b8は、このパラメータ「i」の各ビット(b1がLSB,b8がMSB)を示している。やはり、各項目の行に「−」が記入されたビットは、当該項目には当該ビットは無関係であることを示す。
図8の表における項目(1) ,(2) は、パラメータ「i」のビットb1(図において、0もしくは1のビット)が、相互認証処理および暗号通信処理に用いられる暗号鍵の数が、1組か3組かのいずれであるかを示すビットであることを定めている。図3に示す鍵テーブルTの場合、各キーバージョン番号で指定される1行には、キーID「0x01」,「0x02」,「0x03」で指定される3つのセルに各暗号鍵が収容されており、1つのキーバージョン番号を指定することにより、3組の暗号鍵を特定することができる。パラメータ「i」のビットb1のビット値が「1」の場合、これら3組の暗号鍵が相互認証処理および暗号通信処理に用いられる(項目(1) )。一方、パラメータ「i」のビットb1のビット値が「0」の場合、1組の暗号鍵(たとえば、キーID「0x01」のセルに収容された暗号鍵のみ)が相互認証処理および暗号通信処理に用いられる。
項目(3) ,(4) は、パラメータ「i」のビットb2(図において、0もしくは1のビット)が、外部装置がICカードに対してコマンドを送信する際、送信コマンドを修正せずにチェックコード演算の材料とするか、送信コマンドを修正した上でチェックコード演算の材料とするか、のいずれであるかを示すビットであることを定めている。外部装置は、暗号通信路を介したコマンド送信時に、チェックコードを付与する処理を行うことになるが、パラメータ「i」のビットb2のビット値が「1」の場合、修正せずにチェックコード演算の材料とし、パラメータ「i」のビットb2のビット値が「0」の場合、修正した上でチェックコード演算の材料とすることになる。
具体的には、図6に例示したとおり、各コマンドには、チャネル番号#nが含まれており、チェックコードを作成する際には、このチャネル番号も演算の材料になるが、ビットb2が「1」の場合は、チャネル番号を修正せずにそのまま演算し、ビットb2が「0」の場合は、チェックコードの演算を行うときにのみ、チャネル番号を「#0」に修正して演算することになる。詳細については、GlobalPlatform (登録商標)に定義されているため、ここでは説明は省略する。
なお、この項目(3) ,(4) によって定められる暗号処理細則は、ICカード側ではなく、外部装置側で実行される処理(送信コマンドのチェックコード演算処理)であるが、チェックコード生成時の演算プロセスは、ICカード側で実行される処理(受信コマンドのチェックコード確認処理)の演算プロセスにも影響があるため、ICカード側にも上記修正の有無を伝達しておく必要がある。パラメータ「i」のビットb2は、この伝達の役割を果たすことになる。
項目(5) ,(6) は、パラメータ「i」のビットb3(図において、0もしくは1のビット)が、暗号通信路開設の準備段階で行われる相互認証処理を、コマンドを用いて明示的に実施するか、コマンドを用いずに暗黙的に実施するか、のいずれであるかを示すビットであることを定めている。パラメータ「i」のビットb3のビット値が「1」の場合、コマンドを用いて明示的に相互認証処理が実施され、パラメータ「i」のビットb3のビット値が「0」の場合、コマンドを用いずに暗黙的に相互認証処理が実施される。
具体的には、パラメータ「i」のビットb3のビット値が「1」の場合、相互認証処理は、図5のステップS3,S4に示すように、「INITIALIZE UPDATE コマンド」および「EXTERNAL AUTHENTICATE コマンド」を用いて明示的に実施されることになる。これに対して、パラメータ「i」のビットb3のビット値が「0」の場合、相互認証処理は、このような明示的なコマンドを用いた形式ではなく、暗黙的な方法によって実施される。この暗黙的な方法による相互認証処理手順の詳細については、GlobalPlatform (登録商標)に定義されているため、ここでは説明は省略する。
項目(7) ,(8) は、パラメータ「i」のビットb4(図において、0もしくは1のビット)が、最初に生成するチェックコードのICV(Initial Chaining Vector)として、どの値を用いるかを示すビットであることを定めている。パラメータ「i」のビットb4のビット値が「1」の場合、コマンドの送受信を行う対象アプリケーションのアプリケーション名を用いた暗号演算の結果がICVとして使用され、パラメータ「i」のビットb4のビット値が「0」の場合、8バイトの「00h」がICVとして使用される。ICVの役割や生成手順についての詳細については、GlobalPlatform (登録商標)に定義されているため、ここでは説明は省略する。
項目(9) ,(10)は、パラメータ「i」のビットb5(図において、0もしくは1のビット)が、上記ICVを暗号化するか否かを示すビットであることを定めている。パラメータ「i」のビットb5のビット値が「1」の場合、ICVは暗号化して送信され、パラメータ「i」のビットb5のビット値が「0」の場合、ICVは暗号化せずに平文のまま送信される。
項目(11),(12)は、パラメータ「i」のビットb6(図において、0もしくは1のビット)が、レスポンスデータにチェックコードを付与するか否かを示すビットであることを定めている。パラメータ「i」のビットb6のビット値が「1」の場合、レスポンスデータはチェックコードが付与された状態で返信され、パラメータ「i」のビットb6のビット値が「0」の場合、レスポンスデータはチェックコードが付与されない状態で返信される。
項目(13),(14)は、パラメータ「i」のビットb7(図において、0もしくは1のビット)が、相互認証時に、ICカードが生成する乱数に真正乱数を用いるか、擬似乱数を用いるか、を示すビットであることを定めている。パラメータ「i」のビットb7のビット値が「0」の場合、ICカードは図5のステップ3において真正乱数を用いて乱数Rbを発生し、パラメータ「i」のビットb7のビット値が「1」の場合、ICカードは図5のステップS3において擬似乱数を用いて乱数Rbを発生することになる。前述したとおり、擬似乱数の具体的な発生方法については、GlobalPlatform (登録商標)に定義されているため、ここでは説明は省略する。
項目(15)は、パラメータ「i」のビットb8(X印のビット)が、予約済ビットであることを示している。このビットb8は、暗号処理細則の指定には利用することができない。以下、このビットb8のビット値が「0」に固定されているものとして説明を行う。
以上説明した図8の各項目(1) 〜(15)に示す暗号処理細則の内容は、図9の表にまとめてある。図6(c) に示すインストールコマンドにおいて、暗号化プロトコル指定パラメータによって「SCP02」を指定した場合、暗号処理細則指定パラメータ(パラメータ「i」)の値は、図8の各項目に示す暗号処理細則を定めるパラメータとして機能する。
(c) その他の暗号化プロトコルについてのパラメータ「i」
以上、暗号化プロトコルSCP03およびSCP02についてのパラメータ「i」による暗号処理細則の内容を例示したが、パラメータ「i」で指定される暗号処理細則の内容は、個々の暗号化プロトコルごとに異なっている。
たとえば、図10は、暗号化プロトコルSCP81についてのパラメータ「i」によって定められる暗号処理細則の実例を示す表であるが、その内容は、これまで述べてきた暗号化プロトコルSCP03,SCP02の内容とはかなり性質が異なっている。すなわち、図10に示す実例の場合、パラメータ「i」は、通信に用いるTLS(Transport Layer Security)のプロトコルを指定するために使用されている。
具体的には、図10の表における項目(1) 〜(3) は、パラメータ「i」のビットb1〜b3が、暗号化プロトコルSCP81に基づく暗号通信に用いるTLSのどのバージョンを用いるかを示すビットであることを定めている。ここでも、各項目の行に「−」が記入されたビットは、当該項目には当該ビットは無関係であることを示している。但し、ビットb1〜b3は、いずれか1つのみが値「1」をとるように設定されており、ビットb1が「1」の場合は「TLS v1.0」が用いられ、ビットb2が「1」の場合は「TLS v1.1」が用いられ、ビットb3が「1」の場合は「TLS v1.2」が用いられることを示している。
また、項目(4) は、パラメータ「i」のビットb4〜b7(X印のビット)が、RFU(Reserved for Future Use:将来のための予約ビット)であることを示しており、現時点では、いずれもビット値を「0」に設定することが決められている。一方、項目(5) は、パラメータ「i」のビットb8(X印のビット)が、予約済ビットであることを示している。このビットb8は、暗号処理細則の指定には利用することができない。
なお、パラメータ「i」による暗号処理細則の指定方法を全く採用していない暗号化プロトコルも存在する。たとえば、暗号化プロトコルSCP80については、パラメータ「i」は存在しないため、便宜上、パラメータ「i」を収容するデータ領域には、「ALL RFU (set to 0) 」として「00h」を収容している。
<<< §4. 本発明の基本概念 >>>
§2で述べたとおり、従来の一般的なICカードでは、外部装置との間の暗号通信処理を担う管理プログラムSDをインストールする際に、特定の暗号化プロトロルを指定するとともに、当該特定の暗号化プロトロルに関する特定の暗号処理細則を指定する作業が行われることになる。したがって、管理プログラムSDのインストールが完了した時点で、当該管理プログラムSDが暗号通信路を開設する際に用いられる暗号化プロトコルや、当該暗号化プロトロルを用いた通信処理の細かな手順を定めた暗号処理細則は定まる。
こうして、管理プログラムSDのインストールが完了してしまうと、その後、当該管理プログラムSDが暗号通信路の開設処理を実行する際に、その都度、任意の暗号処理細則を指定することは困難である。これは、図6(d) に示すように、GlobalPlatform (登録商標)に準拠した暗号通信路開設コマンド「INITIALIZE UPDATE」に付加するパラメータには、キーバージョン番号と乱数を含める仕様が定められているものの、パラメータ「i」のような暗号処理細則を指定する情報を含める仕様にはなっていないためである。別言すれば、上記仕様に準拠した暗号通信路開設コマンド「INITIALIZE UPDATE」を用いる限り、当該暗号通信路開設コマンドには、暗号処理細則を直接指定するパラメータを付加することができない。
その一方で、実用上は、ICカードに対して暗号通信路開設コマンド「INITIALIZE UPDATE」を与えて暗号通信路の開設を行う際に、その都度、暗号処理細則を指定できるようにすることが望まれている。これは、ICカードがスマートフォンなどの外部装置と通信する場合、外部装置内の各アプリケーションプログラムに応じて、その都度、任意の暗号処理細則を設定して暗号通信を行うことができる方が好ましいからである。
たとえば、オンラインバンキング用のアプリであれば、セキュリティを重視する必要があるため、相互認証処理には真性乱数を用い、レスポンスデータを暗号化して受信するとともに、レスポンスデータにチェックコードを付与する運用が望まれるであろう。これに対して、時間潰しにプレイするゲームアプリの場合、セキュリティは重要ではないが、より簡便な処理が好ましいので、相互認証処理には擬似乱数を用い、レスポンスデータは暗号化せず、チェックコードなしで受信する運用が望まれるであろう。
本発明は、このような外部装置に組み込まれるアプリケーションプログラムの多様化に伴い、暗号通信路を開設するたびに、その場に適した暗号処理細則の設定を可能にする具体的な方法を提供することを目的とするものである。
§2で述べたとおり、従来の一般的なICカードでは、インストールコマンド「INSTALL for install」に、暗号処理細則指定パラメータ(パラメータ「i」)を付加し、インストール時に暗号処理細則を指定するという方法が採られていた。そして、§3では、このパラメータ「i」によって指定される暗号処理細則の実例をいくつか示した。したがって、このパラメータ「i」の値を、何らかの方法で、暗号通信路開設コマンド「INITIALIZE UPDATE」を利用してICカードに伝達することができれば、暗号通信路を開設するたびに、任意の暗号処理細則を設定することが可能になる。
前述したとおり、パラメータ「i」は1バイト、すなわち、8ビットのデータによって構成される。ただ、GlobalPlatform (登録商標)の仕様に定められていない以上、当該仕様に準拠したICカードに対しては、たかが1バイトのデータであっても、暗号通信路開設コマンド「INITIALIZE UPDATE」にパラメータとして付加して伝達することはできない。暗号通信路開設コマンド「INITIALIZE UPDATE」に付加可能なパラメータは、仕様上、図6(d) に示すとおり、「キーバージョン番号」と「乱数」だけである。
そこで、本願発明者は、「キーバージョン番号」を利用してパラメータ「i」の情報をICカードへ伝達できないか、という着想の下に、種々の方法を模索することにした。ただ、「キーバージョン番号」は、図3の鍵テーブルTに示されているとおり、「0x01〜0x7F」の範囲内のアドレス空間を示すデータであり、1バイトのデータによって構成すれば十分である。したがって、この「キーバージョン番号」に、更に1バイトのパラメータ「i」の情報を組み込むことはできない。
ただ、パラメータ「i」は1バイト、すなわち、0〜255まで256通りの値をもった情報であるものの、その一部のビットは予約ビットとなっており、実際には使用されておらず、また、暗号通信路開設時には、必ずしも、すべての暗号処理細則を任意に設定する必要もない。したがって、ICカード側に伝達する暗号処理細則の情報量は、1バイトである必要はない。
たとえば、図11に示す表は、図7に示すSCP03についての暗号処理細則指定パラメータ(パラメータ「i」)を用いて、具体的な暗号処理細則を定めた表である。この表の「「i」の値」の欄には、パラメータ「i」の値として、「32」,「48」,「96」,「112」(いずれも10進表示)の4通りの例が示されている。また、「パラメータ「i」の各ビット」の欄には、これら4通りの値に対応する各ビットb1〜b8の構成(暗号処理細則指定パラメータ)が示されており、「暗号処理細則の内容」の欄には、これら4通りの値に対応して指定される暗号処理細則が示されている。各ビットの値を図7(a) ,(b) の表と対比すれば、このような結果が得られることは容易に理解できよう。
具体的には、たとえば、「i」の値が「32」の場合は、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則の内容を示すことになる。実際、暗号通信路開設時に、その都度、この図11に例示した4通りの暗号処理細則の内容のいずれかを選択して設定できるようにすれば、実用上はかなり自由度の高い運用が可能になる。しかも、この4通りの暗号処理細則の内容のいずれか1つを選択する旨の情報は、たかだか2ビットで表現することが可能である。
本願発明者は、更に、数ビット程度の情報であれば、「キーバージョン番号」に対して格納ゾーンなるものを設定することにより、「キーバージョン番号」を利用して当該情報を間接的にICカードに伝達できるのではないか、との着想を得た。図3に示す鍵テーブルTにおける「キーバージョン番号」は、「0x01〜0x7F」の範囲内のアドレス空間を示すデータであるが、たとえば、この鍵テーブルT上の「キーバージョン番号」のアドレス空間において、「0x01〜0x1F」の範囲を格納ゾーンZ1、「0x20〜0x3F」の範囲を格納ゾーンZ2、「0x40〜0x5F」の範囲を格納ゾーンZ3、「0x60〜0x7F」の範囲を格納ゾーンZ4と定義する。
一方、図11に示す4通りの暗号処理細則の内容を、上記各格納ゾーンZ1〜Z4に対応づける。具体的には、たとえば、「i」の値「32」を格納ゾーンZ1に対応づけ、「i」の値「48」を格納ゾーンZ2に対応づけ、「i」の値「96」を格納ゾーンZ3に対応づけ、「i」の値「112」を格納ゾーンZ4に対応づければよい。そうすれば、外部装置からICカードに対して、暗号通信路開設コマンド「INITIALIZE UPDATE」を送信する際に、パラメータとして付加した「キーバージョン番号」によって、4通りの暗号処理細則のうちから1つを選択する旨の情報をICカードに間接的に伝達することが可能になる。
具体的には、たとえば、暗号通信路開設コマンド「INITIALIZE UPDATE」に、「0x20」なるキーバージョン番号を付加して送信すれば、これを受信したICカードは、図3に示す鍵テーブルTから指定されたキーバージョン番号「0x20」に対応する暗号鍵KeyG,KeyH,KeyIを読み出して暗号通信路開設処理を行うことになるが、このとき、キーバージョン番号「0x20」が格納ゾーンZ2に所属することがわかるので、当該ゾーンZ2に対応づけられた「i」の値「48」が指定されたことを認識することができる。したがって、ICカードは、「相互認証処理に用いる乱数として擬似乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則に従って、暗号通信処理を行うことになる。
もちろん、外部装置側のアプリケーションプログラムが、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則に従った暗号通信処理を望むのであれば、暗号通信路開設コマンド「INITIALIZE UPDATE」に、たとえば「0x01」なるキーバージョン番号(格納ゾーンZ1に所属するキーバージョン番号)を付加して送信すればよいし、「相互認証処理に用いる乱数として擬似乱数を用い、レスポンスデータは暗号化してチェックコードも付与する」という暗号処理細則に従った暗号通信処理を望むのであれば、暗号通信路開設コマンド「INITIALIZE UPDATE」に、たとえば「0x7E」なるキーバージョン番号(格納ゾーンZ4に所属するキーバージョン番号)を付加して送信すればよい。
以上が本発明の基本概念である。この基本概念を導入すれば、2組の情報処理装置の間に暗号通信路を開設する際に、その都度、暗号通信路開設コマンドに含ませた暗号鍵の格納場所を示す格納場所指定情報によって、一方の装置から他方の装置に対して、暗号通信処理の細かな手順を定めた暗号処理細則を間接的に伝達することができるようになる。このため、暗号通信路を開設するたびに、暗号処理細則の設定が可能になる。以下、§5において、上記基本概念に基づいた本発明の基本的実施形態を説明する。
<<< §5. 本発明の基本的実施形態 >>>
図12は、本発明の基本的実施形態に係る情報処理システムの構成を示すブロック図である。この図12に示す情報処理システムは、第1の情報処理装置100と第2の情報処理装置200とを備え、両者間で所定の暗号化プロトコルに基づいた暗号通信が可能な情報処理システムである。ここでは、図2に示す例と同様に、第1の情報処理装置100として、SIMカード11に管理プログラムSDを組み込んだ装置を用い、第2の情報処理装置200として、当該SIMカード11を装着する相手となるスマートフォン10に所定のアプリケーションプログラム(アプリAP3)を組み込んだ装置を用いた例について、以下の説明を行うことにする。
図示のとおり、第1の情報処理装置100には、暗号通信路を開設する処理を行う第1の暗号通信処理部110と、暗号鍵を格納する第1の暗号鍵格納部120と、暗号処理細則を格納する暗号処理細則格納部130と、が設けられており、第1の暗号通信処理部110は、第1の暗号鍵格納部120に格納されている暗号鍵を用いて、暗号処理細則格納部130に格納されている暗号処理細則に従って、暗号通信路を開設する処理を行う。
ここに示す実施例の場合、第1の暗号通信処理部110は、実際には、SIMカード11にインストールされた管理プログラムSDの機能として実現されることになり、第1の暗号鍵格納部120および暗号処理細則格納部130は、この管理プログラムSDによって管理されるSIMカード11に内蔵されたメモリの一部分の領域として実現されることになる。
一方、第2の情報処理装置200には、第1の暗号通信処理部110が開設した暗号通信路を利用して暗号通信を行う第2の暗号通信処理部210と、暗号鍵を格納する第2の暗号鍵格納部220と、第1の暗号通信処理部110に対して暗号通信路の開設を指示する暗号通信路開設指示部230とが設けられている。
ここに示す実施例の場合、第2の暗号通信処理部210および暗号通信路開設指示部230は、実際には、スマートフォン10にインストールされたアプリケーションプログラム(アプリAP3)の機能として実現されることになり、第2の暗号鍵格納部220は、スマートフォン10に内蔵されたメモリの一部分の領域として実現されることになる。
このように、実際には、本発明に係る第1の情報処理装置100は、ICカードもしくはその他の情報処理装置を構成するコンピュータに、管理プログラムSD等の専用プログラムを組み込むことによって実現でき、本発明に係る第2の情報処理装置200は、スマートフォンもしくはその他の情報処理装置を構成するコンピュータに、所定のプログラムを組み込むことによって実現できる。
この図12に示す情報処理システムでは、後述するように、暗号通信路開設指示部230から第1の暗号通信処理部110に対して、暗号通信路開設コマンドCMDが送信されると、第1の暗号通信処理部110は、当該コマンドに基づき、第1の暗号鍵格納部120に格納されている所定の暗号鍵を用いて、暗号処理細則格納部130に格納されている所定の暗号処理細則に従って、暗号通信路を開設する処理を行う。その後、第2の暗号通信処理部210は、第2の暗号鍵格納部220に格納されている暗号鍵を用いて、当該暗号通信路を介した暗号通信を行うことになる。
続いて、上記各構成要素の機能について、更に詳しい説明を行う。まず、第1の暗号通信処理部110は、所定の暗号化プロトコルPに基づき、当該暗号化プロトコルPによる暗号通信処理の細かな手順を定めた所定の暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して第2の情報処理装置200との間で暗号通信を行う。ここで、暗号化プロトコルPは、§2で述べたとおり、管理プログラムSDをインストールする際に指定される。
第1の暗号鍵格納部120は、鍵テーブルTkを保持する構成要素である。この鍵テーブルTkには、複数の格納場所が用意されており、個々の格納場所には、それぞれ暗号化プロトコルPに用いられる暗号鍵が格納されている。図12には、説明の便宜上、鍵テーブルTk内に4つの格納場所L11〜L14が用意され、各格納場所にそれぞれ暗号鍵Keys11〜Keys14が格納されている状態が示されている。
暗号処理細則格納部130は、上記鍵テーブルTkについて設定された複数の格納ゾーンについて、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すゾーンテーブルTzを保持する構成要素である。図示の例の場合、鍵テーブルTk上には2組の格納ゾーンZ1,Z2が設定されており、各格納場所L11〜L14は、いずれかの格納ゾーンに所属する。そして、ゾーンテーブルTzには、個々の格納ゾーンZ1,Z2に対して、それぞれ暗号処理細則C1,C2が対応づけられている。
なお、図12では、説明の便宜上、鍵テーブルTk上の4つの格納場所L11〜L14に、それぞれ1つの暗号鍵が格納されている例が示されているが、GlobalPlatform (登録商標)の仕様に基づく鍵テーブルTは、図3に示すように、「キーバージョン番号」を縦にとり、「キーID」を横にとったマトリックス状のセルのそれぞれに「個別の鍵」が格納されている。この場合、同じ「キーバージョン番号」をもつ1行のセル群が、1つの格納場所を構成することになる。したがって、図12に示す鍵テーブルTkとして、図3に示す鍵テーブルTを採用した場合、4つの格納場所L11〜L14は、それぞれが、図3に示す鍵テーブルTにおける1行のセル群に対応することになり、1つの格納場所には、3組の「個別の鍵」が格納されていることになる。
このように、図12に示す鍵テーブルTkに格納されている暗号鍵Keys11〜Keys14は、それぞれが「個別の鍵」であってもよいが、図3に示す鍵テーブルTを採用した場合は、それぞれが「複数組の鍵からなる鍵群」であってもかまわない。具体的には、たとえば、図12に示す格納場所L11が、図3に示す鍵テーブルTの1行目(キーバージョン番号:0x01の行)に対応する場合、図12に示す「Keys11」は、図3に示す3組の個別の鍵「KeyA,KeyB,KeyC」に対応することになる。暗号鍵Keys11〜Keys14を「Keys」と複数形で表現しているのは、このような場合を想定したものである。
なお、本願では便宜上、図3の「KeyA」のような「個別の鍵」も、図3の「KeyA,KeyB,KeyC」のような「複数組の鍵からなる鍵群」も、特に混同のない限り、単に「暗号鍵」と呼ぶことにする。
続いて、第2の情報処理装置200の構成要素について説明する。まず、第2の暗号通信処理部210は、暗号化プロトコルP(第1の暗号通信処理部110が利用する暗号化プロトコルと同じもの)に基づく暗号通信を行う機能を有し、第1の暗号通信処理部110によって開設された暗号通信路を介して、第1の情報処理装置100との間で暗号通信を行う構成要素である。図には、両者間に暗号通信路が開設された状態が示されている。
第2の暗号鍵格納部220は、暗号化プロトコルPに用いられる暗号鍵を格納する構成要素である。第1の暗号通信処理部110と第2の暗号通信処理部210との間で暗号通信を行うためには、両者が同じ暗号化プロトコルPを用い、同じ暗号鍵を利用した暗号処理が必要になる。したがって、第2の暗号鍵格納部220には、少なくとも、第1の暗号鍵格納部120内の鍵テーブルTkに格納されている暗号鍵のいずれかと同一の特定の暗号鍵が格納されており、暗号通信を行う際には、両者で同一の暗号鍵を利用した暗号処理が実行されることになる。図示の例では、第2の暗号鍵格納部220に、特定の暗号鍵Keys13が格納されている例が示されている。この特定の暗号鍵Keys13は、第1の暗号鍵格納部120に保持されている鍵テーブルTkの格納場所L13に格納されている暗号鍵と同じものである。
暗号通信路開設指示部230は、第1の情報処理装置100に対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドCMDを与える構成要素である。この暗号通信路開設コマンドCMDには、第2の暗号鍵格納部220に格納されている暗号鍵に対応する特定の暗号鍵についての鍵テーブルTk内の格納場所を示す格納場所指定情報が含まれている。図示の例の場合、第2の暗号鍵格納部220に格納されている暗号鍵はKeys13であるので、これに対応する特定の暗号鍵Keys13が格納されている鍵テーブルTk内の格納場所L13を示す格納場所指定情報が、暗号通信路開設コマンドCMDの一部として送信される。
この暗号通信路開設コマンドCMDを受信した第1の暗号通信処理部110は、次のような方法で暗号通信路の開設処理を行う。まず、暗号通信路開設コマンドCMDに含まれている格納場所指定情報によって指定された指定格納場所L13を認識し、鍵テーブルTkの指定格納場所L13に格納されている暗号鍵Keys13を指定暗号鍵として読み出す。また、指定格納場所L13が所属する格納ゾーンZ2を認識し、ゾーンテーブルTzを参照して指定格納場所L13が所属する格納ゾーンZ2に対応づけられている暗号処理細則C2を指定暗号処理細則として認識する。そして、読み出した指定暗号鍵Keys13を用いて、認識した指定暗号処理細則C2に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設する。
なお、GlobalPlatform (登録商標)の仕様では、図6(c) に示すとおり、管理プログラムSDをインストールする際のインストールコマンドに付加されているパラメータに暗号処理細則指定パラメータ「i」が含まれており、当該パラメータ「i」は、インストール時のデフォルトの暗号処理細則として、管理プログラムSDの暗号処理ルーチンに組み込まれている。本発明では、上述したとおり、暗号通信路開設コマンドCMDを受信するたびに、新たな暗号処理細則(パラメータ「i」)が指定されるので、上記デフォルトの暗号処理細則に優先して、新たに指定された暗号処理細則が適用されることになる。
このような構成をもつ情報処理システムによれば、2組の情報処理装置100,200の間に暗号通信路を開設する際に、その都度、暗号通信路開設コマンドCMDに含ませた暗号鍵の格納場所を示す格納場所指定情報によって、第2の情報処理装置200から第1の情報処理装置100に対して、特定の暗号処理細則を指定する情報を伝達することができる。このため、暗号通信路を開設するたびに、暗号処理細則の設定が可能になる。
たとえば、図12に示す例の場合、スマートフォン10内のアプリAP3は、特定の暗号鍵Keys13を用いて、SIMカード11内の管理プログラムSDに対して暗号通信路の開設を指示することになるので、上述したとおり、指定暗号処理細則C2に従った暗号処理の手順が実行されることになる。これに対して、スマートフォン10内に別なアプリAP4(図示されていない)が組み込まれており、この別なアプリAP4が特定の暗号鍵Keys12を用いて、SIMカード11内の管理プログラムSDに対して暗号通信路の開設を指示する場合、暗号通信路開設コマンドCMDによって指定される格納場所はL12になるので、格納ゾーンZ1に対応する暗号処理細則C1に従った暗号処理の手順が実行されることになる。
このように、同じスマートフォン10が同じSIMカード11を相手に通信する場合であっても、アプリAP3が通信を行う場合は暗号処理細則C2に従った暗号処理の手順が実行され、アプリAP4が通信を行う場合は暗号処理細則C1に従った暗号処理の手順が実行されることになり、アプリケーションプログラムに応じて、異なる暗号処理細則を利用した暗号通信が可能になる。同様に、第2の情報処理装置200として、全く別なスマートフォン10′を用いた場合も、同じ手法によって、異なる暗号処理細則を利用した暗号通信が可能になる。
もちろん、鍵テーブルTkに格納される複数の暗号鍵には、同一のものが含まれていてもかまわない。たとえば、図12に示す例において、暗号鍵Keys12と暗号鍵Keys13とが、全く同じ暗号鍵であった場合を考えてみよう。この場合、暗号通信路開設コマンドCMDによって暗号鍵Keys12を指定したときと、暗号鍵Keys13を指定したときとを比べると、いずれも同一の暗号化プロトコルPに基づき、同一の暗号鍵を用いた暗号通信路が開設される点に変わりはないが、前者では、暗号処理細則C1に従った暗号処理の手順が実行され、後者では、暗号処理細則C2に従った暗号処理の手順が実行されることになる。したがって、この場合、暗号鍵Keys12の指定と暗号鍵Keys13の指定との差は、暗号処理細則C1を適用するか、暗号処理細則C2を適用するかの違いということになる。
<<< §6. 本発明のより具体的な実施形態 >>>
既に述べたとおり、GlobalPlatform (登録商標)の仕様では、図3に示すような鍵テーブルTが用いられる。そこで、ここでは、当該仕様に応じた鍵テーブルTkと§3で説明したパラメータ「i」を利用した本発明のより具体的な実施形態を説明する。
図13は、図12に示す情報処理システムに用いる鍵テーブルTkおよびゾーンテーブルTzの具体例を示す表である。すなわち、図13(a) に示す鍵テーブルTkは、第1の暗号鍵格納部120内に保持されるテーブルであり、図13(b) に示すゾーンテーブルTzは、暗号処理細則格納部130内に保持されるテーブルである。いずれのテーブルも、SIMカード11に管理プログラムSDをインストールする際に併せて組み込むようにすればよい。もちろん、インストール後に、書込コマンドを与えてこれらのテーブルを書き込むようにしてもよいし、必要があれば、これらのテーブルの内容を適宜更新するようにしてもよい。
図13(a) に示す鍵テーブルTkは、図3に示す鍵テーブルTに格納ゾーンを設定したものである。この鍵テーブルTkには、それぞれがキーバージョン番号によって特定される複数の格納場所が用意されており、個々の格納ゾーンは、1つもしくは複数の格納場所によって構成されている。
より具体的には、この鍵テーブルTkには、キーバージョン番号「0x01」〜「0x7F」で特定される127個の格納場所が用意されており、各格納場所には、それぞれキーID「0x00」〜「0x7F」で特定される128個のセルが用意されている。個々のセルは、1つの「個別の鍵」を格納するための格納庫として機能する。
図示の例の場合、鍵テーブルTkを構成する全セルのうち、実際に「個別の鍵」が格納されているセルは一部であり、多くのセルは空白になっている。そして、実際に暗号鍵が格納されている行について、合計4組の格納ゾーンZ1〜Z4が設定されている。すなわち、キーバージョン番号「0x01」に対応する1行が格納ゾーンZ1、キーバージョン番号「0x02」に対応する1行が格納ゾーンZ2、キーバージョン番号「0x20」,「0x21」,「0x22」に対応する3行が格納ゾーンZ3、キーバージョン番号「0x7E」,「0x7F」に対応する2行が格納ゾーンZ4に設定されている。
このように、本発明において設定する格納ゾーンは、1つの格納場所(1つのキーバージョン番号で特定される行)のみしか含まないゾーンであってもよいし、複数の格納場所(複数のキーバージョン番号で特定される行)を含むゾーンであってもよい。また、鍵テーブルTkの全領域に格納ゾーンの設定を行う必要はなく、図示の例のように、一部に格納ゾーンが設定されていない領域が存在していてもかまわない。
図13(a) に示す鍵テーブルTkでは、個々の格納場所は、キーバージョン番号で特定されるため、暗号通信路開設コマンドCMDには、格納場所指定情報として特定のキーバージョン番号を含ませるようにすればよい。第1の暗号通信処理部110は、このキーバージョン番号によって特定される格納場所を指定格納場所として、指定暗号鍵の読出処理および指定暗号処理細則の認識処理を行うことになる。
一方、図13(b) に示すゾーンテーブルTzは、図11に例示した4組の暗号処理細則を対応づけたテーブルである。このゾーンテーブルTzでは、まず、4つの格納ゾーンZ1〜Z4について、それぞれ数値範囲が定義されている。この数値範囲は、キーバージョン番号の範囲を示すものであり、図13に示す格納ゾーンZ1〜Z4の設定を定義するものである。具体的には、格納ゾーンZ1は「0x01」、格納ゾーンZ2は「0x02」、格納ゾーンZ3は「0x20」〜「0x22」、格納ゾーンZ4は「0x7E」〜「0x7F」として、それぞれキーバージョン番号の数値範囲によって定義される。要するに、ここに示す例の場合、個々の格納ゾーンが、1つの格納場所もしくは連続するキーバージョン番号を有する複数の格納場所によって構成され、個々の格納ゾーンがキーバージョン番号の固有の数値範囲に対応づけられていることになる。
図13(b) に示すゾーンテーブルTzでは、この4つの格納ゾーンZ1〜Z4に、パラメータ「i」の特定の値が対応づけられている。具体的には、格納ゾーンZ1〜Z4に対して、それぞれパラメータ「i」を構成する8ビットのデータが対応づけられている。図の表には、説明の便宜上、パラメータ「i」の値を10進で表示した「32」,「48」,「96」,「112」なるデータも記載されている。第1の暗号通信処理部110内の暗号化プロトコルPを実行するプログラムには、このパラメータ「i」の値によって示される暗号処理細則の内容を解釈するルーチンが備わっており、指定された暗号処理細則に従った暗号通信処理が実行される。
前述したとおり、8ビットのデータからなるパラメータ「i」は、暗号処理細則指定パラメータとして機能し、ここに示す実施例の場合、図11に示すとおり、「相互認証処理に用いる乱数」の種別,「レスポンスデータの暗号化」の有無,「レスポンスデータへのチェックコードの付与」の有無、という3つの暗号処理細則を定めるパラメータになる。たとえば、「i」の値が「32」の場合は、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則の内容を示すことになる。
したがって、暗号通信路開設指示部230から第1の暗号通信処理部110に対して与える暗号通信路開設コマンドCMDに、格納場所指定情報としてキーバージョン番号「0x01」を含ませておけば、第1の暗号通信処理部110は、まず、図13(a) に示す鍵テーブルTkから、キーバージョン番号「0x01」に対応する暗号鍵を読み出すことができる。
図13(a) に示す鍵テーブルTkの場合、各格納場所(テーブルの各行)には、それぞれキーIDによって特定される複数の格納庫(セル)が用意されており、これら複数の格納庫の全部もしくは一部に、それぞれ別個の暗号鍵が格納されている。したがって、第1の暗号通信処理部110は、暗号通信路開設コマンドCMDに含まれるキーバージョン番号によって特定される格納場所内の複数の格納庫に格納されている暗号鍵を利用して暗号通信路を開設することになる。具体的には、キーバージョン番号「0x01」が指定された場合、暗号鍵「KeyA,KeyB,KeyC」を利用して暗号通信路が開設される。
また、第1の暗号通信処理部110は、図13(b) に示すゾーンテーブルTzを参照して、キーバージョン番号「0x01」が所属する格納ゾーンZ1に対応づけられているパラメータ「i」(値「32」)を認識することができる。そこで、第1の暗号通信処理部110は、パラメータ「i」の各ビットに対応する暗号処理細則を解釈することにより、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という暗号処理細則の内容を把握することができる。その結果、暗号鍵「KeyA,KeyB,KeyC」を用い、把握した暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して第2の情報処理装置200との間で暗号通信を行うことになる。
なお、図11には、暗号処理細則として、「相互認証処理に用いる乱数」の種別,「レスポンスデータの暗号化」の有無,「レスポンスデータへのチェックコードの付与」の有無、という3つの規則を定めた例を示したが、暗号処理細則としては、この他にも任意の規則を定めることが可能である。§3では、暗号化プロトコルSCP03やSCP02で実際に定義されているパラメータ「i」の実例を示した。この実例を踏まえ、以下に、本発明を実施する上で利用可能な暗号処理細則のいくつかの例を列挙しておく。
(1) 相互認証処理の手順に関する暗号処理細則
図5のダイアグラムに示すとおり、暗号通信路を開設する前には、その準備段階の処理として、第1の情報処理装置100と第2の情報処理装置200との間で相互認証処理を行う必要があり、この相互認証処理には様々な手順が実用化されている。したがって、この相互認証処理の手順を定める規則は、本発明を実施する上で利用可能な暗号処理細則のひとつである。
具体的には、相互認証処理のために第1の情報処理装置100が生成する乱数Rbとして、真性乱数を用いるか、擬似乱数を用いるか、を定めた規則を、暗号処理細則として利用することができる。たとえば、暗号化プロトコルSCP03の場合、図7(a) の項目(2) ,(3) に示すように、パラメータ「i」のビットb5に上記規則が定められており、暗号化プロトコルSCP02の場合、図9の項目(13) ,(14) に示すように、パラメータ「i」のビットb7に上記規則が定められている。
また、相互認証処理および暗号通信処理に用いられる暗号鍵の数を定める規則を、暗号処理細則として利用することもできる。たとえば、暗号化プロトコルSCP02の場合、図8の項目(1) ,(2) に示すように、パラメータ「i」のビットb1に上記規則が定められている。
更に、相互認証処理を、認証用コマンドを用いて明示的に実施するか、認証用コマンドを用いずに暗黙的に実施するか、を定める規則を、暗号処理細則として利用することもできる。たとえば、暗号化プロトコルSCP02の場合、図8の項目(5) ,(6) に示すように、パラメータ「i」のビットb3に上記規則が定められている。
したがって、ゾーンテーブルとして、パラメータ「i」の特定の値を各格納ゾーンに対応づけたテーブルを用いるようにすれば、上述したいくつかの相互認証処理の手順に関する暗号処理細則を、暗号通信路開設コマンドによって設定することが可能になる。
(2) レスポンスの送信手順に関する暗号処理細則
開設された暗号通信路を介して第1の情報処理装置から第2の情報処理装置にレスポンスを送信する方法にも、種々の異なる手順が定められており、このレスポンスの送信手順を定める規則も、本発明を実施する上で利用可能な暗号処理細則のひとつである。
具体的には、レスポンスデータを暗号化するか否かを定めた規則を、暗号処理細則として利用することができる。たとえば、暗号化プロトコルSCP03の場合、図7(a) の項目(4) 〜(6) に示すように、パラメータ「i」のビットb7に上記規則が定められている。同様に、レスポンスデータにチェックコードを付与するか否かを定めた細則を、暗号処理細則として利用することもできる。たとえば、暗号化プロトコルSCP03の場合、図7(a) の項目(4) 〜(6) に示すように、パラメータ「i」のビットb6に上記規則が定められており、暗号化プロトコルSCP02の場合、図8の項目(11) ,(12) に示すように、パラメータ「i」のビットb6に上記規則が定められている。
したがって、ゾーンテーブルとして、パラメータ「i」の特定の値を各格納ゾーンに対応づけたテーブルを用いるようにすれば、上述したレスポンスの送信手順に関する暗号処理細則を、暗号通信路開設コマンドによって設定することが可能になる。
(3) コマンドの送信手順に関する暗号処理細則
開設された暗号通信路を介して第2の情報処理装置から第1の情報処理装置にコマンドを送信する方法にも、種々の異なる手順が定められており、このコマンドの送信手順を定める規則も、本発明を実施する上で利用可能な暗号処理細則のひとつである。
具体的には、送信コマンドへのチェックコード付与に関する事項を定めた規則を、暗号処理細則として利用することができる。たとえば、暗号化プロトコルSCP02の場合、図8の項目(3) ,(4) に示すように、パラメータ「i」のビットb2に、チェックコード演算時に送信コマンドを修正するか否かの規則が定められており、また、図8の項目(7) 〜(10) に示すように、パラメータ「i」のビットb4,b5に、ICVに関する規則が定められている。
したがって、ゾーンテーブルとして、パラメータ「i」の特定の値を各格納ゾーンに対応づけたテーブルを用いるようにすれば、上述したコマンドの送信手順に関する暗号処理細則を、暗号通信路開設コマンドによって設定することが可能になる。
<<< §7. 暗号化プロトコルを指定する変形例 >>>
本発明の特徴は、鍵テーブルTk上に複数の格納ゾーンを設定しておき、個々の格納ゾーンにそれぞれ所定の暗号処理細則を対応づけたゾーンテーブルTzを用意しておくことにより、暗号通信路開設コマンドCMDにより鍵テーブルTk上の特定の格納場所が指定されたときに、当該指定格納場所が所属する格納ゾーンに対応づけられた暗号処理細則を認識することができるようにし、暗号通信路の開設を行う都度、所望の暗号処理細則を指定できるようにした点にある。
一方、特願2015−168868号には、同様の考え方に基づいて、暗号通信路の開設を行う都度、所望の暗号化プロトコルを指定できるようにした発明(以下、先願発明という)が開示されている。この先願発明の特徴は、鍵テーブルTk上に複数の格納ゾーンを設定しておき、個々の格納ゾーンにそれぞれ所定の暗号化プロトコルを対応づけたゾーンテーブルTzを用意しておくことにより、暗号通信路開設コマンドCMDにより鍵テーブルTk上の特定の格納場所が指定されたときに、当該指定格納場所が所属する格納ゾーンに対応づけられた暗号化プロトコルを認識することができるようにし、暗号通信路の開設を行う都度、所望の暗号化プロトコルを指定できるようにした点にある。
このように、本発明と先願発明は、いずれも鍵テーブルTk上に複数の格納ゾーンを設定しておき、暗号通信路開設コマンドCMDにより鍵テーブルTk上の特定の格納場所が指定されたときに、当該指定格納場所が所属する格納ゾーンを認識することにより、各格納ゾーンに対応づけられていた「何らかの情報」を把握する、という技術思想を用いる点において共通する。ただ、先願発明の場合、「何らかの情報」として「暗号化プロトコルを指定する情報」を用いているのに対して、本発明の場合、「何らかの情報」として「暗号処理細則」を用いている点が相違する。
このように、本発明と先願発明とは、共通した技術思想を用いているため、両者を組み合わせて実施することが可能である。ここで述べる変形例は、このような組み合わせに係る実施形態に相当するものである。
結局、この変形例の特徴は、鍵テーブルTk上に複数の格納ゾーンを設定しておき、個々の格納ゾーンにそれぞれ所定の暗号化プロトコルおよび暗号処理細則の双方を対応づけたゾーンテーブルTzを用意しておくことにより、暗号通信路開設コマンドCMDにより鍵テーブルTk上の特定の格納場所が指定されたときに、当該指定格納場所が所属する格納ゾーンに対応づけられた暗号化プロトコルおよび暗号処理細則の双方を認識することができるようにし、暗号通信路の開設を行う都度、所望の暗号化プロトコルおよび暗号処理細則の双方を指定できるようにした点にある。
図14は、このような本発明の変形例に係る情報処理システムの構成を示すブロック図である。この図14に示す情報処理システムの基本構成は、図12に示す基本的実施形態に係る情報処理システムの基本構成とほぼ同じである。そこで、図14に示す情報処理システムの各構成要素については、図12に示す情報処理システムの対応する各構成要素の符号末尾に「A」を付した符号を用いて示してある。
具体的には、図14に示す情報処理システムは、第1の情報処理装置100Aと第2の情報処理装置200Aとを備え、両者間で所定の暗号化プロトコルに基づいた暗号通信が可能な情報処理システムである。ここでも、第1の情報処理装置100Aとして、SIMカード11に管理プログラムSDAを組み込んだ装置を用い、第2の情報処理装置200Aとして、当該SIMカード11を装着する相手となるスマートフォン10に所定のアプリケーションプログラム(アプリAP6)を組み込んだ装置を用いた例について、以下の説明を行うことにする。
図示のとおり、第1の情報処理装置100Aには、暗号通信路を開設する処理を行う第1の暗号通信処理部110Aと、暗号鍵を格納する第1の暗号鍵格納部120Aと、暗号処理細則を格納する暗号処理細則格納部130Aと、が設けられており、第1の暗号通信処理部110Aは、第1の暗号鍵格納部120Aに格納されている暗号鍵を用いて、暗号処理細則格納部130Aに格納されている暗号処理細則に従って、暗号通信路を開設する処理を行う。
ここに示す変形例の場合も、第1の暗号通信処理部110Aは、実際には、SIMカード11にインストールされた管理プログラムSDAの機能として実現されることになり、第1の暗号鍵格納部120Aおよび暗号処理細則格納部130Aは、この管理プログラムSDAによって管理されるSIMカード11に内蔵されたメモリの一部分の領域として実現されることになる。
一方、第2の情報処理装置200Aには、第1の暗号通信処理部110Aが開設した暗号通信路を利用して暗号通信を行う第2の暗号通信処理部210Aと、暗号鍵を格納する第2の暗号鍵格納部220Aと、第1の暗号通信処理部110Aに対して暗号通信路の開設を指示する暗号通信路開設指示部230Aとが設けられている。
ここに示す変形例の場合、第2の暗号通信処理部210Aおよび暗号通信路開設指示部230Aは、実際には、スマートフォン10にインストールされたアプリケーションプログラム(アプリAP6)の機能として実現されることになり、第2の暗号鍵格納部220Aは、スマートフォン10に内蔵されたメモリの一部分の領域として実現されることになる。
このように、図14に示す変形例の基本構成と図12に示す基本的実施形態の基本構成とは、ほぼ同じである。ただ、個々の構成要素の細かな処理動作に若干の相違がある。以下、この相違点を説明する。
第1の暗号通信処理部110Aは、所定の暗号化プロトコルに基づき、当該暗号化プロトコルによる暗号通信処理の細かな手順を定めた所定の暗号処理細則に従って、暗号通信を行うための暗号通信路を開設し、開設された暗号通信路を介して第2の情報処理装置200Aとの間で暗号通信を行う。ただ、第1の暗号通信処理部110Aには、複数N通り(N≧2)の暗号化プロトコルP1〜PNが用意されており、このN通りの暗号化プロトコルP1〜PNのうちの任意の暗号化プロトコルに基づいて暗号通信を行う機能を有している。そして、第2の情報処理装置200Aから暗号通信路開設コマンドCMDが与えられたときには、このN通りの暗号化プロトコルP1〜PNのうち、第2の情報処理装置200Aから指定された指定暗号化プロトコルに基づいて、暗号通信を行うための暗号通信路を開設する。
一方、第1の暗号鍵格納部120Aは、鍵テーブルTkAを保持する構成要素である。この鍵テーブルTkAには、複数の格納場所が用意されており、個々の格納場所には、それぞれ上記N通りの暗号化プロトコルP1〜PNのそれぞれに用いられる暗号鍵が格納されている。そして、この鍵テーブルTkAには、複数の格納ゾーンが設定される。図14には、鍵テーブルTkA上に8つの格納ゾーンZ1〜Z8が設定されている状態が示されている。実際には、これら各格納ゾーンZ1〜Z8には、それぞれ1つもしくは複数の格納場所が含まれているが、ここでは、これら格納場所の図示は省略されている。もちろん、GlobalPlatform (登録商標)の仕様に基づく鍵テーブルは、図13に示すような形態をとるので、各格納ゾーンZ1〜Z8は、それぞれ「キーバージョン番号」の範囲によって定められることになる。
暗号処理細則格納部130Aには、この鍵テーブルTkA上に設定された個々の格納ゾーンZ1〜Z8に関するゾーンテーブルTzAが保持されている。これまで述べてきた実施例の場合、ゾーンテーブルは、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すテーブルであったが、この変形例におけるゾーンテーブルTzAは、個々の格納ゾーンZ1〜Z8と個々の暗号処理細則との対応関係に加えて、更に、個々の格納ゾーンZ1〜Z8と個々の暗号化プロトコルとの対応関係を示している。すなわち、ゾーンテーブルTzAにおける特定の格納ゾーンの欄には、所定の暗号処理細則を特定する情報だけでなく、所定の暗号化プロトコルを特定する情報が含まれている。したがって、1つの格納ゾーンが決まると、1つの暗号処理細則が定まり、更に、1つの暗号化プロトコルが定まる。
続いて、第2の情報処理装置200Aの構成要素について説明する。まず、第2の暗号通信処理部210Aは、前述した複数N通りの暗号化プロトコルP1〜PNのうちの少なくとも1つの特定の暗号化プロトコルに基づく暗号通信を行う機能を有し、当該特定の暗号化プロトコルに基づく暗号通信を行うために開設された暗号通信路を介して第1の情報処理装置100Aとの間で暗号通信を行う構成要素である。図示の例は、第2の暗号通信処理部210Aが、第1の暗号化プロトコルP1に基づく暗号通信を行う機能を有している例であり、2組の情報処理装置100A,200Aは、第1の暗号化プロトコルP1に基づいて暗号通信を行うことになる。図には、両者間に第1の暗号化プロトコルP1に基づく暗号通信路が開設された状態が示されている。
第2の暗号鍵格納部220Aは、第2の暗号通信処理部210Aが利用する特定の暗号化プロトコル(図示の例の場合、第1の暗号化プロトコルP1)に用いられる暗号鍵を格納する構成要素である。第1の暗号通信処理部110Aと第2の暗号通信処理部210Aとの間で暗号通信を行うためには、両者が同じ暗号化プロトコルを用い、同じ暗号鍵を利用した暗号処理が必要になる。したがって、図示の例の場合、第2の暗号鍵格納部220Aには、第1の暗号鍵格納部120A内の鍵テーブルTkAに格納されている第1の暗号化プロトコルP1に用いる暗号鍵と同一の特定の暗号鍵KeysXが格納されている。そして、両者間の暗号通信は、この暗号鍵KeysXを用いた第1の暗号化プロトコルP1に基づいて実行される。
暗号通信路開設指示部230Aは、これまで述べてきた基本的実施形態と同様に、第1の情報処理装置100Aに対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドCMDを与える構成要素である。この暗号通信路開設コマンドCMDには、第2の暗号鍵格納部220Aに格納されている特定の暗号鍵KeysXに対応する暗号鍵についての鍵テーブルTkA内の格納場所を示す格納場所指定情報が含まれている。
この暗号通信路開設コマンドCMDを受信した第1の暗号通信処理部110は、次のような方法で暗号通信路の開設処理を行う。まず、暗号通信路開設コマンドCMDに含まれている格納場所指定情報によって指定された指定格納場所を認識し、鍵テーブルTkAの当該指定格納場所に格納されている暗号鍵KeysXを指定暗号鍵として読み出す。また、この指定格納場所が所属する格納ゾーンを認識し、ゾーンテーブルTzAを参照して指定格納場所が所属する格納ゾーンに対応づけられている暗号処理細則を指定暗号処理細則として認識するとともに、当該格納ゾーンに対応づけられている暗号化プロトコルを指定暗号化プロトコルとして認識する。そして、認識した指定暗号化プロトコルに基づき、読み出した指定暗号鍵KeysXを用いて、認識した指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設する。
たとえば、指定暗号鍵KeysXの格納場所が、第i番目の格納ゾーンZiに所属していた場合は、ゾーンテーブルTzAの格納ゾーンZiに対応づけられている情報が参照される。たとえば、格納ゾーンZiについて、暗号処理細則Cjおよび暗号化プロトコルPkが対応づけられていた場合、第1の暗号通信処理部110は、指定暗号化プロトコルPkに基づき、指定暗号鍵KeysXを用いて、指定暗号処理細則Cjに従った手順を実行することにより、暗号通信を行うための暗号通信路を開設することになる。
このような構成をもつ情報処理システムによれば、2組の情報処理装置100A,200Aの間に暗号通信路を開設する際に、その都度、暗号通信路開設コマンドCMDに含ませた暗号鍵の格納場所を示す格納場所指定情報によって、第2の情報処理装置200から第1の情報処理装置100に対して、特定の暗号化プロトコルおよび特定の暗号処理細則を指定する情報を伝達することができる。このため、暗号通信路を開設するたびに、暗号化プロトコルおよび暗号処理細則の設定が可能になる。
図14に示す例の場合、スマートフォン10内のアプリAP6は、特定の暗号化プロトコルP1および特定の暗号鍵KeysXを用いて、SIMカード11内の管理プログラムSDAに対して暗号通信路の開設を指示することになるが、スマートフォン10内に別なアプリAP7が組み込まれており、この別なアプリAP7が別な暗号化プロトコルを用いてSIMカード11内の管理プログラムSDAに対して暗号通信路の開設を指示する場合は、暗号通信路開設コマンドCMDに、当該別な暗号化プロトコルに対応した格納ゾーン内の格納場所指定情報を含ませておくようにすればよい。
図15は、図14に示す情報処理システムに用いる鍵テーブルTkAおよびゾーンテーブルTzAの具体例を示す表である。図15(a) に示す鍵テーブルTkAの基本的な構成は、図13に示す鍵テーブルTkと同じである。ただ、ここでは、8つの格納ゾーンZ1〜Z8が設定されていることを示すため、テーブルの表示形式を変えて示す。図13に示す鍵テーブルTkと同様に、図15(a) に示す鍵テーブルTkAにも、キーバージョン番号として、「0x01〜0x7F」の範囲のアドレス空間が割り当てられているが、格納ゾーンの設定は、「0x01〜0x3F」の範囲についてのみ行われており、暗号鍵Keyも、この範囲内のアドレス空間にのみ格納されている。
図示の例の場合、各格納ゾーンZ1〜Z8は、それぞれ7個もしくは8個の格納場所(図13に示す鍵テーブルTkにおける7行分もしくは8行分の格納場所)によって構成されている。図13に示す鍵テーブルTkと同様に、1つの格納場所には、「0x00〜0x7F」の範囲のキーIDによって特定されるセル(格納庫)が配置されており、各セルには、それぞれ個々の暗号鍵Keyが格納されている(図示省略)。
一方、図15(b) には、図15(a) に示す鍵テーブルTkAのゾーン構成に対応したゾーンテーブルTzAの具体例が示されている。すなわち、8つの格納ゾーンZ1〜Z8のそれぞれについて、キーバージョン番号の数値範囲が示され、各格納ゾーンZ1〜Z8のそれぞれについて、所定の暗号化プロトコルとパラメータ「i」の値が対応づけられている。なお、説明の便宜上、パラメータ「i」については、「i」の各ビットの表示と、10進表現による「i」の値の表示とを行っているが、実際のゾーンテーブルTzAでは、数値範囲を示すデータと、暗号化プロトコルを示すデータと、「i」の各ビットと、が対応づけられていれば足りる。
ここで、パラメータ「i」は、これまで述べてきた基本的実施形態と同様に、暗号処理細則指定パラメータであり、各暗号化プロトコルに応じて、特定の暗号処理細則を定める役割を果たす。図示の例は、2通りの暗号化プロトコルに対応した例であり(図14においてN=2に設定し、第1の暗号通信処理部110Aが、2通りの暗号化プロトコルP1およびP2に対応している例)、暗号通信路開設コマンドCMDによって、格納ゾーンZ1〜Z4に所属する格納場所が指定された場合は、第1の暗号化プロトコルP1(具体的には、プロトコルSCP03)を用いた暗号通信路が開設され、格納ゾーンZ5〜Z8に所属する格納場所が指定された場合は、第2の暗号化プロトコルP2(具体的には、プロトコルSCP02)を用いた暗号通信路が開設されることになる。
このように、暗号通信路開設コマンドCMDは、2通りの暗号化プロトコルのいずれか一方を指定する役割を果たすとともに、いずれの暗号化プロトコルを指定した場合も、4通りの暗号処理細則のいずれか1つを指定する役割も果たす。たとえば、格納ゾーンZ1に所属する格納場所が指定された場合は、暗号化プロトコルSCP03が指定されるとともに、「i」の値「32」に対応した暗号処理細則が指定されることになる。これは、図11の表の第1行目に示す暗号処理細則であり、「相互認証処理に用いる乱数として真性乱数を用い、レスポンスデータは暗号化しないがチェックコードは付与する」という内容の規則を示している。
もちろん、パラメータ「i」の値によって示される個々の暗号処理細則は、個々の暗号化プロトコルごとに定義されているので、パラメータ「i」の値のもつ意味は、暗号化プロトコルSCP03と暗号化プロトコルSCP02とでは異なったものになる。個々の暗号化プロトコルを実行するプログラムには、このパラメータ「i」の値によって示される暗号処理細則の内容を解釈するルーチンが備わっており、指定された暗号処理細則に従った暗号通信処理が実行される。
最後に、図14に示す情報処理システムの更なる変形例を、図16のブロック図を参照しながら説明する。図16に示す情報処理システムの基本構成は、図14に示す情報処理システムの基本構成とほぼ同じである。すなわち、図16に示す情報処理システムは、第1の情報処理装置100Aと第2の情報処理装置200Bとを備え、両者間で所定の暗号化プロトコルに基づいた暗号通信が可能な情報処理システムである。ここで、第1の情報処理装置100Aは、図14に示す第1の情報処理装置100Aと全く同じものであるが、第2の情報処理装置200Bは、図14に示す第2の情報処理装置200Aに若干変更を加えたものである。
すなわち、図16に示す第2の情報処理装置200Bは、スマートフォン10に所定のアプリケーションプログラム(アプリAP8)を組み込むことにより構成され、第1の情報処理装置100Aとの間で暗号通信を行う第2の暗号通信処理部210Bと、第2の暗号通信処理部210Bが利用する暗号化プロトコルに用いられる暗号鍵を格納した第2の暗号鍵格納部220Bと、第1の情報処理装置100Aに対して、暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドCMDを与える暗号通信路開設指示部230Aと、が設けられている。
ここで、暗号通信路開設指示部230Aは、図14に示す暗号通信路開設指示部230Aと全く同じ構成要素である。したがって、この図16に示す情報処理システムは、図14に示す情報処理システムにおける第2の暗号通信処理部210Aを第2の暗号通信処理部210Bに置き換え、第2の暗号鍵格納部220Aを第2の暗号鍵格納部220Bに置き換えたものである。
図14に示す情報処理システムにおける第2の情報処理装置210Aは、特定の暗号化プロトコルとして組み込まれた第1の暗号化プロトコルP1のみに基づいて暗号通信を行う構成要素であるが、図16に示す情報処理システムにおける第2の情報処理装置210Bは、複数の暗号化プロトコル(図示の例の場合は、第1の暗号化プロトコルP1と第2の暗号化プロトコルP2)に対応し、いずれか1つの暗号化プロトコルを選択して暗号通信を行うことができる。
また、図14に示す情報処理システムにおける第2の暗号鍵格納部220Aは、特定の暗号鍵として、暗号鍵KeysXのみを格納する構成要素であるが、図16に示す情報処理システムにおける第2の暗号鍵格納部220Bは、複数の暗号鍵(図示の例の場合は、3組の暗号鍵KeysX,KeysY,KeysZ)を格納しており、いずれか1つの暗号鍵を選択して暗号通信に用いることができる。
要するに、図14に示す情報処理システムにおける第2の情報処理装置200Aでは、暗号通信に用いる暗号化プロトコルおよび暗号鍵が1つのみに限定されていたが、図16に示す情報処理システムにおける第2の情報処理装置200Bでは、暗号通信に用いる暗号化プロトコルおよび暗号鍵が複数用意されており、それぞれ任意のものを選択的に利用することができる。
もっとも、第1の情報処理装置100Aとの間で暗号通信を行うためには、第1の情報処理装置100A側で用いる暗号化プロトコルおよび暗号鍵と、第2の情報処理装置200B側で用いる暗号化プロトコルおよび暗号鍵とが対応している必要があるので、暗号通信路開設指示部230Aによって暗号通信路開設コマンドCMDを送信する際には、両者で用いる暗号化プロトコルおよび暗号鍵が一致するように、格納場所指定情報を適切に指定する必要がある。
具体的には、たとえば、第2の情報処理装置200B側で、第2の暗号化プロトコルP2および暗号鍵KeysYを用いた暗号通信を意図している場合には、ゾーンテーブルTzA上において第2の暗号化プロトコルP2が対応づけられた特定のゾーンに所属する暗号鍵KeysYの格納場所を、格納場所指定情報として指定した暗号通信路開設コマンドCMDを送信すればよい。
このように、本発明において、第2の情報処理装置の構成要素である第2の暗号通信処理部は、特定の暗号化プロトコルのみに対応した構成要素であってもよいし、複数の暗号化プロトコルに対応しこれを選択的に利用できる構成要素であってもよい。同様に、本発明において、第2の情報処理装置の構成要素である第2の暗号鍵格納部は、特定の暗号鍵のみを格納した構成要素であってもよいし、複数の暗号鍵を格納しこれを選択的に利用できる構成要素であってもよい。これは、§6までに述べた基本的実施形態についても同様である。
<<< §8. 方法発明としての実施形態 >>>
最後に、本発明を暗号通信方法という方法発明として把握した場合の実施形態を述べておく。図17は、本発明に係る暗号通信方法の基本手順を示す流れ図である。この暗号通信方法は、第1の情報処理装置と第2の情報処理装置との間で、所定の暗号化プロトコルに基づいた暗号通信を行う暗号通信方法であり、図示のとおり、プログラム準備段階S11,鍵テーブル準備段階S12,ゾーンテーブル準備段階S13,暗号通信路開設指示段階S14,暗号通信路開設段階S15,暗号通信段階S16という各段階によって構成される。なお、この図17の流れ図における各ステップを示すブロックの右側の記載は、当該ステップが、図12に示す第1の情報処理装置100によって実行される手順であるのか、第2の情報処理装置200によって実行される手順であるのかを示している。
ステップS11のプログラム準備段階は、第1の情報処理装置100が、所定の暗号化プロトコルに基づく暗号通信を行うプログラムを実行可能な状態に準備する段階である。具体的には、第1の情報処理装置100が、SIM11のようなICカードからなる場合、暗号通信機能は管理プログラムSDによって実現される。したがって、このステップS11のプログラム準備段階は、管理プログラムSDをインストールする処理によって行われる。図14に示す変形例を適用する場合は、複数N通り(N≧2)の暗号化プロトコルに基づく暗号通信を行うプログラムが実行可能な状態になる。
ステップS12の鍵テーブル準備段階は、第1の情報処理装置100が、複数の格納場所にそれぞれ上記暗号化プロトコルに用いられる暗号鍵を格納した鍵テーブルTkを準備する段階である。具体的には、第1の暗号鍵格納部120に、図13(a) に示すような鍵テーブルTkが格納されることになる。この鍵テーブル準備段階は、第1の情報処理装置100に対して、外部装置からデータ書込コマンドを与えることにより実行することができる。
ステップS13のゾーンテーブル準備段階は、第1の情報処理装置100が、上記鍵テーブルTk上に、1つもしくは複数の格納場所を含む格納ゾーンを複数組設定し、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すゾーンテーブルを準備する段階である。具体的には、暗号処理細則格納部130に、図13(b) に示すようなゾーンテーブルTzが格納されることになる。このゾーンテーブル準備段階も、第1の情報処理装置100に対して、外部装置からデータ書込コマンドを与えることにより実行することができる。図14に示す変形例を適用する場合は、図15(b) に示すように、個々の格納ゾーンと個々の暗号処理細則との対応関係を示すだけでなく、個々の格納ゾーンと個々の暗号化プロトコルとの対応関係を示すゾーンテーブルTzAが準備されることになる。
ステップS14の暗号通信路開設指示段階は、第2の情報処理装置200が、第1の情報処理装置100に対して、ステップS11のプログラム準備段階で準備された暗号化プロトコルに基づいて、ステップS12の暗号鍵格納段階で特定の格納場所に格納された特定の暗号鍵を用いた暗号通信を行うための暗号通信路の開設を指示する暗号通信路開設コマンドCMDを送信する段階である。この暗号通信路開設コマンドCMDには、鍵テーブルTk内の特定の格納場所を示す格納場所指定情報が含まれている。
ステップS15の暗号通信路開設段階は、第1の情報処理装置100が、受信した暗号通信路開設コマンドCMDに基づいて、所定の暗号化プロトコルに基づく暗号通信を行うための暗号通信路を開設する段階である。すなわち、第1の情報処理装置100は、受信した暗号通信路開設コマンドCMDに含まれている格納場所指定情報によって指定された指定格納場所に格納されている暗号鍵を指定暗号鍵として読み出す。そして、ステップS13で準備したゾーンテーブルTzを参照して、この指定格納場所が所属する格納ゾーンに対応づけられている暗号処理細則を指定暗号処理細則として認識し、読み出した指定暗号鍵を用いて、上記指定暗号処理細則に従った手順を実行することにより、暗号通信を行うための暗号通信路を開設する。図14に示す変形例を適用する場合は、更に、ゾーンテーブルTzを参照して、指定格納場所が所属する格納ゾーンに対応づけられている暗号化プロトコルを指定暗号化プロトコルとして認識し、この指定暗号化プロトコルを用いて暗号通信を行うための暗号通信路を開設することになる。
ステップS16の暗号通信段階は、第1の情報処理装置100および第2の情報処理装置200が、ステップS15で開設された暗号通信路を介して暗号通信を行う段階である。実際には、送信時には、送信データを暗号化して送信し、受信時には、受信データを復号して取り込む処理が行われる。