(57)【要約】【課題】  消費電力の増大を抑制し、ブートコードの改竄検知を行う手段が正常に動作していることを通知する。【解決手段】  第１制御部が実行するブートコードを第２制御部が検証する際に、通知部を第１の電力状態で駆動し、ブートコードの異常があれば通知部を所定の電力状態で駆動することでブートコードの異常を通知し、ブートコードの異常がなければ通知部を第１の電力状態よりも低い第２の電力状態とする。【選択図】  図５
2020087321.tif 000002
【特許請求の範囲】
【請求項１】
制御手段と、
前記制御手段のブートプログラムを記憶する記憶手段と、
前記記憶手段から前記ブートプログラムを読み出して当該読み出されたブートプログラムの正当性を検証し、当該検証の結果に基づいて前記制御手段を、前記記憶手段から前記ブートプログラムを読み出して実行可能な状態にする検証手段と、
オン状態とオフ状態を有する通知手段であって、オン状態とオフ状態とを人が区別して識別可能な通知手段と、
を有する情報処理装置において、
前記通知手段は、
前記検証手段が前記ブートプログラムの前記検証を開始する前にオン状態になって、当該オン状態を継続して前記検証手段が前記ブートプログラムの前記検証を終了した後にオフ状態になることを特徴とする情報処理装置。
【請求項２】
前記検証手段は、前記通知手段をオン状態またはオフ状態にすることができ、
前記検証手段は、前記通知手段を、前記ブートプログラムの前記検証を終了した後にオフ状態にすることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検証手段は、前記ブートプログラムの前記検証を終了した後、前記通知手段のオン状態またはオフ状態に制御可能な間、前記検証の結果に基づいて、前記通知手段をオフ状態に維持し続けることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記検証手段は、前記ブートプログラムの前記検証を終了した後、前記通知手段のオン状態またはオフ状態に制御可能な間、前記検証によって前記ブートプログラムが正当なものであると判定した場合に、前記通知手段をオフ状態に維持することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記検証手段は、前記ブートプログラムの前記検証を終了した後、前記通知手段のオン状態またはオフ状態に制御可能な間、前記検証によって前記ブートプログラムが正当なものでないと判定した場合に、前記通知手段をオフ状態とオン状態とに交互に繰り返し切り替えることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記検証手段は、前記ブートプログラムの前記検証を開始する前に前記通知手段をオン状態にし、前記ブートプログラムの前記検証の間、前記通知手段をオン状態に維持することを特徴とする請求項２乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記通知手段は発光素子であり、前記オン状態は前記発光素子の点灯状態に相当し、前記オフ状態は前記発光素子の消灯状態に相当することを特徴とする請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記検証手段は、前記ブートプログラムの正当性を検証するために前記検証手段によって実行される検証プログラムにしたがって、前記ブートプログラムの正当性を検証し、
前記検証プログラムは、前記通知手段を前記オン状態にしてから前記ブートプログラムの前記検証を開始するコードを含むことを特徴とする請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
前記記憶手段は、前記検証プログラムも記憶し、
前記検証手段は、前記記憶手段から前記検証プログラムを読み出して当該読み出された検証プログラムの正当性を検証して、前記検証プログラムが正当なものであると判定してから、前記検証プログラムにしたがって前記ブートプログラムの正当性を検証することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記検証手段が前記検証プログラムが正当なものでないと判定した場合、前記検証手段は前記通知手段を前記オン状態にせず、前記通知手段は前記オフ状態のままであることを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記検証手段は、前記通知手段を前記オン状態または前記オフ状態にするための制御信号を出力する出力手段を有し、
前記通知手段は、前記制御信号にしたがって、前記オン状態または前記オフ状態になることを特徴とする請求項１乃至１０の何れか１項に記載の情報処理装置。
【請求項１２】
前記検証手段は、前記ブートプログラムの前記検証によって前記ブートプログラムが正当なものであると判定してから、前記制御手段のリセット状態を解除し、
リセット状態が解除された前記制御手段は、前記ブートプログラムを実行することを特徴とする請求項１乃至１１の何れか１項に記載の情報処理装置。
【請求項１３】
前記情報処理装置は、印刷機能および読み取り機能を備える印刷装置であり、
前記ブートプログラムを実行した前記制御手段は、前記印刷機能および前記読み取り機能を制御することを特徴とする請求項１乃至１２の何れか１項に記載の情報処理装置。
【請求項１４】
制御手段と、
前記制御手段のブートプログラムを記憶する記憶手段と、
前記記憶手段から前記ブートプログラムを読み出して当該読み出されたブートプログラムの正当性を検証し、当該検証の結果に基づいて前記制御手段を、前記記憶手段から前記ブートプログラムを読み出して実行可能な状態にする検証手段と、
オン状態とオフ状態を有する通知手段であって、オン状態とオフ状態とを人が区別して識別可能な通知手段と、
を有する情報処理装置の制御方法であって、
前記通知手段を、前記検証手段が前記ブートプログラムの前記検証を開始する前にオン状態にし、当該オン状態を継続して前記検証手段が前記ブートプログラムの前記検証を終了した後にオフ状態にすることを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
制御手段が実行するブートプログラムの正当性を検証する技術に関する。
【背景技術】
【０００２】
画像形成装置（以後、ＭＦＰと呼ぶ）におけるブートコードの改竄検知方法には、メインＣＰＵが実行するブートコードをメインＣＰＵが起動する前にサブＣＰＵが読み出し、サブＣＰＵは読み出したブートコードが改竄されていないかを検証する方法がある。サブＣＰＵがブートコードの改竄を検知した場合の処理として、メインＣＰＵを起動させないためにメインＣＰＵに入力するリセット信号をサブＣＰＵが制御することでメインＣＰＵをリセット状態にし続ける方法が考えられる。
【０００３】
特許文献１は、第１コンポートネントが改竄されているかを判定し、改竄されていなければ第１コンポーネントのブートを開始し当該ブートに成功したことを示すように状態情報を更新し、改竄されていれば第１コンポーネントのブートを抑制することを開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１１−５１１３３１
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ブートコードの改竄検知を行うサブＣＰＵが正常に動作しているか否かはシステムの信頼性に関わるため、サブＣＰＵが正常に動作していることを通知することは重要である。
【０００６】
しかしながら、サブＣＰＵが正常に動作していることを常時通知するために電力を消費し続ける装置構成は、消費電力の増大を招く。
【課題を解決するための手段】
【０００７】
本発明の情報処理装置は、制御手段と、前記制御手段のブートプログラムを記憶する記憶手段と、前記記憶手段から前記ブートプログラムを読み出して当該読み出されたブートプログラムの正当性を検証し、当該検証の結果に基づいて前記制御手段を、前記記憶手段から前記ブートプログラムを読み出して実行可能な状態にする検証手段と、オン状態とオフ状態を有する通知手段であって、オン状態とオフ状態とを人が区別して識別可能な通知手段と、を有する情報処理装置において、前記通知手段は、前記検証手段が前記ブートプログラムの前記検証を開始する前にオン状態になって、当該オン状態を継続して前記検証手段が前記ブートプログラムの前記検証を終了した後にオフ状態になることを特徴とする。
【発明の効果】
【０００８】
消費電力を抑えつつ、ブートコードの改竄検知を行う手段が正常に動作していることを通知する。
【図面の簡単な説明】
【０００９】
【図１】ＭＦＰの構成を示す図である。
【図２】メインＣＰＵの構成を示す図である。
【図３】サブＣＰＵの構成を示す図である。
【図４】ＦＬＡＳＨ  ＲＯＭのメモリマップを示す図である。
【図５】サブＣＰＵの処理を示すフローチャートである。
【図６】メインＣＰＵの処理を示すフローチャートである。
【図７】ＬＥＤの点灯タイミングを示す図である。
【発明を実施するための形態】
【００１０】
以下、本発明を実施するための形態について図面を用いて説明する。
【００１１】
（第１実施形態）
メインＣＰＵ１０１のブートコード（ブートプログラム）の正当性を検証するとき（ブートコードの改竄検知処理時）における故障検知方法を実行する情報処理装置の例としてのＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）について説明する。ＭＦＰは画像形成機能（印刷機能）を有する画像形成装置（印刷装置）である。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、本発明を適用できることは言うまでもない。
【００１２】
図１はＭＦＰ１の構成を表す図であって、同図において、メインＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１は第１の制御部であって、ＭＦＰ１０１全体の制御を司る。
【００１３】
ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２は、揮発性メモリであって、メインＣＰＵ１０１で実行されるプログラムを格納すると共に一時的なデータのワークエリアとして機能する。
【００１４】
操作部１０３はタッチスクリーンを有し、操作部Ｉ／Ｆ１１３を介してメインＣＰＵ１０１にユーザによる操作を通知する。
【００１５】
ネットワークＩ／Ｆ１０４は、ＬＡＮ１３０と接続して外部機器と通信を行う。
【００１６】
プリンタ部１０５は、画像データを紙面上に印字する。プリンタ部１０５は、例えば電子写真方式のものやインクジェット方式のものであって良く、方式を問わない。スキャナ部１０６は、紙面上の画像を光学的に読み取り電気信号に変換してスキャン画像を生成する。ファクシミリ（ＦＡＸ）１０７は、公衆回線１１０と接続して外部機器とファクシミリ通信を行う。メインＣＰＵ１０１は、後述するメインＣＰＵ  ＢＩＯＳ４０１を始めとした各種プログラムを実行して、これらプリンタ部１０５、スキャナ部１０６、ＦＡＸ１０７が提供する印刷機能、読み取り機能、ＦＡＸ機能を制御する。
【００１７】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０８は、不揮発性のストレージデバイスであって、ＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍなどの）メインＣＰＵ１０１で実行されるプログラムを格納する。またこのＨＤＤ１０８は、プリントジョブやスキャンジョブ等のスプール領域としても利用される。また、ＨＤＤ１０８は、スキャン画像を保管し再利用するための領域としても利用される。
【００１８】
バス１０９は信号バスであって、各モジュールを相互に接続して通信を行う。公衆回線１１０は、ＦＡＸ１０７と外部機器を相互接続する。画像処理部１１１はＡＳＩＣであって、ネットワークＩ／Ｆ１０４で受信したプリントジョブをプリンタ部１０５で印刷するのに適した画像への変換処理、スキャナ部１０６で読み取ったスキャン画像のノイズ除去や色空間変換、回転、圧縮等の処理を実行する。また、画像処理部１１１は、ＨＤＤ１０８に保管されたスキャン画像の画像処理を実行する。
【００１９】
ＦＬＡＳＨ  ＲＯＭ（ＦＬＡＳＨ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１２は、不揮発性メモリであって、メインＣＰＵ１０１で実行されるブートコードであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ  Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）を含むプログラムを格納する。またＦＬＡＳＨ  ＲＯＭ１１２は、ＭＦＰ１のデフォルト設定値を記憶する。
【００２０】
操作部Ｉ／Ｆ１１３は、操作部１０３と信号バス１０９を相互接続する。
【００２１】
ＳＰＩバス１１４は、メインＣＰＵ１０１、ＦＬＡＳＨ  ＲＯＭ１１２、サブＣＰＵ１１５を相互接続する。本実施形態においてメインＣＰＵ１０１およびサブＣＰＵ１１５はそれぞれ、ＦＬＡＳＨ  ＲＯＭ１１２のマスターデバイスとして振る舞う。
【００２２】
サブＣＰＵ１１５は第２の制御部であって、ＭＦＰ１の起動時に、ＦＬＡＳＨ  ＲＯＭ１１２からメインＣＰＵ１０１のブートコード（ＢＩＯＳ）を読み出して改竄がされていないか検証を行う。すなわちＢＩＯＳの正当性が検証される。改竄がされていない（ＢＩＯＳが正当なものである）ことが分かった場合にサブＣＰＵ１１５は、メインＣＰＵ１０１のリセット状態を解除する。
【００２３】
データの改竄の検知方法の一例として、本実施形態は次の方法を採用する。例えば検証対象のデータ、そのデータのデジタル署名（オリジナルデータのハッシュ値を秘密鍵で暗号化したもの）、そのデジタル署名の公開鍵（秘密鍵と対の公開鍵）を１つまたは複数のメモリに記憶しておくとする。次に、検証対象のデータからハッシュ値を計算し、かつ、デジタル署名を公開鍵で復号化してオリジナルデータのハッシュ値を得る。そしてサブＣＰＵ１１５は、２つのハッシュ値を比較して、２つのハッシュ値が一致すれば検証対象のデータは正当なものであって改竄はないと判定し、相違すればデータは正当なものではなく改竄があると判定する。このような公開鍵暗号の方法としてはＲＳＡ２０４８、ＥＣＤＳＡなどである。しかしながら、改竄の検知方法はこの方法に限られない。ここで検証対象のデータ（例えばＢＩＯＳ４０１）とそのデジタル署名（例えばＢＩＯＳ署名４０２）とそのデジタル署名を復号するための公開鍵（例えばＢＩＯＳ署名４０２用の公開鍵）を同じメモリ（例えばＦＬＡＳＨ  ＲＯＭ１１２）に記憶してもよい。また、検証対象のデータ（例えばＦＷ４０４）とそのデジタル署名（例えばＦＷ署名４０５）を同じメモリ（例えばＦＬＡＳＨ  ＲＯＭ１１２）に記憶し、そのデジタル署名を復号するための公開鍵を別のメモリ（例えばＯＴＰ３０４）に記憶してもよい。
【００２４】
信号１１６はＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｏ）１２１を点灯または消灯する制御信号であって、サブＣＰＵ１１５のＧＰＩＯポートから出力されてＬＥＤ１２１に接続される。サブＣＰＵ１１５は、ソフトウェア制御でＧＰＩＯ３０３からＨｉｇｈ（Ｈｉ）レベルあるいはＬｏｗ（Ｌｏ）レベルの信号１１６を出力することで、ＬＥＤ１２１を任意のタイミングで点灯、消灯することができる。
【００２５】
信号１１７はリセット信号であって、サブＣＰＵ１１５の別のＧＰＩＯポート３１２から出力されてメインＣＰＵ１０１のリセット端子に接続される。このリセット信号１１７によってメインＣＰＵ１０１のリセット状態が解除される。ＧＰＩＯ３１２によって、このリセット信号１１７が“Ｌｏ”レベルから“Ｈｉ”レベルにドライブされると、メインＣＰＵ１０１のリセットが解除される。
【００２６】
電源制御部１１８は、集積回路であって、ＭＦＰ１内の各モジュールの電力供給を制御する。電源線１１９は、電源制御部１１８から各モジュールに電力を供給する。電源供給線１２０は、商業用ＡＣ電源が供給される。ＬＥＤ１２１は、ユーザーやサービスマン等の人物に現在の装置の状態を識別させる手段であって、サブＣＰＵ１１５から出力されるＬＥＤ信号１１６によってドライブされる発光素子である。すなわち、ＬＥＤ１２１は点灯状態（オン状態に相当）と消灯状態（オフ状態に相当）という２つの電力状態（第１の電力状態と第２の電力状態）を有し、点灯状態のＬＥＤ１２１と消灯状態のＬＥＤ１２１とは人が目視で区別して識別可能である。
【００２７】
リセット回路１２２は、システムの電源がＯＮされると、まずサブＣＰＵ１１５およびメインＣＰＵ１０１を含むモジュールにリセットがかけられる。その後、リセット回路１２２は、電源が規定電圧に達してから所定の遅延時間後にサブＣＰＵ１１５のリセット信号１２３を“Ｌｏ”レベルから“Ｈｉ”レベルに遷移する。信号１２３はサブＣＰＵリセット信号であって、リセット回路１２２から出力されてサブＣＰＵ１１５のリセット端子に接続される。サブＣＰＵリセット信号１２３が“Ｈｉ”レベルになると、サブＣＰＵ１１５はリセットが解除されて後述の図５のフローチャートで示される処理を行う。
【００２８】
図２はメインＣＰＵ１０１の構成を示す図であって、同図において、ＣＰＵコア２０１は、ＣＰＵの基本機能を担っている。ＳＰＩ  Ｍａｓｔｅｒ２０２は、ＳＰＩのマスターデバイスとして、外部のＳＰＩデバイス（ＦＬＡＳＨ  ＲＯＭ１１２）と相互に接続してデータの読み書きを行う。ＳＰＩバス２０６（１１４）は、ＳＰＩ  Ｍａｓｔｅｒ２０２と外部のＳＰＩデバイスと電気的に接続する。メインＣＰＵ１０１がＦＬＡＳＨ  ＲＯＭ１１２からデータを読み出すときに、ＳＰＩ  Ｍａｓｔｅｒ２０２が用いられる。信号バス２０９は、メインＣＰＵ１０１内の各モジュールを接続する。リセット信号１１７が“Ｌｏ”レベルの場合、メインＣＰＵ１０１（ＣＰＵコア２０１）はリセット状態となる。リセット信号１１７が“Ｈｉ”レベルの場合、メインＣＰＵ１０１（ＣＰＵコア２０１）はリセット解除状態となる。リセット信号１１７が“Ｌｏ”レベル（リセット状態）から“Ｈｉ”レベル（リセット解除状態）に遷移すると、ＣＰＵコア２０１は先ず、ＦＬＡＳＨ  ＲＯＭ１１２内に記憶されているメインＣＰＵのＢＩＯＳ４０４をＤＲＡＭ１０２にロードして実行する。
【００２９】
図３はサブＣＰＵ１１５の構成を示す図であって、同図において、ＣＰＵコア３０１は、ＣＰＵの基本機能を担っている。ＳＰＩ  Ｍａｓｔｅｒ３０２は、ＳＰＩのマスターデバイスとして、外部のＳＰＩデバイス（ＦＬＡＳＨ  ＲＯＭ１１２）とＳＰＩバス３０６（１１４）を介して接続してデータの読み書きを行う。ＣＰＵコア３０１がＦＬＡＳＨ  ＲＯＭ１１２からデータを読み出すときに、ＳＰＩ  Ｍａｓｔｅｒ３０２が用いられる。ＧＰＩＯ（Ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｉｎｐｕｔ／ｏｕｔｐｕｔ）３０３は、外部のデバイス（ＬＥＤ１２１）にＬＥＤ信号１１６を出力する。またＧＰＩＯ３１２は、メインＣＰＵ１０１のリセット解除を制御のためのリセット信号１１７を、メインＣＰＵ１０１に出力する。
【００３０】
ＯＴＰ（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ）メモリ３０４は、製造時にサブＣＰＵ１１５のファームウェア（ＦＷ）のデジタル署名を復号するための公開鍵が書き込まれる。またＯＴＰメモリ３０４は、Ｔａｇ（サブＣＰＵ１１５のファームウェアの格納アドレスを示す情報）が記憶されているＦＬＡＳＨ  ＲＯＭ１１２上のアドレスが書き込まれる。この領域に書き込まれたデータは一度書き込まれると二度と書換えることはできず、セキュアである。
【００３１】
ＳＲＡＭ３０５は、サブＣＰＵ１１５内のワークメモリとして使用される。暗号処理部３０８は、ハードウェア回路であって、公開鍵を用いてデジタル署名（例えばサブＣＰＵ１１５のファームウェアやメインＣＰＵ１０１のＢＩＯＳのデジタル署名）を復号する。信号バス３０９は、サブＣＰＵ１１５内の各モジュールと接続する。Ｂｏｏｔ  ＲＯＭ３１０は、マスクＲＯＭであって、サブＣＰＵ１１５のブートコードを記憶する。このＢｏｏｔ  ＲＯＭ３１０の内容は書き換えることができないため、セキュアである。
【００３２】
サブＣＰＵ１１５に入力されるリセット信号が“Ｌｏ”レベルの場合、サブＣＰＵ１１５（ＣＰＵコア３０１）はリセット状態となる。このリセット信号が“Ｈｉ”レベルの場合、サブＣＰＵ１１５（ＣＰＵコア３０１）はリセット解除状態となる。このリセット信号がリセット状態からリセット解除状態に遷移すると、ＣＰＵコア３０１は先ず、Ｂｏｏｔ  ＲＯＭ３１０から自身のブートコードを読み出し実行する。
【００３３】
Ｃｒｙｐｔｏ  ＲＡＭ３１１は、暗号処理部３０８で利用する機密性の高いデータ等を記憶する揮発性メモリである。
【００３４】
図４はＦＬＡＳＨ  ＲＯＭ１１２のメモリマップを示す図である。ＦＬＡＳＨ  ＲＯＭ１１２は、メインＣＰＵ  ＢＩＯＳ４０１、ＢＩＯＳ４０１のデジタル署名であるＢＩＯＳ署名４０２、サブＣＰＵ  ＦＷ（ファームウェア）４０４、サブＣＰＵ  ＦＷ４０４のデジタル署名であるＦＷ署名４０５を記憶する。メインＣＰＵ  ＢＩＯＳ４０１は、メインＣＰＵ１０１のブートコードである。ＢＩＯＳ署名４０２は、ＢＩＯＳ４０１のハッシュ値に対するＲＳＡ署名値である。サブＣＰＵ  ＦＷ４０４は、サブＣＰＵ１１５のブートコードと、ＢＩＯＳ署名４０２を復号するための公開鍵と、を含む。ＦＷ署名４０５は、サブＣＰＵ  ＦＷ４０４のＥＣＤＳＡ署名値である。なおＦＷ署名４０５は、サブＣＰＵ  ＦＷ４０４の先頭の特定部分のＥＣＤＳＡ署名値であってもよい。
【００３５】
またＦＬＡＳＨ  ＲＯＭ１１２は、サブＣＰＵ  ＦＷ４０４が記憶されているメモリ領域の先頭アドレスを示すＴａｇ４０３を記憶する。このＴａｇ４０３自体のアドレスはＯＴＰ３０４に記憶されている。
【００３６】
またＦＬＡＳＨ  ＲＯＭ１１２は、ＲＯＭ−ＩＤと呼ばれる情報を記憶する。このＲＯＭ−ＩＤ４０６は、メインＣＰＵ  ＢＩＯＳ４０１の先頭アドレス、サイズおよびＢＩＯＳ署名４０２のアドレスが記憶されている。
【００３７】
なお、本実施形態ではメインＣＰＵ  ＢＩＯＳ４０１、ＢＩＯＳ署名４０２、Ｔａｇ４０３、サブＣＰＵ  ＦＷ４０４、ＦＷ署名４０５は一組のセットのみを記憶した場合の例を示している。しかしながら、これらを複数のセットで記憶しておき、必要に応じて切り替えて使用することも可能である。
【００３８】
次に、本実施形態におけるサブＣＰＵ１１５の処理手順を図５のフローチャートを用いて説明する。このフローチャートは、リセットが解除されたサブＣＰＵ１１５によって開始される。
【００３９】
以降の処理Ｓ５０１〜Ｓ５０４は、サブＣＰＵ１１５のファームウェア（ＦＷ）４０４を検証する処理（ＦＷ４０４の改竄検知処理）に対応する。
【００４０】
Ｓ５０１において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、Ｂｏｏｔ  ＲＯＭ３１０内のサブＣＰＵ１１５のブートコードを実行する。そしてこのブートコードにしたがって、サブＣＰＵ１１５は、ＳＰＩバス１１４を介してＦＬＡＳＨ  ＲＯＭ１１２からサブＣＰＵ  ＦＷ４０４をＳＲＡＭ３０５に読み出す。
【００４１】
Ｓ５０２において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、ＦＬＡＳＨ  ＲＯＭ１１２に記憶されたＦＷ署名４０５を、暗号処理部３０８を用いて、ＯＴＰ３０４内の公開鍵で復号化して、正解となるハッシュ値を得る。
【００４２】
Ｓ５０３において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、暗号処理部３０８を用いて、ＳＲＡＭ３０５に読み込んだサブＣＰＵ  ＦＷ４０４のハッシュ値を計算する。
【００４３】
Ｓ５０４において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、Ｓ５０２で得られたハッシュ値とＳ５０３で計算されたハッシュ値を比較し、双方のハッシュ値が等しいかどうかを判定する。双方のハッシュ値が等しくない（一致しない）場合（Ｓ５０４でＮＯ）、処理を終了する。ここで処理が終了した場合には、本実施形態においてＬＥＤ１２１は１度も点灯しない。そのため、ＭＦＰ１の電源を入れてからのＬＥＤ１２１の状態を監視している人（ユーザーあるいはサービスマン）は、サブＣＰＵ１１５の故障あるいはサブＣＰＵ１１５のＦＷ４０４の異常（改ざん等）を疑うことができる。
【００４４】
双方のハッシュ値が等しい（一致する）場合（Ｓ５０４でＹＥＳ）、Ｓ５０５において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、サブＣＰＵ  ＦＷ４０４をＦＬＡＳＨ  ＲＯＭ１１２からＳＲＡＭ３０５に読み出す。そしてＳ５０６において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、ＳＲＡＭ３０５に読み込まれたサブＣＰＵ  ＦＷ４０４を実行し、このＦＷ４０４に従ってＧＰＩＯ３０３を制御してＬＥＤ信号１１６をドライブすることでＬＥＤ１２１を点灯させる。ＬＥＤ１２１の点灯状態は、後述のメインＣＰＵ  ＢＩＯＳ４０１の正当性の検証中、ＧＰＩＯ３０３からのＬＥＤ信号１１６によって維持される。なお、Ｓ５０５の処理を省略し、Ｓ５０１においてＳＲＡＭ３０５に読み込まれたＦＷ４０４を実行するようにしてもよい。
【００４５】
このようにサブＣＰＵ１１５のＦＷ４０４を実行してＬＥＤ１２１を点灯させるので、ＬＥＤ１２１が点灯すれば、サブＣＰＵ１１５のＦＷ４０４やサブＣＰＵ１１５自体に異常がないことを知ることができる。一方、ＬＥＤ１２１が点灯しない場合、サブＣＰＵ１１５のＦＷ４０４の異常（改ざん）や、サブＣＰＵ１１５自体の故障の可能性があることを知ることができる。
【００４６】
Ｓ５０７において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、ＲＯＭ−ＩＤ４０６をＦＬＡＳＨ  ＲＯＭ１１２からＣｒｙｐｔｏ  ＲＡＭ３１１に読み出す。
【００４７】
Ｓ５０８において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、Ｃｒｙｐｔｏ  ＲＡＭ３１１に読み込まれたＲＯＭ−ＩＤ４０６から、メインＣＰＵ  ＢＩＯＳ４０１のアドレスとＢＩＯＳ署名４０２のアドレスを得る。
【００４８】
以降の処理Ｓ５０９〜Ｓ５１３の処理はメインＣＰＵのＢＩＯＳ４０１を検証する処理（ＢＩＯＳ４０１の改竄検知処理）に対応する。
【００４９】
Ｓ５０９において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、ＢＩＯＳ署名４０２をＳＲＡＭ３０５に読み出す。
【００５０】
Ｓ５１０において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、暗号処理部３０８によってＢＩＯＳ署名４０２をサブＣＰＵ  ＦＷ４０４に含まれている公開鍵で復号化してハッシュ値を得る。
【００５１】
Ｓ５１１において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、メインＣＰＵ  ＢＩＯＳ４０１をＦＬＡＳＨ  ＲＯＭ１１２からＳＲＡＭ３０５に読み出す。
【００５２】
Ｓ５１２において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、暗号処理部３０８を用いて、ＳＲＡＭ３０５に読み込まれたメインＣＰＵ  ＢＩＯＳ４０１から、メインＣＰＵ  ＢＩＯＳ４０１のハッシュ値を計算する。
【００５３】
Ｓ５１３において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、Ｓ５１０で得られたハッシュ値とＳ５１２で計算されたハッシュ値を比較して双方のハッシュ値が等しいか否かを判定する。双方のハッシュ値が等しい（一致している）場合（Ｓ５１３でＹＥＳ）、Ｓ５１４において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、ＧＰＩＯ３０３を介して信号１１６を制御してＬＥＤ１２１を消灯する。ＬＥＤ１２１は、消灯状態を、サブＣＰＵ１１５がＧＰＩＯ３０３を介してＬＥＤ１２１を制御可能な間、継続することが望ましいが、少なくともサブＣＰＵ１１５がメインＣＰＵ１０１のリセットを解除するまで継続する。言い換えると、サブＣＰＵ１１５が、メインＣＰＵ１０１を、ＦＬＡＳＨ  ＲＯＭ１１２に記憶されたＢＩＯＳ４０１を読み込んで実行可能な状態にするまで、ＬＥＤ１２１は消灯状態を継続する。そして、Ｓ５１５において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、ＧＰＩＯ３１２を介してリセット信号１１７を“Ｈｉ”にしてメインＣＰＵ１０１のリセットを解除する。この場合、サブＣＰＵ１１５（ＣＰＵコア３０１）は、メインＣＰＵ１０１のリセット解除後、ＬＥＤ１２１が再び点灯することがなくＬＥＤ１２１を消灯し続けるようにしている。
【００５４】
その後、Ｓ５１６において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、電力消費のもっとも少ないスリープ状態に入り、その状態を維持する。なお、サブＣＰＵ１１５（ＣＰＵコア３０１）は、スリープ状態ではＧＰＩＯ３０３からの信号１１６の出力状態を維持する。すなわちＬＥＤ１２１はメインＣＰＵ１０１のリセットが解除されている状態（Ｓ５１６以降の状態）において、消灯したままとなる。このようにＬＥＤ１２１を点灯状態から消灯状態に切り替えることで、ずっと点灯状態を維持する場合よりも消費電力を下げることができる。すなわち、ＬＥＤ１２１における消灯状態は、点灯状態よりも単位時間当たりの消費電力量が小さい電力状態である。
【００５５】
また、サブＣＰＵ１１５（ＣＰＵコア３０１）は、スリープ状態ではＧＰＩＯ３１２からの信号１１７の出力状態を“Ｈｉ”レベルに維持する。すなわちメインＣＰＵ１０１のリセットが解除された状態のままとなる。
【００５６】
また、本実施形態のサブＣＰＵ１１５は、一度スリープ状態に入った後は通常状態に戻る必要はないので割込み信号を受信する必要はない。ただし、サブＣＰＵ１１５を改竄検知以外の用途にも利用するのであれば、割り込み信号の受信を許可して通常状態へ復帰させるように構成すればよい。
【００５７】
一方、双方のハッシュ値が等しくない（一致しない）場合（Ｓ５１３でＮＯ）は、Ｓ５１７において、サブＣＰＵ１１５（ＣＰＵコア３０１）は、ＧＰＩＯ３０３を介して信号１１６を制御してＬＥＤ１２１を点滅させる。点滅パターンは例えば点灯と消灯を１秒ごとに繰り返すパターンなどでよい。ＬＥＤ１２１は、この点滅状態を、サブＣＰＵ１１５がＧＰＩＯ３０３を介してＬＥＤ１２１を制御可能な間、継続することが望ましいこのようにＬＥＤ１２１の点滅によって、改竄等によるメインＣＰＵ１０１のＢＩＯＳ４０１の異常を知ることができる。またＬＥＤ１２１を点灯し続けるよりも点滅する方が消費電力を抑えることができる。すなわち、ＬＥＤ１２１における点滅状態は、点灯状態よりも単位時間当たりの消費電力量が小さい電力状態である。なお点滅状態は消灯状態よりも単位時間当たりの消費電力量が大きい状態である。
【００５８】
以上のように、サブＣＰＵ１１５は、ＦＬＡＳＨ  ＲＯＭ１１２から読み出したサブＣＰＵ  ＦＷ４０４のハッシュ値を計算して正解のハッシュ値と比較することで、ＦＬＡＳＨ  ＲＯＭ１１２に記憶されているサブＣＰＵ  ＦＷ４０４の正当性を検証する。この検証によってサブＣＰＵ  ＦＷ４０４が正当なものであると判定した場合に、サブＣＰＵ１１５はＦＬＡＳＨ  ＲＯＭ１１２から読み出したサブＣＰＵ  ＦＷ４０４を実行し、メインＣＰＵ  ＢＩＯＳ４０１の正当性を検証する。すなわちサブＣＰＵ  ＦＷ４０４は、メインＣＰＵ  ＢＩＯＳ４０１の正当性を検証する検証プログラムでもある。このサブＣＰＵ  ＦＷ４０４は、ＬＥＤ１２１を点灯状態にしてからメインＣＰＵ  ＢＩＯＳ４０１の正当性の検証を開始するプログラムコードを含む。このようにＬＥＤ１２１を一旦点灯状態にすることで、サブＣＰＵ１１５がサブＣＰＵ  ＦＷ４０４を正しく実行できていることを確認できる。
【００５９】
サブＣＰＵ１１５は、この検証プログラムにしたがって、ＦＬＡＳＨ  ＲＯＭ１１２からメインＣＰＵ  ＢＩＯＳ４０１を読み出して、サブＣＰＵ  ＦＷ４０４の検証と同様に、ハッシュ値を計算してそれを正解のハッシュ値と比較する。これによってＦＬＡＳＨ  ＲＯＭ１１２に記憶されているメインＣＰＵ  ＢＩＯＳ４０１の正当性が検証される。このメインＣＰＵ  ＢＩＯＳ４０１の検証が終了した後に、サブＣＰＵ１１５は、点灯状態のＬＥＤ１２１を消灯状態にする。このようにＬＥＤ１２１を消灯状態にすることで、ＬＥＤ１２１を点灯状態に維持し続けるよりも消費電力を下げることができる。
【００６０】
より詳細には、メインＣＰＵ  ＢＩＯＳ４０１が正当なものであると判定されれば、サブＣＰＵ１１５は、自身がＬＥＤ１２１の点灯状態および消灯状態を制御可能な間、ＬＥＤ１２１を消灯状態に維持する。また、メインＣＰＵ  ＢＩＯＳ４０２が正当なものでないと判定されれば、サブＣＰＵ１１５は、自身がＬＥＤ１２１の点灯状態および消灯状態を制御可能な間、ＬＥＤ１２１を消灯状態と点灯状態とを交互に繰り返すように制御する。このようにＬＥＤ１２１を点灯状態に維持し続けずに、メインＣＰＵ  ＢＩＯＳ４０２が正当なものであるのか否かを区別して通知することができる。
【００６１】
次に、本実施形態におけるメインＣＰＵ１０１の処理手順を図６のフローチャートを用いて説明する。
【００６２】
Ｓ６０１において、メインＣＰＵ１０１（ＣＰＵコア２０１）は、リセットが解除されると直ちにＦＬＡＳＨ  ＲＯＭ１１２に記憶されたメインＣＰＵ  ＢＩＯＳ４０１をＤＲＡＭ１０２に読み出す。
【００６３】
次にＳ６０２において、メインＣＰＵ１０１（ＣＰＵコア２０１）は、ＢＩＯＳ４０１を実行し、ＢＩＯＳ４０１にしたがってメインＣＰＵ１０１内の入出力の初期化を行う。
【００６４】
次にＳ６０３において、メインＣＰＵ１０１（ＣＰＵコア２０１）は、ＨＤＤ１０８からＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）をＤＲＡＭ１０２に読み出す。
【００６５】
そしてＳ６０４において、メインＣＰＵ１０１（ＣＰＵコア２０１）は、ＤＲＡＭ１０２に読み込まれたＯＳを起動する。
【００６６】
続いてＳ６０５において、メインＣＰＵ１０１（ＣＰＵコア２０１）は、プリンタ部１０５、スキャナ部１０６ＦＡＸ１０７、画像処理部１１１、ネットワークＩ／Ｆ１０４操作部１０３を初期化してＭＦＰ１として機能可能な状態にする。
【００６７】
次に、本実施形態におけるＬＥＤ１２１の点灯タイミングを図７のタイミングチャートを用いて説明する。同図において、タイミングチャート７０１は、サブＣＰＵ１１５のＦＷ４０４やサブＣＰＵ１１５自体に異常がなく、かつ、メインＣＰＵ１０１のＢＩＯＳ４０１にも異常がない場合（正常時）のタイミングチャートである。このタイミングチャート７０１において、時間Ｔ０（リセット回路１２２がサブＣＰＵ１１５のリセット解除時）でＬＥＤ１２１は消灯（ＯＦＦ）している。そして時間Ｔ１（ＢＩＯＳ４０１の改竄検知処理の開始時：図５のＳ５０６）でＦＷ４０４は、ＬＥＤ１２１を点灯（ＯＮ）し、時間Ｔ２（ＢＩＯＳ４０１の改竄検知処理の終了時：図５のＳ５１４）でＬＥＤ１２１を消灯（ＯＦＦ）する。
【００６８】
一方タイミングチャート７０２は、サブＣＰＵ１１５のＦＷ４０４あるいはサブＣＰＵ１１５自体が異常である時のタイミングチャートである。このタイミングチャート７０２においても、時間Ｔ０でＬＥＤ１２１は消灯（ＯＦＦ）している。しかしサブＣＰＵ１１５のＦＷ４０４が実行されないのでＬＥＤ１２１は点灯されず、以降、消灯（ＯＦＦ）したままとなる。
【００６９】
またタイミングチャート７０３は、ＢＩＯＳ４０１が異常である時のタイミングチャートである。このタイミングチャート７０３においても、時間Ｔ０でＬＥＤ１２１は消灯（ＯＦＦ）している。このタイミングチャート７０３では、ＦＷ４０４が実行されるので時間Ｔ１でＬＥＤ１２１は点灯（ＯＮ）する。そして、ＦＷ４０４によってＢＩＯＳ４０１の異常が検知されるので、時間Ｔ２以降はＬＥＤ１２１は点滅（ＯＮ／ＯＦＦの繰り返し）する。
【００７０】
以上説明した様に、本実施形態のＭＦＰ１は、サブＣＰＵ１１５によるＦＷ４０４の実行によるメインＣＰＵ１０１のＢＩＯＳ４０１の正当性の検証中にＬＥＤ１２１を点灯し続ける。そしてその検証の結果、ＢＩＯＳ４０１に改竄等による異常が検知されなければＬＥＤ１２１を消灯する。このようにＢＩＯＳ４０１が正常であればＬＥＤ１２１を常時点灯させないので、ＭＦＰ１の稼働中の消費電力を抑えることができる。一方、ＭＦＰ１は、ＢＩＯＳ４０１の改竄検知処理の結果、ＢＩＯＳ４０１に改竄等による異常が検知されればＬＥＤ１２１を点滅させる。このようにＬＥＤ１２１を点滅させるので、ＢＩＯＳ４０１（メインＣＰＵ１０１のブートコード）の改竄等の異常を通知することができる。またＬＥＤ１２１は点灯し続けるより点滅する方が消費電力を抑えることができる。
【００７１】
なお、本実施形態ではＬＥＤ１２１の点灯、消灯によって改竄を検知したことをユーザに対して通知しているが、ＬＥＤ以外にも例えばブザー音、音声、無線信号などによる通知手段でも目的は達成可能であることは言うまでもない。このとき、例えばブザー音であれば、ＢＩＯＳ４０１の改竄検知処理中はブザー音を鳴らし、改竄等の異常が検知されなければブザー音を停止する一方で改竄等の異常が検知されればブザー音を断続的に鳴らすよう構成してよい。
【００７２】
（第２実施形態）
第１実施形態においては、ＦＷ４０４がＬＥＤ１２１を点灯したが、本実施形態のＭＦＰ１では、リセット回路１２２がサブＣＰＵ１１５のリセットを解除したときにＦＷ４０４を用いずにＬＥＤ１２１が自動的に点灯するよう構成される。例えば、ＬＥＤ１２１と電源との間にスイッチ回路を接続し、そのスイッチ回路のスイッチングを、サブＣＰＵ１１５からの信号１１６とリセット回路１２２が出力するサブＣＰＵ１１５のリセット信号とのいずれでも制御できるような回路構成であれば良い。このような回路構成であれば、サブＣＰＵ１１５のリセットが解除されるときにＬＥＤ１２１はＦＷ４０４を介さずに自動的に点灯し、サブＣＰＵ１１５によるＢＩＯＳ４０１の改竄検知処理の結果に応じてＦＷ４０４がＬＥＤ１２１を、消灯あるいは点滅する。すなわち、図７のタイミングチャートと比較して、本実施形態のＭＦＰ１では、時間Ｔ０〜Ｔ１の間もＬＥＤ１２１は点灯状態である。
【００７３】
なお本実施形態では、時間Ｔ０でＦＷ４０４がＬＥＤ１２１を点灯する必要がないので図５のＳ５０６におけるＬＥＤ１２１を点灯する処理が省略される。
【００７４】
（他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【図１】
2020087321.tif 000003
【図２】
2020087321.tif 000004
【図３】
2020087321.tif 000005
【図４】
2020087321.tif 000006
【図５】
2020087321.tif 000007
【図６】
2020087321.tif 000008
【図７】
2020087321.tif 000009