(57)【要約】【課題】個々の管理プログラムによりコンピュータに実現させる本来の能力に応じた十分なセキュリティ能力を発揮させられるコンピュータプログラムを提供する。【解決手段】コンピュータプログラムは、コンピュータに、外部装置から、別な下位管理プログラムをインストールするコマンドが与えられたときに、所定の実行条件が満たされていると判断した場合には、インストール処理を実行し、前記実行条件が満たされていないと判断した場合には、インストール処理を拒絶し、親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとする手順を実行させる。【選択図】図１２
2020036370.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
外部装置から、自プログラムの管理下に別な下位管理プログラムをインストールする旨のインストールコマンドが与えられたときに、所定の実行条件が満たされていると判断した場合には、前記インストールコマンドに基づくインストール処理を行い、前記実行条件が満たされていないと判断した場合には、前記インストールコマンドに基づくインストール処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼び、インストール対象となる前記下位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラム。
【請求項２】
コンピュータに、
外部装置から、自プログラムの管理下にある別な管理プログラムを移動対象として、当該移動対象となる管理プログラムを移動先となる新たな管理プログラムの管理下に移動させる旨の管理プログラム変更コマンドが与えられたときに、所定の実行条件が満たされていると判断した場合には、前記管理プログラム変更コマンドに基づく管理プログラム変更処理を行い、前記実行条件が満たされていないと判断した場合には、前記管理プログラム変更コマンドに基づく管理プログラム変更処理を拒絶するステップと、
前記移動対象となる管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼び、前記移動先となる新たな管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを新親暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて新親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、新親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラム。
【請求項３】
コンピュータに、
外部装置から、暗号通信路を開設する旨の暗号通信路開設コマンドが与えられた際に、自プログラムの暗号通信路開設機能に必要な暗号鍵がまだ書込まれていなかったときに、所定の実行条件が満たされていると判断した場合には、自プログラムを管理下におく上位管理プログラムに前記暗号通信路開設コマンドに基づく暗号通信路開設処理の代理実行を依頼し、前記実行条件が満たされていないと判断した場合には、前記暗号通信路開設コマンドに基づく暗号通信路開設処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼び、前記上位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラム。
【請求項４】
コンピュータに、
自プログラムの管理下に既にインストールされている下位管理プログラムを発行データの書込対象として指定するための発行データ書込対象指定コマンドが与えられたときに、所定の実行条件が満たされていると判断した場合には、前記発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を行い、前記実行条件が満たされていないと判断した場合には、前記発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼び、前記下位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて、親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラム。
【請求項５】
コンピュータに、
外部装置から、暗号通信路を開設する旨の暗号通信路開設コマンドが与えられた際に、自プログラムの暗号通信路開設機能に必要な暗号鍵がまだ書込まれていなかったときに、自プログラムを管理下におく上位管理プログラムに前記暗号通信路開設コマンドに基づく暗号通信路開設処理の代理実行を依頼するステップと、
外部装置から、自プログラムの暗号通信路開設機能に必要な暗号鍵を書込むための書込コマンドを、前記上位管理プログラムに代理開設させた暗号通信路を介して暗号化された状態で受信したときに、当該暗号化されている書込コマンドを復号して平文の書込コマンドに戻す処理を前記上位管理プログラムに依頼するステップと、
所定の実行条件が満たされていると判断した場合には前記平文の書込コマンドに基づく暗号鍵の書込処理を行い、前記実行条件が満たされていないと判断した場合には、前記平文の書込コマンドに基づく暗号鍵の書込処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼び、前記上位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて、親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラム。
【請求項６】
コンピュータに、
自プログラムの管理下に既にインストールされている下位管理プログラムを発行データの書込対象として指定するための発行データ書込対象指定コマンドが与えられたときに、前記発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を行うステップと、
前記発行データ書込対象指定処理を実行することにより、前記下位管理プログラムを発行データの書込対象として指定した後、外部装置から、前記下位管理プログラムの暗号通信路開設機能に必要な暗号鍵の書込みを目的とする発行データ書込コマンドが与えられたときに、所定の実行条件が満たされていると判断した場合には、当該発行データ書込コマンドを前記下位管理プログラムに引き渡す処理を行って、前記下位管理プログラムによる発行データの書込処理を行い、前記実行条件が満たされていないと判断した場合には、前記発行データ書込コマンドに基づく発行データの書込処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼び、前記下位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて、親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断し場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプログラムに関し、特に、外部装置との間に暗号通信路を開設して暗号通信を行う機能を備えた情報処理装置のコンピュータに実行させるためのコンピュータプログラムに関する。
【背景技術】
【０００２】
情報処理装置が外部装置との間で情報のやりとりを行う場合、通信の安全性を確保するために、両者間にセキュアな暗号通信路を開設し、この暗号通信路を介して暗号通信を行うことが欠かせない。特に、スマートフォンやＩＣカードなどの携帯型の情報処理装置では、紛失によって悪意をもった者の手に渡る可能性があるため、十分なセキュリティ対策を講じておく必要がある。
【０００３】
最近は、スマートフォンをはじめとする携帯型端末装置が普及しており、これらの端末装置には、通常、ＳＩＭカードやＵＩＭカードと呼ばれているＩＣカードが装着されている。そしてこのＩＣカードと端末装置、あるいは、このＩＣカードと外部のサーバ装置との間で、所定の通信路を介して情報のやりとりが行われる。このとき、当該情報が機密性を有するものである場合には、セキュアな通信路を開設して暗号化された情報のやりとりを行う必要がある。
【０００４】
このような事情から、ＩＣカードと外部装置との間にセキュアな通信路を開設して暗号通信を行う様々な方法が提案されている。たとえば、下記の特許文献１には、所定の変換アルゴリズムに基づくデータ変換処理機能を有するプロキシ装置を介した通信を行うことにより、機密情報の漏洩を防止する技術が開示されている。また、特許文献２には、インターネットを介してＩＣカードとサーバ装置との間で情報のやりとりを行う際に、公開鍵暗号方式を利用した暗号化通信を行う技術が開示されており、特許文献３には、そのような暗号化通信の最中に、セキュリティに関わる異常発生が検知された場合に、速やかにシステム復旧処理を行う技術が開示されている。
【０００５】
一方、特許文献４には、サーバ装置側に、ＩＣカードと１対１に対応するＩＣカード対応領域を設け、このＩＣカード対応領域と利用者端末装置との間にセキュアな通信路を設定してサーバ装置とＩＣカードとを一体化する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−０５５９６１号公報
【特許文献２】特開２００２−２１７８９５号公報
【特許文献３】特開２００６−１９０２２２号公報
【特許文献４】特開２０１０−０７３１８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
情報処理装置と外部装置との間にセキュアな暗号通信路を開設するためには、両方の装置に、共通の暗号化プロトコルに基づいた暗号通信処理機能をもたせる必要がある。すなわち、送信側では所定の暗号鍵および所定の暗号化プロトコルを用いて、送信対象となる情報を暗号化して送り出し、受信側では、受信した暗号化情報を、送信側と同じ暗号鍵および暗号化プロトコルを用いて復号することになる。このため、情報処理装置および外部装置には、予め、特定の暗号鍵および暗号化プロトコルを用いた暗号通信処理機能が組み込まれることになる。
【０００８】
しかしながら、近年、情報処理装置の通信相手は多様化してきており、１つのＩＣカードが、種々の状況に応じて、複数の相手と通信するケースも少なくない。たとえば、スマートフォンに装着されたＩＣカード（ＳＩＭカードやＵＩＭカード）の場合、外部装置としてのスマートフォンには複数のアプリケーションプログラムが組み込まれているため、これら複数のアプリケーションプログラムとの間で情報のやりとりを行う必要が生じる。この場合、ハードウェア上は、ＩＣカードとスマートフォンとの間の二者通信ということになるが、ソフトウェア上は、ＩＣカード側のプログラムとスマートフォン側の個々のアプリケーションプログラムとの間の個別の通信が行われることになる。
【０００９】
また、最近は、より安全性の高い暗号化プロトコルが推奨されるようになってきており、実際に利用されている暗号化プロトコルの種類も多岐にわたっている。したがって、実用上は、１つのＩＣカードに、予め、複数通りの暗号化プロトコルに基づく暗号通信機能をもたせておき、当該ＩＣカードと通信を行う外部装置の都合に応じて（たとえば、スマートフォン内のアプリケーションプログラムの都合に応じて）、その都度、任意の暗号化プロトコルを選択して暗号通信を行うことができるようにするのが好ましい。
【００１０】
一方、情報処理装置の多用途化に伴い、情報処理装置の内部では、多数のアプリケーションプログラムを階層構造化して管理する手法が採用されてきている。たとえば、Java（登録商標） CardやGlobalPlatform（登録商標）などの仕様に準拠したＩＣカードでは、一般のアプリケーションプログラムは、ＳＤ（Security Domain）と呼ばれる管理プログラムの管理下におかれて管理される。この管理プログラムは、自己の管理下に新たなアプリケーションプログラムをインストールしたり、自己の管理下にあるアプリケーションプログラムのために暗号通信路を開設したりする機能をコンピュータに実現させるためのものである。しかも、１つの管理プログラムの管理下には、一般のアプリケーションプログラムだけでなく、別な管理プログラムをおくことも可能であり、全体が階層構造化されることになる。
【００１１】
ところが、このような階層構造による上下関係をもった複数の管理プログラムを情報処理装置に組み込み、個々の管理プログラムにより、それぞれ個別の暗号通信路開設機能をコンピュータに実現させるようにすると、個々の管理プログラムにより、本来コンピュータに実現させるセキュリティ機能を十分に発揮させられない事態が生じる。たとえば、本来であれば、非常に高いセキュリティ能力を発揮させられる管理プログラムであっても、これを低いセキュリティ能力しか発揮させられない管理プログラムの管理下に組み込んでしまうと、組込処理時に十分なセキュリティを確保することができないため、潜在的にセキュリティに関する脆弱性を含むという問題を抱えることになる。
【００１２】
そこで本発明は、個々の管理プログラムによりコンピュータに実現させるそれぞれ個別の暗号通信路開設機能を利用して外部装置との間で暗号通信を行う際に、それぞれが本来の能力に応じた十分なセキュリティ能力を発揮させられるコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
（１）本発明の第１の態様は、コンピュータに、
外部装置から、自プログラムの管理下に別な下位管理プログラムをインストールする旨のインストールコマンドが与えられたときに、所定の実行条件が満たされていると判断した場合には、前記インストールコマンドに基づくインストール処理を行い、前記実行条件が満たされていないと判断した場合には、前記インストールコマンドに基づくインストール処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼び、インストール対象となる前記下位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラムを用意したものである。
【００１４】
（２）本発明の第２の態様は、コンピュータに、
外部装置から、自プログラムの管理下にある別な管理プログラムを移動対象として、当該移動対象となる管理プログラムを移動先となる新たな管理プログラムの管理下に移動させる旨の管理プログラム変更コマンドが与えられたときに、所定の実行条件が満たされていると判断した場合には、前記管理プログラム変更コマンドに基づく管理プログラム変更処理を行い、前記実行条件が満たされていないと判断した場合には、前記管理プログラム変更コマンドに基づく管理プログラム変更処理を拒絶するステップと、
前記移動対象となる管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼び、前記移動先となる新たな管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを新親暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて新親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、新親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラムを用意したものである。
【００１５】
（３）本発明の第３の態様は、コンピュータに、
外部装置から、暗号通信路を開設する旨の暗号通信路開設コマンドが与えられた際に、自プログラムの暗号通信路開設機能に必要な暗号鍵がまだ書込まれていなかったときに、所定の実行条件が満たされていると判断した場合には、自プログラムを管理下におく上位管理プログラムに前記暗号通信路開設コマンドに基づく暗号通信路開設処理の代理実行を依頼し、前記実行条件が満たされていないと判断した場合には、前記暗号通信路開設コマンドに基づく暗号通信路開設処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼び、前記上位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラムを用意したものである。
【００１６】
（４）本発明の第４の態様は、コンピュータに、
自プログラムの管理下に既にインストールされている下位管理プログラムを発行データの書込対象として指定するための発行データ書込対象指定コマンドが与えられたときに、所定の実行条件が満たされていると判断した場合には、前記発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を行い、前記実行条件が満たされていないと判断した場合には、前記発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼び、前記下位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて、親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラムを用意したものである。
【００１７】
（５）本発明の第５の態様は、コンピュータに、
外部装置から、暗号通信路を開設する旨の暗号通信路開設コマンドが与えられた際に、自プログラムの暗号通信路開設機能に必要な暗号鍵がまだ書込まれていなかったときに、自プログラムを管理下におく上位管理プログラムに前記暗号通信路開設コマンドに基づく暗号通信路開設処理の代理実行を依頼するステップと、
外部装置から、自プログラムの暗号通信路開設機能に必要な暗号鍵を書込むための書込コマンドを、前記上位管理プログラムに代理開設させた暗号通信路を介して暗号化された状態で受信したときに、当該暗号化されている書込コマンドを復号して平文の書込コマンドに戻す処理を前記上位管理プログラムに依頼するステップと、
所定の実行条件が満たされていると判断した場合には前記平文の書込コマンドに基づく暗号鍵の書込処理を行い、前記実行条件が満たされていないと判断した場合には、前記平文の書込コマンドに基づく暗号鍵の書込処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼び、前記上位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて、親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断した場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラムを用意したものである。
【００１８】
（６）本発明の第６の態様は、コンピュータに、
自プログラムの管理下に既にインストールされている下位管理プログラムを発行データの書込対象として指定するための発行データ書込対象指定コマンドが与えられたときに、前記発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を行うステップと、
前記発行データ書込対象指定処理を実行することにより、前記下位管理プログラムを発行データの書込対象として指定した後、外部装置から、前記下位管理プログラムの暗号通信路開設機能に必要な暗号鍵の書込みを目的とする発行データ書込コマンドが与えられたときに、所定の実行条件が満たされていると判断した場合には、当該発行データ書込コマンドを前記下位管理プログラムに引き渡す処理を行って、前記下位管理プログラムによる発行データの書込処理を行い、前記実行条件が満たされていないと判断した場合には、前記発行データ書込コマンドに基づく発行データの書込処理を拒絶するステップと、
自プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルと呼び、前記下位管理プログラムの暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルと呼んだ場合に、複数の暗号化プロトコルについてセキュリティ強度の順位を示すセキュリティ強度順位リストにおいて、親暗号化プロトコルの順位が子暗号化プロトコルの順位より上位であると判断した場合又は両順位が等しいと判断した場合には、前記実行条件が満たされているものとし、親暗号化プロトコルの順位が子暗号化プロトコルの順位より下位であると判断し場合には、前記実行条件が満たされていないものとするステップと
を実行させるためのコンピュータプログラムを用意したものである。
【発明の効果】
【００１９】
本発明によれば、個々の管理プログラムによりコンピュータに実現させるそれぞれ個別の暗号通信路開設機能を利用して外部装置との間で暗号通信を行う際に、それぞれが本来の能力に応じた十分なセキュリティ能力を発揮させることが可能となる。
【図面の簡単な説明】
【００２０】
【図１】一般的なスマートフォン１０，ＳＩＭカード１１，外部サーバ２０の間の情報通信の態様を示すブロック図である。
【図２】図１に示すＳＩＭカード１１（情報処理装置）と、スマートフォン１０または外部サーバ２０（外部装置）と、の間で暗号通信を行うためのプログラム構成の一例を示すブロック図である。
【図３】図２に示す鍵テーブルの具体例を示す図である。
【図４】図３に示す鍵テーブルに格納されている暗号鍵Ｋｅｙの一般的なデータ構造および当該暗号鍵を用いた暗号通信路開設コマンドのデータ構造の概要を示す図である。
【図５】図２に示すＳＩＭカード１１（情報処理装置）と、スマートフォン１０（外部装置）と、の間でやりとりされる種々のコマンドおよびこれに対する応答の具体例を示すダイアグラムである。
【図６】一般的な暗号通信路開設コマンドＣＭＤのデータ構造およびそのバリエーションを示す図である。
【図７】各暗号化プロトコルに用いられるコマンド文字列情報と暗号アルゴリズムの種別情報との対応関係を示す表である。
【図８】ＳＩＭカード１１（情報処理装置）内に構築されるアプリケーションプログラムの階層構造（図（a））と管理プログラムＳＤの機能（図（b））を示す図である。
【図９】工場出荷時の情報処理装置（ＳＩＭカード１１）と外部装置（スマートフォン１０または外部サーバ２０）との間の情報通信の態様の一例を示すブロック図である。
【図１０】利用開始時の情報処理装置（ＳＩＭカード１１）と外部装置（スマートフォン１０または外部サーバ２０）との間の情報通信の態様の一例を示すブロック図である。
【図１１】図８（a）に示すアプリケーションプログラムの階層構造に変更が加えられた状態を示す図である。
【図１２】本発明に係る情報処理装置（ＳＩＭカード１１）の基本構成と、外部装置（スマートフォン１０または外部サーバ２０）との間の情報通信の態様を示すブロック図である。
【図１３】図１２に示すセキュリティ強度順位リストＬの具体例を示す表である。
【図１４】GlobalPlatform（登録商標）の仕様に準拠したＩＣカードに与える具体的なコマンドの書式例を示す図である。
【図１５】本発明の第１の実施形態において、指定管理プログラムの管理下に新たな管理プログラムをインストールするためのインストールコマンドが与えられた場合の処理手順を示す流れ図である。
【図１６】本発明の第１の実施形態において、コマンドを処理するための信号の流れを示すチャートである。
【図１７】本発明の第２の実施形態において、指定管理プログラムに対して管理下にある下位の管理プログラムを別な管理プログラムの管理下に移動するためのコマンドが与えられた場合の処理手順を示す流れ図である。
【図１８】本発明の第２の実施形態において、コマンドを処理するための信号の流れを示すチャートである。
【図１９】本発明の第３の実施形態において、暗号鍵を有していない指定管理プログラムに対して暗号通信路開設コマンドが与えられた場合の処理手順を示す流れ図である。
【図２０】本発明の第３の実施形態において、コマンドを処理するための信号の流れを示す第１のチャート（肯定的処理）である。
【図２１】本発明の第３の実施形態において、コマンドを処理するための信号の流れを示す第２のチャート（否定的処理）である。
【図２２】本発明の第４の実施形態において、指定管理プログラムに対して、自己の管理下に既にインストールされている下位管理プログラムを発行データの書込対象として指定するための発行データ書込対象指定コマンドが与えられた場合の処理手順を示す流れ図である。
【図２３】本発明の第４の実施形態において、コマンドを処理するための信号の流れを示す第１のチャート（肯定的処理）である。
【図２４】本発明の第４の実施形態において、コマンドを処理するための信号の流れを示す第２のチャート（否定的処理）である。
【図２５】本発明の第５の実施形態において、指定管理プログラムに対して、上位の管理プログラムにより代理開設された暗号通信路を介して鍵書込コマンドが与えられた場合の処理手順を示す流れ図である。
【図２６】本発明の第５の実施形態において、コマンドを処理するための信号の流れを示すチャートである。
【図２７】本発明の第６の実施形態において、指定管理プログラムに対して、発行データの書込対象が指定されている状態において、当該書込対象についての発行データ書込コマンドが与えられた場合の処理手順を示す流れ図である。
【図２８】本発明の第６の実施形態において、コマンドを処理するための信号の流れを示すチャートである。
【図２９】親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂが複数通り存在する場合に、個々の実施形態に適用可能な具体的な順位判定方法における比較対象を示す一覧表である。
【図３０】個々の管理プログラムごとに作成された個別リストの例を示す図である。
【発明を実施するための形態】
【００２１】
以下、本発明を図示する実施形態に基づいて説明する。
【００２２】
＜＜＜  §１．  ＩＣカードに対する従来の一般的な通信形態  ＞＞＞
本発明は、外部装置との間で暗号通信を行う機能を有する情報処理装置に係るものであり、特に、ＩＣカードからなる情報処理装置への利用に適した技術に関する。そこで、ここでは、まず、ＩＣカードに対する従来の一般的な通信形態を簡単に説明しておく。
【００２３】
図１は、一般的なスマートフォン１０，ＳＩＭカード１１，外部サーバ２０の間の情報通信の態様を示すブロック図である。通常、スマートフォン１０は、内部にＳＩＭカード１１を装着した状態で利用され、必要に応じて、外部サーバ２０と所定の通信路（インターネットや電話回線）を介して交信することになる。ここで、ＳＩＭカード１１（ＵＩＭカードとも呼ばれる）は、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）は、ＩＳＤと同様に管理プログラムであるが、ＩＳＤが、工場出荷時に書込まれる最上位の管理プログラムであるのに対して、ＳＳＤ１，ＳＳＤ２，ＳＳＤ３は、ＩＳＤもしくは別なＳＳＤの下位に配置されるプログラムになる。
【００６０】
前述したように、管理プログラムも、アプリケーションプログラムの１つであることに変わりはないが、階層構造上、自己の下位に別なアプリケーションプログラム（一般アプリケーションプログラムであってもよいし、別な管理プログラムであってもよい）を配置して管理下におくことができる。したがって、図示の例の場合、管理プログラムＳＳＤ１の下位には、２組の一般アプリケーションプログラムＡＰ１１，ＡP１２が配置されているだけであるが、管理プログラムＳＳＤ２の下位には、１組の別な管理プログラムＳＳＤ３と３組の一般アプリケーションプログラムＡＰ２１，ＡＰ２２，ＡＰ２３が配置され、更に、管理プログラムＳＳＤ３の下位には、２組の一般アプリケーションプログラムＡＰ３１，ＡＰ３２が配置されている。
【００６１】
管理プログラムＳＤには、ＳＩＭカード１１（情報処理装置１００）全体を管理する機能と、下位のアプリケーションプログラムを管理する機能とが備わっている。具体的には、一般的なＳＤプログラムには、次のような機能が用意されている。これらの機能の一覧表は、図８(b) にも掲載されている。
＜機能１＞ＩＣカードのライフサイクル管理
＜機能２＞アプリケーションプログラムのライフサイクル管理
＜機能３＞アプリケーションインスタンスのライフサイクル管理
＜機能４＞アプリケーションプログラムのロード
＜機能５＞アプリケーションインスタンスの生成（インストール）
＜機能６＞アプリケーションプログラムやインスタンスの削除
＜機能７＞アプリケーション向け発行データの書込み
＜機能８＞データの読出し
＜機能９＞セキュアな通信路の確保
【００６２】
もっとも、上記９つの機能は、必ずしもすべての管理プログラムＳＤに備わっているものではない。通常、最上位階層のＩＳＤは、すべての機能を備えているが、下位階層におかれるＳＳＤについては、いくつかの機能が制限される場合もある。たとえば、上記機能１「ＩＣカードのライフサイクル管理」は、通常、ＩＳＤにのみ備わっている。また、上記機能のいくつかは、自己の下位階層に配置されているアプリケーションプログラム（自己の管理下にあるアプリケーションプログラム）のために提供する機能である。
【００６３】
以下、上記９つの機能のうち、本発明に直接関連するいくつかの機能について簡単に説明しておく。まず、管理プログラムＳＤが、自己の管理下にアプリケーションプログラムを組み込んで、動作可能となるようにするには、上記機能４により、アプリケーションプログラムをロードし、続いて、上記機能５により、アプリケーションプログラムのインスタンスを生成し、更に、上記機能７により、アプリケーション向け発行データの書込みを行うことになる。
【００６４】
より具体的に説明すれば、機能４「アプリケーションプログラムのロード」の処理は、外部装置から与えられるロードコマンドに応じて、アプリケーションプログラムのパッケージをメモリ上に格納する処理である。また、機能５「アプリケーションプログラムのインスタンスの生成」の処理は、いわゆるインストール処理であり、外部装置から与えられるインストールコマンドに応じて、ロード済みのアプリケーションプログラムのパッケージをメモリ上に展開し、アプリケーションインスタンスを生成する処理である。アプリケーションプログラムの実行は、このインスタンス化されたプログラムコードを実行する処理ということになる。
【００６５】
そして、機能７「アプリケーション向け発行データの書込み」の処理は、当該アプリケーションプログラムの実行に必要なデータ（発行データ）をメモリ上に格納する処理である。たとえば、クレジット決済機能をもったアプリケーションプログラムの場合、プログラムを実行可能にするためには、クレジットカード番号やユーザの個人情報などを発行データとして書込む処理を行う必要がある。また、管理プログラムＳＤの場合、プログラムを実行可能にするためには、暗号通信路の開設に必要な鍵情報を発行データとして書込む処理を行う必要がある。
【００６６】
最後の機能９「セキュアな通信路の確保」の処理は、§１で述べたように、「ＳＣＰ：Secure Channel Protocol」と呼ばれる所定の暗号化プロトコルに基づいて、外部装置２００との間にセキュアな暗号通信路を開設して暗号通信を行う機能である。このような機能を実現するため、図２に示すように、管理プログラムＳＤ内には、暗号通信路開設ルーチンＲ１と鍵テーブルＴ１とが組み込まれている。暗号通信路開設ルーチンＲ１は、上記機能５「アプリケーションプログラムのインスタンスの生成」によって組み込まれることになり、鍵テーブルＴ１の内容は、上記機能７「アプリケーション向け発行データの書込み」によって書込まれることになる。
【００６７】
なお、GlobalPlatform（登録商標）の仕様では、管理プログラムＳＤが前述した「機能１〜機能７」を行う場合は、暗号通信路（機能９によって開設されたセキュアな通信路）を介して情報のやりとりを実行することが必須とされているが、「機能８：データの読出し」については暗号通信路の開設は必須にはなっていない。図５のステップＳ２のプロセスは、暗号通信路の開設前に暗号通信路を介すことなく情報のやり取りが可能なデータの読出処理が行われた例を示すものである。これに対して、機能４（ロード機能），機能５（インストール機能），機能７（発行機能）等の処理を実行させるためのコマンドは、図５のステップＳ５，Ｓ６のように、ＳＣＰにより保護されたコマンドとして、暗号化された状態で送信されることになる。
【００６８】
図９は、工場出荷時の情報処理装置１００（ＳＩＭカード１１）と外部装置２００（スマートフォン１０または外部サーバ２０）との間の情報通信の態様の一例を示すブロック図である。図示の例の場合、情報処理装置１００には、工場出荷時において、ＯＳプログラムと、ＩＳＤ（発行者ＳＤ：最上位階層の管理プログラム）と、２組のアプリケーションプログラムＡＰ０１，ＡＰ０２とが格納され、動作可能な状態になっている。ここで、管理プログラムＩＳＤには、暗号通信路開設ルーチンＲ００と鍵テーブルＴ００とが組み込まれており、これを利用して、所定の暗号化プロトコルに基づく暗号通信路の開設を行うことが可能である。
【００６９】
ここでは、説明の便宜上、図９に示すような外部装置２００（スマートフォン１０または外部サーバ２０）を用意した場合を考えてみよう。この外部装置２００に用意されているアプリケーションプログラムＡＰ（ＩＳＤ）は、情報処理装置１００内の管理プログラムＩＳＤとの間に暗号通信路を開設するためのプログラムであり、管理プログラムＩＳＤと同様に暗号通信路開設ルーチンＲ００と鍵テーブルＴ００とが組み込まれている。一方、図示の外部装置２００には、アプリケーションプログラムＡＰ（ＳＳＤ１）も用意されている。このプログラムＡＰ（ＳＳＤ１）は、情報処理装置１００内に後で組み込まれる管理プログラムＳＳＤ１との間に暗号通信路を開設するためのプログラムであり、暗号通信路開設ルーチンＲ１０と鍵テーブルＴ１０とが組み込まれている。
【００７０】
ここで、図９に示す工場出荷時の情報処理装置１００には、管理プログラムＩＳＤは組み込まれているが、管理プログラムＳＳＤ１はまだ組み込まれていない。すなわち、この図９に示す情報処理装置１００の階層構造は、図８の階層構造図におけるＩＳＤ，ＡＰ０１，ＡＰ０２のブロックのみが存在している状態ということができる。図８の階層構造図は、図９に示す情報処理装置１００を入手した利用者が、様々なアプリケーションプログラムを組み込む作業を行った後の状態ということになる。
【００７１】
図１０は、利用開始時の情報処理装置１００（ＳＩＭカード１１）と外部装置２００（スマートフォン１０または外部サーバ２０）との間の情報通信の態様の一例を示すブロック図である。図１０に示す情報処理装置１００には、新たに管理プログラムＳＳＤ１が格納され、動作可能な状態になっている。図示の管理プログラムＳＳＤ１には、暗号通信路開設ルーチンＲ１０と鍵テーブルＴ１０とが組み込まれており、これを利用して、外部装置２００側に用意されているアプリケーションプログラムＡＰ（ＳＳＤ１）との間に暗号通信路を開設して暗号通信を行うことが可能である。
【００７２】
なお、GlobalPlatform（登録商標）の仕様では、ＳＩＭカード１１内に複数の管理プログラムＳＤを組み込む際には、各管理プログラムＳＤが利用する鍵テーブルＴはそれぞれ別個のテーブルとして格納される。したがって、図１０に示す例の場合、鍵テーブルＴ００と鍵テーブルＴ１０とは別個の独立した鍵テーブルになっている。
【００７３】
もっとも、本発明を実施する上では、必ずしも各管理プログラムＳＤが利用する鍵テーブルＴを別個のテーブルとする必要はなく、たとえば、図３に示すような共通の鍵テーブルＴを設けておき、鍵テーブルＴ００，Ｔ１０は、この鍵テーブルＴの一部の領域として構成してもかまわない。たとえば、鍵テーブルＴ００はキーバージョン「０x２０」の行の領域によって構成し、鍵テーブルＴ１０は、キーバージョン「０x２１」の行の領域によって構成した場合、鍵テーブルＴ００に記録されている暗号鍵は、ＫｅｙＤ，ＫｅｙＥ，ＫｅｙＦ、鍵テーブルＴ１０に記録されている暗号鍵は、ＫｅｙＧ，ＫｅｙＨ，ＫｅｙＩということになる。
【００７４】
情報処理装置１００を、図９に示す状態から図１０に示す状態にもってゆくには、図８(a) に示す管理プログラムＩＳＤの下位階層、すなわち、管理プログラムＩＳＤの管理下に、新たな管理プログラムＳＳＤ１を組み込む処理を行う必要がある。そのためには、まず、外部装置２００から情報処理装置１００の管理プログラムＩＳＤに対して、暗号通信路開設コマンドを与え、管理プログラムＩＳＤの機能９「セキュアな通信路の確保」の処理によって両装置間に暗号通信路を開設した上で、この暗号通信路を介して、次のようなコマンドを与える作業を行えばよい。
【００７５】
まず、外部装置２００から情報処理装置１００の管理プログラムＩＳＤに対して、ロードコマンドを与え、管理プログラムＩＳＤによる機能４「アプリケーションプログラムのロード」の処理を実行させる。この処理により、新たな管理プログラムＳＳＤ１を構成するプログラムパッケージのバイナリデータが情報処理装置１００内のメモリに格納される。このプログラムパッケージは、インストール前のプログラムであり、ＣＰＵがそのまま実行可能な状態にはなっていない。
【００７６】
続いて、外部装置２００から情報処理装置１００の管理プログラムＩＳＤに対して、インストールコマンドを与え、管理プログラムＩＳＤによる機能５「アプリケーションプログラムのインスタンスの生成」の処理を実行させる。この処理により、メモリに格納されていたプログラムパッケージがメモリ上に展開され、管理プログラムＳＳＤ１を構成するアプリケーションインスタンスが生成される。このアプリケーションインスタンスは、ＣＰＵによって実行可能なルーチンではあるが、管理プログラムＳＳＤ１としての動作を行うには、まだ、発行データ（この場合、暗号鍵）が不足している。別言すれば、この時点では、図１０のＳＳＤ１のブロック内に描かれている暗号通信路開設ルーチンＲ１０はアプリケーションインスタンスとしてメモリ上に格納された状態になっているが、鍵テーブルＴ１０（の内容となる暗号鍵）は、まだメモリ上に格納されていない。
【００７７】
そこで最後に、外部装置２００から情報処理装置１００の管理プログラムＩＳＤに対して、発行データの書込コマンドを与え、管理プログラムＩＳＤによる機能７「アプリケーション向け発行データの書込み」の処理を実行させる。この処理により、管理プログラムＳＳＤ１の動作に必要な発行データがメモリに書込まれる。すなわち、図１０に示す鍵テーブルＴ１０（の内容となる暗号鍵）が発行データとしてメモリに書込まれることになる。これにより、新たな管理プログラムＳＳＤ１が、管理プログラムＩＳＤの管理下に、動作可能な状態で組み込まれたことになる。したがって、管理プログラムＳＳＤ１は、必要に応じて、暗号通信路開設ルーチンＲ１０および鍵テーブルＴ１０を用いて、機能９「セキュアな通信路の確保」の処理を実行することができる。
【００７８】
図８(a) の階層構造図に示されている管理プログラムＳＳＤ２も、同様の手順によって、管理プログラムＩＳＤの管理下に動作可能な状態で組み込まれる。そして今度は、管理プログラムＳＳＤ１に暗号通信路を開設させた上で、同様の手順によって、その管理下にアプリケーションプログラムＡＰ１１，ＡＰ１２を動作可能な状態で組み込むことができる。また、管理プログラムＳＳＤ２に暗号通信路を開設させた上で、同様の手順によって、その管理下にアプリケーションプログラムＡＰ２１〜ＡＰ２３および管理プログラムＳＳＤ３を動作可能な状態で組み込むことができる。更に、管理プログラムＳＳＤ３に暗号通信路を開設させた上で、その管理下にアプリケーションプログラムＡＰ３１，ＡＰ３２を動作可能な状態で組み込むことができる。
【００７９】
このような手順が行われることに留意すると、結局、ある１つの管理プログラムを指定して、その管理下に別なアプリケーションプログラムを組み込む処理を行う場合、当該指定管理プログラムの機能９「セキュアな通信路の確保」を利用して暗号通信路を開設し、当該暗号通信路を介して、当該指定管理プログラムに、機能４「アプリケーションプログラムのロード」，機能５「アプリケーションプログラムのインスタンスの生成（インストール）」，機能７「アプリケーション向け発行データの書込み」の処理を行わせるためのコマンドが与えられることになる。
【００８０】
このように、ある管理プログラムの下位階層に、新たなアプリケーションプログラムを組み込む場合、当該管理プログラムが開設した暗号通信路を介して、新たなアプリケーションプログラムのためのロード処理、インストール処理、発行処理を指示するコマンドが送信されることになる。したがって、第１の管理プログラムの下位階層に第２の管理プログラムを組み込む場合、下位となる第２の管理プログラムには、上位となる第１の管理プログラムのもつセキュリティ強度に応じて、潜在的にセキュリティに関する脆弱性が含まれる可能性がある。
【００８１】
たとえば、図７に示す例の場合、前述したとおり、Triple-ＤＥＳよりもＡＥＳの方が、理論的にセキュリティ強度が高いとされているため、暗号化プロトコルＳＣＰ０１よりも、ＳＣＰ０３の方がセキュリティ強度が高くなる。したがって、図８に示す階層構造図において、管理プログラムＩＳＤが暗号化プロトコルＳＣＰ０１を採用しており、管理プログラムＳＳＤ１が暗号化プロトコルＳＣＰ０３を採用していた場合、本来であれば、管理プログラムＳＳＤ１は、暗号化プロトコルＳＣＰ０３が有している高いセキュリティ機能を発揮することができるにもかかわらず、上位の管理プログラムＩＳＤと同等の危殆化が懸念され、高いセキュリティ機能を発揮することができなくなる。
【００８２】
具体的には、管理プログラムＩＳＤの下位階層に管理プログラムＳＳＤ１を組み込む作業中に、万一、何らかのクラッキング攻撃を受けた場合、管理プログラムＩＳＤが採用する暗号化プロトコルＳＣＰ０１のセキュリティ強度に応じた防御しか行うことができない。別言すれば、管理プログラムＳＳＤ１をロードしたり、インストールしたり、その発行データ（暗号鍵）の書込みをしたりする作業の信頼性は、管理プログラムＩＳＤのセキュリティ強度の範囲内でしか保証されないことになる。
【００８３】
このように、個々の管理プログラムが、本来有しているセキュリティ機能を十分に発揮できない事態が生じることは、単に、セキュリティ強度の低下を招くだけではなく、より重大な問題に発展する可能性がある。たとえば、上例の場合、管理プログラムＩＳＤの下位階層に管理プログラムＳＳＤ１が組み込まれると、図１０に示すように、情報処理装置１００内には、管理プログラムＩＳＤと管理プログラムＳＳＤ１とが並存することになる。
【００８４】
この場合、外部装置２００のアプリケーションプログラムＡＰ（ＩＳＤ）が管理プログラムＩＳＤに対して暗号通信を行っている際には、あくまでもセキュリティ強度の低い暗号化プロトコルＳＣＰ０１に基づく暗号通信という前提で通信を行うことになり、外部装置２００のアプリケーションプログラムＡＰ（ＳＳＤ１）が管理プログラムＳＳＤ１に対して暗号通信を行っている際には、あくまでもセキュリティ強度の高い暗号化プロトコルＳＣＰ０３に基づく暗号通信という前提で通信を行うことになる。ところが、実際には、管理プログラムＳＳＤ１には、情報処理装置１００への組込作業に起因するセキュリティに関する脆弱性が潜んでいるため、本来有しているセキュリティ機能を十分に発揮することはできないことになる。
【００８５】
要するに、上例の場合、管理プログラムＳＳＤ１には、「暗号アルゴリズムとしてＡＥＳを用いているＳＣＰ０３」というラベルが貼られているものの、その品質は、「暗号アルゴリズムとしてTriple-ＤＥＳを用いているＳＣＰ０１」と同等でしかない、という現象が発生していることになる。そのため、ラベルの品質を信用して暗号通信を行った結果、不測の事態が生じてしまうおそれがある。本発明が解決しようとする課題は、このような不測の事態の発生である。このような課題を解決するための具体的な方法は、§３以降で詳述する。
【００８６】
なお、上記課題は、第１の管理プログラムの下位階層に第２の管理プログラムを新たに組み込む場合だけでなく、既存の管理プログラムについて、階層構造上の配置を変更する場合にも生じる。たとえば、GlobalPlatform（登録商標）の仕様では、階層構造をもって組み込まれたアプリケーションプログラムについて、上位となる管理プログラムを変更する処理が認められている。
【００８７】
図１１は、図８(a) に示すアプリケーションプログラムの階層構造に変更が加えられた状態を示す図である。この例の場合、図８(a) の階層構造図に示されている状態において、一般アプリケーションプログラムＡＰ０２が、管理プログラムＩＳＤの下位から、管理プログラムＳＳＤ１の下位へと移動され（白抜矢印Ｍ１参照）、管理プログラムＳＳＤ３が、管理プログラムＳＳＤ２の下位から、管理プログラムＳＳＤ１の下位へと移動されている。管理プログラムＳＳＤ３の下位には、一般アプリケーションプログラムＡＰ３１，ＡＰ３２が配置されていたため、これらのプログラムＡＰ３１，ＡＰ３２は、管理プログラムＳＳＤ３に付随して、枝ごとそっくり移動することになる（白抜矢印Ｍ２参照）。図１１に示す破線のブロックは移動前の状態を示し、太線のブロックは移動後の状態を示している。
【００８８】
このような移動は、実用上は、特定の管理プログラムについて機能制限が課されている場合に行われることが多い。たとえば、図１１に示す例において、管理プログラムＩＳＤや管理プログラムＳＳＤ２には、機能４（ロード機能）や機能５（インストール機能）が備わっているが、管理プログラムＳＳＤ１については、機能４（ロード機能）や機能５（インストール機能）が制限されていた場合を考えてみよう。この場合、管理プログラムＳＳＤ１は、自己の下位に管理プログラムＳＳＤ３を直接インストールすることができないので、たとえば、管理プログラムＳＳＤ２（管理プログラムＩＳＤでもよい）の下位に、とりあえず管理プログラムＳＳＤ３をインストールした後、これを管理プログラムＳＳＤ１の下位に移動した後、発行データ（暗号鍵）を書込む、という手順を踏まざるを得ない。実際には、このような事情により階層構造の変更が行われることも少なくない。
【００８９】
このような階層構造の変更は、要するに、自己を管理下におく管理プログラム（自己の上位の管理プログラム）を変更する処理ということになるが、新たに自己の上位となる管理プログラムによる発行データの書込処理が必要になるため、前述した問題と同じ問題が生じることになる。たとえば、図１１に示す例の場合、管理プログラムＳＳＤ３は、管理プログラムＳＳＤ１の管理下に移動することになるが、鍵情報の書込みがまだ行われていない場合は、この移動を行った後、管理プログラムＳＳＤ１による機能７「アプリケーション向け発行データの書込み」の処理が必要になる。もちろん、当該処理は、管理プログラムＳＳＤ１が開設した暗号通信路を介して行われる。
【００９０】
このような事情から、図１１に白抜矢印Ｍ２で示すような階層構造上の配置変更を行う場合にも、これまで述べてきた問題と同じ問題が生じることになる。すなわち、管理プログラムＳＳＤ３が高いセキュリティ強度を有していたとしても、これを管理する上位の管理プログラムＳＳＤ１が低いセキュリティ強度しか有していなければ、管理プログラムＳＳＤ３は、潜在的に、高いセキュリティ機能を発揮することができなくなる。§３以降では、このような課題を解決するための具体的な方法についても触れることにする。
【００９１】
＜＜＜  §３．  本発明に係る情報処理装置の基本的特徴  ＞＞＞
本発明は、上下関係をもった複数の管理プログラムが組み込まれる情報処理装置において、組込処理時に十分なセキュリティを確保することができないため、潜在的にセキュリティに関する脆弱性を含むという問題を解決するためのものであり、個々の管理プログラムの暗号通信路開設機能が、本来のセキュリティ能力を十分に発揮できるようにすることを目的としている。ここでは、本発明に係る情報処理装置の基本的特徴を述べておく。
【００９２】
＜３−１．  本発明に係る情報処理装置の基本構成＞
図１２は、本発明に係る情報処理装置１００の基本構成と、外部装置２００との間の情報通信の態様を示すブロック図である。ここでも、§１，§２における説明と同様に、情報処理装置１００が、スマートフォン１０に装着されたＳＩＭカード１１であり、外部装置２００が、当該スマートフォン１０または外部サーバ２０である場合を想定して、以下の説明を行うことにする。
【００９３】
情報処理装置１００は、外部装置２００との間で暗号通信を行う機能を有しており、図示のとおり、情報格納部１１０およびプログラム実行部１２０を備えている。この実施例の場合、情報格納部１１０は、不揮発性メモリによって構成され、様々なプログラムやデータが格納される。プログラム実行部１２０は、ＣＰＵおよび必要に応じてＲＡＭなどの作業用メモリを備えており、情報格納部１１０に格納されているデータを利用して、情報格納部１１０に格納されているプログラムを実行する機能を有している。
【００９４】
情報格納部１１０には、ＯＳプログラムおよびアプリケーションプログラム、ならびに、これらの各プログラムに関連するデータが格納されている。§１で述べたとおり、アプリケーションプログラムは、管理プログラムと一般アプリケーションプログラムとによって構成され、図示の例の場合、２組の管理プログラムＩＳＤ，ＳＳＤ１と、２組の一般アプリケーションプログラムＡＰ０１，ＡＰ０２が格納されている状態が示されている。ここで、管理プログラムＩＳＤおよびＳＳＤ１の間には、図８(a) の階層構造図に示されているように、相互に上下関係が定義されている。
【００９５】
なお、図１２に示す実施例では、情報格納部１１０に、アプリケーションプログラムとして、２組の管理プログラムと２組の一般アプリケーションプログラムとが格納されている例が示されているが、本発明に係る情報処理装置では、必ずしも複数の管理プログラムと複数の一般アプリケーションプログラムとが格納されている必要はなく、少なくとも１つの管理プログラム（図示の例の場合は、管理プログラムＩＳＤ）が格納されている状態であれば、本発明を実施することが可能である。
【００９６】
ここで、管理プログラムＩＳＤ，ＳＳＤ１は、既に述べたとおり、自己を上位階層、別なアプリケーションプログラム（一般アプリケーションプログラムであるか、管理プログラムであるかを問わない）を下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、自己もしくは自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能を有し、外部装置２００から与えられる暗号通信路開設コマンドに基づいて当該機能が実行される。
【００９７】
また、情報格納部１１０には、ＯＳプログラムや各アプリケーションプログラムに関連するデータも格納されている。図には、このようなデータの一部として、鍵テーブルＴが格納されている状態が示されている。図では、便宜上、単一の鍵テーブルＴが情報格納部１１０に格納されている状態が示されているが、GlobalPlatform（登録商標）の仕様では、前述したとおり、個々の管理プログラムＩＳＤ，ＳＳＤ１のそれぞれについて、別個独立した鍵テーブルＴ（ＩＳＤ），Ｔ（ＳＳＤ１）がそれぞれ格納されることになる。
【００９８】
本発明に係る情報処理装置１００の重要な特徴は、情報格納部１１０に、セキュリティ強度順位リストＬが格納されている点である。このセキュリティ強度順位リストＬは、複数の暗号化プロトコルについて、セキュリティ強度の順位を示す表であり、たとえば、図１３に例示するようなリストを用いることができる。図示のリストに登録されているＳＣＰ０３（ＡＥＳ），ＳＣＰ８１（ＡＥＳ），ＳＣＰ８０（Triple-DES），ＳＣＰ０２（Triple-DES），ＳＣＰ０１（Triple-DES）なるデータは、個々の暗号化プロトコル（GlobalPlatform（登録商標）の仕様におけるセキュアチャネルプロトコル）を示すものであり、図示のとおりの強度順位が付与されている。
【００９９】
このリストに登録されている暗号化プロトコルを示すデータは、「ＳＣＰｘｘ」（ｘｘの部分は２桁の数字）なる形式の前半部分と、括弧書きで記載された後半部分とによって構成されている。ここで、前半部分は、一般に「ＳＣＰ種別」と呼ばれている「プロトコルの種別を示す情報」であり、特定のプロトコルを識別するための情報になる。一方、後半部分は、「暗号化に用いる暗号アルゴリズムを示す情報」であり、当該ＳＣＰ種別が利用する暗号アルゴリズムを特定する情報になる。現在、GlobalPlatform（登録商標）による仕様化がなされているＳＣＰ種別および当該ＳＣＰ種別が利用する暗号アルゴリズムは、図７に示したとおりである。
【０１００】
§２で述べたとおり、個々の暗号アルゴリズムによって、セキュリティ強度に差があり、たとえば、Triple-ＤＥＳよりもＡＥＳの方が、理論的にセキュリティ強度が高いとされている。また、同じ暗号アルゴリズムを採用していたとしても、ＳＣＰ種別によってセキュリティ強度に差がある。したがって、個々の暗号化プロトコルについて、セキュリティ強度に順位づけを行うことが可能である。セキュリティ強度順位リストＬは、このような順位づけに基づいて作成されたリストであり、本発明を実施するにあたり、予め情報格納部１１０に書込んでおくようにする。
【０１０１】
なお、このセキュリティ強度順位リストＬには、同一順位が付与された複数の暗号化プロトコルを登録することができる。たとえば、図１３に示す例の場合、ＳＣＰ８０（Triple-DES），ＳＣＰ０２（Triple-DES）が、いずれも第３順位として登録されており、第４順位を欠番として、ＳＣＰ０１（Triple-DES）が第５順位として登録されている。
【０１０２】
また、図１３に示すセキュリティ強度順位リストＬでは、個々の暗号化プロトコルについて、「プロトコルの種別を示す情報（ＳＣＰ種別）」と「暗号化に用いる暗号アルゴリズムを示す情報（暗号アルゴリズム）」との双方が登録されているが、「プロトコルの種別を示す情報（ＳＣＰ種別）」のみで固有の暗号化プロトコルを特定できるのであれば、「暗号化に用いる暗号アルゴリズムを示す情報（暗号アルゴリズム）」の部分を省略して、セキュリティ強度順位リストＬとしては、「プロトコルの種別を示す情報（ＳＣＰ種別）」のみを登録しておけば足りる。同様に、「暗号化に用いる暗号アルゴリズムを示す情報（暗号アルゴリズム）」のみで固有の暗号化プロトコルを特定できるのであれば、「プロトコルの種別を示す情報（ＳＣＰ種別）」の部分を省略して、セキュリティ強度順位リストＬとしては、「暗号化に用いる暗号アルゴリズムを示す情報（暗号アルゴリズム）」のみを登録しておけば足りる。
【０１０３】
＜３−２．  本発明が解決すべき問題＞
さて、図１３に例示するようなセキュリティ強度順位リストＬを予め用意しておけば、情報処理装置１００に既にインストールされている、もしくは、これからインストールする予定の複数の管理プログラムについて、この順位リストＬ上での順位を比較することが可能である。たとえば、図１２に示す例において、管理プログラムＩＳＤの暗号通信路開設機能に用いられる暗号化プロトコルがＳＣＰ０３（ＡＥＳ）であり、管理プログラムＳＳＤ１の暗号通信路開設機能に用いられる暗号化プロトコルがＳＣＰ０２（Triple-DES）であった場合、順位リストＬ上での前者の強度順位が第１位、後者の強度順位が第３位であるので、前者の方が後者よりも上位にある、との判定を行うことができる。
【０１０４】
上例の場合、管理プログラムＩＳＤによって開設された暗号通信路の方が、管理プログラムＳＳＤ１によって開設された暗号通信路よりも、セキュリティ強度は高いことになる。ただ、どちらの管理プログラムによって開設された暗号通信路を利用するかは、外部装置２００側のアプリケーションプログラムが決定する事項であり、当該アプリケーションプログラムの設計者の判断に委ねられる。たとえば、送受する情報の重要性を考慮して、簡便な暗号化処理を優先して管理プログラムＳＳＤ１を選択するケースもあるし、暗号強度を優先して管理プログラムＩＳＤを選択するケースもある。また、そもそも古いタイプのアプリケーションプログラムであるため、暗号アルゴリズムとしてTriple-DESにしか対応していない、という事情がある場合には、管理プログラムＳＳＤ１を選択せざるを得ない。
【０１０５】
このような事情を考慮すれば、情報処理装置１００内に複数の管理プログラムが組み込まれた状態になっており、しかもそれぞれの暗号通信路開設機能のセキュリティ強度に差が生じているという状況それ自体には、何ら支障があるわけでない。外部装置２００側のアプリケーションプログラムは、情報処理装置１００側の各管理プログラムのもつ暗号通信路開設機能のセキュリティ強度を把握した上で、適切な管理プログラムを選択して暗号通信路開設コマンドを与えることにより、所望のセキュリティ強度をもった暗号通信路を介して情報の送受を行うことができる。
【０１０６】
本願発明者が問題視している事項は、上下関係をもった複数の管理プログラムが組み込まれている情報処理装置の場合、組込処理時に十分なセキュリティを確保することができないため、潜在的にセキュリティに関する脆弱性を含んでいる可能性があるという点である。このような問題が生じるのは、上位管理プログラムの管理下に、下位管理プログラムを組み込む際に、上位管理プログラムによって開設された暗号通信路が利用されるためである。
【０１０７】
図８(b) には、管理プログラムの機能として機能１〜機能９を示したが、上位管理プログラムの管理下に、下位管理プログラムを組み込む場合、まず、機能４（ロード機能）によって下位管理プログラムのパッケージを情報処理装置１００にロードし、機能５（インストール機能）によってこれをインストールし、更に、機能７（発行機能）によって発行処理（具体的には、下位管理プログラムが利用する暗号鍵の書込処理）を行うことになる。これらの機能は、いずれも上位管理プログラムによって開設された暗号通信路を利用して実行される。これは、この段階では、組込対象となる下位管理プログラムは、まだ正常に動作することができず、自ら暗号通信路を開設する機能を果たすことができないので当然である。
【０１０８】
このような事情から、下位管理プログラムのプログラムルーチンや下位管理プログラムが用いる暗号鍵についてのセキュリティ強度は、上位管理プログラムが開設した暗号通信路のセキュリティ強度に左右されることになる。より具体的に説明すれば、上例のように、上位管理プログラムＩＳＤの暗号通信路開設機能に用いられる暗号化プロトコルの方が、下位管理プログラムＳＳＤ１の暗号通信路開設機能に用いられる暗号化プロトコルよりも、セキュリティ強度が高い場合もしくは同じ場合は問題ないが、低い場合には問題が生じることになる。
【０１０９】
たとえば、上位管理プログラムが採用する暗号化プロトコルがＳＣＰ８０（Triple-DES）であり、下位管理プログラムが採用する暗号化プロトコルがＳＣＰ０１（Triple-DES）であった場合は、前者の順位（第３位）が後者の順位（第５位）よりも高いため問題はない。同様に、上位管理プログラムが採用する暗号化プロトコルがＳＣＰ８０（Triple-DES）であり、下位管理プログラムが採用する暗号化プロトコルがＳＣＰ０２（Triple-DES）であった場合は、両者の順位（いずれも第３位）は等しいため問題はない。
【０１１０】
ところが、上位管理プログラムが採用する暗号化プロトコルがＳＣＰ８０（Triple-DES）であり、下位管理プログラムが採用する暗号化プロトコルがＳＣＰ０３（AES）であった場合は、前者の順位（第３位）が後者の順位（第１位）よりも低くなるため問題が生じる。すなわち、下位管理プログラムそれ自身は、第１位の強度順位を有するセキュリティ強度の高いプログラムであるが、上位管理プログラムの管理下に組み込まれる際に、上位管理プログラムが開設した暗号通信路を介した処理が行われるため、この組込作業中に、何らかのクラッキング攻撃を受けた場合、その信頼性は、上位管理プログラムのセキュリティ強度の範囲内でしか保証されないことになる。
【０１１１】
したがって、この場合、下位管理プログラム自身は、第１位のセキュリティ強度（暗号化プロトコルがＳＣＰ０３（AES）の強度）を有しているが、組込時に潜在的な脆弱性が含まれている可能性があるため、実質的には、上位管理プログラムのもつ第３位のセキュリティ強度（暗号化プロトコルＳＣＰ８０（Triple-DES）の強度）しか有しておらず、第１位の品質ラベルが貼られているものの、実際の品質は第３位でしかない、という齟齬が生じることになる。このため、ラベルの品質を信用して暗号通信を行った結果、不測の事態が生じてしまうおそれがある。
【０１１２】
＜３−３．  本発明の基本的な技術思想＞
結局、上例の場合の下位管理プログラムは、本来であれば、第１位のセキュリティ強度を有する下位管理プログラムでありながら、実際には、本来のセキュリティ能力を十分に発揮できる状態にはなっていないことになる。本発明の基本的な技術思想は、このような弊害が生じる状態になってしまうケースでは、上位管理プログラムの管理下に下位管理プログラムが組み込まれることがないようにする、というものである。
【０１１３】
別言すれば、第１の管理プログラムの管理下に、第２の管理プログラムが組み込まれている場合には、必ず、第１の管理プログラムの暗号化プロトコルのセキュリティ強度順位が、第２の管理プログラムの暗号化プロトコルのセキュリティ強度順位と等しいか、より上順位になるようにし、第２の管理プログラムの暗号化プロトコルのセキュリティ強度順位の方が、第１の管理プログラムの暗号化プロトコルのセキュリティ強度よりも上順位になるような状況を作り出さないような何らかの措置を施す、という着想が、本発明の基本的な技術思想である。
【０１１４】
そこで、図１２に示す情報処理装置１００では、予めセキュリティ強度順位リストＬを設けておき、情報格納部１１０に格納されている第１の管理プログラム（たとえば、ＩＳＤ）の管理下に、別な第２の管理プログラム（たとえば、ＳＳＤ１）を組み込むための処理を行う組込用コマンドが外部装置から与えられたときに、この順位リストＬ上で、第１の管理プログラムの暗号通信路開設機能に用いられる第１の暗号化プロトコルよりも、第２の管理プログラムの暗号通信路開設機能に用いられる第２の暗号化プロトコルの方が上順位にある場合には、プログラム実行部１２０が、当該組込用コマンドの実行を拒絶するようにしている。
【０１１５】
したがって、たとえば、情報格納部１１０内に、第１の管理プログラムＩＳＤが既に格納されている状態において、その管理下に、新たに第２の管理プログラムＳＳＤ１を組み込むための処理を行う組込用コマンドが外部装置２００から与えられた場合、図１３に例示するセキュリティ強度順位リストＬが用意されていたとすると、当該組込用コマンドは、次のように処理されることになる。
【０１１６】
ここでは、第１の管理プログラムＩＳＤが、第３順位の暗号化プロトコルＳＣＰ８０（Triple-DES）を採用していた場合を考えてみよう。この場合、新たに組み込むべき第２の管理プログラムＳＳＤ１が用いる暗号化プロトコルが、同じ第３順位の暗号化プロトコルＳＣＰ８０（Triple-DES），ＳＣＰ０２（Triple-DES）や、下位の第５順位である暗号化プロトコルＳＣＰ０１（Triple-DES）である場合には、当該組込用コマンドは実行され、第１の管理プログラムＩＳＤの管理下に第２の管理プログラムＳＳＤ１が組み込まれることになる。
【０１１７】
これに対して、新たに組み込むべき第２の管理プログラムＳＳＤ１が用いる暗号化プロトコルが、上位である第１順位の暗号化プロトコルＳＣＰ０３（AES）や、第２順位のプロトコルＳＣＰ８１（AES）である場合には、当該組込用コマンドは拒絶され、第１の管理プログラムＩＳＤの管理下に第２の管理プログラムＳＳＤ１を組み込む処理は実行されないことになる。
【０１１８】
このように、第１の管理プログラムの管理下に、より高い順位の暗号化プロトコルを用いる第２の管理プログラムを組み込むための組込用コマンドが与えられた場合に、プログラム実行部１２０が、当該組込用コマンドの実行を拒絶するようにすれば、第２の管理プログラムが本来のセキュリティ能力を十分に発揮できない状態で組み込まれてしまうことを防止できる。
【０１１９】
すなわち、プログラム実行部１２０は、「第１の管理プログラムが用いる暗号化プロトコルの強度順位が、第２の管理プログラムが用いる暗号化プロトコルの強度順位と同等か、それ以上である」という実行条件を満たす場合にのみ、第２の管理プログラムを第１の管理プログラムの管理下に組み込む処理を実行することになる。このため、情報処理装置１００に正常に組み込まれた個々の管理プログラムは、いずれも、本来の能力に応じた十分なセキュリティ能力を発揮できることになる。
【０１２０】
なお、図１２に示す構成において、セキュリティ強度順位リストＬを参照して、上記実行条件が満たされているか否かを判定する処理は、情報格納部１１０に格納されている任意のプログラムに実行させることができる。たとえば、管理プログラムＩＳＤの管理下に、管理プログラムＳＳＤ１を組み込むための組込用コマンドが与えられた場合、当該コマンドの実行条件が満たされているか否かの判定処理は、管理プログラムＩＳＤによって実行することができる。
【０１２１】
ただ、以下に述べる各実施例では、この判定処理をＯＳプログラムに実行させるようにしている。これは、GlobalPlatform（登録商標）の仕様では、ＩＣカード内に組み込まれている複数のアプリケーションプログラムが、相互に直接的に情報伝達を行って連携動
作を行う場合には、ＯＳプログラムを仲介させた初期手続が必要になるためである。このような事情から、セキュリティ強度順位リストＬを参照して、上記実行条件が満たされているか否かを判定する処理はＯＳプログラムに委ねるようにするのが好ましい。なお、上記初期手続を実行した後は、複数のアプリケーションプログラムが、相互に直接的に情報伝達を行う連携動作が可能になるが、以下に述べる各実施例では、説明の便宜上、このような連携動作による処理例ではなく、ＯＳプログラムを仲介させた処理例を示すことにする。
【０１２２】
外部装置２００からの組込用コマンドを受けた管理プログラムは、当該組込用コマンドに関して実行条件が満たされているか否かの判定結果をＯＳプログラムから通知してもらい、実行条件が満たされていた場合には当該組込用コマンドを実行して外部装置２００に対して所定のレスポンスを返すことになる。一方、実行条件が満たされていない場合には、当該組込用コマンドに対するレスポンスとして、外部装置２００に対してエラーを示すレスポンスを返すことになる。
【０１２３】
＜３−４．  セキュリティ強度順位リストＬの構成＞
本発明に係る情報処理装置１００では、図１２に示すように、情報格納部１１０内に予めセキュリティ強度順位リストＬを用意しておく必要がある。このセキュリティ強度順位リストＬは、たとえば、図１３の表に示すとおり、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すものであれば、どのようなリストであってもかまわない。また、情報格納部１１０内のどの領域に格納しておいてもかまわない。上述したように、セキュリティ強度順位リストＬを参照して、所定の実行条件が満たされているか否かを判定する処理をＯＳプログラムに行わせる場合は、セキュリティ強度順位リストＬは、メモリ上のＯＳプログラムの管理領域に格納するようにすればよい。
【０１２４】
なお、実用上は、外部装置２００からのコマンドに基づいてセキュリティ強度順位リストＬを編集するためのリスト編集プログラムを用意しておき、これを情報格納部１１０に格納しておくのが好ましい。このリスト編集プログラムは、独立したアプリケーションプログラムとして用意してもよいし、管理プログラム（たとえば、最上位の管理プログラムＩＳＤ）もしくはＯＳプログラムの一部に補助的なルーチンとして組み込むようにしてもかまわない。
【０１２５】
このリスト編集プログラムには、外部装置２００から、新たな暗号化プロトコルをセキュリティ強度順位リストＬに追加する旨のコマンドが与えられたときに、当該新たな暗号化プロトコルを、外部装置２００から指定された特定の順位に追加登録し、必要に応じて、他の暗号化プロトコルの順位を適宜更新する処理機能をもたせておくようにする。
【０１２６】
図７には、現時点でGlobalPlatform（登録商標）の仕様に定められている暗号化プロトコルの一覧表を示したが、この表における「ＳＣＰｘｘ」は、現時点では仕様化はなされていないが、今後、仕様化される可能性のあるプロトコルである。将来は、この他にも様々な新プロトコルが提案され、適宜採択されてゆくものと予想される。上述したリスト編集プログラムを設けておけば、新たに採択された暗号化プロトコルをセキュリティ強度順位リストＬの特定の順位の位置に追加することが可能であり、もちろん、削除したり、順位を更新したりする編集も可能である。もちろん、外部装置２００側でセキュリティ強度順位リストＬを新たに用意し、当該新セキュリティ強度順位リストＬによって、旧セキュリティ強度順位リストＬをそっくり書き換えるような方法でリストの内容を更新する方法を採ってもかまわない。
【０１２７】
なお、新たな暗号化プロトコルをセキュリティ強度順位リストＬに追加する際に、外部装置２００側で当該新プロトコルの順位を指定する処理を行う代わりに、情報処理装置１００内のリスト編集プログラムによって、当該新プロトコルの順位を自動的に決定し、決定された位置に自動的に追加登録されるようにすることも可能である。
【０１２８】
たとえば、図１３に示すリストＬの場合、前述したとおり、個々の暗号化プロトコルについて、「プロトコルの種別を示す情報（ＳＣＰ種別）」と「暗号化に用いる暗号アルゴリズムを示す情報（暗号アルゴリズム）」とが登録されている。そこで、情報格納部１１０内に、個々の暗号アルゴリズム自体についてのセキュリティ強度の順位を示す「アルゴリズム順位リストＬＬ」なるリストを格納しておくようにすれば、当該アルゴリズム順位リストＬＬを参照することにより、追加登録すべき新プロトコルの順位を自動的に決定することができる。
【０１２９】
具体的には、外部装置２００から、「プロトコルの種別を示す情報（ＳＣＰ種別）」と「暗号化に用いる暗号アルゴリズムを示す情報（暗号アルゴリズム）」とを含んだ、新たな暗号化プロトコルをセキュリティ強度順位リストＬに追加する旨のコマンドが与えられたときに、リスト編集プログラムが、当該新プロトコルについての登録順位を、アルゴリズム順位リストＬＬを参照することにより自動決定し、当該新プロトコルを、自動決定した順位に追加登録し、必要に応じて、他の暗号化プロトコルの順位を適宜更新する処理を行うようにすればよい。
【０１３０】
たとえば、アルゴリズム順位リストＬＬとして、第１順位：暗号アルゴリズム「AES」、第２順位：暗号アルゴリズム「Triple-DES」、第３順位：暗号アルゴリズム「RSA」のような暗号アルゴリズム自体についてのセキュリティ強度の順位を示すリストを用意しておけば、追加登録の対象として、「ＳＣＰｘｘ（Triple-DES）」なる新プロトコルが与えられた場合、リスト編集プログラムは、当該新プロトコルの「暗号アルゴリズム」の部分が「Triple-DES」である点に着目し、アルゴリズム順位リストＬＬを参照することにより、当該新プロトコルの登録順位を、暗号アルゴリズム「AES」を用いるプロトコルより下位、暗号アルゴリズム「RSA」を用いるプロトコルより上位と判定することにより自動的に決定し、所定順位の位置に追加登録することができる。
【０１３１】
＜＜＜  §４．  実行条件の判定対象となる組込用コマンド  ＞＞＞
本発明の特徴は、既に述べたとおり、第１の管理プログラムの管理下に、別な第２の管理プログラムを組み込むための処理を行う「組込用コマンド」が外部装置２００から与えられたときに、セキュリティ強度順位リストを参照して、当該「組込用コマンド」について所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶する点にある。
【０１３２】
ここで、「組込用コマンド」とは、第１の管理プログラムの管理下に、第２の管理プログラムを組み込むための処理を目的としたコマンドであれば、どのようなコマンドであってもかまわない。
【０１３３】
§３−２で述べたとおり、上位管理プログラムの管理下に、下位管理プログラムを組み込む場合、まず、機能４（ロード機能）によって下位管理プログラムのパッケージを情報処理装置１００にロードし、機能５（インストール機能）によってこれをインストールし、更に、機能７（発行機能）によって発行処理（下位管理プログラムが利用する暗号鍵の書込処理）を行うことになる。
【０１３４】
したがって、本願にいう「組込用コマンド」とは、下位管理プログラムのパッケージを情報処理装置１００にロードするロードコマンド（機能４）であってもよいし、下位管理プログラムをインストールするインストールコマンド（機能５）であってもよいし、下位管理プログラム用の発行データに相当する暗号鍵を書込むための書込コマンド（機能７）であってもよい。あるいは、これらに付随するコマンドであってもかまわない。
【０１３５】
そこで、以下、具体的なコマンドの書式例を示しながら、本発明に係る実行条件の判定対象となる「組込用コマンド」として、どのコマンドを利用することができるかを簡単に説明しておくことにする。
【０１３６】
図１４は、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」なるパッケージ名であるかの確認を行う。ここで、「バイナリデータ」の実体は、新たに組み込まれる下位管理プログラムＳＳＤ１用のプログラムデータである。
【０１４５】
このように、「アプリケーションロードコマンド」は、特定のアプリケーションプログラムのパッケージを情報処理装置１００内のメモリに格納するためのコマンドであるため、理論的には、「本発明における実行条件の判定対象となる組込用コマンド」として利用することは可能である。たとえば、上例の手順は、上位管理プログラムＩＳＤの管理下に、新たに下位管理プログラムＳＳＤ１を組み込む場合の手順であるから、上述した「INSTALL for load (#3)＋PackSSD1」や「LOAD (#3)＋バイナリデータ」は、第１の管理プログラムの管理下に、別な第２の管理プログラムを組み込むための処理を行う「組込用コマンド」に該当する。
【０１４６】
したがって、当該コマンドが外部装置２００から与えられたときに、セキュリティ強度順位リストＬを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶することができる。
【０１４７】
しかしながら、GlobalPlatform（登録商標）の仕様に準拠したＩＣカードの場合、「アプリケーションロードコマンド」に基づいて、実行条件が満たされているか否かの判定を行うことはできない。これは、実行条件が満たされているか否かの判定には、新たに組み込まれる下位管理プログラムＳＳＤ１が暗号通信路開設機能に用いる暗号化プロトコルを特定する必要があり、パッケージ名「PackSSD1」で管理プログラムＳＳＤ１用のパッケージが導入された段階では、用いる暗号化プロトコルを特定することができないためである（後述するように、管理プログラムＳＤが実際に用いる暗号化プロトコルは、インストール時に指定される）。
【０１４８】
結局、GlobalPlatform（登録商標）の仕様に準拠したＩＣカードでは、「アプリケーションロードコマンド」に基づいて本発明における実行条件の判定を行うことができない。よって、§５以降で述べる実施形態には、「アプリケーションロードコマンド」を本発明における「組込用コマンド」として利用して実行条件の判定を行う例は示されていない。
【０１４９】
＜４−３．  アプリケーションプログラムのインストールコマンド＞
続いて、図１４(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）」を用いて暗号通信路の開設を行うことになる。
【０１５６】
このように、管理プログラムＳＤについてのアプリケーションプログラムのインストールコマンドには、パラメータの部分に、当該管理プログラムＳＤが将来利用することになる暗号化プロトコルを示す情報が含まれている。したがって、「本発明における実行条件の判定対象となる組込用コマンド」として利用することが可能である。すなわち、上例の手順は、上位管理プログラムＩＳＤの管理下に、新たに下位管理プログラムＳＳＤ１を組み込む場合の手順であるから、上述した「INSTALL for install (#n)＋パッケージ名＋アプリ名＋パラメータ」なるコマンドは、第１の管理プログラムの管理下に、別な第２の管理プログラムを組み込むための処理を行う「組込用コマンド」に該当する。
【０１５７】
したがって、当該コマンドが外部装置２００から与えられたときには、セキュリティ強度順位リストＬを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶することができる。
【０１５８】
具体的には、上例の場合、セキュリティ強度順位リストＬを参照した順位判定の対象になるのは、上位管理プログラムＩＳＤが用いる暗号化プロトコルと、下位管理プログラムＳＳＤ１（インストール対象）が用いる暗号化プロトコルである。ここで、前者は、上位管理プログラムＩＳＤが使用するメモリ領域に記録されている情報から認識することができ（通常、用いる暗号化プロトコルを示す情報がメモリの所定領域に記録されている）、後者は、前述のように、アプリケーションプログラムのインストールコマンドのパラメータの部分に記録されている。
【０１５９】
たとえば、上位管理プログラムＩＳＤが用いる暗号化プロトコルが「ＳＣＰ０２（Triple-DES）」であり、下位管理プログラムＳＳＤ１（インストール対象）が用いる暗号化プロトコルが「ＳＣＰ０３（AES）」であった場合、図１３に示すセキュリティ強度順位リストＬを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、管理プログラムＩＳＤの下位階層に管理プログラムＳＳＤ１をインストールすることを指示するコマンドは拒絶されることになる。
【０１６０】
このように、「アプリケーションプログラムのインストールコマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用するのに最適なコマンドということになる。そこで、§５では、第１の実施形態として、「アプリケーションプログラムのインストールコマンド」に対して実行可否を判定する実施例を詳述する。
【０１６１】
＜４−４．  アプリケーション向け発行データの書込コマンド＞
ここでは、図１４(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)＋鍵データ」なる形式の書込コマンドを受信した場合、当該書込コマンドが鍵データの書込コマンドであることを認識することができる。一方、書込コマンドその２は、鍵データの書込専用のコマンドであるから、当該書込コマンドを受信した時点で、鍵データの書込コマンドであることを認識することができる。
【０１６９】
ここで、鍵データの書込コマンド（「STORE DATA (#n)＋鍵データ」および「PUT KEY (#n)＋鍵データ」なるコマンド）は、第１の管理プログラムの管理下に、別な第２の管理プログラムを組み込むための処理（最終段階の処理）を行う「組込用コマンド」に該当するので、「本発明における実行条件の判定対象となる組込用コマンド」として利用することが可能である。
【０１７０】
したがって、鍵データの書込コマンドが外部装置２００から与えられたときには、セキュリティ強度順位リストＬを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該コマンドを実行し、満たされていない場合には当該コマンドを拒絶することができる。
【０１７１】
具体的には、上例の場合、セキュリティ強度順位リストＬを参照した順位判定の対象になるのは、上位管理プログラムＩＳＤが用いる暗号化プロトコルと、下位管理プログラムＳＳＤ１（インストール済みであるが、まだ鍵データは書込まれていない状態）が用いる暗号化プロトコルである。ここで、管理プログラムＩＳＤおよびＳＳＤ１はいずれもインストール済みであるから、用いる暗号化プロトコルは、各管理プログラムが使用するメモリ領域に記録されている情報から認識することができる。
【０１７２】
たとえば、上位管理プログラムＩＳＤが用いる暗号化プロトコルが「ＳＣＰ０２（Triple-DES）」であり、下位管理プログラムＳＳＤ１が用いる暗号化プロトコルが「ＳＣＰ０３（AES）」であった場合、図１３に示すセキュリティ強度順位リストＬを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、下位管理プログラムＳＳＤ１についての鍵データの書込みを指示するコマンドは拒絶されることになる。
【０１７３】
要するに、上例の場合、下位管理プログラムＳＳＤ１について、ロードおよびインストールの処理までは許可されるが、最終段階である鍵データの書込処理（発行処理）が拒絶されるため、下位管理プログラムＳＳＤ１の組込処理は未完に終わることになる。
【０１７４】
このように、「鍵データの書込みを指示するアプリケーション向け発行データの書込コマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用することができる。そこで、「アプリケーション向け発行データの書込コマンド」に対して実行可否を判定する実施例を、§９において第５の実施形態として詳述し、§１０において第６の実施形態として詳述する。
【０１７５】
＜４−５．  暗号通信路開設コマンド＞
続いて、図１４(e) に示す「暗号通信路開設コマンド」について説明する。このコマンドは、図８(b) に示すＳＤプログラムの機能９を実行させるためのコマンドであり、特定の管理プログラムＳＤに対して、暗号通信路を開設させるためのコマンドである。この暗号通信路開設コマンドについては、既に、図５のダイアグラムのステップＳ３で説明を行い、その書式については、既に、図６を参照して説明したとおりである。
【０１７６】
すなわち、この暗号通信路開設コマンドは、図示のとおり、「INITIALIZE UPDATE (#n)＋パラメータ」というデータ構造を有し、チャネル番号＃ｎで指定される管理プログラムＳＤに対して、暗号通信路を開設する指示を与えるとともに、外部装置２００が、情報処理装置１００を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。
【０１７７】
前述したとおり、この暗号通信路開設コマンドには、パラメータとして、キーバージョン番号および乱数が付加されている。管理プログラムＳＤは、図３に示す鍵テーブルＴからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置２００との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対するレスポンスとして返信する。
【０１７８】
この暗号通信路開設コマンドは、当然ながら、暗号通信路開設処理の機能をもった管理プログラムＳＤに対して与えられるコマンドである。ただ、GlobalPlatform（登録商標）の仕様によると、この暗号通信路開設コマンドを受信した管理プログラムＳＤが、インストールは完了しているが、まだ暗号データの書込みが行われていない状態であった場合には（当然ながら、当該管理プログラムは、まだ自分自身では暗号通信路を開設することはできない）、その上位の管理プログラムが暗号通信路の開設処理を代理実行するよう定められている。
【０１７９】
このような暗号通信路の開設処理の代理実行は、上位管理プログラムＩＳＤの管理下に、下位管理プログラムＳＳＤ１がインストールされているが、まだ暗号データの書込みが行われていないという特有の状況下で行われる処理である。たとえば、§４−４では、このような特有の状況下において、下位管理プログラムＳＳＤ１の鍵データを書込む処理が行われるが、実際には、その際の書込コマンドは、暗号通信路を介して送信する必要があるため、§４−４の書込処理を実行する前に、ここで述べる(e) の暗号通信路開設コマンドを実行しておく必要がある。
【０１８０】
いま、上位管理プログラムＩＳＤの管理下に、下位管理プログラムＳＳＤ１がインストールされているが、まだ暗号データの書込みは行われていないという特有の状況下において、下位管理プログラムＳＳＤ１用の暗号データの書込処理を行うために、アプリケーション選択コマンド「SELECT (#n) SSD1」によって当該下位管理プログラムＳＳＤ１をチャネル番号＃ｎとして選択し、続けて、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」が与えられた場合を考えてみる。
【０１８１】
この場合、暗号通信路開設コマンドは、本来は、下位管理プログラムＳＳＤ１宛のコマンドであるが、当該管理プログラムＳＳＤ１は、まだ自分自身では暗号通信路を開設することはできないため、上述したとおり、上位の管理プログラムＩＳＤによって、暗号通信路の開設処理が代理実行されることになる。このときの暗号通信路の開設目的は、管理プログラムＳＳＤ１の暗号データを書込むためであるから、上記「INITIALIZE UPDATE (#n)＋パラメータ」なるコマンドは、第１の管理プログラムＩＳＤの管理下に、別な第２の管理プログラムＳＳＤ１を組み込むための処理（最終段階の処理に付随した処理）を行う「組込用コマンド」に該当するので、「本発明における実行条件の判定対象となる組込用コマンド」として利用することが可能である。
【０１８２】
したがって、上記暗号通信路開設コマンドが外部装置２００から与えられたときには、セキュリティ強度順位リストＬを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該コマンドを実行し、満たされていない場合には当該コマンドを拒絶することができる。
【０１８３】
具体的には、上例の場合、セキュリティ強度順位リストＬを参照した順位判定の対象になるのは、上位管理プログラムＩＳＤが用いる暗号化プロトコルと、下位管理プログラムＳＳＤ１（インストール済みであるが、まだ鍵データは書込まれていない状態）が用いる暗号化プロトコルである。ここで、管理プログラムＩＳＤおよびＳＳＤ１はいずれもインストール済みであるから、用いる暗号化プロトコルは、各管理プログラムが使用するメモリ領域に記録されている情報から認識することができる。
【０１８４】
たとえば、上位管理プログラムＩＳＤが用いる暗号化プロトコルが「ＳＣＰ０２（Triple-DES）」であり、下位管理プログラムＳＳＤ１が用いる暗号化プロトコルが「ＳＣＰ０３（AES）」であった場合、図１３に示すセキュリティ強度順位リストＬを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、下位管理プログラムＳＳＤ１に対して与えられた暗号通信路開設コマンドは拒絶されることになる。
【０１８５】
要するに、上例の場合、下位管理プログラムＳＳＤ１について、ロードおよびインストールの処理までは許可されるが、最終段階である鍵データの書込処理（発行処理）を行うために必要な暗号通信路開設処理が拒絶されるため、下位管理プログラムＳＳＤ１の組込処理は未完に終わることになる。
【０１８６】
このように、上位の管理プログラムによる暗号通信路の代理開設を求める「暗号通信路開設コマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用することができる。そこで、そのような「暗号通信路開設コマンド」に対して実行可否を判定する実施例を、§７において第３の実施形態として詳述する。
【０１８７】
＜４−６．  外部認証コマンド＞
続いて、図１４(f) に示す「外部認証コマンド」について説明する。このコマンドは、チャネル番号＃ｎで指定される管理プログラムＳＤが、現在通信を行っている外部装置２００を正規の交信相手として認証するためのコマンドであり、既に、図５のダイアグラムのステップＳ４で説明を行ったものである。
【０１８８】
§４−５で述べたとおり、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」は、暗号通信路を開設する指示を与えるとともに、外部装置２００が、情報処理装置１００を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。外部装置２００は、当該レスポンスが正当なものであれば、情報処理装置１００を正規の交信相手と判断する。
【０１８９】
ここで説明する外部認証コマンドは、図示のとおり、「EXTERNAL AUTHENTICATE (#n)＋ホスト認証コード」というデータ構造を有し、チャネル番号＃ｎを指定して、外部装置２００を正規の交信相手として認証するためのホスト認証コードが付加されている。情報処理装置１００は、当該ホスト認証コードが正当なものであれば、外部装置２００を正規の交信相手と判断する。
【０１９０】
このように、外部認証コマンド「EXTERNAL AUTHENTICATE (#n)＋ホスト認証コード」は、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」に続いて与えられるコマンドであり、両者によって、情報処理装置１００と外部装置２００との間に相互認証が行われることになる。したがって、この外部認証コマンド自身は、「本発明における実行条件の判定対象となる組込用コマンド」には該当しないが、後述する実施形態において、暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」に後続するコマンドとして実行されるため、参考コマンドとして図１４(f) に掲載しておく。
【０１９１】
＜４−７．  管理プログラム変更コマンド＞
次に、図１４(g) に示す「管理プログラム変更コマンド」について説明する。このコマンドは、管理プログラムの階層構造を変更するために用いられるコマンドである。§２では、図１１に示すように、アプリケーションプログラムの階層構造が変更可能であることを述べた。このような階層構造の変更は、管理プログラム変更コマンドによって実行される。
【０１９２】
この管理プログラム変更コマンドは、図１４(g) に示すとおり、「INSTALL for extradition (#n)＋新管理プログラム名＋移動対象アプリ名」というデータ構造を有し、チャネル番号＃ｎによって特定の管理プログラムＳＤを指定して、当該管理プログラムＳＤに対して、現時点で自己の管理下にある移動対象となるアプリケーションプログラムを、新たな管理プログラムの管理下に移動させる旨の指示を伝えるコマンドになる。ここで、移動対象となるアプリケーションプログラムが一般アプリケーションプログラムの場合は、セキュリティ上の問題は生じないが、移動対象となるアプリケーションプログラムが管理プログラムであった場合は、§４−２で述べたアプリケーションロードコマンドと同様の問題が生じることになる。
【０１９３】
ここでは、図１１に示す例において、管理プログラムＳＳＤ３を破線で示す階層位置（管理プログラムＳＳＤ２の管理下）から、太線で示す階層位置（管理プログラムＳＳＤ１の管理下）へと移動させる場合を考えてみる。この場合、現在の上位管理プログラムＳＳＤ２に対して、「INSTALL for extradition (#n)＋SSD1＋SSD3」という管理プログラム変更コマンドを与えることになる。その結果、現在の上位管理プログラムＳＳＤ２は、移動対象となる下位管理プログラムＳＳＤ３を、移動先となる新たな上位管理プログラムＳＳＤ１の管理下へ移動させる処理を実行する。このとき、管理プログラムＳＳＤ３の更に下層の一般アプリケーションプログラムＡＰ３１，ＡＰ３２も一緒に移動する。
【０１９４】
前述したように、このような移動は、管理プログラムＳＳＤ１について、ロード機能やインストール機能が制限されていた場合に行われることが多い。この場合、管理プログラムＳＳＤ１は、自己の下位に管理プログラムＳＳＤ３を直接インストールすることができないので、とりあえず、インストール機能を有する管理プログラムＳＳＤ２が自己の下位にインストールし、これを管理プログラムＳＳＤ１の下位に移動した後で発行データ（暗号データ）を書込む、という手順を踏むことになる。
【０１９５】
そうすると、管理プログラムＳＳＤ３についての発行データの書込処理は、移動先である管理プログラムＳＳＤ１が開設した暗号通信路を介して行うことになるので、管理プログラムＳＳＤ１の下位階層に管理プログラムＳＳＤ３を新たにインストールする際と同様のセキュリティ上の問題が生じることになる。すなわち、管理プログラムＳＳＤ３が高いセキュリティ強度を有していたとしても、その上位の管理プログラムＳＳＤ１が低いセキュリティ強度しか有していなければ、管理プログラムＳＳＤ３は、潜在的に、高いセキュリティ機能を発揮することができなくなる。
【０１９６】
結局、上例の管理プログラム変更コマンド「INSTALL for extradition (#n)＋SSD1＋SSD3」は、第１の管理プログラムＳＳＤ１の管理下に、別な第２の管理プログラムＳＳＤ３を組み込むための処理を行う「組込用コマンド」に該当する。したがって、当該コマンドが外部装置２００から与えられたときには、セキュリティ強度順位リストＬを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶することができる。
【０１９７】
具体的には、上例の場合、セキュリティ強度順位リストＬを参照した順位判定の対象になるのは、移動先となる新たな管理プログラムＳＳＤ１が用いる暗号化プロトコルと、移動対象となる管理プログラムＳＳＤ３が用いる暗号化プロトコルである。ここで、管理プログラムＳＳＤ１およびＳＳＤ３はいずれもインストール済みであるから、用いる暗号化プロトコルは、各管理プログラムが使用するメモリ領域に記録されている情報から認識することができる。
【０１９８】
たとえば、新たな管理プログラムＳＳＤ１が用いる暗号化プロトコルが「ＳＣＰ０２（Triple-DES）」であり、移動対象となる管理プログラムＳＳＤ３が用いる暗号化プロトコルが「ＳＣＰ０３（AES）」であった場合、図１３に示すセキュリティ強度順位リストＬを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、管理プログラムＳＳＤ３を移動対象とする管理プログラム変更コマンドは拒絶されることになる。
【０１９９】
このように、「鍵データの書込みが行われていない状態の管理プログラムを移動対象とする管理プログラム変更コマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用することができる。そこで、「鍵データの書込みが行われていない状態の管理プログラムを移動対象とする管理プログラム変更コマンド」に対して実行可否を判定する実施例を、§６において第２の実施形態として詳述する。
【０２００】
なお、この管理プログラム変更コマンドの実体は、インストールコマンドと同様に、上位の管理プログラムの管理下に下位の管理プログラムを配置するためのコマンドであるため、本願では、インストールコマンドによる処理と管理プログラム変更コマンドによる処理とをひっくるめて、広義の「インストール」と呼ぶことにする。
【０２０１】
＜４−８．  発行データ書込対象指定コマンド＞
最後に、図１４(h) に示す「発行データ書込対象指定コマンド」について説明する。§４−４では、「発行データの書込コマンドその１」についての説明を行ったが、ここで述べる「発行データ書込対象指定コマンド」は、「発行データの書込コマンドその１」を与える前に、予め発行データの書込対象を指定しておくためのコマンドである。
【０２０２】
この発行データ書込対象指定コマンドは、図１４(h) に示すとおり、「INSTALL for personalization (#n)＋発行対象アプリ名」というデータ構造を有し、チャネル番号＃ｎによって特定の管理プログラムＳＤを指定して、当該管理プログラムＳＤに対して、「発行対象アプリ名」として指定されたアプリケーションプログラムを発行データの書込対象として指定するコマンドになる。
【０２０３】
ここでも、上位管理プログラムＩＳＤの管理下に、新たに下位管理プログラムＳＳＤ１を組み込む場合を例にとって以下の説明を行うことにする。前述したとおり、上位管理プログラムＩＳＤの下位階層に管理プログラムＳＳＤ１をロードし、インストールする段階までが完了すれば、あとは最終段階として、下位管理プログラムＳＳＤ１について鍵データの書込みを行うだけである。このとき、図１４(d) に示す書込コマンドその１を用いて鍵データの書込みを行うには、下位管理プログラムＳＳＤ１に対して「STORE DATA (#n)＋鍵データ」なる発行データの書込コマンドを与え、下位管理プログラムＳＳＤ１に鍵データの書込処理を実行させる必要がある。
【０２０４】
ところが、発行データ書込対象指定コマンドを用いれば、上位管理プログラムＩＳＤに対して「STORE DATA (#n)＋鍵データ」なる発行データの書込コマンドを与えつつ、実際には、当該書込コマンドを下位管理プログラムＳＳＤ１に引き渡し、下位管理プログラムＳＳＤ１に実行させることが可能になる。そのためには、上位管理プログラムＩＳＤに対して「STORE DATA (#n)＋鍵データ」なる発行データの書込コマンドを与える前に、上位管理プログラムＩＳＤに対して「INSTALL for personalization (#n)＋SSD1」という発行データ書込対象指定コマンドを与えておくようにし、後続する発行データの書込コマンドについての鍵データの書込対象が下位管理プログラムＳＳＤ１である旨の指定を行っておけばよい。
【０２０５】
この場合、「INSTALL for personalization (#n)＋SSD1」という発行データ書込対象指定コマンドは、第１の管理プログラムＩＳＤの管理下に、別な第２の管理プログラムＳＳＤ１を組み込むための処理（最終段階に付随した処理）を行う「組込用コマンド」に該当するので、「本発明における実行条件の判定対象となる組込用コマンド」として利用することが可能である。
【０２０６】
したがって、発行データ書込対象指定コマンドが外部装置２００から与えられたときには、セキュリティ強度順位リストＬを参照して、所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該コマンドを実行し、満たされていない場合には当該コマンドを拒絶することができる。
【０２０７】
具体的には、上例の場合、セキュリティ強度順位リストＬを参照した順位判定の対象になるのは、上位管理プログラムＩＳＤが用いる暗号化プロトコルと、下位管理プログラムＳＳＤ１（インストール済みであるが、まだ鍵データは書込まれていない状態）が用いる暗号化プロトコルである。ここで、管理プログラムＩＳＤおよびＳＳＤ１はいずれもインストール済みであるから、用いる暗号化プロトコルは、各管理プログラムが使用するメモリ領域に記録されている情報から認識することができる。
【０２０８】
たとえば、上位管理プログラムＩＳＤが用いる暗号化プロトコルが「ＳＣＰ０２（Triple-DES）」であり、下位管理プログラムＳＳＤ１が用いる暗号化プロトコルが「ＳＣＰ０３（AES）」であった場合、図１３に示すセキュリティ強度順位リストＬを参照することにより、本発明における実行条件は満たされていないとの判定結果が得られるので、下位管理プログラムＳＳＤ１を発行データ書込対象として指定する発行データ書込対象指定コマンドは拒絶されることになる。
【０２０９】
要するに、上例の場合、下位管理プログラムＳＳＤ１について、ロードおよびインストールの処理までは許可されるが、最終段階である鍵データの書込処理（発行処理）の直前に行うべき発行データ書込対象の指定処理が拒絶されるため、下位管理プログラムＳＳＤ１の組込処理は未完に終わることになる。
【０２１０】
このように、「鍵データの書込みを行うための準備を指示する発行データ書込対象指定コマンド」は、「本発明における実行条件の判定対象となる組込用コマンド」として利用することができる。そこで、そのような「発行データ書込対象指定コマンド」に対して実行可否を判定する実施例を、§８において第４の実施形態として詳述する。
【０２１１】
＜＜＜  §５．  第１の実施形態（インストールの制限）  ＞＞＞
本発明の基本概念は、§３において述べたとおり、第１の管理プログラムの管理下に、別な第２の管理プログラムを組み込むための処理を行う「組込用コマンド」が外部装置２００から与えられたときに、セキュリティ強度順位リストを参照して、当該「組込用コマンド」について所定の実行条件が満たされているか否かを判定し、実行条件が満たされている場合には当該「組込用コマンド」を実行し、満たされていない場合には当該「組込用コマンド」を拒絶する点にある。
【０２１２】
そして、§４では、GlobalPlatform（登録商標）の仕様に準拠したＩＣカードに用の具体的なコマンドのうち、「本発明における実行条件の判定対象となる組込用コマンド」として利用可能なコマンドをいくつか指摘した。そこで、§５〜§１０では、これらのコマンドの１つ１つについて、実際に上記「組込用コマンド」として利用する場合の具体的な実施形態を述べる。
【０２１３】
＜５−１．  第１の実施形態における実行条件の判定処理＞
まず、この§５では、第１の実施形態として、図１４(c) に示すアプリケーションプログラムのインストールコマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、第２の管理プログラムのインストールの制限を行う例を説明する。
【０２１４】
このアプリケーションプログラムのインストールコマンドは、§４−３で述べたとおり、第１の管理プログラムの管理下に、別な第２の管理プログラムを組み込む際の第２段階のステップとして実行されるコマンドである。すなわち、既に第１段階のステップとして、図１４(b) に示すアプリケーションロードコマンドが実行されており、メモリ上には、第２の管理プログラムのアプリケーションプログラムパッケージがロードされた状態になっていることが前提となる。ここで言うアプリケーションプログラムのインストールとは、ロード済みのプログラムパッケージを、メモリ上にアプリケーションインスタンスとして展開し、ＣＰＵが実行できる状態にする処理である。
【０２１５】
アプリケーションプログラムのインストールコマンドは、図１４(c) に示すように、「INSTALL for install (#n)＋パッケージ名＋アプリ名＋パラメータ」というデータ構造を有し、チャネル番号＃ｎを指定して、「パッケージ名」で特定されるパッケージを展開して、アプリケーションインスタンスを生成し、当該アプリケーションインスタンスに「アプリ名」で指定される名称を付与する旨の指示を伝えるコマンドである。
【０２１６】
ここでは一例として、図１１に示す階層構造において、第１の管理プログラムＩＳＤの下位階層に、第２の管理プログラムＳＳＤ１を組み込む場合を例にとって、以下に具体的な処理手順を示そう。この場合、外部装置２００から情報処理装置１００に対して、「INSTALL for install (#n), PackSSD1, SSD1, パラメータ」なるインストールコマンドが与えられる。ここで、「＃ｎ」は、第１の管理プログラムＩＳＤに対応づけられたチャネル番号であり、当該インストールコマンドは、第１の管理プログラムＩＳＤによって処理されることになる。
【０２１７】
上記インストールコマンドは、「PackSSD1」なるパッケージ名で既にロードされている第２の管理プログラムＳＳＤ１用のプログラムパッケージをメモリ上に展開してアプリケーションインスタンスを作成し、アプリ名「ＳＳＤ１」を付与することを指示するコマンドである。既に述べたとおり、「パラメータ」には、用いる暗号化プロトコルを示す情報が含まれており、当該「パラメータ」を参照することにより、特定の暗号化プロトコルのみが選択され、選択された暗号化プロトコルに関連する機能だけが使用可能な状態でインストールされる。
【０２１８】
なお、本願では、このように、外部装置２００からのコマンドに含まれるチャネル番号「＃ｎ」によって指定された管理プログラムのことを、便宜上「指定管理プログラム」と呼ぶことにする。上例の場合、「＃ｎ」は、第１の管理プログラムＩＳＤを指定するチャネル番号であるから、第１の管理プログラムＩＳＤが「指定管理プログラム」ということになり、「INSTALL for install (#n)」なるインストールコマンドは、「指定管理プログラム」である第１の管理プログラムＩＳＤによって実行されることになる。
【０２１９】
図１５は、本発明の第１の実施形態において、指定管理プログラムの管理下に新たな管理プログラムをインストールするためのインストールコマンドが与えられた場合の処理手順を示す流れ図であり、より具体的には、指定管理プログラムである第１の管理プログラムＩＳＤの管理下に、新たに第２の管理プログラムＳＳＤ１を作成する際の手順を示すものである。
【０２２０】
要するに、この図１５の流れ図に示す手順は、外部装置２００から情報処理装置１００に対して、第１の暗号化プロトコルを用いた暗号通信路開設機能を有する第１の管理プログラムＩＳＤの管理下に、第２の暗号化プロトコルを用いた暗号通信路開設機能を有する第２の管理プログラムＳＳＤ１をインストールすることを指示する組込用コマンド（すなわち、アプリケーションプログラムのインストールコマンド「INSTALL for install (#n)」）が与えられたときに実行される手順ということになる。この手順の目的は、セキュリティ強度順位リストＬ上で第１の暗号化プロトコルよりも第２の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド（インストールコマンド「INSTALL for install (#n)」）の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムがインストールされる事態を回避することにある。
【０２２１】
まず、ステップＳ１１では、指定管理プログラム（ＩＳＤ）により、「INSTALL for install (#n), PackSSD1, SSD1, パラメータ」なるインストールコマンドが受信される。前述したとおり、パラメータの部分には、新たにインストールされる管理プログラムＳＳＤ１が用いる暗号化プロトコルを示す情報が含まれている。ここでは、説明の便宜上、管理プログラムＳＳＤ１が用いる暗号化プロトコルとしてＳＣＰ種別「ＳＣＰ０２」を指定する情報が含まれていたものとしよう。
【０２２２】
結局、このインストールコマンドは、指定管理プログラムＩＳＤに対して、パッケージ名「PackSSD1」で既にロード済みの新たな管理プログラムＳＳＤ１をインストールする作業を指示するコマンドであり、その際に、暗号化プロトコル「ＳＣＰ０２」を用いた暗号通信路の開設機能が備わるようなインストールを行うよう指示するコマンドということになる。従来の情報処理装置の場合、このようなインストールコマンドが直ちに実行されることになるが、本発明の場合、セキュリティ強度順位リストＬを参照して、実行条件が満たされているか否かの判定が行われる。
【０２２３】
そこで、まず、ステップＳ１２において、指定管理プログラム（ＩＳＤ）がサポートしている親暗号化プロトコルＰａが認識される。通常、管理プログラム（ＩＳＤ）が使用するメモリ領域には、当該管理プログラムがサポートしている（当該管理プログラムが用いる）暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルＰａを認識することができる。
【０２２４】
具体的には、GlobalPlatform（登録商標）の仕様では、情報格納部１１０には、当該管理プログラムがサポートする暗号化プロトコルを示すプロトコルコードが記録されているので、このプロトコルコードを参照することにより、当該管理プログラムがサポートする暗号化プロトコルを認識することが可能である。もちろん、情報格納部１１０に格納されている当該管理プログラムのプログラムルーチン自体を解析することによっても、サポートする暗号化プロトコルを認識することが可能である。
【０２２５】
要するに、本発明において、既にインストール済みの特定の管理プログラムがサポートする特定の暗号化プロトコルを認識するには、情報格納部１１０に格納されている「当該特定の管理プログラム」もしくは「当該特定の管理プログラムに関連するデータ」を参照すればよい。これは、ここで述べる第１の実施形態だけでなく、後述する第２〜第６の実施形態についても同様である。
【０２２６】
続くステップＳ１３では、インストール対象となる下位管理プログラム（ＳＳＤ１）がサポートする予定（当該管理プログラムがインストール後に用いる予定）の子暗号化プロトコルＰｂが認識される。このサポート予定のプロトコルを示す情報は、上述したとおり、インストールコマンドのパラメータの部分に含まれており、上例の場合、暗号化プロトコル「ＳＣＰ０２」ということになる。したがって、当該パラメータの部分を参照することにより、子暗号化プロトコルＰｂを認識することができる。
【０２２７】
なお、本願における「親」および「子」という文言は、階層構造における上下関係を示しており、第１の管理プログラムの下位に第２の管理プログラムが組み込まれる場合、便宜上、第１の管理プログラムおよびその暗号化プロトコルを「親」、第２の管理プログラムおよびその暗号化プロトコルを「子」と呼ぶことにする。
【０２２８】
こうして、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂが認識されたら、続いて、ステップＳ１４において、セキュリティ強度順位リストＬが参照され、ステップＳ１５において、当該インストールコマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルＰａの順位が、子暗号化プロトコルＰｂの順位と等しいか、または、子暗号化プロトコルＰｂの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より低い場合には否定的な判定がなされる。
【０２２９】
肯定的な判定がなされた場合は、ステップＳ１６において、当該インストールコマンドが実行される。すなわち、パッケージ名「PackSSD1」でロード済みの新たな管理プログラムＳＳＤ１のインスタンスが作成され、外部装置２００に対してコマンドの正常終了を示すレスポンスが返されることになる。もちろん、管理プログラムＳＳＤ１を実際に機能させるためには、この後、鍵データの書込処理を行う必要がある。一方、否定的な判定がなされた場合は、ステップＳ１７において、当該インストールコマンドは拒絶され、外部装置２００に対してエラーを示すレスポンスが返されることになる。
【０２３０】
上例の場合、子暗号化プロトコルＰｂは「ＳＣＰ０２」であるので、図１３に示すようなセキュリティ強度順位リストＬが用意されていた場合は、親暗号化プロトコルＰａが「ＳＣＰ０３」，「ＳＣＰ８１」，「ＳＣＰ８０」，「ＳＣＰ０２」であれば、当該コマンドは実行され、「ＳＣＰ０１」であれば、当該コマンドは拒絶されることになる。
【０２３１】
＜５−２．  第１の実施形態の具体的な処理チャート＞
続いて、外部装置２００から第１の実施形態に係る情報処理装置１００に対して、アプリケーションプログラムのインストールコマンドが与えられた場合について、コマンドを処理するための信号の流れを、図１６に示すチャートを参照しながら説明する。図示の例は、外部装置２００としてスマートフォン１０を用い、情報処理装置１００として当該スマートフォン１０に装着されたＳＩＭカード１１を用い、第１の管理プログラムＩＳＤの管理下に第２の管理プログラムＳＳＤ１をインストールする例である。
【０２３２】
図１６のチャートにおける右側のラインは、外部装置２００（スマートフォン１０）に組み込まれている「ホスト側のアプリケーションプログラム（以下、「ホスト側アプリ」と略す）」を示し、中央のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「管理プログラムＩＳＤ」を示し、左側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「ＯＳプログラム」を示している。また、このチャートにおける上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合、管理プログラムＩＳＤがチャネル番号「＃ｎ」で指定される「指定管理プログラム」になる。チャートでは、この「指定管理プログラム（ＩＳＤ）」を二重枠のブロックで示してある。
【０２３３】
まず、「ホスト側アプリ」から、情報処理装置１００に対して、アプリケーション選択コマンド「SELECT (#n), ISD」が与えられる。当該コマンドは、§４−１で説明したとおり（図１４(a) 参照）、特定のチャネル番号＃ｎを指定して、情報処理装置１００側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムＩＳＤ」がチャネル番号「＃ｎ」に対応づけられ、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＩＳＤ」を指定したコマンドとして取り扱われ、当該「指定管理プログラムＩＳＤ」によって処理されることになる。
【０２３４】
図示のとおり、アプリケーション選択コマンド「SELECT (#n), ISD」は、まず、「ＯＳプログラム」によって処理される。「ＯＳプログラム」は、当該コマンドに基づいて、「管理プログラムＩＳＤ」をチャネル番号「＃ｎ」に対応づけるための登録を行う。これにより、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＩＳＤ」を指定したコマンドと認識され、「指定管理プログラムＩＳＤ」に引き渡される。
【０２３５】
「ＯＳプログラム」は、「指定管理プログラムＩＳＤ」をチャネル番号「＃ｎ」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムＩＳＤ」に報知する。「指定管理プログラムＩＳＤ」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨のレスポンス（以下、「ＯＫレスポンス」という）を返す。
【０２３６】
続いて、「ホスト側アプリ」から、情報処理装置１００に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」が与えられる。当該コマンドは、§４−５で説明したとおり（図１４(e) 参照）、特定の管理プログラムＳＤに対して、暗号通信路を開設させるためのコマンドであるとともに、外部装置２００が、情報処理装置１００を正規の交信相手として認証するために用いるレスポンスを要求するコマンドでもある。
【０２３７】
この暗号通信路開設コマンドは、チャネル番号「＃ｎ」を伴うコマンドであるため、「指定管理プログラムＩＳＤ」に引き渡され、「指定管理プログラムＩＳＤ」によって暗号通信路の開設処理が実行される。当該コマンドには、パラメータとして、キーバージョン番号および乱数が付加されているので、「指定管理プログラムＩＳＤ」は、図３に示すような鍵テーブルＴからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置２００との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を「ＯＫレスポンス」とともに返信する。
【０２３８】
「ホスト側アプリ」は、返信されてきた演算結果の正当性を確認することにより、現在交信中の情報処理装置１００を正規の交信相手として認証する。続いて、「ホスト側アプリ」から、情報処理装置１００に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),（ホスト認証コード）」が与えられる。当該コマンドは、§４−６で説明したとおり（図１４(f) 参照）、チャネル番号＃ｎで指定される管理プログラムＳＤに、現在、通信を行っている外部装置２００を正規の交信相手として認証させるためのコマンドであり、パラメータとして「ホスト認証コード」が付加されている。
【０２３９】
この外部認証コマンドは、チャネル番号「＃ｎ」を伴うコマンドであるため、「指定管理プログラムＩＳＤ」に引き渡され、「指定管理プログラムＩＳＤ」によって処理される。具体的には、「指定管理プログラムＩＳＤ」は、パラメータとして付加されていた「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置２００を正規の交信相手として認証する。認証に成功すると、外部装置２００に対して「ＯＫレスポンス」が返信される。
【０２４０】
この時点で、情報処理装置１００（「指定管理プログラムＩＳＤ」）と外部装置２００（「ホスト側アプリ」）との間に暗号通信路を開設する準備が完了したことになり、以後、両者間の通信は、当該暗号通信路を介して実行されることになる。この§５で述べる第１の実施形態は、アプリケーションプログラムのインストールコマンドが与えられたときの処理に関するものなので、以下、この暗号通信路を介してインストールコマンドが与えられたときの処理手順を説明する。
【０２４１】
まず、図示のとおり、「ホスト側アプリ」から、情報処理装置１００に対して、アプリケーションプログラムのインストールコマンド「INSTALL for install (#n), PackSSD1, SSD1, SCP02」が与えられる。当該コマンドは、§４−３で説明したとおり（図１４(c) 参照）、「指定管理プログラムＩＳＤ」に対して、その管理下に、パッケージ名「PackSSD1」で既にロード済みの新たな管理プログラムＳＳＤ１を、暗号化プロトコル「ＳＣＰ０２」を用いた暗号通信路の開設機能が備わるようにインストールするコマンドである。
【０２４２】
従来の一般的な管理プログラムＳＤであれば、当該インストールコマンドを直ちに実行することになるが、本発明の場合、図１５の流れ図に示す各手順により、当該インストールコマンドが実行条件を満たしているか否かの判定が行われる。そのため、まず、当該インストールコマンドを受信した「指定管理プログラムＩＳＤ」は、「ＯＳプログラム」に対して上記判定を依頼する。
【０２４３】
当該依頼を受けた「ＯＳプログラム」は、図１５の流れ図におけるステップＳ１２〜Ｓ１５に相当する実行条件の判定処理を行う。すなわち、「指定管理プログラムＩＳＤ」が用いる親暗号化プロトコルＰａを認識するとともに、インストール対象となる別な下位プログラム（この例の場合、インストールコマンドによってインストールを指示された「下位管理プログラムＳＳＤ１」）が用いる予定の子暗号化プロトコルＰｂを認識する。
【０２４４】
図１６における破線の矢印は、このような暗号化プロトコルＰａ，Ｐｂの認識プロセスを示している。実際には、親暗号化プロトコルＰａの認識は、「指定管理プログラムＩＳＤ」が使用するメモリ領域を参照することにより行われ、子暗号化プロトコルＰｂの認識は、インストールコマンドにパラメータとして含まれていた情報（図示の例の場合「ＳＣＰ０２」）を参照することにより行われる。
【０２４５】
「ＯＳプログラム」は、こうして認識した暗号化プロトコルＰａ，Ｐｂの強度順位を、セキュリティ強度順位リストＬ上で比較する順位判定（図１５のステップＳ１５の判定）を行い、判定結果を「指定管理プログラムＩＳＤ」に伝達する。図１６において、「ＹＥＳ」と記載された部分の信号の流れは、肯定的な判定結果が得られた場合を示しており、図に一点鎖線の矢印で示すとおり、実行条件を満たしている旨の判定結果（以下、「判定結果ＯＫ」という）が伝達される。「判定結果ＯＫ」が伝達された場合、「指定管理プログラムＩＳＤ」は、当該コマンド、すなわち、アプリケーションプログラムのインストールコマンド「INSTALL for install (#n), PackSSD1, SSD1, SCP02」を実行する。
【０２４６】
その結果、「インストール対象となる別な下位管理プログラムＳＳＤ１」について、暗号化プロトコル「ＳＣＰ０２」を用いた暗号通信路の開設機能が備わるようなインストールが行われた後、「ホスト側アプリ」に対して「ＯＫレスポンス」が返される。
【０２４７】
一方、順位判定の結果、否定的な判定結果が得られた場合は、図１６において、「ＮＯ」と記載された部分に示すような信号の流れが生じる。すなわち、図に二点鎖線の矢印で示すとおり、「ＯＳプログラム」から「指定管理プログラムＩＳＤ」に対して、実行条件を満たしていない旨の判定結果（以下、「判定結果ＮＧ」という）が伝達される。「判定結果ＮＧ」が伝達された場合、「指定管理プログラムＩＳＤ」は、当該インストールコマンド「INSTALL for install (#n), PackSSD1, SSD1, SCP02」の実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨のレスポンス（以下、「ＮＧレスポンス」という）を返す。この「ＮＧレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
【０２４８】
＜５−３．  第１の実施形態の特徴＞
以上、本発明の第１の実施形態の具体例を、図１５の流れ図および図１６のチャートを用いて説明したが、ここでは、この第１の実施形態に係る情報処理装置の特徴をまとめておく。
【０２４９】
第１の実施形態に係る情報処理装置１００は、図１２のブロック図に示すとおり、外部装置２００との間で暗号通信を行う機能を有する情報処理装置であり、ＯＳプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部１１０と、この情報格納部１１０に格納されているプログラムを実行するプログラム実行部１２０と、を備えている。
【０２５０】
ここで、情報格納部１１０には、アプリケーションプログラムとして、少なくとも１つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置２００から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
【０２５１】
また、情報格納部１１０には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストＬが格納されており、情報格納部１１０に格納されている管理プログラムのうち、少なくとも１つの指定管理プログラム（たとえば、ＩＳＤ）は、外部装置２００から、自己の管理下に別な下位管理プログラム（たとえば、ＳＳＤ１）をインストールする旨のインストールコマンドが与えられたときに、所定の実行条件が満たされていた場合には当該インストールコマンドに基づくインストール処理を実行し、当該実行条件が満たされていなかった場合には当該インストールコマンドに基づくインストール処理を拒絶する。
【０２５２】
具体的には、指定管理プログラム（たとえば、ＩＳＤ）の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルＰａと呼び、インストール対象となる下位管理プログラム（たとえば、ＳＳＤ１）の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルＰｂと呼んだ場合に、セキュリティ強度順位リストＬにおいて、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
【０２５３】
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部１１０に格納されている「指定管理プログラム（たとえば、ＩＳＤ）」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルＰａの認識が行われる。また、インストールコマンドに含まれていた特定の暗号化プロトコルを指定するパラメータを参照することにより、子暗号化プロトコルＰｂの認識が行われる。
【０２５４】
なお、図１６に示す実施例の場合、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム（たとえば、ＩＳＤ）」が、親暗号化プロトコルＰａと子暗号化プロトコルＰｂとについての順位判定処理を「ＯＳプログラム」に委託し、「ＯＳプログラム」が実行した順位判定処理の結果に基づいて、インストールコマンドの実行／拒絶を決定するようにしている。
【０２５５】
もちろん、本発明の第１の実施形態を実施する上で、実行条件が満たされているか否かの判定（セキュリティ強度順位リストＬを参照した順位判定）は、必ずしも「ＯＳプログラム」によって実行する必要はなく、「指定管理プログラム（たとえば、ＩＳＤ）」が自ら実行するようにしてもかまわない。
【０２５６】
ただ、一般的なＩＣカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、上述した図１６に示す実施例のように、順位判定処理を「ＯＳプログラム」に委託して実行するのが好ましい。通常、「ＯＳプログラム」は、各アプリケーションプログラムが使用するメモリ領域に対して自由にアクセスする権限を有しているため、図１６に破線の矢印で示すように、暗号化プロトコルＰａ，Ｐｂを認識する作業を行う上でも、何ら制約なしに作業を実行できる。
【０２５７】
なお、上述の実施例では、子暗号化プロトコルＰｂを認識する方法として、インストールコマンドに含まれているパラメータを参照する方法を述べた。GlobalPlatform（登録商標）に準拠したインストールコマンドには、そのようなパラメータを含ませる仕様が定められているため、実用上は、当該パラメータを参照することにより子暗号化プロトコルＰｂを認識する方法が最も簡便で好ましい方法と言える。ただ、本発明の第１の実施形態を実施する上では、別な方法によって子暗号化プロトコルＰｂを認識してもかまわない。
【０２５８】
たとえば、インストールコマンド「INSTALL for install (#n), PackSSD1, SSD1, SCP02」が与えられた場合、当該コマンドにパラメータとして含まれている「ＳＣＰ０２」の部分を参照すれば、子暗号化プロトコルＰｂが「ＳＣＰ０２」であることを直ちに認識できる。GlobalPlatform（登録商標）の仕様において、インストールコマンドに子暗号化プロトコルＰｂを示す情報をパラメータとして含ませるようにしているのは、プログラムパッケージ「PackSSD1」に、それぞれ異なる暗号化プロトコルに対応した複数通りの暗号通信路開設ルーチンが含まれている場合を想定し、インストール時に、所望の暗号化プロトコルに対応した特定の暗号通信路開設ルーチンを選択してインスタンス化することを念頭においているためである。
【０２５９】
しかしながら、そのような仕様に準拠しないケースでは、インストールコマンドに子暗号化プロトコルＰｂを示す情報が含まれていない可能性もある。たとえば、プログラムパッケージ「PackSSD1」が、暗号化プロトコル「ＳＣＰ０２」に用いる暗号通信路開設ルーチンしか含んでいないプログラムパッケージであった場合、インストール時には、用いる暗号化プロトコルを指定する必要はないので、インストールコマンドにプロトコルを指定する情報を含ませる必要はない。
【０２６０】
このような場合、プログラムパッケージ「PackSSD1」を解析することにより、インストール後の管理プログラムＳＳＤ１が用いる暗号化プロトコルが「ＳＣＰ０２」であることを認識することが可能である。
【０２６１】
上例の場合、「指定管理プログラムＩＳＤ」は、インストールの対象となるアプリケーションプログラム（たとえば、上例の場合は、「下位管理プログラムＳＳＤ１」）を情報格納部１１０に格納するロード機能を有しており、外部装置２００から与えられるロードコマンドに基づいて、当該アプリケーションプログラムＳＳＤ１を、プログラムパッケージ「PackSSD1」の形で情報格納部１１０に一旦ロードした後、外部装置２００から与えられるインストールコマンドに基づいて、ロードされたアプリケーションプログラムをインストールする処理を実行する。
【０２６２】
別言すれば、外部装置２００から下位管理プログラムについてのインストールコマンドが与えられた場合には、必ず、情報処理装置１００内にインストールの対象となる下位管理プログラム用のプログラムパッケージがロード済みになっていることになる。そこで、実行条件が満たされているか否かの判定を行う際に、情報格納部１１０にロードされているインストール前の下位管理プログラム用パッケージを参照することにより、子暗号化プロトコルＰｂを認識することも可能である。
【０２６３】
＜５−４．  複数通りの暗号化プロトコルへの対応＞
前述したように、GlobalPlatform（登録商標）の仕様では、管理プログラムＳＤのプログラムパッケージには、それぞれ異なる暗号化プロトコルに対応した複数通りの暗号通信路開設ルーチンを含ませておき、インストール時に、所望の暗号化プロトコルに対応した暗号通信路開設ルーチンを選択してインスタンス化することが可能である。このような仕様を利用すれば、インストール時に、複数の暗号化プロトコルを指定することにより、個々の暗号化プロトコルに対応した複数の暗号通信路開設ルーチンをインスタンス化することも可能になる。
【０２６４】
たとえば、本願発明者による別発明を記載した特願２０１５−１６８８６８には、複数の暗号化プロトコルを選択的に用いて暗号通信路を開設する機能を有する情報処理装置が開示されている。このような技術を利用すれば、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを使い分けることが可能になる。
【０２６５】
具体的には、インストールコマンドとして、「INSTALL for install (#n), PackSSD1, SSD1, SCP01&SCP02」のようなコマンドを与えるようにすれば、パラメータとして「ＳＣＰ０１」および「ＳＣＰ０２」が含まれているので、インストール後の管理プログラムＳＳＤ１は、複数通りの暗号化プロトコル「ＳＣＰ０１」，「ＳＣＰ０２」をサポートすることになる。この場合、実際に暗号通信路を開設する際には、暗号通信路開設コマンド「INITIALIZE UPDATE (#n), パラメータ」を与え、たとえば「パラメータ」の部分に「実際に用いる暗号化プロトコルを指定する情報」を入れておくようにすれば、外部装置２００側から、実際に暗号通信路を開設する際に、用いる暗号化プロトコルを指定することが可能になる（具体的な指定方法は、たとえば、前掲の特願２０１５−１６８８６８を参照）。
【０２６６】
本願のこれまでの説明では、１つの管理プログラムＳＤが１つの暗号化プロトコルのみを用いることを前提とした説明を行ってきたが、本願発明は、必ずしもそのような前提に立つ必要はなく、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを使い分けるようなケースについても本願発明の適用が可能である。この場合に留意すべき点は、実行条件が満たされているか否かの判定処理を、どのようにして行うか、という点である。
【０２６７】
１つの管理プログラムＳＤが、複数通りの暗号化プロトコルをサポートしているケースでは、図１５のステップＳ１５に示す判定処理を行う際に、親暗号化プロトコルＰａが複数通り存在する可能性があり、子暗号化プロトコルＰｂも複数通り存在する可能性がある。そこで、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストＬを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。ここでは、代表を選出する具体的な方法として、次の２通りの選出方法を例示しておく。
【０２６８】
第１の選出方法は、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も高い暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も高い暗号化プロトコルを代表として選出する方法である。要するに、親暗号化プロトコルＰａも子暗号化プロトコルＰｂも、それぞれ最高順位のものが代表として選出されることになる。
【０２６９】
この第１の選出方法を採る場合は、上位管理プログラムの管理下に下位管理プログラムを組み込む処理を行う際に、上位管理プログラムに開設させる暗号通信路として、順位が最も高い暗号化プロトコルを用いた暗号通信路を開設させるように留意する必要がある。このような留意を行う限り、インストール後の下位管理プログラムがどの暗号化プロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
【０２７０】
第２の選出方法は、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も低い暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も高い暗号化プロトコルを代表として選出する方法である。要するに、親暗号化プロトコルＰａでは最低順位のものが、子暗号化プロトコルＰｂでは最高順位のものが、それぞれ代表として選出されることになる。
【０２７１】
この第２の選出方法を採れば、上位管理プログラムの管理下に下位管理プログラムを組み込む処理を行う際に、上位管理プログラムに開設させる暗号通信路として、どの順位の暗号化プロトコルを用いた暗号通信路を開設させたとしても、また、インストール後の下位管理プログラムがどの暗号化プロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。したがって、上記第１の選出方法のような特別な留意を払う必要はない。但し、順位判定において肯定的な判定がなされるハードルは高くなるため、インストールコマンドが拒絶される可能性は高くなる。
【０２７２】
＜＜＜  §６．  第２の実施形態（管理プログラム変更の制限）  ＞＞＞
この§６では、第２の実施形態として、図１４(g) に示す管理プログラム変更コマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、管理プログラムの変更の制限を行う例を説明する。
【０２７３】
＜６−１．  第２の実施形態における実行条件の判定処理＞
管理プログラム変更コマンドは、§４−７で述べたとおり、管理プログラムの階層構造を変更するために用いられるコマンドであり、具体的な例として、図１１に示す階層構造を参照しながら、現時点で上位管理プログラムＳＳＤ２の管理下にある下位管理プログラムＳＳＤ３を、新たに上位管理プログラムＳＳＤ１の管理下に移動させる例を述べた。
【０２７４】
この管理プログラム変更コマンドは、図１４(g) に示すとおり、「INSTALL for extradition (#n)＋新管理プログラム名＋移動対象アプリ名」というデータ構造を有し、チャネル番号＃ｎを指定して、指定管理プログラムＳＤに対して、現時点で自己の管理下にある移動対象となるアプリケーションプログラムを、新たな管理プログラムの管理下に移動させる旨の指示を伝えるコマンドである。
【０２７５】
ここでは、やはり図１１に示す階層構造を例にとって、管理プログラムＳＳＤ１の管理下に、現時点では管理プログラムＳＳＤ２の管理下にある管理プログラムＳＳＤ３を移動させる場合を例にとって、以下に具体的な処理手順を示そう。この場合、外部装置２００から情報処理装置１００に対して、「INSTALL for extradition (#n), SSD1, SSD3」なる管理プログラム変更コマンドが与えられる。ここで、「＃ｎ」は、管理プログラムＳＳＤ２（現時点での上位管理プログラム）に対応づけられたチャネル番号であり、当該管理プログラム変更コマンドは、管理プログラムＳＳＤ２によって処理されることになる。
【０２７６】
要するに、上記管理プログラム変更コマンドは、管理プログラムＳＳＤ２に対して、移動対象となる下位管理プログラムＳＳＤ３を、移動先となる新たな上位管理プログラムＳＳＤ１の管理下へ移動させる処理を実行させるためのコマンドであり、チャネル番号「＃ｎ」によって指定される「指定管理プログラム」は、現時点での上位管理プログラムである管理プログラムＳＳＤ２ということになる。
【０２７７】
図１７は、本発明の第２の実施形態において、現時点では指定管理プログラムＳＳＤ２の管理下にある管理プログラムＳＳＤ３を、管理プログラムＳＳＤ１の管理下に移動させるための管理プログラム変更コマンドが与えられた場合の処理手順を示す流れ図である。
【０２７８】
ここで、図１１に示す階層構造において、移動先となる新たな管理プログラムＳＳＤ１を第１の管理プログラムとし、移動対象となる管理プログラムＳＳＤ３を第２の管理プログラムと考えれば、この第２の実施形態は、前述した第１の実施形態に準じて考えることができる。すなわち、この第２の実施形態も、第１の実施形態と同様に、第１の管理プログラムＳＳＤ１の管理下に、第２の管理プログラムＳＳＤ３を組み込む処理を行う点では同じである。
【０２７９】
別言すれば、前述した第１の実施形態の場合、新規インストールという処理によって第１の管理プログラムの管理下に、第２の管理プログラムが組み込まれるのに対して、ここで述べる第２の実施形態の場合、現時点で第３の管理プログラムの管理下にある第２の管理プログラムＳＳＤ３を、第１の管理プログラムＳＳＤ１の管理下に移動する点が異なるものの、最終的には、第１の管理プログラムＳＳＤ１の管理下に、第２の管理プログラムＳＳＤ３を組み込むことを目的とする点に変わりはない。
【０２８０】
したがって、図１７の流れ図に示す手順は、外部装置２００から情報処理装置１００に対して、第２の暗号化プロトコルを用いた暗号通信路開設機能を有する第２の管理プログラムＳＳＤ３を、第３の管理プログラムＳＳＤ２の管理下から、第１の暗号化プロトコルを用いた暗号通信路開設機能を有する第１の管理プログラムＳＳＤ１の管理下に移動させる階層構造の変更を指示する組込用コマンド（すなわち、管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」）が与えられたときに実行される手順ということになる。この手順の目的は、セキュリティ強度順位リストＬ上で第１の暗号化プロトコルよりも第２の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド（管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」）の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムが移動される事態を回避することにある。
【０２８１】
まず、ステップＳ２１では、指定管理プログラム（ＳＳＤ２）により、「INSTALL for extradition (#n), SSD1, SSD3」なる管理プログラム変更コマンドが受信される。このコマンドは、指定管理プログラム（ＳＳＤ２）に対して、現時点で管理下にある移動対象管理プログラム（ＳＳＤ３）を、移動先となる新たな管理プログラム（ＳＳＤ１）の管理下に移動させる指示を与えるものである。従来の情報処理装置の場合、このような管理プログラム変更コマンドが直ちに実行されることになるが、本発明の場合、セキュリティ強度順位リストＬを参照して、実行条件が満たされているか否かの判定が行われる。
【０２８２】
そこで、まず、ステップＳ２２において、移動対象となる管理プログラム（ＳＳＤ３）がサポートしている子暗号化プロトコルＰｂが認識される。管理プログラム（ＳＳＤ３）は、既に指定管理プログラム（ＳＳＤ２）の管理下にインストールされているプログラムであるため、当該管理プログラム（ＳＳＤ３）が使用するメモリ領域には、当該管理プログラム（ＳＳＤ３）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルＰｂを認識することができる。
【０２８３】
続くステップＳ２３では、移動先となる新たな管理プログラム（ＳＳＤ１）がサポートしている暗号化プロトコルＰａが認識される。この暗号化プロトコルＰａは、「新たな親」となる管理プログラム（ＳＳＤ１）が用いる暗号化プロトコルであるため、ここでは「新親暗号化プロトコルＰａ」と呼ぶことにする。当該管理プログラム（ＳＳＤ１）も既にインストール済みのプログラムであるため、当該管理プログラム（ＳＳＤ１）が使用するメモリ領域には、当該管理プログラム（ＳＳＤ１）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて新親暗号化プロトコルＰａを認識することができる。
【０２８４】
こうして、新親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂが認識されたら、続いて、ステップＳ２４において、セキュリティ強度順位リストＬが参照され、ステップＳ２５において、当該管理プログラム変更コマンドの実行条件が満たされているか否かが判定される。具体的には、新親暗号化プロトコルＰａの順位が、子暗号化プロトコルＰｂの順位と等しいか、または、子暗号化プロトコルＰｂの順位より高い場合には肯定的な判定がなされ、新親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より低い場合には否定的な判定がなされる。
【０２８５】
肯定的な判定がなされた場合は、ステップＳ２６において、当該管理プログラム変更コマンドが実行される。すなわち、指定管理プログラム（ＳＳＤ２）の管理下にある移動対象管理プログラム（ＳＳＤ３）が、移動先となる新たな管理プログラム（ＳＳＤ１）の管理下へと移動される。移動対象となる管理プログラム（ＳＳＤ３）がまだ鍵データをもっていない場合、上記移動の後に、新たに鍵データの書込処理を行う必要があるが、その際、移動先となる新たな管理プログラム（ＳＳＤ１）が開設した暗号通信路を利用して鍵データの書込みが行われることになる。一方、否定的な判定がなされた場合は、ステップＳ２７において、当該管理プログラム変更コマンドは拒絶され、外部装置２００に対してエラーを示すレスポンスが返されることになる。
【０２８６】
＜６−２．  第２の実施形態の具体的な処理チャート＞
続いて、外部装置２００から第２の実施形態に係る情報処理装置１００に対して、管理プログラム変更コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図１８に示すチャートを参照しながら説明する。図示の例は、外部装置２００としてスマートフォン１０を用い、情報処理装置１００として当該スマートフォン１０に装着されたＳＩＭカード１１を用い、現時点で管理プログラムＳＳＤ２の管理下にある管理プログラム（ＳＳＤ３：移動対象となるプログラム）を、移動先となる新たな管理プログラム（ＳＳＤ１）の管理下に移動する例である。
【０２８７】
図１８のチャートにおける右端のラインは、外部装置２００（スマートフォン１０）に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「管理プログラムＳＳＤ２」（指定管理プログラム）を示し、中央左側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「ＯＳプログラム」を示し、左端のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「管理プログラムＳＳＤ１」（移動先となる新たな管理プログラム）もしくは「管理プログラムＳＳＤ３」（移動対象となる管理プログラム）を示している。
【０２８８】
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合、管理プログラムＳＳＤ２がチャネル番号「＃ｎ」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム（ＳＳＤ２）」を二重枠のブロックで示してある。
【０２８９】
まず、「ホスト側アプリ」から、情報処理装置１００に対して、アプリケーション選択コマンド「SELECT (#n), SSD2」が与えられる。当該コマンドは、§４−１で説明したとおり（図１４(a) 参照）、特定のチャネル番号＃ｎを指定して、情報処理装置１００側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムＳＳＤ２」がチャネル番号「＃ｎ」に対応づけられ、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＳＳＤ２」を指定したコマンドとして取り扱われ、当該「指定管理プログラムＳＳＤ２」によって処理されることになる。
【０２９０】
図示のとおり、アプリケーション選択コマンド「SELECT (#n), SSD2」は、まず、「ＯＳプログラム」によって処理される。「ＯＳプログラム」は、当該コマンドに基づいて、「管理プログラムＳＳＤ２」をチャネル番号「＃ｎ」に対応づけるための登録を行う。これにより、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＳＳＤ２」を指定したコマンドと認識され、「指定管理プログラムＳＳＤ２」に引き渡される。
【０２９１】
「ＯＳプログラム」は、「指定管理プログラムＳＳＤ２」をチャネル番号「＃ｎ」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムＳＳＤ２」に報知する。「指定管理プログラムＳＳＤ２」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「ＯＫレスポンス」を返す。
【０２９２】
続いて、「ホスト側アプリ」から、情報処理装置１００に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」が与えられる。当該コマンドについての処理およびこれに応じた「ＯＫレスポンス」については、既に図１６のチャートで述べたため、ここでは説明は省略するが、「指定管理プログラムＳＳＤ２」によって、暗号通信路を開設する処理が行われる。
【０２９３】
「ホスト側アプリ」は、返信されてきた「ＯＫレスポンス」に付随する演算結果の正当性を確認することにより、現在交信中の情報処理装置１００を正規の交信相手として認証し、続いて、情報処理装置１００に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),（ホスト認証コード）」を送信する。当該コマンドについての処理およびこれに応じた「ＯＫレスポンス」についても、既に図１６のチャートで述べたため、ここでは説明は省略するが、「指定管理プログラムＳＳＤ２」によって、「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置２００が正規の交信相手として認証され、「ＯＫレスポンス」が返信される。
【０２９４】
この時点で、情報処理装置１００（「指定管理プログラムＳＳＤ２」）と外部装置２００（「ホスト側アプリ」）との間に暗号通信路を開設する準備が完了したことになり、以後、両者間の通信は、当該暗号通信路を介して実行される。この§６で述べる第２の実施形態は、管理プログラム変更コマンドが与えられたときの処理に関するものなので、以下、この暗号通信路を介して管理プログラム変更コマンドが与えられたときの処理手順を説明する。
【０２９５】
まず、図示のとおり、「ホスト側アプリ」から、情報処理装置１００に対して、管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」が与えられる。当該コマンドは、§４−７で説明したとおり（図１４(g) 参照）、「指定管理プログラムＳＳＤ２」に対して、現時点でその管理下にある「管理プログラムＳＳＤ３」（移動対象となる管理プログラム）を、別な「管理プログラムＳＳＤ１」（移動先となる新たな管理プログラム）の管理下に移動させる指示を与えるコマンドである。
【０２９６】
従来の一般的な管理プログラムＳＤであれば、当該管理プログラム変更コマンドを直ちに実行することになるが、本発明の場合、図１７の流れ図に示す各手順により、当該管理プログラム変更コマンドが実行条件を満たしているか否かの判定が行われる。そのため、まず、当該管理プログラム変更コマンドを受信した「指定管理プログラムＳＳＤ２」は、「ＯＳプログラム」に対して上記判定を依頼する。
【０２９７】
当該依頼を受けた「ＯＳプログラム」は、図１７の流れ図におけるステップＳ２２〜Ｓ２５に相当する実行条件の判定処理を行う。すなわち、「ＯＳプログラム」は、「移動先となる新たな管理プログラムＳＳＤ１」が用いる新親暗号化プロトコルＰａを認識するとともに、「移動対象となる管理プログラムＳＳＤ３」が用いる子暗号化プロトコルＰｂを認識する。
【０２９８】
図１８における破線の矢印は、このような暗号化プロトコルＰａ，Ｐｂの認識プロセスを示している。実際には、新親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂの認識は、「管理プログラムＳＳＤ１」および「管理プログラムＳＳＤ３」が使用するメモリ領域を参照することにより行われる。
【０２９９】
「ＯＳプログラム」は、こうして認識した暗号化プロトコルＰａ，Ｐｂの強度順位を、セキュリティ強度順位リストＬ上で比較する順位判定（図１７のステップＳ２５の判定）を行い、判定結果を「指定管理プログラムＳＳＤ２」に伝達する。図１８において、「ＹＥＳ」と記載された部分の信号の流れは、肯定的な判定結果が得られた場合を示しており、図に一点鎖線の矢印で示すとおり、実行条件を満たしている旨の「判定結果ＯＫ」が伝達される。「判定結果ＯＫ」が伝達された場合、「指定管理プログラムＳＳＤ２」は、当該コマンド、すなわち、管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」を実行する。
【０３００】
その結果、「移動対象となる管理プログラムＳＳＤ３」は、「移動先となる新たな管理プログラムＳＳＤ１」の管理下に移動され、「ホスト側アプリ」に対して「ＯＫレスポンス」が返される。
【０３０１】
一方、順位判定の結果、否定的な判定結果が得られた場合は、図１８において、「ＮＯ」と記載された部分に示すような信号の流れが生じる。すなわち、図に二点鎖線の矢印で示すとおり、「ＯＳプログラム」から「指定管理プログラムＳＳＤ２」に対して、実行条件を満たしていない旨の「判定結果ＮＧ」が伝達される。「判定結果ＮＧ」が伝達された場合、「指定管理プログラムＳＳＤ２」は、当該管理プログラム変更コマンド「INSTALL for extradition (#n), SSD1, SSD3」の実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「ＮＧレスポンス」を返す。この「ＮＧレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
【０３０２】
なお、順位判定の結果、肯定的な判定結果が得られた場合は、図１８に「ＹＥＳの場合」と記載された部分の白矢印に示すとおり、「移動対象となる管理プログラムＳＳＤ３」についての発行処理、すなわち、鍵データの書込処理が行われることになる。この発行処理は、「ホスト側アプリ」から、情報処理装置１００に対して、新たなアプリケーション選択コマンド「SELECT (#n), SSD1」を与えることにより、「移動先となる新たな管理プログラムＳＳＤ１」を新たな「指定管理プログラム」として選択した後に行われることになる（詳細な作業手順の説明は省略する）。
【０３０３】
＜６−３．  第２の実施形態の特徴＞
以上、本発明の第２の実施形態の具体例を、図１７の流れ図および図１８のチャートを用いて説明したが、ここでは、この第２の実施形態に係る情報処理装置の特徴をまとめておく。
【０３０４】
第２の実施形態に係る情報処理装置１００は、図１２のブロック図に示すとおり、外部装置２００との間で暗号通信を行う機能を有する情報処理装置であり、ＯＳプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部１１０と、この情報格納部１１０に格納されているプログラムを実行するプログラム実行部１２０と、を備えている。
【０３０５】
ここで、情報格納部１１０には、アプリケーションプログラムとして、少なくとも１つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置２００から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
【０３０６】
また、情報格納部１１０には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストＬが格納されており、情報格納部１１０に格納されている管理プログラムのうち、少なくとも１つの指定管理プログラム（たとえば、ＳＳＤ２）は、自己の管理下にあるアプリケーションプログラム（たとえば、ＳＳＤ３）を新たな管理プログラム（たとえば、ＳＳＤ１）の管理下に移動させる管理プログラム変更機能を有している。
【０３０７】
そして、この指定管理プログラム（たとえば、ＳＳＤ２）は、外部装置２００から、自己の管理下にある別な管理プログラム（たとえば、ＳＳＤ３）を移動対象として、当該移動対象となる管理プログラム（たとえば、ＳＳＤ３）を、移動先となる新たな管理プログラム（たとえば、ＳＳＤ１）の管理下に移動させる旨の管理プログラム変更コマンドが与えられたときに、所定の実行条件が満たされていた場合には当該管理プログラム変更コマンドに基づく管理プログラム変更処理を実行し、当該実行条件が満たされていなかった場合には当該管理プログラム変更コマンドに基づく管理プログラム変更処理を拒絶する。
【０３０８】
具体的には、移動対象となる管理プログラム（たとえば、ＳＳＤ３）の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルＰｂと呼び、移動先となる新たな管理プログラム（たとえば、ＳＳＤ１）の暗号通信路開設機能に用いられる暗号化プロトコルを新親暗号化プロトコルＰａと呼んだ場合に、セキュリティ強度順位リストＬにおいて、新親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、新親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
【０３０９】
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部１１０に格納されている「移動対象となる管理プログラム（たとえば、ＳＳＤ３）」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルＰａの認識が行われる。同様に、情報格納部１１０に格納されている「移動先となる新たな管理プログラム（たとえば、ＳＳＤ１）」もしくは当該プログラムに関連するデータを参照することにより新親暗号化プロトコルＰａの認識が行われる。
【０３１０】
なお、図１８に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム（たとえば、ＳＳＤ２）」が、親暗号化プロトコルＰａと子暗号化プロトコルＰｂとについての順位判定処理を「ＯＳプログラム」に委託し、「ＯＳプログラム」が実行した順位判定処理の結果に基づいて、インストールコマンドの実行／拒絶を決定するようにしている。
【０３１１】
もちろん、本発明の第２の実施形態を実施する上で、実行条件が満たされているか否かの判定（セキュリティ強度順位リストＬを参照した順位判定）は、必ずしも「ＯＳプログラム」によって実行する必要はなく、「指定管理プログラム（たとえば、ＳＳＤ２）」が自ら実行するようにしてもかまわないが、§５−３において述べたとおり、一般的なＩＣカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「ＯＳプログラム」に委託して実行するのが好ましい。
【０３１２】
なお、図１８のチャートの最下段に示すとおり、「移動先となる新たな管理プログラム（たとえば、ＳＳＤ１）」は、自己の管理下にあるアプリケーションプログラムを動作させるために必要な発行データを書込む発行データ書込機能を有しており、外部装置２００から与えられる発行データ書込コマンドに基づいて、自己の管理下に移動されてきた「移動対象となる管理プログラム（たとえば、ＳＳＤ３）」についての発行データ書込処理（発行処理）を実行することができる。具体的には、発行データとして鍵データの書込みが行われる。
【０３１３】
＜６−４．  複数通りの暗号化プロトコルへの対応＞
§５−４でも述べたとおり、本願発明は、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。§５−４では、第１の実施形態を実施する際に、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを使い分けることができるようにした場合に、実行条件が満たされているか否かの判定をどのようにするかについて説明を行った。この§５−４で述べた方法は、ここで述べる第２の実施形態を実施する場合にも同様に有効である。
【０３１４】
すなわち、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルをサポートしているケースでは、図１７のステップＳ２５に示す判定処理を行う際に、新親暗号化プロトコルＰａが複数通り存在する可能性があり、子暗号化プロトコルＰｂも複数通り存在する可能性がある。そこで、新親暗号化プロトコルＰａが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストＬを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。具体的には、§５−４で述べたとおり、次の２通りの選出方法が可能である。
【０３１５】
第１の選出方法は、新親暗号化プロトコルＰａが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も高い暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も高い暗号化プロトコルを代表として選出する方法である。要するに、新親暗号化プロトコルＰａも子暗号化プロトコルＰｂも、それぞれ最高順位のものが代表として選出されることになる。
【０３１６】
この第１の選出方法を採る場合は、図１８の最下段に示す「移動対象となる管理プログラム（ＳＳＤ３）」についての発行処理（「移動先となる新たな管理プログラム（ＳＳＤ１）」の管理下における発行処理）を行う際に、「移動先となる新たな管理プログラム（ＳＳＤ１）」に開設させる暗号通信路として、順位が最も高い暗号化プロトコルを用いた暗号通信路を開設させるように留意する必要がある。このような留意を行う限り、「移動対象となる管理プログラム（ＳＳＤ３）」が移動後にどの暗号化プロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
【０３１７】
第２の選出方法は、新親暗号化プロトコルＰａが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も低い暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も高い暗号化プロトコルを代表として選出する方法である。要するに、新親暗号化プロトコルＰａでは最低順位のものが、子暗号化プロトコルＰｂでは最高順位のものが、それぞれ代表として選出されることになる。
【０３１８】
この第２の選出方法を採れば場合は、図１８の最下段に示す「移動対象となる管理プログラム（ＳＳＤ３）」についての発行処理を行う際に、「移動先となる新たな管理プログラム（ＳＳＤ１）」に開設させる暗号通信路として、どの順位の暗号化プロトコルを用いた暗号通信路を開設させたとしても、また、「移動対象となる管理プログラム（ＳＳＤ３）」が移動後にどの暗号化プロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。したがって、上記第１の選出方法のような特別な留意を払う必要はない。但し、順位判定において肯定的な判定がなされるハードルは高くなるため、管理プログラム変更コマンドが拒絶される可能性は高くなる。
【０３１９】
＜＜＜  §７．  第３の実施形態（暗号通信路代理開設の制限）  ＞＞＞
既に述べたとおり、上位管理プログラムの管理下に、下位管理プログラムを組み込む場合、まず、下位管理プログラムのパッケージをロードし（図８(b) の機能４）、これをインストールし（図８(b) の機能５）、最後に鍵データを書込む発行処理（図８(b) の機能７）を行う必要がある。第１の実施形態は、インストールする際にセキュリティ強度順位リストＬを用いた順位判定を行い、インストールコマンドの実行条件のチェックを行うものであり、第２の実施形態は、これに準じて、新規にインストールする際ではなく、新たな上位管理プログラムの管理下に階層間移動させる際にチェックを行うものである。
【０３２０】
ここで述べる第３の実施形態は、インストール作業（ここでは、階層間の移動作業も含めたものとする）まではノーチェックで作業を進め、最終段階の発行処理（鍵データの書込処理）において、チェックを行うという着想に基づくものである。したがって、この第３の実施形態は、上位管理プログラムの管理下に、既に下位管理プログラムがインストールされているが、当該下位管理プログラムについての鍵データの書込処理（発行処理）はまだ行われていない、という段階で実施することが前提となっている。より具体的には、鍵データの書込みを行う準備段階として暗号通信路開設コマンドが与えられたときに、当該コマンドの実行条件をチェックすることになる。
【０３２１】
そして、チェックの結果、実行条件が満たされていた場合には、上位管理プログラムが下位管理プログラムの代理として、暗号通信路を開設する処理を行う。結局、この§７で述べる第３の実施形態では、図１４(e) に示す暗号通信路開設コマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、暗号通信路の代理開設を制限することになる。以下、この第３の実施形態について詳述する。
【０３２２】
なお、上述したとおり、§３〜§６の説明では、インストールコマンドに基づく新規インストールだけでなく、管理プログラム変更コマンドに基づく階層間の移動により管理下に配置される場合も広義の「インストール」と呼ぶことにする。
【０３２３】
＜７−１．  第３の実施形態における実行条件の判定処理＞
暗号通信路開設コマンドは、§４−５で述べたとおり、特定の管理プログラムＳＤに対して、暗号通信路を開設させるためのコマンドであり、図１４(e) に示すとおり、「INITIALIZE UPDATE (#n)＋パラメータ」というデータ構造を有し、チャネル番号＃ｎを指定して、指定管理プログラムＳＤに対して、暗号通信路を開設する指示を与えるとともに、外部装置２００が、情報処理装置１００を正規の交信相手として認証するために用いるレスポンスを要求するコマンドである。
【０３２４】
この暗号通信路開設コマンドには、パラメータとして、キーバージョン番号および乱数が付加されている。そこで、当該コマンドを受信した管理プログラムＳＤは、本来であれば、図３に示す鍵テーブルＴからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置２００との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を当該コマンドに対するレスポンスとして返信することになる。
【０３２５】
しかしながら、この暗号通信路開設コマンドを受信した管理プログラムＳＤが、インストールの段階までは完了しているが、まだ暗号データの書込段階が行われていない状態であった場合には、図３に示す鍵テーブルＴは空のテーブルであり、当然ながら、当該管理プログラムＳＤは、まだ自分自身では暗号通信路を開設することはできない。GlobalPlatform（登録商標）の仕様では、このような場合、その上位の管理プログラムが暗号通信路の開設処理を代理実行することになる。
【０３２６】
ここでは、やはり図１１に示す階層構造を例にとって、管理プログラムＩＳＤの管理下に、既に管理プログラムＳＳＤ１がインストールされているが、完全な組込処理は完了しておらず、この後、管理プログラムＳＳＤ１についての鍵データの書込処理（発行処理）を行う必要がある状態を例にとって、以下に具体的な処理手順を示そう。
【０３２７】
ここで留意しておくべき点は、インストールコマンドや管理プログラム変更コマンドは、上位の管理プログラムを指定管理プログラムとして、当該上位の管理プログラムに付与されたチャネル番号（たとえば、「＃ｍ」）の下に開設された暗号通信路を介して実行されるコマンドであるのに対して、この第３の実施形態における鍵データを書込む発行処理を行うためのコマンドは、新たに組み込まれる下位の管理プログラムを指定管理プログラムとして、当該下位の管理プログラムに新たなチャネル番号（たとえば、「＃ｎ」）を付与して実行すべきコマンドであるため、新たなチャネル番号「＃ｎ」の下に新たな暗号通信路を開設する必要がある。
【０３２８】
したがって、上例の場合、下位の管理プログラムＳＳＤ１についての鍵データの書込処理を行う際には、まず、外部装置２００から情報処理装置１００に対して、「INITIALIZE UPDATE (#n)＋パラメータ」なる暗号通信路開設コマンドを与えて、チャネル番号「＃ｎ」が割り当てられた管理プログラムＳＳＤ１を指定管理プログラムとして暗号通信路の開設を指示する必要がある。この場合、管理プログラムＳＳＤ１は、まだ発行処理（鍵データの書込処理）が完了していないので、自分自身では暗号通信路の開設を行うことができない。このため、情報処理装置１００の内部では、上位の管理プログラムＩＳＤが暗号通信路の代理開設を行うことになる。
【０３２９】
図１９は、本発明の第３の実施形態において、指定管理プログラムＳＳＤ１に対して暗号通信路開設コマンドが与えられた場合の処理手順を示す流れ図である。この図１９の流れ図に示す手順は、要するに、第１の暗号化プロトコルを用いた暗号通信路開設機能を有する第１の管理プログラムＩＳＤの管理下に、第２の暗号化プロトコルを用いた暗号通信路開設機能を有する第２の管理プログラムＳＳＤ１が既にインストールされているが（階層間移動も含めた広義の「インストール」）、第２の管理プログラムＳＳＤ１が用いる暗号鍵の書込みがまだ実行されていない状態において、当該暗号鍵の書込みを暗号通信路を介して行うために、第１の管理プログラムＩＳＤに暗号通信路を代理開設させるための組込用コマンド（暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」）が、外部装置２００から情報処理装置１００に対して与えられたときに実行される手順ということになる。
【０３３０】
この手順の目的は、セキュリティ強度順位リストＬ上で第１の暗号化プロトコルよりも第２の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド（暗号通信路開設コマンド「INITIALIZE UPDATE (#n)＋パラメータ」）の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムを組み込む作業が最終段階まで実行されることを回避することにある。
【０３３１】
まず、ステップＳ３１では、指定管理プログラム（ＳＳＤ１）により、「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」なる暗号通信路開設コマンドが受信される。このコマンドは、指定管理プログラム（ＳＳＤ１）に対して、暗号通信路の開設および認証用レスポンスの返信を求めるコマンドである。このコマンドが与えられると、ステップＳ３２において、暗号鍵が書込済みであるか否かが判断される。
【０３３２】
ここで言う暗号鍵は、指定管理プログラム（ＳＳＤ１）のための暗号鍵（たとえば、図３に示す鍵テーブルＴ）であり、暗号鍵が書込済みであれば、指定管理プログラム（ＳＳＤ１）の組込処理は最終段階まで完了しており、指定管理プログラム（ＳＳＤ１）は、自分自身で暗号通信路の開設処理を実行できる状態にある、ということになる。したがって、ステップＳ３２で肯定的な判定がなされると、ステップＳ３９へと進み、当該暗号通信路開設コマンドが指定管理プログラム（ＳＳＤ１）自身によって実行される。
【０３３３】
ここで説明すべき例は、指定管理プログラム（ＳＳＤ１）が、その上位の管理プログラム（ＩＳＤ）の管理下にインストールされているものの、まだ暗号鍵の書込みが行われていない場合の処理であるので、ステップＳ３２において否定的な判定がなされる。従来の情報処理装置の場合、ステップＳ３２で否定的な判定がなされると、与えられた暗号通信路開設コマンドは、上位管理プログラム（ＩＳＤ）へと引き渡され、この上位管理プログラム（ＩＳＤ）によるコマンドの代理実行が直ちに実行されることになる。これに対して、本発明の場合、そのような代理実行を行う前に、セキュリティ強度順位リストＬを参照して、実行条件が満たされているか否かの判定が行われる。
【０３３４】
まず、ステップＳ３３において、代理する上位管理プログラム（ＩＳＤ）がサポートしている親暗号化プロトコルＰａが認識される。当該上位管理プログラム（ＩＳＤ）は、既に組込済みのプログラムであるため、当該上位管理プログラム（ＩＳＤ）が使用するメモリ領域には、当該上位管理プログラム（ＩＳＤ）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルＰａを認識することができる。
【０３３５】
続いて、ステップＳ３４において、代理される指定管理プログラム（ＳＳＤ１）がサポートしている子暗号化プロトコルＰｂが認識される。指定管理プログラム（ＳＳＤ１）は、既に上位管理プログラム（ＩＳＤ）の管理下にインストールされているプログラムであるため、当該指定管理プログラム（ＳＳＤ１）が使用するメモリ領域には、当該指定管理プログラム（ＳＳＤ１）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルＰｂも認識することができる。
【０３３６】
こうして、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂが認識されたら、続いて、ステップＳ３５において、セキュリティ強度順位リストＬが参照され、ステップＳ３６において、当該暗号通信路開設コマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルＰａの順位が、子暗号化プロトコルＰｂの順位と等しいか、または、子暗号化プロトコルＰｂの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より低い場合には否定的な判定がなされる。
【０３３７】
肯定的な判定がなされた場合は、ステップＳ３７において、当該暗号通信路開設コマンドが代理実行される。すなわち、指定管理プログラム（ＳＳＤ１）が自分自身で実行するのではなく、上位管理プログラム（ＩＳＤ）が代理で、暗号通信路の開設処理を実行する。もちろん、この場合、上位管理プログラム（ＩＳＤ）用の暗号鍵を用い、上位管理プログラム（ＩＳＤ）用の暗号化プロトコルを用いた暗号通信路が開設されることになる。また、認証用レスポンスを作成する処理も上位管理プログラム（ＩＳＤ）によって代理実行されることになる。
【０３３８】
一方、否定的な判定がなされた場合は、ステップＳ３８において、当該暗号通信路開設コマンドは拒絶され、外部装置２００に対してエラーを示すレスポンスが返されることになる。
【０３３９】
＜７−２．  第３の実施形態の具体的な処理チャート＞
続いて、外部装置２００から第３の実施形態に係る情報処理装置１００に対して、暗号通信路開設コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図２０および図２１に示すチャートを参照しながら説明する。図示の例は、外部装置２００としてスマートフォン１０を用い、情報処理装置１００として当該スマートフォン１０に装着されたＳＩＭカード１１を用い、第１の管理プログラムＩＳＤの管理下に既にインストールされている第２の管理プログラムＳＳＤ１について、鍵データの書込処理を行うために、暗号通信路の開設を指示する例である。
【０３４０】
図２０，図２１のチャートにおける右端のラインは、外部装置２００（スマートフォン１０）に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込み途中の「管理プログラムＳＳＤ１」（代理される下位管理プログラム）を示し、中央左側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「ＯＳプログラム」を示し、左端のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「管理プログラムＩＳＤ」（代理する上位管理プログラム）を示している。
【０３４１】
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合、管理プログラムＳＳＤ１がチャネル番号「＃ｎ」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム（ＳＳＤ１）」を二重枠のブロックで示してある。また、図２０は、順位判定により肯定的な判定がなされた場合の処理を示し、図２１は、順位判定により否定的な判定がなされた場合の処理を示している。
【０３４２】
まず、図２０のチャートについて説明する。はじめに、「ホスト側アプリ」から、情報処理装置１００に対して、アプリケーション選択コマンド「SELECT (#n), SSD1」が与えられる。当該コマンドは、§４−１で説明したとおり（図１４(a) 参照）、特定のチャネル番号＃ｎを指定して、情報処理装置１００側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムＳＳＤ１」がチャネル番号「＃ｎ」に対応づけられ、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＳＳＤ１」を指定したコマンドとして取り扱われ、当該「指定管理プログラムＳＳＤ１」によって処理されることになる。
【０３４３】
図示のとおり、アプリケーション選択コマンド「SELECT (#n), SSD1」は、まず、「ＯＳプログラム」によって処理される。「ＯＳプログラム」は、当該コマンドに基づいて、「管理プログラムＳＳＤ１」をチャネル番号「＃ｎ」に対応づけるための登録を行う。これにより、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＳＳＤ１」を指定したコマンドと認識され、「指定管理プログラムＳＳＤ１」に引き渡される。
【０３４４】
「ＯＳプログラム」は、「指定管理プログラムＳＳＤ１」をチャネル番号「＃ｎ」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムＳＳＤ１」に報知する。「指定管理プログラムＳＳＤ１」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「ＯＫレスポンス」を返す。こうして、新たにチャネル番号「＃ｎ」に割り当てられた通信チャネルが開設されたら、続いて、当該通信チャネルを暗号通信路にするための処理が必要になる。
【０３４５】
そこで、「ホスト側アプリ」から、情報処理装置１００に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」が与えられる。当該コマンドは、所定の管理プログラムに対して、キーバーション番号で指定された暗号鍵を用いて暗号通信路の開設を指示するとともに、乱数に基づいて所定の認証用レスポンスの返信を求めるコマンドである。ただ、この時点では、「指定管理プログラムＳＳＤ１」用の鍵データの書込処理が行われていないため、「指定管理プログラムＳＳＤ１」は自分自身で当該コマンドを実行することができない。そこで、当該コマンドは、「上位管理プログラムＩＳＤ」に代理実行してもらう必要がある。
【０３４６】
従来の一般的な管理プログラムＳＤであれば、当該暗号通信路開設コマンドを直ちに「上位管理プログラムＩＳＤ」に引き渡し、代理実行してもらうことになるが、本発明の場合、図１９の流れ図に示す各手順により、当該暗号通信路開設コマンドが実行条件を満たしているか否かの判定が行われる。そのため、まず、当該暗号通信路開設コマンドを受信した「指定管理プログラムＳＳＤ１」は、「ＯＳプログラム」に対して上記判定を依頼する。
【０３４７】
当該依頼を受けた「ＯＳプログラム」は、図１９の流れ図におけるステップＳ３３〜Ｓ３６に相当する実行条件の判定処理を行う。すなわち、「ＯＳプログラム」は、「代理する上位管理プログラムＩＳＤ」が用いる親暗号化プロトコルＰａを認識するとともに、「代理される指定管理プログラムＳＳＤ１」が用いる子暗号化プロトコルＰｂを認識する。
【０３４８】
図２０における破線の矢印は、このような暗号化プロトコルＰａ，Ｐｂの認識プロセスを示している。実際には、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂの認識は、「管理プログラムＩＳＤ」および「管理プログラムＳＳＤ１」が使用するメモリ領域を参照することにより行われる。
【０３４９】
「ＯＳプログラム」は、こうして認識した暗号化プロトコルＰａ，Ｐｂの強度順位を、セキュリティ強度順位リストＬ上で比較する順位判定（図１９のステップＳ３６の判定）を行い、判定結果に応じて、それぞれ異なる処理を実行する。図２０に「ＹＥＳ」と記載された一点鎖線より下方の処理は、肯定的な判定結果が得られた場合の処理であり、以下、当該処理を順に説明する。
【０３５０】
まず、「ＯＳプログラム」から「代理する上位管理プログラムＩＳＤ」に対して、当該暗号通信路開設コマンド、すなわち、「指定管理プログラムＳＳＤ１」が受信した「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」なるコマンドの代理実行が依頼される。依頼を受けた「上位管理プログラムＩＳＤ」は、当該コマンドを代理実行する。もちろん、「上位管理プログラムＩＳＤ」には、異なるチャネル番号（たとえば、「＃ｍ」）が割り当てられているので、「上位管理プログラムＩＳＤ」は、当該コマンドを、チャネル番号「＃ｎ」が割り当てられている「指定管理プログラムＳＳＤ１」の代理として実行することを認識して、以下の処理を行うことになる。
【０３５１】
すなわち、「上位管理プログラムＩＳＤ」は、自分用の暗号鍵を用いて、暗号通信路を代理開設するための処理を行うとともに、認証用レスポンスの作成する処理を行い、処理が支障なく完了した旨の完了通知を「ＯＳプログラム」に返す。認証用レスポンスは、暗号通信路開設コマンドに含まれていた乱数と、自分用の暗号鍵とを利用した所定の演算処理によって作成される。「ＯＳプログラム」宛の完了通知には、作成した認証用レスポンスが含まれている。「ＯＳプログラム」は、当該完了通知を「指定管理プログラムＳＳＤ１」に伝達する。「指定管理プログラムＳＳＤ１」は、「ホスト側アプリ」に対して「ＯＫレスポンス」を返す。この「ＯＫレスポンス」には、「上位管理プログラムＩＳＤ」が作成した認証用レスポンスが含まれている。
【０３５２】
「ホスト側アプリ」は、返信されてきた「ＯＫレスポンス」に付随する認証用レスポンスの正当性を確認することにより、現在交信中の情報処理装置１００を正規の交信相手として認証し、続いて、情報処理装置１００に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),（ホスト認証コード）」を送信する。
【０３５３】
この外部認証コマンドは、まずチャネル番号「＃ｎ」で指定された「指定管理プログラムＳＳＤ１」が受信することになるが、これを「ＯＳプログラム」に引き渡すことになる。「ＯＳプログラム」は、この外部認証コマンドを「上位管理プログラムＩＳＤ」に引き渡して代理実行の依頼を行う。依頼を受けた「上位管理プログラムＩＳＤ」は、当該コマンドを代理実行する。すなわち、当該外部認証コマンドに含まれている「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置２００を正規の交信相手として認証する処理を行う。
【０３５４】
正しい認証が行われたら、「上位管理プログラムＩＳＤ」から「ＯＳプログラム」に対して完了通知がなされ、「ＯＳプログラム」は当該完了通知を「指定管理プログラムＳＳＤ１」に伝達する。そして、「指定管理プログラムＳＳＤ１」は、「ホスト側アプリ」に対して「ＯＫレスポンス」を返す。
【０３５５】
以上の処理により、情報処理装置１００と外部装置２００との間には、チャネル番号「＃ｎ」に対応づけられた暗号通信路が開設されることになる。そこで、外部装置２００は、この暗号通信路を利用して、鍵データの書込みを行うためのコマンドを送信する。鍵データの書込みを行うためのコマンドとしては、§４−４「アプリケーション向け発行データの書込コマンド」において説明したとおり、２通りの書込コマンドが用意されている。
【０３５６】
図１４(d) に示すとおり、書込コマンドその１は、発行データを書込むための汎用の書込コマンドであり、「STORE DATA (#n)＋発行データ」というデータ構造を有し、チャネル番号＃ｎを指定して、「発行データ」の部分のデータを発行データとして書込む旨の指示を伝えるコマンドになる。したがって、「発行データ」の部分に鍵データをおけば、鍵データの書込処理が可能になる。一方、書込コマンドその２は、鍵データを書込むための専用の書込コマンドであり、「PUT KEY (#n)＋鍵データ」というデータ構造を有し、チャネル番号＃ｎを指定して、「鍵データ」の部分のデータを図３に例示した鍵テーブルＴ（インストール時に空の格納場所のみが用意されている）に書込む旨の指示を伝えるコマンドになる。
【０３５７】
いずれの書込コマンドの場合も、まずチャネル番号「＃ｎ」で指定された「指定管理プログラムＳＳＤ１」が受信することになるが、既に開設された暗号通信路を介して送信されてきたコマンドであるため、実行時には復号する必要がある。GlobalPlatform（登録商標）の仕様では、コマンドの先頭５バイトの部分は平文のままとされているので、暗号通信路を介して送信されてきたコマンドであっても、当該コマンドがどのコマンドであるかを識別することはできるが、その実体部分（たとえば、書込コマンドの場合、書込対象となるデータ部分）は復号する必要がある。
【０３５８】
ここで、チャネル番号＃ｎで開設されている暗号通信路は、「上位管理プログラムＩＳＤ」が代理開設した暗号通信路であるため、復号の処理は、「上位管理プログラムＩＳＤ」に実行させる必要がある。そこで、書込コマンドを受信した「指定管理プログラムＳＳＤ１」は、これを「ＯＳプログラム」に引き渡す。「ＯＳプログラム」は、この書込コマンドを「上位管理プログラムＩＳＤ」に引き渡して復号処理依頼を行う。こうして、「上位管理プログラムＩＳＤ」によって、書込コマンドに対する復号が行われる。なお、通常、復号時にはチェックコードの検証も併せて実行される。
【０３５９】
そもそも、暗号通信路の開設とは、情報処理装置１００と外部装置２００との間の通信路を介して送受されるデータを、送信側で暗号化し、受信側では、これを復号する、という処理が行われるように必要な設定を行うことを意味している。したがって、上例の場合、「上位管理プログラムＩＳＤ」が暗号通信路を代理開設しているため、暗号化された状態で送信されてきたコマンドに対する復号処理は、「上位管理プログラムＩＳＤ」によって実行する必要がある。
【０３６０】
このように、暗号化された書込コマンドは、「上位管理プログラムＩＳＤ」において復号されて平文コマンドに戻された後、「ＯＳプログラム」に引き渡され、更に「指定管理プログラムＳＳＤ１」に引き渡される。「指定管理プログラムＳＳＤ１」は、こうして平文となった書込コマンドを実行し、鍵データの書込処理を行い、「ホスト側アプリ」に対して「ＯＫレスポンス」を返す。書込コマンドの具体的な処理については、既に、§４−４で説明したため、ここでは説明を省略する。なお、GlobalPlatformの仕様では、鍵データの場合、コマンドのデータフィールド全体に対する暗号通信用の暗号化に加えて、鍵データ自身に対する暗号化も行われるため、鍵データの部分は二重に暗号化されることになる。このため、実際には、「指定管理プログラムＳＳＤ１」は、平文コマンドを受け取った後、再度、鍵データの部分についての復号処理を、「上位管理プログラムＩＳＤ」に依頼する必要がある。ただ、本願では、便宜上、このような再度の復号処理依頼のプロセスについては説明を省略する。後述する各実施例についても同様である。
【０３６１】
このように、図２０のチャートに示されている処理は、基本的には、「指定管理プログラムＳＳＤ１」に対して、「STORE DATA (#n),（発行データ）」もしくは「PUT KEY (#n),（鍵データ）」という鍵データの書込コマンドを与えて、「指定管理プログラムＳＳＤ１」自身に自己用の暗号鍵を書込む処理を実行させる処理であるが、「指定管理プログラムＳＳＤ１」自身は、まだ暗号通信路を開設する機能（復号機能）を有していないため、復号処理の部分だけを「上位管理プログラムＩＳＤ」に委託する形式を採った処理ということができる。
【０３６２】
続いて、図２１のチャートについて説明する。図２１は、順位判定により否定的な判定がなされた場合の処理を示しており、中程に「ＮＯ」と記載された二点鎖線より上方の処理は、図２０における「ＹＥＳ」と記載された一点鎖線より上方の処理と全く同じである。そこで以下、「ＮＯ」と記載された二点鎖線より下方の処理についてのみ説明を行う。
【０３６３】
「ＯＳプログラム」における順位判定によって否定的な判定がなされると、「ＯＳプログラム」から「指定管理プログラムＳＳＤ１」に対して、実行条件を満たしていない旨の「判定結果ＮＧ」が伝達される。「判定結果ＮＧ」が伝達された場合、「指定管理プログラムＳＳＤ１」は、与えられた暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」の実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「ＮＧレスポンス」を返す。この「ＮＧレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。もちろん、「上位管理プログラムＩＳＤ」における代理実行も拒絶されることになる。
【０３６４】
「ホスト側アプリ」は、「ＮＧレスポンス」として、チャネル番号「＃ｎ」の下での暗号通信路開設に失敗した旨の報告を受けることになるので、「上位管理プログラムＩＳＤ」の管理下に「指定管理プログラムＳＳＤ１」を組み込むことができないことを認識することができる。
【０３６５】
なお、図２１では、続いて、情報処理装置１００に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),（ホスト認証コード）」（暗号通信路開設コマンドに対して「ＯＫレスポンス」が得られることを前提として、次に送信するべきコマンド）が送信される例が示されているが、暗号通信路開設コマンドが拒絶されているため、外部認証コマンドを実行することはできない。したがって、「指定管理プログラムＳＳＤ１」は、この外部認証コマンドに対しても「ＮＧレスポンス」を返すことになる。
【０３６６】
＜７−３．  第３の実施形態の特徴＞
以上、本発明の第３の実施形態の具体例を、図１９の流れ図および図２０，図２１のチャートを用いて説明したが、ここでは、この第３の実施形態に係る情報処理装置の特徴をまとめておく。
【０３６７】
第３の実施形態に係る情報処理装置１００は、図１２のブロック図に示すとおり、外部装置２００との間で暗号通信を行う機能を有する情報処理装置であり、ＯＳプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部１１０と、この情報格納部１１０に格納されているプログラムを実行するプログラム実行部１２０と、を備えている。
【０３６８】
ここで、情報格納部１１０には、アプリケーションプログラムとして、少なくとも１つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置２００から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
【０３６９】
また、情報格納部１１０には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストＬが格納されており、情報格納部１１０に格納されている管理プログラムのうち、少なくとも１つの指定管理プログラム（たとえば、ＳＳＤ１）は、外部装置２００から、暗号通信路を開設する旨の暗号通信路開設コマンドが与えられた際に、自己の暗号通信路開設機能に必要な暗号鍵がまだ書込まれていなかったときに、所定の実行条件が満たされていた場合には、自己を管理下におく上位管理プログラム（たとえば、ＩＳＤ）に当該暗号通信路開設コマンドに基づく暗号通信路開設処理の代理実行を依頼し、当該実行条件が満たされていなかった場合には、当該暗号通信路開設コマンドに基づく暗号通信路開設処理を拒絶する。
【０３７０】
具体的には、指定管理プログラム（たとえば、ＳＳＤ１）の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルＰｂと呼び、上位管理プログラム（たとえば、ＩＳＤ）の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルＰａと呼んだ場合に、セキュリティ強度順位リストにおいて、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
【０３７１】
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部１１０に格納されている「上位管理プログラム（たとえば、ＩＳＤ）」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルＰａの認識が行われる。同様に、情報格納部１１０に格納されている「指定管理プログラム（たとえば、ＳＳＤ１）」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルＰｂの認識が行われる。
【０３７２】
一方、「指定管理プログラム（たとえば、ＳＳＤ１）」から暗号通信路開設処理の代理実行を依頼された「上位管理プログラム（たとえば、ＩＳＤ）」は、依頼に応じて、暗号通信路開設処理を代理実行することにより暗号通信路を代理開設することになる。
【０３７３】
また、「指定管理プログラム（たとえば、ＳＳＤ１）」は、外部装置２００から、「上位管理プログラム（たとえば、ＩＳＤ）」によって代理開設された暗号通信路を介して、暗号化されたコマンドを受信したときに、当該暗号化されたコマンドの復号を「上位管理プログラム（たとえば、ＩＳＤ）」に依頼し、復号された平文コマンドを実行する。
【０３７４】
より具体的には、「指定管理プログラム（たとえば、ＳＳＤ１）」は、外部装置２００から、自己の暗号通信路開設機能に必要な暗号鍵を書込むための書込コマンドを、「上位管理プログラム（たとえば、ＩＳＤ）」によって代理開設された暗号通信路を介して暗号化された状態で受信したときに、当該暗号化されている書込コマンドの復号を「上位管理プログラム（たとえば、ＩＳＤ）」に依頼し、復号された書込コマンドを実行することにより、暗号鍵の書込みを行う。
【０３７５】
なお、図２０，図２１に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム（たとえば、ＳＳＤ１）」が、親暗号化プロトコルＰａと子暗号化プロトコルＰｂとについての順位判定処理を「ＯＳプログラム」に委託し、「ＯＳプログラム」が実行した順位判定処理の結果に基づいて、暗号通信路開設コマンドの代理実行／拒絶を決定するようにしている。
【０３７６】
もちろん、本発明の第３の実施形態を実施する上で、実行条件が満たされているか否かの判定（セキュリティ強度順位リストＬを参照した順位判定）は、必ずしも「ＯＳプログラム」によって実行する必要はなく、「指定管理プログラム（たとえば、ＳＳＤ１）」や「上位管理プログラム（たとえば、ＩＳＤ）」が自ら実行するようにしてもかまわないが、§５−３において述べたとおり、一般的なＩＣカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「ＯＳプログラム」に委託して実行するのが好ましい。
【０３７７】
また、上例の場合、「ＯＳプログラム」は、「指定管理プログラム（たとえば、ＳＳＤ１）」から「上位管理プログラム（たとえば、ＩＳＤ）」に対する暗号通信路開設処理の代理実行依頼の仲介を行う機能も果たしている。
【０３７８】
＜７−４．  複数通りの暗号化プロトコルへの対応＞
§５−４でも述べたとおり、本願発明は、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。ここで述べる第３の実施形態を実施する場合、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルをサポートしているケースでは、図１９のステップＳ３６に示す判定処理を行う際に、親暗号化プロトコルＰａが複数通り存在する可能性があり、子暗号化プロトコルＰｂも複数通り存在する可能性がある。
【０３７９】
そこで、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストＬを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。
【０３８０】
具体的には、第３の実施形態の場合は、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちの代理実行する暗号通信路開設処理に用いられる暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も高い暗号化プロトコルを代表として選出すればよい。
【０３８１】
図２０，図２１のチャートに示すとおり、セキュリティ強度順位リストＬを用いた順位判定が行われるのは、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」が与えられた後である。そして、「代理する上位管理プログラムＩＳＤ」が複数通りの暗号化プロトコルをサポートしている場合、この暗号通信路開設コマンドもしくはそのパラメータによって、いずれかの暗号化プロトコルを指定する必要がある（たとえば、前掲の特願２０１５−１６８８６８を参照）。
【０３８２】
したがって、順位判定を行う際には、この指定された暗号化プロトコル、すなわち、代理実行する暗号通信路開設処理に用いられる暗号化プロトコルは、その後に送信される書込コマンド「STORE DATA (#n)＋発行データ」もしくは「PUT KEY (#n)＋鍵データ」の送信に実際に利用される暗号化プロトコルということになる。そこで、親暗号化プロトコルＰａとしては、この代理実行する暗号通信路開設処理に用いられるものを選択し、子暗号化プロトコルＰｂとしては、最高順位のものを選択して順位判定を行うようにすれば、後に、下位の管理プログラムＳＳＤ１が子暗号化プロトコルＰｂとしてどのプロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
【０３８３】
＜＜＜  §８．  第４の実施形態（発行セッション開始の制限）  ＞＞＞
§７で述べた第３の実施形態は、インストール作業まではノーチェックで作業を進め、最終段階の発行処理（鍵データの書込処理）において、チェックを行うという着想に基づくものである。より具体的には、上位管理プログラムの管理下に、既に下位管理プログラムがインストールされているが、当該下位管理プログラムについての鍵データの書込処理（発行処理）はまだ行われていない、という状態において、鍵データの書込みを行う準備段階として暗号通信路開設コマンドが与えられたときに、当該コマンドの実行条件をチェックする、という着想に基づくものである。
【０３８４】
この§８で述べる第４の実施形態も、基本的な着想は同じであり、上位管理プログラムの管理下に、既に下位管理プログラムがインストールされているが、当該下位管理プログラムについての鍵データの書込処理（発行処理）はまだ行われていない、という状態において、鍵データの書込みを行うためのコマンドの実行条件をチェックする、という点は、第３の実施形態と同様である。
【０３８５】
ただ、第３の実施形態では、鍵データの書込処理を指示する書込コマンドを下位管理プログラムに直接与えて実行させるという方針を採りつつ、暗号通信路の開設だけを上位管理プログラムに依頼するという方法を採用するのに対して、ここで述べる第４の実施形態では、下位管理プログラム用の鍵データの書込コマンドを、まず、上位管理プログラムに与え、この上位管理プログラムから下位管理プログラムへ引き渡して、鍵データの書込みを実行させるという方針を採る。
【０３８６】
これは、§４−８で述べたように、予め発行データ書込対象指定コマンドを用いて発行データの書込対象となるアプリケーションプログラムを指定しておけば、当該プログラムを管理する上位の管理プログラムに対して書込コマンドを与えることによって、その下位のアプリケーションプログラムに対する発行セッションを開始させることができるようになる仕組を利用したものである。
【０３８７】
したがって、この第４の実施形態では、図１４(h) に示す発行データ書込対象指定コマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、鍵データを書込むための発行セッション開始を制限することになる。
【０３８８】
＜８−１．  第４の実施形態における実行条件の判定処理＞
発行データ書込対象指定コマンドは、§４−８で述べたとおり、予め発行データの書込対象となるアプリケーションプログラムを指定しておくためのコマンドであり、図１４(h) に示すとおり、「INSTALL for personalization (#n)＋発行対象アプリ名」というデータ構造を有し、チャネル番号＃ｎを指定して、指定管理プログラムＳＤに対して、発行データの書込対象を指定するコマンドである。このコマンドで発行データの書込対象を指定しておくと、以後、チャネル番号＃ｎを指定して、指定管理プログラムＳＤに対して、発行データの書込コマンド「STORE DATA (#n)＋発行データ」を与えると、当該書込コマンドは、予め指定されていた下位のアプリケーションプログラムに対して実行されることになる。
【０３８９】
ここでは、やはり図１１に示す階層構造を例にとって、管理プログラムＩＳＤの管理下に、既に管理プログラムＳＳＤ１がインストールされているが、完全な組込処理は完了しておらず、この後、管理プログラムＳＳＤ１についての鍵データの書込処理（発行処理）を行う必要がある状態を例にとって、以下に具体的な処理手順を示そう。
【０３９０】
前述した第３の実施形態では、管理プログラムＳＳＤ１を指定管理プログラムとして、管理プログラムＳＳＤ１に対して直接書込コマンドを与える形を採用していたが、ここで述べる第４の実施形態では、上位の管理プログラムＩＳＤを指定管理プログラムとして、この上位管理プログラムＩＳＤに対して書込コマンドを与える形を採用する。ただ、上位管理プログラムＩＳＤには、事前に、その管理下にある管理プログラムＳＳＤ１を書込対象として指定しておく発行データ書込対象指定コマンドを与えておくようにする。その結果、上位管理プログラムＩＳＤに与えた書込コマンドは、書込対象となる下位管理プログラムＳＳＤ１に引き渡され、下位管理プログラムＳＳＤ１が自分用の鍵データを発行データとして書込む処理を行うことになる。
【０３９１】
図２２は、本発明の第４の実施形態において、指定管理プログラムＩＳＤに対して発行データ書込対象指定コマンドが与えられた場合の処理手順を示す流れ図である。前述の第３の実施形態では、下位の管理プログラムＳＳＤ１が指定管理プログラムになっていたが、ここに示す第４の実施形態では、上位の管理プログラムＩＳＤが指定管理プログラムになる。
【０３９２】
この図２２の流れ図に示す手順は、要するに、第１の暗号化プロトコルを用いた暗号通信路開設機能を有する第１の管理プログラムＩＳＤの管理下に、第２の暗号化プロトコルを用いた暗号通信路開設機能を有する第２の管理プログラムＳＳＤ１が既にインストールされているが（階層間移動も含めた広義の「インストール」）、第２の管理プログラムＳＳＤ１が用いる暗号鍵の書込みがまだ実行されていない状態において、第２の管理プログラムＳＳＤ１に自分自身が用いる暗号鍵を発行データとして書込ませるために、第２の管理プログラムＳＳＤ１を発行データ書込対象として指定する組込用コマンド（発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」）が外部装置２００から情報処理装置１００に対して与えられたときに実行される手順ということになる。
【０３９３】
この手順の目的は、セキュリティ強度順位リストＬ上で第１の暗号化プロトコルよりも第２の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド（発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」）の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムを組み込む作業が最終段階まで実行されることを回避することにある。
【０３９４】
まず、ステップＳ４１では、指定管理プログラム（ＩＳＤ）により、「INSTALL for personalization (#n), SSD1」なる発行データ書込対象指定コマンドが受信される。このコマンドは、指定管理プログラム（ＩＳＤ）に対して、後続して、発行データの書込コマンド「STORE DATA (#n),（発行データ）」が与えられた場合に、当該発行データの書込対象を、下位の管理プログラムＳＳＤ１に指定する旨のコマンドである。
【０３９５】
従来の情報処理装置の場合、こうして与えられた発行データ書込対象指定コマンドは、指定管理プログラム（ＩＳＤ）により直ちに実行され、指定管理プログラム（ＩＳＤ）の使用するメモリ領域に、指定された「管理プログラムＳＳＤ１」が書込対象として記録される。これに対して、本発明の場合、そのような記録を行う前に、セキュリティ強度順位リストＬを参照して、実行条件が満たされているか否かの判定が行われる。
【０３９６】
まず、ステップＳ４２において、指定管理プログラム（ＩＳＤ）がサポートしている親暗号化プロトコルＰａが認識される。当該指定管理プログラム（ＩＳＤ）は、既に組込済みのプログラムであるため、当該指定管理プログラム（ＩＳＤ）が使用するメモリ領域には、当該指定管理プログラム（ＩＳＤ）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルＰａを認識することができる。
【０３９７】
続いて、ステップＳ４３において、発行データ書込対象指定コマンドによって指定された発行データの書込対象となる下位管理プログラム（ＳＳＤ１）がサポートしている子暗号化プロトコルＰｂが認識される。下位管理プログラム（ＳＳＤ１）は、既に指定管理プログラム（ＩＳＤ）の管理下にインストールされているプログラムであるため、当該下位管理プログラム（ＳＳＤ１）が使用するメモリ領域には、当該下位管理プログラム（ＳＳＤ１）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルＰｂも認識することができる。
【０３９８】
こうして、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂが認識されたら、続いて、ステップＳ４４において、セキュリティ強度順位リストＬが参照され、ステップＳ４５において、当該発行データ書込対象指定コマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルＰａの順位が、子暗号化プロトコルＰｂの順位と等しいか、または、子暗号化プロトコルＰｂの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より低い場合には否定的な判定がなされる。
【０３９９】
肯定的な判定がなされた場合は、ステップＳ４６において、当該発行データ書込対象指定コマンドが実行される。すなわち、指定管理プログラム（ＩＳＤ）の使用するメモリ領域に、指定された「管理プログラムＳＳＤ１」が書込対象として記録される。
【０４００】
一方、否定的な判定がなされた場合は、ステップＳ４７において、当該発行データ書込対象指定コマンドは拒絶され、外部装置２００に対してエラーを示すレスポンスが返されることになる。
【０４０１】
＜８−２．  第４の実施形態の具体的な処理チャート＞
続いて、外部装置２００から第４の実施形態に係る情報処理装置１００に対して、発行データ書込対象指定コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図２３および図２４に示すチャートを参照しながら説明する。図示の例は、外部装置２００としてスマートフォン１０を用い、情報処理装置１００として当該スマートフォン１０に装着されたＳＩＭカード１１を用い、第１の管理プログラムＩＳＤの管理下に既にインストールされている第２の管理プログラムＳＳＤ１について、鍵データの書込処理を行うために、暗号通信路の開設を指示する例である。
【０４０２】
図２３，図２４のチャートにおける右端のラインは、外部装置２００（スマートフォン１０）に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「管理プログラムＩＳＤ」（上位管理プログラム）を示し、中央左側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「ＯＳプログラム」を示し、左端のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込み途中の「管理プログラムＳＳＤ１」（発行データの書込対象となる下位管理プログラム）を示している。
【０４０３】
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合、管理プログラムＩＳＤがチャネル番号「＃ｎ」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム（ＩＳＤ）」を二重枠のブロックで示してある。また、図２３は、順位判定により肯定的な判定がなされた場合の処理を示し、図２４は、順位判定により否定的な判定がなされた場合の処理を示している。
【０４０４】
まず、図２３のチャートについて説明する。はじめに、「ホスト側アプリ」から、情報処理装置１００に対して、アプリケーション選択コマンド「SELECT (#n), ISD」が与えられる。当該コマンドは、§４−１で説明したとおり（図１４(a) 参照）、特定のチャネル番号＃ｎを指定して、情報処理装置１００側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムＩＳＤ」がチャネル番号「＃ｎ」に対応づけられ、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＩＳＤ」を指定したコマンドとして取り扱われ、当該「指定管理プログラムＩＳＤ」によって処理されることになる。
【０４０５】
図示のとおり、アプリケーション選択コマンド「SELECT (#n), ISD」は、まず、「ＯＳプログラム」によって処理される。「ＯＳプログラム」は、当該コマンドに基づいて、「管理プログラムＩＳＤ」をチャネル番号「＃ｎ」に対応づけるための登録を行う。これにより、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＩＳＤ」を指定したコマンドと認識され、「指定管理プログラムＩＳＤ」に引き渡される。
【０４０６】
「ＯＳプログラム」は、「指定管理プログラムＩＳＤ」をチャネル番号「＃ｎ」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムＩＳＤ」に報知する。「指定管理プログラムＩＳＤ」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「ＯＫレスポンス」を返す。こうして、新たにチャネル番号「＃ｎ」に割り当てられた通信チャネルが開設されたら、続いて、当該通信チャネルを暗号通信路にするための処理が必要になる。もちろん、「指定管理プログラムＩＳＤ」は、既に組込作業がすべて完了している管理プログラムであるから、自分自身で暗号通信路を開設する機能を有している。
【０４０７】
そこで、「ホスト側アプリ」から、情報処理装置１００に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」が与えられる。当該コマンドは、「指定管理プログラムＩＳＤ」に対して、キーバーション番号で指定された暗号鍵を用いて暗号通信路の開設を指示するとともに、乱数に基づいて所定の認証用レスポンスの返信を求めるコマンドである。
【０４０８】
この暗号通信路開設コマンドを受信した「指定管理プログラムＩＳＤ」は、暗号通信路の開設処理を実行する。当該コマンドには、パラメータとして、キーバージョン番号および乱数が付加されているので、「指定管理プログラムＩＳＤ」は、図３に示すような鍵テーブルＴからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置２００との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を「ＯＫレスポンス」とともに返信する。
【０４０９】
「ホスト側アプリ」は、返信されてきた演算結果の正当性を確認することにより、現在交信中の情報処理装置１００を正規の交信相手として認証する。続いて、「ホスト側アプリ」から、情報処理装置１００に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),（ホスト認証コード）」が与えられる。当該コマンドは、§４−６で説明したとおり（図１４(f) 参照）、チャネル番号＃ｎで指定される管理プログラムＳＤに、現在通信を行っている外部装置２００を正規の交信相手として認証させるためのコマンドであり、パラメータとして「ホスト認証コード」が付加されている。
【０４１０】
この外部認証コマンドを受信した「指定管理プログラムＩＳＤ」は、パラメータとして付加されていた「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置２００を正規の交信相手として認証する。認証に成功すると、外部装置２００に対して「ＯＫレスポンス」が返信される。
【０４１１】
この時点で、情報処理装置１００（「指定管理プログラムＩＳＤ」）と外部装置２００（「ホスト側アプリ」）との間に暗号通信路を開設する準備が完了したことになり、以後、両者間の通信は、当該暗号通信路を介して実行されることになる。この§８で述べる第４の実施形態は、発行データ書込対象指定コマンドが与えられたときの処理に関するものなので、以下、この暗号通信路を介して発行データ書込対象指定コマンドが与えられたときの処理手順を説明する。
【０４１２】
まず、図示のとおり、「ホスト側アプリ」から、情報処理装置１００に対して、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられる。当該コマンドは、§４−８で説明したとおり（図１４(h) 参照）、「指定管理プログラムＩＳＤ」に対して、後続して与えられる発行データの書込コマンド「STORE DATA (#n),（発行データ）」の書込対象を、下位の管理プログラムＳＳＤ１に指定する旨のコマンドである。「指定管理プログラムＩＳＤ」は、暗号通信路を介して送信されてきた当該コマンドを復号して平文コマンドに変換する。
【０４１３】
従来の一般的な管理プログラムＳＤであれば、当該発行データ書込対象指定コマンドを直ちに実行することになるが、本発明の場合、図２２の流れ図に示す各手順により、当該発行データ書込対象指定コマンドが実行条件を満たしているか否かの判定が行われる。そのため、まず、当該発行データ書込対象指定コマンドを受信した「指定管理プログラムＩＳＤ」は、これを平文に復号した後、「ＯＳプログラム」に対して上記判定を依頼する。
【０４１４】
当該依頼を受けた「ＯＳプログラム」は、図２２の流れ図におけるステップＳ４２〜Ｓ４５に相当する実行条件の判定処理を行う。すなわち、「ＯＳプログラム」は、「指定管理プログラムＩＳＤ」が用いる親暗号化プロトコルＰａを認識するとともに、「発行データの書込対象となる下位管理プログラムＳＳＤ１」が用いる子暗号化プロトコルＰｂを認識する。
【０４１５】
図２３における破線の矢印は、このような暗号化プロトコルＰａ，Ｐｂの認識プロセスを示している。実際には、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂの認識は、「管理プログラムＩＳＤ」および「管理プログラムＳＳＤ１」が使用するメモリ領域を参照することにより行われる。
【０４１６】
「ＯＳプログラム」は、こうして認識した暗号化プロトコルＰａ，Ｐｂの強度順位を、セキュリティ強度順位リストＬ上で比較する順位判定（図２２のステップＳ４５の判定）を行い、判定結果に応じて、それぞれ異なる処理を実行する。図２３に「ＹＥＳ」と記載された一点鎖線より下方の処理は、肯定的な判定結果が得られた場合の処理であり、以下、当該処理を順に説明する。
【０４１７】
まず、「ＯＳプログラム」から「指定管理プログラムＩＳＤ」に対して、発行データ書込対象指定コマンドの実行条件が満たされていることを示す「ＯＫ信号」が伝達される。続いて、「ＯＳプログラム」と「指定管理プログラムＩＳＤ」との連携作業によって、当該発行データ書込対象指定コマンドが実行される。すなわち、発行データの書込対象として「下位管理プログラムＳＳＤ１」が正式に指定され、その旨の記録がなされる。その後、書込対象の記録が完了したことを示す信号が「ＯＳプログラム」から「指定管理プログラムＩＳＤ」に対して与えられ、更に、「指定管理プログラムＩＳＤ」から「ホスト側アプリ」に対して「ＯＫレスポンス」が返される。この「ＯＫレスポンス」は、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」に対するレスポンスということになる。
【０４１８】
続いて、「ホスト側アプリ」から「指定管理プログラムＩＳＤ」に対して、発行データを書込むための書込コマンド「STORE DATA (#n),（発行データ）」が与えられる。「指定管理プログラムＩＳＤ」は、暗号通信路を介して送信されてきた当該コマンドを復号して平文コマンドに変換する。ここで、「発行データ」の部分には「下位管理プログラムＳＳＤ１」用の鍵データが組み込まれる。この書込コマンドは、直接的には、チャネル番号「＃ｎ」を指定した「指定管理プログラムＩＳＤ」宛のコマンドになるが、既に、発行データ書込対象指定コマンドの実行により、「下位管理プログラムＳＳＤ１」が発行データの書込対象として指定されているため、当該書込コマンドは、平文に変換された後に「ＯＳプログラム」を介して「下位管理プログラムＳＳＤ１」へと引き渡される。
【０４１９】
こうして、「下位管理プログラムＳＳＤ１」は、引き渡された書込コマンド「STORE DATA (#n),（発行データ）」を実行して、「発行データ」を自己が使用する鍵データとして書込む処理を行い、実行完了を「ＯＳプログラム」に報告する。当該報告は、「ＯＳプログラム」から「指定管理プログラムＩＳＤ」へ通達され、これを受けた「指定管理プログラムＩＳＤ」は、「ホスト側アプリ」に対して「ＯＫレスポンス」を返す。なお、前述したとおり、GlobalPlatformの仕様では、鍵データの書込処理を行う前に、鍵データの部分についての復号処理を「指定管理プログラムＩＳＤ」に対して依頼する必要があるが、ここでは、その説明は省略する。
【０４２０】
このように、図２３のチャートに示されている処理では、形式的には、チャネル番号「＃ｎ」を指定して、「指定管理プログラムＩＳＤ」が開設した暗号通信路を介して、「指定管理プログラムＩＳＤ」宛に書込コマンド「STORE DATA (#n),（発行データ）」を与えているが、事前に、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」を与えてあるため、実際には、書込コマンドの引き渡しを受けた「下位管理プログラムＳＳＤ１」が、自分用の鍵データの書込処理（発行データの書込処理）を実行することになる。
【０４２１】
続いて、図２４のチャートについて説明する。図２４は、順位判定により否定的な判定がなされた場合の処理を示しており、中程に「ＮＯ」と記載された二点鎖線より上方の処理は、図２３における「ＹＥＳ」と記載された一点鎖線より上方の処理と全く同じである。そこで以下、「ＮＯ」と記載された二点鎖線より下方の処理についてのみ説明を行う。
【０４２２】
「ＯＳプログラム」における順位判定によって否定的な判定がなされると、「ＯＳプログラム」から「指定管理プログラムＩＳＤ」に対して、実行条件を満たしていない旨の「判定結果ＮＧ」が伝達される。「判定結果ＮＧ」が伝達された場合、「指定管理プログラムＩＳＤ」は、与えられた発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」の実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「ＮＧレスポンス」を返す。この「ＮＧレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
【０４２３】
「ホスト側アプリ」は、「ＮＧレスポンス」として、チャネル番号「＃ｎ」の下での発行データ書込対象の指定に失敗した旨の報告を受けることになるので、「上位管理プログラムＩＳＤ」の管理下に「管理プログラムＳＳＤ１」を組み込むことができないことを認識することができる。
【０４２４】
なお、図２４では、続いて、情報処理装置１００に対して、発行データを書込むための書込コマンド「STORE DATA (#n),（発行データ）」が送信される例が示されている。図２３のチャートの場合は、発行データ書込対象指定コマンドが実行されているため、書込コマンドは、「指定管理プログラムＩＳＤ」から「下位管理プログラムＳＳＤ１」へ引き渡されるが、図２４のチャートの場合は、発行データ書込対象指定コマンドが拒絶されているため、発行データ書込対象は指定されていない。したがって、書込コマンドは、「指定管理プログラムＩＳＤ」自身が実行することになり、「発行データ」は、「指定管理プログラムＩＳＤ」用の鍵データとして書込まれることになる。
【０４２５】
もちろん、「指定管理プログラムＩＳＤ」用の鍵データは、既に、図３に示すような鍵テーブルＴとして格納済みなので、上記書込コマンドは、新たな暗号鍵を追加する追加書込か、新たな暗号鍵に更新する書換処理として取り扱われる。そのような追加書込や書換処理が仕様上問題ない処理であれば、書込処理は正常終了し、外部装置２００に対して「ＯＫレスポンス」が返信されるが、仕様上問題のある処理であれば、書込処理は異常終了し、外部装置２００に対して「ＮＧレスポンス」が返信される
【０４２６】
＜８−３．  第４の実施形態の特徴＞
以上、本発明の第４の実施形態の具体例を、図２２の流れ図および図２３，図２４のチャートを用いて説明したが、ここでは、この第４の実施形態に係る情報処理装置の特徴をまとめておく。
【０４２７】
第４の実施形態に係る情報処理装置１００は、図１２のブロック図に示すとおり、外部装置２００との間で暗号通信を行う機能を有する情報処理装置であり、ＯＳプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部１１０と、この情報格納部１１０に格納されているプログラムを実行するプログラム実行部１２０と、を備えている。
【０４２８】
ここで、情報格納部１１０には、アプリケーションプログラムとして、少なくとも１つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置２００から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
【０４２９】
また、情報格納部１１０には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストＬが格納されており、情報格納部１１０に格納されている管理プログラムのうち、少なくとも１つの指定管理プログラム（たとえば、ＩＳＤ）は、自己の管理下にインストールされているアプリケーションプログラム（たとえば、ＳＳＤ１）を動作させるために必要な発行データの書込みが実行されるよう、必要な処理を行う発行データ書込処理機能を更に有している。
【０４３０】
そして、この指定管理プログラム（たとえば、ＩＳＤ）は、自己の管理下に既にインストールされている下位管理プログラム（たとえば、ＳＳＤ１）を発行データの書込対象として指定するための発行データ書込対象指定コマンドが与えられたときに、所定の実行条件が満たされていた場合には当該発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を実行し、当該実行条件が満たされていなかった場合には、当該発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を拒絶する。
【０４３１】
具体的には、指定管理プログラム（たとえば、ＩＳＤ）の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルＰａと呼び、下位管理プログラム（たとえば、ＳＳＤ１）の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルＰｂと呼んだ場合に、セキュリティ強度順位リストＬにおいて、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
【０４３２】
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部１１０に格納されている「指定管理プログラム（たとえば、ＩＳＤ）」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルＰａの認識が行われる。同様に、情報格納部１１０に格納されている「下位管理プログラム（たとえば、ＳＳＤ１）」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルＰｂの認識が行われる。
【０４３３】
実際には、「指定管理プログラム（たとえば、ＩＳＤ）」は、発行データ書込対象指定コマンドが与えられたときに、当該コマンドに基づいて発行データ書込対象指定処理を実行することにより、「下位管理プログラム（たとえば、ＳＳＤ１）」を発行データの書込対象として指定する処理を行う。そして、その後、外部装置２００から発行データ書込コマンドが与えられたときには、当該発行データ書込コマンドを「下位管理プログラム（たとえば、ＳＳＤ１）」に引き渡し、「下位管理プログラム（たとえば、ＳＳＤ１）」に発行データの書込処理を実行させる。このとき、「ＯＳプログラム」が、「指定管理プログラム（たとえば、ＩＳＤ）」から「下位管理プログラム（たとえば、ＳＳＤ１）」への発行データ書込コマンドの引き渡し処理を仲介することになる。
【０４３４】
なお、図２３，図２４に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム（たとえば、ＩＳＤ）」が、親暗号化プロトコルＰａと子暗号化プロトコルＰｂとについての順位判定処理を「ＯＳプログラム」に委託し、「ＯＳプログラム」が実行した順位判定処理の結果に基づいて、発行データ書込対象指定処理の実行／拒絶を決定するようにしている。
【０４３５】
もちろん、本発明の第４の実施形態を実施する上で、実行条件が満たされているか否かの判定（セキュリティ強度順位リストＬを参照した順位判定）は、必ずしも「ＯＳプログラム」によって実行する必要はなく、「指定管理プログラム（たとえば、ＩＳＤ）」が実行するようにしてもかまわないが、§５−３において述べたとおり、一般的なＩＣカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「ＯＳプログラム」に委託して実行するのが好ましい。
【０４３６】
＜８−４．  複数通りの暗号化プロトコルへの対応＞
§５−４でも述べたとおり、本願発明は、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。ここで述べる第４の実施形態を実施する場合、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルをサポートしているケースでは、図２２のステップＳ４５に示す判定処理を行う際に、親暗号化プロトコルＰａが複数通り存在する可能性があり、子暗号化プロトコルＰｂも複数通り存在する可能性がある。
【０４３７】
そこで、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストＬを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。
【０４３８】
具体的には、第４の実施形態の場合は、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちの発行データ書込対象指定コマンドの受信に利用された暗号通信路の開設に用いられた暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちのセキュリティ強度順位リストＬでの順位が最も高い暗号化プロトコルを代表として選出すればよい。
【０４３９】
図２３，図２４のチャートに示すとおり、セキュリティ強度順位リストＬを用いた順位判定が行われるのは、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられた後である。したがって、当該コマンドの受信に利用された暗号通信路の開設に用いられた暗号化プロトコルは容易に認識することができる。しかも、当該暗号化プロトコルは、後に与えられることになる発行データの書込コマンド「STORE DATA (#n),（発行データ）」の送信時にも利用されることになるので、「発行データ」に対するセキュリティは、当該暗号化プロトコルのセキュリティ強度に依存することになる。したがって、上記判定方法を採用すれば、後に、下位の管理プログラムＳＳＤ１が子暗号化プロトコルＰｂとしてどのプロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
【０４４０】
＜＜＜  §９．  第５の実施形態（鍵書込処理の制限（その１）  ＞＞＞
§７で述べた第３の実施形態は、インストール作業（ここでは、階層間の移動作業も含めたものとする）まではノーチェックで作業を進め、最終段階の発行処理（鍵データの書込処理）において、チェックを行うという着想に基づくものであり、特に、鍵データの書込みを行う準備段階として暗号通信路開設コマンドが与えられたときに、当該コマンドの実行条件をチェックするものである。
【０４４１】
ここで述べる第５の実施形態は、上記第３の実施形態において実行条件のチェックが行われる暗号通信路開設コマンドが与えられた時点では、ノーチェックで作業を進め、上位管理プログラムに暗号通信路を代理開設させた後、この代理開設された暗号通信路を介して鍵データの書込コマンドが与えられたときに、当該コマンドの実行条件をチェックするものである。当該チェックの結果、実行条件が満たされていた場合には、鍵データの書込処理を行うことになる。
【０４４２】
第３の実施形態の説明に用いた図２０のチャートを用いて説明すれば、第３の実施形態の場合は、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」が与えられたときに、当該コマンドの実行条件のチェック（すなわち、「ＯＳプログラム」による順位判定）が行われることになるが、ここで述べる第５の実施形態の場合、この時点では実行条件のチェックを行わずに、無条件で、「代理する上位管理プログラム（ＩＳＤ）」に対して代理実行依頼を行い、暗号通信路の代理開設を実行させる。すなわち、この図２０に「ＹＥＳ」と記載された一点鎖線より下方の処理をそのまま進めてゆく。
【０４４３】
そして、「STORE DATA (#n),（発行データ）」もしくは「PUT KEY (#n),（鍵データ）」という鍵データの書込コマンドが与えられた時点で、当該コマンドの実行条件をチェックし、実行条件が満たされていた場合に限って、当該鍵データの書込コマンドを実行するようにする。ここで鍵データの書込みが完了すれば、「指定管理プログラム（ＳＳＤ１）」の組込処理はすべて完了することになるので、正に、最後の最後の段階において、実行条件のチェックが行われることになる。
【０４４４】
結局、この§９で述べる第５の実施形態では、図１４(d) に示すアプリケーション向け発行データの書込コマンドを「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、鍵データの書込処理を制限することになる。以下、この第５の実施形態について詳述する。
【０４４５】
＜９−１．  第５の実施形態における実行条件の判定処理＞
ここでも、§７で述べた第３の実施形態の説明と同様に、管理プログラムＩＳＤの管理下に、既に管理プログラムＳＳＤ１がインストールされているが、完全な組込処理は完了しておらず、その後、管理プログラムＳＳＤ１についての鍵データの書込処理（発行処理）を行う必要がある状態を例にとって、以下に具体的な処理手順を示す。
【０４４６】
上述したとおり、ここで述べる第５の実施形態では、まず、指定管理プログラムＳＳＤ１に対して暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」を与え、上位管理プログラムＩＳＤに暗号通信路を代理開設させる。そして、この代理開設された暗号通信路を介して、指定管理プログラムＳＳＤ１に対して「STORE DATA (#n),（発行データ）」もしくは「PUT KEY (#n),（鍵データ）」という鍵データの書込コマンドを与えることになる。
【０４４７】
図２５は、上位管理プログラムＩＳＤが、その管理下にある管理プログラムＳＳＤ１を代理して、暗号通信路を開設する具体的な例について、本発明の第５の実施形態の処理手順を示す流れ図であり、指定管理プログラムＳＳＤ１に対して、上位の管理プログラムＩＳＤが代理開設した暗号通信路を介して鍵書込コマンドが与えられた場合の処理手順を示している。
【０４４８】
この図２５の流れ図に示す手順は、要するに、第１の暗号化プロトコルを用いた暗号通信路開設機能を有する第１の管理プログラムＩＳＤの管理下に、第２の暗号化プロトコルを用いた暗号通信路開設機能を有する第２の管理プログラムＳＳＤ１が既にインストールされているが（階層間移動も含めた広義の「インストール」）、第２の管理プログラムＳＳＤ１が用いる暗号鍵の書込みがまだ実行されていない状態において、第２の管理プログラムＳＳＤ１に暗号鍵の書込みを行わせるための組込用コマンド（鍵データの書込コマンド「STORE DATA (#n),（発行データ）」もしくは「PUT KEY (#n),（鍵データ）」）が、外部装置２００から情報処理装置１００に対して与えられたときに実行される手順ということになる。
【０４４９】
この手順の目的は、セキュリティ強度順位リストＬ上で第１の暗号化プロトコルよりも第２の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド（鍵データの書込コマンド「STORE DATA (#n),（発行データ）」もしくは「PUT KEY (#n),（鍵データ）」）の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムを組み込む作業が最終段階まで実行されることを回避することにある。
【０４５０】
まず、ステップＳ５１では、指定管理プログラム（ＳＳＤ１）により、「STORE DATA (#n),（発行データ）」もしくは「PUT KEY (#n),（鍵データ）」なる鍵データの書込コマンドが、上位管理プログラムＩＳＤによって代理開設された暗号通信路を介して受信される。このコマンドは、指定管理プログラム（ＳＳＤ１）に対して、自分自身が用いる鍵データの書込みを指示するコマンドである。
【０４５１】
このコマンドは、暗号化された状態で受信されるが、GlobalPlatform（登録商標）の仕様では、コマンドの先頭５バイトの部分は平文のままとされているので、暗号化通信路を介して送信されてきたコマンドであっても、当該コマンドが「STORE DATA」もしくは「PUT KEY」なるコマンドであることは識別することが可能である。ただ、暗号通信路は、上位管理プログラムＩＳＤによって代理開設されたものであるため、受信した指定管理プログラム（ＳＳＤ１）は、当該コマンドの実体部分（書込対象となるデータ部分）を復号することはできない。
【０４５２】
そこで、ステップＳ５２において、当該書込コマンドを受信した指定管理プログラム（ＳＳＤ１）から、暗号通信路を代理開設した上位管理プログラム（ＩＳＤ）に対して、当該書込コマンドの復号が依頼される。上位管理プログラム（ＩＳＤ）は、この依頼に応じて、当該書込コマンドを復号し、平文コマンドに変換して指定管理プログラム（ＳＳＤ１）に戻す。
【０４５３】
従来の情報処理装置の場合、こうして平文となった書込コマンドは、指定管理プログラム（ＳＳＤ１）によって直ちに実行されることになる。これに対して、本発明では、そのような書込みが鍵データの書込みである場合には、書込処理の実行を行う前に、セキュリティ強度順位リストＬを参照して、実行条件が満たされているか否かの判定が行われる。
【０４５４】
まず、ステップＳ５３において、暗号通信路の開設を代理する上位管理プログラム（ＩＳＤ）がサポートしている親暗号化プロトコルＰａが認識される。当該上位管理プログラム（ＩＳＤ）は、既に組込済みのプログラムであるため、当該上位管理プログラム（ＩＳＤ）が使用するメモリ領域には、当該上位管理プログラム（ＩＳＤ）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルＰａを認識することができる。
【０４５５】
続いて、ステップＳ５４において、代理される指定管理プログラム（ＳＳＤ１）がサポートしている子暗号化プロトコルＰｂが認識される。指定管理プログラム（ＳＳＤ１）は、既に上位管理プログラム（ＩＳＤ）の管理下にインストールされているプログラムであるため、当該指定管理プログラム（ＳＳＤ１）が使用するメモリ領域には、当該指定管理プログラム（ＳＳＤ１）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルＰｂも認識することができる。
【０４５６】
こうして、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂが認識されたら、続いて、ステップＳ５５において、セキュリティ強度順位リストＬが参照され、ステップＳ５６において、当該鍵データの書込コマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルＰａの順位が、子暗号化プロトコルＰｂの順位と等しいか、または、子暗号化プロトコルＰｂの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より低い場合には否定的な判定がなされる。
【０４５７】
肯定的な判定がなされた場合は、ステップＳ５７において、当該鍵データの書込コマンドが実行される。すなわち、指定管理プログラム（ＳＳＤ１）が、自分用の鍵データの書込みを行うことになる。一方、否定的な判定がなされた場合は、ステップＳ５８において、当該鍵データの書込コマンドは拒絶され、外部装置２００に対してエラーを示すレスポンスが返されることになる。
【０４５８】
＜９−２．  第５の実施形態の具体的な処理チャート＞
続いて、外部装置２００から第５の実施形態に係る情報処理装置１００に対して、鍵データの書込コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図２６に示すチャートを参照しながら説明する。図示の例は、外部装置２００としてスマートフォン１０を用い、情報処理装置１００として当該スマートフォン１０に装着されたＳＩＭカード１１を用い、第１の管理プログラムＩＳＤの管理下に既にインストールされている第２の管理プログラムＳＳＤ１について、鍵データの書込処理を行うために、暗号通信路の開設を指示する例である。
【０４５９】
この図２６のチャートに示す処理は、第３の実施形態として述べた図２０，図２１のチャートに示す処理に準じたものになる。したがって、この図２６に示すチャートにおいても、右端のラインは、外部装置２００（スマートフォン１０）に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込み途中の「管理プログラムＳＳＤ１」（代理される下位管理プログラム）を示し、中央左側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「ＯＳプログラム」を示し、左端のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「管理プログラムＩＳＤ」（代理する上位管理プログラム）を示している。
【０４６０】
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合も、管理プログラムＳＳＤ１がチャネル番号「＃ｎ」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム（ＳＳＤ１）」を二重枠のブロックで示してある。
【０４６１】
第３の実施形態として述べた図２０，図２１のチャートに示す処理と、図２６のチャートに示す第５の実施形態の処理との相違は、前者では、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」が与えられたときに、「ＯＳプログラム」による順位判定を行っているのに対して、後者では、この時点では順位判定を行わずに、当該コマンドを無条件で代理実行して、暗号通信路の代理開設を行い、その後、「STORE DATA (#n),（発行データ）」もしくは「PUT KEY (#n),（鍵データ）」なる鍵データの書込コマンドが与えられたときに、「ＯＳプログラム」による順位判定を行う点である。そのため、図２６に示すチャートの基本的な手順は、図２０，図２１に示すチャートに示す手順に沿ったものになる。
【０４６２】
要するに、第３の実施形態も第５の実施形態も、その目的は、「指定管理プログラム（ＳＳＤ１）」を「上位管理プログラム（ＩＳＤ）」の管理下に組み込むための最終段階の処理である発行処理を行う際に、セキュリティ上の所定条件が満たされているか否かのチェックを行い、条件が満たされていない場合には、発行処理を阻止することにあるが、前者では、発行処理のためのコマンドを送信するための暗号通信路の代理開設を行う時点で関所を設けて条件判定を行うのに対して、後者では、関所の位置を時間軸上で後ろにずらし、代理開設された暗号通信路を介して与えられた鍵の書込コマンドを実行する時点で関所を設けて条件判定を行うことになる。
【０４６３】
まず、「ホスト側アプリ」から、情報処理装置１００に対して、アプリケーション選択コマンド「SELECT (#n), SSD1」が与えられる。当該コマンドは、§４−１で説明したとおり（図１４(a) 参照）、特定のチャネル番号＃ｎを指定して、情報処理装置１００側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムＳＳＤ１」がチャネル番号「＃ｎ」に対応づけられ、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＳＳＤ１」を指定したコマンドとして取り扱われ、当該「指定管理プログラムＳＳＤ１」によって処理されることになる。
【０４６４】
図示のとおり、アプリケーション選択コマンド「SELECT (#n), SSD1」は、まず、「ＯＳプログラム」によって処理される。「ＯＳプログラム」は、当該コマンドに基づいて、「管理プログラムＳＳＤ１」をチャネル番号「＃ｎ」に対応づけるための登録を行う。これにより、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＳＳＤ１」を指定したコマンドと認識され、「指定管理プログラムＳＳＤ１」に引き渡される。
【０４６５】
「ＯＳプログラム」は、「指定管理プログラムＳＳＤ１」をチャネル番号「＃ｎ」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムＳＳＤ１」に報知する。「指定管理プログラムＳＳＤ１」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「ＯＫレスポンス」を返す。こうして、新たにチャネル番号「＃ｎ」に割り当てられた通信チャネルが開設されたら、続いて、当該通信チャネルを暗号通信路にするための処理が必要になる。
【０４６６】
そこで、「ホスト側アプリ」から、情報処理装置１００に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」が与えられる。当該コマンドは、「指定管理プログラムＳＳＤ１」に対して、キーバーション番号で指定された暗号鍵を用いて暗号通信路の開設を指示するとともに、乱数に基づいて所定の認証用レスポンスの返信を求めるコマンドである。ただ、この時点では、「指定管理プログラムＳＳＤ１」用の鍵データの書込処理が行われていないため、「指定管理プログラムＳＳＤ１」は自分自身で当該コマンドを実行することができない。そこで、当該コマンドは、「上位管理プログラムＩＳＤ」に代理実行してもらう必要がある。
【０４６７】
そのため、当該暗号通信路開設コマンドは、「ＯＳプログラム」を介して「上位管理プログラムＩＳＤ」に引き渡される。第３の実施形態では、この時点で関所を設け、当該暗号通信路開設コマンドが実行条件を満たしているか否かの判定を行うことになるが、ここで述べる第５の実施形態では、この時点では関所は設けられていない。したがって、与えられた暗号通信路開設コマンドは、無条件で「上位管理プログラムＩＳＤ」に引き渡され、当該コマンドは、「上位管理プログラムＩＳＤ」によって代理実行される。
【０４６８】
すなわち、「ＯＳプログラム」から「代理する上位管理プログラムＩＳＤ」に対して、「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」なるコマンドの代理実行が依頼され、依頼を受けた「上位管理プログラムＩＳＤ」は、当該コマンドを代理実行する。もちろん、「上位管理プログラムＩＳＤ」には、異なるチャネル番号（たとえば、「＃ｍ」）が割り当てられているので、「上位管理プログラムＩＳＤ」は、当該コマンドを、チャネル番号「＃ｎ」が割り当てられている「指定管理プログラムＳＳＤ１」の代理として実行することを認識して、以下の処理を行うことになる。
【０４６９】
まず、「上位管理プログラムＩＳＤ」は、自分用の暗号鍵を用いて、暗号通信路を代理開設するための処理を行うとともに、認証用レスポンスを作成する処理を行い、処理が支障なく完了した旨の完了通知を「ＯＳプログラム」に返す。認証用レスポンスは、暗号通信路開設コマンドに含まれていた乱数と、自分用の暗号鍵とを利用した所定の演算処理によって作成される。「ＯＳプログラム」宛の完了通知には、作成した認証用レスポンスが含まれている。「ＯＳプログラム」は、当該完了通知を「指定管理プログラムＳＳＤ１」に伝達する。「指定管理プログラムＳＳＤ１」は、「ホスト側アプリ」に対して「ＯＫレスポンス」を返す。この「ＯＫレスポンス」には、「上位管理プログラムＩＳＤ」が作成した認証用レスポンスが含まれている。
【０４７０】
「ホスト側アプリ」は、返信されてきた「ＯＫレスポンス」に付随する認証用レスポンスの正当性を確認することにより、現在交信中の情報処理装置１００を正規の交信相手として認証し、続いて、情報処理装置１００に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),（ホスト認証コード）」を送信する。
【０４７１】
この外部認証コマンドは、まずチャネル番号「＃ｎ」で指定された「指定管理プログラムＳＳＤ１」が受信することになるが、これを「ＯＳプログラム」に引き渡すことになる。「ＯＳプログラム」は、この外部認証コマンドを「上位管理プログラムＩＳＤ」に引き渡して代理実行の依頼を行う。依頼を受けた「上位管理プログラムＩＳＤ」は、当該コマンドを代理実行する。すなわち、当該外部認証コマンドに含まれている「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置２００を正規の交信相手として認証する処理を行う。
【０４７２】
正しい認証が行われたら、「上位管理プログラムＩＳＤ」から「ＯＳプログラム」に対して完了通知がなされ、「ＯＳプログラム」は当該完了通知を「指定管理プログラムＳＳＤ１」に伝達する。そして、「指定管理プログラムＳＳＤ１」は、「ホスト側アプリ」に対して「ＯＫレスポンス」を返す。
【０４７３】
以上の処理により、情報処理装置１００と外部装置２００との間には、チャネル番号「＃ｎ」に対応づけられた暗号通信路が開設されることになる。そこで、外部装置２００は、この暗号通信路を利用して、鍵データの書込みを行うためのコマンドを送信する。鍵データの書込みを行うためのコマンドとしては、§４−４「アプリケーション向け発行データの書込コマンド」において説明したとおり、２通りの書込コマンドが用意されている。
【０４７４】
図１４(d) に示すとおり、書込コマンドその１は、発行データを書込むための汎用の書込コマンドであり、「STORE DATA (#n)＋発行データ」というデータ構造を有し、チャネル番号＃ｎを指定して、「発行データ」の部分のデータを発行データとして書込む旨の指示を伝えるコマンドになる。したがって、「発行データ」の部分に鍵データをおけば、鍵データの書込処理が可能になる。一方、書込コマンドその２は、鍵データを書込むための専用の書込コマンドであり、「PUT KEY (#n)＋鍵データ」というデータ構造を有し、チャネル番号＃ｎを指定して、「鍵データ」の部分のデータを図３に例示した鍵テーブルＴ（インストール時に空の格納場所のみが用意されている）に書込む旨の指示を伝えるコマンドになる。
【０４７５】
いずれの書込コマンドの場合も、まずチャネル番号「＃ｎ」で指定された「指定管理プログラムＳＳＤ１」が受信することになるが、既に開設された暗号化通信路を介して送信されてきたコマンドであるため、実行時には復号する必要がある。前述のとおり、GlobalPlatform（登録商標）の仕様では、コマンドの先頭５バイトの部分は平文のままとされているので、暗号化通信路を介して送信されてきたコマンドであっても、当該コマンドがどのコマンドであるかを識別することはできるが、その実体部分（書込対象となるデータ部分）は復号する必要がある。
【０４７６】
ここで、チャネル番号＃ｎで開設されている暗号通信路は、「上位管理プログラムＩＳＤ」が代理開設した暗号通信路であるため、復号の処理は、「上位管理プログラムＩＳＤ」に実行させる必要がある。そこで、書込コマンドを受信した「指定管理プログラムＳＳＤ１」は、これを「ＯＳプログラム」に引き渡す。「ＯＳプログラム」は、この書込コマンドを「上位管理プログラムＩＳＤ」に引き渡して復号処理依頼を行う。こうして、「上位管理プログラムＩＳＤ」によって、書込コマンドに対する復号が行われる。なお、通常、復号時にはチェックコードの検証も併せて実行される。
【０４７７】
このように、暗号化された書込コマンドは、「上位管理プログラムＩＳＤ」において復号されて平文コマンドに戻された後、「ＯＳプログラム」に引き渡され、更に「指定管理プログラムＳＳＤ１」に引き渡される。
【０４７８】
なお、「指定管理プログラムＳＳＤ１」は、書込コマンドが「PUT KEY (#n),（鍵データ）」という鍵データを書込むための専用の書込コマンドであった場合は、当該コマンドの受信時に、当該コマンドの内容が鍵データの書込みであることが認識できるが、書込コマンドが「STORE DATA (#n),（発行データ）」という発行データを書込むための汎用の書込コマンドであった場合は、この平文コマンドが戻された時点で、当該コマンドの内容が鍵データの書込みであることを認識することができる。
【０４７９】
これは、書込コマンド「STORE DATA (#n),（発行データ）」の受信時には、「発行データ」の部分が暗号化されているため、「鍵データ」であるか否かを認識することができないためである。平文化された発行データには、当該発行データが「鍵データ」であることを示す情報が含まれているので、「STORE DATA (#n),（発行データ）」なる書込コマンドの場合は、平文コマンドの状態で戻されてきた時点で、はじめて、当該平文コマンドの内容が鍵データの書込みであることが判明する。
【０４８０】
いずれにしても、本発明では、平文となった当該書込コマンドが、鍵データの書込処理を指示する鍵データの書込コマンドであった場合には、当該鍵データの書込コマンドが実行条件を満たしているか否かの判定が行われる。そのため、平文となった鍵データの書込コマンドを受け取った「指定管理プログラムＳＳＤ１」は、「ＯＳプログラム」に対して上記判定を依頼する。
【０４８１】
当該依頼を受けた「ＯＳプログラム」は、図２５の流れ図におけるステップＳ５３〜Ｓ５６に相当する実行条件の判定処理を行う。すなわち、「ＯＳプログラム」は、「代理する上位管理プログラムＩＳＤ」が用いる親暗号化プロトコルＰａを認識するとともに、「代理される指定管理プログラムＳＳＤ１」が用いる子暗号化プロトコルＰｂを認識する。
【０４８２】
図２６における破線の矢印は、このような暗号化プロトコルＰａ，Ｐｂの認識プロセスを示している。実際には、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂの認識は、「管理プログラムＩＳＤ」および「管理プログラムＳＳＤ１」が使用するメモリ領域を参照することにより行われる。
【０４８３】
「ＯＳプログラム」は、こうして認識した暗号化プロトコルＰａ，Ｐｂの強度順位を、セキュリティ強度順位リストＬ上で比較する順位判定（図２５のステップＳ５６の判定）を行い、判定結果に応じて、それぞれ異なる処理を実行する。
【０４８４】
図２６に「ＹＥＳ」と記載された一点鎖線で示す処理は、肯定的な判定結果が得られた場合の処理である。この場合は、「ＯＳプログラム」から「指定管理プログラムＳＳＤ１」に対して、実行条件を満たしていることを示す「判定結果ＯＫ」が伝達され、「指定管理プログラムＳＳＤ１」は、平文となった書込コマンドを実行し、鍵データの書込処理を行い、「ホスト側アプリ」に対して「ＯＫレスポンス」を返す。
【０４８５】
一方、図２６に「ＮＯ」と記載された二点鎖線で示す処理は、否定的な判定結果が得られた場合の処理である。この場合は、「ＯＳプログラム」から「指定管理プログラムＳＳＤ１」に対して、実行条件を満たしていないことを示す「判定結果ＮＧ」が伝達され、「指定管理プログラムＳＳＤ１」は、平文となった書込コマンドの実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「ＮＧレスポンス」を返す。この「ＮＧレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
【０４８６】
「ホスト側アプリ」は、「ＮＧレスポンス」として、チャネル番号「＃ｎ」の下での鍵データの書込処理に失敗した旨の報告を受けることになるので、「上位管理プログラムＩＳＤ」の管理下に「指定管理プログラムＳＳＤ１」を組み込むことができないことを認識することができる。
【０４８７】
＜９−３．  第５の実施形態の特徴＞
以上、本発明の第５の実施形態の具体例を、図２５の流れ図および図２６のチャートを用いて説明したが、ここでは、この第５の実施形態に係る情報処理装置の特徴をまとめておく。
【０４８８】
第５の実施形態に係る情報処理装置１００は、図１２のブロック図に示すとおり、外部装置２００との間で暗号通信を行う機能を有する情報処理装置であり、ＯＳプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部１１０と、この情報格納部１１０に格納されているプログラムを実行するプログラム実行部１２０と、を備えている。
【０４８９】
ここで、情報格納部１１０には、アプリケーションプログラムとして、少なくとも１つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置２００から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
【０４９０】
また、情報格納部１１０には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストＬが格納されており、情報格納部１１０に格納されている管理プログラムのうち、少なくとも１つの指定管理プログラム（たとえば、ＳＳＤ１）は、外部装置２００から、暗号通信路を開設する旨の暗号通信路開設コマンドが与えられた際に、自己の暗号通信路開設機能に必要な暗号鍵がまだ書込まれていなかったときに、所定の実行条件が満たされていた場合には、自己を管理下におく上位管理プログラム（たとえば、ＩＳＤ）に当該暗号通信路開設コマンドに基づく暗号通信路開設処理の代理実行を依頼して、暗号通信路の代理開設を行わせる機能を有する。
【０４９１】
また、この指定管理プログラム（たとえば、ＳＳＤ１）は、外部装置２００から、自己の暗号通信路開設機能に必要な暗号鍵を書き込むための書込コマンドを、上位管理プログラム（たとえば、ＩＳＤ）によって代理開設された暗号通信路を介して暗号化された状態で受信したときに、当該暗号化されている書込コマンドを復号して平文の書込コマンドに戻す処理を当該上位管理プログラム（たとえば、ＩＳＤ）に依頼し、所定の実行条件が満たされていた場合には平文化された書込コマンドに基づく暗号鍵の書込処理を実行し、当該実行条件が満たされていなかった場合には平文化された書込コマンドに基づく暗号鍵の書込処理を拒絶する。
【０４９２】
具体的には、指定管理プログラム（たとえば、ＳＳＤ１）の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルＰｂと呼び、上位管理プログラム（たとえば、ＩＳＤ）の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルＰａと呼んだ場合に、セキュリティ強度順位リストにおいて、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
【０４９３】
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部１１０に格納されている「上位管理プログラム（たとえば、ＩＳＤ）」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルＰａの認識が行われる。同様に、情報格納部１１０に格納されている「指定管理プログラム（たとえば、ＳＳＤ１）」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルＰｂの認識が行われる。
【０４９４】
一方、「指定管理プログラム（たとえば、ＳＳＤ１）」から暗号通信路開設処理の代理実行を依頼された「上位管理プログラム（たとえば、ＩＳＤ）」は、依頼に応じて、暗号通信路開設処理を代理実行することにより暗号通信路を代理開設することになる。
【０４９５】
また、「指定管理プログラム（たとえば、ＳＳＤ１）」は、外部装置２００から、「上位管理プログラム（たとえば、ＩＳＤ）」によって代理開設された暗号通信路を介して、暗号化されたコマンドを受信したときに、当該暗号化されたコマンドの復号を「上位管理プログラム（たとえば、ＩＳＤ）」に依頼し、復号された平文コマンドを実行する。
【０４９６】
一方、「指定管理プログラム（たとえば、ＳＳＤ１）」から暗号化されている書込コマンドの復号処理を依頼された「上位管理プログラム（たとえば、ＩＳＤ）」は、依頼に応じて、復号処理を実行することにより平文の書込コマンドを作成し、これを指定管理プログラムに引き渡す。
【０４９７】
より具体的には、「指定管理プログラム（たとえば、ＳＳＤ１）」は、外部装置２００から、自己の暗号通信路開設機能に必要な暗号鍵を書込むための書込コマンドを、「上位管理プログラム（たとえば、ＩＳＤ）」によって代理開設された暗号通信路を介して暗号化された状態で受信したときに、当該暗号化されている書込コマンドの復号を「上位管理プログラム（たとえば、ＩＳＤ）」に依頼し、復号された書込コマンドが所定の実行条件を満たしていた場合には、これを実行することにより、暗号鍵の書込みを行う。
【０４９８】
なお、図２６に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム（たとえば、ＳＳＤ１）」が、親暗号化プロトコルＰａと子暗号化プロトコルＰｂとについての順位判定処理を「ＯＳプログラム」に委託し、「ＯＳプログラム」が実行した順位判定処理の結果に基づいて、暗号鍵の書込処理の実行／拒絶を決定するようにしている。
【０４９９】
もちろん、本発明の第５の実施形態を実施する上で、実行条件が満たされているか否かの判定（セキュリティ強度順位リストＬを参照した順位判定）は、必ずしも「ＯＳプログラム」によって実行する必要はなく、「指定管理プログラム（たとえば、ＳＳＤ１）」や「上位管理プログラム（たとえば、ＩＳＤ）」が実行するようにしてもかまわないが、§５−３において述べたとおり、一般的なＩＣカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「ＯＳプログラム」に委託して実行するのが好ましい。
【０５００】
また、上例の場合、「ＯＳプログラム」は、「指定管理プログラム（たとえば、ＳＳＤ１）」から「上位管理プログラム（たとえば、ＩＳＤ）」に対する暗号通信路開設処理の代理実行依頼の仲介と、「指定管理プログラム（たとえば、ＳＳＤ１）」から「上位管理プログラム（たとえば、ＩＳＤ）」に対する書込コマンドの復号処理依頼の仲介と、を行う機能も果たしている。
【０５０１】
＜９−４．  複数通りの暗号化プロトコルへの対応＞
§５−４でも述べたとおり、本願発明は、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。ここで述べる第５の実施形態を実施する場合、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルをサポートしているケースでは、図２５のステップＳ５６に示す判定処理を行う際に、親暗号化プロトコルＰａが複数通り存在する可能性があり、子暗号化プロトコルＰｂも複数通り存在する可能性がある。
【０５０２】
そこで、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストＬを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。
【０５０３】
具体的には、第５の実施形態の場合は、親暗号化プロトコルＰａが複数通り存在する場合には、そのうち、代理開設された暗号通信路に用いられた暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうち、書込コマンドに基づいて書き込まれるであろう暗号鍵を利用する暗号化プロトコルの中でセキュリティ強度順位リストでの順位が最も高い暗号化プロトコルを代表として選出すればよい。
【０５０４】
図２６のチャートに示すとおり、「STORE DATA (#n),（発行データ）」もしくは「PUT KEY (#n),（鍵データ）」なる鍵データの書込コマンドは、代理開設された暗号通信路を介して与えられることになるので、新たに書き込まれる「鍵データ（暗号鍵）」に対するセキュリティは、当該代理開設された暗号通信路に用いられた暗号化プロトコルのセキュリティ強度に依存することになる。
【０５０５】
一方、指定管理プログラムが複数通りの暗号化プロトコルをサポートしている場合は、個々の暗号化プロトコルについて、それぞれ「鍵データ（暗号鍵）」を書き込む必要がある。このため、個々の暗号化プロトコルについての鍵データの書込処理が、それぞれ異なる暗号通信路を介して実行されるケースも想定すれば、個々の暗号鍵に含まれるセキュリティに関する潜在的な危険度は、当該暗号鍵を書込むための書込コマンドの送信に用いられた暗号通信路のセキュリティ強度に依拠する。
【０５０６】
したがって、上述したように、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうち、書込コマンド（親暗号化プロトコルＰａを利用して代理開設された暗号通信路を介して送信されてきた書込コマンド）に基づいて書き込まれるであろう特定の暗号鍵を利用する暗号化プロトコルの中で、セキュリティ強度順位リストでの順位が最も高い暗号化プロトコルを代表として選出すれば、後に、下位の管理プログラムＳＳＤ１が子暗号化プロトコルＰｂとしてどのプロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
【０５０７】
＜＜＜  §１０．  第６の実施形態（鍵書込処理の制限（その２）  ＞＞＞
§８で述べた第４の実施形態は、インストール作業（ここでは、階層間の移動作業も含めたものとする）まではノーチェックで作業を進め、最終段階の発行処理（鍵データの書込処理）において、チェックを行うという着想に基づくものであり、特に、鍵データの書込みを行う準備段階として発行データ書込対象指定コマンドが与えられたときに、当該コマンドの実行条件をチェックするものである。
【０５０８】
ここで述べる第６の実施形態は、上記第４の実施形態において実行条件のチェックが行われる発行データ書込対象指定コマンドが与えられた時点では、ノーチェックで作業を進め、発行データ書込対象を指定する記録を行った後、実際に、指定された発行データ書込対象に対して鍵データを発行データとして書込むための書込コマンドが与えられたときに、当該コマンドの実行条件をチェックするものである。当該チェックの結果、実行条件が満たされていた場合には、鍵データの書込処理を行うことになる。
【０５０９】
第４の実施形態の説明に用いた図２３のチャートを用いて説明すれば、第４の実施形態の場合は、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられたときに、当該コマンドの実行条件のチェック（すなわち、「ＯＳプログラム」による順位判定）が行われることになるが、ここで述べる第６の実施形態の場合、この時点では実行条件のチェックを行わずに、無条件で、「下位の管理プログラムＳＳＤ１」を発行データの書込対象として指定する処理を行う。すなわち、図２３に「ＹＥＳ」と記載された一点鎖線より下方の処理をそのまま進めてゆく。
【０５１０】
そして、その後、「STORE DATA (#n),（発行データ）」という鍵データの書込コマンドが与えられた時点で、当該コマンドの実行条件をチェックし、実行条件が満たされていた場合に限って、当該鍵データの書込コマンドを実行するようにする。ここで、鍵データの書込みが完了すれば、「下位の管理プログラム（ＳＳＤ１）」の組込処理はすべて完了することになるので、正に、最後の最後の段階において、実行条件のチェックが行われることになる。
【０５１１】
結局、この§１０で述べる第６の実施形態では、図１４(d) に示すアプリケーション向け発行データの書込コマンドのうち、「STORE DATA (#n),（発行データ）」という「書込コマンドその１」、すなわち、発行データを書込むための汎用の書込コマンド（発行データ書込コマンド）を、「本発明における実行条件の判定対象となる組込用コマンド」として利用し、実行条件が満たされていない場合には、鍵データの書込処理を制限することになる。なお、図１４(d) に示す「PUT KEY (#n),（鍵データ）」という「書込コマンドその２」は、鍵データを書き込むための専用の書込コマンドであり、そもそも書込対象の指定には対応していないコマンドであるため、第６の実施形態では実行条件のチェックの対象にすることはできない。以下、この第６の実施形態について詳述する。
【０５１２】
＜１０−１．  第６の実施形態における実行条件の判定処理＞
ここでも、§８で述べた第４の実施形態の説明と同様に、管理プログラムＩＳＤの管理下に、既に管理プログラムＳＳＤ１がインストールされているが、完全な組込処理は完了しておらず、その後、管理プログラムＳＳＤ１についての鍵データの書込処理（発行処理）を行う必要がある状態を例にとって、以下に具体的な処理手順を示す。
【０５１３】
上述したとおり、ここで述べる第６の実施形態では、まず、指定管理プログラムＩＳＤに対して、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」を与えて、下位にインストールされている管理プログラムＳＳＤ１を発行データの書込対象として指定した後に、指定管理プログラムＩＳＤに対して「STORE DATA (#n),（発行データ）」という鍵データの書込コマンドを与えることになる。
【０５１４】
図２７は、上位管理プログラムＩＳＤが、その管理下にある管理プログラムＳＳＤ１に対する発行セッションを開始する具体的な例について、本発明の第６の実施形態の処理手順を示す流れ図であり、指定管理プログラムＩＳＤに対して、下位の管理プログラムＳＳＤ１についての鍵データを書込むための発行データ書込コマンドが与えられた場合の処理手順を示している。
【０５１５】
この図２７の流れ図に示す手順は、要するに、第１の暗号化プロトコルを用いた暗号通信路開設機能を有する第１の管理プログラムＩＳＤの管理下に、第２の暗号化プロトコルを用いた暗号通信路開設機能を有する第２の管理プログラムＳＳＤ１が既にインストールされているが（階層間移動も含めた広義の「インストール」）、第２の管理プログラムＳＳＤ１が用いる暗号鍵の書込みがまだ実行されていない状態において、第２の管理プログラムＳＳＤ１を発行データ書込対象として指定して、暗号鍵を発行データとして書き込ませるための組込用コマンド（発行データ書込コマンド「STORE DATA (#n),（発行データ）」）が、外部装置２００から情報処理装置１００に対して与えられたときに実行される手順ということになる。
【０５１６】
この手順の目的は、セキュリティ強度順位リストＬ上で第１の暗号化プロトコルよりも第２の暗号化プロトコルの方が上順位にある場合には、当該組込用コマンド（発行データ書込コマンド「STORE DATA (#n),（発行データ）」）の実行を拒絶することにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムを組み込む作業が最終段階まで実行されることを回避することにある。
【０５１７】
まず、ステップＳ６１では、指定管理プログラム（ＩＳＤ）により、「STORE DATA (#n),（発行データ）」なる発行データ書込コマンドが、指定管理プログラム（ＩＳＤ）自身が開設した暗号通信路を介して受信される。このコマンドは、指定管理プログラム（ＩＳＤ）に対して、既に実行済みの発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」によって指定された下位の管理プログラムＳＳＤ１を書込対象として、「発行データ」の書込みが行われるように指示するコマンドである。
【０５１８】
従来の情報処理装置の場合、こうして与えられた発行データ書込コマンドは、指定管理プログラム（ＩＳＤ）から書込対象となる下位の管理プログラム（ＳＳＤ１）に引き渡されて直ちに実行される。これに対して、本発明の場合、その前に、セキュリティ強度順位リストＬを参照して、実行条件が満たされているか否かの判定が行われる。
【０５１９】
まず、ステップＳ６２において、指定管理プログラム（ＩＳＤ）がサポートしている親暗号化プロトコルＰａが認識される。当該指定管理プログラム（ＩＳＤ）は、既に組込済みのプログラムであるため、当該指定管理プログラム（ＩＳＤ）が使用するメモリ領域には、当該指定管理プログラム（ＩＳＤ）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて親暗号化プロトコルＰａを認識することができる。
【０５２０】
続いて、ステップＳ６３において、発行データ書込対象指定コマンドによって指定された、発行データの書込対象となる下位管理プログラム（ＳＳＤ１）がサポートしている子暗号化プロトコルＰｂが認識される。下位管理プログラム（ＳＳＤ１）は、既に指定管理プログラム（ＩＳＤ）の管理下にインストールされているプログラムであるため、当該下位管理プログラム（ＳＳＤ１）が使用するメモリ領域には、当該下位管理プログラム（ＳＳＤ１）がサポートしている暗号化プロトコルを示す情報が記録されているので、当該記録に基づいて子暗号化プロトコルＰｂも認識することができる。
【０５２１】
こうして、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂが認識されたら、続いて、ステップＳ６４において、セキュリティ強度順位リストＬが参照され、ステップＳ６５において、当該発行データ書込コマンドの実行条件が満たされているか否かが判定される。具体的には、親暗号化プロトコルＰａの順位が、子暗号化プロトコルＰｂの順位と等しいか、または、子暗号化プロトコルＰｂの順位より高い場合には肯定的な判定がなされ、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より低い場合には否定的な判定がなされる。
【０５２２】
肯定的な判定がなされた場合は、ステップＳ６６において、当該発行データ書込コマンドが実行される。すなわち、下位管理プログラム（ＳＳＤ１）によって、自己のための発行データ（鍵データ）の書込処理が行われる。一方、否定的な判定がなされた場合は、ステップＳ６７において、当該発行データ書込コマンドは拒絶され、外部装置２００に対してエラーを示すレスポンスが返されることになる。
【０５２３】
＜１０−２．  第６の実施形態の具体的な処理チャート＞
続いて、外部装置２００から第６の実施形態に係る情報処理装置１００に対して、発行データ書込コマンドが与えられた場合について、コマンドを処理するための信号の流れを、図２８に示すチャートを参照しながら説明する。図示の例は、外部装置２００としてスマートフォン１０を用い、情報処理装置１００として当該スマートフォン１０に装着されたＳＩＭカード１１を用い、第１の管理プログラムＩＳＤの管理下に既にインストールされている第２の管理プログラムＳＳＤ１について、鍵データの書込処理を行うために、発行セッションの開始を指示する例である。
【０５２４】
この図２８のチャートに示す処理は、第４の実施形態として述べた図２３，図２４のチャートに示す処理に準じたものになる。したがって、この図２８に示すチャートにおいても、右端のラインは、外部装置２００（スマートフォン１０）に組み込まれている「ホスト側アプリ」を示し、中央右側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「管理プログラムＩＳＤ」（上位管理プログラム）を示し、中央左側のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込まれている「ＯＳプログラム」を示し、左端のラインは、情報処理装置１００（ＳＩＭカード１１）に組み込み途中の「管理プログラムＳＳＤ１」（発行データの書込対象となる下位管理プログラム）を示している。
【０５２５】
このチャートにおいても、上から下への流れは時間の経過を示している。以下、時間の経過にしたがって、当該チャートに示された信号の流れおよびそれに付随する処理を順に説明する。なお、この例の場合も、管理プログラムＩＳＤがチャネル番号「＃ｎ」で指定される「指定管理プログラム」になるので、チャートでは、この「指定管理プログラム（ＩＳＤ）」を二重枠のブロックで示してある。
【０５２６】
第４の実施形態として述べた図２３，図２４のチャートに示す処理と、図２８のチャートに示す第６の実施形態の処理との相違は、前者では、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられたときに、「ＯＳプログラム」による順位判定を行っているのに対して、後者では、この時点では順位判定を行わずに、当該コマンドを無条件で実行して、「下位管理プログラム（ＳＳＤ１）」を書込対象として指定する処理を行い、その後、「STORE DATA (#n),（発行データ）」なる発行データ書込コマンドが与えられたときに、「ＯＳプログラム」による順位判定を行う点である。そのため、図２８に示すチャートの基本的な手順は、図２３，図２４に示すチャートに示す手順に沿ったものになる。
【０５２７】
要するに、第４の実施形態も第６の実施形態も、その目的は、「下位管理プログラム（ＳＳＤ１）」を「指定管理プログラム（ＩＳＤ）」の管理下に組み込むための最終段階の処理である発行処理を行う際に、セキュリティ上の所定条件が満たされているか否かのチェックを行い、条件が満たされていない場合には、発行処理を阻止することにあるが、前者では、「下位管理プログラム（ＳＳＤ１）」を書込対象として指定する発行データ書込対象指定コマンドが与えられた時点で関所を設けて条件判定を行うのに対して、後者では、関所の位置を時間軸上で後ろにずらし、発行データ書込コマンドが与えられた時点で関所を設けて条件判定を行うことになる。
【０５２８】
まず、「ホスト側アプリ」から、情報処理装置１００に対して、アプリケーション選択コマンド「SELECT (#n), ISD」が与えられる。当該コマンドは、§４−１で説明したとおり（図１４(a) 参照）、特定のチャネル番号＃ｎを指定して、情報処理装置１００側の特定のアプリケーションプログラムを選択するコマンドである。この例の場合、「アプリ名」で特定された「管理プログラムＩＳＤ」がチャネル番号「＃ｎ」に対応づけられ、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＩＳＤ」を指定したコマンドとして取り扱われ、当該「指定管理プログラムＩＳＤ」によって処理されることになる。
【０５２９】
図示のとおり、アプリケーション選択コマンド「SELECT (#n), ISD」は、まず、「ＯＳプログラム」によって処理される。「ＯＳプログラム」は、当該コマンドに基づいて、「管理プログラムＩＳＤ」をチャネル番号「＃ｎ」に対応づけるための登録を行う。これにより、以後、チャネル番号「＃ｎ」を伴うコマンドは、すべて「管理プログラムＩＳＤ」を指定したコマンドと認識され、「指定管理プログラムＩＳＤ」に引き渡される。
【０５３０】
「ＯＳプログラム」は、「指定管理プログラムＩＳＤ」をチャネル番号「＃ｎ」に対応づけるための登録を行った後、登録が完了した旨を「指定管理プログラムＩＳＤ」に報知する。「指定管理プログラムＩＳＤ」は、「ホスト側アプリ」に対して、与えられたコマンドが支障なく実行された旨の「ＯＫレスポンス」を返す。こうして、新たにチャネル番号「＃ｎ」に割り当てられた通信チャネルが開設されたら、続いて、当該通信チャネルを暗号通信路にするための処理が必要になる。もちろん、「指定管理プログラムＩＳＤ」は、既に組込作業がすべて完了している管理プログラムであるから、自分自身で暗号通信路を開設する機能を有している。
【０５３１】
そこで、「ホスト側アプリ」から、情報処理装置１００に対して、暗号通信路開設コマンド「INITIALIZE UPDATE (#n),（キーバーション番号）,（乱数）」が与えられる。当該コマンドは、「指定管理プログラムＩＳＤ」に対して、キーバーション番号で指定された暗号鍵を用いて暗号通信路の開設を指示するとともに、乱数に基づいて所定の認証用レスポンスの返信を求めるコマンドである。
【０５３２】
この暗号通信路開設コマンドを受信した「指定管理プログラムＩＳＤ」は、暗号通信路の開設処理を実行する。当該コマンドには、パラメータとして、キーバージョン番号および乱数が付加されているので、「指定管理プログラムＩＳＤ」は、図３に示すような鍵テーブルＴからコマンドに付加されているキーバージョン番号で特定される暗号鍵を取り出し、取り出した暗号鍵と所定の暗号化アルゴリズムを用いて、外部装置２００との間に暗号通信路を開設する処理を行い、更に、コマンドに付加されている乱数に対して所定のアルゴリズムに基づく演算を施し、演算結果を「ＯＫレスポンス」とともに返信する。
【０５３３】
「ホスト側アプリ」は、返信されてきた演算結果の正当性を確認することにより、現在交信中の情報処理装置１００を正規の交信相手として認証する。続いて、「ホスト側アプリ」から、情報処理装置１００に対して、外部認証コマンド「EXTERNAL AUTHENTICATE (#n),（ホスト認証コード）」が与えられる。当該コマンドは、§４−６で説明したとおり（図１４(f) 参照）、チャネル番号＃ｎで指定される管理プログラムＳＤに、現在通信を行っている外部装置２００を正規の交信相手として認証させるためのコマンドであり、パラメータとして「ホスト認証コード」が付加されている。
【０５３４】
この外部認証コマンドを受信した「指定管理プログラムＩＳＤ」は、パラメータとして付加されていた「ホスト認証コード」の正当性を確認することにより、現在交信中の外部装置２００を正規の交信相手として認証する。認証に成功すると、外部装置２００に対して「ＯＫレスポンス」が返信される。
【０５３５】
この時点で、情報処理装置１００（「指定管理プログラムＩＳＤ」）と外部装置２００（「ホスト側アプリ」）との間に暗号通信路を開設する準備が完了したことになり、以後、両者間の通信は、当該暗号通信路を介して実行されることになる。この§１０で述べる第６の実施形態は、「下位管理プログラム（ＳＳＤ１）」に鍵データの書込みを行うための処理に関するものなので、以下、この暗号通信路を介してそのような処理を行うための手順を説明する。
【０５３６】
まず、図示のとおり、「ホスト側アプリ」から、情報処理装置１００に対して、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」が与えられる。当該コマンドは、§４−８で説明したとおり（図１４(h) 参照）、「指定管理プログラムＩＳＤ」に対して、後続して与えられる発行データの書込コマンド「STORE DATA (#n),（発行データ）」の書込対象を、「下位管理プログラムＳＳＤ１」に指定する旨のコマンドである。「指定管理プログラムＩＳＤ」は、暗号通信路を介して送信されてきた当該コマンドを復号して平文コマンドに変換する。
【０５３７】
第４の実施形態では、この時点で関所を設け、当該発行データ書込対象指定コマンドが実行条件を満たしているか否かの判定を行うことになるが、ここで述べる第６の実施形態では、この時点では関所は設けられていない。したがって、与えられた発行データ書込対象指定コマンドは、無条件で実行される。
【０５３８】
図示のとおり、この発行データ書込対象指定コマンドは、「ＯＳプログラム」と「指定管理プログラムＩＳＤ」との連携作業によって実行される。すなわち、発行データの書込対象として「下位管理プログラムＳＳＤ１」が指定され、その旨の記録がなされる。その後、書込対象の記録が完了したことを示す信号が「ＯＳプログラム」から「指定管理プログラムＩＳＤ」に対して与えられ、更に、「指定管理プログラムＩＳＤ」から「ホスト側アプリ」に対して「ＯＫレスポンス」が返される。この「ＯＫレスポンス」は、発行データ書込対象指定コマンド「INSTALL for personalization (#n), SSD1」に対するレスポンスということになる。
【０５３９】
続いて、「ホスト側アプリ」から「指定管理プログラムＩＳＤ」に対して、発行データを書込むための発行データ書込コマンド「STORE DATA (#n),（発行データ）」が与えられる。「指定管理プログラムＩＳＤ」は、暗号通信路を介して送信されてきた当該コマンドを復号して平文コマンドに変換する。ここで、「発行データ」の部分には「下位管理プログラムＳＳＤ１」用の鍵データおよび鍵データであることを示す情報が組み込まれているので、平文化したコマンドの内容が、鍵データの書込みであることが判明する。
【０５４０】
しかも、この発行データ書込コマンドは、直接的には、チャネル番号「＃ｎ」を指定した「指定管理プログラムＩＳＤ」宛のコマンドであるが、既に、発行データ書込対象指定コマンドの実行により、「下位管理プログラムＳＳＤ１」が発行データの書込対象として指定されているため、当該発行データ書込コマンドは、平文に変換された後に「ＯＳプログラム」に引き渡される。
【０５４１】
ここで述べる第６の実施形態では、この時点で関所が設けられており、発行データ書込コマンド「STORE DATA (#n),（発行データ）」の実行条件の判定が行われる。すなわち、当該コマンドの引き渡しを受けた「ＯＳプログラム」は、図２７の流れ図におけるステップＳ６２〜Ｓ６５に相当する実行条件の判定処理を行う。具体的には、「ＯＳプログラム」は、「指定管理プログラムＩＳＤ」が用いる親暗号化プロトコルＰａを認識するとともに、「発行データの書込対象となる下位管理プログラムＳＳＤ１」が用いる子暗号化プロトコルＰｂを認識する。
【０５４２】
図２８における破線の矢印は、このような暗号化プロトコルＰａ，Ｐｂの認識プロセスを示している。実際には、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂの認識は、「管理プログラムＩＳＤ」および「管理プログラムＳＳＤ１」が使用するメモリ領域を参照することにより行われる。
【０５４３】
「ＯＳプログラム」は、こうして認識した暗号化プロトコルＰａ，Ｐｂの強度順位を、セキュリティ強度順位リストＬ上で比較する順位判定（図２７のステップＳ６５の判定）を行い、判定結果に応じて、それぞれ異なる処理を実行する。図２８に「ＹＥＳ」と記載された部分以降の一点鎖線で示す処理は、肯定的な判定結果が得られた場合の処理であり、以下、当該処理を順に説明する。
【０５４４】
まず、「ＯＳプログラム」から「下位管理プログラムＳＳＤ１」に対して、発行データ書込コマンド「STORE DATA (#n),（発行データ）」が引き渡される。「下位管理プログラムＳＳＤ１」は、引き渡されたコマンドを実行して、「発行データ」を自己が使用する鍵データとして書込む処理を行い、実行完了を「ＯＳプログラム」に報告する。当該報告は、「ＯＳプログラム」から「指定管理プログラムＩＳＤ」へ通達され、これを受けた「指定管理プログラムＩＳＤ」は、「ホスト側アプリ」に対して「ＯＫレスポンス」を返す。
【０５４５】
一方、図２８に「ＮＯ」と記載された部分における二点鎖線で示す処理は、否定的な判定結果が得られた場合の処理である。この場合は、「ＯＳプログラム」から「指定管理プログラムＩＳＤ」に対して、実行条件を満たしていないことを示す「判定結果ＮＧ」が伝達され、「指定管理プログラムＩＳＤ」は、発行データ書込コマンドの実行を拒絶し、「ホスト側アプリ」に対して、コマンドが正常に実行されなかった旨の「ＮＧレスポンス」を返す。この「ＮＧレスポンス」は、与えられたコマンドに対するエラーを示すレスポンスということになる。
【０５４６】
「ホスト側アプリ」は、「ＮＧレスポンス」として、チャネル番号「＃ｎ」の下での鍵データの書込処理に失敗した旨の報告を受けることになるので、「上位管理プログラムＩＳＤ」の管理下に「指定管理プログラムＳＳＤ１」を組み込むことができないことを認識することができる。
【０５４７】
＜１０−３．  第６の実施形態の特徴＞
以上、本発明の第６の実施形態の具体例を、図２７の流れ図および図２８のチャートを用いて説明したが、ここでは、この第６の実施形態に係る情報処理装置の特徴をまとめておく。
【０５４８】
第６の実施形態に係る情報処理装置１００は、図１２のブロック図に示すとおり、外部装置２００との間で暗号通信を行う機能を有する情報処理装置であり、ＯＳプログラムおよび各種アプリケーションプログラム、ならびに、これらの各プログラムに関連するデータを格納する情報格納部１１０と、この情報格納部１１０に格納されているプログラムを実行するプログラム実行部１２０と、を備えている。
【０５４９】
ここで、情報格納部１１０には、アプリケーションプログラムとして、少なくとも１つの管理プログラムが格納されており、当該管理プログラムは、自己を上位階層、別なアプリケーションプログラムを下位階層として、下位階層のアプリケーションプログラムを自己の管理下におくプログラムであり、少なくとも、自己の管理下に新たなアプリケーションプログラムをインストールするインストール機能と、自己の管理下にあるアプリケーションプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能と、を有し、外部装置２００から与えられるコマンドに基づいてこれらの各機能を実行するプログラムになっている。
【０５５０】
また、情報格納部１１０には、複数の暗号化プロトコルについて、セキュリティ強度の順位を示すセキュリティ強度順位リストＬが格納されており、情報格納部１１０に格納されている管理プログラムのうち、少なくとも１つの指定管理プログラム（たとえば、ＩＳＤ）は、自己の管理下にインストールされているアプリケーションプログラム（たとえば、ＳＳＤ１）を動作させるために必要な発行データの書込みが実行されるよう、必要な処理を行う発行データ書込処理機能を更に有している。
【０５５１】
そして、この指定管理プログラム（たとえば、ＩＳＤ）は、自己の管理下に既にインストールされている下位管理プログラム（たとえば、ＳＳＤ１）を発行データの書込対象として指定するための発行データ書込対象指定コマンドが与えられたときに、当該発行データ書込対象指定コマンドに基づく発行データ書込対象指定処理を実行する。
【０５５２】
また、この指定管理プログラム（たとえば、ＩＳＤ）は、発行データ書込対象指定処理を実行することにより、下位管理プログラム（たとえば、ＳＳＤ１）を発行データの書込対象として指定した後、外部装置２００から、当該下位管理プログラム（たとえば、ＳＳＤ１）の暗号通信路開設機能に必要な暗号鍵の書込みを目的とする発行データ書込コマンドが与えられたときに、所定の実行条件が満たされていた場合には、当該発行データ書込コマンドを下位管理プログラム（たとえば、ＳＳＤ１）に引き渡し、当該下位管理プログラム（たとえば、ＳＳＤ１）に発行データの書込処理を実行させ、実行条件が満たされていなかった場合には、発行データ書込コマンドに基づく発行データの書込処理を拒絶する。
【０５５３】
具体的には、指定管理プログラム（たとえば、ＩＳＤ）の暗号通信路開設機能に用いられる暗号化プロトコルを親暗号化プロトコルＰａと呼び、下位管理プログラム（たとえば、ＳＳＤ１）の暗号通信路開設機能に用いられる暗号化プロトコルを子暗号化プロトコルＰｂと呼んだ場合に、セキュリティ強度順位リストＬにおいて、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より上位であった場合もしくは両順位が等しかった場合には、実行条件が満たされているものとし、親暗号化プロトコルＰａの順位が子暗号化プロトコルＰｂの順位より下位であった場合には、実行条件が満たされていないものとする判定が行われる。
【０５５４】
このとき、実行条件が満たされているか否かの判定を行う際には、情報格納部１１０に格納されている「指定管理プログラム（たとえば、ＩＳＤ）」もしくは当該プログラムに関連するデータを参照することにより親暗号化プロトコルＰａの認識が行われる。同様に、情報格納部１１０に格納されている「下位管理プログラム（たとえば、ＳＳＤ１）」もしくは当該プログラムに関連するデータを参照することにより子暗号化プロトコルＰｂの認識が行われる。
【０５５５】
なお、「指定管理プログラム（たとえば、ＩＳＤ）」が、発行データ書込コマンドを「下位管理プログラム（たとえば、ＳＳＤ１）」に引き渡す際には、「ＯＳプログラム」が引き渡し処理を仲介することになる。また、図２８に示す実施例の場合も、実行条件が満たされているか否かの判定を行う際に、「指定管理プログラム（たとえば、ＩＳＤ）」が、親暗号化プロトコルＰａと子暗号化プロトコルＰｂとについての順位判定処理を「ＯＳプログラム」に委託し、「ＯＳプログラム」が実行した順位判定処理の結果に基づいて、発行データ書込処理の実行／拒絶を決定するようにしている。
【０５５６】
もちろん、本発明の第６の実施形態を実施する上で、実行条件が満たされているか否かの判定（セキュリティ強度順位リストＬを参照した順位判定）は、必ずしも「ＯＳプログラム」によって実行する必要はなく、「指定管理プログラム（たとえば、ＩＳＤ）」が実行するようにしてもかまわないが、§５−３において述べたとおり、一般的なＩＣカードの場合、複数のアプリケーションプログラムが相互に直接的な連携動作を行うことが想定されていないため、実用上は、順位判定処理を「ＯＳプログラム」に委託して実行するのが好ましい。
【０５５７】
＜１０−４．  複数通りの暗号化プロトコルへの対応＞
§５−４でも述べたとおり、本願発明は、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。ここで述べる第６の実施形態を実施する場合、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルをサポートしているケースでは、図２７のステップＳ６５に示す判定処理を行う際に、親暗号化プロトコルＰａが複数通り存在する可能性があり、子暗号化プロトコルＰｂも複数通り存在する可能性がある。
【０５５８】
そこで、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストＬを用いて比較することにより、実行条件が満たされているか否かの判定を行うようにすればよい。
【０５５９】
具体的には、第６の実施形態の場合は、親暗号化プロトコルＰａが複数通り存在する場合には、そのうちの発行データ書込コマンドの受信に利用された暗号通信路の開設に用いられた暗号化プロトコルを代表として選出し、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうち、発行データ書込コマンドに基づいて書込まれるであろう暗号鍵を利用する暗号化プロトコルの中でセキュリティ強度順位リストでの順位が最も高い暗号化プロトコルを代表として選出すればよい。
【０５６０】
図２８のチャートに示すとおり、「STORE DATA (#n),（発行データ）」なる発行データ書込コマンドは、「指定管理プログラムＩＳＤ」が開設した暗号通信路を介して与えられることになるので、新たに書き込まれる「鍵データ（暗号鍵）」に対するセキュリティは、当該発行データ書込コマンドの受信に利用された暗号通信路の開設に用いられた暗号化プロトコルのセキュリティ強度に依存することになる。
【０５６１】
一方、下位管理プログラムが複数通りの暗号化プロトコルをサポートしている場合は、個々の暗号化プロトコルについて、それぞれ「鍵データ（暗号鍵）」を書き込む必要がある。このため、個々の暗号化プロトコルについての鍵データの書込処理が、それぞれ異なる暗号通信路を介して実行されるケースも想定すれば、個々の暗号鍵に含まれるセキュリティに関する潜在的な危険度は、当該暗号鍵を書込むための書込コマンドの送信に用いられた暗号通信路のセキュリティ強度に依拠する。
【０５６２】
したがって、上述したように、子暗号化プロトコルＰｂが複数通り存在する場合には、そのうち、書込コマンド（親暗号化プロトコルＰａを利用して開設された暗号通信路を介して送信されてきた書込コマンド）に基づいて書き込まれるであろう特定の暗号鍵を利用する暗号化プロトコルの中で、セキュリティ強度順位リストでの順位が最も高い暗号化プロトコルを代表として選出すれば、後に、下位の管理プログラムＳＳＤ１が子暗号化プロトコルＰｂとしてどのプロトコルを利用したとしても、「本発明における実行条件」は満たされることになる。
【０５６３】
＜＜＜  §１１．  複数通りのプロトコルについての順位判定方法  ＞＞＞
既に、§５−４，§６−４，§７−４，§８−４，§９−４，§１０−４においてそれぞれ個別に述べたとおり、本願発明は、１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースについても適用が可能である。そのようなケースでは、実行条件の判定を行う際に、親暗号化プロトコルＰａが複数通り存在する可能性があり、子暗号化プロトコルＰｂも複数通り存在する可能性がある。
【０５６４】
そこで、第１の管理プログラムが用いる第１の暗号化プロトコルが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、第２の管理プログラムが用いる第２の暗号化プロトコルが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストＬを用いて比較するようにすればよい。
【０５６５】
このような場合における親暗号化プロトコルＰａと子暗号化プロトコルＰｂとの比較方法（代表の選出方法）としては、上記各セクションにおいて個別に説明した方法を採用すればよい。図２９は、親暗号化プロトコルＰａおよび子暗号化プロトコルＰｂが複数通り存在する場合に、個々の実施形態に適用可能な具体的な順位判定方法における比較対象を示す一覧表である。
【０５６６】
この一覧表には、方法１〜６の６通りの順位判定方法について、それぞれ比較対象となる親暗号化プロトコルＰａの順位（「親」欄に記載された順位）と子暗号化プロトコルＰｂの順位（「子」欄に記載された順位）とが示されている。また、一覧表の右端欄には、各順位判定方法が適用可能な実施形態の番号が示されている。
【０５６７】
たとえば、方法１は、親暗号化プロトコルＰａを用いる上位管理プログラムＳＤがサポートするプロトコルのうち最高順位のものを、親暗号化プロトコルＰａの代表として選出し、子暗号化プロトコルＰａを用いる下位管理プログラムＳＤがサポートするプロトコルのうち最高順位のものを、子暗号化プロトコルＰｂの代表として選出し、各代表同士を比較対象として実行条件の判定を行うことを示している。この方法１は、第１の実施形態および第２の実施形態に対して適用可能である。方法２〜６についても、この一覧表に記載されたとおりである。
【０５６８】
なお、各方法についてのより具体的な内容は、既に、§５−４，§６−４，§７−４，§８−４，§９−４，§１０−４においてそれぞれ述べたとおりであるので、ここでは説明は省略する。
【０５６９】
このように１つの管理プログラムＳＤが、複数通りの暗号化プロトコルを適宜使い分けることができるようにするケースでは、個々の管理プログラムＳＤごとに、それぞれサポートしているプロトコルを掲載した個別リストを作成し、この個別リストに基づいて代表の選出を行うようにするのが好ましい。
【０５７０】
図３０は、このようにして作成された個別リストの一例を示す図である。図３０(a) には、第１の管理プログラムについて作成された個別リストＬ１が示されており、図３０(b) には、第２の管理プログラムについて作成された個別リストＬ２が示されている。各個別リストＬ１，Ｌ２の右欄には、各管理プログラムがサポートする暗号化プロトコルが示され、左欄には、当該暗号化プロトコルの強度順位（セキュリティ強度順位リストＬ１を参照して得られた順位）が示されている。
【０５７１】
前述したとおり、個々の管理プログラムは、インストールの段階まで完了していれば、暗号鍵の書込段階（発行段階）が完了していなくても、情報格納部１１０に格納されている当該管理プログラムもしくは当該管理プログラムに関連するデータを参照することにより、当該管理プログラムがサポートする暗号化プロトコルを認識することができるので、図３０(a)，(b)に示すような個別リストＬ１，Ｌ２を作成することが可能である。
【０５７２】
このような個別リストを作成しておけば、図２９の一覧表に示すような各判定方法を採用して順位判定を行う場合、親暗号化プロトコルＰａの代表および子暗号化プロトコルＰｂの代表についての順位を容易に認識することができるようになる。
【０５７３】
＜＜＜  §１２．  方法発明としての把握  ＞＞＞
これまで本発明を、情報処理装置１００としての装置発明として捉え、いくつかの実施形態を示しながら、当該装置発明についての説明を行ってきた。ただ、本発明は、情報処理装置１００と外部装置２００との間で、所定の暗号化プロトコルに基づく暗号通信を行うための設定を行う暗号通信設定方法として捉えることも可能である。そこで、ここでは、本発明を暗号通信設定方法という方法発明として捉え、その基本手順をまとめておく。
【０５７４】
本発明に係る暗号通信設定方法を実施するには、まず、情報処理装置１００に組み込んで利用するための第１の管理プログラムおよび第２の管理プログラムを、外部装置２００に用意する管理プログラム準備段階を行う。ここで、第１の管理プログラムおよび第２の管理プログラムは、情報処理装置１００内において、自己を上位階層、別なプログラムを下位階層として、下位階層のプログラムを自己の管理下におく管理プログラムであり、自己の管理下にあるプログラムのために、所定の暗号化プロトコルおよび所定の暗号鍵を用いて、外部装置２００との間に暗号通信路を開設する暗号通信路開設機能を有しており、また、外部装置から与えられるコマンドに基づいて当該機能を実行することができるプログラムである。
【０５７５】
一方、情報処理装置１００については、外部装置２００から与えられるコマンドに基づいて、複数の暗号化プロトコルについてのセキュリティ強度の順位を示すセキュリティ強度順位リストＬを組み込むリスト組込段階を実行しておく。なお、このリスト組込段階は、必ずしも外部装置２００から与えられるコマンドに基づいて実行する必要はなく、たとえば、何らかのプログラムを組み込む際に一緒にセキュリティ強度順位リストＬを組み込むようにしてもよい。
【０５７６】
続いて、情報処理装置１００が、外部装置２００から与えられるコマンドに基づいて、第１の管理プログラムを組み込み、更に、この第１の管理プログラムの暗号通信路開設機能に用いられる暗号鍵を組み込むことにより、当該情報処理装置１００内で第１の管理プログラムが動作可能となるようにする第１の管理プログラム動作可能化段階を実行する。
【０５７７】
そして、更に、情報処理装置１００が、外部装置２００から与えられるコマンドに基づいて、第２の管理プログラムを第１の管理プログラムの管理下に組み込み、更に、第２の管理プログラムの暗号通信路開設機能に用いられる暗号鍵を組み込むことにより、当該情報処理装置内で第２の管理プログラムが動作可能となるようにする第２の管理プログラム動作可能化段階を実行する。こうすることにより、第１の管理プログラムの管理下に、第２の管理プログラムを組み込み、動作可能状態にすることができる。
【０５７８】
本発明に係る暗号通信設定方法の特徴は、情報処理装置１００が、第２の管理プログラム動作可能化段階の実行前もしくは実行中に、第１の管理プログラムが用いる第１の暗号化プロトコルと、第２の管理プログラムが用いる第２の暗号化プロトコルとについて、セキュリティ強度順位リストＬ上での順位を比較し、第１の暗号化プロトコルよりも第２の暗号化プロトコルの方が上順位にある場合には、第２の管理プログラム動作可能化段階の実行を中止もしくは中断する点にある。
【０５７９】
そうすることにより、セキュリティ強度の低い管理プログラムの下位階層にセキュリティ強度の高い管理プログラムが組み込まれる事態を回避することができ、階層構造による上下関係をもった複数の管理プログラムが組み込まれる情報処理装置において、個々の管理プログラムが本来の能力に応じた十分なセキュリティ能力を発揮できるようになる。
【０５８０】
より具体的には、§５で述べた第１の実施形態や、§６で述べた第２の実施形態では、情報処理装置１００が、外部装置２００から与えられるコマンドに基づいて、第２の管理プログラムを第１の管理プログラムの管理下にインストールする処理（新規インストール処理や階層間での移動処理）を行う前に、セキュリティ強度順位リストＬ上での順位を比較し、第１の暗号化プロトコルよりも第２の暗号化プロトコルの方が上順位にある場合には、第２の管理プログラムのインストール処理を中止するようにしている。
【０５８１】
また、§７〜§１０で述べた第３〜第６の実施形態では、情報処理装置１００が、外部装置２００から与えられるコマンドに基づいて、第２の管理プログラムを第１の管理プログラムの管理下にインストールする処理を行った後、第２の管理プログラムの暗号通信路開設機能に用いられる暗号鍵を書込む処理を行う前に、セキュリティ強度順位リストＬ上での順位を比較し、第１の暗号化プロトコルよりも第２の暗号化プロトコルの方が上順位にある場合には、暗号鍵の書込処理もしくは暗号鍵の書込処理に必要な準備処理を中止するようにしている。
【０５８２】
なお、第１の管理プログラムが用いる第１の暗号化プロトコルが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、第２の管理プログラムが用いる第２の暗号化プロトコルが複数通り存在する場合には、そのうちの特定の暗号化プロトコルを代表として選出し、それぞれ選出された代表暗号化プロトコル同士の順位をセキュリティ強度順位リストを用いて比較するようにすればよい。
【符号の説明】
【０５８３】
１０：スマートフォン
１１：ＳＩＭカード
２０：外部サーバ
１００：情報処理装置
１１０：情報格納部
１２０：プログラム実行部
２００：外部装置
Ａ：種別情報
ＡＰ１〜ＡＰ２，ＡＰ０１〜ＡＰ３２：一般アプリケーションプログラム
ＡＰ３：ＡＰ（ＩＳＤ），ＡＰ（ＳＳＤ１），外部装置側のアプリケーションプログラム
ＣＭＤ：暗号通信路開設コマンド
ＩＳＤ：最上位の管理プログラム
Ｋｅｙ，ＫｅｙＡ〜ＫｅｙＲ：暗号鍵
Ｌ：セキュリティ強度順位リスト／鍵長
Ｌ１，Ｌ２：個別リスト
Ｍ１，Ｍ２：階層構造内の移動を示す白抜矢印
ＯＳ：ＯＳプログラム
Ｐａ：親の暗号化プロトコル
Ｐｂ：子の暗号化プロトコル
Ｒ１，Ｒ２，Ｒ００，Ｒ１０：暗号通信路開設ルーチン
ＳＤ，ＳＳＤ１〜ＳＳＤ３：管理プログラム
Ｓ１〜Ｓ６：ダイアグラムの各ステップ
Ｓ１１〜Ｓ６７：流れ図の各ステップ
Ｔ，Ｔ１，Ｔ２，Ｔ００，Ｔ１０：鍵テーブル
Ｖ：鍵値データ
【図１】
2020036370.tif 000003
【図２】
2020036370.tif 000004
【図３】
2020036370.tif 000005
【図４】
2020036370.tif 000006
【図５】
2020036370.tif 000007
【図６】
2020036370.tif 000008
【図７】
2020036370.tif 000009
【図８】
2020036370.tif 000010
【図９】
2020036370.tif 000011
【図１０】
2020036370.tif 000012
【図１１】
2020036370.tif 000013
【図１２】
2020036370.tif 000014
【図１３】
2020036370.tif 000015
【図１４】
2020036370.tif 000016
【図１５】
2020036370.tif 000017
【図１６】
2020036370.tif 000018
【図１７】
2020036370.tif 000019
【図１８】
2020036370.tif 000020
【図１９】
2020036370.tif 000021
【図２０】
2020036370.tif 000022
【図２１】
2020036370.tif 000023
【図２２】
2020036370.tif 000024
【図２３】
2020036370.tif 000025
【図２４】
2020036370.tif 000026
【図２５】
2020036370.tif 000027
【図２６】
2020036370.tif 000028
【図２７】
2020036370.tif 000029
【図２８】
2020036370.tif 000030
【図２９】
2020036370.tif 000031
【図３０】
2020036370.tif 000032