(57)【特許請求の範囲】
【請求項１】
それぞれ複数のプログラムをネイティブコードに変換し、前記プログラムを実行する複数のプログラム実行環境を有し、少なくとも一部の前記プログラム実行環境にプログラムを追加可能な画像形成装置であって、
前記プログラムごとに、当該プログラムが動作する前記プログラム実行環境を識別する実行環境識別情報を記憶する記憶手段と、
第一の前記プログラムによる第二の前記プログラムの実行要求に応じ、前記第二のプログラムに関連付けられている利用許否情報に基づいて、前記実行要求を前記第二のプログラムに伝達するか否かを判定する判定手段とを有し、
前記利用許否情報は、前記第二のプログラムを利用可能なプログラムが動作する前記プログラム実行環境の前記実行環境識別情報を含み、
前記判定手段は、前記第一のプログラムに関して前記記憶手段が記憶する前記実行環境識別情報が、前記第二のプログラムに関連付けられている前記利用許否情報に含まれる場合に、前記実行要求を前記第二のプログラムに伝達する画像形成装置。
【請求項２】
当該画像形成装置に追加されるプログラムには、当該プログラムが対応する前記プログラム実行環境の前記実行環境識別情報と、前記実行環境識別情報に対応する電子署名とが関連付けられており、
前記電子署名に基づいて、前記実行環境識別情報の改ざんを検知する改ざん検知手段を有する請求項１記載の画像形成装置。
【請求項３】
それぞれ複数のプログラムをネイティブコードに変換し、前記プログラムを実行する複数のプログラム実行環境を有し、少なくとも一部の前記プログラム実行環境にプログラムを追加可能な画像形成装置が実行する情報処理方法であって、
前記プログラムごとに、当該プログラムが動作する前記プログラム実行環境を識別する実行環境識別情報を記憶手段に記憶する記憶手順と、
第一の前記プログラムによる第二の前記プログラムの実行要求に応じ、前記第二のプログラムに関連付けられている利用許否情報に基づいて、前記実行要求を前記第二のプログラムに伝達するか否かを判定する判定手順とを有し、
前記利用許否情報は、前記第二のプログラムを利用可能なプログラムが動作する前記プログラム実行環境の前記実行環境識別情報を含み、
前記判定手順は、前記第一のプログラムに関して前記記憶手段が記憶する前記実行環境識別情報が、前記第二のプログラムに関連付けられている前記利用許否情報に含まれる場合に、前記実行要求を前記第二のプログラムに伝達する情報処理方法。
【請求項４】
前記画像形成装置に追加されるプログラムには、当該プログラムが対応する前記プログラム実行環境の前記実行環境識別情報と、前記実行環境識別情報に対応する電子署名とが関連付けられており、
前記電子署名に基づいて、前記実行環境識別情報の改ざんを検知する改ざん検知手順を有する請求項３記載の情報処理方法。
【請求項５】
それぞれ複数のプログラムをネイティブコードに変換し、前記プログラムを実行する複数のプログラム実行環境を有し、少なくとも一部の前記プログラム実行環境にプログラムを追加可能な画像形成装置に、
前記プログラムごとに、当該プログラムが動作する前記プログラム実行環境を識別する実行環境識別情報を記憶手段に記憶する記憶手順と、
第一の前記プログラムによる第二の前記プログラムの実行要求に応じ、前記第二のプログラムに関連付けられている利用許否情報に基づいて、前記実行要求を前記第二のプログラムに伝達するか否かを判定する判定手順とを実行させ、
前記利用許否情報は、前記第二のプログラムを利用可能なプログラムが動作する前記プログラム実行環境の前記実行環境識別情報を含み、
前記判定手順は、前記第一のプログラムに関して前記記憶手段が記憶する前記実行環境識別情報が、前記第二のプログラムに関連付けられている前記利用許否情報に含まれる場合に、前記実行要求を前記第二のプログラムに伝達する情報処理プログラム。
【請求項６】
前記画像形成装置に追加されるプログラムには、当該プログラムが対応する前記プログラム実行環境の前記実行環境識別情報と、前記実行環境識別情報に対応する電子署名とが関連付けられており、
前記電子署名に基づいて、前記実行環境識別情報の改ざんを検知する改ざん検知手順を有する請求項５記載の情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、情報処理方法、及び情報処理プログラムに関し、特に複数のプログラム実行環境を有し、少なくとも一部の前記プログラム実行環境にプログラムを追加可能な画像形成装置、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
近年、プリンタ、コピー機、及び複合機等の画像形成装置においても、プログラムの拡張性が向上し、機器のメーカー以外のソフトウェアベンダ等によって作成されたプログラムを機器の出荷後にインストールすることが可能とされている（例えば、特許文献１）。
【０００３】
斯かる状況において、機器メーカーは、セキュリティレベルの高い機能や情報等の資源に対する不特定多数のプログラムによるアクセスを防止するための機能の充実に取り組んでいる。例えば、プログラムごとにアクセス権限を設定し、サードベンダによるプログラムに対しては、所定の資源に対するアクセスを制限している。
【特許文献１】特開２００４−３１２７１１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、プログラムは多数インストールされる場合があると共に、機器ごとにインストールされるプログラムは異なりうる。このような状況においてプログラムごとに資源に対するアクセス制御を行うのは非常に煩雑な作業又は管理が必要とされるという問題があった。
【０００５】
本発明は、上記の点に鑑みてなされたものであって、プログラムによる資源の利用制限を適切に実現することのできる画像形成装置、情報処理方法、及び情報処理プログラムの提供を目的とする。
【課題を解決するための手段】
【０００６】
そこで上記課題を解決するため、本発明は、複数のプログラム実行環境を有し、少なくとも一部の前記プログラム実行環境にプログラムを追加可能な画像形成装置であって、当該画像形成装置の資源について、前記プログラム実行環境単位で利用の許否を示す利用許否情報が記録された記憶手段と、前記利用許否情報に基づいて、前記複数のプログラム実行環境のいずれかにおいて実行されるプログラムによる前記資源の利用の許否を判定する判定手段とを有する。
【０００７】
このような画像形成装置では、プログラムによる資源の利用制限を適切に実現することができる。
【発明の効果】
【０００８】
本発明によれば、プログラムによる資源の利用制限を適切に実現することのできる画像形成装置、情報処理方法、及び情報処理プログラムを提供することができる。
【発明を実施するための最良の形態】
【０００９】
以下、図面に基づいて本発明の実施の形態を説明する。本実施の形態では、複合機を画像形成装置の一例として説明する。複合機は、プリンタ、コピー、スキャナ、又は、ファクス等の複数の機能を一台の筐体において実現する画像形成装置である。
【００１０】
図１は、本発明の実施の形態における複合機のプログラムの実行環境の基本構成例を説明するための第一の図である。同図及び図２等では、図６において説明する複合機１のソフトウェア構成例の理解を容易にするために、当該ソフトウェア構成例を構成する一部分に焦点を当てて順次説明していく。
【００１１】
図１では、複合機１が有するハードウェア資源の一部として、プロッタエンジン１１及びスキャナエンジン１２と、ソフトウェア資源の一部として、エンジン制御ボード１０１、ＯＳ１０２、ＪＶＭ（Java（登録商標） Virtual Machine）１０３、ＯＳＧｉ（Open Services Gateway Initiative）プラットフォーム１０４、バンドル１０５、ネイティブコードサービス１０６、及びブリッジ部１０７等とが示されている。当該ソフトウェア資源は、複合機１が備える非図示の記憶装置に記録され、実装された処理手順を複合機１が備える非図示のＣＰＵに実行させることによりその機能を実現する。
【００１２】
エンジン制御ボード１０１は、プロッタエンジン１１及びスキャナエンジン１２等の複合機１の個別機能を制御し、エンジンＩ／Ｆ（インタフェース）を通して、エンジン制御ボード１０１の機能をＯＳ１０２等に提供する。
【００１３】
ＯＳ１０２は、いわゆるオペレーティング・システムであり、ＪＶＭ１０３や各ネイティブコードサービス１０６等をプロセスとして並列的に起動させる。ＪＶＭ１０３は、Ｊａｖａ（登録商標）言語に固有のバイトコードをＯＳ１０２上で動作可能なネイティブコードに変換して実行する。ＯＳＧｉプラットフォーム１０４は、ＯＳＧｉアライアンスによる標準化技術であり、Ｊａｖａ（登録商標）言語に基づいたオープンなソフトウェア部品化技術に基づいて作成されたソフトウェア部品の実行環境を提供するソフトウェアプラットフォームである。ＯＳＧｉプラットフォーム１０４上において、Ｊａｖａ（登録商標）言語のソフトウェアは「バンドル」と呼ばれるソフトウェア部品の形で実装される。一つのバンドルは、一つのＪＡＲ（Java（登録商標） ARchive）ファイルによって構成され、それぞれ独立して動的に（装置の再起動を要することなく）インストール可能である。バンドル１０５は、斯かるバンドルを示す。図示されるように、バンドル１０５は複数存在し得る。ネイティブコードサービス１０６は、例えば、Ｃ言語等によって作成された、ＯＳ１０１上において直接動作するネイティブコードによるプログラムであり、図示されるように複数存在しうる。各ネイティブコードサービス１０６は、例えば、複数のバンドル１０５より共通的に利用される各種の機能を実現する。ブリッジ部１０７は、異なるプログラム実行環境間の呼び出しを実現する。図１では、ＪＶＭ１０３上でスレッドとして起動されるバンドル１０５によるネイティブコードサービス１０６の呼び出し（利用）を実現する。当該呼び出しは、例えば、ＪＮＩ（Java（登録商標） Native Interface）等を用いればよい。なお、本実施の形態において、ＪＶＭ１０３上におけるプログラムの実行環境をＪＶＭ環境という。また、ネイティブコードサービス１０６に係るプログラムの実行環境（換言すれば、ＯＳ１０１上で直接動作するプログラムの実行環境）をネイティブ環境という。
【００１４】
図１において注目すべき点は、ＪＶＭ環境及びネイティブ環境は、それぞれ独自にＯＳ１０２及びエンジン制御ボード１０１等を介してハードウェア資源を制御可能であることである。また、ＪＶＭ環境からネイティブ環境を呼び出すことが可能であることである（したがって、ＪＶＭ環境は、ネイティブ環境経由でハードウェア資源を制御することもできる。）。
【００１５】
図２は、本発明の実施の形態における複合機のプログラムの実行環境の基本構成例を説明するための第二の図である。図２中、図１と同一部分には同一符号を付し、その説明は省略する。
【００１６】
同図において注目すべき点は、本実施の形態の複合機１において、図１にて説明したバンドル１０５は、静的バンドルと追加バンドルとに分類される点である。静的バンドルとは、複合機１のメーカーによって実装されるバンドル１０５である。静的バンドルは、複合機１の出荷時には既にインストールされており、主として複合機１の基本機能（基本的なアプリケーション）を提供する。基本的に、静的バンドルのアンインストールは制限されている。一方、追加バンドルとは、複合機の出荷後にインストールされるバンドル１０５である。したがって、そのインストール及びアンインストールは任意のタイミングにおいて行うことができる。
【００１７】
バンドル１０５の斯かる分類を識別するための情報として、複合機１の記憶装置には、静的バンドル管理テーブル１５１及び追加バンドル管理テーブル１５２が記録されている。図中では便宜上、静的バンドル管理テーブル１５１及び追加バンドル管理テーブル１５２は、バンドル１０５を示す矩形内に記載されているが、両テーブルはバンドル１０５ではない。静的バンドル管理テーブル１５１には、静的バンドルに分類されるバンドル１０５を識別するための情報が記録されている。追加バンドル管理テーブル１５２は、追加バンドルに分類されるバンドル１０５を識別するための情報が記録されている。
【００１８】
図３は、追加バンドル管理テーブルの構成例を示す図である。追加バンドル管理テーブル１５２等の形式は所定のものに限定されないが、同図ではＸＭＬ（eXtensible Markup Language）形式によって記述された例が示されている。
【００１９】
同図において、追加バンドル管理テーブル１５２には、＜ｉｎｓｔａｌｌｅｄＢｕｎｄｌｅｓ＞タグによって囲まれた要素（ｉｎｓｔａｌｌｅｄＢｕｎｄｌｅｓ要素）の子要素として、インストールされたバンドル１０５ごとにｂｕｎｄｌｅ要素が記述される。同図では一つｂｕｎｄｌｅ要素１５２１のみが記載されている。これは、一つの追加バンドルがインストールされていることを示す。
【００２０】
ｂｕｎｄｌｅ要素の子要素として、ｄｉｓｐｌａｙＮａｍｅ要素、ｍｏｄｕｌｅ要素、及びｄｅｐｅｎｄｅｎｃｙ要素等が含まれる。ｄｉｓｐｌａｙＮａｍｅ要素の値は表示文字列を示す。表示文字列は、例えば、複合機１の操作パネル上において利用可能なアプリケーション（バンドル１０５）の一覧を表示させる際等に用いられる。ｄｉｓｐｌａｙＮａｍｅ要素は言語ごとに記述可能である。各ｄｉｓｐｌａｙＮａｍｅ要素が対応する言語は、ｌａｎｇ属性によって識別される。図中において、ｄｉｓｐｌａｙＮａｍｅ要素１５２１ａのｌａｎｇ属性の値は「ｊａ」である。したがって、ｄｉｓｐｌａｙＮａｍｅ要素１５２１ａの値（「拡張機能１」）は日本語の表示文字列であることが識別される。また、ｄｉｓｐｌａｙＮａｍｅ要素１５２１ｂのｌａｎｇ属性の値は「ｅｎ」である。したがって、ｄｉｓｐｌａｙＮａｍｅ要素１５２１ｂの値（「Ｅｘｔｅｎｔｉｏｎ  １」）は英語の表示文字列であることが識別される。
【００２１】
ｍｏｄｕｌｅ要素の値は、バンドル１０５のファイル名を示す。ｄｅｐｅｎｄｅｎｃｙ要素の値は、他のバンドル１０５等との依存関係を示す。
【００２２】
図４は、追加バンドルがインストールされる様子を示す図である。図４中、図２と同一部分には同一符号を付している。同図では、追加バンドル１０５Ｎが新たにインストールされる例が示されている。この場合、バンドルインストーラ１０８は、追加バンドル１０５Ｎのファイルを複合機１の記憶装置の所定の記憶位置（フォルダ）に保存すると共に、追加バンドル１０５Ｎに関する情報を追加バンドル管理テーブル１５２に登録する。
【００２３】
図５は、追加バンドルのインストールによる追加バンドル管理テーブルの更新例を示す図である。図５中、図３と同一部分には同一符号を付している。図５に示される追加バンドル管理テーブル１５２には、ｂｕｎｄｌｅ要素１５２２が新たに追加されている。ｂｕｎｄｌｅ要素１５２２が、新たに追加された追加バンドル１０５Ｎに対応する記述（定義）である。
【００２４】
以上の基本的構成を前提として、複合機１のプログラムの実行環境の全体像（ソフトウェア構成）について説明する。図６は、本発明の実施の形態における複合機のソフトウェア構成例を説明するための図である。図６中、図１又は図２と同一部分には同一符号を付し、その説明は適宜省略する。
【００２５】
同図に示されるように、複合機１は、コアＪＶＭ１０３ａ、アプリＪＶＭ１０３ｂ、及拡張ＪＶＭ１０３ｃ等の３つのＪＶＭ１０３を有し、ＪＶＭ１０３ごとに、図１及び図２において説明した構成（ＯＳＧｉプラットフォーム１０４、バンドル１０５）を有する。各ＪＶＭ１０３上におけるＯＳＧｉプラットフォーム１０４及びバンドル１０５は、それぞれの参照番号の末尾に「ａ」、「ｂ」、又は「ｃ」が付されることによって区別される。
【００２６】
基本的に、各ＪＶＭ１０３自体の機能（実装内容）は同じである。但し、ＪＶＭ１０３ごとに他のＪＶＭ環境又はネイティブ環境に対するアクセス権限が異なる。具体的には、コアＪＶＭ１０３ａは、例えば、複合機１のメーカー等によって作成されたバンドル１０５等、最も信頼度が高いバンドル１０５に対する実行環境を提供する。コアＪＶＭ１０３ａ上で動作するバンドル１０５を、便宜上「コアバンドル１０５ａ」という。コアバンドル１０５ａは、ブリッジ部１０７を介してネイティブコードサービス１０６及びエンジン制御ボード１０２によって提供される全ての機能を直接呼び出す（利用する）ことができる。但し、コアバンドル１０５ａによるネイティブコードサービス１０６又はエンジン制御ボード１０２の利用に関して制限を設けてもよい。
【００２７】
アプリＪＶＭ１０３ｂは、コアバンドル１０５ａより信頼度の低い、又は複合機１の資源に対するアクセス制限が厳しくされるべきバンドル１０５に対する実行環境を提供する。アプリＪＶＭ１０３ｂ上で動作するバンドル１０５を、便宜上「アプリバンドル１０５ｂ」という。アプリバンドル１０５ｂは、ブリッジ部１０７を介してネイティブコードサービス１０が提供する機能を直接利用することができる。但し、アプリバンドル１０５ｂによるネイティブコードサービス１０６の利用には、コアバンドル１０５ａに対して相対的に厳しい制限が設けられる。また、アプリバンドル１０５ｂは、ブリッジ部１０７を介してコアバンドル１０５ａの全て又は一部の機能を直接利用することができる。すなわち、ブリッジ部１０７は、ＪＶＭ環境からのネイティブ環境の呼び出しのみならず、異なるＪＶＭ環境間の呼び出しもサーポートする。異なるＪＶＭ環境間の呼び出しは、プロセス間通信等を用いた公知の記述に従えばよい。また、アプリバンドル１０５ｂは、エンジン制御ボード１０２の機能を直接利用することができない。
【００２８】
拡張ＪＶＭ１０３ｃは、アプリバンドル１０５ｂより信頼度の低い、又は複合機１の資源に対するアクセス制限が厳しくされるべきバンドル１０５に対する実行環境を提供する。拡張ＪＶＭ１０３ｃ上で動作するバンドル１０５を、便宜上「拡張バンドル１０５ｃ」という。拡張バンドル１０５ｃは、ブリッジ部１０７を介して、予め設定された制限の範囲内でコアバンドル１０５ａ及びアプリバンドル１０５ｂの機能を直接利用することができる。但し、拡張バンドル１０５ｃは、ネイティブコードサービス１０が提供する機能の直接的な利用は許可されない。
【００２９】
このように、複合機１では、ＪＶＭ環境単位でバンドル１０５のアクセス権限が制御される。図６では、３つのＪＶＭ１０３を備えた例が示されているため、各バンドル１０５のセキュリティレベルをどのＪＶＭ１０３で動作させるかによって３段階に分類することができる。したがって、バンドル１０５ごとにアクセス権限を制御する場合に比べて、より簡便に各アプリケーションのアクセス制御を行うことができる。なお、ＪＶＭ１０３は、２つであってもよいし、複合機１のハードウェア資源のスペックに応じて４つ以上であってもよい。２つの場合は、２段階のセキュリティレベルを形成することができ、４つ以上の場合は４つ以上のセキュリティレベルを形成することができる。
【００３０】
ところで、コアバンドル１０５ａ及びアプリバンドル１０５ｂ内には、それぞれ静的バンドル及び追加バンドルが存在しうる。一方、拡張バンドル１０５には、静的バンドルは存在しない。すなわち、拡張バンドル１０５は、全て追加バンドルとしてインストールされる。但し、このような構成はあくまでも例示であり、拡張バンドル１０５に静的バンドルが存在してもよい。
【００３１】
更に、図６では、バンドル検査部１０９、電子署名検査部１１０、及び追加バンドル検査部１１１等が構成要素として示されている。これら各部の機能については処理手順の説明において記す。
【００３２】
以下、図６に示される構成を有する複合機１の処理手順について説明する。図７は、複合機におけるバンドルのインストール時の処理手順を説明するためのシーケンス図である。
【００３３】
ステップＳ１０１において、操作パネル等を介してユーザによって入力される、新たなバンドル１０５（追加バンドル１０５Ｎ）のインストール指示に応じ（Ｓ１０１）、バンドルインストーラ１０８は、追加バンドル１０５Ｎの検査をバンドル検査部１０９に要求する（Ｓ１０２）。
【００３４】
図８は、本実施の形態におけるバンドルの構成例を示す図である。同図に示されるように、一つのバンドル１０５は、一つ以上の実行コード１０５１、バンドル情報１０５２、及び電子署名１０５３等がｚｉｐ形式によって圧縮され、書庫化されたファイル（ＪＡＲファイル）である。実行コード１０５１は、プログラムの実体（Ｃｌａｓｓファイル）である。電子証明１０５３は、実行コード１０５１又はバンドル情報１０５２の改ざんを検知するための署名データであり、例えば、実行コード１０５１及びバンドル情報１０５２のハッシュ値を暗号化したものである。バンドル情報１０５２は、バンドルタイプ及び利用許可情報を含む情報である。バンドルタイプは、当該バンドル１０５が、コアバンドル１０５ａ、アプリバンドル１０５ｂ、及び拡張バンドル１０５ｃのいずれであるかを示す情報であり、それぞれ「ｃｏｒｅ」、「ａｐｐｌｉｃａｔｉｏｎ」、「ｅｘｔｅｎｓｉｏｎ」によって表記される。利用許可情報は、当該バンドル１０５の利用を許可するバンドルタイプを示す情報である。
【００３５】
図９は、バンドル情報の定義例を示す図である。同図では、バンドル情報１０５２をＸＭＬ形式によって記述した例を示す。
【００３６】
同図において、ｂｕｎｄｌｅＩｎｆｏｍａｔｉｏｎタグ１０５２ａのｖｍＴｙｐｅ属性の値は、バンドルタイプに相当する。同図の例では「ｃｏｒｅ」（コアバンドル１０５ａ）である。また、ａｃｃｅｐｔＶｍＴｙｐｅｓ要素１０５２ｂの子要素であるａｃｃｅｐｔＶｍＴｙｐｅ要素の値は、利用許可情報に相当する。同図の例では、二つのａｃｃｅｐｔＶｍＴｙｐｅ要素によって「ａｐｐｌｉｃａｔｉｏｎ」及び「ｅｘｔｅｎｓｉｏｎ」が指定されている。これは、アプリケーションバンドル１０５ｂ及び拡張バンドル１０５ｃからの利用を許可することを意味する。
【００３７】
続いて、バンドル検査部１０９は、追加バンドル１０５Ｎのバンドル情報１０５２より、バンドルタイプ及び電子署名１０５３を取得し（Ｓ１０３、Ｓ１０４）、電子署名検査部１１０に対して、電子署名１０５３に基づく、追加バンドル１０５Ｎの検査を要求する（Ｓ１０５）。電子署名検査部１１０は、電子署名１０５３に基づいて、追加バンドル１０５Ｎの検査を実行し、当該検査結果をバンドル検査部１０９に返却する（Ｓ１０６）。ここで、検査とは、例えば、追加バンドル１０５Ｎの実行コード１０５１及びバンドル情報１０５２のハッシュ値と、電子署名１０５３を復号した値との照合等である。これにより、実行コード１０５１のみならず、バンドルタイプが不正に改ざんされていないことが検査される。
【００３８】
続いて、バンドル検査部１０９は、追加バンドル１０５Ｎのバンドルタイプと、電子署名検査部１１０による検査結果（改ざんの有無）とをバンドルインストーラ１０８に返却する（Ｓ１０７）。バンドルインストーラ１０８は、返却されたバンドルタイプ及び検査結果に応じて処理を分岐させる。
【００３９】
例えば、バンドルタイプがコアバンドル１０５ａであり、検査結果に問題がない場合（改ざんされていない場合）、バンドルインストーラ１０８は、追加バンドル１０５Ｎをコアバンドル１０５ａの追加バンドルとして、追加バンドル管理テーブル１５２に登録する（Ｓ１１１〜Ｓ１１２）。
【００４０】
一方、バンドルタイプがアプリバンドル１０５ｂであり、検査結果に問題がない場合（改ざんされていない場合）、バンドルインストーラ１０８は、追加バンドル１０５Ｎをアプリバンドル１０５ｂの追加バンドルとして、追加バンドル管理テーブル１５２に登録する（Ｓ１２１〜Ｓ１２２）。
【００４１】
また、バンドルタイプが拡張バンドル１０５ｃであり、検査結果に問題がない場合（改ざんされていない場合）、バンドルインストーラ１０８は、追加バンドル１０５Ｎを拡張バンドル１０５ｃの追加バンドルとして、追加バンドル管理テーブル１５２に登録する（Ｓ１３１〜Ｓ１３２）。
【００４２】
なお、検査結果に問題がある場合、例えば、照合した値が一致せず改ざんの可能性がある場合、バンドルインストーラ１０８は追加バンドル１０５Ｎのインストールを中止する（Ｓ１４１）。
【００４３】
バンドル１０５Ｎのインストールの結果、追加バンドル管理テーブル１５２は、例えば次のように更新される。
【００４４】
図１０は、追加バンドルのバンドルタイプに応じた追加バンドル管理テーブルの更新例を示す図である。
【００４５】
図１０に示される追加バンドル管理テーブル１５２の構成は、図３において説明したものと同様である。但し、図１０では、各ｂｕｎｄｌｅ要素に当該バンドル１０５のバンドルタイプを識別するためのｔｙｐｅ属性が付加されている。例えば、ｂｕｎｄｌｅ要素１５２３のｔｙｐｅ属性１５２３ａの値は「ｃｏｒｅ」である。したがって、コアバンドル１０５ａが新たにインストールされた場合、ｂｕｎｄｌｅ要素１５２３に示されるような記述が追加される。
【００４６】
また、ｂｕｎｄｌｅ要素１５２４のｔｙｐｅ属性１５２４ａの値は「ａｐｐｌｉｃａｔｉｏｎ」である。したがって、アプリバンドル１０５ｂが新たにインストールされた場合、ｂｕｎｄｌｅ要素１５２４に示されるような記述が追加される。
【００４７】
また、ｂｕｎｄｌｅ要素１５２５のｔｙｐｅ属性１５２５ａの値は「ｅｘｔｅｎｓｉｏｎ」である。したがって、拡張バンドル１０５ｃが新たにインストールされた場合、ｂｕｎｄｌｅ要素１５２５に示されるような記述が追加される。
【００４８】
追加バンドル１０５Ｎのインストール時にバンドルタイプ等の改ざんの検査が行われることにより、追加バンドル１０５Ｎの流通過程におけるバンドルタイプ等の改ざんを検知することができる。したがって、拡張バンドル１０５ｃとしてインストールされた追加バンドル１０５Ｎが、コアバンドル１０５ａ又はアプリバンドル１０５ｂとしてインストールされることが防止され、ＪＶＭ環境ごとに設定されたセキュリティレベルが適切に維持される。
【００４９】
ところで、図７では、追加バンドル１０５Ｎについてそのインストール時に電子書名１０５３に基づく検査を行っているが、インストール後の所定のタイミング（例えば、追加バンドル１０５Ｎが利用（ロード）される際等）において当該検査を行うようにしてもよい。
【００５０】
図１１は、バンドルのインストール後におけるバンドルの検査の処理手順を説明するための図である。なお、同図に示される各ステップは、複合機１にインストールされている追加バンドルごとに行われる。
【００５１】
所定のタイミングにおいて追加バンドル検査部１１１は、追加バンドル管理テーブル１５２より、一つの追加バンドル１０５Ｎに対する情報（ｂｕｎｄｌｅ要素）を取得する（Ｓ２０１）。続いて、追加バンドル検査部１１１は、取得されたｂｕｎｄｌｅ要素に係る追加バンドル１０５Ｎの検査をバンドル検査部１０９に要求する（Ｓ２０２）。ステップＳ２０３からＳ２０６までは、図７におけるステップＳ１０３からＳ１０６までと同様の処理手順が実行される。
【００５２】
ステップＳ２０６に続いて、バンドル検査部１０９は、追加バンドル１０５Ｎのバンドルタイプと、電子署名検査部１１０による検査結果（改ざんの有無）とをバンドルインストーラ１０８に返却する（Ｓ２０７）。追加バンドル検査部１１１は、返却されたバンドルタイプが、追加バンドル管理テーブル１５２より取得されたｂｕｎｄｌｅ要素のｔｙｐｅ属性の値と一致しない場合、又は検査結果に問題がある場合（改ざんの可能性がある場合）、追加バンドル１０５Ｎを削除する。
【００５３】
インストール後の所定のタイミングにおいて図１１に示されるような処理が実行されることにより、インストール後におけるバンドルタイプ等の改ざんを検知することができる。したがって、拡張バンドル１０５ｃとしてインストールされた追加バンドル１０５Ｎが、コアバンドル１０５ａ又はアプリバンドル１０５ｂとして実行されることが防止され、ＪＶＭ環境ごとに設定されたセキュリティレベルが適切に維持される。
【００５４】
続いて、或るＪＶＭ環境において動作するバンドル１０５からのネイティブ環境又は他のＪＶＭ環境に対する機能の実行要求が発生した際の処理手順について説明する。
【００５５】
図１２及び図１３は、バンドルによる他のプログラム実行環境の機能の利用の可否をブリッジ部が静的に判断する場合の処理手順を説明するためのシーケンス図である。すなわち、同図では、ブリッジ部１０７において、プログラム実行環境間（ＪＶＭ環境又はネイティブ環境）の呼び出し関係の制限がロジック化されている（ブリッジ部１０７のプログラム内に記録されている）例を説明する。
【００５６】
ステップＳ３０１において、或るバンドル１０５が、ブリッジ部１０７に対して他のプログラム実行環境の機能の実行要求を行う（Ｓ３０１）。当該バンドル１０５が、コアバンドル１０５ａであり、当該実行要求の対象とされている機能がネイティブサービスコード１０６におけるものである場合、ブリッジ部１０７は、当該実行要求をネイティブコードサービス１０６に伝達する（Ｓ３１１）。その結果、ネイティブコードサービス１０６は、要求された機能に係る処理を実行し、処理結果をブリッジ部１０７を介してバンドル１０５に返却する（Ｓ３１２、Ｓ３１３）。
【００５７】
また、当該バンドル１０５が、コアバンドル１０５ａであり、当該実行要求の対象とされている機能がエンジン制御ボード１０１におけるものである場合、ブリッジ部１０７は、当該実行要求をエンジン制御ボード１０１に伝達する（Ｓ３１４）。その結果、エンジン制御ボード１０１は、要求された機能に係る処理を実行し、処理結果をブリッジ部１０７を介してバンドル１０５に返却する（Ｓ３１５、Ｓ３１６）。
【００５８】
また、当該バンドル１０５が、アプリバンドル１０５ｂであり、当該実行要求の対象とされている機能がコアバンドル１０５ａにおけるものである場合、ブリッジ部１０７は、当該実行要求をコアバンドル１０５ａに伝達する（Ｓ３２１）。その結果、コアバンドル１０５ａは、要求された機能に係る処理を実行し、処理結果をブリッジ部１０７を介してバンドル１０５に返却する（Ｓ３２２、Ｓ３２３）。
【００５９】
また、当該バンドル１０５が、アプリバンドル１０５ｂであり、当該実行要求の対象とされている機能がネイティブコードサービス１０６におけるものである場合、ブリッジ部１０７は、当該実行要求をネイティブコードサービス１０６に伝達する（Ｓ３２４）。その結果、ネイティブコードサービス１０６は、要求された機能に係る処理を実行し、処理結果をブリッジ部１０７を介してバンドル１０５に返却する（Ｓ３２５、Ｓ３２６）。
【００６０】
また、当該バンドル１０５が、アプリバンドル１０５ｂであり、当該実行要求の対象とされている機能がエンジン制御ボード１０１におけるものである場合、ブリッジ部１０７は、当該実行要求のエンジン制御ボード１０１への伝達を拒否する（Ｓ３２７）。したがって、当該バンドル１０５は、エンジン制御ボード１０１の機能を直接利用することはできない。
【００６１】
また、当該バンドル１０５が、拡張バンドル１０５ｃであり、当該実行要求の対象とされている機能がアプリバンドル１０５ｂにおけるものである場合、ブリッジ部１０７は、当該実行要求をアプリバンドル１０５ｂに伝達する（Ｓ３３１）。その結果、アプリバンドル１０５ｂは、要求された機能に係る処理を実行し、処理結果をブリッジ部１０７を介してバンドル１０５に返却する（Ｓ３３２、Ｓ３３３）。
【００６２】
また、当該バンドル１０５が、拡張バンドル１０５ｃであり、当該実行要求の対象とされている機能がコアバンドル１０５ａにおけるものである場合、ブリッジ部１０７は、当該実行要求をコアバンドル１０５ａに伝達する（Ｓ３３４）。その結果、コアバンドル１０５ａは、要求された機能に係る処理を実行し、処理結果をブリッジ部１０７を介してバンドル１０５に返却する（Ｓ３３５、Ｓ３３６）。
【００６３】
また、当該バンドル１０５が、拡張バンドル１０５ｃであり、当該実行要求の対象とされている機能がネイティブコードサービス１０６におけるものである場合、ブリッジ部１０７は、当該実行要求のネイティブコードサービス１０６への伝達を拒否する（Ｓ３３７）。したがって、当該バンドル１０５は、ネイティブコードサービス１０６の機能を直接利用することはできない。
【００６４】
また、当該バンドル１０５が、拡張バンドル１０５ｃであり、当該実行要求の対象とされている機能がエンジン制御ボード１０１におけるものである場合、ブリッジ部１０７は、当該実行要求のエンジン制御ボード１０１への伝達を拒否する（Ｓ３３８）。したがって、当該バンドル１０５は、エンジン制御ボード１０１の機能を直接利用することはできない。
【００６５】
なお、ブリッジ部１０７は、実行要求元のバンドル１０５が属するプロセスに応じて、当該バンドル１０５がいずれのＪＶＭ１０３上で動作するか（すなわち、当該バンドルのバンドルタイプ）を判断すればよい。又は、実行要求元のバンドル１０５が自らのバンドルタイプをブリッジ部１０７に通知するようにしてもよい。
【００６６】
続いて、図１４は、バンドルによる他のプログラム実行環境の機能の利用の可否を利用許可情報に基づいて判定する場合の処理手順を説明するためのシーケンス図である。
【００６７】
ステップＳ４０１において、或るバンドル１０５が、ブリッジ部１０７に対して他のプログラム実行環境の機能の実行要求を行う。ブリッジ部１０７は、実行要求の対象とされているバンドル１０５（バンドルＺ）のバンドル情報１０５２ｚより利用許可情報（図８、図９参照）を取得する（Ｓ４０３）。当該利用許可情報に、実行要求元のバンドル１０５のバンドルタイプが含まれている場合、ブリッジ部１０７は、バンドルＺに対して当該実行要求を伝達する（Ｓ４０４）。その結果、バンドルＺは、要求された機能に係る処理を実行し、処理結果をブリッジ部１０７を介してバンドル１０５に返却する（Ｓ４０５、Ｓ４０６）。
【００６８】
一方、当該利用許可情報に、実行要求元のバンドル１０５のバンドルタイプが含まれていない場合、ブリッジ部１０７は、当該実行要求のバンドルＺへの伝達を拒否する（Ｓ４０７）。したがって、当該バンドル１０５は、バンドルＺの機能を直接利用することはできない。
【００６９】
次に、バンドル１０５によって実行される機能の具体例に基づいて、複合機１において実行される処理について説明する。まず、複合機１において静的バンドルのみがインストールされている場合（すなわち、追加バンドルのインストールによる機能拡張が行われていない場合）の処理手順について説明する。
【００７０】
図１５は、機能拡張前の機密文書印刷機能の処理手順を説明するためのシーケンス図である。ここで、機密文書印刷機能とは、複合機１のＨＤＤ等に保存されている文書データ又は画像データ（以下、「蓄積文書」という。）の印刷に際し、コピー防止用等の情報（例えば、地紋等）を合成して印刷する機能をいう。同図において、バンドルＢは、アプリバンドル１０５ｂの静的バンドルの一つであり（図６参照）、蓄積文書管理機能を実現する。蓄積文書管理機能とは、複合機１のＨＤＤ等に保存されている文書データの管理機能をいう。また、バンドルＡは、コアバンドル１０５ａの静的バンドルの一つであり（図６参照）、ユーザ認証機能及び機密文書印刷機能を実現する。
【００７１】
ステップＳ５０１において、ユーザは、操作パネルに表示されている画面を介してバンドルＢに対するログイン要求を行う。当該ログイン要求は、例えば、画面上に表示されているバンドルＢに対応するボタンの選択等が相当する。バンドルＢは、ブリッジ部１０７を介して当該ログイン要求をバンドルＡに対して通知する（Ｓ５０２、Ｓ５０３）。バンドルＡは、例えば、認証情報（ユーザ名及びパスワード等）を入力させるための画面を操作パネルに表示させ、当該画面を介して入力された認証情報に基づいて認証を行う（Ｓ５０４）。続いて、バンドルＡは、認証の成否をブリッジ部１０７を介してバンドルＢに通知する（Ｓ５０５、Ｓ５０６）。バンドルＢは、操作パネルに認証の成否を表示させる（Ｓ５０７）。
【００７２】
認証に成功すると、ユーザは、操作パネルを介して、蓄積文書の中から印刷対象とする文書データを選択し、当該文書データの機密文書印刷要求を入力する。当該印刷要求は、バンドルＢに通知される（Ｓ５０８）。バンドルＢは、印刷対象として指定された文書データをＨＤＤより取り出し、ブリッジ部１０７を介して当該文書データの機密文書印刷をバンドルＡに要求する（Ｓ５０９、Ｓ５１０）。バンドルＡは、指定された文書データについてコピー防止用の処理を施した後、当該文書データの印刷をエンジン制御部１０１に要求する（Ｓ５１１）。続いて、バンドルＡは、印刷結果の成否をブリッジ部１０７を介してバンドルＢに通知する（Ｓ５１２、Ｓ５１３）。バンドルＢは、操作パネルに印刷結果を表示させる（Ｓ５１４）。
【００７３】
続いて、ユーザが、ログオフ要求を入力すると（Ｓ５１５）、バンドルＢは、ブリッジ部１０７を介してログオフ要求をバンドルＡに通知する（Ｓ５１６、Ｓ５１７）。バンドルＡは、ログオフ処理を行い（Ｓ５１８）、その結果をブリッジ部１０７を介してバンドルＢに通知する（Ｓ５１９、Ｓ５２０）。バンドルＢは、操作パネルにログオフの結果を表示させる（Ｓ５２１）。
【００７４】
続いて、追加バンドルを追加することにより、機密文書印刷機能に関して機能強化を図る例について説明する。図１６は、追加バンドルが追加された場合の複合機の第一の構成例を示す図である。図１６では、図６の構成に対してコアバンドル１０５ａの追加バンドルとしてバンドルＣが追加されている。バンドルＣは、認証機能について拡張機能を提供するバンドルである。例えば、バンドルＣは、バンドルＡとは異なる認証方式（例えば、生体認証）による認証機能を提供する。なお、バンドルＣは、バンドルＡの拡張点において規定された仕様に従って実装されている。
【００７５】
バンドルＣが追加された場合の処理手順について説明する。図１７は、第一の機能拡張後の機密文書印刷機能の処理手順を説明するためのシーケンス図である。
【００７６】
同図において、ステップＳ６０１〜Ｓ６０３は、図１５のステップＳ５０１〜Ｓ５０３と同様である。ステップＳ６０３に続いて、バンドルＡは、予め規定された仕様に従ってインストールされているバンドルＣの存在を検知すると（例えば、予め規定されたフォルダに予め規定された名前等を有するバンドルＣの存在を検知すると）、バンドルＣに対して認証の実行を要求する（Ｓ６０４）。バンドルＣは、認証情報（例えば、生体情報）の入力を促す画面を操作パネルに表示させ、複合機１に接続された当該認証情報の読み取り装置（例えば、指紋の読み取り装置等）を介して入力された認証情報に基づいて認証を行い、その成否をバンドルＡに通知する（Ｓ６０５）。以降の処理は、図１５と同様である。
【００７７】
また、図１８は、追加バンドルが追加された場合の複合機の第二の構成例を示す図である。図１８では、図６の構成に対して拡張バンドル１０５ｃの追加バンドルとしてバンドルＤが追加されている。バンドルＤは、複合機１の蓄積文書のうち、カレントユーザによって蓄積された文書データの中で最も新しいものを自動的に（ユーザによる選択操作を要することなく）機密文書印刷の対象とするバンドル１０５である。
【００７８】
バンドルＤが追加された場合の処理手順について説明する。図１９は、第二の機能拡張後の機密文書印刷機能の処理手順を説明するためのシーケンス図である。
【００７９】
ステップＳ７０１において、ユーザは、操作パネルに表示されている画面を介してバンドルＤに対するログイン要求を行う。続いて、バンドルＤは、ブリッジ部１０７を介して当該ログイン要求をバンドルＢに対して通知する（Ｓ７０２、Ｓ７０３）。蓄積文書にアクセスするためには、蓄積文書を管理するバンドルＢに対するログインが成功している必要があるからである。続いて、ステップＳ７０４からＳ７０８までは、図１５のステップＳ５０２からＳ５０６までと同様の処理が実行される。ステップＳ７０８に続いて、バンドルＢは、ブリッジ部１０７を介して認証の成否をバンドルＤに通知する（Ｓ７０９、Ｓ７１０）。
【００８０】
認証に成功すると、バンドルＤは、カレントユーザに係る最近の文書データの機密文書印刷をバンドルＢに対して要求する（Ｓ７１１）。バンドルＢは、カレントユーザに係る最近の文書データをＨＤＤより取り出し、ブリッジ部１０７を介して当該文書データの機密文書印刷をバンドルＡに要求する（Ｓ７１２、Ｓ７１３）。続いて、ステップＳ７１４からＳ７１６までは、図１５のステップＳ５１１からＳ５１３と同様である。ステップＳ７１６に続いて、バンドルＢは、バンドルＤに対して機密文書印刷の成否を通知する（Ｓ７１７）。
【００８１】
続いて、バンドルＤは、ブリッジ部１０７を介してログオフをバンドルＢに要求する（Ｓ７１８、Ｓ７１９）。続いて、ステップＳ７２０からＳ７２４は、図１５のステップＳ５１６からＳ５２０と同様である。ステップＳ７２４に続いて、バンドルＢは、ブリッジ部１０７を介してログオフの成否をバンドルＤに通知する（Ｓ７２５、Ｓ７２６）。バンドルＤは、操作パネルにログオフの結果を表示させる（Ｓ７２７）。
【００８２】
上述したように、本実施の形態における複合機１は、プログラム（バンドル）単位ではなく、プログラム実行環境単位で資源（他のプログラムの実行環境におけるバンドル等）の利用の許否を判定する。したがって、プログラム単位で資源に対するアクセス制御を行う場合に比べ、より簡便にプログラムのアクセス制御を実現することができる。
【００８３】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００８４】
【図１】本発明の実施の形態における複合機のプログラムの実行環境の基本構成例を説明するための第一の図である。
【図２】本発明の実施の形態における複合機のプログラムの実行環境の基本構成例を説明するための第二の図である。
【図３】追加バンドル管理テーブルの構成例を示す図である。
【図４】追加バンドルがインストールされる様子を示す図である。
【図５】追加バンドルのインストールによる追加バンドル管理テーブルの更新例を示す図である。
【図６】本発明の実施の形態における複合機のソフトウェア構成例を説明するための図である。
【図７】複合機におけるバンドルのインストール時の処理手順を説明するためのシーケンス図である。
【図８】本実施の形態におけるバンドルの構成例を示す図である。
【図９】バンドル情報の定義例を示す図である。
【図１０】追加バンドルのバンドルタイプに応じた追加バンドル管理テーブルの更新例を示す図である。
【図１１】バンドルのインストール後におけるバンドルの検査の処理手順を説明するための図である。
【図１２】バンドルによる他のプログラム実行環境の機能の利用の可否をブリッジ部が静的に判断する場合の処理手順を説明するためのシーケンス図である。
【図１３】バンドルによる他のプログラム実行環境の機能の利用の可否をブリッジ部が静的に判断する場合の処理手順を説明するためのシーケンス図である。
【図１４】バンドルによる他のプログラム実行環境の機能の利用の可否を利用許可情報に基づいて判定する場合の処理手順を説明するためのシーケンス図である。
【図１５】機能拡張前の機密文書印刷機能の処理手順を説明するためのシーケンス図である。
【図１６】追加バンドルが追加された場合の複合機の第一の構成例を示す図である。
【図１７】第一の機能拡張後の機密文書印刷機能の処理手順を説明するためのシーケンス図である。
【図１８】追加バンドルが追加された場合の複合機の第二の構成例を示す図である。
【図１９】第二の機能拡張後の機密文書印刷機能の処理手順を説明するためのシーケンス図である。
【符号の説明】
【００８５】
１          複合機
１１        プロッタエンジン
１２        スキャナエンジン
１０１      エンジン制御ボード
１０２      ＯＳ
１０３      ＪＶＭ
１０４      ＯＳＧｉプラットフォーム
１０５      バンドル
１０６      ネイティブコードサービス
１０７      ブリッジ部
１０８      バンドルインストーラ
１０９      バンドル検査部
１１０      電子署名検査部
１１１      追加バンドル検査部
１５１      静的バンドル管理テーブル
１５２      追加バンドル管理テーブル
【図１】
0004969480.tif 000002
【図２】
0004969480.tif 000003
【図３】
0004969480.tif 000004
【図４】
0004969480.tif 000005
【図５】
0004969480.tif 000006
【図６】
0004969480.tif 000007
【図７】
0004969480.tif 000008
【図８】
0004969480.tif 000009
【図９】
0004969480.tif 000010
【図１０】
0004969480.tif 000011
【図１１】
0004969480.tif 000012
【図１２】
0004969480.tif 000013
【図１３】
0004969480.tif 000014
【図１４】
0004969480.tif 000015
【図１５】
0004969480.tif 000016
【図１６】
0004969480.tif 000017
【図１７】
0004969480.tif 000018
【図１８】
0004969480.tif 000019
【図１９】
0004969480.tif 000020