(57)【要約】    【課題】  電子機器にインストールされるプログラムの信頼性を簡便且つ柔軟に保証することができるソフトウェア実行管理装置を提供する。    【解決手段】  電子機器１０１０にインストールされたプログラムを実行するときに、プログラム中からプログラムの正当性を確認するためのチェックプログラムを抽出する（ステップＳ３０２０）。そして、該チェックプログラムを実行して（ステップＳ３０５０）、実行結果が正しいものであるかを判定し（ステップＳ３０６０）、インストールされているプログラムが正当なものであることを確認したときにのみ、該プログラムの起動を行う（ステップＳ３０７０）。【選択図】    図３
2005293109.tif 000002
【特許請求の範囲】
【請求項１】
電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理装置において、
前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出手段と、
前記モジュール抽出手段によって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認手段と、
前記正当性確認手段が前記インストールされているソフトウェアの正当性を確認したときにのみ該ソフトウェアの起動を行うソフトウェア起動手段とを備えたことを特徴とするソフトウェア実行管理装置。
【請求項２】
前記正当性確認モジュールは暗号化されたモジュールであり、
前記モジュール抽出手段は、前記電子機器が保持する復号鍵によって前記正当性確認モジュールを復号化することを特徴とする請求項１に記載のソフトウェア実行管理装置。
【請求項３】
前記正当性確認手段は、前記電子機器のモデル情報及びシリアル番号を含む機器識別情報を取得し、該機器識別情報に基づいて、前記インストールされたソフトウェアがその電子機器上で実行可能かを判断することを特徴とする請求項１または２に記載のソフトウェア実行管理装置。
【請求項４】
ソフトウェアのエントリポイントとなるモジュールを指定するエントリモジュール指定手段を有し、
前記正当性確認手段は、前記エントリモジュール指定手段によって指定されたモジュールを前記電子機器が保持している復号鍵で復号化することを特徴とする請求項１または２に記載のソフトウェア実行管理装置。
【請求項５】
電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理方法において、
前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出工程と、
前記モジュール抽出工程によって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認工程と、
前記正当性確認工程が前記インストールされているソフトウェアの正当性を確認したときにのみ該ソフトウェアの起動を行うソフトウェア起動工程とを順次実行することを特徴とするソフトウェア実行管理方法。
【請求項６】
電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理方法を実行するための、コンピュータで読み取り可能な制御プログラムであって、
前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出ステップと、
前記モジュール抽出ステップによって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認ステップと、
前記正当性確認ステップが前記インストールされているソフトウェアの正当性を確認したときにのみ該ソフトウェアの起動を行うソフトウェア起動ステップとを備えたことを特徴とする制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムをインストールして使用し得る電子機器において、インストールされたプログラムの実行管理を行うソフトウェア実行管理装置及びソフトウェア実行管理方法、並びに前記ソフトウェア実行管理方法を実現するための制御プログラムに関する。
【背景技術】
【０００２】
従来、予めプログラムをＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）などに組み込んで構成された組み込み機器と呼ばれる電子機器においては、出荷時にインストールされたプログラムを変更するには、ＲＯＭを交換するなどのハードウェアの変更が必要であった。しかし近年では、このような組み込み機器であっても、汎用コンピュータのように、出荷後にプログラム等のソフトウェアをインストールしたり、もしくは置き換えて使えるように電子機器を構成する例が増えてきている。
【０００３】
そのため、ソフトウェアの中でも特にプログラムのインストール時において、インストールされるプログラムが正当なものであり、該プログラムを電子機器にインストールした後に実行する場合に悪意をもって当該電子機器に悪影響を及ぼすようなものではないことを証明することが重要となってきた。
【０００４】
インターネットの分野では、ネットワークを経由してインストールされるプログラムが正当なものであることを証明するための方法がいくつか実現されている。ここでは、その１つであるＪａｖａ（登録商標）におけるコード署名の方法について説明する（Ｊａｖａ（登録商標）とは、ＳＵＮ  Ｍｉｃｒｏｓｙｓｔｅｍｓが開発したプログラミング言語であり、ＳＵＮ  Ｍｉｃｒｏｓｙｓｔｅｍｓの登録商標である）。
【０００５】
Ｊａｖａ（登録商標）プログラムはＪａｒファイル形式と呼ばれるファイル形式で配布されることが多い。Ｊａｖａ（登録商標）では、このＪａｒファイルに署名を行う。ここに述べる署名とはデジタル署名のことであり、デジタル署名は、Ｊａｒファイルの中に格納されているコンテンツデータとエンティティ（会社または個人など）の持つ非公開鍵とに基づいて計算されるビット列であり、コンテンツデータが異なればデジタル署名のビット列も異なるものとなる。
【０００６】
Ｊａｖａ（登録商標）プログラムの開発者は、署名が正しいものであることを証明するために、非公開鍵とペアとなる公開鍵と、その公開鍵を証明するために権威ある認証局が発行した証明書を所有する必要がある。この証明書を手に入れるために、開発者は開発者自身を特定するための個人情報等を認証局に提供するようになっている。
【０００７】
このような署名がＪａｒファイルになされることにより、インストールされるＪａｖａ（登録商標）プログラムが信頼できるコードであると認識することができ、また、署名者によってプログラムに与える権限を変更することができるようになっている。
【０００８】
また、インストールされたプログラムの実行を許可する方法が、特許文献１や特許文献２、特許文献３などで提案されている。いずれの方法も、インストールされるプログラム及び電子機器が持つ特定の情報や、外部から与えられる実行許可用のキーワード等を、電子機器に最初から存在するプログラム（インストールを行うインストーラなど）またはインストールされたプログラム自身が確認して、それらが正しいものであるときに、インストールされたプログラムの実行を許可する構成となっている。
【０００９】
また、インストールされるプログラム自身を暗号化しておき、インストールする際に、電子機器が使用可能な復号用の鍵を使用して復号化してからインストールする方法も特許文献４及び特許文献５などで提示されている。
【特許文献１】特開平２−３１２２７号公報
【特許文献２】特開平７−２３４７８４号公報
【特許文献３】特開平１０−１８７４３３号公報
【特許文献４】特開平８−１６３８７号公報
【特許文献５】特開２０００−３２２２５４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、プログラムを電子機器にインストールするに際し、そのプログラムが正当なものであることを証明するための方法として、上述した従来のコード署名による方法を用いた場合には、コード署名を行った署名者（プログラム開発者）を特定することはできるが、その署名者が、プログラムがインストールされる電子機器にとって信頼できるかどうかを証明したものではない。したがって、プログラムのインストール時においては、そのプログラムの開発者が前記電子機器にとって信頼できるかどうかの確認を行えなくても、単に署名がなされていることによってその開発者を信頼してインストールを行わなければならない、という問題があった。
【００１１】
さらに、署名の信憑性を確かめるためには、ネットワーク上に存在する認証局にアクセスして署名に添付されている証明書が正しいものであることを明らかにする必要が生じ、ネットワークに接続していない状態、いわゆるオフラインでは署名が正しいものであるかを調べる手段がないという問題点も存在する。
【００１２】
また、例えば特許文献１や特許文献２、特許文献３に開示された従来のプログラム実行許可機構では、許可に使用するデータ（前記特定の情報や前記キーワード等）が固定化されてしまい、例えば、より強い暗号アルゴリズムを使用しようとしても使用できないなど、柔軟性に欠けるという問題が存在する。
【００１３】
さらに、例えば特許文献４や特許文献５に開示するような、暗号化されたプログラムをロードし復号化してインストールする方法では、すぐに必要ではないプログラムモジュールも含めて全てのプログラムをインストール時に復号化してしまうため、復号化の時間がかかりインストール時間が増大してしまうという問題が存在する。
【００１４】
本発明は上記従来の問題点に鑑み、電子機器にインストールされるプログラムの信頼性を簡便且つ柔軟に保証することができるソフトウェア実行管理装置、ソフトウェア実行管理方法、及び制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するため、本発明のソフトウェア実行管理装置は、電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理装置において、前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出手段と、前記モジュール抽出手段によって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認手段と、前記正当性確認手段が前記インストールされているソフトウェアの正当性を確認したときにのみ該ソフトウェアの起動を行うソフトウェア起動手段とを備えたことを特徴とする。
【００１６】
本発明のソフトウェア実行管理方法は、電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理方法において、前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出工程と、前記モジュール抽出工程によって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認工程と、前記正当性確認工程が前記インストールされているソフトウェアの正当性を確認したときにのみ該ソフトウェアの起動を行うソフトウェア起動工程とを順次実行することを特徴とする。
【００１７】
また、電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理方法を実行するための、コンピュータで読み取り可能な制御プログラムであって、前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出ステップと、前記モジュール抽出ステップによって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認ステップと、前記正当性確認ステップが前記インストールされているソフトウェアの正当性を確認したときにのみ該ソフトウェアの起動を行うソフトウェア起動ステップとを備えたことを特徴とする。
【発明の効果】
【００１８】
本発明によれば、ソフトウェアを電子機器にインストールするに際し、インストールするソフトウェアが電子機器に対して正常に作成されたものであることを電子機器の製造元が認証することになり、電子機器にインストールされるソフトウェアの信頼性を簡便且つ柔軟に保証することが可能になる。
【発明を実施するための最良の形態】
【００１９】
本発明のソフトウェア実行管理装置、ソフトウェア実行管理方法、及び制御プログラムの実施の形態について、図面を参照しながら説明する。
［第１の実施の形態］
図１は、本発明のソフトウェア実行管理装置を有する電子機器を備えた情報処理システムの要部構成を示すブロック図である。
【００２０】
同図において、この情報処理システムは、インストールしたプログラムを実行する電子機器１０１０と、電子機器１０１０に接続してプログラムのインストールを指示するパーソナルコンピュータ（ＰＣ）１０２０とが、ネットワーク１０４０を介して接続されて構成されている。
【００２１】
ＰＣ１０２０内には、電子機器１０１０にインストールすべきプログラムファイル１０３０が格納されている。また、電子機器１０１０内では、電子機器１０１０を制御するための制御部１０５０と、制御部１０５０で実行されるプログラムを格納しておくプログラム記憶部１０６０と、ネットワーク１０４０を介して外部と通信を行う通信部１０７０とがバス１０８０を介して接続されている。制御部１０５０には、Ｊａｖａ（登録商標）プログラムを解釈実行するためのＪａｖａ（登録商標）仮想マシン（以下、ＪＶＭと呼ぶ）が稼動しており、Ｊａｖａ（登録商標）プログラムの実行が可能になっている。
【００２２】
プログラムのインストールは、次のようにして行われる。すなわち、ＰＣ１０２０が通信部１０７０によって制御部１０５０と通信を行い、ＰＣ１０２０に存在するプログラムファイル１０３０を電子機器１０１０に送る。そして、プログラムファイル１０３０のデータを受け取った制御部１０５０は、そのデータをプログラム記憶部１０６０に、以下で説明する図２で示すフォーマット構造を有するプログラムファイルとして格納することになる。
【００２３】
図２は、図１で示した電子機器１０１０にプログラムをインストールする際に使用されるアーカイブファイルのフォーマットを示す図である。
【００２４】
同図において、２０１０はアーカイブファイルであり、ファイルエレメント（Ｆｉｌｅ Ｅｌｅｍｅｎｔ）１，２，…，Ｎ−２，Ｎ−１，Ｎが線形に並んだ形式をしている。２０２０は各ファイルエレメント１〜Ｎの内容を表している。各ファイルエレメント１〜Ｎはそれぞれ、ファイルエレメントの開始を示すファイルエレメント認識情報（Ｆｉｌｅ Ｅｌｅｍｅｎｔ Ｓｉｇｎａｔｕｒｅ）２１と、データ領域の長さを示すデータ領域長情報（Ｄａｔａ Ｌｅｎｇｔｈ）２２と、ファイル名の長さを示すファイル名長情報（Ｆｉｌｅ Ｎａｍｅ Ｌｅｎｇｔｈ）２３と、ファイル名を格納しているファイル名フィールド（Ｆｉｌｅ Ｎａｍｅ）２４と、ファイルデータを格納しているデータフィールド（Ｄａｔａ）２５とから成る。
【００２５】
また、図中の２０３０は、プログラムがデータフィールドに格納されたときの前記データフィールド２５の構造の内容を表している。このデータフィールド２０３０は、プログラムが平文になっているときに算出したメッセージダイジェスト値を格納するメッセージダイジェスト値フィールド３１と、暗号化されたプログラムが格納されているプログラムフィールド３２とから成る。
【００２６】
アーカイブファイル２０１０のファイルエレメントとしてＪａｖａ（登録商標）クラスが格納されている場合は、このアーカイブファイル２０１０のファイル名として、Ｊａｖａ（登録商標）クラスの完全名をファイル名にマッピングしたものが使用される。例えば、「ｃｏｍ．ｘｙｚ．ａａａ．ｂｂｂ．Ｃｌａｓｓ１」というクラスが存在する場合は、ファイル名として「ｃｏｍ／ｘｙｚ／ａａａ／ｂｂｂ／Ｃｌａｓｓ１．ｃｌａｓｓ」というファイル名を使用する。このファイル名における「／」はディレクトリであることを示し、「．ｃｌａｓｓ」はＪａｖａ（登録商標）プログラムがコンパイルされたものであることを示す拡張子である。
【００２７】
図３は、第１の実施の形態に係る処理を示したフローチャートであり、具体的には、電子機器１０１０においてプログラムの実行が開始される際に行われる処理を表している。
【００２８】
ソフトウェアの正当性を保証するためのプログラムが、「ｃｏｍ．ｘｙｚ．ｃｈｅｃｋ．Ｃｈｅｃｋｌｅｔ」というＪａｖａ（登録商標）クラスによって実現されているものとする。一方、ソフトウェアの各種属性はマニフェストと呼ばれる特別なエントリに格納されている。このマニフェストには、どのような属性であるかを表す属性名とその値を表す属性値との対が文字列として格納されている。
【００２９】
まずステップＳ３０１０では、チェックプログラムのプログラムモジュールが存在するかを調べる。すなわち、「ｃｏｍ．ｘｙｚ．ｃｈｅｃｋ．Ｃｈｅｃｋｌｅｔ」のファイル名を、「ｃｏｍ／ｘｙｚ／ｃｈｅｃｋ／Ｃｈｅｃｋｌｅｔ．ｃｌａｓｓ」とする。そして、アーカイブファイル２０１０から１つずつファイルエレメント２０２０を取り出して、取り出したファイルエレメント２０２０が、前記ファイル名を持つファイルエレメント２０２０であるかを調べることにより、チェックプログラムの存在を調べる。
【００３０】
チェックプログラムが存在しているときはステップＳ３０２０に進む。存在していないときはステップＳ３０８０に進む。
【００３１】
ステップＳ３０２０では、チェックプログラムの復号化を行う。すなわち、ステップＳ３０１０で探索して発見したチェックプログラムを、制御部１０５０が保管している暗号鍵によって復号化し、ステップＳ３０３０に進む。復号化の暗号鍵は、システムライブラリに存在するクラス（以下、暗号鍵管理クラスと呼ぶ）によってアクセスが管理される。暗号鍵管理クラスは「ｃｏｍ．ｘｙｚ．ｃｈｅｃｋ」パッケージに存在し、暗号鍵にアクセスするためのメソッドは、同一パッケージ内のクラスからのみアクセス可能なメソッドにより取得でき、このメソッドは公開されない。
【００３２】
ステップＳ３０３０では、チェックプログラムを復号化した後、メッセージダイジェスト値を計算する。そして、この計算値と、チェックプログラムのメッセージダイジェスト値としてアーカイブファイルに記憶されていたメッセージダイジェスト値フィールドの値とを比較する。計算したメッセージダイジェスト値が、アーカイブファイルに記憶されていたメッセージダイジェストの値と異なる場合は、チェックプログラムに改竄が加えられていると考えて、ステップＳ３０８０に進む。そうでない場合はステップＳ３０４０に進む。
【００３３】
ステップＳ３０４０では、チェックプログラムのロード／インスタンス化を行う。すなわち、ステップＳ３０２０で復号化されたチェックプログラムのクラスをＪＶＭで実行できるようにロードする。ロードした後、ロードされたクラスのインスタンスを生成し、ステップＳ３０５０に進む。
【００３４】
ステップＳ３０５０では、チェックプログラムを実行する。具体的には、ステップＳ３０４０で生成されたインスタンスに対して、チェックプログラムが正当なものであるかを調べるためのメソッドである正当性確認メソッドを呼び出す。この正当性確認メソッドには、動かそうとする電子機器１０１０のモデルを特定するための情報であるモデル識別情報と、電子機器の個体識別のためのシリアル番号とを引数として渡す。
【００３５】
正当性確認メソッドでは、引数として渡されたモデル識別情報とシリアル番号から、マニフェスト内に記述されている適合機種情報に照らして指定された電子機器でプログラムが実行可能かを判断する。
【００３６】
ここで述べる適合機種情報とは、例えば図４に示すような情報である。すなわち、プログラムが実行可能なモデル識別情報のリストから成り、一部のモデルでは特定のシリアル番号の範囲を指定可能にしたものである。図４に示された例は、「ＭｏｄｅｌＡ」モデルのシリアル番号１０００番以上と、「ＭｏｄｅｌＢ」モデルと、「ＭｏｄｅｌＣ」モデルのシリアル番号５０００番以下のものが対象となることを示している。実行可能であれば、暗号化された電子機器の製造元のデジタル署名を返す。そうでなければｎｕｌｌ値を返す。
【００３７】
続くステップＳ３０６０では、前記チェックプログラムの実行結果の確認を行う。すなわち、ステップＳ３０５０で呼び出した正当性確認メソッドの実行結果が、実行環境が求めている期待値であるかを調べる。本実施の形態では、期待値として電子機器の製造元の会社が所有するデジタル署名を暗号化したものを使用する。
【００３８】
したがって、前記チェックプログラムの実行結果を制御部１０５０が保管している暗号鍵によって復号化した結果が、製造元のデジタル署名と一致した場合に正常なプログラムがインストールされたと認識し、ステップＳ３０７０に進む。そうでない場合は不正なプログラムがインストールされようとしているとみなし、ステップＳ３０８０に進む。
【００３９】
ステップＳ３０７０では、インストールされたソフトウェアのエントリポイントから実行を開始する。エントリポイントは、マニフェストに属性として記述されており、属性値がクラスを表すと解釈し、このクラスのインスタンスを生成し、そのｓｔａｒｔメソッドを呼び出すことによって、ソフトウェアが起動される。
【００４０】
ステップＳ３０８０では、エラーメッセージを出力する。すなわち、起動しようとしたプログラムが不正なものであったので、プログラムの起動に失敗したことを示すエラーメッセージを、プログラム記憶部１０６０に記憶されているログファイルにログとして出力してプログラムの実行を行わない。
【００４１】
以上のような処理フローにより、起動されるソフトウェアの正当性を確認することができる。
【００４２】
このように本実施の形態によれば、インストールされたプログラムを実行するときに、プログラム中からプログラムの正当性を確認するための正当性確認モジュールを抽出し、正当性確認モジュールを実行し、その実行結果が正しいものであるかを判定し、インストールされているプログラムが正当なものであることを確認したときにのみプログラムの起動を行うようにした。これにより、プログラムを電子機器にインストールするに際し、該プログラムの開発者は該電子機器の開発会社が認定した開発者であることを、ネットワーク上の認証局にアクセスするなどの行為を行わなくとも容易に証明することができる。すなわち、インストールするプログラムが電子機器に対して正常に作成されたものであることを電子機器の製造元が認証することになり、安全なプログラムのインストール方法を簡便且つ柔軟に実現することができる。また、インストールされたプログラムが改竄されているかどうかを調べることができるため、インストール後のプログラムの正当性を確保することができる。
【００４３】
また、本実施の形態では、ソフトウェアの格納されているファイルのメッセージダイジェスト値を計算し、このメッセージダイジェスト値と、予めファイルの生成時に計算されてファイルに格納されていた値とを比較することにより、ソフトウェアが改竄されていないことを確認することができる。このような方法によれば、ファイルに格納されているメッセージダイジェスト値は、制御部１０５０が保管している復号化のための鍵でのみ復号可能であるようにして、より堅牢なシステムとすることができる。
［第２の実施の形態］
次に、第２の実施の形態について説明する。
【００４４】
本実施の形態に係るシステム構成及びアーカイブファイルの構造は、それぞれ図１及び図２で示したように第１の実施の形態と全く同じものとする。
【００４５】
図５は、第２の実施の形態に係る処理を示したフローチャートであり、具体的には、電子機器１０１０においてプログラムの実行が開始される際に行われる処理を表している。この処理は、ステップＳ３０５０、ステップＳ３０６０及びステップＳ３０７０のみが第１の実施の形態と異なり、他の処理は図３で示される第１の実施の形態と同一である。
【００４６】
以下、異なる処理（ステップＳ３０５０、ステップＳ３０６０及びステップＳ３０７０）のみを説明する。
【００４７】
本実施の形態のステップＳ３０５０では、ステップＳ３０４０で生成されたインスタンスに対して、チェックプログラムが正当なものであるかを調べるためのメソッドである正当性確認メソッドを呼び出す。このメソッドには、ソフトウェアのエントリポイントとなるクラスの名前を引数として渡す。エントリポイントは、マニフェストに属性として記述されており、属性値がクラスを表すと解釈することによって得られる。
【００４８】
正当性確認メソッドでは、指定されたクラスのデータをアーカイブファイルからロードする。ロードされたクラスデータは、制御部１０５０が保管している復号化のための鍵を使用して復号することができる暗号鍵によって暗号化されている。したがって、このクラスデータは前記復号化のための鍵を使用して復号化され、その結果、クラスオブジェクトが生成される。クラスオブジェクトが正常に生成できた場合は、そのクラスオブジェクトをメソッドの戻り値として返す。そうでなければｎｕｌｌ値を返す。
【００４９】
エントリクラスのデータが、制御部１０５０が保管している復号化用の鍵で復号することができない暗号化鍵を使用して暗号化されているものが指定されていたり、改竄されていたりした場合は、復号化に失敗するか、不正なクラスデータとして復号化される。その結果、クラスオブジェクトを生成する時、もしくはクラスオブジェクトから生成されたインスタンスオブジェクトの実行時に、エラーとなり、これによって、正しくない暗号化鍵の使用や、エントリクラスデータの改竄の事実を検出することができる。
【００５０】
本実施の形態のステップＳ３０６０では、ステップＳ３０５０で呼び出した正当性確認メソッドの実行結果がｎｕｌｌ値でないことを確認する。ｎｕｌｌ値でなければステップＳ３０７０に進む。ｎｕｌｌ値である場合は不正なプログラムがインストールされようとしているとみなし、ステップＳ３０８０に進む。
【００５１】
本実施の形態のステップＳ３０７０では、ステップＳ３０５０で正当性確認メソッドから返されたエントリポイント・クラスのクラスオブジェクトからインスタンスオブジェクトを生成する。そして、生成されたインスタンスオブジェクトのｓｔａｒｔメソッドを呼び出すことによってソフトウェアを起動する。
【００５２】
本実施の形態のように構成しても、上記第１の実施の形態と同等の効果を得ることができる。
【００５３】
本実施の形態では、エントリポイント・クラスのみに対して、正当性確認メソッドにより復号化を行ったが、アーカイブファイルのエントリである全てのクラスデータを製造時にエントリごとに暗号化してソフトウェアのアーカイブファイルに格納しておき、クラスをロードする必要が生じる度に正当性確認メソッドを呼び出してクラスデータのロード／復号化／クラスオブジェクトの生成を行うようにしても良い。
【００５４】
また、全てのクラスデータのメッセージダイジェストをクラスデータと共に暗号化して格納し、クラスをロードする際にクラスデータからメッセージダイジェストを計算し、その計算値と、ファイルに格納されている暗号化されたメッセージダイジェスト値を制御部１０５０が保管している復号化のための鍵で復号化した値とを比較して、クラスデータが改竄されていないかを調べるよう構成しても良い。
【００５５】
なお、上述した図３及び図５のフローチャートに従ったプログラムを電子機器１０１０内のプログラム記憶部１０６０に格納し動作することにより、上述の制御方法を実現させることが可能となる。
【００５６】
本発明は、上述した実施形態の装置に限定されず、複数の電子機器から構成されるシステムに適用しても、１つの電子機器から成る装置に適用しても良い。前述した実施形態の機能を実現するソフトウェアのプログラムコードを記憶した記憶媒体をシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても、完成されることは言うまでもない。
【００５７】
この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコードを記憶した記憶媒体は本発明を構成することになる。プログラムコードを供給するための記憶媒体としては、例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭを用いることができる。また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけではなく、そのプログラムコードの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【００５８】
さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、次のプログラムコードの指示に基づき、その拡張機能を拡張ボードや拡張ユニットに備わるＣＰＵなどが処理を行って実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれることは言うまでもない。
【図面の簡単な説明】
【００５９】
【図１】実施の形態に係る情報処理システムの要部構成を示すブロック図である。
【図２】実施の形態で使用されるアーカイブファイルの構成を示す図である。
【図３】第１の実施の形態に係る処理を示したフローチャートである。
【図４】実施の形態に係る適合リストの一例を示す図である。
【図５】第２の実施の形態に係る処理を示したフローチャートである。
【符号の説明】
【００６０】
１０１０  電子機器
１０２０  ＰＣ
１０３０  プログラムファイル
１０４０  ネットワーク
１０５０  制御部
１０６０  プログラム記憶部
１０７０  通信部
１０８０  バス
２０１０  アーカイブファイル
２０２０  ファイルエントリ
２０３０  正当性確認モジュール
【図１】
2005293109.tif 000003
【図２】
2005293109.tif 000004
【図３】
2005293109.tif 000005
【図４】
2005293109.tif 000006
【図５】
2005293109.tif 000007
【手続補正書】
【提出日】平成17年2月16日(2005.2.16)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理装置において、
前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出手段と、
前記モジュール抽出手段によって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認手段と、
前記正当性確認手段が前記インストールされているソフトウェアの正当性を確認したときに該ソフトウェアの起動を行うソフトウェア起動手段とを備えたことを特徴とするソフトウェア実行管理装置。
【請求項２】
前記正当性確認モジュールは暗号化されたモジュールであり、
前記モジュール抽出手段は、前記電子機器が保持する復号鍵によって前記正当性確認モジュールを復号化することを特徴とする請求項１に記載のソフトウェア実行管理装置。
【請求項３】
前記正当性確認手段は、前記電子機器のモデル情報及びシリアル番号を含む機器識別情報を取得し、該機器識別情報に基づいて、前記インストールされたソフトウェアがその電子機器上で実行可能かを判断することを特徴とする請求項１または２に記載のソフトウェア実行管理装置。
【請求項４】
ソフトウェアのエントリポイントとなるモジュールを指定するエントリモジュール指定手段を有し、
前記正当性確認手段は、前記エントリモジュール指定手段によって指定されたモジュールを前記電子機器が保持している復号鍵で復号化することを特徴とする請求項１または２に記載のソフトウェア実行管理装置。
【請求項５】
電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理方法において、
前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出工程と、
前記モジュール抽出工程によって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認工程と、
前記正当性確認工程が前記インストールされているソフトウェアの正当性を確認したときに該ソフトウェアの起動を行うソフトウェア起動工程とを順次実行することを特徴とするソフトウェア実行管理方法。
【請求項６】
前記正当性確認モジュールは暗号化されたモジュールであり、
前記モジュール抽出工程は、前記電子機器が保持する復号鍵によって前記正当性確認モジュールを復号化することを特徴とする請求項５に記載のソフトウェア実行管理方法。
【請求項７】
前記正当性確認工程は、前記正当性確認モジュールを復号化した後、メッセージダイジェスト値を計算する計算工程と、この計算値と、前記正当性確認モジュールのメッセージダイジェスト値として前記正当性確認モジュールに記憶されていた値とを比較する比較工程を含むことを特徴とする請求項６に記載のソフトウェア実行管理方法。
【請求項８】
前記正当性確認工程は、前記電子機器のモデル情報及びシリアル番号を含む機器識別情報を取得し、該機器識別情報に基づいて、前記インストールされたソフトウェアがその電子機器上で実行可能かを判断することを特徴とする請求項５から７のいずれか１項に記載のソフトウェア実行管理方法。
【請求項９】
前記正当性確認工程は、前記正当性確認モジュールの実行結果を復号化した結果が、電子機器の製造元のデジタル署名と一致するかを判断することを特徴とする請求項５から８のいずれか１項に記載のソフトウェア実行管理方法。
【請求項１０】
電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理方法を実行するための、コンピュータで読み取り可能な制御プログラムであって、
前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出ステップと、
前記モジュール抽出ステップによって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認ステップと、
前記正当性確認ステップが前記インストールされているソフトウェアの正当性を確認したときに該ソフトウェアの起動を行うソフトウェア起動ステップとを備えたことを特徴とする制御プログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００１５
【補正方法】変更
【補正の内容】
【００１５】
上記目的を達成するため、本発明のソフトウェア実行管理装置は、電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理装置において、前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出手段と、前記モジュール抽出手段によって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認手段と、前記正当性確認手段が前記インストールされているソフトウェアの正当性を確認したときに該ソフトウェアの起動を行うソフトウェア起動手段とを備えたことを特徴とする。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００１６
【補正方法】変更
【補正の内容】
【００１６】
本発明のソフトウェア実行管理方法は、電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理方法において、前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出工程と、前記モジュール抽出工程によって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認工程と、前記正当性確認工程が前記インストールされているソフトウェアの正当性を確認したときに該ソフトウェアの起動を行うソフトウェア起動工程とを順次実行することを特徴とする。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００１７
【補正方法】変更
【補正の内容】
【００１７】
また、電子機器上で稼動するソフトウェアをインストールし、該インストールされたソフトウェアを実行制御するソフトウェア実行管理方法を実行するための、コンピュータで読み取り可能な制御プログラムであって、前記インストールされたソフトウェア中から該ソフトウェアの正当性を確認するための正当性確認モジュールを抽出するモジュール抽出ステップと、前記モジュール抽出ステップによって抽出された前記正当性確認モジュールを実行して、その実行結果が正しいものであるかを判定する正当性確認ステップと、前記正当性確認ステップが前記インストールされているソフトウェアの正当性を確認したときに該ソフトウェアの起動を行うソフトウェア起動ステップとを備えたことを特徴とする。