(57)【要約】      （修正有）【課題】アーカイブ内の全てのファイルではなく、必要なファイルについてダイジェスト情報を算出し、ダイジェスト情報の算出時間を削減することができる情報処理装置、情報処理装置の制御方法、及びプログラムを提供する。【解決手段】改ざん検知を実施するタイミングによって、改ざん検知処理を切り替え、拡張アプリケーションの改ざん検知をアクセスするファイルごとに改ざん検知処理を行い、拡張アプリケーションパッケージへのアクセス種別によって改ざん検知の実行判定処理を切り替える。【選択図】図１３
2020016926.tif 000002
【特許請求の範囲】
【請求項１】
パッケージファイルにアーカイブされた複数のファイルのうち、拡張アプリケーションを実行するためにロードするファイルのダイジェスト情報を算出する算出手段と、
前記算出手段によって算出されたファイル個別のダイジェスト情報と、予め記憶部に記憶されたファイル個別のダイジェスト情報とを比較する比較手段と、
前記比較手段による比較した結果に基づきメッセージを通知する通知手段とを有し、
パッケージファイルにアーカイブされた複数のファイルのうち、前記算出手段は、前記ロードするファイル以外のファイルについて、ダイジェスト情報を算出しない
ことを特徴とする情報処理装置。
【請求項２】
さらに、前記情報処理装置の起動時に、前記パッケージファイルのダイジェスト情報を算出する算出手段を有し、
前記比較手段は、前記起動時に算出した前記パッケージファイルのダイジェスト情報と、予め記憶部に記憶されたパッケージファイルのダイジェスト情報とを比較し、前記通知手段は、前記比較手段による比較した結果に基づきメッセージを通知すること
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
さらに、前記パッケージファイルにアーカイブされているファイルを開く手段と、
前記ファイルのアクセスの種別によって、改ざん検知処理を実行するか否かを判定する判定手段とを有することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
さらに、前記パッケージファイルにアーカイブされているスクリプトをＶＭにロードした際、そのスクリプトをロード済みであることを記録する手段と、
前記パッケージファイルにアーカイブされているスクリプトをＶＭにロードする前に、そのスクリプトがロード済みかどうかを判定し、ロード済みの時に改ざんチェックを行わないようにする手段と、
を有することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
さらに、前記パッケージファイルにアーカイブされているファイルを読み込んだ際、読み込んだファイルのデータをバッファメモリに格納する手段と、
前記パッケージファイルにアーカイブされているファイルの改ざん検知処理を行った際に、そのファイルが改ざんチェック済みであることを記録する手段と、
前記パッケージファイルにアーカイブされているファイルをオープンする時、そのファイルのデータがバッファリングされ、かつ改ざんチェック済みである場合は、改ざん検知処理を行うことなく、前記ファイルをオープンする手段と、
を有することを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
さらに、前記比較手段による比較した結果に基づき、前記ファイルのオープン処理をさせないようにする手段を有することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記予め記憶部に記憶されたファイル個別のダイジェスト情報は、前記拡張アプリケーションのインストール時に算出されることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記比較手段による比較した結果、前記ファイル個別のダイジェスト情報と、前記予め記憶部に記憶されたファイル個別のダイジェスト情報が異なる場合、前記通知手段は、前記アーカイブされたファイルが改ざんされていることを通知することを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
パッケージファイルにアーカイブされた複数のファイルのうち、拡張アプリケーションを実行するためにロードするファイルのダイジェスト情報を算出する算出ステップと、
前記算出ステップによって算出されたファイル個別のダイジェスト情報と、予め記憶部に記憶されたファイル個別のダイジェスト情報とを比較する比較ステップと、
前記比較ステップによる比較した結果に基づきメッセージを通知する通知ステップとを有し、
パッケージファイルにアーカイブされた複数のファイルのうち、前記算出ステップは、前記ロードするファイル以外のファイルについて、ダイジェスト情報を算出しない
を備えることを特徴とする情報処理方法。
【請求項１０】
コンピュータを、請求項１乃至８のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及び、プログラムに関するものである。
【背景技術】
【０００２】
特許文献１では、プログラムの改ざんを検知する方法として、プログラムを構成するファイルのダイジェストを検査する方法が記載されている。また、改ざんチェックをデバイス起動時だけでなく、プログラム実行時に随時検査する（ランタイムの改ざんチェック）ことで、セキュリティをより向上させる方法が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−３３３９０２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１では、プログラムの改ざんを検知する際に、プログラムを構成する全てのファイルのダイジェストを検査するため、プログラムの実行には必要のないデータまでダイジェストを検査し、改ざんの検知処理に時間がかかってしまう。改ざん検知処理に時間がかかると、システム全体のパフォーマンスに影響する。
【課題を解決するための手段】
【０００５】
上記の課題を解決するために、本発明の一態様に係る情報処理装置は以下のような構成を備える。すなわち、パッケージファイルにアーカイブされた複数ファイルを個々にロードして、拡張アプリケーションを実行する手段と、前記ロードするアーカイブ内のファイル個別のダイジェストを算出する算出手段と、前記算出手段によって算出されたファイル個別のダイジェスト情報と、予め記憶部に記憶されたファイル個別のダイジェスト情報とを比較する比較手段と、前記比較手段による比較結果に基づきメッセージを通知する通知手段を有することを特徴とします。
【発明の効果】
【０００６】
本発明によれば、アーカイブ内の全てのファイルではなく、必要なファイルについてダイジェスト情報を算出するため、ダイジェスト情報の算出時間を削減することができる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態における情報処理装置３０１のハードウェア構成図である。
【図２】本発明の実施形態における情報処理装置３０１のソフトウェア構成図である。
【図３】本発明の実施形態におけるシステム構成図である。
【図４】本発明の実施形態におけるシーケンス図である。
【図５】本発明の実施形態における拡張アプリケーションをインストールするためのデータを含むアーカイブを示す図である。
【図６】本発明の実施形態におけるフローチャートである。
【図７】本発明の実施形態におけるインストール後の拡張アプリケーションパッケージとダイジェストファイルを示す図である。
【図８】本発明の実施形態におけるフローチャートである。
【図９】本発明の実施形態における操作部の表示例である。
【図１０】本発明の実施形態におけるソフトウェア構成図である。
【図１１】本発明の実施形態におけるシーケンス図である。
【図１２】本発明の実施形態における拡張アプリケーションの依存関係を示す図である。
【図１３】本発明の実施形態におけるフローチャートである。
【図１４】本発明の実施形態におけるバッファメモリの構成図である。
【図１５】本発明の実施形態におけるフローチャートである。
【図１６】本発明の実施形態におけるパッケージ内のファイル状態の構成図である。
【図１７】本発明の実施形態における拡張アプリケーションの改ざん検知時の操作部の表示例である。
【図１８】本発明の実施形態における拡張アプリケーションの改ざん状態情報の構成図である。
【発明を実施するための形態】
【０００８】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。
【０００９】
図１は、情報処理装置３０１（例えば画像形成装置）の主要部の構成の例を示すブロック図である。情報処理装置３０１はコントローラユニット１００を含み、コントローラユニット１００は、画像入力デバイスであるスキャナ１７０や画像出力デバイスであるプリンタ１９５と接続されるとともに、操作部１１２と接続される。コントローラユニット１００は、スキャナ１７０で読み取られた画像データをプリンタ１９５により印刷出力するコピー機能を実現するための制御を行う。
【００１０】
コントローラユニット１００は、ＣＰＵ１０１を有し、ＣＰＵ１０１は、ＲＯＭ１０３に格納されているブートプログラムによりオペレーションシステム（ＯＳ）を立ち上げる。ＣＰＵ１０１は、このＯＳ上で、ストレージ１０４に格納されているプログラムを実行し、これによって各種処理を実行する。このＣＰＵ１０１の作業領域としてはＲＡＭ１０２が用いられる。ＲＡＭ１０２は、作業領域を提供するとともに、画像データを一時記憶するための画像メモリ領域を提供する。ストレージ１０４は、プログラムや画像データを格納する。
【００１１】
ＣＰＵ１０１は、システムバス１０７を介して、ＲＯＭ１０３およびＲＡＭ１０２、操作部Ｉ／Ｆ（操作部インターフェース）１０６、ネットワークＩ／Ｆ１１０、ＵＳＢホストＩ／Ｆ１１３、画像バスＩ／Ｆ１０５と接続される。操作部Ｉ／Ｆ１０６は、タッチパネルを有する操作部１１２とのインターフェースであり、操作部１１２に表示すべき画像データを操作部１１２に対して出力する。また、操作部Ｉ／Ｆ１０６は、操作部１１２においてユーザーにより入力された情報をＣＰＵ１０１に送出する。ネットワークＩ／Ｆ１１０は、画像形成装置をＬＡＮに接続するためのインターフェースである。
【００１２】
ＵＳＢホストＩ／Ｆ１１３は、ＵＳＢストレージ１１４と通信するインターフェース部である。ＵＳＢホストＩ／Ｆ１１３は、ストレージ１０４に格納されているデータを、ＵＳＢストレージ１１４に記憶させるための出力部である。また、ＵＳＢホストＩ／Ｆ１１３は、ＵＳＢストレージ１１４に格納されているデータを入力し、ＣＰＵ１０１にそれを伝える。ＵＳＢストレージ１１４は、データを格納する外部記憶装置であり、ＵＳＢホストＩ／Ｆ１１３に対して着脱可能である。ＵＳＢホストＩ／Ｆ１１３には、ＵＳＢストレージ１１４を含む複数のＵＳＢデバイスが接続可能である。
【００１３】
画像バスＩ／Ｆ１０５は、システムバス１０７と、画像データを高速で転送する画像バス１０８とを接続し、データ形式を変換するためのバスブリッジである。画像バス１０８は、ＰＣＩバスまたはＩＥＥＥ１３９４等によって構成される。画像バス１０８上には、デバイスＩ／Ｆ１２０、スキャナ画像処理部１８０、プリンタ画像処理部１９０が設けられる。デバイスＩ／Ｆ１２０には、スキャナ２７０およびプリンタ１９５が接続され、デバイスＩ／Ｆ１２０は、画像データの同期系／非同期系の変換を行う。スキャナ画像処理部１８０は、入力画像データに対し補正、加工、編集を行う。プリンタ画像処理部１９０は、プリント出力画像データに対してプリンタ１９５に応じた補正、解像度変換などを行う。
【００１４】
図２は、画像形成装置の拡張アプリケーションの実行環境の例を示すブロック図である。ストレージ１０４に記憶されているプログラムを、ＣＰＵ１０１がＲＡＭ１０２にロードし、プログラムを実行することで図２の各モジュールは実現される。オペレーティングシステムであるＯＳ２０１上には、プリンタやＦＡＸ、スキャナと言った画像処理ユニットを制御するためのネイティブプログラム２１０が動作している。また、ＯＳ２０１上には、拡張アプリケーションの実行環境である仮想マシン（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ：ＶＭ）２３０が動作している。ＶＭ２３０は、拡張アプリケーションを制御するプログラムを理解し実行するモジュールである。拡張アプリケーションは、必ずＶＭ２３０上で動作する。ＶＭ２３０で動作するプログラムは、ＣＰＵ１０１で動作する命令とは異なり、ＶＭ２３０専用の命令で動作する。この命令をバイトコードと呼ぶ。一方でＣＰＵ専用命令をネイティブコードと呼ぶ。ＶＭがこのバイトコードを逐次解釈し処理することで、ＣＰＵ１０１上ではネイティブコードと、ＶＭのバイトコードが動作する。ＶＭには、バイトコードをそのまま逐次解釈処理するタイプと、バイトコードをネイティブコードに変換して実行するタイプがある。この実施例のＶＭ２３０は前者のタイプであるが、後者のタイプであってもよい。一般的にＣＰＵの種別が異なると、ＣＰＵで動作する命令に互換性が無い様に、ＶＭが異なるとＶＭで動作する命令も互換性が無い。またこの実施例のＶＭ２３０は、ＣＰＵ１０１上で動作するソフトウェアモジュールであるが、ハードウェアモジュールであってもよい。
【００１５】
ネイティブプログラム２１０内には、プリンタやＦＡＸ、スキャナと言った画像処理ユニットを制御するためのネイティブスレッド２１４と、仮想マシン２３０を動かすためのＶＭスレッド２１５がある。ＶＭスレッドはＶＭ２３０の数に対応する数存在する。ここでは、２１１、２１２，２１３の３つのスレッドが生成されている。
【００１６】
ＶＭシステムサービス２２０は、拡張アプリケーションから共通利用されるユーティリティライブラリである。拡張アプリケーション２０５からＶＭシステムサービス２２０の機能を呼び出すことにより、拡張アプリケーションを開発する手間を省く、または画像形成装置の各モジュールへアクセスすることができる。ＶＭシステムサービス２２０には、ＶＭとして最低限動作させる標準ＶＭシステムサービス２２１と、画像形成装置の各モジュールにアクセスや、ＯＳの機能を提供する拡張ＶＭシステムサービス２２２がある。標準ＶＭサービス２２１は、拡張アプリケーションをロードする機能も含む。ＶＭシステムサービス２２０は、ＶＭ２３０が拡張アプリケーション内のバイトコードで指示されているＡＰＩを実行することで、ＡＰＩに関連づけられているＶＭシステムサービス２２０が呼び出される。
【００１７】
ＶＭ２３０は、拡張アプリケーション２４０を実行する。ＶＭ２３０は、拡張アプリケーションのスレッド毎に生成される。この図では拡張アプリケーションＡ２４１で２つのスレッドを動かすためのＶＭ  Ａ−１  ２３１  と、ＶＭ  Ａ−２  ２３２、拡張アプリケーションＢ２４２で１つのスレッドを動かすためのＶＭ  Ｂ−１を生成している。
【００１８】
また、画像形成装置の操作部１１２に表示されるメインメニュー画面には、拡張アプリケーションごとのアイコンが表示される。このアイコンをユーザーが選択したことを、操作部１１２を通じて操作部Ｉ／Ｆ１０６が検知すると、操作部Ｉ／Ｆ１０６はその旨をＣＰＵ１０１に送信する。その旨を受け取ったＣＰＵ１０１はユーザーによって選択された拡張アプリケーションを起動する。
【００１９】
図３は、本実施例の画像形成装置を含む印刷システムの拡張アプリケーションインストール時の機器構成の例を示す図である。この印刷システムは画像形成装置３０１、イーサネット（登録商標）３０３、ホストＰＣ３０２によって構成される。
【００２０】
画像形成装置３０１は、イーサネット３０３経由で、拡張アプリケーションのインストール手段をホストＰＣ３０２に提供する。ホストＰＣ３０２は、拡張アプリケーションのデータを有しており、画像形成装置３０１が提供する拡張アプリケーションのインストール手段を用いて画像形成装置３０１に拡張アプリケーションをインストールする。
【００２１】
図４は、ホストＰＣ３０２が有する拡張アプリケーションのデータを、画像形成装置３０１にインストールする際のフローを示す図である。まずＳ４０１で、ホストＰＣ３０２は、画像形成装置３０１にインストールを行うため、認証要求を行う。この時、認証に必要な情報（ユーザＩＤ，パスワード）を画像形成装置３０１に通知する。Ｓ４０２で認証要求を受けた画像形成装置３０１は、認証情報を確認し問題なければ認証許可を返す。この時、認証許可を示す文字列（Ｔｏｋｅｎ）を一緒に返す。Ｓ４０３で、認証許可を受けたホストＰＣは、インストール開始要求を画像形成装置３０１に通知する。この時、ホストＰＣ３０２が有する拡張アプリケーションのデータとＳ４０２で取得したＴｏｋｅｎを通知する。Ｓ４０４で、インストール開始要求を受けた画像形成装置３０１は、Ｔｏｋｅｎが正しいことを確認し、問題なければ拡張アプリケーションのインストールを行う。Ｓ４０５でホストＰＣ３０２は、インストール状況取得要求を画像形成装置３０１に通知する。この時、Ｓ４０２で取得したＴｏｋｅｎを通知する。Ｓ４０６で、インストール状況取得要求を受けた画像形成装置３０１は、Ｔｏｋｅｎが正しいことを確認し、問題なければＳ４０４のインストール中であるため、インストール中であることを示す情報を返す。Ｓ４０７で、ホストＰＣ３０２は、再度インストール状況取得要求を画像形成装置に通知する。Ｓ４０８で、インストール状況取得要求を受けた画像形成装置３０１は、Ｔｏｋｅｎが正しいことを確認し、問題なければＳ４０４のインストールが完了しているため、インストール完了であることを示す情報を返す。
【００２２】
以上の処理により、ホストＰＣ３０２が有する拡張アプリケーションのデータを、画像形成装置３０１にインストールする。
【００２３】
図５は、拡張アプリケーションをインストールするためのデータを含んだアーカイブを示す図である。５０１はアーカイブである。このアーカイブは、拡張アプリケーションを構成するすべてのデータを１つに纏めたデータである。拡張アプリケーションを構成するファイルは、大きく２つに分けることができる。１つは拡張アプリケーションの動作をプログラム言語で記述したスクリプト（５０２〜５０４）。もう一つは、アプリケーションで利用する画像データや表示メッセージなどを格納するリソースファイルである（５０５〜５０６）。
【００２４】
このアーカイブを、後述するインストール処理によってインストールすることでスクリプトのバイトコード化を行い、拡張アプリケーション実行時のバイトコード化処理時間を短縮する。
【００２５】
図６は、図５で示したアーカイブ５０１をインストールし、拡張アプリケーションを実行可能なパッケージを生成する処理を示す図である。この処理では、アーカイブ５０１から、拡張アプリケーションを実行可能なパッケージ７０１と、ダイジェストファイル７３１を生成する。拡張アプリケーションを実行可能なパッケージ７０１、ダイジェストファイル７３１については後述する。この処理は、ＲＡＭ１０２に読み込まれた命令に従って、ＣＰＵ１０１上で実行される。
【００２６】
まずＳ６０１において、アーカイブ内からパッケージに書き込み処理を行っていないファイルがないか確認する。アーカイブ内に、パッケージへの書き込み処理が終わっていないファイルがあればＳ６０２に進み、すべてのファイルが書き込み処理済みであればＳ６０９に進む。
【００２７】
Ｓ６０２において、アーカイブ内から書き込み処理が終わっていないファイルを読み込む。Ｓ６０３において、読み込んだファイルの種別を判定し、スクリプトファイル（Ｓ１４０２〜Ｓ１４０４）であればＳ６０４に進み、リソースファイル（Ｓ１４０５〜Ｓ１４０６）であれば、Ｓ６０６に進む。Ｓ６０４において、読み込んだスクリプトファイルをパッケージに書き込む。Ｓ６０５において、読み込んだスクリプトファイルをＶＭのバージョンにあったバイトコードに変換するバイトコード化処理を実行する。Ｓ６０６において、データをパッケージに書き込む。Ｓ６０７において、パッケージに書き込んだデータのダイジェストを計算し、Ｓ６０８に進む。Ｓ６０８において、計算したダイジェストをダイジェストファイル７３１に書き込み、Ｓ６０１に戻る。
【００２８】
Ｓ６０９において、パッケージに書き込んだ全てのデータのダイジェストを計算する。次にＳ６１０において、計算したダイジェストをダイジェストファイル７３１に書き込み処理を終了する。
【００２９】
この処理によって、インストール時に拡張アプリケーションの実行に必要なすべてのスクリプトファイルがバイトコード化され、１つのパッケージファイル内に保持される。
【００３０】
図７は、アーカイブ５０１をもとに図６で示すインストール処理によって生成した拡張アプリケーションパッケージ７０１とダイジェストファイル７３１を示す図である。図７の拡張アプリケーションパッケージ７０１とダイジェストファイル７３１は、記憶部であるＲＯＭ１０３またはストレージ１０４に記憶される。
【００３１】
拡張アプリケーション７０１は、拡張アプリケーションを実行するために必要なすべてのデータを保持する。保持するデータには、バイトコード化前のスクリプト（７０２、７０４、７０６、７０８，７１０，７１２，７１４，７１６，７１８）を含む。さらに、保持するデータには、バイトコード化後のスクリプト（７０３、７０５、７０７，７０９，７１１，７１３，７１５，７１７，７１９）と、リソース（７２０、７２１）を含む。拡張アプリケーションを実行するために必要なすべてのデータを１つのパッケージにすることで、ファイル検索時に発生するディスクアクセスを低減し、ファイルのバッファリングの効率を向上させることができる。ダイジェストファイル７３１は、拡張アプリケーションパッケージ７０１のダイジェストを保持する。保持するダイジェストは、拡張アプリケーションパッケージ７０１に含む各ファイルに対応するダイジェスト（７３２〜７５１）と、拡張アプリケーションパッケージ７０１全体のダイジェスト７５２を含む。このダイジェストファイル７３１に保持する各ダイジェストを使って、後述する改ざん検知方法によって、アプリケーションの改ざんを検知する。この拡張アプリケーションパッケージ７０１、ダイジェストファイル７３１は、インストールした拡張アプリケーションごとに生成される。
【００３２】
図８は、画像形成装置３０１起動時の拡張アプリケーションの改ざん検知処理を示した図である。この処理は、ＲＡＭ１０２に読み込まれた命令に従って、ＣＰＵ１０１上で実行される。まず、Ｓ８０１において、改ざん検知処理を行っていない拡張アプリケーションの有無を確認する。改ざん検知処理を行っていないアプリがあればＳ８０２に進み、なければ処理を終了する。Ｓ８０２では、拡張アプリケーションパッケージ７０１全体のダイジェストを計算する。Ｓ８０３では、Ｓ８０２で計算したダイジェストと、ダイジェストファイル７３１に格納してある拡張アプリケーションパッケージ全体のダイジェスト７３０の比較を行う。差異が無ければＳ８０１に進み、差異があればＳ８０４に進む。Ｓ８０４では、ダイジェストに差異が見つかったということは、つまり改ざんされているということなので、後述する改ざん状態情報１８００に改ざん「有り」を記録する。そして、Ｓ８０１に進む。この改ざん情報は、後述する処理で利用する。この起動時の改ざん検知処理では、拡張アプリケーションパッケージ７０１全体のダイジェストで比較するため、パッケージ内のどこか一か所でも改ざんがあれば、検知することが可能である。
【００３３】
図９は、画像形成装置３０１が起動した後の操作部１１２の表示例である。操作部１１２には、画像形成装置３０１が有する機能を示すアイコンが表示される。ここで、アイコン９０１が拡張アプリケーションの機能を示すアイコンである。このアイコンは、後述する拡張アプリケーションのアイコン登録処理によって、表示される。
【００３４】
図１０は、本実施例の画像形成装置のＣＰＵ１０１上で動作するソフトウェアモジュールの構成図である。サーブレットサービス１００４は、ネットワークＩ／Ｆ１１０を介してＨＴＴＰアクセスされた際に、アクセスされたＵＲＬによってモジュール（アプリケーション管理部１００２か標準機能制御部１００１）に処理を振り分けるモジュールである。ＵＩ制御部１００３は、操作部１１２に画面を表示し、ユーザーからの操作を受け付けて、その操作情報を適切なモジュール（アプリケーション管理部１００２か標準機能制御部１００１）に通知を行うモジュールである。アプリケーション管理部１００２は、インストールされている拡張アプリケーションのインストールや起動等の管理を行うモジュールである。アプリケーション実行制御部１００５は、アプリケーション管理部１００２で起動されたアプリケーションの実行制御を行うモジュールである。具体的には、ＶＭスレッド２１５、ＶＭシステムサービス２２０、ＶＭ２３０、拡張アプリケーション２４０を制御する。ストレージ制御部１００６は画像成形装置の設定情報を記録管理するモジュールである。各モジュールは、ストレージ制御部１００６にアクセスし、設定値の参照、設定を行う。標準機能制御部１００１は、画像形成装置の標準機能であるコピーやＦＡＸの制御や、その他の画像成形装置に必要な制御（例えばＵＳＢホストパスＩ／Ｆ１１３の制御）を行うモジュールである。
【００３５】
図１１は、起動時の拡張アプリケーションのアイコン登録処理時のアプリケーション実行制御部１００５の処理を示す図である。この処理は、ＲＡＭ１０２に読み込まれた命令に従って、ＣＰＵ１０１上で実行される。
【００３６】
拡張アプリケーションのアイコン情報は拡張アプリケーションが保持しており、そのアイコン情報を問い合わせるために、アプリケーション実行制御部は拡張アプリケーションのアイコン情報問い合わせ用の処理を実行する。この実行の前に、アプリケーション実行制御部は、図８の起動時改ざん検知処理で、対象のアプリケーションに改ざんが検知されていたかどうかを確認する（Ｓ１１２０）。改ざんが検知されていなければ、拡張アプリケーションを実行するために、ＶＭを起動し、そのＶＭに対し、インストールされている拡張アプリケーションのアイコン情報問い合わせ用スクリプトの実行要求を行う（Ｓ１１００）。
【００３７】
Ｓ１１０１において、ＶＭは指定されたスクリプトを読み込むため、標準ＶＭシステムサービスにファイルオープン要求を行う。Ｓ１１０２において、標準ＶＭシステムサービスはファイルオープン要求を受け、指定されたファイルを拡張アプリケーションパッケージ７０１内から検索してオープンする。Ｓ１１０３において、ファイルオープンが失敗している場合はロード処理を失敗させる。ファイルオープンが成功している場合、ＶＭはオープンされたファイルからスクリプトに記録された情報をロードするため、標準ＶＭシステムサービスにファイル読み込み要求を行う。Ｓ１１０４において、標準ＶＭシステムサービスはファイル読み込み要求を受け、指定されたファイルハンドルからデータを読み込む。Ｓ１１０３は、標準ＶＭシステムサービスの読み込み終了を待ち、ロード処理を行う。ロード処理後、スクリプトをロード済みにセットする。Ｓ１１０５において、ＶＭはロードしたスクリプトを実行する。このスクリプト内に、アイコンを登録するための処理が記述されており、ＶＭでそのスクリプトを実行することで、アイコンが登録される。
【００３８】
図１２は、拡張アプリケーションのスクリプトの依存関係を示す図である。
【００３９】
一般的に、ＰＣでアプリケーションを実行する場合、実行可能ファイル全体を読み込み、メモリに展開してから実行する。一方で、画像形成装置３０１においてはＰＣの様にメモリリソースが潤沢ではないため、拡張アプリケーションを機能ごとの複数のスクリプトに分割して構成し、拡張アプリケーションの処理に必要な機能を持つスクリプトを随時ロードし実行する。このような構成にすることで、拡張アプリケーションを実行するために必要なメモリリソースの削減を行っている。
【００４０】
図１２は、Ｍａｉｎスクリプトをロード・実行すると、ｓｕｂ１、ｓｕｂ２、ｓｕｂ３のスクリプトがロード・実行される。さらにｓｕｂ４、ｓｕｂ５、ｓｕｂ６、ｓｕｂ３、ｓｕｂ１、ｓｕｂ７のスクリプトがロード・実行されることを示している。スクリプトの依存関係は拡張アプリケーションごとに異なり、この例のｓｕｂ１、ｓｕｂ３の様に、同じスクリプトが複数ロードされることもある。また、同じ拡張アプリケーションでも、処理する内容によって、ロードするスクリプトは異なる。なお、サブスクリプトのロードは、必要なときに随時行われるため、アプリケーションの起動タイミングと、サブスクリプトのロードまでに時間が開くこともある。
【００４１】
このように、メモリリソースの少ない画像形成装置３０１では、実行可能ファイル全体をメモリに展開するのではなく、必要な時にサブスクリプトを随時ロードする。そのため、拡張アプリケーション起動時にだけ改ざん検知処理すると、拡張アプリケーションを起動してからサブスクリプトをロードするまでの間に改ざんされた場合に、検知できなくなってしまう。そのため、改ざん検知処理は、スクリプトロード時に常に行う必要がある。一方で、スクリプトはアプリケーションパッケージ７０１に格納している。このアプリケーションパッケージ７０１の改ざんを検知するには、アプリケーションパッケージ７０１全体のダイジェストを計算する必要がある。この計算は、計算対象のサイズが大きい程計算時間がかかるため、スクリプトロードの度に、アプリケーションパッケージ７０１全体のダイジェストを計算すると処理時間がかかってしまう。図１１で示したファイルオープン処理Ｓ１１０２では、処理時間を削減可能な検知処理を行う。具体的な処理内容については後述する。
【００４２】
図１３は、図１１で示したファイルオープン処理Ｓ１１０２の処理内容を示す図である。この処理は、ＲＡＭ１０２に読み込まれた命令に従って、ＣＰＵ１０１上で実行される。
【００４３】
まずＳ１３０１において、ファイルオープンがスクリプトロードのものか、あるいはリソースファイルのアクセスかを判定する。ファイルのオープンにはスクリプトをＶＭにロードして実行するためのオープンと、単なるデータとして使用するためのオープンがある。これによって処理を変える。ロードの場合Ｓ１３０３に進み、非ロードのアクセスの場合、Ｓ１３０２に進む。Ｓ１３０２では、オープンするファイルの全データが後述するバッファメモリ１４００内にあり、かつ後述するパッケージ内ファイル状態情報１６００が改ざんチェック済みかどうかを判定する。条件を満たす場合、Ｓ１３０８に進み、満たさない場合Ｓ１３０４に進む。Ｓ１３０３では、ロードするスクリプトが既にロード済みかどうかを判定し、ロード済みの場合は処理を終了し、ロード済みでない場合は、Ｓ１３０２に進む。Ｓ１３０４では、指定されたファイルを拡張アプリケーションパッケージ内から検索し、オープンする。続いてＳ１３０５では、アクセスするファイル個別のダイジェスト情報（ダイジェスト値）を算出する。続いてＳ１３０６ではアクセスするファイルに対応する個別ダイジェストをダイジェストファイル７３１から取得し、Ｓ１３０５で算出したダイジェスト情報と比較する。比較した結果、一致した場合はＳ１３０９に進み、不一致だった場合はＳ１３０７に進む。Ｓ１３０７では拡張アプリケーションパッケージ７０１は、改ざんされたものとし、後述する改ざん状態情報１８００に改ざん「有り」を記録し、ファイルオープン処理を失敗させ処理を終了する。Ｓ１３０９では、パッケージ内ファイル状態情報１６００をチェック済みにセットし、処理を終了する。Ｓ１３０８では、ファイルにアクセスするためのファイルオープンを行う。
【００４４】
この処理により、ランタイムのアプリケーションの改ざん検知では、アプリケーションパッケージに含まれるアプリケーションの実行に必要なデータのダイジェスト計算だけ行い、アプリケーションの実行に不要なデータのダイジェスト計算を省くことができる。また、バッファ上に存在する場合や、ロード済みの場合のダイジェスト計算を省くことができる。
【００４５】
例えば、アプリケーションのスクリプト構成が図１２で示した関係を持っている場合、初めにＭａｉｎスクリプトがこの処理によりオープンされ、処理Ｓ１１０３でロードされ、処理Ｓ１１０５で実行される。そして、そのＭａｉｎスクリプトの実行過程でｓｕｂ１スクリプトがオープン、ロード、実行される。さらにｓｕｂ１スクリプトの実行過程でｓｕｂ４，ｓｕｂ５，ｓｕｂ６がオープン、ロード、実行される。次にｓｕｂ２スクリプトがオープン、ロード、実行される。そのｓｕｂ２実行過程でｓｕｂ６がオープンされるが、ｓｕｂ６はすでにロード済みであるため、オープン処理で改ざん検知に必要なダイジェスト計算を省くことが出来る。
【００４６】
アプリケーションのスクリプト構成は、アプリケーションごとに異なるが、一般的にスクリプトは機能ごとに細かく分割・作成される。また、機能によって実行するスクリプトが異なる。例えば、図１１で説明しているアイコン情報問い合わせ機能と、アイコンを押した後にアプリを動かす機能とでは、実行されるスクリプトは異なる。従来技術のようにアプリケーションパッケージ全体に対してダイジェスト計算すると、実際には必要のないファイルに対してまでダイジェストを計算することになる。本実施例では、ロードするスクリプトごとにダイジェスト計算を行うことで、必要最低限の処理時間で改ざん検知を実現できる。すなわち、ロードするファイル以外のダイジェスト値は計算しない。
【００４７】
図１４は、アクセスした拡張アプリケーションパッケージの内容をバッファリングしておくバッファメモリの内容を示す図である。
【００４８】
拡張アプリケーションパッケージは、ストレージ１０４に保持されている。ストレージはＲＡＭに比べるとアクセスに時間がかかるため、一度アクセスしたデータをＲＡＭ内に保持しておき、次に同じデータをアクセスする際に、ＲＡＭ内に保持していたデータを利用することでアクセスにかかる時間を短縮する。これをバッファリングと呼ぶ。
【００４９】
バッファメモリ１４００は、拡張アプリケーションパッケージのオフセットを記録するオフセット領域と、拡張アプリケーションパッケージの内容を保持するデータ領域で構成する。オフセットは、拡張アプリケーションパッケージの先頭からのオフセットを記録する。オフセットが０ｘｆｆｆｆｆｆｆｆのものは、バッファを未使用であることを示す。ここでは、オフセット領域とデータ領域のペアをバッファブロックと呼ぶ。
【００５０】
図１５は、図１１で示したファイル読み込み処理Ｓ１１０４の処理内容を示す図である。この処理は、ＲＡＭ１０２に読み込まれた命令に従って、ＣＰＵ１０１上で実行される。
【００５１】
まずＳ１５００において、読み込むファイルが拡張アプリケーションパッケージ内のどの位置にあるのかを検索する。次にＳ１５０１において、その位置を含むデータがバッファリングされているかどうか、バッファメモリ１４００から検索する。バッファリングされている場合Ｓ１５０６に進み、バッファリングされていない場合Ｓ１５０２に進む。Ｓ１５０２では、ファイルから読み込むデータを保持しておくバッファブロックを探すため、バッファメモリ１４００から未使用のバッファブロックを検索する。Ｓ１５０３では、未使用のバッファブロックが見つかったかどうかを判定し、未使用のバッファブロックがない場合は、Ｓ１５０４に進み、未使用のバッファブロックがある場合はＳ１５０５に進む。Ｓ１５０４では、未使用のバッファブロックがないため、バッファブロックの中から１つのバッファブロックを選択し、未使用状態に解放する。また、後述するパッケージ内ファイル状態情報１６００から、このバッファブロックが保持していたファイルの改ざんチェック済み状態を「未」にクリアする。Ｓ１５０５では、拡張アプリケーションパッケージのデータを、選択された未使用バッファブロックに読み込む。Ｓ１５０６では、読み込み対象のファイルのデータを保持するバッファブロックからデータを読み込む。
【００５２】
このファイル読み込み処理によって、拡張アプリケーションパッケージ内のデータがバッファリングされ、アクセス頻度の高いファイルの読み込み時間の短縮が可能になる。
【００５３】
図１６は、拡張アプリケーションパッケージ内のファイルの状態を保持するパッケージ内ファイル状態情報１６００を示す図である。
【００５４】
パッケージ内ファイル状態情報１６００は、ファイルの拡張アプリケーションパッケージ内のオフセット位置と、サイズの情報と、そのファイルが改ざんチェック済みかどうか、ファイルパスの４つの情報によって構成される。この４つの情報は、拡張アプリケーションパッケージ内の全ファイルごとに存在する。デバイス起動時にこの情報は構成され、改ざんチェック済み情報は、全て「未」にクリアされる。
【００５５】
図１７は、改ざんを検知したことを通知するために、操作部１１２に改ざん検知情報を表示した例である。本実施形態における画像形成装置３０１は、画面下部に割り当てられたステータス行に、アプリケーションの改ざんが検知された旨のメッセージを表示する。
【００５６】
図１８は、拡張アプリケーションが改ざんされているかの状態を表す改ざん状態情報１８００を示す図である。改ざん状態情報１８００は、拡張アプリケーションを識別するＩＤと、改ざんを検知したかどうかを示す情報とで構成される。
【００５７】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2020016926.tif 000003
【図２】
2020016926.tif 000004
【図３】
2020016926.tif 000005
【図４】
2020016926.tif 000006
【図５】
2020016926.tif 000007
【図６】
2020016926.tif 000008
【図７】
2020016926.tif 000009
【図８】
2020016926.tif 000010
【図９】
2020016926.tif 000011
【図１０】
2020016926.tif 000012
【図１１】
2020016926.tif 000013
【図１２】
2020016926.tif 000014
【図１３】
2020016926.tif 000015
【図１４】
2020016926.tif 000016
【図１５】
2020016926.tif 000017
【図１６】
2020016926.tif 000018
【図１７】
2020016926.tif 000019
【図１８】
2020016926.tif 000020