以下、本発明を図示する実施形態に基づいて説明する。
<<< §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カードには、通常、OSプログラムとともに、複数のアプリケーションプログラムが組み込まれる。図2の情報処理装置100(SIMカード11)には、OSプログラムの他に、2組の一般アプリケーションプログラムAP1,AP2が組み込まれた状態が示されている。また、ICカードには、通常、少なくとも1組の管理プログラムSD(Security Domain プログラム)が組み込まれている。この管理プログラムSDは、分類上はアプリケーションプログラムの一種であるが、OSプログラムと協働して、ICカード全体の動作や、管理下にある他のアプリケーションプログラムを管理する役割を果たす。そこで、本願では、情報処理装置100(SIMカード11)に組み込まれるアプリケーションプログラムのうち、Security Domain プログラムを「管理プログラムSD」と呼び、それ以外のアプリケーションプログラムを「一般アプリケーションプログラムAP(略称:一般アプリ)」と呼ぶことにする。
後に詳述するように、管理プログラム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個のセルにそれぞれ暗号鍵を用意することになる。なお、実際の暗号化通信には、後述するように、これらの暗号鍵を利用してその都度セッションキーが生成され、このセッションキーを用いて暗号化や復号が行われる。
図3の下段には、鍵テーブルTに格納されている1つの暗号鍵KeyPの一般的なデータ構造を例示する。図示された暗号鍵KeyPのデータ構造は、上述した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は、暗号化演算に用いられる鍵値データそのものである。
続いて、図2に示す外部装置200から情報処理装置100に対して与えられるコマンドの一例とそのデータ構造の概要を図4に示す。まず、図4(a) に示す「アプリケーション選択コマンド」は、特定のチャネル番号を指定して、情報処理装置100側の特定のアプリケーションプログラムを選択するコマンドである。図示のとおり、「SELECT (#n)+アプリ名」というデータ構造を有し、チャネル番号#nを指定して、「アプリ名」で特定されるアプリケーションプログラムを選択する指示である。なお、本願における「アプリ名」とは、アプリケーションプログラムを特定することが可能な情報を意味するものであり、外部に公開されている「アプリの名称」のみならず、そのような「アプリの名称」にひもづけられ、内部でのみ利用される「管理番号」等のデータも広く含むものである。
チャネル番号#nは、外部装置200から情報処理装置100に対してコマンドを与える際に、当該コマンドがどのアプリケーションプログラム宛のコマンドであるかを識別させるために用いられる。情報処理装置100には、複数のアプリケーションプログラムが格納されているため、外部装置から与えるコマンドのそれぞれにチャネル番号#nを付加して識別できるようにする必要がある。「アプリケーション選択コマンド」は、特定のアプリケーションプログラムに特定のチャネル番号#nを対応づけるための初期設定を行う役割を果たす。
たとえば、「SELECT (#3)+AP1」というアプリケーション選択コマンドを情報処理装置100に与えると、アプリケーションプログラムAP1がチャネル番号#3に対応づけられる。具体的には、当該コマンドを受信した情報処理装置100内のOSプログラムが、アプリケーションプログラムAP1がチャネル番号#3に対応づけられた旨の記録を行うことになる。以後、チャネル番号#3が付与されたコマンドは、すべてアプリケーションプログラムAP1宛のコマンドとして取り扱われ、アプリケーションプログラムAP1に引き渡されることになる。
続いて、図4(b) に示す「暗号通信路開設コマンド」について説明する。このコマンドは、特定の管理プログラムSDに対して、暗号通信路を開設させるためのコマンドである。この暗号通信路開設コマンドは、図示のとおり、「INITIALIZE UPDATE (#n)+パラメータ」というデータ構造を有し、チャネル番号#nで指定されるプログラムに対して、暗号通信路を開設する指示を与えるとともに、外部装置200が、情報処理装置100を正規の交信相手として認証するために用いる応答を要求するコマンドである。
実際には、パラメータとして、キーバージョン番号および乱数が付加される。暗号通信路の開設処理を担当する管理プログラムSDは、図3に示す鍵テーブルTからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置200との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対する応答として返信する。
最後に、図4(c) に示す「外部認証コマンド」について説明する。このコマンドは、暗号通信路の開設処理を担当する管理プログラムSDが、現在通信を行っている外部装置200を正規の交信相手として認証するためのコマンドである。上述したように、図4(b) に示す暗号通信路開設コマンド「INITIALIZE UPDATE (#n)+パラメータ」は、暗号通信路を開設する指示を与えるとともに、外部装置200が、情報処理装置100を正規の交信相手として認証するために用いる応答を要求するコマンドである。外部装置200は、当該応答が正当なものであれば、情報処理装置100を正規の交信相手と判断する。
一方、図4(c) に示す外部認証コマンドは、図示のとおり、「EXTERNAL AUTHENTICATE (#n)+ホスト認証コード」というデータ構造を有し、チャネル番号#nを指定して、外部装置200を正規の交信相手として認証するためのホスト認証コードが付加されている。情報処理装置100は、当該ホスト認証コードが正当なものであれば、外部装置200を正規の交信相手と判断する。
このように、外部認証コマンド「EXTERNAL AUTHENTICATE (#n)+ホスト認証コード」は、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)+パラメータ」に続いて与えられるコマンドであり、両者によって、情報処理装置100と外部装置200との間に相互認証が行われることになる。
図5は、図2に示すSIMカード11(情報処理装置100)とスマートフォン10(外部装置200)との間でやりとりされる種々のコマンドおよびこれに対する応答の具体例を示すダイアグラムである。ステップS1〜S6に示すとおり、いずれもスマートフォン10側からSIMカード11側に所定のコマンドを送信し、当該コマンドに対する応答(レスポンス)をSIMカード11側からスマートフォン10側へと返信する、という形態で、両者間の情報のやりとりが行われる。この例の場合、ステップS1〜S4までの情報のやりとりは、暗号化されていない通常の通信路を介して行われるが、ステップS5,S6の情報のやりとりは、管理プログラムSDによって開設された暗号通信路を介して行われる。
まず、ステップS1は、スマートフォン10側からSIMカード11側に「SELECTコマンド」を送信するプロセスである。この「SELECTコマンド」は、図4(a) に示す「アプリケーション選択コマンド」であり、特定のチャネル番号を指定して、SIMカード11側の特定のアプリケーションプログラムを選択するコマンドである。SIMカード11側では、当該チャネル番号と当該選択アプリケーションプログラムとが対応づけられ、以後、同じチャネル番号をもつコマンドが与えられると、当該選択アプリケーションプログラムによって処理されることになる。「SELECTコマンド」が正常に受理されると、SIMカード11側からスマートフォン10側に応答が返される。
続く、ステップS2は、「GET DATAコマンド」を送信するプロセスである。なお、ステップS2以降のコマンドには、ステップS1と同じチャネル番号が付与されており、SIMカード11側では、当該チャネル番号に対応づけられた選択アプリケーションプログラムによって処理がなされものとする。この「GET DATAコマンド」は、所定のデータをSIMカード11側からスマートフォン10側に読み出すためのコマンドであり、読出対象となるデータを特定する情報が付加されている。選択アプリケーションプログラムは、当該コマンドに応じて、SIMカード11内のメモリから指定されたデータを読出し、これを当該コマンドに対する応答としてスマートフォン10側へと返信する。
図5に示す例の場合、ステップS1,S2のコマンドおよび応答のプロセスは、暗号通信路の開設前に暗号通信路を介すことなく行われている。続く、ステップS3,S4は、暗号通信路の開設準備を行うプロセスである。まず、ステップS3では、「INITIALIZE UPDATEコマンド」の送信が行われる。このコマンドは、図4(b) に示すデータ構造をもつ「暗号通信路開設コマンド」であり、前述したとおり、「INITIALIZE UPDATE」なるコマンド識別子に、チャネル番号,キーバージョン番号,乱数を付加した形態をもつ。前述したとおり、このコマンドは、スマートフォン10(外部装置200)が、SIMカード11(情報処理装置100)を正規の交信相手として認証するための認証コマンドとしての役割も果たす。
なお、この「INITIALIZE UPDATEコマンド」に基づいて暗号通信路を開設する処理を行うのは、実際には管理プログラムSDである。したがって、一般アプリ(もしくは、その時点では暗号通信路開設機能の準備ができていない管理プログラム)に対して「INITIALIZE UPDATEコマンド」が与えられた場合、自己を管理する管理プログラムSDに対して暗号通信路の開設処理の依頼が行われる。
暗号通信路の開設処理を実行する管理プログラム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」により保護されたコマンドとして送信される。
<<< §2. 階層構造をもった管理プログラムの役割 >>>
上述の§1では、情報処理装置100と外部装置200との間に暗号通信路を開設して両者間で暗号通信を行うための手順を簡単に説明した。このような暗号通信路の開設処理は、実際には、管理プログラムSDによって実行される。ここでは、情報処理装置100に複数の管理プログラムSDが階層構造をもって組み込まれる点と、各管理プログラムSDの役割について簡単に説明する。
図6(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が配置されている。
この図6(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には、次のような機能が用意されている。これらの機能の一覧表は、図6(b) にも掲載されている。
<機能1>ICカードのライフサイクル管理
<機能2>アプリケーションプログラムのライフサイクル管理
<機能3>アプリケーションインスタンスのライフサイクル管理
<機能4>アプリケーションプログラムのロード
<機能5>アプリケーションインスタンスの生成(インストール)
<機能6>アプリケーションプログラムやインスタンスの削除
<機能7>アプリケーション向け発行データの書込み
<機能8>データの読出し
<機能9>セキュアな通信路の確保
もっとも、上記9つの機能は、必ずしもすべての管理プログラムSDに備わっているものではない。通常、最上位階層のISDは、すべての機能を備えているが、下位階層におかれるSSDについては、いくつかの機能が制限される場合もある。たとえば、上記機能1「ICカードのライフサイクル管理」は、通常、ISDにのみ備わっている。また、上記機能のいくつかは、自己の下位階層に配置されているアプリケーションプログラム(自己の管理下にあるアプリケーションプログラム)のために提供する機能である。
上記9つの機能のうち、本発明に直接関連する機能は、機能9「セキュアな通信路の確保(暗号通信路開設機能)」である。この機能9は、既に§1で述べたとおり、「SCP:Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、外部装置200との間にセキュアな暗号通信路を開設して暗号通信を行う機能である。このような機能を実現するため、図2に示すように、管理プログラムSD内には、暗号通信路開設ルーチンR1と鍵テーブルT1とが組み込まれている。
各管理プログラムSDは、自分自身が外部装置200内のアプリケーションプログラムと通信を行う際に、自分自身のために暗号通信路の開設を行うことができるが、自己の管理下にある別なアプリケーションプログラムが外部装置200と通信を行う際に、当該別なアプリケーションプログラムのために暗号通信路の開設を行うこともできる。たとえば、図6(a) に示す例の場合、管理プログラムSSD1は、その下位階層に所属する一般アプリAP11,AP12を管理する役割を果たすので、これら一般アプリAP11,AP12からの依頼があれば、依頼主の一般アプリのために暗号通信路の開設を行うことになる。
別言すれば、図6(a) に示す例の場合、一般アプリAP11,AP12は、外部装置200から、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)」が与えられた場合、自己を管理する管理プログラムSSD1に対して、暗号通信路の開設を依頼することになる。なお、図6(a) に示すようなアプリケーションプログラムの階層構造に関する情報は、OSプログラムが管理するメモリ領域に格納されており、各管理プログラムSDや各一般アプリAPは、必要があれば、OSプログラムへの問い合わせを行うことにより、自己の上位や下位に位置するプログラムを特定する情報を取得することができる。
結局、図6(a) に示す例の場合、管理プログラムSSD1は、必要に応じて、自分自身のための暗号通信路,一般アプリAP11のための暗号通信路,一般アプリAP12のための暗号通信路という3通りの暗号通信路を開設する役割を担うことになる。前述したとおり、Java Card(商標)やGlobalPlatform (登録商標)などの仕様に準拠した一般的なICカードの場合、外部装置との間に複数の論理チャネルを開き、個々のアプリケーションプログラムに特定の論理チャネルを割り当て、複数のアプリケーションプログラムによる外部通信を並列的に処理することができる。このため、図示の例の場合、各プログラムSSD1,AP11,AP12に、それぞれ異なる論理チャネルを割り当てれば、これら3つのプログラムはそれぞれ別個独立して、並列的に外部装置200と通信を行うことができる。
したがって、図示の例の場合、もし管理プログラムSSD1に、同時に複数の暗号通信路を開設する機能をもたせておけば、各プログラムSSD1,AP11,AP12のそれぞれのために独立した暗号通信路を開設し、3つの暗号通信路を介して並列的に暗号通信を行うことが可能である。しかしながら、実用上、多数の暗号通信路を同時に開設した状態にすることには、セキュリティ上の問題がある。これは、暗号通信路を開設するためには、暗号処理に必要なセッションキー等を一時的に発生させ、これを一時的に保存しておく必要があるため、多数の暗号通信路を同時に開設した状態にすると、セッションキー等の重要な情報が漏洩する危険性が高まるためである。
セッションキーは、図3に示す鍵テーブルTから読み出した暗号鍵KeyP等に基づいて派生的に生成された一時的なキーであり、暗号通信路の開設から終了に至るまで一時的に利用される暗号処理用の鍵である。暗号通信路が終了すると消去されてしまうため、終了後に漏洩する危険性はないが、暗号通信路を開設している間は、どこかに一時的に記録しておく必要があるため、クラッカーの攻撃下では、常に漏洩の危険性に晒されることになる。
このような事情から、通常は、1つの管理プログラムSDが同時に開設できる暗号通信路の数に制限が課される。たとえば、上記仕様に準拠したUIM向けのICカードの場合、1つの管理プログラムSDが同時に開設可能な暗号通信路の数は1つに制限されている。したがって、図6(a) に示す例の場合、管理プログラムSSD1は、自己のための暗号通信路、一般アプリAP11のための暗号通信路、一般アプリAP12のための暗号通信路の3通りの通信路を同時には開設することはできず、必要があれば、1つずつ順番に開設する必要がある。たとえば、一般アプリAP11のための暗号通信路が開設済の場合、一般アプリAP12のための暗号通信路開設依頼があったとしても、既に開設している暗号通信路が終了するまで、新たな暗号通信路の開設はできない。
もちろん、このように、同時開設可能な暗号通信路の数に制限を課することは、上述したように、セッションキーの漏洩などを防ぎ、十分なセキュリティを確保する上では重要なことである。ただ、本発明が解決すべき課題として、現時点で生じている問題点は、上例の場合、実際には、一般アプリAP11のための暗号通信路が終了しているにもかかわらず、管理プログラムSSD1がその事実を把握することができなかったため、一般アプリAP12のための新たな暗号通信路の開設を行うことができなくなる事態が発生する点である。このような事態が発生する具体的な理由は、§3で詳述する。
<<< §3. 従来および本発明に係る情報処理装置の一般的な構成 >>>
ここでは、説明の便宜上、図2に示す一般的な情報処理装置100の基本構成を簡単に述べておく。図7は、一般的な情報処理装置100の基本構成と外部装置200を示すブロック図である。ここに示す例も、情報処理装置100としてSIMカード11を用い、外部装置200として当該SIMカード11が装着されたスマートフォン10もしくは外部サーバ20を用いた例である。図示の情報処理装置100の基本構成自体は、従来装置と本発明に係る装置とに共通するものである。
図示のとおり、この情報処理装置100は、外部装置200との間で暗号通信を行う機能を有し、プログラム格納部110、データ格納部120、プログラム実行部130を備えている。プログラム格納部110には、OSプログラムおよびアプリケーションプログラムが格納されている。
既に述べたとおり、アプリケーションプログラムには、管理プログラムSDと一般アプリプログラムAPとが含まれており、プログラム格納部110には、OSプログラムの他に、アプリケーションプログラムとして、少なくとも1つの管理プログラムSDと少なくとも1つの一般アプリプログラムAPとが格納されていることになる。図示の例は、図6(a) に示す階層構造に応じたアプリケーションプログラムが格納されている例であり、4組の管理プログラムISD,SSD1,SSD2,SSD3と、9組の一般アプリAP01,AP02,AP11,AP12,AP21,... ,AP32(図示は一部省略)が格納された状態が示されている。
一方、データ格納部120には、プログラム格納部110に格納されている各プログラムによって利用されるデータが格納される。図示のとおり、このデータ格納部120には、OSプログラムによって利用されるデータを格納するOS用情報格納部121と、各管理プログラムISD,SSD1,SSD2,SSD3によって利用されるデータを格納するSD用情報格納部122と、各一般アプリプログラムAP01〜AP32によって利用されるデータを格納するAP用情報格納部123と、が設けられている。
また、プログラム実行部130は、データ格納部120に格納されているデータを利用しながら、プログラム格納部110に格納されている各プログラムを実行する構成要素であり、外部装置200に対する通信機能を備えている。図示のとおり、外部装置200から与えられたコマンドは、プログラム実行部130において、所定のプログラムを用いて解釈実行され、その結果が応答(レスポンス)として外部装置200へ返される。情報処理装置100と外部装置200との間の通信は、外部装置200から情報処理装置100に与えられるコマンドと、これに応じて、情報処理装置100から外部装置200に対して返される応答と、を繰り返すことにより実行される。
もちろん、実際には、プログラム格納部110およびデータ格納部120は、情報処理装置100内に組み込まれている不揮発性メモリやその他の記憶装置によって構成され、プログラム実行部130は、情報処理装置内に組み込まれているCPUやRAMメモリ、その他のインターフェイスデバイスによって構成される。また、データ格納部120内に設けられているOS用情報格納部121,SD用情報格納部122,AP用情報格納部123の実体は、不揮発性メモリやその他の記憶装置によって構成されたデータ記憶領域の一部である。SD用情報格納部122は、更に、個々の管理プログラムISD,SSD1,SSD2,SSD3によって利用されるデータ記憶領域に区分けされており、AP用情報格納部123は、更に、個々の一般アプリプログラムAP01〜AP32によって利用されるデータ記憶領域に区分けされている。
ここで、各管理プログラムISD,SSD1,SSD2,SSD3は、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、ここに示す実施例の場合、図6(a) に示すような階層構造が定義されている。既に述べたとおり、各管理プログラムISD,SSD1,SSD2,SSD3は、自己もしくは自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置200との間に暗号通信路を開設する暗号通信路開設機能を有し、外部装置200から与えられる暗号通信路開設コマンドに基づいて当該機能を実行するプログラムである。
<<< §4. 従来装置における暗号通信路開設処理 >>>
ここでは、本発明に係る情報処理装置との対比のために、従来の一般的な情報処理装置100における暗号通信路開設処理のプロセスを説明する。
<4−1. 従来装置による基本的な処理手法>
図7に示すとおり、情報処理装置100内のデータ格納部120には、OSプログラムによって利用されるデータを格納するOS用情報格納部121と、各管理プログラムによって利用されるデータを格納するSD用情報格納部122とが設けられている。
Java Card(商標)やGlobalPlatform (登録商標)などの仕様に準拠した従来の一般的なSIMカード11の場合、OS用情報格納部121内には、図8の左に例示するようなOS用参照テーブルT(OS)が格納され、SD用情報格納部122内には、図8の右に例示するようなSD用参照テーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)が格納される。
ここで、OS用参照テーブルT(OS)は、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するためのテーブルであり、OSプログラムによって管理される。すなわち、このOS用参照テーブルT(OS)の内容は、OSプログラムによって記録され、OSプログラムによって参照されることになる。図示の例の場合、チャネル番号#0〜#2のそれぞれについて、特定のアプリケーションプログラムの名前(アプリ名:実際には、当該アプリケーションプログラムを特定する固有のコード)が対応づけられた状態が示されている。チャネル番号#3については、まだ対応づけられたアプリケーションプログラムは存在しない(図では、便宜上「無」の文字を表示してある)。
特定のチャネル番号に対して特定のアプリケーションプログラムが対応づけられている場合、外部装置200からは、当該特定のチャネル番号を指定したコマンドを与えることにより、当該特定のアプリケーションプログラムにアクセスすることができる。§1で述べたように、このような対応づけは、図4(a) に示すアプリケーション選択コマンド(SELECTコマンド)によって行うことができる。
具体的には、外部装置200から、たとえば、「SELECT(#0), SSD1」なるアプリケーション選択コマンドを与えると、OSプログラムによって、図8に示すOS用参照テーブルT(OS)の第1行目の各欄に「#0/開/SSD1」なる情報が書き込まれることになる。同様に、図8に示すOS用参照テーブルT(OS)の第2行目は「SELECT(#1), AP11」なるコマンドにより書き込まれ、第3行目は「SELECT(#2), AP02」なるコマンドにより書き込まれたものである。このテーブルT(OS)における「開閉状態」欄は、当該チャネルの開閉状態、すなわち、特定のアプリケーションプログラムが対応づけられている場合には、チャネルが「開」状態であり、何らアプリケーションプログラムが対応づけられていない場合には、チャネルが「閉」状態であることを示す。
一方、SD用情報格納部122内には、各管理プログラムSSD1,SSD2,SSD3,ISDにそれぞれ対応するSD用参照テーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)が用意されている。図には、このうちSD用参照テーブルT(SSD1)の内容が例示されている。このSD用参照テーブルT(SSD1)は、管理プログラムSSD1が開設した暗号通信路の管理情報を記録するテーブルであり、図示のとおり、開設状態、アプリ名、チャネル番号、セッションキーの各欄が設けられている。図示されていないが、他のSD用参照テーブルT(SSD2),T(SSD3),T(ISD)の内容も同様である。
このSD用参照テーブルT(SSD1)の開設状態の欄には、管理プログラムSSD1が、現時点で、暗号通信路を「開設済」か「未開設」かのいずれかの状態が記録される。図示の例のように「開設済」になっている場合には、後続する各欄にも所定の情報が記録される。具体的には、図示の例の場合、アプリ名の欄には「AP11」、チャネル番号の欄には「#1」、セッションキーの欄には「xxxxxx」なる情報が記録されている。これは、管理プログラムSSD1が、現在、自己が管理する一般アプリAP11のために(図6の階層構造を参照)、暗号通信路を開設済であり、当該一般アプリAP11にはチャネル番号「#1」が対応づけられており、暗号通信にはセッションキー「xxxxxx」が用いられることを示している。開設状態の欄が「未開設」になっている場合は、後続する各欄には情報は格納されない。
このSD用参照テーブルT(SSD1)は、管理プログラムSSD1によって管理される。すなわち、このSD用参照テーブルT(SSD1)の内容は、管理プログラムSSD1によって記録され、管理プログラムSSD1によって参照されることになる。管理プログラムSSD1は、自己の管理下にある一般アプリAP11から論理チャネル#1を介した暗号通信路開設の依頼を受けると、セッションキー「xxxxxx」を発生させた上で、SD用参照テーブルT(SSD1)に図示のような記録を行う。そして、一般アプリAP11が論理チャネル#1を介して外部装置200と通信を行う際に、セッションキー「xxxxxx」を用いて、送信データの暗号化および受信データの復号を行うことになる。
ここに示す例は、1つの管理プログラムSDが同時に開設可能な暗号通信路の数が1つに制限されている例である。したがって、図示の例のように、管理プログラムSSD1は、一般アプリAP11のための暗号通信路を既に開設している場合は、自己のため、もしくは、管理下にある別なアプリケーションプログラムのために、新たな暗号通信路を開設することはできない。したがって、SD用参照テーブルT(SSD1)が図示のような記録状態において、自己の管理下にある別な一般アプリAP12から暗号通信路開設の依頼を受けた場合、管理プログラムSSD1は当該依頼を拒絶することになる。この場合、一般アプリAP12は、一般アプリAP11が暗号通信を終了するまで待機しなければならない。
図6に示す階層構造が定義されている場合、管理プログラムSSD1については、管理下にあるアプリケーションプログラムとして、2組の一般アプリAP11,AP12が存在する。したがって、管理プログラムSSD1は、一般アプリAP11,AP12のいずれかから依頼を受けた場合、依頼主のために暗号通信路開設処理を行う必要がある。しかしながら、同時に開設可能な暗号通信路の数が1つに制限されているため、一方からの依頼に基づいて暗号通信路を開設している場合は、他方からの依頼を受けることはできない。
図9は、アプリAP11について論理チャネル#1を指定して暗号通信路開設を指示し、所定の暗号通信を実行した後、別なアプリAP12について同じ論理チャネル#1を指定して暗号通信路開設を指示する場合について、外部装置200側の指示手順を示す流れ図である。
まず、ステップS11では、論理チャネル#1を指定してアプリAP11を選択するために、アプリケーション選択コマンド「SELECT(#1), AP11」を与える処理が行われる。
続いて、ステップS12では、アプリAP11について暗号通信路を開設するために、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」を与える処理が行われ、続いて、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える処理が行われる。なお、図4(b) ,(c) に示すように、実際には、暗号通信路開設コマンドには所定のパラメータが付加され、外部認証コマンドには所定のホスト認証コードが付加されるが、以下、これらパラメータや認証コードを省略した簡潔な説明を行うことにする。
これら各コマンドが正常に実行されると、情報処理装置100と外部装置200との間に、論理チャネル#1が割り当てられた暗号通信路が開設される。当該暗号通信路は、一般アプリAP11のために、管理プログラムSSD1が開設した暗号通信路ということになる。
実際には、こうして開設された暗号通信路を介して、一般アプリAP11と外部装置200側の所定のアプリケーションプログラムとの間で暗号通信が行われることになる。図9の流れ図の場合、ステップS12とステップS13との間に、暗号通信路を介した情報送受のプロセス(一般アプリAP11と外部装置200との間の情報送受)が存在するが、ここでは、説明の便宜上、この情報送受のプロセスは省略する。
一方、図9の流れ図におけるステップS13以降の手順は、一般アプリAP11との間の暗号通信路を介した情報送受が終了した後に、別な一般アプリAP12との間に新たな暗号通信路を開設して情報送受を行うためのプロセスである。
まず、ステップS13では、論理チャネル#1を指定してアプリAP12を選択するために、アプリケーション選択コマンド「SELECT(#1), AP12」を与える処理が行われる。この処理では、同じチャネル番号#1を指定して、新アプリAP12が選択されたため、旧アプリAP11の選択状態は解除されることになる。
次のステップS14では、アプリAP12について新たな暗号通信路を開設するために、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」を与える処理が行われ、続いて、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える処理が行われる。これら各コマンドが正常に実行されると、情報処理装置100と外部装置200との間に、論理チャネル#1が割り当てられた新たな暗号通信路が開設される。当該新たな暗号通信路は、一般アプリAP12のために、管理プログラムSSD1が開設した暗号通信路ということになる。
実際には、こうして開設された暗号通信路を介して、一般アプリAP12と外部装置200側の所定のアプリケーションプログラムとの間で暗号通信が行われることになる。図9の流れ図の場合、ステップS14に後続するステップとして、一般アプリAP12と外部装置200との間での暗号通信路を介した情報送受のプロセスが実行されることになる。
<4−2. 従来装置による正常処理手順>
続いて、図9に示すステップS11〜S14の各手順を実行した場合に、各プログラムでどのような処理が実行されるかを、プログラム間の信号の流れを追いながら説明する。図10は、これまで述べてきた従来装置における暗号通信路開設処理の正常処理手順を示すダイアグラムである。図の上段に示す各ブロックおよびこれら各ブロックから下方に伸びる各垂直線は、個々のプログラムを示しており、各垂直線の間を結ぶ水平矢印は、各プログラム間の信号の流れを示している。また、図の上下方向は、上から下に向かって経過する時間を示している。
具体的には、情報処理装置100(SIMカード11)内に用意されているプログラムとして、図の左側から順に、一般アプリAP12,一般アプリAP11,管理プログラムSSD1,OSプログラムの各ブロックが示されており、外部装置200(スマートフォン10)内に用意されているプログラムとして、図の右端に、ホスト側アプリのブロックが示されている。また、t0,t1,t2,t3,t4と記された水平の破線は、特定の時点を示しており、P1,P2,P3,P4は、個々のプロセスを示している。
ここで、時点t0〜t1の間に行われるプロセスP1は、図9のステップS11の手順に基づいて行われる「アプリAP11を選択」するための処理であり、時点t1〜t2の間に行われるプロセスP2は、図9のステップS12の手順に基づいて行われる「アプリAP11について暗号通信路開設」するための処理である。同様に、時点t2〜t3の間に行われるプロセスP3は、図9のステップS13の手順に基づいて行われる「アプリAP12を選択」するための処理であり、時点t3〜t4の間に行われるプロセスP4は、図9のステップS14の手順に基づいて行われる「アプリAP12について暗号通信路開設」するための処理である。
前述したとおり、実際には、プロセスP2とプロセスP3との間に、アプリAP11と外部装置200の間での暗号通信路を介した情報送受プロセスが存在し、プロセスP4の後に、アプリAP12と外部装置200の間での暗号通信路を介した情報送受プロセスが存在するが、便宜上、このダイアグラム上での図示は省略する。
図11以降にも、図10に類似するダイアグラムが示されているが、上述した各事項は、これら後続するダイアグラムについても同様である。なお、これらのダイアグラムは、各プログラム間の大まかな信号の流れを示すものであり、プログラム間の信号の流れをすべて網羅して示すものではない。したがって、実際には、図示されていない信号も存在する。たとえば、各プログラムは、自己と他のプログラムとの階層関係を確認する必要が生じた場合、適宜、図6に示すような階層構造をOSプログラムに問い合わせることができるが、このような問い合わせに係る信号の図示は省略されている。
図10のダイアグラムにおいて、まず、プロセスP1(図9の流れ図のステップS11に対応)では、外部装置200内のホスト側アプリから情報処理装置100に対して、アプリケーション選択コマンド「SELECT(#1), AP11」が与えられる。通常、SIMカード11のようなICカードの場合、外部装置から与えられたコマンドは、まず、OSプログラムによって受信され、必要に応じて、OSプログラムから所定のアプリケーションプログラムに引き渡される。また、アプリケーションプログラムからの応答(レスポンス)は、一旦、OSプログラムに引き渡され、OSプログラムから外部装置へと送信される。
したがって、図示の例の場合も、アプリケーション選択コマンド「SELECT(#1), AP11」は、まず、OSプログラムによって処理される。OSプログラムは、このアプリケーション選択コマンドを「論理チャネル#1を指定してアプリAP11を選択するコマンド」として解釈し、論理チャネル#1にアプリAP11を割り当てる処理を行うとともに、アプリAP11に対して選択が行われた旨を伝達する。図示の「Select処理」と記された左向き矢印は、このような伝達信号を示している。この伝達信号を受けたアプリAP11は、OSプログラムに対して、確認信号(図の右向き矢印)を返信する。そこで、OSプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
以上の処理により、論理チャネル#1にアプリAP11が対応づけられ、アプリAP11のために論理チャネル#1が「開」の状態になる。このような対応関係は、図8に例示したOS用参照テーブルT(OS)に記録される。したがって、以後、チャネル番号#1を伴うコマンドが送信されてきた場合、OSプログラムは、当該コマンドをアプリAP11宛のコマンドとして取り扱うことになる。
なお、Java Card(商標)やGlobalPlatform (登録商標)などの仕様では、論理チャネルを開いたり閉じたりするための「Manage Channel」コマンドが用意されているが、通常、アプリケーション選択コマンド「SELECT(#1), AP11」が論理チャネル#1を「開」にする指示と、アプリAP11を対応づける指示とを兼ねるため、図示の例のように、「Manage Channel」コマンドは省略されることが多い。
続くプロセスP2(図9の流れ図のステップS12に対応)では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。OSプログラムは、当該コマンドに含まれているチャネル番号「#1」を参照することにより、当該コマンドが、論理チャネル#1に対応づけられているアプリAP11宛のコマンドであると判断し、これをアプリAP11に引き渡す(図の左向き矢印)。当該コマンドを受け取ったアプリAP11は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムSSD1に対して、自己のための暗号通信路の開設を依頼する(図の右向き矢印)。
アプリAP11から暗号通信路開設依頼を受けた管理プログラムSSD1は、図8に例示したSD用参照テーブルT(SSD1)を参照することにより、現在の暗号通信路の開設状態を確認する処理を行う。ここに示す実施例の場合、同時に開設可能な暗号通信路の数は1つに制限されているため、図8に示す例のように、SD用参照テーブルT(SSD1)の開設状態が「開設済」となっていた場合には、アプリAP11からの依頼は拒絶せざるを得ない。
ここでは、説明の便宜上、開設状態が「未開設」になっていたものとしよう。この場合は、アプリAP11からの依頼に応じて、暗号通信路の開設を行うことができるので、新たにセッションキー「xxxxxx」を発生させて、SD用参照テーブルT(SSD1)に図8に示すような記録を行うとともに、暗号通信路の開設に必要な種々の処理を実行する。たとえば、以後、アプリAP11から外部装置200宛の送信データが発生した場合には、これをセッションキー「xxxxxx」で暗号化できる態勢を整え、外部装置から200からアプリAP11宛の受信データが発生した場合には、これをセッションキー「xxxxxx」で復号できる態勢を整える。
こうして、暗号通信路開設処理が正常に行われたら、その旨を依頼主であるアプリAP11に報告する(図の左向き矢印)。アプリAP11は、当該報告を受けて、暗号通信路開設コマンドが正常に実行された旨をOSプログラムに伝達する(図の右向き矢印)。そこで、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
なお、実際には、このプロセスP2の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われ、SD用参照テーブルT(SSD1)に対して「開設済」の記録がなされることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
こうして、プロセスP2が完了した時点t2では、管理プログラムSSD1によって、アプリAP11のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリAP11とホスト側アプリとの間で暗号通信が行われる。したがって、実際には、図示の時点t2の前後において、暗号通信路を介した情報送受プロセスが存在するが、図10のダイアグラムでは、当該情報送受プロセスの図示は省略されている。
さて、図9の流れ図に示す手順では、上述したように、アプリAP11との間で論理チャネル#1を介した暗号情報送受プロセスが完了したホスト側アプリが、今度は、別なアプリAP12との間で同じ論理チャネル#1を介した暗号情報送受プロセスを実行することになる。
まず、プロセスP3(図9の流れ図のステップS13に対応)では、外部装置200内のホスト側アプリから情報処理装置100に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる。OSプログラムは、このアプリケーション選択コマンドを「論理チャネル#1を指定してアプリAP12を選択するコマンド」として解釈し、論理チャネル#1にアプリAP12を割り当てる処理を行う。ただ、この時点では、図8のOS用参照テーブルT(OS)に示されているとおり、論理チャネル#1には既に旧アプリAP11が割り当てられている。
そこで、OSプログラムは、まず、旧アプリAP11に対して、チャネル番号#1との対応関係が解除された旨の解除通知(選択が解除された旨の通知)を与える。図示の「Deselect処理」と記された左向き矢印は、このような解除通知を示している。この解除通知を受けたアプリAP11は、自己を管理する管理プログラムSSD1に対して、選択が解除された旨の報告を行う。図示の「報告処理」と記された一点鎖線の右向き矢印は、このような選択解除の報告信号を示している。この報告信号は、管理プログラムSSD1に対して、SD用参照テーブルにおけるアプリAP11についての暗号通信路管理情報の消去を依頼する役割を果たす。なお、この「報告処理」の矢印が一点鎖線で示されているのは、後述するように、アプリAP11が、仕様上の取り決めを遵守していない欠陥プログラムであった場合に、この「報告処理」は実行されない可能性があることを示すためである。
この図10に示すダイアグラムは、アプリAP11が、仕様どおり「報告処理」を実行した場合の例である。この「報告処理」は、アプリAP11への論理チャネルの割り当てが解除されたことを報知するものであるから、当然、当該論理チャネル上に開設されていた暗号通信路を終了する必要がある。そこで、この報告を受けた管理プログラムSSD1は、これまで論理チャネル#1でアプリAP11のために開設していた暗号通信路を終了する処理を行う。具体的には、図8に示すSD用参照テーブルT(SSD1)の開設状態の欄を「未開設」とし、アプリ名,チャネル番号,セッションキーの各欄の情報を消去する。
一方、論理チャネルの割り当てが解除されたアプリAP11は、「Deselect処理」に応じた確認信号(図の実線の右向き矢印)をOSプログラムに返す。そこで、OSプログラムは、論理チャネル#1に新たに割り当てるプログラムとして選択された新アプリAP12に対して、選択が行われた旨を伝達する。図示の「Select処理」と記された左向き矢印は、このような伝達信号を示している。この伝達信号を受けた新アプリAP12は、OSプログラムに対して、確認信号(図の右向き矢印)を返信する。そこで、OSプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
以上の処理により、論理チャネル#1に新たにアプリAP12が対応づけられ、アプリAP12のために論理チャネル#1が「開」の状態になる。このような対応関係は、図8に例示したOS用参照テーブルT(OS)に記録される。すなわち、OSプログラムは、新アプリAP12から確認信号が得られた時点で、図8に示すOS用参照テーブルT(OS)の#1の行のアプリ名の欄を、「AP11」から「AP12」に書き換える処理を行うことになる。以後、チャネル番号#1を伴うコマンドが送信されてきた場合、OSプログラムは、当該コマンドをアプリAP12宛のコマンドとして取り扱うことになる。
続くプロセスP4(図9の流れ図のステップS14に対応)では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。OSプログラムは、当該コマンドに含まれているチャネル番号「#1」を参照することにより、当該コマンドが、論理チャネル#1に対応づけられているアプリAP12宛のコマンドであると判断し、これをアプリAP12に引き渡す(図の左向き矢印)。当該コマンドを受け取ったアプリAP12は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムSSD1に対して、自己のための暗号通信路の開設を依頼する(図の右向き矢印)。
アプリAP12から暗号通信路開設依頼を受けた管理プログラムSSD1は、SD用参照テーブルT(SSD1)を参照することにより、現在の暗号通信路の開設状態を確認する処理を行う。上述したとおり、この時点では、既にSD用参照テーブルT(SSD1)の開設状態の欄は「未開設」になっており、アプリ名,チャネル番号,セッションキーの各欄には情報は記録されていない。したがって、同時に開設可能な暗号通信路の数は1つに制限されているものの、現時点では、暗号通信路は「未開設」の状態なので、管理プログラムSSD1は、アプリAP12からの依頼に応じて、暗号通信路の開設を行うことができる。そこで、新たなセッションキー「yyyyyy」を発生させて、SD用参照テーブルT(SSD1)にしかるべき記録を行うとともに、暗号通信路の開設に必要な種々の処理を実行する。
こうして、暗号通信路開設処理が正常に行われたら、その旨を依頼主であるアプリAP12に報告する(図の左向き矢印)。アプリAP12は、当該報告を受けて、暗号通信路開設コマンドが正常に実行された旨をOSプログラムに伝達する(図の右向き矢印)。そこで、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。なお、前述したとおり、実際には、このプロセスP4の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
こうして、プロセスP4が完了した時点t4では、管理プログラムSSD1によって、アプリAP12のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリAP12とホスト側アプリとの間で暗号通信が行われる。図10のダイアグラムには示されていないが、実際には、図示の時点t4以降に、暗号通信路を介した情報送受プロセスが行われることになる。
このように、管理プログラムSSD1は、同時には1つの暗号通信路しか開設することができないが、プロセスP1,P2においてアプリP11のための暗号通信路を開設した後、当該暗号通信路を終了させた後であれば、プロセスP3,P4においてアプリP12のために新たな暗号通信路を開設することができる。
<4−3. 従来装置による欠陥処理手順>
上述した図10のダイアグラムに示されているとおりの正常処理手順が実行されれば、特に問題は生じない。しかしながら、アプリAP11が、欠陥プログラムであった場合、図10のプロセスP3に一点鎖線の右向き矢印で示されている「報告処理」は実行されない可能性がある。
すなわち、Java Card(商標)やGlobalPlatform (登録商標)などの仕様では、アプリケーションプログラムは、OSプログラムから、選択が解除された旨の通知(図10に「Deselect処理」と記された左向き矢印に相当する通知)を受け取った場合、自己を管理する管理プログラムSDに対して、選択が解除された旨の報告(図10に「報告処理」と記された一点鎖線の右向き矢印に相当する通知)を行うことになっている。したがって、アプリAP11が、この仕様に準拠した正常なプログラムであれば、一点鎖線の右向き矢印で示す「報告処理」が実行され、図10のダイアグラムに示されているとおりの正常処理手順が実行されることになる。
ところが、この「報告処理」が実行されないと、図11のダイアグラムに示されている欠陥処理手順が実行されることになる。すなわち、実際には旧アプリAP11の暗号通信が終了しているにもかかわらず、新アプリAP12のための暗号通信路が開設できない事態が生じる。
図11のダイアグラムの前半のプロセスP1,P2の処理は、図10のダイアグラムの前半のプロセスP1,P2の処理と全く同じである。しかしながら、図11のダイアグラムの後半のプロセスは若干異なる。ここでは、図11のダイアグラムの後半のプロセスを、図示のとおりプロセスP3′,P4′と呼ぶことにする。
プロセスP3′(図9の流れ図のステップS13に対応)において、外部装置200内のホスト側アプリから情報処理装置100に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる点は、図10のプロセスP3と全く同じである。そして、OSプログラムが、このアプリケーション選択コマンドを「論理チャネル#1を指定して新たなアプリAP12を選択するコマンド」として解釈し、旧アプリAP11に対して、図示の「Deselect処理」と記された解除通知を与える点も、図10のプロセスP3と全く同じである。
ただ、旧アプリAP11が、欠陥プログラムであった場合、この解除通知を受けたアプリAP11は、「Deselect処理」に応じた確認信号(図の右向き矢印)をOSプログラムに返すものの、管理プログラムSSD1に対する「報告処理」は怠ってしまうため、図に一点鎖線の右向き矢印で示す「報告処理」は実行されない。その結果、管理プログラムSSD1は、論理チャネル#1でアプリAP11のために開設している暗号通信路が終了したことを認識することができないため、SD用参照テーブルT(SSD1)の内容を、図8に示す「開設済」の状態にそのまま維持する。
一方、OSプログラムは、旧アプリAP11から、「Deselect処理」に応じた確認信号(図の実線の右向き矢印)を受け取った後、新アプリAP12に対して、選択が行われた旨を伝達する伝達信号(「Select処理」と記された左向き矢印)を与える。この伝達信号を受けた新アプリAP12は、OSプログラムに対して、確認信号(図の右向き矢印)を返信する。そこで、OSプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
また、OSプログラムは、新アプリAP12から確認信号が得られた時点で、図8に示すOS用参照テーブルT(OS)の#1の行のアプリ名の欄を、「AP11」から「AP12」に書き換える処理を行う。その結果、論理チャネル#1に新たにアプリAP12が対応づけられ、アプリAP12のために論理チャネル#1が「開」の状態になる。したがって、以後、チャネル番号#1を伴うコマンドが送信されてきた場合、OSプログラムは、当該コマンドをアプリAP12宛のコマンドとして取り扱うことになる。
続くプロセスP4′(図9の流れ図のステップS14に対応)では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。OSプログラムは、当該コマンドに含まれているチャネル番号「#1」を参照することにより、当該コマンドが、論理チャネル#1に対応づけられているアプリAP12宛のコマンドであると判断し、これをアプリAP12に引き渡す(図の左向き矢印)。当該コマンドを受け取ったアプリAP12は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムSSD1に対して、自己のための暗号通信路の開設を依頼する(図の右向き矢印)。
アプリAP12から暗号通信路開設依頼を受けた管理プログラムSSD1は、SD用参照テーブルT(SSD1)を参照することにより、現在の暗号通信路の開設状態を確認する処理を行う。ところが、上述したとおり、この時点では、SD用参照テーブルT(SSD1)は、図8に示す状態のままとなっており、管理プログラムSSD1は、現在、論理チャネル#1を用いてアプリAP11のために暗号通信路を開設済ということになっている。したがって、管理プログラムSDが同時に開設可能な暗号通信路の数は1つに制限されている状況では、管理プログラムSSD1は、アプリAP12からの暗号通信路開設依頼を拒絶せざるを得ない。
このため、暗号通信路開設依頼が拒絶される旨が、依頼主であるアプリAP12に報告される(図のNGと記された左向き矢印)。アプリAP12は、当該報告を受けて、暗号通信路開設コマンドが正常に実行されなかった旨をOSプログラムに伝達する(図のNGと記された右向き矢印)。そこで、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行されなかった旨の応答(図のNGと記された右向き矢印)を返す。
このように、図11に示す欠陥処理手順によると、実際には旧アプリAP11の暗号通信が終了しているにもかかわらず、新アプリAP12のための暗号通信路が開設できない事態が生じる。その原因は、アプリAP11が、所定の仕様に準拠しない欠陥プログラムであり、OSプログラムから解除通知(Deselect処理)を受けたにもかかわらず、その旨を管理プログラムSSD1に報告する「報告処理」を怠ったことにある。
既に述べたとおり、最近のICカードは、NFC(Near Field Communication)と呼ばれる近接距離通信用のインターフェイスを備えてきており、NFCを利用して通信を行う様々なアプリケーションプログラムが配布されるようになってきている。また、アプリケーションプログラムのベンダーも、大企業から中小企業に至るまで裾野が広がってきている。このため、配布されるアプリケーションプログラムの中には、「通信終了時にはその旨を管理プログラムに報告する」という仕様上の取り決めを遵守していない欠陥プログラムが散見されるようになってきており、そのような欠陥プログラムの数は益々増大してゆくものと予想される。このため、図11のダイアグラムに示すような問題の頻発が危惧される。
<4−4. 従来装置による各参照テーブルの変遷>
ここでは、図10のダイアグラムに示す正常処理手順および図11のダイアグラムに示す欠陥処理手順におけるOS用参照テーブルT(OS)とSD用参照テーブルT(SSD1)の変遷を示す。
図12〜図16は、図10のダイアグラムに示す正常処理手順の各時点t0〜t4におけるOS用参照テーブルT(OS)とSD用参照テーブルT(SSD1)の状態を示す図である。
まず、時点t0では、図12に示すとおり、OS用参照テーブルT(OS)は、チャネル番号#0のみが「開」状態となっており、論理チャネル#0に管理プログラムSSD1が割り当てられている。Java Card(商標)やGlobalPlatform (登録商標)などの仕様では、初期状態では論理チャネル#0のみが「開」状態となり、予め設定されているデフォルトのアプリケーションプログラムが割り当てられる。一方、SD用参照テーブルT(SSD1)は、未開設状態を示しており、開設状態の欄は「未開設」となっている。したがって、アプリ名,チャネル番号,セッションキーの各欄には情報は記録されていない(図では、便宜上「無」の文字を表示してある)。
次の時点t1では、図13に示すとおり、OS用参照テーブルT(OS)のチャネル番号#1が「開」状態に変更され、新たにアプリAP11が論理チャネル#1に割り当てられている。以下、説明の便宜上、各時点の参照テーブルの個々の欄のうち、当該時点の直前のプロセスで変更が生じた欄を太線枠で示す。図13に示すOS用参照テーブルT(OS)の場合、チャネル番号#1についての開閉状態が「開」に変更され、アプリ名が「AP11」に変更されている。これは、図10のダイアグラムにおける時点t1の直前のプロセスP1において、アプリケーション選択コマンド「SELECT(#1), AP11」に基づいて、チャネル番号#1を「開」状態として、アプリAP11を割り当てる処理が行われ、OSプログラムによってOS用参照テーブルT(OS)に対する書き換えが行われたためである。この時点t1では、SD用参照テーブルT(SSD1)の内容に変更は生じていない。
続く時点t2では、図14に示すとおり、OS用参照テーブルT(OS)の内容に変更は生じていないが、SD用参照テーブルT(SSD1)については、図に太線枠で示すとおり、すべての欄の情報が変更されている。すなわち、開設状態の欄は「開設済」,アプリ名の欄は「AP11」,チャネル番号の欄は「#1」,セッションキーの欄は「xxxxxx」に書き換えられている。これは、図10のダイアグラムにおける時点t2の直前のプロセスP2において、アプリAP11から管理プログラムSSD1に対して暗号通信路開設依頼があったためである。
図10のダイアグラムのプロセスP2に示されているとおり、アプリAP11から暗号通信路開設依頼を受けた管理プログラムSSD1は、その時点での開設状態を確認する処理を行うことになるが、この確認時点でのSD用参照テーブルT(SSD1)の状態は、図13に示す時点t1の状態であり、開設状態は「未開設」となっているため、管理プログラムSSD1は、アプリAP11からの暗号通信路開設依頼を受諾することなる。したがって、管理プログラムSSD1が、依頼どおり、論理チャネル#1を用いて、アプリAP11のための暗号通信路を開設し、新たにセッションキー「xxxxxx」を発生させる処理を行い、これに応じた情報をSD用参照テーブルT(SSD1)に書き込む処理を行う。図14に示す時点t2の状態におけるSD用参照テーブルT(SSD1)は、このような書き込み処理が行われた後の状態ということになる。
次の時点t3では、図15に示すとおり、OS用参照テーブルT(OS)のチャネル番号#1に対応するアプリ名の欄が「AP11」から「AP12」に変更されている。これは、図10のダイアグラムにおける時点t3の直前のプロセスP3において、アプリケーション選択コマンド「SELECT(#1), AP12」に基づいて、チャネル番号#1に割り当てられていた旧アプリAP11の選択を解除し、新たに新アプリAP12をチャネル番号#1に割り当てる処理が行われ、OSプログラムによる書き換えが行われたためである。
一方、図15に示すとおり、SD用参照テーブルT(SSD1)については、図に太線枠で示すとおり、すべての欄の情報が変更されている。すなわち、開設状態の欄は「未開設」になり,アプリ名,チャネル番号,セッションキーの各欄は、いずれも情報が消去されている。これは、図10のダイアグラムにおけるプロセスP3において、解除通知を受けたアプリAP11から管理プログラムSSD1に対して、選択が解除された旨を報告する「報告処理」(一点鎖線の右向き矢印)が実行され、この報告を受けた管理プログラムSSD1が、これまで論理チャネル#1でアプリAP11のために開設していた暗号通信路を終了する処理を行ったためである。すなわち、管理プログラムSSD1は、SD用参照テーブルT(SSD1)を「未開設」の状態に初期化し、図15に示す状態に書き換えることになる。
最後の時点t4では、図16に示すとおり、OS用参照テーブルT(OS)の内容に変更は生じていないが、SD用参照テーブルT(SSD1)については、図に太線枠で示すとおり、すべての欄の情報が変更されている。すなわち、開設状態の欄は「開設済」,アプリ名の欄は「AP12」,チャネル番号の欄は「#1」,セッションキーの欄は「yyyyyy」に書き換えられている。これは、図10のダイアグラムにおける時点t4の直前のプロセスP4において、アプリAP12から管理プログラムSSD1に対して暗号通信路開設依頼があったためである。
図10のダイアグラムのプロセスP4に示されているとおり、アプリAP12から暗号通信路開設依頼を受けた管理プログラムSSD1は、その時点での開設状態を確認する処理を行うことになるが、この確認時点でのSD用参照テーブルT(SSD1)の状態は、図15に示す時点t3の状態であり、開設状態は「未開設」となっているため、管理プログラムSSD1は、アプリAP12からの暗号通信路開設依頼を受諾することなる。したがって、管理プログラムSSD1が、依頼どおり、論理チャネル#1を用いて、アプリAP12のための暗号通信路を開設し、新たにセッションキー「yyyyyy」を発生させる処理を行い、これに応じた情報をSD用参照テーブルT(SSD1)に書き込む処理を行う。図16に示す時点t4の状態におけるSD用参照テーブルT(SSD1)は、このような書き込み処理が行われた後の状態ということになる。
以上、図10のダイアグラムに示す正常処理手順における時点t0〜t4に至るまでの各参照テーブルの変遷を、図12〜図16を参照しながら説明した。続いて、図11のダイアグラムに示す欠陥処理手順における時点t0〜t4′に至るまでの各参照テーブルの変遷を説明する。
前述したとおり、図11のダイアグラムに示す前半のプロセスP1,P2は、図10のダイアグラムに示す前半のプロセスP1,P2と全く同じである。したがって、図11のダイアグラムに示す欠陥処理手順における時点t0,t1,t2における各参照テーブルの状態は、それぞれ図12,図13,図14に示すとおりになる。これに対して、後半のプロセスは若干異なる。
まず、図11のダイアグラムに示す後半のプロセスP3′では、解除通知を受けたアプリAP11から管理プログラムSSD1に対して、選択が解除された旨の「報告処理」(一点鎖線の右向き矢印)が実行されない。このため、管理プログラムSSD1は、論理チャネル#1でアプリAP11のために開設していた暗号通信路が終了したことを認識できず、SD用参照テーブルT(SSD1)の初期化は行われない。このため、プロセスP3′が完了した時点t3′における各参照テーブルの状態は、図15に示す時点t3の状態ではなく、図17に示す時点t3′の状態になる。
すなわち、OS用参照テーブルT(OS)については、チャネル番号#1に割り当てられたプログラムが「AP11」から「AP12」に変更された状態になっているが、SD用参照テーブルT(SSD1)については、時点t2の状態がそのまま維持されることになる。その結果が、次のプロセスに影響を及ぼすことになる。
すなわち、図11のダイアグラムに示す後半のプロセスP4′では、アプリAP12から管理プログラムSSD1に対して暗号通信路開設依頼がある。この開設依頼を受けた管理プログラムSSD1は、その時点での開設状態を確認する処理を行うことになるが、この確認時点でのSD用参照テーブルT(SSD1)の状態は、図17に示す時点t3′の状態である。すなわち、開設状態の欄は「開設済」になっており、論理チャネル#1を用いて、アプリAP11のための暗号通信路が既に開設されていることが示されている。
したがって、管理プログラムSSD1は、アプリAP12からの暗号通信路開設依頼を拒絶することになり、最後の時点t4′における各参照テーブルの状態は、図17に示す時点t3′における状態と同じになる。こうして、実際には旧アプリAP11の暗号通信が終了しているにもかかわらず、新アプリAP12のための暗号通信路が開設できない事態が生じることは、既に説明したとおりである。
<<< §5. 本発明の第1の実施形態における暗号通信路開設処理 >>>
ここでは、本発明の第1の実施形態に係る情報処理装置における暗号通信路開設処理のプロセスを説明する。この第1の実施形態に係る情報処理装置100の基本構成は、§3で述べたとおりである。すなわち、図7に示すとおり、プログラム格納部110、データ格納部120、プログラム実行部130を備えている。そして、プログラム格納部110には、OSプログラム、管理プログラムSD、一般アプリプログラムAPが格納されており、データ格納部120には、OS用情報格納部121、SD用情報格納部122、AP用情報格納部123が設けられている。
ただ、OS用情報格納部121およびSD用情報格納部122に格納されるOS用参照テーブルT(OS)やSD用参照テーブルT(SD)の記録内容は、§4で述べた従来装置のものとは異なり、本発明独自の内容になっている。したがって、OSプログラムや管理プログラムSDによる処理手順も、§4で述べた従来装置のものとは異なり、本発明独自の処理手順になっている。
<5−1. 第1の実施形態による基本的な処理手法>
はじめに、ここで述べる第1の実施形態による基本的な処理手法の概念を、§4で述べた従来装置による基本的な処理手法の概念と対比させながら説明する。図18は、§4で述べた従来の一般的なSIMカード(情報処理装置)内に用意されるOS用参照テーブルおよびSD用参照テーブル(上段の図(a) )と、本発明の第1の実施形態に係るSIMカード(情報処理装置)内に用意されるOS用参照テーブルおよびSD用参照テーブル(下段の図(b) )との対比を示す図である。
上段の図(a) は、図8に示した従来装置における各参照テーブルであり、OS用情報格納部121内には、OS用参照テーブルT(OS)が格納され、SD用情報格納部122内には、SD用参照テーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)が格納されている。
OS用参照テーブルT(OS)は、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するためのテーブルであり、OSプログラムによって管理される。図示の例の場合、チャネル番号#0,#1,#2に対して、それぞれアプリケーションプログラム「SSD1」,「AP11」,「AP02」が対応することを示す対応関係が記録されている。
一方、各SD用参照テーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)は、各管理プログラムSDについての通信路管理情報を記録するためのテーブルであり、各管理プログラムSDによって管理される。図には、管理プログラムSSD1についてのSD用参照テーブルT(SSD1)の内容が例示されている。具体的には、現在、管理プログラムSSD1は、論理チャネル#1を用いて、アプリAP11のために暗号通信路を開設済であることが記録されている。
このように、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報を、OSプログラムによって管理されるOS用参照テーブルT(OS)に記録し、特定の管理プログラムSDについての通信路管理情報を、当該特定の管理プログラムSDによって管理されるSD用参照テーブルT(SD)に記録する、という処理方法は、非常に常識的かつ効率的な方法である。
なぜなら、OSプログラムは、外部装置から与えられたコマンドを、当該コマンドに含まれているチャネル番号に応じて、特定のアプリケーションプログラムに引き渡す処理を行う必要があるので、図18(a) に示すように、チャネル対応情報をOS用参照テーブルT(OS)に記録することは非常に常識的かつ効率的な方法である。また、暗号通信路の開設処理は、管理プログラムSDによって実行される処理であるので、図18(a) に示すように、通信路管理情報をSD用参照テーブルT(SD)に記録することは非常に常識的かつ効率的な方法である。このため、従来装置では、このような記録方法を採用して暗号通信路開設処理が行われていることは、既に§4で詳述したとおりである。
しかしながら、この従来装置による暗号通信路開設処理を採用した場合、アプリケーションプログラムの中に、選択が解除されたことを管理プログラムSDに報告する「報告処理」を怠る欠陥プログラムが存在した場合、新たな暗号通信路が開設できなくなる、という問題が生じることも、既に§4で述べた。
このような問題を解決するため、この§5で述べる本発明の第1の実施形態では、図18の上段の図(a) に示す各参照テーブルの代わりに、図18の下段の図(b) に示す各参照テーブルを用いることにする。ここでは、説明の便宜上、図18の下段左に示す参照テーブルを、上段左に示す参照テーブルと同様に「OS用参照テーブルT(OS)」と呼ぶことにし、下段右に示す参照テーブルを、上段右に示す参照テーブルと同様に「SD用参照テーブルT(SD)」と呼ぶことにする。下段右に示すとおり、「SD用参照テーブルT(SD)」としては、個々の管理プログラムごとに、それぞれテーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)が設けられることになるが、ここでは、管理プログラムSSD1についてのSD用参照テーブルT(SSD1)を代表例にとって、以下の説明を行うことにする。
上段の図18(a) から下段の図18(b) に向かう白抜き矢印は、従来の各参照テーブル(上段)に記録されていた情報と、本発明の各参照テーブル(下段)に記録されることになる情報との対応関係を示している。まず、上段左に示す従来のOS用参照テーブルT(OS)に記録されていた情報(チャネル対応情報)は、白抜き矢印で示すとおり、下段左に示す本発明のOS用参照テーブルT(OS)にそっくり盛り込まれている。
一方、上段右に示す従来のSD用参照テーブルT(SSD1)に記録されていた情報(通信路管理情報)のうちの一部(図に太線枠で囲った部分)は、白抜き矢印で示すとおり、実質的に下段左に示す本発明のOS用参照テーブルT(OS)に盛り込まれることになる。その結果、上段右に示す従来のSD用参照テーブルT(SSD1)に記録されていた情報(通信路管理情報)のうち、「セッションキー」の欄の情報だけが、白抜き矢印で示すとおり、下段右に示す本発明のSD用参照テーブルT(SSD1)に残されることになる。なお、SD用参照テーブルT(SSD1)に、チャネル番号「#1」の記録を残しておく運用を採用してもかまわない。この場合、SD用参照テーブルT(SSD1)には、チャネル番号とセッションキーが記録されることになる。
結局、下段左に示された本発明のOS用参照テーブルT(OS)は、上段左に示された従来のOS用参照テーブルT(OS)に、新たに「開設状態」の欄を設け、この「開設状態」の欄に、「特定の管理プログラムにより暗号通信路が開設済」という情報を記録するようにしたもの、ということができる。図示の例の場合、上段右に示されたSD用参照テーブルT(SSD1)のうちの太線枠で囲った部分の情報、すなわち、管理プログラムSSD1についての、開設状態「開設済」,アプリ名「AP11」,チャネル番号「#1」という情報は、下段左に示されているOS用参照テーブルT(OS)の第2行目に記録されている。このため、下段右に示されているSD用参照テーブルT(SSD1)には、「開設状態」,「アプリ名」,「チャネル番号」の各欄は廃止され(図では、説明の便宜上、太線枠に×印をつけて示した)、セッションキーの欄のみが残る結果となっている。
既に述べたとおり、SD用情報格納部122内には、個々の管理プログラムSSD1,SSD2,SSD3,ISDのそれぞれについてのSD用参照テーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)が格納されている。したがって、これらの各SD用参照テーブルT(SD)は、個々の管理プログラムごとに、それぞれ開設済の暗号通信路に利用するセッションキーを記録するテーブルとして機能することになる。各管理プログラムSDは、新たな暗号通信路の開設を行う際に、当該暗号通信路に利用するセッションキーを発生させ、これを各SD用参照テーブルT(SD)に書き込む処理を行う。
ここでは、図18の下段左に示す本発明の第1の実施形態に係るOS用参照テーブルT(OS)の「アプリ名」の欄と「開設状態」の欄に記録される情報を、「暗号通信路開設情報」と呼ぶことにする。この暗号通信路開設情報の本質的な役割は、その時点において、暗号通信路を開設済の管理プログラムを示すことにある。
一方、この下段左に示すOS用参照テーブルT(OS)の「チャネル番号」,「開閉状態」,「アプリ名」の各欄に記録される情報は、前述したとおり、上段左に示すOS用参照テーブルT(OS)に記録されていたチャネル対応情報である。このチャネル対応情報の本質的な役割は、その時点において、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すことにある。
なお、図示する実施例では、OS用参照テーブルT(OS)に「開閉状態」の欄が設けられているが、「アプリ名」の欄に何らかのアプリケーションプログラムを示す情報が記録されている場合は、「開閉状態」の欄は「開」になり、「アプリ名」の欄が「無」の場合は、「開閉状態」の欄は「閉」になるので、「開閉状態」の欄は本質的なものではなく、省略してもかまわない。同様に、SD用参照テーブルT(SSD1)の「開設状態」の欄には、「SSD1開設済」なる情報が記録されているが、この欄に管理プログラム名が記載されていれば「開設済」ということになるので、「開設済」という情報は必須ではなく、省略してもかまわない。ただ、ここでは、「未開設」との対比を行うため、「○○○開設済」という記載を行う例を示す。
ここに示す実施例の場合、暗号通信路開設情報は、チャネル対応情報の一部を構成する「アプリ名」の欄を利用することにより、チャネル対応情報によって対応関係が示されているアプリケーションプログラムのために暗号通信路を開設済の管理プログラムを示す情報として機能している。たとえば、図示の例の場合、下段左に示すOS用参照テーブルT(OS)の第2行目には、「#1」,「開」,「AP11」,「SSD1開設済」なる情報が対応づけて記録されているが、当該記録は、特定のチャネル番号「#1」と特定のアプリケーションプログラム「AP11」との対応関係を示すチャネル対応情報としての役割とともに、管理プログラム「SSD1」が、アプリ「AP11」のために暗号通信路を開設済であることを示す暗号通信路開設情報としての役割を果たす。
このOS用参照テーブルT(OS)は、OSプログラムによって管理される情報であり、OSプログラムによって書き込みや変更が行われ、OSプログラムによって参照される。したがって、この第1の実施形態に係る装置100に組み込まれているOSプログラムは、外部装置200から、特定の選択チャネル番号に特定の選択アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、このOS用参照テーブルT(OS)に、当該選択チャネル番号と当該選択アプリケーションプログラムとの対応関係を示すチャネル対応情報を記録する処理を行う。
このとき、当該選択アプリケーションプログラムに関する暗号通信路開設情報の記録を未開設状態に初期化する処理を行う。たとえば、OS用参照テーブルT(OS)が、図18の下段左に示す状態であるときに、選択チャネル番号#1に、新たな選択アプリケーションプログラムAP12を対応づけるためのアプリケーション選択コマンド「SELECT(#1), AP12」が与えられると、OSプログラムは、チャネル番号#1に対応する第2行目のアプリ名の欄を「AP11」から「AP12」に書き換えるとともに、第2行目の開設状態の欄に既存の「SSD1開設済」を消去して、「未開設」の状態に初期化する処理を行うことになる。
もちろん、この第1の実施形態に係る装置100に組み込まれているOSプログラムは、従来のOSプログラムと同様に、外部装置200から、特定のチャネル番号を指定した所定コマンドが与えられたときに、このOS用参照テーブルT(OS)に記録されているチャネル対応情報を参照することにより、指定されたチャネル番号に対応するアプリケーションプログラムを認識し、与えられた所定コマンドを、認識したアプリケーションプログラムに引き渡す処理も行う。
一方、この第1の実施形態で利用されるSD用参照テーブルT(SSD1)では、図18の下段右に×印を付して示すとおり、暗号通信路開設情報の記録は廃止されてしまったため、管理プログラムSSD1は、SD用参照テーブルT(SSD1)を参照しても、現在、自分自身が何らかの暗号通信路の開設を行っているのか否かを確認することができない。そこで、第1の実施形態に係る管理プログラムSSD1は、新たな暗号通信路の開設を行う際に、OSプログラムに対してOS用参照テーブルT(OS)に記録されている暗号通信路開設情報の内容(具体的には、管理プログラムSSD1が暗号通信路を開設済か否か)を問い合わせ、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。
前述したとおり、管理プログラムSSD1の管理下にあるアプリケーションプログラムは、OSプログラムから暗号通信路開設コマンドの引き渡しを受けた場合、自己を管理する管理プログラムSSD1に対して、自己のための暗号通信路開設依頼を行う。管理プログラムSSD1は、このような暗号通信路開設依頼を受けた場合、SD用参照テーブルT(SSD1)を参照しても、自己が暗号通信路を開設しているか否かを確認することができないので、OSプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う。
OSプログラムは、管理プログラムSSD1から、このような問い合わせがあると、OS用参照テーブルT(OS)内の暗号通信路開設情報を参照することにより、当該問い合わせについての回答を行う。そこで、管理プログラムSSD1は、得られた回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。
具体的には、管理プログラムSSD1に対して、同時に開設可能な暗号通信路の数が1つだけという制限が課されている場合、OSプログラムは、管理プログラムSSD1からの問い合わせがあったときに、当該管理プログラムSSD1が暗号通信路を「開設済」か「未開設」か、のいずれであるかを回答すればよい。管理プログラムSSD1は、「未開設」との回答が得られた場合には、新たな暗号通信路の開設を行い、「開設済」との回答が得られた場合には、新たな暗号通信路の開設を行わないことになる。
たとえば、図18に示す例において、管理プログラムSSD1がOSプログラムに対して暗号通信路開設情報の内容を問い合わせると、OSプログラムは、OS用参照テーブルT(OS)の第2行目の開設状態の欄に「SSD1開設済」なる記録がなされているため、「開設済」なる回答を行うことになる。そこで、当該回答を受けた管理プログラムSSD1は、新たな暗号通信路の開設を拒絶することになる。
これに対して、図18に示す例において、論理チャネル#2に割り当てられたアプリAP02に対して、暗号通信路開設コマンドが与えられた場合を考えてみよう。この場合、アプリAP02は、自己を管理する管理プログラムISD(図6の階層構造参照)に対して暗号通信路開設を依頼することになる。この依頼を受けた管理プログラムISDは、SD用参照テーブルT(ISD)を参照しても、自己が暗号通信路を開設しているか否かを確認することができないので、OSプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う。
問い合わせを受けたOSプログラムは、図18の下段左に示すOS用参照テーブルT(OS)の開設状態の各欄を検索するが、「ISD開設済」なる記録は見つからないため、「未開設」なる回答を行うことになる。そこで、当該回答を受けた管理プログラムISDは、依頼元となるアプリAP02のために暗号通信路を開設することになる。そして、管理プログラムISDは、OSプログラムに対して、アプリAP02のために暗号通信路を開設した旨を報告する。実際には、管理プログラムISDが、チャネル番号「#2」について暗号通信路を開設した旨を報告すれば十分であり、「アプリAP02」を示す情報は報告する必要はない。
OSプログラムは、当該報告に応じて、管理プログラムISDがアプリAP02のために暗号通信路を開設済であることを示す暗号通信路開設情報を、OS用参照テーブルT(OS)に書き込む。たとえば、管理プログラム「ISD」がチャネル番号「#2」について暗号通信路を開設した旨の報告があった場合、OS用参照テーブルT(OS)のチャネル番号「#2」に対応する行についての開設状態の欄に「ISD開設済」なる書き込みを行えばよい。
このように、本発明の第1の実施形態に係る情報処理装置の重要な特徴は、OSプログラムが管理するOS用参照テーブルT(OS)に、その時点で暗号通信路を開設済の管理プログラムを示す暗号通信路開設情報を記録する点にある。図18の下段左に示されているOS用参照テーブルT(OS)の場合、第2行目の欄に、「AP11」および「SSD1開設済」なる情報が記録されており、現時点で、管理プログラムSSD1が、アプリAP11のための暗号通信路を開設済みであることが示されている。
結局、管理プログラムSDが管理するSD用参照テーブルT(SD)には、当該管理プログラムSDが、現在、暗号通信路を開設しているのか否かを示す情報は記録されない。このため、管理プログラムSDは、新たな暗号通信路の開設を行う際に、OSプログラムに対して問い合わせを行う必要がある。しかしながら、論理チャネルの対応状態(チャネル対応情報)と、暗号通信路の開設状態(暗号通信路開設情報)とが、OS用参照テーブルT(OS)を用いてOSプログラムによって一元的に管理されるようになるため、選択が解除されたことを管理プログラムSDに報告する「報告処理」を怠る欠陥プログラムが存在した場合でも、新たな暗号通信路が開設できなくなる、という問題は生じない。以下、この点を、処理ダイアグラムを用いた具体的な事例について詳述する。
<5−2. 第1の実施形態による正常処理手順>
ここでは、上述した第1の実施形態に係る装置によって、図9に示すステップS11〜S14の各手順(§4の従来装置における暗号通信路開設処理の説明で例示した手順)を実行した場合に、各プログラムでどのような処理が実行されるかを、プログラム間の信号の流れを追いながら説明する。図19は、第1の実施形態に係る情報処理装置における暗号通信路開設処理の正常処理手順を示すダイアグラムである。これまでのダイアグラムと同様に、図の上段に示す各ブロックおよびこれら各ブロックから下方に伸びる各垂直線は、個々のプログラムを示しており、各垂直線の間を結ぶ水平矢印は、各プログラム間の信号の流れを示している。また、図の上下方向は、上から下に向かって経過する時間を示している。
このダイアグラムにおいて、プロセスP11は、図9のステップS11の「アプリAP11を選択」に対応し、プロセスP12は、ステップS12の「アプリAP11について暗号通信路開設」に対応し、プロセスP13は、ステップS13の「アプリAP12を選択」に対応し、プロセスP14は、ステップS14の「アプリAP12について暗号通信路開設」に対応する。前述したとおり、実際には、プロセスP12とプロセスP13との間に、アプリAP11と外部装置200の間での暗号通信路を介した情報送受プロセスが存在し、プロセスP14の後に、アプリAP12と外部装置200の間での暗号通信路を介した情報送受プロセスが存在する。
図19のダイアグラムにおいて、まず、プロセスP11では、外部装置200内のホスト側アプリから情報処理装置100に対して、アプリケーション選択コマンド「SELECT(#1), AP11」が与えられる。OSプログラムは、このアプリケーション選択コマンドを受けて、論理チャネル#1にアプリAP11を割り当てる処理を行う。すなわち、図18の下段左に示すOS用参照テーブルT(OS)に、論理チャネル#1とアプリAP11との対応関係がチャネル対応情報として記録される。具体的には、OS用参照テーブルT(OS)の第2行目の開閉状態の欄を「開」にし、アプリ名の欄に「AP11」を記録する。この時点では、開設状態の欄は「未開設」の状態になる(「○○開設済」になっていた場合は、「未開設」に初期化される)。
OSプログラムは、こうして、論理チャネル#1とアプリAP11との対応関係をOS用参照テーブルT(OS)に記録する処理を行うとともに、図示の「Select処理」と記された左向き矢印に示すように、アプリAP11に対して選択が行われた旨を伝達する。この伝達信号を受けたアプリAP11は、OSプログラムに対して、確認信号(図の右向き矢印)を返信する。そこで、OSプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
以後、チャネル番号#1を伴うコマンドが送信されてきた場合、OSプログラムは、当該コマンドをアプリAP11宛のコマンドとして取り扱うことになる。なお、図18の下段左に示すOS用参照テーブルT(OS)に記録されるチャネル対応情報の部分は、図18の上段左に示す従来のOS用参照テーブルT(OS)に記録されるチャネル対応情報に対応するものである。したがって、基本的には、図19に示すプロセスP11の処理は、図10に示す従来のプロセスP1の処理と同じ処理になる。
続くプロセスP12では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。OSプログラムは、当該コマンドに含まれているチャネル番号「#1」を参照することにより、当該コマンドが、論理チャネル#1に対応づけられているアプリAP11宛のコマンドであると判断し、これをアプリAP11に引き渡す(図の左向き矢印)。当該コマンドを受け取ったアプリAP11は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムSSD1に対して、自己のための暗号通信路の開設を依頼する(図の右向き矢印)。
§4で述べた従来装置の場合、図10のダイアグラムに示されているように、アプリAP11から暗号通信路開設依頼を受けた管理プログラムSSD1は、SD用参照テーブルT(SSD1)を参照することにより、現在の暗号通信路の開設状態を確認する処理を行うことになる。しかしながら、ここで述べる第1の実施形態の場合、図18の下段右に示すとおり、SD用参照テーブルT(SSD1)には、暗号通信路開設情報は記録されていない。
そこで、アプリAP11からの暗号通信路開設依頼を受けた管理プログラムSSD1は、OSプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う(図の「問合せ」と記された右向き矢印:実際には「SSD1」なるアプリ名を伴う問い合わせになる)。OSプログラムは、この問い合わせに応じて、OS用参照テーブルT(OS)内の暗号通信路開設情報を参照することにより、管理プログラムSSD1が暗号通信路を開設済であるか否かを確認し、当該問い合わせについての回答を行う。具体的には、OS用参照テーブルT(OS)の「開設状態」の欄を検索して、「SSD1開設済」なる記録が存在するか否かを確認する。
なお、SD用参照テーブルT(SSD1)に、チャネル番号「#1」を記録しておく運用を採用する場合には、OSプログラムに対して、「SSD1」なるアプリ名と「#1」なるチャネル番号を伴う問い合わせを行うようにすればよい。この場合、OSプログラムは、OS用参照テーブルT(OS)のチャネル番号の欄から「#1」を検索し、同じ行の開設状態の欄に「SSD1開設済」なる記録が存在するか否かを確認することになる。
この時点では、まだ「SSD1開設済」なる記録はなされていないので、OSプログラムは、管理プログラムSSD1に対して、「未開設」なる回答を行う(図の「未開設」と記された左向き矢印)。管理プログラムSSD1は、この回答に応じて、新たな暗号通信路の開設を行うか否かを決定する。上例の場合、「未開設」なる回答が得られ、管理プログラムSSD1は、現在、自分自身が暗号通信路を開設していないことが認識できるので、同時に開設可能な暗号通信路の数は1つという制限下においても、アプリAP11の依頼に基づいて暗号通信路を開設可能と判断する。そこで、新たにセッションキー「xxxxxx」を発生させて、SD用参照テーブルT(SSD1)に図18の下段右に示すような記録を行うとともに、暗号通信路の開設に必要な種々の処理を実行する。もちろん、OSプログラムから「開設済」なる回答が得られた場合は、アプリAP11からの暗号通信路開設依頼を拒絶し、暗号通信路の開設に必要な処理は実行しない。
管理プログラムSSD1は、暗号通信路開設処理の実行の有無を、OSプログラムとアプリAP11との双方に報告する(図の黒点からの左右両方への矢印)。OSプログラムは、管理プログラムSSD1から、暗号通信路を開設した旨の報告があったときには、当該報告に応じて、管理プログラムSSD1がアプリAP11のために暗号通信路を開設済であることを示す暗号通信路開設情報をOS用参照テーブルT(OS)に書き込む。
具体的には、管理プログラムSSD1から、「SSD1」および「AP11」という情報を含む開設済みの報告を行うようにすれば、OSプログラムは、図18の下段左に示すように、OS用参照テーブルT(OS)のアプリ名「AP11」が記録されている行の開設状態の欄に「SSD1開設済」なる情報を書き込むことができる。あるいは、SD用参照テーブルT(SSD1)に、チャネル番号「#1」を記録しておく運用を採用する場合には、OSプログラムに対して、「SSD1」および「#1」という情報を含む報告を行えば、OSプログラムは、やはり図18の下段左に示すように、OS用参照テーブルT(OS)のチャネル番号「#1」の行の開設状態の欄に「SSD1開設済」なる情報を書き込むことができる。
一方、アプリAP11は、管理プログラムSSD1からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をOSプログラムに伝達する(図の右向き矢印)。そこで、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。図示されていないが、もし、管理プログラムSSD1から暗号通信路開設依頼を拒絶する旨の報告があった場合には、アプリAP11は、暗号通信路開設コマンドの実行に失敗した旨をOSプログラムに伝達し、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが失敗した旨のNG応答を返すことになる。
なお、実際には、このプロセスP12の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムSSD1からOSプログラムおよびアプリAP11の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
こうして、プロセスP12が完了した時点t12では、管理プログラムSSD1によって、アプリAP11のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリAP11とホスト側アプリとの間で暗号通信が行われる。したがって、実際には、図示の時点t12の前後において、暗号通信路を介した情報送受プロセスが存在するが、図19のダイアグラムでは、当該情報送受プロセスの図示は省略されている。
図19に示すダイアグラムの後半の手順は、アプリAP11との間で論理チャネル#1を介した暗号情報送受プロセスが完了したホスト側アプリが、今度は、別なアプリAP12との間で同じ論理チャネル#1を介した暗号情報送受プロセスを実行する手順である。
まず、プロセスP13では、外部装置200内のホスト側アプリから情報処理装置100に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる。OSプログラムは、このアプリケーション選択コマンドを「論理チャネル#1を指定してアプリAP12を選択するコマンド」として解釈し、論理チャネル#1にアプリAP12を割り当てる処理を行う。ただ、この時点では、図18の下段左に示すOS用参照テーブルT(OS)に示されているとおり、論理チャネル#1には既に旧アプリAP11が割り当てられている。
このように、外部装置200から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、OSプログラムは、当該旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与える。
図示の例の場合、OSプログラムは、まず、旧アプリAP11に対して、チャネル番号#1との対応関係が解除された旨の解除通知(選択が解除された旨の通知)を与える。図示の「Deselect処理」と記された左向き矢印は、このような解除通知を示している。この解除通知を受けたアプリAP11が、仕様を遵守した正常なプログラムであれば、自己を管理する管理プログラムSSD1に対して、選択が解除された旨の報告を行う。図示の「報告処理」と記された一点鎖線の右向き矢印は、このような選択解除の報告信号を示している(後述するように、アプリAP11が、仕様を遵守しない欠陥プログラムの場合、この「報告処理」は行われない。)。
ここでは、AP11が、仕様を遵守した正常なプログラムであり、上記「報告処理」が行われたものとしよう。当該報告を受けた管理プログラムSSD1は、これまで論理チャネル#1でアプリAP11のために開設していた暗号通信路を終了する処理を行う。もっとも、ここで述べる実施例の場合、SD用参照テーブルT(SSD1)には、図18の下段右に示すように、セッションキーが記録されているだけである。したがって、自己の管理下にある旧アプリAP11から解除通知があった旨の報告を受けた管理プログラムSSD1は、SD用参照テーブルT(SSD1)に書き込まれている旧アプリAP11についてのセッションキー「xxxxxx」を消去する処理を行う。このようなセッションキーの消去処理は、本発明を実施する上で必須の処理ではないが、セッションキーが漏洩する可能性を低減させる効果があるため、実用上は行うようにするのが好ましい。
一方、論理チャネルの割り当てが解除されたアプリAP11は、「Deselect処理」に応じた確認信号(図の実線の右向き矢印)をOSプログラムに返す。そこで、OSプログラムは、論理チャネル#1に新たに割り当てるプログラムとして選択された新アプリAP12に対して、選択が行われた旨を伝達する。図示の「Select処理」と記された左向き矢印は、このような伝達信号を示している。この伝達信号を受けた新アプリAP12は、OSプログラムに対して、確認信号(図の右向き矢印)を返信する。そこで、OSプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
以上の処理により、論理チャネル#1に新たにアプリAP12が対応づけられ、アプリAP12のために論理チャネル#1が「開」の状態になる。このような対応関係は、図18の下段左に示すOS用参照テーブルT(OS)に記録される。すなわち、OSプログラムは、新アプリAP12から確認信号が得られた時点で、OS用参照テーブルT(OS)の#1の行のアプリ名の欄を、「AP11」から「AP12」に書き換える処理を行い、チャネル番号#1と新アプリAP12との対応関係を示すチャネル対応情報を記録する。
しかも、OSプログラムは、このとき新アプリAP12に関する暗号通信路開設情報の記録を未開設状態に初期化する。すなわち、図18の下段左に示すOS用参照テーブルT(OS)の第2行目に記録されている「#1,開,AP11,SSD1開設済」なる情報は、アプリ名の欄が「AP11」から「AP12」に書き換えられるとともに、開設状態の欄が初期化されて、「SSD1開設済」から「未開設」に書き換えらえる。以後、チャネル番号#1を伴うコマンドが送信されてきた場合、OSプログラムは、当該コマンドをアプリAP12宛のコマンドとして取り扱うことになる。
続くプロセスP14では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。OSプログラムは、当該コマンドに含まれているチャネル番号「#1」を参照することにより、当該コマンドが、論理チャネル#1に対応づけられているアプリAP12宛のコマンドであると判断し、これをアプリAP12に引き渡す(図の左向き矢印)。当該コマンドを受け取ったアプリAP12は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムSSD1に対して、自己のための暗号通信路の開設を依頼する(図の右向き矢印)。
アプリAP12からの暗号通信路開設依頼を受けた管理プログラムSSD1は、OSプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う(図の「問合せ」と記された右向き矢印:実際には「SSD1」なるアプリ名を伴う問い合わせになる)。OSプログラムは、この問い合わせに応じて、OS用参照テーブルT(OS)内の暗号通信路開設情報を参照することにより、管理プログラムSSD1が暗号通信路を開設済であるか否かを確認し、当該問い合わせについての回答を行う。具体的には、OS用参照テーブルT(OS)の「開設状態」の欄を検索して、「SSD1開設済」なる記録が存在するか否かを確認する。
ここでも、SD用参照テーブルT(SSD1)に、チャネル番号「#1」を記録しておく運用を採用する場合には、OSプログラムに対して、「SSD1」なるアプリ名と「#1」なるチャネル番号を伴う問い合わせを行うようにすればよい。この場合、OSプログラムは、OS用参照テーブルT(OS)のチャネル番号の欄から「#1」を検索し、同じ行の開設状態の欄に「SSD1開設済」なる記録が存在するか否かを確認することになる。
前述したとおり、この時点で、OS用参照テーブルT(OS)の第2行目に記録は「#1,開,AP12,未開設」なる情報に書き換えられているため、OSプログラムは、管理プログラムSSD1に対して、「未開設」なる回答を行う(図の「未開設」と記された左向き矢印)。管理プログラムSSD1は、「未開設」なる回答を受けることにより、アプリAP12からの依頼に応じて、新たな暗号通信路の開設処理を実行する。具体的には、新たなセッションキー「yyyyyy」を発生させて、SD用参照テーブルT(SSD1)のセッションキーの欄に書き込むとともに、暗号通信路の開設に必要な種々の処理を実行する。
管理プログラムSSD1は、暗号通信路開設処理を実行した旨を、OSプログラムとアプリAP12との双方に報告する(図の黒点からの左右両方への矢印)。OSプログラムは、管理プログラムSSD1からの暗号通信路を開設した旨の報告を受けて、管理プログラムSSD1がアプリAP12のために暗号通信路を開設済であることを示す暗号通信路開設情報をOS用参照テーブルT(OS)に書き込む。
具体的には、管理プログラムSSD1から、「SSD1」および「AP12」という情報を含む開設済みの報告を行うようにすれば、OSプログラムは、図18の下段左に示すOS用参照テーブルT(OS)のアプリ名に新たに「AP12」が記録されている行の開設状態の欄に、「SSD1開設済」なる情報を書き込むことができる。あるいは、SD用参照テーブルT(SSD1)に、チャネル番号「#1」を記録しておく運用を採用する場合には、OSプログラムに対して、「SSD1」および「#1」という情報を含む報告を行えば、OSプログラムは、やはり同様の情報を書き込むことができる。
一方、アプリAP12は、管理プログラムSSD1からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をOSプログラムに伝達する(図の右向き矢印)。そこで、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
なお、実際には、このプロセスP14の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムSSD1からOSプログラムおよびアプリAP12の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
こうして、プロセスP14が完了した時点t14では、管理プログラムSSD1によって、アプリAP12のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリAP12とホスト側アプリとの間で暗号通信が行われる。図19のダイアグラムには示されていないが、実際には、図示の時点t14以降に、暗号通信路を介した情報送受プロセスが行われることになる。
このように、管理プログラムSSD1は、同時には1つの暗号通信路しか開設することができないが、プロセスP11,P12においてアプリP11のための暗号通信路を開設した後、当該暗号通信路を終了させた後であれば、プロセスP13,P14においてアプリP12のために新たな暗号通信路を開設することができる。
<5−3. 第1の実施形態による欠陥処理手順>
上述した図19に示すダイアグラムは、アプリAP11が、仕様を遵守した正常なプログラムであった場合の正常処理手順であるが、既に述べたとおり、アプリケーションプログラムの中には、仕様を遵守しない欠陥プログラムが含まれている可能性がある。上例の場合において、アプリAP11が、そのような欠陥プログラムであった場合、図19のプロセスP13に一点鎖線の右向き矢印で示されている「報告処理」は実行されない可能性がある。そこで、以下、アプリAP11が欠陥プログラムであり、上記「報告処理」が実行されない場合の処理手順を、図20のダイアグラムを参照しながら説明する。
図20のダイアグラムの前半のプロセスP11,P12の処理は、図19のダイアグラムの前半のプロセスP11,P12の処理と全く同じである。しかしながら、図20のダイアグラムの後半のプロセスは若干異なる。ここでは、図20のダイアグラムの後半のプロセスを、図示のとおりプロセスP13′,P14′と呼ぶことにする。
プロセスP13′において、外部装置200内のホスト側アプリから情報処理装置100に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる点は、図19のプロセスP13と全く同じである。そして、OSプログラムが、このアプリケーション選択コマンドを「論理チャネル#1を指定して新たなアプリAP12を選択するコマンド」として解釈し、旧アプリAP11に対して、図示の「Deselect処理」と記された解除通知を与える点も、図19のプロセスP13と全く同じである。
ただ、旧アプリAP11が、欠陥プログラムであった場合、この解除通知を受けたアプリAP11は、「Deselect処理」に応じた確認信号(図の実線の右向き矢印)をOSプログラムに返すものの、管理プログラムSSD1に対する「報告処理」は怠ってしまうため、図に一点鎖線の右向き矢印で示す「報告処理」は実行されない。このため、管理プログラムSSD1は、現在開設している暗号通信路が終了したことを認識することができないため、SD用参照テーブルT(SSD1)の内容を、図18の下段右に示す状態に維持する。
もっとも、この第1の実施形態の場合、SD用参照テーブルT(SSD1)には、暗号通信路の開設状態や開設対象となるアプリ名は記録されていないので、旧アプリAP11の選択が解除された後にも、旧アプリAP11のための暗号通信路開設に関係する情報として残るのは、セッションキー「xxxxxx」だけである。
一方、OSプログラムは、旧アプリAP11から、「Deselect処理」に応じた確認信号(図の右向き矢印)を受け取った後、新アプリAP12に対して、選択が行われた旨を伝達する伝達信号(「Select処理」と記された左向き矢印)を与える。この伝達信号を受けた新アプリAP12は、OSプログラムに対して、確認信号(図の右向き矢印)を返信する。そこで、OSプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
また、OSプログラムは、新アプリAP12から確認信号が得られた時点で、OS用参照テーブルT(OS)の#1の行のアプリ名の欄を、「AP11」から「AP12」に書き換える処理を行い、チャネル番号#1と新アプリAP12との対応関係を示すチャネル対応情報を記録する。このとき、OSプログラムは、新アプリAP12に関する暗号通信路開設情報の記録を未開設状態に初期化する。すなわち、図18の下段左に示すOS用参照テーブルT(OS)の第2行目に記録されている「#1,開,AP11,SSD1開設済」なる情報は、アプリ名の欄が「AP11」から「AP12」に書き換えられるとともに、開設状態の欄が初期化されて、「SSD1開設済」から「未開設」に書き換えらえる。以後、チャネル番号#1を伴うコマンドが送信されてきた場合、OSプログラムは、当該コマンドをアプリAP12宛のコマンドとして取り扱うことになる。
続くプロセスP14′では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。OSプログラムは、当該コマンドに含まれているチャネル番号「#1」を参照することにより、当該コマンドが、論理チャネル#1に対応づけられているアプリAP12宛のコマンドであると判断し、これをアプリAP12に引き渡す(図の左向き矢印)。当該コマンドを受け取ったアプリAP12は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムSSD1に対して、自己のための暗号通信路の開設を依頼する(図の右向き矢印)。
アプリAP12からの暗号通信路開設依頼を受けた管理プログラムSSD1は、OSプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う(図の「問合せ」と記された右向き矢印:実際には「SSD1」なるアプリ名を伴う問い合わせになる)。OSプログラムは、この問い合わせに応じて、OS用参照テーブルT(OS)内の暗号通信路開設情報を参照することにより、管理プログラムSSD1が暗号通信路を開設済であるか否かを確認し、当該問い合わせについての回答を行う。具体的には、OS用参照テーブルT(OS)の「開設状態」の欄を検索して、「SSD1開設済」なる記録が存在するか否かを確認する。
ここでも、SD用参照テーブルT(SSD1)に、チャネル番号「#1」を記録しておく運用を採用する場合には、OSプログラムに対して、「SSD1」なるアプリ名と「#1」なるチャネル番号を伴う問い合わせを行うようにすればよい。この場合、OSプログラムは、OS用参照テーブルT(OS)のチャネル番号の欄から「#1」を検索し、同じ行の開設状態の欄に「SSD1開設済」なる記録が存在するか否かを確認することになる。
前述したとおり、この時点で、OS用参照テーブルT(OS)の第2行目に記録は「#1,開,AP12,未開設」なる情報に書き換えられているため、OSプログラムは、管理プログラムSSD1に対して、「未開設」なる回答を行う(図の「未開設」と記された左向き矢印)。管理プログラムSSD1は、「未開設」なる回答を受けることにより、アプリAP12からの依頼に応じて、新たな暗号通信路の開設処理を実行する。具体的には、新たなセッションキー「yyyyyy」を発生させて、SD用参照テーブルT(SSD1)のセッションキーの欄の記録を書き換えるとともに、暗号通信路の開設に必要な種々の処理を実行する。
なお、図19に示すダイアグラムの場合、正常なプログラムAP11から「報告処理」(一点鎖線の矢印)が行われた時点で、管理プログラムSSD1は、SD用参照テーブルT(SSD1)に書き込まれている旧アプリAP11についてのセッションキー「xxxxxx」を消去する処理を行うが、図20に示すダイアグラムの場合、欠陥プログラムAP11からの「報告処理」は行われないため、SD用参照テーブルT(SSD1)には、旧アプリAP11についての旧セッションキー「xxxxxx」が残っている。したがって、管理プログラムSSD1は、この旧セッションキー「xxxxxx」を新セッションキー「yyyyyy」に書き換える処理を行うことになる。
続いて、管理プログラムSSD1は、暗号通信路開設処理を実行した旨を、OSプログラムとアプリAP12との双方に報告する(図の黒点からの左右両方への矢印)。OSプログラムは、管理プログラムSSD1からの暗号通信路を開設した旨の報告を受けて、管理プログラムSSD1がアプリAP12のために暗号通信路を開設済であることを示す暗号通信路開設情報をOS用参照テーブルT(OS)に書き込む。
具体的には、管理プログラムSSD1から、「SSD1」および「AP12」という情報を含む開設済みの報告を行うようにすれば、OSプログラムは、図18の下段左に示すOS用参照テーブルT(OS)のアプリ名に新たに「AP12」が記録されている行の開設状態の欄に「SSD1開設済」なる情報を書き込むことができる。あるいは、SD用参照テーブルT(SSD1)に、チャネル番号「#1」を記録しておく運用を採用する場合には、OSプログラムに対して、「SSD1」および「#1」という情報を含む報告を行えば、OSプログラムは、やはり同様の情報を書き込むことができる。
一方、アプリAP12は、管理プログラムSSD1からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をOSプログラムに伝達する(図の右向き矢印)。そこで、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
なお、実際には、このプロセスP14′の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムSSD1からOSプログラムおよびアプリAP12の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
こうして、プロセスP14′が完了した時点t14′では、管理プログラムSSD1によって、アプリAP12のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリAP12とホスト側アプリとの間で暗号通信が行われる。図20のダイアグラムには示されていないが、実際には、図示の時点t14′以降に、暗号通信路を介した情報送受プロセスが行われることになる。
このように、本発明の第1の実施形態では、アプリAP11が欠陥プログラムであり、選択が解除されたことを管理プログラムSSD1に報告する「報告処理」を怠った場合でも、暗号通信路開設情報がOS用参照テーブルに格納されているため、アプリAP11の暗号通信が終了し、アプリAP12が新たに選択された場合、新アプリAP12のための暗号通信路を支障なく開設することができるようになる。
<5−4. 第1の実施形態による各参照テーブルの変遷>
ここでは、図19のダイアグラムに示す正常処理手順および図20のダイアグラムに示す欠陥処理手順におけるOS用参照テーブルT(OS)とSD用参照テーブルT(SSD1)の変遷を示す。
図21〜図25は、図19のダイアグラムに示す正常処理手順の各時点t10〜t14におけるOS用参照テーブルT(OS)とSD用参照テーブルT(SSD1)の状態を示す図である。
まず、時点t10では、図21に示すとおり、OS用参照テーブルT(OS)は、チャネル番号#0のみが「開」状態となっており、論理チャネル#0に管理プログラムSSD1が割り当てられている。一方、SD用参照テーブルT(SSD1)は、未開設状態を示しており、セッションキーの欄は「無」となっている。なお、図には、従来のSD用参照テーブルT(SSD1)との対比のため、「開設状態」,「アプリ名」,「チャネル番号」の各欄が示されているが、図18の下段右の図に×印を付して示すとおり、第1の実施形態の場合、SD用参照テーブルT(SSD1)には、これらの各欄は設けられていない(図では、これらの各欄には斜線を施した)。
次の時点t11では、図22に示すとおり、OS用参照テーブルT(OS)のチャネル番号#1が「開」状態に変更され、新たにアプリAP11が論理チャネル#1に割り当てられている。ここでも、説明の便宜上、各時点の参照テーブルの個々の欄のうち、当該時点の直前のプロセスで変更が生じた欄を太線枠で示す。図22に示すOS用参照テーブルT(OS)の場合、チャネル番号#1についての開閉状態が「開」に変更され、アプリ名が「AP11」に変更されている。これは、図19のダイアグラムにおける時点t11の直前のプロセスP11において、アプリケーション選択コマンド「SELECT(#1), AP11」に基づいて、チャネル番号#1を「開」状態として、アプリAP11を割り当てる処理が行われ、OSプログラムによってOS用参照テーブルT(OS)に対する書き換えが行われたためである。この時点t11では、SD用参照テーブルT(SSD1)の内容に変更は生じていない。
続く時点t12では、図23に示すとおり、各参照テーブルの内容の一部に変更が加えられている。まず、OS用参照テーブルT(OS)については、第2行目の開設状態の欄が、「未開設」から「SSD1開設済」に書き換えられている。これは、図19のダイアグラムにおける時点t12の直前のプロセスP12において、アプリAP11から管理プログラムSSD1に対して暗号通信路開設依頼があり、当該依頼に応じて、管理プログラムSSD1がアプリAP11のために暗号通信路を開設したためである。
図19のダイアグラムにおけるプロセスP12では、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」に基づいて、アプリAP11から管理プログラムSSD1に対する暗号通信路開設依頼がなされ、管理プログラムSSD1からOSプログラムに対して問い合わせがなされる。この問い合わせの時点では、OS用参照テーブルT(OS)の状態は、図22に示す状態(時点t11の状態)になっているので、OSプログラムは、この問い合わせに応じて「未開設」なる回答を行う。
その結果、管理プログラムSSD1によって、アプリAP11のための暗号通信路の開設が行われる。このため、セッションキー「xxxxxx」が発生され、図23のSD用参照テーブルT(SSD1)に示すように、セッションキーの欄に「xxxxxx」が書き込まれる。一方、OSプログラムには、管理プログラムSSD1から、「論理チャネル#1を用いて暗号通信路を開設した旨」の報告がなされるので、図23のOS用参照テーブルT(OS)に示すように、論理チャネル#1の行の開設状態の欄に、「SSD1開設済」が書き込まれる。図23に示す時点t12の状態におけるOS用参照テーブルT(OS)およびSD用参照テーブルT(SSD1)は、このような書き込み処理が行われた後の状態ということになる。
次の時点t13では、図24に示すとおり、OS用参照テーブルT(OS)のチャネル番号#1に対応するアプリ名の欄が「AP11」から「AP12」に変更され、その右側の開設状態の欄は初期化され「未開設」に変更されている。これは、図19のダイアグラムにおける時点t13の直前のプロセスP13において、アプリケーション選択コマンド「SELECT(#1), AP12」に基づいて、チャネル番号#1に割り当てられていた旧アプリAP11の選択を解除し、新たに新アプリAP12をチャネル番号#1に割り当てる処理が行われ、OSプログラムによる書き換えが行われたためである。
一方、SD用参照テーブルT(SSD1)については、図に太線枠で示すとおり、セッションキーの欄の情報が消去され、「無」になっている。これは、図19のダイアグラムにおけるプロセスP13において、解除通知を受けたアプリAP11から管理プログラムSSD1に対して、選択が解除された旨を報告する「報告処理」(一点鎖線の右向き矢印)が実行され、この報告を受けた管理プログラムSSD1が、これまで開設していた暗号通信路に用いるセッションキー「xxxxxx」を消去する処理を行ったためである。
最後の時点t14では、図25に示すとおり、各参照テーブルの内容の一部に変更が加えられている。まず、OS用参照テーブルT(OS)については、第2行目の開設状態の欄が、「未開設」から「SSD1開設済」に書き換えられている。これは、図19のダイアグラムにおけるプロセスP14において、アプリAP12から管理プログラムSSD1に対して暗号通信路開設依頼があり、当該依頼に応じて、管理プログラムSSD1がアプリAP12のために新たな暗号通信路を開設したためである。
図19のダイアグラムにおけるプロセスP14では、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」に基づいて、アプリAP12から管理プログラムSSD1に対する暗号通信路開設依頼がなされ、管理プログラムSSD1からOSプログラムに対して問い合わせがなされる。この問い合わせの時点では、OS用参照テーブルT(OS)の状態は、図24に示す状態(時点t13の状態)になっているので、OSプログラムは、この問い合わせに応じて「未開設」なる回答を行う。
その結果、管理プログラムSSD1によって、アプリAP12のための暗号通信路の開設が行われる。このため、新たなセッションキー「yyyyyy」が発生され、図25のSD用参照テーブルT(SSD1)に示すように、セッションキーの欄に「yyyyyy」が書き込まれる。一方、OSプログラムには、管理プログラムSSD1から、「論理チャネル#1を用いて暗号通信路を開設した旨」の報告がなされるので、図25のOS用参照テーブルT(OS)に示すように、論理チャネル#1の行の開設状態の欄に、「SSD1開設済」が書き込まれる。図25に示す時点t14の状態におけるOS用参照テーブルT(OS)およびSD用参照テーブルT(SSD1)は、このような書き込み処理が行われた後の状態ということになる。
以上、図19のダイアグラムに示す正常処理手順における時点t10〜t14に至るまでの各参照テーブルの変遷を、図21〜図25を参照しながら説明した。続いて、図20のダイアグラムに示す欠陥処理手順における時点t10〜t14′に至るまでの各参照テーブルの変遷を説明する。
前述したとおり、図20のダイアグラムに示す前半のプロセスP11,P12は、図19のダイアグラムに示す前半のプロセスP11,P12と全く同じである。したがって、図20のダイアグラムに示す欠陥処理手順における時点t10,t11,t12における各参照テーブルの状態は、それぞれ図21,図22,図23に示すとおりになる。これに対して、後半のプロセスは若干異なる。
まず、図20のダイアグラムに示す後半のプロセスP13′では、解除通知を受けたアプリAP11から管理プログラムSSD1に対して、選択が解除された旨の「報告処理」(一点鎖線の右向き矢印)が実行されない。このため、管理プログラムSSD1は、これまで開設していた暗号通信路が終了したことを認識できないので、SD用参照テーブルT(SSD1)に記録されていたセッションキー「xxxxxx」は消去されず、そのまま残ることになる。したがって、プロセスP13′が完了した時点t13′における各参照テーブルの状態は、図24に示す時点t13の状態ではなく、図26に示す時点t13′の状態になる。
すなわち、OS用参照テーブルT(OS)については、チャネル番号#1に割り当てられたプログラムが「AP11」から「AP12」に変更された状態になっているが、SD用参照テーブルT(SSD1)については、時点t12の状態がそのまま維持され、セッションキー「xxxxxx」が残った状態になる。このように、旧アプリAP11についての暗号通信が既に終了しているにもかかわらず、そのセッションキー「xxxxxx」が残っていることは、漏洩の危険性の見地から、決して好ましいことではない。しかしながら、旧アプリAP11のセッションキー「xxxxxx」が残っていたとしても、新アプリAP12のための暗号通信路を開設する処理には支障は生じない。
すなわち、図20のダイアグラムに示す後半のプロセスP14′では、アプリAP12から管理プログラムSSD1に対して暗号通信路開設依頼があり、この開設依頼を受けた管理プログラムSSD1は、その時点での開設状態をOSプログラムに問い合わせることになる。この時点で、OS用参照テーブルT(OS)の状態は、図26に示す状態なので、OSプログラムは「未開設」なる回答を返すことになり、管理プログラムSSD1は、新アプリAP12のための新たな暗号通信路を支障なく開設することができる。
このように、本発明の第1の実施形態によれば、アプリAP11が、選択が解除された旨を報告する正常なプログラムであっても、報告を怠る欠陥プログラムであっても、新たなアプリAP12のための新たな暗号通信路を支障なく開設することができる。
<<< §6. 本発明の第2の実施形態における暗号通信路開設処理 >>>
続いて、本発明の第2の実施形態に係る情報処理装置における暗号通信路開設処理のプロセスを説明する。この第2の実施形態に係る情報処理装置100の基本構成は、§3で述べたとおりである。すなわち、図7に示すとおり、プログラム格納部110、データ格納部120、プログラム実行部130を備えている。そして、プログラム格納部110には、OSプログラム、管理プログラムSD、一般アプリプログラムAPが格納されており、データ格納部120には、OS用情報格納部121、SD用情報格納部122、AP用情報格納部123が設けられている。
ただ、OS用情報格納部121およびSD用情報格納部122に格納されるOS用参照テーブルT(OS)やSD用参照テーブルT(SD)の記録内容は、§4で述べた従来装置のものや§5で述べた第1の実施形態のものとは異なり、独自の内容になっている。したがって、OSプログラムや管理プログラムSDによる処理手順も、§4で述べた従来装置のものや§5で述べた第1の実施形態のものとは異なる独自の処理手順になっている。
<6−1. 第2の実施形態による基本的な処理手法>
はじめに、ここで述べる第2の実施形態による基本的な処理手法の概念を、§4で述べた従来装置による基本的な処理手法の概念と対比させながら説明する。図27は、§4で述べた従来の一般的なSIMカード(情報処理装置)内に用意されるOS用参照テーブルおよびSD用参照テーブル(上段の図(a) )と、本発明の第2の実施形態に係るSIMカード(情報処理装置)内に用意されるOS用参照テーブルおよびSD用参照テーブル(下段の図(b) )との対比を示す図である。
上段の図(a) は、図8に示した従来装置における各参照テーブルであり、OS用情報格納部121内には、OS用参照テーブルT(OS)が格納され、SD用情報格納部122内には、SD用参照テーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)が格納されている。
既に述べたとおり、OS用参照テーブルT(OS)は、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するためのテーブルであり、OSプログラムによって管理される。図示の例の場合、チャネル番号#0,#1,#2に対して、それぞれアプリケーションプログラム「SSD1」,「AP11」,「AP02」が対応することを示す対応関係が記録されている。
一方、各SD用参照テーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)は、各管理プログラムSDについての通信路管理情報を記録するためのテーブルであり、各管理プログラムSDによって管理される。図には、管理プログラムSSD1についてのSD用参照テーブルT(SSD1)の内容が例示されている。すなわち、現在、管理プログラムSSD1は、論理チャネル#1を用いて、アプリAP11のために暗号通信路を開設済であることが記録されている。
暗号通信路の開設処理は、管理プログラムSDによって実行される処理であるので、図27(a) に示すように、暗号通信路の開設状態をSD用参照テーブルT(SD)に記録することは非常に常識的かつ効率的な方法である。このため、従来装置では、このような記録方法を採用して暗号通信路開設処理が行われていることは、既に§4で詳述したとおりである。しかしながら、この従来装置による暗号通信路開設処理を採用した場合、アプリケーションプログラムの中に、選択が解除されたことを管理プログラムSDに報告する「報告処理」を怠る欠陥プログラムが存在した場合、新たな暗号通信路が開設できなくなる、という問題が生じることも、既に§4で述べた。
このような問題を解決するため、§5で述べた第1の実施形態では、図18(a) に示すSD用参照テーブルT(SSD1)内の情報のうち、太線枠で囲った「開設状態」,「アプリ名」,「チャネル番号」の各欄の情報を、白抜き矢印で示すように、図18(b) のOS用参照テーブルT(OS)内に移動して、OSプログラムによって管理させるようにしている。その結果、図18(b) のSD用参照テーブルT(SSD1)内には、「セッションキー」の欄の情報のみが残ることになっている。
この§6で述べる第2の実施形態は、暗号通信路開設に関する一部の情報を、SD用参照テーブルT(SSD1)からOS用参照テーブルT(OS)内に移動する点において、§5で述べた第1の実施形態と共通するが、移動対象となる情報の内容が若干異なる。すなわち、この第2の実施形態では、図27(a) のSD用参照テーブルT(SSD1)内の情報のうち、太線枠で囲った「開設状態」の欄の情報を、白抜き矢印で示すように、図27(b) のOS用参照テーブルT(OS)内に移動して、OSプログラムによって管理させるようにしている。その結果、図27(b) のSD用参照テーブルT(SSD1)内には、「アプリ名」,「チャネル番号」,「セッションキー」の欄の情報が残ることになる。
結局、ここで述べる第2の実施形態の場合、図27の上段の図(a) に示す「OS用参照テーブルT(OS)」および「SD用参照テーブルT(SD)」の代わりに、図27の下段の図(b) に示す「OS用参照テーブルT(OS)」および「SD用参照テーブルT(SD)」を用いることになる。図27の下段右に示すとおり、「SD用参照テーブルT(SD)」としては、個々の管理プログラムごとに、それぞれテーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)が設けられることになるが、ここでは、管理プログラムSSD1についてのSD用参照テーブルT(SSD1)を代表例にとって、以下の説明を行うことにする。
この図27に示す第2の実施形態の場合も、上段左に示す従来のOS用参照テーブルT(OS)に記録されていた情報(チャネル対応情報)は、白抜き矢印で示すとおり、下段左に示す本発明のOS用参照テーブルT(OS)にそっくり盛り込まれている。
一方、上段右に示す従来のSD用参照テーブルT(SSD1)に記録されていた情報(通信路管理情報)のうち、「未開設」か「開設済」かを示す開設状態の情報は、白抜き矢印で示すとおり、下段左に示す本発明のOS用参照テーブルT(OS)に盛り込まれることになり、下段右に示す本発明のSD用参照テーブルT(SSD1)には記録されない。
結局、下段左に示された本発明のOS用参照テーブルT(OS)は、上段左に示された従来のOS用参照テーブルT(OS)に、新たに「開設状態」の欄を設け、この「開設状態」の欄に、「特定のアプリケーションプログラムのために暗号通信路が開設済か否かを示す情報」を記録するようにしたもの、ということができる。別言すれば、「開設状態」の欄には、「未開設」か「開設済」かの情報が記録され、「開設済」という情報が記録されている場合には、その左隣のアプリ名の欄に記載されている特定のアプリケーションプログラムのために暗号通信路が開設済であることを示している。
図示の例の場合、上段右に示されたSD用参照テーブルT(SSD1)のうち、開設状態「開設済」,アプリ名「AP11」,チャネル番号「#1」という情報は、下段左に示されているOS用参照テーブルT(OS)の第2行目に記録されていることになる。一方、下段右に示されているSD用参照テーブルT(SSD1)には、「アプリ名」,「チャネル番号」,「セッションキー」の各欄は残っているが、「開設状態」の欄は廃止されている(図では、説明の便宜上、太線枠に×印をつけて示した)。
既に述べたとおり、SD用情報格納部122内には、個々の管理プログラムSSD1,SSD2,SSD3,ISDのそれぞれについてのSD用参照テーブルT(SSD1),T(SSD2),T(SSD3),T(ISD)が格納されている。したがって、これらの各SD用参照テーブルT(SD)は、個々の管理プログラムごとに、それぞれ開設した暗号通信路に関する情報を記録するテーブルとして利用されることになる。
具体的には、各管理プログラムSDは、所定の開設対象アプリケーションプログラムのために新たな暗号通信路を開設する際には、当該暗号通信路に利用するセッションキーを発生させ、これを当該所定の開設対象アプリケーションプログラムのアプリ名およびそのチャネル番号とともに、各SD用参照テーブルT(SD)に書き込む処理を行う。図27の下段右の例は、管理プログラムSSD1が、アプリAP11を「所定の開設対象アプリケーションプログラム」として、論理チャネル#1を用いて暗号通信路を開設した場合の例である。ここでは、このSD用参照テーブルT(SSD1)に記録されているアプリ名およびチャネル番号の情報を「開設対象アプリ情報」と呼ぶことにする。
別言すれば、「開設対象アプリ情報」は、暗号通信路の開設対象がどのアプリケーションプログラムであるかを示す情報ということになる。ここで、「開設対象アプリ情報」に含まれている「アプリ名」は、開設対象アプリケーションプログラムを直接的に示す情報ということになり、「チャネル番号」は、開設対象アプリケーションプログラムを間接的に示す情報ということになる。たとえば、図27の下段右に示す例の場合、アプリ名の欄に記載された「AP11」は、開設対象アプリケーションプログラムが「アプリAP11」であることを直接的に示す情報である。これに対して、チャネル番号の欄に記載された「#1」は、下段左に示すOS用参照テーブルT(OS)を参照することにより、開設対象アプリケーションプログラムが、チャネル番号「#1」に対応した「アプリAP11」であることを間接的に示す情報である。
管理プログラムSSD1は、所定の開設対象アプリケーションプログラムAP11のために新たな暗号通信路を開設した際には、その旨をOSプログラムに報告するとともに、セッションキー「xxxxxx」を発生させる。そして、新たな暗号通信路の開設対象が当該所定のアプリケーションプログラムAP11であることを示す開設対象アプリ情報(アプリ名「AP11」とチャネル番号「#1」)とともに、発生させたセッションキー「xxxxxx」をSD用参照テーブルに書き込むことになる(チャネル番号「#1」は、必要なら、OSプログラムに問い合わせを行うことにより認識可能である)。図27の下段右のSD用参照テーブルT(SSD1)は、本発明の第2の実施形態において、このような書き込みが行われた時点の状態を示すものである。
一方、図27の下段左に示す本発明の第2の実施形態に係るOS用参照テーブルT(OS)の「アプリ名」の欄と「開設状態」の欄に記録される情報(「未開設」か「開設済」かを示す情報)については、「暗号通信路開設情報」と呼ぶことにする。この暗号通信路開設情報の本質的な役割は、その時点において、「アプリ名」で示された特定のアプリケーションプログラムのために暗号通信路が開設済か否かを示すことである。
このOS用参照テーブルT(OS)の「チャネル番号」,「開閉状態」,「アプリ名」の各欄に記録される情報は、前述したとおり、上段左に示すOS用参照テーブルT(OS)に記録されていたチャネル対応情報である。このチャネル対応情報の本質的な役割は、その時点において、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すことにある。
なお、図示する実施例では、OS用参照テーブルT(OS)に「開閉状態」の欄が設けられているが、「アプリ名」の欄に何らかのアプリケーションプログラムを示す情報が記録されている場合は、「開閉状態」の欄は「開」になり、「アプリ名」の欄が「無」の場合は、「開閉状態」の欄は「閉」になるので、「開閉状態」の欄は本質的なものではなく、省略してもかまわない。
ここに示す実施例の場合、暗号通信路開設情報は、チャネル対応情報の一部を構成する「アプリ名」の欄を利用することにより、チャネル対応情報により対応関係が示されているアプリケーションプログラムのために暗号通信路が開設済か否かを示す情報として機能している。たとえば、図示の例の場合、下段左に示すOS用参照テーブルT(OS)の第2行目には、「#1」,「開」,「AP11」,「開設済」なる情報が対応づけて記録されているが、当該記録は、特定のチャネル番号「#1」と特定のアプリケーションプログラム「AP11」との対応関係を示すチャネル対応情報としての役割とともに、何らかの管理プログラムによって(この第2の実施形態の場合、管理プログラムを特定する情報は、OS用参照テーブルT(OS)には記録されない)、アプリ「AP11」のための暗号通信路が開設済であることを示す暗号通信路開設情報としての役割を果たす。
このOS用参照テーブルT(OS)は、OSプログラムによって管理される情報であり、OSプログラムによって書き込みや変更が行われ、OSプログラムによって参照される。したがって、この第2の実施形態に係る装置100に組み込まれているOSプログラムは、外部装置200から、特定の選択チャネル番号に特定の選択アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、このOS用参照テーブルT(OS)に、当該選択チャネル番号と当該選択アプリケーションプログラムとの対応関係を示すチャネル対応情報を記録する処理を行う。
このとき、当該選択アプリケーションプログラムに関する暗号通信路開設情報の記録を未開設状態に初期化する処理を行う。たとえば、OS用参照テーブルT(OS)が、図27の下段左に示す状態であるときに、選択チャネル番号#1に、新たな選択アプリケーションプログラムAP12を対応づけるためのアプリケーション選択コマンド「SELECT(#1), AP12」が与えられると、OSプログラムは、チャネル番号#1に対応する第2行目のアプリ名の欄を「AP11」から「AP12」に書き換えるとともに、第2行目の開設状態の欄の「開設済」を消去して、「未開設」の状態に初期化する処理を行うことになる。
もちろん、この第2の実施形態に係る装置100に組み込まれているOSプログラムは、従来のOSプログラムと同様に、外部装置200から、特定のチャネル番号を指定した所定コマンドが与えられたときに、このOS用参照テーブルT(OS)に記録されているチャネル対応情報を参照することにより、指定されたチャネル番号に対応するアプリケーションプログラムを認識し、与えられた所定コマンドを、認識したアプリケーションプログラムに引き渡す処理も行う。
一方、この第2の実施形態で利用されるSD用参照テーブルT(SSD1)では、図27の下段右に×印を付して示すとおり、開設状態(「未開設」か「開設済」かの状態)の記録は廃止されてしまったため、管理プログラムSSD1は、SD用参照テーブルT(SSD1)を参照しても、現在、自分自身が何らかの暗号通信路の開設を行っているのか否かを確認することができない。
そこで、第2の実施形態に係る管理プログラムは、新たな暗号通信路の開設を行う際に、必要に応じて、OSプログラムに対してOS用参照テーブルT(OS)に記録されている暗号通信路開設情報の内容(具体的には、所定の開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否か)を問い合わせ、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。なお、OSプログラムに対する問い合わせは、「必要に応じて」行われ、後述するように、問い合わせが「不要」の場合は行う必要はない。
前述したとおり、管理プログラムSSD1の管理下にあるアプリケーションプログラムは、OSプログラムから暗号通信路開設コマンドの引き渡しを受けた場合、自己を管理する管理プログラムSSD1に対して、自己のための暗号通信路開設依頼を行う。管理プログラムSSD1は、このような暗号通信路開設依頼を受けた場合、SD用参照テーブルT(SSD1)を参照して、自己が暗号通信路を開設しているか否かの判断を行う。ここで、もし、アプリ名,チャネル番号,セッションキーの各欄に情報が記録されておらず、「無」の状態であれば、暗号通信路を開設していないと判断することができる。
なぜなら、前述したとおり、管理プログラムSSD1は、開設対象アプリケーションプログラムのために暗号通信路を開設した際には、SD用参照テーブルT(SSD1)のアプリ名およびチャネル番号の欄に開設対象アプリ情報を書き込み、セッションキーの欄に発生させたセッションキーを書き込む処理を行うので、これらの各欄が「無」の状態であれば、現時点では、暗号通信路を開設していないことになる。別言すれば、現時点で暗号通信路を開設している場合は、必ず、アプリ名,チャネル番号,セッションキーの各欄にしかるべき情報が記録されているはずである。そこで、これら各欄が「無」の状態であれば、暗号通信路を開設していないと判断することができる。この場合、OSプログラムへの問い合わせは不要である。
一方、アプリ名,チャネル番号,セッションキーの各欄に何らかの情報が記録されていた場合、これをもって直ちに暗号通信路を開設していると判断することは早計である。これら各欄に、何らかの情報が記録されていたとしても、それらの情報は、過去に暗号通信路を開設していた痕跡に過ぎず、現時点では、暗号通信路を開設していない可能性もある。すなわち、過去に暗号通信路を開設した場合、開設対象となったアプリケーションプログラムが、正常なプログラムであれば、選択が解除された場合にその旨の報告がなされ、SD用参照テーブルT(SSD1)の情報は消去されることになるが、欠陥プログラムであった場合、そのような報告がなされないため、SD用参照テーブルT(SSD1)の情報は消去されず、そのまま過去の痕跡として残ってしまうことになる。
そこで、アプリ名,チャネル番号,セッションキーの各欄に何らかの情報が記録されていた場合は、OSプログラムへの問い合わせを行い、その回答に基づいて、現時点で、暗号通信路を開設しているか否かを判断する必要がある。このように、ここで述べる第2の実施形態の場合、必要に応じて、OSプログラムへの問い合わせが行われる点が、前述した第1の実施形態と異なる。
結局、ここで述べる第2の実施形態の場合、SD用情報格納部122には、管理プログラムSSD1による暗号通信路の開設対象となるアプリケーションプログラムを示す開設対象アプリ情報(アプリ名およびチャネル番号)を記録するためのSD用参照テーブルT(SSD1)が格納されており、管理プログラムSSD1は、自己が管理するアプリケーションプログラムから暗号通信路開設依頼を受けたときに、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない場合には、OSプログラムへの問い合わせを行うことなしに、現時点では、暗号通信路を開設していないと判断し、依頼に応じた新たな暗号通信路の開設を行う旨の決定を行うことになる。一方、開設対象アプリ情報として所定の開設対象アプリケーションプログラムが示されていた場合には、OSプログラムに対して、当該所定の開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否かの問い合わせを行う。
OSプログラムは、管理プログラムSSD1から、このような問い合わせがあると、OS用参照テーブルT(OS)内の暗号通信路開設情報を参照することにより、当該問い合わせについての回答を行う。そこで、管理プログラムSSD1は、得られた回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。
具体的には、管理プログラムSSD1に対して、同時に開設可能な暗号通信路の数が1つだけという制限が課されている場合、OSプログラムは、管理プログラムSSD1からの問い合わせがあったときに、問い合わせに係る特定のアプリケーションプログラムのために暗号通信路が「開設済」か「未開設」か、のいずれであるかを回答すればよい。管理プログラムSSD1は、「未開設」との回答が得られた場合には、新たな暗号通信路の開設を行い、「開設済」との回答が得られた場合には、新たな暗号通信路の開設を行わないことになる。
たとえば、図27に示す例の場合、開設対象アプリ情報には、開設対象アプリケーションプログラムを特定するアプリ名「AP11」と、当該開設対象アプリケーションプログラムAP11に対応づけられたチャネル番号「#1」とが含まれている。これは、管理プログラムSSD1が、新たな暗号通信路を開設する際に、アプリ名とチャネル番号とを含む開設対象アプリ情報をSD用参照テーブルT(SSD1)に書き込むようにしているためである。
したがって、図27に示す例の場合、管理プログラムSSD1がOSプログラムに対して問い合わせを行う際には、SD用参照テーブルT(SSD1)に開設対象アプリ情報として記録されているアプリ名「AP11」とチャネル番号「#1」との組み合わせに関して暗号通信路が設定済か否かを問い合わせればよい。OSプログラムは、このような問い合わせがあったときに、当該組み合わせに関して暗号通信路が「未開設」か「設定済」かを回答する。図示の例の場合、問い合わせを受けたOSプログラムが、OS用参照テーブルT(OS)を検索すると、第2行目にアプリ名「AP11」とチャネル番号「#1」との組み合わせが見つかり、開設状態の欄が「開設済」となっているため、「開設済」との回答を行うことになる。
OSプログラムから「未開設」の回答が得られた場合、管理プログラムSSD1は、前述したとおり暗号通信路の開設処理を行い、これをOSプログラムに報告する。管理プログラムSSD1から、特定のアプリケーションプログラムのために暗号通信路を開設した旨の報告があると、OSプログラムは、当該報告に応じて、報告に係る特定のアプリケーションプログラムのために暗号通信路が開設済であることを示す暗号通信路開設情報をOS用参照テーブルT(OS)に書き込む。すなわち、当該特定のアプリケーションプログラムのアプリ名が記録されている行の開設状態の欄を「開設済」とする書き込みを行う。
管理プログラムSSD1からOSプログラムへの報告は、暗号通信路の開設対象となるアプリケーションプログラムについての開設対象アプリ情報を伝えることによって行えばよい。たとえば、管理プログラムSSD1が、論理チャネル#1を用いて、アプリAP11について暗号通信路の開設を行うと、SD用参照テーブルT(SSD1)には、図27の下段右に示すような開設対象アプリ情報が記録されるので、管理プログラムSSD1は、アプリ名「AP11」とチャネル番号「#1」をOSプログラムに報告すればよい。
OSプログラムは、管理プログラムSSD1から、暗号通信路を開設した旨の報告があったときに、当該報告に応じて、特定のアプリケーションプログラムのために暗号通信路が開設済であることを示す暗号通信路開設情報をOS用参照テーブルT(OS)に書き込む。たとえば、上例のように、アプリ名「AP11」とチャネル番号「#1」とを伴う報告があった場合、OS用参照テーブルT(OS)から、、アプリ名「AP11」とチャネル番号「#1」との組み合わせを検索し、該当する行の開設状態の欄を「開設済」とする書き込みを行えばよい。図27の下段左に示すOS用参照テーブルT(OS)は、このような書き込みを行った後の段階を示している。
なお、上例では、アプリ名とチャネル番号との双方を特定した報告を行っているが、少なくともチャネル番号が特定されていれば、アプリ名の特定は省略してもかまわない。Java Card(商標)などの仕様では、同一のアプリケーションプログラムを複数のチャネルで選択するマルチセレクトが可能になっているため、アプリ名だけではチャネル番号を特定することができない。もちろん、マルチセレクトを許さない仕様の場合は、アプリ名「AP11」とチャネル番号「#1」のいずれか一方が特定できれば、OSプログラムは、上記書き込みを行うことができるので、管理プログラムSSD1からOSプログラムへの報告には、アプリ名「AP11」とチャネル番号「#1」のいずれか一方が含まれていれば足りる。
ここに示す第2の実施形態の場合も、OSプログラムは、外部装置200から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、この旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与える。
解除通知を受けた旧アプリケーションプログラムが、仕様を遵守した正常なプログラムであれば、その旨を、自己を管理する管理プログラムに報告する。管理プログラムは、自己の管理下にある旧アプリケーションプログラムから上述した解除通知があった旨の報告を受けた場合には、SD用参照テーブルに書き込まれている旧アプリケーションプログラムについての開設対象アプリ情報を消去する処理を行う。
また、SD用情報格納部122には、個々の管理プログラムごとに、それぞれSD用参照テーブルが格納されており、これら各SD用参照テーブルには、各管理プログラムが開設済の暗号通信路に利用するセッションキーが記録される。これは、管理プログラムが、新たな暗号通信路の開設を行う際に、当該暗号通信路に利用するセッションキーを発生させ、これをSD用参照テーブルに書き込む処理を行ったためである。そこで、自己の管理下にある旧アプリケーションプログラムから上述した解除通知があった旨の報告を受けた管理プログラムは、このSD用参照テーブルに書き込まれている旧アプリケーションプログラムについてのセッションキーも消去する処理を行う。
結局、この第2の実施形態の場合、管理プログラムは、自己の管理下にある旧アプリケーションプログラムから上述した解除通知があった旨の報告を受けた場合、SD用参照テーブルT(SD)内の開設対象アプリ情報とセッションキーを消去する処理を行うことになる。たとえば、SD用参照テーブルT(SSD1)が、図27の下段右に示す状態において、旧アプリAP11から管理プログラムSSD1に対して、上述した解除通知があった旨の報告があった場合、管理プログラムSSD1は、SD用参照テーブルT(SSD1)内のアプリ名,チャネル番号,セッションキーの各欄の情報をすべて消去して「無」の状態に書き換える処理を行うことになる。
この第2の実施形態に係る情報処理装置では、「未開設」か「開設済」かの開設状態を示す情報は、SD用参照テーブルではなく、OS用参照テーブルT(OS)に記録されるため、上例の場合に、旧アプリAP11が欠陥プログラムであり、解除通知があった旨の報告を怠ったとしても支障は生じない。管理プログラムSSD1が、旧アプリAP11からの解除通知があった旨の報告を受け取らないと、SD用参照テーブルT(SSD1)には、図27の下段右に示すように、旧アプリAP11に関する暗号通信路開設に関する情報がそのまま残ることになる。
しかしながら、アプリAP11の選択が解除されていれば、OS用参照テーブルT(OS)上では、旧アプリAP11の情報は消去されているため、OSプログラムへの問い合わせを行えば、「未開設」の回答が得られることになり、管理プログラムSSD1は、新アプリAP12のために新たな暗号通信路を支障なく開設することができる。
したがって、理論上は、管理プログラムSSD1が、旧アプリAP11から上述した解除通知があった旨の報告を受けた場合に、SD用参照テーブルT(SSD1)に書き込まれている旧アプリAP11についての開設対象アプリ情報やセッションキーを消去する処理を行わなくても、新アプリAP12のために新たな暗号通信路を支障なく開設することができる。ただ、既に選択が解除されている旧アプリAP11についての開設対象アプリ情報やセッションキーがSD用参照テーブルT(SSD1)に残っていることは、情報漏洩などの観点から好ましくないので、実用上は、上述したとおり、特定のアプリケーションプログラムから選択が解除された旨の報告があった場合、管理プログラムSDは、当該アプリケーションプログラムについての開設対象アプリ情報およびセッションキーを消去するのが好ましい。
このように、この第2の実施形態に係る情報処理装置では、選択が解除されたことを管理プログラムSDに報告する「報告処理」を怠る欠陥プログラムが存在した場合でも、新たな暗号通信路が開設できなくなる、という問題は生じない。以下、この点を、処理ダイアグラムを用いた具体的な事例について詳述する。
<6−2. 第2の実施形態による正常処理手順>
ここでは、上述した第2の実施形態に係る装置によって、図9に示すステップS11〜S14の各手順(§4の従来装置における暗号通信路開設処理の説明で例示した手順)を実行した場合に、各プログラムでどのような処理が実行されるかを、プログラム間の信号の流れを追いながら説明する。図28は、第2の実施形態に係る情報処理装置における暗号通信路開設処理の正常処理手順を示すダイアグラムである。これまでのダイアグラムと同様に、図の上段に示す各ブロックおよびこれら各ブロックから下方に伸びる各垂直線は、個々のプログラムを示しており、各垂直線の間を結ぶ水平矢印は、各プログラム間の信号の流れを示している。また、図の上下方向は、上から下に向かって経過する時間を示している。
このダイアグラムにおいて、プロセスP21は、図9のステップS11の「アプリAP11を選択」に対応し、プロセスP22は、ステップS12の「アプリAP11について暗号通信路開設」に対応し、プロセスP23は、ステップS13の「アプリAP12を選択」に対応し、プロセスP24は、ステップS14の「アプリAP12について暗号通信路開設」に対応する。ここでも、実際には、プロセスP22とプロセスP23との間に、アプリAP11と外部装置200の間での暗号通信路を介した情報送受プロセスが存在し、プロセスP24の後に、アプリAP12と外部装置200の間での暗号通信路を介した情報送受プロセスが存在する。
図28のダイアグラムにおいて、まず、プロセスP21では、外部装置200内のホスト側アプリから情報処理装置100に対して、アプリケーション選択コマンド「SELECT(#1), AP11」が与えられる。OSプログラムは、このアプリケーション選択コマンドを受けて、論理チャネル#1にアプリAP11を割り当てる処理を行う。すなわち、図27の下段左に示すOS用参照テーブルT(OS)に、論理チャネル#1とアプリAP11との対応関係がチャネル対応情報として記録される。具体的には、OS用参照テーブルT(OS)の第2行目の開閉状態の欄を「開」にし、アプリ名の欄に「AP11」を記録する。この時点では、開設状態の欄は「未開設」の状態になる(「開設済」になっていた場合は、「未開設」に初期化される)。
OSプログラムは、こうして、論理チャネル#1とアプリAP11との対応関係をOS用参照テーブルT(OS)に記録する処理を行うとともに、図示の「Select処理」と記された左向き矢印に示すように、アプリAP11に対して選択が行われた旨を伝達する。この伝達信号を受けたアプリAP11は、OSプログラムに対して、確認信号(図の右向き矢印)を返信する。そこで、OSプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
以後、チャネル番号#1を伴うコマンドが送信されてきた場合、OSプログラムは、当該コマンドをアプリAP11宛のコマンドとして取り扱うことになる。なお、図27の下段左に示すOS用参照テーブルT(OS)に記録されるチャネル対応情報の部分は、図27の上段左に示す従来のOS用参照テーブルT(OS)に記録されるチャネル対応情報に対応するものである。したがって、基本的には、図28に示すプロセスP21の処理は、図10に示す従来のプロセスP1の処理と同じ処理になる。
続くプロセスP22では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。OSプログラムは、当該コマンドに含まれているチャネル番号「#1」を参照することにより、当該コマンドが、論理チャネル#1に対応づけられているアプリAP11宛のコマンドであると判断し、これをアプリAP11に引き渡す(図の左向き矢印)。当該コマンドを受け取ったアプリAP11は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムSSD1に対して、自己のための暗号通信路の開設を依頼する(図の右向き矢印)。
§4で述べた従来装置の場合、図10のダイアグラムに示されているように、アプリAP11から暗号通信路開設依頼を受けた管理プログラムSSD1は、SD用参照テーブルT(SSD1)を参照することにより、現在の暗号通信路の開設状態を確認する処理を行うことになる。しかしながら、本発明の場合、暗号通信路の開設状態(「未開設」か「開設済」か)を示す情報は、SD用参照テーブルT(SSD1)ではなく、OS用参照テーブルT(OS)に記録されている。
そこで、§5で述べた第1の実施形態に係る装置の場合、管理プログラムSSD1は、暗号通信路開設依頼を受けたときに、自己の暗号通信路の開設状態をOSプログラムに問い合わせる処理を行っていた。ここで述べる第2の実施形態に係る装置の場合も、前述したとおり、必要に応じて、自己の暗号通信路の開設状態をOSプログラムに問い合わせる処理を行うことになるが、このような問い合わせが不要なケースもある。
すなわち、§6−1で述べたとおり、第2の実施形態の場合、管理プログラムSSD1は、自己が管理するアプリケーションプログラムから暗号通信路開設依頼を受けたときに、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない場合には、OSプログラムへの問い合わせを行うことなしに、現時点では、暗号通信路を開設していないと判断し、開設対象アプリ情報として何らかの開設対象アプリケーションプログラムが示されていた場合には、OSプログラムに対して、当該開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否かの問い合わせを行うことになる。
ここでは、説明の便宜上、管理プログラムSSD1にとって、図示のプロセスP22が、初めての暗号通信路開設処理であったものとしよう。この場合、SD用参照テーブルT(SSD1)のアプリ名,チャネル番号,セッションキーの各欄はいずれも「無」になっており、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていないことになる。したがって、管理プログラムSSD1は、OSプログラムへの問い合わせを行うことなしに、現時点では、暗号通信路を開設していないと判断し、アプリAP11からの暗号通信路開設依頼に応じて、暗号通信路の開設を行う。すなわち、新たにセッションキー「xxxxxx」を発生させた上で、SD用参照テーブルT(SSD1)に図27の下段右に示すような記録を行うとともに、暗号通信路の開設に必要な種々の処理を実行する。
管理プログラムSSD1は、暗号通信路開設処理を実行した旨を、OSプログラムとアプリAP11との双方に報告する(図の黒点からの左右両方への矢印)。OSプログラムは、管理プログラムSSD1から、暗号通信路を開設した旨の報告があったときには、当該報告に応じて、管理プログラムSSD1がアプリAP11のために暗号通信路を開設済であることを示す暗号通信路開設情報をOS用参照テーブルT(OS)に書き込む。
具体的には、管理プログラムSSD1から、チャネル番号「#1」という情報を含む開設済みの報告を行うようにすれば、OSプログラムは、図27の下段左に示すように、OS用参照テーブルT(OS)のチャネル番号「#1」の行の開設状態の欄に「開設済」なる情報を書き込むことができる。
一方、アプリAP11は、管理プログラムSSD1からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をOSプログラムに伝達する(図の右向き矢印)。そこで、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。図示されていないが、もし、管理プログラムSSD1から暗号通信路開設依頼を拒絶する旨の報告があった場合には、アプリAP11は、暗号通信路開設コマンドの実行に失敗した旨をOSプログラムに伝達し、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが失敗した旨のNG応答を返すことになる。
なお、実際には、このプロセスP22の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムSSD1からOSプログラムおよびアプリAP11の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
こうして、プロセスP22が完了した時点t22では、管理プログラムSSD1によって、アプリAP11のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリAP11とホスト側アプリとの間で暗号通信が行われる。したがって、実際には、図示の時点t22の前後において、暗号通信路を介した情報送受プロセスが存在するが、図28のダイアグラムでは、当該情報送受プロセスの図示は省略されている。
図28に示すダイアグラムの後半の手順は、アプリAP11との間で論理チャネル#1を介した暗号情報送受プロセスが完了したホスト側アプリが、今度は、別なアプリAP12との間で同じ論理チャネル#1を介した暗号情報送受プロセスを実行する手順である。
まず、プロセスP23では、外部装置200内のホスト側アプリから情報処理装置100に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる。OSプログラムは、このアプリケーション選択コマンドを「論理チャネル#1を指定してアプリAP12を選択するコマンド」として解釈し、論理チャネル#1にアプリAP12を割り当てる処理を行う。ただ、この時点では、図27の下段左に示すOS用参照テーブルT(OS)に示されているとおり、論理チャネル#1には既に旧アプリAP11が割り当てられている。
このように、外部装置200から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、OSプログラムは、当該旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与える。
図示の例の場合、OSプログラムは、まず、旧アプリAP11に対して、チャネル番号#1との対応関係が解除された旨の解除通知(選択が解除された旨の通知)を与える。図示の「Deselect処理」と記された左向き矢印は、このような解除通知を示している。この解除通知を受けたアプリAP11が、仕様を遵守した正常なプログラムであれば、自己を管理する管理プログラムSSD1に対して、選択が解除された旨の報告を行う。図示の「報告処理」と記された一点鎖線の右向き矢印は、このような選択解除の報告信号を示している(後述するように、アプリAP11が、仕様を遵守しない欠陥プログラムの場合、この「報告処理」は行われない。)。
ここでは、AP11が、仕様を遵守した正常なプログラムであり、上記「報告処理」が行われたものとしよう。当該報告を受けた管理プログラムSSD1は、これまで論理チャネル#1でアプリAP11のために開設していた暗号通信路を終了する処理を行う。具体的には、図27の下段右に示すように、SD用参照テーブルT(SSD1)には、アプリ名「AP11」,チャネル番号「#1」,セッションキー「xxxxxx」が記録されているが、これらは既に選択が解除された旧アプリAP11についての暗号通信路に関する情報であるので、旧アプリAP11から「報告処理」があったとき、これらの情報を消去する処理を行う。その結果、SD用参照テーブルT(SSD1)の記録状態はすべて「無」になる。
この第2の実施形態の場合、上記消去処理を行わなくても、新アプリAP12について新たな暗号通信路を開設する上では支障は生じないが(実際、旧アプリAP11が欠陥プログラムの場合は、上記消去処理は行われない)、セッションキー「xxxxxx」などが漏洩する可能性を低減する上で、実用上は、上記消去処理を行うようにするのが好ましい。ここでは、このプロセスP23において、上記消去処理が行われたものとして以下の説明を行う。
一方、論理チャネルの割り当てが解除されたアプリAP11は、「Deselect処理」に応じた確認信号(図の実線の右向き矢印)をOSプログラムに返す。そこで、OSプログラムは、論理チャネル#1に新たに割り当てるプログラムとして選択された新アプリAP12に対して、選択が行われた旨を伝達する。図示の「Select処理」と記された左向き矢印は、このような伝達信号を示している。この伝達信号を受けた新アプリAP12は、OSプログラムに対して、確認信号(図の右向き矢印)を返信する。そこで、OSプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
以上の処理により、論理チャネル#1に新たにアプリAP12が対応づけられ、アプリAP12のために論理チャネル#1が「開」の状態になる。このような対応関係は、図27の下段左に示すOS用参照テーブルT(OS)に記録される。すなわち、OSプログラムは、新アプリAP12から確認信号が得られた時点で、OS用参照テーブルT(OS)の#1の行のアプリ名の欄を、「AP11」から「AP12」に書き換える処理を行い、チャネル番号#1と新アプリAP12との対応関係を示すチャネル対応情報を記録する。
しかも、OSプログラムは、このとき新アプリAP12に関する暗号通信路開設情報の記録を未開設状態に初期化する。すなわち、図27の下段左に示すOS用参照テーブルT(OS)の第2行目に記録されている「#1,開,AP11,開設済」なる情報は、アプリ名の欄が「AP11」から「AP12」に書き換えられるとともに、開設状態の欄が初期化されて、「開設済」から「未開設」に書き換えらえる。以後、チャネル番号#1を伴うコマンドが送信されてきた場合、OSプログラムは、当該コマンドをアプリAP12宛のコマンドとして取り扱うことになる。
続くプロセスP24では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。OSプログラムは、当該コマンドに含まれているチャネル番号「#1」を参照することにより、当該コマンドが、論理チャネル#1に対応づけられているアプリAP12宛のコマンドであると判断し、これをアプリAP12に引き渡す(図の左向き矢印)。当該コマンドを受け取ったアプリAP12は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムSSD1に対して、自己のための暗号通信路の開設を依頼する(図の右向き矢印)。
暗号通信路開設依頼を受けた管理プログラムSSD1は、現時点で、暗号通信路を開設しているか否かを判断するため、まず、SD用参照テーブルT(SSD1)の内容を確認する。すると、前述したプロセスP23の処理により、SD用参照テーブルT(SSD1)の内容は消去されており、すべて「無」の状態になっている。したがって、管理プログラムSSD1は、OSプログラムへの問い合わせを行うことなしに、現時点では、暗号通信路を開設していないと判断し、アプリAP12からの暗号通信路開設依頼に応じて、新たな暗号通信路の開設を行う。すなわち、新たにセッションキー「yyyyyy」を発生させた上で、SD用参照テーブルT(SSD1)に、アプリ名「AP12」,チャネル番号「#1」,セッションキー「yyyyyy」なる情報を書き込むとともに、暗号通信路の開設に必要な種々の処理を実行する。
そして、管理プログラムSSD1は、暗号通信路開設処理を実行した旨を、OSプログラムとアプリAP12との双方に報告する(図の黒点からの左右両方への矢印)。OSプログラムは、管理プログラムSSD1からの暗号通信路を開設した旨の報告を受けて、管理プログラムSSD1がアプリAP11のために暗号通信路を開設済であることを示す暗号通信路開設情報をOS用参照テーブルT(OS)に書き込む。
具体的には、管理プログラムSSD1から、「#1」という情報を含む開設済みの報告を行うようにすれば、OSプログラムは、OS用参照テーブルT(OS)のチャネル番号「#1」の行の開設状態の欄に「開設済」なる情報を書き込むことができる。
一方、アプリAP12は、管理プログラムSSD1からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をOSプログラムに伝達する(図の右向き矢印)。そこで、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
なお、実際には、このプロセスP24の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムSSD1からOSプログラムおよびアプリAP12の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
こうして、プロセスP24が完了した時点t24では、管理プログラムSSD1によって、アプリAP12のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリAP12とホスト側アプリとの間で暗号通信が行われる。図28のダイアグラムには示されていないが、実際には、図示の時点t24以降に、暗号通信路を介した情報送受プロセスが行われることになる。
このように、管理プログラムSSD1は、同時には1つの暗号通信路しか開設することができないが、プロセスP21,P22においてアプリP11のための暗号通信路を開設した後、当該暗号通信路を終了させた後であれば、プロセスP23,P24においてアプリP12のために新たな暗号通信路を開設することができる。
<6−3. 第2の実施形態による欠陥処理手順>
上述した図28に示すダイアグラムは、アプリAP11が、仕様を遵守した正常なプログラムであった場合の正常処理手順であるが、既に述べたとおり、アプリケーションプログラムの中には、仕様を遵守しない欠陥プログラムが含まれている可能性がある。上例の場合において、アプリAP11が、そのような欠陥プログラムであった場合、図28に一点鎖線の右向き矢印で示されている「報告処理」は実行されない可能性がある。そこで、以下、アプリAP11が欠陥プログラムであり、上記「報告処理」が実行されない場合の処理手順を、図29のダイアグラムを参照しながら説明する。
図29のダイアグラムの前半のプロセスP21,P22の処理は、図28のダイアグラムの前半のプロセスP21,P22の処理と全く同じである。しかしながら、図29のダイアグラムの後半のプロセスは若干異なる。ここでは、図29のダイアグラムの後半のプロセスを、図示のとおりプロセスP23′,P24′と呼ぶことにする。
プロセスP23′において、外部装置200内のホスト側アプリから情報処理装置100に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる点は、図28のプロセスP23と全く同じである。そして、OSプログラムが、このアプリケーション選択コマンドを「論理チャネル#1を指定して新たなアプリAP12を選択するコマンド」として解釈し、旧アプリAP11に対して、図示の「Deselect処理」と記された解除通知を与える点も、図28のプロセスP23と全く同じである。
ただ、旧アプリAP11が、欠陥プログラムであった場合、この解除通知を受けたアプリAP11は、「Deselect処理」に応じた確認信号(図の実線の右向き矢印)をOSプログラムに返すものの、管理プログラムSSD1に対する「報告処理」は怠ってしまうため、図に一点鎖線の右向き矢印で示す「報告処理」は実行されない。このため、管理プログラムSSD1は、現在開設している暗号通信路が終了したことを認識することができないため、SD用参照テーブルT(SSD1)の内容を、図27の下段右に示す状態に維持する。すなわち、旧アプリAP11の選択が解除された後も、SD用参照テーブルT(SSD1)には、アプリ名「AP11」,チャネル番号「#1」,セッションキー「xxxxxx」という旧アプリAP11についての暗号通信路に関する情報が消去されずに残ることになる。
一方、OSプログラムは、旧アプリAP11から、「Deselect処理」に応じた確認信号(図の実線の右向き矢印)を受け取った後、新アプリAP12に対して、選択が行われた旨を伝達する伝達信号(「Select処理」と記された左向き矢印)を与える。この伝達信号を受けた新アプリAP12は、OSプログラムに対して、確認信号(図の右向き矢印)を返信する。そこで、OSプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
また、OSプログラムは、新アプリAP12から確認信号が得られた時点で、OS用参照テーブルT(OS)の#1の行のアプリ名の欄を、「AP11」から「AP12」に書き換える処理を行い、チャネル番号#1と新アプリAP12との対応関係を示すチャネル対応情報を記録する。このとき、OSプログラムは、新アプリAP12に関する暗号通信路開設情報の記録を未開設状態に初期化する。すなわち、図27の下段左に示すOS用参照テーブルT(OS)の第2行目に記録されている「#1,開,AP11,開設済」なる情報は、アプリ名の欄が「AP11」から「AP12」に書き換えられるとともに、開設状態の欄が初期化されて、「開設済」から「未開設」に書き換えらえる。以後、チャネル番号#1を伴うコマンドが送信されてきた場合、OSプログラムは、当該コマンドをアプリAP12宛のコマンドとして取り扱うことになる。
続くプロセスP24′では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。OSプログラムは、当該コマンドに含まれているチャネル番号「#1」を参照することにより、当該コマンドが、論理チャネル#1に対応づけられているアプリAP12宛のコマンドであると判断し、これをアプリAP12に引き渡す(図の左向き矢印)。当該コマンドを受け取ったアプリAP12は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムSSD1に対して、自己のための暗号通信路の開設を依頼する(図の右向き矢印)。
アプリAP12からの暗号通信路開設依頼を受けた管理プログラムSSD1は、現時点で、暗号通信路を開設しているか否かを判断するため、まず、SD用参照テーブルT(SSD1)の内容を確認する。すると、前述したプロセスP23′の処理では、SD用参照テーブルT(SSD1)の内容は消去されておらず、図27の下段右に示すように、アプリ名「AP11」,チャネル番号「#1」,セッションキー「xxxxxx」という旧アプリAP11についての開設対象アプリ情報およびセッションキー情報が残っている。この場合、管理プログラムSSD1は、OSプログラムに対して、SD用参照テーブルT(SSD1)に記録されている開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否かの問い合わせを行い、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。
具体的には、管理プログラムSSD1は、SD用参照テーブルT(SSD1)に開設対象アプリ情報として記録されているアプリ名「AP11」とチャネル番号「#1」との組み合わせに関して暗号通信路が設定済か否かを問い合わせを行う。別言すれば、論理チャネル#1でアプリAP11が暗号通信路を開設済か否かの確認が行われることになる。
この問い合わせを受けたOSプログラムは、OS用参照テーブルT(OS)を検索するが、この時点では、既に「AP11」は「AP12」に書き換えられてしまっているため、問い合わせを受けた組み合わせに関する暗号通信路は開設済ではない。そこで、管理プログラムSSD1に対して、「未開設」との回答を行う。この回答を受けて、管理プログラムSSD1は、現時点では、暗号通信路を開設していないと判断し、新アプリAP12からの暗号通信路開設依頼に応じて、新たな暗号通信路の開設を行う。すなわち、新たにセッションキー「yyyyyy」を発生させた上で、SD用参照テーブルT(SSD1)に、アプリ名「AP12」,チャネル番号「#1」,セッションキー「yyyyyy」なる情報を書き込み、暗号通信路の開設に必要な種々の処理を実行する。SD用参照テーブルT(SSD1)に消去されずに残っていた旧アプリAP11についての情報は、新アプリAP12についての情報に書き換えられることになる。
続いて、管理プログラムSSD1は、暗号通信路開設処理を実行した旨を、OSプログラムとアプリAP12との双方に報告する(図の黒点からの左右両方への矢印)。OSプログラムは、管理プログラムSSD1からの暗号通信路を開設した旨の報告を受けて、管理プログラムSSD1がアプリAP11のために暗号通信路を開設済であることを示す暗号通信路開設情報をOS用参照テーブルT(OS)に書き込む。
具体的には、管理プログラムSSD1から、「#1」という情報を含む開設済みの報告を行うようにすれば、OSプログラムは、OS用参照テーブルT(OS)のチャネル番号「#1」の行の開設状態の欄に「開設済」なる情報を書き込むことができる。
一方、アプリAP12は、管理プログラムSSD1からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をOSプログラムに伝達する(図の右向き矢印)。そこで、OSプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答(図のOKと記された右向き矢印)を返す。
なお、実際には、このプロセスP24′の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムSSD1からOSプログラムおよびアプリAP12の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
こうして、プロセスP24′が完了した時点t24′では、管理プログラムSSD1によって、アプリAP12のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリAP12とホスト側アプリとの間で暗号通信が行われる。図29のダイアグラムには示されていないが、実際には、図示の時点t24′以降に、暗号通信路を介した情報送受プロセスが行われることになる。
このように、本発明の第2の実施形態では、アプリAP11が欠陥プログラムであり、選択が解除されたことを管理プログラムSSD1に報告する「報告処理」を怠った場合でも、暗号通信路開設情報がOS用参照テーブルに格納されているため、アプリAP11の暗号通信が終了し、アプリAP12が新たに選択された場合、新アプリAP12のための暗号通信路を支障なく開設することができるようになる。
<6−4. 第2の実施形態による各参照テーブルの変遷>
ここでは、図28のダイアグラムに示す正常処理手順および図29のダイアグラムに示す欠陥処理手順におけるOS用参照テーブルT(OS)とSD用参照テーブルT(SSD1)の変遷を示す。
図30〜図34は、図28のダイアグラムに示す正常処理手順の各時点t20〜t24におけるOS用参照テーブルT(OS)とSD用参照テーブルT(SSD1)の状態を示す図である。
まず、時点t20では、図30に示すとおり、OS用参照テーブルT(OS)は、チャネル番号#0のみが「開」状態となっており、論理チャネル#0に管理プログラムSSD1が割り当てられている。一方、SD用参照テーブルT(SSD1)は、未開設状態を示しており、アプリ名,チャネル番号,セッションキーの各欄は、いずれも「無」になっている。なお、図には、従来のSD用参照テーブルT(SSD1)との対比のため、「開設状態」の欄が示されているが、図27の下段右の図に×印を付して示すとおり、第2の実施形態の場合、SD用参照テーブルT(SSD1)には、この「開設状態」の欄は設けられていない(図では、この欄には斜線を施した)。
次の時点t21では、図31に示すとおり、OS用参照テーブルT(OS)のチャネル番号#1が「開」状態に変更され、新たにアプリAP11が論理チャネル#1に割り当てられている。ここでも、説明の便宜上、各時点の参照テーブルの個々の欄のうち、当該時点の直前のプロセスで変更が生じた欄を太線枠で示す。図31に示すOS用参照テーブルT(OS)の場合、チャネル番号#1についての開閉状態が「開」に変更され、アプリ名が「AP11」に変更されている。これは、図28のダイアグラムにおける時点t21の直前のプロセスP21において、アプリケーション選択コマンド「SELECT(#1), AP11」に基づいて、チャネル番号#1を「開」状態として、アプリAP11を割り当てる処理が行われ、OSプログラムによってOS用参照テーブルT(OS)に対する書き換えが行われたためである。この時点t21では、SD用参照テーブルT(SSD1)の内容に変更は生じていない。
続く時点t22では、図32に示すとおり、各参照テーブルの内容の一部に変更が加えられている。まず、OS用参照テーブルT(OS)については、第2行目の開設状態の欄が、「未開設」から「開設済」に書き換えられている。これは、図28のダイアグラムにおける時点t22の直前のプロセスP22において、アプリAP11から管理プログラムSSD1に対して暗号通信路開設依頼があり、当該依頼に応じて、管理プログラムSSD1がアプリAP11のために暗号通信路を開設したためである。その結果、SD用参照テーブルT(SSD1)も全面的に書き換えられている。
図28のダイアグラムにおけるプロセスP22では、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」に基づいて、アプリAP11から管理プログラムSSD1に対する暗号通信路開設依頼がなされる。この時点では、SD用参照テーブルT(SSD1)の状態は、図31に示す状態(時点t21の状態)になっているので、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない。したがって、管理プログラムSSD1は、OSプログラムへの問い合わせを行うことなく、新たな暗号通信路の開設を行う旨を決定し、アプリAP11のための暗号通信路の開設が行われる。
その結果、セッションキー「xxxxxx」が発生され、図32のSD用参照テーブルT(SSD1)に示すように、アプリ名「AP11」,チャネル番号「#1」,セッションキー「xxxxxx」が書き込まれる。一方、OSプログラムには、管理プログラムSSD1から、「論理チャネル#1を用いて暗号通信路を開設した旨」の報告がなされるので、図32のOS用参照テーブルT(OS)に示すように、論理チャネル#1の行の開設状態の欄が「開設済」に書き換えられる。図32に示す時点t22の状態におけるOS用参照テーブルT(OS)およびSD用参照テーブルT(SSD1)は、このような書き込み処理が行われた後の状態ということになる。
次の時点t23では、図33に示すとおり、OS用参照テーブルT(OS)のチャネル番号#1に対応するアプリ名の欄が「AP11」から「AP12」に変更され、その右側の開設状態の欄は初期化され「未開設」に変更されている。これは、図28のダイアグラムにおける時点t23の直前のプロセスP23において、アプリケーション選択コマンド「SELECT(#1), AP12」に基づいて、チャネル番号#1に割り当てられていた旧アプリAP11の選択を解除し、新たに新アプリAP12をチャネル番号#1に割り当てる処理が行われ、OSプログラムによる書き換えが行われたためである。
一方、SD用参照テーブルT(SSD1)については、図に太線枠で示すとおり、各欄の情報が消去され、「無」になっている。これは、図28のダイアグラムにおけるプロセスP23において、解除通知を受けたアプリAP11から管理プログラムSSD1に対して、選択が解除された旨を報告する「報告処理」(一点鎖線の右向き矢印)が実行され、この報告を受けた管理プログラムSSD1が、これまで開設していた旧アプリAP11についての暗号通信路に関する情報をすべて消去したためである。
最後の時点t24では、図34に示すとおり、各参照テーブルの内容の一部に変更が加えられている。まず、OS用参照テーブルT(OS)については、第2行目の開設状態の欄が、「未開設」から「開設済」に書き換えられている。これは、図28のダイアグラムにおける時点t24の直前のプロセスP24において、アプリAP11から管理プログラムSSD1に対して暗号通信路開設依頼があり、当該依頼に応じて、管理プログラムSSD1がアプリAP12のために暗号通信路を開設したためである。その結果、SD用参照テーブルT(SSD1)も全面的に書き換えられている。
図28のダイアグラムにおけるプロセスP24では、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」に基づいて、アプリAP12から管理プログラムSSD1に対する暗号通信路開設依頼がなされる。この時点では、SD用参照テーブルT(SSD1)の状態は、図33に示す状態(時点t23の状態)になっているので、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない。したがって、管理プログラムSSD1は、OSプログラムへの問い合わせを行うことなく、新たな暗号通信路の開設を行う旨を決定し、アプリAP12のための暗号通信路の開設が行われる。
その結果、セッションキー「yyyyyy」が発生され、図34のSD用参照テーブルT(SSD1)に示すように、アプリ名「AP12」,チャネル番号「#1」,セッションキー「yyyyyy」が書き込まれる。一方、OSプログラムには、管理プログラムSSD1から、「論理チャネル#1を用いて暗号通信路を開設した旨」の報告がなされるので、図34のOS用参照テーブルT(OS)に示すように、論理チャネル#1の行の開設状態の欄が「開設済」に書き換えられる。図34に示す時点t24の状態におけるOS用参照テーブルT(OS)およびSD用参照テーブルT(SSD1)は、このような書き込み処理が行われた後の状態ということになる。
以上、図28のダイアグラムに示す正常処理手順における時点t20〜t24に至るまでの各参照テーブルの変遷を、図30〜図34を参照しながら説明した。続いて、図29のダイアグラムに示す欠陥処理手順における時点t20〜t24′に至るまでの各参照テーブルの変遷を説明する。
前述したとおり、図29のダイアグラムに示す前半のプロセスP21,P22は、図28のダイアグラムに示す前半のプロセスP21,P22と全く同じである。したがって、図29のダイアグラムに示す欠陥処理手順における時点t20,t21,t22における各参照テーブルの状態は、それぞれ図30,図31,図32に示すとおりになる。これに対して、後半のプロセスは若干異なる。
まず、図29のダイアグラムに示す後半のプロセスP23′では、解除通知を受けたアプリAP11から管理プログラムSSD1に対して、選択が解除された旨の「報告処理」(一点鎖線の右向き矢印)が実行されない。このため、管理プログラムSSD1は、これまで開設していた暗号通信路が終了したことを認識できないので、SD用参照テーブルT(SSD1)に記録されていた旧アプリAP11についての暗号通信路に関する情報は消去されず、そのまま残ることになる。したがって、プロセスP23′が完了した時点t23′における各参照テーブルの状態は、図33に示す時点t23の状態ではなく、図35に示す時点t23′の状態になる。
すなわち、OS用参照テーブルT(OS)については、チャネル番号#1に割り当てられたプログラムが「AP11」から「AP12」に変更された状態になっているが、SD用参照テーブルT(SSD1)については、時点t22の状態がそのまま維持され、アプリ名「AP11」,チャネル番号「#1」,セッションキー「xxxxxx」が残った状態になる。このように、旧アプリAP11についての暗号通信が既に終了しているにもかかわらず、その暗号通信路に関する情報が残っていることは、漏洩の危険性の見地から、決して好ましいことではないが、新アプリAP12のための暗号通信路を開設する処理には支障は生じない。
すなわち、図29のダイアグラムに示す後半のプロセスP24′では、アプリAP12から管理プログラムSSD1に対して暗号通信路開設依頼があり、この開設依頼を受けた管理プログラムSSD1は、SD用参照テーブルT(SSD1)に開設対象アプリ情報としてアプリAP11が示されているため、その時点での開設状態をOSプログラムに問い合わせることになる。この時点で、OS用参照テーブルT(OS)の状態は、図35に示す状態であり、問い合わせに係る開設対象アプリAP11についての暗号通信路は開設済ではないので、OSプログラムは「未開設」なる回答を返すことになる。その結果、管理プログラムSSD1は、新アプリAP12のための新たな暗号通信路を支障なく開設することができる。
このように、本発明の第2の実施形態によれば、アプリAP11が、選択が解除された旨を報告する正常なプログラムであっても、報告を怠る欠陥プログラムであっても、新たなアプリAP12のための新たな暗号通信路を支障なく開設することができる。この第2の実施形態は、§5で述べた第1の実施形態に比べると、SD用参照テーブルT(SD)のためのメモリ使用量は増加する。すなわち、第1の実施形態では、セッションキーの記録欄のみ確保すればよいが、第2の実施形態では、更に、アプリ名とチャネル番号の記録欄を確保する必要がある。しかしながら、図28および図29のダイアグラムのプロセスP22,P24において、OSプログラムへの問い合わせを省略することができるメリットが得られる。
<<< §7. いくつかの変形例 >>>
最後に、§5で述べた第1の実施形態および§6で述べた第2の実施形態に共通するいくつかの変形例を述べておく。
<7−1. 暗号通信路の開設状態のバリエーション>
これまで述べてきた実施形態では、各参照テーブルに記録する暗号通信路の開設状態として、「未開設」/「開設済」の2通りの状態を定義しているが、必要に応じて、より多数の状態を定義してもかまわない。
たとえば、Java Card(商標)やGlobalPlatform (登録商標)などの仕様では暗号通信路の開設状態として、図36に示すような4つの状態A〜Dが定義されている。ここで、「状態A:未開設」は、暗号通信路の開設やその準備が全くなされていない状態を示し、「状態B:開設中」は、暗号通信路の開設の準備を行っている状態を示し、「状態C:開設済」は、暗号通信路の開設準備が整い、暗号通信を提供できる状態を示し、「状態D:エラー発生」は、暗号通信路の開設後にエラーが発生した状態を示している。
たとえば、図19,図20,図28,図29に示すダイアグラムでは、暗号通信路を開設するプロセスとして、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」についての処理のみを説明したが、Java Card(商標)やGlobalPlatform (登録商標)などの仕様では、その後に外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」についての処理が必要であり、相互認証が完了して、はじめて暗号通信路の開設が行われる。すなわち、管理プログラムSDは、外部装置200から与えられる暗号通信路開設コマンドに基づいて暗号通信路を開設する際に、当該外部装置200に対する認証処理を行い、この認証処理により当該外部装置200が正規の装置と認証されることを条件として、当該外部装置200との間に暗号通信路を開設することになる。
このため、上記仕様では、図36に示す4つの状態A〜Dが定義されており、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」の処理開始から外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」の処理終了までの期間は「状態B:開設中」とし、相互認証が完了してから「状態C:開設済」になる。
そこで、本発明に用いる各参照テーブルに、上記4つの状態A〜Dを記録する運用を採用する場合には、たとえば、「状態A:未開設」および「状態B:開設中」を、これまで述べてきた実施形態における「未開設」の状態として取り扱い、「状態C:開設済」を、これまで述べてきた実施形態における「開設済」の状態として取り扱うようにすればよい。なお、「状態D:エラー発生」が生じた場合は、状態としては「開設済」ということになるが、外部装置200に対してはエラーの応答(レスポンス)が返されることになるので、これまで述べてきた本発明の処理に具体的な変更は生じない。
<7−2. 複数の暗号通信路を同時開設できる装置>
これまで述べた実施形態は、1つの管理プログラムSDについて、同時に開設可能な暗号通信路の数が1つに制限されている例である。したがって、各管理プログラムSDは、暗号通信路を開設済の場合は、新たな暗号通信路の開設を行うことができない。Java Card(商標)やGlobalPlatform (登録商標)などに準拠したUIM向けのICカードの仕様では、セキュリティ確保の観点から、1つの管理プログラムSDが開設可能な暗号通信路の数を1つだけに制限するのが一般的である。
しかしながら、用途によっては、同時に開設可能な暗号通信路の数の制限を2以上に設定するケースもある。もちろん、このようなケースにも本発明を適用することが可能である。要するに、本発明は、管理プログラムに、同時に開設可能な暗号通信路の数の上限値N(但し、2≦N≦論理チャネルの総数)が設定されている場合にも、広く適用可能である。
なお、§5で述べた第1の実施形態を、同時に開設可能な暗号通信路の数の上限値Nが設定されている場合に拡張する場合は、処理手順に若干の変更を加える必要がある。まず、個々の管理プログラムのSD用参照テーブルには、最大で複数N組のセッションキーを記録できるようにしておく。そして、OSプログラムは、管理プログラムからの問い合わせがあったときに、当該管理プログラムが暗号通信路を開設済か否かを回答するだけでなく、当該管理プログラムが開設済の暗号通信路の総数nを回答するようにする。一方、管理プログラムは、回答として得られた総数nが上限値N未満である場合には、新たな暗号通信路の開設を行い、総数nが上限値Nに達している場合には、新たな暗号通信路の開設を行わない、という判断を行えばよい。
たとえば、上限値N=3に設定されている場合、回答された総数nが2以下であれば、新たな暗号通信路(第3番目の暗号通信路)の開設が行われるが、総数nが3に達していると、もはや新たな暗号通信路の開設は行われないことになる。
一方、§6で述べた第2の実施形態を、同時に開設可能な暗号通信路の数の上限値Nが設定されている場合に拡張する場合も、処理手順に若干の変更を加える必要がある。まず、個々の管理プログラムのSD用参照テーブルには、最大で複数N組の開設対象アプリ情報およびセッションキーを記録できるようにしておく。そして、管理プログラムは、OSプログラムに対して問い合わせを行う際に、SD用参照テーブルに開設対象アプリ情報として記録されているアプリ名とチャネル番号との組み合わせのそれぞれに関して暗号通信路が開設済か否かを問い合わせる。
OSプログラムは、管理プログラムからの問い合わせがあったときに、各組み合わせのそれぞれについて、開設済か否かを回答する。そして、管理プログラムは、OSプログラムから、開設済との回答が得られた組み合わせの総数nが、上限値N未満である場合には、新たな暗号通信路の開設を行い、総数nが上限値Nに達している場合には、新たな暗号通信路の開設を行わない、という判断を行えばよい。
<7−3. 複数のインターフェイスを備えた装置>
最近のICカードは、従来の接触型通信インターフェイスに加えて、NFC(Near Field Communication)と呼ばれる近接距離通信用のインターフェイスを備えてきており、外部装置との間で暗号通信を行う複数のインターフェイスを備えた情報処理装置も一般化しつつある。
図37は、外部通信インターフェイスを2組備える情報処理装置100′と外部装置200′との通信状態を示すブロック図である。図示のとおり、この情報処理装置100′は、第1のインターフェイスIF1と第2のインターフェイスIF2を備えたSIMカード11であり、外部装置200′としてのスマートフォン10または外部サーバ20との間で、2つの通信路を介して通信することができる。すなわち、第1のインターフェイスIF1は、第1の通信路を介した通信を行い、第2のインターフェイスIF2は、第2の通信路を介した通信を行うことになる。
このように外部通信インターフェイスを2組備えるデュアルI/F型の情報処理装置100′に本発明を適用する場合、OS用情報格納部121′には、OS用参照テーブルを、個々のインターフェイスごとにそれぞれ別個に設けるようにするのが好ましい。図38は、図37に示す情報処理装置100′内のOS用情報格納部121′に用意されるインターフェイスごとのOS用参照テーブルを示す図である。図の左には、第1のインターフェイスIF1用のOS用参照テーブルの例が示されており、図の右には、第2のインターフェイスIF2用のOS用参照テーブルの例が示されている。図示の例は、第1の実施形態を適用した例であるが、第2の実施形態を適用した場合も同様に個々のインターフェイスごとにOS用参照テーブルが用意される。
図示のとおり、いずれのOS用参照テーブルにも、それぞれ独立してチャネル番号#0〜#3が定義されており、各インターフェイスのそれぞれについて、4つの論理チャネルを開くことが可能である。当然、各インターフェイスのそれぞれについて、別個独立した暗号通信路が開設されるため、暗号通信路の開設状態も各インターフェイスのそれぞれについて別個独立して記録されることになる。なお、SD用参照テーブルについては、これまで述べてきた実施形態と同様に、個々の管理プログラムごとに設けておけば足りる。
要するに、外部装置との間で暗号通信を行う複数のインターフェイスを備えた情報処理装置の場合、個々のインターフェイスごとにそれぞれ別個のOS用参照テーブルを設けるようにし、OSプログラムがOS用参照テーブルに対する記録もしくは参照を行うときには、暗号通信路の開設が行われるインターフェイスに対応するOS用参照テーブルを選択するようにすればよい。たとえば、図示のようなデュアルI/F型の情報処理装置100′の場合、OSプログラムは、OS用参照テーブルに対する記録もしくは参照を行うときに、暗号通信路の開設対象となるインターフェイスがIF1・IF2のいずれであるかを認識した上で、対応するいずれか一方のOS用参照テーブルを選択すればよい。
一般に、複数のインターフェイスを備えた情報処理装置には、装置全体に対する全体リセット(コールドリセット)の機能と、個々のインターフェイスに対する個別リセット(ウォームリセット)の機能とが備わっている。前者の全体リセットは、通常、装置に対する電源をONにした際に行われるリセットであり、装置全体が初期状態から起動することになるので、本願の各実施形態で用いられるOS用参照テーブルやSD用参照テーブルは初期化される。これに対して後者の個別リセットは、通常、個々のインターフェイスに備わっているリセット端子にリセット信号を与えるか、もしくは、I/O端子に特有のリセットビットパターンを与えることにより実行される。
図39は、図37に示す情報処理装置100′の各インターフェイスのリセットに関する特徴を示す表である。この例では、第1のインターフェイスIF1は、接触型の「7816」という規格に基づくものであり、個別リセットの方法としては、リセット端子にリセット信号を与える方法が採用されている。一方、第2のインターフェイスIF2は、接触型の「SWP」という規格に基づくものであり、個別リセットの方法としては、I/O端子に特有のリセットビットパターンを与える方法が採用されている。
このようなデュアルI/F型の情報処理装置100′の場合、図39の表の「情報の初期化」の欄に記載したとおり、通常、第1のインターフェイスIF1についての個別リセットが行われた際には、第1のインターフェイスの情報のみが初期化されるような運用がとられ、第2のインターフェイスIF2についての個別リセットが行われた際には、第2のインターフェイスの情報のみが初期化されるような運用がとられる。これは、一方のインターフェイスのみを個別リセットする際に、他方のインターフェイスが外部装置と通信中の場合もあるためである。
このような点を考慮すると、複数のインターフェイスを備え、各インターフェイスに対して、それぞれ個別にリセットを行う機能を有する情報処理装置に本発明を適用して、図38に示すように、個々のインターフェイスごとにそれぞれ別個のOS用参照テーブルを用意した場合は、特定のインターフェイスに対する個別リセットが行われたときに、OSプログラムは、当該個別リセットの対象となった特定のインターフェイスに対応するOS用参照テーブルを初期化(クリア)するようにすればよい。
たとえば、図38に示す例において、第1のインターフェイスIF1に対する個別リセットが行われた場合には、図の左に示す第1のインターフェイスIF1についてのOS用参照テーブルのみを初期化し(すべてのチャネル番号に対応する開閉状態の欄を「閉」にし、アプリ名の欄を「無」にし、開設状態の欄を「未開設」にする)、図の右に示す第2のインターフェイスIF2についてのOS用参照テーブルはそのままの状態に残すようにする。逆に、第2のインターフェイスIF2に対する個別リセットが行われた場合には、図の右に示す第2のインターフェイスIF2についてのOS用参照テーブルのみを初期化し、図の左に示す第1のインターフェイスIF1についてのOS用参照テーブルはそのままの状態に残すようにする。
なお、このような個別リセットが行われた場合、各管理プログラムについてのSD用参照テーブルは、直接的には初期化されるわけではないが、OSプログラムは、OS用参照テーブルの初期化時に、論理チャネルに対応づけられていたアプリケーションプログラムに対する「Deselect」処理を実行することになるので、仕様を遵守した正常なアプリケーションプログラムからは、管理プログラムSDに対して選択が解除された旨の報告がなされるため、当該報告に基づいて、SD用参照テーブルに対する消去処理が行われることになる。
<7−4. 同一のアプリケーションプログラムについての再開設>
これまで述べてきた種々の実施例では、特定のチャネルについて、第1のアプリケーションプログラムから第2のアプリケーションプログラムへの切り換えを行う場合を例にとって、暗号通信路の開設処理のプロセスを説明した。たとえば、図19のダイアグラムに示す手順は、チャネル番号「#1」に第1のアプリケーションプログラム「AP11」を割り当てて暗号通信路を開設して(プロセスP11,P12)、暗号通信を行った後に、今度は、同じチャネル番号「#1」に第2のアプリケーションプログラム「AP12」を割り当てて暗号通信路を開設して(プロセスP13,P14)、暗号通信を行う手順である。
しかしながら、実用上は、同一のアプリケーションプログラムについて、暗号通信路の開設を終了した直後に再開設するようなケースがあり、そのような再開設を行うケースでは、これまで述べた実施例とは異なる例外的な取り扱いを行うのが好ましい。たとえば、図19のダイアグラムの場合、プロセスP12が完了した後に、アプリケーションプログラムAP11は、外部装置200との間で暗号通信(図19では図示省略)を行うことになる。このとき、何らかの要因で暗号通信に失敗し、「エラー発生」の状態に陥ったとすると、外部装置200は、再度、暗号通信路の開設を行うために、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」を与える処理を行うことになる(「AP11」は選択済みなので、アプリケーション選択コマンドによる再選択は行われない)。
この場合、図19のプロセスP12が再度実行されることになるが、管理プログラムSSD1がOSプログラムに問い合わせを行うと、「SSD1は開設済」との回答が得られることになるので、これまで述べた手順では、暗号通信路の開設は拒絶されてしまうことになる。そこで、暗号通信路開設コマンドが与えられた場合に、当該コマンドのチャネル(暗号通信路を開設しようとしているチャネル)と同一のチャネルについて「開設済」となっていた場合には、再度の開設が実行されるような例外的な取り扱いを行うようにするのが好ましい。上例の場合、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられた場合、同一のチャネル#1について既に「SSD1が開設済」になっていても、再度の開設が実行されることになる。
この例外処理を、図38の左のOS用参照テーブルに示す具体例で説明すると、次のようになる。まず、図示の状態において、チャネル#0についての暗号通信路開設コマンド「INITIALIZE UPDATE (#0)」が与えられると、管理プログラムSSD1がOSプログラムに問い合わせを行い、「SSD1開設済」との回答が得られることになる。この場合、与えられた暗号通信路開設コマンドのチャネル番号「#0」と「SSD1開設済」となっているチャネル番号「#1」は同一ではないので、暗号通信路の開設は拒絶される。
これに対して、同じく図38の左に示す状態において、チャネル#1についての暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられると、やはり「SSD1開設済」との回答が得られることになるが、与えられた暗号通信路開設コマンドのチャネル番号「#1」と「SSD1開設済」となっているチャネル番号「#1」が同一なので、暗号通信路の開設(再開設)が実行されることになる。