(57)【要約】【課題】  改竄検証プログラムを実行させるＣＰＵには、最初は改竄検証プログラムを実行させて、検証完了後に処理プログラムに切り換えて実行させるように、動作プログラムを制御する。動作プログラムが改竄されると、切替対象の処理プログラムとは別のプログラムに切り換えられる場合がある。【解決手段】  第２のＣＰＵは、第２のメモリに格納された改竄検知プログラムを用いて、第１のメモリに格納されている、第１のＣＰＵの起動時に実行されるプログラムの改竄検知を行い、起動時に実行されるプログラムの改竄が検知されない場合、起動時に実行されるプログラムを使って第１のＣＰＵを起動させ、起動された第１のＣＰＵを用いて、第２のＣＰＵが実行するプログラムを、第２のメモリに格納された改竄検知プログラムから第１のメモリに格納されている別の処理プログラムに切り替えるように制御する。【選択図】  図３
2020086516.tif 000002
【特許請求の範囲】
【請求項１】
第１のＣＰＵと、
第２のＣＰＵと、
第１のメモリと、
改竄検知プログラムを格納する第２のメモリとを備え、
前記第２のＣＰＵは、前記第２のメモリに格納された改竄検知プログラムを用いて、前記第１のメモリに格納されている、前記第１のＣＰＵの起動時に実行されるプログラムの改竄検知を行う改竄検知手段と、
前記改竄検知手段によって前記起動時に実行されるプログラムの改竄が検知されない場合、前記起動時に実行されるプログラムを使って前記第１のＣＰＵを起動させる起動手段と、
前記起動手段によって起動された第１のＣＰＵを用いて、前記第２のＣＰＵが実行するプログラムを、前記第２のメモリに格納された改竄検知プログラムから前記第１のメモリに格納されている別の処理プログラムに切り替えるように制御する制御手段とを有することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記第２のＣＰＵのリセットベクタを、前記第２のメモリのアドレス領域から前記第１のメモリのアドレス領域に切り替えることで前記制御を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記別の処理プログラムは、前記第１のＣＰＵのスリープ制御を行う処理プログラムであることを特徴とする請求項１または２に記載の情報処理装置。
【請求項４】
前記改竄検知手段によって前記起動時に実行されるプログラムの改竄が検知された場合、前記第１のＣＰＵの起動を行わないことを特徴とする請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記制御手段は、前記第１のメモリに格納されている別の処理プログラムに切り替えるとともに、前記第２のＣＰＵを再度起動させることを特徴とする請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記改竄検知手段は、前記第１のメモリに格納されている別の処理プログラムの改竄検知を行うことを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記第１のメモリは、揮発性の記憶媒体であることを特徴とする請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記第２のメモリは、不揮発性の記憶媒体であることを特徴とする請求項１乃至７のいずれか１項に記載の情報処理装置。
【請求項９】
第１のＣＰＵと、
第２のＣＰＵと、
第１のメモリと、
改竄検知プログラムを格納する第２のメモリとを有する情報処理装置における情報処理方法であって、
前記第２のＣＰＵは、前記第２のメモリに格納された改竄検知プログラムを用いて、前記第１のメモリに格納されている、前記第１のＣＰＵの起動時に実行されるプログラムの改竄検知を行う改竄検知ステップと、
前記改竄検知ステップによって前記起動時に実行されるプログラムの改竄が検知されない場合、前記起動時に実行されるプログラムを使って前記第１のＣＰＵを起動させる起動ステップと、
前記起動ステップによって起動された第１のＣＰＵを使って、前記第２のＣＰＵが実行するプログラムを、前記第２のメモリに格納された改竄検知プログラムから前記第１のメモリに格納されている別の処理プログラムに切り替えるように制御する制御ステップとを有することを特徴とする情報処理方法。
【請求項１０】
コンピュータを、請求項１乃至８のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理装置の制御方法、及び、プログラムに関するものである。
【背景技術】
【０００２】
情報処理装置に搭載するＣＰＵが実行する起動プログラムの改竄を検知する手法が知られている（たとえば特許文献１）。
【０００３】
例えば特許文献１では、起動プログラムを実行するＣＰＵ自身では、起動プログラムの改竄を検知できないため、起動プログラムを実行するＣＰＵとは異なるＣＰＵにより、前記起動プログラムの改竄の有無を検証する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開ＷＯ２００９−０１３８２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
情報処理装置は、世の中の高性能化への要求に対応し、同時に複数の処理をスムーズに実行できるよう、今や複数のＣＰＵが搭載されているのが一般的であり、ＣＰＵ毎にそれぞれ異なる処理プログラムを実行させている。
【０００６】
その為、起動プログラムの改竄検証の機能を情報処理装置に備える場合、情報処理装置の何れかのＣＰＵについて、元々行っていた処理プログラムの他に、起動プログラムの改竄検証のプログラムを実行させることが考えられる。
【０００７】
この場合、改竄検証プログラムを実行させるＣＰＵには、最初は改竄検証プログラムを実行させて、検証完了後に処理プログラムに切り換えて実行させるように、動作プログラムを制御する。
【０００８】
しかしながら、動作プログラムが改竄されると、切替対象の処理プログラムとは別のプログラムに切り換えられる場合がある。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明の一態様に係る情報処理装置は以下のような構成を備える。すなわち、第１のＣＰＵと、第２のＣＰＵと、第１のメモリと、改竄検知プログラムを格納する第２のメモリとを備え、前記第２のＣＰＵは、前記第２のメモリに格納された改竄検知プログラムを用いて、前記第１のメモリに格納されている、前記第１のＣＰＵの起動時に実行されるプログラムの改竄検知を行う改竄検知手段と、前記改竄検知手段によって前記起動時に実行されるプログラムの改竄が検知されない場合、前記起動時に実行されるプログラムを使って前記第１のＣＰＵを起動させる起動手段と、前記起動手段によって起動された第１のＣＰＵを使って、前記第２のＣＰＵが実行するプログラムを、前記第２のメモリに格納された改竄検知プログラムから前記第１のメモリに格納されている別の処理プログラムに切り替えるように制御する制御手段とを有する。
【発明の効果】
【００１０】
本発明によれば、改竄検証済みのプログラムを使って起動されたＣＰＵにより、起動時に実行される改竄検知プログラムから適切な処理プログラムに切り換えることができる。
【図面の簡単な説明】
【００１１】
【図１】本実施例における複合機１００のブロック図。
【図２】本実施例におけるＣＰＵ１０２から見たメモリアドレスマップの一例。
【図３】本実施例１におけるＣＰＵ１０２の動作プログラム切り換え制御を説明するフローチャート。
【図４】本実施例２におけるＣＰＵ１０２の動作プログラム切り換え制御を説明するフローチャート。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。尚、実施形態に係る情報処理装置として複合機（デジタル複合機／ＭＦＰ／Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
【実施例１】
【００１３】
＜情報処理装置１００＞
図１に本実施形態を説明するための複合機１００のブロック図を示す。ＳＯＣ２０は複合機１００の制御を行うための後述する１０１〜１１４のモジュールで構成される。
【００１４】
ＣＰＵ１０１は、複合機１００の各種ソフトウェアプログラムを実行し、複合機１００の各種制御を行なうプロセッサである。ＣＰＵ１０２は、改竄検知用のソフトウェアプログラムと、ＣＰＵ１０１が実行するプログラムとは別のアプリケーションプログラムを実行し、複合機１００の改竄検知と一部のアプリケーションの制御を行うプロセッサである。
【００１５】
ＲＯＭ１０３は、リードオンリーメモリで、複合機１００の固定パラメータ等を格納している。又、ＲＯＭ１０３は、前記改竄検知用のソフトウェアプログラムや後述の公開鍵などが格納されている。なお、ＲＯＭ１０３は外部からのＩ／Ｆからは書き換えられないように論理回路で構成されたＭＡＳＫ  ＲＯＭもしくは製造時に一度だけ書き込みが可能なＯＴＰ  ＲＯＭで構成されているものとする。ここでＯＴＰとは（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍａｂｌｅ  ＲＯＭ）のことである。
【００１６】
ＲＡＭ１０４（揮発性の記憶媒体）は、ランダムアクセスメモリで、ＣＰＵ１０１とＣＰＵ１０２が複合機１００を制御する際に、プログラムや一時的なデータの格納などに使用される。ＨＤＤ制御部１０５は、ＨＤＤ１１５（不揮発性の記憶媒体）に対してデータを読み書きする制御を行う。例えばＲＡＭ１０４に格納されている画像データをシステムバス１１４経由で、ＨＤＤ１１５に書き出して格納することができる。
【００１７】
フラッシュメモリ制御部１０６は、フラッシュメモリ１１６に対してデータを読み書きする制御を行う。起動時に、フラッシュメモリ１１６に格納されているプログラムを読み出してシステムバス１１４経由でＲＡＭ１０４へ展開することができる。
【００１８】
ネットワークＩ／Ｆ制御部１０７は、ネットワーク１１７上の他のデバイスやサーバーと、データの送受信を制御する。外部ポート制御部１０８は、ＳＯＣ２０の入出力ポート制御部である。例えば出力ポートを制御することによりＬＥＤ１１８を必要に応じて点灯し、ソフトウェアやハードウェアの異常を外部に伝えることが可能である。
【００１９】
スキャナＩ／Ｆ制御部１０９は、スキャナ１１９による原稿の読み取りを制御する。プリンタＩ／Ｆ制御部１１０は、プリンタ１２０による印刷処理を制御する。
【００２０】
画像処理部１１１は、スキャナ１１８から読み取った画像データをシェーディング補正したり、プリンタ１１９に出力するためにハーフトーン処理やスムージング処理したりする処理部である。
【００２１】
パネル制御部１１２は、タッチパネル式の操作パネル１２１を制御し、各種情報の表示、使用者からの指示入力を制御する。リセットベクタ制御部１１３は、ＣＰＵ１０２のリセットベクタ（電源投入後に実行するプログラムを読みだす為に、リセット解除後に参照するアドレス値）の設定を変更する制御部であり、レジスタで構成されている。リセットベクタ制御部１１３のレジスタ設定は、ＣＰＵ１０１により行われる。
【００２２】
システムバス１１４は、接続されているモジュールを相互に接続する。このシステムバス１１４を介して、ＣＰＵ１０１やＣＰＵ１０２からの制御信号や各装置間のデータ信号が送受信される。
【００２３】
ＨＤＤ１１５は、ハードディスクドライブで一部のアプリケーション、各種データを格納する。フラッシュメモリ１１６は、ＢＩＯＳ、ブートローダー、カーネル、アプリケーションを格納する。なお、ＨＤＤ１１５とフラッシュメモリ１１６は同一のストレージモジュールであっても良いものとする。
【００２４】
＜改竄されたプログラムへ切り替えられる仕組み＞
ここで、本実施例の課題であるＣＰＵが実行するプログラムが、改竄されたプログラムへ切り替えられてしまうメカニズムについて説明する。
【００２５】
図２に、ＣＰＵ１０２から見た各格納手段のメモリアドレスマップ（論理アドレスマップ）の一例を示す。
【００２６】
図２に示すメモリアドレスマップにおいて、アドレス０ｘ０００００よりＲＯＭ１０３のアドレス領域、アドレス０ｘ０１０００よりフラッシュメモリ１１６のアドレス領域が、それぞれ割り当てられている。また、アドレス０ｘ１００００よりＲＡＭ１０４のアドレス領域、アドレス０ｘ２００００よりＨＤＤ１１５のアドレス領域、がそれぞれ割り当てられている。
【００２７】
本実施例では、ＣＰＵ１０２に、最初は改竄検証プログラムを実行させて、検証完了後は別の処理プログラムを実行させるように、動作プログラムを切り換える場合を例にとり説明する。
【００２８】
図２において、プログラム２０１〜２０３は、ＣＰＵ１０２が実行するプログラムを示し、リセットベクタ２０４〜２０６は、ＣＰＵ１０２が起動後に最初に参照する、プログラムが格納されている参照先（アドレス値）を示している。
【００２９】
プログラム２０１は、ＣＰＵ１０２が最初に実行する改竄検証プログラムであり、ＲＯＭ１０３のアドレス領域のリセットベクタ２０４が示すアドレス値の０ｘ０００００より格納されている。
【００３０】
プログラム２０２は、ＣＰＵ１０２が検証完了後に実行する別の処理プログラムであり、フラッシュメモリ１１６のアドレス領域のリセットベクタ２０５が示すアドレス値の０ｘ０１０００より格納されている。
【００３１】
ＣＰＵ１０２に実行させる別の処理プログラムは、例えば、情報処理装置１００の消費電力を低減させるために、ＣＰＵ１０１のスリープ制御（通常状態、スリープ状態への移行制御）を行う処理プログラムや、画像処理プログラムなどである。ＣＰＵ１０１がスリープ状態へ移行する条件を満たした場合に、前記別の処理プログラムが実行される。
【００３２】
プログラム２０３は、ＣＰＵ１０２が検証完了後に、改竄者が実行させる目的で予め格納した改竄された処理プログラムであり、ＨＤＤ１１５のアドレス領域のリセットベクタ２０６が示すアドレス値の０ｘ０２０００より格納されている。
【００３３】
つまりＣＰＵ１０２のリセットベクタは、最初は改竄検証プログラム（プログラム２０１）が格納されているリセットベクタ２０４に設定され、検証完了後、別の処理プログラム（プログラム２０２）が格納されているリセットベクタ２０５へ、本来は設定される。
【００３４】
しかしながら、ＣＰＵ１０２のリセットベクタの設定は、ＣＰＵ１０１の動作プログラムにより、リセットベクタ制御部１１３のレジスタ値を変更することにより行われる。このＣＰＵ１０１の動作プログラムが改竄されると、改竄者にリセットベクタ設定を変更されるおそれがある。
【００３５】
図２に示す例では、改竄された処理プログラムであるプログラム２０３が格納されているリセットベクタ２０６へ変更されてしまうと、ＣＰＵ１０２は改竄された処理プログラムであるプログラム２０３へと動作プログラムを切り換えられてしまう。
【００３６】
また、リセットベクタは、改竄されたプログラム２０３以外の、ＨＤＤ１１５またはＲＡＭ１０４の中の改竄されていない処理プログラムのアドレスに切り換えられてしまうこともある。
【００３７】
＜ＣＰＵ１０２の動作プログラム切り換えシーケンス＞
次に、本実施例の特徴であるＣＰＵ１０２に動作させるプログラムの切り換え制御について説明する。
【００３８】
図３に、本実施例１における、複合機１００の電源投入直後からの、ＣＰＵ１０２に動作させるプログラム、及びプログラム切り換えシーケンスのフローチャートを示す。
【００３９】
まず始めに、複合機１００の電源が投入されると、複合機１００内の各モジュールをリセットし、その後、ＣＰＵ１０２のみリセット状態を解除することにより、ＣＰＵ１０２が起動する。複合機１００内の各モジュールのリセット制御は、例えばリセット制御ＩＣ等を使用して、各モジュールへ供給するリセット信号の論理を所望のタイミングで切り替えることにより行う（Ｓ３０１）。
【００４０】
ＣＰＵ１０２のリセットが解除されると、ＣＰＵ１０２のリセットベクタ２０４〜２０６の示すアドレス領域に格納されているプログラムをＣＰＵ１０２は読み込み、読み込んだプログラムで実行するよう起動する。
【００４１】
ＣＰＵ１０２のリセットベクタ２０４〜２０６は、リセット後の初期状態では、ＲＯＭ１０３のアドレス領域を示すリセットベクタ２０４に設定されている。よってＣＰＵ１０２は、リセットベクタ２０４が示すアドレス領域であるＲＯＭ１０３に格納されている、改竄検知プログラムであるプログラム２０１を読み込み、プログラム２０１に従って動作する状態で起動する（Ｓ３０２）。
【００４２】
次に、改竄検知プログラムに従って動作しているＣＰＵ１０２により、フラッシュメモリ１１６に格納されているプログラムについて、改竄の有無を検証する（Ｓ３０３）。Ｓ３０３において改竄の検証がされるプログラムは、ＣＰＵ１０１の起動時に実行されるプログラムである。Ｓ３０３では、フラッシュメモリ１１６に格納されているプログラムをＲＡＭ１０４に読み込み、読み込んだプログラムの改竄の有無を検証する。なお、Ｓ３０３において、フラッシュメモリ１１６に格納されているプログラム２０２をＲＡＭ１０４に読み込んでもよい。
【００４３】
本実施例において、改竄の有無の検証（以下、改竄検証）は、一般的によく使用される公開鍵暗号方式を応用したデジタル署名（以下、署名）を使用して実施する場合を例にとり説明する。勿論、デジタル署名以外の改竄検証を行うプログラムであっても構わない。
【００４４】
署名データは、ＣＰＵ１０１に実行させるプログラムの一部または全体について、ハッシュ関数を使用して算出されたハッシュ値であり、暗号鍵の対となる公開鍵と共に、予め製品出荷時のタイミング等でＲＯＭ１０３へ格納されている。
【００４５】
一方、ＣＰＵ１０１に実行されるプログラムは、後にソフトウェア更新などで書き換えられる事を想定し、ＲＯＭライタ等で書き換え可能なフラッシュメモリ１１６に、署名データと共に格納されている。フラッシュメモリ１１６に格納されている署名データは、外部からアクセスされるおそれがあるため、暗号鍵の対となるもう一方の秘密鍵を使用して暗号化されている。
【００４６】
改竄検知プログラムであるプログラム２０１で動作しているＣＰＵ１０２は、まず始めに、フラッシュメモリ１１６に格納されている暗号化された署名データをリードして、ＲＡＭ１０４へ格納する。次に、ＲＯＭ１０３に格納されている公開鍵を使用して、暗号化された署名データをデコードする。そして、デコードした署名データと、ＲＯＭ１０３に予め格納されている署名データと比較することにより署名データが改竄されているか否かを検証する。
【００４７】
ＣＰＵ１０２は、署名データを比較して、少しでも違いがあれば「改竄有り」と判断し、一致していれば「改竄無し」と判断する（Ｓ３０４）。
【００４８】
Ｓ３０４において、「改竄有り」と判断された場合には、改竄検知通知処理を行う（Ｓ３０５）。本実施例の複合機１００においては、外部ボート制御部１０８を経由してＬＥＤ１１８に供給される出力ポートを制御することにより、ＬＥＤ１１８を点灯させることにより、改竄が有ることを外部に通知する。
【００４９】
Ｓ３０４において、「改竄無し」と判断された場合には、ＣＰＵ１０１のリセット状態を解除する（Ｓ３０６）。ＣＰＵ１０１のリセット状態の解除は、ＣＰＵ１０１に供給するリセット信号の論理を「解除」を伝える値へ切り替えることにより行う。
【００５０】
ＣＰＵ１０１のリセットが解除されると、ＣＰＵ１０１はフラッシュメモリ１１６のリセットベクタ（ＣＰＵ１０１のリセットベクタは不変）が示すアドレス領域に格納されているプログラムを読み込み、ＲＡＭ１０４に展開する。そして、リセット状態が解除されたＣＰＵ１０１は、ＲＡＭ１０４に展開したプログラムを実行することにより、ＣＰＵ１０１の起動処理を行う（Ｓ３０７）。
【００５１】
ＣＰＵ１０２のリセットベクタの設定は、改竄検証対象であるＣＰＵ１０１に実行させるプログラムにおいて行われる。ＣＰＵ１０２のリセットベクタ設定が改竄されると、フラッシュメモリ１１６に格納される署名データは、正確値であるＲＯＭ１０３に格納される署名データとの比較で違いが発生するため、リセットベクタの改竄を検知することができる。
【００５２】
ＣＰＵ１０１の起動が完了すると、ＣＰＵ１０１は、読み込んだ改竄検証済みのプログラムに従って、ＣＰＵ１０２をリセットする（Ｓ３０８）。ＣＰＵ１０２のリセットは、ＣＰＵ１０１に供給するリセット信号の論理を「リセット」を伝える値へ切り替えることにより行う。
【００５３】
そして、ＣＰＵ１０１は改竄検証済みのプログラムに従って、ＣＰＵ１０２のリセットベクタ２０４〜２０６をリセットベクタ２０５へ切り替える（Ｓ３０９）。改竄検証済みのプログラムには、ＣＰＵ１０２のリセットベクタとして、リセットベクタ２０５を示すリセット制御部１１３のレジスタ設定値がプログラミングされている。そのため、前記レジスタ値をリセット制御部１１３のレジスタへ設定することにより、ＣＰＵ１０２にはリセットベクタ２０５が設定される。
【００５４】
その後、ＣＰＵ１０１は、ＣＰＵ１０２のリセット信号の論理を切り替えて、ＣＰＵ１０２のリセット状態を解除することにより、ＣＰＵ１０２は再度起動される（Ｓ３１０）。
【００５５】
ＣＰＵ１０２のリセットが解除されると、ＣＰＵ１０２はリセットベクタ２０５の示すアドレス領域に格納されているプログラムを読み込み、読み込んだプログラムで実行するよう起動する。リセットベクタ２０５が示すアドレス領域であるＲＡＭ１０４には、ＣＰＵ１０２に実行させる改竄検知プログラムとは別の処理プログラムが格納されている。
【００５６】
前記ＣＰＵ１０２に実行させる別の処理プログラムは、複合機１００の電源投入直後は、フラッシュメモリ１１６に格納されている。
【００５７】
このフラッシュメモリ１１６のアクセス速度は遅い為、改竄検証済みのプログラムで動作している状態のＣＰＵ１０１により、ＣＰＵ１０２に実行させる別の処理プログラムは、アクセス速度の速いＲＡＭ１０４へ事前に格納されている。
【００５８】
よってＣＰＵ１０２は、リセットベクタ２０５が示すアドレス領域であるＲＡＭ１０４に格納されている、別の処理プログラムであるプログラム２０２を読み込み、別の処理プログラムであるプログラム２０２に従って動作する状態で起動する（Ｓ３１１）。
【００５９】
以上説明してきたように、実施例１の複合機１００は、ＣＰＵ１０２に動作させるプログラムを切り換える際に、改竄検証済みのプログラムで動作するＣＰＵ１０１によって、ＣＰＵ１０２のリセットベクタ２０４〜２０６を切り換えるよう制御する。
【００６０】
つまりＣＰＵ１０２は、改竄検証済みのリセットベクタの示すアドレス領域に格納されたプログラムを読み込み起動する。そのため、改竄者にリセットベクタ設定を改竄されて、ＣＰＵ１０２が改竄されたプログラムが格納されたアドレス領域から起動し、改竄されたプログラムが実行されることを低減することができる。
【実施例２】
【００６１】
第１の実施形態では、改竄検証済みのプログラムで動作するＣＰＵ１０１によって、ＣＰＵ１０２のリセットベクタを切り換えることにより、ＣＰＵ１０２に動作させるプログラムを別の処理プログラムへ切り換える制御について説明した。
【００６２】
しかし、別の処理プログラムであるプログラム２０２が、フラッシュメモリ１１６に格納されている場合は、フラッシュメモリ１１６へ書き込み器具等で外部より書き込む事が可能であるため、改竄されてしまうおそれがある。
【００６３】
その為、改竄検証済みのプログラムで動作するＣＰＵ１０１によって、ＣＰＵ１０２のリセットベクタを切り換えても、ＣＰＵ１０２は改竄されたプログラムで起動される恐れがある。
【００６４】
第２の実施形態では、上記課題を解決するために、フラッシュメモリ１１６に格納されているＣＰＵ１０２に実行させる別の処理プログラム（プログラム２０２）についても改竄検証を行う。以下、第２の実施形態について、複合機を例に説明する。第２の実施形態の複合機を説明するに辺り、第１の実施形態の複合機と同じモジュール、処理については同一の番号を付与し、説明を割愛する。
【００６５】
＜ＣＰＵ１０２の動作プログラム切り換えシーケンス＞
図４に、本実施例２における、複合機１００の電源投入直後からの、ＣＰＵ１０２に動作させるプログラム、及びプログラム切り換えシーケンスのフローチャートを示す。
【００６６】
図４に示すフローチャートにおいて、Ｓ３０１〜Ｓ３０２の処理は、本実施例１のフローチャート（図３）における処理と同様であるため、説明を割愛する。
【００６７】
ＣＰＵ１０２が改竄検知プログラムに従って動作する状態で起動すると、ＣＰＵ１０２は、フラッシュメモリ１１６に格納されているＣＰＵ１０１に動作させるプログラムと、ＣＰＵ１０２の別の処理プログラムについて、改竄の有無を検証する（Ｓ４０３）。
【００６８】
ＲＯＭ１０３には、ＣＰＵ１０１に動作させるプログラムの署名データの他に、ＣＰＵ１０２に動作させる別の処理プログラム（プログラム２０２）の署名データが予め格納されている。
【００６９】
一方、フラッシュメモリ１１６には、ＣＰＵ１０１に動作させるプログラムの暗号化された署名データの他に、ＣＰＵ１０２に動作させる別の処理プログラム（プログラム２０２）の暗号化された署名データが予め格納されている。
【００７０】
改竄検知プログラム（プログラム２０１）で動作しているＣＰＵ１０２は、まず始めにフラッシュメモリ１１６に格納されているＣＰＵ１０１に動作させるプログラムの暗号化された署名データをデコードする。そしてＲＯＭ１０３に格納されているＣＰＵ１０１に動作させるプログラムの署名データと一致しているか否かを確認することにより、ＣＰＵ１０１に動作させるプログラムの改竄の有無を検証する。
【００７１】
次にＣＰＵ１０２は、フラッシュメモリ１１６に格納されているＣＰＵ１０２に動作させる別の処理プログラム（プログラム２０２）の暗号化された署名データをデコードする。そしてＲＯＭ１０３に格納されている別の処理プログラム（プログラム２０２）の署名データと一致しているか否かを確認することにより、ＣＰＵ１０２に動作させる別の処理プログラム（プログラム２０２）の改竄の有無を検証する。
【００７２】
図４に示すフローチャートにおいて、Ｓ３０５〜Ｓ３１１の処理は、本実施例１のフローチャート（図３）における処理と同様であるため、説明を割愛する。
【００７３】
以上説明してきたように、実施例２の複合機１００では、ＣＰＵ１０２は、改竄検証済みの別の処理プログラムであるプログラム２０２により動作するよう制御する。
【００７４】
つまり、ＣＰＵ１０２に実行させるプログラムを別の処理プログラム（プログラム２０２）に切り換える際に、ＣＰＵ１０２のリセットベクタを実施例１と同じリセットベクタ２０５で設定した場合であっても、プログラム２０２の改竄検証を行うことができる。
【００７５】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2020086516.tif 000003
【図２】
2020086516.tif 000004
【図３】
2020086516.tif 000005
【図４】
2020086516.tif 000006