(57)【要約】【課題】アプリケーションプログラムから管理プログラムに対して適切な報告がなされなかった場合にも、新たな暗号通信路が適切に開設できるようにする【解決手段】ＯＳ用情報格納部１２１内に、チャネル番号とアプリ名と暗号通信路の開設状態とを対応づけるＯＳ用参照テーブルを記録し、どの管理プログラムがどのアプリのために暗号通信路を開設済であるかを示す暗号通信路開設情報をＯＳが把握できるようにする。管理プログラムＳＳＤ１が新たな暗号通信路を開設する際には、ＳＳＤ１が既に暗号通信路を開設済であるか否かをＯＳに問い合わせ、未開設なら新暗号通信路を開設し、発生させたセッションキーをＳＤ用情報格納部１２２内のＳＳＤ１用の参照テーブルに記録する。既に開設済なら新暗号通信路の開設は中止する。ＯＳは、論理チャネルに新アプリの割り当てがあった場合、旧アプリの暗号通信路開設情報を未開設状態に初期化する。【選択図】図２３
2018011104.tif 000002
【特許請求の範囲】
【請求項１】
外部装置との間で暗号通信を行う機能を有する情報処理装置であって、
ＯＳプログラムおよびアプリケーションプログラムを格納するプログラム格納部と、
前記各プログラムによって利用されるデータを格納するデータ格納部と、
前記データ格納部に格納されているデータを利用しながら、前記プログラム格納部に格納されているプログラムを実行するプログラム実行部と、
を備え、
前記プログラム格納部には、アプリケーションプログラムとして、少なくとも１つの管理プログラムと少なくとも１つの一般アプリプログラムとが格納されており、
前記データ格納部には、前記ＯＳプログラムによって利用されるデータを格納するＯＳ用情報格納部と、前記管理プログラムによって利用されるデータを格納するＳＤ用情報格納部と、前記一般アプリプログラムによって利用されるデータを格納するＡＰ用情報格納部と、が設けられており、
前記管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、自己もしくは自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置との間に暗号通信路を開設する暗号通信路開設機能を有し、外部装置から与えられる暗号通信路開設コマンドに基づいて当該機能を実行するプログラムであり、
前記ＯＳ用情報格納部には、暗号通信路を開設済の管理プログラムを示す暗号通信路開設情報を記録するためのＯＳ用参照テーブルが格納されており、
前記管理プログラムは、新たな暗号通信路の開設を行う際に、前記ＯＳプログラムに対して前記ＯＳ用参照テーブルに記録されている前記暗号通信路開設情報の内容を問い合わせ、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
ＯＳ用参照テーブルは、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報と、このチャネル対応情報により対応関係が示されているアプリケーションプログラムのために暗号通信路を開設済の管理プログラムを示す暗号通信路開設情報と、を記録するテーブルであり、
ＯＳプログラムは、
外部装置から、特定の選択チャネル番号に特定の選択アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、前記ＯＳ用参照テーブルに、前記選択チャネル番号と前記選択アプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するとともに、前記選択アプリケーションプログラムに関する暗号通信路開設情報の記録を未開設状態に初期化し、
外部装置から、特定のチャネル番号を指定した所定コマンドが与えられたときに、前記ＯＳ用参照テーブルに記録されている前記チャネル対応情報を参照することにより、指定されたチャネル番号に対応するアプリケーションプログラムを認識し、与えられた前記所定コマンドを、認識したアプリケーションプログラムに引き渡すことを特徴とする情報処理装置。
【請求項３】
請求項２に記載の情報処理装置において、
ＯＳプログラムは、
管理プログラムから、当該管理プログラムが暗号通信路を開設済か否かの問い合わせがあったときに、ＯＳ用参照テーブル内の暗号通信路開設情報を参照することにより、当該問い合わせについての回答を行い、
管理プログラムから、当該管理プログラムが暗号通信路を開設した旨の報告があったときに、当該報告に応じて、当該管理プログラムが特定のアプリケーションプログラムのために暗号通信路を開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルに書き込み、
アプリケーションプログラムは、ＯＳプログラムから暗号通信路開設コマンドの引き渡しを受けたときに、自己を管理する管理プログラムに対して、自己のための暗号通信路開設依頼を行い、
管理プログラムは、前記暗号通信路開設依頼を受けたときに、ＯＳプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行い、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定し、新たな暗号通信路を開設した際には、その旨をＯＳプログラムに報告することを特徴とする情報処理装置。
【請求項４】
請求項３に記載の情報処理装置において、
管理プログラムには、同時に開設可能な暗号通信路の数が１つだけという制限が課されており、
ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、当該管理プログラムが暗号通信路を開設済か、未開設か、のいずれであるかを回答し、
管理プログラムは、未開設との回答が得られた場合には、新たな暗号通信路の開設を行い、開設済との回答が得られた場合には、新たな暗号通信路の開設を行わないことを特徴とする情報処理装置。
【請求項５】
請求項３に記載の情報処理装置において、
管理プログラムには、同時に開設可能な暗号通信路の数の上限値Ｎが設定されており、
ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、当該管理プログラムが開設済の暗号通信路の総数ｎを回答し、
管理プログラムは、前記総数ｎが前記上限値Ｎ未満である場合には、新たな暗号通信路の開設を行い、前記総数ｎが前記上限値Ｎに達している場合には、新たな暗号通信路の開設を行わないことを特徴とする情報処理装置。
【請求項６】
請求項１〜５のいずれかに記載の情報処理装置において、
ＳＤ用情報格納部には、個々の管理プログラムごとに、それぞれ開設済の暗号通信路に利用するセッションキーを記録できるＳＤ用参照テーブルが格納されており、
管理プログラムは、新たな暗号通信路の開設を行う際に、当該暗号通信路に利用するセッションキーを発生させ、これを前記ＳＤ用参照テーブルに書き込むことを特徴とする情報処理装置。
【請求項７】
請求項６に記載の情報処理装置において、
ＯＳプログラムは、外部装置から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、前記旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与え、
管理プログラムは、自己の管理下にある前記旧アプリケーションプログラムから前記解除通知があった旨の報告を受けた場合に、ＳＤ用参照テーブルに書き込まれている前記旧アプリケーションプログラムについてのセッションキーを消去することを特徴とする情報処理装置。
【請求項８】
外部装置との間で暗号通信を行う機能を有する情報処理装置であって、
ＯＳプログラムおよびアプリケーションプログラムを格納するプログラム格納部と、
前記各プログラムによって利用されるデータを格納するデータ格納部と、
前記データ格納部に格納されているデータを利用しながら、前記プログラム格納部に格納されているプログラムを実行するプログラム実行部と、
を備え、
前記プログラム格納部には、アプリケーションプログラムとして、少なくとも１つの管理プログラムと少なくとも１つの一般アプリプログラムとが格納されており、
前記データ格納部には、前記ＯＳプログラムによって利用されるデータを格納するＯＳ用情報格納部と、前記管理プログラムによって利用されるデータを格納するＳＤ用情報格納部と、前記一般アプリプログラムによって利用されるデータを格納するＡＰ用情報格納部と、が設けられており、
前記管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、自己もしくは自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置との間に暗号通信路を開設する暗号通信路開設機能を有し、外部装置から与えられる暗号通信路開設コマンドに基づいて当該機能を実行するプログラムであり、
前記ＯＳ用情報格納部には、特定のアプリケーションプログラムのために暗号通信路が開設済か否かを示す暗号通信路開設情報を記録するためのＯＳ用参照テーブルが格納されており、
前記管理プログラムは、新たな暗号通信路の開設を行う際に、必要に応じて、前記ＯＳプログラムに対して前記ＯＳ用参照テーブルに記録されている前記暗号通信路開設情報の内容を問い合わせ、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定することを特徴とする情報処理装置。
【請求項９】
請求項８に記載の情報処理装置において、
ＯＳ用参照テーブルは、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報と、このチャネル対応情報により対応関係が示されているアプリケーションプログラムのために暗号通信路が開設済か否かを示す暗号通信路開設情報と、を記録するテーブルであり、
ＯＳプログラムは、
外部装置から、特定の選択チャネル番号に特定の選択アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、前記ＯＳ用参照テーブルに、前記選択チャネル番号と前記選択アプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するとともに、前記選択アプリケーションプログラムに関する暗号通信路開設情報の記録を未開設状態に初期化し、
外部装置から、特定のチャネル番号を指定した所定コマンドが与えられたときに、前記ＯＳ用参照テーブルに記録されている前記チャネル対応情報を参照することにより、指定されたチャネル番号に対応するアプリケーションプログラムを認識し、与えられた前記所定コマンドを、認識したアプリケーションプログラムに引き渡すことを特徴とする情報処理装置。
【請求項１０】
請求項９に記載の情報処理装置において、
ＯＳプログラムは、
管理プログラムから、特定のアプリケーションプログラムのために暗号通信路が開設済か否かの問い合わせがあったときに、ＯＳ用参照テーブル内の暗号通信路開設情報を参照することにより、当該問い合わせについての回答を行い、
管理プログラムから、当該管理プログラムが暗号通信路を開設した旨の報告があったときに、当該報告に応じて、特定のアプリケーションプログラムのために暗号通信路が開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルに書き込み、
アプリケーションプログラムは、ＯＳプログラムから暗号通信路開設コマンドの引き渡しを受けたときに、自己を管理する管理プログラムに対して、自己のための暗号通信路開設依頼を行い、
ＳＤ用情報格納部には、管理プログラムによる暗号通信路の開設対象となるアプリケーションプログラムを示す開設対象アプリ情報を記録するためのＳＤ用参照テーブルが格納されており、
管理プログラムは、前記暗号通信路開設依頼を受けたときに、
前記開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない場合には、新たな暗号通信路の開設を行う旨を決定し、
前記開設対象アプリ情報として所定の開設対象アプリケーションプログラムが示されていた場合には、ＯＳプログラムに対して、前記所定の開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否かの問い合わせを行い、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定し、
前記所定の開設対象アプリケーションプログラムのために新たな暗号通信路を開設した際には、その旨をＯＳプログラムに報告するとともに、新たな暗号通信路の開設対象が前記所定のアプリケーションプログラムであることを示す開設対象アプリ情報を前記ＳＤ用参照テーブルに書き込むことを特徴とする情報処理装置。
【請求項１１】
請求項１０に記載の情報処理装置において、
開設対象アプリ情報が、開設対象アプリケーションプログラムを特定するアプリ名と、当該開設対象アプリケーションプログラムに対応づけられたチャネル番号と、を含んでおり、
管理プログラムは、新たな暗号通信路を開設する際には、アプリ名とチャネル番号とを含む開設対象アプリ情報をＳＤ用参照テーブルに書き込み、ＯＳプログラムに対して問い合わせを行う際には、前記ＳＤ用参照テーブルに開設対象アプリ情報として記録されているアプリ名とチャネル番号との組み合わせに関して暗号通信路が設定済か否かを問い合わせ、
ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、当該組み合わせに関して暗号通信路が設定済か否かを回答することを特徴とする情報処理装置。
【請求項１２】
請求項１１に記載の情報処理装置において、
管理プログラムには、同時に開設可能な暗号通信路の数が１つだけという制限が課されており、
管理プログラムは、ＯＳプログラムから、問い合わせに係る組み合わせに関して未開設との回答が得られた場合には、新たな暗号通信路の開設を行い、当該組み合わせに関して開設済との回答が得られた場合には、新たな暗号通信路の開設を行わないことを特徴とする情報処理装置。
【請求項１３】
請求項１１に記載の情報処理装置において、
管理プログラムには、同時に開設可能な暗号通信路の数の上限値Ｎが設定されており、
管理プログラムは、ＯＳプログラムに対して問い合わせを行う際には、前記ＳＤ用参照テーブルに開設対象アプリ情報として記録されているアプリ名とチャネル番号との組み合わせのそれぞれに関して暗号通信路が開設済か否かを問い合わせ、
ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、各組み合わせのそれぞれについての回答を行い、
管理プログラムは、ＯＳプログラムから、開設済との回答が得られた組み合わせの総数ｎが、前記上限値Ｎ未満である場合には、新たな暗号通信路の開設を行い、前記総数ｎが前記上限値Ｎに達している場合には、新たな暗号通信路の開設を行わないことを特徴とする情報処理装置。
【請求項１４】
請求項１０〜１３のいずれかに記載の情報処理装置において、
ＯＳプログラムは、外部装置から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、前記旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与え、
管理プログラムは、自己の管理下にある前記旧アプリケーションプログラムから前記解除通知があった旨の報告を受けた場合に、ＳＤ用参照テーブルに書き込まれている前記旧アプリケーションプログラムについての開設対象アプリ情報を消去することを特徴とする情報処理装置。
【請求項１５】
請求項８〜１４のいずれかに記載の情報処理装置において、
ＳＤ用情報格納部には、個々の管理プログラムごとに、それぞれ開設済の暗号通信路に利用するセッションキーを記録できるＳＤ用参照テーブルが格納されており、
管理プログラムは、新たな暗号通信路の開設を行う際に、当該暗号通信路に利用するセッションキーを発生させ、これを前記ＳＤ用参照テーブルに書き込むことを特徴とする情報処理装置。
【請求項１６】
請求項１５に記載の情報処理装置において、
ＯＳプログラムは、外部装置から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、前記旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与え、
管理プログラムは、自己の管理下にある前記旧アプリケーションプログラムから前記解除通知があった旨の報告を受けた場合に、ＳＤ用参照テーブルに書き込まれている前記旧アプリケーションプログラムについてのセッションキーを消去することを特徴とする情報処理装置。
【請求項１７】
請求項１〜１６のいずれかに記載の情報処理装置において、
管理プログラムは、外部装置から与えられる暗号通信路開設コマンドに基づいて暗号通信路を開設する際に、当該外部装置に対する認証処理を行い、この認証処理により当該外部装置が正規の装置と認証されることを条件として、当該外部装置との間に暗号通信路を開設することを特徴とする情報処理装置。
【請求項１８】
請求項１〜１７のいずれかに記載の情報処理装置において、
外部装置との間で暗号通信を行う複数のインターフェイスを備えており、
ＯＳ用参照テーブルが、個々のインターフェイスごとにそれぞれ別個に設けられており、
ＯＳプログラムがＯＳ用参照テーブルに対する記録もしくは参照を行うときに、暗号通信路の開設が行われるインターフェイスに対応するＯＳ用参照テーブルを選択することを特徴とする情報処理装置。
【請求項１９】
請求項１８に記載の情報処理装置において、
複数のインターフェイスに対して、それぞれ個別にリセットを行う機能を有し、
ＯＳプログラムが、特定のインターフェイスに対する個別リセットが行われたときに、当該個別リセットの対象となった特定のインターフェイスに対応するＯＳ用参照テーブルを初期化することを特徴とする情報処理装置。
【請求項２０】
請求項１〜１９のいずれかに記載の情報処理装置によって構成されるＳＩＭカードであって、外部装置としてのスマートフォンもしくは外部サーバとの間で暗号通信を行う機能を有するＳＩＭカード。
【請求項２１】
請求項１〜１９のいずれかに記載の情報処理装置におけるＯＳプログラムもしくは管理プログラムとして機能するプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、外部装置との間に暗号通信路を開設して暗号通信を行う機能を備えた情報処理装置に関する。
【背景技術】
【０００２】
情報処理装置が外部装置との間で情報のやりとりを行う場合、通信の安全性を確保するために、両者間にセキュアな暗号通信路を開設し、この暗号通信路を介して暗号通信を行うことが欠かせない。特に、スマートフォンやＩＣカードなどの携帯型の情報処理装置では、紛失によって悪意をもった者の手に渡る可能性があるため、十分なセキュリティ対策を講じておく必要がある。
【０００３】
最近は、スマートフォンをはじめとする携帯型端末装置が普及しており、これらの端末装置には、通常、ＳＩＭカードやＵＩＭカードと呼ばれているＩＣカードが装着されている。そしてこのＩＣカードと端末装置、あるいは、このＩＣカードと外部のサーバ装置との間で、所定の通信路を介して情報のやりとりが行われる。このとき、当該情報が機密性を有するものである場合には、セキュアな通信路を開設して暗号化された情報のやりとりを行う必要がある。
【０００４】
このような事情から、ＩＣカードと外部装置との間にセキュアな通信路を開設して暗号通信を行う様々な方法が提案されている。たとえば、下記の特許文献１には、所定の変換アルゴリズムに基づくデータ変換処理機能を有するプロキシ装置を介した通信を行うことにより、機密情報の漏洩を防止する技術が開示されている。また、特許文献２には、インターネットを介してＩＣカードとサーバ装置との間で情報のやりとりを行う際に、公開鍵暗号方式を利用した暗号化通信を行う技術が開示されており、特許文献３には、そのような暗号化通信の最中に、セキュリティに関わる異常発生が検知された場合に、速やかにシステム復旧処理を行う技術が開示されている。
【０００５】
一方、特許文献４には、サーバ装置側に、ＩＣカードと１対１に対応するＩＣカード対応領域を設け、このＩＣカード対応領域と利用者端末装置との間にセキュアな通信路を設定してサーバ装置とＩＣカードとを一体化する技術が開示されている。また、特許文献５には、通信インターフェイスを複数組備えた情報処理装置における外部装置との通信方法が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−０５５９６１号公報
【特許文献２】特開２００２−２１７８９５号公報
【特許文献３】特開２００６−１９０２２２号公報
【特許文献４】特開２０１０−０７３１８８号公報
【特許文献５】特開２００８−１２３２０３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
情報処理装置と外部装置との間にセキュアな暗号通信路を開設するためには、両方の装置に、共通の暗号化プロトコルに基づいた暗号通信処理機能をもたせる必要がある。すなわち、送信側では所定の暗号鍵および所定の暗号化プロトコルを用いて、送信対象となる情報を暗号化して送り出し、受信側では、受信した暗号化情報を、送信側と同じ暗号鍵および暗号化プロトコルを用いて復号することになる。このため、情報処理装置および外部装置には、予め、特定の暗号鍵および暗号化プロトコルを用いた暗号通信処理機能が組み込まれることになる。
【０００８】
一方、情報処理装置の多用途化に伴い、情報処理装置の内部では、多数のアプリケーションプログラムを階層構造化して管理する手法が採用されてきている。たとえば、Java Card（商標）やGlobalPlatform （登録商標）などの仕様に準拠したＩＣカードでは、一般のアプリケーションプログラムは、ＳＤ（Security Domain）と呼ばれる管理プログラムの管理下におかれて管理される。この管理プログラムは、自己の管理下に新たなアプリケーションプログラムをインストールしたり、自己の管理下にあるアプリケーションプログラムのために暗号通信路を開設したりする機能を有しており、一般的なアプリケーションプログラムが外部装置と通信を行う場合、自己を管理する管理プログラムに暗号通信路の開設を委ねることになる。
【０００９】
上記仕様に準拠した一般的なＩＣカードの場合、外部装置との間に複数の論理チャネルを開き、個々のアプリケーションプログラムに特定の論理チャネルを割り当て、複数のアプリケーションプログラムによる外部通信を並列的に処理することができる。したがって、理論的には、管理プログラムは、外部装置との間に論理チャネルの数に応じた複数の暗号通信路を開設することが可能である。しかしながら、暗号通信路を開設するためには、暗号処理に必要なセッションキー等を一時的に発生させ、これを適切に管理する必要がある。
【００１０】
すなわち、複数の暗号通信路を同時開設した場合、個々の暗号通信路ごとにセッションキー等の重要なデータを管理する必要がある。通常、暗号通信路の開設が終了すると、当該暗号通信路で利用されたセッションキー等は消去されることになるが、複数の暗号通信路が同時に開設されていると、それぞれのセッションキー等が情報処理装置内に一時的に保存されている状態になり、漏洩の危険性が高まることになる。このような事情から、通常は、１つの管理プログラムが同時に開設可能な暗号通信路の数に制限が課される。たとえば、上記仕様に準拠したＵＩＭ向けのＩＣカードの場合、１つの管理プログラムが同時に開設可能な暗号通信路の数は１つに制限されている。
【００１１】
このような制限が課されている場合、暗号通信路の終了処理を適切に行うことは重要である。たとえば、１つの管理プログラムが同時に開設可能な暗号通信路の数が１つに制限されている場合、管理プログラムは、既に開設済の暗号通信路に対する終了処理が行われない限り、新たな暗号通信路を開設することができない。ところが、実際には、アプリケーションプログラム自身は外部装置との間の通信を終えているのに、通信終了の報告が管理プログラムに対して適切になされないため、管理プログラムが既に開設済の暗号通信路に対する終了処理を行うことができない事態が生じる。そうなると、本来は新たな暗号通信路を開設できる状態であるのに、処理の不手際により、開設ができない状況に陥ることになる。
【００１２】
外部装置との間に論理チャネルを開いて通信を行う情報処理装置の場合、通常、論理チャネルの管理はＯＳプログラムが行い、暗号通信路の管理は管理プログラムが行うことになる。このため、上記仕様に準拠した一般的なＩＣカードの場合、ＯＳプログラムが特定のアプリケーションプログラムについて論理チャネルの割り当てを終了したときには、その旨を当該特定のアプリケーションプログラムに通知することになっており、また、通知を受けたアプリケーションプログラムは、自己を管理する管理プログラムにその旨を報告することになっている。このような報告が適切に行われれば、管理プログラムは、既に開設済の暗号通信路に対して適切な終了処理を実行することができる。しかしながら、上記報告を適切に行わないアプリケーションプログラムが存在すると、管理プログラムは、適切な終了処理を実行することができない。
【００１３】
前述の特許文献５にも開示されているように、最近のＩＣカードは、従来の接触型通信インターフェイスに加えて、ＮＦＣ（Near Field Communication）と呼ばれる近接距離通信用のインターフェイスを備えてきており、ＮＦＣを利用して通信を行う様々なアプリケーションプログラムが配布されるようになってきている。また、アプリケーションプログラムのベンダーも、大企業から中小企業に至るまで裾野が広がってきている。このため、配布されるアプリケーションプログラムの中には、「通信終了時にはその旨を管理プログラムに報告する」という仕様上の取り決めを遵守していない欠陥プログラムも散見されるようになってきており、そのような欠陥プログラムの数は益々増大してゆくものと予想される。
【００１４】
そこで本発明は、自己の管理下にあるアプリケーションプログラムのために暗号通信路を開設する機能をもった管理プログラムが組み込まれた情報処理装置において、アプリケーションプログラムから管理プログラムに対して適切な報告がなされなかった場合にも、新たな暗号通信路開設処理が適切に行われるようにすることを目的とする。
【課題を解決するための手段】
【００１５】
(1)   本発明の第１の態様は、外部装置との間で暗号通信を行う機能を有する情報処理装置において、
ＯＳプログラムおよびアプリケーションプログラムを格納するプログラム格納部と、
各プログラムによって利用されるデータを格納するデータ格納部と、
データ格納部に格納されているデータを利用しながら、プログラム格納部に格納されているプログラムを実行するプログラム実行部と、
を設け、
プログラム格納部には、アプリケーションプログラムとして、少なくとも１つの管理プログラムと少なくとも１つの一般アプリプログラムとが格納されており、
データ格納部には、ＯＳプログラムによって利用されるデータを格納するＯＳ用情報格納部と、管理プログラムによって利用されるデータを格納するＳＤ用情報格納部と、一般アプリプログラムによって利用されるデータを格納するＡＰ用情報格納部と、が設けられており、
管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、自己もしくは自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置との間に暗号通信路を開設する暗号通信路開設機能を有し、外部装置から与えられる暗号通信路開設コマンドに基づいて当該機能を実行するプログラムであり、
ＯＳ用情報格納部には、暗号通信路を開設済の管理プログラムを示す暗号通信路開設情報を記録するためのＯＳ用参照テーブルが格納されており、
管理プログラムは、新たな暗号通信路の開設を行う際に、ＯＳプログラムに対してＯＳ用参照テーブルに記録されている暗号通信路開設情報の内容を問い合わせ、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定するようにしたものである。
【００１６】
(2)   本発明の第２の態様は、上述した第１の態様に係る情報処理装置において、
ＯＳ用参照テーブルは、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報と、このチャネル対応情報により対応関係が示されているアプリケーションプログラムのために暗号通信路を開設済の管理プログラムを示す暗号通信路開設情報と、を記録するテーブルであり、
ＯＳプログラムは、
外部装置から、特定の選択チャネル番号に特定の選択アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、ＯＳ用参照テーブルに、選択チャネル番号と選択アプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するとともに、選択アプリケーションプログラムに関する暗号通信路開設情報の記録を未開設状態に初期化し、
外部装置から、特定のチャネル番号を指定した所定コマンドが与えられたときに、ＯＳ用参照テーブルに記録されているチャネル対応情報を参照することにより、指定されたチャネル番号に対応するアプリケーションプログラムを認識し、与えられた所定コマンドを、認識したアプリケーションプログラムに引き渡すようにしたものである。
【００１７】
(3)   本発明の第３の態様は、上述した第２の態様に係る情報処理装置において、
ＯＳプログラムは、
管理プログラムから、当該管理プログラムが暗号通信路を開設済か否かの問い合わせがあったときに、ＯＳ用参照テーブル内の暗号通信路開設情報を参照することにより、当該問い合わせについての回答を行い、
管理プログラムから、当該管理プログラムが暗号通信路を開設した旨の報告があったときに、当該報告に応じて、当該管理プログラムが特定のアプリケーションプログラムのために暗号通信路を開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルに書き込み、
アプリケーションプログラムは、ＯＳプログラムから暗号通信路開設コマンドの引き渡しを受けたときに、自己を管理する管理プログラムに対して、自己のための暗号通信路開設依頼を行い、
管理プログラムは、暗号通信路開設依頼を受けたときに、ＯＳプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行い、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定し、新たな暗号通信路を開設した際には、その旨をＯＳプログラムに報告するようにしたものである。
【００１８】
(4)   本発明の第４の態様は、上述した第３の態様に係る情報処理装置において、
管理プログラムには、同時に開設可能な暗号通信路の数が１つだけという制限が課されており、
ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、当該管理プログラムが暗号通信路を開設済か、未開設か、のいずれであるかを回答し、
管理プログラムは、未開設との回答が得られた場合には、新たな暗号通信路の開設を行い、開設済との回答が得られた場合には、新たな暗号通信路の開設を行わないようにしたものである。
【００１９】
(5)   本発明の第５の態様は、上述した第３の態様に係る情報処理装置において、
管理プログラムには、同時に開設可能な暗号通信路の数の上限値Ｎが設定されており、
ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、当該管理プログラムが開設済の暗号通信路の総数ｎを回答し、
管理プログラムは、総数ｎが上限値Ｎ未満である場合には、新たな暗号通信路の開設を行い、総数ｎが上限値Ｎに達している場合には、新たな暗号通信路の開設を行わないようにしたものである。
【００２０】
(6)   本発明の第６の態様は、上述した第１〜第５の態様に係る情報処理装置において、
ＳＤ用情報格納部には、個々の管理プログラムごとに、それぞれ開設済の暗号通信路に利用するセッションキーを記録できるＳＤ用参照テーブルが格納されており、
管理プログラムは、新たな暗号通信路の開設を行う際に、当該暗号通信路に利用するセッションキーを発生させ、これをＳＤ用参照テーブルに書き込むようにしたものである。
【００２１】
(7)   本発明の第７の態様は、上述した第６の態様に係る情報処理装置において、
ＯＳプログラムは、外部装置から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、当該旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与え、
管理プログラムは、自己の管理下にある旧アプリケーションプログラムから解除通知があった旨の報告を受けた場合に、ＳＤ用参照テーブルに書き込まれている旧アプリケーションプログラムについてのセッションキーを消去するようにしたものである。
【００２２】
(8)   本発明の第８の態様は、外部装置との間で暗号通信を行う機能を有する情報処理装置において、
ＯＳプログラムおよびアプリケーションプログラムを格納するプログラム格納部と、
各プログラムによって利用されるデータを格納するデータ格納部と、
データ格納部に格納されているデータを利用しながら、プログラム格納部に格納されているプログラムを実行するプログラム実行部と、
を設け、
プログラム格納部には、アプリケーションプログラムとして、少なくとも１つの管理プログラムと少なくとも１つの一般アプリプログラムとが格納されており、
データ格納部には、ＯＳプログラムによって利用されるデータを格納するＯＳ用情報格納部と、管理プログラムによって利用されるデータを格納するＳＤ用情報格納部と、一般アプリプログラムによって利用されるデータを格納するＡＰ用情報格納部と、が設けられており、
管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、自己もしくは自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置との間に暗号通信路を開設する暗号通信路開設機能を有し、外部装置から与えられる暗号通信路開設コマンドに基づいて当該機能を実行するプログラムであり、
ＯＳ用情報格納部には、特定のアプリケーションプログラムのために暗号通信路が開設済か否かを示す暗号通信路開設情報を記録するためのＯＳ用参照テーブルが格納されており、
管理プログラムは、新たな暗号通信路の開設を行う際に、必要に応じて、ＯＳプログラムに対してＯＳ用参照テーブルに記録されている暗号通信路開設情報の内容を問い合わせ、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定するようにしたものである。
【００２３】
(9)   本発明の第９の態様は、上述した第８の態様に係る情報処理装置において、
ＯＳ用参照テーブルは、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報と、このチャネル対応情報により対応関係が示されているアプリケーションプログラムのために暗号通信路が開設済か否かを示す暗号通信路開設情報と、を記録するテーブルであり、
ＯＳプログラムは、
外部装置から、特定の選択チャネル番号に特定の選択アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、ＯＳ用参照テーブルに、選択チャネル番号と選択アプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するとともに、選択アプリケーションプログラムに関する暗号通信路開設情報の記録を未開設状態に初期化し、
外部装置から、特定のチャネル番号を指定した所定コマンドが与えられたときに、ＯＳ用参照テーブルに記録されているチャネル対応情報を参照することにより、指定されたチャネル番号に対応するアプリケーションプログラムを認識し、与えられた所定コマンドを、認識したアプリケーションプログラムに引き渡すようにしたものである。
【００２４】
(10)  本発明の第１０の態様は、上述した第９の態様に係る情報処理装置において、
ＯＳプログラムは、
管理プログラムから、特定のアプリケーションプログラムのために暗号通信路が開設済か否かの問い合わせがあったときに、ＯＳ用参照テーブル内の暗号通信路開設情報を参照することにより、当該問い合わせについての回答を行い、
管理プログラムから、当該管理プログラムが暗号通信路を開設した旨の報告があったときに、当該報告に応じて、特定のアプリケーションプログラムのために暗号通信路が開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルに書き込み、
アプリケーションプログラムは、ＯＳプログラムから暗号通信路開設コマンドの引き渡しを受けたときに、自己を管理する管理プログラムに対して、自己のための暗号通信路開設依頼を行い、
ＳＤ用情報格納部には、管理プログラムによる暗号通信路の開設対象となるアプリケーションプログラムを示す開設対象アプリ情報を記録するためのＳＤ用参照テーブルが格納されており、
管理プログラムは、暗号通信路開設依頼を受けたときに、
開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない場合には、新たな暗号通信路の開設を行う旨を決定し、
開設対象アプリ情報として所定の開設対象アプリケーションプログラムが示されていた場合には、ＯＳプログラムに対して、当該所定の開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否かの問い合わせを行い、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定し、
所定の開設対象アプリケーションプログラムのために新たな暗号通信路を開設した際には、その旨をＯＳプログラムに報告するとともに、新たな暗号通信路の開設対象が所定のアプリケーションプログラムであることを示す開設対象アプリ情報をＳＤ用参照テーブルに書き込むようにしたものである。
【００２５】
(11)  本発明の第１１の態様は、上述した第１０の態様に係る情報処理装置において、
開設対象アプリ情報が、開設対象アプリケーションプログラムを特定するアプリ名と、当該開設対象アプリケーションプログラムに対応づけられたチャネル番号と、を含んでおり、
管理プログラムは、新たな暗号通信路を開設する際には、アプリ名とチャネル番号とを含む開設対象アプリ情報をＳＤ用参照テーブルに書き込み、ＯＳプログラムに対して問い合わせを行う際には、ＳＤ用参照テーブルに開設対象アプリ情報として記録されているアプリ名とチャネル番号との組み合わせに関して暗号通信路が設定済か否かを問い合わせ、
ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、当該組み合わせに関して暗号通信路が設定済か否かを回答するようにしたものである。
【００２６】
(12)  本発明の第１２の態様は、上述した第１１の態様に係る情報処理装置において、
管理プログラムには、同時に開設可能な暗号通信路の数が１つだけという制限が課されており、
管理プログラムは、ＯＳプログラムから、問い合わせに係る組み合わせに関して未開設との回答が得られた場合には、新たな暗号通信路の開設を行い、当該組み合わせに関して開設済との回答が得られた場合には、新たな暗号通信路の開設を行わないようにしたものである。
【００２７】
(13)  本発明の第１３の態様は、上述した第１１の態様に係る情報処理装置において、
管理プログラムには、同時に開設可能な暗号通信路の数の上限値Ｎが設定されており、
管理プログラムは、ＯＳプログラムに対して問い合わせを行う際には、ＳＤ用参照テーブルに開設対象アプリ情報として記録されているアプリ名とチャネル番号との組み合わせのそれぞれに関して暗号通信路が開設済か否かを問い合わせ、
ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、各組み合わせのそれぞれについての回答を行い、
管理プログラムは、ＯＳプログラムから、開設済との回答が得られた組み合わせの総数ｎが、上限値Ｎ未満である場合には、新たな暗号通信路の開設を行い、総数ｎが上限値Ｎに達している場合には、新たな暗号通信路の開設を行わないようにしたものである。
【００２８】
(14)  本発明の第１４の態様は、上述した第１０〜第１３の態様に係る情報処理装置において、
ＯＳプログラムは、外部装置から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与え、
管理プログラムは、自己の管理下にある旧アプリケーションプログラムから解除通知があった旨の報告を受けた場合に、ＳＤ用参照テーブルに書き込まれている旧アプリケーションプログラムについての開設対象アプリ情報を消去するようにしたものである。
【００２９】
(15)  本発明の第１５の態様は、上述した第８〜第１４の態様に係る情報処理装置において、
ＳＤ用情報格納部には、個々の管理プログラムごとに、それぞれ開設済の暗号通信路に利用するセッションキーを記録できるＳＤ用参照テーブルが格納されており、
管理プログラムは、新たな暗号通信路の開設を行う際に、当該暗号通信路に利用するセッションキーを発生させ、これをＳＤ用参照テーブルに書き込むようにしたものである。
【００３０】
(16)  本発明の第１６の態様は、上述した第１５の態様に係る情報処理装置において、
ＯＳプログラムは、外部装置から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、当該旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与え、
管理プログラムは、自己の管理下にある旧アプリケーションプログラムから解除通知があった旨の報告を受けた場合に、ＳＤ用参照テーブルに書き込まれている旧アプリケーションプログラムについてのセッションキーを消去するようにしたものである。
【００３１】
(17)  本発明の第１７の態様は、上述した第１〜第１６の態様に係る情報処理装置において、
管理プログラムは、外部装置から与えられる暗号通信路開設コマンドに基づいて暗号通信路を開設する際に、当該外部装置に対する認証処理を行い、この認証処理により当該外部装置が正規の装置と認証されることを条件として、当該外部装置との間に暗号通信路を開設するようにしたものである。
【００３２】
(18)  本発明の第１８の態様は、上述した第１〜第１７の態様に係る情報処理装置において、
外部装置との間で暗号通信を行う複数のインターフェイスを備えており、
ＯＳ用参照テーブルが、個々のインターフェイスごとにそれぞれ別個に設けられており、
ＯＳプログラムがＯＳ用参照テーブルに対する記録もしくは参照を行うときに、暗号通信路の開設が行われるインターフェイスに対応するＯＳ用参照テーブルを選択するようにしたものである。
【００３３】
(19)  本発明の第１９の態様は、上述した第１８の態様に係る情報処理装置において、
複数のインターフェイスに対して、それぞれ個別にリセットを行う機能を有し、
ＯＳプログラムが、特定のインターフェイスに対する個別リセットが行われたときに、当該個別リセットの対象となった特定のインターフェイスに対応するＯＳ用参照テーブルを初期化するようにしたものである。
【００３４】
(20)  本発明の第２０の態様は、上述した第１〜第１９の態様に係る情報処理装置によってＳＩＭカードを構成し、外部装置としてのスマートフォンもしくは外部サーバとの間で暗号通信を行うようにしたものである。
【００３５】
(21)  本発明の第２１の態様は、上述した第１〜第１９の態様に係る情報処理装置におけるＯＳプログラムもしくは管理プログラムとして機能するプログラムを提供するようにしたものである。
【発明の効果】
【００３６】
本発明に係る情報処理装置では、暗号通信路の開設に関する暗号通信路開設情報をＯＳプログラムによって管理するようにし、管理プログラムが新たな暗号通信路を開設する際には、必要に応じて、ＯＳプログラムに暗号通信路開設情報の内容についての問い合わせが行われる。このように、ＯＳプログラムによって、暗号通信路開設情報を管理するようにしたため、アプリケーションプログラムから管理プログラムに対して適切な報告がなされなかった場合にも、新たな暗号通信路開設処理が適切に行われるようになる。
【図面の簡単な説明】
【００３７】
【図１】一般的なスマートフォン１０，ＳＩＭカード１１，外部サーバ２０の間の情報通信の態様を示すブロック図である。
【図２】図１に示すＳＩＭカード１１（情報処理装置）と、スマートフォン１０または外部サーバ２０（外部装置）と、の間で暗号通信を行うためのプログラム構成の一例を示すブロック図である。
【図３】図２に示す鍵テーブルの具体例を示す図である。
【図４】図２に示す外部装置２００から情報処理装置１００に対して与えられるコマンドの一例とそのデータ構造の概要を示す図である。
【図５】図２に示す情報処理装置１００と外部装置２００との間でやりとりされる種々のコマンドおよびこれに対する応答の具体例を示すダイアグラムである。
【図６】一般的なＳＩＭカード（情報処理装置）内に構築されるアプリケーションプログラムの階層構造（図(a) ）と管理プログラムＳＤの機能（図(b) ）を示す図である。
【図７】一般的な情報処理装置１００の基本構成と外部装置２００を示すブロック図である。
【図８】従来の一般的なＳＩＭカード（情報処理装置）内に用意されるＯＳ用参照テーブルとＳＤ用参照テーブルの一例を示す図である。
【図９】アプリＡＰ１１についての暗号通信路開設を指示し、その後、別なアプリＡＰ１２についての暗号通信路開設を指示する場合について、外部装置２００側の指示手順を示す流れ図である。
【図１０】従来装置における暗号通信路開設処理の第１の手順（正常手順）を示すダイアグラムである。
【図１１】従来装置における暗号通信路開設処理の第２の手順（欠陥手順）を示すダイアグラムである。
【図１２】図１０に示すダイアグラムの時点ｔ０におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図１３】図１０に示すダイアグラムの時点ｔ１におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図１４】図１０に示すダイアグラムの時点ｔ２におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図１５】図１０に示すダイアグラムの時点ｔ３におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図１６】図１０に示すダイアグラムの時点ｔ４におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図１７】図１１に示すダイアグラムの時点ｔ３′におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図１８】従来の一般的なＳＩＭカード（情報処理装置）内に用意されるＯＳ用参照テーブルおよびＳＤ用参照テーブル（上段の図(a) ）と、本発明の第１の実施形態に係るＳＩＭカード（情報処理装置）内に用意されるＯＳ用参照テーブルおよびＳＤ用参照テーブル（下段の図(b) ）との対比を示す図である。
【図１９】本発明の第１の実施形態に係る装置における暗号通信路開設処理の第１の手順（正常手順）を示すダイアグラムである。
【図２０】本発明の第１の実施形態に係る装置における暗号通信路開設処理の第２の手順（欠陥手順）を示すダイアグラムである。
【図２１】図１９に示すダイアグラムの時点ｔ１０におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図２２】図１９に示すダイアグラムの時点ｔ１１におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図２３】図１９に示すダイアグラムの時点ｔ１２におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図２４】図１９に示すダイアグラムの時点ｔ１３におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図２５】図１９に示すダイアグラムの時点ｔ１４におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図２６】図２０に示すダイアグラムの時点ｔ１３′におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図２７】従来の一般的なＳＩＭカード（情報処理装置）内に用意されるＯＳ用参照テーブルおよびＳＤ用参照テーブル（上段の図(a) ）と、本発明の第２の実施形態に係るＳＩＭカード（情報処理装置）内に用意されるＯＳ用参照テーブルおよびＳＤ用参照テーブル（下段の図(b) ）との対比を示す図である。
【図２８】本発明の第２の実施形態に係る装置における暗号通信路開設処理の第１の手順（正常手順）を示すダイアグラムである。
【図２９】本発明の第２の実施形態に係る装置における暗号通信路開設処理の第２の手順（欠陥手順）を示すダイアグラムである。
【図３０】図２８に示すダイアグラムの時点ｔ２０におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図３１】図２８に示すダイアグラムの時点ｔ２１におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図３２】図２８に示すダイアグラムの時点ｔ２２におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図３３】図２８に示すダイアグラムの時点ｔ２３におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図３４】図２８に示すダイアグラムの時点ｔ２４におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図３５】図２９に示すダイアグラムの時点ｔ２３′におけるＯＳ用参照テーブルとＳＤ用参照テーブルの状態を示す図である。
【図３６】暗号通信路の開設状態のバリエーションを示す図である。
【図３７】外部通信インターフェイスを２組備える情報処理装置１００′と外部装置２００′との通信状態を示すブロック図である。
【図３８】図３７に示す情報処理装置１００′内に用意されるインターフェイスごとのＯＳ用参照テーブルを示す図である。
【図３９】図３７に示す情報処理装置１００′の各インターフェイスのリセットに関する特徴を示す表である。
【発明を実施するための形態】
【００３８】
以下、本発明を図示する実施形態に基づいて説明する。
【００３９】
＜＜＜  §１．  ＩＣカードに対する従来の一般的な通信形態  ＞＞＞
本発明は、外部装置との間で暗号通信を行う機能を有する情報処理装置に係るものであり、特に、ＩＣカードからなる情報処理装置への利用に適した技術に関する。そこで、ここでは、まず、ＩＣカードに対する従来の一般的な通信形態を簡単に説明しておく。
【００４０】
図１は、一般的なスマートフォン１０，ＳＩＭカード１１，外部サーバ２０の間の情報通信の態様を示すブロック図である。通常、スマートフォン１０は、内部にＳＩＭカード１１を装着した状態で利用され、必要に応じて、外部サーバ２０と所定の通信路（インターネットや電話回線）を介して交信することになる。ここで、ＳＩＭカード１１（ＵＩＭカードとも呼ばれる）は、Java Card（商標）やGlobalPlatform （登録商標）など、事実上の標準となっている国際的な仕様に準拠したＩＣカードであり、外部装置との交信は、当該外部装置から与えられるコマンドと、これに対する応答（レスポンス）という形式で行われる。
【００４１】
ＳＩＭカード１１に着目すると、スマートフォン１０も外部サーバ２０も、いずれも外部装置ということになり、これら外部装置との間の交信は、所定の通信路を介して行われる。図１には、スマートフォン１０と外部サーバ２０との間の通信路しか示されていないが、実際には、ＳＩＭカード１１とスマートフォン１０との間やＳＩＭカード１１と外部サーバ２０との間にも通信路が形成される。そして、ＳＩＭカード１１に対して、これらの通信路を介してコマンドおよび応答のやりとりが行われることになる。
【００４２】
図２は、図１に示すＳＩＭカード１１と、スマートフォン１０もしくは外部サーバ２０と、の間で暗号通信を行うためのプログラム構成の一例を示すブロック図である。本発明は、ＩＣカードに限らず、外部装置との間で暗号通信を行う機能をもった管理プログラムを組み込むことができる一般的な情報処理装置にも広く適用できる技術である。したがって、図２には、情報処理装置１００と外部装置２００との間に通信路を開設して相互に交信を行う例が示されている。
【００４３】
ただ、上述したとおり、本発明は、ＩＣカードに適用するのに特に適した技術であるので、ここでは、情報処理装置１００がスマートフォン１０に装着されたＳＩＭカード１１であり、外部装置２００が当該スマートフォン１０（もしくは、外部サーバ２０でもよい）である場合について、以下の説明を行うことにする。
【００４４】
ＳＩＭカード１１をはじめとするＩＣカードには、通常、ＯＳプログラムとともに、複数のアプリケーションプログラムが組み込まれる。図２の情報処理装置１００（ＳＩＭカード１１）には、ＯＳプログラムの他に、２組の一般アプリケーションプログラムＡＰ１，ＡＰ２が組み込まれた状態が示されている。また、ＩＣカードには、通常、少なくとも１組の管理プログラムＳＤ（Security Domain プログラム）が組み込まれている。この管理プログラムＳＤは、分類上はアプリケーションプログラムの一種であるが、ＯＳプログラムと協働して、ＩＣカード全体の動作や、管理下にある他のアプリケーションプログラムを管理する役割を果たす。そこで、本願では、情報処理装置１００（ＳＩＭカード１１）に組み込まれるアプリケーションプログラムのうち、Security Domain プログラムを「管理プログラムＳＤ」と呼び、それ以外のアプリケーションプログラムを「一般アプリケーションプログラムＡＰ（略称：一般アプリ）」と呼ぶことにする。
【００４５】
後に詳述するように、管理プログラムＳＤには、管理下となるアプリケーションプログラムについてのロード機能、インストール機能、削除機能、発行データの書込機能、暗号通信路開設機能などの諸機能が備わっている。図２に示す管理プログラムＳＤには、暗号通信路開設ルーチンＲ１および鍵テーブルＴ１が組み込まれているが、これは暗号通信路開設機能を実現するための要素である。ＩＣカードからなる情報処理装置１００の場合、通常、「ＳＣＰ：Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、外部装置２００との間にセキュアな暗号通信路を開設して暗号通信が行われる。このような機能を実現するため、管理プログラムＳＤ内には、暗号通信路開設ルーチンＲ１と鍵テーブルＴ１とが組み込まれている。
【００４６】
一方、外部装置２００側にも、これに応じた暗号通信を行う機能をもったアプリケーションプログラムＡＰ３が用意されており、暗号通信路開設ルーチンＲ２と鍵テーブルＴ２とが組み込まれている。たとえば、外部装置２００がスマートフォン１０の場合、アプリケーションプログラムＡＰ３は、このスマートフォン１０にインストールされたアプリケーションプログラムの１つである。
【００４７】
情報処理装置１００側の暗号通信路開設ルーチンＲ１と、外部装置２００側の暗号通信路開設ルーチンＲ２は、両装置間にセキュアな暗号通信路を開設し、同一の暗号化プロトコルに基づいた暗号通信を行うためのルーチンであり、鍵テーブルＴ１と鍵テーブルＴ２には、同一の暗号鍵が収容されている。したがって、図示の例の場合、管理プログラムＳＤとアプリケーションプログラムＡＰ３とによって、情報処理装置１００と外部装置２００との間に、同一の暗号鍵を用いた同一の暗号化プロトコルに基づく暗号通信を行うための暗号通信路が開設されることになる。
【００４８】
ＩＣカードに対する暗号通信に利用される暗号化プロトコルとしては、ＳＣＰ０１，ＳＣＰ０２などのプロトコルが古くから利用されてきている。ただ、これらのプロトコルで用いられている「Triple-ＤＥＳ」という暗号アルゴリズムには危殆化の問題が指摘されており、近年は、ＡＥＳ（Advanced Encryption Standard）なる規格に基づく暗号アルゴリズムを利用したＳＣＰ０３なるプロトコルも、GlobalPlatform （登録商標）に準拠した仕様として普及し始めている。また、３ＧＰＰ／ＥＴＳＩなどの標準化団体を中心に策定されたＳＣＰ８０，ＳＣＰ８１などのプロトコルの利用も普及してきている。
【００４９】
また、ＩＣカードに組み込まれる管理プログラムＳＤ用の鍵テーブルＴとしては、図３に例示するような鍵空間を用いる仕様が一般化している。図示の鍵テーブルＴは、縦方向にキーバージョン番号（key version number）、横方向にキーＩＤ（key ID）を定義したマトリックスによって構成されており、キーバージョン番号については、０ｘ０１〜０ｘ７Ｆの範囲内のアドレス空間が割り当てられ、キーＩＤについては、０ｘ００〜０ｘ７Ｆの範囲内のアドレス空間が割り当てられている（アドレス先頭の０ｘは、以下の数値が１６進数であることを示す）。
【００５０】
個々の暗号鍵は、この鍵テーブルＴのいずれかのセルに格納されることになり、キーバージョン番号とキーＩＤとの組み合わせにより特定される。たとえば、キーバージョン番号「０ｘ０１」とキーＩＤ「０ｘ０１」との組み合わせにより、暗号鍵ＫｅｙＡが特定されることになる。図には、個々の暗号鍵の格納例として、ＫｅｙＡ〜ＫｅｙＲが特定のセルに格納された状態が示されている。もちろん、暗号鍵はすべてのセルに格納する必要はなく、必要な暗号鍵が所定のセルに格納されていれば足りる。
【００５１】
ある１つの暗号化プロトコルでは、ある１つのキーバージョン番号が指定され、当該キーバージョン番号をもったセルに格納されている１つもしくは複数の暗号鍵を利用した暗号化処理もしくは復号処理が実行される。図示の例の場合、キーバージョン番号「０ｘ０１」，「０ｘ２０」，「０ｘ２１」，「０ｘ２２」，「０ｘ７Ｅ」，「０ｘ７Ｆ」の各行に何らかの暗号鍵が格納されている状態が示されている。また、図示の例の場合、いずれのキーバージョン番号についても、キーＩＤ「０ｘ０１」，「０ｘ０２」，「０ｘ０３」の３箇所のセルにそれぞれ暗号鍵が格納されている。
【００５２】
これは、いずれのキーバージョン番号も、３つの異なる暗号鍵を用いる暗号化プロトコル（たとえば、上述したＳＣＰ０１，ＳＣＰ０２，ＳＣＰ０３など）に対応したものになっているためである。たとえば、キーバージョン番号「０ｘ２０」が指定された場合、キーＩＤ「０ｘ０１」，「０ｘ０２」，「０ｘ０３」の各セルに格納されている３つの暗号鍵ＫｅｙＤ，ＫｅｙＥ，ＫｅｙＦが暗号化処理もしくは復号処理に利用されることになる。別言すれば、特定の暗号化プロトコルに基づく暗号化処理もしくは復号処理には、同一のキーバージョン番号をもつ１つもしくは複数の暗号鍵が利用されることになる。もちろん、合計５個の暗号鍵を必要とする暗号化プロトコルのためには、同一のキーバージョン番号をもつ５個のセルにそれぞれ暗号鍵を用意することになる。なお、実際の暗号化通信には、後述するように、これらの暗号鍵を利用してその都度セッションキーが生成され、このセッションキーを用いて暗号化や復号が行われる。
【００５３】
図３の下段には、鍵テーブルＴに格納されている１つの暗号鍵ＫｅｙＰの一般的なデータ構造を例示する。図示された暗号鍵ＫｅｙＰのデータ構造は、上述したＩＣカードについての国際的な標準仕様として定められた暗号鍵Ｋｅｙの標準フォーマットを示すものであり、先頭から順に、種別情報（key type）Ａ，鍵長（key length）Ｌ，鍵値データ（key value）Ｖを並べたものになっている。ここで、種別情報（key type）Ａは、「ＡＥＳ」，「ＤＥＳ」，「ＲＳＡ」など、当該暗号鍵Ｋｅｙを用いることを想定している暗号化プロトコルが採用する暗号アルゴリズムの種別を含む情報であり、鍵長（key length）Ｌは、後続する鍵値データ（key value）Ｖのデータ長（byte）を示す情報であり、最後の鍵値データ（key value）Ｖは、暗号化演算に用いられる鍵値データそのものである。
【００５４】
続いて、図２に示す外部装置２００から情報処理装置１００に対して与えられるコマンドの一例とそのデータ構造の概要を図４に示す。まず、図４(a) に示す「アプリケーション選択コマンド」は、特定のチャネル番号を指定して、情報処理装置１００側の特定のアプリケーションプログラムを選択するコマンドである。図示のとおり、「SELECT (#n)＋アプリ名」というデータ構造を有し、チャネル番号＃ｎを指定して、「アプリ名」で特定されるアプリケーションプログラムを選択する指示である。なお、本願における「アプリ名」とは、アプリケーションプログラムを特定することが可能な情報を意味するものであり、外部に公開されている「アプリの名称」のみならず、そのような「アプリの名称」にひもづけられ、内部でのみ利用される「管理番号」等のデータも広く含むものである。
【００５５】
チャネル番号＃ｎは、外部装置２００から情報処理装置１００に対してコマンドを与える際に、当該コマンドがどのアプリケーションプログラム宛のコマンドであるかを識別させるために用いられる。情報処理装置１００には、複数のアプリケーションプログラムが格納されているため、外部装置から与えるコマンドのそれぞれにチャネル番号＃ｎを付加して識別できるようにする必要がある。「アプリケーション選択コマンド」は、特定のアプリケーションプログラムに特定のチャネル番号＃ｎを対応づけるための初期設定を行う役割を果たす。
【００５６】
たとえば、「SELECT (#3)＋AP1」というアプリケーション選択コマンドを情報処理装置１００に与えると、アプリケーションプログラムＡＰ１がチャネル番号＃３に対応づけられる。具体的には、当該コマンドを受信した情報処理装置１００内のＯＳプログラムが、アプリケーションプログラムＡＰ１がチャネル番号＃３に対応づけられた旨の記録を行うことになる。以後、チャネル番号＃３が付与されたコマンドは、すべてアプリケーションプログラムＡＰ１宛のコマンドとして取り扱われ、アプリケーションプログラムＡＰ１に引き渡されることになる。
【００５７】
続いて、図４(b) に示す「暗号通信路開設コマンド」について説明する。このコマンドは、特定の管理プログラムＳＤに対して、暗号通信路を開設させるためのコマンドである。この暗号通信路開設コマンドは、図示のとおり、「INITIALIZE UPDATE (#n)＋パラメータ」というデータ構造を有し、チャネル番号＃ｎで指定されるプログラムに対して、暗号通信路を開設する指示を与えるとともに、外部装置２００が、情報処理装置１００を正規の交信相手として認証するために用いる応答を要求するコマンドである。
【００５８】
実際には、パラメータとして、キーバージョン番号および乱数が付加される。暗号通信路の開設処理を担当する管理プログラムＳＤは、図３に示す鍵テーブルＴからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置２００との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対する応答として返信する。
【００５９】
最後に、図４(c) に示す「外部認証コマンド」について説明する。このコマンドは、暗号通信路の開設処理を担当する管理プログラムＳＤが、現在通信を行っている外部装置２００を正規の交信相手として認証するためのコマンドである。上述したように、図４(b) に示す暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」は、暗号通信路を開設する指示を与えるとともに、外部装置２００が、情報処理装置１００を正規の交信相手として認証するために用いる応答を要求するコマンドである。外部装置２００は、当該応答が正当なものであれば、情報処理装置１００を正規の交信相手と判断する。
【００６０】
一方、図４(c) に示す外部認証コマンドは、図示のとおり、「EXTERNAL AUTHENTICATE (#n)＋ホスト認証コード」というデータ構造を有し、チャネル番号＃ｎを指定して、外部装置２００を正規の交信相手として認証するためのホスト認証コードが付加されている。情報処理装置１００は、当該ホスト認証コードが正当なものであれば、外部装置２００を正規の交信相手と判断する。
【００６１】
このように、外部認証コマンド「EXTERNAL AUTHENTICATE (#n)＋ホスト認証コード」は、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」に続いて与えられるコマンドであり、両者によって、情報処理装置１００と外部装置２００との間に相互認証が行われることになる。
【００６２】
図５は、図２に示すＳＩＭカード１１（情報処理装置１００）とスマートフォン１０（外部装置２００）との間でやりとりされる種々のコマンドおよびこれに対する応答の具体例を示すダイアグラムである。ステップＳ１〜Ｓ６に示すとおり、いずれもスマートフォン１０側からＳＩＭカード１１側に所定のコマンドを送信し、当該コマンドに対する応答（レスポンス）をＳＩＭカード１１側からスマートフォン１０側へと返信する、という形態で、両者間の情報のやりとりが行われる。この例の場合、ステップＳ１〜Ｓ４までの情報のやりとりは、暗号化されていない通常の通信路を介して行われるが、ステップＳ５，Ｓ６の情報のやりとりは、管理プログラムＳＤによって開設された暗号通信路を介して行われる。
【００６３】
まず、ステップＳ１は、スマートフォン１０側からＳＩＭカード１１側に「SELECTコマンド」を送信するプロセスである。この「SELECTコマンド」は、図４(a) に示す「アプリケーション選択コマンド」であり、特定のチャネル番号を指定して、ＳＩＭカード１１側の特定のアプリケーションプログラムを選択するコマンドである。ＳＩＭカード１１側では、当該チャネル番号と当該選択アプリケーションプログラムとが対応づけられ、以後、同じチャネル番号をもつコマンドが与えられると、当該選択アプリケーションプログラムによって処理されることになる。「SELECTコマンド」が正常に受理されると、ＳＩＭカード１１側からスマートフォン１０側に応答が返される。
【００６４】
続く、ステップＳ２は、「GET DATAコマンド」を送信するプロセスである。なお、ステップＳ２以降のコマンドには、ステップＳ１と同じチャネル番号が付与されており、ＳＩＭカード１１側では、当該チャネル番号に対応づけられた選択アプリケーションプログラムによって処理がなされものとする。この「GET DATAコマンド」は、所定のデータをＳＩＭカード１１側からスマートフォン１０側に読み出すためのコマンドであり、読出対象となるデータを特定する情報が付加されている。選択アプリケーションプログラムは、当該コマンドに応じて、ＳＩＭカード１１内のメモリから指定されたデータを読出し、これを当該コマンドに対する応答としてスマートフォン１０側へと返信する。
【００６５】
図５に示す例の場合、ステップＳ１，Ｓ２のコマンドおよび応答のプロセスは、暗号通信路の開設前に暗号通信路を介すことなく行われている。続く、ステップＳ３，Ｓ４は、暗号通信路の開設準備を行うプロセスである。まず、ステップＳ３では、「INITIALIZE UPDATEコマンド」の送信が行われる。このコマンドは、図４(b) に示すデータ構造をもつ「暗号通信路開設コマンド」であり、前述したとおり、「INITIALIZE UPDATE」なるコマンド識別子に、チャネル番号，キーバージョン番号，乱数を付加した形態をもつ。前述したとおり、このコマンドは、スマートフォン１０（外部装置２００）が、ＳＩＭカード１１（情報処理装置１００）を正規の交信相手として認証するための認証コマンドとしての役割も果たす。
【００６６】
なお、この「INITIALIZE UPDATEコマンド」に基づいて暗号通信路を開設する処理を行うのは、実際には管理プログラムＳＤである。したがって、一般アプリ（もしくは、その時点では暗号通信路開設機能の準備ができていない管理プログラム）に対して「INITIALIZE UPDATEコマンド」が与えられた場合、自己を管理する管理プログラムＳＤに対して暗号通信路の開設処理の依頼が行われる。
【００６７】
暗号通信路の開設処理を実行する管理プログラムＳＤは、鍵テーブルＴ１から、指定されたキーバージョン番号に対応する暗号鍵を取り出し、暗号化処理の準備（たとえば、セッションキーの発生）を行うとともに、与えられた乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対する応答として返信する。一方、スマートフォン１０内のアプリケーションプログラムＡＰ３は、返信されてきた演算結果が、与えた乱数に対する正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のＳＩＭカード１１を正規の交信相手と認証する。
【００６８】
続くステップＳ４では、「EXTERNAL AUTHENTICATEコマンド」の送信が行われる。このコマンドは、「外部認証コマンド」であり、ＳＩＭカード１１（情報処理装置１００）がスマートフォン１０（外部装置２００）を正規の交信相手として認証するための認証コマンドである。スマートフォン１０は、ステップＳ３の応答により返信されてきたデータに対して所定のアルゴリズムに基づく演算を施し、演算結果を「EXTERNAL AUTHENTICATE」なるコマンド識別子に付加してＳＩＭカード１１に送信する。ＳＩＭカード１１内の管理プログラムＳＤは、「EXTERNAL AUTHENTICATEコマンド」によって送信されてきた演算結果が、正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のスマートフォン１０を正規の交信相手と認証する。
【００６９】
このステップＳ３，Ｓ４による相互認証の具体的なプロセスは、一般に利用されている公知の技術であるため、ここでは詳しい説明は省略する。こうして、ＳＩＭカード１１とスマートフォン１０との間での相互認証が完了すると、両者間に暗号通信路が開設される。図の破線より下に示されたステップＳ５以降のコマンドは、この暗号通信路を介して与えられることになる。すなわち、ステップＳ５以降のコマンドの実質的な内容部分は、所定の暗号化プロトコルに基づいて暗号化され、「ＳＣＰ：Secure Channel Protocol」により保護されたコマンドとして送信される。
【００７０】
＜＜＜  §２．  階層構造をもった管理プログラムの役割  ＞＞＞
上述の§１では、情報処理装置１００と外部装置２００との間に暗号通信路を開設して両者間で暗号通信を行うための手順を簡単に説明した。このような暗号通信路の開設処理は、実際には、管理プログラムＳＤによって実行される。ここでは、情報処理装置１００に複数の管理プログラムＳＤが階層構造をもって組み込まれる点と、各管理プログラムＳＤの役割について簡単に説明する。
【００７１】
図６(a) は、ＳＩＭカード１１（情報処理装置１００）内に構築されるアプリケーションプログラムの階層構造を示す図である。この図において、階層構造の最上位に配置されているＩＳＤ（Issuer Security Domain）は、発行者ＳＤと呼ばれる管理プログラムであり、このＳＩＭカード１１の工場出荷時に書込まれるプログラムである。図示の例の場合、このＩＳＤの下位にＳＳＤ１，ＳＳＤ２，ＡＰ０１，ＡＰ０２なるプログラムが配置されており、更に、ＳＳＤ１の下位にＡＰ１１，ＡＰ１２が配置され、ＳＳＤ２の下位にＳＳＤ３，ＡＰ２１，ＡＰ２２，ＡＰ２３が配置され、更に、ＳＳＤ３の下位にＡＰ３１，ＡＰ３２が配置されている。
【００７２】
この図６(a) にブロックで示されている各プログラムは、いずれもＳＩＭカード１１（情報処理装置１００）内に組み込まれているアプリケーションプログラムである。ここで、ＳＳＤ１，ＳＳＤ２，ＳＳＤ３（Supplemental Security Domain）は、ＩＳＤと同様に管理プログラムであるが、ＩＳＤが、工場出荷時に書込まれる最上位の管理プログラムであるのに対して、ＳＳＤ１，ＳＳＤ２，ＳＳＤ３は、ＩＳＤもしくは別なＳＳＤの下位に配置されるプログラムになる。
【００７３】
前述したように、管理プログラムも、アプリケーションプログラムの１つであることに変わりはないが、階層構造上、自己の下位に別なアプリケーションプログラム（一般アプリケーションプログラムであってもよいし、別な管理プログラムであってもよい）を配置して管理下におくことができる。したがって、図示の例の場合、管理プログラムＳＳＤ１の下位には、２組の一般アプリケーションプログラムＡＰ１１，ＡP１２が配置されているだけであるが、管理プログラムＳＳＤ２の下位には、１組の別な管理プログラムＳＳＤ３と３組の一般アプリケーションプログラムＡＰ２１，ＡＰ２２，ＡＰ２３が配置され、更に、管理プログラムＳＳＤ３の下位には、２組の一般アプリケーションプログラムＡＰ３１，ＡＰ３２が配置されている。
【００７４】
管理プログラムＳＤには、ＳＩＭカード１１（情報処理装置１００）全体を管理する機能と、下位のアプリケーションプログラムを管理する機能とが備わっている。具体的には、一般的な管理プログラムＳＤには、次のような機能が用意されている。これらの機能の一覧表は、図６(b) にも掲載されている。
＜機能１＞ＩＣカードのライフサイクル管理
＜機能２＞アプリケーションプログラムのライフサイクル管理
＜機能３＞アプリケーションインスタンスのライフサイクル管理
＜機能４＞アプリケーションプログラムのロード
＜機能５＞アプリケーションインスタンスの生成（インストール）
＜機能６＞アプリケーションプログラムやインスタンスの削除
＜機能７＞アプリケーション向け発行データの書込み
＜機能８＞データの読出し
＜機能９＞セキュアな通信路の確保
【００７５】
もっとも、上記９つの機能は、必ずしもすべての管理プログラムＳＤに備わっているものではない。通常、最上位階層のＩＳＤは、すべての機能を備えているが、下位階層におかれるＳＳＤについては、いくつかの機能が制限される場合もある。たとえば、上記機能１「ＩＣカードのライフサイクル管理」は、通常、ＩＳＤにのみ備わっている。また、上記機能のいくつかは、自己の下位階層に配置されているアプリケーションプログラム（自己の管理下にあるアプリケーションプログラム）のために提供する機能である。
【００７６】
上記９つの機能のうち、本発明に直接関連する機能は、機能９「セキュアな通信路の確保（暗号通信路開設機能）」である。この機能９は、既に§１で述べたとおり、「ＳＣＰ：Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、外部装置２００との間にセキュアな暗号通信路を開設して暗号通信を行う機能である。このような機能を実現するため、図２に示すように、管理プログラムＳＤ内には、暗号通信路開設ルーチンＲ１と鍵テーブルＴ１とが組み込まれている。
【００７７】
各管理プログラムＳＤは、自分自身が外部装置２００内のアプリケーションプログラムと通信を行う際に、自分自身のために暗号通信路の開設を行うことができるが、自己の管理下にある別なアプリケーションプログラムが外部装置２００と通信を行う際に、当該別なアプリケーションプログラムのために暗号通信路の開設を行うこともできる。たとえば、図６(a) に示す例の場合、管理プログラムＳＳＤ１は、その下位階層に所属する一般アプリＡＰ１１，ＡＰ１２を管理する役割を果たすので、これら一般アプリＡＰ１１，ＡＰ１２からの依頼があれば、依頼主の一般アプリのために暗号通信路の開設を行うことになる。
【００７８】
別言すれば、図６(a) に示す例の場合、一般アプリＡＰ１１，ＡＰ１２は、外部装置２００から、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)」が与えられた場合、自己を管理する管理プログラムＳＳＤ１に対して、暗号通信路の開設を依頼することになる。なお、図６(a) に示すようなアプリケーションプログラムの階層構造に関する情報は、ＯＳプログラムが管理するメモリ領域に格納されており、各管理プログラムＳＤや各一般アプリＡＰは、必要があれば、ＯＳプログラムへの問い合わせを行うことにより、自己の上位や下位に位置するプログラムを特定する情報を取得することができる。
【００７９】
結局、図６(a) に示す例の場合、管理プログラムＳＳＤ１は、必要に応じて、自分自身のための暗号通信路，一般アプリＡＰ１１のための暗号通信路，一般アプリＡＰ１２のための暗号通信路という３通りの暗号通信路を開設する役割を担うことになる。前述したとおり、Java Card（商標）やGlobalPlatform （登録商標）などの仕様に準拠した一般的なＩＣカードの場合、外部装置との間に複数の論理チャネルを開き、個々のアプリケーションプログラムに特定の論理チャネルを割り当て、複数のアプリケーションプログラムによる外部通信を並列的に処理することができる。このため、図示の例の場合、各プログラムＳＳＤ１，ＡＰ１１，ＡＰ１２に、それぞれ異なる論理チャネルを割り当てれば、これら３つのプログラムはそれぞれ別個独立して、並列的に外部装置２００と通信を行うことができる。
【００８０】
したがって、図示の例の場合、もし管理プログラムＳＳＤ１に、同時に複数の暗号通信路を開設する機能をもたせておけば、各プログラムＳＳＤ１，ＡＰ１１，ＡＰ１２のそれぞれのために独立した暗号通信路を開設し、３つの暗号通信路を介して並列的に暗号通信を行うことが可能である。しかしながら、実用上、多数の暗号通信路を同時に開設した状態にすることには、セキュリティ上の問題がある。これは、暗号通信路を開設するためには、暗号処理に必要なセッションキー等を一時的に発生させ、これを一時的に保存しておく必要があるため、多数の暗号通信路を同時に開設した状態にすると、セッションキー等の重要な情報が漏洩する危険性が高まるためである。
【００８１】
セッションキーは、図３に示す鍵テーブルＴから読み出した暗号鍵ＫｅｙＰ等に基づいて派生的に生成された一時的なキーであり、暗号通信路の開設から終了に至るまで一時的に利用される暗号処理用の鍵である。暗号通信路が終了すると消去されてしまうため、終了後に漏洩する危険性はないが、暗号通信路を開設している間は、どこかに一時的に記録しておく必要があるため、クラッカーの攻撃下では、常に漏洩の危険性に晒されることになる。
【００８２】
このような事情から、通常は、１つの管理プログラムＳＤが同時に開設できる暗号通信路の数に制限が課される。たとえば、上記仕様に準拠したＵＩＭ向けのＩＣカードの場合、１つの管理プログラムＳＤが同時に開設可能な暗号通信路の数は１つに制限されている。したがって、図６(a) に示す例の場合、管理プログラムＳＳＤ１は、自己のための暗号通信路、一般アプリＡＰ１１のための暗号通信路、一般アプリＡＰ１２のための暗号通信路の３通りの通信路を同時には開設することはできず、必要があれば、１つずつ順番に開設する必要がある。たとえば、一般アプリＡＰ１１のための暗号通信路が開設済の場合、一般アプリＡＰ１２のための暗号通信路開設依頼があったとしても、既に開設している暗号通信路が終了するまで、新たな暗号通信路の開設はできない。
【００８３】
もちろん、このように、同時開設可能な暗号通信路の数に制限を課することは、上述したように、セッションキーの漏洩などを防ぎ、十分なセキュリティを確保する上では重要なことである。ただ、本発明が解決すべき課題として、現時点で生じている問題点は、上例の場合、実際には、一般アプリＡＰ１１のための暗号通信路が終了しているにもかかわらず、管理プログラムＳＳＤ１がその事実を把握することができなかったため、一般アプリＡＰ１２のための新たな暗号通信路の開設を行うことができなくなる事態が発生する点である。このような事態が発生する具体的な理由は、§３で詳述する。
【００８４】
＜＜＜  §３．  従来および本発明に係る情報処理装置の一般的な構成  ＞＞＞
ここでは、説明の便宜上、図２に示す一般的な情報処理装置１００の基本構成を簡単に述べておく。図７は、一般的な情報処理装置１００の基本構成と外部装置２００を示すブロック図である。ここに示す例も、情報処理装置１００としてＳＩＭカード１１を用い、外部装置２００として当該ＳＩＭカード１１が装着されたスマートフォン１０もしくは外部サーバ２０を用いた例である。図示の情報処理装置１００の基本構成自体は、従来装置と本発明に係る装置とに共通するものである。
【００８５】
図示のとおり、この情報処理装置１００は、外部装置２００との間で暗号通信を行う機能を有し、プログラム格納部１１０、データ格納部１２０、プログラム実行部１３０を備えている。プログラム格納部１１０には、ＯＳプログラムおよびアプリケーションプログラムが格納されている。
【００８６】
既に述べたとおり、アプリケーションプログラムには、管理プログラムＳＤと一般アプリプログラムＡＰとが含まれており、プログラム格納部１１０には、ＯＳプログラムの他に、アプリケーションプログラムとして、少なくとも１つの管理プログラムＳＤと少なくとも１つの一般アプリプログラムＡＰとが格納されていることになる。図示の例は、図６(a) に示す階層構造に応じたアプリケーションプログラムが格納されている例であり、４組の管理プログラムＩＳＤ，ＳＳＤ１，ＳＳＤ２，ＳＳＤ３と、９組の一般アプリＡＰ０１，ＡＰ０２，ＡＰ１１，ＡＰ１２，ＡＰ２１，... ，ＡＰ３２（図示は一部省略）が格納された状態が示されている。
【００８７】
一方、データ格納部１２０には、プログラム格納部１１０に格納されている各プログラムによって利用されるデータが格納される。図示のとおり、このデータ格納部１２０には、ＯＳプログラムによって利用されるデータを格納するＯＳ用情報格納部１２１と、各管理プログラムＩＳＤ，ＳＳＤ１，ＳＳＤ２，ＳＳＤ３によって利用されるデータを格納するＳＤ用情報格納部１２２と、各一般アプリプログラムＡＰ０１〜ＡＰ３２によって利用されるデータを格納するＡＰ用情報格納部１２３と、が設けられている。
【００８８】
また、プログラム実行部１３０は、データ格納部１２０に格納されているデータを利用しながら、プログラム格納部１１０に格納されている各プログラムを実行する構成要素であり、外部装置２００に対する通信機能を備えている。図示のとおり、外部装置２００から与えられたコマンドは、プログラム実行部１３０において、所定のプログラムを用いて解釈実行され、その結果が応答（レスポンス）として外部装置２００へ返される。情報処理装置１００と外部装置２００との間の通信は、外部装置２００から情報処理装置１００に与えられるコマンドと、これに応じて、情報処理装置１００から外部装置２００に対して返される応答と、を繰り返すことにより実行される。
【００８９】
もちろん、実際には、プログラム格納部１１０およびデータ格納部１２０は、情報処理装置１００内に組み込まれている不揮発性メモリやその他の記憶装置によって構成され、プログラム実行部１３０は、情報処理装置内に組み込まれているＣＰＵやＲＡＭメモリ、その他のインターフェイスデバイスによって構成される。また、データ格納部１２０内に設けられているＯＳ用情報格納部１２１，ＳＤ用情報格納部１２２，ＡＰ用情報格納部１２３の実体は、不揮発性メモリやその他の記憶装置によって構成されたデータ記憶領域の一部である。ＳＤ用情報格納部１２２は、更に、個々の管理プログラムＩＳＤ，ＳＳＤ１，ＳＳＤ２，ＳＳＤ３によって利用されるデータ記憶領域に区分けされており、ＡＰ用情報格納部１２３は、更に、個々の一般アプリプログラムＡＰ０１〜ＡＰ３２によって利用されるデータ記憶領域に区分けされている。
【００９０】
ここで、各管理プログラムＩＳＤ，ＳＳＤ１，ＳＳＤ２，ＳＳＤ３は、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、ここに示す実施例の場合、図６(a) に示すような階層構造が定義されている。既に述べたとおり、各管理プログラムＩＳＤ，ＳＳＤ１，ＳＳＤ２，ＳＳＤ３は、自己もしくは自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能を有し、外部装置２００から与えられる暗号通信路開設コマンドに基づいて当該機能を実行するプログラムである。
【００９１】
＜＜＜  §４．  従来装置における暗号通信路開設処理  ＞＞＞
ここでは、本発明に係る情報処理装置との対比のために、従来の一般的な情報処理装置１００における暗号通信路開設処理のプロセスを説明する。
【００９２】
＜４−１．  従来装置による基本的な処理手法＞
図７に示すとおり、情報処理装置１００内のデータ格納部１２０には、ＯＳプログラムによって利用されるデータを格納するＯＳ用情報格納部１２１と、各管理プログラムによって利用されるデータを格納するＳＤ用情報格納部１２２とが設けられている。
【００９３】
Java Card（商標）やGlobalPlatform （登録商標）などの仕様に準拠した従来の一般的なＳＩＭカード１１の場合、ＯＳ用情報格納部１２１内には、図８の左に例示するようなＯＳ用参照テーブルＴ（ＯＳ）が格納され、ＳＤ用情報格納部１２２内には、図８の右に例示するようなＳＤ用参照テーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）が格納される。
【００９４】
ここで、ＯＳ用参照テーブルＴ（ＯＳ）は、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するためのテーブルであり、ＯＳプログラムによって管理される。すなわち、このＯＳ用参照テーブルＴ（ＯＳ）の内容は、ＯＳプログラムによって記録され、ＯＳプログラムによって参照されることになる。図示の例の場合、チャネル番号＃０〜＃２のそれぞれについて、特定のアプリケーションプログラムの名前（アプリ名：実際には、当該アプリケーションプログラムを特定する固有のコード）が対応づけられた状態が示されている。チャネル番号＃３については、まだ対応づけられたアプリケーションプログラムは存在しない（図では、便宜上「無」の文字を表示してある）。
【００９５】
特定のチャネル番号に対して特定のアプリケーションプログラムが対応づけられている場合、外部装置２００からは、当該特定のチャネル番号を指定したコマンドを与えることにより、当該特定のアプリケーションプログラムにアクセスすることができる。§１で述べたように、このような対応づけは、図４(a) に示すアプリケーション選択コマンド（SELECTコマンド）によって行うことができる。
【００９６】
具体的には、外部装置２００から、たとえば、「SELECT(#0), SSD1」なるアプリケーション選択コマンドを与えると、ＯＳプログラムによって、図８に示すＯＳ用参照テーブルＴ（ＯＳ）の第１行目の各欄に「＃０／開／ＳＳＤ１」なる情報が書き込まれることになる。同様に、図８に示すＯＳ用参照テーブルＴ（ＯＳ）の第２行目は「SELECT(#1), AP11」なるコマンドにより書き込まれ、第３行目は「SELECT(#2), AP02」なるコマンドにより書き込まれたものである。このテーブルＴ（ＯＳ）における「開閉状態」欄は、当該チャネルの開閉状態、すなわち、特定のアプリケーションプログラムが対応づけられている場合には、チャネルが「開」状態であり、何らアプリケーションプログラムが対応づけられていない場合には、チャネルが「閉」状態であることを示す。
【００９７】
一方、ＳＤ用情報格納部１２２内には、各管理プログラムＳＳＤ１，ＳＳＤ２，ＳＳＤ３，ＩＳＤにそれぞれ対応するＳＤ用参照テーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）が用意されている。図には、このうちＳＤ用参照テーブルＴ（ＳＳＤ１）の内容が例示されている。このＳＤ用参照テーブルＴ（ＳＳＤ１）は、管理プログラムＳＳＤ１が開設した暗号通信路の管理情報を記録するテーブルであり、図示のとおり、開設状態、アプリ名、チャネル番号、セッションキーの各欄が設けられている。図示されていないが、他のＳＤ用参照テーブルＴ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）の内容も同様である。
【００９８】
このＳＤ用参照テーブルＴ（ＳＳＤ１）の開設状態の欄には、管理プログラムＳＳＤ１が、現時点で、暗号通信路を「開設済」か「未開設」かのいずれかの状態が記録される。図示の例のように「開設済」になっている場合には、後続する各欄にも所定の情報が記録される。具体的には、図示の例の場合、アプリ名の欄には「ＡＰ１１」、チャネル番号の欄には「＃１」、セッションキーの欄には「xxxxxx」なる情報が記録されている。これは、管理プログラムＳＳＤ１が、現在、自己が管理する一般アプリＡＰ１１のために（図６の階層構造を参照）、暗号通信路を開設済であり、当該一般アプリＡＰ１１にはチャネル番号「＃１」が対応づけられており、暗号通信にはセッションキー「xxxxxx」が用いられることを示している。開設状態の欄が「未開設」になっている場合は、後続する各欄には情報は格納されない。
【００９９】
このＳＤ用参照テーブルＴ（ＳＳＤ１）は、管理プログラムＳＳＤ１によって管理される。すなわち、このＳＤ用参照テーブルＴ（ＳＳＤ１）の内容は、管理プログラムＳＳＤ１によって記録され、管理プログラムＳＳＤ１によって参照されることになる。管理プログラムＳＳＤ１は、自己の管理下にある一般アプリＡＰ１１から論理チャネル＃１を介した暗号通信路開設の依頼を受けると、セッションキー「xxxxxx」を発生させた上で、ＳＤ用参照テーブルＴ（ＳＳＤ１）に図示のような記録を行う。そして、一般アプリＡＰ１１が論理チャネル＃１を介して外部装置２００と通信を行う際に、セッションキー「xxxxxx」を用いて、送信データの暗号化および受信データの復号を行うことになる。
【０１００】
ここに示す例は、１つの管理プログラムＳＤが同時に開設可能な暗号通信路の数が１つに制限されている例である。したがって、図示の例のように、管理プログラムＳＳＤ１は、一般アプリＡＰ１１のための暗号通信路を既に開設している場合は、自己のため、もしくは、管理下にある別なアプリケーションプログラムのために、新たな暗号通信路を開設することはできない。したがって、ＳＤ用参照テーブルＴ（ＳＳＤ１）が図示のような記録状態において、自己の管理下にある別な一般アプリＡＰ１２から暗号通信路開設の依頼を受けた場合、管理プログラムＳＳＤ１は当該依頼を拒絶することになる。この場合、一般アプリＡＰ１２は、一般アプリＡＰ１１が暗号通信を終了するまで待機しなければならない。
【０１０１】
図６に示す階層構造が定義されている場合、管理プログラムＳＳＤ１については、管理下にあるアプリケーションプログラムとして、２組の一般アプリＡＰ１１，ＡＰ１２が存在する。したがって、管理プログラムＳＳＤ１は、一般アプリＡＰ１１，ＡＰ１２のいずれかから依頼を受けた場合、依頼主のために暗号通信路開設処理を行う必要がある。しかしながら、同時に開設可能な暗号通信路の数が１つに制限されているため、一方からの依頼に基づいて暗号通信路を開設している場合は、他方からの依頼を受けることはできない。
【０１０２】
図９は、アプリＡＰ１１について論理チャネル＃１を指定して暗号通信路開設を指示し、所定の暗号通信を実行した後、別なアプリＡＰ１２について同じ論理チャネル＃１を指定して暗号通信路開設を指示する場合について、外部装置２００側の指示手順を示す流れ図である。
【０１０３】
まず、ステップＳ１１では、論理チャネル＃１を指定してアプリＡＰ１１を選択するために、アプリケーション選択コマンド「SELECT(#1), AP11」を与える処理が行われる。
【０１０４】
続いて、ステップＳ１２では、アプリＡＰ１１について暗号通信路を開設するために、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」を与える処理が行われ、続いて、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える処理が行われる。なお、図４(b) ，(c) に示すように、実際には、暗号通信路開設コマンドには所定のパラメータが付加され、外部認証コマンドには所定のホスト認証コードが付加されるが、以下、これらパラメータや認証コードを省略した簡潔な説明を行うことにする。
【０１０５】
これら各コマンドが正常に実行されると、情報処理装置１００と外部装置２００との間に、論理チャネル＃１が割り当てられた暗号通信路が開設される。当該暗号通信路は、一般アプリＡＰ１１のために、管理プログラムＳＳＤ１が開設した暗号通信路ということになる。
【０１０６】
実際には、こうして開設された暗号通信路を介して、一般アプリＡＰ１１と外部装置２００側の所定のアプリケーションプログラムとの間で暗号通信が行われることになる。図９の流れ図の場合、ステップＳ１２とステップＳ１３との間に、暗号通信路を介した情報送受のプロセス（一般アプリＡＰ１１と外部装置２００との間の情報送受）が存在するが、ここでは、説明の便宜上、この情報送受のプロセスは省略する。
【０１０７】
一方、図９の流れ図におけるステップＳ１３以降の手順は、一般アプリＡＰ１１との間の暗号通信路を介した情報送受が終了した後に、別な一般アプリＡＰ１２との間に新たな暗号通信路を開設して情報送受を行うためのプロセスである。
【０１０８】
まず、ステップＳ１３では、論理チャネル＃１を指定してアプリＡＰ１２を選択するために、アプリケーション選択コマンド「SELECT(#1), AP12」を与える処理が行われる。この処理では、同じチャネル番号＃１を指定して、新アプリＡＰ１２が選択されたため、旧アプリＡＰ１１の選択状態は解除されることになる。
【０１０９】
次のステップＳ１４では、アプリＡＰ１２について新たな暗号通信路を開設するために、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」を与える処理が行われ、続いて、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える処理が行われる。これら各コマンドが正常に実行されると、情報処理装置１００と外部装置２００との間に、論理チャネル＃１が割り当てられた新たな暗号通信路が開設される。当該新たな暗号通信路は、一般アプリＡＰ１２のために、管理プログラムＳＳＤ１が開設した暗号通信路ということになる。
【０１１０】
実際には、こうして開設された暗号通信路を介して、一般アプリＡＰ１２と外部装置２００側の所定のアプリケーションプログラムとの間で暗号通信が行われることになる。図９の流れ図の場合、ステップＳ１４に後続するステップとして、一般アプリＡＰ１２と外部装置２００との間での暗号通信路を介した情報送受のプロセスが実行されることになる。
【０１１１】
＜４−２．  従来装置による正常処理手順＞
続いて、図９に示すステップＳ１１〜Ｓ１４の各手順を実行した場合に、各プログラムでどのような処理が実行されるかを、プログラム間の信号の流れを追いながら説明する。図１０は、これまで述べてきた従来装置における暗号通信路開設処理の正常処理手順を示すダイアグラムである。図の上段に示す各ブロックおよびこれら各ブロックから下方に伸びる各垂直線は、個々のプログラムを示しており、各垂直線の間を結ぶ水平矢印は、各プログラム間の信号の流れを示している。また、図の上下方向は、上から下に向かって経過する時間を示している。
【０１１２】
具体的には、情報処理装置１００（ＳＩＭカード１１）内に用意されているプログラムとして、図の左側から順に、一般アプリＡＰ１２，一般アプリＡＰ１１，管理プログラムＳＳＤ１，ＯＳプログラムの各ブロックが示されており、外部装置２００（スマートフォン１０）内に用意されているプログラムとして、図の右端に、ホスト側アプリのブロックが示されている。また、ｔ０，ｔ１，ｔ２，ｔ３，ｔ４と記された水平の破線は、特定の時点を示しており、Ｐ１，Ｐ２，Ｐ３，Ｐ４は、個々のプロセスを示している。
【０１１３】
ここで、時点ｔ０〜ｔ１の間に行われるプロセスＰ１は、図９のステップＳ１１の手順に基づいて行われる「アプリＡＰ１１を選択」するための処理であり、時点ｔ１〜ｔ２の間に行われるプロセスＰ２は、図９のステップＳ１２の手順に基づいて行われる「アプリＡＰ１１について暗号通信路開設」するための処理である。同様に、時点ｔ２〜ｔ３の間に行われるプロセスＰ３は、図９のステップＳ１３の手順に基づいて行われる「アプリＡＰ１２を選択」するための処理であり、時点ｔ３〜ｔ４の間に行われるプロセスＰ４は、図９のステップＳ１４の手順に基づいて行われる「アプリＡＰ１２について暗号通信路開設」するための処理である。
【０１１４】
前述したとおり、実際には、プロセスＰ２とプロセスＰ３との間に、アプリＡＰ１１と外部装置２００の間での暗号通信路を介した情報送受プロセスが存在し、プロセスＰ４の後に、アプリＡＰ１２と外部装置２００の間での暗号通信路を介した情報送受プロセスが存在するが、便宜上、このダイアグラム上での図示は省略する。
【０１１５】
図１１以降にも、図１０に類似するダイアグラムが示されているが、上述した各事項は、これら後続するダイアグラムについても同様である。なお、これらのダイアグラムは、各プログラム間の大まかな信号の流れを示すものであり、プログラム間の信号の流れをすべて網羅して示すものではない。したがって、実際には、図示されていない信号も存在する。たとえば、各プログラムは、自己と他のプログラムとの階層関係を確認する必要が生じた場合、適宜、図６に示すような階層構造をＯＳプログラムに問い合わせることができるが、このような問い合わせに係る信号の図示は省略されている。
【０１１６】
図１０のダイアグラムにおいて、まず、プロセスＰ１（図９の流れ図のステップＳ１１に対応）では、外部装置２００内のホスト側アプリから情報処理装置１００に対して、アプリケーション選択コマンド「SELECT(#1), AP11」が与えられる。通常、ＳＩＭカード１１のようなＩＣカードの場合、外部装置から与えられたコマンドは、まず、ＯＳプログラムによって受信され、必要に応じて、ＯＳプログラムから所定のアプリケーションプログラムに引き渡される。また、アプリケーションプログラムからの応答（レスポンス）は、一旦、ＯＳプログラムに引き渡され、ＯＳプログラムから外部装置へと送信される。
【０１１７】
したがって、図示の例の場合も、アプリケーション選択コマンド「SELECT(#1), AP11」は、まず、ＯＳプログラムによって処理される。ＯＳプログラムは、このアプリケーション選択コマンドを「論理チャネル＃１を指定してアプリＡＰ１１を選択するコマンド」として解釈し、論理チャネル＃１にアプリＡＰ１１を割り当てる処理を行うとともに、アプリＡＰ１１に対して選択が行われた旨を伝達する。図示の「Select処理」と記された左向き矢印は、このような伝達信号を示している。この伝達信号を受けたアプリＡＰ１１は、ＯＳプログラムに対して、確認信号（図の右向き矢印）を返信する。そこで、ＯＳプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０１１８】
以上の処理により、論理チャネル＃１にアプリＡＰ１１が対応づけられ、アプリＡＰ１１のために論理チャネル＃１が「開」の状態になる。このような対応関係は、図８に例示したＯＳ用参照テーブルＴ（ＯＳ）に記録される。したがって、以後、チャネル番号＃１を伴うコマンドが送信されてきた場合、ＯＳプログラムは、当該コマンドをアプリＡＰ１１宛のコマンドとして取り扱うことになる。
【０１１９】
なお、Java Card（商標）やGlobalPlatform （登録商標）などの仕様では、論理チャネルを開いたり閉じたりするための「Manage Channel」コマンドが用意されているが、通常、アプリケーション選択コマンド「SELECT(#1), AP11」が論理チャネル＃１を「開」にする指示と、アプリＡＰ１１を対応づける指示とを兼ねるため、図示の例のように、「Manage Channel」コマンドは省略されることが多い。
【０１２０】
続くプロセスＰ２（図９の流れ図のステップＳ１２に対応）では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。ＯＳプログラムは、当該コマンドに含まれているチャネル番号「＃１」を参照することにより、当該コマンドが、論理チャネル＃１に対応づけられているアプリＡＰ１１宛のコマンドであると判断し、これをアプリＡＰ１１に引き渡す（図の左向き矢印）。当該コマンドを受け取ったアプリＡＰ１１は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムＳＳＤ１に対して、自己のための暗号通信路の開設を依頼する（図の右向き矢印）。
【０１２１】
アプリＡＰ１１から暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、図８に例示したＳＤ用参照テーブルＴ（ＳＳＤ１）を参照することにより、現在の暗号通信路の開設状態を確認する処理を行う。ここに示す実施例の場合、同時に開設可能な暗号通信路の数は１つに制限されているため、図８に示す例のように、ＳＤ用参照テーブルＴ（ＳＳＤ１）の開設状態が「開設済」となっていた場合には、アプリＡＰ１１からの依頼は拒絶せざるを得ない。
【０１２２】
ここでは、説明の便宜上、開設状態が「未開設」になっていたものとしよう。この場合は、アプリＡＰ１１からの依頼に応じて、暗号通信路の開設を行うことができるので、新たにセッションキー「xxxxxx」を発生させて、ＳＤ用参照テーブルＴ（ＳＳＤ１）に図８に示すような記録を行うとともに、暗号通信路の開設に必要な種々の処理を実行する。たとえば、以後、アプリＡＰ１１から外部装置２００宛の送信データが発生した場合には、これをセッションキー「xxxxxx」で暗号化できる態勢を整え、外部装置から２００からアプリＡＰ１１宛の受信データが発生した場合には、これをセッションキー「xxxxxx」で復号できる態勢を整える。
【０１２３】
こうして、暗号通信路開設処理が正常に行われたら、その旨を依頼主であるアプリＡＰ１１に報告する（図の左向き矢印）。アプリＡＰ１１は、当該報告を受けて、暗号通信路開設コマンドが正常に実行された旨をＯＳプログラムに伝達する（図の右向き矢印）。そこで、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０１２４】
なお、実際には、このプロセスＰ２の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われ、ＳＤ用参照テーブルＴ（ＳＳＤ１）に対して「開設済」の記録がなされることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
【０１２５】
こうして、プロセスＰ２が完了した時点ｔ２では、管理プログラムＳＳＤ１によって、アプリＡＰ１１のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリＡＰ１１とホスト側アプリとの間で暗号通信が行われる。したがって、実際には、図示の時点ｔ２の前後において、暗号通信路を介した情報送受プロセスが存在するが、図１０のダイアグラムでは、当該情報送受プロセスの図示は省略されている。
【０１２６】
さて、図９の流れ図に示す手順では、上述したように、アプリＡＰ１１との間で論理チャネル＃１を介した暗号情報送受プロセスが完了したホスト側アプリが、今度は、別なアプリＡＰ１２との間で同じ論理チャネル＃１を介した暗号情報送受プロセスを実行することになる。
【０１２７】
まず、プロセスＰ３（図９の流れ図のステップＳ１３に対応）では、外部装置２００内のホスト側アプリから情報処理装置１００に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる。ＯＳプログラムは、このアプリケーション選択コマンドを「論理チャネル＃１を指定してアプリＡＰ１２を選択するコマンド」として解釈し、論理チャネル＃１にアプリＡＰ１２を割り当てる処理を行う。ただ、この時点では、図８のＯＳ用参照テーブルＴ（ＯＳ）に示されているとおり、論理チャネル＃１には既に旧アプリＡＰ１１が割り当てられている。
【０１２８】
そこで、ＯＳプログラムは、まず、旧アプリＡＰ１１に対して、チャネル番号＃１との対応関係が解除された旨の解除通知（選択が解除された旨の通知）を与える。図示の「Deselect処理」と記された左向き矢印は、このような解除通知を示している。この解除通知を受けたアプリＡＰ１１は、自己を管理する管理プログラムＳＳＤ１に対して、選択が解除された旨の報告を行う。図示の「報告処理」と記された一点鎖線の右向き矢印は、このような選択解除の報告信号を示している。この報告信号は、管理プログラムＳＳＤ１に対して、ＳＤ用参照テーブルにおけるアプリＡＰ１１についての暗号通信路管理情報の消去を依頼する役割を果たす。なお、この「報告処理」の矢印が一点鎖線で示されているのは、後述するように、アプリＡＰ１１が、仕様上の取り決めを遵守していない欠陥プログラムであった場合に、この「報告処理」は実行されない可能性があることを示すためである。
【０１２９】
この図１０に示すダイアグラムは、アプリＡＰ１１が、仕様どおり「報告処理」を実行した場合の例である。この「報告処理」は、アプリＡＰ１１への論理チャネルの割り当てが解除されたことを報知するものであるから、当然、当該論理チャネル上に開設されていた暗号通信路を終了する必要がある。そこで、この報告を受けた管理プログラムＳＳＤ１は、これまで論理チャネル＃１でアプリＡＰ１１のために開設していた暗号通信路を終了する処理を行う。具体的には、図８に示すＳＤ用参照テーブルＴ（ＳＳＤ１）の開設状態の欄を「未開設」とし、アプリ名，チャネル番号，セッションキーの各欄の情報を消去する。
【０１３０】
一方、論理チャネルの割り当てが解除されたアプリＡＰ１１は、「Deselect処理」に応じた確認信号（図の実線の右向き矢印）をＯＳプログラムに返す。そこで、ＯＳプログラムは、論理チャネル＃１に新たに割り当てるプログラムとして選択された新アプリＡＰ１２に対して、選択が行われた旨を伝達する。図示の「Select処理」と記された左向き矢印は、このような伝達信号を示している。この伝達信号を受けた新アプリＡＰ１２は、ＯＳプログラムに対して、確認信号（図の右向き矢印）を返信する。そこで、ＯＳプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０１３１】
以上の処理により、論理チャネル＃１に新たにアプリＡＰ１２が対応づけられ、アプリＡＰ１２のために論理チャネル＃１が「開」の状態になる。このような対応関係は、図８に例示したＯＳ用参照テーブルＴ（ＯＳ）に記録される。すなわち、ＯＳプログラムは、新アプリＡＰ１２から確認信号が得られた時点で、図８に示すＯＳ用参照テーブルＴ（ＯＳ）の＃１の行のアプリ名の欄を、「ＡＰ１１」から「ＡＰ１２」に書き換える処理を行うことになる。以後、チャネル番号＃１を伴うコマンドが送信されてきた場合、ＯＳプログラムは、当該コマンドをアプリＡＰ１２宛のコマンドとして取り扱うことになる。
【０１３２】
続くプロセスＰ４（図９の流れ図のステップＳ１４に対応）では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。ＯＳプログラムは、当該コマンドに含まれているチャネル番号「＃１」を参照することにより、当該コマンドが、論理チャネル＃１に対応づけられているアプリＡＰ１２宛のコマンドであると判断し、これをアプリＡＰ１２に引き渡す（図の左向き矢印）。当該コマンドを受け取ったアプリＡＰ１２は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムＳＳＤ１に対して、自己のための暗号通信路の開設を依頼する（図の右向き矢印）。
【０１３３】
アプリＡＰ１２から暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）を参照することにより、現在の暗号通信路の開設状態を確認する処理を行う。上述したとおり、この時点では、既にＳＤ用参照テーブルＴ（ＳＳＤ１）の開設状態の欄は「未開設」になっており、アプリ名，チャネル番号，セッションキーの各欄には情報は記録されていない。したがって、同時に開設可能な暗号通信路の数は１つに制限されているものの、現時点では、暗号通信路は「未開設」の状態なので、管理プログラムＳＳＤ１は、アプリＡＰ１２からの依頼に応じて、暗号通信路の開設を行うことができる。そこで、新たなセッションキー「yyyyyy」を発生させて、ＳＤ用参照テーブルＴ（ＳＳＤ１）にしかるべき記録を行うとともに、暗号通信路の開設に必要な種々の処理を実行する。
【０１３４】
こうして、暗号通信路開設処理が正常に行われたら、その旨を依頼主であるアプリＡＰ１２に報告する（図の左向き矢印）。アプリＡＰ１２は、当該報告を受けて、暗号通信路開設コマンドが正常に実行された旨をＯＳプログラムに伝達する（図の右向き矢印）。そこで、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。なお、前述したとおり、実際には、このプロセスＰ４の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
【０１３５】
こうして、プロセスＰ４が完了した時点ｔ４では、管理プログラムＳＳＤ１によって、アプリＡＰ１２のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリＡＰ１２とホスト側アプリとの間で暗号通信が行われる。図１０のダイアグラムには示されていないが、実際には、図示の時点ｔ４以降に、暗号通信路を介した情報送受プロセスが行われることになる。
【０１３６】
このように、管理プログラムＳＳＤ１は、同時には１つの暗号通信路しか開設することができないが、プロセスＰ１，Ｐ２においてアプリＰ１１のための暗号通信路を開設した後、当該暗号通信路を終了させた後であれば、プロセスＰ３，Ｐ４においてアプリＰ１２のために新たな暗号通信路を開設することができる。
【０１３７】
＜４−３．  従来装置による欠陥処理手順＞
上述した図１０のダイアグラムに示されているとおりの正常処理手順が実行されれば、特に問題は生じない。しかしながら、アプリＡＰ１１が、欠陥プログラムであった場合、図１０のプロセスＰ３に一点鎖線の右向き矢印で示されている「報告処理」は実行されない可能性がある。
【０１３８】
すなわち、Java Card（商標）やGlobalPlatform （登録商標）などの仕様では、アプリケーションプログラムは、ＯＳプログラムから、選択が解除された旨の通知（図１０に「Deselect処理」と記された左向き矢印に相当する通知）を受け取った場合、自己を管理する管理プログラムＳＤに対して、選択が解除された旨の報告（図１０に「報告処理」と記された一点鎖線の右向き矢印に相当する通知）を行うことになっている。したがって、アプリＡＰ１１が、この仕様に準拠した正常なプログラムであれば、一点鎖線の右向き矢印で示す「報告処理」が実行され、図１０のダイアグラムに示されているとおりの正常処理手順が実行されることになる。
【０１３９】
ところが、この「報告処理」が実行されないと、図１１のダイアグラムに示されている欠陥処理手順が実行されることになる。すなわち、実際には旧アプリＡＰ１１の暗号通信が終了しているにもかかわらず、新アプリＡＰ１２のための暗号通信路が開設できない事態が生じる。
【０１４０】
図１１のダイアグラムの前半のプロセスＰ１，Ｐ２の処理は、図１０のダイアグラムの前半のプロセスＰ１，Ｐ２の処理と全く同じである。しかしながら、図１１のダイアグラムの後半のプロセスは若干異なる。ここでは、図１１のダイアグラムの後半のプロセスを、図示のとおりプロセスＰ３′，Ｐ４′と呼ぶことにする。
【０１４１】
プロセスＰ３′（図９の流れ図のステップＳ１３に対応）において、外部装置２００内のホスト側アプリから情報処理装置１００に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる点は、図１０のプロセスＰ３と全く同じである。そして、ＯＳプログラムが、このアプリケーション選択コマンドを「論理チャネル＃１を指定して新たなアプリＡＰ１２を選択するコマンド」として解釈し、旧アプリＡＰ１１に対して、図示の「Deselect処理」と記された解除通知を与える点も、図１０のプロセスＰ３と全く同じである。
【０１４２】
ただ、旧アプリＡＰ１１が、欠陥プログラムであった場合、この解除通知を受けたアプリＡＰ１１は、「Deselect処理」に応じた確認信号（図の右向き矢印）をＯＳプログラムに返すものの、管理プログラムＳＳＤ１に対する「報告処理」は怠ってしまうため、図に一点鎖線の右向き矢印で示す「報告処理」は実行されない。その結果、管理プログラムＳＳＤ１は、論理チャネル＃１でアプリＡＰ１１のために開設している暗号通信路が終了したことを認識することができないため、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容を、図８に示す「開設済」の状態にそのまま維持する。
【０１４３】
一方、ＯＳプログラムは、旧アプリＡＰ１１から、「Deselect処理」に応じた確認信号（図の実線の右向き矢印）を受け取った後、新アプリＡＰ１２に対して、選択が行われた旨を伝達する伝達信号（「Select処理」と記された左向き矢印）を与える。この伝達信号を受けた新アプリＡＰ１２は、ＯＳプログラムに対して、確認信号（図の右向き矢印）を返信する。そこで、ＯＳプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０１４４】
また、ＯＳプログラムは、新アプリＡＰ１２から確認信号が得られた時点で、図８に示すＯＳ用参照テーブルＴ（ＯＳ）の＃１の行のアプリ名の欄を、「ＡＰ１１」から「ＡＰ１２」に書き換える処理を行う。その結果、論理チャネル＃１に新たにアプリＡＰ１２が対応づけられ、アプリＡＰ１２のために論理チャネル＃１が「開」の状態になる。したがって、以後、チャネル番号＃１を伴うコマンドが送信されてきた場合、ＯＳプログラムは、当該コマンドをアプリＡＰ１２宛のコマンドとして取り扱うことになる。
【０１４５】
続くプロセスＰ４′（図９の流れ図のステップＳ１４に対応）では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。ＯＳプログラムは、当該コマンドに含まれているチャネル番号「＃１」を参照することにより、当該コマンドが、論理チャネル＃１に対応づけられているアプリＡＰ１２宛のコマンドであると判断し、これをアプリＡＰ１２に引き渡す（図の左向き矢印）。当該コマンドを受け取ったアプリＡＰ１２は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムＳＳＤ１に対して、自己のための暗号通信路の開設を依頼する（図の右向き矢印）。
【０１４６】
アプリＡＰ１２から暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）を参照することにより、現在の暗号通信路の開設状態を確認する処理を行う。ところが、上述したとおり、この時点では、ＳＤ用参照テーブルＴ（ＳＳＤ１）は、図８に示す状態のままとなっており、管理プログラムＳＳＤ１は、現在、論理チャネル＃１を用いてアプリＡＰ１１のために暗号通信路を開設済ということになっている。したがって、管理プログラムＳＤが同時に開設可能な暗号通信路の数は１つに制限されている状況では、管理プログラムＳＳＤ１は、アプリＡＰ１２からの暗号通信路開設依頼を拒絶せざるを得ない。
【０１４７】
このため、暗号通信路開設依頼が拒絶される旨が、依頼主であるアプリＡＰ１２に報告される（図のＮＧと記された左向き矢印）。アプリＡＰ１２は、当該報告を受けて、暗号通信路開設コマンドが正常に実行されなかった旨をＯＳプログラムに伝達する（図のＮＧと記された右向き矢印）。そこで、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行されなかった旨の応答（図のＮＧと記された右向き矢印）を返す。
【０１４８】
このように、図１１に示す欠陥処理手順によると、実際には旧アプリＡＰ１１の暗号通信が終了しているにもかかわらず、新アプリＡＰ１２のための暗号通信路が開設できない事態が生じる。その原因は、アプリＡＰ１１が、所定の仕様に準拠しない欠陥プログラムであり、ＯＳプログラムから解除通知（Deselect処理）を受けたにもかかわらず、その旨を管理プログラムＳＳＤ１に報告する「報告処理」を怠ったことにある。
【０１４９】
既に述べたとおり、最近のＩＣカードは、ＮＦＣ（Near Field Communication）と呼ばれる近接距離通信用のインターフェイスを備えてきており、ＮＦＣを利用して通信を行う様々なアプリケーションプログラムが配布されるようになってきている。また、アプリケーションプログラムのベンダーも、大企業から中小企業に至るまで裾野が広がってきている。このため、配布されるアプリケーションプログラムの中には、「通信終了時にはその旨を管理プログラムに報告する」という仕様上の取り決めを遵守していない欠陥プログラムが散見されるようになってきており、そのような欠陥プログラムの数は益々増大してゆくものと予想される。このため、図１１のダイアグラムに示すような問題の頻発が危惧される。
【０１５０】
＜４−４．  従来装置による各参照テーブルの変遷＞
ここでは、図１０のダイアグラムに示す正常処理手順および図１１のダイアグラムに示す欠陥処理手順におけるＯＳ用参照テーブルＴ（ＯＳ）とＳＤ用参照テーブルＴ（ＳＳＤ１）の変遷を示す。
【０１５１】
図１２〜図１６は、図１０のダイアグラムに示す正常処理手順の各時点ｔ０〜ｔ４におけるＯＳ用参照テーブルＴ（ＯＳ）とＳＤ用参照テーブルＴ（ＳＳＤ１）の状態を示す図である。
【０１５２】
まず、時点ｔ０では、図１２に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）は、チャネル番号＃０のみが「開」状態となっており、論理チャネル＃０に管理プログラムＳＳＤ１が割り当てられている。Java Card（商標）やGlobalPlatform （登録商標）などの仕様では、初期状態では論理チャネル＃０のみが「開」状態となり、予め設定されているデフォルトのアプリケーションプログラムが割り当てられる。一方、ＳＤ用参照テーブルＴ（ＳＳＤ１）は、未開設状態を示しており、開設状態の欄は「未開設」となっている。したがって、アプリ名，チャネル番号，セッションキーの各欄には情報は記録されていない（図では、便宜上「無」の文字を表示してある）。
【０１５３】
次の時点ｔ１では、図１３に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号＃１が「開」状態に変更され、新たにアプリＡＰ１１が論理チャネル＃１に割り当てられている。以下、説明の便宜上、各時点の参照テーブルの個々の欄のうち、当該時点の直前のプロセスで変更が生じた欄を太線枠で示す。図１３に示すＯＳ用参照テーブルＴ（ＯＳ）の場合、チャネル番号＃１についての開閉状態が「開」に変更され、アプリ名が「ＡＰ１１」に変更されている。これは、図１０のダイアグラムにおける時点ｔ１の直前のプロセスＰ１において、アプリケーション選択コマンド「SELECT(#1), AP11」に基づいて、チャネル番号＃１を「開」状態として、アプリＡＰ１１を割り当てる処理が行われ、ＯＳプログラムによってＯＳ用参照テーブルＴ（ＯＳ）に対する書き換えが行われたためである。この時点ｔ１では、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容に変更は生じていない。
【０１５４】
続く時点ｔ２では、図１４に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）の内容に変更は生じていないが、ＳＤ用参照テーブルＴ（ＳＳＤ１）については、図に太線枠で示すとおり、すべての欄の情報が変更されている。すなわち、開設状態の欄は「開設済」，アプリ名の欄は「ＡＰ１１」，チャネル番号の欄は「＃１」，セッションキーの欄は「xxxxxx」に書き換えられている。これは、図１０のダイアグラムにおける時点ｔ２の直前のプロセスＰ２において、アプリＡＰ１１から管理プログラムＳＳＤ１に対して暗号通信路開設依頼があったためである。
【０１５５】
図１０のダイアグラムのプロセスＰ２に示されているとおり、アプリＡＰ１１から暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、その時点での開設状態を確認する処理を行うことになるが、この確認時点でのＳＤ用参照テーブルＴ（ＳＳＤ１）の状態は、図１３に示す時点ｔ１の状態であり、開設状態は「未開設」となっているため、管理プログラムＳＳＤ１は、アプリＡＰ１１からの暗号通信路開設依頼を受諾することなる。したがって、管理プログラムＳＳＤ１が、依頼どおり、論理チャネル＃１を用いて、アプリＡＰ１１のための暗号通信路を開設し、新たにセッションキー「xxxxxx」を発生させる処理を行い、これに応じた情報をＳＤ用参照テーブルＴ（ＳＳＤ１）に書き込む処理を行う。図１４に示す時点ｔ２の状態におけるＳＤ用参照テーブルＴ（ＳＳＤ１）は、このような書き込み処理が行われた後の状態ということになる。
【０１５６】
次の時点ｔ３では、図１５に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号＃１に対応するアプリ名の欄が「ＡＰ１１」から「ＡＰ１２」に変更されている。これは、図１０のダイアグラムにおける時点ｔ３の直前のプロセスＰ３において、アプリケーション選択コマンド「SELECT(#1), AP12」に基づいて、チャネル番号＃１に割り当てられていた旧アプリＡＰ１１の選択を解除し、新たに新アプリＡＰ１２をチャネル番号＃１に割り当てる処理が行われ、ＯＳプログラムによる書き換えが行われたためである。
【０１５７】
一方、図１５に示すとおり、ＳＤ用参照テーブルＴ（ＳＳＤ１）については、図に太線枠で示すとおり、すべての欄の情報が変更されている。すなわち、開設状態の欄は「未開設」になり，アプリ名，チャネル番号，セッションキーの各欄は、いずれも情報が消去されている。これは、図１０のダイアグラムにおけるプロセスＰ３において、解除通知を受けたアプリＡＰ１１から管理プログラムＳＳＤ１に対して、選択が解除された旨を報告する「報告処理」（一点鎖線の右向き矢印）が実行され、この報告を受けた管理プログラムＳＳＤ１が、これまで論理チャネル＃１でアプリＡＰ１１のために開設していた暗号通信路を終了する処理を行ったためである。すなわち、管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）を「未開設」の状態に初期化し、図１５に示す状態に書き換えることになる。
【０１５８】
最後の時点ｔ４では、図１６に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）の内容に変更は生じていないが、ＳＤ用参照テーブルＴ（ＳＳＤ１）については、図に太線枠で示すとおり、すべての欄の情報が変更されている。すなわち、開設状態の欄は「開設済」，アプリ名の欄は「ＡＰ１２」，チャネル番号の欄は「＃１」，セッションキーの欄は「yyyyyy」に書き換えられている。これは、図１０のダイアグラムにおける時点ｔ４の直前のプロセスＰ４において、アプリＡＰ１２から管理プログラムＳＳＤ１に対して暗号通信路開設依頼があったためである。
【０１５９】
図１０のダイアグラムのプロセスＰ４に示されているとおり、アプリＡＰ１２から暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、その時点での開設状態を確認する処理を行うことになるが、この確認時点でのＳＤ用参照テーブルＴ（ＳＳＤ１）の状態は、図１５に示す時点ｔ３の状態であり、開設状態は「未開設」となっているため、管理プログラムＳＳＤ１は、アプリＡＰ１２からの暗号通信路開設依頼を受諾することなる。したがって、管理プログラムＳＳＤ１が、依頼どおり、論理チャネル＃１を用いて、アプリＡＰ１２のための暗号通信路を開設し、新たにセッションキー「yyyyyy」を発生させる処理を行い、これに応じた情報をＳＤ用参照テーブルＴ（ＳＳＤ１）に書き込む処理を行う。図１６に示す時点ｔ４の状態におけるＳＤ用参照テーブルＴ（ＳＳＤ１）は、このような書き込み処理が行われた後の状態ということになる。
【０１６０】
以上、図１０のダイアグラムに示す正常処理手順における時点ｔ０〜ｔ４に至るまでの各参照テーブルの変遷を、図１２〜図１６を参照しながら説明した。続いて、図１１のダイアグラムに示す欠陥処理手順における時点ｔ０〜ｔ４′に至るまでの各参照テーブルの変遷を説明する。
【０１６１】
前述したとおり、図１１のダイアグラムに示す前半のプロセスＰ１，Ｐ２は、図１０のダイアグラムに示す前半のプロセスＰ１，Ｐ２と全く同じである。したがって、図１１のダイアグラムに示す欠陥処理手順における時点ｔ０，ｔ１，ｔ２における各参照テーブルの状態は、それぞれ図１２，図１３，図１４に示すとおりになる。これに対して、後半のプロセスは若干異なる。
【０１６２】
まず、図１１のダイアグラムに示す後半のプロセスＰ３′では、解除通知を受けたアプリＡＰ１１から管理プログラムＳＳＤ１に対して、選択が解除された旨の「報告処理」（一点鎖線の右向き矢印）が実行されない。このため、管理プログラムＳＳＤ１は、論理チャネル＃１でアプリＡＰ１１のために開設していた暗号通信路が終了したことを認識できず、ＳＤ用参照テーブルＴ（ＳＳＤ１）の初期化は行われない。このため、プロセスＰ３′が完了した時点ｔ３′における各参照テーブルの状態は、図１５に示す時点ｔ３の状態ではなく、図１７に示す時点ｔ３′の状態になる。
【０１６３】
すなわち、ＯＳ用参照テーブルＴ（ＯＳ）については、チャネル番号＃１に割り当てられたプログラムが「ＡＰ１１」から「ＡＰ１２」に変更された状態になっているが、ＳＤ用参照テーブルＴ（ＳＳＤ１）については、時点ｔ２の状態がそのまま維持されることになる。その結果が、次のプロセスに影響を及ぼすことになる。
【０１６４】
すなわち、図１１のダイアグラムに示す後半のプロセスＰ４′では、アプリＡＰ１２から管理プログラムＳＳＤ１に対して暗号通信路開設依頼がある。この開設依頼を受けた管理プログラムＳＳＤ１は、その時点での開設状態を確認する処理を行うことになるが、この確認時点でのＳＤ用参照テーブルＴ（ＳＳＤ１）の状態は、図１７に示す時点ｔ３′の状態である。すなわち、開設状態の欄は「開設済」になっており、論理チャネル＃１を用いて、アプリＡＰ１１のための暗号通信路が既に開設されていることが示されている。
【０１６５】
したがって、管理プログラムＳＳＤ１は、アプリＡＰ１２からの暗号通信路開設依頼を拒絶することになり、最後の時点ｔ４′における各参照テーブルの状態は、図１７に示す時点ｔ３′における状態と同じになる。こうして、実際には旧アプリＡＰ１１の暗号通信が終了しているにもかかわらず、新アプリＡＰ１２のための暗号通信路が開設できない事態が生じることは、既に説明したとおりである。
【０１６６】
＜＜＜  §５．  本発明の第１の実施形態における暗号通信路開設処理  ＞＞＞
ここでは、本発明の第１の実施形態に係る情報処理装置における暗号通信路開設処理のプロセスを説明する。この第１の実施形態に係る情報処理装置１００の基本構成は、§３で述べたとおりである。すなわち、図７に示すとおり、プログラム格納部１１０、データ格納部１２０、プログラム実行部１３０を備えている。そして、プログラム格納部１１０には、ＯＳプログラム、管理プログラムＳＤ、一般アプリプログラムＡＰが格納されており、データ格納部１２０には、ＯＳ用情報格納部１２１、ＳＤ用情報格納部１２２、ＡＰ用情報格納部１２３が設けられている。
【０１６７】
ただ、ＯＳ用情報格納部１２１およびＳＤ用情報格納部１２２に格納されるＯＳ用参照テーブルＴ（ＯＳ）やＳＤ用参照テーブルＴ（ＳＤ）の記録内容は、§４で述べた従来装置のものとは異なり、本発明独自の内容になっている。したがって、ＯＳプログラムや管理プログラムＳＤによる処理手順も、§４で述べた従来装置のものとは異なり、本発明独自の処理手順になっている。
【０１６８】
＜５−１．  第１の実施形態による基本的な処理手法＞
はじめに、ここで述べる第１の実施形態による基本的な処理手法の概念を、§４で述べた従来装置による基本的な処理手法の概念と対比させながら説明する。図１８は、§４で述べた従来の一般的なＳＩＭカード（情報処理装置）内に用意されるＯＳ用参照テーブルおよびＳＤ用参照テーブル（上段の図(a) ）と、本発明の第１の実施形態に係るＳＩＭカード（情報処理装置）内に用意されるＯＳ用参照テーブルおよびＳＤ用参照テーブル（下段の図(b) ）との対比を示す図である。
【０１６９】
上段の図(a) は、図８に示した従来装置における各参照テーブルであり、ＯＳ用情報格納部１２１内には、ＯＳ用参照テーブルＴ（ＯＳ）が格納され、ＳＤ用情報格納部１２２内には、ＳＤ用参照テーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）が格納されている。
【０１７０】
ＯＳ用参照テーブルＴ（ＯＳ）は、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するためのテーブルであり、ＯＳプログラムによって管理される。図示の例の場合、チャネル番号＃０，＃１，＃２に対して、それぞれアプリケーションプログラム「ＳＳＤ１」，「ＡＰ１１」，「ＡＰ０２」が対応することを示す対応関係が記録されている。
【０１７１】
一方、各ＳＤ用参照テーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）は、各管理プログラムＳＤについての通信路管理情報を記録するためのテーブルであり、各管理プログラムＳＤによって管理される。図には、管理プログラムＳＳＤ１についてのＳＤ用参照テーブルＴ（ＳＳＤ１）の内容が例示されている。具体的には、現在、管理プログラムＳＳＤ１は、論理チャネル＃１を用いて、アプリＡＰ１１のために暗号通信路を開設済であることが記録されている。
【０１７２】
このように、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報を、ＯＳプログラムによって管理されるＯＳ用参照テーブルＴ（ＯＳ）に記録し、特定の管理プログラムＳＤについての通信路管理情報を、当該特定の管理プログラムＳＤによって管理されるＳＤ用参照テーブルＴ（ＳＤ）に記録する、という処理方法は、非常に常識的かつ効率的な方法である。
【０１７３】
なぜなら、ＯＳプログラムは、外部装置から与えられたコマンドを、当該コマンドに含まれているチャネル番号に応じて、特定のアプリケーションプログラムに引き渡す処理を行う必要があるので、図１８(a) に示すように、チャネル対応情報をＯＳ用参照テーブルＴ（ＯＳ）に記録することは非常に常識的かつ効率的な方法である。また、暗号通信路の開設処理は、管理プログラムＳＤによって実行される処理であるので、図１８(a) に示すように、通信路管理情報をＳＤ用参照テーブルＴ（ＳＤ）に記録することは非常に常識的かつ効率的な方法である。このため、従来装置では、このような記録方法を採用して暗号通信路開設処理が行われていることは、既に§４で詳述したとおりである。
【０１７４】
しかしながら、この従来装置による暗号通信路開設処理を採用した場合、アプリケーションプログラムの中に、選択が解除されたことを管理プログラムＳＤに報告する「報告処理」を怠る欠陥プログラムが存在した場合、新たな暗号通信路が開設できなくなる、という問題が生じることも、既に§４で述べた。
【０１７５】
このような問題を解決するため、この§５で述べる本発明の第１の実施形態では、図１８の上段の図(a) に示す各参照テーブルの代わりに、図１８の下段の図(b) に示す各参照テーブルを用いることにする。ここでは、説明の便宜上、図１８の下段左に示す参照テーブルを、上段左に示す参照テーブルと同様に「ＯＳ用参照テーブルＴ（ＯＳ）」と呼ぶことにし、下段右に示す参照テーブルを、上段右に示す参照テーブルと同様に「ＳＤ用参照テーブルＴ（ＳＤ）」と呼ぶことにする。下段右に示すとおり、「ＳＤ用参照テーブルＴ（ＳＤ）」としては、個々の管理プログラムごとに、それぞれテーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）が設けられることになるが、ここでは、管理プログラムＳＳＤ１についてのＳＤ用参照テーブルＴ（ＳＳＤ１）を代表例にとって、以下の説明を行うことにする。
【０１７６】
上段の図１８(a) から下段の図１８(b) に向かう白抜き矢印は、従来の各参照テーブル（上段）に記録されていた情報と、本発明の各参照テーブル（下段）に記録されることになる情報との対応関係を示している。まず、上段左に示す従来のＯＳ用参照テーブルＴ（ＯＳ）に記録されていた情報（チャネル対応情報）は、白抜き矢印で示すとおり、下段左に示す本発明のＯＳ用参照テーブルＴ（ＯＳ）にそっくり盛り込まれている。
【０１７７】
一方、上段右に示す従来のＳＤ用参照テーブルＴ（ＳＳＤ１）に記録されていた情報（通信路管理情報）のうちの一部（図に太線枠で囲った部分）は、白抜き矢印で示すとおり、実質的に下段左に示す本発明のＯＳ用参照テーブルＴ（ＯＳ）に盛り込まれることになる。その結果、上段右に示す従来のＳＤ用参照テーブルＴ（ＳＳＤ１）に記録されていた情報（通信路管理情報）のうち、「セッションキー」の欄の情報だけが、白抜き矢印で示すとおり、下段右に示す本発明のＳＤ用参照テーブルＴ（ＳＳＤ１）に残されることになる。なお、ＳＤ用参照テーブルＴ（ＳＳＤ１）に、チャネル番号「＃１」の記録を残しておく運用を採用してもかまわない。この場合、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、チャネル番号とセッションキーが記録されることになる。
【０１７８】
結局、下段左に示された本発明のＯＳ用参照テーブルＴ（ＯＳ）は、上段左に示された従来のＯＳ用参照テーブルＴ（ＯＳ）に、新たに「開設状態」の欄を設け、この「開設状態」の欄に、「特定の管理プログラムにより暗号通信路が開設済」という情報を記録するようにしたもの、ということができる。図示の例の場合、上段右に示されたＳＤ用参照テーブルＴ（ＳＳＤ１）のうちの太線枠で囲った部分の情報、すなわち、管理プログラムＳＳＤ１についての、開設状態「開設済」，アプリ名「ＡＰ１１」，チャネル番号「＃１」という情報は、下段左に示されているＯＳ用参照テーブルＴ（ＯＳ）の第２行目に記録されている。このため、下段右に示されているＳＤ用参照テーブルＴ（ＳＳＤ１）には、「開設状態」，「アプリ名」，「チャネル番号」の各欄は廃止され（図では、説明の便宜上、太線枠に×印をつけて示した）、セッションキーの欄のみが残る結果となっている。
【０１７９】
既に述べたとおり、ＳＤ用情報格納部１２２内には、個々の管理プログラムＳＳＤ１，ＳＳＤ２，ＳＳＤ３，ＩＳＤのそれぞれについてのＳＤ用参照テーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）が格納されている。したがって、これらの各ＳＤ用参照テーブルＴ（ＳＤ）は、個々の管理プログラムごとに、それぞれ開設済の暗号通信路に利用するセッションキーを記録するテーブルとして機能することになる。各管理プログラムＳＤは、新たな暗号通信路の開設を行う際に、当該暗号通信路に利用するセッションキーを発生させ、これを各ＳＤ用参照テーブルＴ（ＳＤ）に書き込む処理を行う。
【０１８０】
ここでは、図１８の下段左に示す本発明の第１の実施形態に係るＯＳ用参照テーブルＴ（ＯＳ）の「アプリ名」の欄と「開設状態」の欄に記録される情報を、「暗号通信路開設情報」と呼ぶことにする。この暗号通信路開設情報の本質的な役割は、その時点において、暗号通信路を開設済の管理プログラムを示すことにある。
【０１８１】
一方、この下段左に示すＯＳ用参照テーブルＴ（ＯＳ）の「チャネル番号」，「開閉状態」，「アプリ名」の各欄に記録される情報は、前述したとおり、上段左に示すＯＳ用参照テーブルＴ（ＯＳ）に記録されていたチャネル対応情報である。このチャネル対応情報の本質的な役割は、その時点において、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すことにある。
【０１８２】
なお、図示する実施例では、ＯＳ用参照テーブルＴ（ＯＳ）に「開閉状態」の欄が設けられているが、「アプリ名」の欄に何らかのアプリケーションプログラムを示す情報が記録されている場合は、「開閉状態」の欄は「開」になり、「アプリ名」の欄が「無」の場合は、「開閉状態」の欄は「閉」になるので、「開閉状態」の欄は本質的なものではなく、省略してもかまわない。同様に、ＳＤ用参照テーブルＴ（ＳＳＤ１）の「開設状態」の欄には、「ＳＳＤ１開設済」なる情報が記録されているが、この欄に管理プログラム名が記載されていれば「開設済」ということになるので、「開設済」という情報は必須ではなく、省略してもかまわない。ただ、ここでは、「未開設」との対比を行うため、「○○○開設済」という記載を行う例を示す。
【０１８３】
ここに示す実施例の場合、暗号通信路開設情報は、チャネル対応情報の一部を構成する「アプリ名」の欄を利用することにより、チャネル対応情報によって対応関係が示されているアプリケーションプログラムのために暗号通信路を開設済の管理プログラムを示す情報として機能している。たとえば、図示の例の場合、下段左に示すＯＳ用参照テーブルＴ（ＯＳ）の第２行目には、「＃１」，「開」，「ＡＰ１１」，「ＳＳＤ１開設済」なる情報が対応づけて記録されているが、当該記録は、特定のチャネル番号「＃１」と特定のアプリケーションプログラム「ＡＰ１１」との対応関係を示すチャネル対応情報としての役割とともに、管理プログラム「ＳＳＤ１」が、アプリ「ＡＰ１１」のために暗号通信路を開設済であることを示す暗号通信路開設情報としての役割を果たす。
【０１８４】
このＯＳ用参照テーブルＴ（ＯＳ）は、ＯＳプログラムによって管理される情報であり、ＯＳプログラムによって書き込みや変更が行われ、ＯＳプログラムによって参照される。したがって、この第１の実施形態に係る装置１００に組み込まれているＯＳプログラムは、外部装置２００から、特定の選択チャネル番号に特定の選択アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、このＯＳ用参照テーブルＴ（ＯＳ）に、当該選択チャネル番号と当該選択アプリケーションプログラムとの対応関係を示すチャネル対応情報を記録する処理を行う。
【０１８５】
このとき、当該選択アプリケーションプログラムに関する暗号通信路開設情報の記録を未開設状態に初期化する処理を行う。たとえば、ＯＳ用参照テーブルＴ（ＯＳ）が、図１８の下段左に示す状態であるときに、選択チャネル番号＃１に、新たな選択アプリケーションプログラムＡＰ１２を対応づけるためのアプリケーション選択コマンド「SELECT(#1), AP12」が与えられると、ＯＳプログラムは、チャネル番号＃１に対応する第２行目のアプリ名の欄を「ＡＰ１１」から「ＡＰ１２」に書き換えるとともに、第２行目の開設状態の欄に既存の「ＳＳＤ１開設済」を消去して、「未開設」の状態に初期化する処理を行うことになる。
【０１８６】
もちろん、この第１の実施形態に係る装置１００に組み込まれているＯＳプログラムは、従来のＯＳプログラムと同様に、外部装置２００から、特定のチャネル番号を指定した所定コマンドが与えられたときに、このＯＳ用参照テーブルＴ（ＯＳ）に記録されているチャネル対応情報を参照することにより、指定されたチャネル番号に対応するアプリケーションプログラムを認識し、与えられた所定コマンドを、認識したアプリケーションプログラムに引き渡す処理も行う。
【０１８７】
一方、この第１の実施形態で利用されるＳＤ用参照テーブルＴ（ＳＳＤ１）では、図１８の下段右に×印を付して示すとおり、暗号通信路開設情報の記録は廃止されてしまったため、管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）を参照しても、現在、自分自身が何らかの暗号通信路の開設を行っているのか否かを確認することができない。そこで、第１の実施形態に係る管理プログラムＳＳＤ１は、新たな暗号通信路の開設を行う際に、ＯＳプログラムに対してＯＳ用参照テーブルＴ（ＯＳ）に記録されている暗号通信路開設情報の内容（具体的には、管理プログラムＳＳＤ１が暗号通信路を開設済か否か）を問い合わせ、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。
【０１８８】
前述したとおり、管理プログラムＳＳＤ１の管理下にあるアプリケーションプログラムは、ＯＳプログラムから暗号通信路開設コマンドの引き渡しを受けた場合、自己を管理する管理プログラムＳＳＤ１に対して、自己のための暗号通信路開設依頼を行う。管理プログラムＳＳＤ１は、このような暗号通信路開設依頼を受けた場合、ＳＤ用参照テーブルT（ＳＳＤ１）を参照しても、自己が暗号通信路を開設しているか否かを確認することができないので、ＯＳプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う。
【０１８９】
ＯＳプログラムは、管理プログラムＳＳＤ１から、このような問い合わせがあると、ＯＳ用参照テーブルＴ（ＯＳ）内の暗号通信路開設情報を参照することにより、当該問い合わせについての回答を行う。そこで、管理プログラムＳＳＤ１は、得られた回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。
【０１９０】
具体的には、管理プログラムＳＳＤ１に対して、同時に開設可能な暗号通信路の数が１つだけという制限が課されている場合、ＯＳプログラムは、管理プログラムＳＳＤ１からの問い合わせがあったときに、当該管理プログラムＳＳＤ１が暗号通信路を「開設済」か「未開設」か、のいずれであるかを回答すればよい。管理プログラムＳＳＤ１は、「未開設」との回答が得られた場合には、新たな暗号通信路の開設を行い、「開設済」との回答が得られた場合には、新たな暗号通信路の開設を行わないことになる。
【０１９１】
たとえば、図１８に示す例において、管理プログラムＳＳＤ１がＯＳプログラムに対して暗号通信路開設情報の内容を問い合わせると、ＯＳプログラムは、ＯＳ用参照テーブルＴ（ＯＳ）の第２行目の開設状態の欄に「ＳＳＤ１開設済」なる記録がなされているため、「開設済」なる回答を行うことになる。そこで、当該回答を受けた管理プログラムＳＳＤ１は、新たな暗号通信路の開設を拒絶することになる。
【０１９２】
これに対して、図１８に示す例において、論理チャネル＃２に割り当てられたアプリＡＰ０２に対して、暗号通信路開設コマンドが与えられた場合を考えてみよう。この場合、アプリＡＰ０２は、自己を管理する管理プログラムＩＳＤ（図６の階層構造参照）に対して暗号通信路開設を依頼することになる。この依頼を受けた管理プログラムＩＳＤは、ＳＤ用参照テーブルＴ（ＩＳＤ）を参照しても、自己が暗号通信路を開設しているか否かを確認することができないので、ＯＳプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う。
【０１９３】
問い合わせを受けたＯＳプログラムは、図１８の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）の開設状態の各欄を検索するが、「ＩＳＤ開設済」なる記録は見つからないため、「未開設」なる回答を行うことになる。そこで、当該回答を受けた管理プログラムＩＳＤは、依頼元となるアプリＡＰ０２のために暗号通信路を開設することになる。そして、管理プログラムＩＳＤは、ＯＳプログラムに対して、アプリＡＰ０２のために暗号通信路を開設した旨を報告する。実際には、管理プログラムＩＳＤが、チャネル番号「＃２」について暗号通信路を開設した旨を報告すれば十分であり、「アプリＡＰ０２」を示す情報は報告する必要はない。
【０１９４】
ＯＳプログラムは、当該報告に応じて、管理プログラムＩＳＤがアプリＡＰ０２のために暗号通信路を開設済であることを示す暗号通信路開設情報を、ＯＳ用参照テーブルＴ（ＯＳ）に書き込む。たとえば、管理プログラム「ＩＳＤ」がチャネル番号「＃２」について暗号通信路を開設した旨の報告があった場合、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号「＃２」に対応する行についての開設状態の欄に「ＩＳＤ開設済」なる書き込みを行えばよい。
【０１９５】
このように、本発明の第１の実施形態に係る情報処理装置の重要な特徴は、ＯＳプログラムが管理するＯＳ用参照テーブルＴ（ＯＳ）に、その時点で暗号通信路を開設済の管理プログラムを示す暗号通信路開設情報を記録する点にある。図１８の下段左に示されているＯＳ用参照テーブルＴ（ＯＳ）の場合、第２行目の欄に、「ＡＰ１１」および「ＳＳＤ１開設済」なる情報が記録されており、現時点で、管理プログラムＳＳＤ１が、アプリＡＰ１１のための暗号通信路を開設済みであることが示されている。
【０１９６】
結局、管理プログラムＳＤが管理するＳＤ用参照テーブルＴ（ＳＤ）には、当該管理プログラムＳＤが、現在、暗号通信路を開設しているのか否かを示す情報は記録されない。このため、管理プログラムＳＤは、新たな暗号通信路の開設を行う際に、ＯＳプログラムに対して問い合わせを行う必要がある。しかしながら、論理チャネルの対応状態（チャネル対応情報）と、暗号通信路の開設状態（暗号通信路開設情報）とが、ＯＳ用参照テーブルＴ（ＯＳ）を用いてＯＳプログラムによって一元的に管理されるようになるため、選択が解除されたことを管理プログラムＳＤに報告する「報告処理」を怠る欠陥プログラムが存在した場合でも、新たな暗号通信路が開設できなくなる、という問題は生じない。以下、この点を、処理ダイアグラムを用いた具体的な事例について詳述する。
【０１９７】
＜５−２．  第１の実施形態による正常処理手順＞
ここでは、上述した第１の実施形態に係る装置によって、図９に示すステップＳ１１〜Ｓ１４の各手順（§４の従来装置における暗号通信路開設処理の説明で例示した手順）を実行した場合に、各プログラムでどのような処理が実行されるかを、プログラム間の信号の流れを追いながら説明する。図１９は、第１の実施形態に係る情報処理装置における暗号通信路開設処理の正常処理手順を示すダイアグラムである。これまでのダイアグラムと同様に、図の上段に示す各ブロックおよびこれら各ブロックから下方に伸びる各垂直線は、個々のプログラムを示しており、各垂直線の間を結ぶ水平矢印は、各プログラム間の信号の流れを示している。また、図の上下方向は、上から下に向かって経過する時間を示している。
【０１９８】
このダイアグラムにおいて、プロセスＰ１１は、図９のステップＳ１１の「アプリＡＰ１１を選択」に対応し、プロセスＰ１２は、ステップＳ１２の「アプリＡＰ１１について暗号通信路開設」に対応し、プロセスＰ１３は、ステップＳ１３の「アプリＡＰ１２を選択」に対応し、プロセスＰ１４は、ステップＳ１４の「アプリＡＰ１２について暗号通信路開設」に対応する。前述したとおり、実際には、プロセスＰ１２とプロセスＰ１３との間に、アプリＡＰ１１と外部装置２００の間での暗号通信路を介した情報送受プロセスが存在し、プロセスＰ１４の後に、アプリＡＰ１２と外部装置２００の間での暗号通信路を介した情報送受プロセスが存在する。
【０１９９】
図１９のダイアグラムにおいて、まず、プロセスＰ１１では、外部装置２００内のホスト側アプリから情報処理装置１００に対して、アプリケーション選択コマンド「SELECT(#1), AP11」が与えられる。ＯＳプログラムは、このアプリケーション選択コマンドを受けて、論理チャネル＃１にアプリＡＰ１１を割り当てる処理を行う。すなわち、図１８の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）に、論理チャネル＃１とアプリＡＰ１１との対応関係がチャネル対応情報として記録される。具体的には、ＯＳ用参照テーブルＴ（ＯＳ）の第２行目の開閉状態の欄を「開」にし、アプリ名の欄に「ＡＰ１１」を記録する。この時点では、開設状態の欄は「未開設」の状態になる（「○○開設済」になっていた場合は、「未開設」に初期化される）。
【０２００】
ＯＳプログラムは、こうして、論理チャネル＃１とアプリＡＰ１１との対応関係をＯＳ用参照テーブルＴ（ＯＳ）に記録する処理を行うとともに、図示の「Select処理」と記された左向き矢印に示すように、アプリＡＰ１１に対して選択が行われた旨を伝達する。この伝達信号を受けたアプリＡＰ１１は、ＯＳプログラムに対して、確認信号（図の右向き矢印）を返信する。そこで、ＯＳプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０２０１】
以後、チャネル番号＃１を伴うコマンドが送信されてきた場合、ＯＳプログラムは、当該コマンドをアプリＡＰ１１宛のコマンドとして取り扱うことになる。なお、図１８の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）に記録されるチャネル対応情報の部分は、図１８の上段左に示す従来のＯＳ用参照テーブルＴ（ＯＳ）に記録されるチャネル対応情報に対応するものである。したがって、基本的には、図１９に示すプロセスＰ１１の処理は、図１０に示す従来のプロセスＰ１の処理と同じ処理になる。
【０２０２】
続くプロセスＰ１２では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。ＯＳプログラムは、当該コマンドに含まれているチャネル番号「＃１」を参照することにより、当該コマンドが、論理チャネル＃１に対応づけられているアプリＡＰ１１宛のコマンドであると判断し、これをアプリＡＰ１１に引き渡す（図の左向き矢印）。当該コマンドを受け取ったアプリＡＰ１１は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムＳＳＤ１に対して、自己のための暗号通信路の開設を依頼する（図の右向き矢印）。
【０２０３】
§４で述べた従来装置の場合、図１０のダイアグラムに示されているように、アプリＡＰ１１から暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）を参照することにより、現在の暗号通信路の開設状態を確認する処理を行うことになる。しかしながら、ここで述べる第１の実施形態の場合、図１８の下段右に示すとおり、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、暗号通信路開設情報は記録されていない。
【０２０４】
そこで、アプリＡＰ１１からの暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、ＯＳプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う（図の「問合せ」と記された右向き矢印：実際には「ＳＳＤ１」なるアプリ名を伴う問い合わせになる）。ＯＳプログラムは、この問い合わせに応じて、ＯＳ用参照テーブルＴ（ＯＳ）内の暗号通信路開設情報を参照することにより、管理プログラムＳＳＤ１が暗号通信路を開設済であるか否かを確認し、当該問い合わせについての回答を行う。具体的には、ＯＳ用参照テーブルＴ（ＯＳ）の「開設状態」の欄を検索して、「ＳＳＤ１開設済」なる記録が存在するか否かを確認する。
【０２０５】
なお、ＳＤ用参照テーブルＴ（ＳＳＤ１）に、チャネル番号「＃１」を記録しておく運用を採用する場合には、ＯＳプログラムに対して、「ＳＳＤ１」なるアプリ名と「＃１」なるチャネル番号を伴う問い合わせを行うようにすればよい。この場合、ＯＳプログラムは、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号の欄から「＃１」を検索し、同じ行の開設状態の欄に「ＳＳＤ１開設済」なる記録が存在するか否かを確認することになる。
【０２０６】
この時点では、まだ「ＳＳＤ１開設済」なる記録はなされていないので、ＯＳプログラムは、管理プログラムＳＳＤ１に対して、「未開設」なる回答を行う（図の「未開設」と記された左向き矢印）。管理プログラムＳＳＤ１は、この回答に応じて、新たな暗号通信路の開設を行うか否かを決定する。上例の場合、「未開設」なる回答が得られ、管理プログラムＳＳＤ１は、現在、自分自身が暗号通信路を開設していないことが認識できるので、同時に開設可能な暗号通信路の数は１つという制限下においても、アプリＡＰ１１の依頼に基づいて暗号通信路を開設可能と判断する。そこで、新たにセッションキー「xxxxxx」を発生させて、ＳＤ用参照テーブルＴ（ＳＳＤ１）に図１８の下段右に示すような記録を行うとともに、暗号通信路の開設に必要な種々の処理を実行する。もちろん、ＯＳプログラムから「開設済」なる回答が得られた場合は、アプリＡＰ１１からの暗号通信路開設依頼を拒絶し、暗号通信路の開設に必要な処理は実行しない。
【０２０７】
管理プログラムＳＳＤ１は、暗号通信路開設処理の実行の有無を、ＯＳプログラムとアプリＡＰ１１との双方に報告する（図の黒点からの左右両方への矢印）。ＯＳプログラムは、管理プログラムＳＳＤ１から、暗号通信路を開設した旨の報告があったときには、当該報告に応じて、管理プログラムＳＳＤ１がアプリＡＰ１１のために暗号通信路を開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルＴ（ＯＳ）に書き込む。
【０２０８】
具体的には、管理プログラムＳＳＤ１から、「ＳＳＤ１」および「ＡＰ１１」という情報を含む開設済みの報告を行うようにすれば、ＯＳプログラムは、図１８の下段左に示すように、ＯＳ用参照テーブルＴ（ＯＳ）のアプリ名「ＡＰ１１」が記録されている行の開設状態の欄に「ＳＳＤ１開設済」なる情報を書き込むことができる。あるいは、ＳＤ用参照テーブルＴ（ＳＳＤ１）に、チャネル番号「＃１」を記録しておく運用を採用する場合には、ＯＳプログラムに対して、「ＳＳＤ１」および「＃１」という情報を含む報告を行えば、ＯＳプログラムは、やはり図１８の下段左に示すように、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号「＃１」の行の開設状態の欄に「ＳＳＤ１開設済」なる情報を書き込むことができる。
【０２０９】
一方、アプリＡＰ１１は、管理プログラムＳＳＤ１からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をＯＳプログラムに伝達する（図の右向き矢印）。そこで、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。図示されていないが、もし、管理プログラムＳＳＤ１から暗号通信路開設依頼を拒絶する旨の報告があった場合には、アプリＡＰ１１は、暗号通信路開設コマンドの実行に失敗した旨をＯＳプログラムに伝達し、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが失敗した旨のＮＧ応答を返すことになる。
【０２１０】
なお、実際には、このプロセスＰ１２の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムＳＳＤ１からＯＳプログラムおよびアプリＡＰ１１の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
【０２１１】
こうして、プロセスＰ１２が完了した時点ｔ１２では、管理プログラムＳＳＤ１によって、アプリＡＰ１１のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリＡＰ１１とホスト側アプリとの間で暗号通信が行われる。したがって、実際には、図示の時点ｔ１２の前後において、暗号通信路を介した情報送受プロセスが存在するが、図１９のダイアグラムでは、当該情報送受プロセスの図示は省略されている。
【０２１２】
図１９に示すダイアグラムの後半の手順は、アプリＡＰ１１との間で論理チャネル＃１を介した暗号情報送受プロセスが完了したホスト側アプリが、今度は、別なアプリＡＰ１２との間で同じ論理チャネル＃１を介した暗号情報送受プロセスを実行する手順である。
【０２１３】
まず、プロセスＰ１３では、外部装置２００内のホスト側アプリから情報処理装置１００に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる。ＯＳプログラムは、このアプリケーション選択コマンドを「論理チャネル＃１を指定してアプリＡＰ１２を選択するコマンド」として解釈し、論理チャネル＃１にアプリＡＰ１２を割り当てる処理を行う。ただ、この時点では、図１８の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）に示されているとおり、論理チャネル＃１には既に旧アプリＡＰ１１が割り当てられている。
【０２１４】
このように、外部装置２００から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、ＯＳプログラムは、当該旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与える。
【０２１５】
図示の例の場合、ＯＳプログラムは、まず、旧アプリＡＰ１１に対して、チャネル番号＃１との対応関係が解除された旨の解除通知（選択が解除された旨の通知）を与える。図示の「Deselect処理」と記された左向き矢印は、このような解除通知を示している。この解除通知を受けたアプリＡＰ１１が、仕様を遵守した正常なプログラムであれば、自己を管理する管理プログラムＳＳＤ１に対して、選択が解除された旨の報告を行う。図示の「報告処理」と記された一点鎖線の右向き矢印は、このような選択解除の報告信号を示している（後述するように、アプリＡＰ１１が、仕様を遵守しない欠陥プログラムの場合、この「報告処理」は行われない。）。
【０２１６】
ここでは、ＡＰ１１が、仕様を遵守した正常なプログラムであり、上記「報告処理」が行われたものとしよう。当該報告を受けた管理プログラムＳＳＤ１は、これまで論理チャネル＃１でアプリＡＰ１１のために開設していた暗号通信路を終了する処理を行う。もっとも、ここで述べる実施例の場合、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、図１８の下段右に示すように、セッションキーが記録されているだけである。したがって、自己の管理下にある旧アプリＡＰ１１から解除通知があった旨の報告を受けた管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）に書き込まれている旧アプリＡＰ１１についてのセッションキー「xxxxxx」を消去する処理を行う。このようなセッションキーの消去処理は、本発明を実施する上で必須の処理ではないが、セッションキーが漏洩する可能性を低減させる効果があるため、実用上は行うようにするのが好ましい。
【０２１７】
一方、論理チャネルの割り当てが解除されたアプリＡＰ１１は、「Deselect処理」に応じた確認信号（図の実線の右向き矢印）をＯＳプログラムに返す。そこで、ＯＳプログラムは、論理チャネル＃１に新たに割り当てるプログラムとして選択された新アプリＡＰ１２に対して、選択が行われた旨を伝達する。図示の「Select処理」と記された左向き矢印は、このような伝達信号を示している。この伝達信号を受けた新アプリＡＰ１２は、ＯＳプログラムに対して、確認信号（図の右向き矢印）を返信する。そこで、ＯＳプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０２１８】
以上の処理により、論理チャネル＃１に新たにアプリＡＰ１２が対応づけられ、アプリＡＰ１２のために論理チャネル＃１が「開」の状態になる。このような対応関係は、図１８の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）に記録される。すなわち、ＯＳプログラムは、新アプリＡＰ１２から確認信号が得られた時点で、ＯＳ用参照テーブルＴ（ＯＳ）の＃１の行のアプリ名の欄を、「ＡＰ１１」から「ＡＰ１２」に書き換える処理を行い、チャネル番号＃１と新アプリＡＰ１２との対応関係を示すチャネル対応情報を記録する。
【０２１９】
しかも、ＯＳプログラムは、このとき新アプリＡＰ１２に関する暗号通信路開設情報の記録を未開設状態に初期化する。すなわち、図１８の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）の第２行目に記録されている「＃１，開，ＡＰ１１，ＳＳＤ１開設済」なる情報は、アプリ名の欄が「ＡＰ１１」から「ＡＰ１２」に書き換えられるとともに、開設状態の欄が初期化されて、「ＳＳＤ１開設済」から「未開設」に書き換えらえる。以後、チャネル番号＃１を伴うコマンドが送信されてきた場合、ＯＳプログラムは、当該コマンドをアプリＡＰ１２宛のコマンドとして取り扱うことになる。
【０２２０】
続くプロセスＰ１４では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。ＯＳプログラムは、当該コマンドに含まれているチャネル番号「＃１」を参照することにより、当該コマンドが、論理チャネル＃１に対応づけられているアプリＡＰ１２宛のコマンドであると判断し、これをアプリＡＰ１２に引き渡す（図の左向き矢印）。当該コマンドを受け取ったアプリＡＰ１２は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムＳＳＤ１に対して、自己のための暗号通信路の開設を依頼する（図の右向き矢印）。
【０２２１】
アプリＡＰ１２からの暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、ＯＳプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う（図の「問合せ」と記された右向き矢印：実際には「ＳＳＤ１」なるアプリ名を伴う問い合わせになる）。ＯＳプログラムは、この問い合わせに応じて、ＯＳ用参照テーブルＴ（ＯＳ）内の暗号通信路開設情報を参照することにより、管理プログラムＳＳＤ１が暗号通信路を開設済であるか否かを確認し、当該問い合わせについての回答を行う。具体的には、ＯＳ用参照テーブルＴ（ＯＳ）の「開設状態」の欄を検索して、「ＳＳＤ１開設済」なる記録が存在するか否かを確認する。
【０２２２】
ここでも、ＳＤ用参照テーブルＴ（ＳＳＤ１）に、チャネル番号「＃１」を記録しておく運用を採用する場合には、ＯＳプログラムに対して、「ＳＳＤ１」なるアプリ名と「＃１」なるチャネル番号を伴う問い合わせを行うようにすればよい。この場合、ＯＳプログラムは、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号の欄から「＃１」を検索し、同じ行の開設状態の欄に「ＳＳＤ１開設済」なる記録が存在するか否かを確認することになる。
【０２２３】
前述したとおり、この時点で、ＯＳ用参照テーブルＴ（ＯＳ）の第２行目に記録は「＃１，開，ＡＰ１２，未開設」なる情報に書き換えられているため、ＯＳプログラムは、管理プログラムＳＳＤ１に対して、「未開設」なる回答を行う（図の「未開設」と記された左向き矢印）。管理プログラムＳＳＤ１は、「未開設」なる回答を受けることにより、アプリＡＰ１２からの依頼に応じて、新たな暗号通信路の開設処理を実行する。具体的には、新たなセッションキー「yyyyyy」を発生させて、ＳＤ用参照テーブルＴ（ＳＳＤ１）のセッションキーの欄に書き込むとともに、暗号通信路の開設に必要な種々の処理を実行する。
【０２２４】
管理プログラムＳＳＤ１は、暗号通信路開設処理を実行した旨を、ＯＳプログラムとアプリＡＰ１２との双方に報告する（図の黒点からの左右両方への矢印）。ＯＳプログラムは、管理プログラムＳＳＤ１からの暗号通信路を開設した旨の報告を受けて、管理プログラムＳＳＤ１がアプリＡＰ１２のために暗号通信路を開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルＴ（ＯＳ）に書き込む。
【０２２５】
具体的には、管理プログラムＳＳＤ１から、「ＳＳＤ１」および「ＡＰ１２」という情報を含む開設済みの報告を行うようにすれば、ＯＳプログラムは、図１８の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）のアプリ名に新たに「ＡＰ１２」が記録されている行の開設状態の欄に、「ＳＳＤ１開設済」なる情報を書き込むことができる。あるいは、ＳＤ用参照テーブルＴ（ＳＳＤ１）に、チャネル番号「＃１」を記録しておく運用を採用する場合には、ＯＳプログラムに対して、「ＳＳＤ１」および「＃１」という情報を含む報告を行えば、ＯＳプログラムは、やはり同様の情報を書き込むことができる。
【０２２６】
一方、アプリＡＰ１２は、管理プログラムＳＳＤ１からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をＯＳプログラムに伝達する（図の右向き矢印）。そこで、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０２２７】
なお、実際には、このプロセスＰ１４の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムＳＳＤ１からＯＳプログラムおよびアプリＡＰ１２の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
【０２２８】
こうして、プロセスＰ１４が完了した時点ｔ１４では、管理プログラムＳＳＤ１によって、アプリＡＰ１２のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリＡＰ１２とホスト側アプリとの間で暗号通信が行われる。図１９のダイアグラムには示されていないが、実際には、図示の時点ｔ１４以降に、暗号通信路を介した情報送受プロセスが行われることになる。
【０２２９】
このように、管理プログラムＳＳＤ１は、同時には１つの暗号通信路しか開設することができないが、プロセスＰ１１，Ｐ１２においてアプリＰ１１のための暗号通信路を開設した後、当該暗号通信路を終了させた後であれば、プロセスＰ１３，Ｐ１４においてアプリＰ１２のために新たな暗号通信路を開設することができる。
【０２３０】
＜５−３．  第１の実施形態による欠陥処理手順＞
上述した図１９に示すダイアグラムは、アプリＡＰ１１が、仕様を遵守した正常なプログラムであった場合の正常処理手順であるが、既に述べたとおり、アプリケーションプログラムの中には、仕様を遵守しない欠陥プログラムが含まれている可能性がある。上例の場合において、アプリＡＰ１１が、そのような欠陥プログラムであった場合、図１９のプロセスＰ１３に一点鎖線の右向き矢印で示されている「報告処理」は実行されない可能性がある。そこで、以下、アプリＡＰ１１が欠陥プログラムであり、上記「報告処理」が実行されない場合の処理手順を、図２０のダイアグラムを参照しながら説明する。
【０２３１】
図２０のダイアグラムの前半のプロセスＰ１１，Ｐ１２の処理は、図１９のダイアグラムの前半のプロセスＰ１１，Ｐ１２の処理と全く同じである。しかしながら、図２０のダイアグラムの後半のプロセスは若干異なる。ここでは、図２０のダイアグラムの後半のプロセスを、図示のとおりプロセスＰ１３′，Ｐ１４′と呼ぶことにする。
【０２３２】
プロセスＰ１３′において、外部装置２００内のホスト側アプリから情報処理装置１００に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる点は、図１９のプロセスＰ１３と全く同じである。そして、ＯＳプログラムが、このアプリケーション選択コマンドを「論理チャネル＃１を指定して新たなアプリＡＰ１２を選択するコマンド」として解釈し、旧アプリＡＰ１１に対して、図示の「Deselect処理」と記された解除通知を与える点も、図１９のプロセスＰ１３と全く同じである。
【０２３３】
ただ、旧アプリＡＰ１１が、欠陥プログラムであった場合、この解除通知を受けたアプリＡＰ１１は、「Deselect処理」に応じた確認信号（図の実線の右向き矢印）をＯＳプログラムに返すものの、管理プログラムＳＳＤ１に対する「報告処理」は怠ってしまうため、図に一点鎖線の右向き矢印で示す「報告処理」は実行されない。このため、管理プログラムＳＳＤ１は、現在開設している暗号通信路が終了したことを認識することができないため、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容を、図１８の下段右に示す状態に維持する。
【０２３４】
もっとも、この第１の実施形態の場合、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、暗号通信路の開設状態や開設対象となるアプリ名は記録されていないので、旧アプリＡＰ１１の選択が解除された後にも、旧アプリＡＰ１１のための暗号通信路開設に関係する情報として残るのは、セッションキー「xxxxxx」だけである。
【０２３５】
一方、ＯＳプログラムは、旧アプリＡＰ１１から、「Deselect処理」に応じた確認信号（図の右向き矢印）を受け取った後、新アプリＡＰ１２に対して、選択が行われた旨を伝達する伝達信号（「Select処理」と記された左向き矢印）を与える。この伝達信号を受けた新アプリＡＰ１２は、ＯＳプログラムに対して、確認信号（図の右向き矢印）を返信する。そこで、ＯＳプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０２３６】
また、ＯＳプログラムは、新アプリＡＰ１２から確認信号が得られた時点で、ＯＳ用参照テーブルＴ（ＯＳ）の＃１の行のアプリ名の欄を、「ＡＰ１１」から「ＡＰ１２」に書き換える処理を行い、チャネル番号＃１と新アプリＡＰ１２との対応関係を示すチャネル対応情報を記録する。このとき、ＯＳプログラムは、新アプリＡＰ１２に関する暗号通信路開設情報の記録を未開設状態に初期化する。すなわち、図１８の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）の第２行目に記録されている「＃１，開，ＡＰ１１，ＳＳＤ１開設済」なる情報は、アプリ名の欄が「ＡＰ１１」から「ＡＰ１２」に書き換えられるとともに、開設状態の欄が初期化されて、「ＳＳＤ１開設済」から「未開設」に書き換えらえる。以後、チャネル番号＃１を伴うコマンドが送信されてきた場合、ＯＳプログラムは、当該コマンドをアプリＡＰ１２宛のコマンドとして取り扱うことになる。
【０２３７】
続くプロセスＰ１４′では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。ＯＳプログラムは、当該コマンドに含まれているチャネル番号「＃１」を参照することにより、当該コマンドが、論理チャネル＃１に対応づけられているアプリＡＰ１２宛のコマンドであると判断し、これをアプリＡＰ１２に引き渡す（図の左向き矢印）。当該コマンドを受け取ったアプリＡＰ１２は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムＳＳＤ１に対して、自己のための暗号通信路の開設を依頼する（図の右向き矢印）。
【０２３８】
アプリＡＰ１２からの暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、ＯＳプログラムに対して、自己が暗号通信路を開設済か否かの問い合わせを行う（図の「問合せ」と記された右向き矢印：実際には「ＳＳＤ１」なるアプリ名を伴う問い合わせになる）。ＯＳプログラムは、この問い合わせに応じて、ＯＳ用参照テーブルＴ（ＯＳ）内の暗号通信路開設情報を参照することにより、管理プログラムＳＳＤ１が暗号通信路を開設済であるか否かを確認し、当該問い合わせについての回答を行う。具体的には、ＯＳ用参照テーブルＴ（ＯＳ）の「開設状態」の欄を検索して、「ＳＳＤ１開設済」なる記録が存在するか否かを確認する。
【０２３９】
ここでも、ＳＤ用参照テーブルＴ（ＳＳＤ１）に、チャネル番号「＃１」を記録しておく運用を採用する場合には、ＯＳプログラムに対して、「ＳＳＤ１」なるアプリ名と「＃１」なるチャネル番号を伴う問い合わせを行うようにすればよい。この場合、ＯＳプログラムは、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号の欄から「＃１」を検索し、同じ行の開設状態の欄に「ＳＳＤ１開設済」なる記録が存在するか否かを確認することになる。
【０２４０】
前述したとおり、この時点で、ＯＳ用参照テーブルＴ（ＯＳ）の第２行目に記録は「＃１，開，ＡＰ１２，未開設」なる情報に書き換えられているため、ＯＳプログラムは、管理プログラムＳＳＤ１に対して、「未開設」なる回答を行う（図の「未開設」と記された左向き矢印）。管理プログラムＳＳＤ１は、「未開設」なる回答を受けることにより、アプリＡＰ１２からの依頼に応じて、新たな暗号通信路の開設処理を実行する。具体的には、新たなセッションキー「yyyyyy」を発生させて、ＳＤ用参照テーブルＴ（ＳＳＤ１）のセッションキーの欄の記録を書き換えるとともに、暗号通信路の開設に必要な種々の処理を実行する。
【０２４１】
なお、図１９に示すダイアグラムの場合、正常なプログラムＡＰ１１から「報告処理」（一点鎖線の矢印）が行われた時点で、管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）に書き込まれている旧アプリＡＰ１１についてのセッションキー「xxxxxx」を消去する処理を行うが、図２０に示すダイアグラムの場合、欠陥プログラムＡＰ１１からの「報告処理」は行われないため、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、旧アプリＡＰ１１についての旧セッションキー「xxxxxx」が残っている。したがって、管理プログラムＳＳＤ１は、この旧セッションキー「xxxxxx」を新セッションキー「yyyyyy」に書き換える処理を行うことになる。
【０２４２】
続いて、管理プログラムＳＳＤ１は、暗号通信路開設処理を実行した旨を、ＯＳプログラムとアプリＡＰ１２との双方に報告する（図の黒点からの左右両方への矢印）。ＯＳプログラムは、管理プログラムＳＳＤ１からの暗号通信路を開設した旨の報告を受けて、管理プログラムＳＳＤ１がアプリＡＰ１２のために暗号通信路を開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルＴ（ＯＳ）に書き込む。
【０２４３】
具体的には、管理プログラムＳＳＤ１から、「ＳＳＤ１」および「ＡＰ１２」という情報を含む開設済みの報告を行うようにすれば、ＯＳプログラムは、図１８の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）のアプリ名に新たに「ＡＰ１２」が記録されている行の開設状態の欄に「ＳＳＤ１開設済」なる情報を書き込むことができる。あるいは、ＳＤ用参照テーブルＴ（ＳＳＤ１）に、チャネル番号「＃１」を記録しておく運用を採用する場合には、ＯＳプログラムに対して、「ＳＳＤ１」および「＃１」という情報を含む報告を行えば、ＯＳプログラムは、やはり同様の情報を書き込むことができる。
【０２４４】
一方、アプリＡＰ１２は、管理プログラムＳＳＤ１からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をＯＳプログラムに伝達する（図の右向き矢印）。そこで、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０２４５】
なお、実際には、このプロセスＰ１４′の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムＳＳＤ１からＯＳプログラムおよびアプリＡＰ１２の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
【０２４６】
こうして、プロセスＰ１４′が完了した時点ｔ１４′では、管理プログラムＳＳＤ１によって、アプリＡＰ１２のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリＡＰ１２とホスト側アプリとの間で暗号通信が行われる。図２０のダイアグラムには示されていないが、実際には、図示の時点ｔ１４′以降に、暗号通信路を介した情報送受プロセスが行われることになる。
【０２４７】
このように、本発明の第１の実施形態では、アプリＡＰ１１が欠陥プログラムであり、選択が解除されたことを管理プログラムＳＳＤ１に報告する「報告処理」を怠った場合でも、暗号通信路開設情報がＯＳ用参照テーブルに格納されているため、アプリＡＰ１１の暗号通信が終了し、アプリＡＰ１２が新たに選択された場合、新アプリＡＰ１２のための暗号通信路を支障なく開設することができるようになる。
【０２４８】
＜５−４．  第１の実施形態による各参照テーブルの変遷＞
ここでは、図１９のダイアグラムに示す正常処理手順および図２０のダイアグラムに示す欠陥処理手順におけるＯＳ用参照テーブルＴ（ＯＳ）とＳＤ用参照テーブルＴ（ＳＳＤ１）の変遷を示す。
【０２４９】
図２１〜図２５は、図１９のダイアグラムに示す正常処理手順の各時点ｔ１０〜ｔ１４におけるＯＳ用参照テーブルＴ（ＯＳ）とＳＤ用参照テーブルＴ（ＳＳＤ１）の状態を示す図である。
【０２５０】
まず、時点ｔ１０では、図２１に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）は、チャネル番号＃０のみが「開」状態となっており、論理チャネル＃０に管理プログラムＳＳＤ１が割り当てられている。一方、ＳＤ用参照テーブルＴ（ＳＳＤ１）は、未開設状態を示しており、セッションキーの欄は「無」となっている。なお、図には、従来のＳＤ用参照テーブルＴ（ＳＳＤ１）との対比のため、「開設状態」，「アプリ名」，「チャネル番号」の各欄が示されているが、図１８の下段右の図に×印を付して示すとおり、第１の実施形態の場合、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、これらの各欄は設けられていない（図では、これらの各欄には斜線を施した）。
【０２５１】
次の時点ｔ１１では、図２２に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号＃１が「開」状態に変更され、新たにアプリＡＰ１１が論理チャネル＃１に割り当てられている。ここでも、説明の便宜上、各時点の参照テーブルの個々の欄のうち、当該時点の直前のプロセスで変更が生じた欄を太線枠で示す。図２２に示すＯＳ用参照テーブルＴ（ＯＳ）の場合、チャネル番号＃１についての開閉状態が「開」に変更され、アプリ名が「ＡＰ１１」に変更されている。これは、図１９のダイアグラムにおける時点ｔ１１の直前のプロセスＰ１１において、アプリケーション選択コマンド「SELECT(#1), AP11」に基づいて、チャネル番号＃１を「開」状態として、アプリＡＰ１１を割り当てる処理が行われ、ＯＳプログラムによってＯＳ用参照テーブルＴ（ＯＳ）に対する書き換えが行われたためである。この時点ｔ１１では、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容に変更は生じていない。
【０２５２】
続く時点ｔ１２では、図２３に示すとおり、各参照テーブルの内容の一部に変更が加えられている。まず、ＯＳ用参照テーブルＴ（ＯＳ）については、第２行目の開設状態の欄が、「未開設」から「ＳＳＤ１開設済」に書き換えられている。これは、図１９のダイアグラムにおける時点ｔ１２の直前のプロセスＰ１２において、アプリＡＰ１１から管理プログラムＳＳＤ１に対して暗号通信路開設依頼があり、当該依頼に応じて、管理プログラムＳＳＤ１がアプリＡＰ１１のために暗号通信路を開設したためである。
【０２５３】
図１９のダイアグラムにおけるプロセスＰ１２では、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」に基づいて、アプリＡＰ１１から管理プログラムＳＳＤ１に対する暗号通信路開設依頼がなされ、管理プログラムＳＳＤ１からＯＳプログラムに対して問い合わせがなされる。この問い合わせの時点では、ＯＳ用参照テーブルＴ（ＯＳ）の状態は、図２２に示す状態（時点ｔ１１の状態）になっているので、ＯＳプログラムは、この問い合わせに応じて「未開設」なる回答を行う。
【０２５４】
その結果、管理プログラムＳＳＤ１によって、アプリＡＰ１１のための暗号通信路の開設が行われる。このため、セッションキー「xxxxxx」が発生され、図２３のＳＤ用参照テーブルＴ（ＳＳＤ１）に示すように、セッションキーの欄に「xxxxxx」が書き込まれる。一方、ＯＳプログラムには、管理プログラムＳＳＤ１から、「論理チャネル＃１を用いて暗号通信路を開設した旨」の報告がなされるので、図２３のＯＳ用参照テーブルＴ（ＯＳ）に示すように、論理チャネル＃１の行の開設状態の欄に、「ＳＳＤ１開設済」が書き込まれる。図２３に示す時点ｔ１２の状態におけるＯＳ用参照テーブルＴ（ＯＳ）およびＳＤ用参照テーブルＴ（ＳＳＤ１）は、このような書き込み処理が行われた後の状態ということになる。
【０２５５】
次の時点ｔ１３では、図２４に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号＃１に対応するアプリ名の欄が「ＡＰ１１」から「ＡＰ１２」に変更され、その右側の開設状態の欄は初期化され「未開設」に変更されている。これは、図１９のダイアグラムにおける時点ｔ１３の直前のプロセスＰ１３において、アプリケーション選択コマンド「SELECT(#1), AP12」に基づいて、チャネル番号＃１に割り当てられていた旧アプリＡＰ１１の選択を解除し、新たに新アプリＡＰ１２をチャネル番号＃１に割り当てる処理が行われ、ＯＳプログラムによる書き換えが行われたためである。
【０２５６】
一方、ＳＤ用参照テーブルＴ（ＳＳＤ１）については、図に太線枠で示すとおり、セッションキーの欄の情報が消去され、「無」になっている。これは、図１９のダイアグラムにおけるプロセスＰ１３において、解除通知を受けたアプリＡＰ１１から管理プログラムＳＳＤ１に対して、選択が解除された旨を報告する「報告処理」（一点鎖線の右向き矢印）が実行され、この報告を受けた管理プログラムＳＳＤ１が、これまで開設していた暗号通信路に用いるセッションキー「xxxxxx」を消去する処理を行ったためである。
【０２５７】
最後の時点ｔ１４では、図２５に示すとおり、各参照テーブルの内容の一部に変更が加えられている。まず、ＯＳ用参照テーブルＴ（ＯＳ）については、第２行目の開設状態の欄が、「未開設」から「ＳＳＤ１開設済」に書き換えられている。これは、図１９のダイアグラムにおけるプロセスＰ１４において、アプリＡＰ１２から管理プログラムＳＳＤ１に対して暗号通信路開設依頼があり、当該依頼に応じて、管理プログラムＳＳＤ１がアプリＡＰ１２のために新たな暗号通信路を開設したためである。
【０２５８】
図１９のダイアグラムにおけるプロセスＰ１４では、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」に基づいて、アプリＡＰ１２から管理プログラムＳＳＤ１に対する暗号通信路開設依頼がなされ、管理プログラムＳＳＤ１からＯＳプログラムに対して問い合わせがなされる。この問い合わせの時点では、ＯＳ用参照テーブルＴ（ＯＳ）の状態は、図２４に示す状態（時点ｔ１３の状態）になっているので、ＯＳプログラムは、この問い合わせに応じて「未開設」なる回答を行う。
【０２５９】
その結果、管理プログラムＳＳＤ１によって、アプリＡＰ１２のための暗号通信路の開設が行われる。このため、新たなセッションキー「yyyyyy」が発生され、図２５のＳＤ用参照テーブルＴ（ＳＳＤ１）に示すように、セッションキーの欄に「yyyyyy」が書き込まれる。一方、ＯＳプログラムには、管理プログラムＳＳＤ１から、「論理チャネル＃１を用いて暗号通信路を開設した旨」の報告がなされるので、図２５のＯＳ用参照テーブルＴ（ＯＳ）に示すように、論理チャネル＃１の行の開設状態の欄に、「ＳＳＤ１開設済」が書き込まれる。図２５に示す時点ｔ１４の状態におけるＯＳ用参照テーブルＴ（ＯＳ）およびＳＤ用参照テーブルＴ（ＳＳＤ１）は、このような書き込み処理が行われた後の状態ということになる。
【０２６０】
以上、図１９のダイアグラムに示す正常処理手順における時点ｔ１０〜ｔ１４に至るまでの各参照テーブルの変遷を、図２１〜図２５を参照しながら説明した。続いて、図２０のダイアグラムに示す欠陥処理手順における時点ｔ１０〜ｔ１４′に至るまでの各参照テーブルの変遷を説明する。
【０２６１】
前述したとおり、図２０のダイアグラムに示す前半のプロセスＰ１１，Ｐ１２は、図１９のダイアグラムに示す前半のプロセスＰ１１，Ｐ１２と全く同じである。したがって、図２０のダイアグラムに示す欠陥処理手順における時点ｔ１０，ｔ１１，ｔ１２における各参照テーブルの状態は、それぞれ図２１，図２２，図２３に示すとおりになる。これに対して、後半のプロセスは若干異なる。
【０２６２】
まず、図２０のダイアグラムに示す後半のプロセスＰ１３′では、解除通知を受けたアプリＡＰ１１から管理プログラムＳＳＤ１に対して、選択が解除された旨の「報告処理」（一点鎖線の右向き矢印）が実行されない。このため、管理プログラムＳＳＤ１は、これまで開設していた暗号通信路が終了したことを認識できないので、ＳＤ用参照テーブルＴ（ＳＳＤ１）に記録されていたセッションキー「xxxxxx」は消去されず、そのまま残ることになる。したがって、プロセスＰ１３′が完了した時点ｔ１３′における各参照テーブルの状態は、図２４に示す時点ｔ１３の状態ではなく、図２６に示す時点ｔ１３′の状態になる。
【０２６３】
すなわち、ＯＳ用参照テーブルＴ（ＯＳ）については、チャネル番号＃１に割り当てられたプログラムが「ＡＰ１１」から「ＡＰ１２」に変更された状態になっているが、ＳＤ用参照テーブルＴ（ＳＳＤ１）については、時点ｔ１２の状態がそのまま維持され、セッションキー「xxxxxx」が残った状態になる。このように、旧アプリＡＰ１１についての暗号通信が既に終了しているにもかかわらず、そのセッションキー「xxxxxx」が残っていることは、漏洩の危険性の見地から、決して好ましいことではない。しかしながら、旧アプリＡＰ１１のセッションキー「xxxxxx」が残っていたとしても、新アプリＡＰ１２のための暗号通信路を開設する処理には支障は生じない。
【０２６４】
すなわち、図２０のダイアグラムに示す後半のプロセスＰ１４′では、アプリＡＰ１２から管理プログラムＳＳＤ１に対して暗号通信路開設依頼があり、この開設依頼を受けた管理プログラムＳＳＤ１は、その時点での開設状態をＯＳプログラムに問い合わせることになる。この時点で、ＯＳ用参照テーブルＴ（ＯＳ）の状態は、図２６に示す状態なので、ＯＳプログラムは「未開設」なる回答を返すことになり、管理プログラムＳＳＤ１は、新アプリＡＰ１２のための新たな暗号通信路を支障なく開設することができる。
【０２６５】
このように、本発明の第１の実施形態によれば、アプリＡＰ１１が、選択が解除された旨を報告する正常なプログラムであっても、報告を怠る欠陥プログラムであっても、新たなアプリＡＰ１２のための新たな暗号通信路を支障なく開設することができる。
【０２６６】
＜＜＜  §６．  本発明の第２の実施形態における暗号通信路開設処理  ＞＞＞
続いて、本発明の第２の実施形態に係る情報処理装置における暗号通信路開設処理のプロセスを説明する。この第２の実施形態に係る情報処理装置１００の基本構成は、§３で述べたとおりである。すなわち、図７に示すとおり、プログラム格納部１１０、データ格納部１２０、プログラム実行部１３０を備えている。そして、プログラム格納部１１０には、ＯＳプログラム、管理プログラムＳＤ、一般アプリプログラムＡＰが格納されており、データ格納部１２０には、ＯＳ用情報格納部１２１、ＳＤ用情報格納部１２２、ＡＰ用情報格納部１２３が設けられている。
【０２６７】
ただ、ＯＳ用情報格納部１２１およびＳＤ用情報格納部１２２に格納されるＯＳ用参照テーブルＴ（ＯＳ）やＳＤ用参照テーブルＴ（ＳＤ）の記録内容は、§４で述べた従来装置のものや§５で述べた第１の実施形態のものとは異なり、独自の内容になっている。したがって、ＯＳプログラムや管理プログラムＳＤによる処理手順も、§４で述べた従来装置のものや§５で述べた第１の実施形態のものとは異なる独自の処理手順になっている。
【０２６８】
＜６−１．  第２の実施形態による基本的な処理手法＞
はじめに、ここで述べる第２の実施形態による基本的な処理手法の概念を、§４で述べた従来装置による基本的な処理手法の概念と対比させながら説明する。図２７は、§４で述べた従来の一般的なＳＩＭカード（情報処理装置）内に用意されるＯＳ用参照テーブルおよびＳＤ用参照テーブル（上段の図(a) ）と、本発明の第２の実施形態に係るＳＩＭカード（情報処理装置）内に用意されるＯＳ用参照テーブルおよびＳＤ用参照テーブル（下段の図(b) ）との対比を示す図である。
【０２６９】
上段の図(a) は、図８に示した従来装置における各参照テーブルであり、ＯＳ用情報格納部１２１内には、ＯＳ用参照テーブルＴ（ＯＳ）が格納され、ＳＤ用情報格納部１２２内には、ＳＤ用参照テーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）が格納されている。
【０２７０】
既に述べたとおり、ＯＳ用参照テーブルＴ（ＯＳ）は、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すチャネル対応情報を記録するためのテーブルであり、ＯＳプログラムによって管理される。図示の例の場合、チャネル番号＃０，＃１，＃２に対して、それぞれアプリケーションプログラム「ＳＳＤ１」，「ＡＰ１１」，「ＡＰ０２」が対応することを示す対応関係が記録されている。
【０２７１】
一方、各ＳＤ用参照テーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）は、各管理プログラムＳＤについての通信路管理情報を記録するためのテーブルであり、各管理プログラムＳＤによって管理される。図には、管理プログラムＳＳＤ１についてのＳＤ用参照テーブルＴ（ＳＳＤ１）の内容が例示されている。すなわち、現在、管理プログラムＳＳＤ１は、論理チャネル＃１を用いて、アプリＡＰ１１のために暗号通信路を開設済であることが記録されている。
【０２７２】
暗号通信路の開設処理は、管理プログラムＳＤによって実行される処理であるので、図２７(a) に示すように、暗号通信路の開設状態をＳＤ用参照テーブルＴ（ＳＤ）に記録することは非常に常識的かつ効率的な方法である。このため、従来装置では、このような記録方法を採用して暗号通信路開設処理が行われていることは、既に§４で詳述したとおりである。しかしながら、この従来装置による暗号通信路開設処理を採用した場合、アプリケーションプログラムの中に、選択が解除されたことを管理プログラムＳＤに報告する「報告処理」を怠る欠陥プログラムが存在した場合、新たな暗号通信路が開設できなくなる、という問題が生じることも、既に§４で述べた。
【０２７３】
このような問題を解決するため、§５で述べた第１の実施形態では、図１８(a) に示すＳＤ用参照テーブルＴ（ＳＳＤ１）内の情報のうち、太線枠で囲った「開設状態」，「アプリ名」，「チャネル番号」の各欄の情報を、白抜き矢印で示すように、図１８(b) のＯＳ用参照テーブルＴ（ＯＳ）内に移動して、ＯＳプログラムによって管理させるようにしている。その結果、図１８(b) のＳＤ用参照テーブルＴ（ＳＳＤ１）内には、「セッションキー」の欄の情報のみが残ることになっている。
【０２７４】
この§６で述べる第２の実施形態は、暗号通信路開設に関する一部の情報を、ＳＤ用参照テーブルＴ（ＳＳＤ１）からＯＳ用参照テーブルＴ（ＯＳ）内に移動する点において、§５で述べた第１の実施形態と共通するが、移動対象となる情報の内容が若干異なる。すなわち、この第２の実施形態では、図２７(a) のＳＤ用参照テーブルＴ（ＳＳＤ１）内の情報のうち、太線枠で囲った「開設状態」の欄の情報を、白抜き矢印で示すように、図２７(b) のＯＳ用参照テーブルＴ（ＯＳ）内に移動して、ＯＳプログラムによって管理させるようにしている。その結果、図２７(b) のＳＤ用参照テーブルＴ（ＳＳＤ１）内には、「アプリ名」，「チャネル番号」，「セッションキー」の欄の情報が残ることになる。
【０２７５】
結局、ここで述べる第２の実施形態の場合、図２７の上段の図(a) に示す「ＯＳ用参照テーブルＴ（ＯＳ）」および「ＳＤ用参照テーブルＴ（ＳＤ）」の代わりに、図２７の下段の図(b) に示す「ＯＳ用参照テーブルＴ（ＯＳ）」および「ＳＤ用参照テーブルＴ（ＳＤ）」を用いることになる。図２７の下段右に示すとおり、「ＳＤ用参照テーブルＴ（ＳＤ）」としては、個々の管理プログラムごとに、それぞれテーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）が設けられることになるが、ここでは、管理プログラムＳＳＤ１についてのＳＤ用参照テーブルＴ（ＳＳＤ１）を代表例にとって、以下の説明を行うことにする。
【０２７６】
この図２７に示す第２の実施形態の場合も、上段左に示す従来のＯＳ用参照テーブルＴ（ＯＳ）に記録されていた情報（チャネル対応情報）は、白抜き矢印で示すとおり、下段左に示す本発明のＯＳ用参照テーブルＴ（ＯＳ）にそっくり盛り込まれている。
【０２７７】
一方、上段右に示す従来のＳＤ用参照テーブルＴ（ＳＳＤ１）に記録されていた情報（通信路管理情報）のうち、「未開設」か「開設済」かを示す開設状態の情報は、白抜き矢印で示すとおり、下段左に示す本発明のＯＳ用参照テーブルＴ（ＯＳ）に盛り込まれることになり、下段右に示す本発明のＳＤ用参照テーブルＴ（ＳＳＤ１）には記録されない。
【０２７８】
結局、下段左に示された本発明のＯＳ用参照テーブルＴ（ＯＳ）は、上段左に示された従来のＯＳ用参照テーブルＴ（ＯＳ）に、新たに「開設状態」の欄を設け、この「開設状態」の欄に、「特定のアプリケーションプログラムのために暗号通信路が開設済か否かを示す情報」を記録するようにしたもの、ということができる。別言すれば、「開設状態」の欄には、「未開設」か「開設済」かの情報が記録され、「開設済」という情報が記録されている場合には、その左隣のアプリ名の欄に記載されている特定のアプリケーションプログラムのために暗号通信路が開設済であることを示している。
【０２７９】
図示の例の場合、上段右に示されたＳＤ用参照テーブルＴ（ＳＳＤ１）のうち、開設状態「開設済」，アプリ名「ＡＰ１１」，チャネル番号「＃１」という情報は、下段左に示されているＯＳ用参照テーブルＴ（ＯＳ）の第２行目に記録されていることになる。一方、下段右に示されているＳＤ用参照テーブルＴ（ＳＳＤ１）には、「アプリ名」，「チャネル番号」，「セッションキー」の各欄は残っているが、「開設状態」の欄は廃止されている（図では、説明の便宜上、太線枠に×印をつけて示した）。
【０２８０】
既に述べたとおり、ＳＤ用情報格納部１２２内には、個々の管理プログラムＳＳＤ１，ＳＳＤ２，ＳＳＤ３，ＩＳＤのそれぞれについてのＳＤ用参照テーブルＴ（ＳＳＤ１），Ｔ（ＳＳＤ２），Ｔ（ＳＳＤ３），Ｔ（ＩＳＤ）が格納されている。したがって、これらの各ＳＤ用参照テーブルＴ（ＳＤ）は、個々の管理プログラムごとに、それぞれ開設した暗号通信路に関する情報を記録するテーブルとして利用されることになる。
【０２８１】
具体的には、各管理プログラムＳＤは、所定の開設対象アプリケーションプログラムのために新たな暗号通信路を開設する際には、当該暗号通信路に利用するセッションキーを発生させ、これを当該所定の開設対象アプリケーションプログラムのアプリ名およびそのチャネル番号とともに、各ＳＤ用参照テーブルＴ（ＳＤ）に書き込む処理を行う。図２７の下段右の例は、管理プログラムＳＳＤ１が、アプリＡＰ１１を「所定の開設対象アプリケーションプログラム」として、論理チャネル＃１を用いて暗号通信路を開設した場合の例である。ここでは、このＳＤ用参照テーブルＴ（ＳＳＤ１）に記録されているアプリ名およびチャネル番号の情報を「開設対象アプリ情報」と呼ぶことにする。
【０２８２】
別言すれば、「開設対象アプリ情報」は、暗号通信路の開設対象がどのアプリケーションプログラムであるかを示す情報ということになる。ここで、「開設対象アプリ情報」に含まれている「アプリ名」は、開設対象アプリケーションプログラムを直接的に示す情報ということになり、「チャネル番号」は、開設対象アプリケーションプログラムを間接的に示す情報ということになる。たとえば、図２７の下段右に示す例の場合、アプリ名の欄に記載された「ＡＰ１１」は、開設対象アプリケーションプログラムが「アプリＡＰ１１」であることを直接的に示す情報である。これに対して、チャネル番号の欄に記載された「＃１」は、下段左に示すＯＳ用参照テーブルＴ（ＯＳ）を参照することにより、開設対象アプリケーションプログラムが、チャネル番号「＃１」に対応した「アプリＡＰ１１」であることを間接的に示す情報である。
【０２８３】
管理プログラムＳＳＤ１は、所定の開設対象アプリケーションプログラムＡＰ１１のために新たな暗号通信路を開設した際には、その旨をＯＳプログラムに報告するとともに、セッションキー「xxxxxx」を発生させる。そして、新たな暗号通信路の開設対象が当該所定のアプリケーションプログラムＡＰ１１であることを示す開設対象アプリ情報（アプリ名「ＡＰ１１」とチャネル番号「＃１」）とともに、発生させたセッションキー「xxxxxx」をＳＤ用参照テーブルに書き込むことになる（チャネル番号「＃１」は、必要なら、ＯＳプログラムに問い合わせを行うことにより認識可能である）。図２７の下段右のＳＤ用参照テーブルＴ（ＳＳＤ１）は、本発明の第２の実施形態において、このような書き込みが行われた時点の状態を示すものである。
【０２８４】
一方、図２７の下段左に示す本発明の第２の実施形態に係るＯＳ用参照テーブルＴ（ＯＳ）の「アプリ名」の欄と「開設状態」の欄に記録される情報（「未開設」か「開設済」かを示す情報）については、「暗号通信路開設情報」と呼ぶことにする。この暗号通信路開設情報の本質的な役割は、その時点において、「アプリ名」で示された特定のアプリケーションプログラムのために暗号通信路が開設済か否かを示すことである。
【０２８５】
このＯＳ用参照テーブルＴ（ＯＳ）の「チャネル番号」，「開閉状態」，「アプリ名」の各欄に記録される情報は、前述したとおり、上段左に示すＯＳ用参照テーブルＴ（ＯＳ）に記録されていたチャネル対応情報である。このチャネル対応情報の本質的な役割は、その時点において、特定のチャネル番号と特定のアプリケーションプログラムとの対応関係を示すことにある。
【０２８６】
なお、図示する実施例では、ＯＳ用参照テーブルＴ（ＯＳ）に「開閉状態」の欄が設けられているが、「アプリ名」の欄に何らかのアプリケーションプログラムを示す情報が記録されている場合は、「開閉状態」の欄は「開」になり、「アプリ名」の欄が「無」の場合は、「開閉状態」の欄は「閉」になるので、「開閉状態」の欄は本質的なものではなく、省略してもかまわない。
【０２８７】
ここに示す実施例の場合、暗号通信路開設情報は、チャネル対応情報の一部を構成する「アプリ名」の欄を利用することにより、チャネル対応情報により対応関係が示されているアプリケーションプログラムのために暗号通信路が開設済か否かを示す情報として機能している。たとえば、図示の例の場合、下段左に示すＯＳ用参照テーブルＴ（ＯＳ）の第２行目には、「＃１」，「開」，「ＡＰ１１」，「開設済」なる情報が対応づけて記録されているが、当該記録は、特定のチャネル番号「＃１」と特定のアプリケーションプログラム「ＡＰ１１」との対応関係を示すチャネル対応情報としての役割とともに、何らかの管理プログラムによって（この第２の実施形態の場合、管理プログラムを特定する情報は、ＯＳ用参照テーブルＴ（ＯＳ）には記録されない）、アプリ「ＡＰ１１」のための暗号通信路が開設済であることを示す暗号通信路開設情報としての役割を果たす。
【０２８８】
このＯＳ用参照テーブルＴ（ＯＳ）は、ＯＳプログラムによって管理される情報であり、ＯＳプログラムによって書き込みや変更が行われ、ＯＳプログラムによって参照される。したがって、この第２の実施形態に係る装置１００に組み込まれているＯＳプログラムは、外部装置２００から、特定の選択チャネル番号に特定の選択アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、このＯＳ用参照テーブルＴ（ＯＳ）に、当該選択チャネル番号と当該選択アプリケーションプログラムとの対応関係を示すチャネル対応情報を記録する処理を行う。
【０２８９】
このとき、当該選択アプリケーションプログラムに関する暗号通信路開設情報の記録を未開設状態に初期化する処理を行う。たとえば、ＯＳ用参照テーブルＴ（ＯＳ）が、図２７の下段左に示す状態であるときに、選択チャネル番号＃１に、新たな選択アプリケーションプログラムＡＰ１２を対応づけるためのアプリケーション選択コマンド「SELECT(#1), AP12」が与えられると、ＯＳプログラムは、チャネル番号＃１に対応する第２行目のアプリ名の欄を「ＡＰ１１」から「ＡＰ１２」に書き換えるとともに、第２行目の開設状態の欄の「開設済」を消去して、「未開設」の状態に初期化する処理を行うことになる。
【０２９０】
もちろん、この第２の実施形態に係る装置１００に組み込まれているＯＳプログラムは、従来のＯＳプログラムと同様に、外部装置２００から、特定のチャネル番号を指定した所定コマンドが与えられたときに、このＯＳ用参照テーブルＴ（ＯＳ）に記録されているチャネル対応情報を参照することにより、指定されたチャネル番号に対応するアプリケーションプログラムを認識し、与えられた所定コマンドを、認識したアプリケーションプログラムに引き渡す処理も行う。
【０２９１】
一方、この第２の実施形態で利用されるＳＤ用参照テーブルＴ（ＳＳＤ１）では、図２７の下段右に×印を付して示すとおり、開設状態（「未開設」か「開設済」かの状態）の記録は廃止されてしまったため、管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）を参照しても、現在、自分自身が何らかの暗号通信路の開設を行っているのか否かを確認することができない。
【０２９２】
そこで、第２の実施形態に係る管理プログラムは、新たな暗号通信路の開設を行う際に、必要に応じて、ＯＳプログラムに対してＯＳ用参照テーブルＴ（ＯＳ）に記録されている暗号通信路開設情報の内容（具体的には、所定の開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否か）を問い合わせ、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。なお、ＯＳプログラムに対する問い合わせは、「必要に応じて」行われ、後述するように、問い合わせが「不要」の場合は行う必要はない。
【０２９３】
前述したとおり、管理プログラムＳＳＤ１の管理下にあるアプリケーションプログラムは、ＯＳプログラムから暗号通信路開設コマンドの引き渡しを受けた場合、自己を管理する管理プログラムＳＳＤ１に対して、自己のための暗号通信路開設依頼を行う。管理プログラムＳＳＤ１は、このような暗号通信路開設依頼を受けた場合、ＳＤ用参照テーブルＴ（ＳＳＤ１）を参照して、自己が暗号通信路を開設しているか否かの判断を行う。ここで、もし、アプリ名，チャネル番号，セッションキーの各欄に情報が記録されておらず、「無」の状態であれば、暗号通信路を開設していないと判断することができる。
【０２９４】
なぜなら、前述したとおり、管理プログラムＳＳＤ１は、開設対象アプリケーションプログラムのために暗号通信路を開設した際には、ＳＤ用参照テーブルＴ（ＳＳＤ１）のアプリ名およびチャネル番号の欄に開設対象アプリ情報を書き込み、セッションキーの欄に発生させたセッションキーを書き込む処理を行うので、これらの各欄が「無」の状態であれば、現時点では、暗号通信路を開設していないことになる。別言すれば、現時点で暗号通信路を開設している場合は、必ず、アプリ名，チャネル番号，セッションキーの各欄にしかるべき情報が記録されているはずである。そこで、これら各欄が「無」の状態であれば、暗号通信路を開設していないと判断することができる。この場合、ＯＳプログラムへの問い合わせは不要である。
【０２９５】
一方、アプリ名，チャネル番号，セッションキーの各欄に何らかの情報が記録されていた場合、これをもって直ちに暗号通信路を開設していると判断することは早計である。これら各欄に、何らかの情報が記録されていたとしても、それらの情報は、過去に暗号通信路を開設していた痕跡に過ぎず、現時点では、暗号通信路を開設していない可能性もある。すなわち、過去に暗号通信路を開設した場合、開設対象となったアプリケーションプログラムが、正常なプログラムであれば、選択が解除された場合にその旨の報告がなされ、ＳＤ用参照テーブルＴ（ＳＳＤ１）の情報は消去されることになるが、欠陥プログラムであった場合、そのような報告がなされないため、ＳＤ用参照テーブルＴ（ＳＳＤ１）の情報は消去されず、そのまま過去の痕跡として残ってしまうことになる。
【０２９６】
そこで、アプリ名，チャネル番号，セッションキーの各欄に何らかの情報が記録されていた場合は、ＯＳプログラムへの問い合わせを行い、その回答に基づいて、現時点で、暗号通信路を開設しているか否かを判断する必要がある。このように、ここで述べる第２の実施形態の場合、必要に応じて、ＯＳプログラムへの問い合わせが行われる点が、前述した第１の実施形態と異なる。
【０２９７】
結局、ここで述べる第２の実施形態の場合、ＳＤ用情報格納部１２２には、管理プログラムＳＳＤ１による暗号通信路の開設対象となるアプリケーションプログラムを示す開設対象アプリ情報（アプリ名およびチャネル番号）を記録するためのＳＤ用参照テーブルＴ（ＳＳＤ１）が格納されており、管理プログラムＳＳＤ１は、自己が管理するアプリケーションプログラムから暗号通信路開設依頼を受けたときに、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない場合には、ＯＳプログラムへの問い合わせを行うことなしに、現時点では、暗号通信路を開設していないと判断し、依頼に応じた新たな暗号通信路の開設を行う旨の決定を行うことになる。一方、開設対象アプリ情報として所定の開設対象アプリケーションプログラムが示されていた場合には、ＯＳプログラムに対して、当該所定の開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否かの問い合わせを行う。
【０２９８】
ＯＳプログラムは、管理プログラムＳＳＤ１から、このような問い合わせがあると、ＯＳ用参照テーブルＴ（ＯＳ）内の暗号通信路開設情報を参照することにより、当該問い合わせについての回答を行う。そこで、管理プログラムＳＳＤ１は、得られた回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。
【０２９９】
具体的には、管理プログラムＳＳＤ１に対して、同時に開設可能な暗号通信路の数が１つだけという制限が課されている場合、ＯＳプログラムは、管理プログラムＳＳＤ１からの問い合わせがあったときに、問い合わせに係る特定のアプリケーションプログラムのために暗号通信路が「開設済」か「未開設」か、のいずれであるかを回答すればよい。管理プログラムＳＳＤ１は、「未開設」との回答が得られた場合には、新たな暗号通信路の開設を行い、「開設済」との回答が得られた場合には、新たな暗号通信路の開設を行わないことになる。
【０３００】
たとえば、図２７に示す例の場合、開設対象アプリ情報には、開設対象アプリケーションプログラムを特定するアプリ名「ＡＰ１１」と、当該開設対象アプリケーションプログラムＡＰ１１に対応づけられたチャネル番号「＃１」とが含まれている。これは、管理プログラムＳＳＤ１が、新たな暗号通信路を開設する際に、アプリ名とチャネル番号とを含む開設対象アプリ情報をＳＤ用参照テーブルＴ（ＳＳＤ１）に書き込むようにしているためである。
【０３０１】
したがって、図２７に示す例の場合、管理プログラムＳＳＤ１がＯＳプログラムに対して問い合わせを行う際には、ＳＤ用参照テーブルＴ（ＳＳＤ１）に開設対象アプリ情報として記録されているアプリ名「ＡＰ１１」とチャネル番号「＃１」との組み合わせに関して暗号通信路が設定済か否かを問い合わせればよい。ＯＳプログラムは、このような問い合わせがあったときに、当該組み合わせに関して暗号通信路が「未開設」か「設定済」かを回答する。図示の例の場合、問い合わせを受けたＯＳプログラムが、ＯＳ用参照テーブルＴ（ＯＳ）を検索すると、第２行目にアプリ名「ＡＰ１１」とチャネル番号「＃１」との組み合わせが見つかり、開設状態の欄が「開設済」となっているため、「開設済」との回答を行うことになる。
【０３０２】
ＯＳプログラムから「未開設」の回答が得られた場合、管理プログラムＳＳＤ１は、前述したとおり暗号通信路の開設処理を行い、これをＯＳプログラムに報告する。管理プログラムＳＳＤ１から、特定のアプリケーションプログラムのために暗号通信路を開設した旨の報告があると、ＯＳプログラムは、当該報告に応じて、報告に係る特定のアプリケーションプログラムのために暗号通信路が開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルＴ（ＯＳ）に書き込む。すなわち、当該特定のアプリケーションプログラムのアプリ名が記録されている行の開設状態の欄を「開設済」とする書き込みを行う。
【０３０３】
管理プログラムＳＳＤ１からＯＳプログラムへの報告は、暗号通信路の開設対象となるアプリケーションプログラムについての開設対象アプリ情報を伝えることによって行えばよい。たとえば、管理プログラムＳＳＤ１が、論理チャネル＃１を用いて、アプリＡＰ１１について暗号通信路の開設を行うと、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、図２７の下段右に示すような開設対象アプリ情報が記録されるので、管理プログラムＳＳＤ１は、アプリ名「ＡＰ１１」とチャネル番号「＃１」をＯＳプログラムに報告すればよい。
【０３０４】
ＯＳプログラムは、管理プログラムＳＳＤ１から、暗号通信路を開設した旨の報告があったときに、当該報告に応じて、特定のアプリケーションプログラムのために暗号通信路が開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルＴ（ＯＳ）に書き込む。たとえば、上例のように、アプリ名「ＡＰ１１」とチャネル番号「＃１」とを伴う報告があった場合、ＯＳ用参照テーブルＴ（ＯＳ）から、、アプリ名「ＡＰ１１」とチャネル番号「＃１」との組み合わせを検索し、該当する行の開設状態の欄を「開設済」とする書き込みを行えばよい。図２７の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）は、このような書き込みを行った後の段階を示している。
【０３０５】
なお、上例では、アプリ名とチャネル番号との双方を特定した報告を行っているが、少なくともチャネル番号が特定されていれば、アプリ名の特定は省略してもかまわない。Java Card（商標）などの仕様では、同一のアプリケーションプログラムを複数のチャネルで選択するマルチセレクトが可能になっているため、アプリ名だけではチャネル番号を特定することができない。もちろん、マルチセレクトを許さない仕様の場合は、アプリ名「ＡＰ１１」とチャネル番号「＃１」のいずれか一方が特定できれば、ＯＳプログラムは、上記書き込みを行うことができるので、管理プログラムＳＳＤ１からＯＳプログラムへの報告には、アプリ名「ＡＰ１１」とチャネル番号「＃１」のいずれか一方が含まれていれば足りる。
【０３０６】
ここに示す第２の実施形態の場合も、ＯＳプログラムは、外部装置２００から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、この旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与える。
【０３０７】
解除通知を受けた旧アプリケーションプログラムが、仕様を遵守した正常なプログラムであれば、その旨を、自己を管理する管理プログラムに報告する。管理プログラムは、自己の管理下にある旧アプリケーションプログラムから上述した解除通知があった旨の報告を受けた場合には、ＳＤ用参照テーブルに書き込まれている旧アプリケーションプログラムについての開設対象アプリ情報を消去する処理を行う。
【０３０８】
また、ＳＤ用情報格納部１２２には、個々の管理プログラムごとに、それぞれＳＤ用参照テーブルが格納されており、これら各ＳＤ用参照テーブルには、各管理プログラムが開設済の暗号通信路に利用するセッションキーが記録される。これは、管理プログラムが、新たな暗号通信路の開設を行う際に、当該暗号通信路に利用するセッションキーを発生させ、これをＳＤ用参照テーブルに書き込む処理を行ったためである。そこで、自己の管理下にある旧アプリケーションプログラムから上述した解除通知があった旨の報告を受けた管理プログラムは、このＳＤ用参照テーブルに書き込まれている旧アプリケーションプログラムについてのセッションキーも消去する処理を行う。
【０３０９】
結局、この第２の実施形態の場合、管理プログラムは、自己の管理下にある旧アプリケーションプログラムから上述した解除通知があった旨の報告を受けた場合、ＳＤ用参照テーブルＴ（ＳＤ）内の開設対象アプリ情報とセッションキーを消去する処理を行うことになる。たとえば、ＳＤ用参照テーブルＴ（ＳＳＤ１）が、図２７の下段右に示す状態において、旧アプリＡＰ１１から管理プログラムＳＳＤ１に対して、上述した解除通知があった旨の報告があった場合、管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）内のアプリ名，チャネル番号，セッションキーの各欄の情報をすべて消去して「無」の状態に書き換える処理を行うことになる。
【０３１０】
この第２の実施形態に係る情報処理装置では、「未開設」か「開設済」かの開設状態を示す情報は、ＳＤ用参照テーブルではなく、ＯＳ用参照テーブルＴ（ＯＳ）に記録されるため、上例の場合に、旧アプリＡＰ１１が欠陥プログラムであり、解除通知があった旨の報告を怠ったとしても支障は生じない。管理プログラムＳＳＤ１が、旧アプリＡＰ１１からの解除通知があった旨の報告を受け取らないと、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、図２７の下段右に示すように、旧アプリＡＰ１１に関する暗号通信路開設に関する情報がそのまま残ることになる。
【０３１１】
しかしながら、アプリＡＰ１１の選択が解除されていれば、ＯＳ用参照テーブルＴ（ＯＳ）上では、旧アプリＡＰ１１の情報は消去されているため、ＯＳプログラムへの問い合わせを行えば、「未開設」の回答が得られることになり、管理プログラムＳＳＤ１は、新アプリＡＰ１２のために新たな暗号通信路を支障なく開設することができる。
【０３１２】
したがって、理論上は、管理プログラムＳＳＤ１が、旧アプリＡＰ１１から上述した解除通知があった旨の報告を受けた場合に、ＳＤ用参照テーブルＴ（ＳＳＤ１）に書き込まれている旧アプリＡＰ１１についての開設対象アプリ情報やセッションキーを消去する処理を行わなくても、新アプリＡＰ１２のために新たな暗号通信路を支障なく開設することができる。ただ、既に選択が解除されている旧アプリＡＰ１１についての開設対象アプリ情報やセッションキーがＳＤ用参照テーブルＴ（ＳＳＤ１）に残っていることは、情報漏洩などの観点から好ましくないので、実用上は、上述したとおり、特定のアプリケーションプログラムから選択が解除された旨の報告があった場合、管理プログラムＳＤは、当該アプリケーションプログラムについての開設対象アプリ情報およびセッションキーを消去するのが好ましい。
【０３１３】
このように、この第２の実施形態に係る情報処理装置では、選択が解除されたことを管理プログラムＳＤに報告する「報告処理」を怠る欠陥プログラムが存在した場合でも、新たな暗号通信路が開設できなくなる、という問題は生じない。以下、この点を、処理ダイアグラムを用いた具体的な事例について詳述する。
【０３１４】
＜６−２．  第２の実施形態による正常処理手順＞
ここでは、上述した第２の実施形態に係る装置によって、図９に示すステップＳ１１〜Ｓ１４の各手順（§４の従来装置における暗号通信路開設処理の説明で例示した手順）を実行した場合に、各プログラムでどのような処理が実行されるかを、プログラム間の信号の流れを追いながら説明する。図２８は、第２の実施形態に係る情報処理装置における暗号通信路開設処理の正常処理手順を示すダイアグラムである。これまでのダイアグラムと同様に、図の上段に示す各ブロックおよびこれら各ブロックから下方に伸びる各垂直線は、個々のプログラムを示しており、各垂直線の間を結ぶ水平矢印は、各プログラム間の信号の流れを示している。また、図の上下方向は、上から下に向かって経過する時間を示している。
【０３１５】
このダイアグラムにおいて、プロセスＰ２１は、図９のステップＳ１１の「アプリＡＰ１１を選択」に対応し、プロセスＰ２２は、ステップＳ１２の「アプリＡＰ１１について暗号通信路開設」に対応し、プロセスＰ２３は、ステップＳ１３の「アプリＡＰ１２を選択」に対応し、プロセスＰ２４は、ステップＳ１４の「アプリＡＰ１２について暗号通信路開設」に対応する。ここでも、実際には、プロセスＰ２２とプロセスＰ２３との間に、アプリＡＰ１１と外部装置２００の間での暗号通信路を介した情報送受プロセスが存在し、プロセスＰ２４の後に、アプリＡＰ１２と外部装置２００の間での暗号通信路を介した情報送受プロセスが存在する。
【０３１６】
図２８のダイアグラムにおいて、まず、プロセスＰ２１では、外部装置２００内のホスト側アプリから情報処理装置１００に対して、アプリケーション選択コマンド「SELECT(#1), AP11」が与えられる。ＯＳプログラムは、このアプリケーション選択コマンドを受けて、論理チャネル＃１にアプリＡＰ１１を割り当てる処理を行う。すなわち、図２７の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）に、論理チャネル＃１とアプリＡＰ１１との対応関係がチャネル対応情報として記録される。具体的には、ＯＳ用参照テーブルＴ（ＯＳ）の第２行目の開閉状態の欄を「開」にし、アプリ名の欄に「ＡＰ１１」を記録する。この時点では、開設状態の欄は「未開設」の状態になる（「開設済」になっていた場合は、「未開設」に初期化される）。
【０３１７】
ＯＳプログラムは、こうして、論理チャネル＃１とアプリＡＰ１１との対応関係をＯＳ用参照テーブルＴ（ＯＳ）に記録する処理を行うとともに、図示の「Select処理」と記された左向き矢印に示すように、アプリＡＰ１１に対して選択が行われた旨を伝達する。この伝達信号を受けたアプリＡＰ１１は、ＯＳプログラムに対して、確認信号（図の右向き矢印）を返信する。そこで、ＯＳプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０３１８】
以後、チャネル番号＃１を伴うコマンドが送信されてきた場合、ＯＳプログラムは、当該コマンドをアプリＡＰ１１宛のコマンドとして取り扱うことになる。なお、図２７の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）に記録されるチャネル対応情報の部分は、図２７の上段左に示す従来のＯＳ用参照テーブルＴ（ＯＳ）に記録されるチャネル対応情報に対応するものである。したがって、基本的には、図２８に示すプロセスＰ２１の処理は、図１０に示す従来のプロセスＰ１の処理と同じ処理になる。
【０３１９】
続くプロセスＰ２２では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。ＯＳプログラムは、当該コマンドに含まれているチャネル番号「＃１」を参照することにより、当該コマンドが、論理チャネル＃１に対応づけられているアプリＡＰ１１宛のコマンドであると判断し、これをアプリＡＰ１１に引き渡す（図の左向き矢印）。当該コマンドを受け取ったアプリＡＰ１１は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムＳＳＤ１に対して、自己のための暗号通信路の開設を依頼する（図の右向き矢印）。
【０３２０】
§４で述べた従来装置の場合、図１０のダイアグラムに示されているように、アプリＡＰ１１から暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）を参照することにより、現在の暗号通信路の開設状態を確認する処理を行うことになる。しかしながら、本発明の場合、暗号通信路の開設状態（「未開設」か「開設済」か）を示す情報は、ＳＤ用参照テーブルＴ（ＳＳＤ１）ではなく、ＯＳ用参照テーブルＴ（ＯＳ）に記録されている。
【０３２１】
そこで、§５で述べた第１の実施形態に係る装置の場合、管理プログラムＳＳＤ１は、暗号通信路開設依頼を受けたときに、自己の暗号通信路の開設状態をＯＳプログラムに問い合わせる処理を行っていた。ここで述べる第２の実施形態に係る装置の場合も、前述したとおり、必要に応じて、自己の暗号通信路の開設状態をＯＳプログラムに問い合わせる処理を行うことになるが、このような問い合わせが不要なケースもある。
【０３２２】
すなわち、§６−１で述べたとおり、第２の実施形態の場合、管理プログラムＳＳＤ１は、自己が管理するアプリケーションプログラムから暗号通信路開設依頼を受けたときに、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない場合には、ＯＳプログラムへの問い合わせを行うことなしに、現時点では、暗号通信路を開設していないと判断し、開設対象アプリ情報として何らかの開設対象アプリケーションプログラムが示されていた場合には、ＯＳプログラムに対して、当該開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否かの問い合わせを行うことになる。
【０３２３】
ここでは、説明の便宜上、管理プログラムＳＳＤ１にとって、図示のプロセスＰ２２が、初めての暗号通信路開設処理であったものとしよう。この場合、ＳＤ用参照テーブルＴ（ＳＳＤ１）のアプリ名，チャネル番号，セッションキーの各欄はいずれも「無」になっており、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていないことになる。したがって、管理プログラムＳＳＤ１は、ＯＳプログラムへの問い合わせを行うことなしに、現時点では、暗号通信路を開設していないと判断し、アプリＡＰ１１からの暗号通信路開設依頼に応じて、暗号通信路の開設を行う。すなわち、新たにセッションキー「xxxxxx」を発生させた上で、ＳＤ用参照テーブルＴ（ＳＳＤ１）に図２７の下段右に示すような記録を行うとともに、暗号通信路の開設に必要な種々の処理を実行する。
【０３２４】
管理プログラムＳＳＤ１は、暗号通信路開設処理を実行した旨を、ＯＳプログラムとアプリＡＰ１１との双方に報告する（図の黒点からの左右両方への矢印）。ＯＳプログラムは、管理プログラムＳＳＤ１から、暗号通信路を開設した旨の報告があったときには、当該報告に応じて、管理プログラムＳＳＤ１がアプリＡＰ１１のために暗号通信路を開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルＴ（ＯＳ）に書き込む。
【０３２５】
具体的には、管理プログラムＳＳＤ１から、チャネル番号「＃１」という情報を含む開設済みの報告を行うようにすれば、ＯＳプログラムは、図２７の下段左に示すように、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号「＃１」の行の開設状態の欄に「開設済」なる情報を書き込むことができる。
【０３２６】
一方、アプリＡＰ１１は、管理プログラムＳＳＤ１からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をＯＳプログラムに伝達する（図の右向き矢印）。そこで、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。図示されていないが、もし、管理プログラムＳＳＤ１から暗号通信路開設依頼を拒絶する旨の報告があった場合には、アプリＡＰ１１は、暗号通信路開設コマンドの実行に失敗した旨をＯＳプログラムに伝達し、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが失敗した旨のＮＧ応答を返すことになる。
【０３２７】
なお、実際には、このプロセスＰ２２の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムＳＳＤ１からＯＳプログラムおよびアプリＡＰ１１の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
【０３２８】
こうして、プロセスＰ２２が完了した時点ｔ２２では、管理プログラムＳＳＤ１によって、アプリＡＰ１１のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリＡＰ１１とホスト側アプリとの間で暗号通信が行われる。したがって、実際には、図示の時点ｔ２２の前後において、暗号通信路を介した情報送受プロセスが存在するが、図２８のダイアグラムでは、当該情報送受プロセスの図示は省略されている。
【０３２９】
図２８に示すダイアグラムの後半の手順は、アプリＡＰ１１との間で論理チャネル＃１を介した暗号情報送受プロセスが完了したホスト側アプリが、今度は、別なアプリＡＰ１２との間で同じ論理チャネル＃１を介した暗号情報送受プロセスを実行する手順である。
【０３３０】
まず、プロセスＰ２３では、外部装置２００内のホスト側アプリから情報処理装置１００に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる。ＯＳプログラムは、このアプリケーション選択コマンドを「論理チャネル＃１を指定してアプリＡＰ１２を選択するコマンド」として解釈し、論理チャネル＃１にアプリＡＰ１２を割り当てる処理を行う。ただ、この時点では、図２７の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）に示されているとおり、論理チャネル＃１には既に旧アプリＡＰ１１が割り当てられている。
【０３３１】
このように、外部装置２００から、特定のチャネル番号に新アプリケーションプログラムを対応づけるためのアプリケーション選択コマンドが与えられたときに、当該特定のチャネル番号に既に対応づけられていた旧アプリケーションプログラムが存在した場合には、ＯＳプログラムは、当該旧アプリケーションプログラムに対して、チャネル番号との対応関係が解除された旨の解除通知を与える。
【０３３２】
図示の例の場合、ＯＳプログラムは、まず、旧アプリＡＰ１１に対して、チャネル番号＃１との対応関係が解除された旨の解除通知（選択が解除された旨の通知）を与える。図示の「Deselect処理」と記された左向き矢印は、このような解除通知を示している。この解除通知を受けたアプリＡＰ１１が、仕様を遵守した正常なプログラムであれば、自己を管理する管理プログラムＳＳＤ１に対して、選択が解除された旨の報告を行う。図示の「報告処理」と記された一点鎖線の右向き矢印は、このような選択解除の報告信号を示している（後述するように、アプリＡＰ１１が、仕様を遵守しない欠陥プログラムの場合、この「報告処理」は行われない。）。
【０３３３】
ここでは、ＡＰ１１が、仕様を遵守した正常なプログラムであり、上記「報告処理」が行われたものとしよう。当該報告を受けた管理プログラムＳＳＤ１は、これまで論理チャネル＃１でアプリＡＰ１１のために開設していた暗号通信路を終了する処理を行う。具体的には、図２７の下段右に示すように、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、アプリ名「ＡＰ１１」，チャネル番号「＃１」，セッションキー「xxxxxx」が記録されているが、これらは既に選択が解除された旧アプリＡＰ１１についての暗号通信路に関する情報であるので、旧アプリＡＰ１１から「報告処理」があったとき、これらの情報を消去する処理を行う。その結果、ＳＤ用参照テーブルＴ（ＳＳＤ１）の記録状態はすべて「無」になる。
【０３３４】
この第２の実施形態の場合、上記消去処理を行わなくても、新アプリＡＰ１２について新たな暗号通信路を開設する上では支障は生じないが（実際、旧アプリＡＰ１１が欠陥プログラムの場合は、上記消去処理は行われない）、セッションキー「xxxxxx」などが漏洩する可能性を低減する上で、実用上は、上記消去処理を行うようにするのが好ましい。ここでは、このプロセスＰ２３において、上記消去処理が行われたものとして以下の説明を行う。
【０３３５】
一方、論理チャネルの割り当てが解除されたアプリＡＰ１１は、「Deselect処理」に応じた確認信号（図の実線の右向き矢印）をＯＳプログラムに返す。そこで、ＯＳプログラムは、論理チャネル＃１に新たに割り当てるプログラムとして選択された新アプリＡＰ１２に対して、選択が行われた旨を伝達する。図示の「Select処理」と記された左向き矢印は、このような伝達信号を示している。この伝達信号を受けた新アプリＡＰ１２は、ＯＳプログラムに対して、確認信号（図の右向き矢印）を返信する。そこで、ＯＳプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０３３６】
以上の処理により、論理チャネル＃１に新たにアプリＡＰ１２が対応づけられ、アプリＡＰ１２のために論理チャネル＃１が「開」の状態になる。このような対応関係は、図２７の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）に記録される。すなわち、ＯＳプログラムは、新アプリＡＰ１２から確認信号が得られた時点で、ＯＳ用参照テーブルＴ（ＯＳ）の＃１の行のアプリ名の欄を、「ＡＰ１１」から「ＡＰ１２」に書き換える処理を行い、チャネル番号＃１と新アプリＡＰ１２との対応関係を示すチャネル対応情報を記録する。
【０３３７】
しかも、ＯＳプログラムは、このとき新アプリＡＰ１２に関する暗号通信路開設情報の記録を未開設状態に初期化する。すなわち、図２７の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）の第２行目に記録されている「＃１，開，ＡＰ１１，開設済」なる情報は、アプリ名の欄が「ＡＰ１１」から「ＡＰ１２」に書き換えられるとともに、開設状態の欄が初期化されて、「開設済」から「未開設」に書き換えらえる。以後、チャネル番号＃１を伴うコマンドが送信されてきた場合、ＯＳプログラムは、当該コマンドをアプリＡＰ１２宛のコマンドとして取り扱うことになる。
【０３３８】
続くプロセスＰ２４では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。ＯＳプログラムは、当該コマンドに含まれているチャネル番号「＃１」を参照することにより、当該コマンドが、論理チャネル＃１に対応づけられているアプリＡＰ１２宛のコマンドであると判断し、これをアプリＡＰ１２に引き渡す（図の左向き矢印）。当該コマンドを受け取ったアプリＡＰ１２は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムＳＳＤ１に対して、自己のための暗号通信路の開設を依頼する（図の右向き矢印）。
【０３３９】
暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、現時点で、暗号通信路を開設しているか否かを判断するため、まず、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容を確認する。すると、前述したプロセスＰ２３の処理により、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容は消去されており、すべて「無」の状態になっている。したがって、管理プログラムＳＳＤ１は、ＯＳプログラムへの問い合わせを行うことなしに、現時点では、暗号通信路を開設していないと判断し、アプリＡＰ１２からの暗号通信路開設依頼に応じて、新たな暗号通信路の開設を行う。すなわち、新たにセッションキー「yyyyyy」を発生させた上で、ＳＤ用参照テーブルＴ（ＳＳＤ１）に、アプリ名「ＡＰ１２」，チャネル番号「＃１」，セッションキー「yyyyyy」なる情報を書き込むとともに、暗号通信路の開設に必要な種々の処理を実行する。
【０３４０】
そして、管理プログラムＳＳＤ１は、暗号通信路開設処理を実行した旨を、ＯＳプログラムとアプリＡＰ１２との双方に報告する（図の黒点からの左右両方への矢印）。ＯＳプログラムは、管理プログラムＳＳＤ１からの暗号通信路を開設した旨の報告を受けて、管理プログラムＳＳＤ１がアプリＡＰ１１のために暗号通信路を開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルＴ（ＯＳ）に書き込む。
【０３４１】
具体的には、管理プログラムＳＳＤ１から、「＃１」という情報を含む開設済みの報告を行うようにすれば、ＯＳプログラムは、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号「＃１」の行の開設状態の欄に「開設済」なる情報を書き込むことができる。
【０３４２】
一方、アプリＡＰ１２は、管理プログラムＳＳＤ１からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をＯＳプログラムに伝達する（図の右向き矢印）。そこで、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０３４３】
なお、実際には、このプロセスＰ２４の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムＳＳＤ１からＯＳプログラムおよびアプリＡＰ１２の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
【０３４４】
こうして、プロセスＰ２４が完了した時点ｔ２４では、管理プログラムＳＳＤ１によって、アプリＡＰ１２のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリＡＰ１２とホスト側アプリとの間で暗号通信が行われる。図２８のダイアグラムには示されていないが、実際には、図示の時点ｔ２４以降に、暗号通信路を介した情報送受プロセスが行われることになる。
【０３４５】
このように、管理プログラムＳＳＤ１は、同時には１つの暗号通信路しか開設することができないが、プロセスＰ２１，Ｐ２２においてアプリＰ１１のための暗号通信路を開設した後、当該暗号通信路を終了させた後であれば、プロセスＰ２３，Ｐ２４においてアプリＰ１２のために新たな暗号通信路を開設することができる。
【０３４６】
＜６−３．  第２の実施形態による欠陥処理手順＞
上述した図２８に示すダイアグラムは、アプリＡＰ１１が、仕様を遵守した正常なプログラムであった場合の正常処理手順であるが、既に述べたとおり、アプリケーションプログラムの中には、仕様を遵守しない欠陥プログラムが含まれている可能性がある。上例の場合において、アプリＡＰ１１が、そのような欠陥プログラムであった場合、図２８に一点鎖線の右向き矢印で示されている「報告処理」は実行されない可能性がある。そこで、以下、アプリＡＰ１１が欠陥プログラムであり、上記「報告処理」が実行されない場合の処理手順を、図２９のダイアグラムを参照しながら説明する。
【０３４７】
図２９のダイアグラムの前半のプロセスＰ２１，Ｐ２２の処理は、図２８のダイアグラムの前半のプロセスＰ２１，Ｐ２２の処理と全く同じである。しかしながら、図２９のダイアグラムの後半のプロセスは若干異なる。ここでは、図２９のダイアグラムの後半のプロセスを、図示のとおりプロセスＰ２３′，Ｐ２４′と呼ぶことにする。
【０３４８】
プロセスＰ２３′において、外部装置２００内のホスト側アプリから情報処理装置１００に対して、アプリケーション選択コマンド「SELECT(#1), AP12」が与えられる点は、図２８のプロセスＰ２３と全く同じである。そして、ＯＳプログラムが、このアプリケーション選択コマンドを「論理チャネル＃１を指定して新たなアプリＡＰ１２を選択するコマンド」として解釈し、旧アプリＡＰ１１に対して、図示の「Deselect処理」と記された解除通知を与える点も、図２８のプロセスＰ２３と全く同じである。
【０３４９】
ただ、旧アプリＡＰ１１が、欠陥プログラムであった場合、この解除通知を受けたアプリＡＰ１１は、「Deselect処理」に応じた確認信号（図の実線の右向き矢印）をＯＳプログラムに返すものの、管理プログラムＳＳＤ１に対する「報告処理」は怠ってしまうため、図に一点鎖線の右向き矢印で示す「報告処理」は実行されない。このため、管理プログラムＳＳＤ１は、現在開設している暗号通信路が終了したことを認識することができないため、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容を、図２７の下段右に示す状態に維持する。すなわち、旧アプリＡＰ１１の選択が解除された後も、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、アプリ名「ＡＰ１１」，チャネル番号「＃１」，セッションキー「xxxxxx」という旧アプリＡＰ１１についての暗号通信路に関する情報が消去されずに残ることになる。
【０３５０】
一方、ＯＳプログラムは、旧アプリＡＰ１１から、「Deselect処理」に応じた確認信号（図の実線の右向き矢印）を受け取った後、新アプリＡＰ１２に対して、選択が行われた旨を伝達する伝達信号（「Select処理」と記された左向き矢印）を与える。この伝達信号を受けた新アプリＡＰ１２は、ＯＳプログラムに対して、確認信号（図の右向き矢印）を返信する。そこで、ＯＳプログラムは、ホスト側アプリに対して、アプリケーション選択コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０３５１】
また、ＯＳプログラムは、新アプリＡＰ１２から確認信号が得られた時点で、ＯＳ用参照テーブルＴ（ＯＳ）の＃１の行のアプリ名の欄を、「ＡＰ１１」から「ＡＰ１２」に書き換える処理を行い、チャネル番号＃１と新アプリＡＰ１２との対応関係を示すチャネル対応情報を記録する。このとき、ＯＳプログラムは、新アプリＡＰ１２に関する暗号通信路開設情報の記録を未開設状態に初期化する。すなわち、図２７の下段左に示すＯＳ用参照テーブルＴ（ＯＳ）の第２行目に記録されている「＃１，開，ＡＰ１１，開設済」なる情報は、アプリ名の欄が「ＡＰ１１」から「ＡＰ１２」に書き換えられるとともに、開設状態の欄が初期化されて、「開設済」から「未開設」に書き換えらえる。以後、チャネル番号＃１を伴うコマンドが送信されてきた場合、ＯＳプログラムは、当該コマンドをアプリＡＰ１２宛のコマンドとして取り扱うことになる。
【０３５２】
続くプロセスＰ２４′では、ホスト側アプリから、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられる。ＯＳプログラムは、当該コマンドに含まれているチャネル番号「＃１」を参照することにより、当該コマンドが、論理チャネル＃１に対応づけられているアプリＡＰ１２宛のコマンドであると判断し、これをアプリＡＰ１２に引き渡す（図の左向き矢印）。当該コマンドを受け取ったアプリＡＰ１２は、暗号通信路の開設を指示するコマンドであることを認識するので、自己を管理している管理プログラムＳＳＤ１に対して、自己のための暗号通信路の開設を依頼する（図の右向き矢印）。
【０３５３】
アプリＡＰ１２からの暗号通信路開設依頼を受けた管理プログラムＳＳＤ１は、現時点で、暗号通信路を開設しているか否かを判断するため、まず、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容を確認する。すると、前述したプロセスＰ２３′の処理では、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容は消去されておらず、図２７の下段右に示すように、アプリ名「ＡＰ１１」，チャネル番号「＃１」，セッションキー「xxxxxx」という旧アプリＡＰ１１についての開設対象アプリ情報およびセッションキー情報が残っている。この場合、管理プログラムＳＳＤ１は、ＯＳプログラムに対して、ＳＤ用参照テーブルＴ（ＳＳＤ１）に記録されている開設対象アプリケーションプログラムのために暗号通信路が開設済であるか否かの問い合わせを行い、得られる回答に応じて、新たな暗号通信路の開設を行うか否かを決定することになる。
【０３５４】
具体的には、管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）に開設対象アプリ情報として記録されているアプリ名「ＡＰ１１」とチャネル番号「＃１」との組み合わせに関して暗号通信路が設定済か否かを問い合わせを行う。別言すれば、論理チャネル＃１でアプリＡＰ１１が暗号通信路を開設済か否かの確認が行われることになる。
【０３５５】
この問い合わせを受けたＯＳプログラムは、ＯＳ用参照テーブルＴ（ＯＳ）を検索するが、この時点では、既に「ＡＰ１１」は「ＡＰ１２」に書き換えられてしまっているため、問い合わせを受けた組み合わせに関する暗号通信路は開設済ではない。そこで、管理プログラムＳＳＤ１に対して、「未開設」との回答を行う。この回答を受けて、管理プログラムＳＳＤ１は、現時点では、暗号通信路を開設していないと判断し、新アプリＡＰ１２からの暗号通信路開設依頼に応じて、新たな暗号通信路の開設を行う。すなわち、新たにセッションキー「yyyyyy」を発生させた上で、ＳＤ用参照テーブルＴ（ＳＳＤ１）に、アプリ名「ＡＰ１２」，チャネル番号「＃１」，セッションキー「yyyyyy」なる情報を書き込み、暗号通信路の開設に必要な種々の処理を実行する。ＳＤ用参照テーブルＴ（ＳＳＤ１）に消去されずに残っていた旧アプリＡＰ１１についての情報は、新アプリＡＰ１２についての情報に書き換えられることになる。
【０３５６】
続いて、管理プログラムＳＳＤ１は、暗号通信路開設処理を実行した旨を、ＯＳプログラムとアプリＡＰ１２との双方に報告する（図の黒点からの左右両方への矢印）。ＯＳプログラムは、管理プログラムＳＳＤ１からの暗号通信路を開設した旨の報告を受けて、管理プログラムＳＳＤ１がアプリＡＰ１１のために暗号通信路を開設済であることを示す暗号通信路開設情報をＯＳ用参照テーブルＴ（ＯＳ）に書き込む。
【０３５７】
具体的には、管理プログラムＳＳＤ１から、「＃１」という情報を含む開設済みの報告を行うようにすれば、ＯＳプログラムは、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号「＃１」の行の開設状態の欄に「開設済」なる情報を書き込むことができる。
【０３５８】
一方、アプリＡＰ１２は、管理プログラムＳＳＤ１からの開設済みの報告を受けて、暗号通信路開設コマンドが正常に実行された旨をＯＳプログラムに伝達する（図の右向き矢印）。そこで、ＯＳプログラムは、ホスト側アプリに対して、暗号通信路開設コマンドが正常に実行された旨の応答（図のＯＫと記された右向き矢印）を返す。
【０３５９】
なお、実際には、このプロセスＰ２４′の暗号通信路開設処理を行うには、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」だけでなく、相互認証を行うために、外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」を与える必要があり、相互認証が完了して、はじめて暗号通信路の開設が行われる。したがって、実際には、管理プログラムＳＳＤ１からＯＳプログラムおよびアプリＡＰ１２の双方に向けた暗号通信路開設の報告は、この相互認証が完了した後に行われることになるが、ここでは、便宜上、この相互認証処理の手順説明は省略する。
【０３６０】
こうして、プロセスＰ２４′が完了した時点ｔ２４′では、管理プログラムＳＳＤ１によって、アプリＡＰ１２のための暗号通信路が開設された状態になっているので、この暗号通信路を介して、アプリＡＰ１２とホスト側アプリとの間で暗号通信が行われる。図２９のダイアグラムには示されていないが、実際には、図示の時点ｔ２４′以降に、暗号通信路を介した情報送受プロセスが行われることになる。
【０３６１】
このように、本発明の第２の実施形態では、アプリＡＰ１１が欠陥プログラムであり、選択が解除されたことを管理プログラムＳＳＤ１に報告する「報告処理」を怠った場合でも、暗号通信路開設情報がＯＳ用参照テーブルに格納されているため、アプリＡＰ１１の暗号通信が終了し、アプリＡＰ１２が新たに選択された場合、新アプリＡＰ１２のための暗号通信路を支障なく開設することができるようになる。
【０３６２】
＜６−４．  第２の実施形態による各参照テーブルの変遷＞
ここでは、図２８のダイアグラムに示す正常処理手順および図２９のダイアグラムに示す欠陥処理手順におけるＯＳ用参照テーブルＴ（ＯＳ）とＳＤ用参照テーブルＴ（ＳＳＤ１）の変遷を示す。
【０３６３】
図３０〜図３４は、図２８のダイアグラムに示す正常処理手順の各時点ｔ２０〜ｔ２４におけるＯＳ用参照テーブルＴ（ＯＳ）とＳＤ用参照テーブルＴ（ＳＳＤ１）の状態を示す図である。
【０３６４】
まず、時点ｔ２０では、図３０に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）は、チャネル番号＃０のみが「開」状態となっており、論理チャネル＃０に管理プログラムＳＳＤ１が割り当てられている。一方、ＳＤ用参照テーブルＴ（ＳＳＤ１）は、未開設状態を示しており、アプリ名，チャネル番号，セッションキーの各欄は、いずれも「無」になっている。なお、図には、従来のＳＤ用参照テーブルＴ（ＳＳＤ１）との対比のため、「開設状態」の欄が示されているが、図２７の下段右の図に×印を付して示すとおり、第２の実施形態の場合、ＳＤ用参照テーブルＴ（ＳＳＤ１）には、この「開設状態」の欄は設けられていない（図では、この欄には斜線を施した）。
【０３６５】
次の時点ｔ２１では、図３１に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号＃１が「開」状態に変更され、新たにアプリＡＰ１１が論理チャネル＃１に割り当てられている。ここでも、説明の便宜上、各時点の参照テーブルの個々の欄のうち、当該時点の直前のプロセスで変更が生じた欄を太線枠で示す。図３１に示すＯＳ用参照テーブルＴ（ＯＳ）の場合、チャネル番号＃１についての開閉状態が「開」に変更され、アプリ名が「ＡＰ１１」に変更されている。これは、図２８のダイアグラムにおける時点ｔ２１の直前のプロセスＰ２１において、アプリケーション選択コマンド「SELECT(#1), AP11」に基づいて、チャネル番号＃１を「開」状態として、アプリＡＰ１１を割り当てる処理が行われ、ＯＳプログラムによってＯＳ用参照テーブルＴ（ＯＳ）に対する書き換えが行われたためである。この時点ｔ２１では、ＳＤ用参照テーブルＴ（ＳＳＤ１）の内容に変更は生じていない。
【０３６６】
続く時点ｔ２２では、図３２に示すとおり、各参照テーブルの内容の一部に変更が加えられている。まず、ＯＳ用参照テーブルＴ（ＯＳ）については、第２行目の開設状態の欄が、「未開設」から「開設済」に書き換えられている。これは、図２８のダイアグラムにおける時点ｔ２２の直前のプロセスＰ２２において、アプリＡＰ１１から管理プログラムＳＳＤ１に対して暗号通信路開設依頼があり、当該依頼に応じて、管理プログラムＳＳＤ１がアプリＡＰ１１のために暗号通信路を開設したためである。その結果、ＳＤ用参照テーブルＴ（ＳＳＤ１）も全面的に書き換えられている。
【０３６７】
図２８のダイアグラムにおけるプロセスＰ２２では、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」に基づいて、アプリＡＰ１１から管理プログラムＳＳＤ１に対する暗号通信路開設依頼がなされる。この時点では、ＳＤ用参照テーブルＴ（ＳＳＤ１）の状態は、図３１に示す状態（時点ｔ２１の状態）になっているので、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない。したがって、管理プログラムＳＳＤ１は、ＯＳプログラムへの問い合わせを行うことなく、新たな暗号通信路の開設を行う旨を決定し、アプリＡＰ１１のための暗号通信路の開設が行われる。
【０３６８】
その結果、セッションキー「xxxxxx」が発生され、図３２のＳＤ用参照テーブルＴ（ＳＳＤ１）に示すように、アプリ名「ＡＰ１１」，チャネル番号「＃１」，セッションキー「xxxxxx」が書き込まれる。一方、ＯＳプログラムには、管理プログラムＳＳＤ１から、「論理チャネル＃１を用いて暗号通信路を開設した旨」の報告がなされるので、図３２のＯＳ用参照テーブルＴ（ＯＳ）に示すように、論理チャネル＃１の行の開設状態の欄が「開設済」に書き換えられる。図３２に示す時点ｔ２２の状態におけるＯＳ用参照テーブルＴ（ＯＳ）およびＳＤ用参照テーブルＴ（ＳＳＤ１）は、このような書き込み処理が行われた後の状態ということになる。
【０３６９】
次の時点ｔ２３では、図３３に示すとおり、ＯＳ用参照テーブルＴ（ＯＳ）のチャネル番号＃１に対応するアプリ名の欄が「ＡＰ１１」から「ＡＰ１２」に変更され、その右側の開設状態の欄は初期化され「未開設」に変更されている。これは、図２８のダイアグラムにおける時点ｔ２３の直前のプロセスＰ２３において、アプリケーション選択コマンド「SELECT(#1), AP12」に基づいて、チャネル番号＃１に割り当てられていた旧アプリＡＰ１１の選択を解除し、新たに新アプリＡＰ１２をチャネル番号＃１に割り当てる処理が行われ、ＯＳプログラムによる書き換えが行われたためである。
【０３７０】
一方、ＳＤ用参照テーブルＴ（ＳＳＤ１）については、図に太線枠で示すとおり、各欄の情報が消去され、「無」になっている。これは、図２８のダイアグラムにおけるプロセスＰ２３において、解除通知を受けたアプリＡＰ１１から管理プログラムＳＳＤ１に対して、選択が解除された旨を報告する「報告処理」（一点鎖線の右向き矢印）が実行され、この報告を受けた管理プログラムＳＳＤ１が、これまで開設していた旧アプリＡＰ１１についての暗号通信路に関する情報をすべて消去したためである。
【０３７１】
最後の時点ｔ２４では、図３４に示すとおり、各参照テーブルの内容の一部に変更が加えられている。まず、ＯＳ用参照テーブルＴ（ＯＳ）については、第２行目の開設状態の欄が、「未開設」から「開設済」に書き換えられている。これは、図２８のダイアグラムにおける時点ｔ２４の直前のプロセスＰ２４において、アプリＡＰ１１から管理プログラムＳＳＤ１に対して暗号通信路開設依頼があり、当該依頼に応じて、管理プログラムＳＳＤ１がアプリＡＰ１２のために暗号通信路を開設したためである。その結果、ＳＤ用参照テーブルＴ（ＳＳＤ１）も全面的に書き換えられている。
【０３７２】
図２８のダイアグラムにおけるプロセスＰ２４では、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」に基づいて、アプリＡＰ１２から管理プログラムＳＳＤ１に対する暗号通信路開設依頼がなされる。この時点では、ＳＤ用参照テーブルＴ（ＳＳＤ１）の状態は、図３３に示す状態（時点ｔ２３の状態）になっているので、開設対象アプリ情報として何ら開設対象アプリケーションプログラムが示されていない。したがって、管理プログラムＳＳＤ１は、ＯＳプログラムへの問い合わせを行うことなく、新たな暗号通信路の開設を行う旨を決定し、アプリＡＰ１２のための暗号通信路の開設が行われる。
【０３７３】
その結果、セッションキー「yyyyyy」が発生され、図３４のＳＤ用参照テーブルＴ（ＳＳＤ１）に示すように、アプリ名「ＡＰ１２」，チャネル番号「＃１」，セッションキー「yyyyyy」が書き込まれる。一方、ＯＳプログラムには、管理プログラムＳＳＤ１から、「論理チャネル＃１を用いて暗号通信路を開設した旨」の報告がなされるので、図３４のＯＳ用参照テーブルＴ（ＯＳ）に示すように、論理チャネル＃１の行の開設状態の欄が「開設済」に書き換えられる。図３４に示す時点ｔ２４の状態におけるＯＳ用参照テーブルＴ（ＯＳ）およびＳＤ用参照テーブルＴ（ＳＳＤ１）は、このような書き込み処理が行われた後の状態ということになる。
【０３７４】
以上、図２８のダイアグラムに示す正常処理手順における時点ｔ２０〜ｔ２４に至るまでの各参照テーブルの変遷を、図３０〜図３４を参照しながら説明した。続いて、図２９のダイアグラムに示す欠陥処理手順における時点ｔ２０〜ｔ２４′に至るまでの各参照テーブルの変遷を説明する。
【０３７５】
前述したとおり、図２９のダイアグラムに示す前半のプロセスＰ２１，Ｐ２２は、図２８のダイアグラムに示す前半のプロセスＰ２１，Ｐ２２と全く同じである。したがって、図２９のダイアグラムに示す欠陥処理手順における時点ｔ２０，ｔ２１，ｔ２２における各参照テーブルの状態は、それぞれ図３０，図３１，図３２に示すとおりになる。これに対して、後半のプロセスは若干異なる。
【０３７６】
まず、図２９のダイアグラムに示す後半のプロセスＰ２３′では、解除通知を受けたアプリＡＰ１１から管理プログラムＳＳＤ１に対して、選択が解除された旨の「報告処理」（一点鎖線の右向き矢印）が実行されない。このため、管理プログラムＳＳＤ１は、これまで開設していた暗号通信路が終了したことを認識できないので、ＳＤ用参照テーブルＴ（ＳＳＤ１）に記録されていた旧アプリＡＰ１１についての暗号通信路に関する情報は消去されず、そのまま残ることになる。したがって、プロセスＰ２３′が完了した時点ｔ２３′における各参照テーブルの状態は、図３３に示す時点ｔ２３の状態ではなく、図３５に示す時点ｔ２３′の状態になる。
【０３７７】
すなわち、ＯＳ用参照テーブルＴ（ＯＳ）については、チャネル番号＃１に割り当てられたプログラムが「ＡＰ１１」から「ＡＰ１２」に変更された状態になっているが、ＳＤ用参照テーブルＴ（ＳＳＤ１）については、時点ｔ２２の状態がそのまま維持され、アプリ名「ＡＰ１１」，チャネル番号「＃１」，セッションキー「xxxxxx」が残った状態になる。このように、旧アプリＡＰ１１についての暗号通信が既に終了しているにもかかわらず、その暗号通信路に関する情報が残っていることは、漏洩の危険性の見地から、決して好ましいことではないが、新アプリＡＰ１２のための暗号通信路を開設する処理には支障は生じない。
【０３７８】
すなわち、図２９のダイアグラムに示す後半のプロセスＰ２４′では、アプリＡＰ１２から管理プログラムＳＳＤ１に対して暗号通信路開設依頼があり、この開設依頼を受けた管理プログラムＳＳＤ１は、ＳＤ用参照テーブルＴ（ＳＳＤ１）に開設対象アプリ情報としてアプリＡＰ１１が示されているため、その時点での開設状態をＯＳプログラムに問い合わせることになる。この時点で、ＯＳ用参照テーブルＴ（ＯＳ）の状態は、図３５に示す状態であり、問い合わせに係る開設対象アプリＡＰ１１についての暗号通信路は開設済ではないので、ＯＳプログラムは「未開設」なる回答を返すことになる。その結果、管理プログラムＳＳＤ１は、新アプリＡＰ１２のための新たな暗号通信路を支障なく開設することができる。
【０３７９】
このように、本発明の第２の実施形態によれば、アプリＡＰ１１が、選択が解除された旨を報告する正常なプログラムであっても、報告を怠る欠陥プログラムであっても、新たなアプリＡＰ１２のための新たな暗号通信路を支障なく開設することができる。この第２の実施形態は、§５で述べた第１の実施形態に比べると、ＳＤ用参照テーブルＴ（ＳＤ）のためのメモリ使用量は増加する。すなわち、第１の実施形態では、セッションキーの記録欄のみ確保すればよいが、第２の実施形態では、更に、アプリ名とチャネル番号の記録欄を確保する必要がある。しかしながら、図２８および図２９のダイアグラムのプロセスＰ２２，Ｐ２４において、ＯＳプログラムへの問い合わせを省略することができるメリットが得られる。
【０３８０】
＜＜＜  §７．  いくつかの変形例  ＞＞＞
最後に、§５で述べた第１の実施形態および§６で述べた第２の実施形態に共通するいくつかの変形例を述べておく。
【０３８１】
＜７−１．  暗号通信路の開設状態のバリエーション＞
これまで述べてきた実施形態では、各参照テーブルに記録する暗号通信路の開設状態として、「未開設」／「開設済」の２通りの状態を定義しているが、必要に応じて、より多数の状態を定義してもかまわない。
【０３８２】
たとえば、Java Card（商標）やGlobalPlatform （登録商標）などの仕様では暗号通信路の開設状態として、図３６に示すような４つの状態Ａ〜Ｄが定義されている。ここで、「状態Ａ：未開設」は、暗号通信路の開設やその準備が全くなされていない状態を示し、「状態Ｂ：開設中」は、暗号通信路の開設の準備を行っている状態を示し、「状態Ｃ：開設済」は、暗号通信路の開設準備が整い、暗号通信を提供できる状態を示し、「状態Ｄ：エラー発生」は、暗号通信路の開設後にエラーが発生した状態を示している。
【０３８３】
たとえば、図１９，図２０，図２８，図２９に示すダイアグラムでは、暗号通信路を開設するプロセスとして、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」についての処理のみを説明したが、Java Card（商標）やGlobalPlatform （登録商標）などの仕様では、その後に外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」についての処理が必要であり、相互認証が完了して、はじめて暗号通信路の開設が行われる。すなわち、管理プログラムＳＤは、外部装置２００から与えられる暗号通信路開設コマンドに基づいて暗号通信路を開設する際に、当該外部装置２００に対する認証処理を行い、この認証処理により当該外部装置２００が正規の装置と認証されることを条件として、当該外部装置２００との間に暗号通信路を開設することになる。
【０３８４】
このため、上記仕様では、図３６に示す４つの状態Ａ〜Ｄが定義されており、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」の処理開始から外部認証コマンド「EXTERNAL AUTHENTICATE (#1)」の処理終了までの期間は「状態Ｂ：開設中」とし、相互認証が完了してから「状態Ｃ：開設済」になる。
【０３８５】
そこで、本発明に用いる各参照テーブルに、上記４つの状態Ａ〜Ｄを記録する運用を採用する場合には、たとえば、「状態Ａ：未開設」および「状態Ｂ：開設中」を、これまで述べてきた実施形態における「未開設」の状態として取り扱い、「状態Ｃ：開設済」を、これまで述べてきた実施形態における「開設済」の状態として取り扱うようにすればよい。なお、「状態Ｄ：エラー発生」が生じた場合は、状態としては「開設済」ということになるが、外部装置２００に対してはエラーの応答（レスポンス）が返されることになるので、これまで述べてきた本発明の処理に具体的な変更は生じない。
【０３８６】
＜７−２．  複数の暗号通信路を同時開設できる装置＞
これまで述べた実施形態は、１つの管理プログラムＳＤについて、同時に開設可能な暗号通信路の数が１つに制限されている例である。したがって、各管理プログラムＳＤは、暗号通信路を開設済の場合は、新たな暗号通信路の開設を行うことができない。Java Card（商標）やGlobalPlatform （登録商標）などに準拠したＵＩＭ向けのＩＣカードの仕様では、セキュリティ確保の観点から、１つの管理プログラムＳＤが開設可能な暗号通信路の数を１つだけに制限するのが一般的である。
【０３８７】
しかしながら、用途によっては、同時に開設可能な暗号通信路の数の制限を２以上に設定するケースもある。もちろん、このようなケースにも本発明を適用することが可能である。要するに、本発明は、管理プログラムに、同時に開設可能な暗号通信路の数の上限値Ｎ（但し、２≦Ｎ≦論理チャネルの総数）が設定されている場合にも、広く適用可能である。
【０３８８】
なお、§５で述べた第１の実施形態を、同時に開設可能な暗号通信路の数の上限値Ｎが設定されている場合に拡張する場合は、処理手順に若干の変更を加える必要がある。まず、個々の管理プログラムのＳＤ用参照テーブルには、最大で複数Ｎ組のセッションキーを記録できるようにしておく。そして、ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、当該管理プログラムが暗号通信路を開設済か否かを回答するだけでなく、当該管理プログラムが開設済の暗号通信路の総数ｎを回答するようにする。一方、管理プログラムは、回答として得られた総数ｎが上限値Ｎ未満である場合には、新たな暗号通信路の開設を行い、総数ｎが上限値Ｎに達している場合には、新たな暗号通信路の開設を行わない、という判断を行えばよい。
【０３８９】
たとえば、上限値Ｎ＝３に設定されている場合、回答された総数ｎが２以下であれば、新たな暗号通信路（第３番目の暗号通信路）の開設が行われるが、総数ｎが３に達していると、もはや新たな暗号通信路の開設は行われないことになる。
【０３９０】
一方、§６で述べた第２の実施形態を、同時に開設可能な暗号通信路の数の上限値Ｎが設定されている場合に拡張する場合も、処理手順に若干の変更を加える必要がある。まず、個々の管理プログラムのＳＤ用参照テーブルには、最大で複数Ｎ組の開設対象アプリ情報およびセッションキーを記録できるようにしておく。そして、管理プログラムは、ＯＳプログラムに対して問い合わせを行う際に、ＳＤ用参照テーブルに開設対象アプリ情報として記録されているアプリ名とチャネル番号との組み合わせのそれぞれに関して暗号通信路が開設済か否かを問い合わせる。
【０３９１】
ＯＳプログラムは、管理プログラムからの問い合わせがあったときに、各組み合わせのそれぞれについて、開設済か否かを回答する。そして、管理プログラムは、ＯＳプログラムから、開設済との回答が得られた組み合わせの総数ｎが、上限値Ｎ未満である場合には、新たな暗号通信路の開設を行い、総数ｎが上限値Ｎに達している場合には、新たな暗号通信路の開設を行わない、という判断を行えばよい。
【０３９２】
＜７−３．  複数のインターフェイスを備えた装置＞
最近のＩＣカードは、従来の接触型通信インターフェイスに加えて、ＮＦＣ（Near Field Communication）と呼ばれる近接距離通信用のインターフェイスを備えてきており、外部装置との間で暗号通信を行う複数のインターフェイスを備えた情報処理装置も一般化しつつある。
【０３９３】
図３７は、外部通信インターフェイスを２組備える情報処理装置１００′と外部装置２００′との通信状態を示すブロック図である。図示のとおり、この情報処理装置１００′は、第１のインターフェイスＩＦ１と第２のインターフェイスＩＦ２を備えたＳＩＭカード１１であり、外部装置２００′としてのスマートフォン１０または外部サーバ２０との間で、２つの通信路を介して通信することができる。すなわち、第１のインターフェイスＩＦ１は、第１の通信路を介した通信を行い、第２のインターフェイスＩＦ２は、第２の通信路を介した通信を行うことになる。
【０３９４】
このように外部通信インターフェイスを２組備えるデュアルＩ／Ｆ型の情報処理装置１００′に本発明を適用する場合、ＯＳ用情報格納部１２１′には、ＯＳ用参照テーブルを、個々のインターフェイスごとにそれぞれ別個に設けるようにするのが好ましい。図３８は、図３７に示す情報処理装置１００′内のＯＳ用情報格納部１２１′に用意されるインターフェイスごとのＯＳ用参照テーブルを示す図である。図の左には、第１のインターフェイスＩＦ１用のＯＳ用参照テーブルの例が示されており、図の右には、第２のインターフェイスＩＦ２用のＯＳ用参照テーブルの例が示されている。図示の例は、第１の実施形態を適用した例であるが、第２の実施形態を適用した場合も同様に個々のインターフェイスごとにＯＳ用参照テーブルが用意される。
【０３９５】
図示のとおり、いずれのＯＳ用参照テーブルにも、それぞれ独立してチャネル番号＃０〜＃３が定義されており、各インターフェイスのそれぞれについて、４つの論理チャネルを開くことが可能である。当然、各インターフェイスのそれぞれについて、別個独立した暗号通信路が開設されるため、暗号通信路の開設状態も各インターフェイスのそれぞれについて別個独立して記録されることになる。なお、ＳＤ用参照テーブルについては、これまで述べてきた実施形態と同様に、個々の管理プログラムごとに設けておけば足りる。
【０３９６】
要するに、外部装置との間で暗号通信を行う複数のインターフェイスを備えた情報処理装置の場合、個々のインターフェイスごとにそれぞれ別個のＯＳ用参照テーブルを設けるようにし、ＯＳプログラムがＯＳ用参照テーブルに対する記録もしくは参照を行うときには、暗号通信路の開設が行われるインターフェイスに対応するＯＳ用参照テーブルを選択するようにすればよい。たとえば、図示のようなデュアルＩ／Ｆ型の情報処理装置１００′の場合、ＯＳプログラムは、ＯＳ用参照テーブルに対する記録もしくは参照を行うときに、暗号通信路の開設対象となるインターフェイスがＩＦ１・ＩＦ２のいずれであるかを認識した上で、対応するいずれか一方のＯＳ用参照テーブルを選択すればよい。
【０３９７】
一般に、複数のインターフェイスを備えた情報処理装置には、装置全体に対する全体リセット（コールドリセット）の機能と、個々のインターフェイスに対する個別リセット（ウォームリセット）の機能とが備わっている。前者の全体リセットは、通常、装置に対する電源をＯＮにした際に行われるリセットであり、装置全体が初期状態から起動することになるので、本願の各実施形態で用いられるＯＳ用参照テーブルやＳＤ用参照テーブルは初期化される。これに対して後者の個別リセットは、通常、個々のインターフェイスに備わっているリセット端子にリセット信号を与えるか、もしくは、Ｉ／Ｏ端子に特有のリセットビットパターンを与えることにより実行される。
【０３９８】
図３９は、図３７に示す情報処理装置１００′の各インターフェイスのリセットに関する特徴を示す表である。この例では、第１のインターフェイスＩＦ１は、接触型の「７８１６」という規格に基づくものであり、個別リセットの方法としては、リセット端子にリセット信号を与える方法が採用されている。一方、第２のインターフェイスＩＦ２は、接触型の「ＳＷＰ」という規格に基づくものであり、個別リセットの方法としては、Ｉ／Ｏ端子に特有のリセットビットパターンを与える方法が採用されている。
【０３９９】
このようなデュアルＩ／Ｆ型の情報処理装置１００′の場合、図３９の表の「情報の初期化」の欄に記載したとおり、通常、第１のインターフェイスＩＦ１についての個別リセットが行われた際には、第１のインターフェイスの情報のみが初期化されるような運用がとられ、第２のインターフェイスＩＦ２についての個別リセットが行われた際には、第２のインターフェイスの情報のみが初期化されるような運用がとられる。これは、一方のインターフェイスのみを個別リセットする際に、他方のインターフェイスが外部装置と通信中の場合もあるためである。
【０４００】
このような点を考慮すると、複数のインターフェイスを備え、各インターフェイスに対して、それぞれ個別にリセットを行う機能を有する情報処理装置に本発明を適用して、図３８に示すように、個々のインターフェイスごとにそれぞれ別個のＯＳ用参照テーブルを用意した場合は、特定のインターフェイスに対する個別リセットが行われたときに、ＯＳプログラムは、当該個別リセットの対象となった特定のインターフェイスに対応するＯＳ用参照テーブルを初期化（クリア）するようにすればよい。
【０４０１】
たとえば、図３８に示す例において、第１のインターフェイスＩＦ１に対する個別リセットが行われた場合には、図の左に示す第１のインターフェイスＩＦ１についてのＯＳ用参照テーブルのみを初期化し（すべてのチャネル番号に対応する開閉状態の欄を「閉」にし、アプリ名の欄を「無」にし、開設状態の欄を「未開設」にする）、図の右に示す第２のインターフェイスＩＦ２についてのＯＳ用参照テーブルはそのままの状態に残すようにする。逆に、第２のインターフェイスＩＦ２に対する個別リセットが行われた場合には、図の右に示す第２のインターフェイスＩＦ２についてのＯＳ用参照テーブルのみを初期化し、図の左に示す第１のインターフェイスＩＦ１についてのＯＳ用参照テーブルはそのままの状態に残すようにする。
【０４０２】
なお、このような個別リセットが行われた場合、各管理プログラムについてのＳＤ用参照テーブルは、直接的には初期化されるわけではないが、ＯＳプログラムは、ＯＳ用参照テーブルの初期化時に、論理チャネルに対応づけられていたアプリケーションプログラムに対する「Deselect」処理を実行することになるので、仕様を遵守した正常なアプリケーションプログラムからは、管理プログラムＳＤに対して選択が解除された旨の報告がなされるため、当該報告に基づいて、ＳＤ用参照テーブルに対する消去処理が行われることになる。
【０４０３】
＜７−４．  同一のアプリケーションプログラムについての再開設＞
これまで述べてきた種々の実施例では、特定のチャネルについて、第１のアプリケーションプログラムから第２のアプリケーションプログラムへの切り換えを行う場合を例にとって、暗号通信路の開設処理のプロセスを説明した。たとえば、図１９のダイアグラムに示す手順は、チャネル番号「＃１」に第１のアプリケーションプログラム「ＡＰ１１」を割り当てて暗号通信路を開設して（プロセスＰ１１，Ｐ１２）、暗号通信を行った後に、今度は、同じチャネル番号「＃１」に第２のアプリケーションプログラム「ＡＰ１２」を割り当てて暗号通信路を開設して（プロセスＰ１３，Ｐ１４）、暗号通信を行う手順である。
【０４０４】
しかしながら、実用上は、同一のアプリケーションプログラムについて、暗号通信路の開設を終了した直後に再開設するようなケースがあり、そのような再開設を行うケースでは、これまで述べた実施例とは異なる例外的な取り扱いを行うのが好ましい。たとえば、図１９のダイアグラムの場合、プロセスＰ１２が完了した後に、アプリケーションプログラムＡＰ１１は、外部装置２００との間で暗号通信（図１９では図示省略）を行うことになる。このとき、何らかの要因で暗号通信に失敗し、「エラー発生」の状態に陥ったとすると、外部装置２００は、再度、暗号通信路の開設を行うために、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」を与える処理を行うことになる（「ＡＰ１１」は選択済みなので、アプリケーション選択コマンドによる再選択は行われない）。
【０４０５】
この場合、図１９のプロセスＰ１２が再度実行されることになるが、管理プログラムＳＳＤ１がＯＳプログラムに問い合わせを行うと、「ＳＳＤ１は開設済」との回答が得られることになるので、これまで述べた手順では、暗号通信路の開設は拒絶されてしまうことになる。そこで、暗号通信路開設コマンドが与えられた場合に、当該コマンドのチャネル（暗号通信路を開設しようとしているチャネル）と同一のチャネルについて「開設済」となっていた場合には、再度の開設が実行されるような例外的な取り扱いを行うようにするのが好ましい。上例の場合、暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられた場合、同一のチャネル＃１について既に「ＳＳＤ１が開設済」になっていても、再度の開設が実行されることになる。
【０４０６】
この例外処理を、図３８の左のＯＳ用参照テーブルに示す具体例で説明すると、次のようになる。まず、図示の状態において、チャネル＃０についての暗号通信路開設コマンド「INITIALIZE UPDATE (#0)」が与えられると、管理プログラムＳＳＤ１がＯＳプログラムに問い合わせを行い、「ＳＳＤ１開設済」との回答が得られることになる。この場合、与えられた暗号通信路開設コマンドのチャネル番号「＃０」と「ＳＳＤ１開設済」となっているチャネル番号「＃１」は同一ではないので、暗号通信路の開設は拒絶される。
【０４０７】
これに対して、同じく図３８の左に示す状態において、チャネル＃１についての暗号通信路開設コマンド「INITIALIZE UPDATE (#1)」が与えられると、やはり「ＳＳＤ１開設済」との回答が得られることになるが、与えられた暗号通信路開設コマンドのチャネル番号「＃１」と「ＳＳＤ１開設済」となっているチャネル番号「＃１」が同一なので、暗号通信路の開設（再開設）が実行されることになる。
【符号の説明】
【０４０８】
１０：スマートフォン
１１：ＳＩＭカード
２０：外部サーバ
１００，１００′：情報処理装置
１１０：プログラム格納部
１２０：データ格納部
１２１，１２１′：ＯＳ用情報格納部
１２２：ＳＤ用情報格納部
１２３：ＡＰ用情報格納部
１３０：プログラム実行部
２００，２００′：外部装置
Ａ：種別情報
ＡＰ０１〜ＡＰ３２：一般アプリケーションプログラム
ＩＦ１，ＩＦ２：外部通信用のインターフェイス
ＩＳＤ：最上位の管理プログラム
Ｋｅｙ，ＫｅｙＡ〜ＫｅｙＲ：暗号鍵
Ｌ：鍵長
ＯＳ：ＯＳプログラム
Ｐ１〜Ｐ２４′：プロセス
Ｒ１，Ｒ２：暗号通信路開設ルーチン
ＳＤ，ＳＳＤ１〜ＳＳＤ３：管理プログラム
Ｓ１〜Ｓ６：ダイアグラムの各ステップ
Ｓ１１〜Ｓ１４：流れ図の各ステップ
Ｔ，Ｔ１，Ｔ２：鍵テーブル
Ｔ（ＯＳ）：ＯＳ用参照テーブル
Ｔ（ＩＳＤ）：管理プログラムＩＳＤのＳＤ用参照テーブル
Ｔ（ＳＳＤ１）：管理プログラムＳＳＤ１のＳＤ用参照テーブル
Ｔ（ＳＳＤ１）：管理プログラムＳＳＤ２のＳＤ用参照テーブル
Ｔ（ＳＳＤ１）：管理プログラムＳＳＤ３のＳＤ用参照テーブル
ｔ０〜ｔ２４′：時点
Ｖ：鍵値データ
【図１】
2018011104.tif 000003
【図２】
2018011104.tif 000004
【図３】
2018011104.tif 000005
【図４】
2018011104.tif 000006
【図５】
2018011104.tif 000007
【図６】
2018011104.tif 000008
【図７】
2018011104.tif 000009
【図８】
2018011104.tif 000010
【図９】
2018011104.tif 000011
【図１０】
2018011104.tif 000012
【図１１】
2018011104.tif 000013
【図１２】
2018011104.tif 000014
【図１３】
2018011104.tif 000015
【図１４】
2018011104.tif 000016
【図１５】
2018011104.tif 000017
【図１６】
2018011104.tif 000018
【図１７】
2018011104.tif 000019
【図１８】
2018011104.tif 000020
【図１９】
2018011104.tif 000021
【図２０】
2018011104.tif 000022
【図２１】
2018011104.tif 000023
【図２２】
2018011104.tif 000024
【図２３】
2018011104.tif 000025
【図２４】
2018011104.tif 000026
【図２５】
2018011104.tif 000027
【図２６】
2018011104.tif 000028
【図２７】
2018011104.tif 000029
【図２８】
2018011104.tif 000030
【図２９】
2018011104.tif 000031
【図３０】
2018011104.tif 000032
【図３１】
2018011104.tif 000033
【図３２】
2018011104.tif 000034
【図３３】
2018011104.tif 000035
【図３４】
2018011104.tif 000036
【図３５】
2018011104.tif 000037
【図３６】
2018011104.tif 000038
【図３７】
2018011104.tif 000039
【図３８】
2018011104.tif 000040
【図３９】
2018011104.tif 000041