(57)【要約】【課題】装置のドア、カバー等を閉めたときの電源再投入時のリセット解除時に、各モジュールのＣＰＵはプログラムの改ざん検知処理を行うと、ドア、カバー等の度に、改ざん検知処理が実行され、装置が使用可能になるまでの時間が長くなる。【解決手段】複数のＣＰＵを有する情報処理装置であって、前記複数のＣＰＵのうちの第１ＣＰＵが実行するプログラムの改ざんの有無を検証する第２ＣＰＵと、前記情報処理装置において第１の所定の状態が生じたかどうかを記憶する第１記憶手段と、を有し、前記第２ＣＰＵは起動時、前記第１記憶手段に前記第１の所定の状態が生じたことが記憶されていると、前記プログラムの改ざんの有無を検証するための処理をスキップする。【選択図】  図５
2020181501.tif 000002
【特許請求の範囲】
【請求項１】
複数のＣＰＵを有する情報処理装置であって、
前記複数のＣＰＵのうちの第１ＣＰＵが実行するプログラムの改ざんの有無を検証する第２ＣＰＵと、
前記情報処理装置において第１の所定の状態が生じたかどうかを記憶する第１記憶手段と、を有し、
前記第２ＣＰＵは起動時、前記第１記憶手段に前記第１の所定の状態が生じたことが記憶されていると、前記プログラムの改ざんの有無を検証するための処理をスキップすることを特徴とする情報処理装置。
【請求項２】
前記第１の所定の状態は、前記情報処理装置のドアの開閉であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２ＣＰＵは、前記ドアが開けられた後、閉じられることにより起動されることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記第２ＣＰＵは、前記プログラムの改ざんの有無を検証するための処理により前記プログラムが改ざんされていないと判定した後、或いは前記処理をスキップした後、前記第１ＣＰＵのリセットを解除することを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記第１記憶手段は、前記ドアが開けられたことに応じて、当該ドアが開けられたことを示す第１情報を保持し、前記ドアが閉じられても前記第１情報を保持することを特徴とする請求項２又は３に記載の情報処理装置。
【請求項６】
前記情報処理装置において第２の所定の状態が生じたかどうかを記憶する第２記憶手段を更に有し、
前記第２ＣＰＵは、前記第２記憶手段が前記第２の所定の状態が生じたことを記憶している場合、前記第１記憶手段が前記前記第１の所定の状態が生じたことを記憶しているか否かに拘わらず、前記プログラムの改ざんの有無を検証するための処理を実行することを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記第２の所定の状態は、前記プログラムを記憶するメモリを実装している基板の挿抜であることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記第２記憶手段は、前記基板が抜かれたことを検出する検出手段が出力する第２情報を保持し、前記基板が装着されても当該第２情報を保持することを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記プログラムは、書き換え可能な不揮発メモリに記憶されていることを特徴とする請求項１乃至８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記第２ＣＰＵは、書き換えできない不揮発メモリに記憶されているプログラムを実行して前記書き換え可能な不揮発メモリに記憶されているプログラムの改ざんの有無を検証することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
複数のＣＰＵを有する情報処理装置の制御方法であって、
第２ＣＰＵが、前記複数のＣＰＵのうちの第１ＣＰＵが実行するプログラムの改ざんの有無を検証する検証工程と、
前記情報処理装置において第１の所定の状態が生じたかどうかを記憶する記憶工程と、
前記記憶工程で前記第１の所定の状態が生じたことが記憶されていると、前記第２ＣＰＵは起動時、前記プログラムの改ざんの有無を検証するための処理をスキップすることを特徴とする制御方法。
【請求項１２】
コンピュータに、請求項１１に記載の制御方法の各工程を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置とその制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
セキュリティの向上を目的として、メモリに記憶されているプログラムの改ざんの有無を検証する技術がある。
【０００３】
特許文献１では、装置内のＣＰＵが、そのリセット解除後に実行されるブートプログラムを実行する際に、アプリケーションプログラムのハッシュ値を求める。そして、その求めたハッシュ値と、認証済アプリケーションプログラムのハッシュ値とを比較し、それらが一致した場合は、アプリケーションプログラムが改ざんされていないと判定し、そのアプリケーションプログラムを起動する。一方、それらが一致しないときは、そのアプリケーションプログラムが改ざんされていると判定して、そのアプリケーションプログラムの実行を停止している。以降この検証処理を改ざん検知処理と呼ぶ。
【０００４】
一般にマルチファンクションプリンタ等の情報処理装置は、それぞれがＣＰＵを有する複数のモジュールを有しており、各ＣＰＵが実行するプログラムをそれぞれのモジュールで、上述した改ざん検知処理を実行することにより装置のセキュリティを向上させることができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１８０９６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
例えば、印刷装置の複数のモジュール中には、消耗品の補給、ジャム処理などのために装置のドア、カバー等を開けると、そのモジュールへの電力供給が遮断されるものがある。ここで各モジュールのＣＰＵは、電源遮断の後の電源の再投入時、リセットが解除されると改ざん検知処理を行うように構成されている。従って、装置のドア、カバー等を閉めたときの電源再投入時のリセット解除時に、各モジュールのＣＰＵはプログラムの改ざん検知処理を行うことになる。一般に、ユーザがジャムの除去などを行ってドア、カバー等が閉めたときは、短時間で装置が使用可能になることが求められる。しかし、ドア、カバー等の度に上述した改ざん検知処理を実行すると、装置が使用可能になるまでの時間が長くなるという課題があった。
【０００７】
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
【０００８】
本発明の目的は、例えば、消耗品補給、ジャムなどからの起動時間を短くする技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
複数のＣＰＵを有する情報処理装置であって、
前記複数のＣＰＵのうちの第１ＣＰＵが実行するプログラムの改ざんの有無を検証する第２ＣＰＵと、
前記情報処理装置において第１の所定の状態が生じたかどうかを記憶する第１記憶手段と、を有し、
前記第２ＣＰＵは起動時、前記第１記憶手段に前記第１の所定の状態が生じたことが記憶されていると、前記プログラムの改ざんの有無を検証するための処理をスキップすることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、装置のセキュリティを維持しながら、例えば、消耗品補給、ジャムなどからの起動時間を短くできるという効果がある。
【００１１】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１２】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】実施形態１に係る複合機のハードウェア構成を説明するブロック図。
【図２】実施形態１に係る複合機のメインコントローラが有するソフトウェアモジュールを説明する機能ブロック図。
【図３】実施形態１に係る複合機のサブコントローラが有するソフトウェアモジュールを説明する機能ブロック図。
【図４】実施形態１に係るドアオープン検出部とドアオープン記憶部の詳細な構成を説明する回路図（Ａ）と、主電源のオンに続き、ドアの開け閉めを行なった場合の信号動作を時系列で説明するタイミング図（Ｂ）。
【図５】実施形態１に係る複合機のサブコントローラのＣＰＵ１４２による処理を説明するフローチャート。
【図６】実施形態２に係る複合機のハードウェア構成を説明するブロック図。
【図７】実施形態２に係る基板挿抜検出部と基板挿抜記憶部の詳細な構成を説明す回路図（Ａ）と、主電源のオンに続き、ドアがオープンされ、その中の基板が取り外された後、基板が装着されてドアが閉じられるまでの信号動作を時系列で説明するタイミング図（Ｂ）。
【図８】実施形態２に係る複合機のサブコントローラのＣＰＵ１４２による処理を説明するフローチャート。
【発明を実施するための形態】
【００１３】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これら複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一もしくは同様の構成に同一の参照番号を付し、重複した説明は省略する。また、実施形態に係る情報処理装置として複合機を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
【００１４】
［実施形態１］
図１は、実施形態１に係る複合機１０のハードウェア構成を説明するブロック図である。
【００１５】
メインコントローラ２０、サブコントローラ３０は、複合機１０の制御を行うためのシステム（モジュール）である。実施形態１では、それぞれ電気基板として構成されているものとする。
【００１６】
まずメインコントローラ２０の構成について説明する。
【００１７】
システムバス１００は、システムバス１００に接続されている各モジュールを相互に接続する。このシステムバス１００を介して、ＣＰＵ１０１やＣＰＵ１０２からの制御信号や各装置間のデータ信号が送受信される。ＣＰＵ１０１は、メインコントローラ２０のメインプログラム２０３を実行して、この複合機１０全体の制御を行う。ＣＰＵ１０２は、フラッシュメモリ１１８に格納されたブートプログラム２０２（図２）やメインプログラム２０３（図２）の署名検証や、各制御部の初期化を実行する他、ＣＰＵ１０１のリセット解除を行う。ＲＯＭ１０３はリードオンリーメモリであり、ＣＰＵ１０２で実行されるローダ２００（図２）を格納している。ＲＯＭ１０３は改ざんが困難であり、その内容は信頼できるものとする。ＲＡＭ１０４は、ＳＲＡＭで構成されたランダムアクセスメモリで、プログラムや一時的なデータの格納などに使用される。
【００１８】
スキャナＩ／Ｆ制御部１０５は、スキャナ１１４による原稿の読み取りを制御する。プリンタＩ／Ｆ制御部１０６は、プリンタ１１５による印刷処理などを制御する。画像処理部１０７は、スキャナ１１４から読み取った原稿の画像データに画像処理（シェーディング処理）を行ったり、プリンタ１１５で印刷するためにプリンタ１１５に出力されるデータに画像処理（ハーフトーン処理やスムージング処理）を行う。パネル制御部１０８は、タッチパネル式の操作パネル１１６を制御し、各種情報の表示、使用者からの指示の入力を受け付ける。ＯＴＰ（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ）ＲＯＭ（以下、ＯＴＰと呼ぶ）１０９は、製造時に一度だけ書き込みが可能なＲＯＭで、ブートプログラム２０２などの署名検証のための検証鍵を保持している。
【００１９】
ＨＤＤ制御部１１０は、ＨＤＤ１１７に対してデータを読み書きする制御を行う。例えば、ＲＡＭ１０４に格納されている画像データをシステムバス１００経由でＨＤＤ１１７に書き出して格納することができる。フラッシュメモリ制御部１１１は、フラッシュメモリ１１８に対してデータを読み書きする制御を行う。フラッシュメモリ制御部１１１は、フラッシュメモリ１１８に格納されているプログラムをシステムバス１００経由でＲＡＭ１０４に展開する。ネットワークＩ／Ｆ制御部１１２は、ネットワーク１１９上の他のデバイスやサーバとの間でデータの送受信を制御する。通信制御部１１３は、サブコントローラ３０やサブコントローラ４０との通信を行う。フラッシュメモリ１１８は、不揮発メモリであり、複合機１０の固定パラメータ等を格納している。またフラッシュメモリ１１８は、ＣＰＵ１０２が実行するブートプログラム２０２と対応する署名データ２０７（図２）、ＣＰＵ１０１が実行するメインプログラム２０３（図２）と対応する署名データ２１０（図２）を格納している。
【００２０】
次にサブコントローラ３０の構成について説明する。
【００２１】
システムバス１３０は、システムバス１３０に接続されている各モジュールを相互に接続する。このシステムバス１３０を介して、ＣＰＵ１３１からの制御信号や各装置間のデータ信号が送受信される。ＣＰＵ１４１は、サブコントローラ３０のメインプログラムを実行し、サブコントローラ３０の制御を行う。ＣＰＵ１４２は、フラッシュメモリ１５８に格納されたブートプログラム３０２（図３）やメインプログラム３０３（図３）の署名検証や各制御部の初期化を実行する他、ＣＰＵ１４１のリセット解除を行う。ＲＯＭ１４３は、リードオンリーメモリであり、ＣＰＵ１４２で実行されるローダ３００（図３）を格納している。ＲＯＭ１４３は改ざんが困難であり、その内容は信頼できるものとする。ＲＡＭ１４４は、ＳＲＡＭで構成されたランダムアクセスメモリで、プログラムや一時的なデータの格納などに使用される。
【００２２】
デバイスＩ／Ｆ制御部１３３は、サブコントローラ３０に接続されているハードウェアデバイス１３６の制御を行う。ハードウェアデバイス１３６の初期化処理が必要な場合には、初期化処理の制御を行う。フラッシュメモリ制御部１５１は、フラッシュメモリ１５８に対してデータを読み書きする制御を行う。フラッシュメモリ制御部１５１は、フラッシュメモリ１５８に格納されているプログラムをシステムバス１３０経由でＲＡＭ１４４に展開する。通信制御部１５３は、メインコントローラ２０の通信制御部１１３と通信してメインコントローラ２０との間の通信を行う。フラッシュメモリ１５８は不揮発性の記憶部で、サブコントローラ３０で用いられるデータ等を格納している。また、フラッシュメモリ１５８は、ＣＰＵ１４２が実行するブートプログラム３０２と対応する署名データ３０７（図３）、ＣＰＵ１４１が実行するサブコントローラ３０のメインプログラム３０３と対応する署名データ３１０（図３）を格納している。
【００２３】
図２は、実施形態１に係る複合機１０のメインコントローラ２０が有するソフトウェアモジュールを説明する機能ブロック図である。
【００２４】
ローダ２００は、複合機１０の電源がオンになるとＣＰＵ１０２で実行されるプログラムで、信頼できる（書き換えできない）ＲＯＭ１０３に格納されている。ローダ２００は、プログラムロード部２０１を有し、検証鍵、及びブートプログラムの署名データ２０７を用いて、フラッシュメモリ１１８のブートプログラム２０２を署名検証した後、ブートプログラム２０２の実行を開始する。
【００２５】
ブートプログラム２０２は、ローダ２００による署名検証後にＣＰＵ１０２で実行されるプログラムで、フラッシュメモリ１１８に格納される。ブートプログラム署名データ２０７は、署名鍵及びブートプログラム２０２のハッシュ値から計算した、ブートプログラム２０２のデジタル署名データである。署名データの生成、検証アルゴリズムとして、ＲＳＡ、ＤＳＡ、もしくはＥＣＤＳＡが使用される。
【００２６】
システム初期化部２０５は、ネットワークＩ／Ｆ制御部１１２、通信制御部１１３等の各種初期化を行う。プログラムロード部２０６は、検証鍵、及びメインプログラム署名データ２１０を用いて、メインプログラム２０３の署名検証を行う。メインプログラム２０３の署名検証が成功すると、ＣＰＵ１０１のリセットが解除され、ＣＰＵ１０１はメインプログラム２０３の実行を開始する。尚、ブートプログラム２０２におけるブログラムロード部２０６の署名検証処理は、ローダ２００におけるプログラムロード部２０１の署名検証処理と同等の内容である。
【００２７】
メインプログラム２０３はＣＰＵ１０１で実行されるプログラムで、フラッシュメモリ１１８に格納されている。カーネル２０８は、複合機１０の制御システムの核となるプログラムで、アプリケーション２０９に提供する各種リソース制御やスケジューリング等を行う。アプリケーション２０９は、複合機１０が提供する各種機能（コピー、ＳＥＮＤ、プリント等）を実現するためのプログラムである。アプリケーション２０９には、スキャナＩ／Ｆ制御部１０５、プリンタＩ／Ｆ制御部１０６、画像処理部１０７の制御や、操作パネル１１６に表示する画面データの生成、及び複合機１０の総合的な状態制御などが含まれる。
【００２８】
図３は、実施形態１に係る複合機１０のサブコントローラ３０が有するソフトウェアモジュールを説明する機能ブロック図である。
【００２９】
改ざん検知処理を行うための構成は、メインコントローラ２０とほぼ同様であるが、ＲＯＭ１４３のローダ３００が状態判断部３２０持つことが差異である。動作フローについては図５を参照して後述する。以下、簡単に図３を説明する。
【００３０】
ローダ３００は、複合機１０の電源がオンになるとＣＰＵ１４２で実行されるプログラムで、信頼できる（書き換えできない）ＲＯＭ１４３に格納されている。ローダ３００は、状態判断部３２０とプログラムロード部３０１とを有する。プログラムロード部３０１は、検証鍵、及びブートプログラムの署名データ３０７を用いて、フラッシュメモリ１５８のブートプログラム３０２を署名検証した後、ブートプログラム３０２の実行を開始する。状態判断部３２０は、複合機１０の状態が所定の状態かどうかを判断するもので、実施形態１では、この所定の状態として、複合機１０のドアが開閉された場合を例に説明する。
【００３１】
ブートプログラム３０２は、ローダ３００による署名検証後にＣＰＵ１４２で実行されるプログラムで、フラッシュメモリ１５８に格納される。ブートプログラム署名データ３０７は、署名鍵及びブートプログラム３０２のハッシュ値から計算した、ブートプログラム３０２のデジタル署名データである。署名データの生成、検証アルゴリズムとして、ＲＳＡ、ＤＳＡ、もしくはＥＣＤＳＡが使用される。
【００３２】
システム初期化部３０５は、サブコントローラ３０に接続された各部の各種初期化を行う。プログラムロード部３０６は、検証鍵、及びメインプログラム署名データ３１０を用いて、メインプログラム３０３の署名検証を行う。メインプログラム３０３の署名検証が成功すると、ＣＰＵ１４１のリセットが解除され、ＣＰＵ１４１はメインプログラム３０３の実行を開始する。尚、ブートプログラム３０２におけるブログラムロード部３０６の署名検証処理は、ローダ３００におけるプログラムロード部３０１の署名検証処理と同等の内容である。
【００３３】
メインプログラム３０３はＣＰＵ１４１で実行されるプログラムで、フラッシュメモリ１５８に格納されている。カーネル３０８は、複合機１０の制御システムの核となるプログラムで、アプリケーション３０９に提供する各種リソース制御やスケジューリング等を行う。アプリケーション３０９は、複合機１０が提供する各種機能を実現するためのプログラムである。アプリケーション３０９は、ハードウェアデバイス３１６が提供する各種機能（モータ駆動制御、レーザ駆動制御、定着温度制御等）を実現するためのプログラムである。
【００３４】
複合機１０の主電源スイッチ１６１がオンされると、電源供給部１６２は複合機１０の全体への電源供給を開始する。電源供給は２系統あり、サブコントローラ３０へ供給される電源１８３は、ドアオープン検出器１６３からの信号１８１がドアのオープンを示すときは、その電源供給を停止する。尚、サブコントローラ１８０以外への電源１８０は常に供給されている。
【００３５】
ドアオープン検出部１６３とドアオープン記憶部１６５の詳細は図４を参照して補足説明する。
【００３６】
図４（Ａ）は、実施形態１に係るドアオープン検出部１６３とドアオープン記憶部１６５の詳細な構成を説明する回路図である。
【００３７】
ドアオープン検出部１６３は、ドアの開閉と連動するスイッチ４０１を含み、信号１８１は、ドアがオープンされるとスイッチ４０１がオフとなって「１」を出力し、ドアが閉じられるとスイッチ４０１がオンとなって「０」を出力する。ドアオープン記憶部１６５は、この信号１８１を入力し、その信号１８１の立ち上がり時（ドアがオープンされたときに）に内部のフリップフロップ４０２に「１」をセットして、ドアがオープンされたことを記憶する。
【００３８】
図４（Ｂ）は、主電源のオンに続き、ドアの開け閉めを行なった場合の信号動作を時系列で説明するタイミング図である。
【００３９】
タイミングｔ１で主電源スイッチがオンされると、電源１８０、電源１８３の供給が開始される。そしてリセットジェネレータ１７１は、タイミングｔ２までリセット信号１７２を出力する。このリセット信号１７２によって、ドアオープン記憶部１６５のフリップフロップ４０２は、出力「０」を維持する。次にタイミングｔ３でドアがオープンされると、スイッチ４０１がオフとなって「１」を出力し、フリップフロップ４０２は「１」にセットされ、信号１８２は「１」を出力する。この値は、タイミングｔ６でドアが閉じられても維持される。つまり信号１８２は、主電源がオンされた後にドアが開けられたことがあるかを示す信号である。またタイミングｔ３でドアがオープンされるとサブコントローラ３０への電源１８３の供給が停止される。そしてタイミングｔ４で、そのドアが閉じられるとサブコントローラ３０への電源１８３の供給が再開される。後述する図５のフローチャートは、このタイミングｔ４で、そのドアが閉じられて、サブコントローラ３０への電源供給が再開されることにより開始される。
【００４０】
図５は、実施形態１に係る複合機１０のサブコントローラ３０のＣＰＵ１４２による処理を説明するフローチャートである。このフローチャートで示す処理は、サブコントローラ３０の電源が投入され、リセットジェネレータ１７５がＣＰＵ１４２のリセットを解除することにより開始される。尚、この処理はＣＰＵ１４２がＲＯＭ１４３に格納されているプログラムを実行することにより達成される。
【００４１】
先ずＳ５０１でＣＰＵ１４２は、ドアオープン記憶部１６５からの出力信号１８２の値をリードする。次にＳ５０２に進みＣＰＵ１４２は、その読み取った値が「１」かどうか、即ち、ドアの開閉がなされたかどうか判定し、ドアの開閉がなされたと判定すると、プログラムの改ざん検知処理をスキップしてＳ５１１に進みＣＰＵ１４２は、システム初期化部３０５による処理を実行する。このＳ５１１では、サブコントローラ３０に接続された各部の各種初期化を行ってＳ５０８に進む。。Ｓ５０８でＣＰＵ１４２は、リセット信号１７７を解除してＣＰＵ１４１を起動させる。
【００４２】
一方、Ｓ５０２でＣＰＵ１４２は、ドアの開閉がなされていないと判定するとＳ５０３に進む。Ｓ５０３以降の処理は、メインコントローラ１０のソフトモジュール構成で説明した改ざん検知処理と同様である。即ち、Ｓ５０３でＣＰＵ１４２は、検証鍵、及びブートプログラム署名データ３０７を用いてブートプログラム３０２を署名検証する。
【００４３】
ブートプログラム３０２は、ローダ３００による署名検証後にＣＰＵ１４２で実行されるプログラムで、フラッシュメモリ１５８に格納されている。ブートプログラム署名データ３０７は、署名鍵及びブートプログラム３０２のハッシュ値から計算した、ブートプログラム３０２のデジタル署名データである。署名データ生成、検証アルゴリズムとして、ＲＳＡ、ＤＳＡ、もしくはＥＣＤＳＡが使用される。そしてＳ５０４に進みＣＰＵ１４２は、Ｓ５０３の署名検証結果を判定し、検証に成功したときはＳ５０５に進みＣＰＵ１４２は、ブートプログラム３０２に含まれるプログラムのシステム初期化部３０５を実行する。システム初期化部３０５は、通信制御部１５３の通信速度設定等の各種初期化を行うプログラムである。そしてＳ５０６に進みＣＰＵ１４２は、プログラムロード部３０６を実行する。プログラムロード部３０６は、検証鍵、及びメインプログラム署名データ３１０を用いてメインプログラム３０３の署名検証を行う。そしてＳ５０７に進みＣＰＵ１４２は、メインプログラム３０３の署名検証に成功するとＳ５０８に進み、ＣＰＵ１４１のリセット信号１７７を解除する。以降ＣＰＵ１４１はメインプログラム３０３の実行を開始する。ＣＰＵ１４１の動作としては終了する。一方、Ｓ５０４或いはＳ５０７で、メインプログラム３０３の署名検証に失敗した場合はＳ５１２に進みＣＰＵ１４２は、操作パネル１１６へエラー表示をするなどのエラー処理を行って、この処理を終了する。
【００４４】
以上説明したように実施形態１によれば、複合機のドアが開閉されたことによる電源の再投入による起動時には、プログラムの改ざんの有無を検証することなくプログラムを起動できるため、ドアが開閉された場合の起動時間を短くできる。
【００４５】
［実施形態２］
次に実施形態２について説明する。サブコントローラ３０の基板は、複合機１０のメインテナンス性のために主電源がオンの状態で、ドア部から着脱可能な構成にしてもよい。しかしながら、サブコントローラ３０の基板にはフラッシュメモリ１５８が実装されているため、このフラッシュメモリ１５８を付け替える等して、その内容が改ざんされる恐れがある。そこで実施形態２では、基板が挿抜された場合は、その基板に実装されているフラッシュメモリの改ざん検知処理を行う例を説明する。よって実施形態２では、状態判断部３２０は、ドアの開閉に加えて、フラッシュメモリ１５８が実装されている基板が挿抜されたかどうかも判断している。
【００４６】
図６は、実施形態２に係る複合機１０のハードウェア構成を説明するブロック図である。図６において、前述の図１と共通する部分は同じ参照番号で示し、それらの説明を省略する。実施形態１との相違点は、基板挿抜検出部１６６と基板挿抜記憶部１６７が追加された点にある。
【００４７】
基板挿抜検出部１６６と、基板挿抜記憶部１６７の詳細は図７を参照して説明する。
【００４８】
図７（Ａ）は、実施形態２に係る基板挿抜検出部１６６と基板挿抜記憶部１６７の詳細な構成を説明す回路図である。
【００４９】
基板挿抜検出部１６６は、基板の装着時にオン、取り外し時にオフとなるスイッチ７０１を含み、スイッチ７０１がオンの時は「０」、スイッチ７０１がオフの時は「１」となる信号１８５を出力する。基板挿抜記憶部１８６は、信号１８５を入力し、その立ち上がり時に内部のフリップフロップ７０２に「１」がセットされる。
【００５０】
図７（Ｂ）は、主電源のオンに続き、ドアがオープンされ、その中の基板が取り外された後、基板が装着されてドアが閉じられるまでの信号動作を時系列で説明するタイミング図である。
【００５１】
タイミングｔ１で、主電源がオンされると電源１８０，１８３がオンとなり、リセット信号１７２がオンとなる。リセットジェネレータ１７１は、タイミングｔ２までリセット信号１７２を出力する。このリセット信号１７２によって、基板挿抜記憶部１８６のフリップフロップ７０２は、出力「０」を維持する。次にタイミングｔ３で、ドアが開けられると、サブコントローラ３０への電源１８３の供給がオフされる。このとき、前述したように、ドアがオープンされると、スイッチ４０１がオフとなって「１」を出力し、フリップフロップ４０２は「１」にセットされ、信号１８２は「１」を出力する。この値は、タイミングｔ６でドアが閉じられても維持される。つまり信号１８２は、主電源がオンされた後にドアが開けられたことがあるかを示す信号である。
【００５２】
次にタイミングｔ４で、サブコントローラ３０の基板が取り外されるとスイッチ７０１はオフする。これにより信号１８５は「１」へ変化し、基板挿抜記憶部１８６のフリップフロップ７０２は「１」にセットされて信号１８６が「１」で出力される。この値は、タイミングｔ５でサブコントローラ３０の基板が装着された後、及びタイミングｔ６でドアが閉じられた後も維持される。つまり信号１８６は、主電源がオンされた後に、サブコントローラ３０の基板が挿抜されたことがあるかを示す信号である。またタイミングｔ３でドアがオープンされるとサブコントローラ３０への電源１８３の供給が停止される。そしてタイミングｔ６で、そのドアが閉じられるとサブコントローラ３０への電源１８３の供給が再開される。後述する図８のフローチャートは、このタイミングｔ６で、そのドアが閉じられて、サブコントローラ３０への電源供給が再開されることにより開始される。
【００５３】
図８は、実施形態２に係る複合機１０のサブコントローラ３０のＣＰＵ１４２による処理を説明するフローチャートである。このフローチャートで示す処理は、サブコントローラ３０の電源が投入され、リセットジェネレータ１７５がＣＰＵ１４２のリセットを解除することにより開始される。尚、この処理はＣＰＵ１４２がＲＯＭ１４３に格納されているプログラムを実行することにより達成される。また図８において、前述の図５のフローチャートと同じ処理には、同じ参照番号を付してその説明を省略する。
【００５４】
先ずＳ８０１でＣＰＵ１４２は、基板挿抜記憶部１６７からの信号１８６の値をリードする。次にＳ８０２に進みＣＰＵ１４２は、その信号１８６の値が「１」かどうか、即ち、サブコントローラ３０の基板が挿抜されたことがあるかどうか判定する。ここで、サブコントローラ３０の基板が挿抜されたことがあると判定するとＳ５０３に進みＣＰＵ１４２は、Ｓ５０３以降のブートプログラム３０２の改ざん検知処理を行う処理へ進む。この処理は前述の図５と同様であるため、その説明を省略する。
【００５５】
一方、Ｓ８０２でＣＰＵ１４２は、サブコントローラ３０の基板の挿抜なしと判定した場合はＳ５０１に進み、ドアオープン記憶部１６５からの信号１８２を読み取ってＳ５０２に進み、ドアが開閉されたことがあるかどうか判定する。これ以降の処理は前述の図５の処理と同様である。
【００５６】
以上説明したように実施形態２によれば、前述の実施形態１の効果に加えて、サブコントローラの基板が挿抜されたときは、その基板に実装されているプログラムの改ざんの有無を検証するため、その基板が挿抜されてプログラムが改ざんされた場合にも対処できるという効果がある。
【００５７】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００５８】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【００５９】
１０…複合機、２０…メインコントローラ、３０…サブコントローラ、１０１，１０２…ＣＰＵ（メインコントローラ）、１１８，１５８…フラッシュメモリ、１４１，１４２…ＣＰＵ（サブコントローラ）、１６３…ドアオープン検出部、１６５…ドアオープン記憶部、１６６…基板挿抜検出部、１６７…基板挿抜記憶部
【図１】
2020181501.tif 000003
【図２】
2020181501.tif 000004
【図３】
2020181501.tif 000005
【図４】
2020181501.tif 000006
【図５】
2020181501.tif 000007
【図６】
2020181501.tif 000008
【図７】
2020181501.tif 000009
【図８】
2020181501.tif 000010