(57)【要約】      （修正有）【課題】メインＣＰＵのブートプログラムが改竄されていてメインＣＰＵが起動しない場合においても、改竄を検知し外部の機器に送信する。【解決手段】ＭＦＰ１において、メインＣＰＵ１０１のブートプログラムを検証し、ブートプログラムの改竄を検出した場合、メインＣＰＵ１０１が起動しない場合においても、メインＣＰＵ１０１を用いずに、ネットワークにデータパケットを送信する通信手段により、所定のデータパケットを外部に送信する。【選択図】図１
2020140561.tif 000002
【特許請求の範囲】
【請求項１】
プログラムを実行する実行手段と、
前記実行手段のブートプログラムを検証する検証手段と、
ネットワーク上の外部装置と通信する通信手段と、
を有し、
前記実行手段は、前記検証手段によって検証された前記ブートプログラムを実行し、かつ、前記ネットワークにデータパケットを送信するように前記通信手段を制御する情報処理装置において、
前記通信手段は、前記検証によって前記ブートプログラムが正しくないと判定されると、所定のデータパケットを前記実行手段を用いずに前記ネットワークに送信することを特徴とする情報処理装置。
【請求項２】
前記検証手段は、前記検証によって前記ブートプログラムが正しくないと判定すると、所定の信号を前記通信手段に出力し、
前記通信手段は、前記検証手段によって出力された前記所定の信号に基づいて、前記所定のデータパケットを前記ネットワークに送信することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検証によって前記ブートプログラムが正しくないと判定された後の前記通信手段の状態は、前記ネットワークにデータパケットを送信可能な状態であることを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記通信手段は、前記実行手段によって制御されることなく、前記所定のデータパケットを前記ネットワークに送信することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記通信手段は、前記検証手段による前記検証の結果に関わらず、前記ネットワークにデータパケットを送信可能な状態になることを特徴とする請求項１に記載の情報処理装置。
【請求項６】
前記通信手段は、前記検証手段による前記検証の完了を待たずに前記通信手段のブートプログラムおよびファームウェアを実行し、前記ネットワークにデータパケットを送信可能な状態になることを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記実行手段のブートプログラムを記憶する記憶手段を有し、
前記検証手段は、前記ブートプログラムの検証結果に基づいて、前記実行手段を、前記ブートプログラムを前記記憶手段から読み出せる状態にすることを特徴とする請求項１に記載の情報処理装置。
【請求項８】
前記検証手段は、前記実行手段のリセットを解除して、前記実行手段を、前記ブートプログラムを前記記憶手段から読み出せる状態にすることを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記検証手段は、前記ブートプログラムの内容を参照し、当該参照された内容に基づいて前記ブートプログラムを検証することを特徴とする請求項１に記載の情報処理装置。
【請求項１０】
前記検証手段は、前記ブートプログラムのハッシュ値を計算し、当該ハッシュ値に基づいて前記ブートプログラムを検証することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記実行手段は、前記検証手段によって検証された前記ブートプログラムを実行した後、前記通信手段を制御するためのプログラムを実行して前記ネットワークにデータパケットを送信するように前記通信手段を制御することを特徴とする請求項１に記載の情報処理装置。
【請求項１２】
前記通信手段は、イーサネット規格に準拠した通信を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
前記通信手段は、ＩＥＥＥ８０２．１１の規格に準拠した通信を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項１４】
前記通信手段によって送信される前記所定のデータパケットは、前記ネットワークにブロードキャストされることを特徴とする請求項１に記載の情報処理装置。
【請求項１５】
前記通信手段によって送信される前記所定のデータパケットは、指定された特定の送信先に送信されることを特徴とする請求項１に記載の情報処理装置。
【請求項１６】
前記所定のデータパケットは、前記実行手段が起動しないことを示す情報を含むことを特徴とする請求項１に記載の情報処理装置。
【請求項１７】
前記実行手段は、前記検証によって前記ブートプログラムが正しくないと判定されると、前記ブートプログラムを実行せず、起動しないことを特徴とする請求項１に記載の情報処理装置。
【請求項１８】
プログラムを実行する実行手段と、ネットワーク上の外部装置と通信する通信手段と、を有する情報処理装置によって実行される情報処理方法であって、
検証手段が、前記実行手段のブートプログラムを検証する検証工程と、
前記実行手段が、前記検証手段によって検証された正しい前記ブートプログラムを実行し、前記ネットワークにデータパケットを送信するように前記通信手段を制御する工程と、
前記通信手段が、前記検証工程によって前記ブートプログラムが正しくないと判定されると、所定のデータパケットを前記実行手段を用いずに前記ネットワークに送信する工程と、
を有することを特徴とする情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
プログラムを検証する情報処理装置および情報処理方法に関するものである。
【背景技術】
【０００２】
近年、Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ（以後、ＬＡＮと呼ぶ）やインターネットに配置された管理サーバー等によって、装置の動作状況を収集することが行われている。収集された動作状況を用いて、トラブル発生時の迅速な原因特定や、消耗品の交換時期を適切に管理するといった高いサービス性を提供する仕組みが導入されてきている。通常、このような仕組みは装置内部の動作状況を収集した上で、装置内のメインＣＰＵが、自身をホストデバイスとして、ネットワークＩ／Ｆデバイスを制御し、収集した動作状況の情報をネットワーク上の管理サーバーに送信することで実現される。
【０００３】
特許文献１は、ブートプログラムを起動し、そのブートプログラムがファームウェアを起動する情報処理装置において、そのファームウェアが他のファームウェアの異常を外部に通知する技術を開示する。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１４−１７９０４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
プロセッサのブートプログラムを検証し、検証の結果、ブートプログラムが異常である（正しくない）と判定された場合にブートプログラムを実行させないシステムがある。このようなシステムにおいて、ブートプログラムが異常であると判定されるとプロセッサが起動しないため、異常であることを外部のネットワークに通知できない。
【課題を解決するための手段】
【０００６】
本発明の情報処理装置は、プログラムを実行する実行手段と、前記実行手段のブートプログラムを検証する検証手段と、ネットワーク上の外部装置と通信する通信手段と、を有し、前記実行手段は、前記検証手段によって検証された前記ブートプログラムを実行し、かつ、前記ネットワークにデータパケットを送信するように前記通信手段を制御する情報処理装置において、前記通信手段は、前記検証によって前記ブートプログラムが正しくないと判定されると、所定のデータパケットを前記実行手段を用いずに前記ネットワークに送信することを特徴とする。
【発明の効果】
【０００７】
実行手段のブートプログラムの検証によってブートプログラムが正しくないと判定された場合に、実行手段を用いずに所定のデータパケットを外部に送信する。
【図面の簡単な説明】
【０００８】
【図１】本実施形態の情報処理装置の構成を示す図である。
【図２】本実施形態のメインＣＰＵの構成を示す図である。
【図３】本実施形態のサブＣＰＵの構成を示す図である。
【図４】本実施形態のＦＬＡＳＨ  ＲＯＭのメモリマップを示す図である。
【図５】本実施形態のネットワークＩ／Ｆの構成を示す図である。
【図６】本実施形態のネットワークＩ／Ｆ用  ＦＬＡＳＨ  ＲＯＭのメモリマップを示す図である。
【図７】本実施形態のサブＣＰＵの処理を示すフローチャートである。
【図８】本実施形態のメインＣＰＵの処理を示すフローチャートである。
【図９】本実施形態のネットワークＩ／Ｆが生成するパケットの構成を示す図である。
【図１０】本実施形態のネットワークＩ／Ｆの処理を示すフローチャートである。
【図１１】本実施形態のメインＣＰＵ  ＢＩＯＳに改竄が発見された場合のシーケンス図である。
【図１２】本実施形態のサブＣＰＵ  ＦＷに改竄が発見された場合のシーケンス図である。
【図１３】本実施形態の改竄検証が正常に完了した場合のシーケンス図である。
【発明を実施するための形態】
【０００９】
以下、本発明を実施するための形態について図面を用いて説明する。
【００１０】
（実施例１）
本実施形態で説明する情報処理装置の一例としてＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）を挙げるが、ＭＦＰ以外の情報処理装置に本実施形態で開示される技術を適用してもよい。
【００１１】
図１はＭＦＰ１の構成を表す図であって、同図において、１０１はメインＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）であって、ＭＦＰ１０１全体の制御を司る。このメインＣＰＵ１０１は、ブートプログラムであるＢＩＯＳ（Ｂａｓｉｃ  Ｉｎｐｕｔ／Ｏｕｔｐｕｔ  Ｓｙｓｔｅｍ）４０１を始めとして、後述のネットワークＩ／Ｆ１０４を制御するためのプログラムを含む各種プログラムを実行する。
【００１２】
１０２はＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）であって、メインＣＰＵ１０１で実行されるプログラムを格納すると共に一時的なデータのワークエリアとして機能する。１０３は操作部であって、操作部Ｉ／Ｆ１１３を介してメインＣＰＵ１０１にユーザによる操作を通知する。
【００１３】
１０４はネットワークＩ／Ｆ（インターフェース）であって、ＬＡＮ１３０と接続して外部機器（外部装置）と通信する機能を果たす。この通信はイーサネット（登録商標）規格に準拠した通信である。また、ネットワークＩ／Ｆ１０４は、後述の通り、内部にＣＰＵコア５０１を有し、このＣＰＵコア５０１がデータリンク層デバイスと物理層デバイスを制御して外部機器との通信を行う。ネットワークＩ／Ｆ１０４は、メインＣＰＵ１０１からの指示を受けて外部機器と通信することができる。つまり、ネットワークＩ／Ｆ１０４は、ＢＩＯＳ４０１およびネットワークＩ／Ｆ１０４の制御プログラムを実行したメインＣＰＵ１０１によって制御され、そのメインＣＰＵ１０１からの指示にしたがってデータパケットの送受信を外部機器と行うことができる。さらに、本実施例のネットワークＩ／Ｆ１０４は、メインＣＰＵ１０１からの指示を受けずに独立して外部機器と通信することもできる。つまり、ネットワークＩ／Ｆ１０４は、メインＣＰＵ１０１による制御を必要とせずに、データパケットを生成・送出可能である。そのため、本実施例のネットワークＩ／Ｆ１０４は、メインＣＰＵ１０１のブートプログラムが改竄されていてメインＣＰＵ１０１が起動しない場合においても、改竄を検知したことを示すエラー情報を含むデータパケットを外部機器に送信することができる。また、ネットワークＩ／Ｆ１０４は、不図示のパワーオンリセット回路を有し、このパワーオンリセット回路は、電源制御部１１８から電源線１１９を介して供給された電力の電圧が閾値以上のときにネットワークＩ／Ｆ１０４内の各部のリセットを解除する。
【００１４】
１０５はプリンタ部であって、画像データを紙面上に印字する。１０６はスキャナ部であって、紙面上の画像を光学的に読み取り電気信号に変換してスキャン画像を生成する。１０７はＦＡＸであって、公衆回線１１０と接続して外部機器とファクシミリ通信を行う。
【００１５】
１０８はＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）であって、メインＣＰＵ１０１で実行されるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を始めとする各種プログラムを格納する。ＯＳには、ネットワークＩ／Ｆ１０４を制御するためのデバイスドライバー等の各種デバイスドライバーが含まれる。またＨＤＤ１０８は、プリントジョブやスキャンジョブ等のスプール領域、および、スキャン画像を保管し再利用するための領域としても利用される。１０９は信号バスであって、各モジュールを相互に接続して通信を行う。１１０は公衆回線であって、ＦＡＸ１０７と外部機器を相互接続する。１１１は画像処理部であって、ネットワークＩ／Ｆ１０４で受信したプリントジョブをプリンタ部１０５で印刷するのに適した画像への変換処理、スキャナ部１０６で読み取ったスキャン画像のノイズ除去や色空間変換、回転、圧縮等の処理を実行する。また、ＨＤＤ１０８に保管されたスキャン画像の画像処理を実行する。
【００１６】
１１２はＦＬＡＳＨ  ＲＯＭ（ＦＬＡＳＨ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）であって、メインＣＰＵ１０１で実行されるブートプログラム（ＢＩＯＳ４０１）を格納する。本実施例のメインＣＰＵ１０１は、ブートプログラムを実行し、そしてＯＳを起動する。ＯＳが起動することで、ＯＳ（メインＣＰＵ１０１）は、各種デバイスドライバーを用いて、ネットワークＩ／Ｆ１０４等の各種デバイスを制御することが可能になる。
【００１７】
１１３は操作部Ｉ／Ｆであって、操作部１０３と信号バス１０９を相互接続する。１１４はＳＰＩバスであってメインＣＰＵ１０１、ＦＬＡＳＨ  ＲＯＭ１１２、サブＣＰＵ１１５を相互接続する。
【００１８】
１１５はサブＣＰＵであって、ＭＦＰ１の起動時に、メインＣＰＵ１０１が起動する前にＦＬＡＳＨ  ＲＯＭ１１２からメインＣＰＵ１０１のブートプログラムを読み出してその内容を参照し、参照された内容が改竄されていないか検証を行う。本実施例においてこのブートプログラムは、ＢＩＯＳ４０１である。改竄の検知方法としては例えば次のような方法がある。サブＣＰＵ１１５は、ＦＬＡＳＨ  ＲＯＭ１１２からブートプログラム（ＢＩＯＳ４０１）を読み出し、そのハッシュ値（デジタル署名）を計算する。またサブＣＰＵ１１５は、そのブートプログラムの暗号化されたハッシュ値（デジタル署名）をＦＬＡＳＨ  ＲＯＭ１１２から読み出し、その暗号化された署名値を公開鍵情報を基に復号する。この公開鍵情報は、本実施形態では後述のサブＣＰＵ  ＦＷ４０４内に記憶されている。そしてサブＣＰＵ１１５は、読み出したブートプログラムから計算されたハッシュ値と、復号によって得られたハッシュ値との比較を行うことで、ＦＬＡＳＨ  ＲＯＭ１１２に記憶されているブートプログラムを検証する。２つのハッシュ値が等しければブートプログラムは正しい（ブートプログラムは改竄されていない）と判定でき、異なればブートプログラムは正しくない（ブートプログラムは改竄されている）と判定できる。公開鍵暗号の方法としてはＲＳＡ２０４８、ＥＣＤＳＡなどである。ここでのサブＣＰＵ１１５は、メインＣＰＵ１０１のブートプログラムを検証する機能を果たす。
【００１９】
１１７はリセット信号であって、サブＣＰＵ１１５のＧＰＩＯポートから出力されて、メインＣＰＵ１０１のリセット端子に接続される。リセット信号１１７は、後に図７で詳細に説明するブートプログラムの検証が完了し、ブートプログラムが改竄されていないとサブＣＰＵ１１５が判定した場合に、サブＣＰＵ１１５によって“Ｌｏ”から“Ｈｉ”レベルに遷移する。ここで、“Ｌｏ”レベルとは０を示す電気信号の状態を示す。また、“Ｈｉ”レベルとは１を示す電気信号の状態を表す。リセット信号１１７が“Ｈｉ”レベルになると、メインＣＰＵ１０１はリセットが解除されて起動を開始する。すなわち、メインＣＰＵ１０１はブートプログラム（ＢＩＯＳ４０１）をＦＬＡＳＨ  ＲＯＭ１１２から読み出して実行する。このようにサブＣＰＵ１１５は、メインＣＰＵ１０１のブートプログラムの検証結果に基づいてメインＣＰＵ１０１のリセットを解除して、メインＣＰＵ１０１を、ブートプログラムをＦＬＡＳＨ  ＲＯＭ１１２から読み出して実行できる状態にする。
【００２０】
１１８は電源制御部であって、ＭＦＰ１内の各モジュールの電力供給を制御する。１１９は電源線であって、メインＣＰＵ１０１、ネットワークＩ／Ｆ１０４、サブＣＰＵ１１５等の各モジュールに電力を供給する。１２０は電源供給線であって、商業用ＡＣ電源が供給される。
【００２１】
１２２はリセット回路であって、システムの電源がＯＮされると所定の遅延時間後にリセット信号１２３を“Ｌｏ”から“Ｈｉ”レベルに遷移する。リセット信号１２３はサブＣＰＵ１１５のリセット信号であって、サブＣＰＵ１１５のリセット端子に接続される。リセット信号１２３が“Ｈｉ”レベルになると、サブＣＰＵ１１５はリセットが解除されて起動を開始する。
【００２２】
１３１は改竄発見通知信号であり、サブＣＰＵ１１５がメインＣＰＵ１０１のブートプログラムに改竄があると判定した場合に、プログラムの改竄があることをネットワークＩ／Ｆ１０４に通知するための所定の信号である。改竄発見通知信号１３１は、本実施例ではサブＣＰＵのＧＰＩＯポートから出力されネットワークＩ／Ｆ１０４のＧＰＩＯポートに入力される。
【００２３】
１３２は改竄検証完了通知信号であり、サブＣＰＵ１１５がメインＣＰＵ１０１のブートプログラムに改竄がないことを確認し、ブートプログラムの検証が正常に完了したことを通知するための信号である。改竄検証完了通知信号１３２は、サブＣＰＵのＧＰＩＯポートから出力されて、ネットワークＩ／Ｆ１０４のＧＰＩＯポートに接続される。本実施例において、改竄発見通知信号１３１および改竄検証完了通知信号１３２の初期値は“Ｌｏ”レベルであり、通知を行う場合は“Ｈｉ”レベルとすることで各情報の通知を行うものとする。
【００２４】
１３３はネットワークＩ／Ｆ用ＦＬＡＳＨ  ＲＯＭであり、ネットワークＩ／Ｆ１０４が動作するために必要なファームウェアを記憶する。このネットワークＩ／Ｆ用ＦＬＡＳＨ  ＲＯＭ１３３は、次のようなパケット生成プログラムも記憶する。パケット生成プログラムは、改改竄発見通知信号１３１を受信した場合に、プログラムの改竄によってＣＰＵ１０１が起動しないことを示すエラー情報を含む所定のデータパケットを生成し、そのデータパケットをネットワークへ送信する。
【００２５】
図２はメインＣＰＵ１０１の構成を示す図である。
【００２６】
２０１はＣＰＵコアであって、ＣＰＵの基本機能を担っている。２０２はＳＰＩ  Ｍａｓｔｅｒであって、ＳＰＩ  Ｍａｓｔｅｒ２０２と外部ＳＰＩデバイスと電気的に接続するＳＰＩバス２０６を介し、外部のＳＰＩデバイスとのデータの読み書きを行う。
【００２７】
２０３は信号バスインターフェースであって、信号バス１０９とメインＣＰＵ１０１内の信号バス２０９を接続する。２０９は信号バスであってメインＣＰＵ１０１内の各モジュールを接続する。
【００２８】
リセット信号１１７が“Ｌｏ”レベルの場合、メインＣＰＵ２０１はリセット状態となる。リセット信号１１７が“Ｈｉ”レベルの場合、メインＣＰＵ２０１はリセット解除状態となる。本実施例では、サブＣＰＵ１１５によって、サブＣＰＵ  ＦＷ４０４およびメインＣＰＵ  ＢＩＯＳ４０１が改竄されてないことが確認されると、サブＣＰＵ１１５によってリセット信号１１７が制御されてリセット解除される。これによりメインＣＰＵ１０１は、自身の起動プログラムに一切の改竄がないことを保証された状態で起動開始することができる。リセット信号１１７がリセット状態からリセット解除状態に遷移すると、ＣＰＵコア２０１は先ず、ＦＬＡＳＨ  ＲＯＭ１１２内に記憶されているメインＣＰＵ  ＢＩＯＳ４０４をＤＲＡＭ１０２にロードして実行する。その後、ＣＰＵコア２０１は、ＯＳ等のプログラムをＦＬＡＳＨ  ＲＯＭ１１２から読み出して実行する。
【００２９】
図３はサブＣＰＵ１１５の構成を示す図である。
【００３０】
３０１はＣＰＵコアであって、ＣＰＵの基本機能を担っている。３０２はＳＰＩ  Ｍａｓｔｅｒであって、外部のＳＰＩデバイスと相互に接続してデータの読み書きを行う。３０３はＧＰＩＯ（Ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｉｎｐｕｔ／ｏｕｔｐｕｔ）であって、外部のデバイスと相互に接続してデータの送受信を行う。ＧＰＩＯ３０３には３本の信号が接続されていて、一つはメインＣＰＵ１０１をリセット状態にするためのリセット信号１１７である。２つ目はサブＣＰＵ１１５がメインＣＰＵ  ＢＩＯＳ４０１に改竄があると発見した場合に、ネットワークＩ／Ｆ１０４へ改竄が発見されたことを通知する改竄発見通知信号１３１である。３つ目はサブＣＰＵ１１５がブートプログラムの検証が正常に完了したことを示す、改竄検証完了通知信号１３２である。
【００３１】
３０４はＯＴＰ（Ｏｎｅ  Ｔｉｍｅ  Ｐｒｏｇｒａｍｍａｂｌｅ）メモリ領域であって、サブＣＰＵ  ＦＷ４０４のハッシュ値を暗号化した値を復号するための公開鍵情報、および、Ｔａｇのアドレスが書き込まれる。この領域に書き込まれたデータは一度書き込まれると二度と書換えることはできない。
【００３２】
３０５はＳＲＡＭであって、サブＣＰＵ１１５内のワークメモリとして使用される。
【００３３】
３０８は暗号処理部であって、暗号化した値からサブＣＰＵ  ＦＷ４０４のハッシュ値を復号するほか、暗号化したメインＣＰＵ  ＢＩＯＳ４０１のハッシュ値を復号する。
【００３４】
３０９は信号バスであって、サブＣＰＵ内の各モジュールを接続する。３１０はＢｏｏｔ  ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）であって、サブＣＰＵ１１５のブートプログラムを記憶する。
【００３５】
サブＣＰＵ１１５には、図１で説明したリセット信号１２３が入力される。サブＣＰＵ１１５のＣＰＵコア３０１は、リセット信号１２３が“Ｌｏ”レベルの場合、ＣＰＵコア３０１はリセット状態となる。リセット信号１２３が“Ｈｉ”レベルの場合、ＣＰＵコア３０１はリセット解除状態となる。リセット信号１２３がリセット状態からリセット解除状態に遷移すると、ＣＰＵコア３０１は先ず、Ｂｏｏｔ  ＲＯＭ３１０から自身のブートプログラムを読み出し実行する。
【００３６】
３１１はＣｒｙｐｔｏ  ＲＡＭであって、暗号処理部３０８で利用する機密性の高いデータ等の一時記憶が可能なワーク領域として用いられる。
【００３７】
図４はＦＬＡＳＨ  ＲＯＭ１１２のメモリマップを示す図である。
【００３８】
４０１はメインＣＰＵ  ＢＩＯＳあって、メインＣＰＵ１０１で実行されるブートプログラムである。
【００３９】
４０２はＢＩＯＳ署名であって、メインＣＰＵ  ＢＩＯＳ４０１のハッシュ値に対するＲＳＡ署名値が記憶されている。このＲＳＡ署名値とはＢＩＯＳ４０１のハッシュ値を暗号化した値である。
【００４０】
４０３はＴａｇであって、サブＣＰＵ  ＦＷ４０４の先頭アドレスが記憶されている。Ｔａｇ４０３自体のアドレスはＯＴＰ３０４に記憶されている。
【００４１】
４０４はサブＣＰＵ  ＦＷであって、サブＣＰＵ１１５で実行されるプログラムが記憶されている。
【００４２】
４０５はＦＷ署名であって、サブＣＰＵ  ＦＷ４０４のハッシュ値、またはサブＣＰＵ  ＦＷ４０４の先頭の特定部分のハッシュ値のＥＣＤＳＡ署名値が記憶されている。このＥＣＤＳＡ署名値は、ハッシュ値が暗号化された値である。
【００４３】
４０６はＲＯＭ−ＩＤであって、メインＣＰＵ  ＢＩＯＳ４０１の先頭アドレス、サイズおよびＢＩＯＳ署名のアドレスが記憶されている。
【００４４】
本実施例ではメインＣＰＵ  ＢＩＯＳ４０１、ＢＩＯＳ署名４０２、Ｔａｇ４０３、サブＣＰＵ  ＦＷ４０４、ＦＷ署名４０５は一組のセットのみを記憶した場合の例を示している。しかしながら、これらを複数のセットで記憶して置き、必要に応じて切り替えて使用することも可能である。
【００４５】
図５はネットワークＩ／Ｆ１０４の構成を示す図である。
【００４６】
５０１はＣＰＵコアであって、ＣＰＵの基本機能を有するとともに、後に説明するネットワークＩ／Ｆ  ＦＷ６０２を実行することで、ＩＰパケットの生成等ＴＣＰ／ＩＰによるデータ転送に必要な機能を実現する。
【００４７】
５０２はＳＰＩ  Ｍａｓｔｅｒであって、ＳＰＩバス５０６によって外部のＳＰＩデバイスと相互に接続してデータの読み書きを行う。本実施例ではＳＰＩデバイスとして、ネットワークＩ／Ｆ用ＦＬＡＳＨ  ＲＯＭ１３３が接続されている。ネットワークＩ／Ｆ１０４が起動すると、ＣＰＵ５０１がＲＯＭ５１０に記憶されているブートプログラムを実行し、ネットワークＩ／Ｆ用ＦＬＡＳＨ  ＲＯＭ１３３に記憶されているプログラムをＳＲＡＭ５０５に読み出す。そしてＣＰＵコア５０１はその読み出したプログラムを実行する。
【００４８】
５０３はＧＰＩＯ（Ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｉｎｐｕｔ／ｏｕｔｐｕｔ）であって、外部のデバイスと相互に接続してデータの送受信を行う。ＧＰＩＯ５０３には２本の信号が接続されていて、１つ目はサブＣＰＵ１１５がメインＣＰＵ  ＢＩＯＳ４０１に改竄があると発見した場合に、ネットワークＩ／Ｆ１０４へ改竄が発見されたことを通知する改竄発見通知信号１３１である。２つ目はサブＣＰＵ１１５がブートプログラムの検証が正常に完了したことを示す、改竄検証完了通知信号１３２である。
【００４９】
５０４は信号バスインターフェースであって、信号バス１０９とネットワークＩ／Ｆ１０４内の信号バス５０９を接続する。５０５はＳＲＡＭであって、ネットワークＩ／Ｆ１０４内のワークメモリとして使用される。５０７はデータリンク層のデバイスであるＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）である。ＭＡＣ５０７は、物理層のデバイスであるＰＨＹ（Ｐｈｙｓｉｃａｌ  Ｌａｙｅｒ）５０８を介してＬＡＮ１３０への通信に必要となる転送データに対して、のＭＡＣアドレス情報およびエラー訂正情報を付与する。またＭＡＣ５０７は、受信データに対する受信判定およびエラー訂正処理といったデータ転送に必要な所定の処理を実施する。ＰＨＹ５０８はネットワークＩ／Ｆ１０４内部で扱われる論理信号と、ＬＡＮ１３０で扱われるアナログ信号との相互変換を担う。
【００５０】
５０９は信号バスであって、ネットワークＩ／Ｆ１０４内の各モジュールを接続する。５１０はＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）であって、ネットワークＩ／Ｆ１０４のブートプログラムを記憶する。５１１はＦＬＡＳＨ  ＲＯＭであって不揮発性のＲＯＭであり、ネットワークＩ／Ｆ１０４に割り当てられるＭＡＣアドレスを記憶している。
【００５１】
５１２はタイマーであって、ネットワークＩ／Ｆ１０４が起動してからの経過時間を計時する。タイマー５１２によって計時された経過時間は、起動後の通知信号１３１、１３２を待ち受けている時間に相当する。計時されたこの経過時間は、予め設定されたタイムアウト値と比較される。これにより、起動後の通知信号待ち受け時間にタイムアウトを設定することが可能になる。本実施例では、タイマー５１２が計時を開始してから所定時間経過するまでの間に改竄発見通知信号１３１、改竄検証完了通知信号１３２のいずれも受信しなかった場合、サブＣＰＵ１１５のＦＷ４０４改竄されているとみなす。
【００５２】
図６は、ネットワークＩ／Ｆ用ＦＬＡＳＨ  ＲＯＭ１３３のメモリマップを示す図である。
【００５３】
６０１はＴａｇであって、ネットワークＩ／Ｆ１０４用のＦＷ６０２の先頭アドレスが記憶されている。Ｔａｇ６０１自体のアドレスはＲＯＭ５１０に記憶されている。
【００５４】
ネットワークＩ／Ｆ１０４用のＦＷ６０２には、後に図１０で説明するステップの一部を実行するプログラムが格納されている。すなわち、ネットワークＩ／Ｆ１０４が起動時にネットワーク制御のホストとして動作するために必要となる所定の設定を行うプログラムや、ＧＰＩＯ５０３の設定を行うプログラムである。
【００５５】
６０３はパケット生成プログラムであり、図１０で説明するステップの一部を実行する。すなわち、ＧＰＩＯ５０３に改竄発見通知信号１３１による通知があった場合には、改竄発生を示すＩＰパケットを生成し、ＭＡＣ５０７、ＰＨＹ５０８を介してＬＡＮ１３０へ生成したパケットを転送するためのプログラムである。
【００５６】
次に、本実施形態におけるサブＣＰＵ１１５の処理手順を図７のフローチャートを用いて説明する。
【００５７】
リセット信号１２３によってリセット状態が解除されたサブＣＰＵ１１５は、Ｂｏｏｔ  ＲＯＭ３１０内のプログラムを実行する。そしてサブＣＰＵ１１５は、ＳＰＩバス１１４を介してＦＬＡＳＨ  ＲＯＭ１１２からサブＣＰＵ  ＦＷ４０４とＦＷ署名４０５をＳＲＡＭ３０５に読み込む。さらにサブＣＰＵ１１５は、ＧＰＩＯポートの初期化を行って改竄発見通知信号１３１と改竄検証完了通知信号１３２を初期状態であるＬｏにセットする（Ｓ７０１）。
【００５８】
次にサブＣＰＵ１１５は、暗号処理部３０８によってＦＷ署名４０５をＯＴＰ３０４内の公開鍵で復号化して、正解となるハッシュ値を得る（Ｓ７０２）。
【００５９】
続いてサブＣＰＵ１１５は、暗号処理部３０８によってサブＣＰＵ  ＦＷ４０４のハッシュ値を計算する（Ｓ７０３）。
【００６０】
次にサブＣＰＵ１１５はＳ５０２で得られたハッシュ値とＳ５０３で計算したハッシュ値を比較し（Ｓ７０４）、不一致の場合（ＮＯ）は、後に説明するＳ７１６へ進む。一致した場合（ＹＥＳ）はサブＣＰＵ１１５は、サブＣＰＵ  ＦＷ４０４をＳＲＡＭ３０５に読み込む（Ｓ７０５）。
【００６１】
次にサブＣＰＵ１１５は、ＳＲＡＭ３０５に読み込んだサブＣＰＵ  ＦＷ４０４を実行する（Ｓ７０６）。
【００６２】
次にサブＣＰＵ１１５は実行したサブＣＰＵ  ＦＷ４０４の制御に基づき、ＲＯＭ−ＩＤ４０６をＦＬＡＳＨ  ＲＯＭ１１２からＣｒｙｐｔｏ  ＲＡＭ３１１に読み込む（Ｓ７０７）。
【００６３】
続いてＲＯＭ−ＩＤ４０６からメインＣＰＵ  ＢＩＯＳ４０１のアドレスとＢＩＯＳ署名４０２のアドレスを得る（Ｓ７０８）。
【００６４】
次にサブＣＰＵ１１５は、ＢＩＯＳ署名４０２をＳＲＡＭ３０５に読み込む（Ｓ７０９）。
【００６５】
続いてサブＣＰＵ１１５は、暗号処理部３０８によってＢＩＯＳ署名４０２をサブＣＰＵ  ＦＷ４０４内に記憶されている公開鍵で復号化して、ハッシュ値を得る（Ｓ７１０）。
【００６６】
次にサブＣＰＵ１１５は、メインＣＰＵ  ＢＩＯＳ４０１をＳＲＡＭ３０５に読み込む（Ｓ７１１）。
【００６７】
次にサブＣＰＵ１１５は、暗号処理部３０８によってメインＣＰＵ  ＢＩＯＳ４０１のハッシュ値を計算する（Ｓ７１２）。
【００６８】
そして、サブＣＰＵ１１５はＳ７１０で得たハッシュ値とＳ７１２で算出したハッシュ値を比較する（Ｓ７１３）。２つのハッシュ値が一致した場合（ＹＥＳ）、サブＣＰＵ１１５は、ＧＰＩＯ３０３を制御して改竄検証完了通知信号１３２をＨｉにセットし（Ｓ７１４）、ＧＰＩＯ３０３を制御してリセット信号１１７を“Ｈｉ”を出力する（Ｓ７１５）。
【００６９】
一方、２つのハッシュ値が不一致の場合（ＮＯ）、サブＣＰＵ１１５は、ＧＰＩＯ３０３を制御して改竄発見通知信号１３１をＨｉにセットする（Ｓ７１７）。
【００７０】
それからサブＣＰＵ１１５は電力消費のもっとも少ないスリープ状態に入り（Ｓ７１６）、その状態を維持する。なお、スリープ状態ではＧＰＩＯ３０３の出力状態を維持している。なお、一度スリープ状態に入った後は通常状態に戻る必要はないが、サブＣＰＵ１１５を改竄検証以外の用途にも利用するのであれば、図示しない割り込み信号の受信を許可して通常状態へ復帰させることも可能である。
【００７１】
なお、本実施例ではＳ７０４での判定がＮｏだった場合、何もせずスリープ状態へ入るＳ７１６へ飛ぶようにすることで、サブＣＰＵ  ＦＷ４０４で実行されるプログラムを最小構成にしている。ただし、ＢｏｏｔＲＯＭ３１０にプログラムを追加できる場合は、Ｓ７１７へと進めるようにし、サブＣＰＵ  ＦＷ４０４起動前でも、改竄が発見されたことをネットワークＩ／Ｆ１０４へ通知できるようにすることもできる。
【００７２】
次に、本実施形態におけるメインＣＰＵ１０１の処理手順を図８のフローチャートを用いて説明する。
【００７３】
リセット信号１１７にしたがってリセット状態が解除されたメインＣＰＵ１０１は、検証済のメインＣＰＵ  ＢＩＯＳ４０１を、ＦＬＡＳＨ  ＲＯＭ１１２からＤＲＡＭ１０２に読み込む（Ｓ８０１）。
【００７４】
次にメインＣＰＵ１０１はＤＲＡＭ１０２へ読み込んだメインＣＰＵ  ＢＩＯＳ４０１を実行し、メインＣＰＵ１０１内の入出力の初期化を行う（Ｓ８０２）。
【００７５】
次にメインＣＰＵ１０１はＨＤＤ１０８からＯＳをＤＲＡＭ１０２に読み込む（Ｓ８０３）。読み取り後、メインＣＰＵ１０１はＯＳを起動する（Ｓ８０４）。これによってメインＣＰＵ１０１は、ネットワークＩ／Ｆ１０４等の各デバイスを制御可能になる。
【００７６】
続いてメインＣＰＵ１０１はプリンタ部１０５、スキャナ部１０６ＦＡＸ１０７、画像処理部１１１、ネットワークＩ／Ｆ１０４操作部１０３を初期化してＭＦＰ１として機能可能な状態にする（Ｓ８０５）。
【００７７】
図９は、本実施例において、メインＣＰＵ１０１が起動できない場合に、ネットワークＩ／Ｆ１０４がＬＡＮ１３０へ送出する所定のデータパケットの内容を説明するための図である。本実施例では、ＬＡＮ１３０はイーサネットで構成されているものとして説明を行う。
【００７８】
９０１はＥｈｔｅｒｎｅｔフレームであり、ＭＡＣ５０７からＰＨＹ５０８を介してＬＡＮ１３０へ出力されるデータである。
【００７９】
９０２はイーサネットヘッダであり、データの送信時にＭＡＣ５０７によって付与されるヘッダであり、データの送信先となるデバイスのＭＡＣアドレスや、自身のＭＡＣアドレスが情報として含まれる。特に、本実施例では送信先ＭＡＣアドレスとして、ブロードキャストアドレスを指定し、同一のネットワークセグメントに接続されているすべての外部機器に対してデータが送信されるデータとすることで、簡易にデータの送信が実施できる構成となっている。
【００８０】
９０３はイーサネットフレーム９０１に含まれるＩＰパケットである。ＩＰパケット９０３はＩＰヘッダ９０４と、そのデータ部に識別子９０５、状態フラグ９０６、ＭＡＣアドレス９０７を含んでいて、ネットワークＩ／Ｆ１０４のＣＰＵコア５０１で生成される。
【００８１】
ＩＰパケットヘッダー９０４には、データ送信先のＩＰアドレス情報が含まれており、本実施例ではリミテッドブロードキャストアドレスを設定している。識別子９０５は、ＩＰパケットのデータ部に記憶される情報である。本実施例では、パケット９０１をブロードキャストするため、識別子を含むことでイーサネットフレーム９０１を受信した外部機器がＩＰパケット９０３を処理すべきか否かを判定できるようにしている。
【００８２】
状態フラグ９０６はサブＣＰＵ１１５によって改竄が発見されたことを示す状態フラグである。本実施例では少なくとも、メインＣＰＵ  ＢＩＯＳ４０１に改竄が発見されたのか、サブＣＰＵ  ＦＷ４０４に改竄が発見されたのかが判別可能な情報が含まれている。ＭＡＣアドレス９０７は、改ざんが発見された個体を特定可能な情報としてＩＰパケット９０３のデータ部に含まれる。ＭＡＣアドレスは、ネットワークＩ／Ｆ１０４のＣＰＵコア５０１によってＦＬＡＳＨ  ＲＯＭ５１１から読み出されることで取得される。
【００８３】
以上のような内容を持つデータパケットを生成することで、改竄が発見されてＣＰＵが起動しないことを示す情報、および改竄が発見された機種が特定可能な情報をまとめて、ネットワークＩ／Ｆ１０４がホストとなって外部機器へ通知できる。
【００８４】
次に、本実施形態におけるネットワークＩ／Ｆ１０４の処理手順を図１０のフローチャートを用いて説明する。
【００８５】
パワーオンリセット回路によってリセット状態が解除されたネットワークＩ／Ｆ１０４のＣＰＵコア５０１は、ＲＯＭ５１０内のプログラムを実行する。そしてＣＰＵ５０１は、ＳＰＩバス５０６を介してネットワークＩ／Ｆ用ＦＬＡＳＨ  ＲＯＭ１３３からネットワークＩ／Ｆ  ＦＷ６０２をＳＲＡＭ５０５に読み込む（Ｓ１００１）。
【００８６】
次にＣＰＵコア５０１は、ネットワークＩ／Ｆ  ＦＷ６０２を実行して、ネットワークＩ／Ｆ１０４の初期化を行う（Ｓ１００２）。具体的には、ＣＰＵコア５０１は、ＧＰＩＯ５０３を初期化して、改竄発見通知信号１３１と改竄検証完了通知信号１３２を受信可能なように設定する。またＣＰＵコア５０１は、ＦＬＡＳＨ  ＲＯＭ５１１に記憶されているＭＡＣアドレスのＭＡＣ５０７への割り付けを含むＭＡＣ５０７の初期設定、およびＰＨＹ５０８に対してネットワーク通信を開始するのに必要な初期設定を行う。この段階ではメインＣＰＵ１０１からのアクセスは行われないため、信号バスインターフェース５０４をＤＩＳＡＢＬＥ状態等、電力消費のもっとも少ない状態にしておく。
【００８７】
次にＣＰＵコア５０１は、ネットワークＩ／Ｆ  ＦＷ６０２に含まれるローダプログラムを実行し、ＳＰＩバス５０６を介してネットワークＩ／Ｆ用ＦＬＡＳＨ  ＲＯＭ１３３からパケット生成プログラム６０３を読み出し実行する（Ｓ１００３）。
【００８８】
パケット生成プログラム６０３は、改竄発見通知信号１３１がＨｉとなったことをＧＰＩＯ５０３を介して検知すると、ＩＰパケット９０３を生成する。このＩＰパケット９０３は、ＩＰパケットヘッダー９０４と、データ部に識別子９０５、状態フラグ９０６、そしてＭＡＣアドレス９０７を含む。そしてパケット生成プログラムは、生成したＩＰパケット９０３をＭＡＣ５０７へ転送する。すると、ＭＡＣ５０７がイーサネットヘッダ９０２を付与してイーサネットフレーム９０１を形成した後にＰＨＹ５０８へ転送し、ＰＨＹ５０８はＬＡＮ１３０へ図９に例示される所定のデータパケットを送信する。このようにパケット生成プログラム６０３は、サブＣＰＵ１１５からの改竄発見通知信号１３１にしたがってネットワークに所定のデータパケットを送信するプログラムである。
【００８９】
次にＣＰＵコア５０１は、タイマー５１２を起動する（Ｓ１００４）。タイマー５１２を起動することにより、後に説明するサブＣＰＵ１１５からの改竄発見通知信号１３１、改竄検証完了通知信号１３２が制御されなかったと判定するためのタイムアウト時間が計時される。
【００９０】
次にＣＰＵコア５０１が、改竄検証完了通知信号１３２がＨｉになったか否かをＧＰＩＯ５０３にアクセスすることで確認する（Ｓ１００５）。
【００９１】
Ｈｉの場合（Ｙｅｓ）、ＣＰＵコア５０１は、メインＣＰＵ１０１がネットワークＩ／Ｆ１０４の内部レジスタにアクセス可能となるよう設定し、メインＣＰＵ１０１からの制御を待つ（Ｓ１００６）。すなわち、ネットワークＩ／Ｆ１０４はメインＣＰＵ１０１によって制御される状態になる。例えば、ＣＰＵコア５０１は、Ｓ１００２でＤｉｓａｂｌｅ状態にした信号バスインターフェース５０４をＥｎａｂｌｅ状態に設定し、バス１０９を介してメインＣＰＵ１０１がネットワークＩ／Ｆ１０４へアクセスできるようにする。そして、ＣＰＵコア５０１は自信を省電力状態にしてもよい。
【００９２】
Ｌｏの場合（Ｎｏ）、ＣＰＵコア５０１は、改竄発見通知信号１３１がＨｉであるか否かをＧＰＩＯ５０３にアクセスすることで確認する（Ｓ１００７）。Ｈｉの場合（Ｙｅｓ）、ＣＰＵコア５０１は、パケット生成プログラムにしたがって、メインＣＰＵ  ＢＩＯＳ改ざん発生パケットを生成する（Ｓ１００８）。このパケットは、改竄が発見されてメインＣＰＵ１０１が起動しないことを示すフラグを状態フラグ９０６として含む。このパケットを、メインＣＰＵ  ＢＩＯＳ改ざん発生パケットと呼ぶ。このステップにより、改竄が発見されてメインＣＰＵ１０１が起動しないことをＬＡＮ１３０を通じて外部通知するためのデータが形成される。
【００９３】
Ｌｏの場合（Ｎｏ）、ＣＰＵコア５０１は、タイマー５１２が計時している値（経過時間）を取得し、予め設定されたタイムアウト値（タイムアウト時間）を超えたか否かを判定する（Ｓ１０１０）。
【００９４】
取得した値がタイムアウト値を超えている場合（Ｙｅｓ）、ＣＰＵコア５０１は、パケット生成プログラムにしたがって、サブＣＰＵ  ＦＷ改竄発生パケットを生成する（Ｓ１０１１）。このパケットは、サブＣＰＵ  ＦＷ４０４に改竄が発生したためメインＣＰＵ１０１が起動しないことを示すフラグを状態フラグ９０６として含む。このステップにより、改竄発見通知信号１３１、改竄検証完了通知信号１３２ともに変化がない場合に、外部にメインＣＰＵ１０１が起動しないことを外部通知するためのデータが生成される。
【００９５】
次に、ＣＰＵコア５０１は、Ｓ１００８またはＳ１０１１において生成された所定のデータパケットをＬＡＮ１３０等の外部に送信する（Ｓ１００９）。具体的には、ＣＰＵコア５０１は、生成したパケット１００１をＭＡＣ５０７へ転送し、ＭＡＣ５０７がパケット転送に必要なエラー訂正情報の付与等を行ってＰＨＹ５０８を介してパケットをブロードキャストする。本実施例では、ＩＰパケットヘッダー９０４にリミテッドブロードキャストアドレスである２５５：２５５：２５５：２５５が設定され、同一のネットワークセグメントに接続されているすべての外部機器に対してデータが送信される。また、イーサネットヘッダ９０２にブロードキャストアドレスであるＦＦ−ＦＦ−ＦＦ−ＦＦ−ＦＦ−ＦＦを設定し、同一のネットワークセグメントに接続されているすべての外部機器に対してデータが送信されるようにしている。このように、設定されるＩＰアドレスを固定化することで、ＣＰＵコア５０１で動作するプログラムを簡易化し、少ないハード資源でも、外部機器に改竄が発見されてメインＣＰＵ１０１が起動できないことを通知することが可能になる。ただし、別の方法でデータを送出するように構成することも可能である。例えば、ＩＰｖ６ではブロードキャストアドレスが存在しない。そこで、ＩＰｖ６のフォーマットに合わせて、マルチキャストＩＰアドレスとしてＦＦ０２：：１を設定し、かつ、マルチキャストＭＡＣアドレスとして  ３３：３３：００：００：００：０１と設定する方法でもよい。この方法によって、マルチキャストでデータの送信が行われる。また、パケット生成プログラムやネットワークＩ／Ｆ  ＦＷ６０２のサイズ制約が少ないハード資源をネットワークＩ／Ｆ１０４が有する場合、次のような処理を行うプログラムを備えてデータ送信を行ってもよい。つまり、データ送信先の外部機器の情報を取得し、この情報を基にデータパケットを特定の送信先に送信するという処理である。外部機器の情報は、予めネットワークＩ／Ｆ用ＦＬＡＳＨ  ＲＯＭ１３３に記憶しておいたものを取得してもよい。また、外部機器の情報は、ＩＰｖ４におけるＡＲＰ（Ａｄｄｒｅｓｓ  Ｒｅｓｏｌｕｔｉｏｎ  Ｐｒｏｔｏｃｏｌ）や、ＩＰｖ６におけるＮＤＰ（Ｎｅｉｇｈｂｏｒ  Ｄｉｓｃｏｖｅｒｙ  Ｐｒｏｔｏｃｏｌ）を使って取得してもよい。つまり、データ送信先を固定にしても、動的に指定してもよい。
【００９６】
次に図１１、図１２、図１３を用いて、図７、図８、図１０で説明した各ステップがＭＦＰ１の起動処理の中でどのような時系列関係を有しているかを説明する。ただし、図７、図８、図１０を使って各部で実施される詳細な処理内容は説明した。よって、ここでは各図で説明したステップの時系列がわかるよう、ポイントとなる処理をピックアップして記述する。
【００９７】
図１１は、サブＣＰＵ１１５がメインＣＰＵ  ＢＩＯＳ４０１の改竄検証を行い、改竄されていると判定した場合のシーケンス図である。まず、ＭＦＰ１はユーザによって起動操作がなされる（Ｓ１１０１）。これにより、サブＣＰＵ１１５とネットワークＩ／Ｆ１０４が起動する。
【００９８】
次に、サブＣＰＵ１１５がサブＣＰＵ  ＦＷ４０４を検証する（Ｓ１１０２）。このステップは図７で説明したＳ７０１からＳ７０４までのステップを含む。一方、ネットワークＩ／Ｆ１０４はネットワークＩ／Ｆの初期設定を行う（Ｓ１１０３）。ネットワークＩ／Ｆ１０４の初期設定の中には図１０で説明したＳ１００１からＳ１００４までのステップを含んでいる。図を見て明らかなように、Ｓ１１０２とＳ１１０３の各処理の間には依存関係がなく、サブＣＰＵ１１５およびネットワークＩ／Ｆ１０４が独立に処理を実行する。すなわちサブＣＰＵ１１５によるサブＣＰＵ  ＦＷ４０４の検証の結果を待たず、かつ、検証の結果に関わらず、ネットワークＩ／Ｆ１０４は、ＬＡＮ１３０（外部）にデータパケットを送信可能な状態になる。
【００９９】
サブＣＰＵ  ＦＷ４０４の検証が完了し、改竄がないと判定すると、サブＣＰＵ１１５は更にメインＣＰＵ  ＢＩＯＳ４０１の改竄検証を実施する（Ｓ１１０４）。このステップは、図７で説明したＳ７０５からＳ７１３までのステップを含む。図を見て明らかなように、Ｓ１１０４とＳ１１０３の各処理の間には依存関係がなく、サブＣＰＵ１１５およびネットワークＩ／Ｆ１０４が独立に処理を実行する。すなわちサブＣＰＵ１１５によるメインＣＰＵ  ＢＩＯＳ４０１の検証の結果を待たず、かつ、検証の結果に関わらず、ネットワークＩ／Ｆ１０４は、ＬＡＮ１３０（外部）にデータパケットを送信可能な状態になる。
【０１００】
サブＣＰＵ１１５はメインＣＰＵ  ＢＩＯＳ４０１の改竄検証を行った結果、改竄有りと判定すると改竄発見通知信号１３１をアサートする（Ｓ１１０５）。このステップは、図７で説明したＳ７１３、Ｓ７１７を含む。ここで、アサートするとは、その信号が有効であるという意味を持つ信号レベルに変更することであり、ここではサブＣＰＵ１１５が改ざん発見通知信号１３１を“Ｌｏ”レベルから“Ｈｉ”レベルへと信号レベルを変化させる動作を表す。今後は、“Ｈｉ”レベルへアサートするというように、有効となる信号のレベルとともにこの用語を用いて説明をする。そして、Ｓ７１６で説明した通り、自身を低消費電力な状態へと移行する（Ｓ１１０６）。
【０１０１】
次に、Ｓ１１０５によって、ネットワークＩ／Ｆ１０４は、メインＣＰＵ  ＢＩＯＳ４０１に改竄が発生したことを示す情報を状態フラグとして含むパケットを生成する（Ｓ１１０７）。このステップは、Ｓ１００８に対応する。そして、ネットワークＩ／Ｆ１０４は、生成したパケットをＭＡＣ５０７、ＰＨＹ５０８を介して送信する（Ｓ１１０８）。このステップは、Ｓ１００９に対応する。このケースでは、メインＣＰＵ１０１はサブＣＰＵ１１５によってリセット制御されているため、起動できない。そのため、図８で説明したフローは実施されない。
【０１０２】
次に図１２は、サブＣＰＵ１１５がサブＣＰＵ  ＦＷ４０４を検証し、改竄されていると判定した場合のシーケンス図である。すでに図１１で説明した部分は割愛する。
【０１０３】
サブＣＰＵ１１５は、サブＣＰＵ  ＦＷ４０４が改竄されていると判定すると、ネットワークＩ／Ｆ１０４へは何の信号もアサートしない。よって、ネットワークＩ／Ｆ１０４は、Ｓ１１０３で設定したタイマーがタイムアウトを迎える（Ｓ１２０１）。これは図１０のＳ１０１０のＹｅｓの場合に対応する。これにより、ネットワークＩ／Ｆ１０４は、サブＣＰＵ  ＦＷ４０４に改竄が発生したことを示す情報を状態フラグとして含むパケット９０３を生成する（Ｓ１２０２）。これは図１０のＳ１０１１に対応する。このケースでは、メインＣＰＵ１０１はサブＣＰＵ１１５によってリセット制御されているため、起動できない。そのため、図８で説明したフローは実施されない。
【０１０４】
次に図１３は、サブＣＰＵ１１５がメインＣＰＵ  ＢＩＯＳ４０１の改竄検証までを完了し、改竄されていないと判定した場合のシーケンス図である。すでに図１１で説明した部分は割愛する。
【０１０５】
サブＣＰＵ１１５は、Ｓ１１０４のメインＣＰＵ  ＢＩＯＳ４０１の改竄検証を完了し、改竄されていないと判定した場合、改竄検証終了信号をＨｉにアサートする（Ｓ１３０１）。これは図１０で説明したＳ１００５において、Ｙｅｓの場合に対応する。
【０１０６】
Ｓ１３０１を実施すると、ネットワークＩ／Ｆ１０４は、メインＣＰＵ１０１、サブＣＰＵ１１５の起動プログラムが改竄されていないため、メインＣＰＵ１０１の起動が始まると判定し、メインＣＰＵ１０１の制御を待つ（Ｓ１３０２）。これは、図１０のＳ１００６に対応する。
【０１０７】
また、Ｓ１３０１を実施すると、サブＣＰＵ１１５は直ちにメインＣＰＵ１０１へのリセット信号１１７をＨｉにして、メインＣＰＵ１０１の起動を許可する（Ｓ１３０３）。これは図７のＳ７１５に対応する。
【０１０８】
次にメインＣＰＵ１０１は、リセット信号１１７がＨｉになってリセットが解除されたことを受けて、ＦＬＡＳＨ  ＲＯＭ１１２からメインＣＰＵ  ＢＩＯＳ４０１を読みだし、メインＣＰＵの初期化処理を開始する（Ｓ１３０４）。これは図８で説明したＳ８０１からＳ８０２に対応する。
【０１０９】
次に、メインＣＰＵ１０１はＭＦＰ１のシステム起動処理を行う（Ｓ１３０５）。これは図８のＳ８０３からＳ８０５に対応する。これにより、ＭＦＰ１はユーザが使用可能な状態に移行することができる。すなわち、メインＣＰＵ１０１は、ＢＩＯＳ４０１を実行してＯＳを起動することで、ＬＡＮ１３０上の外部が装置とデータパケットを送受信するように前記通信手段を制御する。
【０１１０】
以上説明した様に、本実施例では、ネットワークＩ／Ｆ１０４が起動直後にネットワーク制御を行うホストとして動作可能なように構成するとともに、改竄の検証結果をサブＣＰＵ１１５からネットワークＩ／Ｆ１０４へ通知可能なように構成する。これにより、ブートプログラムの改竄を発見してメインＣＰＵが起動しないことをネットワーク上の機器に通知することができるようになる。
【０１１１】
なお、本実施形態で記載した信号の極性はシステムの定めに応じて変更してもよいことは言うまでもない。また、本実施例では改竄検証完了信号１３２を設けたが、リセット信号１１７を改竄検証完了信号１３２としてネットワークＩ／Ｆ１０４へ入力しても、本実施例で説明したことと同様の動作が実現できる。また、本実施例では、改竄発見通知信号１３１と改竄検証完了信号１３２を専用の信号線として設けたが次のように構成してもよい。すなわち、サブＣＰＵ１１５とネットワークＩ／Ｆ１０４の間をＣＰＵ間通信が可能なバスで接続し、サブＣＰＵ１１５から改竄発見通知および改竄検証完了を示す情報をネットワークＩ／Ｆ１０４へ送信するように構成してもよい。この場合、サブＣＰＵ１１５とネットワークＩ／Ｆ１０４の間を直接バスで接続する形態をとってもよいし、サブＣＰＵ１１５を信号バス１０９へ接続し、信号バス１０９を介してネットワークＩ／Ｆ１０４に情報の通知を行う形態をとってもよい。また、本実施例で説明した構成要素の一部がＳＯＣ（Ｓｙｓｔｅｍ  Ｏｎ  Ｃｈｉｐ）に集積されていてもよい。
【０１１２】
また、本実施例で説明したネットワークＩ／Ｆ１０４はイーサネット規格に準拠した通信を行うとして説明を行ったが、ＩＥＥＥ８０２．１１で規格化されている無線ＬＡＮに準拠した通信を行うようにしてもよい。
【０１１３】
（他の実施例）
本発明は、上述の各実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣやＦＰＧＡ）によっても実現可能である。
【図１】
2020140561.tif 000003
【図２】
2020140561.tif 000004
【図３】
2020140561.tif 000005
【図４】
2020140561.tif 000006
【図５】
2020140561.tif 000007
【図６】
2020140561.tif 000008
【図７】
2020140561.tif 000009
【図８】
2020140561.tif 000010
【図９】
2020140561.tif 000011
【図１０】
2020140561.tif 000012
【図１１】
2020140561.tif 000013
【図１２】
2020140561.tif 000014
【図１３】
2020140561.tif 000015