以下、本発明を図示する実施形態に基づいて説明する。
<<< §1. ICカードに対する従来の一般的な通信形態 >>>
本発明は、外部装置との間で暗号通信を行う機能を有する情報処理装置に係るものであり、特に、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には、情報処理装置100と外部装置200との間に通信路を開設して相互に交信を行う例が示されている。
ただ、上述したとおり、本発明は、ICカードに適用するのに特に適した技術であるので、ここでは、情報処理装置100がスマートフォン10に装着されたSIMカード11であり、外部装置200が当該スマートフォン10(もしくは、外部サーバ20でもよい)である場合について、以下の説明を行うことにする。
SIMカード11をはじめとするICカードには、通常、複数のアプリケーションプログラムが組み込まれる。図2の情報処理装置100(SIMカード11)には、2組の一般アプリケーションプログラムAP1,AP2が組み込まれた状態が示されている。また、ICカードには、通常、少なくとも1組の管理プログラムSD(Security Domain プログラム)が組み込まれている。この管理プログラムSDは、分類上はアプリケーションプログラムの一種であるが、OSプログラムと協働して、ICカード全体の動作や、管理下にある他のアプリケーションプログラムを管理する役割を果たす。そこで、本願では、情報処理装置100(SIMカード11)に組み込まれるアプリケーションプログラムのうち、Security Domain プログラムを「管理プログラム」と呼び、それ以外のアプリケーションプログラムを「一般アプリケーションプログラム(略称:一般アプリ)」と呼ぶことにする。
後に詳述するように、管理プログラムSDには、管理下となるアプリケーションプログラムについてのロード機能、インストール機能、削除機能、発行データの書込機能、暗号通信路開設機能などの諸機能が備わっている。図2に示す管理プログラムSDには、暗号通信路開設ルーチンR1および鍵テーブルT1が組み込まれているが、これは暗号通信路開設機能を実現するための要素である。ICカードからなる情報処理装置100の場合、通常、「SCP:Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、外部装置200との間にセキュアな暗号通信路を開設して暗号通信が行われる。このような機能を実現するため、管理プログラムSD内には、暗号通信路開設ルーチンR1と鍵テーブルT1とが組み込まれている。
一方、外部装置200側にも、これに応じた暗号通信を行う機能をもったアプリケーションプログラムAP3が用意されており、暗号通信路開設ルーチンR2と鍵テーブルT2とが組み込まれている。たとえば、外部装置200がスマートフォン10の場合、アプリケーションプログラムAP3は、このスマートフォン10にインストールされたアプリケーションプログラムの1つである。
情報処理装置100側の暗号通信路開設ルーチンR1と、外部装置200側の暗号通信路開設ルーチンR2は、両装置間にセキュアな暗号通信路を開設し、同一の暗号化プロトコルに基づいた暗号通信を行うためのルーチンであり、鍵テーブルT1と鍵テーブルT2には、同一の暗号鍵が収容されている。したがって、図示の例の場合、管理プログラムSDとアプリケーションプログラムAP3とによって、情報処理装置100と外部装置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〜KeyRが特定のセルに格納された状態が示されている。もちろん、暗号鍵はすべてのセルに格納する必要はなく、必要な暗号鍵が所定のセルに格納されていれば足りる。
ある1つの暗号化プロトコルでは、ある1つのキーバージョン番号が指定され、当該キーバージョン番号をもったセルに格納されている1つもしくは複数の暗号鍵を利用した暗号化処理もしくは復号処理が実行される。図示の例の場合、キーバージョン番号「0x01」,「0x20」,「0x21」,「0x22」,「0x7E」,「0x7F」の各行に何らかの暗号鍵が格納されている状態が示されている。また、図示の例の場合、いずれのキーバージョン番号についても、キーID「0x01」,「0x02」,「0x03」の3箇所のセルにそれぞれ暗号鍵が格納されている。
これは、いずれのキーバージョン番号も、3つの異なる暗号鍵を用いる暗号化プロトコル(たとえば、上述したSCP01,SCP02,SCP03など)に対応したものになっているためである。たとえば、キーバージョン番号「0x20」が指定された場合、キーID「0x01」,「0x02」,「0x03」の各セルに格納されている3つの暗号鍵KeyD,KeyE,KeyFが暗号化処理もしくは復号処理に利用されることになる。別言すれば、特定の暗号化プロトコルに基づく暗号化処理もしくは復号処理には、同一のキーバージョン番号をもつ1つもしくは複数の暗号鍵が利用されることになる。もちろん、合計5個の暗号鍵を必要とする暗号化プロトコルのためには、同一のキーバージョン番号をもつ5個のセルにそれぞれ暗号鍵を用意することになる。
一方、図4(a) は、図3に示す鍵テーブルTの個々のセルに格納されている暗号鍵KeyA〜KeyRの一般的なデータ構造を示す図である。図示された暗号鍵Keyのデータ構造は、上述したICカードについての国際的な標準仕様として定められた暗号鍵Keyの標準フォーマットを示すものであり、先頭から順に、種別情報(key type)A,鍵長(key length)L,鍵値データ(key value)Vを並べたものになっている。ここで、種別情報(key type)Aは、「AES」,「DES」,「RSA」など、当該暗号鍵Keyを用いることを想定している暗号化プロトコルが採用する暗号アルゴリズムの種別を含む情報であり、鍵長(key length)Lは、後続する鍵値データ(key value)Vのデータ長(byte)を示す情報であり、最後の鍵値データ(key value)Vは、暗号化演算に用いられる鍵値データそのものである。
また、図4(b) は、暗号通信路開設コマンドCMDのデータ構造の概要を示す図である。実際のコマンドは、ISOなどの規格(たとえば、ISO7816-4)に準拠した、より複雑なデータ構造を有するものになるが、便宜上、図4(b) には、説明に必要な情報のみを抽出した概念的なデータ構造を示すことにする。図示の例は、上述した暗号化プロトコルSCP01,SCP02,SCP03を採用する場合に用いられている暗号通信路の開設コマンドを示しており、暗号通信路の開設を指示する文字列「INITIALIZE UPDATE」なるコマンド文字列情報(実際には、コマンド「INITIALIZE UPDATE」を意味するインストラクションバイト情報であるが、以下、便宜上、「INITIALIZE UPDATE」なる文字列として説明する)と、特定の暗号鍵の格納場所を示す格納場所指定情報(実際には、特定のキーバージョン番号)と、所定の乱数とによって構成されている。
たとえば、図3に示す鍵テーブルTに格納されている3つの暗号鍵KeyD,KeyE,KeyFを用いた暗号通信路を開設する場合には、文字列「INITIALIZE UPDATE」に「0x20」なるキーバージョン番号を後続させ、更にその後ろに所定の乱数を後続させた暗号通信路開設コマンドCMDがICカードに与えられる。この暗号通信路開設コマンドCMDの最後に付加される乱数は、外部装置がICカードを正規の交信相手であることを認証するために利用される。別言すれば、暗号通信路開設コマンドCMDは、ICカードに対して、暗号通信路の開設処理を実行する指示コマンドとしての役割とともに、所定の乱数に応じた認証コードを返信するよう求める認証コマンドとしての役割も果たす。
図5は、図2に示すSIMカード11(情報処理装置100)に組み込まれた管理プログラムSDと、スマートフォン10(外部装置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) に示すデータ構造をもつ「暗号通信路開設コマンド」であり、前述したとおり、「INITIALIZE UPDATE」なるコマンド文字列情報に、キーバージョン番号および乱数を付加した形態をもつ。このコマンドは、スマートフォン10(外部装置200)が、SIMカード11(情報処理装置100)を正規の交信相手として認証するための認証コマンドとしての役割も果たす。
すなわち、「INITIALIZE UPDATEコマンド」を受信したSIMカード11内の管理プログラムSDは、鍵テーブルT1から、指定されたキーバージョン番号に対応する暗号鍵を取り出し、暗号化処理の準備を行うとともに、与えられた乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対する応答として返信する。一方、スマートフォン10内のアプリケーションプログラムAP3は、返信されてきた演算結果が、与えた乱数に対する正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のSIMカード11を正規の交信相手と認証する。
続くステップS4では、「EXTERNAL AUTHENTICATEコマンド」の送信が行われる。このコマンドは、「外部認証コマンド」であり、SIMカード11(情報処理装置100)がスマートフォン10(外部装置200)を正規の交信相手として認証するための認証コマンドである。スマートフォン10は、ステップS3の応答により返信されてきたデータに対して所定のアルゴリズムに基づく演算を施し、演算結果を「EXTERNAL AUTHENTICATE」なるコマンド文字列情報に付加してSIMカード11に送信する。SIMカード11(管理プログラムSD)は、「EXTERNAL AUTHENTICATEコマンド」によって送信されてきた演算結果が、正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のスマートフォン10を正規の交信相手と認証する。
このステップS3,S4による相互認証の具体的なプロセスは、一般に利用されている公知の技術であるため、ここでは詳しい説明は省略する。こうして、SIMカード11とスマートフォン10との間での相互認証が完了すると、両者間に暗号通信路が開設される。図の破線より下に示されたステップS5以降のコマンドは、この暗号通信路を介して与えられることになる。すなわち、ステップS5以降のコマンドの実質的な内容部分は、所定の暗号化プロトコルに基づいて暗号化され、「SCP:Secure Channel Protocol」により保護されたコマンドとして送信される。
なお、現行の規格では、暗号通信路の開設時(「EXTERNAL AUTHENTICATEコマンド」の処理時)に、SCPについてレベルを設定することが可能である。具体的には、「レベル1:コマンド改竄検知用のチェックコード付与」と「レベル2:コマンド改竄検知用のチェックコード付与+コマンドデータフィールドの暗号化」などが定められており、ステップS5以降にやりとりされるコマンドには、開設時に設定されたレベルが適用されることになる。このようなSCPレベルの設定を行った場合、レベル2の設定が行われたときにのみ、ステップS5以降のコマンドのデータフィールドに対して暗号化が行われることになる。なお、ステップS5,S6の例では、コマンドに対する応答については、SCPによる保護を行わず、平文のまま通常の通信路を介して返信するようにしているが、必要があれば、これらの応答についても、暗号通信路を介して返信するようにしてもよい。
<<< §2. 管理プログラムのセキュリティ強度と階層構造 >>>
上述の§1では、情報処理装置100に組み込まれた管理プログラムSDによって、外部装置200との間に暗号通信路を開設して両者間で暗号通信を行うための手順を簡単に説明した。ここでは、この管理プログラムSDによって開設される暗号通信路にセキュリティ強度の相違がある点と、情報処理装置100に複数の管理プログラムSDが階層構造をもって組み込まれる点について説明する。
図6は、現在、ICカードに関する仕様として定められている暗号通信路開設コマンドCMDのデータ構造を示す図である。§1で述べた例の場合、暗号通信路開設コマンドCMDのデータ構造は、図6(a) に示すように、先頭から順に、「コマンド文字列情報」、「格納場所指定情報」、「乱数」を並べたものになり、具体的には、図6(b) に示すように、「INITIALIZE UPDATE」なる文字列を先頭に、「キーバージョン暗号」と「乱数」が後続する書式になる。
前述したように、先頭の「コマンド文字列情報(INITIALIZE UPDATE)」は、当該コマンドが暗号通信路を開設するコマンドであることを示すための文字列である。続く「格納場所指定情報」は、暗号通信路の開設に用いる特定の暗号鍵を指定するための暗号鍵指定情報であり、図3に示すような鍵テーブルTを用いて暗号鍵を格納する場合は「キーバージョン番号」によって構成される。最後の「乱数」は、前述したとおり、スマートフォン10がSIMカード11を正規の交信相手として認証するために利用されるデータである。
図6(a),(b)に例示する暗号通信路開設コマンドCMDのデータ構造は、GlobalPlatform(登録商標)や3GPP/ETSIなどの国際的な仕様において、暗号化プロトコルSCP01,SCP02,SCP03として定められているものである。当該仕様には、この他にもいくつかの暗号化プロトコルの仕様が定められており、暗号通信路開設コマンドCMDのデータ構造は、各仕様に応じてそれぞれ異なるデータ構造を有する。たとえば、暗号化プロトコルSCP80については、図6(c) に示すように、「ENVELOPE」なる文字列を先頭におく暗号通信路開設コマンドCMDが定義されており、暗号化プロトコルSCP10については、図6(d) に示すように、「MANAGE SECURITY ENVIRONMENT」なる文字列を先頭におく暗号通信路開設コマンドCMDが定義されている。前述したとおり、これら各コマンドCMDのデータ構造は、説明の便宜上、一部の情報のみを抽出した概念的なデータ構造であり、実際のデータ構造それ自体を示すものではない。
図7は、各暗号化プロトコルに用いられるコマンド文字列情報と暗号アルゴリズムの種別情報との対応関係を示す表である。ここで、表の各欄に示すSCP01,SCP02,SCP03,SCP10,SCP80,SCP81などの文字列は、個々の暗号化プロトコルを特定する情報(本願では、SCP種別と呼ぶ)である。また、表の縦見出しは、各暗号化プロトコルが用いる暗号アルゴリズムの種別を示し、表の横見出しは、各暗号化プロトコルに用いられるコマンド文字列情報を示している。なお、この表における「SCPxx」は、現時点では、GlobalPlatform(登録商標)による仕様化はなされていないが、今後、策定される可能性のある暗号化プロトコルを示している。
このように、現時点において、多数の暗号化プロトコルが定められており、今後も、新たな暗号化プロトコルが追加策定されてゆくものと予想される。また、各暗号化プロトコルが用いる暗号アルゴリズムも多様化してゆくものと予想される。ここで重要な点は、個々の暗号化プロトコルによって、セキュリティ強度に差が生じる点である。たとえば、暗号アルゴリズムに関しては、Triple-DESよりもAESの方が、理論的にセキュリティ強度が高いとされているため、図7に示す例の場合、暗号化プロトコルSCP01,SCP02よりも、SCP03の方がセキュリティ強度が高くなる。
また、同じ暗号アルゴリズムを採用していたとしても、暗号化プロトコルの仕様によってセキュリティ強度に差が生じる。たとえば、図7に示す例の場合、暗号化プロトコルSCP01とSCP02は、いずれもTriple-DESを暗号アルゴリズムとして用いているが、暗号化プロトコルSCP02の方がSCP01よりもセキュリティ強度が高いとされている。
§1で述べたように、一般的なICカードには、少なくとも1組の管理プログラムSD(Security Domain プログラム)が組み込まれており、外部装置との間の暗号通信路は、この管理プログラムSDによって開設される。管理プログラムSDは、図7の表に示されているような多様な暗号化プロトコルのうちの任意の1つもしくは複数をサポートするように構成されている。したがって、同一の情報処理装置100内に複数の管理プログラムSDが組み込まれている場合、個々の管理プログラムSDごとに、それぞれ採用する暗号化プロトコルが異なることも少なくない。たとえば、第1の管理プログラムSDは暗号化プロトコルSCP81のみを採用しているが、第2の管理プログラムSDは暗号化プロトコルSCP01,SCP02の双方を採用している、といった具合である。
当然、どの暗号化プロトコルを採用するかによって、管理プログラムSDによって開設される暗号通信路のセキュリティ強度に差が生じることになる。もちろん、外部装置200側のアプリケーションプログラムAP3は、情報処理装置100内の特定の管理プログラムSDに対して暗号通信路の開設を要求して通信を行うので、たとえ、セキュリティ強度の低い暗号通信路を介して情報のやりとりが行われることになったとしても、当該アプリケーションプログラムAP3は、それを承知の上で、当該特定の管理プログラムSDを指定しているのであるから、それ自体が重大な問題になるわけではない。
しかしながら、同一の情報処理装置100に、階層構造による上下関係をもった複数の管理プログラムが組み込まれると、個々の管理プログラムが、本来有しているセキュリティ機能を十分に発揮できない事態が生じる。以下、このような事態が生じる理由を説明する。
図8(a) は、SIMカード11(情報処理装置100)内に構築されるアプリケーションプログラムの階層構造を示す図である。この図において、階層構造の最上位に配置されているISD(Issuer Security Domain)は、発行者SDと呼ばれる管理プログラムであり、このSIMカード11の工場出荷時に書込まれるプログラムである。図示の例の場合、このISDの下位にSSD1,SSD2,AP01,AP02なるプログラムが配置されており、更に、SSD1の下位にAP11,AP12が配置され、SSD2の下位にSSD3,AP21,AP22,AP23が配置され、更に、SSD3の下位にAP31,AP32が配置されている。
この図8(a) にブロックで示されている各プログラムは、いずれもSIMカード11(情報処理装置100)内に組み込まれているアプリケーションプログラムである。ここで、SSD1,SSD2,SSD3(Supplemental Security Domain)は、ISDと同様に管理プログラムであるが、ISDが、工場出荷時に書込まれる最上位の管理プログラムであるのに対して、SSD1,SSD2,SSD3は、ISDもしくは別なSSDの下位に配置されるプログラムになる。
前述したように、管理プログラムも、アプリケーションプログラムの1つであることに変わりはないが、階層構造上、自己の下位に別なアプリケーションプログラム(一般アプリケーションプログラムであってもよいし、別な管理プログラムであってもよい)を配置して管理下におくことができる。したがって、図示の例の場合、管理プログラムSSD1の下位には、2組の一般アプリケーションプログラムAP11,AP12が配置されているだけであるが、管理プログラムSSD2の下位には、1組の別な管理プログラムSSD3と3組の一般アプリケーションプログラムAP21,AP22,AP23が配置され、更に、管理プログラムSSD3の下位には、2組の一般アプリケーションプログラムAP31,AP32が配置されている。
管理プログラムSDには、SIMカード11(情報処理装置100)全体を管理する機能と、下位のアプリケーションプログラムを管理する機能とが備わっている。具体的には、一般的なSDプログラムには、次のような機能が用意されている。これらの機能の一覧表は、図8(b) にも掲載されている。
<機能1>ICカードのライフサイクル管理
<機能2>アプリケーションプログラムのライフサイクル管理
<機能3>アプリケーションインスタンスのライフサイクル管理
<機能4>アプリケーションプログラムのロード
<機能5>アプリケーションインスタンスの生成(インストール)
<機能6>アプリケーションプログラムやインスタンスの削除
<機能7>アプリケーション向け発行データの書込み
<機能8>データの読出し
<機能9>セキュアな通信路の確保
もっとも、上記9つの機能は、必ずしもすべての管理プログラムSDに備わっているものではない。通常、最上位階層のISDは、すべての機能を備えているが、下位階層におかれるSSDについては、いくつかの機能が制限される場合もある。たとえば、上記機能1「ICカードのライフサイクル管理」は、通常、ISDにのみ備わっている。また、上記機能のいくつかは、自己の下位階層に配置されているアプリケーションプログラム(自己の管理下にあるアプリケーションプログラム)のために提供する機能である。
以下、上記9つの機能のうち、本発明に直接関連するいくつかの機能について簡単に説明しておく。まず、管理プログラムSDが、自己の管理下にアプリケーションプログラムを組み込んで、動作可能となるようにするには、上記機能4により、アプリケーションプログラムをロードし、続いて、上記機能5により、アプリケーションプログラムのインスタンスを生成し、更に、上記機能7により、アプリケーション向け発行データの書込みを行うことになる。
より具体的に説明すれば、機能4「アプリケーションプログラムのロード」の処理は、外部装置から与えられるロードコマンドに応じて、アプリケーションプログラムのパッケージをメモリ上に格納する処理である。また、機能5「アプリケーションプログラムのインスタンスの生成」の処理は、いわゆるインストール処理であり、外部装置から与えられるインストールコマンドに応じて、ロード済みのアプリケーションプログラムのパッケージをメモリ上に展開し、アプリケーションインスタンスを生成する処理である。アプリケーションプログラムの実行は、このインスタンス化されたプログラムコードを実行する処理ということになる。
そして、機能7「アプリケーション向け発行データの書込み」の処理は、当該アプリケーションプログラムの実行に必要なデータ(発行データ)をメモリ上に格納する処理である。たとえば、クレジット決済機能をもったアプリケーションプログラムの場合、プログラムを実行可能にするためには、クレジットカード番号やユーザの個人情報などを発行データとして書込む処理を行う必要がある。また、管理プログラムSDの場合、プログラムを実行可能にするためには、暗号通信路の開設に必要な鍵情報を発行データとして書込む処理を行う必要がある。
最後の機能9「セキュアな通信路の確保」の処理は、§1で述べたように、「SCP:Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、外部装置200との間にセキュアな暗号通信路を開設して暗号通信を行う機能である。このような機能を実現するため、図2に示すように、管理プログラムSD内には、暗号通信路開設ルーチンR1と鍵テーブルT1とが組み込まれている。暗号通信路開設ルーチンR1は、上記機能5「アプリケーションプログラムのインスタンスの生成」によって組み込まれることになり、鍵テーブルT1の内容は、上記機能7「アプリケーション向け発行データの書込み」によって書込まれることになる。
なお、GlobalPlatform(登録商標)の仕様では、管理プログラムSDが前述した「機能1〜機能7」を行う場合は、暗号通信路(機能9によって開設されたセキュアな通信路)を介して情報のやりとりを実行することが必須とされているが、「機能8:データの読出し」については暗号通信路の開設は必須にはなっていない。図5のステップS2のプロセスは、暗号通信路の開設前に暗号通信路を介すことなく情報のやり取りが可能なデータの読出処理が行われた例を示すものである。これに対して、機能4(ロード機能),機能5(インストール機能),機能7(発行機能)等の処理を実行させるためのコマンドは、図5のステップS5,S6のように、SCPにより保護されたコマンドとして、暗号化された状態で送信されることになる。
図9は、工場出荷時の情報処理装置100(SIMカード11)と外部装置200(スマートフォン10または外部サーバ20)との間の情報通信の態様の一例を示すブロック図である。図示の例の場合、情報処理装置100には、工場出荷時において、OSプログラムと、ISD(発行者SD:最上位階層の管理プログラム)と、2組のアプリケーションプログラムAP01,AP02とが格納され、動作可能な状態になっている。ここで、管理プログラムISDには、暗号通信路開設ルーチンR00と鍵テーブルT00とが組み込まれており、これを利用して、所定の暗号化プロトコルに基づく暗号通信路の開設を行うことが可能である。
ここでは、説明の便宜上、図9に示すような外部装置200(スマートフォン10または外部サーバ20)を用意した場合を考えてみよう。この外部装置200に用意されているアプリケーションプログラムAP(ISD)は、情報処理装置100内の管理プログラムISDとの間に暗号通信路を開設するためのプログラムであり、管理プログラムISDと同様に暗号通信路開設ルーチンR00と鍵テーブルT00とが組み込まれている。一方、図示の外部装置200には、アプリケーションプログラムAP(SSD1)も用意されている。このプログラムAP(SSD1)は、情報処理装置100内に後で組み込まれる管理プログラムSSD1との間に暗号通信路を開設するためのプログラムであり、暗号通信路開設ルーチンR10と鍵テーブルT10とが組み込まれている。
ここで、図9に示す工場出荷時の情報処理装置100には、管理プログラムISDは組み込まれているが、管理プログラムSSD1はまだ組み込まれていない。すなわち、この図9に示す情報処理装置100の階層構造は、図8の階層構造図におけるISD,AP01,AP02のブロックのみが存在している状態ということができる。図8の階層構造図は、図9に示す情報処理装置100を入手した利用者が、様々なアプリケーションプログラムを組み込む作業を行った後の状態ということになる。
図10は、利用開始時の情報処理装置100(SIMカード11)と外部装置200(スマートフォン10または外部サーバ20)との間の情報通信の態様の一例を示すブロック図である。図10に示す情報処理装置100には、新たに管理プログラムSSD1が格納され、動作可能な状態になっている。図示の管理プログラムSSD1には、暗号通信路開設ルーチンR10と鍵テーブルT10とが組み込まれており、これを利用して、外部装置200側に用意されているアプリケーションプログラムAP(SSD1)との間に暗号通信路を開設して暗号通信を行うことが可能である。
なお、GlobalPlatform(登録商標)の仕様では、SIMカード11内に複数の管理プログラムSDを組み込む際には、各管理プログラムSDが利用する鍵テーブルTはそれぞれ別個のテーブルとして格納される。したがって、図10に示す例の場合、鍵テーブルT00と鍵テーブルT10とは別個の独立した鍵テーブルになっている。
もっとも、本発明を実施する上では、必ずしも各管理プログラムSDが利用する鍵テーブルTを別個のテーブルとする必要はなく、たとえば、図3に示すような共通の鍵テーブルTを設けておき、鍵テーブルT00,T10は、この鍵テーブルTの一部の領域として構成してもかまわない。たとえば、鍵テーブルT00はキーバージョン「0x20」の行の領域によって構成し、鍵テーブルT10は、キーバージョン「0x21」の行の領域によって構成した場合、鍵テーブルT00に記録されている暗号鍵は、KeyD,KeyE,KeyF、鍵テーブルT10に記録されている暗号鍵は、KeyG,KeyH,KeyIということになる。
情報処理装置100を、図9に示す状態から図10に示す状態にもってゆくには、図8(a) に示す管理プログラムISDの下位階層、すなわち、管理プログラムISDの管理下に、新たな管理プログラムSSD1を組み込む処理を行う必要がある。そのためには、まず、外部装置200から情報処理装置100の管理プログラムISDに対して、暗号通信路開設コマンドを与え、管理プログラムISDの機能9「セキュアな通信路の確保」の処理によって両装置間に暗号通信路を開設した上で、この暗号通信路を介して、次のようなコマンドを与える作業を行えばよい。
まず、外部装置200から情報処理装置100の管理プログラムISDに対して、ロードコマンドを与え、管理プログラムISDによる機能4「アプリケーションプログラムのロード」の処理を実行させる。この処理により、新たな管理プログラムSSD1を構成するプログラムパッケージのバイナリデータが情報処理装置100内のメモリに格納される。このプログラムパッケージは、インストール前のプログラムであり、CPUがそのまま実行可能な状態にはなっていない。
続いて、外部装置200から情報処理装置100の管理プログラムISDに対して、インストールコマンドを与え、管理プログラムISDによる機能5「アプリケーションプログラムのインスタンスの生成」の処理を実行させる。この処理により、メモリに格納されていたプログラムパッケージがメモリ上に展開され、管理プログラムSSD1を構成するアプリケーションインスタンスが生成される。このアプリケーションインスタンスは、CPUによって実行可能なルーチンではあるが、管理プログラムSSD1としての動作を行うには、まだ、発行データ(この場合、暗号鍵)が不足している。別言すれば、この時点では、図10のSSD1のブロック内に描かれている暗号通信路開設ルーチンR10はアプリケーションインスタンスとしてメモリ上に格納された状態になっているが、鍵テーブルT10(の内容となる暗号鍵)は、まだメモリ上に格納されていない。
そこで最後に、外部装置200から情報処理装置100の管理プログラムISDに対して、発行データの書込コマンドを与え、管理プログラムISDによる機能7「アプリケーション向け発行データの書込み」の処理を実行させる。この処理により、管理プログラムSSD1の動作に必要な発行データがメモリに書込まれる。すなわち、図10に示す鍵テーブルT10(の内容となる暗号鍵)が発行データとしてメモリに書込まれることになる。これにより、新たな管理プログラムSSD1が、管理プログラムISDの管理下に、動作可能な状態で組み込まれたことになる。したがって、管理プログラムSSD1は、必要に応じて、暗号通信路開設ルーチンR10および鍵テーブルT10を用いて、機能9「セキュアな通信路の確保」の処理を実行することができる。
図8(a) の階層構造図に示されている管理プログラムSSD2も、同様の手順によって、管理プログラムISDの管理下に動作可能な状態で組み込まれる。そして今度は、管理プログラムSSD1に暗号通信路を開設させた上で、同様の手順によって、その管理下にアプリケーションプログラムAP11,AP12を動作可能な状態で組み込むことができる。また、管理プログラムSSD2に暗号通信路を開設させた上で、同様の手順によって、その管理下にアプリケーションプログラムAP21〜AP23および管理プログラムSSD3を動作可能な状態で組み込むことができる。更に、管理プログラムSSD3に暗号通信路を開設させた上で、その管理下にアプリケーションプログラムAP31,AP32を動作可能な状態で組み込むことができる。
このような手順が行われることに留意すると、結局、ある1つの管理プログラムを指定して、その管理下に別なアプリケーションプログラムを組み込む処理を行う場合、当該指定管理プログラムの機能9「セキュアな通信路の確保」を利用して暗号通信路を開設し、当該暗号通信路を介して、当該指定管理プログラムに、機能4「アプリケーションプログラムのロード」,機能5「アプリケーションプログラムのインスタンスの生成(インストール)」,機能7「アプリケーション向け発行データの書込み」の処理を行わせるためのコマンドが与えられることになる。
このように、ある管理プログラムの下位階層に、新たなアプリケーションプログラムを組み込む場合、当該管理プログラムが開設した暗号通信路を介して、新たなアプリケーションプログラムのためのロード処理、インストール処理、発行処理を指示するコマンドが送信されることになる。したがって、第1の管理プログラムの下位階層に第2の管理プログラムを組み込む場合、下位となる第2の管理プログラムには、上位となる第1の管理プログラムのもつセキュリティ強度に応じて、潜在的にセキュリティに関する脆弱性が含まれる可能性がある。
たとえば、図7に示す例の場合、前述したとおり、Triple-DESよりもAESの方が、理論的にセキュリティ強度が高いとされているため、暗号化プロトコルSCP01よりも、SCP03の方がセキュリティ強度が高くなる。したがって、図8に示す階層構造図において、管理プログラムISDが暗号化プロトコルSCP01を採用しており、管理プログラムSSD1が暗号化プロトコルSCP03を採用していた場合、本来であれば、管理プログラムSSD1は、暗号化プロトコルSCP03が有している高いセキュリティ機能を発揮することができるにもかかわらず、上位の管理プログラムISDと同等の危殆化が懸念され、高いセキュリティ機能を発揮することができなくなる。
具体的には、管理プログラムISDの下位階層に管理プログラムSSD1を組み込む作業中に、万一、何らかのクラッキング攻撃を受けた場合、管理プログラムISDが採用する暗号化プロトコルSCP01のセキュリティ強度に応じた防御しか行うことができない。別言すれば、管理プログラムSSD1をロードしたり、インストールしたり、その発行データ(暗号鍵)の書込みをしたりする作業の信頼性は、管理プログラムISDのセキュリティ強度の範囲内でしか保証されないことになる。
このように、個々の管理プログラムが、本来有しているセキュリティ機能を十分に発揮できない事態が生じることは、単に、セキュリティ強度の低下を招くだけではなく、より重大な問題に発展する可能性がある。たとえば、上例の場合、管理プログラムISDの下位階層に管理プログラムSSD1が組み込まれると、図10に示すように、情報処理装置100内には、管理プログラムISDと管理プログラムSSD1とが並存することになる。
この場合、外部装置200のアプリケーションプログラムAP(ISD)が管理プログラムISDに対して暗号通信を行っている際には、あくまでもセキュリティ強度の低い暗号化プロトコルSCP01に基づく暗号通信という前提で通信を行うことになり、外部装置200のアプリケーションプログラムAP(SSD1)が管理プログラムSSD1に対して暗号通信を行っている際には、あくまでもセキュリティ強度の高い暗号化プロトコルSCP03に基づく暗号通信という前提で通信を行うことになる。ところが、実際には、管理プログラムSSD1には、情報処理装置100への組込作業に起因するセキュリティに関する脆弱性が潜んでいるため、本来有しているセキュリティ機能を十分に発揮することはできないことになる。
要するに、上例の場合、管理プログラムSSD1には、「暗号アルゴリズムとしてAESを用いているSCP03」というラベルが貼られているものの、その品質は、「暗号アルゴリズムとしてTriple-DESを用いているSCP01」と同等でしかない、という現象が発生していることになる。そのため、ラベルの品質を信用して暗号通信を行った結果、不測の事態が生じてしまうおそれがある。本発明が解決しようとする課題は、このような不測の事態の発生である。このような課題を解決するための具体的な方法は、§3以降で詳述する。
なお、上記課題は、第1の管理プログラムの下位階層に第2の管理プログラムを新たに組み込む場合だけでなく、既存の管理プログラムについて、階層構造上の配置を変更する場合にも生じる。たとえば、GlobalPlatform(登録商標)の仕様では、階層構造をもって組み込まれたアプリケーションプログラムについて、上位となる管理プログラムを変更する処理が認められている。
図11は、図8(a) に示すアプリケーションプログラムの階層構造に変更が加えられた状態を示す図である。この例の場合、図8(a) の階層構造図に示されている状態において、一般アプリケーションプログラムAP02が、管理プログラムISDの下位から、管理プログラムSSD1の下位へと移動され(白抜矢印M1参照)、管理プログラムSSD3が、管理プログラムSSD2の下位から、管理プログラムSSD1の下位へと移動されている。管理プログラムSSD3の下位には、一般アプリケーションプログラムAP31,AP32が配置されていたため、これらのプログラムAP31,AP32は、管理プログラムSSD3に付随して、枝ごとそっくり移動することになる(白抜矢印M2参照)。図11に示す破線のブロックは移動前の状態を示し、太線のブロックは移動後の状態を示している。
このような移動は、実用上は、特定の管理プログラムについて機能制限が課されている場合に行われることが多い。たとえば、図11に示す例において、管理プログラムISDや管理プログラムSSD2には、機能4(ロード機能)や機能5(インストール機能)が備わっているが、管理プログラムSSD1については、機能4(ロード機能)や機能5(インストール機能)が制限されていた場合を考えてみよう。この場合、管理プログラムSSD1は、自己の下位に管理プログラムSSD3を直接インストールすることができないので、たとえば、管理プログラムSSD2(管理プログラムISDでもよい)の下位に、とりあえず管理プログラムSSD3をインストールした後、これを管理プログラムSSD1の下位に移動した後、発行データ(暗号鍵)を書込む、という手順を踏まざるを得ない。実際には、このような事情により階層構造の変更が行われることも少なくない。
このような階層構造の変更は、要するに、自己を管理下におく管理プログラム(自己の上位の管理プログラム)を変更する処理ということになるが、新たに自己の上位となる管理プログラムによる発行データの書込処理が必要になるため、前述した問題と同じ問題が生じることになる。たとえば、図11に示す例の場合、管理プログラムSSD3は、管理プログラムSSD1の管理下に移動することになるが、鍵情報の書込みがまだ行われていない場合は、この移動を行った後、管理プログラムSSD1による機能7「アプリケーション向け発行データの書込み」の処理が必要になる。もちろん、当該処理は、管理プログラムSSD1が開設した暗号通信路を介して行われる。
このような事情から、図11に白抜矢印M2で示すような階層構造上の配置変更を行う場合にも、これまで述べてきた問題と同じ問題が生じることになる。すなわち、管理プログラムSSD3が高いセキュリティ強度を有していたとしても、これを管理する上位の管理プログラムSSD1が低いセキュリティ強度しか有していなければ、管理プログラムSSD3は、潜在的に、高いセキュリティ機能を発揮することができなくなる。§3以降では、このような課題を解決するための具体的な方法についても触れることにする。
<<< §3. 本発明に係る情報処理装置の基本的特徴 >>>
本発明は、上下関係をもった複数の管理プログラムが組み込まれる情報処理装置において、組込処理時に十分なセキュリティを確保することができないため、潜在的にセキュリティに関する脆弱性を含むという問題を解決するためのものであり、個々の管理プログラムの暗号通信路開設機能が、本来のセキュリティ能力を十分に発揮できるようにすることを目的としている。ここでは、本発明に係る情報処理装置の基本的特徴を述べておく。
<3−1. 本発明に係る情報処理装置の基本構成>
図12は、本発明に係る情報処理装置100の基本構成と、外部装置200との間の情報通信の態様を示すブロック図である。ここでも、§1,§2における説明と同様に、情報処理装置100が、スマートフォン10に装着されたSIMカード11であり、外部装置200が、当該スマートフォン10または外部サーバ20である場合を想定して、以下の説明を行うことにする。
情報処理装置100は、外部装置200との間で暗号通信を行う機能を有しており、図示のとおり、情報格納部110およびプログラム実行部120を備えている。この実施例の場合、情報格納部110は、不揮発性メモリによって構成され、様々なプログラムやデータが格納される。プログラム実行部120は、CPUおよび必要に応じてRAMなどの作業用メモリを備えており、情報格納部110に格納されているデータを利用して、情報格納部110に格納されているプログラムを実行する機能を有している。
情報格納部110には、OSプログラムおよびアプリケーションプログラム、ならびに、これらの各プログラムに関連するデータが格納されている。§1で述べたとおり、アプリケーションプログラムは、管理プログラムと一般アプリケーションプログラムとによって構成され、図示の例の場合、2組の管理プログラムISD,SSD1と、2組の一般アプリケーションプログラムAP01,AP02が格納されている状態が示されている。ここで、管理プログラムISDおよびSSD1の間には、図8(a) の階層構造図に示されているように、相互に上下関係が定義されている。
なお、図12に示す実施例では、情報格納部110に、アプリケーションプログラムとして、2組の管理プログラムと2組の一般アプリケーションプログラムとが格納されている例が示されているが、本発明に係る情報処理装置では、必ずしも複数の管理プログラムと複数の一般アプリケーションプログラムとが格納されている必要はなく、少なくとも1つの管理プログラム(図示の例の場合は、管理プログラムISD)が格納されている状態であれば、本発明を実施することが可能である。
ここで、管理プログラムISD,SSD1は、既に述べたとおり、自己を上位階層、別なアプリケーションプログラム(一般アプリケーションプログラムであるか、管理プログラムであるかを問わない)を下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、自己もしくは自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置200との間に暗号通信路を開設する暗号通信路開設機能を有し、外部装置200から与えられる暗号通信路開設コマンドに基づいて当該機能が実行される。
また、情報格納部110には、OSプログラムや各アプリケーションプログラムに関連するデータも格納されている。図には、このようなデータの一部として、鍵テーブルTが格納されている状態が示されている。図では、便宜上、単一の鍵テーブルTが情報格納部110に格納されている状態が示されているが、GlobalPlatform(登録商標)の仕様では、前述したとおり、個々の管理プログラムISD,SSD1のそれぞれについて、別個独立した鍵テーブルT(ISD),T(SSD1)がそれぞれ格納されることになる。
本発明に係る情報処理装置100の重要な特徴は、情報格納部110に、セキュリティ強度順位リストLが格納されている点である。このセキュリティ強度順位リストLは、複数の暗号化プロトコルについて、セキュリティ強度の順位を示す表であり、たとえば、図13に例示するようなリストを用いることができる。図示のリストに登録されているSCP03(AES),SCP81(AES),SCP80(Triple-DES),SCP02(Triple-DES),SCP01(Triple-DES)なるデータは、個々の暗号化プロトコル(GlobalPlatform(登録商標)の仕様におけるセキュアチャネルプロトコル)を示すものであり、図示のとおりの強度順位が付与されている。
このリストに登録されている暗号化プロトコルを示すデータは、「SCPxx」(xxの部分は2桁の数字)なる形式の前半部分と、括弧書きで記載された後半部分とによって構成されている。ここで、前半部分は、一般に「SCP種別」と呼ばれている「プロトコルの種別を示す情報」であり、特定のプロトコルを識別するための情報になる。一方、後半部分は、「暗号化に用いる暗号アルゴリズムを示す情報」であり、当該SCP種別が利用する暗号アルゴリズムを特定する情報になる。現在、GlobalPlatform(登録商標)による仕様化がなされているSCP種別および当該SCP種別が利用する暗号アルゴリズムは、図7に示したとおりである。
§2で述べたとおり、個々の暗号アルゴリズムによって、セキュリティ強度に差があり、たとえば、Triple-DESよりもAESの方が、理論的にセキュリティ強度が高いとされている。また、同じ暗号アルゴリズムを採用していたとしても、SCP種別によってセキュリティ強度に差がある。したがって、個々の暗号化プロトコルについて、セキュリティ強度に順位づけを行うことが可能である。セキュリティ強度順位リストLは、このような順位づけに基づいて作成されたリストであり、本発明を実施するにあたり、予め情報格納部110に書込んでおくようにする。
なお、このセキュリティ強度順位リストLには、同一順位が付与された複数の暗号化プロトコルを登録することができる。たとえば、図13に示す例の場合、SCP80(Triple-DES),SCP02(Triple-DES)が、いずれも第3順位として登録されており、第4順位を欠番として、SCP01(Triple-DES)が第5順位として登録されている。
また、図13に示すセキュリティ強度順位リストLでは、個々の暗号化プロトコルについて、「プロトコルの種別を示す情報(SCP種別)」と「暗号化に用いる暗号アルゴリズムを示す情報(暗号アルゴリズム)」との双方が登録されているが、「プロトコルの種別を示す情報(SCP種別)」のみで固有の暗号化プロトコルを特定できるのであれば、「暗号化に用いる暗号アルゴリズムを示す情報(暗号アルゴリズム)」の部分を省略して、セキュリティ強度順位リストLとしては、「プロトコルの種別を示す情報(SCP種別)」のみを登録しておけば足りる。同様に、「暗号化に用いる暗号アルゴリズムを示す情報(暗号アルゴリズム)」のみで固有の暗号化プロトコルを特定できるのであれば、「プロトコルの種別を示す情報(SCP種別)」の部分を省略して、セキュリティ強度順位リストLとしては、「暗号化に用いる暗号アルゴリズムを示す情報(暗号アルゴリズム)」のみを登録しておけば足りる。
<3−2. 本発明が解決すべき問題>
さて、図13に例示するようなセキュリティ強度順位リストLを予め用意しておけば、情報処理装置100に既にインストールされている、もしくは、これからインストールする予定の複数の管理プログラムについて、この順位リストL上での順位を比較することが可能である。たとえば、図12に示す例において、管理プログラムISDの暗号通信路開設機能に用いられる暗号化プロトコルがSCP03(AES)であり、管理プログラムSSD1の暗号通信路開設機能に用いられる暗号化プロトコルがSCP02(Triple-DES)であった場合、順位リストL上での前者の強度順位が第1位、後者の強度順位が第3位であるので、前者の方が後者よりも上位にある、との判定を行うことができる。
上例の場合、管理プログラムISDによって開設された暗号通信路の方が、管理プログラムSSD1によって開設された暗号通信路よりも、セキュリティ強度は高いことになる。ただ、どちらの管理プログラムによって開設された暗号通信路を利用するかは、外部装置200側のアプリケーションプログラムが決定する事項であり、当該アプリケーションプログラムの設計者の判断に委ねられる。たとえば、送受する情報の重要性を考慮して、簡便な暗号化処理を優先して管理プログラムSSD1を選択するケースもあるし、暗号強度を優先して管理プログラムISDを選択するケースもある。また、そもそも古いタイプのアプリケーションプログラムであるため、暗号アルゴリズムとしてTriple-DESにしか対応していない、という事情がある場合には、管理プログラムSSD1を選択せざるを得ない。
このような事情を考慮すれば、情報処理装置100内に複数の管理プログラムが組み込まれた状態になっており、しかもそれぞれの暗号通信路開設機能のセキュリティ強度に差が生じているという状況それ自体には、何ら支障があるわけでない。外部装置200側のアプリケーションプログラムは、情報処理装置100側の各管理プログラムのもつ暗号通信路開設機能のセキュリティ強度を把握した上で、適切な管理プログラムを選択して暗号通信路開設コマンドを与えることにより、所望のセキュリティ強度をもった暗号通信路を介して情報の送受を行うことができる。
本願発明者が問題視している事項は、上下関係をもった複数の管理プログラムが組み込まれている情報処理装置の場合、組込処理時に十分なセキュリティを確保することができないため、潜在的にセキュリティに関する脆弱性を含んでいる可能性があるという点である。このような問題が生じるのは、上位管理プログラムの管理下に、下位管理プログラムを組み込む際に、上位管理プログラムによって開設された暗号通信路が利用されるためである。
図8(b) には、管理プログラムの機能として機能1〜機能9を示したが、上位管理プログラムの管理下に、下位管理プログラムを組み込む場合、まず、機能4(ロード機能)によって下位管理プログラムのパッケージを情報処理装置100にロードし、機能5(インストール機能)によってこれをインストールし、更に、機能7(発行機能)によって発行処理(具体的には、下位管理プログラムが利用する暗号鍵の書込処理)を行うことになる。これらの機能は、いずれも上位管理プログラムによって開設された暗号通信路を利用して実行される。これは、この段階では、組込対象となる下位管理プログラムは、まだ正常に動作することができず、自ら暗号通信路を開設する機能を果たすことができないので当然である。
このような事情から、下位管理プログラムのプログラムルーチンや下位管理プログラムが用いる暗号鍵についてのセキュリティ強度は、上位管理プログラムが開設した暗号通信路のセキュリティ強度に左右されることになる。より具体的に説明すれば、上例のように、上位管理プログラムISDの暗号通信路開設機能に用いられる暗号化プロトコルの方が、下位管理プログラムSSD1の暗号通信路開設機能に用いられる暗号化プロトコルよりも、セキュリティ強度が高い場合もしくは同じ場合は問題ないが、低い場合には問題が生じることになる。
たとえば、上位管理プログラムが採用する暗号化プロトコルがSCP80(Triple-DES)であり、下位管理プログラムが採用する暗号化プロトコルがSCP01(Triple-DES)であった場合は、前者の順位(第3位)が後者の順位(第5位)よりも高いため問題はない。同様に、上位管理プログラムが採用する暗号化プロトコルがSCP80(Triple-DES)であり、下位管理プログラムが採用する暗号化プロトコルがSCP02(Triple-DES)であった場合は、両者の順位(いずれも第3位)は等しいため問題はない。
ところが、上位管理プログラムが採用する暗号化プロトコルがSCP80(Triple-DES)であり、下位管理プログラムが採用する暗号化プロトコルがSCP03(AES)であった場合は、前者の順位(第3位)が後者の順位(第1位)よりも低くなるため問題が生じる。すなわち、下位管理プログラムそれ自身は、第1位の強度順位を有するセキュリティ強度の高いプログラムであるが、上位管理プログラムの管理下に組み込まれる際に、上位管理プログラムが開設した暗号通信路を介した処理が行われるため、この組込作業中に、何らかのクラッキング攻撃を受けた場合、その信頼性は、上位管理プログラムのセキュリティ強度の範囲内でしか保証されないことになる。
したがって、この場合、下位管理プログラム自身は、第1位のセキュリティ強度(暗号化プロトコルがSCP03(AES)の強度)を有しているが、組込時に潜在的な脆弱性が含まれている可能性があるため、実質的には、上位管理プログラムのもつ第3位のセキュリティ強度(暗号化プロトコルSCP80(Triple-DES)の強度)しか有しておらず、第1位の品質ラベルが貼られているものの、実際の品質は第3位でしかない、という齟齬が生じることになる。このため、ラベルの品質を信用して暗号通信を行った結果、不測の事態が生じてしまうおそれがある。
<3−3. 本発明の基本的な技術思想>
結局、上例の場合の下位管理プログラムは、本来であれば、第1位のセキュリティ強度を有する下位管理プログラムでありながら、実際には、本来のセキュリティ能力を十分に発揮できる状態にはなっていないことになる。本発明の基本的な技術思想は、このような弊害が生じる状態になってしまうケースでは、上位管理プログラムの管理下に下位管理プログラムが組み込まれることがないようにする、というものである。
別言すれば、第1の管理プログラムの管理下に、第2の管理プログラムが組み込まれている場合には、必ず、第1の管理プログラムの暗号化プロトコルのセキュリティ強度順位が、第2の管理プログラムの暗号化プロトコルのセキュリティ強度順位と等しいか、より上順位になるようにし、第2の管理プログラムの暗号化プロトコルのセキュリティ強度順位の方が、第1の管理プログラムの暗号化プロトコルのセキュリティ強度よりも上順位になるような状況を作り出さないような何らかの措置を施す、という着想が、本発明の基本的な技術思想である。
そこで、図12に示す情報処理装置100では、予めセキュリティ強度順位リストLを設けておき、情報格納部110に格納されている第1の管理プログラム(たとえば、ISD)の管理下に、別な第2の管理プログラム(たとえば、SSD1)を組み込むための処理を行う組込用コマンドが外部装置から与えられたときに、この順位リストL上で、第1の管理プログラムの暗号通信路開設機能に用いられる第1の暗号化プロトコルよりも、第2の管理プログラムの暗号通信路開設機能に用いられる第2の暗号化プロトコルの方が上順位にある場合には、プログラム実行部120が、当該組込用コマンドの実行を拒絶するようにしている。
したがって、たとえば、情報格納部110内に、第1の管理プログラムISDが既に格納されている状態において、その管理下に、新たに第2の管理プログラムSSD1を組み込むための処理を行う組込用コマンドが外部装置200から与えられた場合、図13に例示するセキュリティ強度順位リストLが用意されていたとすると、当該組込用コマンドは、次のように処理されることになる。
ここでは、第1の管理プログラムISDが、第3順位の暗号化プロトコルSCP80(Triple-DES)を採用していた場合を考えてみよう。この場合、新たに組み込むべき第2の管理プログラムSSD1が用いる暗号化プロトコルが、同じ第3順位の暗号化プロトコルSCP80(Triple-DES),SCP02(Triple-DES)や、下位の第5順位である暗号化プロトコルSCP01(Triple-DES)である場合には、当該組込用コマンドは実行され、第1の管理プログラムISDの管理下に第2の管理プログラムSSD1が組み込まれることになる。
これに対して、新たに組み込むべき第2の管理プログラムSSD1が用いる暗号化プロトコルが、上位である第1順位の暗号化プロトコルSCP03(AES)や、第2順位のプロトコルSCP81(AES)である場合には、当該組込用コマンドは拒絶され、第1の管理プログラムISDの管理下に第2の管理プログラムSSD1を組み込む処理は実行されないことになる。
このように、第1の管理プログラムの管理下に、より高い順位の暗号化プロトコルを用いる第2の管理プログラムを組み込むための組込用コマンドが与えられた場合に、プログラム実行部120が、当該組込用コマンドの実行を拒絶するようにすれば、第2の管理プログラムが本来のセキュリティ能力を十分に発揮できない状態で組み込まれてしまうことを防止できる。
すなわち、プログラム実行部120は、「第1の管理プログラムが用いる暗号化プロトコルの強度順位が、第2の管理プログラムが用いる暗号化プロトコルの強度順位と同等か、それ以上である」という実行条件を満たす場合にのみ、第2の管理プログラムを第1の管理プログラムの管理下に組み込む処理を実行することになる。このため、情報処理装置100に正常に組み込まれた個々の管理プログラムは、いずれも、本来の能力に応じた十分なセキュリティ能力を発揮できることになる。
なお、図12に示す構成において、セキュリティ強度順位リストLを参照して、上記実行条件が満たされているか否かを判定する処理は、情報格納部110に格納されている任意のプログラムに実行させることができる。たとえば、管理プログラムISDの管理下に、管理プログラムSSD1を組み込むための組込用コマンドが与えられた場合、当該コマンドの実行条件が満たされているか否かの判定処理は、管理プログラムISDによって実行することができる。
ただ、以下に述べる各実施例では、この判定処理をOSプログラムに実行させるようにしている。これは、GlobalPlatform(登録商標)の仕様では、ICカード内に組み込まれている複数のアプリケーションプログラムが、相互に直接的に情報伝達を行って連携動
作を行う場合には、OSプログラムを仲介させた初期手続が必要になるためである。このような事情から、セキュリティ強度順位リストLを参照して、上記実行条件が満たされているか否かを判定する処理はOSプログラムに委ねるようにするのが好ましい。なお、上記初期手続を実行した後は、複数のアプリケーションプログラムが、相互に直接的に情報伝達を行う連携動作が可能になるが、以下に述べる各実施例では、説明の便宜上、このような連携動作による処理例ではなく、OSプログラムを仲介させた処理例を示すことにする。
外部装置200からの組込用コマンドを受けた管理プログラムは、当該組込用コマンドに関して実行条件が満たされているか否かの判定結果をOSプログラムから通知してもらい、実行条件が満たされていた場合には当該組込用コマンドを実行して外部装置200に対して所定のレスポンスを返すことになる。一方、実行条件が満たされていない場合には、当該組込用コマンドに対するレスポンスとして、外部装置200に対してエラーを示すレスポンスを返すことになる。
<3−4. セキュリティ強度順位リストLの構成>
本発明に係る情報処理装置100では、図12に示すように、情報格納部110内に予めセキュリティ強度順位リストLを用意しておく必要がある。このセキュリティ強度順位リストLは、たとえば、図13の表に示すとおり、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すものであれば、どのようなリストであってもかまわない。また、情報格納部110内のどの領域に格納しておいてもかまわない。上述したように、セキュリティ強度順位リストLを参照して、所定の実行条件が満たされているか否かを判定する処理をOSプログラムに行わせる場合は、セキュリティ強度順位リストLは、メモリ上のOSプログラムの管理領域に格納するようにすればよい。
なお、実用上は、外部装置200からのコマンドに基づいてセキュリティ強度順位リストLを編集するためのリスト編集プログラムを用意しておき、これを情報格納部110に格納しておくのが好ましい。このリスト編集プログラムは、独立したアプリケーションプログラムとして用意してもよいし、管理プログラム(たとえば、最上位の管理プログラムISD)もしくはOSプログラムの一部に補助的なルーチンとして組み込むようにしてもかまわない。
このリスト編集プログラムには、外部装置200から、新たな暗号化プロトコルをセキュリティ強度順位リストLに追加する旨のコマンドが与えられたときに、当該新たな暗号化プロトコルを、外部装置200から指定された特定の順位に追加登録し、必要に応じて、他の暗号化プロトコルの順位を適宜更新する処理機能をもたせておくようにする。
図7には、現時点でGlobalPlatform(登録商標)の仕様に定められている暗号化プロトコルの一覧表を示したが、この表における「SCPxx」は、現時点では仕様化はなされていないが、今後、仕様化される可能性のあるプロトコルである。将来は、この他にも様々な新プロトコルが提案され、適宜採択されてゆくものと予想される。上述したリスト編集プログラムを設けておけば、新たに採択された暗号化プロトコルをセキュリティ強度順位リストLの特定の順位の位置に追加することが可能であり、もちろん、削除したり、順位を更新したりする編集も可能である。もちろん、外部装置200側でセキュリティ強度順位リストLを新たに用意し、当該新セキュリティ強度順位リストLによって、旧セキュリティ強度順位リストLをそっくり書き換えるような方法でリストの内容を更新する方法を採ってもかまわない。
なお、新たな暗号化プロトコルをセキュリティ強度順位リストLに追加する際に、外部装置200側で当該新プロトコルの順位を指定する処理を行う代わりに、情報処理装置100内のリスト編集プログラムによって、当該新プロトコルの順位を自動的に決定し、決定された位置に自動的に追加登録されるようにすることも可能である。
たとえば、図13に示すリストLの場合、前述したとおり、個々の暗号化プロトコルについて、「プロトコルの種別を示す情報(SCP種別)」と「暗号化に用いる暗号アルゴリズムを示す情報(暗号アルゴリズム)」とが登録されている。そこで、情報格納部110内に、個々の暗号アルゴリズム自体についてのセキュリティ強度の順位を示す「アルゴリズム順位リストLL」なるリストを格納しておくようにすれば、当該アルゴリズム順位リストLLを参照することにより、追加登録すべき新プロトコルの順位を自動的に決定することができる。
具体的には、外部装置200から、「プロトコルの種別を示す情報(SCP種別)」と「暗号化に用いる暗号アルゴリズムを示す情報(暗号アルゴリズム)」とを含んだ、新たな暗号化プロトコルをセキュリティ強度順位リストLに追加する旨のコマンドが与えられたときに、リスト編集プログラムが、当該新プロトコルについての登録順位を、アルゴリズム順位リストLLを参照することにより自動決定し、当該新プロトコルを、自動決定した順位に追加登録し、必要に応じて、他の暗号化プロトコルの順位を適宜更新する処理を行うようにすればよい。
たとえば、アルゴリズム順位リストLLとして、第1順位:暗号アルゴリズム「AES」、第2順位:暗号アルゴリズム「Triple-DES」、第3順位:暗号アルゴリズム「RSA」のような暗号アルゴリズム自体についてのセキュリティ強度の順位を示すリストを用意しておけば、追加登録の対象として、「SCPxx(Triple-DES)」なる新プロトコルが与えられた場合、リスト編集プログラムは、当該新プロトコルの「暗号アルゴリズム」の部分が「Triple-DES」である点に着目し、アルゴリズム順位リストLLを参照することにより、当該新プロトコルの登録順位を、暗号アルゴリズム「AES」を用いるプロトコルより下位、暗号アルゴリズム「RSA」を用いるプロトコルより上位と判定することにより自動的に決定し、所定順位の位置に追加登録することができる。
<<< §4. 実行条件の判定対象となる組込用コマンド >>>
本発明の特徴は、既に述べたとおり、第1の管理プログラムの管理下に、別な第2の管理プログラムを組み込むための処理を行う「組込用コマンド」が外部装置200から与えられたときに、セキュリティ強度順位リストを参照して、当該「組込用コマンド」について所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶する点にある。
ここで、「組込用コマンド」とは、第1の管理プログラムの管理下に、第2の管理プログラムを組み込むための処理を目的としたコマンドであれば、どのようなコマンドであってもかまわない。
§3−2で述べたとおり、上位管理プログラムの管理下に、下位管理プログラムを組み込む場合、まず、機能4(ロード機能)によって下位管理プログラムのパッケージを情報処理装置100にロードし、機能5(インストール機能)によってこれをインストールし、更に、機能7(発行機能)によって発行処理(下位管理プログラムが利用する暗号鍵の書込処理)を行うことになる。
したがって、本願にいう「組込用コマンド」とは、下位管理プログラムのパッケージを情報処理装置100にロードするロードコマンド(機能4)であってもよいし、下位管理プログラムをインストールするインストールコマンド(機能5)であってもよいし、下位管理プログラム用の発行データに相当する暗号鍵を書込むための書込コマンド(機能7)であってもよい。あるいは、これらに付随するコマンドであってもかまわない。
そこで、以下、具体的なコマンドの書式例を示しながら、本発明に係る実行条件の判定対象となる「組込用コマンド」として、どのコマンドを利用することができるかを簡単に説明しておくことにする。
図14は、GlobalPlatform(登録商標)の仕様に準拠したICカードに与える具体的なコマンドの書式例を示す図である。もちろん、ICカード用のコマンドには、この他にも様々なコマンドが用いられるが、図14(a) 〜(h) に示すコマンドは、後述する本発明の具体的な実施形態に関連したコマンドである。以下、これら各コマンドの書式および当該コマンドに応じてICカード側で実行される処理内容について簡単に説明を行う。なお、図14に示す各コマンド書式のデータ構造は、図6に示すコマンド書式のデータ構造と同様に、一部の情報のみを抽出した概念的なデータ構造であり、実際のデータ構造それ自体を示すものではない。
<4−1. アプリケーション選択コマンド>
まず、図14(a) に示す「アプリケーション選択コマンド」について説明する。このコマンドは、図5のダイアグラムのステップS1で説明したコマンドであり、特定のチャネル番号を指定して、情報処理装置100側の特定のアプリケーションプログラムを選択するコマンドである。図示のとおり、「SELECT (#n)+アプリ名」というデータ構造を有し、チャネル番号#nを指定して、「アプリ名」で特定されるアプリケーションプログラムを選択する指示である。
チャネル番号#nは、外部装置200から情報処理装置100に対してコマンドを与える際に、当該コマンドがどのアプリケーションプログラム宛のコマンドであるかを識別させるために用いられる。情報処理装置100には、複数のアプリケーションプログラムが格納されているため、外部装置から与えるコマンドのそれぞれにチャネル番号#nを付加して識別できるようにする必要がある。「アプリケーション選択コマンド」は、特定のアプリケーションプログラムに特定のチャネル番号#nを対応づけるための初期設定を行う役割を果たす。
たとえば、「SELECT (#3)+ISD」というアプリケーション選択コマンドを情報処理装置100に与えると、管理プログラムISDがチャネル番号#3に対応づけられる。具体的には、当該コマンドを受信した情報処理装置100内のOSプログラムが、管理プログラムISDがチャネル番号#3に対応づけられた旨の記録を行うことになる。以後、チャネル番号#3が付与されたコマンドは、すべて管理プログラムISD宛のコマンドとして取り扱われ、管理プログラムISDによって実行されることになる。
このように、「アプリケーション選択コマンド」は、特定のアプリケーションプログラムを特定のチャネル番号#nに対応づけるためのコマンドであるため、「本発明における実行条件の判定対象となる組込用コマンド」として利用することはできない。
<4−2. アプリケーションロードコマンド>
次に、図14(b) に示す「アプリケーションロードコマンド」について説明する。このコマンドは、図8(b) に示すSDプログラムの機能4を実行させるためのコマンドであり、特定の管理プログラムSDの管理下に、新たなアプリケーションプログラムを組み込む際の最初のステップとして実行されるコマンドである。実際には、図示のとおり、2つのコマンドによって構成される。
第1段階のロードコマンドは、「INSTALL for load (#n)+パッケージ名」というデータ構造を有し、チャネル番号#nを指定して、「パッケージ名」で特定されるパッケージをロードする旨の指示を伝えるコマンドになる。第2段階のロードコマンドは、「LOAD (#n)+バイナリデータ」というデータ構造を有し、チャネル番号#nを指定して、後続するバイナリデータのパッケージを、メモリにそのまま格納する旨の指示を伝えるコマンドになる。
ここでは、上位管理プログラムISDの管理下に、新たに下位管理プログラムSSD1を組み込む場合の手順を例にとって、この「アプリケーションロードコマンド」を説明してみる。なお、説明の便宜上、上述した「SELECT (#3)+ISD」というアプリケーション選択コマンドによって、既に、管理プログラムISDがチャネル番号#3に対応づけられているものとしよう。この場合、第1段階のロードコマンドとしては「INSTALL for load (#3)+PackSSD1」のようなコマンドを与え、第2段階のロードコマンドとしては「LOAD (#3)+バイナリデータ」のようなコマンドを与えることになる。
上記2段階からなるアプリケーションロードコマンドには、いずれもチャネル番号「#3」が付与されたコマンドなので、「#3」への対応づけがなされている上位管理プログラムISDによって処理されることになる。上位管理プログラムISDは、第2段階のロードコマンドに含まれていた「バイナリデータ」の部分をそのままメモリの所定箇所に格納し、当該「バイナリデータ」が「PackSSD1」なるパッケージ名であるかの確認を行う。ここで、「バイナリデータ」の実体は、新たに組み込まれる下位管理プログラムSSD1用のプログラムデータである。
このように、「アプリケーションロードコマンド」は、特定のアプリケーションプログラムのパッケージを情報処理装置100内のメモリに格納するためのコマンドであるため、理論的には、「本発明における実行条件の判定対象となる組込用コマンド」として利用することは可能である。たとえば、上例の手順は、上位管理プログラムISDの管理下に、新たに下位管理プログラムSSD1を組み込む場合の手順であるから、上述した「INSTALL for load (#3)+PackSSD1」や「LOAD (#3)+バイナリデータ」は、第1の管理プログラムの管理下に、別な第2の管理プログラムを組み込むための処理を行う「組込用コマンド」に該当する。
したがって、当該コマンドが外部装置200から与えられたときに、セキュリティ強度順位リストLを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶することができる。
しかしながら、GlobalPlatform(登録商標)の仕様に準拠したICカードの場合、「アプリケーションロードコマンド」に基づいて、実行条件が満たされているか否かの判定を行うことはできない。これは、実行条件が満たされているか否かの判定には、新たに組み込まれる下位管理プログラムSSD1が暗号通信路開設機能に用いる暗号化プロトコルを特定する必要があり、パッケージ名「PackSSD1」で管理プログラムSSD1用のパッケージが導入された段階では、用いる暗号化プロトコルを特定することができないためである(後述するように、管理プログラムSDが実際に用いる暗号化プロトコルは、インストール時に指定される)。
結局、GlobalPlatform(登録商標)の仕様に準拠したICカードでは、「アプリケーションロードコマンド」に基づいて本発明における実行条件の判定を行うことができない。よって、§5以降で述べる実施形態には、「アプリケーションロードコマンド」を本発明における「組込用コマンド」として利用して実行条件の判定を行う例は示されていない。
<4−3. アプリケーションプログラムのインストールコマンド>
続いて、図14(c) に示す「アプリケーションプログラムのインストールコマンド」について説明する。このコマンドは、図8(b) に示すSDプログラムの機能5を実行させるためのコマンドであり、特定の管理プログラムSDの管理下に、新たなアプリケーションプログラムを組み込む際の第2段階のステップとして実行されるコマンドである。
ここで言うアプリケーションプログラムのインストールとは、アプリケーションのロードによってメモリ上に格納された状態になっているアプリケーションプログラムのパッケージを、メモリ上にアプリケーションインスタンスとして展開し、CPUが実行できる状態にする処理である。別言すれば、アプリケーションプログラムのインストールとは、既にロードされているパッケージをメモリ上に展開して、アプリケーションインスタンスを生成する処理ということになる。
このアプリケーションプログラムのインストールコマンドは、図示のとおり、「INSTALL for install (#n)+パッケージ名+アプリ名+パラメータ」というデータ構造を有し、チャネル番号#nを指定して、「パッケージ名」で特定されるパッケージを展開して、アプリケーションインスタンスを生成し、当該アプリケーションインスタンスに「アプリ名」で指定される名称を付与する旨の指示を伝えるコマンドになる。なお、GlobalPlatformの仕様に準拠したインストールコマンドでは、「パッケージ名」の後に「クラス名」なるデータを配置し、当該「クラス名」で特定されるアプリケーションインスタンスが生成されることになるが、本願では便宜上、「クラス名」の説明については省略する。ここで、インストールの対象となるアプリケーションプログラムが管理プログラムSDの場合、「パラメータ」の部分に、当該管理プログラムSDが用いる暗号化プロトコルを示す情報を含ませるようにし、インストール後に、当該管理プログラムSDが用いる暗号化プロトコルを指定することになっている。
前述した(b) では、上位管理プログラムISDの管理下に、新たに下位管理プログラムSSD1を組み込む場合を例にとって、「INSTALL for load (#3)+PackSSD1」および「LOAD (#3)+バイナリデータ」なるアプリケーションロードコマンドにより、情報処理装置100のメモリ内に、「PackSSD1」なるパッケージをロードする手順を述べた。ここでは、その続きとして、「INSTALL for install (#3)+PackSSD1+SSD1+パラメータ」のようなアプリケーションプログラムのインストールコマンドが与えられた場合の具体的な処理を説明する。このコマンドにもチャネル番号「#3」が付与されているため、「#3」に対応づけられた上位管理プログラムISDによって処理される。
そこで、管理プログラムISDは、図8(b) に示すSDプログラムの機能5により、「PackSSD1」なるパッケージ名で既にロードされているアプリケーションプログラムパッケージをメモリ上に展開してアプリケーションインスタンスを作成するインストール処理を実行する。こうしてインストールされた新たなアプリケーションプログラムには、指定されたアプリ名「SSD1」が付与され、階層構造上、管理プログラムISDの管理下におかれることになる。
なお、GlobalPlatform(登録商標)の仕様では、このインストールの処理を行う際に、「パラメータ」によって指定された特定の暗号化プロトコルを利用した暗号通信路開設機能が設定されることになる。通常、パッケージとしてロードされた状態の管理プログラムには、複数の暗号化プロトコルに基づく暗号通信路開設ルーチンが含まれているが、インストール時に上記「パラメータ」による指定を行うことにより、特定の暗号化プロトコルのみが選択され、選択された暗号化プロトコルに関連する機能だけが使用可能な状態でインストールされることになる。
たとえば、「PackSSD1」なるパッケージには、暗号化プロトコル「SCP01(Triple-DES)」と「SCP02(Triple-DES)」との2通りについての暗号通信路開設ルーチンが含まれていたものとしよう。この場合、アプリケーションプログラムのインストールコマンドのパラメータにおいて、「SCP01(Triple-DES)」を指定すれば、「SCP01(Triple-DES)」用の暗号通信路開設ルーチンがインストールされ、以後、当該管理プログラムSSD1は、暗号化プロトコル「SCP01(Triple-DES)」を用いて暗号通信路の開設を行うことになる。一方、パラメータにおいて、「SCP02(Triple-DES)」を指定すれば、「SCP02(Triple-DES)」用の暗号通信路開設ルーチンがインストールされ、以後、当該管理プログラムSSD1は、暗号化プロトコル「SCP02(Triple-DES)」を用いて暗号通信路の開設を行うことになる。
このように、管理プログラムSDについてのアプリケーションプログラムのインストールコマンドには、パラメータの部分に、当該管理プログラムSDが将来利用することになる暗号化プロトコルを示す情報が含まれている。したがって、「本発明における実行条件の判定対象となる組込用コマンド」として利用することが可能である。すなわち、上例の手順は、上位管理プログラムISDの管理下に、新たに下位管理プログラムSSD1を組み込む場合の手順であるから、上述した「INSTALL for install (#n)+パッケージ名+アプリ名+パラメータ」なるコマンドは、第1の管理プログラムの管理下に、別な第2の管理プログラムを組み込むための処理を行う「組込用コマンド」に該当する。
したがって、当該コマンドが外部装置200から与えられたときには、セキュリティ強度順位リストLを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶することができる。
具体的には、上例の場合、セキュリティ強度順位リストLを参照した順位判定の対象になるのは、上位管理プログラムISDが用いる暗号化プロトコルと、下位管理プログラムSSD1(インストール対象)が用いる暗号化プロトコルである。ここで、前者は、上位管理プログラムISDが使用するメモリ領域に記録されている情報から認識することができ(通常、用いる暗号化プロトコルを示す情報がメモリの所定領域に記録されている)、後者は、前述のように、アプリケーションプログラムのインストールコマンドのパラメータの部分に記録されている。
たとえば、上位管理プログラムISDが用いる暗号化プロトコルが「SCP02(Triple-DES)」であり、下位管理プログラムSSD1(インストール対象)が用いる暗号化プロトコルが「SCP03(AES)」であった場合、図13に示すセキュリティ強度順位リストLを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、管理プログラムISDの下位階層に管理プログラムSSD1をインストールすることを指示するコマンドは拒絶されることになる。
このように、「アプリケーションプログラムのインストールコマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用するのに最適なコマンドということになる。そこで、§5では、第1の実施形態として、「アプリケーションプログラムのインストールコマンド」に対して実行可否を判定する実施例を詳述する。
<4−4. アプリケーション向け発行データの書込コマンド>
ここでは、図14(d) に示す「アプリケーション向け発行データの書込コマンド」について説明する。このコマンドは、図8(b) に示すSDプログラムの機能7を実行させるためのコマンドであり、所定のアプリケーションプログラムのために、発行データを書込むためのコマンドである。
既に述べたとおり、管理プログラムを含めて、多くのアプリケーションプログラムは、インストールしただけでは正常な動作を行うことができず、実行に必要なデータ(発行データ)をメモリ上に格納する発行処理を行う必要がある。たとえば、クレジット決済機能をもったアプリケーションプログラムの場合、プログラムを実行可能にするためには、クレジットカード番号やユーザの個人情報などを発行データとして書込む発行処理を行う必要がある。同様に、管理プログラムSDの場合は、プログラムを実行可能にするためには、暗号通信路の開設に必要な鍵情報を発行データとして書込む発行処理を行う必要がある。
図14(d) には、このような発行データの書込みを行うための2通りの書込コマンドが示されている。書込コマンドその1は、発行データを書込むための汎用の書込コマンドであり、「STORE DATA (#n)+発行データ」というデータ構造を有し、チャネル番号#nを指定して、「発行データ」の部分のデータを発行データとして書込む旨の指示を伝えるコマンドになる。このコマンドは、管理プログラムのみならず、一般アプリケーションプログラムに対しても与えることができる汎用コマンドである。上述したように、クレジット決済機能をもったアプリケーションプログラムに対して与えれば、「発行データ」としてクレジットカード番号、ユーザの個人情報や決済処理に用いる鍵データなどを書込むことができる。また、管理プログラムSDに対して与えれば、「発行データ」として暗号通信路の開設に必要な鍵データなどを書込むことができる。図3に例示した鍵テーブルTの内容も、「発行データ」として書込むことができる。
一方、書込コマンドその2は、鍵データを書込むための専用の書込コマンドであり、「PUT KEY (#n)+鍵データ」というデータ構造を有し、チャネル番号#nを指定して、「鍵データ」の部分のデータを図3に例示した鍵テーブルT(インストール時に空の格納場所のみが用意されている)に書込む旨の指示を伝えるコマンドになる。図3に例示した鍵テーブルTの内容は、上述した書込コマンドその1によって発行データとして書込むこともできるし、書込コマンドその2によって鍵データとして書込むこともできる。
前述した(b) および(c) では、上位管理プログラムISDの管理下に、新たに下位管理プログラムSSD1を組み込む場合を例にとって、管理プログラムSSD1をロードし、インストールする段階までを説明した。こうしてインストールされた管理プログラムSSD1には、鍵テーブルT用の格納場所が確保されているものの、その中身は空のままであり、鍵データの書込みを行わない限り、暗号通信路の開設を行うことはできない。そこで、下位管理プログラムSSD1の組込処理の最終段階として、発行データの書込コマンドを与えて鍵データを鍵テーブルTに書込む必要がある。
書込コマンドその1を用いて鍵データの書込みを行う場合は、「STORE DATA (#n)+鍵データ」なる発行データの書込コマンドを与えればよい(鍵データが発行データになる)。後に詳述するが、このコマンドにおけるチャネル番号「#n」は、上位管理プログラムISDを指定する番号でもよいし、下位管理プログラムSSD1を指定する番号でもよい。すなわち、後に説明する「(h) 発行データ書込対象指定コマンド」によって予め書込対象を指定しておくことにより、当該コマンドを実行する管理プログラムは、与えられた書込データを指定された書込対象についての鍵データとして書込むことができる。したがって、上例の場合、鍵データは、下位管理プログラムSSD1用の鍵データとして書込むことができる。
一方、書込コマンドその2を用いて鍵データの書込みを行う場合は、「PUT KEY (#n)+鍵データ」なる発行データの書込コマンドを与えればよい。このコマンドは、当該コマンドを受信した管理プログラム自身に、自分が使用する鍵データの書込処理を実行させるためのコマンドである。したがって、上例の場合、このコマンドにおけるチャネル番号「#n」は、下位管理プログラムSSD1を指定する番号になり、鍵データは、下位管理プログラムSSD1用の鍵データとして書込まれる。
なお、書込コマンドその1の一般書式は、「STORE DATA (#n)+発行データ」なる形式を採っているが、GlobalPlatform(登録商標)の仕様によると、発行データとして鍵データを用いる場合には、発行データの部分に所定の指定子を用いて鍵データであることを明示する規則になっている。したがって、発行データの部分を鍵データとする「STORE DATA (#n)+鍵データ」なる形式の書込コマンドを受信した場合、当該書込コマンドが鍵データの書込コマンドであることを認識することができる。一方、書込コマンドその2は、鍵データの書込専用のコマンドであるから、当該書込コマンドを受信した時点で、鍵データの書込コマンドであることを認識することができる。
ここで、鍵データの書込コマンド(「STORE DATA (#n)+鍵データ」および「PUT KEY (#n)+鍵データ」なるコマンド)は、第1の管理プログラムの管理下に、別な第2の管理プログラムを組み込むための処理(最終段階の処理)を行う「組込用コマンド」に該当するので、「本発明における実行条件の判定対象となる組込用コマンド」として利用することが可能である。
したがって、鍵データの書込コマンドが外部装置200から与えられたときには、セキュリティ強度順位リストLを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該コマンドを実行し、満たされていない場合には当該コマンドを拒絶することができる。
具体的には、上例の場合、セキュリティ強度順位リストLを参照した順位判定の対象になるのは、上位管理プログラムISDが用いる暗号化プロトコルと、下位管理プログラムSSD1(インストール済みであるが、まだ鍵データは書込まれていない状態)が用いる暗号化プロトコルである。ここで、管理プログラムISDおよびSSD1はいずれもインストール済みであるから、用いる暗号化プロトコルは、各管理プログラムが使用するメモリ領域に記録されている情報から認識することができる。
たとえば、上位管理プログラムISDが用いる暗号化プロトコルが「SCP02(Triple-DES)」であり、下位管理プログラムSSD1が用いる暗号化プロトコルが「SCP03(AES)」であった場合、図13に示すセキュリティ強度順位リストLを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、下位管理プログラムSSD1についての鍵データの書込みを指示するコマンドは拒絶されることになる。
要するに、上例の場合、下位管理プログラムSSD1について、ロードおよびインストールの処理までは許可されるが、最終段階である鍵データの書込処理(発行処理)が拒絶されるため、下位管理プログラムSSD1の組込処理は未完に終わることになる。
このように、「鍵データの書込みを指示するアプリケーション向け発行データの書込コマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用することができる。そこで、「アプリケーション向け発行データの書込コマンド」に対して実行可否を判定する実施例を、§9において第5の実施形態として詳述し、§10において第6の実施形態として詳述する。
<4−5. 暗号通信路開設コマンド>
続いて、図14(e) に示す「暗号通信路開設コマンド」について説明する。このコマンドは、図8(b) に示すSDプログラムの機能9を実行させるためのコマンドであり、特定の管理プログラムSDに対して、暗号通信路を開設させるためのコマンドである。この暗号通信路開設コマンドについては、既に、図5のダイアグラムのステップS3で説明を行い、その書式については、既に、図6を参照して説明したとおりである。
すなわち、この暗号通信路開設コマンドは、図示のとおり、「INITIALIZE UPDATE (#n)+パラメータ」というデータ構造を有し、チャネル番号#nで指定される管理プログラムSDに対して、暗号通信路を開設する指示を与えるとともに、外部装置200が、情報処理装置100を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。
前述したとおり、この暗号通信路開設コマンドには、パラメータとして、キーバージョン番号および乱数が付加されている。管理プログラムSDは、図3に示す鍵テーブルTからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置200との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対するレスポンスとして返信する。
この暗号通信路開設コマンドは、当然ながら、暗号通信路開設処理の機能をもった管理プログラムSDに対して与えられるコマンドである。ただ、GlobalPlatform(登録商標)の仕様によると、この暗号通信路開設コマンドを受信した管理プログラムSDが、インストールは完了しているが、まだ暗号データの書込みが行われていない状態であった場合には(当然ながら、当該管理プログラムは、まだ自分自身では暗号通信路を開設することはできない)、その上位の管理プログラムが暗号通信路の開設処理を代理実行するよう定められている。
このような暗号通信路の開設処理の代理実行は、上位管理プログラムISDの管理下に、下位管理プログラムSSD1がインストールされているが、まだ暗号データの書込みが行われていないという特有の状況下で行われる処理である。たとえば、§4−4では、このような特有の状況下において、下位管理プログラムSSD1の鍵データを書込む処理が行われるが、実際には、その際の書込コマンドは、暗号通信路を介して送信する必要があるため、§4−4の書込処理を実行する前に、ここで述べる(e) の暗号通信路開設コマンドを実行しておく必要がある。
いま、上位管理プログラムISDの管理下に、下位管理プログラムSSD1がインストールされているが、まだ暗号データの書込みは行われていないという特有の状況下において、下位管理プログラムSSD1用の暗号データの書込処理を行うために、アプリケーション選択コマンド「SELECT (#n) SSD1」によって当該下位管理プログラムSSD1をチャネル番号#nとして選択し、続けて、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)+パラメータ」が与えられた場合を考えてみる。
この場合、暗号通信路開設コマンドは、本来は、下位管理プログラムSSD1宛のコマンドであるが、当該管理プログラムSSD1は、まだ自分自身では暗号通信路を開設することはできないため、上述したとおり、上位の管理プログラムISDによって、暗号通信路の開設処理が代理実行されることになる。このときの暗号通信路の開設目的は、管理プログラムSSD1の暗号データを書込むためであるから、上記「INITIALIZE UPDATE (#n)+パラメータ」なるコマンドは、第1の管理プログラムISDの管理下に、別な第2の管理プログラムSSD1を組み込むための処理(最終段階の処理に付随した処理)を行う「組込用コマンド」に該当するので、「本発明における実行条件の判定対象となる組込用コマンド」として利用することが可能である。
したがって、上記暗号通信路開設コマンドが外部装置200から与えられたときには、セキュリティ強度順位リストLを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該コマンドを実行し、満たされていない場合には当該コマンドを拒絶することができる。
具体的には、上例の場合、セキュリティ強度順位リストLを参照した順位判定の対象になるのは、上位管理プログラムISDが用いる暗号化プロトコルと、下位管理プログラムSSD1(インストール済みであるが、まだ鍵データは書込まれていない状態)が用いる暗号化プロトコルである。ここで、管理プログラムISDおよびSSD1はいずれもインストール済みであるから、用いる暗号化プロトコルは、各管理プログラムが使用するメモリ領域に記録されている情報から認識することができる。
たとえば、上位管理プログラムISDが用いる暗号化プロトコルが「SCP02(Triple-DES)」であり、下位管理プログラムSSD1が用いる暗号化プロトコルが「SCP03(AES)」であった場合、図13に示すセキュリティ強度順位リストLを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、下位管理プログラムSSD1に対して与えられた暗号通信路開設コマンドは拒絶されることになる。
要するに、上例の場合、下位管理プログラムSSD1について、ロードおよびインストールの処理までは許可されるが、最終段階である鍵データの書込処理(発行処理)を行うために必要な暗号通信路開設処理が拒絶されるため、下位管理プログラムSSD1の組込処理は未完に終わることになる。
このように、上位の管理プログラムによる暗号通信路の代理開設を求める「暗号通信路開設コマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用することができる。そこで、そのような「暗号通信路開設コマンド」に対して実行可否を判定する実施例を、§7において第3の実施形態として詳述する。
<4−6. 外部認証コマンド>
続いて、図14(f) に示す「外部認証コマンド」について説明する。このコマンドは、チャネル番号#nで指定される管理プログラムSDが、現在通信を行っている外部装置200を正規の交信相手として認証するためのコマンドであり、既に、図5のダイアグラムのステップS4で説明を行ったものである。
§4−5で述べたとおり、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)+パラメータ」は、暗号通信路を開設する指示を与えるとともに、外部装置200が、情報処理装置100を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。外部装置200は、当該レスポンスが正当なものであれば、情報処理装置100を正規の交信相手と判断する。
ここで説明する外部認証コマンドは、図示のとおり、「EXTERNAL AUTHENTICATE (#n)+ホスト認証コード」というデータ構造を有し、チャネル番号#nを指定して、外部装置200を正規の交信相手として認証するためのホスト認証コードが付加されている。情報処理装置100は、当該ホスト認証コードが正当なものであれば、外部装置200を正規の交信相手と判断する。
このように、外部認証コマンド「EXTERNAL AUTHENTICATE (#n)+ホスト認証コード」は、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)+パラメータ」に続いて与えられるコマンドであり、両者によって、情報処理装置100と外部装置200との間に相互認証が行われることになる。したがって、この外部認証コマンド自身は、「本発明における実行条件の判定対象となる組込用コマンド」には該当しないが、後述する実施形態において、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)+パラメータ」に後続するコマンドとして実行されるため、参考コマンドとして図14(f) に掲載しておく。
<4−7. 管理プログラム変更コマンド>
次に、図14(g) に示す「管理プログラム変更コマンド」について説明する。このコマンドは、管理プログラムの階層構造を変更するために用いられるコマンドである。§2では、図11に示すように、アプリケーションプログラムの階層構造が変更可能であることを述べた。このような階層構造の変更は、管理プログラム変更コマンドによって実行される。
この管理プログラム変更コマンドは、図14(g) に示すとおり、「INSTALL for extradition (#n)+新管理プログラム名+移動対象アプリ名」というデータ構造を有し、チャネル番号#nによって特定の管理プログラムSDを指定して、当該管理プログラムSDに対して、現時点で自己の管理下にある移動対象となるアプリケーションプログラムを、新たな管理プログラムの管理下に移動させる旨の指示を伝えるコマンドになる。ここで、移動対象となるアプリケーションプログラムが一般アプリケーションプログラムの場合は、セキュリティ上の問題は生じないが、移動対象となるアプリケーションプログラムが管理プログラムであった場合は、§4−2で述べたアプリケーションロードコマンドと同様の問題が生じることになる。
ここでは、図11に示す例において、管理プログラムSSD3を破線で示す階層位置(管理プログラムSSD2の管理下)から、太線で示す階層位置(管理プログラムSSD1の管理下)へと移動させる場合を考えてみる。この場合、現在の上位管理プログラムSSD2に対して、「INSTALL for extradition (#n)+SSD1+SSD3」という管理プログラム変更コマンドを与えることになる。その結果、現在の上位管理プログラムSSD2は、移動対象となる下位管理プログラムSSD3を、移動先となる新たな上位管理プログラムSSD1の管理下へ移動させる処理を実行する。このとき、管理プログラムSSD3の更に下層の一般アプリケーションプログラムAP31,AP32も一緒に移動する。
前述したように、このような移動は、管理プログラムSSD1について、ロード機能やインストール機能が制限されていた場合に行われることが多い。この場合、管理プログラムSSD1は、自己の下位に管理プログラムSSD3を直接インストールすることができないので、とりあえず、インストール機能を有する管理プログラムSSD2が自己の下位にインストールし、これを管理プログラムSSD1の下位に移動した後で発行データ(暗号データ)を書込む、という手順を踏むことになる。
そうすると、管理プログラムSSD3についての発行データの書込処理は、移動先である管理プログラムSSD1が開設した暗号通信路を介して行うことになるので、管理プログラムSSD1の下位階層に管理プログラムSSD3を新たにインストールする際と同様のセキュリティ上の問題が生じることになる。すなわち、管理プログラムSSD3が高いセキュリティ強度を有していたとしても、その上位の管理プログラムSSD1が低いセキュリティ強度しか有していなければ、管理プログラムSSD3は、潜在的に、高いセキュリティ機能を発揮することができなくなる。
結局、上例の管理プログラム変更コマンド「INSTALL for extradition (#n)+SSD1+SSD3」は、第1の管理プログラムSSD1の管理下に、別な第2の管理プログラムSSD3を組み込むための処理を行う「組込用コマンド」に該当する。したがって、当該コマンドが外部装置200から与えられたときには、セキュリティ強度順位リストLを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶することができる。
具体的には、上例の場合、セキュリティ強度順位リストLを参照した順位判定の対象になるのは、移動先となる新たな管理プログラムSSD1が用いる暗号化プロトコルと、移動対象となる管理プログラムSSD3が用いる暗号化プロトコルである。ここで、管理プログラムSSD1およびSSD3はいずれもインストール済みであるから、用いる暗号化プロトコルは、各管理プログラムが使用するメモリ領域に記録されている情報から認識することができる。
たとえば、新たな管理プログラムSSD1が用いる暗号化プロトコルが「SCP02(Triple-DES)」であり、移動対象となる管理プログラムSSD3が用いる暗号化プロトコルが「SCP03(AES)」であった場合、図13に示すセキュリティ強度順位リストLを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、管理プログラムSSD3を移動対象とする管理プログラム変更コマンドは拒絶されることになる。
このように、「鍵データの書込みが行われていない状態の管理プログラムを移動対象とする管理プログラム変更コマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用することができる。そこで、「鍵データの書込みが行われていない状態の管理プログラムを移動対象とする管理プログラム変更コマンド」に対して実行可否を判定する実施例を、§6において第2の実施形態として詳述する。
なお、この管理プログラム変更コマンドの実体は、インストールコマンドと同様に、上位の管理プログラムの管理下に下位の管理プログラムを配置するためのコマンドであるため、本願では、インストールコマンドによる処理と管理プログラム変更コマンドによる処理とをひっくるめて、広義の「インストール」と呼ぶことにする。
<4−8. 発行データ書込対象指定コマンド>
最後に、図14(h) に示す「発行データ書込対象指定コマンド」について説明する。§4−4では、「発行データの書込コマンドその1」についての説明を行ったが、ここで述べる「発行データ書込対象指定コマンド」は、「発行データの書込コマンドその1」を与える前に、予め発行データの書込対象を指定しておくためのコマンドである。
この発行データ書込対象指定コマンドは、図14(h) に示すとおり、「INSTALL for personalization (#n)+発行対象アプリ名」というデータ構造を有し、チャネル番号#nによって特定の管理プログラムSDを指定して、当該管理プログラムSDに対して、「発行対象アプリ名」として指定されたアプリケーションプログラムを発行データの書込対象として指定するコマンドになる。
ここでも、上位管理プログラムISDの管理下に、新たに下位管理プログラムSSD1を組み込む場合を例にとって以下の説明を行うことにする。前述したとおり、上位管理プログラムISDの下位階層に管理プログラムSSD1をロードし、インストールする段階までが完了すれば、あとは最終段階として、下位管理プログラムSSD1について鍵データの書込みを行うだけである。このとき、図14(d) に示す書込コマンドその1を用いて鍵データの書込みを行うには、下位管理プログラムSSD1に対して「STORE DATA (#n)+鍵データ」なる発行データの書込コマンドを与え、下位管理プログラムSSD1に鍵データの書込処理を実行させる必要がある。
ところが、発行データ書込対象指定コマンドを用いれば、上位管理プログラムISDに対して「STORE DATA (#n)+鍵データ」なる発行データの書込コマンドを与えつつ、実際には、当該書込コマンドを下位管理プログラムSSD1に引き渡し、下位管理プログラムSSD1に実行させることが可能になる。そのためには、上位管理プログラムISDに対して「STORE DATA (#n)+鍵データ」なる発行データの書込コマンドを与える前に、上位管理プログラムISDに対して「INSTALL for personalization (#n)+SSD1」という発行データ書込対象指定コマンドを与えておくようにし、後続する発行データの書込コマンドについての鍵データの書込対象が下位管理プログラムSSD1である旨の指定を行っておけばよい。
この場合、「INSTALL for personalization (#n)+SSD1」という発行データ書込対象指定コマンドは、第1の管理プログラムISDの管理下に、別な第2の管理プログラムSSD1を組み込むための処理(最終段階に付随した処理)を行う「組込用コマンド」に該当するので、「本発明における実行条件の判定対象となる組込用コマンド」として利用することが可能である。
したがって、発行データ書込対象指定コマンドが外部装置200から与えられたときには、セキュリティ強度順位リストLを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該コマンドを実行し、満たされていない場合には当該コマンドを拒絶することができる。
具体的には、上例の場合、セキュリティ強度順位リストLを参照した順位判定の対象になるのは、上位管理プログラムISDが用いる暗号化プロトコルと、下位管理プログラムSSD1(インストール済みであるが、まだ鍵データは書込まれていない状態)が用いる暗号化プロトコルである。ここで、管理プログラムISDおよびSSD1はいずれもインストール済みであるから、用いる暗号化プロトコルは、各管理プログラムが使用するメモリ領域に記録されている情報から認識することができる。
たとえば、上位管理プログラムISDが用いる暗号化プロトコルが「SCP02(Triple-DES)」であり、下位管理プログラムSSD1が用いる暗号化プロトコルが「SCP03(AES)」であった場合、図13に示すセキュリティ強度順位リストLを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、下位管理プログラムSSD1を発行データ書込対象として指定する発行データ書込対象指定コマンドは拒絶されることになる。
要するに、上例の場合、下位管理プログラムSSD1について、ロードおよびインストールの処理までは許可されるが、最終段階である鍵データの書込処理(発行処理)の直前に行うべき発行データ書込対象の指定処理が拒絶されるため、下位管理プログラムSSD1の組込処理は未完に終わることになる。
このように、「鍵データの書込みを行うための準備を指示する発行データ書込対象指定コマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用することができる。そこで、そのような「発行データ書込対象指定コマンド」に対して実行可否を判定する実施例を、§8において第4の実施形態として詳述する。
<<< §5. 第1の実施形態(インストールの制限) >>>
本発明の基本概念は、§3において述べたとおり、第1の管理プログラムの管理下に、別な第2の管理プログラムを組み込むための処理を行う「組込用コマンド」が外部装置200から与えられたときに、セキュリティ強度順位リストを参照して、当該「組込用コマンド」について所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶する点にある。
そして、§4では、GlobalPlatform(登録商標)の仕様に準拠したICカードに用の具体的なコマンドのうち、「本発明における実行条件の判定対象となる組込用コマンド」として利用可能なコマンドをいくつか指摘した。そこで、§5〜§10では、これらのコマンドの1つ1つについて、実際に上記「組込用コマンド」として利用する場合の具体的な実施形態を述べる。
<5−1. 第1の実施形態における実行条件の判定処理>
まず、この§5では、第1の実施形態として、図14(c) に示すアプリケーションプログラムのインストールコマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、第2の管理プログラムのインストールの制限を行う例を説明する。
このアプリケーションプログラムのインストールコマンドは、§4−3で述べたとおり、第1の管理プログラムの管理下に、別な第2の管理プログラムを組み込む際の第2段階のステップとして実行されるコマンドである。すなわち、既に第1段階のステップとして、図14(b) に示すアプリケーションロードコマンドが実行されており、メモリ上には、第2の管理プログラムのアプリケーションプログラムパッケージがロードされた状態になっていることが前提となる。ここで言うアプリケーションプログラムのインストールとは、ロード済みのプログラムパッケージを、メモリ上にアプリケーションインスタンスとして展開し、CPUが実行できる状態にする処理である。
アプリケーションプログラムのインストールコマンドは、図14(c) に示すように、「INSTALL for install (#n)+パッケージ名+アプリ名+パラメータ」というデータ構造を有し、チャネル番号#nを指定して、「パッケージ名」で特定されるパッケージを展開して、アプリケーションインスタンスを生成し、当該アプリケーションインスタンスに「アプリ名」で指定される名称を付与する旨の指示を伝えるコマンドである。
ここでは一例として、図11に示す階層構造において、第1の管理プログラムISDの下位階層に、第2の管理プログラムSSD1を組み込む場合を例にとって、以下に具体的な処理手順を示そう。この場合、外部装置200から情報処理装置100に対して、「INSTALL for install (#n), PackSSD1, SSD1, パラメータ」なるインストールコマンドが与えられる。ここで、「#n」は、第1の管理プログラムISDに対応づけられたチャネル番号であり、当該インストールコマンドは、第1の管理プログラムISDによって処理されることになる。
上記インストールコマンドは、「PackSSD1」なるパッケージ名で既にロードされている第2の管理プログラムSSD1用のプログラムパッケージをメモリ上に展開してアプリケーションインスタンスを作成し、アプリ名「SSD1」を付与することを指示するコマンドである。既に述べたとおり、「パラメータ」には、用いる暗号化プロトコルを示す情報が含まれており、当該「パラメータ」を参照することにより、特定の暗号化プロトコルのみが選択され、選択された暗号化プロトコルに関連する機能だけが使用可能な状態でインストールされる。
なお、本願では、このように、外部装置200からのコマンドに含まれるチャネル番号「#n」によって指定された管理プログラムのことを、便宜上「指定管理プログラム」と呼ぶことにする。上例の場合、「#n」は、第1の管理プログラムISDを指定するチャネル番号であるから、第1の管理プログラムISDが「指定管理プログラム」ということになり、「INSTALL for install (#n)」なるインストールコマンドは、「指定管理プログラム」である第1の管理プログラムISDによって実行されることになる。
図15は、本発明の第1の実施形態において、指定管理プログラムの管理下に新たな管理プログラムをインストールするためのインストールコマンドが与えられた場合の処理手順を示す流れ図であり、より具体的には、指定管理プログラムである第1の管理プログラムISDの管理下に、新たに第2の管理プログラムSSD1を作成する際の手順を示すものである。
要するに、この図15の流れ図に示す手順は、外部装置200から情報処理装置100に対して、第1の暗号化プロトコルを用いた暗号通信路開設機能を有する第1の管理プログラムISDの管理下に、第2の暗号化プロトコルを用いた暗号通信路開設機能を有する第2の管理プログラムSSD1をインストールすることを指示する組込用コマンド(すなわち、アプリケーションプログラムのインストールコマンド「INSTALL for install (#n)」)が与えられたときに実行される手順ということになる。この手順の目的は、セキュリティ強度順位リストL上で第1の暗号化プロトコルよりも第2の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド(インストールコマンド「INSTALL for install (#n)」)の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムがインストールされる事態を回避することにある。
まず、ステップS11では、指定管理プログラム(ISD)により、「INSTALL for install (#n), PackSSD1, SSD1, パラメータ」なるインストールコマンドが受信される。前述したとおり、パラメータの部分には、新たにインストールされる管理プログラムSSD1が用いる暗号化プロトコルを示す情報が含まれている。ここでは、説明の便宜上、管理プログラムSSD1が用いる暗号化プロトコルとしてSCP種別「SCP02」を指定する情報が含まれていたものとしよう。
結局、このインストールコマンドは、指定管理プログラムISDに対して、パッケージ名「PackSSD1」で既にロード済みの新たな管理プログラムSSD1をインストールする作業を指示するコマンドであり、その際に、暗号化プロトコル「SCP02」を用いた暗号通信路の開設機能が備わるようなインストールを行うよう指示するコマンドということになる。従来の情報処理装置の場合、このようなインストールコマンドが直ちに実行されることになるが、本発明の場合、セキュリティ強度順位リストLを参照して、実行条件が満たされているか否かの判定が行われる。
そこで、まず、ステップS12において、指定管理プログラム(ISD)がサポートしている親暗号化プロトコルPaが認識される。通常、管理プログラム(ISD)が使用するメモリ領域には、当該管理プログラムがサポートしている(当該管理プログラムが用いる)暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルPaを認識することができる。
具体的には、GlobalPlatform(登録商標)の仕様では、情報格納部110には、当該管理プログラムがサポートする暗号化プロトコルを示すプロトコルコードが記録されているので、このプロトコルコードを参照することにより、当該管理プログラムがサポートする暗号化プロトコルを認識することが可能である。もちろん、情報格納部110に格納されている当該管理プログラムのプログラムルーチン自体を解析することによっても、サポートする暗号化プロトコルを認識することが可能である。
要するに、本発明において、既にインストール済みの特定の管理プログラムがサポートする特定の暗号化プロトコルを認識するには、情報格納部110に格納されている「当該特定の管理プログラム」もしくは「当該特定の管理プログラムに関連するデータ」を参照すればよい。これは、ここで述べる第1の実施形態だけでなく、後述する第2〜第6の実施形態についても同様である。
続くステップS13では、インストール対象となる下位管理プログラム(SSD1)がサポートする予定(当該管理プログラムがインストール後に用いる予定)の子暗号化プロトコルPbが認識される。このサポート予定のプロトコルを示す情報は、上述したとおり、インストールコマンドのパラメータの部分に含まれており、上例の場合、暗号化プロトコル「SCP02」ということになる。したがって、当該パラメータの部分を参照することにより、子暗号化プロトコルPbを認識することができる。
なお、本願における「親」および「子」という文言は、階層構造における上下関係を示しており、第1の管理プログラムの下位に第2の管理プログラムが組み込まれる場合、便宜上、第1の管理プログラムおよびその暗号化プロトコルを「親」、第2の管理プログラムおよびその暗号化プロトコルを「子」と呼ぶことにする。
こうして、親暗号化プロトコルPaおよび子暗号化プロトコルPbが認識されたら、続いて、ステップS14において、セキュリティ強度順位リストLが参照され、ステップS15において、当該インストールコマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルPaの順位が、子暗号化プロトコルPbの順位と等しいか、または、子暗号化プロトコルPbの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より低い場合には否定的な判定がなされる。
肯定的な判定がなされた場合は、ステップS16において、当該インストールコマンドが実行される。すなわち、パッケージ名「PackSSD1」でロード済みの新たな管理プログラムSSD1のインスタンスが作成され、外部装置200に対してコマンドの正常終了を示すレスポンスが返されることになる。もちろん、管理プログラムSSD1を実際に機能させるためには、この後、鍵データの書込処理を行う必要がある。一方、否定的な判定がなされた場合は、ステップS17において、当該インストールコマンドは拒絶され、外部装置200に対してエラーを示すレスポンスが返されることになる。
上例の場合、子暗号化プロトコルPbは「SCP02」であるので、図13に示すようなセキュリティ強度順位リストLが用意されていた場合は、親暗号化プロトコルPaが「SCP03」,「SCP81」,「SCP80」,「SCP02」であれば、当該コマンドは実行され、「SCP01」であれば、当該コマンドは拒絶されることになる。
<5−2. 第1の実施形態の具体的な処理チャート>
続いて、外部装置200から第1の実施形態に係る情報処理装置100に対して、アプリケーションプログラムのインストールコマンドが与えられた場合について、コマンドを処理するための信号の流れを、図16に示すチャートを参照しながら説明する。図示の例は、外部装置200としてスマートフォン10を用い、情報処理装置100として当該スマートフォン10に装着されたSIMカード11を用い、第1の管理プログラムISDの管理下に第2の管理プログラムSSD1をインストールする例である。
図16のチャートにおける右側のラインは、外部装置200(スマートフォン10)に組み込まれている「ホスト側のアプリケーションプログラム(以下、「ホスト側アプリ」と略す)」を示し、中央のラインは、情報処理装置100(SIMカード11)に組み込まれている「管理プログラムISD」を示し、左側のラインは、情報処理装置100(SIMカード11)に組み込まれている「OSプログラム」を示している。また、このチャートにおける上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合、管理プログラムISDがチャネル番号「#n」で指定される「指定管理プログラム」になる。チャートでは、この「指定管理プログラム(ISD)」を二重枠のブロックで示してある。
まず、「ホスト側アプリ」から、情報処理装置100に対して、アプリケーション選択コマンド「SELECT (#n), ISD」が与えられる。当該コマンドは、§4−1で説明したとおり(図14(a) 参照)、特定のチャネル番号#nを指定して、情報処理装置100側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムISD」がチャネル番号「#n」に対応づけられ、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムISD」を指定したコマンドとして取り扱われ、当該「指定管理プログラムISD」によって処理されることになる。
図示のとおり、アプリケーション選択コマンド「SELECT (#n), ISD」は、まず、「OSプログラム」によって処理される。「OSプログラム」は、当該コマンドに基づいて、「管理プログラムISD」をチャネル番号「#n」に対応づけるための登録を行う。これにより、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムISD」を指定したコマンドと認識され、「指定管理プログラムISD」に引き渡される。
「OSプログラム」は、「指定管理プログラムISD」をチャネル番号「#n」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムISD」に報知する。「指定管理プログラムISD」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨のレスポンス(以下、「OKレスポンス」という)を返す。
続いて、「ホスト側アプリ」から、情報処理装置100に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」が与えられる。当該コマンドは、§4−5で説明したとおり(図14(e) 参照)、特定の管理プログラムSDに対して、暗号通信路を開設させるためのコマンドであるとともに、外部装置200が、情報処理装置100を正規の交信相手として認証するために用いるレスポンスを要求するコマンドでもある。
この暗号通信路開設コマンドは、チャネル番号「#n」を伴うコマンドであるため、「指定管理プログラムISD」に引き渡され、「指定管理プログラムISD」によって暗号通信路の開設処理が実行される。当該コマンドには、パラメータとして、キーバージョン番号および乱数が付加されているので、「指定管理プログラムISD」は、図3に示すような鍵テーブルTからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置200との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を「OKレスポンス」とともに返信する。
「ホスト側アプリ」は、返信されてきた演算結果の正当性を確認することにより、現在交信中の情報処理装置100を正規の交信相手として認証する。続いて、「ホスト側アプリ」から、情報処理装置100に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),(ホスト認証コード)」が与えられる。当該コマンドは、§4−6で説明したとおり(図14(f) 参照)、チャネル番号#nで指定される管理プログラムSDに、現在、通信を行っている外部装置200を正規の交信相手として認証させるためのコマンドであり、パラメータとして「ホスト認証コード」が付加されている。
この外部認証コマンドは、チャネル番号「#n」を伴うコマンドであるため、「指定管理プログラムISD」に引き渡され、「指定管理プログラムISD」によって処理される。具体的には、「指定管理プログラムISD」は、パラメータとして付加されていた「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置200を正規の交信相手として認証する。認証に成功すると、外部装置200に対して「OKレスポンス」が返信される。
この時点で、情報処理装置100(「指定管理プログラムISD」)と外部装置200(「ホスト側アプリ」)との間に暗号通信路を開設する準備が完了したことになり、以後、両者間の通信は、当該暗号通信路を介して実行されることになる。この§5で述べる第1の実施形態は、アプリケーションプログラムのインストールコマンドが与えられたときの処理に関するものなので、以下、この暗号通信路を介してインストールコマンドが与えられたときの処理手順を説明する。
まず、図示のとおり、「ホスト側アプリ」から、情報処理装置100に対して、アプリケーションプログラムのインストールコマンド「INSTALL for install (#n), PackSSD1, SSD1, SCP02」が与えられる。当該コマンドは、§4−3で説明したとおり(図14(c) 参照)、「指定管理プログラムISD」に対して、その管理下に、パッケージ名「PackSSD1」で既にロード済みの新たな管理プログラムSSD1を、暗号化プロトコル「SCP02」を用いた暗号通信路の開設機能が備わるようにインストールするコマンドである。
従来の一般的な管理プログラムSDであれば、当該インストールコマンドを直ちに実行することになるが、本発明の場合、図15の流れ図に示す各手順により、当該インストールコマンドが実行条件を満たしているか否かの判定が行われる。そのため、まず、当該インストールコマンドを受信した「指定管理プログラムISD」は、「OSプログラム」に対して上記判定を依頼する。
当該依頼を受けた「OSプログラム」は、図15の流れ図におけるステップS12〜S15に相当する実行条件の判定処理を行う。すなわち、「指定管理プログラムISD」が用いる親暗号化プロトコルPaを認識するとともに、インストール対象となる別な下位プログラム(この例の場合、インストールコマンドによってインストールを指示された「下位管理プログラムSSD1」)が用いる予定の子暗号化プロトコルPbを認識する。
図16における破線の矢印は、このような暗号化プロトコルPa,Pbの認識プロセスを示している。実際には、親暗号化プロトコルPaの認識は、「指定管理プログラムISD」が使用するメモリ領域を参照することにより行われ、子暗号化プロトコルPbの認識は、インストールコマンドにパラメータとして含まれていた情報(図示の例の場合「SCP02」)を参照することにより行われる。
「OSプログラム」は、こうして認識した暗号化プロトコルPa,Pbの強度順位を、セキュリティ強度順位リストL上で比較する順位判定(図15のステップS15の判定)を行い、判定結果を「指定管理プログラムISD」に伝達する。図16において、「YES」と記載された部分の信号の流れは、肯定的な判定結果が得られた場合を示しており、図に一点鎖線の矢印で示すとおり、実行条件を満たしている旨の判定結果(以下、「判定結果OK」という)が伝達される。「判定結果OK」が伝達された場合、「指定管理プログラムISD」は、当該コマンド、すなわち、アプリケーションプログラムのインストールコマンド「INSTALL for install (#n), PackSSD1, SSD1, SCP02」を実行する。
その結果、「インストール対象となる別な下位管理プログラムSSD1」について、暗号化プロトコル「SCP02」を用いた暗号通信路の開設機能が備わるようなインストールが行われた後、「ホスト側アプリ」に対して「OKレスポンス」が返される。
一方、順位判定の結果、否定的な判定結果が得られた場合は、図16において、「NO」と記載された部分に示すような信号の流れが生じる。すなわち、図に二点鎖線の矢印で示すとおり、「OSプログラム」から「指定管理プログラムISD」に対して、実行条件を満たしていない旨の判定結果(以下、「判定結果NG」という)が伝達される。「判定結果NG」が伝達された場合、「指定管理プログラムISD」は、当該インストールコマンド「INSTALL for install (#n), PackSSD1, SSD1, SCP02」の実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨のレスポンス(以下、「NGレスポンス」という)を返す。この「NGレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
<5−3. 第1の実施形態の特徴>
以上、本発明の第1の実施形態の具体例を、図15の流れ図および図16のチャートを用いて説明したが、ここでは、この第1の実施形態に係る情報処理装置の特徴をまとめておく。
第1の実施形態に係る情報処理装置100は、図12のブロック図に示すとおり、外部装置200との間で暗号通信を行う機能を有する情報処理装置であり、OSプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部110と、この情報格納部110に格納されているプログラムを実行するプログラム実行部120と、を備えている。
ここで、情報格納部110には、アプリケーションプログラムとして、少なくとも1つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置200との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置200から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
また、情報格納部110には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストLが格納されており、情報格納部110に格納されている管理プログラムのうち、少なくとも1つの指定管理プログラム(たとえば、ISD)は、外部装置200から、自己の管理下に別な下位管理プログラム(たとえば、SSD1)をインストールする旨のインストールコマンドが与えられたときに、所定の実行条件が満たされていた場合には当該インストールコマンドに基づくインストール処理を実行し、当該実行条件が満たされていなかった場合には当該インストールコマンドに基づくインストール処理を拒絶する。
具体的には、指定管理プログラム(たとえば、ISD)の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルPaと呼び、インストール対象となる下位管理プログラム(たとえば、SSD1)の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルPbと呼んだ場合に、セキュリティ強度順位リストLにおいて、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部110に格納されている「指定管理プログラム(たとえば、ISD)」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルPaの認識が行われる。また、インストールコマンドに含まれていた特定の暗号化プロトコルを指定するパラメータを参照することにより、子暗号化プロトコルPbの認識が行われる。
なお、図16に示す実施例の場合、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム(たとえば、ISD)」が、親暗号化プロトコルPaと子暗号化プロトコルPbとについての順位判定処理を「OSプログラム」に委託し、「OSプログラム」が実行した順位判定処理の結果に基づいて、インストールコマンドの実行/拒絶を決定するようにしている。
もちろん、本発明の第1の実施形態を実施する上で、実行条件が満たされているか否かの判定(セキュリティ強度順位リストLを参照した順位判定)は、必ずしも「OSプログラム」によって実行する必要はなく、「指定管理プログラム(たとえば、ISD)」が自ら実行するようにしてもかまわない。
ただ、一般的なICカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、上述した図16に示す実施例のように、順位判定処理を「OSプログラム」に委託して実行するのが好ましい。通常、「OSプログラム」は、各アプリケーションプログラムが使用するメモリ領域に対して自由にアクセスする権限を有しているため、図16に破線の矢印で示すように、暗号化プロトコルPa,Pbを認識する作業を行う上でも、何ら制約なしに作業を実行できる。
なお、上述の実施例では、子暗号化プロトコルPbを認識する方法として、インストールコマンドに含まれているパラメータを参照する方法を述べた。GlobalPlatform(登録商標)に準拠したインストールコマンドには、そのようなパラメータを含ませる仕様が定められているため、実用上は、当該パラメータを参照することにより子暗号化プロトコルPbを認識する方法が最も簡便で好ましい方法と言える。ただ、本発明の第1の実施形態を実施する上では、別な方法によって子暗号化プロトコルPbを認識してもかまわない。
たとえば、インストールコマンド「INSTALL for install (#n), PackSSD1, SSD1, SCP02」が与えられた場合、当該コマンドにパラメータとして含まれている「SCP02」の部分を参照すれば、子暗号化プロトコルPbが「SCP02」であることを直ちに認識できる。GlobalPlatform(登録商標)の仕様において、インストールコマンドに子暗号化プロトコルPbを示す情報をパラメータとして含ませるようにしているのは、プログラムパッケージ「PackSSD1」に、それぞれ異なる暗号化プロトコルに対応した複数通りの暗号通信路開設ルーチンが含まれている場合を想定し、インストール時に、所望の暗号化プロトコルに対応した特定の暗号通信路開設ルーチンを選択してインスタンス化することを念頭においているためである。
しかしながら、そのような仕様に準拠しないケースでは、インストールコマンドに子暗号化プロトコルPbを示す情報が含まれていない可能性もある。たとえば、プログラムパッケージ「PackSSD1」が、暗号化プロトコル「SCP02」に用いる暗号通信路開設ルーチンしか含んでいないプログラムパッケージであった場合、インストール時には、用いる暗号化プロトコルを指定する必要はないので、インストールコマンドにプロトコルを指定する情報を含ませる必要はない。
このような場合、プログラムパッケージ「PackSSD1」を解析することにより、インストール後の管理プログラムSSD1が用いる暗号化プロトコルが「SCP02」であることを認識することが可能である。
上例の場合、「指定管理プログラムISD」は、インストールの対象となるアプリケーションプログラム(たとえば、上例の場合は、「下位管理プログラムSSD1」)を情報格納部110に格納するロード機能を有しており、外部装置200から与えられるロードコマンドに基づいて、当該アプリケーションプログラムSSD1を、プログラムパッケージ「PackSSD1」の形で情報格納部110に一旦ロードした後、外部装置200から与えられるインストールコマンドに基づいて、ロードされたアプリケーションプログラムをインストールする処理を実行する。
別言すれば、外部装置200から下位管理プログラムについてのインストールコマンドが与えられた場合には、必ず、情報処理装置100内にインストールの対象となる下位管理プログラム用のプログラムパッケージがロード済みになっていることになる。そこで、実行条件が満たされているか否かの判定を行う際に、情報格納部110にロードされているインストール前の下位管理プログラム用パッケージを参照することにより、子暗号化プロトコルPbを認識することも可能である。
<5−4. 複数通りの暗号化プロトコルへの対応>
前述したように、GlobalPlatform(登録商標)の仕様では、管理プログラムSDのプログラムパッケージには、それぞれ異なる暗号化プロトコルに対応した複数通りの暗号通信路開設ルーチンを含ませておき、インストール時に、所望の暗号化プロトコルに対応した暗号通信路開設ルーチンを選択してインスタンス化することが可能である。このような仕様を利用すれば、インストール時に、複数の暗号化プロトコルを指定することにより、個々の暗号化プロトコルに対応した複数の暗号通信路開設ルーチンをインスタンス化することも可能になる。
たとえば、本願発明者による別発明を記載した特願2015−168868には、複数の暗号化プロトコルを選択的に用いて暗号通信路を開設する機能を有する情報処理装置が開示されている。このような技術を利用すれば、1つの管理プログラムSDが、複数通りの暗号化プロトコルを使い分けることが可能になる。
具体的には、インストールコマンドとして、「INSTALL for install (#n), PackSSD1, SSD1, SCP01&SCP02」のようなコマンドを与えるようにすれば、パラメータとして「SCP01」および「SCP02」が含まれているので、インストール後の管理プログラムSSD1は、複数通りの暗号化プロトコル「SCP01」,「SCP02」をサポートすることになる。この場合、実際に暗号通信路を開設する際には、暗号通信路開設コマンド「INITIALIZE UPDATE (#n), パラメータ」を与え、たとえば「パラメータ」の部分に「実際に用いる暗号化プロトコルを指定する情報」を入れておくようにすれば、外部装置200側から、実際に暗号通信路を開設する際に、用いる暗号化プロトコルを指定することが可能になる(具体的な指定方法は、たとえば、前掲の特願2015−168868を参照)。
本願のこれまでの説明では、1つの管理プログラムSDが1つの暗号化プロトコルのみを用いることを前提とした説明を行ってきたが、本願発明は、必ずしもそのような前提に立つ必要はなく、1つの管理プログラムSDが、複数通りの暗号化プロトコルを使い分けるようなケースについても本願発明の適用が可能である。この場合に留意すべき点は、実行条件が満たされているか否かの判定処理を、どのようにして行うか、という点である。
1つの管理プログラムSDが、複数通りの暗号化プロトコルをサポートしているケースでは、図15のステップS15に示す判定処理を行う際に、親暗号化プロトコルPaが複数通り存在する可能性があり、子暗号化プロトコルPbも複数通り存在する可能性がある。そこで、親暗号化プロトコルPaが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストLを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。ここでは、代表を選出する具体的な方法として、次の2通りの選出方法を例示しておく。
第1の選出方法は、親暗号化プロトコルPaが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も高い暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も高い暗号化プロトコルを代表として選出する方法である。要するに、親暗号化プロトコルPaも子暗号化プロトコルPbも、それぞれ最高順位のものが代表として選出されることになる。
この第1の選出方法を採る場合は、上位管理プログラムの管理下に下位管理プログラムを組み込む処理を行う際に、上位管理プログラムに開設させる暗号通信路として、順位が最も高い暗号化プロトコルを用いた暗号通信路を開設させるように留意する必要がある。このような留意を行う限り、インストール後の下位管理プログラムがどの暗号化プロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
第2の選出方法は、親暗号化プロトコルPaが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も低い暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も高い暗号化プロトコルを代表として選出する方法である。要するに、親暗号化プロトコルPaでは最低順位のものが、子暗号化プロトコルPbでは最高順位のものが、それぞれ代表として選出されることになる。
この第2の選出方法を採れば、上位管理プログラムの管理下に下位管理プログラムを組み込む処理を行う際に、上位管理プログラムに開設させる暗号通信路として、どの順位の暗号化プロトコルを用いた暗号通信路を開設させたとしても、また、インストール後の下位管理プログラムがどの暗号化プロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。したがって、上記第1の選出方法のような特別な留意を払う必要はない。但し、順位判定において肯定的な判定がなされるハードルは高くなるため、インストールコマンドが拒絶される可能性は高くなる。
<<< §6. 第2の実施形態(管理プログラム変更の制限) >>>
この§6では、第2の実施形態として、図14(g) に示す管理プログラム変更コマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、管理プログラムの変更の制限を行う例を説明する。
<6−1. 第2の実施形態における実行条件の判定処理>
管理プログラム変更コマンドは、§4−7で述べたとおり、管理プログラムの階層構造を変更するために用いられるコマンドであり、具体的な例として、図11に示す階層構造を参照しながら、現時点で上位管理プログラムSSD2の管理下にある下位管理プログラムSSD3を、新たに上位管理プログラムSSD1の管理下に移動させる例を述べた。
この管理プログラム変更コマンドは、図14(g) に示すとおり、「INSTALL for extradition (#n)+新管理プログラム名+移動対象アプリ名」というデータ構造を有し、チャネル番号#nを指定して、指定管理プログラムSDに対して、現時点で自己の管理下にある移動対象となるアプリケーションプログラムを、新たな管理プログラムの管理下に移動させる旨の指示を伝えるコマンドである。
ここでは、やはり図11に示す階層構造を例にとって、管理プログラムSSD1の管理下に、現時点では管理プログラムSSD2の管理下にある管理プログラムSSD3を移動させる場合を例にとって、以下に具体的な処理手順を示そう。この場合、外部装置200から情報処理装置100に対して、「INSTALL for extradition (#n), SSD1, SSD3」なる管理プログラム変更コマンドが与えられる。ここで、「#n」は、管理プログラムSSD2(現時点での上位管理プログラム)に対応づけられたチャネル番号であり、当該管理プログラム変更コマンドは、管理プログラムSSD2によって処理されることになる。
要するに、上記管理プログラム変更コマンドは、管理プログラムSSD2に対して、移動対象となる下位管理プログラムSSD3を、移動先となる新たな上位管理プログラムSSD1の管理下へ移動させる処理を実行させるためのコマンドであり、チャネル番号「#n」によって指定される「指定管理プログラム」は、現時点での上位管理プログラムである管理プログラムSSD2ということになる。
図17は、本発明の第2の実施形態において、現時点では指定管理プログラムSSD2の管理下にある管理プログラムSSD3を、管理プログラムSSD1の管理下に移動させるための管理プログラム変更コマンドが与えられた場合の処理手順を示す流れ図である。
ここで、図11に示す階層構造において、移動先となる新たな管理プログラムSSD1を第1の管理プログラムとし、移動対象となる管理プログラムSSD3を第2の管理プログラムと考えれば、この第2の実施形態は、前述した第1の実施形態に準じて考えることができる。すなわち、この第2の実施形態も、第1の実施形態と同様に、第1の管理プログラムSSD1の管理下に、第2の管理プログラムSSD3を組み込む処理を行う点では同じである。
別言すれば、前述した第1の実施形態の場合、新規インストールという処理によって第1の管理プログラムの管理下に、第2の管理プログラムが組み込まれるのに対して、ここで述べる第2の実施形態の場合、現時点で第3の管理プログラムの管理下にある第2の管理プログラムSSD3を、第1の管理プログラムSSD1の管理下に移動する点が異なるものの、最終的には、第1の管理プログラムSSD1の管理下に、第2の管理プログラムSSD3を組み込むことを目的とする点に変わりはない。
したがって、図17の流れ図に示す手順は、外部装置200から情報処理装置100に対して、第2の暗号化プロトコルを用いた暗号通信路開設機能を有する第2の管理プログラムSSD3を、第3の管理プログラムSSD2の管理下から、第1の暗号化プロトコルを用いた暗号通信路開設機能を有する第1の管理プログラムSSD1の管理下に移動させる階層構造の変更を指示する組込用コマンド(すなわち、管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」)が与えられたときに実行される手順ということになる。この手順の目的は、セキュリティ強度順位リストL上で第1の暗号化プロトコルよりも第2の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド(管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」)の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムが移動される事態を回避することにある。
まず、ステップS21では、指定管理プログラム(SSD2)により、「INSTALL for extradition (#n), SSD1, SSD3」なる管理プログラム変更コマンドが受信される。このコマンドは、指定管理プログラム(SSD2)に対して、現時点で管理下にある移動対象管理プログラム(SSD3)を、移動先となる新たな管理プログラム(SSD1)の管理下に移動させる指示を与えるものである。従来の情報処理装置の場合、このような管理プログラム変更コマンドが直ちに実行されることになるが、本発明の場合、セキュリティ強度順位リストLを参照して、実行条件が満たされているか否かの判定が行われる。
そこで、まず、ステップS22において、移動対象となる管理プログラム(SSD3)がサポートしている子暗号化プロトコルPbが認識される。管理プログラム(SSD3)は、既に指定管理プログラム(SSD2)の管理下にインストールされているプログラムであるため、当該管理プログラム(SSD3)が使用するメモリ領域には、当該管理プログラム(SSD3)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルPbを認識することができる。
続くステップS23では、移動先となる新たな管理プログラム(SSD1)がサポートしている暗号化プロトコルPaが認識される。この暗号化プロトコルPaは、「新たな親」となる管理プログラム(SSD1)が用いる暗号化プロトコルであるため、ここでは「新親暗号化プロトコルPa」と呼ぶことにする。当該管理プログラム(SSD1)も既にインストール済みのプログラムであるため、当該管理プログラム(SSD1)が使用するメモリ領域には、当該管理プログラム(SSD1)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて新親暗号化プロトコルPaを認識することができる。
こうして、新親暗号化プロトコルPaおよび子暗号化プロトコルPbが認識されたら、続いて、ステップS24において、セキュリティ強度順位リストLが参照され、ステップS25において、当該管理プログラム変更コマンドの実行条件が満たされているか否かが判定される。具体的には、新親暗号化プロトコルPaの順位が、子暗号化プロトコルPbの順位と等しいか、または、子暗号化プロトコルPbの順位より高い場合には肯定的な判定がなされ、新親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より低い場合には否定的な判定がなされる。
肯定的な判定がなされた場合は、ステップS26において、当該管理プログラム変更コマンドが実行される。すなわち、指定管理プログラム(SSD2)の管理下にある移動対象管理プログラム(SSD3)が、移動先となる新たな管理プログラム(SSD1)の管理下へと移動される。移動対象となる管理プログラム(SSD3)がまだ鍵データをもっていない場合、上記移動の後に、新たに鍵データの書込処理を行う必要があるが、その際、移動先となる新たな管理プログラム(SSD1)が開設した暗号通信路を利用して鍵データの書込みが行われることになる。一方、否定的な判定がなされた場合は、ステップS27において、当該管理プログラム変更コマンドは拒絶され、外部装置200に対してエラーを示すレスポンスが返されることになる。
<6−2. 第2の実施形態の具体的な処理チャート>
続いて、外部装置200から第2の実施形態に係る情報処理装置100に対して、管理プログラム変更コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図18に示すチャートを参照しながら説明する。図示の例は、外部装置200としてスマートフォン10を用い、情報処理装置100として当該スマートフォン10に装着されたSIMカード11を用い、現時点で管理プログラムSSD2の管理下にある管理プログラム(SSD3:移動対象となるプログラム)を、移動先となる新たな管理プログラム(SSD1)の管理下に移動する例である。
図18のチャートにおける右端のラインは、外部装置200(スマートフォン10)に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置100(SIMカード11)に組み込まれている「管理プログラムSSD2」(指定管理プログラム)を示し、中央左側のラインは、情報処理装置100(SIMカード11)に組み込まれている「OSプログラム」を示し、左端のラインは、情報処理装置100(SIMカード11)に組み込まれている「管理プログラムSSD1」(移動先となる新たな管理プログラム)もしくは「管理プログラムSSD3」(移動対象となる管理プログラム)を示している。
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合、管理プログラムSSD2がチャネル番号「#n」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム(SSD2)」を二重枠のブロックで示してある。
まず、「ホスト側アプリ」から、情報処理装置100に対して、アプリケーション選択コマンド「SELECT (#n), SSD2」が与えられる。当該コマンドは、§4−1で説明したとおり(図14(a) 参照)、特定のチャネル番号#nを指定して、情報処理装置100側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムSSD2」がチャネル番号「#n」に対応づけられ、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムSSD2」を指定したコマンドとして取り扱われ、当該「指定管理プログラムSSD2」によって処理されることになる。
図示のとおり、アプリケーション選択コマンド「SELECT (#n), SSD2」は、まず、「OSプログラム」によって処理される。「OSプログラム」は、当該コマンドに基づいて、「管理プログラムSSD2」をチャネル番号「#n」に対応づけるための登録を行う。これにより、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムSSD2」を指定したコマンドと認識され、「指定管理プログラムSSD2」に引き渡される。
「OSプログラム」は、「指定管理プログラムSSD2」をチャネル番号「#n」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムSSD2」に報知する。「指定管理プログラムSSD2」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「OKレスポンス」を返す。
続いて、「ホスト側アプリ」から、情報処理装置100に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」が与えられる。当該コマンドについての処理およびこれに応じた「OKレスポンス」については、既に図16のチャートで述べたため、ここでは説明は省略するが、「指定管理プログラムSSD2」によって、暗号通信路を開設する処理が行われる。
「ホスト側アプリ」は、返信されてきた「OKレスポンス」に付随する演算結果の正当性を確認することにより、現在交信中の情報処理装置100を正規の交信相手として認証し、続いて、情報処理装置100に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),(ホスト認証コード)」を送信する。当該コマンドについての処理およびこれに応じた「OKレスポンス」についても、既に図16のチャートで述べたため、ここでは説明は省略するが、「指定管理プログラムSSD2」によって、「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置200が正規の交信相手として認証され、「OKレスポンス」が返信される。
この時点で、情報処理装置100(「指定管理プログラムSSD2」)と外部装置200(「ホスト側アプリ」)との間に暗号通信路を開設する準備が完了したことになり、以後、両者間の通信は、当該暗号通信路を介して実行される。この§6で述べる第2の実施形態は、管理プログラム変更コマンドが与えられたときの処理に関するものなので、以下、この暗号通信路を介して管理プログラム変更コマンドが与えられたときの処理手順を説明する。
まず、図示のとおり、「ホスト側アプリ」から、情報処理装置100に対して、管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」が与えられる。当該コマンドは、§4−7で説明したとおり(図14(g) 参照)、「指定管理プログラムSSD2」に対して、現時点でその管理下にある「管理プログラムSSD3」(移動対象となる管理プログラム)を、別な「管理プログラムSSD1」(移動先となる新たな管理プログラム)の管理下に移動させる指示を与えるコマンドである。
従来の一般的な管理プログラムSDであれば、当該管理プログラム変更コマンドを直ちに実行することになるが、本発明の場合、図17の流れ図に示す各手順により、当該管理プログラム変更コマンドが実行条件を満たしているか否かの判定が行われる。そのため、まず、当該管理プログラム変更コマンドを受信した「指定管理プログラムSSD2」は、「OSプログラム」に対して上記判定を依頼する。
当該依頼を受けた「OSプログラム」は、図17の流れ図におけるステップS22〜S25に相当する実行条件の判定処理を行う。すなわち、「OSプログラム」は、「移動先となる新たな管理プログラムSSD1」が用いる新親暗号化プロトコルPaを認識するとともに、「移動対象となる管理プログラムSSD3」が用いる子暗号化プロトコルPbを認識する。
図18における破線の矢印は、このような暗号化プロトコルPa,Pbの認識プロセスを示している。実際には、新親暗号化プロトコルPaおよび子暗号化プロトコルPbの認識は、「管理プログラムSSD1」および「管理プログラムSSD3」が使用するメモリ領域を参照することにより行われる。
「OSプログラム」は、こうして認識した暗号化プロトコルPa,Pbの強度順位を、セキュリティ強度順位リストL上で比較する順位判定(図17のステップS25の判定)を行い、判定結果を「指定管理プログラムSSD2」に伝達する。図18において、「YES」と記載された部分の信号の流れは、肯定的な判定結果が得られた場合を示しており、図に一点鎖線の矢印で示すとおり、実行条件を満たしている旨の「判定結果OK」が伝達される。「判定結果OK」が伝達された場合、「指定管理プログラムSSD2」は、当該コマンド、すなわち、管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」を実行する。
その結果、「移動対象となる管理プログラムSSD3」は、「移動先となる新たな管理プログラムSSD1」の管理下に移動され、「ホスト側アプリ」に対して「OKレスポンス」が返される。
一方、順位判定の結果、否定的な判定結果が得られた場合は、図18において、「NO」と記載された部分に示すような信号の流れが生じる。すなわち、図に二点鎖線の矢印で示すとおり、「OSプログラム」から「指定管理プログラムSSD2」に対して、実行条件を満たしていない旨の「判定結果NG」が伝達される。「判定結果NG」が伝達された場合、「指定管理プログラムSSD2」は、当該管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」の実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「NGレスポンス」を返す。この「NGレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
なお、順位判定の結果、肯定的な判定結果が得られた場合は、図18に「YESの場合」と記載された部分の白矢印に示すとおり、「移動対象となる管理プログラムSSD3」についての発行処理、すなわち、鍵データの書込処理が行われることになる。この発行処理は、「ホスト側アプリ」から、情報処理装置100に対して、新たなアプリケーション選択コマンド「SELECT (#n), SSD1」を与えることにより、「移動先となる新たな管理プログラムSSD1」を新たな「指定管理プログラム」として選択した後に行われることになる(詳細な作業手順の説明は省略する)。
<6−3. 第2の実施形態の特徴>
以上、本発明の第2の実施形態の具体例を、図17の流れ図および図18のチャートを用いて説明したが、ここでは、この第2の実施形態に係る情報処理装置の特徴をまとめておく。
第2の実施形態に係る情報処理装置100は、図12のブロック図に示すとおり、外部装置200との間で暗号通信を行う機能を有する情報処理装置であり、OSプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部110と、この情報格納部110に格納されているプログラムを実行するプログラム実行部120と、を備えている。
ここで、情報格納部110には、アプリケーションプログラムとして、少なくとも1つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置200との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置200から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
また、情報格納部110には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストLが格納されており、情報格納部110に格納されている管理プログラムのうち、少なくとも1つの指定管理プログラム(たとえば、SSD2)は、自己の管理下にあるアプリケーションプログラム(たとえば、SSD3)を新たな管理プログラム(たとえば、SSD1)の管理下に移動させる管理プログラム変更機能を有している。
そして、この指定管理プログラム(たとえば、SSD2)は、外部装置200から、自己の管理下にある別な管理プログラム(たとえば、SSD3)を移動対象として、当該移動対象となる管理プログラム(たとえば、SSD3)を、移動先となる新たな管理プログラム(たとえば、SSD1)の管理下に移動させる旨の管理プログラム変更コマンドが与えられたときに、所定の実行条件が満たされていた場合には当該管理プログラム変更コマンドに基づく管理プログラム変更処理を実行し、当該実行条件が満たされていなかった場合には当該管理プログラム変更コマンドに基づく管理プログラム変更処理を拒絶する。
具体的には、移動対象となる管理プログラム(たとえば、SSD3)の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルPbと呼び、移動先となる新たな管理プログラム(たとえば、SSD1)の暗号通信路開設機能に用いられる暗号化プロトコルを新親暗号化プロトコルPaと呼んだ場合に、セキュリティ強度順位リストLにおいて、新親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、新親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部110に格納されている「移動対象となる管理プログラム(たとえば、SSD3)」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルPaの認識が行われる。同様に、情報格納部110に格納されている「移動先となる新たな管理プログラム(たとえば、SSD1)」もしくは当該プログラムに関連するデータを参照することにより新親暗号化プロトコルPaの認識が行われる。
なお、図18に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム(たとえば、SSD2)」が、親暗号化プロトコルPaと子暗号化プロトコルPbとについての順位判定処理を「OSプログラム」に委託し、「OSプログラム」が実行した順位判定処理の結果に基づいて、インストールコマンドの実行/拒絶を決定するようにしている。
もちろん、本発明の第2の実施形態を実施する上で、実行条件が満たされているか否かの判定(セキュリティ強度順位リストLを参照した順位判定)は、必ずしも「OSプログラム」によって実行する必要はなく、「指定管理プログラム(たとえば、SSD2)」が自ら実行するようにしてもかまわないが、§5−3において述べたとおり、一般的なICカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「OSプログラム」に委託して実行するのが好ましい。
なお、図18のチャートの最下段に示すとおり、「移動先となる新たな管理プログラム(たとえば、SSD1)」は、自己の管理下にあるアプリケーションプログラムを動作させるために必要な発行データを書込む発行データ書込機能を有しており、外部装置200から与えられる発行データ書込コマンドに基づいて、自己の管理下に移動されてきた「移動対象となる管理プログラム(たとえば、SSD3)」についての発行データ書込処理(発行処理)を実行することができる。具体的には、発行データとして鍵データの書込みが行われる。
<6−4. 複数通りの暗号化プロトコルへの対応>
§5−4でも述べたとおり、本願発明は、1つの管理プログラムSDが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。§5−4では、第1の実施形態を実施する際に、1つの管理プログラムSDが、複数通りの暗号化プロトコルを使い分けることができるようにした場合に、実行条件が満たされているか否かの判定をどのようにするかについて説明を行った。この§5−4で述べた方法は、ここで述べる第2の実施形態を実施する場合にも同様に有効である。
すなわち、1つの管理プログラムSDが、複数通りの暗号化プロトコルをサポートしているケースでは、図17のステップS25に示す判定処理を行う際に、新親暗号化プロトコルPaが複数通り存在する可能性があり、子暗号化プロトコルPbも複数通り存在する可能性がある。そこで、新親暗号化プロトコルPaが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストLを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。具体的には、§5−4で述べたとおり、次の2通りの選出方法が可能である。
第1の選出方法は、新親暗号化プロトコルPaが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も高い暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も高い暗号化プロトコルを代表として選出する方法である。要するに、新親暗号化プロトコルPaも子暗号化プロトコルPbも、それぞれ最高順位のものが代表として選出されることになる。
この第1の選出方法を採る場合は、図18の最下段に示す「移動対象となる管理プログラム(SSD3)」についての発行処理(「移動先となる新たな管理プログラム(SSD1)」の管理下における発行処理)を行う際に、「移動先となる新たな管理プログラム(SSD1)」に開設させる暗号通信路として、順位が最も高い暗号化プロトコルを用いた暗号通信路を開設させるように留意する必要がある。このような留意を行う限り、「移動対象となる管理プログラム(SSD3)」が移動後にどの暗号化プロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
第2の選出方法は、新親暗号化プロトコルPaが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も低い暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も高い暗号化プロトコルを代表として選出する方法である。要するに、新親暗号化プロトコルPaでは最低順位のものが、子暗号化プロトコルPbでは最高順位のものが、それぞれ代表として選出されることになる。
この第2の選出方法を採れば場合は、図18の最下段に示す「移動対象となる管理プログラム(SSD3)」についての発行処理を行う際に、「移動先となる新たな管理プログラム(SSD1)」に開設させる暗号通信路として、どの順位の暗号化プロトコルを用いた暗号通信路を開設させたとしても、また、「移動対象となる管理プログラム(SSD3)」が移動後にどの暗号化プロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。したがって、上記第1の選出方法のような特別な留意を払う必要はない。但し、順位判定において肯定的な判定がなされるハードルは高くなるため、管理プログラム変更コマンドが拒絶される可能性は高くなる。
<<< §7. 第3の実施形態(暗号通信路代理開設の制限) >>>
既に述べたとおり、上位管理プログラムの管理下に、下位管理プログラムを組み込む場合、まず、下位管理プログラムのパッケージをロードし(図8(b) の機能4)、これをインストールし(図8(b) の機能5)、最後に鍵データを書込む発行処理(図8(b) の機能7)を行う必要がある。第1の実施形態は、インストールする際にセキュリティ強度順位リストLを用いた順位判定を行い、インストールコマンドの実行条件のチェックを行うものであり、第2の実施形態は、これに準じて、新規にインストールする際ではなく、新たな上位管理プログラムの管理下に階層間移動させる際にチェックを行うものである。
ここで述べる第3の実施形態は、インストール作業(ここでは、階層間の移動作業も含めたものとする)まではノーチェックで作業を進め、最終段階の発行処理(鍵データの書込処理)において、チェックを行うという着想に基づくものである。したがって、この第3の実施形態は、上位管理プログラムの管理下に、既に下位管理プログラムがインストールされているが、当該下位管理プログラムについての鍵データの書込処理(発行処理)はまだ行われていない、という段階で実施することが前提となっている。より具体的には、鍵データの書込みを行う準備段階として暗号通信路開設コマンドが与えられたときに、当該コマンドの実行条件をチェックすることになる。
そして、チェックの結果、実行条件が満たされていた場合には、上位管理プログラムが下位管理プログラムの代理として、暗号通信路を開設する処理を行う。結局、この§7で述べる第3の実施形態では、図14(e) に示す暗号通信路開設コマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、暗号通信路の代理開設を制限することになる。以下、この第3の実施形態について詳述する。
なお、上述したとおり、§3〜§6の説明では、インストールコマンドに基づく新規インストールだけでなく、管理プログラム変更コマンドに基づく階層間の移動により管理下に配置される場合も広義の「インストール」と呼ぶことにする。
<7−1. 第3の実施形態における実行条件の判定処理>
暗号通信路開設コマンドは、§4−5で述べたとおり、特定の管理プログラムSDに対して、暗号通信路を開設させるためのコマンドであり、図14(e) に示すとおり、「INITIALIZE UPDATE (#n)+パラメータ」というデータ構造を有し、チャネル番号#nを指定して、指定管理プログラムSDに対して、暗号通信路を開設する指示を与えるとともに、外部装置200が、情報処理装置100を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。
この暗号通信路開設コマンドには、パラメータとして、キーバージョン番号および乱数が付加されている。そこで、当該コマンドを受信した管理プログラムSDは、本来であれば、図3に示す鍵テーブルTからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置200との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対するレスポンスとして返信することになる。
しかしながら、この暗号通信路開設コマンドを受信した管理プログラムSDが、インストールの段階までは完了しているが、まだ暗号データの書込段階が行われていない状態であった場合には、図3に示す鍵テーブルTは空のテーブルであり、当然ながら、当該管理プログラムSDは、まだ自分自身では暗号通信路を開設することはできない。GlobalPlatform(登録商標)の仕様では、このような場合、その上位の管理プログラムが暗号通信路の開設処理を代理実行することになる。
ここでは、やはり図11に示す階層構造を例にとって、管理プログラムISDの管理下に、既に管理プログラムSSD1がインストールされているが、完全な組込処理は完了しておらず、この後、管理プログラムSSD1についての鍵データの書込処理(発行処理)を行う必要がある状態を例にとって、以下に具体的な処理手順を示そう。
ここで留意しておくべき点は、インストールコマンドや管理プログラム変更コマンドは、上位の管理プログラムを指定管理プログラムとして、当該上位の管理プログラムに付与されたチャネル番号(たとえば、「#m」)の下に開設された暗号通信路を介して実行されるコマンドであるのに対して、この第3の実施形態における鍵データを書込む発行処理を行うためのコマンドは、新たに組み込まれる下位の管理プログラムを指定管理プログラムとして、当該下位の管理プログラムに新たなチャネル番号(たとえば、「#n」)を付与して実行すべきコマンドであるため、新たなチャネル番号「#n」の下に新たな暗号通信路を開設する必要がある。
したがって、上例の場合、下位の管理プログラムSSD1についての鍵データの書込処理を行う際には、まず、外部装置200から情報処理装置100に対して、「INITIALIZE UPDATE (#n)+パラメータ」なる暗号通信路開設コマンドを与えて、チャネル番号「#n」が割り当てられた管理プログラムSSD1を指定管理プログラムとして暗号通信路の開設を指示する必要がある。この場合、管理プログラムSSD1は、まだ発行処理(鍵データの書込処理)が完了していないので、自分自身では暗号通信路の開設を行うことができない。このため、情報処理装置100の内部では、上位の管理プログラムISDが暗号通信路の代理開設を行うことになる。
図19は、本発明の第3の実施形態において、指定管理プログラムSSD1に対して暗号通信路開設コマンドが与えられた場合の処理手順を示す流れ図である。この図19の流れ図に示す手順は、要するに、第1の暗号化プロトコルを用いた暗号通信路開設機能を有する第1の管理プログラムISDの管理下に、第2の暗号化プロトコルを用いた暗号通信路開設機能を有する第2の管理プログラムSSD1が既にインストールされているが(階層間移動も含めた広義の「インストール」)、第2の管理プログラムSSD1が用いる暗号鍵の書込みがまだ実行されていない状態において、当該暗号鍵の書込みを暗号通信路を介して行うために、第1の管理プログラムISDに暗号通信路を代理開設させるための組込用コマンド(暗号通信路開設コマンド「INITIALIZE UPDATE (#n)+パラメータ」)が、外部装置200から情報処理装置100に対して与えられたときに実行される手順ということになる。
この手順の目的は、セキュリティ強度順位リストL上で第1の暗号化プロトコルよりも第2の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド(暗号通信路開設コマンド「INITIALIZE UPDATE (#n)+パラメータ」)の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムを組み込む作業が最終段階まで実行されることを回避することにある。
まず、ステップS31では、指定管理プログラム(SSD1)により、「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」なる暗号通信路開設コマンドが受信される。このコマンドは、指定管理プログラム(SSD1)に対して、暗号通信路の開設および認証用レスポンスの返信を求めるコマンドである。このコマンドが与えられると、ステップS32において、暗号鍵が書込済みであるか否かが判断される。
ここで言う暗号鍵は、指定管理プログラム(SSD1)のための暗号鍵(たとえば、図3に示す鍵テーブルT)であり、暗号鍵が書込済みであれば、指定管理プログラム(SSD1)の組込処理は最終段階まで完了しており、指定管理プログラム(SSD1)は、自分自身で暗号通信路の開設処理を実行できる状態にある、ということになる。したがって、ステップS32で肯定的な判定がなされると、ステップS39へと進み、当該暗号通信路開設コマンドが指定管理プログラム(SSD1)自身によって実行される。
ここで説明すべき例は、指定管理プログラム(SSD1)が、その上位の管理プログラム(ISD)の管理下にインストールされているものの、まだ暗号鍵の書込みが行われていない場合の処理であるので、ステップS32において否定的な判定がなされる。従来の情報処理装置の場合、ステップS32で否定的な判定がなされると、与えられた暗号通信路開設コマンドは、上位管理プログラム(ISD)へと引き渡され、この上位管理プログラム(ISD)によるコマンドの代理実行が直ちに実行されることになる。これに対して、本発明の場合、そのような代理実行を行う前に、セキュリティ強度順位リストLを参照して、実行条件が満たされているか否かの判定が行われる。
まず、ステップS33において、代理する上位管理プログラム(ISD)がサポートしている親暗号化プロトコルPaが認識される。当該上位管理プログラム(ISD)は、既に組込済みのプログラムであるため、当該上位管理プログラム(ISD)が使用するメモリ領域には、当該上位管理プログラム(ISD)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルPaを認識することができる。
続いて、ステップS34において、代理される指定管理プログラム(SSD1)がサポートしている子暗号化プロトコルPbが認識される。指定管理プログラム(SSD1)は、既に上位管理プログラム(ISD)の管理下にインストールされているプログラムであるため、当該指定管理プログラム(SSD1)が使用するメモリ領域には、当該指定管理プログラム(SSD1)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルPbも認識することができる。
こうして、親暗号化プロトコルPaおよび子暗号化プロトコルPbが認識されたら、続いて、ステップS35において、セキュリティ強度順位リストLが参照され、ステップS36において、当該暗号通信路開設コマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルPaの順位が、子暗号化プロトコルPbの順位と等しいか、または、子暗号化プロトコルPbの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より低い場合には否定的な判定がなされる。
肯定的な判定がなされた場合は、ステップS37において、当該暗号通信路開設コマンドが代理実行される。すなわち、指定管理プログラム(SSD1)が自分自身で実行するのではなく、上位管理プログラム(ISD)が代理で、暗号通信路の開設処理を実行する。もちろん、この場合、上位管理プログラム(ISD)用の暗号鍵を用い、上位管理プログラム(ISD)用の暗号化プロトコルを用いた暗号通信路が開設されることになる。また、認証用レスポンスを作成する処理も上位管理プログラム(ISD)によって代理実行されることになる。
一方、否定的な判定がなされた場合は、ステップS38において、当該暗号通信路開設コマンドは拒絶され、外部装置200に対してエラーを示すレスポンスが返されることになる。
<7−2. 第3の実施形態の具体的な処理チャート>
続いて、外部装置200から第3の実施形態に係る情報処理装置100に対して、暗号通信路開設コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図20および図21に示すチャートを参照しながら説明する。図示の例は、外部装置200としてスマートフォン10を用い、情報処理装置100として当該スマートフォン10に装着されたSIMカード11を用い、第1の管理プログラムISDの管理下に既にインストールされている第2の管理プログラムSSD1について、鍵データの書込処理を行うために、暗号通信路の開設を指示する例である。
図20,図21のチャートにおける右端のラインは、外部装置200(スマートフォン10)に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置100(SIMカード11)に組み込み途中の「管理プログラムSSD1」(代理される下位管理プログラム)を示し、中央左側のラインは、情報処理装置100(SIMカード11)に組み込まれている「OSプログラム」を示し、左端のラインは、情報処理装置100(SIMカード11)に組み込まれている「管理プログラムISD」(代理する上位管理プログラム)を示している。
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合、管理プログラムSSD1がチャネル番号「#n」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム(SSD1)」を二重枠のブロックで示してある。また、図20は、順位判定により肯定的な判定がなされた場合の処理を示し、図21は、順位判定により否定的な判定がなされた場合の処理を示している。
まず、図20のチャートについて説明する。はじめに、「ホスト側アプリ」から、情報処理装置100に対して、アプリケーション選択コマンド「SELECT (#n), SSD1」が与えられる。当該コマンドは、§4−1で説明したとおり(図14(a) 参照)、特定のチャネル番号#nを指定して、情報処理装置100側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムSSD1」がチャネル番号「#n」に対応づけられ、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムSSD1」を指定したコマンドとして取り扱われ、当該「指定管理プログラムSSD1」によって処理されることになる。
図示のとおり、アプリケーション選択コマンド「SELECT (#n), SSD1」は、まず、「OSプログラム」によって処理される。「OSプログラム」は、当該コマンドに基づいて、「管理プログラムSSD1」をチャネル番号「#n」に対応づけるための登録を行う。これにより、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムSSD1」を指定したコマンドと認識され、「指定管理プログラムSSD1」に引き渡される。
「OSプログラム」は、「指定管理プログラムSSD1」をチャネル番号「#n」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムSSD1」に報知する。「指定管理プログラムSSD1」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「OKレスポンス」を返す。こうして、新たにチャネル番号「#n」に割り当てられた通信チャネルが開設されたら、続いて、当該通信チャネルを暗号通信路にするための処理が必要になる。
そこで、「ホスト側アプリ」から、情報処理装置100に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」が与えられる。当該コマンドは、所定の管理プログラムに対して、キーバーション番号で指定された暗号鍵を用いて暗号通信路の開設を指示するとともに、乱数に基づいて所定の認証用レスポンスの返信を求めるコマンドである。ただ、この時点では、「指定管理プログラムSSD1」用の鍵データの書込処理が行われていないため、「指定管理プログラムSSD1」は自分自身で当該コマンドを実行することができない。そこで、当該コマンドは、「上位管理プログラムISD」に代理実行してもらう必要がある。
従来の一般的な管理プログラムSDであれば、当該暗号通信路開設コマンドを直ちに「上位管理プログラムISD」に引き渡し、代理実行してもらうことになるが、本発明の場合、図19の流れ図に示す各手順により、当該暗号通信路開設コマンドが実行条件を満たしているか否かの判定が行われる。そのため、まず、当該暗号通信路開設コマンドを受信した「指定管理プログラムSSD1」は、「OSプログラム」に対して上記判定を依頼する。
当該依頼を受けた「OSプログラム」は、図19の流れ図におけるステップS33〜S36に相当する実行条件の判定処理を行う。すなわち、「OSプログラム」は、「代理する上位管理プログラムISD」が用いる親暗号化プロトコルPaを認識するとともに、「代理される指定管理プログラムSSD1」が用いる子暗号化プロトコルPbを認識する。
図20における破線の矢印は、このような暗号化プロトコルPa,Pbの認識プロセスを示している。実際には、親暗号化プロトコルPaおよび子暗号化プロトコルPbの認識は、「管理プログラムISD」および「管理プログラムSSD1」が使用するメモリ領域を参照することにより行われる。
「OSプログラム」は、こうして認識した暗号化プロトコルPa,Pbの強度順位を、セキュリティ強度順位リストL上で比較する順位判定(図19のステップS36の判定)を行い、判定結果に応じて、それぞれ異なる処理を実行する。図20に「YES」と記載された一点鎖線より下方の処理は、肯定的な判定結果が得られた場合の処理であり、以下、当該処理を順に説明する。
まず、「OSプログラム」から「代理する上位管理プログラムISD」に対して、当該暗号通信路開設コマンド、すなわち、「指定管理プログラムSSD1」が受信した「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」なるコマンドの代理実行が依頼される。依頼を受けた「上位管理プログラムISD」は、当該コマンドを代理実行する。もちろん、「上位管理プログラムISD」には、異なるチャネル番号(たとえば、「#m」)が割り当てられているので、「上位管理プログラムISD」は、当該コマンドを、チャネル番号「#n」が割り当てられている「指定管理プログラムSSD1」の代理として実行することを認識して、以下の処理を行うことになる。
すなわち、「上位管理プログラムISD」は、自分用の暗号鍵を用いて、暗号通信路を代理開設するための処理を行うとともに、認証用レスポンスの作成する処理を行い、処理が支障なく完了した旨の完了通知を「OSプログラム」に返す。認証用レスポンスは、暗号通信路開設コマンドに含まれていた乱数と、自分用の暗号鍵とを利用した所定の演算処理によって作成される。「OSプログラム」宛の完了通知には、作成した認証用レスポンスが含まれている。「OSプログラム」は、当該完了通知を「指定管理プログラムSSD1」に伝達する。「指定管理プログラムSSD1」は、「ホスト側アプリ」に対して「OKレスポンス」を返す。この「OKレスポンス」には、「上位管理プログラムISD」が作成した認証用レスポンスが含まれている。
「ホスト側アプリ」は、返信されてきた「OKレスポンス」に付随する認証用レスポンスの正当性を確認することにより、現在交信中の情報処理装置100を正規の交信相手として認証し、続いて、情報処理装置100に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),(ホスト認証コード)」を送信する。
この外部認証コマンドは、まずチャネル番号「#n」で指定された「指定管理プログラムSSD1」が受信することになるが、これを「OSプログラム」に引き渡すことになる。「OSプログラム」は、この外部認証コマンドを「上位管理プログラムISD」に引き渡して代理実行の依頼を行う。依頼を受けた「上位管理プログラムISD」は、当該コマンドを代理実行する。すなわち、当該外部認証コマンドに含まれている「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置200を正規の交信相手として認証する処理を行う。
正しい認証が行われたら、「上位管理プログラムISD」から「OSプログラム」に対して完了通知がなされ、「OSプログラム」は当該完了通知を「指定管理プログラムSSD1」に伝達する。そして、「指定管理プログラムSSD1」は、「ホスト側アプリ」に対して「OKレスポンス」を返す。
以上の処理により、情報処理装置100と外部装置200との間には、チャネル番号「#n」に対応づけられた暗号通信路が開設されることになる。そこで、外部装置200は、この暗号通信路を利用して、鍵データの書込みを行うためのコマンドを送信する。鍵データの書込みを行うためのコマンドとしては、§4−4「アプリケーション向け発行データの書込コマンド」において説明したとおり、2通りの書込コマンドが用意されている。
図14(d) に示すとおり、書込コマンドその1は、発行データを書込むための汎用の書込コマンドであり、「STORE DATA (#n)+発行データ」というデータ構造を有し、チャネル番号#nを指定して、「発行データ」の部分のデータを発行データとして書込む旨の指示を伝えるコマンドになる。したがって、「発行データ」の部分に鍵データをおけば、鍵データの書込処理が可能になる。一方、書込コマンドその2は、鍵データを書込むための専用の書込コマンドであり、「PUT KEY (#n)+鍵データ」というデータ構造を有し、チャネル番号#nを指定して、「鍵データ」の部分のデータを図3に例示した鍵テーブルT(インストール時に空の格納場所のみが用意されている)に書込む旨の指示を伝えるコマンドになる。
いずれの書込コマンドの場合も、まずチャネル番号「#n」で指定された「指定管理プログラムSSD1」が受信することになるが、既に開設された暗号通信路を介して送信されてきたコマンドであるため、実行時には復号する必要がある。GlobalPlatform(登録商標)の仕様では、コマンドの先頭5バイトの部分は平文のままとされているので、暗号通信路を介して送信されてきたコマンドであっても、当該コマンドがどのコマンドであるかを識別することはできるが、その実体部分(たとえば、書込コマンドの場合、書込対象となるデータ部分)は復号する必要がある。
ここで、チャネル番号#nで開設されている暗号通信路は、「上位管理プログラムISD」が代理開設した暗号通信路であるため、復号の処理は、「上位管理プログラムISD」に実行させる必要がある。そこで、書込コマンドを受信した「指定管理プログラムSSD1」は、これを「OSプログラム」に引き渡す。「OSプログラム」は、この書込コマンドを「上位管理プログラムISD」に引き渡して復号処理依頼を行う。こうして、「上位管理プログラムISD」によって、書込コマンドに対する復号が行われる。なお、通常、復号時にはチェックコードの検証も併せて実行される。
そもそも、暗号通信路の開設とは、情報処理装置100と外部装置200との間の通信路を介して送受されるデータを、送信側で暗号化し、受信側では、これを復号する、という処理が行われるように必要な設定を行うことを意味している。したがって、上例の場合、「上位管理プログラムISD」が暗号通信路を代理開設しているため、暗号化された状態で送信されてきたコマンドに対する復号処理は、「上位管理プログラムISD」によって実行する必要がある。
このように、暗号化された書込コマンドは、「上位管理プログラムISD」において復号されて平文コマンドに戻された後、「OSプログラム」に引き渡され、更に「指定管理プログラムSSD1」に引き渡される。「指定管理プログラムSSD1」は、こうして平文となった書込コマンドを実行し、鍵データの書込処理を行い、「ホスト側アプリ」に対して「OKレスポンス」を返す。書込コマンドの具体的な処理については、既に、§4−4で説明したため、ここでは説明を省略する。なお、GlobalPlatformの仕様では、鍵データの場合、コマンドのデータフィールド全体に対する暗号通信用の暗号化に加えて、鍵データ自身に対する暗号化も行われるため、鍵データの部分は二重に暗号化されることになる。このため、実際には、「指定管理プログラムSSD1」は、平文コマンドを受け取った後、再度、鍵データの部分についての復号処理を、「上位管理プログラムISD」に依頼する必要がある。ただ、本願では、便宜上、このような再度の復号処理依頼のプロセスについては説明を省略する。後述する各実施例についても同様である。
このように、図20のチャートに示されている処理は、基本的には、「指定管理プログラムSSD1」に対して、「STORE DATA (#n),(発行データ)」もしくは「PUT KEY (#n),(鍵データ)」という鍵データの書込コマンドを与えて、「指定管理プログラムSSD1」自身に自己用の暗号鍵を書込む処理を実行させる処理であるが、「指定管理プログラムSSD1」自身は、まだ暗号通信路を開設する機能(復号機能)を有していないため、復号処理の部分だけを「上位管理プログラムISD」に委託する形式を採った処理ということができる。
続いて、図21のチャートについて説明する。図21は、順位判定により否定的な判定がなされた場合の処理を示しており、中程に「NO」と記載された二点鎖線より上方の処理は、図20における「YES」と記載された一点鎖線より上方の処理と全く同じである。そこで以下、「NO」と記載された二点鎖線より下方の処理についてのみ説明を行う。
「OSプログラム」における順位判定によって否定的な判定がなされると、「OSプログラム」から「指定管理プログラムSSD1」に対して、実行条件を満たしていない旨の「判定結果NG」が伝達される。「判定結果NG」が伝達された場合、「指定管理プログラムSSD1」は、与えられた暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」の実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「NGレスポンス」を返す。この「NGレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。もちろん、「上位管理プログラムISD」における代理実行も拒絶されることになる。
「ホスト側アプリ」は、「NGレスポンス」として、チャネル番号「#n」の下での暗号通信路開設に失敗した旨の報告を受けることになるので、「上位管理プログラムISD」の管理下に「指定管理プログラムSSD1」を組み込むことができないことを認識することができる。
なお、図21では、続いて、情報処理装置100に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),(ホスト認証コード)」(暗号通信路開設コマンドに対して「OKレスポンス」が得られることを前提として、次に送信するべきコマンド)が送信される例が示されているが、暗号通信路開設コマンドが拒絶されているため、外部認証コマンドを実行することはできない。したがって、「指定管理プログラムSSD1」は、この外部認証コマンドに対しても「NGレスポンス」を返すことになる。
<7−3. 第3の実施形態の特徴>
以上、本発明の第3の実施形態の具体例を、図19の流れ図および図20,図21のチャートを用いて説明したが、ここでは、この第3の実施形態に係る情報処理装置の特徴をまとめておく。
第3の実施形態に係る情報処理装置100は、図12のブロック図に示すとおり、外部装置200との間で暗号通信を行う機能を有する情報処理装置であり、OSプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部110と、この情報格納部110に格納されているプログラムを実行するプログラム実行部120と、を備えている。
ここで、情報格納部110には、アプリケーションプログラムとして、少なくとも1つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置200との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置200から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
また、情報格納部110には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストLが格納されており、情報格納部110に格納されている管理プログラムのうち、少なくとも1つの指定管理プログラム(たとえば、SSD1)は、外部装置200から、暗号通信路を開設する旨の暗号通信路開設コマンドが与えられた際に、自己の暗号通信路開設機能に必要な暗号鍵がまだ書込まれていなかったときに、所定の実行条件が満たされていた場合には、自己を管理下におく上位管理プログラム(たとえば、ISD)に当該暗号通信路開設コマンドに基づく暗号通信路開設処理の代理実行を依頼し、当該実行条件が満たされていなかった場合には、当該暗号通信路開設コマンドに基づく暗号通信路開設処理を拒絶する。
具体的には、指定管理プログラム(たとえば、SSD1)の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルPbと呼び、上位管理プログラム(たとえば、ISD)の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルPaと呼んだ場合に、セキュリティ強度順位リストにおいて、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部110に格納されている「上位管理プログラム(たとえば、ISD)」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルPaの認識が行われる。同様に、情報格納部110に格納されている「指定管理プログラム(たとえば、SSD1)」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルPbの認識が行われる。
一方、「指定管理プログラム(たとえば、SSD1)」から暗号通信路開設処理の代理実行を依頼された「上位管理プログラム(たとえば、ISD)」は、依頼に応じて、暗号通信路開設処理を代理実行することにより暗号通信路を代理開設することになる。
また、「指定管理プログラム(たとえば、SSD1)」は、外部装置200から、「上位管理プログラム(たとえば、ISD)」によって代理開設された暗号通信路を介して、暗号化されたコマンドを受信したときに、当該暗号化されたコマンドの復号を「上位管理プログラム(たとえば、ISD)」に依頼し、復号された平文コマンドを実行する。
より具体的には、「指定管理プログラム(たとえば、SSD1)」は、外部装置200から、自己の暗号通信路開設機能に必要な暗号鍵を書込むための書込コマンドを、「上位管理プログラム(たとえば、ISD)」によって代理開設された暗号通信路を介して暗号化された状態で受信したときに、当該暗号化されている書込コマンドの復号を「上位管理プログラム(たとえば、ISD)」に依頼し、復号された書込コマンドを実行することにより、暗号鍵の書込みを行う。
なお、図20,図21に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム(たとえば、SSD1)」が、親暗号化プロトコルPaと子暗号化プロトコルPbとについての順位判定処理を「OSプログラム」に委託し、「OSプログラム」が実行した順位判定処理の結果に基づいて、暗号通信路開設コマンドの代理実行/拒絶を決定するようにしている。
もちろん、本発明の第3の実施形態を実施する上で、実行条件が満たされているか否かの判定(セキュリティ強度順位リストLを参照した順位判定)は、必ずしも「OSプログラム」によって実行する必要はなく、「指定管理プログラム(たとえば、SSD1)」や「上位管理プログラム(たとえば、ISD)」が自ら実行するようにしてもかまわないが、§5−3において述べたとおり、一般的なICカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「OSプログラム」に委託して実行するのが好ましい。
また、上例の場合、「OSプログラム」は、「指定管理プログラム(たとえば、SSD1)」から「上位管理プログラム(たとえば、ISD)」に対する暗号通信路開設処理の代理実行依頼の仲介を行う機能も果たしている。
<7−4. 複数通りの暗号化プロトコルへの対応>
§5−4でも述べたとおり、本願発明は、1つの管理プログラムSDが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。ここで述べる第3の実施形態を実施する場合、1つの管理プログラムSDが、複数通りの暗号化プロトコルをサポートしているケースでは、図19のステップS36に示す判定処理を行う際に、親暗号化プロトコルPaが複数通り存在する可能性があり、子暗号化プロトコルPbも複数通り存在する可能性がある。
そこで、親暗号化プロトコルPaが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストLを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。
具体的には、第3の実施形態の場合は、親暗号化プロトコルPaが複数通り存在する場合には、そのうちの代理実行する暗号通信路開設処理に用いられる暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も高い暗号化プロトコルを代表として選出すればよい。
図20,図21のチャートに示すとおり、セキュリティ強度順位リストLを用いた順位判定が行われるのは、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」が与えられた後である。そして、「代理する上位管理プログラムISD」が複数通りの暗号化プロトコルをサポートしている場合、この暗号通信路開設コマンドもしくはそのパラメータによって、いずれかの暗号化プロトコルを指定する必要がある(たとえば、前掲の特願2015−168868を参照)。
したがって、順位判定を行う際には、この指定された暗号化プロトコル、すなわち、代理実行する暗号通信路開設処理に用いられる暗号化プロトコルは、その後に送信される書込コマンド「STORE DATA (#n)+発行データ」もしくは「PUT KEY (#n)+鍵データ」の送信に実際に利用される暗号化プロトコルということになる。そこで、親暗号化プロトコルPaとしては、この代理実行する暗号通信路開設処理に用いられるものを選択し、子暗号化プロトコルPbとしては、最高順位のものを選択して順位判定を行うようにすれば、後に、下位の管理プログラムSSD1が子暗号化プロトコルPbとしてどのプロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
<<< §8. 第4の実施形態(発行セッション開始の制限) >>>
§7で述べた第3の実施形態は、インストール作業まではノーチェックで作業を進め、最終段階の発行処理(鍵データの書込処理)において、チェックを行うという着想に基づくものである。より具体的には、上位管理プログラムの管理下に、既に下位管理プログラムがインストールされているが、当該下位管理プログラムについての鍵データの書込処理(発行処理)はまだ行われていない、という状態において、鍵データの書込みを行う準備段階として暗号通信路開設コマンドが与えられたときに、当該コマンドの実行条件をチェックする、という着想に基づくものである。
この§8で述べる第4の実施形態も、基本的な着想は同じであり、上位管理プログラムの管理下に、既に下位管理プログラムがインストールされているが、当該下位管理プログラムについての鍵データの書込処理(発行処理)はまだ行われていない、という状態において、鍵データの書込みを行うためのコマンドの実行条件をチェックする、という点は、第3の実施形態と同様である。
ただ、第3の実施形態では、鍵データの書込処理を指示する書込コマンドを下位管理プログラムに直接与えて実行させるという方針を採りつつ、暗号通信路の開設だけを上位管理プログラムに依頼するという方法を採用するのに対して、ここで述べる第4の実施形態では、下位管理プログラム用の鍵データの書込コマンドを、まず、上位管理プログラムに与え、この上位管理プログラムから下位管理プログラムへ引き渡して、鍵データの書込みを実行させるという方針を採る。
これは、§4−8で述べたように、予め発行データ書込対象指定コマンドを用いて発行データの書込対象となるアプリケーションプログラムを指定しておけば、当該プログラムを管理する上位の管理プログラムに対して書込コマンドを与えることによって、その下位のアプリケーションプログラムに対する発行セッションを開始させることができるようになる仕組を利用したものである。
したがって、この第4の実施形態では、図14(h) に示す発行データ書込対象指定コマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、鍵データを書込むための発行セッション開始を制限することになる。
<8−1. 第4の実施形態における実行条件の判定処理>
発行データ書込対象指定コマンドは、§4−8で述べたとおり、予め発行データの書込対象となるアプリケーションプログラムを指定しておくためのコマンドであり、図14(h) に示すとおり、「INSTALL for personalization (#n)+発行対象アプリ名」というデータ構造を有し、チャネル番号#nを指定して、指定管理プログラムSDに対して、発行データの書込対象を指定するコマンドである。このコマンドで発行データの書込対象を指定しておくと、以後、チャネル番号#nを指定して、指定管理プログラムSDに対して、発行データの書込コマンド「STORE DATA (#n)+発行データ」を与えると、当該書込コマンドは、予め指定されていた下位のアプリケーションプログラムに対して実行されることになる。
ここでは、やはり図11に示す階層構造を例にとって、管理プログラムISDの管理下に、既に管理プログラムSSD1がインストールされているが、完全な組込処理は完了しておらず、この後、管理プログラムSSD1についての鍵データの書込処理(発行処理)を行う必要がある状態を例にとって、以下に具体的な処理手順を示そう。
前述した第3の実施形態では、管理プログラムSSD1を指定管理プログラムとして、管理プログラムSSD1に対して直接書込コマンドを与える形を採用していたが、ここで述べる第4の実施形態では、上位の管理プログラムISDを指定管理プログラムとして、この上位管理プログラムISDに対して書込コマンドを与える形を採用する。ただ、上位管理プログラムISDには、事前に、その管理下にある管理プログラムSSD1を書込対象として指定しておく発行データ書込対象指定コマンドを与えておくようにする。その結果、上位管理プログラムISDに与えた書込コマンドは、書込対象となる下位管理プログラムSSD1に引き渡され、下位管理プログラムSSD1が自分用の鍵データを発行データとして書込む処理を行うことになる。
図22は、本発明の第4の実施形態において、指定管理プログラムISDに対して発行データ書込対象指定コマンドが与えられた場合の処理手順を示す流れ図である。前述の第3の実施形態では、下位の管理プログラムSSD1が指定管理プログラムになっていたが、ここに示す第4の実施形態では、上位の管理プログラムISDが指定管理プログラムになる。
この図22の流れ図に示す手順は、要するに、第1の暗号化プロトコルを用いた暗号通信路開設機能を有する第1の管理プログラムISDの管理下に、第2の暗号化プロトコルを用いた暗号通信路開設機能を有する第2の管理プログラムSSD1が既にインストールされているが(階層間移動も含めた広義の「インストール」)、第2の管理プログラムSSD1が用いる暗号鍵の書込みがまだ実行されていない状態において、第2の管理プログラムSSD1に自分自身が用いる暗号鍵を発行データとして書込ませるために、第2の管理プログラムSSD1を発行データ書込対象として指定する組込用コマンド(発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」)が外部装置200から情報処理装置100に対して与えられたときに実行される手順ということになる。
この手順の目的は、セキュリティ強度順位リストL上で第1の暗号化プロトコルよりも第2の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド(発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」)の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムを組み込む作業が最終段階まで実行されることを回避することにある。
まず、ステップS41では、指定管理プログラム(ISD)により、「INSTALL for personalization (#n), SSD1」なる発行データ書込対象指定コマンドが受信される。このコマンドは、指定管理プログラム(ISD)に対して、後続して、発行データの書込コマンド「STORE DATA (#n),(発行データ)」が与えられた場合に、当該発行データの書込対象を、下位の管理プログラムSSD1に指定する旨のコマンドである。
従来の情報処理装置の場合、こうして与えられた発行データ書込対象指定コマンドは、指定管理プログラム(ISD)により直ちに実行され、指定管理プログラム(ISD)の使用するメモリ領域に、指定された「管理プログラムSSD1」が書込対象として記録される。これに対して、本発明の場合、そのような記録を行う前に、セキュリティ強度順位リストLを参照して、実行条件が満たされているか否かの判定が行われる。
まず、ステップS42において、指定管理プログラム(ISD)がサポートしている親暗号化プロトコルPaが認識される。当該指定管理プログラム(ISD)は、既に組込済みのプログラムであるため、当該指定管理プログラム(ISD)が使用するメモリ領域には、当該指定管理プログラム(ISD)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルPaを認識することができる。
続いて、ステップS43において、発行データ書込対象指定コマンドによって指定された発行データの書込対象となる下位管理プログラム(SSD1)がサポートしている子暗号化プロトコルPbが認識される。下位管理プログラム(SSD1)は、既に指定管理プログラム(ISD)の管理下にインストールされているプログラムであるため、当該下位管理プログラム(SSD1)が使用するメモリ領域には、当該下位管理プログラム(SSD1)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルPbも認識することができる。
こうして、親暗号化プロトコルPaおよび子暗号化プロトコルPbが認識されたら、続いて、ステップS44において、セキュリティ強度順位リストLが参照され、ステップS45において、当該発行データ書込対象指定コマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルPaの順位が、子暗号化プロトコルPbの順位と等しいか、または、子暗号化プロトコルPbの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より低い場合には否定的な判定がなされる。
肯定的な判定がなされた場合は、ステップS46において、当該発行データ書込対象指定コマンドが実行される。すなわち、指定管理プログラム(ISD)の使用するメモリ領域に、指定された「管理プログラムSSD1」が書込対象として記録される。
一方、否定的な判定がなされた場合は、ステップS47において、当該発行データ書込対象指定コマンドは拒絶され、外部装置200に対してエラーを示すレスポンスが返されることになる。
<8−2. 第4の実施形態の具体的な処理チャート>
続いて、外部装置200から第4の実施形態に係る情報処理装置100に対して、発行データ書込対象指定コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図23および図24に示すチャートを参照しながら説明する。図示の例は、外部装置200としてスマートフォン10を用い、情報処理装置100として当該スマートフォン10に装着されたSIMカード11を用い、第1の管理プログラムISDの管理下に既にインストールされている第2の管理プログラムSSD1について、鍵データの書込処理を行うために、暗号通信路の開設を指示する例である。
図23,図24のチャートにおける右端のラインは、外部装置200(スマートフォン10)に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置100(SIMカード11)に組み込まれている「管理プログラムISD」(上位管理プログラム)を示し、中央左側のラインは、情報処理装置100(SIMカード11)に組み込まれている「OSプログラム」を示し、左端のラインは、情報処理装置100(SIMカード11)に組み込み途中の「管理プログラムSSD1」(発行データの書込対象となる下位管理プログラム)を示している。
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合、管理プログラムISDがチャネル番号「#n」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム(ISD)」を二重枠のブロックで示してある。また、図23は、順位判定により肯定的な判定がなされた場合の処理を示し、図24は、順位判定により否定的な判定がなされた場合の処理を示している。
まず、図23のチャートについて説明する。はじめに、「ホスト側アプリ」から、情報処理装置100に対して、アプリケーション選択コマンド「SELECT (#n), ISD」が与えられる。当該コマンドは、§4−1で説明したとおり(図14(a) 参照)、特定のチャネル番号#nを指定して、情報処理装置100側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムISD」がチャネル番号「#n」に対応づけられ、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムISD」を指定したコマンドとして取り扱われ、当該「指定管理プログラムISD」によって処理されることになる。
図示のとおり、アプリケーション選択コマンド「SELECT (#n), ISD」は、まず、「OSプログラム」によって処理される。「OSプログラム」は、当該コマンドに基づいて、「管理プログラムISD」をチャネル番号「#n」に対応づけるための登録を行う。これにより、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムISD」を指定したコマンドと認識され、「指定管理プログラムISD」に引き渡される。
「OSプログラム」は、「指定管理プログラムISD」をチャネル番号「#n」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムISD」に報知する。「指定管理プログラムISD」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「OKレスポンス」を返す。こうして、新たにチャネル番号「#n」に割り当てられた通信チャネルが開設されたら、続いて、当該通信チャネルを暗号通信路にするための処理が必要になる。もちろん、「指定管理プログラムISD」は、既に組込作業がすべて完了している管理プログラムであるから、自分自身で暗号通信路を開設する機能を有している。
そこで、「ホスト側アプリ」から、情報処理装置100に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」が与えられる。当該コマンドは、「指定管理プログラムISD」に対して、キーバーション番号で指定された暗号鍵を用いて暗号通信路の開設を指示するとともに、乱数に基づいて所定の認証用レスポンスの返信を求めるコマンドである。
この暗号通信路開設コマンドを受信した「指定管理プログラムISD」は、暗号通信路の開設処理を実行する。当該コマンドには、パラメータとして、キーバージョン番号および乱数が付加されているので、「指定管理プログラムISD」は、図3に示すような鍵テーブルTからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置200との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を「OKレスポンス」とともに返信する。
「ホスト側アプリ」は、返信されてきた演算結果の正当性を確認することにより、現在交信中の情報処理装置100を正規の交信相手として認証する。続いて、「ホスト側アプリ」から、情報処理装置100に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),(ホスト認証コード)」が与えられる。当該コマンドは、§4−6で説明したとおり(図14(f) 参照)、チャネル番号#nで指定される管理プログラムSDに、現在通信を行っている外部装置200を正規の交信相手として認証させるためのコマンドであり、パラメータとして「ホスト認証コード」が付加されている。
この外部認証コマンドを受信した「指定管理プログラムISD」は、パラメータとして付加されていた「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置200を正規の交信相手として認証する。認証に成功すると、外部装置200に対して「OKレスポンス」が返信される。
この時点で、情報処理装置100(「指定管理プログラムISD」)と外部装置200(「ホスト側アプリ」)との間に暗号通信路を開設する準備が完了したことになり、以後、両者間の通信は、当該暗号通信路を介して実行されることになる。この§8で述べる第4の実施形態は、発行データ書込対象指定コマンドが与えられたときの処理に関するものなので、以下、この暗号通信路を介して発行データ書込対象指定コマンドが与えられたときの処理手順を説明する。
まず、図示のとおり、「ホスト側アプリ」から、情報処理装置100に対して、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられる。当該コマンドは、§4−8で説明したとおり(図14(h) 参照)、「指定管理プログラムISD」に対して、後続して与えられる発行データの書込コマンド「STORE DATA (#n),(発行データ)」の書込対象を、下位の管理プログラムSSD1に指定する旨のコマンドである。「指定管理プログラムISD」は、暗号通信路を介して送信されてきた当該コマンドを復号して平文コマンドに変換する。
従来の一般的な管理プログラムSDであれば、当該発行データ書込対象指定コマンドを直ちに実行することになるが、本発明の場合、図22の流れ図に示す各手順により、当該発行データ書込対象指定コマンドが実行条件を満たしているか否かの判定が行われる。そのため、まず、当該発行データ書込対象指定コマンドを受信した「指定管理プログラムISD」は、これを平文に復号した後、「OSプログラム」に対して上記判定を依頼する。
当該依頼を受けた「OSプログラム」は、図22の流れ図におけるステップS42〜S45に相当する実行条件の判定処理を行う。すなわち、「OSプログラム」は、「指定管理プログラムISD」が用いる親暗号化プロトコルPaを認識するとともに、「発行データの書込対象となる下位管理プログラムSSD1」が用いる子暗号化プロトコルPbを認識する。
図23における破線の矢印は、このような暗号化プロトコルPa,Pbの認識プロセスを示している。実際には、親暗号化プロトコルPaおよび子暗号化プロトコルPbの認識は、「管理プログラムISD」および「管理プログラムSSD1」が使用するメモリ領域を参照することにより行われる。
「OSプログラム」は、こうして認識した暗号化プロトコルPa,Pbの強度順位を、セキュリティ強度順位リストL上で比較する順位判定(図22のステップS45の判定)を行い、判定結果に応じて、それぞれ異なる処理を実行する。図23に「YES」と記載された一点鎖線より下方の処理は、肯定的な判定結果が得られた場合の処理であり、以下、当該処理を順に説明する。
まず、「OSプログラム」から「指定管理プログラムISD」に対して、発行データ書込対象指定コマンドの実行条件が満たされていることを示す「OK信号」が伝達される。続いて、「OSプログラム」と「指定管理プログラムISD」との連携作業によって、当該発行データ書込対象指定コマンドが実行される。すなわち、発行データの書込対象として「下位管理プログラムSSD1」が正式に指定され、その旨の記録がなされる。その後、書込対象の記録が完了したことを示す信号が「OSプログラム」から「指定管理プログラムISD」に対して与えられ、更に、「指定管理プログラムISD」から「ホスト側アプリ」に対して「OKレスポンス」が返される。この「OKレスポンス」は、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」に対するレスポンスということになる。
続いて、「ホスト側アプリ」から「指定管理プログラムISD」に対して、発行データを書込むための書込コマンド「STORE DATA (#n),(発行データ)」が与えられる。「指定管理プログラムISD」は、暗号通信路を介して送信されてきた当該コマンドを復号して平文コマンドに変換する。ここで、「発行データ」の部分には「下位管理プログラムSSD1」用の鍵データが組み込まれる。この書込コマンドは、直接的には、チャネル番号「#n」を指定した「指定管理プログラムISD」宛のコマンドになるが、既に、発行データ書込対象指定コマンドの実行により、「下位管理プログラムSSD1」が発行データの書込対象として指定されているため、当該書込コマンドは、平文に変換された後に「OSプログラム」を介して「下位管理プログラムSSD1」へと引き渡される。
こうして、「下位管理プログラムSSD1」は、引き渡された書込コマンド「STORE DATA (#n),(発行データ)」を実行して、「発行データ」を自己が使用する鍵データとして書込む処理を行い、実行完了を「OSプログラム」に報告する。当該報告は、「OSプログラム」から「指定管理プログラムISD」へ通達され、これを受けた「指定管理プログラムISD」は、「ホスト側アプリ」に対して「OKレスポンス」を返す。なお、前述したとおり、GlobalPlatformの仕様では、鍵データの書込処理を行う前に、鍵データの部分についての復号処理を「指定管理プログラムISD」に対して依頼する必要があるが、ここでは、その説明は省略する。
このように、図23のチャートに示されている処理では、形式的には、チャネル番号「#n」を指定して、「指定管理プログラムISD」が開設した暗号通信路を介して、「指定管理プログラムISD」宛に書込コマンド「STORE DATA (#n),(発行データ)」を与えているが、事前に、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」を与えてあるため、実際には、書込コマンドの引き渡しを受けた「下位管理プログラムSSD1」が、自分用の鍵データの書込処理(発行データの書込処理)を実行することになる。
続いて、図24のチャートについて説明する。図24は、順位判定により否定的な判定がなされた場合の処理を示しており、中程に「NO」と記載された二点鎖線より上方の処理は、図23における「YES」と記載された一点鎖線より上方の処理と全く同じである。そこで以下、「NO」と記載された二点鎖線より下方の処理についてのみ説明を行う。
「OSプログラム」における順位判定によって否定的な判定がなされると、「OSプログラム」から「指定管理プログラムISD」に対して、実行条件を満たしていない旨の「判定結果NG」が伝達される。「判定結果NG」が伝達された場合、「指定管理プログラムISD」は、与えられた発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」の実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「NGレスポンス」を返す。この「NGレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
「ホスト側アプリ」は、「NGレスポンス」として、チャネル番号「#n」の下での発行データ書込対象の指定に失敗した旨の報告を受けることになるので、「上位管理プログラムISD」の管理下に「管理プログラムSSD1」を組み込むことができないことを認識することができる。
なお、図24では、続いて、情報処理装置100に対して、発行データを書込むための書込コマンド「STORE DATA (#n),(発行データ)」が送信される例が示されている。図23のチャートの場合は、発行データ書込対象指定コマンドが実行されているため、書込コマンドは、「指定管理プログラムISD」から「下位管理プログラムSSD1」へ引き渡されるが、図24のチャートの場合は、発行データ書込対象指定コマンドが拒絶されているため、発行データ書込対象は指定されていない。したがって、書込コマンドは、「指定管理プログラムISD」自身が実行することになり、「発行データ」は、「指定管理プログラムISD」用の鍵データとして書込まれることになる。
もちろん、「指定管理プログラムISD」用の鍵データは、既に、図3に示すような鍵テーブルTとして格納済みなので、上記書込コマンドは、新たな暗号鍵を追加する追加書込か、新たな暗号鍵に更新する書換処理として取り扱われる。そのような追加書込や書換処理が仕様上問題ない処理であれば、書込処理は正常終了し、外部装置200に対して「OKレスポンス」が返信されるが、仕様上問題のある処理であれば、書込処理は異常終了し、外部装置200に対して「NGレスポンス」が返信される
<8−3. 第4の実施形態の特徴>
以上、本発明の第4の実施形態の具体例を、図22の流れ図および図23,図24のチャートを用いて説明したが、ここでは、この第4の実施形態に係る情報処理装置の特徴をまとめておく。
第4の実施形態に係る情報処理装置100は、図12のブロック図に示すとおり、外部装置200との間で暗号通信を行う機能を有する情報処理装置であり、OSプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部110と、この情報格納部110に格納されているプログラムを実行するプログラム実行部120と、を備えている。
ここで、情報格納部110には、アプリケーションプログラムとして、少なくとも1つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置200との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置200から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
また、情報格納部110には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストLが格納されており、情報格納部110に格納されている管理プログラムのうち、少なくとも1つの指定管理プログラム(たとえば、ISD)は、自己の管理下にインストールされているアプリケーションプログラム(たとえば、SSD1)を動作させるために必要な発行データの書込みが実行されるよう、必要な処理を行う発行データ書込処理機能を更に有している。
そして、この指定管理プログラム(たとえば、ISD)は、自己の管理下に既にインストールされている下位管理プログラム(たとえば、SSD1)を発行データの書込対象として指定するための発行データ書込対象指定コマンドが与えられたときに、所定の実行条件が満たされていた場合には当該発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を実行し、当該実行条件が満たされていなかった場合には、当該発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を拒絶する。
具体的には、指定管理プログラム(たとえば、ISD)の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルPaと呼び、下位管理プログラム(たとえば、SSD1)の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルPbと呼んだ場合に、セキュリティ強度順位リストLにおいて、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部110に格納されている「指定管理プログラム(たとえば、ISD)」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルPaの認識が行われる。同様に、情報格納部110に格納されている「下位管理プログラム(たとえば、SSD1)」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルPbの認識が行われる。
実際には、「指定管理プログラム(たとえば、ISD)」は、発行データ書込対象指定コマンドが与えられたときに、当該コマンドに基づいて発行データ書込対象指定処理を実行することにより、「下位管理プログラム(たとえば、SSD1)」を発行データの書込対象として指定する処理を行う。そして、その後、外部装置200から発行データ書込コマンドが与えられたときには、当該発行データ書込コマンドを「下位管理プログラム(たとえば、SSD1)」に引き渡し、「下位管理プログラム(たとえば、SSD1)」に発行データの書込処理を実行させる。このとき、「OSプログラム」が、「指定管理プログラム(たとえば、ISD)」から「下位管理プログラム(たとえば、SSD1)」への発行データ書込コマンドの引き渡し処理を仲介することになる。
なお、図23,図24に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム(たとえば、ISD)」が、親暗号化プロトコルPaと子暗号化プロトコルPbとについての順位判定処理を「OSプログラム」に委託し、「OSプログラム」が実行した順位判定処理の結果に基づいて、発行データ書込対象指定処理の実行/拒絶を決定するようにしている。
もちろん、本発明の第4の実施形態を実施する上で、実行条件が満たされているか否かの判定(セキュリティ強度順位リストLを参照した順位判定)は、必ずしも「OSプログラム」によって実行する必要はなく、「指定管理プログラム(たとえば、ISD)」が実行するようにしてもかまわないが、§5−3において述べたとおり、一般的なICカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「OSプログラム」に委託して実行するのが好ましい。
<8−4. 複数通りの暗号化プロトコルへの対応>
§5−4でも述べたとおり、本願発明は、1つの管理プログラムSDが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。ここで述べる第4の実施形態を実施する場合、1つの管理プログラムSDが、複数通りの暗号化プロトコルをサポートしているケースでは、図22のステップS45に示す判定処理を行う際に、親暗号化プロトコルPaが複数通り存在する可能性があり、子暗号化プロトコルPbも複数通り存在する可能性がある。
そこで、親暗号化プロトコルPaが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストLを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。
具体的には、第4の実施形態の場合は、親暗号化プロトコルPaが複数通り存在する場合には、そのうちの発行データ書込対象指定コマンドの受信に利用された暗号通信路の開設に用いられた暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちのセキュリティ強度順位リストLでの順位が最も高い暗号化プロトコルを代表として選出すればよい。
図23,図24のチャートに示すとおり、セキュリティ強度順位リストLを用いた順位判定が行われるのは、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられた後である。したがって、当該コマンドの受信に利用された暗号通信路の開設に用いられた暗号化プロトコルは容易に認識することができる。しかも、当該暗号化プロトコルは、後に与えられることになる発行データの書込コマンド「STORE DATA (#n),(発行データ)」の送信時にも利用されることになるので、「発行データ」に対するセキュリティは、当該暗号化プロトコルのセキュリティ強度に依存することになる。したがって、上記判定方法を採用すれば、後に、下位の管理プログラムSSD1が子暗号化プロトコルPbとしてどのプロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
<<< §9. 第5の実施形態(鍵書込処理の制限(その1) >>>
§7で述べた第3の実施形態は、インストール作業(ここでは、階層間の移動作業も含めたものとする)まではノーチェックで作業を進め、最終段階の発行処理(鍵データの書込処理)において、チェックを行うという着想に基づくものであり、特に、鍵データの書込みを行う準備段階として暗号通信路開設コマンドが与えられたときに、当該コマンドの実行条件をチェックするものである。
ここで述べる第5の実施形態は、上記第3の実施形態において実行条件のチェックが行われる暗号通信路開設コマンドが与えられた時点では、ノーチェックで作業を進め、上位管理プログラムに暗号通信路を代理開設させた後、この代理開設された暗号通信路を介して鍵データの書込コマンドが与えられたときに、当該コマンドの実行条件をチェックするものである。当該チェックの結果、実行条件が満たされていた場合には、鍵データの書込処理を行うことになる。
第3の実施形態の説明に用いた図20のチャートを用いて説明すれば、第3の実施形態の場合は、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」が与えられたときに、当該コマンドの実行条件のチェック(すなわち、「OSプログラム」による順位判定)が行われることになるが、ここで述べる第5の実施形態の場合、この時点では実行条件のチェックを行わずに、無条件で、「代理する上位管理プログラム(ISD)」に対して代理実行依頼を行い、暗号通信路の代理開設を実行させる。すなわち、この図20に「YES」と記載された一点鎖線より下方の処理をそのまま進めてゆく。
そして、「STORE DATA (#n),(発行データ)」もしくは「PUT KEY (#n),(鍵データ)」という鍵データの書込コマンドが与えられた時点で、当該コマンドの実行条件をチェックし、実行条件が満たされていた場合に限って、当該鍵データの書込コマンドを実行するようにする。ここで鍵データの書込みが完了すれば、「指定管理プログラム(SSD1)」の組込処理はすべて完了することになるので、正に、最後の最後の段階において、実行条件のチェックが行われることになる。
結局、この§9で述べる第5の実施形態では、図14(d) に示すアプリケーション向け発行データの書込コマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、鍵データの書込処理を制限することになる。以下、この第5の実施形態について詳述する。
<9−1. 第5の実施形態における実行条件の判定処理>
ここでも、§7で述べた第3の実施形態の説明と同様に、管理プログラムISDの管理下に、既に管理プログラムSSD1がインストールされているが、完全な組込処理は完了しておらず、その後、管理プログラムSSD1についての鍵データの書込処理(発行処理)を行う必要がある状態を例にとって、以下に具体的な処理手順を示す。
上述したとおり、ここで述べる第5の実施形態では、まず、指定管理プログラムSSD1に対して暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」を与え、上位管理プログラムISDに暗号通信路を代理開設させる。そして、この代理開設された暗号通信路を介して、指定管理プログラムSSD1に対して「STORE DATA (#n),(発行データ)」もしくは「PUT KEY (#n),(鍵データ)」という鍵データの書込コマンドを与えることになる。
図25は、上位管理プログラムISDが、その管理下にある管理プログラムSSD1を代理して、暗号通信路を開設する具体的な例について、本発明の第5の実施形態の処理手順を示す流れ図であり、指定管理プログラムSSD1に対して、上位の管理プログラムISDが代理開設した暗号通信路を介して鍵書込コマンドが与えられた場合の処理手順を示している。
この図25の流れ図に示す手順は、要するに、第1の暗号化プロトコルを用いた暗号通信路開設機能を有する第1の管理プログラムISDの管理下に、第2の暗号化プロトコルを用いた暗号通信路開設機能を有する第2の管理プログラムSSD1が既にインストールされているが(階層間移動も含めた広義の「インストール」)、第2の管理プログラムSSD1が用いる暗号鍵の書込みがまだ実行されていない状態において、第2の管理プログラムSSD1に暗号鍵の書込みを行わせるための組込用コマンド(鍵データの書込コマンド「STORE DATA (#n),(発行データ)」もしくは「PUT KEY (#n),(鍵データ)」)が、外部装置200から情報処理装置100に対して与えられたときに実行される手順ということになる。
この手順の目的は、セキュリティ強度順位リストL上で第1の暗号化プロトコルよりも第2の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド(鍵データの書込コマンド「STORE DATA (#n),(発行データ)」もしくは「PUT KEY (#n),(鍵データ)」)の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムを組み込む作業が最終段階まで実行されることを回避することにある。
まず、ステップS51では、指定管理プログラム(SSD1)により、「STORE DATA (#n),(発行データ)」もしくは「PUT KEY (#n),(鍵データ)」なる鍵データの書込コマンドが、上位管理プログラムISDによって代理開設された暗号通信路を介して受信される。このコマンドは、指定管理プログラム(SSD1)に対して、自分自身が用いる鍵データの書込みを指示するコマンドである。
このコマンドは、暗号化された状態で受信されるが、GlobalPlatform(登録商標)の仕様では、コマンドの先頭5バイトの部分は平文のままとされているので、暗号化通信路を介して送信されてきたコマンドであっても、当該コマンドが「STORE DATA」もしくは「PUT KEY」なるコマンドであることは識別することが可能である。ただ、暗号通信路は、上位管理プログラムISDによって代理開設されたものであるため、受信した指定管理プログラム(SSD1)は、当該コマンドの実体部分(書込対象となるデータ部分)を復号することはできない。
そこで、ステップS52において、当該書込コマンドを受信した指定管理プログラム(SSD1)から、暗号通信路を代理開設した上位管理プログラム(ISD)に対して、当該書込コマンドの復号が依頼される。上位管理プログラム(ISD)は、この依頼に応じて、当該書込コマンドを復号し、平文コマンドに変換して指定管理プログラム(SSD1)に戻す。
従来の情報処理装置の場合、こうして平文となった書込コマンドは、指定管理プログラム(SSD1)によって直ちに実行されることになる。これに対して、本発明では、そのような書込みが鍵データの書込みである場合には、書込処理の実行を行う前に、セキュリティ強度順位リストLを参照して、実行条件が満たされているか否かの判定が行われる。
まず、ステップS53において、暗号通信路の開設を代理する上位管理プログラム(ISD)がサポートしている親暗号化プロトコルPaが認識される。当該上位管理プログラム(ISD)は、既に組込済みのプログラムであるため、当該上位管理プログラム(ISD)が使用するメモリ領域には、当該上位管理プログラム(ISD)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルPaを認識することができる。
続いて、ステップS54において、代理される指定管理プログラム(SSD1)がサポートしている子暗号化プロトコルPbが認識される。指定管理プログラム(SSD1)は、既に上位管理プログラム(ISD)の管理下にインストールされているプログラムであるため、当該指定管理プログラム(SSD1)が使用するメモリ領域には、当該指定管理プログラム(SSD1)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルPbも認識することができる。
こうして、親暗号化プロトコルPaおよび子暗号化プロトコルPbが認識されたら、続いて、ステップS55において、セキュリティ強度順位リストLが参照され、ステップS56において、当該鍵データの書込コマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルPaの順位が、子暗号化プロトコルPbの順位と等しいか、または、子暗号化プロトコルPbの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より低い場合には否定的な判定がなされる。
肯定的な判定がなされた場合は、ステップS57において、当該鍵データの書込コマンドが実行される。すなわち、指定管理プログラム(SSD1)が、自分用の鍵データの書込みを行うことになる。一方、否定的な判定がなされた場合は、ステップS58において、当該鍵データの書込コマンドは拒絶され、外部装置200に対してエラーを示すレスポンスが返されることになる。
<9−2. 第5の実施形態の具体的な処理チャート>
続いて、外部装置200から第5の実施形態に係る情報処理装置100に対して、鍵データの書込コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図26に示すチャートを参照しながら説明する。図示の例は、外部装置200としてスマートフォン10を用い、情報処理装置100として当該スマートフォン10に装着されたSIMカード11を用い、第1の管理プログラムISDの管理下に既にインストールされている第2の管理プログラムSSD1について、鍵データの書込処理を行うために、暗号通信路の開設を指示する例である。
この図26のチャートに示す処理は、第3の実施形態として述べた図20,図21のチャートに示す処理に準じたものになる。したがって、この図26に示すチャートにおいても、右端のラインは、外部装置200(スマートフォン10)に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置100(SIMカード11)に組み込み途中の「管理プログラムSSD1」(代理される下位管理プログラム)を示し、中央左側のラインは、情報処理装置100(SIMカード11)に組み込まれている「OSプログラム」を示し、左端のラインは、情報処理装置100(SIMカード11)に組み込まれている「管理プログラムISD」(代理する上位管理プログラム)を示している。
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合も、管理プログラムSSD1がチャネル番号「#n」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム(SSD1)」を二重枠のブロックで示してある。
第3の実施形態として述べた図20,図21のチャートに示す処理と、図26のチャートに示す第5の実施形態の処理との相違は、前者では、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」が与えられたときに、「OSプログラム」による順位判定を行っているのに対して、後者では、この時点では順位判定を行わずに、当該コマンドを無条件で代理実行して、暗号通信路の代理開設を行い、その後、「STORE DATA (#n),(発行データ)」もしくは「PUT KEY (#n),(鍵データ)」なる鍵データの書込コマンドが与えられたときに、「OSプログラム」による順位判定を行う点である。そのため、図26に示すチャートの基本的な手順は、図20,図21に示すチャートに示す手順に沿ったものになる。
要するに、第3の実施形態も第5の実施形態も、その目的は、「指定管理プログラム(SSD1)」を「上位管理プログラム(ISD)」の管理下に組み込むための最終段階の処理である発行処理を行う際に、セキュリティ上の所定条件が満たされているか否かのチェックを行い、条件が満たされていない場合には、発行処理を阻止することにあるが、前者では、発行処理のためのコマンドを送信するための暗号通信路の代理開設を行う時点で関所を設けて条件判定を行うのに対して、後者では、関所の位置を時間軸上で後ろにずらし、代理開設された暗号通信路を介して与えられた鍵の書込コマンドを実行する時点で関所を設けて条件判定を行うことになる。
まず、「ホスト側アプリ」から、情報処理装置100に対して、アプリケーション選択コマンド「SELECT (#n), SSD1」が与えられる。当該コマンドは、§4−1で説明したとおり(図14(a) 参照)、特定のチャネル番号#nを指定して、情報処理装置100側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムSSD1」がチャネル番号「#n」に対応づけられ、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムSSD1」を指定したコマンドとして取り扱われ、当該「指定管理プログラムSSD1」によって処理されることになる。
図示のとおり、アプリケーション選択コマンド「SELECT (#n), SSD1」は、まず、「OSプログラム」によって処理される。「OSプログラム」は、当該コマンドに基づいて、「管理プログラムSSD1」をチャネル番号「#n」に対応づけるための登録を行う。これにより、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムSSD1」を指定したコマンドと認識され、「指定管理プログラムSSD1」に引き渡される。
「OSプログラム」は、「指定管理プログラムSSD1」をチャネル番号「#n」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムSSD1」に報知する。「指定管理プログラムSSD1」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「OKレスポンス」を返す。こうして、新たにチャネル番号「#n」に割り当てられた通信チャネルが開設されたら、続いて、当該通信チャネルを暗号通信路にするための処理が必要になる。
そこで、「ホスト側アプリ」から、情報処理装置100に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」が与えられる。当該コマンドは、「指定管理プログラムSSD1」に対して、キーバーション番号で指定された暗号鍵を用いて暗号通信路の開設を指示するとともに、乱数に基づいて所定の認証用レスポンスの返信を求めるコマンドである。ただ、この時点では、「指定管理プログラムSSD1」用の鍵データの書込処理が行われていないため、「指定管理プログラムSSD1」は自分自身で当該コマンドを実行することができない。そこで、当該コマンドは、「上位管理プログラムISD」に代理実行してもらう必要がある。
そのため、当該暗号通信路開設コマンドは、「OSプログラム」を介して「上位管理プログラムISD」に引き渡される。第3の実施形態では、この時点で関所を設け、当該暗号通信路開設コマンドが実行条件を満たしているか否かの判定を行うことになるが、ここで述べる第5の実施形態では、この時点では関所は設けられていない。したがって、与えられた暗号通信路開設コマンドは、無条件で「上位管理プログラムISD」に引き渡され、当該コマンドは、「上位管理プログラムISD」によって代理実行される。
すなわち、「OSプログラム」から「代理する上位管理プログラムISD」に対して、「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」なるコマンドの代理実行が依頼され、依頼を受けた「上位管理プログラムISD」は、当該コマンドを代理実行する。もちろん、「上位管理プログラムISD」には、異なるチャネル番号(たとえば、「#m」)が割り当てられているので、「上位管理プログラムISD」は、当該コマンドを、チャネル番号「#n」が割り当てられている「指定管理プログラムSSD1」の代理として実行することを認識して、以下の処理を行うことになる。
まず、「上位管理プログラムISD」は、自分用の暗号鍵を用いて、暗号通信路を代理開設するための処理を行うとともに、認証用レスポンスを作成する処理を行い、処理が支障なく完了した旨の完了通知を「OSプログラム」に返す。認証用レスポンスは、暗号通信路開設コマンドに含まれていた乱数と、自分用の暗号鍵とを利用した所定の演算処理によって作成される。「OSプログラム」宛の完了通知には、作成した認証用レスポンスが含まれている。「OSプログラム」は、当該完了通知を「指定管理プログラムSSD1」に伝達する。「指定管理プログラムSSD1」は、「ホスト側アプリ」に対して「OKレスポンス」を返す。この「OKレスポンス」には、「上位管理プログラムISD」が作成した認証用レスポンスが含まれている。
「ホスト側アプリ」は、返信されてきた「OKレスポンス」に付随する認証用レスポンスの正当性を確認することにより、現在交信中の情報処理装置100を正規の交信相手として認証し、続いて、情報処理装置100に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),(ホスト認証コード)」を送信する。
この外部認証コマンドは、まずチャネル番号「#n」で指定された「指定管理プログラムSSD1」が受信することになるが、これを「OSプログラム」に引き渡すことになる。「OSプログラム」は、この外部認証コマンドを「上位管理プログラムISD」に引き渡して代理実行の依頼を行う。依頼を受けた「上位管理プログラムISD」は、当該コマンドを代理実行する。すなわち、当該外部認証コマンドに含まれている「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置200を正規の交信相手として認証する処理を行う。
正しい認証が行われたら、「上位管理プログラムISD」から「OSプログラム」に対して完了通知がなされ、「OSプログラム」は当該完了通知を「指定管理プログラムSSD1」に伝達する。そして、「指定管理プログラムSSD1」は、「ホスト側アプリ」に対して「OKレスポンス」を返す。
以上の処理により、情報処理装置100と外部装置200との間には、チャネル番号「#n」に対応づけられた暗号通信路が開設されることになる。そこで、外部装置200は、この暗号通信路を利用して、鍵データの書込みを行うためのコマンドを送信する。鍵データの書込みを行うためのコマンドとしては、§4−4「アプリケーション向け発行データの書込コマンド」において説明したとおり、2通りの書込コマンドが用意されている。
図14(d) に示すとおり、書込コマンドその1は、発行データを書込むための汎用の書込コマンドであり、「STORE DATA (#n)+発行データ」というデータ構造を有し、チャネル番号#nを指定して、「発行データ」の部分のデータを発行データとして書込む旨の指示を伝えるコマンドになる。したがって、「発行データ」の部分に鍵データをおけば、鍵データの書込処理が可能になる。一方、書込コマンドその2は、鍵データを書込むための専用の書込コマンドであり、「PUT KEY (#n)+鍵データ」というデータ構造を有し、チャネル番号#nを指定して、「鍵データ」の部分のデータを図3に例示した鍵テーブルT(インストール時に空の格納場所のみが用意されている)に書込む旨の指示を伝えるコマンドになる。
いずれの書込コマンドの場合も、まずチャネル番号「#n」で指定された「指定管理プログラムSSD1」が受信することになるが、既に開設された暗号化通信路を介して送信されてきたコマンドであるため、実行時には復号する必要がある。前述のとおり、GlobalPlatform(登録商標)の仕様では、コマンドの先頭5バイトの部分は平文のままとされているので、暗号化通信路を介して送信されてきたコマンドであっても、当該コマンドがどのコマンドであるかを識別することはできるが、その実体部分(書込対象となるデータ部分)は復号する必要がある。
ここで、チャネル番号#nで開設されている暗号通信路は、「上位管理プログラムISD」が代理開設した暗号通信路であるため、復号の処理は、「上位管理プログラムISD」に実行させる必要がある。そこで、書込コマンドを受信した「指定管理プログラムSSD1」は、これを「OSプログラム」に引き渡す。「OSプログラム」は、この書込コマンドを「上位管理プログラムISD」に引き渡して復号処理依頼を行う。こうして、「上位管理プログラムISD」によって、書込コマンドに対する復号が行われる。なお、通常、復号時にはチェックコードの検証も併せて実行される。
このように、暗号化された書込コマンドは、「上位管理プログラムISD」において復号されて平文コマンドに戻された後、「OSプログラム」に引き渡され、更に「指定管理プログラムSSD1」に引き渡される。
なお、「指定管理プログラムSSD1」は、書込コマンドが「PUT KEY (#n),(鍵データ)」という鍵データを書込むための専用の書込コマンドであった場合は、当該コマンドの受信時に、当該コマンドの内容が鍵データの書込みであることが認識できるが、書込コマンドが「STORE DATA (#n),(発行データ)」という発行データを書込むための汎用の書込コマンドであった場合は、この平文コマンドが戻された時点で、当該コマンドの内容が鍵データの書込みであることを認識することができる。
これは、書込コマンド「STORE DATA (#n),(発行データ)」の受信時には、「発行データ」の部分が暗号化されているため、「鍵データ」であるか否かを認識することができないためである。平文化された発行データには、当該発行データが「鍵データ」であることを示す情報が含まれているので、「STORE DATA (#n),(発行データ)」なる書込コマンドの場合は、平文コマンドの状態で戻されてきた時点で、はじめて、当該平文コマンドの内容が鍵データの書込みであることが判明する。
いずれにしても、本発明では、平文となった当該書込コマンドが、鍵データの書込処理を指示する鍵データの書込コマンドであった場合には、当該鍵データの書込コマンドが実行条件を満たしているか否かの判定が行われる。そのため、平文となった鍵データの書込コマンドを受け取った「指定管理プログラムSSD1」は、「OSプログラム」に対して上記判定を依頼する。
当該依頼を受けた「OSプログラム」は、図25の流れ図におけるステップS53〜S56に相当する実行条件の判定処理を行う。すなわち、「OSプログラム」は、「代理する上位管理プログラムISD」が用いる親暗号化プロトコルPaを認識するとともに、「代理される指定管理プログラムSSD1」が用いる子暗号化プロトコルPbを認識する。
図26における破線の矢印は、このような暗号化プロトコルPa,Pbの認識プロセスを示している。実際には、親暗号化プロトコルPaおよび子暗号化プロトコルPbの認識は、「管理プログラムISD」および「管理プログラムSSD1」が使用するメモリ領域を参照することにより行われる。
「OSプログラム」は、こうして認識した暗号化プロトコルPa,Pbの強度順位を、セキュリティ強度順位リストL上で比較する順位判定(図25のステップS56の判定)を行い、判定結果に応じて、それぞれ異なる処理を実行する。
図26に「YES」と記載された一点鎖線で示す処理は、肯定的な判定結果が得られた場合の処理である。この場合は、「OSプログラム」から「指定管理プログラムSSD1」に対して、実行条件を満たしていることを示す「判定結果OK」が伝達され、「指定管理プログラムSSD1」は、平文となった書込コマンドを実行し、鍵データの書込処理を行い、「ホスト側アプリ」に対して「OKレスポンス」を返す。
一方、図26に「NO」と記載された二点鎖線で示す処理は、否定的な判定結果が得られた場合の処理である。この場合は、「OSプログラム」から「指定管理プログラムSSD1」に対して、実行条件を満たしていないことを示す「判定結果NG」が伝達され、「指定管理プログラムSSD1」は、平文となった書込コマンドの実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「NGレスポンス」を返す。この「NGレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
「ホスト側アプリ」は、「NGレスポンス」として、チャネル番号「#n」の下での鍵データの書込処理に失敗した旨の報告を受けることになるので、「上位管理プログラムISD」の管理下に「指定管理プログラムSSD1」を組み込むことができないことを認識することができる。
<9−3. 第5の実施形態の特徴>
以上、本発明の第5の実施形態の具体例を、図25の流れ図および図26のチャートを用いて説明したが、ここでは、この第5の実施形態に係る情報処理装置の特徴をまとめておく。
第5の実施形態に係る情報処理装置100は、図12のブロック図に示すとおり、外部装置200との間で暗号通信を行う機能を有する情報処理装置であり、OSプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部110と、この情報格納部110に格納されているプログラムを実行するプログラム実行部120と、を備えている。
ここで、情報格納部110には、アプリケーションプログラムとして、少なくとも1つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置200との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置200から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
また、情報格納部110には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストLが格納されており、情報格納部110に格納されている管理プログラムのうち、少なくとも1つの指定管理プログラム(たとえば、SSD1)は、外部装置200から、暗号通信路を開設する旨の暗号通信路開設コマンドが与えられた際に、自己の暗号通信路開設機能に必要な暗号鍵がまだ書込まれていなかったときに、所定の実行条件が満たされていた場合には、自己を管理下におく上位管理プログラム(たとえば、ISD)に当該暗号通信路開設コマンドに基づく暗号通信路開設処理の代理実行を依頼して、暗号通信路の代理開設を行わせる機能を有する。
また、この指定管理プログラム(たとえば、SSD1)は、外部装置200から、自己の暗号通信路開設機能に必要な暗号鍵を書き込むための書込コマンドを、上位管理プログラム(たとえば、ISD)によって代理開設された暗号通信路を介して暗号化された状態で受信したときに、当該暗号化されている書込コマンドを復号して平文の書込コマンドに戻す処理を当該上位管理プログラム(たとえば、ISD)に依頼し、所定の実行条件が満たされていた場合には平文化された書込コマンドに基づく暗号鍵の書込処理を実行し、当該実行条件が満たされていなかった場合には平文化された書込コマンドに基づく暗号鍵の書込処理を拒絶する。
具体的には、指定管理プログラム(たとえば、SSD1)の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルPbと呼び、上位管理プログラム(たとえば、ISD)の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルPaと呼んだ場合に、セキュリティ強度順位リストにおいて、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部110に格納されている「上位管理プログラム(たとえば、ISD)」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルPaの認識が行われる。同様に、情報格納部110に格納されている「指定管理プログラム(たとえば、SSD1)」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルPbの認識が行われる。
一方、「指定管理プログラム(たとえば、SSD1)」から暗号通信路開設処理の代理実行を依頼された「上位管理プログラム(たとえば、ISD)」は、依頼に応じて、暗号通信路開設処理を代理実行することにより暗号通信路を代理開設することになる。
また、「指定管理プログラム(たとえば、SSD1)」は、外部装置200から、「上位管理プログラム(たとえば、ISD)」によって代理開設された暗号通信路を介して、暗号化されたコマンドを受信したときに、当該暗号化されたコマンドの復号を「上位管理プログラム(たとえば、ISD)」に依頼し、復号された平文コマンドを実行する。
一方、「指定管理プログラム(たとえば、SSD1)」から暗号化されている書込コマンドの復号処理を依頼された「上位管理プログラム(たとえば、ISD)」は、依頼に応じて、復号処理を実行することにより平文の書込コマンドを作成し、これを指定管理プログラムに引き渡す。
より具体的には、「指定管理プログラム(たとえば、SSD1)」は、外部装置200から、自己の暗号通信路開設機能に必要な暗号鍵を書込むための書込コマンドを、「上位管理プログラム(たとえば、ISD)」によって代理開設された暗号通信路を介して暗号化された状態で受信したときに、当該暗号化されている書込コマンドの復号を「上位管理プログラム(たとえば、ISD)」に依頼し、復号された書込コマンドが所定の実行条件を満たしていた場合には、これを実行することにより、暗号鍵の書込みを行う。
なお、図26に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム(たとえば、SSD1)」が、親暗号化プロトコルPaと子暗号化プロトコルPbとについての順位判定処理を「OSプログラム」に委託し、「OSプログラム」が実行した順位判定処理の結果に基づいて、暗号鍵の書込処理の実行/拒絶を決定するようにしている。
もちろん、本発明の第5の実施形態を実施する上で、実行条件が満たされているか否かの判定(セキュリティ強度順位リストLを参照した順位判定)は、必ずしも「OSプログラム」によって実行する必要はなく、「指定管理プログラム(たとえば、SSD1)」や「上位管理プログラム(たとえば、ISD)」が実行するようにしてもかまわないが、§5−3において述べたとおり、一般的なICカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「OSプログラム」に委託して実行するのが好ましい。
また、上例の場合、「OSプログラム」は、「指定管理プログラム(たとえば、SSD1)」から「上位管理プログラム(たとえば、ISD)」に対する暗号通信路開設処理の代理実行依頼の仲介と、「指定管理プログラム(たとえば、SSD1)」から「上位管理プログラム(たとえば、ISD)」に対する書込コマンドの復号処理依頼の仲介と、を行う機能も果たしている。
<9−4. 複数通りの暗号化プロトコルへの対応>
§5−4でも述べたとおり、本願発明は、1つの管理プログラムSDが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。ここで述べる第5の実施形態を実施する場合、1つの管理プログラムSDが、複数通りの暗号化プロトコルをサポートしているケースでは、図25のステップS56に示す判定処理を行う際に、親暗号化プロトコルPaが複数通り存在する可能性があり、子暗号化プロトコルPbも複数通り存在する可能性がある。
そこで、親暗号化プロトコルPaが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストLを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。
具体的には、第5の実施形態の場合は、親暗号化プロトコルPaが複数通り存在する場合には、そのうち、代理開設された暗号通信路に用いられた暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうち、書込コマンドに基づいて書き込まれるであろう暗号鍵を利用する暗号化プロトコルの中でセキュリティ強度順位リストでの順位が最も高い暗号化プロトコルを代表として選出すればよい。
図26のチャートに示すとおり、「STORE DATA (#n),(発行データ)」もしくは「PUT KEY (#n),(鍵データ)」なる鍵データの書込コマンドは、代理開設された暗号通信路を介して与えられることになるので、新たに書き込まれる「鍵データ(暗号鍵)」に対するセキュリティは、当該代理開設された暗号通信路に用いられた暗号化プロトコルのセキュリティ強度に依存することになる。
一方、指定管理プログラムが複数通りの暗号化プロトコルをサポートしている場合は、個々の暗号化プロトコルについて、それぞれ「鍵データ(暗号鍵)」を書き込む必要がある。このため、個々の暗号化プロトコルについての鍵データの書込処理が、それぞれ異なる暗号通信路を介して実行されるケースも想定すれば、個々の暗号鍵に含まれるセキュリティに関する潜在的な危険度は、当該暗号鍵を書込むための書込コマンドの送信に用いられた暗号通信路のセキュリティ強度に依拠する。
したがって、上述したように、子暗号化プロトコルPbが複数通り存在する場合には、そのうち、書込コマンド(親暗号化プロトコルPaを利用して代理開設された暗号通信路を介して送信されてきた書込コマンド)に基づいて書き込まれるであろう特定の暗号鍵を利用する暗号化プロトコルの中で、セキュリティ強度順位リストでの順位が最も高い暗号化プロトコルを代表として選出すれば、後に、下位の管理プログラムSSD1が子暗号化プロトコルPbとしてどのプロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
<<< §10. 第6の実施形態(鍵書込処理の制限(その2) >>>
§8で述べた第4の実施形態は、インストール作業(ここでは、階層間の移動作業も含めたものとする)まではノーチェックで作業を進め、最終段階の発行処理(鍵データの書込処理)において、チェックを行うという着想に基づくものであり、特に、鍵データの書込みを行う準備段階として発行データ書込対象指定コマンドが与えられたときに、当該コマンドの実行条件をチェックするものである。
ここで述べる第6の実施形態は、上記第4の実施形態において実行条件のチェックが行われる発行データ書込対象指定コマンドが与えられた時点では、ノーチェックで作業を進め、発行データ書込対象を指定する記録を行った後、実際に、指定された発行データ書込対象に対して鍵データを発行データとして書込むための書込コマンドが与えられたときに、当該コマンドの実行条件をチェックするものである。当該チェックの結果、実行条件が満たされていた場合には、鍵データの書込処理を行うことになる。
第4の実施形態の説明に用いた図23のチャートを用いて説明すれば、第4の実施形態の場合は、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられたときに、当該コマンドの実行条件のチェック(すなわち、「OSプログラム」による順位判定)が行われることになるが、ここで述べる第6の実施形態の場合、この時点では実行条件のチェックを行わずに、無条件で、「下位の管理プログラムSSD1」を発行データの書込対象として指定する処理を行う。すなわち、図23に「YES」と記載された一点鎖線より下方の処理をそのまま進めてゆく。
そして、その後、「STORE DATA (#n),(発行データ)」という鍵データの書込コマンドが与えられた時点で、当該コマンドの実行条件をチェックし、実行条件が満たされていた場合に限って、当該鍵データの書込コマンドを実行するようにする。ここで、鍵データの書込みが完了すれば、「下位の管理プログラム(SSD1)」の組込処理はすべて完了することになるので、正に、最後の最後の段階において、実行条件のチェックが行われることになる。
結局、この§10で述べる第6の実施形態では、図14(d) に示すアプリケーション向け発行データの書込コマンドのうち、「STORE DATA (#n),(発行データ)」という「書込コマンドその1」、すなわち、発行データを書込むための汎用の書込コマンド(発行データ書込コマンド)を、「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、鍵データの書込処理を制限することになる。なお、図14(d) に示す「PUT KEY (#n),(鍵データ)」という「書込コマンドその2」は、鍵データを書き込むための専用の書込コマンドであり、そもそも書込対象の指定には対応していないコマンドであるため、第6の実施形態では実行条件のチェックの対象にすることはできない。以下、この第6の実施形態について詳述する。
<10−1. 第6の実施形態における実行条件の判定処理>
ここでも、§8で述べた第4の実施形態の説明と同様に、管理プログラムISDの管理下に、既に管理プログラムSSD1がインストールされているが、完全な組込処理は完了しておらず、その後、管理プログラムSSD1についての鍵データの書込処理(発行処理)を行う必要がある状態を例にとって、以下に具体的な処理手順を示す。
上述したとおり、ここで述べる第6の実施形態では、まず、指定管理プログラムISDに対して、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」を与えて、下位にインストールされている管理プログラムSSD1を発行データの書込対象として指定した後に、指定管理プログラムISDに対して「STORE DATA (#n),(発行データ)」という鍵データの書込コマンドを与えることになる。
図27は、上位管理プログラムISDが、その管理下にある管理プログラムSSD1に対する発行セッションを開始する具体的な例について、本発明の第6の実施形態の処理手順を示す流れ図であり、指定管理プログラムISDに対して、下位の管理プログラムSSD1についての鍵データを書込むための発行データ書込コマンドが与えられた場合の処理手順を示している。
この図27の流れ図に示す手順は、要するに、第1の暗号化プロトコルを用いた暗号通信路開設機能を有する第1の管理プログラムISDの管理下に、第2の暗号化プロトコルを用いた暗号通信路開設機能を有する第2の管理プログラムSSD1が既にインストールされているが(階層間移動も含めた広義の「インストール」)、第2の管理プログラムSSD1が用いる暗号鍵の書込みがまだ実行されていない状態において、第2の管理プログラムSSD1を発行データ書込対象として指定して、暗号鍵を発行データとして書き込ませるための組込用コマンド(発行データ書込コマンド「STORE DATA (#n),(発行データ)」)が、外部装置200から情報処理装置100に対して与えられたときに実行される手順ということになる。
この手順の目的は、セキュリティ強度順位リストL上で第1の暗号化プロトコルよりも第2の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド(発行データ書込コマンド「STORE DATA (#n),(発行データ)」)の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムを組み込む作業が最終段階まで実行されることを回避することにある。
まず、ステップS61では、指定管理プログラム(ISD)により、「STORE DATA (#n),(発行データ)」なる発行データ書込コマンドが、指定管理プログラム(ISD)自身が開設した暗号通信路を介して受信される。このコマンドは、指定管理プログラム(ISD)に対して、既に実行済みの発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」によって指定された下位の管理プログラムSSD1を書込対象として、「発行データ」の書込みが行われるように指示するコマンドである。
従来の情報処理装置の場合、こうして与えられた発行データ書込コマンドは、指定管理プログラム(ISD)から書込対象となる下位の管理プログラム(SSD1)に引き渡されて直ちに実行される。これに対して、本発明の場合、その前に、セキュリティ強度順位リストLを参照して、実行条件が満たされているか否かの判定が行われる。
まず、ステップS62において、指定管理プログラム(ISD)がサポートしている親暗号化プロトコルPaが認識される。当該指定管理プログラム(ISD)は、既に組込済みのプログラムであるため、当該指定管理プログラム(ISD)が使用するメモリ領域には、当該指定管理プログラム(ISD)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルPaを認識することができる。
続いて、ステップS63において、発行データ書込対象指定コマンドによって指定された、発行データの書込対象となる下位管理プログラム(SSD1)がサポートしている子暗号化プロトコルPbが認識される。下位管理プログラム(SSD1)は、既に指定管理プログラム(ISD)の管理下にインストールされているプログラムであるため、当該下位管理プログラム(SSD1)が使用するメモリ領域には、当該下位管理プログラム(SSD1)がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルPbも認識することができる。
こうして、親暗号化プロトコルPaおよび子暗号化プロトコルPbが認識されたら、続いて、ステップS64において、セキュリティ強度順位リストLが参照され、ステップS65において、当該発行データ書込コマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルPaの順位が、子暗号化プロトコルPbの順位と等しいか、または、子暗号化プロトコルPbの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より低い場合には否定的な判定がなされる。
肯定的な判定がなされた場合は、ステップS66において、当該発行データ書込コマンドが実行される。すなわち、下位管理プログラム(SSD1)によって、自己のための発行データ(鍵データ)の書込処理が行われる。一方、否定的な判定がなされた場合は、ステップS67において、当該発行データ書込コマンドは拒絶され、外部装置200に対してエラーを示すレスポンスが返されることになる。
<10−2. 第6の実施形態の具体的な処理チャート>
続いて、外部装置200から第6の実施形態に係る情報処理装置100に対して、発行データ書込コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図28に示すチャートを参照しながら説明する。図示の例は、外部装置200としてスマートフォン10を用い、情報処理装置100として当該スマートフォン10に装着されたSIMカード11を用い、第1の管理プログラムISDの管理下に既にインストールされている第2の管理プログラムSSD1について、鍵データの書込処理を行うために、発行セッションの開始を指示する例である。
この図28のチャートに示す処理は、第4の実施形態として述べた図23,図24のチャートに示す処理に準じたものになる。したがって、この図28に示すチャートにおいても、右端のラインは、外部装置200(スマートフォン10)に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置100(SIMカード11)に組み込まれている「管理プログラムISD」(上位管理プログラム)を示し、中央左側のラインは、情報処理装置100(SIMカード11)に組み込まれている「OSプログラム」を示し、左端のラインは、情報処理装置100(SIMカード11)に組み込み途中の「管理プログラムSSD1」(発行データの書込対象となる下位管理プログラム)を示している。
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合も、管理プログラムISDがチャネル番号「#n」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム(ISD)」を二重枠のブロックで示してある。
第4の実施形態として述べた図23,図24のチャートに示す処理と、図28のチャートに示す第6の実施形態の処理との相違は、前者では、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられたときに、「OSプログラム」による順位判定を行っているのに対して、後者では、この時点では順位判定を行わずに、当該コマンドを無条件で実行して、「下位管理プログラム(SSD1)」を書込対象として指定する処理を行い、その後、「STORE DATA (#n),(発行データ)」なる発行データ書込コマンドが与えられたときに、「OSプログラム」による順位判定を行う点である。そのため、図28に示すチャートの基本的な手順は、図23,図24に示すチャートに示す手順に沿ったものになる。
要するに、第4の実施形態も第6の実施形態も、その目的は、「下位管理プログラム(SSD1)」を「指定管理プログラム(ISD)」の管理下に組み込むための最終段階の処理である発行処理を行う際に、セキュリティ上の所定条件が満たされているか否かのチェックを行い、条件が満たされていない場合には、発行処理を阻止することにあるが、前者では、「下位管理プログラム(SSD1)」を書込対象として指定する発行データ書込対象指定コマンドが与えられた時点で関所を設けて条件判定を行うのに対して、後者では、関所の位置を時間軸上で後ろにずらし、発行データ書込コマンドが与えられた時点で関所を設けて条件判定を行うことになる。
まず、「ホスト側アプリ」から、情報処理装置100に対して、アプリケーション選択コマンド「SELECT (#n), ISD」が与えられる。当該コマンドは、§4−1で説明したとおり(図14(a) 参照)、特定のチャネル番号#nを指定して、情報処理装置100側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムISD」がチャネル番号「#n」に対応づけられ、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムISD」を指定したコマンドとして取り扱われ、当該「指定管理プログラムISD」によって処理されることになる。
図示のとおり、アプリケーション選択コマンド「SELECT (#n), ISD」は、まず、「OSプログラム」によって処理される。「OSプログラム」は、当該コマンドに基づいて、「管理プログラムISD」をチャネル番号「#n」に対応づけるための登録を行う。これにより、以後、チャネル番号「#n」を伴うコマンドは、すべて「管理プログラムISD」を指定したコマンドと認識され、「指定管理プログラムISD」に引き渡される。
「OSプログラム」は、「指定管理プログラムISD」をチャネル番号「#n」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムISD」に報知する。「指定管理プログラムISD」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「OKレスポンス」を返す。こうして、新たにチャネル番号「#n」に割り当てられた通信チャネルが開設されたら、続いて、当該通信チャネルを暗号通信路にするための処理が必要になる。もちろん、「指定管理プログラムISD」は、既に組込作業がすべて完了している管理プログラムであるから、自分自身で暗号通信路を開設する機能を有している。
そこで、「ホスト側アプリ」から、情報処理装置100に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),(キーバーション番号),(乱数)」が与えられる。当該コマンドは、「指定管理プログラムISD」に対して、キーバーション番号で指定された暗号鍵を用いて暗号通信路の開設を指示するとともに、乱数に基づいて所定の認証用レスポンスの返信を求めるコマンドである。
この暗号通信路開設コマンドを受信した「指定管理プログラムISD」は、暗号通信路の開設処理を実行する。当該コマンドには、パラメータとして、キーバージョン番号および乱数が付加されているので、「指定管理プログラムISD」は、図3に示すような鍵テーブルTからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置200との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を「OKレスポンス」とともに返信する。
「ホスト側アプリ」は、返信されてきた演算結果の正当性を確認することにより、現在交信中の情報処理装置100を正規の交信相手として認証する。続いて、「ホスト側アプリ」から、情報処理装置100に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),(ホスト認証コード)」が与えられる。当該コマンドは、§4−6で説明したとおり(図14(f) 参照)、チャネル番号#nで指定される管理プログラムSDに、現在通信を行っている外部装置200を正規の交信相手として認証させるためのコマンドであり、パラメータとして「ホスト認証コード」が付加されている。
この外部認証コマンドを受信した「指定管理プログラムISD」は、パラメータとして付加されていた「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置200を正規の交信相手として認証する。認証に成功すると、外部装置200に対して「OKレスポンス」が返信される。
この時点で、情報処理装置100(「指定管理プログラムISD」)と外部装置200(「ホスト側アプリ」)との間に暗号通信路を開設する準備が完了したことになり、以後、両者間の通信は、当該暗号通信路を介して実行されることになる。この§10で述べる第6の実施形態は、「下位管理プログラム(SSD1)」に鍵データの書込みを行うための処理に関するものなので、以下、この暗号通信路を介してそのような処理を行うための手順を説明する。
まず、図示のとおり、「ホスト側アプリ」から、情報処理装置100に対して、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられる。当該コマンドは、§4−8で説明したとおり(図14(h) 参照)、「指定管理プログラムISD」に対して、後続して与えられる発行データの書込コマンド「STORE DATA (#n),(発行データ)」の書込対象を、「下位管理プログラムSSD1」に指定する旨のコマンドである。「指定管理プログラムISD」は、暗号通信路を介して送信されてきた当該コマンドを復号して平文コマンドに変換する。
第4の実施形態では、この時点で関所を設け、当該発行データ書込対象指定コマンドが実行条件を満たしているか否かの判定を行うことになるが、ここで述べる第6の実施形態では、この時点では関所は設けられていない。したがって、与えられた発行データ書込対象指定コマンドは、無条件で実行される。
図示のとおり、この発行データ書込対象指定コマンドは、「OSプログラム」と「指定管理プログラムISD」との連携作業によって実行される。すなわち、発行データの書込対象として「下位管理プログラムSSD1」が指定され、その旨の記録がなされる。その後、書込対象の記録が完了したことを示す信号が「OSプログラム」から「指定管理プログラムISD」に対して与えられ、更に、「指定管理プログラムISD」から「ホスト側アプリ」に対して「OKレスポンス」が返される。この「OKレスポンス」は、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」に対するレスポンスということになる。
続いて、「ホスト側アプリ」から「指定管理プログラムISD」に対して、発行データを書込むための発行データ書込コマンド「STORE DATA (#n),(発行データ)」が与えられる。「指定管理プログラムISD」は、暗号通信路を介して送信されてきた当該コマンドを復号して平文コマンドに変換する。ここで、「発行データ」の部分には「下位管理プログラムSSD1」用の鍵データおよび鍵データであることを示す情報が組み込まれているので、平文化したコマンドの内容が、鍵データの書込みであることが判明する。
しかも、この発行データ書込コマンドは、直接的には、チャネル番号「#n」を指定した「指定管理プログラムISD」宛のコマンドであるが、既に、発行データ書込対象指定コマンドの実行により、「下位管理プログラムSSD1」が発行データの書込対象として指定されているため、当該発行データ書込コマンドは、平文に変換された後に「OSプログラム」に引き渡される。
ここで述べる第6の実施形態では、この時点で関所が設けられており、発行データ書込コマンド「STORE DATA (#n),(発行データ)」の実行条件の判定が行われる。すなわち、当該コマンドの引き渡しを受けた「OSプログラム」は、図27の流れ図におけるステップS62〜S65に相当する実行条件の判定処理を行う。具体的には、「OSプログラム」は、「指定管理プログラムISD」が用いる親暗号化プロトコルPaを認識するとともに、「発行データの書込対象となる下位管理プログラムSSD1」が用いる子暗号化プロトコルPbを認識する。
図28における破線の矢印は、このような暗号化プロトコルPa,Pbの認識プロセスを示している。実際には、親暗号化プロトコルPaおよび子暗号化プロトコルPbの認識は、「管理プログラムISD」および「管理プログラムSSD1」が使用するメモリ領域を参照することにより行われる。
「OSプログラム」は、こうして認識した暗号化プロトコルPa,Pbの強度順位を、セキュリティ強度順位リストL上で比較する順位判定(図27のステップS65の判定)を行い、判定結果に応じて、それぞれ異なる処理を実行する。図28に「YES」と記載された部分以降の一点鎖線で示す処理は、肯定的な判定結果が得られた場合の処理であり、以下、当該処理を順に説明する。
まず、「OSプログラム」から「下位管理プログラムSSD1」に対して、発行データ書込コマンド「STORE DATA (#n),(発行データ)」が引き渡される。「下位管理プログラムSSD1」は、引き渡されたコマンドを実行して、「発行データ」を自己が使用する鍵データとして書込む処理を行い、実行完了を「OSプログラム」に報告する。当該報告は、「OSプログラム」から「指定管理プログラムISD」へ通達され、これを受けた「指定管理プログラムISD」は、「ホスト側アプリ」に対して「OKレスポンス」を返す。
一方、図28に「NO」と記載された部分における二点鎖線で示す処理は、否定的な判定結果が得られた場合の処理である。この場合は、「OSプログラム」から「指定管理プログラムISD」に対して、実行条件を満たしていないことを示す「判定結果NG」が伝達され、「指定管理プログラムISD」は、発行データ書込コマンドの実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「NGレスポンス」を返す。この「NGレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
「ホスト側アプリ」は、「NGレスポンス」として、チャネル番号「#n」の下での鍵データの書込処理に失敗した旨の報告を受けることになるので、「上位管理プログラムISD」の管理下に「指定管理プログラムSSD1」を組み込むことができないことを認識することができる。
<10−3. 第6の実施形態の特徴>
以上、本発明の第6の実施形態の具体例を、図27の流れ図および図28のチャートを用いて説明したが、ここでは、この第6の実施形態に係る情報処理装置の特徴をまとめておく。
第6の実施形態に係る情報処理装置100は、図12のブロック図に示すとおり、外部装置200との間で暗号通信を行う機能を有する情報処理装置であり、OSプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部110と、この情報格納部110に格納されているプログラムを実行するプログラム実行部120と、を備えている。
ここで、情報格納部110には、アプリケーションプログラムとして、少なくとも1つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置200との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置200から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
また、情報格納部110には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストLが格納されており、情報格納部110に格納されている管理プログラムのうち、少なくとも1つの指定管理プログラム(たとえば、ISD)は、自己の管理下にインストールされているアプリケーションプログラム(たとえば、SSD1)を動作させるために必要な発行データの書込みが実行されるよう、必要な処理を行う発行データ書込処理機能を更に有している。
そして、この指定管理プログラム(たとえば、ISD)は、自己の管理下に既にインストールされている下位管理プログラム(たとえば、SSD1)を発行データの書込対象として指定するための発行データ書込対象指定コマンドが与えられたときに、当該発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を実行する。
また、この指定管理プログラム(たとえば、ISD)は、発行データ書込対象指定処理を実行することにより、下位管理プログラム(たとえば、SSD1)を発行データの書込対象として指定した後、外部装置200から、当該下位管理プログラム(たとえば、SSD1)の暗号通信路開設機能に必要な暗号鍵の書込みを目的とする発行データ書込コマンドが与えられたときに、所定の実行条件が満たされていた場合には、当該発行データ書込コマンドを下位管理プログラム(たとえば、SSD1)に引き渡し、当該下位管理プログラム(たとえば、SSD1)に発行データの書込処理を実行させ、実行条件が満たされていなかった場合には、発行データ書込コマンドに基づく発行データの書込処理を拒絶する。
具体的には、指定管理プログラム(たとえば、ISD)の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルPaと呼び、下位管理プログラム(たとえば、SSD1)の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルPbと呼んだ場合に、セキュリティ強度順位リストLにおいて、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルPaの順位が子暗号化プロトコルPbの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部110に格納されている「指定管理プログラム(たとえば、ISD)」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルPaの認識が行われる。同様に、情報格納部110に格納されている「下位管理プログラム(たとえば、SSD1)」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルPbの認識が行われる。
なお、「指定管理プログラム(たとえば、ISD)」が、発行データ書込コマンドを「下位管理プログラム(たとえば、SSD1)」に引き渡す際には、「OSプログラム」が引き渡し処理を仲介することになる。また、図28に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム(たとえば、ISD)」が、親暗号化プロトコルPaと子暗号化プロトコルPbとについての順位判定処理を「OSプログラム」に委託し、「OSプログラム」が実行した順位判定処理の結果に基づいて、発行データ書込処理の実行/拒絶を決定するようにしている。
もちろん、本発明の第6の実施形態を実施する上で、実行条件が満たされているか否かの判定(セキュリティ強度順位リストLを参照した順位判定)は、必ずしも「OSプログラム」によって実行する必要はなく、「指定管理プログラム(たとえば、ISD)」が実行するようにしてもかまわないが、§5−3において述べたとおり、一般的なICカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「OSプログラム」に委託して実行するのが好ましい。
<10−4. 複数通りの暗号化プロトコルへの対応>
§5−4でも述べたとおり、本願発明は、1つの管理プログラムSDが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。ここで述べる第6の実施形態を実施する場合、1つの管理プログラムSDが、複数通りの暗号化プロトコルをサポートしているケースでは、図27のステップS65に示す判定処理を行う際に、親暗号化プロトコルPaが複数通り存在する可能性があり、子暗号化プロトコルPbも複数通り存在する可能性がある。
そこで、親暗号化プロトコルPaが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストLを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。
具体的には、第6の実施形態の場合は、親暗号化プロトコルPaが複数通り存在する場合には、そのうちの発行データ書込コマンドの受信に利用された暗号通信路の開設に用いられた暗号化プロトコルを代表として選出し、子暗号化プロトコルPbが複数通り存在する場合には、そのうち、発行データ書込コマンドに基づいて書込まれるであろう暗号鍵を利用する暗号化プロトコルの中でセキュリティ強度順位リストでの順位が最も高い暗号化プロトコルを代表として選出すればよい。
図28のチャートに示すとおり、「STORE DATA (#n),(発行データ)」なる発行データ書込コマンドは、「指定管理プログラムISD」が開設した暗号通信路を介して与えられることになるので、新たに書き込まれる「鍵データ(暗号鍵)」に対するセキュリティは、当該発行データ書込コマンドの受信に利用された暗号通信路の開設に用いられた暗号化プロトコルのセキュリティ強度に依存することになる。
一方、下位管理プログラムが複数通りの暗号化プロトコルをサポートしている場合は、個々の暗号化プロトコルについて、それぞれ「鍵データ(暗号鍵)」を書き込む必要がある。このため、個々の暗号化プロトコルについての鍵データの書込処理が、それぞれ異なる暗号通信路を介して実行されるケースも想定すれば、個々の暗号鍵に含まれるセキュリティに関する潜在的な危険度は、当該暗号鍵を書込むための書込コマンドの送信に用いられた暗号通信路のセキュリティ強度に依拠する。
したがって、上述したように、子暗号化プロトコルPbが複数通り存在する場合には、そのうち、書込コマンド(親暗号化プロトコルPaを利用して開設された暗号通信路を介して送信されてきた書込コマンド)に基づいて書き込まれるであろう特定の暗号鍵を利用する暗号化プロトコルの中で、セキュリティ強度順位リストでの順位が最も高い暗号化プロトコルを代表として選出すれば、後に、下位の管理プログラムSSD1が子暗号化プロトコルPbとしてどのプロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
<<< §11. 複数通りのプロトコルについての順位判定方法 >>>
既に、§5−4,§6−4,§7−4,§8−4,§9−4,§10−4においてそれぞれ個別に述べたとおり、本願発明は、1つの管理プログラムSDが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。そのようなケースでは、実行条件の判定を行う際に、親暗号化プロトコルPaが複数通り存在する可能性があり、子暗号化プロトコルPbも複数通り存在する可能性がある。
そこで、第1の管理プログラムが用いる第1の暗号化プロトコルが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、第2の管理プログラムが用いる第2の暗号化プロトコルが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストLを用いて比較するようにすればよい。
このような場合における親暗号化プロトコルPaと子暗号化プロトコルPbとの比較方法(代表の選出方法)としては、上記各セクションにおいて個別に説明した方法を採用すればよい。図29は、親暗号化プロトコルPaおよび子暗号化プロトコルPbが複数通り存在する場合に、個々の実施形態に適用可能な具体的な順位判定方法における比較対象を示す一覧表である。
この一覧表には、方法1〜6の6通りの順位判定方法について、それぞれ比較対象となる親暗号化プロトコルPaの順位(「親」欄に記載された順位)と子暗号化プロトコルPbの順位(「子」欄に記載された順位)とが示されている。また、一覧表の右端欄には、各順位判定方法が適用可能な実施形態の番号が示されている。
たとえば、方法1は、親暗号化プロトコルPaを用いる上位管理プログラムSDがサポートするプロトコルのうち最高順位のものを、親暗号化プロトコルPaの代表として選出し、子暗号化プロトコルPaを用いる下位管理プログラムSDがサポートするプロトコルのうち最高順位のものを、子暗号化プロトコルPbの代表として選出し、各代表同士を比較対象として実行条件の判定を行うことを示している。この方法1は、第1の実施形態および第2の実施形態に対して適用可能である。方法2〜6についても、この一覧表に記載されたとおりである。
なお、各方法についてのより具体的な内容は、既に、§5−4,§6−4,§7−4,§8−4,§9−4,§10−4においてそれぞれ述べたとおりであるので、ここでは説明は省略する。
このように1つの管理プログラムSDが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースでは、個々の管理プログラムSDごとに、それぞれサポートしているプロトコルを掲載した個別リストを作成し、この個別リストに基づいて代表の選出を行うようにするのが好ましい。
図30は、このようにして作成された個別リストの一例を示す図である。図30(a) には、第1の管理プログラムについて作成された個別リストL1が示されており、図30(b) には、第2の管理プログラムについて作成された個別リストL2が示されている。各個別リストL1,L2の右欄には、各管理プログラムがサポートする暗号化プロトコルが示され、左欄には、当該暗号化プロトコルの強度順位(セキュリティ強度順位リストL1を参照して得られた順位)が示されている。
前述したとおり、個々の管理プログラムは、インストールの段階まで完了していれば、暗号鍵の書込段階(発行段階)が完了していなくても、情報格納部110に格納されている当該管理プログラムもしくは当該管理プログラムに関連するデータを参照することにより、当該管理プログラムがサポートする暗号化プロトコルを認識することができるので、図30(a),(b)に示すような個別リストL1,L2を作成することが可能である。
このような個別リストを作成しておけば、図29の一覧表に示すような各判定方法を採用して順位判定を行う場合、親暗号化プロトコルPaの代表および子暗号化プロトコルPbの代表についての順位を容易に認識することができるようになる。
<<< §12. 方法発明としての把握 >>>
これまで本発明を、情報処理装置100としての装置発明として捉え、いくつかの実施形態を示しながら、当該装置発明についての説明を行ってきた。ただ、本発明は、情報処理装置100と外部装置200との間で、所定の暗号化プロトコルに基づく暗号通信を行うための設定を行う暗号通信設定方法として捉えることも可能である。そこで、ここでは、本発明を暗号通信設定方法という方法発明として捉え、その基本手順をまとめておく。
本発明に係る暗号通信設定方法を実施するには、まず、情報処理装置100に組み込んで利用するための第1の管理プログラムおよび第2の管理プログラムを、外部装置200に用意する管理プログラム準備段階を行う。ここで、第1の管理プログラムおよび第2の管理プログラムは、情報処理装置100内において、自己を上位階層、別なプログラムを下位階層として、下位階層のプログラムを自己の管理下におく管理プログラムであり、自己の管理下にあるプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置200との間に暗号通信路を開設する暗号通信路開設機能を有しており、また、外部装置から与えられるコマンドに基づいて当該機能を実行することができるプログラムである。
一方、情報処理装置100については、外部装置200から与えられるコマンドに基づいて、複数の暗号化プロトコルについてのセキュリティ強度の順位を示すセキュリティ強度順位リストLを組み込むリスト組込段階を実行しておく。なお、このリスト組込段階は、必ずしも外部装置200から与えられるコマンドに基づいて実行する必要はなく、たとえば、何らかのプログラムを組み込む際に一緒にセキュリティ強度順位リストLを組み込むようにしてもよい。
続いて、情報処理装置100が、外部装置200から与えられるコマンドに基づいて、第1の管理プログラムを組み込み、更に、この第1の管理プログラムの暗号通信路開設機能に用いられる暗号鍵を組み込むことにより、当該情報処理装置100内で第1の管理プログラムが動作可能となるようにする第1の管理プログラム動作可能化段階を実行する。
そして、更に、情報処理装置100が、外部装置200から与えられるコマンドに基づいて、第2の管理プログラムを第1の管理プログラムの管理下に組み込み、更に、第2の管理プログラムの暗号通信路開設機能に用いられる暗号鍵を組み込むことにより、当該情報処理装置内で第2の管理プログラムが動作可能となるようにする第2の管理プログラム動作可能化段階を実行する。こうすることにより、第1の管理プログラムの管理下に、第2の管理プログラムを組み込み、動作可能状態にすることができる。
本発明に係る暗号通信設定方法の特徴は、情報処理装置100が、第2の管理プログラム動作可能化段階の実行前もしくは実行中に、第1の管理プログラムが用いる第1の暗号化プロトコルと、第2の管理プログラムが用いる第2の暗号化プロトコルとについて、セキュリティ強度順位リストL上での順位を比較し、第1の暗号化プロトコルよりも第2の暗号化プロトコルの方が上順位にある場合には、第2の管理プログラム動作可能化段階の実行を中止もしくは中断する点にある。
そうすることにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムが組み込まれる事態を回避することができ、階層構造による上下関係をもった複数の管理プログラムが組み込まれる情報処理装置において、個々の管理プログラムが本来の能力に応じた十分なセキュリティ能力を発揮できるようになる。
より具体的には、§5で述べた第1の実施形態や、§6で述べた第2の実施形態では、情報処理装置100が、外部装置200から与えられるコマンドに基づいて、第2の管理プログラムを第1の管理プログラムの管理下にインストールする処理(新規インストール処理や階層間での移動処理)を行う前に、セキュリティ強度順位リストL上での順位を比較し、第1の暗号化プロトコルよりも第2の暗号化プロトコルの方が上順位にある場合には、第2の管理プログラムのインストール処理を中止するようにしている。
また、§7〜§10で述べた第3〜第6の実施形態では、情報処理装置100が、外部装置200から与えられるコマンドに基づいて、第2の管理プログラムを第1の管理プログラムの管理下にインストールする処理を行った後、第2の管理プログラムの暗号通信路開設機能に用いられる暗号鍵を書込む処理を行う前に、セキュリティ強度順位リストL上での順位を比較し、第1の暗号化プロトコルよりも第2の暗号化プロトコルの方が上順位にある場合には、暗号鍵の書込処理もしくは暗号鍵の書込処理に必要な準備処理を中止するようにしている。
なお、第1の管理プログラムが用いる第1の暗号化プロトコルが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、第2の管理プログラムが用いる第2の暗号化プロトコルが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストを用いて比較するようにすればよい。