(57)【要約】【課題】プログラムの起動に要する時間を短縮することが可能な改ざん検知装置及び改ざん検知方法を提供する。【解決手段】  ブロックプログラム識別情報と、前記ブロックプログラムに所定のハッシュ関数を適用して得られる比較ハッシュ値とを関連付けて記憶するハッシュ値記憶手段５０４と、複合機１００が前記プログラムを起動する際に、前記ハッシュ値記憶手段５０４に記憶された特定のブロックプログラム識別情報を選択する選択手段５０２と、選択された特定のブロックプログラム識別情報に対応するブロックプログラムに前記ハッシュ関数を適用して対応ハッシュ値を算出するハッシュ値算出手段５０５と、前記対応ハッシュ値と前記比較ハッシュ値とを比較することにより、改ざんの有無を判定する検知手段５０８とを備えることを特徴とする改ざん検知装置４０８を提供する。【選択図】図５
2012078952.tif 000002
【特許請求の範囲】
【請求項１】
装置のプログラムが改ざんされたか否かを検知する改ざん検知装置において、
前記プログラム全体を所定数のブロックに分割することにより得られるブロックプログラムのブロックプログラム識別情報と、前記ブロックプログラムに所定のハッシュ関数を適用して得られる比較ハッシュ値とを関連付けて記憶するハッシュ値記憶手段と、
前記装置が前記プログラムを起動する際に、前記ハッシュ値記憶手段に記憶された特定のブロックプログラム識別情報を選択する選択手段と、
選択された特定のブロックプログラム識別情報に対応するブロックプログラムに前記ハッシュ関数を適用して対応ハッシュ値を算出するハッシュ値算出手段と、
前記対応ハッシュ値と前記比較ハッシュ値とを比較することにより、改ざんの有無を判定する検知手段と
を備えることを特徴とする改ざん検知装置。
【請求項２】
前記選択手段は、特定のブロックプログラム識別情報を選択する場合に、プログラムの種類、目的、用途に応じて、予め設定された選択数のブロックプログラム識別情報を選択する
請求項１に記載の改ざん検知装置。
【請求項３】
前記選択手段が、特定のブロックプログラム識別情報を選択する場合に、プログラム全体のうち、半分から後尾までのデータに含まれるブロックプログラムのブロックプログラム識別情報を他のブロックプログラム識別情報よりも優先して選択する
請求項１又は２に記載の改ざん検知装置。
【請求項４】
前記ブロックプログラムの所定数は、分割後のブロックプログラムに前記ハッシュ関数を適用してハッシュ値を算出した場合に、当該ハッシュ値を算出するために要する時間が、予め設定された所定時間未満となるように決定された
請求項１−３のいずれか一項に記載の改ざん検知装置。
【請求項５】
更に、前記検知手段により前記プログラムの改ざんが検知された場合に、不一致の比較ハッシュ値に対応するブロックプログラム識別情報を優先選択記憶手段に一時記憶させ、改ざんされたプログラムが修復されると、一時記憶されたブロックプログラム識別情報を前記優先選択記憶手段から消去する機能停止手段を備え、
前記選択手段は、前記優先選択記憶手段に前記ブロックプログラム識別情報が一時記憶されている場合に、当該ブロックプログラム識別情報を優先して選択する
請求項１−４のいずれか一項に記載の改ざん検知装置。
【請求項６】
前記機能停止手段は、前記装置の動作を停止させるとともに当該装置に備えられた操作部にエラー画面を表示させる処理、不一致の比較ハッシュ値に対応するブロックプログラム識別情報のブロックプログラムを改ざん解析記憶手段に記憶させる処理、前記プログラムへのアクセスログ又はネットワークから前記プログラムへの通信ログを前記改ざん解析記憶手段に記憶させる処理、ユーザ情報を記憶しているユーザ情報記憶手段へのアクセス又はネットワークへのアクセスを禁止させる処理のうち、少なくともいずれかの処理を実行する
請求項５に記載の改ざん検知装置。
【請求項７】
前記ハッシュ値記憶手段は、前記ブロックプログラムに所定の付加情報を付加した後のプログラムに、前記ハッシュ関数を適用して得られるハッシュ値を比較ハッシュ値として記憶し、
前記ハッシュ値算出手段は、前記ブロックプログラムに前記付加情報を付加した後のプログラムに、前記ハッシュ関数を適用して対応ハッシュ値を算出する
請求項１−６のいずれか一項に記載の改ざん検知装置。
【請求項８】
請求項１−７に記載の改ざん検知装置を備えた画像形成装置。
【請求項９】
装置のプログラムが改ざんされたか否かを検知する改ざん検知方法において、
前記装置が前記プログラムを起動する際に、前記プログラム全体を所定数のブロックに分割することにより得られるブロックプログラムのブロックプログラム識別情報と、前記ブロックプログラムに所定のハッシュ関数を適用して得られる比較ハッシュ値とを関連付けて記憶するハッシュ値記憶手段を参照する参照ステップと、
前記ハッシュ値記憶手段に記憶された特定のブロックプログラム識別情報を選択する選択ステップと、
選択された特定のブロックプログラム識別情報に対応するブロックプログラムに前記ハッシュ関数を適用して対応ハッシュ値を算出するハッシュ値算出ステップと、
前記対応ハッシュ値と前記比較ハッシュ値とを比較することにより、改ざんの有無を判定する検知ステップと
を含むことを特徴とする改ざん検知方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、改ざん検知装置及び改ざん検知方法に関し、詳しくは、プログラムの起動に要する時間を短縮することが可能な改ざん検知装置及び改ざん検知方法に関する。
【背景技術】
【０００２】
近年、１台の機器でコピーとプリンタとスキャナとファクシミリとしての機能を実現した複写機、複合機等の画像形成装置が市販されるようになってきた。当該画像形成装置は、撮像部と印刷部と通信部等のハードウェアを備えると共に、コピーとプリンタとスキャナとファクシミリに対応する４種類のソフトウェアを備える。当該ソフトウェアが、ユーザの要求、指示に応じて適宜切り替わることにより、画像形成装置がコピーやプリンタやスキャナやファクシミリとして機能する。
【０００３】
前記画像形成装置を各機能毎に機能させるためには、アプリケーションやプラットフォーム等の様々なプログラム（ファームウェアその他のソフトウェア）が必要となる。当該プログラムは、画像形成装置の記憶媒体に予め記憶させておいたり、新しいバージョンのプログラムが開発された場合は、新たなプログラムに更新されたりする。
【０００４】
しかしながら、上述したプログラムは、常時、画像形成装置の記憶媒体に記憶された状態であるため、悪意あるユーザが、人気のない時期を見計らって、当該記憶媒体にアクセスし、当該プログラムを改ざん（改変、文字化け等）することがある。又、更新可能なプログラムでは、画像形成装置が新しいプログラムを汎用のメモリカードやネットワークを介して授受するため、当該授受の途中で、上述のようにプログラムの改ざんが実行される場合がある。
【０００５】
このような問題を解決するために、特開２００４−２９９３８９号公報（特許文献１）には、当該画像形成装置を機能させるプログラムが記憶された記憶媒体と、前記記憶媒体に記憶された前記プログラムを更新するためのプログラムが記憶された更新用記憶媒体をセットするための更新用記憶媒体セット手段とを備える画像形成装置が開示されている。当該画像形成装置は、前記更新用記憶媒体から取得される前記プログラムに係る電子署名の正当性を条件に、前記記憶媒体に記憶された前記プログラムを、前記更新用記憶媒体から取得される前記プログラムに更新するプログラム更新手段を備える。当該構成により、画像形成装置を機能させるプログラムを新たなプログラムに更新する場合に関して、その新たなプログラムの信頼性を向上させることを可能とするとしている。
【０００６】
又、特開２００４−３３４３９２号公報（特許文献２）には、読み取り対象の記録媒体から、所定のプログラム、前記所定のプログラムを要約化及び暗号化した要約暗号化情報を含む記録情報を読み取る読取手段と、前記要約暗号化情報を復号化した第１の要約化情報と、前記所定のプログラムを新たに要約化した第２の要約化情報とが一致する場合に、前記所定のプログラムを実行し、一致しない場合には、前記所定のプログラムを実行しないように制御する制御手段とを備えたことを特徴とする記録媒体読取装置が開示されている。当該構成により、記録媒体の不正使用を防止するという優れた効果を有する記録媒体読取装置を提供することが出来るとしている。
【０００７】
又、特開２００８−１１２４４３号公報（特許文献３）には、電子装置であって、メモリと、認証されたメモリ内容に基づいてハッシュ計算を遂行して有効ハッシュ値を発生し、前記メモリの内容についてハッシュ計算を周期的に遂行して検査ハッシュ値を発生するマイクロプロセッサとを含む電子装置が開示されている。当該マイクロプロセッサは、更に、前記有効ハッシュ値を認証し、前記検査ハッシュ値を認証された前記有効ハッシュ値と比較して前記メモリに対する権限のないアクセスを検出し、前記検査ハッシュ値が前記認証された有効ハッシュ値と一致しない場合に前記電子装置を動作停止して、前記権限のないメモリアクセスを妨げる。当該構成により、電子装置内の電子メモリ内容がいたずら（改ざん）されていないことを確かめることが可能となるとしている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−２９９３８９号公報
【特許文献２】特開２００４−３３４３９２号公報
【特許文献３】特開２００８−１１２４４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、特許文献１−３に記載の技術では、いずれも、改ざん検知の対象となるプログラム全体（プログラムの実体であるバイナリデータ）に対して所定のハッシュ関数を適用し、当該適用によって得られたハッシュ値に基づいてプログラムの改ざん検知を実行している。ここで、ハッシュ値を算出するために要する時間（ハッシュ値の算出時間）は、プログラム全体のデータのサイズによるものの、プログラム全体のデータに対して前記ハッシュ関数を適用しているため、長期化することになる（例えば、数分−数十分等）。
【００１０】
そして、プログラムの改ざんを検知する場合、通常、プログラムを起動する際に実行することから、上述のように、ハッシュ値の算出時間が長期化すると、プログラムを起動するために要する時間、つまり、プログラムの起動開始から、プログラムの改ざんの検知、プログラムのデータの読み込み、プログラムの実行までの時間（プログラムの起動時間）も長期化することになる。その結果、上述した特許文献１−３に記載の技術では、プログラムの起動時間が長期化するという問題がある。
【００１１】
一方、プログラムが改ざんされた場合、プログラム全体のうち、改ざんされたデータの後続のプログラム（データ）は、改ざん前の当該後続のプログラム（データ）と全く異なるプログラム（データ）に変更される。つまり、プログラム全体に対してハッシュ関数を適用しなくても、当該改ざんにより変更されたプログラム（データ）の一部に対してハッシュ関数を適用すれば、プログラム全体の改ざんを検知することが出来ることになる。このような実情を適切に利用すれば、上述したハッシュ値の算出時間を短縮し、更に、プログラムの起動時間を短縮出来る場合がある。
【００１２】
そこで、本発明は、上記問題を解決するためになされたものであり、プログラムの起動に要する時間を短縮することが可能な改ざん検知装置及び改ざん検知方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上述した課題を解決し、目的を達成するために、本発明に係る改ざん検知装置は、装置のプログラムが改ざんされたか否かを検知する改ざん検知装置であり、当該改ざん検知装置において、前記プログラム全体を所定数のブロックに分割することにより得られるブロックプログラムのブロックプログラム識別情報と、前記ブロックプログラムに所定のハッシュ関数を適用して得られる比較ハッシュ値とを関連付けて記憶するハッシュ値記憶手段と、前記装置が前記プログラムを起動する際に、前記ハッシュ値記憶手段に記憶された特定のブロックプログラム識別情報を選択する選択手段とを備える。更に、当該改ざん検知装置は、選択された特定のブロックプログラム識別情報に対応するブロックプログラムに前記ハッシュ関数を適用して対応ハッシュ値を算出するハッシュ値算出手段と、前記対応ハッシュ値と前記比較ハッシュ値とを比較することにより、両者が一致しない場合に、前記プログラムが改ざんされたと検知する検知手段とを備える。
【００１４】
当該構成により、装置がプログラムを起動する際に行なわれるプログラムの改ざん検知は、当該プログラム全体のデータから対応ハッシュ値を算出するのではなく、プログラム全体の一部であるブロックプログラムから対応ハッシュ値を算出する。そのため、前記プログラムの改ざんを検知するためのハッシュ値の算出時間を著しく短縮することが可能となり、その結果、前記プログラムの起動時間を飛躍的に短縮することが可能となる。
【００１５】
又、前記選択手段は、特定のブロックプログラム識別情報を選択する場合に、プログラムの種類、目的、用途に応じて、予め設定された選択数のブロックプログラム識別情報を選択するよう構成することが出来る。
【００１６】
又、前記選択手段が、特定のブロックプログラム識別情報を選択する場合に、プログラム全体のうち、半分から後尾までのデータに含まれるブロックプログラムのブロックプログラム識別情報を他のブロックプログラム識別情報よりも優先して選択するよう構成することが出来る。
【００１７】
又、前記ブロックプログラムの所定数は、分割後のブロックプログラムに前記ハッシュ関数を適用してハッシュ値を算出した場合に、当該ハッシュ値を算出するために要する時間が、予め設定された所定時間未満となるように決定された構成とすることが出来る。
【００１８】
更に、前記検知手段により前記プログラムの改ざんが検知された場合に、不一致の比較ハッシュ値に対応するブロックプログラム識別情報を優先選択記憶手段に一時記憶させ、改ざんされたプログラムが修復されると、一時記憶されたブロックプログラム識別情報を前記優先選択記憶手段から消去する機能停止手段を備え、前記選択手段は、前記優先選択記憶手段に前記ブロックプログラム識別情報が一時記憶されている場合に、当該ブロックプログラム識別情報を優先して選択するよう構成することが出来る。
【００１９】
又、前記機能停止手段は、前記装置の動作を停止させるとともに当該装置に備えられた操作部にエラー画面を表示させる処理、不一致の比較ハッシュ値に対応するブロックプログラム識別情報のブロックプログラムを改ざん解析記憶手段に記憶させる処理、前記プログラムへのアクセスログ又はネットワークから前記プログラムへの通信ログを前記改ざん解析記憶手段に記憶させる処理、ユーザ情報を記憶しているユーザ情報記憶手段へのアクセス又はネットワークへのアクセスを禁止させる処理のうち、少なくともいずれかの処理を実行するよう構成することが出来る。
【００２０】
又、前記ハッシュ値記憶手段は、前記ブロックプログラムに所定の付加情報を付加した後のプログラムに、前記ハッシュ関数を適用して得られるハッシュ値を比較ハッシュ値として記憶し、前記ハッシュ値算出手段は、前記ブロックプログラムに前記付加情報を付加した後のプログラムに、前記ハッシュ関数を適用して対応ハッシュ値を算出するよう構成することが出来る。
【００２１】
又、本発明は、前記改ざん検知装置を備えた画像形成装置を提供することが出来る。
【００２２】
又、本発明は、装置のプログラムが改ざんされたか否かを検知する改ざん検知方法として提供することが出来る。即ち、当該改ざん検知方法において、前記装置が前記プログラムを起動する際に、前記プログラム全体を所定数のブロックに分割することにより得られるブロックプログラムのブロックプログラム識別情報と、前記ブロックプログラムに所定のハッシュ関数を適用して得られる比較ハッシュ値とを関連付けて記憶するハッシュ値記憶手段を参照する参照ステップと、前記ハッシュ値記憶手段に記憶された特定のブロックプログラム識別情報を選択する識別情報選択ステップとを含む。更に、改ざん検知方法は、選択された特定のブロックプログラム識別情報に対応するブロックプログラムに前記ハッシュ関数を適用して対応ハッシュ値を算出するハッシュ値算出ステップと、前記対応ハッシュ値と前記比較ハッシュ値とを比較することにより、両者が一致しない場合に、前記プログラムが改ざんされたと検知する改ざん検知ステップとを含む。当該構成としても、上述と同様の効果を得ることが可能となる。
【発明の効果】
【００２３】
本発明の改ざん検知装置及び改ざん検知方法によれば、プログラムの起動に要する時間を短縮することが可能となる。
【図面の簡単な説明】
【００２４】
【図１】本発明に係る複合機の内部の全体構成を示す概念図である。
【図２】本発明に係る画像読取部の拡大図である。
【図３】本発明に係る操作部の全体構成を示す概念図である。
【図４】本発明に係る複合機及び改ざん検知部の制御系ハードウェアの構成を示す図である。
【図５】本発明の実施形態における複合機及び操作部の機能ブロック図である。
【図６】本発明の実施形態の実行手順を示すためのフローチャートである。
【図７】本発明の実施形態に係るハッシュ値テーブルの一例を示す図（図７（Ａ））と、本発明の実施形態に係るブロックプログラムの一例を示す図（図７（Ｂ））である。
【図８】本発明の実施形態に係る改ざんされる前のプログラムと、改ざん後のプログラムの一例を示す図（図８（Ａ））と、本発明の実施形態に係るタッチパネル上に表示された初期画面の一例を示す図（図８（Ｂ））である。
【図９】本発明の実施形態に係る優先選択テーブルの一例を示す図（９（Ａ））と、本発明の実施形態に係るエラー画面の一例を示す図（９（Ｂ））である。
【発明を実施するための形態】
【００２５】
以下に、添付図面を参照して、本発明の改ざん検知装置を備えた画像形成装置の実施形態について説明し、本発明の理解に供する。尚、以下の実施形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。又、フローチャートにおける数字の前に付されたアルファベット「Ｓ」はステップを意味する。
【００２６】
＜画像形成装置及び改ざん検知装置＞
以下に、本発明に係る改ざん検知装置（例えば、改ざん検知部）を備えた画像形成装置（例えば、複合機）について説明する。
【００２７】
図１は、本発明に係る複合機の内部の全体構成を示す概念図である。ただし、本発明に直接には関係しない各部の詳細は省略している。
【００２８】
本発明の複合機１００は、例えばプリンタやスキャナ単体、あるいはプリンタ、コピー、スキャナ、ファックス等を備えた複合機等が該当する。尚、一例として複合機を利用して原稿のコピー機能を提供する際の複合機１００の動作を簡単に説明する。
【００２９】
ユーザが複合機１００を利用して例えば原稿Ｐの印刷を行う場合、複合機１００の電源を投入すると、複合機１００の制御部（図示せず）が、記憶部（図示せず）に記憶された画像形成に関するプログラムを起動する際に、複合機１００の内部に組み込まれた（接続された）改ざん検知部（図示せず）に当該プログラムの改ざんを検知させる。
【００３０】
当該改ざん検知部が前記プログラムの改ざんを検知した場合、前記制御部は、画像形成に関する全ての機能を停止し、原稿台１０１近傍に供えられた操作部１０３に対してエラー画面を表示させる。
【００３１】
一方、前記改ざん検知部が前記プログラムの改ざんを検知しない場合、前記制御部は、以下に示す各部（駆動部）を、画像形成を実行可能な通常状態へ遷移（移行）させる。更に、前記制御部は、前記操作部１０３に対して画像形成に関する画面（初期画面）を表示させる。
【００３２】
ユーザは、前記初期画面を見ながら、原稿Ｐを図１に示す原稿台１０１、或いは載置台１０２に載置し、前記初期画面を介してコピー条件を入力し、印刷の指示を行う。操作部１０３の構成については後述する。当該印刷の指示があると、前記駆動部が動作することで、印刷が行われる。
【００３３】
即ち、図１に示すように、本発明の複合機１００は、本体１０４と、本体１０４の上方に取り付けられたプラテンカバー１０５を備える。本体１０４の上面は原稿台１０１が設けられており、原稿台１０１は、プラテンカバー１０５によって開閉されるようになっている。プラテンカバー１０５は、自動原稿給紙装置１０６と載置台１０２と排紙台１０７が設けられている。
【００３４】
自動原稿給紙装置１０６は、プラテンカバー１０５の内部に形成された原稿搬送路１０８と、プラテンカバー１０５の内部に備えられたピックアップローラ１０９や搬送ローラ１１０Ａ、１１０Ｂ等で構成される。原稿搬送路１０８は、載置台１０２から、本体１０４に設けられた画像読取部１１１にて読み取りが行なわれる読取位置Ｘを経由して、排紙台１０７に通じる原稿の搬送路である。
【００３５】
自動原稿給紙装置１０６は、載置台１０２に載置された複数の原稿から１枚ずつ原稿をピックアップローラ１０９で搬送路内１０８に引き出し、搬送ローラ等によって引き出した原稿を、読取位置Ｘを通過させて、搬送ローラ１１０Ｂにより排紙台１０７に排紙する。読取位置Ｘを通過する時に原稿は画像読取部１１１にて読み取られる。
【００３６】
上記画像読取部１１１は、原稿台１０１の下方に設けられており、図２にその詳細が示されている。画像読取部１１１は、原稿台１０１を照射する走査方向に長い光源１１２と、原稿台からの光を選択的に通過させるスリット１１３と、原稿台からの光を導くミラー１１４とを備える第一の移動キャリッジ１１５や、第一の移動キャリッジ１１５からの反射光を再度反射するミラー１１６Ａ、１１６Ｂを備える第二の移動キャリッジ１１７、更にミラーで導かれた光を光学的に補正するレンズ群１１８、当該レンズ群１１８より補正された光を受光する撮像素子１１９、撮像素子１１９にて受光した光を電気信号に変換し、必要に応じて補正処理・画質処理・圧縮処理などを行う画像データ生成部１２０とで構成されている。
【００３７】
自動原稿給紙装置１０６上の原稿を読み取る場合には、光源１１２は、読取位置Ｘを照射できる位置に移動して発光する。光源１１２からの光は、原稿台１０１を透過して読取位置Ｘを通過する原稿にて反射し、スリット１１３、ミラー１１４、１１６Ａ、１１６Ｂ、レンズ群１１８によって撮像素子１１９に導かれる。撮像素子１１９は、受光した光を電気信号に変換して画像データ生成部１２０に送信する。画像データ生成部１２０には、上記撮像素子１１９にて受光された光がＲ（レッド）、Ｇ（グリーン）、Ｂ（ブルー）のアナログ電気信号として入力され、ここでアナログ−デジタル変換され、即ちデジタル化される。さらに、画像データ生成部１２０では、順次変換されたデジタル信号を単位データとし、これら単位データを補正処理、画質処理、圧縮処理等することで複数の単位データからなる画像データを生成する。
【００３８】
又、画像読取部１１１は、自動原稿給紙装置１０６で搬送される原稿だけでなく、原稿台１０１に載置された原稿も読み取ることが可能となっている。原稿台１０１に載置された原稿を読み取る場合は、第一のキャリッジ１１４は、光源１１２を発光しながら副走査方向に移動し、光源１１２から撮像素子１１９までの光路長を一定にするために、第二の移動キャリッジ１１７は第一の移動キャリッジ１１５の１／２の速度で撮像素子１１９方向に移動する。
【００３９】
撮像素子１１９は、自動原稿給紙装置１０６に搬送された原稿のときと同様に、ミラー１１４、１１６Ａ、１１６Ｂに導かれた光に基づいて原稿台１０１に載置された原稿からの光を電気信号に変換し、これに基づいて画像データ生成部１２０が画像データを生成し、画像記憶部１２０Ｂに記憶する。
【００４０】
本体１０４の画像読取部１１１の下方には、画像データを印刷する画像形成部１２１を備えている。画像形成部１２１が印刷できる画像データは、上記のように画像データ生成部１２０にて生成されたものや、その他、複合機１００とＬＡＮ等のネットワークに接続されたパーソナルコンピューター等の端末から通信部（ネットワークインターフェイス、図示せず）を介して受信したものである。尚、通信部は、ファクシミリ送受信機能、電子メール送受信機能等で用いられる。
【００４１】
さて、画像形成部１２１が行う印刷方式には、電子写真方式が用いられている。即ち、感光ドラム１２２を帯電器１２３で一様に帯電させ、その後レーザ１２４で感光ドラム１２２を照射して感光ドラム１２２に潜像を形成し、現像器１２５で潜像にトナーを付着させて可視像を形成し、転写ローラにて可視像を転写媒体に転写する方式である。
【００４２】
尚、フルカラー画像に対応した複合機では、上記現像器（ロータリー現像器）１２５が、図１の紙面に対して垂直方向に構成される回転軸を中心として周方向に回転させられ、対応する色のトナーが格納された現像ユニットが感光ドラム１２２の対向位置に配置される。この状態で、感光ドラム１２２上の潜像が、現像器１２５が格納するトナーにより現像され、中間転写ベルト１２６Ａに転写される。なお、現像器１２５は、イエロー（Ｙ）、シアン(Ｃ)、マゼンタ(Ｍ)、ブラック(Ｋ)の各トナーをそれぞれ格納する４つの現像ユニット１２５（Ｙ）、(Ｃ)、(Ｍ)、(Ｋ)を有している。上記中間転写ベルト１２６Ａへの転写を上記各色毎に繰り返すことにより、当該中間転写ベルト１２６Ａ上にフルカラー画像が形成される。
【００４３】
可視像が印刷される転写媒体、即ち用紙は、給紙カセット１３２、１３３、１３４などの給紙トレイに載置されたものである。
【００４４】
画像形成部１２１が印刷を行う際には、何れか１つの給紙トレイから転写媒体１枚を、ピックアップローラ１３５を用いて引き出し、引き出した転写媒体を搬送ローラ１３６やレジストローラ１３７で中間転写ベルト１２６Ａと転写ローラ１２６Ｂの間に送り込む。
【００４５】
画像形成部１２１は、中間転写ベルト１２６Ａと転写ローラ１２６Ｂの間に送り込んだ転写媒体に、上記中間転写ベルト１２６Ａ上の可視像を転写すると、可視像を定着させるために、搬送ベルト１２７で定着部１２８（定着装置）に転写媒体を送る。定着部１２８は、ヒータが内蔵された加熱ローラ１２９と、所定の圧力で加熱ローラ１２９に押し当てられた加圧ローラ１３０とで構成されている。加熱ローラ１２９と加圧ローラ１３０の間を転写媒体が通過すると、熱と転写媒体への押圧力によって可視像が転写媒体に定着する。定着が行われた転写媒体は排紙トレイ１３１に排紙される。
【００４６】
上記手順により、複合機１００はコピー機能の処理をユーザに提供する。尚、前記改ざん検知部は、前記制御部が画像形成に関するプログラムを起動する際に、当該プログラムの改ざんを検知したが、例えば、前記制御部が所定のプログラムを起動する際には、同様に、当該改ざん検知部が当該プログラムの改ざんを検知することになる。
【００４７】
図３は、本発明に係る操作部の全体構成を示す概念図である。
【００４８】
ユーザは、前記操作部１０３を用いて、上述のような画像形成についての設定条件等を入力したり、入力された設定条件等を確認したりする。前記設定条件等が入力される場合、前記操作部１０３に備えられたタッチパネル３０１（操作パネル）、タッチペン３０２、操作キー３０３が用いられる。
【００４９】
前記タッチパネル３０１には、アナログ抵抗膜方式が採用され、透光性を有する上部フィルムと下部ガラス基板とがスペーサを介して重ね合わされた構成となっており、上部フィルムと下部ガラス基板との各々の対向面には、ＩＴＯ（Ｉｎｄｉｕｍ  Ｔｉｎ  Ｏｘｉｄｅ）等からなる透明電極層が設けられている。更に、上部フィルムがユーザにより押下されると、当該押下位置に対応する上部フィルム側の透明電極層と下部ガラス基板側の透明電極層とが接触するよう構成されている。上部フィルム又は下部ガラス基板に電圧を印加し、下部ガラス基板又は上部フィルムから押下位置に対応する電圧値を取り出すことにより、当該電圧値に対応する座標値（押下位置）を検出する。検出された押下位置が、タッチパネル上に表示されたキーボード画面内の文字キー等の表示領域内に含まれると、当該文字が入力される。尚、文字キーの他に、例えば、キーボードキー、設定条件キー等であっても同様である。
【００５０】
又、下部ガラス基板の下方には、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）等の表示部が設けられており、当該表示部が、例えば、プログラムの改ざんが検知された場合のエラー画面、初期画面等の画面を表示することにより、タッチパネル上に特定の画面が表示される。これにより、タッチパネル３０１には、設定条件等を入力する機能と前記画面を表示する機能が兼ね備えられる。
【００５１】
又、タッチパネル３０１の近傍には、タッチペン３０２が備えられており、ユーザがそのタッチペン３０２の先をタッチパネル３０１に接触させると、当該接触位置（押下位置）に対応する座標値が、上記と同様に出力され、ユーザはタッチペン３０２により、表示された文字キー等を押下・選択することが可能となる。
【００５２】
更に、タッチパネル３０１近傍には、所定数の操作キー３０３が設けられ、例えば、テンキー３０４、スタートキー３０５、クリアキー３０６、ストップキー３０７、リセットキー３０８、電源キー３０９が備えられている。
【００５３】
次に、図４を用いて、複合機１００及び改ざん検知部の制御系ハードウェアの構成を説明する。図４は、本発明に係る複合機及び改ざん検知部の制御系ハードウェアの構成を示す図である。ただし、本発明に直接には関係しない各部の詳細は省略している。
【００５４】
複合機１００の制御回路は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）４０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）４０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）４０４、各駆動部に対応するドライバ４０５を内部バス４０６によって接続している。上記ＣＰＵ４０１は、例えば、ＲＡＭ４０３を作業領域として利用し、上記ＲＯＭ４０２、ＨＤＤ４０４等に記憶されているプログラムを実行し、当該実行結果に基づいて上記ドライバ４０５、操作部１０３、改ざん検知部４０８からのデータや指示を授受し、上記図１に示した各駆動部の動作を制御する。また、上記駆動部以外の後述する各手段（図５に示す）についても、上記ＣＰＵ４０１がプログラムを実行することで当該各手段を実現する。
【００５５】
又、制御回路の内部バス４０６には、内部インターフェイス４０７も接続されており、当該内部インターフェイス４０７は、改ざん検知部４０８の制御回路と複合機１００の制御回路とを接続する。ＣＰＵ４０１は、内部インターフェイス４０７を介して改ざん検知部４０８の制御回路からの命令信号を受信したり、改ざん検知部４０８の制御回路へ命令信号、データ等を送信したりする。
【００５６】
又、改ざん検知部４０８の制御回路には、内部バス４１２に、ＣＰＵ４０９、ＲＯＭ４１０、ＲＡＭ４１１、内部インターフェイス４１３を備える。複合機１００のＣＰＵ４０１が、複合機１００のＲＯＭ４０２又はＲＡＭ４０３に記憶された所定のプログラムを起動する際に、改ざん検知部４０８のＣＰＵ４０９が、内部インターフェイス４１３を介して、当該複合機１００のＣＰＵ４０１から改ざん検知の命令信号を受信したり、又はプログラムの起動に関する命令信号を受信したりする。又、改ざん検知部４０８のＣＰＵ４０９、ＲＯＭ４１０、ＲＡＭ４１１の機能も上記と同様であり、後述する各手段（図５に示す）についても、上記ＣＰＵ４０９がプログラムを実行することで当該各手段を実現する。上記ＲＯＭ４１０には、以下に説明する各手段を実現するプログラムやデータが記憶されている。
【００５７】
＜本発明の実施形態＞
次に、図５、図６を参照しながら、本発明の実施形態に係る実行手順について説明する。図５は、本発明の複合機及び改ざん検知部の機能ブロック図である。図６は、本発明の実行手順を示すためのフローチャートである。
【００５８】
ユーザが複合機１００の電源を投入すると、複合機１００の制御手段５０１が、予め設定された初期のプログラム（例えば、画像形成に関するプログラム）の起動を開始する（図６：Ｓ１０１）。
【００５９】
制御手段５０１が前記プログラムの起動をする際に、当該プログラムの改ざんを検知する旨を、改ざん検知部４０８の選択手段５０２に通知する。当該通知を受けた選択手段５０２は、前記制御手段５０１から改ざん検知の対象となるプログラムのプログラム識別情報（例えば、プログラムの名称「初期プログラム」等）を取得する。次に、選択手段５０２は、優先選択記憶手段５０３を参照し、当該優先選択記憶手段５０３に、取得したプログラム識別情報に対応したブロックプログラム識別情報（後述）が一時記憶されているか否か判定する（図６：Ｓ１０２）。
【００６０】
前記判定の結果、前記プログラム識別情報に対応したブロックプログラム識別情報が一時記憶されている場合は（図６：Ｓ１０２ＹＥＳ）、前記選択手段５０２は、当該ブロックプログラム識別情報を最優先で選択することになるが（図６：Ｓ１０４）、その説明は後述する。
【００６１】
一方、前記判定の結果、前記プログラム識別情報に対応したブロックプログラム識別情報が一時記憶されていない場合（図６：Ｓ１０２ＮＯ）、前記選択手段５０２は、ハッシュ値記憶手段５０４に予め記憶されているハッシュ値テーブルを参照する（図６：Ｓ１０３）。
【００６２】
図７（Ａ）は、本発明の実施形態に係るハッシュ値テーブルの一例を示す図である。図７（Ｂ）は、本発明の実施形態に係るブロックプログラムの一例を示す図である。
【００６３】
ハッシュ値テーブル７００には、図７（Ａ）に示すように、前記プログラム識別情報７０１（例えば、「初期プログラム」７０１ａ）と、当該プログラム全体を所定数（分割数、例えば、「１０」）のブロックに分割することにより得られるブロックプログラムのブロックプログラム識別情報７０２（例えば、「Ａ００１」７０２ａ）と、当該ブロックプログラムに所定のハッシュ関数を適用して得られる比較ハッシュ値７０３（例えば、「９８７６５」７０３ａ、ダイジェスト情報とも言う）とが関連付けて記憶される。
【００６４】
ここで、前記ブロックプログラム７０６は、図７（Ｂ）に示すように、プログラム全体７０４（プログラムの実体であるバイナリデータに対応）を、先頭のデータ７０５を含むデータ群から順番に、所定数（分割数）のブロックに均等分割することにより得られる。又、前記ブロックプログラム７０６の所定数は、分割後のブロックプログラム７０６に前記ハッシュ関数を適用してハッシュ値を算出した場合に、当該ハッシュ値を算出するために要する時間（ハッシュ値の算出時間）が、予め設定された所定時間（例えば、数秒−数十秒）未満となるように決定されている。
【００６５】
これにより、ハッシュ値の算出に要する時間を必要以上に長期化しないように制御することが可能となる。尚、前記ブロックプログラム７０６の所定数は、プログラム全体（バイナリデータ全体）のサイズに応じて適宜決定されるものの、例えば、初期プログラム（例えば、数十ＭＢ）であれば、１０個−１００個に決定される。
【００６６】
又、ブロックプログラム識別情報７０２は、当該ブロックプログラム７０６が分割元のプログラム全体７０４のうち、どこの領域に位置するかを示す情報（例えば、プログラムが記憶されているメモリの領域又は位置を示すアドレス）に対応している。
【００６７】
図７（Ｂ）では、プログラムの先頭のデータ７０５を含むブロックプログラム７０６ａには、ブロックプログラム識別情報として最初の順位を示す「Ａ００１」が割り付けられている。又、前記先頭のデータ７０５を含むブロックプログラム７０６ａを基準として、後続のブロックプログラム７０６ｂには、順次低い順位のブロックプログラム識別情報（例えば、「Ａ００１」の直後には「Ａ００２」）が割り付けられている。図７（Ｂ）では、所定数が１０個であるため、後尾のデータを含むブロックプログラム７０６ｚには、最後の順位を示すブロックプログラム識別情報（「Ａ０１０」）が割り付けられている。これにより、ブロックプログラム識別情報に基づいてブロックプログラムの領域又は位置を特定することが可能となる。尚、ブロックプログラム識別情報７０２には、アドレスに対応する情報に、更に、ブロックプログラムのサイズ情報を含めても構わない。
【００６８】
さて、ハッシュ値テーブル７００を参照した選択手段５０２は、先ほど取得したプログラム識別情報（「初期プログラム」）と、ハッシュ値テーブル７００のプログラム識別情報７０１とを比較し、一致したプログラム識別情報７０１（「初期プログラム」７０１ａ）に属する所定数のブロックプログラム識別情報７０２を特定する。次に、選択手段５０２が、所定数のブロックプログラム識別情報７０２のうち、特定のブロックプログラム識別情報７０２を選択する（図６：Ｓ１０４）。
【００６９】
ここで、選択手段５０２が、特定のブロックプログラム識別情報７０２を選択する場合、どのように選択しても構わないが、例えば、プログラムの種類、目的、用途に応じて、予め設定された選択数（例えば、１つ）のブロックプログラム識別情報を選択するよう構成する。
【００７０】
当該構成とすると、当該構成とすると、選択するブロックプログラム識別情報の選択数が増加すれば、ハッシュ値の算出時間が増大するものの、安全性を更に向上させることが可能となる。例えば、起動の迅速化よりも安全性を優先させるプログラム（ユーザ情報が含まれるアドレス帳機能プログラム）であれば、前記選択数を増加して（例えば、５つ）、安全性を確保すればよいし、安全性よりも起動の迅速化を優先させるプログラム（ユーザ情報を全く含まない初期プログラム）であれば、前記選択数を減少して、起動時間の短縮を図れる。尚、前記選択数は、プログラムの種類、目的、用途に応じて、管理者等の特定のユーザが適宜設定するよう構成すればよい。
【００７１】
更に、選択手段５０２が、プログラム全体のうち、半分から後尾までのデータに含まれるブロックプログラムのブロックプログラム識別情報を他のブロックプログラム識別情報よりも優先して選択するよう構成する。言い換えると、選択手段５０２が、所定数（分割数）の半分の値（例えば、所定数が１０個であれば、５個）よりも大きい順位（「Ａ００６」−「Ａ０１０」）のブロックプログラム識別情報から無作為に特定のブロックプログラム識別情報（例えば、「Ａ００６」）を選択する。
【００７２】
図８（Ａ）は、本発明の実施形態に係る改ざんされる前のプログラムと、改ざん後のプログラムの一例を示す図である。
【００７３】
プログラム全体のうち、所定の箇所のデータが改ざんされた場合、当該改ざんされたデータに応じて、当該改ざんされたデータの後続のデータは変更される。例えば、図８（Ａ）に示すように、プログラム全体のうち、中央部のデータ８０１が改ざんされて、新たに所定のデータ８０２が追加された場合、当該追加分８０２だけ、改ざんされたデータの後続のプログラム８０３（後続のデータ）は後方にシフトし、当該後続のプログラム８０３は、改ざん前の後続のプログラム８０４と全く異なるデータとなる。尚、中央部のデータ８０１のうち、所定のデータが削除された場合は、当該削除分だけ、改ざんされたデータの後続のプログラムは前方にシフトし、その結果、当該後続のプログラムは、改ざん前の後続のプログラムと全く異なるデータとなる。
【００７４】
すると、改ざん後の後続のプログラム８０３を一部でも含むブロックプログラム８０５の対応ハッシュ値は、当該ブロックプログラム８０５に対応する改ざん前のブロックプログラム８０６の比較ハッシュ値と全く異なる値となる。
【００７５】
更に、分割数の半分の値よりも大きい順位のブロックプログラム識別情報のブロックプログラムであれば、いずれのブロックプログラムであっても、プログラム全体の半分より後続のデータに対応する。そのため、当該ブロックプログラムには、改ざん後の後続のプログラムを一部でも含んでいる可能性が極めて高い。上述した構成を採用することにより、選択手段５０２は、改ざんによるデータ変更の影響を受け易いブロックプログラムのブロックプログラム識別情報を選択することが可能となり、プログラム全体の一部について改ざんの検知をするにも関わらず、プログラムの改ざんの検知精度を著しく低下させることを防止できる。又、プログラムの後半に、主としてパラメータ等のデータが存在しており、プログラムの改ざんは、当該データの改ざんを目的とする場合も多い。そのため、上述した構成により、当該データの改ざんを適切に検知することが可能となる。尚、改ざんされたデータが改ざん前のデータと比較して同等（同一のビット数）である場合も想定されるが、この場合は、稀であるため、上述した構成で問題はない。
【００７６】
さて、選択手段５０２が、特定のブロックプログラム識別情報（「Ａ００６」）を選択すると、その旨をハッシュ値算出手段５０５に通知する。当該通知を受けたハッシュ値算出手段５０５は、選択手段５０２からプログラム識別情報（「初期プログラム」）と特定のブロックプログラム識別情報（「Ａ００６」）とを取得する。次に、ハッシュ値算出手段５０２は、複合機１００のプログラム記憶手段５０６から前記プログラム識別情報（「初期プログラム」）に対応するプログラム全体から、特定のブロックプログラム識別情報（「Ａ００６」）に対応するブロックプログラムを取得する（図６：Ｓ１０５）。そして、ハッシュ値算出手段５０５は、ハッシュ関数記憶手段５０７に予め記憶されたハッシュ関数を参照して、取得したブロックプログラム（バイナリデータ）に当該ハッシュ関数を適用して対応ハッシュ値を算出する（図６：Ｓ１０６）。
【００７７】
ここで、ハッシュ値算出手段５０５が対応ハッシュ値を算出する場合、ブロックプログラムのサイズが、プログラム全体のサイズと比較して一部である（例えば、所定数が１０個であれば、１０分の１）ことから、所定のブロックプログラムに対応するハッシュ値の算出時間は、プログラム全体に対応するハッシュ値の算出時間と比較して、著しく短縮されることになる。例えば、プログラム全体に対応するハッシュ値の算出時間が、数分である場合（例えば、１分）、ブロックプログラムに対応するハッシュ値の算出時間は、数秒程度となる（例えば、１０分の１の６秒）。これにより、ハッシュ値の算出時間が飛躍的に短縮されることが理解される。
【００７８】
さて、ハッシュ値算出手段５０５が対応ハッシュ値を算出すると、その旨を検知手段５０８に通知する。当該通知を受けた検知手段５０８は、ハッシュ値記憶手段５０４のハッシュ値テーブル７００を参照して、特定のブロックプログラム識別情報（「Ａ００６」）に対応する比較ハッシュ値（「９８７６５」）を取得する。そして、検知手段５０８は、算出された対応ハッシュ値と、取得した比較ハッシュ値とを比較して、改ざんの有無を判定する（図６：Ｓ１０７）。
【００７９】
前記比較（判定）の結果、両者が一致した場合（図６：Ｓ１０７ＹＥＳ）、プログラムは改ざんされていないことになる。そのため、検知手段５０８は、その旨を複合機１００の制御手段５０１に通知する。当該通知を受けた制御手段５０１は、プログラム記憶手段５０６から、特定のプログラム識別情報（「初期プログラム」）に対応するプログラム全体を読み出す（図６：Ｓ１０８）。更に、制御手段５０１は、当該プログラムを実行する（図６：Ｓ１０９）。これにより、画像形成に関するプログラムが適切に実行される。又、上述したようにハッシュ値の算出時間が飛躍的に短縮されていることから、前記プログラムの起動時間も著しく短縮される。
【００８０】
ここで、制御手段５０１が、前記初期プログラムを実行することで、表示受付手段５０９に、画像形成に関する初期画面（図８（Ｂ））をタッチパネルに表示させたり、画像形成手段５１０に、画像形成に関する駆動部を通常状態へ移行させたりする。そして、ユーザは、タッチパネルに表示した初期画面を見ながら、画像形成に関する設定条件を入力したり、スタートキーを押下したりして、複合機１００に画像形成処理を実行させることになる。
【００８１】
一方、前記比較の結果、前記対応ハッシュ値と前記比較ハッシュ値とが不一致の場合（図６：Ｓ１０７ＮＯ）、制御手段５０１が起動しようとしているプログラムは何らかの理由によって既に改ざんされていることになる。そのため、検知手段５０８は、当該プログラムが改ざんされたことを検知し、その旨を機能停止手段５１１に通知する。当該通知を受けた機能停止手段５１１は、不一致の比較ハッシュ値に対応するブロックプログラム識別情報（「Ａ００６」）と、当該ブロックプログラム識別情報（「Ａ００６」）に対応するプログラム識別情報（「初期プログラム」）とをハッシュ値記憶手段５０４のハッシュ値テーブル７００から取得して、取得したブロックプログラム識別情報とプログラム識別情報とを、上述した優先選択記憶手段５０３に優先選択テーブルとして一時記憶させる（図６：Ｓ１１０）。
【００８２】
図９（Ａ）は、本発明の実施形態に係る優先選択テーブルの一例を示す図である。
【００８３】
優先選択テーブル９００には、図９（Ａ）に示すように、改ざんされたプログラムのプログラム識別情報９０１（「初期プログラム」）と、プログラム全体のうち、改ざんが検知されたブロックプログラムのブロックプログラム識別情報９０２（「Ａ００６」）とが関連付けて一時記憶される。
【００８４】
これにより、Ｓ１０２において、前記選択手段５０２が、改ざんされたプログラムのプログラム識別情報における特定のブロックプログラム識別情報を選択する場合、優先選択記憶手段５０３にはブロックプログラム識別情報優先選択テーブル９００）が一時記憶されていることから（図６：Ｓ１０２ＹＥＳ）、当該選択手段５０２が、一時記憶されたブロックプログラム識別情報９０２を優先選択記憶手段５０３から最優先で選択することになる（図６：Ｓ１０４）。
【００８５】
そのため、例えば、一度、プログラムの改ざんが検知された場合（図６：１０７ＮＯ）、ユーザにより再起動、再電源等のリセットがされて、制御手段５０１が、再度、改ざん後のプログラムを起動しようとしても（図６：Ｓ１０１）、選択手段５０２が、改ざんが検知されたブロックプログラムのブロックプログラム識別情報９０２を確実に選択し（図６：Ｓ１０２ＹＥＳ→Ｓ１０４）、前記検知手段５０８が、当該プログラムの改ざんを検知することになる（図６：１０７ＮＯ）。その結果、改ざん後のプログラムの実行を確実に停止することが可能となる。
【００８６】
さて、Ｓ１１０において、次に、機能停止手段５１１は、制御手段５０１に、複合機１００の動作を停止させる旨と、表示受付手段５０９にエラー画面を表示させる旨とを通知する。当該通知を受けた制御手段５０１は、電源（主電源）から画像処理に関する駆動部への通電を停止するとともに（図６：Ｓ１１１）、表示受付手段５０９は、タッチパネルにエラー画面を表示する（図６：Ｓ１１２）。
【００８７】
図９（Ｂ）は、本発明の実施形態に係るエラー画面の一例を示す図である。
【００８８】
エラー画面９０３には、図９（Ｂ）に示すように、プログラムが改ざんされた旨のメッセージ９０４と、複合機１００の全ての機能が停止した旨のメッセージ９０５と、ユーザにサービスマンを呼ぶことを促す旨のメッセージ９０６と、サービスマンの連絡先９０７と、改ざんされたプログラムの名称９０８とが表示される。これにより、ユーザに、プログラムの改ざんが発生したことを知らしめて、サービスマンへの連絡を促すことが可能となる。
【００８９】
又、機能停止手段５１１は、不一致であった対応ハッシュ値のブロックプログラム識別情報（「Ａ００６」）に対応するブロックプログラムをプログラム記憶手段５０６から取得し、改ざん解析記憶手段５１２に記憶させる（図６：Ｓ１１３）。改ざん解析記憶手段５１２は、特定のユーザ、例えば、管理者、サービスマン等がアクセス可能となるように構成されており、更に、改ざん検知部４０８及び複合機１００から取り外し可能となるよう構成されている。これにより、特定のユーザが、改ざん解析記憶手段５１２の内容（データ）を解析することで、改ざんされたデータや改ざんを実行した改ざん実行者の改ざんの意図等を知ることが可能となる。
【００９０】
そして、機能停止手段５１１は、プログラム記憶手段５０６又は複合機１００の所定のメモリから、改ざんされたプログラムへのアクセスログを取得する。又、機能停止手段５１１は、図示しない通信部からネットワークからの当該プログラムへのアクセスログ（通信ログ）を取得する。そして、機能停止手段５１１は、取得したアクセスログを前記改ざん解析記憶手段５１２に記憶させる（図６：Ｓ１１４）。これにより、特定のユーザが、改ざん解析記憶手段５１２の内容を解析することで、更に、改ざん前後のプログラムの変更経緯やアクセス者を知ることが可能となり、改ざん実行者の特定を促すことが可能となる。
【００９１】
更に、機能停止手段５１１は、複合機１００に搭載されたメモリのうち、ユーザ情報を記憶しているユーザ情報記憶手段５１３へのアクセスを禁止するとともに、通信部に、前記ネットワークへのアクセスを禁止させる（図６：Ｓ１１５）。これにより、例えば、改ざん後のプログラムがユーザ情報を流出するためのプログラムであり、制御手段５０１が、当該改ざん後のプログラムを実行することにより、ユーザ情報記憶手段５１３に記憶されたユーザ情報を、ネットワークを介して他の端末装置に流出するような事態を未然に防止することができる。その結果、安全性を十分に確保することが出来る。
【００９２】
これにより、プログラムの改ざんが検知された場合の処理は完了する。
【００９３】
さて、改ざんされたプログラムが修復された場合は、以下のようになる。
【００９４】
即ち、前記ユーザの知らせにより、サービスマン等の特定のユーザが、正規のプログラムのデータを記憶する正規プログラム記憶手段（図示せず）を、複合機１００のプログラム記憶手段５０６と接続し、表示受付手段５０９を介して制御手段５０１に、改ざん後のプログラムの修復を実行する旨のキーを入力する。当該キーの入力を受けた制御手段５０１は、当該プログラム記憶手段５０６に記憶された、改ざん後のプログラム（データ）を、正規のプログラム（データ）に書き換え（変更）する。
【００９５】
書き換え完了後に、制御手段５０１が、表示受付手段５０９を介して改ざん後のプログラムの修復を完了した旨の画面を表示させると、特定のユーザが、当該画面に示された確認キー（例えば、ＯＫキー）を入力する。当該キーの入力を受けた制御手段５０１は、その旨を機能停止手段５１１に通知する。当該通知を受けた機能停止手段５１１は、修復後のプログラムに対応するプログラム識別情報を制御手段５０１（又はプログラム記憶手段５０６）から取得し、優先選択記憶手段５０３を参照して、当該優先選択記憶手段５０３から修復後のプログラムに対応する前記優先選択テーブル９００を消去する。
【００９６】
これにより、次に、制御手段５０１が修復後のプログラムを起動する際に（図６：Ｓ１０１）、選択手段５０２が、ハッシュ値テーブルを参照して（図６：Ｓ１０２ＮＯ→Ｓ１０３）、所定数のブロックプログラム識別情報から無作為に特定のブロックプログラム識別情報を選択することとなり（図６：Ｓ１０４）、プログラムの改ざん検知が正常に再開されることになる。
【００９７】
このように、本発明の実施形態では、前記プログラム全体を所定数のブロックに分割することにより得られるブロックプログラムのブロックプログラム識別情報７０２と、当該ブロックプログラムに所定のハッシュ関数を適用して得られる比較ハッシュ値７０３とを関連付けて記憶するハッシュ値記憶手段５０４と、前記複合機１００が前記プログラムを起動する際に、前記ハッシュ値記憶手段５０４に記憶された特定のブロックプログラム識別情報７０２を選択する選択手段５０２と、選択された特定のブロックプログラム識別情報７０２に対応するブロックプログラムに前記ハッシュ関数を適用して対応ハッシュ値を算出するハッシュ値算出手段５０５と、前記対応ハッシュ値と前記比較ハッシュ値とを比較することにより、両者が一致しない場合に、前記プログラムが改ざんされたと検知する検知手段５０８とを備える。
【００９８】
これにより、複合機１００がプログラムを起動する際に行なわれるプログラムの改ざん検知は、当該プログラム全体から対応ハッシュ値を算出するのではなく、プログラム全体の一部であるブロックプログラムから対応ハッシュ値を算出する。そのため、前記プログラムの改ざんを検知するためのハッシュ値の算出時間を著しく短縮することが可能となり、その結果、前記プログラムの起動時間を飛躍的に短縮することが可能となる。
【００９９】
尚、本発明の実施形態では、前記ハッシュ値記憶手段５０４は、ブロックプログラムに前記ハッシュ関数を適用して得られる比較ハッシュ値をそのまま記憶し、前記ハッシュ値算出手段５０５は、特定のブロックプログラム識別情報に対応するブロックプログラムにそのまま前記ハッシュ関数を適用して対応ハッシュ値を算出するよう構成したが、他の構成でも構わない。
【０１００】
例えば、前記ハッシュ値記憶手段５０４は、前記ブロックプログラムに所定の付加情報（例えば、複合機１００又は改ざん検知部４０８に特有な付加情報）を付加した後のプログラムに、前記ハッシュ関数を適用して得られるハッシュ値を比較ハッシュ値として記憶し、前記ハッシュ値算出手段５０５は、対応ハッシュ値を算出する際に、ブロックプログラムに前記付加情報を付加した後のプログラムに前記ハッシュ関数を適用して対応ハッシュ値を算出するよう構成しても構わない。
【０１０１】
ここで、ブロックプログラムに前記付加情報を付加する場合、当該ブロックプログラムの先頭に付加してもよいし（先頭に付加する付加情報をプレフィックスと称する場合がある）、当該ブロックプログラムの後尾に付加しても構わない（後尾に付加する付加情報をサフィックスと称する場合がある）。当該構成により、仮に、改ざん実行者に前記ハッシュ関数を取得されたとしても、前記付加情報の存在により、当該改ざん実行者は、前記プログラム全体と前記ハッシュ関数とに基づいて比較ハッシュ値、対応ハッシュ値を再現することが出来ないため、安全性を更に向上させることが可能となる。
【０１０２】
又、前記付加情報は、改ざん検知部４０８の外部から変更も読み取りも出来ないようなメモリに記憶させることが好ましい。当該メモリとして、例えば、メモリを取り外し、分解すると当該メモリに記憶された情報が失われる耐タンパ性を有するメモリ（集積回路）等を採用することが出来る。
【０１０３】
又、本発明の実施形態では、選択手段５０２が、特定のブロックプログラム識別情報を一つ選択するよう構成したが、複数選択する場合は、ハッシュ値算出手段５０５が、選択された特定のブロックプログラム識別情報毎に、対応するブロックプログラムに前記ハッシュ関数を適用して対応ハッシュ値を算出し、検知手段５０８が、選択された特定のブロックプログラム識別情報毎に、前記対応ハッシュ値と前記比較ハッシュ値とを比較することにより、改ざんの有無を判定することは、言うまでも無い。
【０１０４】
又、本発明の実施形態では、選択手段５０２が、所定数（分割数）の半分の値よりも大きい順位のブロックプログラム識別情報から無作為に特定のブロックプログラム識別情報を選択するよう構成したが、他の構成でも構わない。即ち、選択手段５０２が、所定のブロックプログラム識別情報から、予め設定された所定の順番（昇順、降順等）で特定のブロックプログラム識別情報を順次選択するよう構成しても構わない。
【０１０５】
又、本発明の実施形態では、機能停止手段５１１が、前記検知手段５０８により前記プログラムの改ざんが検知された場合に、前記複合機１００の動作を停止させるとともにタッチパネルにエラー画面を表示させる処理、不一致の比較ハッシュ値に対応するブロックプログラムを改ざん解析記憶手段５１２に記憶させる処理、前記プログラムへのアクセスログ、又はネットワークからの前記プログラムへの通信ログを改ざん解析記憶手段５１２に記憶させる処理、前記複合機１００の所定のメモリのうち、ユーザ情報を記憶しているユーザ情報記憶手段５１３へのアクセス、又はネットワークへのアクセスを禁止させる処理の全てを実行するように構成したが、他の構成でも構わない。
【０１０６】
即ち、機能停止手段５１１が、上述した複数の処理のうち、少なくともいずれかの処理を実行するよう構成しても構わない。又、機能停止手段５１１が、改ざんが検知されたプログラムの種類、目的、用途に応じて、上述した複数の処理のうち、特定の処理を実行するよう構成しても構わない。例えば、前記プログラムが、ネットワーク（電話回線）を介して画像データを送信するプログラム（例えば、「ファクシミリ機能プログラム」）である場合、前記機能停止手段５１１が、当該ネットワークに関連する処理を実行するよう構成しても良いし、前記プログラムが、ユーザ情報に基づいてユーザの宛先を表示するプログラム（例えば、「アドレス帳機能プログラム」）である場合、前記機能停止手段５１１が、当該ユーザ情報に関連する処理を実行するよう構成しても良い。
【０１０７】
又、本発明の実施形態では、複合機１００に搭載された改ざん検知部４０８（改ざん検知装置）が各手段を備えるよう構成したが、当該各手段を実現するプログラムを記憶媒体に記憶させ、当該記憶媒体を提供するよう構成しても構わない。当該構成では、上記プログラムを改ざん検知装置に読み出させ、当該改ざん検知装置が上記各手段を実現する。その場合、上記記録媒体から読み出されたプログラム自体が本発明の作用効果を奏する。さらに、各手段が実行するステップを改ざん検知方法として提供することも可能である。又、プログラムは、ＣＤ−ＲＯＭなどのコンピュータ読み取り可能な記録媒体に記録された状態で流通させることも可能である。
【産業上の利用可能性】
【０１０８】
以上のように、本発明に係る改ざん検知装置及び改ざん検知方法は、複合機はもちろん、複写機、プリンタ等の電子機器に有用であり、プログラムの起動に要する時間を短縮することが可能な改ざん検知装置及び改ざん検知方法として有効である。
【符号の説明】
【０１０９】
１００  複合機
４０８  改ざん検知部
５０１  制御手段
５０２  選択手段
５０３  優先選択記憶手段
５０４  ハッシュ値記憶手段
５０５  ハッシュ値算出手段
５０６  プログラム記憶手段
５０７  ハッシュ関数記憶手段
５０８  検知手段
５０９  表示受付手段
５１０  画像形成手段
５１１  機能停止手段
５１２  改ざん解析記憶手段
５１３  ユーザ情報記憶手段
【図１】
2012078952.tif 000003
【図２】
2012078952.tif 000004
【図３】
2012078952.tif 000005
【図４】
2012078952.tif 000006
【図５】
2012078952.tif 000007
【図６】
2012078952.tif 000008
【図７】
2012078952.tif 000009
【図８】
2012078952.tif 000010
【図９】
2012078952.tif 000011