(57)【要約】【課題】暗号鍵を利用する様々な処理機能を有する情報処理装置において、必要最小限の暗号鍵のみが格納された状態を維持し、暗号鍵の格納場所の記憶容量を節約するとともに、セキュリティ上の問題を低減させる。【解決手段】各アプリケーションプログラムをインストールするときに、当該プログラムが実行可能な特定の機能と、当該特定の機能に利用する暗号鍵の格納場所を示すキーバージョン番号との対応関係を、機能テーブルＦとして記録しておく。外部装置から、特定の格納場所に対する新たな暗号鍵の書込を指示する鍵書込コマンドが与えられたとき、当該特定の格納場所を示すキーバージョン番号が機能テーブルＦに収録されていることを条件として、新たな暗号鍵の書込を実行する。機能変更処理により機能テーブルＦから特定の機能が削除されたときには、これに対応するキーバージョン番号に収録されている暗号鍵を削除する。【選択図】図１６
2018067795.tif 000002
【特許請求の範囲】
【請求項１】
暗号鍵を利用した様々な処理機能を有する情報処理装置であって、
プログラムおよび当該プログラムが利用するデータを格納する情報格納部と、
前記情報格納部に格納されているプログラムを実行するプログラム実行部と、
を備え、
外部装置から与えられるロードコマンドに応じて、それぞれ暗号鍵を利用する複数の処理機能を有するアプリケーションプログラムのパッケージをロードして、前記情報格納部に格納するプログラムロード処理と、
外部装置から与えられるインストールコマンドに応じて、前記プログラムロード処理によってロードされたパッケージを前記情報格納部に展開して、前記アプリケーションプログラムをインストールするインストール処理と、
外部装置から与えられる鍵書込コマンドに応じて、インストールされたアプリケーションプログラムが利用する暗号鍵を前記情報格納部に格納する鍵書込処理と、
を実行する機能を有し、
前記インストール処理を実行する際には、インストールされたアプリケーションプログラムについて、暗号鍵を利用する複数の処理機能のうち、前記インストールコマンドに含まれている機能指定情報によって指定された指定機能が実行可能となるようにし、
前記鍵書込処理を実行する際には、その前に、当該鍵書込処理によって格納される暗号鍵を利用する処理機能が実行可能な機能であるか否かを判定し、実行可能な機能であった場合には、前記鍵書込処理を実行し、実行可能な機能でなかった場合には、前記鍵書込処理を拒絶することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置において、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記アプリケーションプログラムが実行可能な機能を特定する情報を含む実行可能リストを作成し、これを情報格納部に格納し、鍵書込処理を実行する前に、前記実行可能リストを参照することにより、判定対象となる処理機能が実行可能な機能であるか否かを判断することを特徴とする情報処理装置。
【請求項３】
請求項１または２に記載の情報処理装置において、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記アプリケーションプログラムのために、情報格納部の論理的な鍵空間上に暗号鍵を格納するための鍵テーブルを構築し、
鍵書込処理を実行する際に、前記論理空間上に構築された鍵テーブルの所定箇所に対応するメモリ上の実空間上に、暗号鍵のデータを書き込むことを特徴とする情報処理装置。
【請求項４】
請求項３に記載の情報処理装置において、
暗号鍵を利用する特定の処理機能と前記暗号鍵を格納するための鍵テーブル上の格納場所とを対応づける対応情報が情報格納部に格納されており、
鍵書込コマンドが与えられたときに、前記対応情報を参照することにより、与えられた鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所に対応づけられている特定の処理機能を判定対象と認識し、当該判定対象が実行可能な機能であった場合には、前記鍵書込コマンドを実行し、実行可能な機能でなかった場合には、前記鍵書込コマンドを拒絶することを特徴とする情報処理装置。
【請求項５】
請求項４に記載の情報処理装置において、
鍵テーブルが、キーバージョン番号とキーＩＤとの組み合わせによって１つのセルを特定することができる二次元マトリックス状のセルの集合体からなり、
鍵書込コマンドが与えられたときに、当該鍵書込コマンドに書込場所指定情報として含まれているキーバージョン番号に基づいて、暗号鍵の格納場所を特定することを特徴とする情報処理装置。
【請求項６】
請求項１に記載の情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記格納場所一覧テーブルを参照することにより、前記アプリケーションプログラムが実行可能な機能と、当該機能に利用される暗号鍵の格納場所と、をそれぞれ対応づける機能テーブルを作成し、これを情報格納部に格納し、
鍵書込コマンドが与えられたときに、前記機能テーブルを参照することにより、与えられた鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所が、前記機能テーブルに含まれているか否かを判定し、含まれていた場合には、前記鍵書込コマンドを実行し、含まれていなかった場合には、前記鍵書込コマンドを拒絶することを特徴とする情報処理装置。
【請求項７】
請求項１に記載の情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記アプリケーションプログラムが実行可能な機能を列挙した機能テーブルを作成し、これを情報格納部に格納し、
鍵書込コマンドが与えられたときに、当該鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所が、前記機能テーブルに列挙されている実行可能な機能に対して前記格納場所一覧テーブルにおいて対応づけられている格納場所であるか否かを判定し、肯定的な判定結果が得られた場合には、前記鍵書込コマンドを実行し、否定的な判定結果が得られた場合には、前記鍵書込コマンドを拒絶することを特徴とする情報処理装置。
【請求項８】
請求項１に記載の情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記格納場所一覧テーブルを参照することにより、前記アプリケーションプログラムが実行可能な機能に利用される暗号鍵の格納場所を列挙した機能テーブルを作成し、これを情報格納部に格納し、
鍵書込コマンドが与えられたときに、前記機能テーブルを参照することにより、与えられた鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所が、前記機能テーブルに含まれているか否かを判定し、含まれていた場合には、前記鍵書込コマンドを実行し、含まれていなかった場合には、前記鍵書込コマンドを拒絶することを特徴とする情報処理装置。
【請求項９】
暗号鍵を利用した様々な処理機能を有する情報処理装置であって、
プログラムおよび当該プログラムが利用するデータを格納する情報格納部と、
前記情報格納部に格納されているプログラムを実行するプログラム実行部と、
を備え、
外部装置から与えられるロードコマンドに応じて、それぞれ暗号鍵を利用する複数の処理機能を有するアプリケーションプログラムのパッケージをロードして、前記情報格納部に格納するプログラムロード処理と、
外部装置から与えられるインストールコマンドに応じて、前記プログラムロード処理によってロードされたパッケージを前記情報格納部に展開して、前記アプリケーションプログラムをインストールするインストール処理と、
外部装置から与えられる鍵書込コマンドに応じて、インストールされたアプリケーションプログラムが利用する暗号鍵を前記情報格納部に格納する鍵書込処理と、
外部装置から与えられる実行可能機能変更処理コマンドに応じて、既にインストール済みのアプリケーションプログラムが実行可能な処理機能を変更する実行可能機能変更処理と、
を実行する機能を有し、
前記インストール処理を実行する際には、インストールされたアプリケーションプログラムについて、暗号鍵を利用する複数の処理機能のうち、前記インストールコマンドに含まれている機能指定情報によって指定された指定機能が実行可能となるようにし、
前記実行可能機能変更処理を実行したときに、当該変更処理によって実行可能から実行不能に変更された処理機能があった場合には、実行不能に変更された処理機能に利用される暗号鍵を、前記情報格納部から削除する鍵削除処理を併せて実行することを特徴とする情報処理装置。
【請求項１０】
請求項９に記載の情報処理装置において、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記アプリケーションプログラムが実行可能な機能を特定する情報を含む実行可能リストを作成し、これを情報格納部に格納し、
実行可能機能変更処理を実行する際には、前記実行可能リストに対する書き換えを行い、前記実行可能リストから削除されることになった処理機能に利用される暗号鍵を、情報格納部から削除する鍵削除処理を実行することを特徴とする情報処理装置。
【請求項１１】
請求項９または１０に記載の情報処理装置において、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記アプリケーションプログラムのために、情報格納部の論理的な鍵空間上に暗号鍵を格納するための鍵テーブルを構築し、
鍵書込処理を実行する際に、前記論理空間上に構築された鍵テーブルの所定箇所に対応するメモリ上の実空間上に暗号鍵のデータを書き込み、
鍵削除処理を実行する際に、前記実空間上に書き込まれていた暗号鍵のデータを削除し、メモリ上の実空間を開放する処理を行うことを特徴とする情報処理装置。
【請求項１２】
請求項１１に記載の情報処理装置において、
暗号鍵を利用する特定の処理機能と前記暗号鍵を格納するための鍵テーブル上の格納場所とを対応づける対応情報が情報格納部に格納されており、
実行可能機能変更処理を実行する際には、前記対応情報を参照して、実行可能から実行不能に変更された処理機能に対応づけられていた格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行することを特徴とする情報処理装置。
【請求項１３】
請求項１２に記載の情報処理装置において、
鍵テーブルが、キーバージョン番号とキーＩＤとの組み合わせによって１つのセルを特定することができる二次元マトリックス状のセルの集合体からなり、
キーバージョン番号に基づいて、書込対象もしくは削除対象となる暗号鍵の格納場所を特定することを特徴とする情報処理装置。
【請求項１４】
請求項９に記載の情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記格納場所一覧テーブルを参照することにより、前記アプリケーションプログラムが実行可能な機能と、当該機能に利用される暗号鍵の格納場所と、をそれぞれ対応づける機能テーブルを作成し、これを情報格納部に格納し、
実行可能機能変更処理を実行する際には、前記機能テーブルに対する書き換えを行い、前記機能テーブルから削除されることになった処理機能に対応づけられていた格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行することを特徴とする情報処理装置。
【請求項１５】
請求項９に記載の情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記アプリケーションプログラムが実行可能な機能を列挙した機能テーブルを作成し、これを情報格納部に格納し、
実行可能機能変更処理を実行する際には、前記機能テーブルに対する書き換えを行い、前記格納場所一覧テーブルを参照することにより、前記機能テーブルから削除されることになった処理機能に対応づけられていた格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行することを特徴とする情報処理装置。
【請求項１６】
請求項９に記載の情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、前記格納場所一覧テーブルを参照することにより、前記アプリケーションプログラムが実行可能な機能に利用される暗号鍵の格納場所を列挙した機能テーブルを作成し、これを情報格納部に格納し、
実行可能機能変更処理を実行する際には、前記格納場所一覧テーブルを参照することにより前記機能テーブルに対する書き換えを行い、前記機能テーブルから削除されることになった格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行することを特徴とする情報処理装置。
【請求項１７】
請求項１〜１６のいずれかに記載の情報処理装置において、
外部装置との間に所定の暗号化プロトコルを用いて暗号通信路を開設する処理機能を有するアプリケーションプログラムをインストールする機能を有し、鍵書込処理において、前記暗号通信路の開設に利用する暗号鍵の書き込みを行うことを特徴とする情報処理装置。
【請求項１８】
請求項１〜１６のいずれかに記載の情報処理装置において、
情報格納部には、アプリケーションプログラムとして、少なくとも１つの管理プログラムが格納されており、
前記管理プログラムは、新たなアプリケーションプログラムを自己の管理下におくために、当該新たなアプリケーションプログラムについてのプログラムロード処理と、インストール処理と、鍵書込処理と、を実行する機能を有することを特徴とする情報処理装置。
【請求項１９】
請求項１８に記載の情報処理装置において、
新たなアプリケーションプログラムについてのプログラムロード処理およびインストール処理が完了した後に、外部装置から鍵書込コマンドが与えられたとき、当該鍵書込コマンドに応じた鍵書込処理を前記新たなアプリケーションプログラムが実行することを特徴とする情報処理装置。
【請求項２０】
請求項１８または１９に記載の情報処理装置において、
管理プログラムが、GlobalPlatform （登録商標）の仕様で定められたインストールコマンドに付随する特権パラメータ「privilege」を機能指定情報と解釈して、指定機能のみが実行可能となるようなインストール処理を実行することを特徴とする情報処理装置。
【請求項２１】
請求項１８または１９に記載の情報処理装置において、
管理プログラムが、GlobalPlatform （登録商標）の仕様で定められたインストールコマンドに付随するＳＣＰ種別パラメータを機能指定情報と解釈して、指定されたＳＣＰ種別で示される暗号化プロトコルに応じた暗号通信路開設処理が実行可能となるようなインストール処理を実行することを特徴とする情報処理装置。
【請求項２２】
請求項１〜２１のいずれかに記載の情報処理装置としてコンピュータを機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、外部装置との間に暗号通信路を開設して暗号通信を行う機能や、暗号鍵を利用したその他の処理を行う機能を備えた情報処理装置に関する。
【背景技術】
【０００２】
情報処理装置が外部装置との間で情報のやりとりを行う場合、通信の安全性を確保するために、両者間にセキュアな暗号通信路を開設し、この暗号通信路を介して暗号通信を行うことが欠かせない。特に、スマートフォンやＩＣカードなどの携帯型の情報処理装置では、紛失によって悪意をもった者の手に渡る可能性があるため、十分なセキュリティ対策を講じておく必要がある。
【０００３】
最近は、スマートフォンをはじめとする携帯型端末装置が普及しており、これらの端末装置には、通常、ＳＩＭカードやＵＩＭカードと呼ばれているＩＣカードが装着されている。そしてこのＩＣカードと端末装置、あるいは、このＩＣカードと外部のサーバ装置との間で、所定の通信路を介して情報のやりとりが行われる。このとき、当該情報が機密性を有するものである場合には、セキュアな通信路を開設して暗号化された情報のやりとりを行う必要がある。
【０００４】
このような事情から、ＩＣカードと外部装置との間にセキュアな通信路を開設して暗号通信を行う様々な方法が提案されている。たとえば、下記の特許文献１には、所定の変換アルゴリズムに基づくデータ変換処理機能を有するプロキシ装置を介した通信を行うことにより、機密情報の漏洩を防止する技術が開示されている。また、特許文献２には、インターネットを介してＩＣカードとサーバ装置との間で情報のやりとりを行う際に、公開鍵暗号方式を利用した暗号化通信を行う技術が開示されており、特許文献３には、そのような暗号化通信の最中に、セキュリティに関わる異常発生が検知された場合に、速やかにシステム復旧処理を行う技術が開示されている。
【０００５】
一方、特許文献４には、サーバ装置側に、ＩＣカードと１対１に対応するＩＣカード対応領域を設け、このＩＣカード対応領域と利用者端末装置との間にセキュアな通信路を設定してサーバ装置とＩＣカードとを一体化する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−０５５９６１号公報
【特許文献２】特開２００２−２１７８９５号公報
【特許文献３】特開２００６−１９０２２２号公報
【特許文献４】特開２０１０−０７３１８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
情報処理装置と外部装置との間にセキュアな暗号通信路を開設するためには、両方の装置に、共通の暗号化プロトコルに基づいた暗号通信処理機能をもたせる必要がある。すなわち、送信側では所定の暗号鍵および所定の暗号化プロトコルを用いて、送信対象となる情報を暗号化して送り出し、受信側では、受信した暗号化情報を、送信側と同じ暗号鍵および暗号化プロトコルを用いて復号することになる。このため、情報処理装置および外部装置には、予め、特定の暗号鍵および暗号化プロトコルを用いた暗号通信処理機能が組み込まれることになる。
【０００８】
しかしながら、近年、情報処理装置の通信相手は多様化してきており、１つのＩＣカードが、種々の状況に応じて、複数の相手と通信するケースも少なくない。たとえば、スマートフォンに装着されたＩＣカード（ＳＩＭカードやＵＩＭカード）の場合、外部装置としてのスマートフォンには複数のアプリケーションプログラムが組み込まれているため、これら複数のアプリケーションプログラムとの間で情報のやりとりを行う必要が生じる。この場合、ハードウェア上は、ＩＣカードとスマートフォンとの間の二者通信ということになるが、ソフトウェア上は、ＩＣカード側のプログラムとスマートフォン側の個々のアプリケーションプログラムとの間の個別の通信が行われることになる。
【０００９】
また、最近は、より安全性の高い暗号化プロトコルが推奨されるようになってきており、実際に利用されている暗号化プロトコルの種類も多岐にわたっている。したがって、実用上は、１つのＩＣカードに、予め、複数通りの暗号化プロトコルに基づく暗号通信機能をもたせておき、当該ＩＣカードと通信を行う外部装置の都合に応じて（たとえば、スマートフォン内のアプリケーションプログラムの都合に応じて）、その都度、任意の暗号化プロトコルを選択して暗号通信を行うことができるようにするのが好ましい。そのためには、ＩＣカード内に予め複数通りの暗号鍵を格納しておき、特定の暗号化プロトコルが選択されたときに、当該プロトコルに必要な暗号鍵を適宜読み出して利用する運用が必要になる。
【００１０】
しかも、暗号鍵は、暗号通信路の開設に利用されるだけでなく、データの改竄をチェックする検証処理、トークンを用いた検証処理、暗号化されたプログラムの復号処理など、様々な処理にも利用される。したがって、実際には、暗号鍵を利用する様々な処理機能を有するアプリケーションプログラムが組み込まれたＩＣカードでは、これらの各処理機能のそれぞれに用いる多数の暗号鍵を格納しておく必要がある。そのため、一般的なＩＣカードには、複数の暗号鍵を収容可能な鍵テーブルが設けられており、この鍵テーブルの個々の格納場所に必要な暗号鍵を格納する運用が採られている。
【００１１】
ただ、スマートフォンやＩＣカードなどの携帯型の小型情報処理装置では、内蔵するメモリの記憶容量に制限があるため、複数の暗号鍵を収容する際にも、できるだけ無駄を省き、必要最小限の暗号鍵のみが格納された状態を保つことが重要である。別言すれば、そもそも利用されることのない無駄な暗号鍵が格納されていたり、アプリケーションプログラムの機能変更により、もはや不要になった暗号鍵がそのまま格納され続けたりする事態はできるだけ避けるのが好ましい。また、不要な暗号鍵が格納されていると、万一、外部に漏洩した場合に、セキュリティ上の問題がそれだけ増すことになる。すなわち、その情報処理装置にとっては不要な暗号鍵であったとしても、外部に漏洩した場合、外部装置を含めたシステム全体のセキュリティを脅かす要因になる。
【００１２】
そこで本発明は、暗号鍵を利用する様々な処理機能を有する情報処理装置において、必要最小限の暗号鍵のみが格納された状態を維持し、暗号鍵の格納場所の記憶容量を節約するとともに、セキュリティ上の問題を低減させることを目的とする。
【課題を解決するための手段】
【００１３】
(1)   本発明の第１の態様は、暗号鍵を利用した様々な処理機能を有する情報処理装置において、
プログラムおよび当該プログラムが利用するデータを格納する情報格納部と、
情報格納部に格納されているプログラムを実行するプログラム実行部と、
を設け、
外部装置から与えられるロードコマンドに応じて、それぞれ暗号鍵を利用する複数の処理機能を有するアプリケーションプログラムのパッケージをロードして、情報格納部に格納するプログラムロード処理と、
外部装置から与えられるインストールコマンドに応じて、プログラムロード処理によってロードされたパッケージを情報格納部に展開して、アプリケーションプログラムをインストールするインストール処理と、
外部装置から与えられる鍵書込コマンドに応じて、インストールされたアプリケーションプログラムが利用する暗号鍵を情報格納部に格納する鍵書込処理と、
を実行する機能をもたせ、
インストール処理を実行する際には、インストールされたアプリケーションプログラムについて、暗号鍵を利用する複数の処理機能のうち、インストールコマンドに含まれている機能指定情報によって指定された指定機能が実行可能となるようにし、
鍵書込処理を実行する際には、その前に、当該鍵書込処理によって格納される暗号鍵を利用する処理機能が実行可能な機能であるか否かを判定し、実行可能な機能であった場合には、鍵書込処理を実行し、実行可能な機能でなかった場合には、鍵書込処理を拒絶するようにしたものである。
【００１４】
(2)   本発明の第２の態様は、上述した第１の態様に係る情報処理装置において、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、当該アプリケーションプログラムが実行可能な機能を特定する情報を含む実行可能リストを作成し、これを情報格納部に格納し、鍵書込処理を実行する前に、実行可能リストを参照することにより、判定対象となる処理機能が実行可能な機能であるか否かを判断するようにしたものである。
【００１５】
(3)   本発明の第３の態様は、上述した第１または第２の態様に係る情報処理装置において、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、当該アプリケーションプログラムのために、情報格納部の論理的な鍵空間上に暗号鍵を格納するための鍵テーブルを構築し、
鍵書込処理を実行する際に、論理空間上に構築された鍵テーブルの所定箇所に対応するメモリ上の実空間上に、暗号鍵のデータを書き込むようにしたものである。
【００１６】
(4)   本発明の第４の態様は、上述した第３の態様に係る情報処理装置において、
暗号鍵を利用する特定の処理機能と暗号鍵を格納するための鍵テーブル上の格納場所とを対応づける対応情報を情報格納部に格納しておき、
鍵書込コマンドが与えられたときに、上記対応情報を参照することにより、与えられた鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所に対応づけられている特定の処理機能を判定対象と認識し、当該判定対象が実行可能な機能であった場合には、鍵書込コマンドを実行し、実行可能な機能でなかった場合には、鍵書込コマンドを拒絶するようにしたものである。
【００１７】
(5)   本発明の第５の態様は、上述した第４の態様に係る情報処理装置において、
鍵テーブルが、キーバージョン番号とキーＩＤとの組み合わせによって１つのセルを特定することができる二次元マトリックス状のセルの集合体からなり、
鍵書込コマンドが与えられたときに、当該鍵書込コマンドに書込場所指定情報として含まれているキーバージョン番号に基づいて、暗号鍵の格納場所を特定するようにしたものである。
【００１８】
(6)   本発明の第６の態様は、上述した第１の態様に係る情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、格納場所一覧テーブルを参照することにより、当該アプリケーションプログラムが実行可能な機能と、当該機能に利用される暗号鍵の格納場所と、をそれぞれ対応づける機能テーブルを作成し、これを情報格納部に格納し、
鍵書込コマンドが与えられたときに、機能テーブルを参照することにより、与えられた鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所が、機能テーブルに含まれているか否かを判定し、含まれていた場合には、鍵書込コマンドを実行し、含まれていなかった場合には、鍵書込コマンドを拒絶するようにしたものである。
【００１９】
(7)   本発明の第７の態様は、上述した第１の態様に係る情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、当該アプリケーションプログラムが実行可能な機能を列挙した機能テーブルを作成し、これを情報格納部に格納し、
鍵書込コマンドが与えられたときに、当該鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所が、機能テーブルに列挙されている実行可能な機能に対して格納場所一覧テーブルにおいて対応づけられている格納場所であるか否かを判定し、肯定的な判定結果が得られた場合には、鍵書込コマンドを実行し、否定的な判定結果が得られた場合には、鍵書込コマンドを拒絶するようにしたものである。
【００２０】
(8)   本発明の第８の態様は、上述した第１の態様に係る情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、格納場所一覧テーブルを参照することにより、当該アプリケーションプログラムが実行可能な機能に利用される暗号鍵の格納場所を列挙した機能テーブルを作成し、これを情報格納部に格納し、
鍵書込コマンドが与えられたときに、機能テーブルを参照することにより、与えられた鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所が、機能テーブルに含まれているか否かを判定し、含まれていた場合には、鍵書込コマンドを実行し、含まれていなかった場合には、鍵書込コマンドを拒絶するようにしたものである。
【００２１】
(9)   本発明の第９の態様は、暗号鍵を利用した様々な処理機能を有する情報処理装置において、
プログラムおよび当該プログラムが利用するデータを格納する情報格納部と、
情報格納部に格納されているプログラムを実行するプログラム実行部と、
を設け、
外部装置から与えられるロードコマンドに応じて、それぞれ暗号鍵を利用する複数の処理機能を有するアプリケーションプログラムのパッケージをロードして、情報格納部に格納するプログラムロード処理と、
外部装置から与えられるインストールコマンドに応じて、プログラムロード処理によってロードされたパッケージを情報格納部に展開して、アプリケーションプログラムをインストールするインストール処理と、
外部装置から与えられる鍵書込コマンドに応じて、インストールされたアプリケーションプログラムが利用する暗号鍵を情報格納部に格納する鍵書込処理と、
外部装置から与えられる実行可能機能変更処理コマンドに応じて、既にインストール済みのアプリケーションプログラムが実行可能な処理機能を変更する実行可能機能変更処理と、
を実行する機能をもたせ、
インストール処理を実行する際には、インストールされたアプリケーションプログラムについて、暗号鍵を利用する複数の処理機能のうち、インストールコマンドに含まれている機能指定情報によって指定された指定機能が実行可能となるようにし、
実行可能機能変更処理を実行したときに、当該変更処理によって実行可能から実行不能に変更された処理機能があった場合には、実行不能に変更された処理機能に利用される暗号鍵を、情報格納部から削除する鍵削除処理を併せて実行するようにしたものである。
【００２２】
(10)  本発明の第１０の態様は、上述した第９の態様に係る情報処理装置において、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、当該アプリケーションプログラムが実行可能な機能を特定する情報を含む実行可能リストを作成し、これを情報格納部に格納し、
実行可能機能変更処理を実行する際には、実行可能リストに対する書き換えを行い、実行可能リストから削除されることになった処理機能に利用される暗号鍵を、情報格納部から削除する鍵削除処理を実行するようにしたものである。
【００２３】
(11)  本発明の第１１の態様は、上述した第９または第１０の態様に係る情報処理装置において、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、当該アプリケーションプログラムのために、情報格納部の論理的な鍵空間上に暗号鍵を格納するための鍵テーブルを構築し、
鍵書込処理を実行する際に、論理空間上に構築された鍵テーブルの所定箇所に対応するメモリ上の実空間上に暗号鍵のデータを書き込み、
鍵削除処理を実行する際に、実空間上に書き込まれていた暗号鍵のデータを削除し、メモリ上の実空間を開放する処理を行うようにしたものである。
【００２４】
(12)  本発明の第１２の態様は、上述した第１１の態様に係る情報処理装置において、
暗号鍵を利用する特定の処理機能と暗号鍵を格納するための鍵テーブル上の格納場所とを対応づける対応情報を情報格納部に格納しておき、
実行可能機能変更処理を実行する際には、上記対応情報を参照して、実行可能から実行不能に変更された処理機能に対応づけられていた格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行するようにしたものである。
【００２５】
(13)  本発明の第１３の態様は、上述した第１２の態様に係る情報処理装置において、
鍵テーブルが、キーバージョン番号とキーＩＤとの組み合わせによって１つのセルを特定することができる二次元マトリックス状のセルの集合体からなり、
キーバージョン番号に基づいて、書込対象もしくは削除対象となる暗号鍵の格納場所を特定するようにしたものである。
【００２６】
(14)  本発明の第１４の態様は、上述した第９の態様に係る情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、格納場所一覧テーブルを参照することにより、当該アプリケーションプログラムが実行可能な機能と、当該機能に利用される暗号鍵の格納場所と、をそれぞれ対応づける機能テーブルを作成し、これを情報格納部に格納し、
実行可能機能変更処理を実行する際には、機能テーブルに対する書き換えを行い、機能テーブルから削除されることになった処理機能に対応づけられていた格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行するようにしたものである。
【００２７】
(15)  本発明の第１５の態様は、上述した第９の態様に係る情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、当該アプリケーションプログラムが実行可能な機能を列挙した機能テーブルを作成し、これを情報格納部に格納し、
実行可能機能変更処理を実行する際には、機能テーブルに対する書き換えを行い、格納場所一覧テーブルを参照することにより、機能テーブルから削除されることになった処理機能に対応づけられていた格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行するようにしたものである。
【００２８】
(16)  本発明の第１６の態様は、上述した第９の態様に係る情報処理装置において、
情報格納部には、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける格納場所一覧テーブルが格納されており、
特定のアプリケーションプログラムについてのインストール処理を実行する際に、格納場所一覧テーブルを参照することにより、当該アプリケーションプログラムが実行可能な機能に利用される暗号鍵の格納場所を列挙した機能テーブルを作成し、これを情報格納部に格納し、
実行可能機能変更処理を実行する際には、格納場所一覧テーブルを参照することにより機能テーブルに対する書き換えを行い、機能テーブルから削除されることになった格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行するようにしたものである。
【００２９】
(17)  本発明の第１７の態様は、上述した第１〜第１６の態様に係る情報処理装置において、
外部装置との間に所定の暗号化プロトコルを用いて暗号通信路を開設する処理機能を有するアプリケーションプログラムをインストールする機能をもたせ、鍵書込処理において、暗号通信路の開設に利用する暗号鍵の書き込みを行うようにしたものである。
【００３０】
(18)  本発明の第１８の態様は、上述した第１〜第１６の態様に係る情報処理装置において、
情報格納部には、アプリケーションプログラムとして、少なくとも１つの管理プログラムを格納するようにし、
当該管理プログラムには、新たなアプリケーションプログラムを自己の管理下におくために、当該新たなアプリケーションプログラムについてのプログラムロード処理と、インストール処理と、鍵書込処理と、を実行する機能をもたせるようにしたものである。
【００３１】
(19)  本発明の第１９の態様は、上述した第１８の態様に係る情報処理装置において、
新たなアプリケーションプログラムについてのプログラムロード処理およびインストール処理が完了した後に、外部装置から鍵書込コマンドが与えられたとき、当該鍵書込コマンドに応じた鍵書込処理を当該新たなアプリケーションプログラムが実行するようにしたものである。
【００３２】
(20)  本発明の第２０の態様は、上述した第１８または第１９の態様に係る情報処理装置において、
管理プログラムが、GlobalPlatform （登録商標）の仕様で定められたインストールコマンドに付随する特権パラメータ「privilege」を機能指定情報と解釈して、指定機能のみが実行可能となるようなインストール処理を実行するようにしたものである。
【００３３】
(21)  本発明の第２１の態様は、上述した第１８または第１９の態様に係る情報処理装置において、
管理プログラムが、GlobalPlatform （登録商標）の仕様で定められたインストールコマンドに付随するＳＣＰ種別パラメータを機能指定情報と解釈して、指定されたＳＣＰ種別で示される暗号化プロトコルに応じた暗号通信路開設処理が実行可能となるようなインストール処理を実行するようにしたものである。
【００３４】
(22)  本発明の第２２の態様は、上述した第１〜第２１の態様に係る情報処理装置としてコンピュータを機能させるプログラムを単独で提供できるようにしたものである。
【発明の効果】
【００３５】
本発明の第１の実施形態によれば、新たな暗号鍵の書込みを行う前に、書込対象となる暗号鍵を利用する処理機能が実行可能な機能であるか否かが判定され、実行可能な機能であった場合にのみ実際の書込みが行われる。このため、そもそも利用されることのない無駄な暗号鍵が書き込まれる事態を避けることができる。したがって、暗号鍵を利用する様々な処理機能を有する情報処理装置において、必要最小限の暗号鍵のみが格納された状態を維持し、暗号鍵の格納場所の記憶容量を節約するとともに、セキュリティ上の問題を低減させることが可能になる。
【００３６】
また、本発明の第２の実施形態によれば、これまでは実行可能な機能であったが、機能変更処理により実行不能に変更された処理機能が存在した場合に、当該実行不能に変更された処理機能に利用される暗号鍵を削除する鍵削除処理が実行される。このため、もはや不要になった暗号鍵がそのまま格納され続ける事態を避けることができる。したがって、暗号鍵を利用する様々な処理機能を有する情報処理装置において、必要最小限の暗号鍵のみが格納された状態を維持し、暗号鍵の格納場所の記憶容量を節約するとともに、セキュリティ上の問題を低減させることが可能になる。
【図面の簡単な説明】
【００３７】
【図１】一般的なスマートフォン１０，ＳＩＭカード１１，外部サーバ２０の間の情報通信の態様を示すブロック図である。
【図２】図１に示すＳＩＭカード１１（情報処理装置）と、スマートフォン１０または外部サーバ２０（外部装置）と、の間で暗号通信を行うためのプログラム構成の一例を示すブロック図である。
【図３】図２に示す鍵テーブルの具体例を示す図である。
【図４】図３に示す鍵テーブルに格納されている暗号鍵Ｋｅｙの一般的なデータ構造および当該暗号鍵を用いた暗号通信路開設コマンドのデータ構造の概要を示す図である。
【図５】図２に示すＳＩＭカード１１（情報処理装置）と、スマートフォン１０（外部装置）と、の間でやりとりされる種々のコマンドおよびこれに対する応答の具体例を示すダイアグラムである。
【図６】一般的な暗号通信路開設コマンドＣＭＤのデータ構造およびそのバリエーションを示す図である。
【図７】各暗号化プロトコルに用いられるコマンド文字列情報と暗号アルゴリズムの種別情報との対応関係を示す表である。
【図８】ＳＩＭカード１１（情報処理装置）内に構築されるアプリケーションプログラムの階層構造（図(a) ）と管理プログラムＳＤの機能（図(b) ）を示す図である。
【図９】工場出荷時の情報処理装置（ＳＩＭカード１１）と外部装置（スマートフォン１０または外部サーバ２０）との間の情報通信の態様の一例を示すブロック図である。
【図１０】利用開始時の情報処理装置（ＳＩＭカード１１）と外部装置（スマートフォン１０または外部サーバ２０）との間の情報通信の態様の一例を示すブロック図である。
【図１１】GlobalPlatform （登録商標）の仕様に準拠したＩＣカードに与える具体的なコマンドの書式例を示す図である。
【図１２】本発明に係る情報処理装置（ＳＩＭカード１１）の基本構成と、外部装置（スマートフォン１０または外部サーバ２０）との間の情報通信の態様を示すブロック図である。
【図１３】図１１(c) に示すアプリケーションプログラムのインストールコマンドに付随するパラメータの内容を示す図である。
【図１４】図１３に示す特権パラメータ（privilege）の具体的な内容を示す表である。
【図１５】本発明に係る情報処理装置に利用される格納場所一覧テーブルの具体例を示す図である。
【図１６】本発明に係る情報処理装置で用いられる機能テーブルの一例を示す図である。
【図１７】本発明に係る情報処理装置のデータ格納部に格納されるＩＳＤ用データおよびＳＳＤ１用データの構成例を示す図である。
【図１８】本発明に係る情報処理装置で用いられる機能テーブルの変形例を示す図である。
【図１９】本発明の第１の実施形態の処理手順を示す流れ図である。
【図２０】本発明の第２の実施形態の処理手順を示す流れ図である。
【発明を実施するための形態】
【００３８】
以下、本発明を図示する実施形態に基づいて説明する。
【００３９】
＜＜＜  §１．  ＩＣカードに対する従来の一般的な通信形態  ＞＞＞
本発明は、外部装置との間で暗号通信を行う機能を有する情報処理装置への利用に適した発明であり、特に、ＩＣカードからなる情報処理装置への利用に適した技術に関する。そこで、ここでは、まず、ＩＣカードに対する従来の一般的な通信形態を簡単に説明しておく。
【００４０】
図１は、一般的なスマートフォン１０，ＳＩＭカード１１，外部サーバ２０の間の情報通信の態様を示すブロック図である。通常、スマートフォン１０は、内部にＳＩＭカード１１を装着した状態で利用され、必要に応じて、外部サーバ２０と所定の通信路（インターネットや電話回線）を介して交信することになる。ここで、ＳＩＭカード１１（ＵＩＭカードとも呼ばれる）は、Java Card（商標）やGlobalPlatform （登録商標）など、事実上の標準となっている国際的な仕様に準拠したＩＣカードであり、外部装置との交信は、当該外部装置から与えられるコマンドと、これに対する応答（レスポンス）という形式で行われる。
【００４１】
ＳＩＭカード１１に着目すると、スマートフォン１０も外部サーバ２０も、いずれも外部装置ということになり、これら外部装置との間の交信は、所定の通信路を介して行われる。図１には、スマートフォン１０と外部サーバ２０との間の通信路しか示されていないが、実際には、ＳＩＭカード１１とスマートフォン１０との間やＳＩＭカード１１と外部サーバ２０との間にも通信路が形成される。そして、ＳＩＭカード１１に対して、これらの通信路を介してコマンドおよびレスポンスのやりとりが行われることになる。
【００４２】
図２は、図１に示すＳＩＭカード１１と、スマートフォン１０もしくは外部サーバ２０と、の間で暗号通信を行うためのプログラム構成の一例を示すブロック図であり、情報処理装置１００と外部装置２００との間に通信路を開設して相互に交信を行う例が示されている。上述したとおり、本発明は、ＩＣカードに適用するのに特に適した技術であるので、ここでは、情報処理装置１００がスマートフォン１０に装着されたＳＩＭカード１１であり、外部装置２００が当該スマートフォン１０（もしくは、外部サーバ２０でもよい）である場合について、以下の説明を行うことにする。
【００４３】
ＳＩＭカード１１をはじめとするＩＣカードには、通常、複数のアプリケーションプログラムが組み込まれる。図２の情報処理装置１００（ＳＩＭカード１１）には、２組の一般アプリケーションプログラムＡＰ１，ＡＰ２が組み込まれた状態が示されている。また、ＩＣカードには、通常、少なくとも１組の管理プログラムＳＤ（Security Domain プログラム）が組み込まれている。この管理プログラムＳＤは、分類上はアプリケーションプログラムの一種であるが、ＯＳプログラムと協働して、ＩＣカード全体の動作や、管理下にある他のアプリケーションプログラムを管理する役割を果たす。そこで、本願では、情報処理装置１００（ＳＩＭカード１１）に組み込まれるアプリケーションプログラムのうち、Security Domain プログラムを「管理プログラム」と呼び、それ以外のアプリケーションプログラムを「一般アプリケーションプログラム（略称：一般アプリ）」と呼ぶことにする。
【００４４】
後に詳述するように、管理プログラムＳＤには、管理下となるアプリケーションプログラムについてのロード機能、インストール機能、削除機能、発行データの書込機能（たとえば、暗号鍵の書込機能）、暗号通信路開設機能などの諸機能が備わっている。図２に示す管理プログラムＳＤには、暗号通信路開設ルーチンＲ１および鍵テーブルＴ１が組み込まれているが、これは暗号通信路開設機能を実現するための要素である。ＩＣカードからなる情報処理装置１００の場合、通常、「ＳＣＰ：Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、外部装置２００との間にセキュアな暗号通信路を開設して暗号通信が行われる。このような機能を実現するため、管理プログラムＳＤ内には、暗号通信路開設ルーチンＲ１と鍵テーブルＴ１とが組み込まれている。
【００４５】
一方、外部装置２００側にも、これに応じた暗号通信を行う機能をもったアプリケーションプログラムＡＰ３が用意されており、暗号通信路開設ルーチンＲ２と鍵テーブルＴ２とが組み込まれている。たとえば、外部装置２００がスマートフォン１０の場合、アプリケーションプログラムＡＰ３は、このスマートフォン１０にインストールされたアプリケーションプログラムの１つである。
【００４６】
情報処理装置１００側の暗号通信路開設ルーチンＲ１と、外部装置２００側の暗号通信路開設ルーチンＲ２は、両装置間にセキュアな暗号通信路を開設し、同一の暗号化プロトコルに基づいた暗号通信を行うためのルーチンであり、鍵テーブルＴ１と鍵テーブルＴ２には、同一の暗号鍵が収容されている。したがって、図示の例の場合、管理プログラムＳＤとアプリケーションプログラムＡＰ３とによって、情報処理装置１００と外部装置２００との間に、同一の暗号鍵を用いた同一の暗号化プロトコルに基づく暗号通信を行うための暗号通信路が開設されることになる。
【００４７】
ＩＣカードに対する暗号通信に利用される暗号化プロトコルとしては、ＳＣＰ０１，ＳＣＰ０２などのプロトコルが古くから利用されてきている。ただ、これらのプロトコルで用いられている「Triple-ＤＥＳ」という暗号アルゴリズムには危殆化の問題が指摘されており、近年は、ＡＥＳ（Advanced Encryption Standard）なる規格に基づく暗号アルゴリズムを利用したＳＣＰ０３なるプロトコルも、GlobalPlatform （登録商標）に準拠した仕様として普及し始めている。また、３ＧＰＰ／ＥＴＳＩなどの標準化団体を中心に策定されたＳＣＰ８０，ＳＣＰ８１などのプロトコルの利用も普及してきている。
【００４８】
また、ＩＣカードに組み込まれる管理プログラムＳＤ用の鍵テーブルＴとしては、図３に例示するような鍵空間を用いる仕様が一般化している。図示の鍵テーブルＴは、縦方向にキーバージョン番号（key version number）、横方向にキーＩＤ（key ID）を定義した二次元マトリックスによって構成されており、キーバージョン番号については、０ｘ０１〜０ｘ７Ｆの範囲内のアドレス空間が割り当てられ、キーＩＤについては、０ｘ００〜０ｘ７Ｆの範囲内のアドレス空間が割り当てられている（アドレス先頭の０ｘは、以下の数値が１６進数であることを示す）。
【００４９】
個々の暗号鍵は、この鍵テーブルＴのいずれかのセルに格納されることになり、キーバージョン番号とキーＩＤとの組み合わせにより特定される。たとえば、キーバージョン番号「０ｘ０１」とキーＩＤ「０ｘ０１」との組み合わせにより、暗号鍵ＫｅｙＡが特定されることになる。図には、個々の暗号鍵の格納例として、ＫｅｙＡ〜ＫｅｙＲが特定のセルに格納された状態が示されている。もちろん、暗号鍵はすべてのセルに格納する必要はなく、必要な暗号鍵が所定のセルに格納されていれば足りる。
【００５０】
ある１つの暗号化プロトコルでは、ある１つのキーバージョン番号が指定され、当該キーバージョン番号をもったセルに格納されている１つもしくは複数の暗号鍵を利用した暗号化処理もしくは復号処理が実行される。図示の例の場合、キーバージョン番号「０ｘ０１」，「０ｘ２０」，「０ｘ２１」，「０ｘ２２」，「０ｘ７Ｅ」，「０ｘ７Ｆ」の各行に何らかの暗号鍵が格納されている状態が示されている。また、図示の例の場合、いずれのキーバージョン番号についても、キーＩＤ「０ｘ０１」，「０ｘ０２」，「０ｘ０３」の３箇所のセルにそれぞれ暗号鍵が格納されている。
【００５１】
これは、いずれのキーバージョン番号も、３つの異なる暗号鍵を用いる暗号化プロトコル（たとえば、上述したＳＣＰ０１，ＳＣＰ０２，ＳＣＰ０３など）に対応したものになっているためである。たとえば、キーバージョン番号「０ｘ２０」が指定された場合、キーＩＤ「０ｘ０１」，「０ｘ０２」，「０ｘ０３」の各セルに格納されている３つの暗号鍵ＫｅｙＤ，ＫｅｙＥ，ＫｅｙＦが暗号化処理もしくは復号処理に利用されることになる。別言すれば、特定の暗号化プロトコルに基づく暗号化処理もしくは復号処理には、同一のキーバージョン番号をもつ１つもしくは複数の暗号鍵が利用されることになる。もちろん、合計５個の暗号鍵を必要とする暗号化プロトコルのためには、同一のキーバージョン番号をもつ５個のセルにそれぞれ暗号鍵を用意することになる。
【００５２】
一方、図４(a) は、図３に示す鍵テーブルＴの個々のセルに格納されている暗号鍵ＫｅｙＡ〜ＫｅｙＲの一般的なデータ構造を示す図である。図示された暗号鍵Ｋｅｙのデータ構造は、上述したＩＣカードについての国際的な標準仕様として定められた暗号鍵Ｋｅｙの標準フォーマットを示すものであり、先頭から順に、種別情報（key type）Ａ，鍵長（key length）Ｌ，鍵値データ（key value）Ｖを並べたものになっている。ここで、種別情報（key type）Ａは、「ＡＥＳ」，「ＤＥＳ」，「ＲＳＡ」など、当該暗号鍵Ｋｅｙを用いることを想定している暗号化プロトコルが採用する暗号アルゴリズムの種別を含む情報であり、鍵長（key length）Ｌは、後続する鍵値データ（key value）Ｖのデータ長（byte）を示す情報であり、最後の鍵値データ（key value）Ｖは、暗号化演算に用いられる鍵値データそのものである。
【００５３】
また、図４(b) は、暗号通信路開設コマンドＣＭＤのデータ構造の概要を示す図である。実際のコマンドは、ＩＳＯなどの規格（たとえば、ISO7816-4）に準拠した、より複雑なデータ構造を有するものになるが、便宜上、図４(b) には、説明に必要な情報のみを抽出した概念的なデータ構造を示すことにする。図示の例は、上述した暗号化プロトコルＳＣＰ０１，ＳＣＰ０２，ＳＣＰ０３を採用する場合に用いられている暗号通信路の開設コマンドを示しており、暗号通信路の開設を指示する文字列「INITIALIZE UPDATE」なるコマンド文字列情報（実際には、コマンド「INITIALIZE UPDATE」を意味するインストラクションバイト情報であるが、以下、便宜上、「INITIALIZE UPDATE」なる文字列として説明する）と、特定の暗号鍵の格納場所を示す格納場所指定情報（実際には、特定のキーバージョン番号）と、所定の乱数とによって構成されている。
【００５４】
たとえば、図３に示す鍵テーブルＴに格納されている３つの暗号鍵ＫｅｙＤ，ＫｅｙＥ，ＫｅｙＦを用いた暗号通信路を開設する場合には、文字列「INITIALIZE UPDATE」に「０ｘ２０」なるキーバージョン番号を後続させ、更にその後ろに所定の乱数を後続させた暗号通信路開設コマンドＣＭＤがＩＣカードに与えられる。この暗号通信路開設コマンドＣＭＤの最後に付加される乱数は、外部装置がＩＣカードを正規の交信相手であることを認証するために利用される。別言すれば、暗号通信路開設コマンドＣＭＤは、ＩＣカードに対して、暗号通信路の開設処理を実行する指示コマンドとしての役割とともに、所定の乱数に応じた認証コードを返信するよう求める認証コマンドとしての役割も果たす。
【００５５】
図５は、図２に示すＳＩＭカード１１（情報処理装置１００）に組み込まれた管理プログラムＳＤと、スマートフォン１０（外部装置２００）に組み込まれたアプリケーションプログラムＡＰ３と、の間でやりとりされる種々のコマンドおよびこれに対する応答の具体例を示すダイアグラムである。ステップＳ１〜Ｓ６に示すとおり、いずれもスマートフォン１０側からＳＩＭカード１１側に所定のコマンドを送信し、当該コマンドに対する応答（レスポンス）をＳＩＭカード１１側からスマートフォン１０側へと返信する、という形態で、両者間の情報のやりとりが行われる。この例の場合、ステップＳ１〜Ｓ４までの情報のやりとりは、暗号化されていない通常の通信路を介して行われるが、ステップＳ５，Ｓ６の情報のやりとりは、管理プログラムＳＤによって開設された暗号通信路を介して行われる。
【００５６】
まず、ステップＳ１は、スマートフォン１０側からＳＩＭカード１１側に「SELECTコマンド」を送信するプロセスである。この「SELECTコマンド」は、「アプリケーション選択コマンド」と呼ぶべきコマンドであり、特定のチャネル番号を指定して、ＳＩＭカード１１側の特定のアプリケーションプログラム（この場合は、管理プログラムＳＤ）を選択するコマンドである。ＳＩＭカード１１側では、当該チャネル番号と当該管理プログラムＳＤとが対応づけられ、以後、同じチャネル番号をもつコマンドが与えられると、当該管理プログラムＳＤによって処理されることになる。「SELECTコマンド」が正常に受理されると、ＳＩＭカード１１側からスマートフォン１０側に応答が返される。
【００５７】
続く、ステップＳ２は、「GET DATAコマンド」を送信するプロセスである。なお、ステップＳ２以降のコマンドには、ステップＳ１と同じチャネル番号が付与されており、ＳＩＭカード１１側では、管理プログラムＳＤによって処理される。この「GET DATAコマンド」は、管理プログラムＳＤの「データの読出機能」に基づいて、所定のデータをＳＩＭカード１１側からスマートフォン１０側に読み出すためのコマンドであり、読出対象となるデータを特定する情報が付加されている。管理プログラムＳＤは、当該コマンドに応じて、ＳＩＭカード１１内のメモリから指定されたデータを読出し、これを当該コマンドに対する応答としてスマートフォン１０側へと返信する。
【００５８】
GlobalPlatform （登録商標）の仕様では、ＳＤプログラムが「データの読出機能」を実行する場合は、暗号通信路を介した情報のやりとりが必須にはなっていない。図５のステップＳ２のプロセスは、暗号通信路の開設前に暗号通信路を介すことなく情報の読み出しが可能なデータの読出処理が行われた例を示すものである。
【００５９】
続く、ステップＳ３，Ｓ４は、暗号通信路の開設準備を行うプロセスである。まず、ステップＳ３では、「INITIALIZE UPDATEコマンド」の送信が行われる。このコマンドは、図４(b) に示すデータ構造をもつ「暗号通信路開設コマンド」であり、前述したとおり、「INITIALIZE UPDATE」なるコマンド文字列情報に、キーバージョン番号および乱数を付加した形態をもつ。このコマンドは、スマートフォン１０（外部装置２００）が、ＳＩＭカード１１（情報処理装置１００）を正規の交信相手として認証するための認証コマンドとしての役割も果たす。
【００６０】
すなわち、「INITIALIZE UPDATEコマンド」を受信したＳＩＭカード１１内の管理プログラムＳＤは、鍵テーブルＴ１から、指定されたキーバージョン番号に対応する暗号鍵を取り出し、暗号化処理の準備を行うとともに、与えられた乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対する応答として返信する。一方、スマートフォン１０内のアプリケーションプログラムＡＰ３は、返信されてきた演算結果が、与えた乱数に対する正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のＳＩＭカード１１を正規の交信相手と認証する。
【００６１】
続くステップＳ４では、「EXTERNAL AUTHENTICATEコマンド」の送信が行われる。このコマンドは、「外部認証コマンド」であり、ＳＩＭカード１１（情報処理装置１００）がスマートフォン１０（外部装置２００）を正規の交信相手として認証するための認証コマンドである。スマートフォン１０は、ステップＳ３の応答により返信されてきたデータに対して所定のアルゴリズムに基づく演算を施し、演算結果を「EXTERNAL AUTHENTICATE」なるコマンド文字列情報に付加してＳＩＭカード１１に送信する。ＳＩＭカード１１（管理プログラムＳＤ）は、「EXTERNAL AUTHENTICATEコマンド」によって送信されてきた演算結果が、正しい演算結果であるか否かを検証し、正しい演算結果であった場合に、現在交信中のスマートフォン１０を正規の交信相手と認証する。
【００６２】
このステップＳ３，Ｓ４による相互認証の具体的なプロセスは、一般に利用されている公知の技術であるため、ここでは詳しい説明は省略する。こうして、ＳＩＭカード１１とスマートフォン１０との間での相互認証が完了すると、両者間に暗号通信路が開設される。図の破線より下に示されたステップＳ５以降のコマンドは、この暗号通信路を介して与えられることになる。すなわち、ステップＳ５以降のコマンドの実質的な内容部分は、所定の暗号化プロトコルに基づいて暗号化され、「ＳＣＰ：Secure Channel Protocol」により保護されたコマンドとして送信される。
【００６３】
なお、現行の規格では、暗号通信路の開設時（「EXTERNAL AUTHENTICATEコマンド」の処理時）に、ＳＣＰについてレベルを設定することが可能である。具体的には、「レベル１：コマンド改竄検知用のチェックコード付与」と「レベル２：コマンド改竄検知用のチェックコード付与＋コマンドデータフィールドの暗号化」などが定められており、ステップＳ５以降にやりとりされるコマンドには、開設時に設定されたレベルが適用されることになる。このようなＳＣＰレベルの設定を行った場合、レベル２の設定が行われたときにのみ、ステップＳ５以降のコマンドのデータフィールドに対して暗号化が行われることになる。なお、ステップＳ５，Ｓ６の例では、コマンドに対する応答については、ＳＣＰによる保護を行わず、平文のまま通常の通信路を介して返信するようにしているが、必要があれば、これらの応答についても、暗号通信路を介して返信するようにしてもよい。
【００６４】
＜＜＜  §２．  管理プログラムのセキュリティ強度と階層構造  ＞＞＞
上述の§１では、情報処理装置１００に組み込まれた管理プログラムＳＤによって、外部装置２００との間に暗号通信路を開設して両者間で暗号通信を行うための手順を簡単に説明した。ここでは、この管理プログラムＳＤによって開設される暗号通信路にセキュリティ強度の相違がある点と、情報処理装置１００に複数の管理プログラムＳＤが階層構造をもって組み込まれる点について説明する。
【００６５】
図６は、現在、ＩＣカードに関する仕様として定められている暗号通信路開設コマンドＣＭＤのデータ構造を示す図である。§１で述べた例の場合、暗号通信路開設コマンドＣＭＤのデータ構造は、図６(a) に示すように、先頭から順に、「コマンド文字列情報」、「格納場所指定情報」、「乱数」を並べたものになり、具体的には、図６(b) に示すように、「INITIALIZE UPDATE」なる文字列を先頭に、「キーバージョン暗号」と「乱数」が後続する書式になる。
【００６６】
前述したように、先頭の「コマンド文字列情報（INITIALIZE UPDATE）」は、当該コマンドが暗号通信路を開設するコマンドであることを示すための文字列である。続く「格納場所指定情報」は、暗号通信路の開設に用いる特定の暗号鍵を指定するための暗号鍵指定情報であり、図３に示すような鍵テーブルＴを用いて暗号鍵を格納する場合は「キーバージョン番号」によって構成される。最後の「乱数」は、前述したとおり、スマートフォン１０がＳＩＭカード１１を正規の交信相手として認証するために利用されるデータである。
【００６７】
図６(a) ，(b) に例示する暗号通信路開設コマンドＣＭＤのデータ構造は、GlobalPlatform （登録商標）や３ＧＰＰ／ＥＴＳＩなどの国際的な仕様において、暗号化プロトコルＳＣＰ０１，ＳＣＰ０２，ＳＣＰ０３として定められているものである。当該仕様には、この他にもいくつかの暗号化プロトコルの仕様が定められており、暗号通信路開設コマンドＣＭＤのデータ構造は、各仕様に応じてそれぞれ異なるデータ構造を有する。たとえば、暗号化プロトコルＳＣＰ８０については、図６(c) に示すように、「ENVELOPE」なる文字列を先頭におく暗号通信路開設コマンドＣＭＤが定義されており、暗号化プロトコルＳＣＰ１０については、図６(d) に示すように、「MANAGE SECURITY ENVIRONMENT」なる文字列を先頭におく暗号通信路開設コマンドＣＭＤが定義されている。前述したとおり、これら各コマンドＣＭＤのデータ構造は、説明の便宜上、一部の情報のみを抽出した概念的なデータ構造であり、実際のデータ構造それ自体を示すものではない。
【００６８】
図７は、各暗号化プロトコルに用いられるコマンド文字列情報と暗号アルゴリズムの種別情報との対応関係を示す表である。ここで、表の各欄に示すＳＣＰ０１，ＳＣＰ０２，ＳＣＰ０３，ＳＣＰ１０，ＳＣＰ８０，ＳＣＰ８１などの文字列は、個々の暗号化プロトコルを特定する情報（本願では、ＳＣＰ種別と呼ぶ）である。また、表の縦見出しは、各暗号化プロトコルが用いる暗号アルゴリズムの種別を示し、表の横見出しは、各暗号化プロトコルに用いられるコマンド文字列情報を示している。なお、この表における「ＳＣＰｘｘ」は、現時点では、GlobalPlatform （登録商標）による仕様化はなされていないが、今後、策定される可能性のある暗号化プロトコルを示している。
【００６９】
このように、現時点において、多数の暗号化プロトコルが定められており、今後も、新たな暗号化プロトコルが追加策定されてゆくものと予想される。また、各暗号化プロトコルが用いる暗号アルゴリズムも多様化してゆくものと予想される。ここで重要な点は、個々の暗号化プロトコルによって、セキュリティ強度に差が生じる点である。たとえば、暗号アルゴリズムに関しては、Triple-ＤＥＳよりもＡＥＳの方が、理論的にセキュリティ強度が高いとされているため、図７に示す例の場合、暗号化プロトコルＳＣＰ０１，ＳＣＰ０２よりも、ＳＣＰ０３の方がセキュリティ強度が高くなる。
【００７０】
また、同じ暗号アルゴリズムを採用していたとしても、暗号化プロトコルの仕様によってセキュリティ強度に差が生じる。たとえば、図７に示す例の場合、暗号化プロトコルＳＣＰ０１とＳＣＰ０２は、いずれもTriple-ＤＥＳを暗号アルゴリズムとして用いているが、暗号化プロトコルＳＣＰ０２の方がＳＣＰ０１よりもセキュリティ強度が高いとされている。
【００７１】
§１で述べたように、一般的なＩＣカードには、少なくとも１組の管理プログラムＳＤ（Security Domain プログラム）が組み込まれており、外部装置との間の暗号通信路は、この管理プログラムＳＤによって開設される。管理プログラムＳＤは、図７の表に示されているような多様な暗号化プロトコルのうちの任意の１つもしくは複数をサポートするように構成されている。したがって、同一の情報処理装置１００内に複数の管理プログラムＳＤが組み込まれている場合、個々の管理プログラムＳＤごとに、それぞれ採用する暗号化プロトコルが異なることも少なくない。たとえば、第１の管理プログラムＳＤは暗号化プロトコルＳＣＰ８１のみを採用しているが、第２の管理プログラムＳＤは暗号化プロトコルＳＣＰ０１，ＳＣＰ０２の双方を採用している、といった具合である。
【００７２】
当然、どの暗号化プロトコルを採用するかによって、管理プログラムＳＤによって開設される暗号通信路のセキュリティ強度に差が生じることになる。もちろん、外部装置２００側のアプリケーションプログラムＡＰ３は、情報処理装置１００内の特定の管理プログラムＳＤに対して暗号通信路の開設を要求して通信を行うので、たとえ、セキュリティ強度の低い暗号通信路を介して情報のやりとりが行われることになったとしても、当該アプリケーションプログラムＡＰ３は、それを承知の上で、当該特定の管理プログラムＳＤを指定しているのであるから、それ自体が重大な問題になるわけではない。
【００７３】
図８(a) は、ＳＩＭカード１１（情報処理装置１００）内に構築されるアプリケーションプログラムの階層構造を示す図である。この図において、階層構造の最上位に配置されているＩＳＤ（Issuer Security Domain）は、発行者ＳＤと呼ばれる管理プログラムであり、このＳＩＭカード１１の工場出荷時に書込まれるプログラムである。図示の例の場合、このＩＳＤの下位にＳＳＤ１，ＳＳＤ２，ＡＰ０１，ＡＰ０２なるプログラムが配置されており、更に、ＳＳＤ１の下位にＡＰ１１，ＡＰ１２が配置され、ＳＳＤ２の下位にＳＳＤ３，ＡＰ２１，ＡＰ２２，ＡＰ２３が配置され、更に、ＳＳＤ３の下位にＡＰ３１，ＡＰ３２が配置されている。
【００７４】
この図８(a) にブロックで示されている各プログラムは、いずれもＳＩＭカード１１（情報処理装置１００）内に組み込まれているアプリケーションプログラムである。ここで、ＳＳＤ１，ＳＳＤ２，ＳＳＤ３（Supplemental Security Domain）は、ＩＳＤと同様に管理プログラムであるが、ＩＳＤが、工場出荷時に書込まれる最上位の管理プログラムであるのに対して、ＳＳＤ１，ＳＳＤ２，ＳＳＤ３は、ＩＳＤもしくは別なＳＳＤの下位に配置されるプログラムになる。
【００７５】
前述したように、管理プログラムも、アプリケーションプログラムの１つであることに変わりはないが、階層構造上、自己の下位に別なアプリケーションプログラム（一般アプリケーションプログラムであってもよいし、別な管理プログラムであってもよい）を配置して管理下におくことができる。したがって、図示の例の場合、管理プログラムＳＳＤ１の下位には、２組の一般アプリケーションプログラムＡＰ１１，ＡＰ１２が配置されているだけであるが、管理プログラムＳＳＤ２の下位には、１組の別な管理プログラムＳＳＤ３と３組の一般アプリケーションプログラムＡＰ２１，ＡＰ２２，ＡＰ２３が配置され、更に、管理プログラムＳＳＤ３の下位には、２組の一般アプリケーションプログラムＡＰ３１，ＡＰ３２が配置されている。
【００７６】
管理プログラムＳＤには、ＳＩＭカード１１（情報処理装置１００）全体を管理する機能と、下位のアプリケーションプログラムを管理する機能とが備わっている。具体的には、一般的なＳＤプログラムには、次のような機能が用意されている。これらの機能の一覧表は、図８(b) にも掲載されている。
＜機能１＞ＩＣカードのライフサイクル管理
＜機能２＞アプリケーションプログラムのライフサイクル管理
＜機能３＞アプリケーションインスタンスのライフサイクル管理
＜機能４＞アプリケーションプログラムのロード
＜機能５＞アプリケーションインスタンスの生成（インストール）
＜機能６＞アプリケーションプログラムやインスタンスの削除
＜機能７＞アプリケーション向け発行データの書込み
＜機能８＞データの読出し
＜機能９＞セキュアな通信路の確保
【００７７】
もっとも、上記９つの機能は、必ずしもすべての管理プログラムＳＤに備わっているものではない。通常、最上位階層のＩＳＤは、すべての機能を備えているが、下位階層におかれるＳＳＤについては、いくつかの機能が制限される場合もある。たとえば、上記機能１「ＩＣカードのライフサイクル管理」は、通常、ＩＳＤにのみ備わっている。また、上記機能のいくつかは、自己の下位階層に配置されているアプリケーションプログラム（自己の管理下にあるアプリケーションプログラム）のために提供する機能である。
【００７８】
以下、上記９つの機能のうち、本発明に関連するいくつかの機能について簡単に説明しておく。まず、管理プログラムＳＤが、自己の管理下にアプリケーションプログラムを組み込んで、動作可能となるようにするには、上記機能４により、アプリケーションプログラムをロードし、続いて、上記機能５により、アプリケーションプログラムのインスタンスを生成し、更に、上記機能７により、アプリケーション向け発行データの書込みを行うことになる。
【００７９】
より具体的に説明すれば、機能４「アプリケーションプログラムのロード」の処理は、外部装置から与えられるロードコマンドに応じて、アプリケーションプログラムのパッケージをメモリ上に格納する処理である。また、機能５「アプリケーションプログラムのインスタンスの生成」の処理は、いわゆるインストール処理であり、外部装置から与えられるインストールコマンドに応じて、ロード済みのアプリケーションプログラムのパッケージをメモリ上に展開し、アプリケーションインスタンスを生成する処理である。アプリケーションプログラムの実行は、このインスタンス化されたプログラムコードを実行する処理ということになる。
【００８０】
そして、機能７「アプリケーション向け発行データの書込み」の処理は、当該アプリケーションプログラムの実行に必要なデータ（発行データ）をメモリ上に格納する処理である。たとえば、クレジット決済機能をもったアプリケーションプログラムの場合、プログラムを実行可能にするためには、クレジットカード番号やユーザの個人情報などを発行データとして書き込む処理を行う必要がある。また、管理プログラムＳＤの場合、プログラムを実行可能にするためには、暗号通信路の開設に必要な鍵情報を発行データとして書き込む処理（鍵テーブルＴへの暗号鍵の書込処理）を行う必要がある。
【００８１】
最後の機能９「セキュアな通信路の確保」の処理は、§１で述べたように、「ＳＣＰ：Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、外部装置２００との間にセキュアな暗号通信路を開設して暗号通信を行う機能である。このような機能を実現するため、図２に示すように、管理プログラムＳＤ内には、暗号通信路開設ルーチンＲ１と鍵テーブルＴ１とが組み込まれている。暗号通信路開設ルーチンＲ１は、上記機能５「アプリケーションプログラムのインスタンスの生成」によって組み込まれることになり、鍵テーブルＴ１の内容は、上記機能７「アプリケーション向け発行データの書込み」によって書込まれることになる。
【００８２】
なお、GlobalPlatform （登録商標）の仕様では、管理プログラムＳＤが前述した「機能１〜機能７」を行う場合は、暗号通信路（機能９によって開設されたセキュアな通信路）を介して情報のやりとりを実行することが必須とされているが、「機能８：データの読出し」については暗号通信路の開設は必須にはなっていない。図５のステップＳ２のプロセスは、暗号通信路の開設前に暗号通信路を介すことなく情報のやり取りが可能なデータの読出処理が行われた例を示すものである。これに対して、機能４（ロード機能），機能５（インストール機能），機能７（発行機能）等の処理を実行させるためのコマンドは、図５のステップＳ５，Ｓ６のように、ＳＣＰにより保護されたコマンドとして、暗号化された状態で送信されることになる。
【００８３】
図９は、工場出荷時の情報処理装置１００（ＳＩＭカード１１）と外部装置２００（スマートフォン１０または外部サーバ２０）との間の情報通信の態様の一例を示すブロック図である。図示の例の場合、情報処理装置１００には、工場出荷時において、ＯＳプログラムと、ＩＳＤ（発行者ＳＤ：最上位階層の管理プログラム）と、２組のアプリケーションプログラムＡＰ０１，ＡＰ０２とが格納され、動作可能な状態になっている。ここで、管理プログラムＩＳＤには、暗号通信路開設ルーチンＲ００と鍵テーブルＴ００とが組み込まれており、これを利用して、所定の暗号化プロトコルに基づく暗号通信路の開設を行うことが可能である。
【００８４】
ここでは、説明の便宜上、図９に示すような外部装置２００（スマートフォン１０または外部サーバ２０）を用意した場合を考えてみよう。この外部装置２００に用意されているアプリケーションプログラムＡＰ（ＩＳＤ）は、情報処理装置１００内の管理プログラムＩＳＤとの間に暗号通信路を開設するためのプログラムであり、管理プログラムＩＳＤと同様に暗号通信路開設ルーチンＲ００と鍵テーブルＴ００とが組み込まれている。一方、図示の外部装置２００には、アプリケーションプログラムＡＰ（ＳＳＤ１）も用意されている。このプログラムＡＰ（ＳＳＤ１）は、情報処理装置１００内に後で組み込まれる管理プログラムＳＳＤ１との間に暗号通信路を開設するためのプログラムであり、暗号通信路開設ルーチンＲ１０と鍵テーブルＴ１０とが組み込まれている。
【００８５】
ここで、図９に示す工場出荷時の情報処理装置１００には、管理プログラムＩＳＤは組み込まれているが、管理プログラムＳＳＤ１はまだ組み込まれていない。すなわち、この図９に示す情報処理装置１００の階層構造は、図８の階層構造図におけるＩＳＤ，ＡＰ０１，ＡＰ０２のブロックのみが存在している状態ということができる。図８の階層構造図は、図９に示す情報処理装置１００を入手した利用者が、様々なアプリケーションプログラムを組み込む作業を行った後の状態ということになる。
【００８６】
図１０は、利用開始時の情報処理装置１００（ＳＩＭカード１１）と外部装置２００（スマートフォン１０または外部サーバ２０）との間の情報通信の態様の一例を示すブロック図である。図１０に示す情報処理装置１００には、新たに管理プログラムＳＳＤ１が格納され、動作可能な状態になっている。図示の管理プログラムＳＳＤ１には、暗号通信路開設ルーチンＲ１０と鍵テーブルＴ１０とが組み込まれており、これを利用して、外部装置２００側に用意されているアプリケーションプログラムＡＰ（ＳＳＤ１）との間に暗号通信路を開設して暗号通信を行うことが可能である。
【００８７】
なお、GlobalPlatform （登録商標）の仕様では、ＳＩＭカード１１内に複数の管理プログラムＳＤを組み込む際には、各管理プログラムＳＤが利用する鍵テーブルＴはそれぞれ別個のテーブルとして格納される。したがって、図１０に示す例の場合、鍵テーブルＴ００と鍵テーブルＴ１０とは別個の独立した鍵テーブルになっている。
【００８８】
もっとも、本発明を実施する上では、必ずしも各管理プログラムＳＤが利用する鍵テーブルＴを別個のテーブルとする必要はなく、たとえば、図３に示すような共通の鍵テーブルＴを設けておき、鍵テーブルＴ００，Ｔ１０は、この鍵テーブルＴの一部の領域として構成してもかまわない。たとえば、鍵テーブルＴ００はキーバージョン「０x２０」の行の領域によって構成し、鍵テーブルＴ１０は、キーバージョン「０x２１」の行の領域によって構成した場合、鍵テーブルＴ００に記録されている暗号鍵は、ＫｅｙＤ，ＫｅｙＥ，ＫｅｙＦ、鍵テーブルＴ１０に記録されている暗号鍵は、ＫｅｙＧ，ＫｅｙＨ，ＫｅｙＩということになる。
【００８９】
情報処理装置１００を、図９に示す状態から図１０に示す状態にもってゆくには、図８(a) に示す管理プログラムＩＳＤの下位階層、すなわち、管理プログラムＩＳＤの管理下に、新たな管理プログラムＳＳＤ１を組み込む処理を行う必要がある。そのためには、まず、外部装置２００から情報処理装置１００の管理プログラムＩＳＤに対して、暗号通信路開設コマンドを与え、管理プログラムＩＳＤの機能９「セキュアな通信路の確保」の処理によって両装置間に暗号通信路を開設した上で、この暗号通信路を介して、次のようなコマンドを与える作業を行えばよい。
【００９０】
まず、外部装置２００から情報処理装置１００の管理プログラムＩＳＤに対して、ロードコマンドを与え、管理プログラムＩＳＤによる機能４「アプリケーションプログラムのロード」の処理を実行させる。この処理により、新たな管理プログラムＳＳＤ１を構成するプログラムパッケージのバイナリデータが情報処理装置１００内のメモリに格納される。このプログラムパッケージは、インストール前のプログラムであり、ＣＰＵがそのまま実行可能な状態にはなっていない。
【００９１】
続いて、外部装置２００から情報処理装置１００の管理プログラムＩＳＤに対して、インストールコマンドを与え、管理プログラムＩＳＤによる機能５「アプリケーションプログラムのインスタンスの生成」の処理を実行させる。この処理により、メモリに格納されていたプログラムパッケージがメモリ上に展開され、管理プログラムＳＳＤ１を構成するアプリケーションインスタンスが生成される。このアプリケーションインスタンスは、ＣＰＵによって実行可能なルーチンではあるが、管理プログラムＳＳＤ１としての動作を行うには、まだ、発行データ（この場合、暗号鍵）が不足している。別言すれば、この時点では、図１０のＳＳＤ１のブロック内に描かれている暗号通信路開設ルーチンＲ１０はアプリケーションインスタンスとしてメモリ上に格納された状態になっているが、鍵テーブルＴ１０（の内容となる暗号鍵）は、まだメモリ上に格納されていない。
【００９２】
そこで最後に、外部装置２００から情報処理装置１００の管理プログラムＩＳＤに対して、発行データの書込コマンドを与え、管理プログラムＩＳＤによる機能７「アプリケーション向け発行データの書込み」の処理（鍵書込処理）を実行させる。この処理により、管理プログラムＳＳＤ１の動作に必要な発行データ（暗号鍵）がメモリに書込まれる。すなわち、図１０に示す鍵テーブルＴ１０の内容となる暗号鍵が発行データとしてメモリに書込まれることになる。これにより、新たな管理プログラムＳＳＤ１が、管理プログラムＩＳＤの管理下に、動作可能な状態で組み込まれたことになる。したがって、管理プログラムＳＳＤ１は、必要に応じて、暗号通信路開設ルーチンＲ１０および鍵テーブルＴ１０を用いて、機能９「セキュアな通信路の確保」の処理を実行することができる。
【００９３】
図８(a) の階層構造図に示されている管理プログラムＳＳＤ２も、同様の手順によって、管理プログラムＩＳＤの管理下に動作可能な状態で組み込まれる。そして今度は、管理プログラムＳＳＤ１に暗号通信路を開設させた上で、同様の手順によって、その管理下にアプリケーションプログラムＡＰ１１，ＡＰ１２を動作可能な状態で組み込むことができる。また、管理プログラムＳＳＤ２に暗号通信路を開設させた上で、同様の手順によって、その管理下にアプリケーションプログラムＡＰ２１〜ＡＰ２３および管理プログラムＳＳＤ３を動作可能な状態で組み込むことができる。更に、管理プログラムＳＳＤ３に暗号通信路を開設させた上で、その管理下にアプリケーションプログラムＡＰ３１，ＡＰ３２を動作可能な状態で組み込むことができる。
【００９４】
このような手順が行われることに留意すると、結局、ある１つの管理プログラムを指定して、その管理下に別なアプリケーションプログラムを組み込む処理を行う場合、当該指定管理プログラムの機能９「セキュアな通信路の確保」を利用して暗号通信路を開設し、当該暗号通信路を介して、当該指定管理プログラムに、機能４「アプリケーションプログラムのロード」，機能５「アプリケーションプログラムのインスタンスの生成（インストール）」，機能７「アプリケーション向け発行データの書込み」の処理を行わせるためのコマンドが与えられることになる。要するに、ある管理プログラムの下位階層に、新たなアプリケーションプログラムを組み込む場合、当該管理プログラムが開設した暗号通信路を介して、新たなアプリケーションプログラムのためのロード処理、インストール処理、発行処理を指示するコマンドが与えられることになる。
【００９５】
＜＜＜  §３．  ＩＣカードに与える具体的なコマンド  ＞＞＞
図１１は、GlobalPlatform （登録商標）の仕様に準拠したＩＣカードに与える具体的なコマンドの書式例を示す図である。もちろん、ＩＣカード用のコマンドには、この他にも様々なコマンドが用いられるが、図１１(a) 〜(h) に示すコマンドは、§１，§２の説明で用いたコマンドおよび§４以降で述べる具体的な実施形態に関連したコマンドである。以下、これら各コマンドの書式および当該コマンドに応じてＩＣカード側で実行される処理内容について簡単に説明を行う。なお、図１１に示す各コマンド書式のデータ構造は、図６に示すコマンド書式のデータ構造と同様に、一部の情報のみを抽出した概念的なデータ構造であり、実際のデータ構造それ自体を示すものではない。
【００９６】
＜３−１．  アプリケーション選択コマンド＞
まず、図１１(a) に示す「アプリケーション選択コマンド」について説明する。このコマンドは、図５のダイアグラムのステップＳ１で説明したコマンドであり、特定のチャネル番号を指定して、情報処理装置１００側の特定のアプリケーションプログラムを選択するコマンドである。図示のとおり、「SELECT (#n)＋アプリ名」というデータ構造を有し、チャネル番号＃ｎを指定して、「アプリ名」で特定されるアプリケーションプログラムを選択する指示である。
【００９７】
チャネル番号＃ｎは、外部装置２００から情報処理装置１００に対してコマンドを与える際に、当該コマンドがどのアプリケーションプログラム宛のコマンドであるかを識別させるために用いられる。情報処理装置１００には、複数のアプリケーションプログラムが格納されているため、外部装置から与えるコマンドのそれぞれにチャネル番号＃ｎを付加して識別できるようにする必要がある。「アプリケーション選択コマンド」は、特定のアプリケーションプログラムに特定のチャネル番号＃ｎを対応づけるための初期設定を行う役割を果たす。
【００９８】
たとえば、「SELECT (#3)＋ISD」というアプリケーション選択コマンドを情報処理装置１００に与えると、管理プログラムＩＳＤがチャネル番号＃３に対応づけられる。具体的には、当該コマンドを受信した情報処理装置１００内のＯＳプログラムが、管理プログラムＩＳＤがチャネル番号＃３に対応づけられた旨の記録を行うことになる。以後、チャネル番号＃３が付与されたコマンドは、すべて管理プログラムＩＳＤ宛のコマンドとして取り扱われ、管理プログラムＩＳＤによって実行されることになる。
【００９９】
＜３−２．  アプリケーションロードコマンド＞
次に、図１１(b) に示す「アプリケーションロードコマンド」について説明する。このコマンドは、図８(b) に示すＳＤプログラムの機能４を実行させるためのコマンドであり、特定の管理プログラムＳＤの管理下に、新たなアプリケーションプログラムを組み込む際の最初のステップとして実行されるコマンドである。実際には、図示のとおり、２つのコマンドによって構成される。
【０１００】
第１段階のロードコマンドは、「INSTALL for load (#n)＋パッケージ名」というデータ構造を有し、チャネル番号＃ｎを指定して、「パッケージ名」で特定されるパッケージをロードする旨の指示を伝えるコマンドになる。第２段階のロードコマンドは、「LOAD (#n)＋バイナリデータ」というデータ構造を有し、チャネル番号＃ｎを指定して、後続するバイナリデータのパッケージを、メモリにそのまま格納する旨の指示を伝えるコマンドになる。
【０１０１】
ここでは、上位管理プログラムＩＳＤの管理下に、新たに下位管理プログラムＳＳＤ１を組み込む場合の手順を例にとって、この「アプリケーションロードコマンド」を説明してみる。なお、説明の便宜上、上述した「SELECT (#3)＋ISD」というアプリケーション選択コマンドによって、既に、管理プログラムＩＳＤがチャネル番号＃３に対応づけられているものとしよう。この場合、第１段階のロードコマンドとしては「INSTALL for load (#3)＋PackSSD1」のようなコマンドを与え、第２段階のロードコマンドとしては「LOAD (#3)＋バイナリデータ」のようなコマンドを与えることになる。
【０１０２】
上記２段階からなるアプリケーションロードコマンドには、いずれもチャネル番号「＃３」が付与されたコマンドなので、「＃３」への対応づけがなされている上位管理プログラムＩＳＤによって処理されることになる。上位管理プログラムＩＳＤは、第２段階のロードコマンドに含まれていた「バイナリデータ」の部分をそのままメモリの所定箇所に格納し、当該「バイナリデータ」が「PackSSD1」なるパッケージ名であるかの確認を行う。ここで、「バイナリデータ」の実体は、新たに組み込まれる下位管理プログラムＳＳＤ１用のプログラムデータである。
【０１０３】
＜３−３．  アプリケーションプログラムのインストールコマンド＞
続いて、図１１(c) に示す「アプリケーションプログラムのインストールコマンド」について説明する。このコマンドは、図８(b) に示すＳＤプログラムの機能５を実行させるためのコマンドであり、特定の管理プログラムＳＤの管理下に、新たなアプリケーションプログラムを組み込む際の第２のステップとして実行されるコマンドである。
【０１０４】
ここで言うアプリケーションプログラムのインストールとは、アプリケーションのロードによってメモリ上に格納された状態になっているアプリケーションプログラムのパッケージを、メモリ上にアプリケーションインスタンスとして展開し、ＣＰＵが実行できる状態にする処理である。別言すれば、アプリケーションプログラムのインストールとは、既にロードされているパッケージをメモリ上に展開して、アプリケーションインスタンスを生成する処理ということになる。
【０１０５】
このアプリケーションプログラムのインストールコマンドは、図示のとおり、「INSTALL for install (#n)＋パッケージ名＋アプリ名＋パラメータ」というデータ構造を有し、チャネル番号＃ｎを指定して、「パッケージ名」で特定されるパッケージを展開して、アプリケーションインスタンスを生成し、当該アプリケーションインスタンスに「アプリ名」で指定される名称を付与する旨の指示を伝えるコマンドになる。なお、GlobalPlatform の仕様に準拠したインストールコマンドでは、「パッケージ名」の後に「クラス名」なるデータを配置し、当該「クラス名」で特定されるアプリケーションインスタンスが生成されることになるが、本願では便宜上、「クラス名」の説明については省略する。
【０１０６】
なお、このインストールコマンドに付随する「パラメータ」の部分には、機能指定情報が含まれている。この機能指定情報は、インストール対象となるアプリケーションプログラムが実行可能な処理機能を指定する情報であり、インストール後、当該アプリケーションプログラムは、この機能指定情報で指定された所定の処理機能を実行することが可能になる。別言すれば、この機能指定情報で指定されなかった処理機能については、実行することができなくなる。これは、機能指定情報で指定されなかった処理機能については、インストール時に実行制限がかけられるためである。
【０１０７】
アプリケーションロードコマンドによってロードされた「バイナリデータ」には、元来、様々な処理機能を実行するためのプログラムルーチンが含まれており、インストールされたアプリケーションプログラム自体は、様々な処理機能を有している。ただ、インストール処理が完了した時点では、これらの処理機能のうち、機能指定情報で指定された機能だけが実行可能な状態になる。このように、指定機能だけが実行可能となるようにするのは、セキュリティ上の配慮のためである。すなわち、インストール対象となるアプリケーションプログラムに与えるべき権限に応じて、必要な処理機能だけが実行可能となるようなインストール処理が行われることになる。
【０１０８】
前述したコマンド書式例(b) についての説明では、上位管理プログラムＩＳＤの管理下に、新たに下位管理プログラムＳＳＤ１を組み込む場合を例にとって、「INSTALL for load (#3)＋PackSSD1」および「LOAD (#3)＋バイナリデータ」なるアプリケーションロードコマンドにより、情報処理装置１００のメモリ内に、「PackSSD1」なるパッケージをロードする手順を述べた。ここでは、その続きとして、「INSTALL for install (#3)＋PackSSD1＋ＳＳＤ１＋パラメータ」のようなアプリケーションプログラムのインストールコマンドが与えられた場合の具体的な処理を説明する。このコマンドにもチャネル番号「＃３」が付与されているため、「＃３」に対応づけられた上位管理プログラムＩＳＤによって処理される。
【０１０９】
そこで、管理プログラムＩＳＤは、図８(b) に示すＳＤプログラムの機能５により、「PackSSD1」なるパッケージ名で既にロードされているアプリケーションプログラムパッケージをメモリ上に展開してアプリケーションインスタンスを作成するインストール処理を実行する。こうしてインストールされた新たなアプリケーションプログラムには、指定されたアプリ名「ＳＳＤ１」が付与され、階層構造上、管理プログラムＩＳＤの管理下におかれることになる。
【０１１０】
GlobalPlatform （登録商標）の仕様では、このインストールの処理を行う際に、「パラメータ」内の機能指定情報によって指定された特定の暗号化プロトコルを利用した暗号通信路開設機能が設定されることになる。通常、パッケージとしてロードされた状態の管理プログラムには、複数の暗号化プロトコルに基づく暗号通信路開設ルーチンが含まれているが、インストール時には、上記「パラメータ」内の機能指定情報による指定を行うことにより、特定の暗号化プロトコルのみが選択され、選択された暗号化プロトコルに関連する処理機能だけが実行可能となる状態でインストールされることになる。なお、後述するように、機能指定情報では、暗号通信路開設機能以外にも様々な処理機能が指摘でき、このような様々な処理機能も、必要に応じて、実行可能な状態でインストールされる。
【０１１１】
たとえば、「PackSSD1」なるパッケージには、暗号化プロトコル「ＳＣＰ０１（Triple-DES）」と「ＳＣＰ０２（Triple-DES）」との２通りについての暗号通信路開設ルーチンが含まれていたものとしよう。この場合、アプリケーションプログラムのインストールコマンドのパラメータ（機能指定情報）において、「ＳＣＰ０１（Triple-DES）」を指定すれば、「ＳＣＰ０１（Triple-DES）」用の暗号通信路開設ルーチンがインストールされ、以後、当該管理プログラムＳＳＤ１は、暗号化プロトコル「ＳＣＰ０１（Triple-DES）」を用いて暗号通信路の開設を行うことになる。一方、パラメータ（機能指定情報）において、「ＳＣＰ０２（Triple-DES）」を指定すれば、「ＳＣＰ０２（Triple-DES）」用の暗号通信路開設ルーチンがインストールされ、以後、当該管理プログラムＳＳＤ１は、暗号化プロトコル「ＳＣＰ０２（Triple-DES）」を用いて暗号通信路の開設を行うことになる。
【０１１２】
＜３−４．  アプリケーション向け発行データの書込コマンド＞
ここでは、図１１(d) に示す「アプリケーション向け発行データの書込コマンド」について説明する。このコマンドは、図８(b) に示すＳＤプログラムの機能７を実行させるためのコマンドであり、所定のアプリケーションプログラムのために、発行データを書き込むためのコマンドである。
【０１１３】
既に述べたとおり、管理プログラムを含めて、多くのアプリケーションプログラムは、インストールしただけでは正常な動作を行うことができず、実行に必要なデータ（発行データ）をメモリ上に格納する発行処理を行う必要がある。たとえば、クレジット決済機能をもったアプリケーションプログラムの場合、プログラムを実行可能にするためには、クレジットカード番号やユーザの個人情報などを発行データとして書き込む発行処理を行う必要がある。同様に、管理プログラムＳＤの場合は、プログラムを実行可能にするためには、暗号通信路の開設に必要な暗号鍵を発行データとして書き込む発行処理を行う必要がある。
【０１１４】
図１１(d) には、このような発行データの書込みを行うための２通りの書込コマンドが示されている。書込コマンドその１は、発行データを書き込むための汎用の書込コマンドであり、「STORE DATA (#n)＋発行データ」というデータ構造を有し、チャネル番号＃ｎを指定して、「発行データ」の部分のデータを発行データとして書き込む旨の指示を伝えるコマンドになる。このコマンドは、管理プログラムのみならず、一般アプリケーションプログラムに対しても与えることができる汎用コマンドである。上述したように、クレジット決済機能をもったアプリケーションプログラムに対して与えれば、「発行データ」としてクレジットカード番号、ユーザの個人情報や決済処理に用いる鍵データなどを書き込むことができる。また、管理プログラムＳＤに対して与えれば、「発行データ」として暗号通信路の開設に必要な鍵データなどを書き込むことができる。図３に例示した鍵テーブルＴの内容も、「発行データ」として書き込むことができる。
【０１１５】
一方、書込コマンドその２は、鍵データ（暗号鍵）を書き込むための専用の書込コマンドであり、「PUT KEY (#n)＋鍵データ」というデータ構造を有し、チャネル番号＃ｎを指定して、「鍵データ」の部分のデータを図３に例示した鍵テーブルＴ（インストール時に空の格納場所のみが用意されている）に書き込む旨の指示を伝えるコマンドになる。図３に例示した鍵テーブルＴの内容は、上述した書込コマンドその１によって発行データとして書き込むこともできるし、書込コマンドその２によって鍵データとして書き込むこともできる。
【０１１６】
前述したコマンド書式例(b) および(c) の説明では、上位管理プログラムＩＳＤの管理下に、新たに下位管理プログラムＳＳＤ１を組み込む場合を例にとって、管理プログラムＳＳＤ１をロードし、インストールする段階までを説明した。こうしてインストールされた管理プログラムＳＳＤ１には、鍵テーブルＴ用の格納場所が確保されているものの、その中身は空のままであり、鍵データの書込みを行わない限り、暗号通信路の開設を行うことはできない。そこで、下位管理プログラムＳＳＤ１の組込処理の最終段階として、発行データの書込コマンドを与えて鍵データを鍵テーブルＴに書き込む必要がある。
【０１１７】
書込コマンドその１を用いて鍵データの書込みを行う場合は、「STORE DATA (#n)＋鍵データ」なる発行データの書込コマンドを与えればよい（鍵データが発行データになる）。後に詳述するが、このコマンドにおけるチャネル番号「＃ｎ」は、上位管理プログラムＩＳＤを指定する番号でもよいし、下位管理プログラムＳＳＤ１を指定する番号でもよい。すなわち、後に説明する「(h) 発行データ書込対象指定コマンド」によって予め書込対象を指定しておくことにより、当該コマンドを実行する管理プログラムは、与えられた書込データを指定された書込対象についての鍵データとして書き込むことができる。したがって、上例の場合、鍵データは、下位管理プログラムＳＳＤ１用の鍵データとして書き込むことができる。
【０１１８】
一方、書込コマンドその２を用いて鍵データの書込みを行う場合は、「PUT KEY (#n)＋鍵データ」なる発行データの書込コマンドを与えればよい。このコマンドは、当該コマンドを受信した管理プログラム自身に、自分が使用する鍵データの書込処理を実行させるためのコマンドである。したがって、上例の場合、このコマンドにおけるチャネル番号「＃ｎ」は、下位管理プログラムＳＳＤ１を指定する番号になり、鍵データは、下位管理プログラムＳＳＤ１用の鍵データとして書込まれる。
【０１１９】
書込コマンドその１の一般書式は、「STORE DATA (#n)＋発行データ」なる形式を採っているが、GlobalPlatform （登録商標）の仕様によると、発行データとして鍵データを用いる場合には、発行データの部分に所定の指定子を用いて鍵データであることを明示する規則になっている。したがって、発行データの部分を鍵データとする「STORE DATA (#n)＋鍵データ」なる形式の書込コマンドを受信した場合、当該書込コマンドが鍵データの書込コマンドであることを認識することができる。一方、書込コマンドその２は、鍵データの書込専用のコマンドであるから、当該書込コマンドを受信した時点で、鍵データの書込コマンドであることを認識することができる。
【０１２０】
なお、図３に示すような二次元マトリックスのセルの集合体からなる鍵テーブルＴに鍵データを書き込む場合は、格納位置となるセルを特定する必要がある。個々のセルは、キーバージョン番号とキーＩＤとによって特定されるが、キーＩＤについては、たとえば図示の例のように、「０ｘ０１となるセルを先頭として順番に格納する」というような格納ルールを定めておけば、キーバージョン番号を特定するだけで鍵データの書込位置を特定することができる。この場合、書込コマンドには、書込位置を指定する書込場所指定情報として、キーバージョン番号を特定する情報を含ませておけばよい。
【０１２１】
＜３−５．  暗号通信路開設コマンド＞
続いて、図１１(e) に示す「暗号通信路開設コマンド」について説明する。このコマンドは、図８(b) に示すＳＤプログラムの機能９を実行させるためのコマンドであり、特定の管理プログラムＳＤに対して、暗号通信路を開設させるためのコマンドである。この暗号通信路開設コマンドについては、既に、図５のダイアグラムのステップＳ３で説明を行い、その書式については、既に、図６を参照して説明したとおりである。
【０１２２】
すなわち、この暗号通信路開設コマンドは、図示のとおり、「INITIALIZE UPDATE (#n)＋パラメータ」というデータ構造を有し、チャネル番号＃ｎで指定される管理プログラムＳＤに対して、暗号通信路を開設する指示を与えるとともに、外部装置２００が、情報処理装置１００を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。
【０１２３】
前述したとおり、この暗号通信路開設コマンドには、パラメータとして、キーバージョン番号および乱数が付加されている。管理プログラムＳＤは、図３に示す鍵テーブルＴからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置２００との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対するレスポンスとして返信する。
【０１２４】
＜３−６．  外部認証コマンド＞
続いて、図１１(f) に示す「外部認証コマンド」について説明する。このコマンドは、チャネル番号＃ｎで指定される管理プログラムＳＤが、現在通信を行っている外部装置２００を正規の交信相手として認証するためのコマンドであり、既に、図５のダイアグラムのステップＳ４で説明を行ったものである。
【０１２５】
§３−５で述べたとおり、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」は、暗号通信路を開設する指示を与えるとともに、外部装置２００が、情報処理装置１００を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。外部装置２００は、当該レスポンスが正当なものであれば、情報処理装置１００を正規の交信相手と判断する。
【０１２６】
ここで説明する外部認証コマンドは、図示のとおり、「EXTERNAL AUTHENTICATE (#n)＋ホスト認証コード」というデータ構造を有し、チャネル番号＃ｎを指定して、外部装置２００を正規の交信相手として認証するためのホスト認証コードが付加されている。情報処理装置１００は、当該ホスト認証コードが正当なものであれば、外部装置２００を正規の交信相手と判断する。
【０１２７】
このように、外部認証コマンド「EXTERNAL AUTHENTICATE (#n)＋ホスト認証コード」は、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」に続いて与えられるコマンドであり、両者によって、情報処理装置１００と外部装置２００との間に相互認証が行われることになる。
【０１２８】
＜３−７．  管理プログラム変更コマンド＞
次に、図１１(g) に示す「管理プログラム変更コマンド」について説明する。このコマンドは、管理プログラムの階層構造を変更するために用いられるコマンドである。図８(a) には、アプリケーションプログラムの階層構造の一例を示したが、管理プログラム変更コマンドを用いると、このような階層構造の変更を行うことができる。
【０１２９】
この管理プログラム変更コマンドは、図１１(g) に示すとおり、「INSTALL for extradition (#n)＋新管理プログラム名＋移動対象アプリ名」というデータ構造を有し、チャネル番号＃ｎによって特定の管理プログラムＳＤを指定して、当該管理プログラムＳＤに対して、現時点で自己の管理下にある移動対象となるアプリケーションプログラムを、新たな管理プログラムの管理下に移動させる旨の指示を伝えるコマンドになる。
【０１３０】
たとえば、図８(a) に示す階層構造において、管理プログラムＳＳＤ３を管理プログラムＳＳＤ２の管理下から、管理プログラムＳＳＤ１の管理下へと移動させる場合を考えてみる。この場合、現在の上位管理プログラムＳＳＤ２に対して、「INSTALL for extradition (#n)＋SSD1＋SSD3」という管理プログラム変更コマンドを与えることになる。その結果、現在の上位管理プログラムＳＳＤ２は、移動対象となる下位管理プログラムＳＳＤ３を、移動先となる新たな上位管理プログラムＳＳＤ１の管理下へ移動させる処理を実行する。このとき、管理プログラムＳＳＤ３の更に下層の一般アプリケーションプログラムＡＰ３１，ＡＰ３２も一緒に移動する。
【０１３１】
このような移動は、管理プログラムＳＳＤ１について、ロード機能やインストール機能が制限されていた場合に行われることが多い。この場合、管理プログラムＳＳＤ１は、自己の下位に管理プログラムＳＳＤ３を直接インストールすることができないので、とりあえず、インストール機能を有する管理プログラムＳＳＤ２が自己の下位にインストールし、これを管理プログラムＳＳＤ１の下位に移動した後で発行データ（暗号データ）を書き込む、という手順を踏むことになる。すなわち、管理プログラムＳＳＤ３についての発行データの書込処理は、移動先である管理プログラムＳＳＤ１が開設した暗号通信路を介して行うことになる。
【０１３２】
結局、この管理プログラム変更コマンドの実体は、インストールコマンドと同様に、上位の管理プログラムの管理下に下位の管理プログラムを配置するためのコマンドということになる。そこで、本願における「インストールコマンド」には、§３−３で述べたアプリケーションプログラムのインストールコマンド（コマンド(c) ）だけでなく、ここで述べた管理プログラム変更コマンド（コマンド(g) ）も含まれるものとする。
【０１３３】
＜３−８．  発行データ書込対象指定コマンド＞
最後に、図１１(h) に示す「発行データ書込対象指定コマンド」について説明する。§３−４では、「発行データの書込コマンドその１」についての説明を行ったが、ここで述べる「発行データ書込対象指定コマンド」は、「発行データの書込コマンドその１」を与える前に、予め発行データの書込対象を指定しておくためのコマンドである。
【０１３４】
この発行データ書込対象指定コマンドは、図１１(h) に示すとおり、「INSTALL for personalization (#n)＋発行対象アプリ名」というデータ構造を有し、チャネル番号＃ｎによって特定の管理プログラムＳＤを指定して、当該管理プログラムＳＤに対して、「発行対象アプリ名」として指定されたアプリケーションプログラムを発行データの書込対象として指定するコマンドになる。
【０１３５】
ここでも、上位管理プログラムＩＳＤの管理下に、新たに下位管理プログラムＳＳＤ１を組み込む場合を例にとって以下の説明を行うことにする。前述したとおり、上位管理プログラムＩＳＤの下位階層に管理プログラムＳＳＤ１をロードし、インストールする段階までが完了すれば、あとは最終段階として、下位管理プログラムＳＳＤ１について鍵データの書込みを行うだけである。このとき、図１１(d) に示す書込コマンドその１を用いて鍵データの書込みを行うには、下位管理プログラムＳＳＤ１に対して「STORE DATA (#n)＋鍵データ」なる発行データの書込コマンドを与え、下位管理プログラムＳＳＤ１に鍵データの書込処理を実行させる必要がある。
【０１３６】
ところが、発行データ書込対象指定コマンドを用いれば、上位管理プログラムＩＳＤに対して「STORE DATA (#n)＋鍵データ」なる発行データの書込コマンドを与えつつ、実際には、当該書込コマンドを下位管理プログラムＳＳＤ１に引き渡し、下位管理プログラムＳＳＤ１に実行させることが可能になる。そのためには、上位管理プログラムＩＳＤに対して「STORE DATA (#n)＋鍵データ」なる発行データの書込コマンドを与える前に、上位管理プログラムＩＳＤに対して「INSTALL for personalization (#n)＋SSD1」という発行データ書込対象指定コマンドを与えておくようにし、後続する発行データの書込コマンドについての鍵データの書込対象が下位管理プログラムＳＳＤ１である旨の指定を行っておけばよい。
【０１３７】
＜＜＜  §４．  本発明が解決すべき課題  ＞＞＞
以上、§１〜§３において、GlobalPlatform （登録商標）の仕様に準拠した一般的なＩＣカードの基本構成および管理プログラムの基本機能についての説明を行った。これらの説明を踏まえて、ここでは、本発明が解決すべき課題を具体的に述べておく。
【０１３８】
図１２は、本発明に係る情報処理装置１００の基本構成と、外部装置２００との間の情報通信の態様を示すブロック図である。ここでも、§１〜§３における説明と同様に、情報処理装置１００が、スマートフォン１０に装着されたＳＩＭカード１１であり、外部装置２００が、当該スマートフォン１０または外部サーバ２０である場合を想定して、以下の説明を行うことにする。
【０１３９】
情報処理装置１００は、外部装置２００との間で暗号通信を行う機能を有しており、図示のとおり、情報格納部１１０およびプログラム実行部１２０を備えている。この実施例の場合、情報格納部１１０は、不揮発性メモリによって構成され、プログラムおよび当該プログラムが利用するデータを格納する役割を果たす。より具体的には、情報格納部１１０は、プログラムを格納するためのプログラム格納部１１１と、データを格納するためのデータ格納部１１２と、を含んでいる。
【０１４０】
一方、プログラム実行部１２０は、情報格納部１１０に格納されているプログラムを実行する役割を果たす。より具体的には、プログラム実行部１２０は、ＣＰＵおよび必要に応じてＲＡＭなどの作業用メモリを備えており、データ格納部１１２に格納されているデータを利用して、プログラム格納部１１１に格納されているプログラムを実行する。プログラム実行部１２０と外部装置２００との間には通信路が設けられている。プログラム実行部１２０は、この通信路を介して外部装置２００から与えられたコマンドを実行し、その結果をレスポンスとして外部装置２００に返すことになる。
【０１４１】
図示のとおり、情報格納部１１０には、様々なプログラムやデータが格納されている。まず、プログラム格納部１１１には、ＯＳプログラムおよびアプリケーションプログラムが格納されている。§１で述べたとおり、アプリケーションプログラムは、管理プログラムと一般アプリケーションプログラムとによって構成され、図示の例の場合、２組の管理プログラムＩＳＤ，ＳＳＤ１と、２組の一般アプリケーションプログラムＡＰ０１，ＡＰ０２が格納されている状態が示されている。ここで、管理プログラムＩＳＤおよびＳＳＤ１の間には、図８(a) の階層構造図に示されているように、相互に上下関係が定義されている。
【０１４２】
なお、図１２に示す実施例では、プログラム格納部１１１に、アプリケーションプログラムとして、２組の管理プログラムと２組の一般アプリケーションプログラムとが格納されている例が示されているが、本発明に係る情報処理装置では、必ずしも複数の管理プログラムと複数の一般アプリケーションプログラムとが格納されている必要はなく、少なくとも１つの管理プログラム（図示の例の場合は、管理プログラムＩＳＤ）が格納されている状態であれば、本発明を実施することが可能である。
【０１４３】
ここで、管理プログラムＩＳＤ，ＳＳＤ１は、既に述べたとおり、自己を上位階層、別なアプリケーションプログラム（一般アプリケーションプログラムであるか、管理プログラムであるかを問わない）を下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、自己もしくは自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能を有し、外部装置２００から与えられる暗号通信路開設コマンドに基づいて当該機能が実行される。
【０１４４】
また、管理プログラムＩＳＤ，ＳＳＤ１は、いずれも自己の管理下に新たなアプリケーションプログラム（一般アプリケーションプログラムであるか、管理プログラムであるかを問わない）を組み込む機能も有している。具体的には、§２で説明したとおり、新たなアプリケーションプログラムのためのロード処理、インストール処理、発行処理を実行することになる。
【０１４５】
一方、データ格納部１１２には、ＯＳプログラムや各アプリケーションプログラムが利用するデータも格納されている。図には、プログラム格納部１１１に格納されている各プログラムに対応して、それぞれＯＳ用データ、ＩＳＤ用データ、ＳＳＤ１用データ、ＡＰ０１用データ、ＡＰ０２用データが格納されている状態が示されている。各プログラムは、対応する各データを利用して実行されることになる。前述したとおり、管理プログラムは、図３に示すような鍵テーブルＴを必要とするが、図示の例の場合、管理プログラムＩＳＤ用の鍵テーブルＴ（ＩＳＤ）はＩＳＤ用データの一部として格納され、管理プログラムＳＳＤ１用の鍵テーブルＴ（ＳＳＤ１）はＳＳＤ１用データの一部として格納される。
【０１４６】
もっとも、この図１２のブロック図に示されている構成自体は、これまで述べてきた従来の情報処理装置の構成と全く同じである。本発明に係る情報処理装置１００の特徴は、管理プログラムＩＳＤもしくはＳＳＤ１に、新たに付加的な処理機能を設けた点にある。この処理機能は、ＩＳＤ用データもしくはＳＳＤ１用データの一部として格納される鍵テーブルについて、常に必要最小限の暗号鍵のみが格納された状態を維持し、その記憶容量を節約するとともに、セキュリティ上の問題を低減させるという特有の作用効果を奏する。
【０１４７】
§２で述べたとおり、管理プログラムＩＳＤ（Issuer Security Domain）は、工場出荷時に書込まれる最上位の管理プログラムであり、情報処理装置１００が出荷された時点で既に書き込まれている必須のプログラムである。もちろん、ＯＳプログラムも同様である。一方、管理プログラムＩＳＤの下位階層に組み込まれる管理プログラムＳＳＤ（Supplemental Security Domain）は、通常、情報処理装置１００が工場から出荷された後に、必要に応じて組み込まれる付随的なプログラムである。
【０１４８】
したがって、図１２に示されている管理プログラムＳＳＤ１は、この情報処理装置１００の工場出荷後に新たに組み込まれたアプリケーションプログラムであり、当該管理プログラムＳＳＤ１の組込処理は、§２で述べたとおり、上位の管理プログラムＩＳＤによって実行されることになる。すなわち、管理プログラムＩＳＤに、図１１(b) に示すアプリケーションロードコマンドを与えることにより、管理プログラムＳＳＤ１となるべきプログラムパッケージをロードするロード処理を実行させ、管理プログラムＩＳＤに、図１１(c) に示すインストールコマンドを与えることにより、ロードしたパッケージを展開するインストール処理を実行させ、最後に、管理プログラムＩＳＤに、図１１(d) に示す書込コマンドを与えることにより、インストールされた管理プログラムＳＳＤ１が利用する暗号鍵を書き込む鍵書込処理を実行させることになる。なお、§３で述べたように、この鍵書込処理については、インストールされたばかりの管理プログラムＳＳＤ１自身に実行させることも可能であるが、以下に示す基本的実施形態では、管理プログラムＩＳＤによって鍵書込処理が実行される例を述べることにする。
【０１４９】
ここで、暗号鍵の格納は、次の準備段階および書込段階の２段階に分けて行われる。準備段階は、インストール時（図１１(c) のインストールコマンドが与えらえた時）に実行される処理であり、データ格納部１１２内のＳＳＤ１用データの一部として、鍵テーブルＴ（ＳＳＤ１）を用意する処理である。もっとも、この準備段階で用意される鍵テーブルＴ（ＳＳＤ１）は、空の格納場所から構成される仮想的なテーブルであり、暗号鍵の実データが記録されるわけではない。別言すれば、インストール時に行われる準備段階では、論理的な鍵空間上に暗号鍵を格納するための鍵テーブルが用意されるだけであり、この段階では、メモリの記憶容量が無駄に消費されることはない。
【０１５０】
一方、書込段階は、鍵書込時（図１１(d) の書込コマンドが与えらえた時）に実行される処理であり、準備段階で用意された鍵テーブルＴ（ＳＳＤ１）の所定の格納場所に、実際の鍵データ（暗号鍵）を書き込む処理である。すなわち、論理空間上に構築されていた鍵テーブルＴ（ＳＳＤ１）の所定箇所に対応するメモリ上の実空間上に、暗号鍵のデータが実際に書き込まれることになる。したがって、この書込段階を実行すると、暗号鍵の実データに相当する記憶容量が消費されることになる。このため、本来は必要のない暗号鍵が書込段階で実際に書き込まれることになると、メモリが無駄に消費されることになる。
【０１５１】
スマートフォンやＩＣカードなどの携帯型の小型情報処理装置の場合、内蔵するメモリの記憶容量が小さいため、できるだけ無駄を省き、必要最小限の暗号鍵のみが格納された状態を保つことが重要である。特に、ＩＣカード用のメモリでは、一般的なＵＳＢメモリ等に比べて、高度なセキュリティを要求されることが多いため、セキュリティがより堅固な高価なメモリが用いられることが多い。したがって、大容量のメモリを内蔵することは、コストダウンを図る上で困難であり、運用上、記憶容量の節約が強く求められる。更に、特願２０１５−１６８８６８号明細書などには、複数の暗号化プロトコルを切り替えて利用する技術なども開示されており、このような技術を利用するようになると、鍵テーブルＴに格納すべき暗号鍵の数はより増加することが予想され、鍵空間の効率的な利用が益々重要になってくる。
【０１５２】
また、不要な暗号鍵が格納されていると、万一、外部に漏洩した場合には、セキュリティ上の問題も生じる。すなわち、たとえ特定の情報処理装置１００にとっては不要な暗号鍵であったとしても、外部に漏洩した場合は、外部装置２００や別な情報処理装置も含めたシステム全体のセキュリティを脅かす要因になる。したがって、不要な暗号鍵を鍵テーブルＴ（ＳＳＤ１）に格納しておくことは、セキュリティ上、決して好ましくはない。
【０１５３】
もちろん、不要な暗号鍵をわざわざ書き込む必要はないので、通常であれば、鍵テーブルＴ（ＳＳＤ１）には、必要な暗号鍵のみが書き込まれるはずである。しかしながら、実際には、本来は必要のない暗号鍵について、上記書込処理が実行され、鍵テーブルＴ（ＳＳＤ１）に書き込まれてしまうことも少なくない。これは、書込処理が、外部装置２００から与えられる書込コマンド（図１１(d) ）に基づいて一義的に実行される処理であるためである。
【０１５４】
別言すれば、従来の管理プログラムＩＳＤは、外部装置２００から特定の暗号鍵の書込コマンドが与えられると、下位にインストールした管理プログラムＳＳＤ１にとって当該特定の暗号鍵が必要であろうがなかろうが、当該書込コマンドを忠実に実行し、当該特定の暗号鍵を鍵テーブルＴ（ＳＳＤ１）の指定箇所に書き込む処理を実行する。もちろん、外部装置２００側で十分な吟味を行い、インストールした管理プログラムＳＳＤ１にとって必要な暗号鍵のみを厳選して書込コマンドを与えるようにすれば問題は生じないが、外部装置２００側に用意されるアプリケーションプログラム（管理プログラムＳＳＤ１を情報処理装置１００内に新たに組み込む処理を行うためのプログラム）がそのような配慮を行わない粗雑なプログラムであった場合、不要な暗号鍵が書き込まれてしまうことは避けられない。
【０１５５】
特に、スマートフォンやＩＣカードなどの情報処理装置は、社会生活を営むのに欠かせない物品として広く普及しており、大手企業から中小企業に至るまで、様々な事業者から様々なアプリケーションプログラムが提供されている。このため、外部装置２００側に用意されるアプリケーションプログラムも種々雑多であり、情報処理装置１００側にインストールされるアプリケーションプログラムに必要な暗号鍵のみを書き込むような適切な書込コマンドを送信するような配慮がなされていないことも少なくない。
【０１５６】
前述したように、図１１(c) に示すインストールコマンドにはパラメータが付随しており、このパラメータには機能指定情報が含まれている。そして、このインストールコマンド（管理プログラムＳＳＤ１をインストールするコマンド）を受信した管理プログラムＩＳＤは、インストール対象となる管理プログラムＳＳＤ１のプログラムをメモリ上に展開する際に、機能指定情報で指定された処理機能（たとえば、ＳＣＰ種別「ＳＣＰ０２」で示される暗号化プロトコルを用いた暗号通信路開設機能）だけが実行可能となるような処置を施す。この場合、後続して与えられる書込コマンドでは、本来であれば、「ＳＣＰ０２」が利用する暗号鍵のみを書き込む指示を与えるべきであるが、外部装置２００側に用意されるアプリケーションプログラムが粗雑なプログラムであると、そのような細かな配慮を行うことなしに、常に、すべての暗号鍵についての書込コマンドをそれぞれ送信する処理が行われるケースも少なくない。
【０１５７】
たとえば、図７に示されている複数のＳＣＰ種別のいずれが指定されても対応できるようにするには、これら個々のＳＣＰ種別が利用するすべての暗号鍵が順次書き込まれるように、複数の書込コマンドを順番に送信する仕様を採用すればよい。この場合、インストールコマンドの機能指定情報で指定した内容を吟味する手間を省いた安易なプログラムルーチンからなる粗雑なアプリケーションプログラムを外部装置２００側に用意しておけば足りる。実際、そのような粗雑なアプリケーションプログラムであっても、動作上、支障が生じることはない。また、そのような安易な意図ではないにせよ、何らかのバグによって、不要な暗号鍵の書込処理を指示する書込コマンドが送信されてしまうケースもあり得る。
【０１５８】
このように、外部装置２００側に粗雑なアプリケーションプログラムが用意されていると、インストール対象となる管理プログラムＳＳＤ１については不要な暗号鍵が鍵テーブルＴ（ＳＳＤ１）に書き込まれてしまうことになる。上述したとおり、鍵テーブルＴに暗号鍵の実データが書き込まれると、当該実データに相当する記憶容量が実際に消費されてしまうことになる。このような問題は、インストール対象となるアプリケーションプログラムが管理プログラムである場合だけでなく、一般アプリである場合にも生じる。すなわち、何らかの暗号鍵を利用した処理機能を有するアプリケーションプログラムは、管理プログラムのみではなく、一般アプリにも存在する。これは、暗号鍵は、暗号通信路の開設に利用されるだけでなく、データの改竄をチェックする検証処理、トークンを用いた検証処理、暗号化されたプログラムの復号処理など、様々な処理に利用されるためである。
【０１５９】
GlobalPlatform （登録商標）の仕様では、図１１(c) に示すインストールコマンドのパラメータの部分に、図１３に示すように、「特権パラメータ（privilege）」と「ＳＣＰ種別パラメータ」とを含ませることが定められている。これらのパラメータは、いずれも、本願にいう「機能指定情報」であり、管理プログラムがインストール処理を実行する際には、インストール対象となるアプリケーションプログラムについて、この機能指定情報によって指定された指定機能が実行可能となるような処理が施される。
【０１６０】
ここで、「ＳＣＰ種別パラメータ」は、インストール対象となるアプリケーションプログラムが管理プログラム（すなわち、暗号通信路開設機能を有するプログラム）である場合に付加されるパラメータであり、当該インストール対象となる管理プログラムが、インストール後にサポートする暗号化プロトコルを特定する情報になる。具体的には、現在のところ、図７に例示するような種々の暗号化プロトコル（ＳＣＰ種別）が一般に利用されているが、図１３に示すＳＣＰ種別パラメータとして、たとえば、「ＳＣＰ０２」を指定した場合、インストール対象となる管理プログラムは、インストール後に、ＳＣＰ種別「ＳＣＰ０２」で特定される暗号化プロトコルのみをサポートすることになる。
【０１６１】
これに対して、「特権パラメータ（privilege）」は、インストール対象となるアプリケーションプログラムについて、様々な機能指定を行うためのパラメータであり、GlobalPlatform （登録商標）により、図１４に示すような細かな仕様が定められている。具体的には、この「特権パラメータ（privilege）」は、全３バイト（２４ビット）によって構成されており、図１４(a) の表の各行に示されているビットパターン＃０〜＃２０について、図１４(b) に示すような特権が定義されている。ここで、図１４(a) の表の各欄において、「１」は当該ビットが「１」であることを示し、「０」は当該ビットが「０」であることを示し、「−」は当該ビットの値が不問であることを示している。なお、ビットパターン＃２０は、将来の機能拡張のために予約されているパターンであり、表の各欄において、「Ｘ」は当該ビットが「０」であることを示している。
【０１６２】
たとえば、１バイト目のビットｂ８が「１」になるビットパターン＃０は、インストール対象となるアプリケーションプログラムが管理プログラム（Security Domain プログラム）であることを示している。したがって、「特権パラメータ（privilege）」の１バイト目のビットｂ８が「１」の場合、インストールコマンドのパラメータには、図１３に示すように、「特権パラメータ（privilege）」だけでなく「ＳＣＰ種別パラメータ」も付随することになる。
【０１６３】
同様に、１バイト目のビットｂ７が「１」，ビットｂ１が「０」になるビットパターン＃１は、インストール対象となるアプリケーションプログラムが「DAP Verification」の処理機能を有していることを示しており、１バイト目のビットｂ７が「１」，ビットｂ１が「１」になるビットパターン＃７は、インストール対象となるアプリケーションプログラムが「Mandated DAP Verification」の処理機能を有していることを示している。ビットパターン＃１，＃７の１バイト目のビットｂ８が「１」になっているのは、これらの処理機能が管理プログラムに対してのみ与えられる機能であるためである。
【０１６４】
各ビットパターンの多くのビットは「−」になっているため、実際には、複数のビットパターンを組み合わせた指定が可能である。たとえば、「１１１０００００  ００１０００００  ０１０００００００」なる「特権パラメータ（privilege）」は、インストール対象となるアプリケーションプログラムが、管理プログラムであり（＃０）、「DAP Verification」（＃１）、「Delegated Management」（＃２）、「Token Verification」（＃１０）、「Ciphered Load File Data Block」（＃１７）の各処理機能が与えられることを示している。
【０１６５】
図１４(b) は、この「特権パラメータ（privilege）」の各ビットパターン＃０〜＃２０のそれぞれに対応する特権名とその概要（意味）を示す表である。ここで、特権名の欄が太枠で示されている特権は、暗号鍵を利用した処理機能が与えられることを示している。したがって、これら太枠で示されている特権が機能指定情報として指定されていた場合、インストール処理に続いて、暗号鍵の書込処理が行われることになる。
【０１６６】
各特権で与えられる個々の処理機能は、GlobalPlatform （登録商標）の仕様で定められている公知の機能であるため、ここでは詳しい説明は省略するが、たとえば、「DAP Verification」（＃１）は、暗号鍵を用いてデータの改竄をチェックする検証処理機能を指し、「Token Verification」（＃１０）は、トークンを用いた検証処理機能を指し、「Ciphered Load File Data Block」（＃１７）は、暗号化されたプログラムの復号処理機能を指す。「特権パラメータ（privilege）」によって指定された処理機能は、インストール後に、利用可能な処理機能ということになる。
【０１６７】
結局、図１３に示す機能指定情報は、図１４に示す種々の特権のうちのどれを与えるか（どの処理機能が実行可能となるようなインストールを行うか）を指定する情報（特権パラメータ（privilege））であるとともに、インストール対象が管理プログラムであった場合には、更に、図７に示す種々のＳＣＰ種別のうちのどの種別をサポートさせるか（どの暗号化プロトコルに基づく暗号通信路開設機能が実行可能となるようなインストールを行うか）を指定する情報（ＳＣＰ種別パラメータ）ということになる。そして、インストール処理完了後は、「特権パラメータ（privilege）」で指定された暗号鍵を利用した処理機能（図１４(b) に太枠で示されている処理機能）および「ＳＣＰ種別パラメータ」で指定された暗号通信路開設機能において利用する暗号鍵を書き込むための鍵書込処理を実行する必要がある。
【０１６８】
結局、インストール処理後の鍵書込処理によって書き込むべき暗号鍵には、暗号通信路開設機能に利用する暗号鍵だけでなく、特権パラメータ（privilege）によって指定されたいくつかの処理機能に利用する暗号鍵も含まれることになる。したがって、本来であれば、外部装置２００側に用意されるアプリケーションプログラムは、インストールコマンドに含まれている特権パラメータ（privilege）およびＳＣＰ種別パラメータの内容を吟味して、必要な暗号鍵のみを書き込むための書込コマンドを送信すべきであるが、上述したとおり、粗雑なプログラムの場合、そのような細かな配慮を行うことなしに、あらゆる処理機能に必要な暗号鍵を、とりあえずすべて書き込んでしまうという杜撰な方法を採用するケースも少なくない。
【０１６９】
このため、実際には、利用されることのない無駄な暗号鍵が多数格納されることになり、貴重な記憶容量の無駄遣いが行われるとともに、セキュリティを低下させる問題も発生することになる。本発明は、このような問題を解決するための新たな手段を提案するものである。以下、その具体的な手法を、第１の実施形態（§５）および第２の実施形態（§６）について詳述する。
【０１７０】
＜＜＜  §５．  本発明の第１の実施形態  ＞＞＞
まず、本発明の第１の実施形態について詳述する。
【０１７１】
＜５．１  第１の実施形態に係る情報処理装置の構成＞
本発明の第１の実施形態に係る情報処理装置１００は、図１２に示すとおり、外部装置２００との間で暗号通信を行う機能を有しており、プログラムおよび当該プログラムが利用するデータを格納する情報格納部１１０と、この情報格納部１１０に格納されているプログラムを実行するプログラム実行部１２０とを備えている。そして、情報格納部１１０には、少なくとも１つの管理プログラムが格納されている。図１２には、２組の管理プログラムＩＳＤ，ＳＳＤ１が格納された状態が示されているが、ここでは、説明の便宜上、上位管理プログラムＩＳＤのみが格納されていたものとしよう。
【０１７２】
既に述べたとおり、管理プログラムＩＳＤは、外部装置２００から与えられるロードコマンド（図１１(b) ）に応じて、それぞれ暗号鍵を利用する複数の処理機能を有するアプリケーションプログラムのパッケージをロードして、情報格納部１１０に格納するプログラムロード処理を実行する機能を有している。ここでは、ロード対象となるアプリケーションプログラムが、下位階層の管理プログラムＳＳＤ１であった場合を考えてみる。この場合、管理プログラムＳＳＤ１の元になるパッケージがロードされることになる。
【０１７３】
また、管理プログラムＩＳＤは、外部装置２００から与えられるインストールコマンド（図１１(c) ）に応じて、プログラムロード処理によってロードされたパッケージを情報格納部１１０に展開して、当該アプリケーションプログラム（管理プログラムＳＳＤ１）をインストールするインストール処理を実行する機能を有している。すなわち、ロード済みのアプリケーションプログラムのパッケージを展開して、アプリケーションインスタンスを生成する処理が行われる。インストールされたアプリケーションプログラムの実行は、このインスタンス化されたプログラムコードを実行する処理ということになる。
【０１７４】
このとき、図１３に示すようなインストールコマンドのパラメータに含まれている機能指定情報によって指定された指定機能だけが実行可能となるようなインスタンス化が行われる。たとえば、機能指定情報を構成する「特権パラメータ（privilege）」によって「Token Verification」なる処理機能が指定され、「ＳＣＰ種別パラメータ」によって「ＳＣＰ０２」が指定されていた場合、「Token Verification」なる処理機能に必要なルーチンと、「ＳＣＰ０２」に対応する暗号化プロトコルを用いた暗号通信路開設に必要なルーチンとが実行可能となるようなインスタンス化が行われる。GlobalPlatform （登録商標）の仕様では、指定されていない処理機能は、実行不能な状態になる。
【０１７５】
すなわち、管理プログラムＩＳＤがインストール処理を実行する際には、インストールされたアプリケーションプログラム（管理プログラムＳＳＤ１）について、暗号鍵を利用する複数の処理機能のうち、インストールコマンドに含まれている機能指定情報によって指定された指定機能（上例の場合、「Token Verification」なる処理機能と「ＳＣＰ０２」に対応する暗号化プロトコルを用いた暗号通信路開設機能）だけが実行可能となるような処理が行われる。
【０１７６】
なお、管理プログラムＩＳＤは、特定のアプリケーションプログラムについてのインストール処理を実行する際に、必要に応じて、当該アプリケーションプログラムのために、情報格納部１１０の論理的な鍵空間上に暗号鍵を格納するための鍵テーブルＴを構築する処理を行うことができる。上例の場合、インストール対象となるアプリケーションプログラムは、管理プログラムＳＳＤ１であるから、鍵テーブルＴ（ＳＳＤ１）を構築する処理が行われる。前述したとおり、ここで構築される鍵空間は、論理的な空間であるので、たとえ図３に示すような二次元マトリックス状の鍵空間であっても、実メモリが無駄に消費されることはない。
【０１７７】
続いて、鍵書込処理が実行される。管理プログラムＩＳＤは、外部装置２００から与えられる鍵書込コマンド（図１１(d) ）に応じて、インストールされたアプリケーションプログラム（管理プログラムＳＳＤ１）が利用する暗号鍵を情報格納部１１０に格納する鍵書込処理を実行する機能を有している。この鍵書込処理では、論理空間上に構築された鍵テーブルＴ（ＳＳＤ１）の所定箇所に対応するメモリ上の実空間上に、暗号鍵のデータの書き込みが行われることになるので、実メモリの記憶容量が実際に消費されることになる。もっとも、「どのような暗号鍵を鍵テーブルＴ（ＳＳＤ１）上のどの格納場所に書き込むか」という指示は、外部装置２００から与えられる鍵書込コマンドの指示に従うことになる。
【０１７８】
鍵書込コマンドとしては、図１１(d) に示すように、暗号鍵の実データを発行データとして与える汎用の「書込コマンドその１」を利用してもよいし、暗号鍵の実データを鍵データとして与える鍵書込専用の「書込コマンドその２」を利用してもよい。この場合、鍵書込処理は、管理プログラムＩＳＤではなく、管理プログラムＳＳＤ１自身によって実行される。GlobalPlatform （登録商標）の仕様では、鍵データの書込みは、図３に示すような２次元マトリックス状の鍵テーブルＴの行単位で行われる。
【０１７９】
ここに示す実施例の場合、鍵テーブルＴは、キーバージョン番号とキーＩＤとの組み合わせによって１つのセルを特定することができる二次元マトリックス状のセルの集合体であるが、外部装置２００から与えられる鍵書込コマンドには、書込場所指定情報としてキーバージョン番号が含まれており（図１１(d) では省略されている）、管理プログラムＩＳＤは、鍵書込コマンドを受信すると、このキーバージョン番号に基づいて暗号鍵の格納場所を特定し、図１１(d) に示す書込コマンドに、発行データもしくは鍵データとして含まれていた暗号鍵の実データを、特定された格納場所に書き込む処理を行う。
【０１８０】
このように、「どの暗号鍵を鍵テーブルＴのどの欄に書き込むか」という内容は、専ら、外部装置２００から与えられる鍵書込コマンドによって指示されることになる。したがって、§４で述べたように、外部装置２００側に用意されたアプリケーションプログラムが杜撰な指示を行う粗雑なプログラムであった場合、本来は利用されることのない無駄な暗号鍵が書き込まれ、貴重な記憶容量の無駄遣いが行われるとともに、セキュリティを低下させるという問題が発生する。
【０１８１】
たとえば、上例のように、管理プログラムＳＳＤ１について、「Token Verification」なる処理機能と「ＳＣＰ０２」なる暗号化プロトコルを用いた暗号通信路開設機能だけが実行可能となるようなインストール処理が行われた場合、これに後続する鍵書込処理では、これらの機能に必要な暗号鍵のみの書込みを行うのが好ましいが、実際には前述したとおり、不要な暗号鍵の書込みを指示する書込コマンドが与えられる場合も少なくない。
【０１８２】
＜５．２  第１の実施形態の基本概念＞
本発明の第１の実施形態の基本概念は、上例のような状況において、管理プログラムＩＳＤもしくは管理プログラムＳＳＤ１が、外部装置２００から鍵書込コマンド（図１１(d) ）を受信した場合でも、受信した書込コマンドが、不要な暗号鍵の書込みを指示するコマンドであった場合には、これを拒絶して実行しないようにする、という点にある。すなわち、本発明の第１の実施形態に係る管理プログラムは、鍵書込処理を実行する前に、当該鍵書込処理によって格納される暗号鍵を利用する処理機能が実行可能な機能であるか否かを判定し、実行可能な機能であった場合には、当該鍵書込処理を実行するが、実行可能な機能でなかった場合には、当該鍵書込処理を拒絶することになる。
【０１８３】
GlobalPlatform （登録商標）の仕様では、上述したとおり、鍵テーブルＴへの暗号鍵の書込みは行単位で行われ、外部装置２００から与えられる鍵書込コマンドには、ある１つのキーバージョン番号を指定する書込場所指定情報と、当該キーバージョン番号に対応する行に書き込むべき暗号鍵の実データが含まれている。そこで、上例の場合、ある１つのキーバージョン番号を指定した鍵書込コマンドが与えられた場合、管理プログラムＩＳＤは、当該キーバージョン番号に対応する行に格納すべき暗号鍵の要否を判定し、不要な暗号鍵であった場合には、当該鍵書込コマンドを拒絶する処理を行うことになる。別言すれば、外部装置２００から与えられる鍵書込コマンドのうち、必要な暗号鍵の書込みを指示するコマンドのみが実行され、不要な暗号鍵の書込みを指示するコマンドは拒絶される。
【０１８４】
鍵書込コマンドによって書込が指示された暗号鍵について、要不要の判定を行うためには、管理プログラムＩＳＤが、特定のアプリケーションプログラムについてのインストール処理を実行する際に、当該アプリケーションプログラムが実行可能な機能を特定する情報を含む実行可能リストを作成し、これを情報格納部１１０に格納する処理を行うようにすればよい。そうすれば、鍵書込処理を実行する前に、この実行可能リストを参照することにより、判定対象となる処理機能が実行可能な機能であるか否かを判断することができる。
【０１８５】
たとえば、上例の場合のように、管理プログラムＳＳＤ１について、「Token Verification」なる処理機能と「ＳＣＰ０２」なる暗号化プロトコルを用いた暗号通信路開設機能だけが実行可能となるようなインストール処理が行われた場合、この２つの処理機能を特定する情報を含む実行可能リストを作成し、これをＩＳＤ用データもしくはＳＳＤ１用データの一部としてデータ格納部１１２に格納しておけばよい。そうすれば、鍵書込処理を実行する前に、この実行可能リストを参照すれば、どの処理機能が実行可能かを確認することができる。
【０１８６】
もっとも、通常、鍵書込コマンドには、「どの暗号鍵をどこに書き込むか」という情報は含まれているものの、「当該暗号鍵がどの処理機能に用いられるか」という情報は含まれていない。たとえば、GlobalPlatform （登録商標）の仕様では、鍵書込コマンド（図１１(d) ）には、暗号鍵の実データとキーバージョン番号とが含まれているため、鍵テーブルＴ上の書込場所は認識できるが、書込対象となる暗号鍵がどの処理機能に用いられるかという点については認識することはできない。
【０１８７】
そこで、ここで述べる実施形態では、暗号鍵を利用する特定の処理機能と当該暗号鍵を格納するための鍵テーブル上の格納場所とを対応づける対応情報を作成し、これを情報格納部１１０に格納しておく。そうすれば、管理プログラムが、鍵書込コマンドを受信したときには、この対応情報を参照することにより、受信した鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所に対応づけられている特定の処理機能を判定対象と認識し、当該判定対象が実行可能な機能であった場合には、受信した鍵書込コマンドを実行し、実行可能な機能でなかった場合には、受信した鍵書込コマンドを拒絶することができる。
【０１８８】
＜５．３  第１の実施形態の具体的な内容＞
上述した対応情報を作成するには、予め、暗号鍵を用いるあらゆる処理機能について、それぞれ特定の格納場所を対応づけておけばよい。図１５は、このような対応づけを示す格納場所一覧テーブルＧの具体的な一例を示す図である。この格納場所一覧テーブルＧには、合計１１組の機能のそれぞれについて、特定のキーバージョン番号の範囲が対応づけられている。ここで、前半の５組の機能は、図１３に示す「特権パラメータ（privilege）」によって指定される処理機能であり、図１４(b) に太枠で囲って示した＃１，＃７，＃１０，＃１６，＃１７の特権に対応する処理機能（暗号鍵を必要とする処理機能）である。一方、後半の６組の機能は、図１３に示す「ＳＣＰ種別パラメータ」によって指定される処理機能であり、図７の表に記載された個々のＳＣＰ種別に対応する暗号化プロトコルを用いた暗号通信路開設機能に相当する。
【０１８９】
このような格納場所一覧テーブルＧを予め定めておき、情報処理装置１００側と外部装置２００側とで共用する情報にすれば、暗号鍵を用いる任意の処理機能に関しては、それぞれ特定のキーバージョン番号が自動的に割り当てられることになる。したがって、たとえば、外部装置２００から情報処理装置１００に対して、「DAP Verification」という処理機能に利用される暗号鍵を書き込む鍵書込コマンドを送信する場合には、書込場所指定情報として、必ず「０ｘ１０〜０ｘ１Ｆ」の範囲内のキーバージョン番号を指定することが暗黙の了解事項になる。実際、GlobalPlatform （登録商標）の仕様では、このような格納場所一覧テーブルＧが定められている（なお、図１５に示すテーブルＧは、説明の便宜を考慮して作成したテーブルであり、GlobalPlatform （登録商標）の仕様に基づくテーブルではない）。
【０１９０】
この図１５に示すような格納場所一覧テーブルＧを情報処理装置１００側に用意しておけば、実行可能な特定の処理機能と当該処理機能に用いる暗号鍵を格納する格納場所とを対応づける対応情報を作成することができる。ここでは、このような対応情報を示すテーブルを機能テーブルＦと呼ぶことにする。
【０１９１】
図１６は、管理プログラムＳＳＤ１のインストール時に作成された機能テーブルＦ（ＳＳＤ１）の一例であり、当該管理プログラムＳＳＤ１が、インストール後に、「Token Verification」なる処理機能（トークンを用いた検証処理）と「ＳＣＰ０２」なる処理機能（暗号化プロトコル「ＳＣＰ０２」を用いた暗号通信路開設処理機能）とを実行可能であることが示されている。また、「Token Verification」なる処理機能に利用する暗号鍵の格納場所が、キーバージョン番号「０ｘ３０〜０ｘ３Ｆ」の範囲であることが示され、「ＳＣＰ０２」なる処理機能に利用する暗号鍵の格納場所が、キーバージョン番号「０ｘ７０〜０ｘ７Ｆ」の範囲であることが示されている。
【０１９２】
この図１６に示す機能テーブルＦ（ＳＳＤ１）は、これまで述べてきた例のように、上位管理プログラムＩＳＤが、その下位階層に管理プログラムＳＳＤ１を組み込む過程で作成される。具体的には、管理プログラムＩＳＤに対して、新たに管理プログラムＳＳＤ１をインストールするためのインストールコマンド（図１１(c) ）が与えられ、それに付随するパラメータ（機能指定情報）として、「Token Verification」を示す「特権パラメータ（privilege）」および「ＳＣＰ０２」なる「ＳＣＰ種別パラメータ」が含まれていた場合に、管理プログラムＩＳＤによって、図１６に示す機能テーブルＦ（ＳＳＤ１）が作成され、ＩＳＤ用データの一部としてデータ格納部１１２に格納される。
【０１９３】
要するに、図１６に示す機能テーブルＦ（ＳＳＤ１）は、特定のアプリケーションプログラム（管理プログラムＳＳＤ１）が実行可能な機能を特定する情報を含む実行可能リストと言うことができ、暗号鍵を利用する特定の処理機能と当該暗号鍵を格納するための鍵テーブル上の格納場所とを対応づける対応情報と言うこともできる。
【０１９４】
この機能テーブルＦ（ＳＳＤ１）の「機能」欄の「Token Verification」および「ＳＣＰ０２」なる情報は、インストールコマンドに付随するパラメータ（機能指定情報）から入手することができる。一方、「キーバージョン番号」欄の「０ｘ３０〜０ｘ３Ｆ」および「０ｘ７０〜０ｘ７Ｆ」なる情報は、図１５に示す格納場所一覧テーブルＧを参照することにより入手することができる。
【０１９５】
したがって、管理プログラムＩＳＤによるインストールコマンドの実行後には、図１７に示すように、ＩＳＤ用データとしては、上位管理プログラムＩＳＤ自身が利用する鍵テーブルＴ（ＩＳＤ）と、下位階層に組み込んだ管理プログラムＳＳＤ１についての機能テーブルＦ（ＳＳＤ１）とが格納された状態になり、ＳＳＤ１用データとしては、下位管理プログラムＳＳＤ１自身が利用する鍵テーブルＴ（ＳＳＤ１）が格納された状態になる。もっとも、この時点では、鍵テーブルＴ（ＳＳＤ１）は、論理的な鍵空間上に構築された仮想のテーブルであり、暗号鍵の実データは格納されていない。
【０１９６】
そこで、続いて、外部装置２００から、鍵テーブルＴ（ＳＳＤ１）に暗号鍵の実データを書き込むための鍵書込コマンドが与えられることになる。管理プログラムＩＳＤは、この鍵書込コマンドを受信したときに、当該鍵書込コマンドに含まれている書込場所指定情報によって指定されている格納場所が、機能テーブルＦ（ＳＳＤ１）に含まれているか否かを判定し、含まれていた場合には、当該鍵書込コマンドを実行し、含まれていなかった場合には、当該鍵書込コマンドを拒絶することができる。
【０１９７】
たとえば、鍵書込コマンドに書込場所指定情報として含まれているキーバージョン番号が、「０ｘ３０〜０ｘ３Ｆ」および「０ｘ７０〜０ｘ７Ｆ」の範囲内にある場合は、当該鍵書込コマンドは、インストールされた管理プログラムＳＳＤ１が実行可能な「Token Verification」もしくは「ＳＣＰ０２」なる処理機能に用いられる暗号鍵についての鍵書込コマンドであると判断することができるので、当該鍵書込コマンドを実行して暗号鍵の書込みを行うことになる。一方、鍵書込コマンドに書込場所指定情報として含まれているキーバージョン番号が、上記範囲外であった場合には、インストールされた管理プログラムＳＳＤ１が実行可能な処理機能に用いられる暗号鍵についての鍵書込コマンドではない、と判断することができるので、当該鍵書込コマンドは拒絶される。この場合、鍵書込コマンドに対して、エラーのレスポンスが返されることになる。
【０１９８】
結局、ここで述べた第１の実施形態を実施する上では、まず、データ格納部１１２に、図１５に示すような格納場所一覧テーブルＧを格納しておくようにする。この格納場所一覧テーブルＧは、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける対応情報のテーブルであり、外部装置２００側にも同じ対応情報が共有される。
【０１９９】
そして、管理プログラムＩＳＤが、特定のアプリケーションプログラム（たとえば、下位管理プログラムＳＳＤ１）についてのインストール処理を実行する際に、この格納場所一覧テーブルＧを参照することにより、当該アプリケーションプログラム（ＳＳＤＩ）が実行可能な機能と、当該機能に利用される暗号鍵の格納場所と、をそれぞれ対応づける機能テーブルＦ（ＳＳＤ１）を作成し、これをデータ格納部１１２に格納するようにする。図１６は、このような機能テーブルＦ（ＳＳＤ１）の一例であり、図１７には、この機能テーブルＦ（ＳＳＤ１）を、ＩＳＤ用データとしてデータ格納部１１２に格納した例が示されている。なお、鍵書込処理を下位管理プログラムＳＳＤ１自身に実行させる場合には、機能テーブルＦ（ＳＳＤ１）をＳＳＤ１用データとして格納しておけばよい。
【０２００】
続いて、管理プログラムＩＳＤが、鍵書込コマンドを受信したときには、この機能テーブルＦ（ＳＳＤ１）を参照することにより、受信した鍵書込コマンドに含まれている書込場所指定情報（キーバージョン番号）によって指定されている格納場所が、当該機能テーブルＦ（ＳＳＤ１）に含まれているか否かを判定し、含まれていた場合には、当該鍵書込コマンドを実行し、含まれていなかった場合には、当該鍵書込コマンドを拒絶する処理を行えばよい。
【０２０１】
＜５．４  第１の実施形態の変形例＞
ここでは、これまで述べてきた第１の実施形態について、いくつかの変形例を述べておく。第１の変形例は、図１６に示す機能テーブルＦ（ＳＳＤ１）の代わりに、図１８(a) に示す機能テーブルＦ′（ＳＳＤ１）を用いる例である。図１６に示す機能テーブルＦ（ＳＳＤ１）が、インストール処理後に管理プログラムＳＳＤ１が実行可能になる処理機能と、当該処理機能に用いる暗号鍵の格納場所と、の対応関係を示すテーブルであるのに対して、図１８(a) に示す機能テーブルＦ′（ＳＳＤ１）は、単に、インストール処理後に管理プログラムＳＳＤ１が実行可能になる処理機能を列挙したテーブルになっている。
【０２０２】
この第１の変形例を実施する上では、やはり、データ格納部１１２に、図１５に示すような格納場所一覧テーブルＧを格納しておくようにする。この格納場所一覧テーブルＧは、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける対応情報のテーブルであり、外部装置２００側にも同じ対応情報が共有される。
【０２０３】
そして、管理プログラムＩＳＤが、特定のアプリケーションプログラム（たとえば、下位管理プログラムＳＳＤ１）についてのインストール処理を実行する際には、図１８(a) に示す例のように、当該アプリケーションプログラム（ＳＳＤＩ）が実行可能な機能を列挙した機能テーブルＦ′（ＳＳＤ１）を作成し、これをデータ格納部１１２に格納するようにする。
【０２０４】
続いて、管理プログラムＩＳＤが、鍵書込コマンドを受信したときには、受信した鍵書込コマンドに含まれている書込場所指定情報（キーバージョン番号）によって指定されている格納場所が、図１８(a) に示す機能テーブルＦ′（ＳＳＤ１）に列挙されている実行可能な機能に対して、図１５に示す格納場所一覧テーブルＧにおいて対応づけられている格納場所であるか否かを判定し、肯定的な判定結果が得られた場合には、当該鍵書込コマンドを実行し、否定的な判定結果が得られた場合には、当該鍵書込コマンドを拒絶する処理を行えばよい。
【０２０５】
たとえば、鍵書込コマンドに書込場所指定情報として含まれているキーバージョン番号が「０ｘ３０」であった場合を考えてみよう。ここで、図１８(a) に示す機能テーブルＦ′（ＳＳＤ１）に列挙されている実行可能な処理機能は、「Token Verification」および「ＳＣＰ０２」であるから、図１５に示す格納場所一覧テーブルＧを参照すれば、キーバージョン番号「０ｘ３０」なる格納場所は、実行可能な処理機能「Token Verification」および「ＳＣＰ０２」に対応づけられている格納場所になる。したがって、この場合、肯定的な判定結果が得られ、当該鍵書込コマンドは実行されることになる。
【０２０６】
第２の変形例は、図１６に示す機能テーブルＦ（ＳＳＤ１）の代わりに、図１８(b) に示す機能テーブルＦ''（ＳＳＤ１）を用いる例である。図１６に示す機能テーブルＦ（ＳＳＤ１）が、インストール処理後に管理プログラムＳＳＤ１が実行可能になる処理機能と、当該処理機能に用いる暗号鍵の格納場所と、の対応関係を示すテーブルであるのに対して、図１８(b) に示す機能テーブルＦ''（ＳＳＤ１）は、インストール処理後に管理プログラムＳＳＤ１が実行可能になる処理機能に利用される暗号鍵の格納場所を列挙したテーブルになっている。
【０２０７】
この第２の変形例を実施する上では、やはり、データ格納部１１２に、図１５に示すような格納場所一覧テーブルＧを格納しておくようにする。この格納場所一覧テーブルＧは、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける対応情報のテーブルであり、外部装置２００側にも同じ対応情報が共有される。
【０２０８】
そして、管理プログラムＩＳＤが、特定のアプリケーションプログラム（たとえば、下位管理プログラムＳＳＤ１）についてのインストール処理を実行する際には、図１５に示す格納場所一覧テーブルＧを参照することにより、図１８(b) に示す例のように、当該アプリケーションプログラム（ＳＳＤＩ）が実行可能な機能に利用される暗号鍵の格納場所を列挙した機能テーブルＦ''（ＳＳＤ１）を作成し、これをデータ格納部１１２に格納するようにする。
【０２０９】
続いて、管理プログラムＩＳＤが、鍵書込コマンドを受信したときには、図１８(b) に示す機能テーブルＦ''（ＳＳＤ１）を参照することにより、受信した鍵書込コマンドに含まれている書込場所指定情報（キーバージョン番号）によって指定されている格納場所が、当該機能テーブルＦ''（ＳＳＤ１）に含まれているか否かを判定し、含まれていた場合には、当該鍵書込コマンドを実行し、含まれていなかった場合には、当該鍵書込コマンドを拒絶する処理を行えばよい。
【０２１０】
たとえば、鍵書込コマンドに書込場所指定情報として含まれているキーバージョン番号が「０ｘ３０」であった場合は、「０ｘ３０」は、図１８(b) に示す機能テーブルＦ''（ＳＳＤ１）に含まれている。したがって、この場合、当該鍵書込コマンドは実行されることになる。
【０２１１】
なお、これまで述べてきた実施例は、上位管理プログラムＩＳＤが、その管理下にインストールした下位管理プログラムＳＳＤ１のために、鍵書込コマンドを実行して暗号鍵の書込処理を実行する例であるが、鍵書込コマンドの実行は、その実行可否の判断も含めて、下位管理プログラムＳＳＤ１自身が実行することも可能である。すなわち、§３で述べたとおり、図１１(d) に示す書込コマンドその１「STORE DATA (#n)＋発行データ」を実行する際には、事前に、図１１(h) に示す発行データ書込対象指定コマンド「INSTALL for personalization (#n)＋発行対象アプリ名」を実行しておくことにより、発行データの書込対象を指定することができる。
【０２１２】
したがって、下位管理プログラムＳＳＤ１のための発行データ（暗号鍵）の書込処理は、上位管理プログラムＩＳＤによって行うこともできるし、下位管理プログラムＳＳＤ１自身によって行うこともできる。また、図１１(d) に示す書込コマンドその２「PUT KEY (#n)＋鍵データ」は、任意の管理プログラムに対して、自分自身が利用する暗号鍵の書込処理を自分自身で実行させるコマンドである。したがって、この書込コマンドその２が与えられた場合には、下位管理プログラムＳＳＤ１自身によって、鍵書込コマンドの実行が行われることになる。
【０２１３】
＜５．５  第１の実施形態における処理手順＞
最後に、第１の実施形態において、ある管理プログラムが自己の管理下に、新たなアプリケーションプログラムを組み込む場合の処理手順を、図１９の流れ図を参照して簡単に説明しておく。
【０２１４】
まず、ステップＳ１１において、外部装置２００から与えられたアプリケーションロードコマンド（第１段階）の受信が行われ、ステップＳ１２において、当該コマンドが実行される。この処理は、プログラムロード処理の第１段階に相当する。続いて、ステップＳ１３において、外部装置２００から与えられたアプリケーションロードコマンド（第２段階）の受信が行われ、ステップＳ１４において、当該コマンドが実行される。この処理は、プログラムロード処理の第２段階に相当する。このようなプログラムロード処理は、図１１(b) に示すコマンドの処理として、既に述べたとおりである。
【０２１５】
次に、ステップＳ１５において、外部装置２００から与えられたアプリケーションプログラムのインストールコマンドの受信が行われ、ステップＳ１６において、当該コマンドが実行される。この処理は、ステップＳ１４までの処理でロードされたアプリケーションプログラムのバイナリデータをメモリ上に展開してインスタンス化するインストール処理に相当する。このとき、前述したように、機能テーブルＦ（ＳＳＤ１），Ｆ′（ＳＳＤ１），Ｆ''（ＳＳＤ１）などを作成する処理が行われる。このようなインストール処理は、図１１(c) に示すコマンドの処理として、既に述べたとおりである。
【０２１６】
そして、ステップＳ１７において、外部装置２００から与えられた、暗号鍵の書込みを目的とするアプリケーション向け発行データの書込コマンド（鍵書込コマンド）の受信が行われる。本発明の第１の実施形態では、受信した鍵書込コマンドを実行する前に、ステップＳ１８，Ｓ１９における判定処理が行われる。すなわち、ステップＳ１８において、ステップＳ１６で作成した機能テーブルが参照され、ステップＳ１９において、受信した鍵書込コマンドによる書込対象となる暗号鍵を利用する処理機能が実行可能な機能であるか否かの判定が行われる。機能テーブルを利用した具体的な判定方法は、これまで述べたとおりである。
【０２１７】
ステップＳ１９における判定により肯定的な結果が得られた場合には、ステップＳ２０において、受信した鍵書込コマンドの実行が行われ、暗号鍵の書込みがなされる。この場合、外部装置２００に対しては、鍵書込コマンドの正常終了を示すレスポンスが返される。一方、ステップＳ１９における判定により否定的な結果が得られた場合には、ステップＳ２１において、受信した鍵書込コマンドは拒絶され、暗号鍵の書込みは行われない。この場合、外部装置２００に対しては、鍵書込コマンドに対するエラーレスポンスが返される。
【０２１８】
＜＜＜  §６．  本発明の第２の実施形態  ＞＞＞
続いて、本発明の第２の実施形態について詳述する。
【０２１９】
＜６．１  第２の実施形態の基本概念＞
本発明の第２の実施形態に係る情報処理装置の基本構成は、§５で述べた第１の実施形態に係る情報処理装置１００の基本構成と同様であり、図１２のブロック図に示すとおりである。第１の実施形態は、情報処理装置１００に、新たなアプリケーションプログラムを組み込む際に、不要な暗号鍵の書込みが行われないようにする、という基本概念に基づくものであり、具体的には、実行不能な処理機能に用いられる暗号鍵についての鍵書込コマンドが与えられた場合には当該コマンドを拒絶する、という方法を採用するものである。
【０２２０】
これに対して、ここで述べる第２の実施形態は、既にインストール済みの既存のアプリケーションプログラムについて、後に、実行可能な処理機能の変更が行われる場合を想定したものであり、その基本概念は、そのような機能変更によって実行可能から実行不能に変更された処理機能があった場合には、実行不能に変更された処理機能に利用される暗号鍵を削除する、というものである。
【０２２１】
たとえば、前述の§５では、第１の実施形態として、上位管理プログラムＩＳＤが、新たなアプリケーションプログラムとして、下位管理プログラムＳＳＤ１を組み込む実施例を述べた。この実施例の場合、インストールコマンドのパラメータに含まれる機能指定情報によって、「Token Verification」および「ＳＣＰ０２」という２つの処理機能が指定されていたため、図１６に示すような機能テーブルＦ（ＳＳＤ１）が作成される。そして、下位管理プログラムＳＳＤ１は、「Token Verification」なる処理機能と「ＳＣＰ０２」なる処理機能とが実行可能になるような形態でインストールされることになる。
【０２２２】
もっとも、アプリケーションロードコマンドによって情報処理装置１００内にロードされた下位管理プログラムＳＳＤ１のプログラムパッケージには、上記２つの処理機能だけでなく、図１４(b) に特権として示されている様々な処理機能や、図７にＳＣＰ種別として示されている様々な暗号化プロトコルに対応した暗号通信路開設機能を実行するためのプログラムルーチンが含まれている。上例の場合、インストールされた下位管理プログラムＳＳＤ１は、「Token Verification」および「ＳＣＰ０２」という２つの処理機能のみしか実行できなくなるが、これは、上位管理プログラムＩＳＤによるインストール処理によって、指定されなかった処理機能についての実行を制限する設定が行われるためである。
【０２２３】
たとえば、インストール処理によって管理プログラムＳＳＤ１をメモリ上に展開してインスタンス化する際に、個々の処理機能についての実行可否を示すフラグを設定し（インストールコマンドのパラメータに含まれる機能指定情報によって指定された処理機能についてのみ実行可能のフラグを設定する）、実行不能のフラグを設定されている処理機能については実行を制限するようにしておけば、上記運用を行うことができる。
【０２２４】
したがって、実際には、アプリケーションプログラムをインストールした後においても、必要があれば、個々の処理機能について実行可能／実行不能の状態を変更することができる。すなわち、インストール時には実行不能に設定されていた処理機能を後で実行可能に変更したり、逆に、インストール時には実行可能に設定されていた処理機能を後で実行不能に変更したりすることができる。前者の場合は、該当する処理機能のフラグを実行不能から実行可能に変更すればよく、後者の場合は、該当する処理機能のフラグを実行可能から実行不能に変更すればよい。
【０２２５】
このような機能変更を可能にするためには、予め、実行可能機能変更処理コマンドを用意しておき、管理プログラムが、当該実行可能機能変更処理コマンドに応じて、個々の処理機能についての実行可能／実行不能の状態（上記フラグの状態）を変更できるようにしておけばよい。したがって、ここで述べる第２の実施形態に係る情報処理装置における管理プログラムには、外部装置から与えられる実行可能機能変更処理コマンドに応じて、既にインストール済みのアプリケーションプログラムが実行可能な処理機能を変更する実行可能機能変更処理を実行する機能が備わっている必要がある。
【０２２６】
第２の実施形態の特徴は、このように、既にインストール済みの既存のアプリケーションプログラムについての実行可能機能変更処理が行われた際に、実行可能から実行不能に変更された処理機能があった場合には、実行不能に変更された処理機能に利用される暗号鍵を削除する鍵削除処理を行う点にある。この鍵削除処理により、もはや不要になった暗号鍵がそのまま格納され続ける事態を避けることができる。したがって、第１の実施形態と同様に、必要最小限の暗号鍵のみが格納された状態を維持し、暗号鍵の格納場所の記憶容量を節約するとともに、セキュリティ上の問題を低減させる、という格別な効果が得られる。
【０２２７】
＜６．２  第２の実施形態の具体的な内容＞
続いて、この第２の実施形態を、より具体的な事例について説明する。たとえば、§５で述べた例の場合、上位管理プログラムＩＳＤが実行したインストール処理により新たにインストールされた下位管理プログラムＳＳＤ１は、「Token Verification」および「ＳＣＰ０２」という２つの処理機能が実行可能な状態に設定されており、図１６に示すような機能テーブルＦ（ＳＳＤ１）が作成されている。この状態において、たとえば「ＳＣＰ０３」なる処理機能を実行可能にするには、上位管理プログラムＩＳＤに対して、前述した実行可能機能変更処理コマンドを与えることにより、機能変更処理を実行させればよい。具体的には、管理プログラムＩＳＤは、下位管理プログラムＳＳＤ１のインストール時に「実行不能」に設定した「ＳＣＰ０３」なる処理機能についてのフラグを「実行可能」に変更する処理を行えばよい。
【０２２８】
もちろん、その際には、図１６に示す機能テーブルＦ（ＳＳＤ１）に対して、機能「ＳＣＰ０３」およびキーバージョン番号「０ｘ８０〜０ｘ８Ｆ」を追加する処理を行うようにするのが好ましい。そうすれば、実行可能機能変更処理コマンドに後続して与えられる鍵書込コマンドを実行する際に、前述した第１の実施形態と同様の判定を行うことができ、不要な暗号鍵の書込みを阻止することができる。
【０２２９】
このように、これまで「実行不能」だった処理機能を「実行可能」に変更するにあたっては、前述した第１の実施形態により、無駄な暗号鍵が書き込まれることを防止できる。しかしながら、これまで「実行可能」だった処理機能を「実行不能」に変更するにあたっては、前述した第１の実施形態では、十分な対応ができない。たとえば、上例において、これまで実行可能に設定されていた「Token Verification」という処理機能を実行不能に変更する実行可能機能変更処理コマンドが与えられた場合を考えてみる。このような実行可能機能変更処理コマンドを受信した管理プログラムＩＳＤは、下位管理プログラムＳＳＤ１のインストール時に「実行可能」に設定した「Token Verification」なる処理機能についてのフラグを「実行不能」に変更する処理を行うことになる。
【０２３０】
もちろん、その際には、図１６に示す機能テーブルＦ（ＳＳＤ１）に収録されている機能「Token Verification」およびキーバージョン番号「０ｘ３０〜０ｘ３Ｆ」を削除する処理を行うようにするのが好ましい。そうすれば、以後、鍵書込コマンドが与えられた場合に、正しい判定を行うことができ、機能「Token Verification」に利用される暗号鍵の書込みを阻止することができる。
【０２３１】
ただ、鍵テーブルＴ上には、まだ、機能「Token Verification」に利用される暗号鍵がそのまま残っており、もはや不要になった機能「Token Verification」用の暗号鍵がそのまま格納された状態になっている。このような事態にも対応できるように、ここで述べる第２の実施形態では、上位管理プログラムＩＳＤが下位管理プログラムＳＳＤ１について実行可能機能変更処理を実行したときに、当該変更処理によって実行可能から実行不能に変更された処理機能があった場合には、実行不能に変更された処理機能に利用される暗号鍵を、情報格納部から削除する鍵削除処理を併せて実行するようにしている。
【０２３２】
要するに、管理プログラムは、実行可能機能変更処理を実行する際には、実行可能リスト（機能テーブルＦ）に対する書き換えを行い、この実行可能リスト（機能テーブルＦ）から削除されることになった処理機能に利用される暗号鍵を、情報格納部から削除する鍵削除処理を実行することになる。この鍵削除処理は、鍵テーブルＴを構成するメモリ上の実空間上に書き込まれていた暗号鍵のデータを削除し、メモリ上の実空間を開放する処理ということになるので、メモリ上の利用可能記憶容量は実際に増加する。
【０２３３】
なお、鍵削除処理を実行する際に、鍵テーブルＴ上のどの格納場所のデータを削除するかは、個々の処理機能と鍵テーブル上の個々の格納場所とを対応づける対応情報を参照して決めればよい。第１の実施形態の説明で述べたとおり、管理プログラムは、特定のアプリケーションプログラムについてのインストール処理を実行する際に、暗号鍵を利用する特定の処理機能と当該暗号鍵を格納するための鍵テーブル上の格納場所とを対応づける対応情報（たとえば、図１６に示す機能テーブルＦ）を作成し、これを情報格納部に格納する処理を行う。そこで、管理プログラムが、実行可能機能変更処理を実行する際には、この対応情報を参照して、実行可能から実行不能に変更された処理機能に対応づけられていた格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行すればよい。
【０２３４】
ここで述べる実施例の場合、鍵テーブルＴは、キーバージョン番号とキーＩＤとの組み合わせによって１つのセルを特定することができる二次元マトリックス状のセルの集合体からなるが、暗号鍵の書込みは、この鍵テーブルＴの行単位で行われるため、管理プログラムは、キーバージョン番号に基づいて、書込対象もしくは削除対象となる暗号鍵の格納場所を特定することができる。したがって、たとえば、図１６に示すような機能テーブルＦ（ＳＳＤ１）が作成されている状態において、機能「Token Verification」を実行可能から実行不能に変更する機能変更処理が行われた場合、キーバージョン番号「０ｘ３０〜０ｘ３Ｆ」の範囲内に格納されていた暗号鍵はすべて不要になったものと判断し、これらの暗号鍵をすべて削除する鍵削除処理を実行すればよい。
【０２３５】
結局、ここで述べた第２の実施形態を実施する上では、まず、データ格納部１１２に、図１５に示すような格納場所一覧テーブルＧを格納しておくようにする。この格納場所一覧テーブルＧは、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける対応情報のテーブルであり、外部装置２００側にも同じ対応情報が共有される。
【０２３６】
そして、管理プログラムＩＳＤが、特定のアプリケーションプログラム（たとえば、下位管理プログラムＳＳＤ１）についてのインストール処理を実行する際に、この格納場所一覧テーブルＧを参照することにより、当該アプリケーションプログラム（ＳＳＤＩ）が実行可能な機能と、当該機能に利用される暗号鍵の格納場所と、をそれぞれ対応づける機能テーブルＦ（ＳＳＤ１）を作成し、これをデータ格納部１１２に格納するようにする。図１６は、このような機能テーブルＦ（ＳＳＤ１）の一例であり、図１７には、この機能テーブルＦ（ＳＳＤ１）を、ＩＳＤ用データとしてデータ格納部１１２に格納した例が示されている。
【０２３７】
続いて、管理プログラムＩＳＤが、実行可能機能変更処理コマンドを受信したときには、この機能テーブルＦ（ＳＳＤ１）に対する書き換えを行い、機能テーブルＦ（ＳＳＤ１）から削除されることになった処理機能に対応づけられていた格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を実行するようにすればよい。
【０２３８】
もちろん、この第２の実施形態についても、図１６に示す機能テーブルＦ（ＳＳＤ１）の代わりに、図１８(a) に示す機能テーブルＦ′（ＳＳＤ１）を用いる第１の変形例を実施することが可能である。この第１の変形例を実施する上では、やはり、データ格納部１１２に、図１５に示すような格納場所一覧テーブルＧを格納しておくようにする。この格納場所一覧テーブルＧは、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける対応情報のテーブルであり、外部装置２００側にも同じ対応情報が共有される。
【０２３９】
そして、管理プログラムＩＳＤが、特定のアプリケーションプログラム（たとえば、下位管理プログラムＳＳＤ１）についてのインストール処理を実行する際には、図１８(a) に示す例のように、当該アプリケーションプログラム（ＳＳＤＩ）が実行可能な機能を列挙した機能テーブルＦ′（ＳＳＤ１）を作成し、これをデータ格納部１１２に格納するようにする。
【０２４０】
続いて、管理プログラムＩＳＤが、実行可能機能変更処理コマンドを受信したときには、図１８(a) に示す機能テーブルＦ′（ＳＳＤ１）に対する書き換えを行い、図１５に示す格納場所一覧テーブルＧを参照することにより、機能テーブルＦ′（ＳＳＤ１）から削除されることになった処理機能に対応づけられていた格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を行えばよい。
【０２４１】
たとえば、図１８(a) に示す機能テーブルＦ′（ＳＳＤ１）から処理機能「Token Verification」が削除されることになった場合、図１５に示す格納場所一覧テーブルＧを参照すれば、「Token Verification」に対応づけられた格納場所がキーバージョン番号「０ｘ３０〜０ｘ３Ｆ」に相当することがわかるので、鍵テーブルＴにおいて、キーバージョン番号「０ｘ３０〜０ｘ３Ｆ」の範囲内に格納されていた暗号鍵をすべて削除する鍵削除処理が実行される。
【０２４２】
もちろん、この第２の実施形態について、図１６に示す機能テーブルＦ（ＳＳＤ１）の代わりに、図１８(b) に示す機能テーブルＦ''（ＳＳＤ１）を用いる第２の変形例を実施することも可能である。図１８(b) に示す機能テーブルＦ''（ＳＳＤ１）は、インストール処理後に管理プログラムＳＳＤ１が実行可能になる処理機能に利用される暗号鍵の格納場所を列挙したテーブルになっている。
【０２４３】
この第２の変形例を実施する上では、やはり、データ格納部１１２に、図１５に示すような格納場所一覧テーブルＧを格納しておくようにする。この格納場所一覧テーブルＧは、暗号鍵を利用する様々な処理機能と、これらの各機能に利用される暗号鍵の格納場所と、を対応づける対応情報のテーブルであり、外部装置２００側にも同じ対応情報が共有される。
【０２４４】
そして、管理プログラムＩＳＤが、特定のアプリケーションプログラム（たとえば、下位管理プログラムＳＳＤ１）についてのインストール処理を実行する際には、図１５に示す格納場所一覧テーブルＧを参照することにより、図１８(b) に示す例のように、当該アプリケーションプログラム（ＳＳＤＩ）が実行可能な機能に利用される暗号鍵の格納場所を列挙した機能テーブルＦ''（ＳＳＤ１）を作成し、これをデータ格納部１１２に格納するようにする。
【０２４５】
続いて、管理プログラムＩＳＤが、実行可能機能変更処理コマンドを受信したときには、図１５に示す格納場所一覧テーブルＧを参照することにより、図１８(b) に示す機能テーブルＦ''（ＳＳＤ１）に対する書き換えを行う。そして、機能テーブルＦ''（ＳＳＤ１）から削除されることになった格納場所を特定し、特定された格納場所に格納されていた暗号鍵を削除する鍵削除処理を行えばよい。
【０２４６】
たとえば、処理機能「Token Verification」について、実行可能から実行不能に変更する実行可能機能変更処理コマンドが与えられた場合、図１５に示す格納場所一覧テーブルＧを参照することにより、「Token Verification」に対応づけられた格納場所がキーバージョン番号「０ｘ３０〜０ｘ３Ｆ」に相当することがわかるので、図１８(b) に示す機能テーブルＦ''（ＳＳＤ１）からキーバージョン番号「０ｘ３０〜０ｘ３Ｆ」を削除する書き換えが行われる。一方、鍵テーブルＴについては、上記削除されたキーバージョン番号「０ｘ３０〜０ｘ３Ｆ」の範囲内に格納されていた暗号鍵をすべて削除する鍵削除処理が実行される。
【０２４７】
＜６．３  第２の実施形態における処理手順＞
最後に、第２の実施形態において、ある管理プログラムに対して、既に自己の管理下に組み込まれている既存のアプリケーションプログラムについての実行可能機能を変更するための実行可能機能変更処理コマンドが与えられた場合、当該管理プログラムによって実行される処理手順を、図２０の流れ図を参照して簡単に説明しておく。
【０２４８】
まず、ステップＳ３１において、外部装置２００から与えられた実行可能機能変更処理コマンドの受信が行われ、ステップＳ３２において、当該コマンドに基づく機能変更処理が実行される。ここで行われる機能変更処理には、これまで実行不能であった処理機能を実行可能にする処理と、これまで実行可能であった処理機能を実行不能にする処理と、の２通りの形態がある。前述の実施例の場合、このような機能変更処理は、フラグの状態を切り替える処理によって行うことができる。なお、このとき、必要に応じて、機能テーブルの書換処理が実行される。
【０２４９】
続いて、ステップＳ３３において、上記機能変更処理によって実行不能になった機能があるか否かが判定され、実行不能になった機能がある場合には、ステップＳ３４の鍵削除処理が実行される。この処理は、既に述べたとおり、実行不能に変更された処理機能に利用される暗号鍵を、情報格納部（鍵テーブルＴ）から削除する処理である。
【０２５０】
そして、ステップＳ３５において、新たな暗号鍵の書込みが必要か否かが判定され、必要な場合には、図１９に示すステップＳ１７へ移行し、鍵書込処理が実行される。具体的には、ステップＳ３２の機能変更処理において、実行不能から実行可能に変更された処理機能があり、当該処理機能が暗号鍵を必要とするものであった場合に、新たな暗号鍵の書込必要と判定され、ステップＳ１７以降の処理が実行されることになる。このステップＳ１７以降の処理内容は、既に第１の実施形態として説明したとおりであり、不要な暗号鍵の書込みは阻止される。
【符号の説明】
【０２５１】
１０：スマートフォン
１１：ＳＩＭカード
２０：外部サーバ
１００：情報処理装置
１１０：情報格納部
１１１：プログラム格納部
１１２：データ格納部
１２０：プログラム実行部
２００：外部装置
Ａ：種別情報
ＡＰ１〜ＡＰ２，ＡＰ０１〜ＡＰ３２：一般アプリケーションプログラム
ＡＰ３：ＡＰ（ＩＳＤ），ＡＰ（ＳＳＤ１），外部装置側のアプリケーションプログラム
ＣＭＤ：暗号通信路開設コマンド
Ｆ（ＩＳＤ），Ｆ（ＳＳＤ１）：機能テーブル
Ｆ′（ＳＳＤ１），Ｆ''（ＳＳＤ１）：機能テーブル
Ｇ：格納場所一覧テーブル
ＩＳＤ：最上位の管理プログラム
Ｋｅｙ，ＫｅｙＡ〜ＫｅｙＲ：暗号鍵
Ｌ：鍵長
ＯＳ：ＯＳプログラム
Ｒ１，Ｒ２，Ｒ００，Ｒ１０：暗号通信路開設ルーチン
ＳＤ，ＳＳＤ１〜ＳＳＤ３：管理プログラム
Ｓ１〜Ｓ６：ダイアグラムの各ステップ
Ｓ１１〜Ｓ３５：流れ図の各ステップ
Ｔ，Ｔ１，Ｔ２，Ｔ００，Ｔ１０：鍵テーブル
Ｔ（ＩＳＤ），Ｔ（ＳＳＤ１）：鍵テーブル
Ｖ：鍵値データ
【図１】
2018067795.tif 000003
【図２】
2018067795.tif 000004
【図３】
2018067795.tif 000005
【図４】
2018067795.tif 000006
【図５】
2018067795.tif 000007
【図６】
2018067795.tif 000008
【図７】
2018067795.tif 000009
【図８】
2018067795.tif 000010
【図９】
2018067795.tif 000011
【図１０】
2018067795.tif 000012
【図１１】
2018067795.tif 000013
【図１２】
2018067795.tif 000014
【図１３】
2018067795.tif 000015
【図１４】
2018067795.tif 000016
【図１５】
2018067795.tif 000017
【図１６】
2018067795.tif 000018
【図１７】
2018067795.tif 000019
【図１８】
2018067795.tif 000020
【図１９】
2018067795.tif 000021
【図２０】
2018067795.tif 000022