(57)【要約】【課題】プログラムの改ざんがあっても、できる限り情報処理装置の利便性を損なわない。【解決手段】記録手段に記録されているプログラムをＣＰＵ１０１が実行する複合機１００は、複合機１００のデータ通信を管理する通信管理手段２０８と、Ｊａｖａプログラム２１４の改ざんを検知するＪａｖａプログラム改ざん検知処理手段２０６と、を有する。通信管理手段２０８は、Ｊａｖａプログラム２１４の改ざんが検知された場合、ユーザの設定に従って、複合機１００の一部の機能の実行を制限し、他の一部の機能の実行を許可する縮退動作を行う。【選択図】図２
2019212114.tif 000002
【特許請求の範囲】
【請求項１】
記録手段に記録されているプログラムをプロセッサが実行する情報処理装置であって、
前記情報処理装置のデータ通信を管理する通信管理手段と、
前記プログラムの改ざんを検知する検知手段と、
前記検知手段により前記プログラムの改ざんが検知された場合、ユーザの設定に従って、前記情報処理装置の一部の機能の実行を制限し、他の一部の機能の実行を許可する縮退動作を行う制御を行う制御手段と、
を有することを特徴とする情報処理装置。
【請求項２】
前記検知手段は、改ざんを検知したプログラムのリストを生成し、
前記通信管理手段は、前記リストに含まれるプログラムの実行によるデータ送信を禁止する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記記録手段は、前記プログラムの改ざんが検知された場合においてデータ通信を許可または禁止する範囲についての縮退設定データを保持し、
前記管理手段は、前記縮退設定データおよび前記リストに基づいて、プログラムによるデータ通信を許可または禁止する、
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記管理手段は、
前記記録手段が、改ざん検知時にすべてのデータ通信を禁止する前記縮退設定データを保持する場合、改ざん検知時には、すべてのデータ通信を禁止し、
前記記録手段が、改ざんを検知したプログラムによるデータ通信を禁止する前記縮退設定データを保持する場合、改ざんが検知されたプログラムによるデータ通信を禁止し、改ざんが検知されなかった他のプログラムによるデータ通信を許可する、
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記情報処理装置は、受信した画像データを処理する装置であり、
前記管理手段は、データ通信を禁止する前記プログラムについてのデータ通信であっても、前記画像データを受信する場合にはデータ通信を許可する、
ことを特徴とする請求項１から４のいずれか一項記載の情報処理装置。
【請求項６】
前記検知手段により前記プログラムの改ざんが検知された場合、少なくとも改ざんが検知された前記プログラムについてのログを前記記録手段に記録するログ処理手段、を有する、
ことを特徴とする請求項１から５のいずれか一項記載の情報処理装置。
【請求項７】
前記記録手段は、プラグインアプリケーションプログラムを保持し、
前記通信管理手段は、前記プラグインアプリケーションプログラムについての改ざんが前記検知手段により検知された場合、少なくとも改ざんが検知された前記プラグインアプリケーションプログラムによるデータ送信を禁止する、
ことを特徴とする請求項１から６のいずれか一項記載の情報処理装置。
【請求項８】
記録手段に記録されているプログラムをプロセッサが実行する情報処理装置の制御方法であって、
前記プログラムの実行によるデータ通信を管理する通信管理工程と、
前記プログラムの改ざんを検知する検知工程と、
前記検知工程により前記プログラムの改ざんが検知された場合、ユーザの設定に従って、前記情報処理装置の一部の機能の実行を制限し、他の一部の機能の実行を許可する縮退動作を行う制御を行う制御工程と、
を有することを特徴とする情報処理装置の制御方法。
【請求項９】
記録手段に記録されているプログラムをプロセッサが実行する情報処理装置の制御方法をコンピュータに実行させるプログラムであって、
前記情報処理装置の制御方法は、
前記プログラムの実行によるデータ通信を管理する通信管理工程と、
前記プログラムの改ざんを検知する検知工程と、
前記検知工程により前記プログラムの改ざんが検知された場合、ユーザの設定に従って、前記情報処理装置の一部の機能の実行を制限し、他の一部の機能の実行を許可する縮退動作を行う制御を行う制御工程と、
を有することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法およびプログラムに関する。
【背景技術】
【０００２】
情報処理装置では、記録部に記録されているプログラムをＣＰＵなどのプロセッサが実行することにより、各種の情報を処理する。このような装置には、たとえば画像データを処理する画像処理装置がある。ところで、情報処理装置では、プログラムの脆弱性をついて、プログラムを改ざんし、装置を悪用する攻撃が問題となっている。そのような攻撃への対策として、耐タンパーモジュールを用いてプログラムのハッシュ値を計算して保存しておき、起動するたびにプログラムのハッシュ値を再計算して検証を行うことで、プログラムの改ざん検知することができる。そして、特許文献１では、プログラムの改ざんを検知した場合に、改ざんされたプログラムを起動しない。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−３０１４２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１の場合、ユーザは、改ざんされたプログラムを全く利用できなくなる。このように情報処理装置では、プログラムの改ざんがあったとしても、できる限り利便性を損なわないようにすることが求められている。
【課題を解決するための手段】
【０００５】
本発明に係る情報処理装置は、記録手段に記録されているプログラムをプロセッサが実行する情報処理装置であって、前記情報処理装置のデータ通信を管理する通信管理手段と、前記プログラムの改ざんを検知する検知手段と、前記検知手段により前記プログラムの改ざんが検知された場合、ユーザの設定に従って、前記情報処理装置の一部の機能の実行を制限し、他の一部の機能の実行を許可する縮退動作を行う制御を行う制御手段と、を有する。
【発明の効果】
【０００６】
本発明では、プログラムの改ざんがあったとしても、できる限り情報処理装置の利便性を損なわないようにできる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態に係る複合機のハードウェア構成を説明するブロック図である。
【図２】図１の複合機の起動状態におけるソフトウェアモジュールを説明するブロック図である。
【図３】図２の縮退設定データの設定値を選択するための表示画面の一例である。
【図４】図２の縮退設定データの設定値の一例である。
【図５】図２の改ざんプログラムリストの一例のデータ構造を説明する図である。
【図６】図２の起動状態を生成するための、複合機の基本的な起動処理の模式的な説明図である。
【図７】本実施形態での複合機の起動処理を示すフローチャートである。
【図８】通信管理部が、Ｊａｖａ（登録商標）プログラムからネットワーク処理依頼を受け付けた場合の処理を示すフローチャートである。
【図９】通信管理部が、ネットワークから、Ｊａｖａプログラムで処理するデータを受信した場合の処理を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、本発明の実施形態について図面を参照しながら詳細に説明する。しかしながら、以下の実施形態に記載されている構成はあくまで例示に過ぎず、本発明の範囲は実施形態に記載されている構成によって限定されることはない。
【０００９】
＜＜ハードウェア構成＞＞
図１は、本発明の実施形態に係る複合機１００のハードウェア構成を説明するブロック図である。図１の複合機（デジタル複合機／ＭＦＰ／Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）１００は、情報処理装置の一例である。複合機１００は、たとえば受信した画像データを処理する情報処理装置である。複合機１００は、ＣＰＵ１０１、ＲＯＭ１０２、ＲＡＭ１０３、ＨＤＤ１０４、ネットワークＩ／Ｆ制御部１０５、スキャナＩ／Ｆ制御部１０６、プリンタＩ／Ｆ制御部１０７、およびこれらを相互に接続するバス１０９、を有する。バス１０９には、さらに、パネル制御部１０８、Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ１１４、フラッシュメモリ１１７、ＬＥＤ１１８、が接続される。バス１０９を通じて、ＣＰＵ１０１の制御信号や各装置間のデータ信号が送受される。ＣＰＵ１０１は、複合機１００のソフトウェアプログラムを実行し、装置全体を制御する。ＲＯＭ１０２は、リードオンリーメモリであり、複合機１００のＢＩＯＳ２１０プログラム、固定パラメータなどを格納する。ＲＯＭ１０２は、さらに、後述するローダ２１１のプログラム、カーネル２１２のプログラム、Ｎａｔｉｖｅプログラム２１３が改ざんされた場合にそれらのソフトウェアを復旧させるための実行可能形式のプログラムであるマスタデータを格納する。フラッシュメモリ１１７は、不揮発性の半導体メモリであり、複合機１００のローダ２１１のプログラム、カーネル２１２のプログラム、Ｎａｔｉｖｅプログラム２１３、を格納する。ＲＡＭ１０３は、ランダムアクセスメモリであり、ＣＰＵ１０１が実行しているプログラムやデータを一時的に格納する。ＨＤＤ１０４は、ハードディスクドライブであり、後述する後入れ可能なプラグインアプリケーションプログラムとしてのＪａｖａプログラム２１４などの一部のプログラム、各種データを格納する。
【００１０】
ここで、Ｎａｔｉｖｅプログラムとは、複合機１００の出荷時から予め複合機１００にインストールされているプログラムである。また、Ｊａｖａプログラムは、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）上に構築されるＪａｖａ実行基盤上で動作するプログラムである。Ｊａｖａプログラムは、例えば、ユーザが任意で複合機１００にインストールする拡張プログラム（プラグインアプリケーションプログラム）である。
【００１１】
ネットワークＩ／Ｆ制御部１０５は、ネットワーク１１０とのデータの送受信を制御する。ネットワークＩ／Ｆ制御部１０５は、複合機１００で通信するすべてのデータを送受する。なお、ネットワークＩ／Ｆ制御部１０５は、無線通信機能などを備えてもよい。スキャナＩ／Ｆ制御部１０６は、スキャナ１１１による原稿の読み取り制御する。プリンタＩ／Ｆ制御部１０７は、プリンタ１１２による印刷処理などを制御する。パネル制御部１０８は、タッチパネル式の操作パネル１１３を制御し、各種情報の表示、使用者からの指示入力を制御する。ＬＥＤ１１８は、必要に応じて点灯し、ソフトウェアやハードウェアの異常を外部に伝えるために利用される。Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ１１４は、ＣＰＵ１１５、ＲＡＭ１１６、ＲＯＭ１１９、を有する。ＣＰＵ１１５は、Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ１１４のソフトウェアプログラムを実行し、複合機１００の一部の制御を実行する。ＲＡＭ１１６は、ランダムアクセスメモリであり、ＣＰＵ１１５が複合機１００を制御する際にプログラムやデータを一時的に格納する。ＲＯＭ１１９は、リードオンリーメモリであり、ＣＰＵ１１５が複合機１００を制御するためのプログラムやデータを保持する。このような複合機１００では、ＣＰＵ１１５がＲＯＭ１１９に記録されているプログラムを実行し、ＣＰＵ１０１がＲＯＭ１０２、フラッシュメモリ１１７、ＨＤＤ１０４に記録されているプログラムを実行する。これにより、複合機１００には、必要とされる機能が実現される。
【００１２】
＜＜ソフトウェア構成＞＞
図２は、図１の複合機１００の起動状態におけるソフトウェアモジュールを説明するブロック図である。図１のＣＰＵ１１５が各々のプログラムを実行することにより、図２のソフトウェアモジュールが実現される。なお、ここで、プログラムとは、ＣＰＵ１０１に処理を実行させるためのものであればよい。プログラムは、その実行により実現される機能ごとの複数のプログラムで構成されてよい。プログラムの記述形式は限定されない。プログラムは、たとえば、処理シーケンスのコードを実行順に記述したものであっても、高級言語で記述したものであってもよい。図２の複合機１００は、ソフトウェアモジュールとして、通信管理部２０８、ＵＩ制御部２０３、ブートプログラム２０９、ＢＩＯＳ２１０、ローダ２１１、カーネル２１２、Ｎａｔｉｖｅプログラム２１３、Ｊａｖａプログラム２１４、を有する。また、図２には、改ざんプログラムリスト２１５、縮退設定データ２１６、ログデータ２１８、が図示されている。通信管理部２０８は、ネットワーク１１０に接続されているネットワークＩ／Ｆ制御部１０５を制御する。通信管理部２０８は、複合機１００が外部と送受するすべてのデータを管理する。ＵＩ制御部２０３は、パネル制御部１０８を介して操作パネル１１３への入力を受け取り、入力に応じた処理や操作パネル１１３への画面出力を行う。
【００１３】
ブートプログラム２０９は、複合機１００の電源を入れると最初に実行されるプログラムであり、Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ１１４のＣＰＵ１１５が実行するプログラムである。ブートプログラム２０９は、複合機１００の起動に関わる処理を行う。また、ブートプログラム２０９は、ＢＩＯＳ２１０の改ざん検知を行うＢＩＯＳ改ざん検知処理部２０１、を有する。ＢＩＯＳ改ざん検知処理部２０１は、ブートプログラム２０９によりＢＩＯＳ２１０のプログラムをロードする前に、ＢＩＯＳ２１０のプログラムの改ざんを検知する。ＢＩＯＳ２１０は、起動時にブートプログラム２０９の後にＣＰＵ１０１により実行されるプログラムである。ＢＩＯＳ２１０は、複合機１００の起動に関わる処理を行う。また、ＢＩＯＳ２１０は、ローダ２１１の改ざん検知を行うローダ改ざん検知処理部２０２、を有する。ローダ改ざん検知処理部２０２は、ＢＩＯＳ２１０によりローダ２１１のプログラムをロードする前に、ローダ２１１のプログラムの改ざんを検知する。ローダ２１１は、起動時にＢＩＯＳ２１０の後にＣＰＵ１０１により実行されるプログラムである。ローダ２１１は、複合機１００の起動に関わる処理を行う。また、ローダ２１１は、カーネル２１２の改ざん検知を行うカーネル改ざん検知処理部２０４、を有する。カーネル改ざん検知処理部２０４は、ローダ２１１によりカーネル２１２のプログラムをロードする前に、カーネル２１２のプログラムの改ざんを検知する。カーネル２１２は、起動時にローダ２１１の後にＣＰＵ１０１により実行されるプログラムである。カーネル２１２は、複合機１００の起動に関わる処理を行う。また、カーネル２１２は、Ｎａｔｉｖｅプログラム２１３の改ざん検知を行うＮａｔｉｖｅプログラム改ざん検知処理部２０５、を有する。Ｎａｔｉｖｅプログラム改ざん検知処理部２０５は、カーネル２１２によりＮａｔｉｖｅプログラム２１３をロードする前に、Ｎａｔｉｖｅプログラム２１３の改ざんを検知する。Ｎａｔｉｖｅプログラム２１３は、起動時にカーネル２１２の後にＣＰＵ１０１により実行されるプログラムである。Ｎａｔｉｖｅプログラム２１３は、後入れ可能なＪａｖａプログラム２１４と連携して、複合機１００の各機能を提供する。このようなＮａｔｉｖｅプログラム２１３には、たとえばスキャナＩ／Ｆ制御部１０６やプリンタＩ／Ｆ制御部１０７を制御するプログラム、Ｊａｖａプログラム２１４を起動するプログラムなどがある。そして、Ｎａｔｉｖｅプログラム２１３は、プロセス管理部２０７、Ｊａｖａプログラム改ざん検知処理部２０６、ログ処理部２１７、を有する。プロセス管理部２０７は、起動するＪａｖａプログラム２１４のプロセスＩＤを管理する。Ｊａｖａプログラム改ざん検知処理部２０６は、Ｎａｔｉｖｅプログラム２１３によりＪａｖａプログラム２１４をロードする前に、Ｊａｖａプログラム２１４の改ざんを検知する。ログ処理部２１７は、改ざんされたＪａｖａプログラム２１４を実行する場合には強制的に、改ざんされたＪａｖａプログラム２１４を含むプログラムの実行ログをＨＤＤ１０４などに記録する。
【００１４】
Ｊａｖａプログラム２１４は、Ｎａｔｉｖｅプログラム２１３の後にＣＰＵ１０１により実行されるプログラムである。Ｊａｖａプログラム２１４は、それ単体で、あるいは複合機１００のＮａｔｉｖｅプログラム２１３と連携して、様々な機能を提供する。Ｊａｖａプログラム２１４は、たとえば操作パネル１１３に、画面を表示する。また、Ｊａｖａプログラム２１４は、上述した他の基本プログラムと異なり、出荷後に利用者が複合機１００にインストールすることができる後入れ可能なプラグインアプリケーションプログラムという特徴を有する。これに対し、上述したブートプログラム２０９、ＢＩＯＳ２１０、ローダ２１１、カーネル２１２、Ｎａｔｉｖｅプログラム２１３は、複合機１００に出荷時に必須的に組み込まれる基本プログラムである。そして、基本プログラムでは、複合機１００の出荷前にプログラムのマスタデータを複合機１００に保持しておき、改ざんを検知したときにはそのマスタデータを用いてプログラムを復旧させることができる。しかしながら、Ｊａｖａプログラム２１４は、後入れされるという特徴から、マスタデータを複合機１００に保持させていない。よって、複合機１００は、データ通信を遮断したスタンドアローン状態において、Ｊａｖａプログラム２１４について、基本プログラムで採用している上述の復旧手法を同様に採用することは難しい。
【００１５】
縮退設定データ２１６は、Ｊａｖａプログラム２１４の改ざんを検知した際の複合機１００の動作についての設定値が保存されるＨＤＤ１０４上の領域である。縮退設定データ２１６の設定値には、以下の３つがある。縮退設定データ２１６の設定値は、具体的には、「１．Ｊａｖａプログラム２１４を起動しない。」である。また、設定値は、「２．Ｊａｖａプログラム２１４を起動し、全プログラムにネットワーク１１０を利用させない。」である。また、設定値は、「３．Ｊａｖａプログラム２１４を起動し、改ざんされたＪａｖａプログラム２１４のみにネットワーク１１０を利用させない。」である。縮退設定データ２１６には、プログラムの改ざんが検知された場合においてデータ通信を許可または禁止する範囲が設定される。複合機１００の管理者は、あらかじめ縮退設定データ２１６の設定値を選択する。図３は、縮退設定データ２１６の設定値を選択する表示画面の一例である。図３の表示画面は、Ｎａｔｉｖｅプログラム２１３により、操作パネル１１３に表示される。図３の表示画面には、縮退設定データ２１６についての上述した１から３の設定値に対応する３つの選択項目が表示される。管理者が、３つの選択項目の一つを選択すると、Ｎａｔｉｖｅプログラム２１３は、選択された項目に対応する設定値により、縮退設定データ２１６を更新する。図４は、縮退設定データ２１６の設定値の一例である。図４において、設定値「１」は、Ｊａｖａプログラム２１４を停止する設定値である。設定値「２」は、Ｊａｖａプログラム２１４を起動し、すべてのＪａｖａプログラム２１４のデータ送信を禁止する設定値である。設定値「３」は、Ｊａｖａプログラム２１４を起動し、改ざんされたＪａｖａプログラム２１４のデータ送信を禁止する設定値である。設定値「１」から設定値「３」になるにつれて、Ｊａｖａプログラム２１４は、通常に近い状態で起動されることになる。
【００１６】
改ざんプログラムリスト２１５は、Ｊａｖａプログラム改ざん検知処理部２０６がＪａｖａプログラム２１４の改ざんを検知した際に、その改ざんが検知されたＪａｖａプログラム２１４の情報を記録するためのＲＡＭ１０３上の領域である。図５は、改ざんプログラムリスト２１５の一例のデータ構造を説明する図である。図５では、「Ｊａｖａプログラム１」が改ざんされたＪａｖａプログラム２１４として改ざんプログラムリスト２１５に登録されている。Ｊａｖａプログラム改ざん検知処理部２０６は、実際には、改ざんされたＪａｖａプログラム２１４そのものではなく、その起動時に一意に割り当てたプロセスＩＤを、改ざんプログラムリスト２１５に登録する。
【００１７】
ログデータ２１８は、改ざんされたＪａｖａプログラム２１４を実行する場合などにおいて、改ざんされたＪａｖａプログラム２１４を含むプログラムの実行ログを記録したデータである。ログデータ２１８には、各実行ログのデータとして、たとえば、実行したプログラムを特定するプロセスＩＤ、実行時刻、実行時に使用したデータ、を含む。ログ処理部２１７は、プロセスが実行されるたびに、実行されたプロセスの実行ログのデータを、ログデータ２１８に追加する。
【００１８】
図６は、図２の複合機１００の起動状態を生成するための、基本的な起動処理の模式的な説明図である。図６（ａ）は、複合機１００の起動処理順の模式的な説明図である。図６（ａ）の起動処理において、複合機１００は、プログラムの改ざんを検知しない。複合機１００の電源が投入された後、起動したブートプログラム２０９がＢＩＯＳ２１０を起動する。次に、ＢＩＯＳ２１０がローダ２１１を起動する。次に、ローダ２１１がカーネル２１２を起動する。次に、カーネル２１２がＮａｔｉｖｅプログラム２１３を起動する。また、Ｎａｔｉｖｅプログラム２１３の中の起動プログラムがＪａｖａプログラム２１４を起動する。このブートストラップ方式の起動処理により、複合機１００は、図２の起動した状態になる。図２において、Ｎａｔｉｖｅプログラム２１３とＪａｖａプログラム２１４とは、互いに連携して複合機１００の機能を提供する。
【００１９】
これに対して、図６（ｂ）では、複合機１００は、プログラムの改ざんを検知する。起動処理順は、図６（ａ）と同じである。そして、図６（ｂ）には、プログラムの改ざんを検知するために、各プログラムのデジタル署名（以下署名と呼ぶ）と、公開鍵とが図示されている。これらの改ざん検知用のデータは、対応するプログラムとともに、図６（ｂ）に図示する記録部に保存される。公開鍵と署名とは、複合機１００において各プログラムが起動される前に、たとえば出荷前にあらかじめそれぞれの記録部に保存される。たとえば、ブートプログラム２０９がＢＩＯＳ署名の検証に用いる公開鍵３００は、ＲＯＭ１０２に保存される。ＢＩＯＳ２１０のＢＩＯＳ署名３０２と、ローダ検証に用いる公開鍵３０３とは、ＲＯＭ１０２に保存される。ローダ２１１のローダ署名３０４と、カーネル検証に用いる公開鍵３０５とは、フラッシュメモリ１１７に保存される。カーネル２１２のカーネル署名３０６と、Ｎａｔｉｖｅプログラム検証に用いる公開鍵３０７とは、フラッシュメモリ１１７に保存される。Ｎａｔｉｖｅプログラム２１３のＮａｔｉｖｅプログラム署名３０８と、Ｊａｖａプログラム検証に用いる公開鍵３０９とは、フラッシュメモリ１１７に保存される。Ｊａｖａプログラム２１４のＪａｖａプログラム署名３１０は、ＨＤＤ１０４に保存される。
【００２０】
図２における検知部としての複数の改ざん検知処理部２０１、２０２、２０４、２０５、２０６は、これらの公開鍵と署名とを比較して、それぞれの後に起動されるプログラムについての改ざんを検知する。また、図２の複数の改ざん検知処理部２０１、２０２、２０４、２０５、２０６は、プログラムが改ざんされていない場合には、判断したプログラムについての起動を許可する。なお、本実施例では公開鍵がすべて異なるものとして説明しているが、同じ公開鍵が含まれていてもよい。また、各プログラムについての署名と公開鍵との保存場所は、ＲＯＭ１０２、フラッシュメモリ１１７、ＨＤＤ１０４に限られない。各プログラムについての署名と公開鍵とは、その他の記録媒体に保存されてよい。また、各プログラムの署名と公開鍵との保存場所は、図２と異なる割り当てでもよい。たとえばローダ２１１のローダ署名３０４と、カーネル検証に用いる公開鍵３０５とは、ＲＯＭ１０２に保存されてよい。また、本実施形態では、Ｎａｔｉｖｅプログラム２１３から起動されるプログラムとしてＪａｖａプログラム２１４を例示しているが、Ｎａｔｉｖｅプログラム２１３から起動されるプログラムの種類はこれに限定されない。Ｎａｔｉｖｅプログラム２１３から起動されるプログラムは、たとえば、少なくとも出荷後に複合機１００にインストールすることが可能なプログラムであれば、どのような種類のプログラムでもよい。
【００２１】
＜＜処理フロー＞＞
次に、本実施形態の複合機１００の動作について説明する。図７は、本実施形態の複合機１００の起動処理を示すフローチャートである。複合機１００の電源が入れられると、ステップＳ７０１において、ＣＰＵ１１５は、ブートプログラム２０９を起動する。ステップＳ７０１において、ＢＩＯＳ改ざん検知処理部２０１は、ＢＩＯＳ２１０の改ざん検知処理を実施する。ＢＩＯＳ改ざん検知処理部２０１は、ＢＩＯＳ署名の検証に用いる公開鍵３００と、ＢＩＯＳ２１０のＢＩＯＳ署名３０２とが一致している場合、ＢＩＯＳ２１０の改ざんがないと判断する。この場合、ブートプログラム２０９は、ステップＳＴ７０４において、ＢＩＯＳ２１０を起動する。ＢＩＯＳ署名の検証に用いる公開鍵３００と、ＢＩＯＳ２１０のＢＩＯＳ署名３０２とが一致していない場合、ＢＩＯＳ改ざん検知処理部２０１は、ＢＩＯＳ２１０の改ざんがあると判断する。この場合、ブートプログラム２０９は、ステップＳＴ７０３において、ＢＩＯＳ２１０をマスタデータで上書きして復旧し、その後に、ステップＳＴ７０４においてＢＩＯＳ２１０を起動する。なお、ブートプログラム２０９は、起動処理を停止して複合機１００の動作を停止させてもよい。ステップＳ７０５において、ローダ改ざん検知処理部２０２は、ローダ２１１の改ざん検知処理を実施する。ローダ改ざん検知処理部２０２は、ローダ検証に用いる公開鍵３０３と、ローダ２１１のローダ署名３０４とが一致する場合、ローダ２１１の改ざんがないと判断する。この場合、ＢＩＯＳ２１０は、ステップＳＴ７０７において、ローダ２１１を起動する。ローダ検証に用いる公開鍵３０３と、ローダ２１１のローダ署名３０４とが一致しない場合、ローダ改ざん検知処理部２０２は、ローダ２１１の改ざんがあると判断する。この場合、ＢＩＯＳ２１０は、ステップＳＴ７０６において、ローダ２１１をマスタデータで上書きして復旧し、その後に、ステップＳＴ７０７においてローダ２１１を起動する。なお、ＢＩＯＳ２１０は、起動処理を停止して複合機１００の動作を停止させてもよい。
【００２２】
ステップＳ７０８において、カーネル改ざん検知処理部２０４は、カーネル２１２の改ざん検知処理を実施する。カーネル改ざん検知処理部２０４は、カーネル検証に用いる公開鍵３０５と、カーネル２１２のカーネル署名３０６とが一致する場合、カーネル２１２の改ざんがないと判断する。この場合、ローダ２１１は、ステップＳＴ７１０において、カーネル２１２を起動する。カーネル検証に用いる公開鍵３０５と、カーネル２１２のカーネル署名３０６とが一致しない場合、カーネル改ざん検知処理部２０４は、カーネル２１２の改ざんがあると判断する。この場合、ローダ２１１は、ステップＳＴ７０９において、カーネル２１２をマスタデータで上書きして復旧し、その後に、ステップＳＴ７１０においてカーネル２１２を起動する。なお、ローダ２１１は、起動処理を停止して複合機１００の動作を停止させてもよい。ステップＳ７１１において、Ｎａｔｉｖｅプログラム改ざん検知処理部２０５は、Ｎａｔｉｖｅプログラム２１３の改ざん検知処理を実施する。Ｎａｔｉｖｅプログラム改ざん検知処理部２０５は、Ｎａｔｉｖｅプログラム検証に用いる公開鍵３０７と、Ｎａｔｉｖｅプログラム２１３のＮａｔｉｖｅプログラム署名３０８とが一致する場合、Ｎａｔｉｖｅプログラム２１３の改ざんがないと判断する。この場合、カーネル２１２は、ステップＳＴ７１３において、Ｎａｔｉｖｅプログラム２１３を起動する。Ｎａｔｉｖｅプログラム検証に用いる公開鍵３０７と、Ｎａｔｉｖｅプログラム２１３のＮａｔｉｖｅプログラム署名３０８とが一致しない場合、Ｎａｔｉｖｅプログラム改ざん検知処理部２０５は、Ｎａｔｉｖｅプログラム２１３の改ざんがあると判断する。この場合、カーネル２１２は、ステップＳＴ７１２において、Ｎａｔｉｖｅプログラム２１３をマスタデータで上書きして復旧し、その後に、ステップＳＴ７１３においてＮａｔｉｖｅプログラム２１３を起動する。なお、カーネル２１２は、起動処理を停止して複合機１００の動作を停止させてもよい。
【００２３】
ステップＳ７１４において、Ｊａｖａプログラム改ざん検知処理部２０６は、未起動のＪａｖａプログラム２１４を選択する。ステップＳ７１５において、Ｊａｖａプログラム改ざん検知処理部２０６は、選択したＪａｖａプログラム２１４の改ざん検知処理を実施する。Ｊａｖａプログラム改ざん検知処理部２０６は、Ｊａｖａプログラム検証に用いる公開鍵３０９と、Ｊａｖａプログラム２１４のＪａｖａプログラム署名３１０とが一致する場合、選択したＪａｖａプログラム２１４の改ざんがないと判断する。この場合、Ｎａｔｉｖｅプログラム２１３は、ステップＳＴ７１６において、選択したＪａｖａプログラム２１４を起動する。その後、Ｎａｔｉｖｅプログラム２１３は、処理をステップＳ７２２に進める。Ｊａｖａプログラム検証に用いる公開鍵３０９と、Ｊａｖａプログラム２１４のＪａｖａプログラム署名３１０とが一致しない場合、Ｊａｖａプログラム改ざん検知処理部２０６は、選択したＪａｖａプログラム２１４の改ざんがあると判断する。この場合、Ｊａｖａプログラム改ざん検知処理部２０６は、ステップＳＴ７１７において、縮退設定データ２１６を取得し、ステップＳＴ７１８において、縮退設定データ２１６の設定値が「Ｊａｖａプログラムを起動しない」であるか否かを判断する。縮退設定データ２１６の設定値が「Ｊａｖａプログラムを起動しない」ではない場合、Ｎａｔｉｖｅプログラム２１３は、ステップＳＴ７１９において、選択したＪａｖａプログラム２１４を起動する。その後、ステップＳＴ７２０において、Ｊａｖａプログラム改ざん検知処理部２０６は、選択したＪａｖａプログラム２１４を改ざんプログラムリスト２１５に登録する。ステップＳＴ７２１において、Ｊａｖａプログラム改ざん検知処理部２０６は、ログ処理部２１７を強制的に起動する。ステップＳＴ７２２において、Ｊａｖａプログラム改ざん検知処理部２０６は、すべてのＪａｖａプログラム２１４についての起動処理を完了したか否かを判断する。すべてのＪａｖａプログラム２１４についての起動処理が完了していない場合、Ｊａｖａプログラム改ざん検知処理部２０６は、処理をステップＳ７１４に戻す。Ｊａｖａプログラム改ざん検知処理部２０６は、新たに未起動のＪａｖａプログラム２１４を選択し、ステップＳ７１４からステップＳ７２２までの処理を繰り返す。すべてのＪａｖａプログラム２１４についての起動処理が完了している場合、Ｊａｖａプログラム改ざん検知処理部２０６は、図７の処理を終了する。これにより、複合機１００は、改ざんを検知したものを含めてすべてのＪａｖａプログラム２１４を起動した状態で、起動処理を完了する。また、改ざんプログラムリスト２１５には、改ざんが検知されたすべてのＪａｖａプログラム２１４がプロセスＩＤにより登録される。
【００２４】
ステップＳＴ７１８において縮退設定データ２１６の設定値が「Ｊａｖａプログラムを起動しない」である場合、Ｎａｔｉｖｅプログラム２１３は、選択したＪａｖａプログラム２１４を実行しない。また、ステップＳ７２３において、Ｎａｔｉｖｅプログラム２１３は、すでに起動したすべてのＪａｖａプログラム２１４を停止し、図７の処理を終了する。これにより、複合機１００は、Ｊａｖａプログラム２１４を起動しない状態で起動を完了する。このとき、フローチャートには表れていないが、Ｎａｔｉｖｅプログラム２１３は、操作パネル１１３にエラー表示したり、ログデータ２１８にエラーを記録したりしてよい。これにより、利用者は、図７の起動処理後に改ざんが検知されたことを知ることができる。
【００２５】
次に、通信管理部２０８の処理について説明する。図８は、通信管理部２０８が、Ｊａｖａプログラム２１４からネットワーク処理依頼を受け付けた場合の処理を示すフローチャートである。ステップＳ８００において、通信管理部２０８は、Ｊａｖａプログラム２１４からネットワーク処理依頼を受け取る。ステップＳ８０１において、通信管理部２０８は、改ざんプログラムリスト２１５に記録されているプロセスＩＤを確認する。ステップＳ８０２において、通信管理部２０８は、改ざんプログラムリスト２１５に記録されているプロセスＩＤの有無を判断する。改ざんプログラムリスト２１５にプロセスＩＤが１つも登録されていない場合、通信管理部２０８は、ステップＳ８０８において、要求されたデータ送信を許可して実行して、図８の処理を終了する。改ざんプログラムリスト２１５にプロセスＩＤが少なくとも１つ記録されている場合、ステップＳ８０３において、通信管理部２０８は、縮退設定データ２１６を取得する。ステップＳ８０４において、通信管理部２０８は、縮退設定データ２１６が「Ｊａｖａプログラムを起動し、すべてのプログラムにネットワークを利用させない」設定値であるか否かを判断する。すべてのＪａｖａプログラム２１４のネットワーク利用が禁止されている場合、ステップＳ８０５において、通信管理部２０８は、要求されたデータ送信を実行せずに、ネットワーク１１０を利用できない旨のエラーを表示する。ここで、エラーは、ＵＩ制御部２０３を介して操作パネル１１３に伝えられることにより、操作パネル１１３に表示される。その後、通信管理部２０８は、図８の処理を終了する。
【００２６】
すべてのＪａｖａプログラム２１４のネットワーク利用が禁止されていない場合、ステップＳ８０６において、通信管理部２０８は、ネットワーク処理を要求してきたＪａｖａプログラム２１４のプロセスＩＤを取得する。プロセスＩＤは、プロセス管理部２０７から取得できる。ステップＳ８０７において、通信管理部２０８は、取得したプロセスＩＤが、改ざんプログラムリスト２１５に記録されているプロセスＩＤと一致するか否かを判断する。取得したプロセスＩＤが、改ざんプログラムリスト２１５に記録されている場合、ステップＳ８０５において、通信管理部２０８は、要求されたデータ送信を実行せずに、ネットワーク１１０を利用できない旨のエラーを表示する。ここで、エラーは、ＵＩ制御部２０３を介して操作パネル１１３に伝えられることにより、操作パネル１１３に表示される。その後、通信管理部２０８は、図８の処理を終了する。取得したプロセスＩＤが、改ざんプログラムリスト２１５に記録されていない場合、通信管理部２０８は、ステップＳ８０８において、要求されたデータ送信を許可して実行し、図８の処理を終了する。このように、通信管理部２０８は、縮退設定データ２１６がすべてのデータ通信を禁止する場合、すべてのＪａｖａプログラム２１４のデータ通信を禁止する。また、縮退設定データ２１６が改ざんを検知したＪａｖａプログラム２１４についてのデータ通信を禁止する場合、通信管理部２０８は、改ざんプログラムリスト２１５への登録の有無に応じてＪａｖａプログラム２１４のデータ通信を禁止する。例えば、改ざん検知されたプログラムを示すプログラムリスト２１５に含まれるプログラムによるデータ送信処理の実行を禁止する。一方、プログラムリスト２１５に含まれないプログラム（改ざんが検知されなかったプログラム）によるデータ送信処理を許可する。
【００２７】
図９は、通信管理部２０８が、ネットワーク１１０から、Ｊａｖａプログラム２１４で処理するデータを受信した場合の処理を示すフローチャートである。ステップＳ９０１において、通信管理部２０８は、ネットワーク１１０から、Ｊａｖａプログラム２１４で処理するデータを受信する。ステップＳ９０２において、通信管理部２０８は、縮退設定データ２１６を取得する。ステップＳ９０３において、通信管理部２０８は、縮退設定データ２１６が「Ｊａｖａプログラムを起動し、すべてのプログラムにネットワークを利用させない」設定値であるか否かを判断する。縮退設定データ２１６が「Ｊａｖａプログラムを起動し、すべてのプログラムにネットワークを利用させない」設定値である場合、通信管理部２０８は、処理をステップＳ９０９へ進める。ステップＳ９０９において、通信管理部２０８は、データ受信を禁止する設定に基づいて受信データを破棄し、図９の処理を終了する。  縮退設定データ２１６が「Ｊａｖａプログラムを起動し、すべてのプログラムにネットワークを利用させない」設定値ではない場合、通信管理部２０８は、処理をステップＳ９０４へ進める。ステップＳ９０４において、通信管理部２０８は、受信データに基づいて、受信データを処理するＪａｖａプログラム２１４を選択する。ステップＳ９０５において、通信管理部２０８は、改ざんプログラムリスト２１５を取得する。ステップＳ９０６において、通信管理部２０８は、選択したＪａｖａプログラム２１４のプロセスＩＤが、改ざんプログラムリスト２１５に記録されているプロセスＩＤと一致するか否かを判断する。選択したＪａｖａプログラム２１４のプロセスＩＤが、改ざんプログラムリスト２１５に記録されているプロセスＩＤと一致しない場合、通信管理部２０８は、処理をステップＳ９０７に進める。信管理部２０８は、ステップＳ９０７において、データ受信を許可する設定に基づいて受信データを選択したＪａｖａプログラム２１４へ受け渡す。これにより、改ざんプログラムリスト２１５に記録されていないＪａｖａプログラム２１４は、受信データを処理することができる。
【００２８】
選択したＪａｖａプログラム２１４のプロセスＩＤが改ざんプログラムリスト２１５に記録されているプロセスＩＤと一致する場合、通信管理部２０８は、ステップＳ９０８において、受信データが印刷ジョブ用の画像データであるか否かを判断する。受信データが印刷ジョブ用の画像データである場合、通信管理部２０８は、ステップＳ９０７において、データ受信を許可する設定に基づいて、受信した画像データを、選択したＪａｖａプログラム２１４へ受け渡す。これにより、印刷ジョブ用の画像データを処理するＪａｖａプログラム２１４は、改ざんプログラムリスト２１５に記録されていても、印刷ジョブ用に受信した画像データを処理することができる。受信データが印刷ジョブ用のデータでない場合、通信管理部２０８は、ステップＳ９０９において、データ受信を禁止する設定に基づいて受信データを破棄する。
【００２９】
また、図８や図９のデータ通信処理が実行される場合、強制的に起動されるログ処理部２１７は、データ通信処理のプロセスが実行されるたびに、実行されたプロセスの実行ログのデータを、ログデータ２１８に追加する。これにより、ログデータ２１８には、実行されたプロセスが実行順に蓄積して記録される。利用者は、ログデータ２１８を解析することにより、データ送信またはデータ受信といったデータ通信についての禁止または許可の状況を把握できる。
【００３０】
以上のように、本実施形態では、後入れ可能なＪａｖａプログラム２１４が改ざんされたとしても、縮退設定データ２１６が「Ｊａｖａプログラムを起動しない」設定値以外であれば、すべてのＪａｖａプログラム２１４が起動される。ただし、改ざんが検知されたＪａｖａプログラム２１４についての、ネットワーク１１０を利用したデータ送信およびデータ受信は、縮退設定データ２１６および改ざんプログラムリスト２１５に基づいて通信管理部２０８により制限される。また、改ざんが検知されたＪａｖａプログラム２１４についての、ネットワーク１１０を利用したデータ送信およびデータ受信は、制限されない。これにより、利用者は、Ｊａｖａプログラム２１４を、改ざんが検知されたものを含めて、利用可能である。改ざんが検知されたＪａｖａプログラム２１４については、通信以外の他の一部の機能を利用できる。このように、本実施形態では、Ｊａｖａプログラム２１４が改ざんされた場合に、利用者がＪａｖａプログラム２１４を全く使えなくなるという事態を避けて、できる限り利便性を損なわないようにできる。なお、改ざんされたプログラムが、マスタデータが存在するたとえばＮａｔｉｖｅプログラム２１３である場合、これをマスタデータで復旧する。利用者は、常に正常なＮａｔｉｖｅプログラム２１３を使うことができる。
【００３１】
このように、本実施形態では、複合機１００のプロセッサを構成するＣＰＵ１０１，１１５は、起動時にプログラムの改ざんを検知する。そして、基本プログラムの後に実行される、後入れ可能なＪａｖａプログラム２１４が改ざんされた場合、通信管理部２０８は、少なくとも改ざんを検知したＪａｖａプログラム２１４についてのデータ送信を禁止する。たとえば、通信管理部２０８は、Ｊａｖａプログラム２１４の実行によりデータ通信が生じた場合、改ざんを検知したプログラムの改ざんプログラムリスト２１５に含まれるＪａｖａプログラム２１４についてのデータ送信を禁止する。これにより、本実施形態では、改ざんされたＪａｖａプログラム２１４を実行することにより複合機１００が不適切な動作をして複合機１００のデータを外部へ送信しようとしても、そのデータ送信を禁止することができる。すなわち、本実施形態では、Ｊａｖａプログラム２１４の改ざんがあったとしても、改ざんが検知されたＪａｖａプログラム２１４による複合機１００のデータの持ち出しを防ぐことかできる。本実施形態では、Ｊａｖａプログラム２１４の改ざんがあったとしても、複合機１００のデータの持ち出しを防ぎつつ、できる限り複合機１００の利便性を損なわないようにできる。
【００３２】
本実施形態では、複合機１００の記録部は、Ｊａｖａプログラム２１４の改ざんが検知された場合においてデータ通信を許可または禁止する範囲についての縮退設定データ２１６を保持する。そして、通信管理部２０８は、縮退設定データ２１６および改ざんプログラムリスト２１５に基づいて、Ｊａｖａプログラム２１４によるデータ通信を許可または禁止する。たとえば、縮退設定データ２１６が改ざん検知時にすべてのデータ通信を禁止する値の場合、通信管理部２０８は、改ざん検知時にはＪａｖａプログラム２１４についてのすべてのデータ通信を禁止する。これにより、改ざんが検知されたプログラムを含むすべてのＪａｖａプログラム２１４についてのすべてのデータ通信が禁止される。また、縮退設定データ２１６が改ざんを検知したＪａｖａプログラム２１４のデータ通信を禁止する値の場合、通信管理部２０８は、改ざんが検知されたＪａｖａプログラム２１４のデータ通信を禁止し、他のＪａｖａプログラム２１４のデータ通信を許可する。これにより、通信管理部２０８は、改ざんが検知されたＪａｖａプログラム２１４のデータ通信を禁止しつつ、それ以外のＪａｖａプログラム２１４のデータ通信を許可できる。ユーザは、縮退設定データ２１６を設定することにより、自己の都合に適した縮退動作を選択することができる。本実施形態では、通信管理部２０８は、データ通信を禁止するＪａｖａプログラム２１４についてのデータ通信であっても、印刷ジョブのための画像データを受信する場合にはデータ通信を許可する。これにより、複合機１００は、縮退運転中であっても、印刷ジョブのための画像データを受信して印刷処理を実行することができる。本実施形態では、ログ処理部２１７は、Ｊａｖａプログラム２１４についての改ざんが検知された場合、少なくとも改ざんが検知されたＪａｖａプログラム２１４についてのログを強制的にログデータ２１８として記録する。よって、利用者は、縮退運転中における、改ざんが検知されたＪａｖａプログラム２１４の動作などについて、後から解析することができる。
【００３３】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。
【００３４】
上記実施形態は、複合機（デジタル複合機／ＭＦＰ／Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）１００の例である。本発明は、この他の情報処理装置に適用し得る。
【００３５】
上記実施形態では、複合機１００のＣＰＵ１０１，１１５は、Ｊａｖａプログラム２１４についての改ざんがあった場合、通信機能を制限している。この他にもたとえば、複合機１００のＣＰＵ１０１，１１５は、改ざんがあったＪａｖａプログラム２１４について通信以外の一部の機能の実行について制限してもよい。
【００３６】
上記実施形態では、情報処理装置としての複合機１００のＣＰＵ１０１は、公開鍵と署名とを比較して、プログラムの改ざんを判断している。この他にもたとえば、情報処理装置のＣＰＵは、過去のプログラムのハッシュ値と最新のプログラムのハッシュ値とを比較して、プログラムの改ざんを判断してよい。
【００３７】
本実施形態は、上述の実施の形態の１以上の機能を実現するプログラムを、ネットワークや記憶媒体を介してシステムや装置に供給し、そのシステム又は装置のコンピュータの１つ以上のプロセッサがプログラムを読み出して実行する処理でも実現可能である。また、本実施形態は、１以上の機能を実現する回路（たとえば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００３８】
１００  複合機
１０１，１１５  ＣＰＵ
２０１  ＢＩＯＳ改ざん検知処理部
２０２  ローダ改ざん検知処理部
２０４  カーネル改ざん検知処理部
２０５  Ｎａｔｉｖｅプログラム改ざん検知処理部
２０６  Ｊａｖａプログラム改ざん検知処理部
２０８  通信管理部
２１５  プログラムリスト
２１６  縮退設定データ
２１７  ログ処理部
２１８  ログデータ
【図１】
2019212114.tif 000003
【図２】
2019212114.tif 000004
【図３】
2019212114.tif 000005
【図４】
2019212114.tif 000006
【図５】
2019212114.tif 000007
【図６】
2019212114.tif 000008
【図７】
2019212114.tif 000009
【図８】
2019212114.tif 000010
【図９】
2019212114.tif 000011