(57)【要約】【課題】情報処理装置において使用されるプログラムのセキュリティを向上させつつ、可能な限り装置の起動時間を短縮する。【解決手段】情報処理装置（ＭＦＰ）のＣＰＵ１０１は、当該ＭＦＰの起動において、サブコントローラ３０，４０によってそれぞれ使用されるメインプログラムの改ざんの有無の検証を順に行う（Ｓ３０２）。サブコントローラ３０，４０は、それぞれ使用するメインプログラムについてＣＰＵ１０１による検証が完了すると、当該メインプログラムに基づいて制御対象のデバイスの初期化処理を開始する。ＣＰＵ１０１は、検証が完了したメインプログラムを使用するサブコントローラによる初期化処理の実行と並行して、次のメインプログラムの検証を行う（Ｓ３０５，Ｓ３０６）。【選択図】図３
2020188440.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
第１プログラムに基づいて第１デバイスを制御する第１制御手段と、
第２プログラムに基づいて第２デバイスを制御する第２制御手段と、
前記情報処理装置の起動において、前記第１及び第２プログラムの正当性を順に検証する検証手段と、を備え、
前記第１制御手段は、前記検証手段による検証が完了した前記第１プログラムに基づいて前記第１デバイスの初期化処理を開始し、
前記検証手段は、前記第１制御手段による前記第１プログラムに基づく前記第１デバイスの前記初期化処理の実行と並行して、前記第２プログラムの前記検証を行う
ことを特徴とする情報処理装置。
【請求項２】
情報処理装置であって、
第１プログラムに基づいて第１デバイスを制御する第１制御手段と、
第２プログラムに基づいて第２デバイスを制御する第２制御手段と、
前記情報処理装置の起動において、前記第１及び第２プログラムの改ざんの有無の検証を順に行う検証手段と、を備え、
前記第１及び第２制御手段は、それぞれ使用するプログラムについて前記検証手段による前記検証が完了すると、当該プログラムに基づいて制御対象のデバイスの調整処理を開始し、
前記検証手段は、前記第１及び第２プログラムのうち、前記検証が完了したプログラムを使用する制御手段による前記調整処理の実行と並行して、次のプログラムの前記検証を行う
ことを特徴とする情報処理装置。
【請求項３】
前記検証手段は、前記第１制御手段による前記調整処理に要する処理時間と、前記第２制御手段による前記調整処理に要する処理時間とに基づいて決定された順序で、前記第１及び第２プログラムについて前記検証を行う
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記検証手段は、前記第１及び第２プログラムの前記検証を、対応する制御手段による前記調整処理に要する処理時間が長い順に行う
ことを特徴とする請求項２又は３に記載の情報処理装置。
【請求項５】
前記検証手段は、
前記第２制御手段の前記処理時間より前記第１制御手段の前記処理時間が長い場合、前記第１プログラム及び前記第２プログラムの順に前記検証を行い、
前記第１制御手段の前記処理時間より前記第２制御手段の前記処理時間が長い場合、前記第２プログラム及び前記第１プログラムの順に前記検証を行う
ことを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記第１制御手段に対して設けられ、前記第１プログラムと前記第１制御手段の前記処理時間を示すデータとが格納された第１記憶手段と、
前記第２制御手段に対して設けられ、前記第２プログラムと前記第２制御手段の前記処理時間を示すデータとが格納された第２記憶手段と、を更に備え、
前記検証手段は、前記情報処理装置の起動において、前記第１記憶手段から前記第１制御手段の前記処理時間を示すデータを取得し、前記第２記憶手段から前記第２制御手段の前記処理時間を示すデータを取得する
ことを特徴とする請求項３から５のいずれか１項に記載の情報処理装置。
【請求項７】
前記第１制御手段に対して設けられ、前記第１プログラムが格納された第１記憶手段と、
前記第２制御手段に対して設けられ、前記第２プログラムが格納された第２記憶手段と、
前記第１及び第２制御手段と前記第１及び第２制御手段のそれぞれの前記処理時間とを対応付けたテーブルが格納された第３記憶手段と、を更に備え、
前記検証手段は、前記情報処理装置の起動において、前記第３記憶手段から前記テーブルを取得する
ことを特徴とする請求項３から５のいずれか１項に記載の情報処理装置。
【請求項８】
前記第１プログラムの前記検証に用いられる第１検証鍵と、前記第２プログラムの前記検証に用いられる第２検証鍵とが格納された、書き換えが不可能なメモリを更に備え、
前記第１記憶手段には、前記第１プログラムのハッシュ値及び前記第１検証鍵から生成された第１署名データが更に格納されており、
前記第２記憶手段には、前記第２プログラムのハッシュ値及び前記第２検証鍵から生成された第２署名データが更に格納されており、
前記検証手段は、前記第１検証鍵と前記第１署名データとに基づいて、前記第１プログラムの前記検証を行い、前記第２検証鍵と前記第２署名データとに基づいて、前記第２プログラムの前記検証を行う
ことを特徴とする請求項６又は７に記載の情報処理装置。
【請求項９】
前記検証手段は、前記第１及び第２プログラムのうち、先に前記検証を行ったプログラムについて改ざんされていないとの検証結果が得られると、当該プログラムを使用する制御手段による前記調整処理の実行と並行して、次のプログラムの前記検証を行う
ことを特徴とする請求項２から８のいずれか１項に記載の情報処理装置。
【請求項１０】
前記調整処理は、前記制御対象のデバイスの初期化処理である
ことを特徴とする請求項２から９のいずれか１項に記載の情報処理装置。
【請求項１１】
第１プログラムに基づいて第１デバイスを制御する第１制御手段と、第２プログラムに基づいて第２デバイスを制御する第２制御手段と、を備える情報処理装置の制御方法であって、
前記情報処理装置の起動において、前記第１及び第２プログラムの改ざんの有無の検証を順に行う検証工程と、
前記第１及び第２制御手段が、それぞれ使用するプログラムについて前記検証工程における前記検証が完了した後に、当該プログラムに基づいて制御対象のデバイスの調整処理を開始する処理工程と、を含み、
前記検証工程では、前記第１及び第２プログラムのうち、前記検証が完了したプログラムを使用する制御手段による前記調整処理の実行と並行して、次のプログラムの前記検証を行う
ことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びその制御方法に関するものである。
【背景技術】
【０００２】
セキュリティ向上を目的として、情報処理装置のメモリに格納されているプログラムの改ざんの有無を検証する技術がある。特許文献１には、不揮発メモリに格納された複数のプログラムについて改ざんの有無を検証する場合に、プログラムごとに割り当てられた検証確率に基づいて、検証対象とすべきプログラムを特定し、特定したプログラムの検証を行う技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−９３７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、検証対象として特定されなかったプログラムについて改ざんの有無の検証を行わないことにより、情報処理装置においてＯＳを起動するまでに要する起動時間を短縮している。しかし、一部のプログラムの検証が行われないため、起動時間の短縮とセキュリティの向上とを両立することは難しい。
【０００５】
本発明は、上述の課題に鑑みてなされたものである。本発明は、情報処理装置において使用されるプログラムのセキュリティを向上させつつ、可能な限り装置の起動時間を短縮する技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一態様に係る情報処理装置は、第１プログラムに基づいて第１デバイスを制御する第１制御手段と、第２プログラムに基づいて第２デバイスを制御する第２制御手段と、前記情報処理装置の起動において、前記第１及び第２プログラムの改ざんの有無の検証を順に行う検証手段と、を備え、前記第１及び第２制御手段は、それぞれ使用するプログラムについて前記検証手段による前記検証が完了すると、当該プログラムに基づいて制御対象のデバイスの調整処理を開始し、前記検証手段は、前記第１及び第２プログラムのうち、前記検証が完了したプログラムを使用する制御手段による前記調整処理の実行と並行して、次のプログラムの前記検証を行うことを特徴とする。
【０００７】
本発明の他の一態様に係る情報処理装置は、第１プログラムに基づいて第１デバイスを制御する第１制御手段と、第２プログラムに基づいて第２デバイスを制御する第２制御手段と、前記情報処理装置の起動において、前記第１及び第２プログラムの正当性を順に検証する検証手段と、を備え、前記第１制御手段は、前記検証手段による検証が完了した前記第１プログラムに基づいて前記第１デバイスの初期化処理を開始し、前記検証手段は、前記第１制御手段による前記第１プログラムに基づく前記第１デバイスの前記初期化処理の実行と並行して、前記第２プログラムの前記検証を行うことを特徴とする。
【発明の効果】
【０００８】
本発明によれば、情報処理装置において使用されるプログラムのセキュリティを向上させつつ、可能な限り装置の起動時間を短縮することが可能になる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係るＭＦＰのハードウェア構成例を示すブロック図。
【図２】第１実施形態に係るＭＦＰのソフトウェア構成例を示すブロック図。
【図３】第１実施形態に係る改ざん検知処理の手順を示すフローチャート。
【図４】第２実施形態に係るＭＦＰのソフトウェア構成例を示すブロック図。
【図５】第２実施形態に係る処理時間テーブルの例を示す図。
【図６】第２実施形態に係る改ざん検知処理の手順を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一又は同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１１】
［第１実施形態］
第１実施形態に係る情報処理装置の例として、複合機（ＭＦＰ）に本発明を適用した例について説明する。なお、本発明は、複合機に限定されず、画像形成装置又は画像処理装置等の情報処理装置にも適用可能であり、例えば、印刷装置、読取装置、複写機、及びファクシミリ装置等の装置にも適用可能である。
【００１２】
＜ＭＦＰのハードウェア構成＞
図１は、第１実施形態に係る複合機（ＭＦＰ）１０のハードウェア構成を示すブロック図である。ＭＦＰ１０は、メインコントローラ２０及びサブコントローラ３０，４０を備える。メインコントローラ２０及びサブコントローラ３０，４０は、それぞれ、ＭＦＰ１０の制御を行うためのモジュールで構成されており、本実施形態では一例として半導体チップで構成される。メインコントローラ２０に対して、不揮発性の記憶装置としてＨＤＤ１１７及びフラッシュメモリ１１８が設けられている。また、サブコントローラ３０，４０に対して、不揮発性の記憶装置としてフラッシュメモリ１３７，１４７がそれぞれ設けられている。
【００１３】
まず、図１におけるメインコントローラ２０及びその周辺ブロックについて説明する。メインコントローラ２０において、システムバス１００に接続されている各デバイスは、当該システムバスを介して相互に接続される。システムバス１００を介して、ＣＰＵ１０１又はＣＰＵ１０２から出力された制御信号の伝送、及びデバイス間でのデータ信号の伝送が行われる。
【００１４】
メインコントローラ２０は、２つのＣＰＵ１０１，１０２を備える。ＣＰＵ１０１は、メインコントローラ２０用のメインプログラム２０３（図２）を実行することにより、装置全体の制御を行う。ＣＰＵ１０２は、フラッシュメモリ１１８に格納されたブートプログラム２０２（図２）及びメインプログラム２０３の署名検証、各制御部及びＩ／Ｆ（インタフェース）の初期化、並びにＣＰＵ１０１のリセット解除を行う。
【００１５】
ＲＯＭ１０３は、ＣＰＵ１０２によって実行されるプログラム（図２のローダー２００）を格納している。ＲＡＭ１０４は、ＳＲＡＭで構成されたランダムアクセスメモリであり、プログラム又は一時的なデータの格納に使用される。ＯＴＰ（One Time Programmable）ＲＯＭ（以下、「ＯＴＰ」と称する。）１０９は、製造時に一度だけデータを書き込み可能なＲＯＭであり、書き換えが不可能なメモリである。ＯＴＰ１０９には、フラッシュメモリ１１８に格納されているブートプログラム２０２等のプログラムの署名検証用の検証鍵が保持される。
【００１６】
スキャナＩ／Ｆ１０５は、スキャナ１１４による原稿の読取処理を制御する。プリンタＩ／Ｆ１０６は、プリンタ１１５による画像の印刷処理を制御する。パネル制御部１０８は、タッチパネル方式の操作パネル１１６を制御して、各種情報の表示、及びユーザからの指示の入力の受け付けを行う。
【００１７】
画像処理部１０７は、スキャナ１１４から入力された画像データ、及びプリンタ１１５へ出力される画像データに対して画像処理を行う。画像処理部１０７には、スキャナ１１４によって読み取られた原稿の画像データが入力される。画像処理部１０７は、この画像データに対して、シェーディング処理等の画像処理を行う。また、画像処理部１０７には、プリンタ１１５による画像の印刷に用いられる画像データが入力される。画像処理部１０７は、この画像データに対して、ハーフトーン処理及びスムージング処理等の画像処理を行う。
【００１８】
ＨＤＤ制御部１１０は、ＨＤＤ１１７に対するデータの読み出し及び書き込みを制御する。例えば、ＨＤＤ制御部１１０は、ＲＡＭ１０４に格納されている画像データをシステムバス１００経由でＨＤＤ１１７に書き込むことで、当該画像データをＨＤＤ１１７に格納する。フラッシュメモリ制御部１１１は、フラッシュメモリ１１８に対するデータの読み出し及び書き込みを制御する。例えば、フラッシュメモリ制御部１１１は、フラッシュメモリ１１８に格納されているプログラムをシステムバス１００経由でＲＡＭ１０４に展開する。
【００１９】
フラッシュメモリ１１８は、ＭＦＰ１０の固定パラメータ等のデータの他に、図２を用いて後述するように各種プログラム及びデータを格納している。ＣＰＵ１０１，１０２は、システムバス１００及びフラッシュメモリ制御部１１１を介してフラッシュメモリ１１８にアクセス可能である。
【００２０】
ネットワークＩ／Ｆ１１２は、有線ＬＡＮ又は無線ＬＡＮ等のネットワーク１１９に接続され、ネットワーク１１９を介して他のデバイス又はサーバ等の外部装置との通信を行う。通信制御部１１３は、ＭＦＰ１０内でサブコントローラ３０及びサブコントローラ４０との通信を行う。
【００２１】
次に、図１におけるサブコントローラ３０及びその周辺ブロックについて説明する。サブコントローラ３０には、ハードウェアデバイス１３６及びフラッシュメモリ１３７が接続されている。サブコントローラ３０は、フラッシュメモリ１３７に格納されているプログラムを実行することにより、当該サブコントローラに接続されているハードウェアデバイス１３６を制御する。
【００２２】
サブコントローラ３０は、ＣＰＵ１３１、ＲＡＭ１３２、デバイスＩ／Ｆ１３３、フラッシュメモリ制御部１３４、及び通信制御部１３５を備えている。サブコントローラ３０において、システムバス１３０に接続されている各デバイスは、当該システムバスを介して相互に接続される。システムバス１３０を介して、ＣＰＵ１３１から出力された制御信号の伝送、及びデバイス間でのデータ信号の伝送が行われる。
【００２３】
ＣＰＵ１３１は、フラッシュメモリ１３７に格納されている、サブコントローラ３０用のメインプログラム２１３（図２）を実行することにより、サブコントローラ３０の制御を行う。ＲＡＭ１３２は、ＳＲＡＭで構成されたランダムアクセスメモリであり、プログラム又は一時的なデータの格納に使用される。
【００２４】
デバイスＩ／Ｆ１３３は、サブコントローラ３０に接続されているハードウェアデバイス１３６の制御を行う。デバイスＩ／Ｆ１３３は、ハードウェアデバイス１３６の初期化処理（調整処理）を行うことが必要な場合には、初期化処理の制御を行う。フラッシュメモリ制御部１３４は、フラッシュメモリ１３７に対するデータの読み出し及び書き込みを制御する。例えば、フラッシュメモリ制御部１３４は、フラッシュメモリ１３７に格納されているプログラムをシステムバス１３０経由でＲＡＭ１３２に展開する。フラッシュメモリ１３７は、サブコントローラ３０において用いられるデータ及びプログラムを格納している。
【００２５】
通信制御部１３５は、ＭＦＰ１０内でメインコントローラ２０及びサブコントローラ４０との通信を行う。メインコントローラ２０は、通信制御部１３５及びフラッシュメモリ制御部１３４を介して、フラッシュメモリ１３７にアクセス可能である。本実施形態では、メインコントローラ２０は、フラッシュメモリ１３７にアクセスし、当該フラッシュメモリに格納されている、サブコントローラ３０用のメインプログラム２１３に対して、改ざん検知処理を実行する。
【００２６】
次に、図１におけるサブコントローラ４０及びその周辺ブロックについて説明する。サブコントローラ４０には、ハードウェアデバイス１４６及びフラッシュメモリ１４７が接続されている。サブコントローラ４０は、フラッシュメモリ１４７に格納されているプログラムを実行することにより、当該サブコントローラに接続されているハードウェアデバイス１４６を制御する。
【００２７】
図１に示されるように、サブコントローラ４０は、ＣＰＵ１４１、ＲＡＭ１４２、デバイスＩ／Ｆ１４３、フラッシュメモリ制御部１４４、及び通信制御部１４５を備えており、サブコントローラ３０と同様の構成を有している。サブコントローラ４０の構成の詳細については、上述のサブコントローラ３０と同様であるため説明を省略する。
【００２８】
＜ＭＦＰのソフトウェア構成＞
図２は、本実施形態に係るＭＦＰ１０が有するソフトウェアモジュールについてのソフトウェア構成例を示す図である。ＲＯＭ１０３は、ＣＰＵ１０２によって実行されるプログラムとしてローダー２００を格納している。フラッシュメモリ１１８は、ＣＰＵ１０２によって実行されるブートプログラム２０２と、ＣＰＵ１０１によって実行されるメインプログラム２０３及び改ざん検知プログラム２０４とを格納している。フラッシュメモリ１１８は更に、ブートプログラム２０２に対応する署名データ２０７、及びメインプログラム２０３に対応する署名データ２１０を格納している。
【００２９】
フラッシュメモリ１３７は、ＣＰＵ１３１によって実行されるメインプログラム２１３と、当該メインプログラムに対応する署名データ２１６と、処理時間データ２２１とを格納している。フラッシュメモリ１４７は、ＣＰＵ１４１によって実行されるメインプログラム２１７と、当該メインプログラムに対応する署名データ２２０と、処理時間データ２２２とを格納している。
【００３０】
ローダー２００は、ＭＦＰ１０の電源を入れるとＣＰＵ１０２により実行されるプログラムである。ローダー２００は、プログラムロード部２０１を有する。プログラムロード部２０１は、署名データ２０７とＯＴＰ１０９に保持されている検証鍵とを用いて、ブートプログラム２０２の署名検証を行い、署名検証の完了後に、ブートプログラム２０２の実行を開始する。
【００３１】
ブートプログラム２０２は、ローダー２００による署名検証の完了後にＣＰＵ１０２により実行されるプログラムである。署名データ２０７は、ブートプログラム２０２のデジタル署名データである。署名データ２０７は、ブートプログラム２０２のハッシュ値及び対応する検証鍵から生成（計算）される。署名データの生成及び検証アルゴリズムとして、例えば、ＲＳＡ、ＤＳＡ、又はＥＣＤＳＡが使用されうる。
【００３２】
ブートプログラム２０２は、システム初期化部２０５及びプログラムロード部２０６を有する。システム初期化部２０５は、フラッシュメモリ制御部１１１等の各制御部及びＩ／Ｆの初期化を行う。プログラムロード部２０６は、署名データ２１０とＯＴＰ１０９に保持されている検証鍵とを用いて、メインプログラム２０３の署名検証を行う。署名検証が成功すると、ＣＰＵ１０２は、ＣＰＵ１０１のリセット解除を行う。
【００３３】
ＣＰＵ１０１のリセットが解除されると、ＣＰＵ１０１は、メインプログラム２０３の実行を開始する。なお、プログラムロード部２０６（ブートプログラム２０２）による署名検証処理は、プログラムロード部２０１（ローダー２００）による署名検証処理と同様の処理により実現されうる。
【００３４】
メインプログラム２０３は、メインコントローラ２０用のメインプログラムであり、カーネル２０８及びアプリケーション２０９を有する。カーネル２０８は、ＭＦＰ１０の制御システムの核となるプログラムであり、アプリケーション２０９に提供するリソースの制御及びスケジューリング等の制御を行う。アプリケーション２０９は、ＭＦＰ１０が提供する各種機能（コピー、送信、及びプリント等）を実現するためのプログラムである。アプリケーション２０９は、例えば、スキャナＩ／Ｆ１０５、プリンタＩ／Ｆ１０６及び画像処理部１０７の制御、操作パネル１１６に表示させる画面の画面データの生成、並びにＭＦＰ１０の総合的な状態制御を行う。
【００３５】
改ざん検知プログラム２０４は、サブコントローラ３０，４０がそれぞれ実行するメインプログラム２１３，２１７の改ざん検知を行うためのプログラムであり、ＣＰＵ１０１により実行される。改ざん検知プログラム２０４は、プログラムロード部２１１及び署名データロード部２１２を有する。
【００３６】
プログラムロード部２１１は、サブコントローラ３０，４０用のフラッシュメモリ１３７，１４７に格納されている、各サブコントローラ用のメインプログラム２１３，２１７の改ざんの有無（正当性）を検証する署名検証を行う。この署名検証は、フラッシュメモリ１３７，１４７に格納されている署名データ２１６，２２０と、ＯＴＰ１０９に保持されている検証鍵とを用いて行われる。署名データロード部２１２は、サブコントローラ３０，４０にアクセスして、署名検証に用いられる署名データ２１６，２２０をフラッシュメモリ１３７，１４７から取得する。なお、プログラムロード部２１１及び署名データロード部２１２は、通信制御部１３５，１４５を介して、フラッシュメモリ１３７，１４７にアクセス可能である。
【００３７】
メインプログラム２１３は、サブコントローラ３０用のメインプログラムであり、カーネル２１４及びアプリケーション２１５を有する。カーネル２１４は、サブコントローラ３０の制御システムの核となるプログラムであり、アプリケーション２１５に提供するリソースの制御及びスケジューリング等の制御を行う。アプリケーション２１５は、サブコントローラ３０に接続されているハードウェアデバイス１３６の制御を実現するためのプログラムである。本実施形態では、サブコントローラ３０（ＣＰＵ１３１）は、第１プログラム（メインプログラム２１３）に基づいて第１デバイス（ハードウェアデバイス１３６）を制御する第１制御手段の一例として機能する。
【００３８】
アプリケーション２１５は、例えば、ハードウェアデバイス１３６の調整処理として、ハードウェアデバイス１３６の初期化処理を行う。フラッシュメモリ１３７に格納されている処理時間データ２２１は、サブコントローラ３０によるハードウェアデバイス１３６の初期化処理（調整処理）に要する処理時間を示すデータである。
【００３９】
メインプログラム２１７は、サブコントローラ４０用のメインプログラムであり、カーネル２１８及びアプリケーション２１９を有する。カーネル２１８は、サブコントローラ４０の制御システムの核となるプログラムであり、アプリケーション２１９に提供するリソースの制御及びスケジューリング等の制御を行う。アプリケーション２１９は、サブコントローラ４０に接続されているハードウェアデバイス１４６の制御を実現するためのプログラムである。本実施形態では、サブコントローラ４０（ＣＰＵ１４１）は、第２プログラム（メインプログラム２１７）に基づいて第２デバイス（ハードウェアデバイス１４６）を制御する第２制御手段の一例として機能する。
【００４０】
アプリケーション２１９は、例えば、ハードウェアデバイス１４６の調整処理として、ハードウェアデバイス１４６の初期化処理を行う。フラッシュメモリ１４７に格納されている処理時間データ２２２は、サブコントローラ４０によるハードウェアデバイス１４６の初期化処理に要する処理時間を示すデータである。
【００４１】
＜改ざん検知処理＞
図３は、本実施形態に係るＭＦＰ１０においてＣＰＵ１０１により実行される改ざん検知処理の手順を示すフローチャートである。この改ざん検知処理は、サブコントローラ３０，４０によってそれぞれ実行されるメインプログラム２１３，２１７の改ざん検知のための処理である。
【００４２】
本実施形態のＭＦＰ１０では、ＣＰＵ１０２がブートプログラム２０２を実行してメインプログラム２０３の署名検証を行い、当該署名検証が成功した後に、ＣＰＵ１０１が、メインプログラム２０３を起動する。ＣＰＵ１０１は、メインプログラム２０３の起動後に、フラッシュメモリ１１８から読み出した改ざん検知プログラム２０４を実行することで、図３の手順による改ざん検知処理の実行を開始する。
【００４３】
以下で説明する改ざん検知処理では、ＣＰＵ１０１は、ＭＦＰ１０の起動において、サブコントローラ３０，４０によってそれぞれ使用されるメインプログラム２１３，２１７の改ざんの有無（正当性）の検証を順に行う。サブコントローラ３０，４０は、それぞれ使用するメインプログラムについてＣＰＵ１０１による検証が完了すると、当該メインプログラムに基づいて制御対象のデバイスの調整処理（初期化処理）を開始する。ＣＰＵ１０１は、メインプログラム２１３，２１７のうち、検証が完了したメインプログラムを使用するサブコントローラによる初期化処理の実行と並行して、次のメインプログラムの検証を行う。
【００４４】
具体的には、まずＳ３０１で、ＣＰＵ１０１は、サブコントローラ３０，４０に関連する情報を、各サブコントローラから取得し、Ｓ３０２へ処理を進める。具体的には、ＣＰＵ１０１は、フラッシュメモリ１３７，１４７から、処理時間データ２２１，２２２をそれぞれ取得する。
【００４５】
上述のように、処理時間データ２２１，２２２は、サブコントローラ３０，４０によって実行されるハードウェアデバイス１３６，１４６の初期化処理に要する処理時間（初期化処理時間）を示す。本実施形態では、ＣＰＵ１０１は、Ｓ３０２以降において、サブコントローラ３０の初期化処理時間とサブコントローラ４０の初期化処理時間とに基づいて決定した順序で、メインプログラム２１３，２１７について検証を行う。
【００４６】
Ｓ３０２で、ＣＰＵ１０１は、サブコントローラ３０の初期化処理時間とサブコントローラ４０の初期化処理時間とを比較し、その比較結果に従って、それぞれのサブコントローラ用のメインプログラム２１３，２１７の起動順を決定する。例えば、ハードウェアデバイス１３６が定着ベルトであった場合、当該ハードウェアデバイスの初期化処理は、定着ベルトを温める処理を含む。また、ハードウェアデバイス１４６がスキャナ１１４のモータである場合、当該ハードウェアデバイスの初期化処理は、モータのホームポジションをサーチする処理を含む。このような初期化処理時間の長さは、対象とするハードウェアデバイスに対して必要となる処理に依存して異なる。
【００４７】
本実施形態では、ＣＰＵ１０１は、Ｓ３０２において、それぞれのサブコントローラ用のメインプログラム２１３，２１７の起動順を、それぞれのサブコントローラの初期化処理時間が長い順に決定する。例えば、サブコントローラ４０よりもサブコントローラ３０の方が初期化処理時間が長い場合、サブコントローラ４０用のメインプログラム２１７よりもサブコントローラ３０用のメインプログラム２１３を先に起動するように起動順が決定される。一方、サブコントローラ３０よりもサブコントローラ４０の方が初期化処理時間が長い場合、サブコントローラ３０用のメインプログラム２１３よりもサブコントローラ４０用のメインプログラム２１７を先に起動するように起動順が決定される。
【００４８】
ＣＰＵ１０１は、メインプログラムの起動順を決定すると、Ｓ３０２からＳ３０３へ処理を進める。以下では、メインプログラムの起動順として、サブコントローラ３０用のメインプログラム２１３が第１番目、サブコントローラ４０用のメインプログラム２１７が第２番目に決定された場合を例に説明する。
【００４９】
Ｓ３０３で、ＣＰＵ１０１は、起動順が第１番目のメインプログラムの署名検証を行う。本例では、ＣＰＵ１０１は、フラッシュメモリ１３７からメインプログラム２１３を読み出し、当該メインプログラムの署名検証を行う。ＣＰＵ１０１は、Ｓ３０４で、署名検証に成功したか否かを判定する。ＣＰＵ１０１は、署名検証に成功した（即ち、メインプログラム２１３は改ざんされていないとの検証結果が得られた）場合、Ｓ３０５へ処理を進める。一方、ＣＰＵ１０１は、署名検証に失敗した（即ち、メインプログラム２１３が改ざんされているとの検証結果が得られた）場合、図３の手順による処理を終了する。
【００５０】
Ｓ３０５で、ＣＰＵ１０１は、起動順が第１番目のメインプログラム（メインプログラム２１３）を、対応するサブコントローラのＣＰＵにより起動させ、処理をＳ３０６へ進める。本例では、サブコントローラ３０のＣＰＵ１３１は、フラッシュメモリ１３７からメインプログラム２１３を読み出し、当該メインプログラムを起動する。これにより、ＣＰＵ１３１は、サブコントローラ３０に接続されているハードウェアデバイス１３６の初期化処理の実行を開始する。
【００５１】
Ｓ３０６で、ＣＰＵ１０１は、起動順が第２番目のメインプログラムの署名検証を行う。本例では、ＣＰＵ１０１は、フラッシュメモリ１４７からメインプログラム２１７を読み出し、当該メインプログラムの署名検証を行う。ＣＰＵ１０１は、Ｓ３０７で、署名検証に成功したか否かを判定する。ＣＰＵ１０１は、署名検証に成功した（即ち、メインプログラム２１７は改ざんされていないとの検証結果が得られた）場合、Ｓ３０８へ処理を進める。一方、ＣＰＵ１０１は、署名検証に失敗した（即ち、メインプログラム２１７が改ざんされているとの検証結果が得られた）場合、図３の手順による処理を終了する。
【００５２】
Ｓ３０８で、ＣＰＵ１０１は、起動順が第２番目のメインプログラム（メインプログラム２１７）を、対応するサブコントローラのＣＰＵにより起動させる。本例では、サブコントローラ４０のＣＰＵ１４１は、フラッシュメモリ１４７からメインプログラム２１７を読み出し、当該メインプログラムを起動する。これにより、ＣＰＵ１４１は、サブコントローラ４０に接続されているハードウェアデバイス１４６の初期化処理の実行を開始する。ＣＰＵ１０１は、Ｓ３０８の処理が完了すると、図３の手順による処理を終了する。
【００５３】
このように、本実施形態のＭＦＰ１０においてＣＰＵ１０１は、メインプログラム２１３，２１７の署名検証を、対応するサブコントローラによる初期化処理（調整処理）に要する処理時間が長い順に行う。即ち、ＣＰＵ１０１は、サブコントローラ４０の初期化処理時間がサブコントローラ３０の初期化処理時間より長い場合、メインプログラム２１３及びメインプログラム２１７の順に署名検証を行う。一方、ＣＰＵ１０１は、サブコントローラ３０の初期化処理時間がサブコントローラ４０の初期化処理時間より長い場合、メインプログラム２１７及びメインプログラム２１３の順に署名検証を行う。
【００５４】
なお、本実施形態では、メインコントローラ２０に２個のサブコントローラ３０，４０が接続されている例について説明したが、サブコントローラの数はいくつであってもよい。３個以上のサブコントローラがメインコントローラ２０に接続されている場合にも同様に、初期化処理時間が長い順に、対応するメインプログラムの起動順（対応するメインプログラムの署名検証の順序）が決定される。また、決定された起動順で、メインプログラムの署名検証が行われ、署名検証に成功したメインプログラムが順に起動される。なお、メインプログラムの実行（即ち、対象とするハードウェアデバイスの初期化処理）の実行と、次の起動順のメインプログラムの署名検証とは並行して実行される。
【００５５】
以上説明したように、本実施形態のＭＦＰ１０において、ＣＰＵ１０１は、ＭＦＰ１０の起動において、サブコントローラ３０，４０によってそれぞれ使用されるメインプログラム２１３，２１７の改ざんの有無（正当性）の検証を順に行う。サブコントローラ３０，４０は、それぞれ使用するメインプログラムについてＣＰＵ１０１による検証が完了すると、当該メインプログラムに基づいて制御対象のデバイスの調整処理（初期化処理）を開始する。ＣＰＵ１０１は、メインプログラム２１３，２１７のうち、検証が完了したメインプログラムを使用するサブコントローラによる初期化処理の実行と並行して、次のメインプログラムの検証を行う。
【００５６】
例えば、ＣＰＵ１０１は、ＭＦＰ１０の起動において、メインプログラム２１３，２１７の正当性を順に検証する。サブコントローラ３０は、ＣＰＵ１０１による検証が完了したメインプログラム２１３に基づいてハードウェアデバイス１３６の調初期化処理を開始する。また、ＣＰＵ１０１は、サブコントローラ３０によるメインプログラム２１３に基づくハードウェアデバイス１３６の初期化処理の実行と並行して、メインプログラム２１７の検証を行う。
【００５７】
このように、本実施形態によれば、ＣＰＵ１０１は、検証が完了したメインプログラムを使用するサブコントローラによる調整処理の実行と並行して、次の検証順のメインプログラムの検証を行う。これにより、全てのメインプログラムの検証の完了後に各サブコントローラによる調整処理を開始するよりも、調整処理が完了するタイミングを早めることが可能になる。このようにして、ＭＦＰ１０において使用されるプログラムのセキュリティを向上させつつ、装置の起動時間を短縮することが可能になる。
【００５８】
また、本実施形態では、ＣＰＵ１０１は、メインプログラム２１３，２１７の検証を、対応するサブコントローラによる調整処理に要する処理時間が長い順に行う。これにより、調整処理により時間がかかるハードウェアデバイスに対する調整処理を、対応するサブコントローラに、より早いタイミングに開始させることが可能になる。このため、ＭＦＰ１０において使用されるプログラムのセキュリティを向上させつつ、装置の起動時間の更なる短縮が可能になる。
【００５９】
［第２実施形態］
第１実施形態では、処理時間データ２２１，２２２がサブコントローラ３０，４０用のフラッシュメモリ１３７，１４７に格納され、処理時間データ２２１，２２２に基づいてメインプログラムの起動順を決定する例について説明した。第２実施形態では、メインコントローラ２０用のフラッシュメモリ１１８に、各サブコントローラにおける初期化処理時間を示すデータが、処理時間テーブルとして格納される例について説明する。なお、以下では第１実施形態と共通する部分については説明を省略する。
【００６０】
図４は、本実施形態に係るＭＦＰ１０が有するソフトウェアモジュールについてのソフトウェア構成例を示す図である。第１実施形態（図２）では、フラッシュメモリ１３７，１４７にそれぞれ処理時間データ２２１，２２２が格納されているのに対して、本実施形態では、メインコントローラ２０用のフラッシュメモリ１１８に処理時間テーブル５０１が格納されている。図５は、処理時間テーブル５０１の例を示している。処理時間テーブル５０１では、サブコントローラ３０，４０のそれぞれに対応付けて初期化処理時間が管理されている。
【００６１】
図６は、本実施形態に係るＭＦＰ１０においてＣＰＵ１０１により実行される改ざん検知処理の手順を示すフローチャートである。本実施形態のＭＦＰ１０では、第１実施形態と同様、ＣＰＵ１０２がブートプログラム２０２を実行してメインプログラム２０３の署名検証を行い、当該署名検証が成功した後に、ＣＰＵ１０１が、メインプログラム２０３を起動する。ＣＰＵ１０１は、メインプログラム２０３の起動後に、フラッシュメモリ１１８から読み出した改ざん検知プログラム２０４を実行することで、図６の手順による改ざん検知処理の実行を開始する。
【００６２】
Ｓ６０１で、ＣＰＵ１０１は、フラッシュメモリ１１８に格納されている処理時間テーブル５０１を参照することで、各サブコントローラに関連する情報として、各サブコントローラにおける初期化処理時間を示す情報を取得し、処理をＳ３０２へ進める。
【００６３】
Ｓ３０２で、ＣＰＵ１０１は、第１実施形態と同様、サブコントローラ３０における初期化処理時間とサブコントローラ４０における初期化処理時間とを比較する。ＣＰＵ１０１は、その比較結果に従って、それぞれのサブコントローラ用のメインプログラム２１３，２１７の起動順を決定する。図５に示される処理時間テーブル５０１の例によれば、メインプログラムの起動順として、サブコントローラ３０用のメインプログラム２１３が第１番目、サブコントローラ４０用のメインプログラム２１７が第２番目に決定される。
【００６４】
その後、Ｓ３０３〜Ｓ３０８で、ＣＰＵ１０１は、第１実施形態と同様、決定した起動順で、メインプログラムの署名検証及び起動が行われる。
【００６５】
以上説明したように、本実施形態のＭＦＰ１０において、ＣＰＵ１０１は、処理時間テーブル５０１に基づいて決定した順序で、サブコントローラ３０，４０によってそれぞれ使用されるメインプログラム２１３，２１７の改ざんの有無の検証を順に行う。更に、ＣＰＵ１０１は、第１実施形態と同様、メインプログラム２１３，２１７のうち、検証が完了したメインプログラムを使用するサブコントローラによる初期化処理の実行と並行して、次のメインプログラムの検証を行う。これにより、第１実施形態と同様、ＭＦＰ１０において使用されるプログラムのセキュリティを向上させつつ、装置の起動時間を短縮することが可能になる。
【００６６】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００６７】
発明は上述の実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。したがって、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【００６８】
１０：複合機（ＭＦＰ）、２０：メインコントローラ、３０：サブコントローラ、４０：サブコントローラ
【図１】
2020188440.tif 000003
【図２】
2020188440.tif 000004
【図３】
2020188440.tif 000005
【図４】
2020188440.tif 000006
【図５】
2020188440.tif 000007
【図６】
2020188440.tif 000008