(57)【要約】【課題】起動プログラムの改竄が原因でシステムが起動に失敗したことを、起動プログラムの改竄の検証を行うデバイス以外のデバイスが検知することができる情報処理装置を提供する。【解決手段】情報処理装置１０が備えるハードシーケンサ１０１が、不揮発性メモリ１０４に記憶された起動プログラムの改竄の有無を検証する。信号監視部１０３が、ハードシーケンサ１０１と不揮発性メモリ１０４間で通信される信号を監視し、上記信号の監視結果に基づいて、起動プログラムの改竄が原因で、システムの起動が失敗したことを検知する。そして、信号監視部１０３が、システムの起動の失敗の原因に関する情報を通知する。【選択図】図１
2019109842.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置のシステムの起動プログラムが予め記憶された記憶手段と、
前記記憶手段に記憶された前記起動プログラムの改竄の有無を検証する検証手段と、
前記検証手段と前記記憶手段間で通信される信号を監視し、前記信号の監視結果に基づいて、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する監視手段と、
前記監視手段が検知する、前記システムの起動の失敗の原因に関する情報を通知する通知手段とを備える
ことを特徴とする情報処理装置。
【請求項２】
前記検証手段と前記記憶手段間で通信される信号は、前記検証手段が前記記憶手段を通信対象として選択する選択信号と、前記検証手段と前記記憶手段間で通信されるデータ信号とを含む
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記監視手段は、
前記検証手段と前記記憶手段間で通信される信号のエッジを検出してカウントし、
計時を開始してから前記起動プログラムの改竄の有無の検証期間に応じて決められた所定時間が経過したときの、前記カウントされているエッジの個数に基づいて、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記監視手段は、前記所定時間が経過したときの、前記カウントされているエッジの個数が、所定値を超えていない場合に、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記監視手段は、計時を開始してから前記所定時間が経過したときに、前記検証手段が前記記憶手段を通信対象として選択する選択信号のエッジが検出されていない場合は、前記検証手段の故障が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項３または請求項４に記載の情報処理装置。
【請求項６】
前記監視手段は、計時を開始してから前記所定時間が経過したときに、前記検証手段が前記記憶手段を通信対象として選択する選択信号のエッジは検出されているが、前記記憶手段から前記検証手段へ送信されるデータ信号のエッジが検出されていない場合は、前記記憶手段の故障が原因で、システムの起動が失敗したことを検知する
ことを特徴とする請求項３乃至４のいずれか１項に記載の情報処理装置。
【請求項７】
前記監視手段は、計時を開始してから前記所定時間が経過したときに、前記検証手段が前記記憶手段を通信対象として選択する選択信号のエッジと、前記検証手段と前記記憶手段間で通信されるデータ信号のエッジが検出されている場合に、
前記カウントされている前記検証手段と前記記憶手段間で通信される信号のエッジの個数が、所定値を超えているかを判断し、
前記エッジの個数が所定値を超えている場合に、前記システムが正常に起動したことを検知する
ことを特徴とする請求項４乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記監視手段は、
前記検証手段と前記記憶手段間で通信される信号のエッジの個数が、前記所定値を超えていない場合に、前記検証手段が前記記憶手段を通信対象として選択する選択信号のエッジの個数が、第１の閾値を超えているかを判断し、
前記選択信号のエッジの個数が、第１の閾値を超えていない場合は、前記検証手段の故障が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記監視手段は、
前記選択信号のエッジの個数が第１の閾値を超えている場合に、前記検証手段と前記記憶手段間で通信されるデータ信号のエッジの個数が第２の閾値を超えているかを判断し、
前記データ信号のエッジの個数が第２の閾値を超えていない場合は、前記記憶手段の故障が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記監視手段は、
前記データ信号のエッジの個数が第２の閾値を超えている場合は、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記監視手段は、
前記検証手段と前記記憶手段間で通信される信号のエッジを検出してカウントし、
前記信号に含まれる、前記検証手段が前記記憶手段を通信対象として選択する選択信号を最初に検出したときから前記選択信号を最後に検出したときまでの時間が、所定時間を超えている場合に、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項１２】
前記検証手段は、ＣＰＵを含むものであり、前記監視手段は、前記ＣＰＵとは別のハードウェア回路を含み、
前記ハードウェア回路が、前記ＣＰＵに接続されているメモリと前記ＣＰＵとの間の信号を監視し、前記信号の監視結果に基づいて、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知し、
前記通知手段は、前記ハードウェア回路によって検知された、前記システムの起動の失敗の原因に関する情報を前記ハードウェア回路に接続された出力装置に対して通知する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
情報処理装置のシステムの起動プログラムが予め記憶された記憶手段と、前記記憶手段に記憶された前記起動プログラムの改竄の有無を検証する検証手段とを有する情報処理装置の制御方法であって、
前記検証手段と前記記憶手段間で通信される信号を監視し、前記信号の監視結果に基づいて、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する監視工程と、
前記監視工程で検知される、前記システムの起動の失敗の原因に関する情報を通知する通知工程とを有する
ことを特徴とする制御方法。
【請求項１４】
コンピュータを、請求項１乃至１２のいずれか１項に記載の情報処理装置が備える各手段として機能させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法およびプログラムに関する。
【背景技術】
【０００２】
システムの改竄を検知できるチップセットが搭載された情報処理装置が提案されている。システムの改竄を検知できるチップセットの一例として、例えば、情報処理装置のセキュリティ向上のために、起動プログラムの改竄の有無を検証して、改竄を検知できるチップセットが挙げられる。例えば、チップセット内のハードシーケンサが、起動プログラムの改竄の有無を検証する。具体的には、起動時に、ハードシーケンサが不揮発性メモリ内の起動プログラムを読み出して、そのハッシュ値を計算し、ハードシーケンサが有しているマスターとなるハッシュ値との比較を行う。ハードシーケンサは、ハッシュ値の比較で差分があった場合は、ＣＰＵのリセットを解除しないことで、ファームウェアの揮発性メモリへのロードを防ぎ、システムが起動しないように制御する。
【０００３】
特許文献１は、ハードシーケンサと不揮発性メモリ間のバスを監視し、ハードシーケンサが不揮発性メモリにアクセスしていない間にエンベデッドコントローラが不揮発性メモリ内の起動プログラムを読み出し、改竄の有無を検証するシステムを開示している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第９７３４３３９号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１が開示するシステムは、ハードシーケンサによって起動プログラムの改竄を検知することはできる。しかし、特許文献１が開示するシステムは、システムが正常に起動しなかった際に、ハードシーケンサ以外のデバイスが、起動プログラムが改竄されたことが原因で起動に失敗したことを検知することができない。本発明は、起動プログラムの改竄が原因でシステムが起動に失敗したことを、起動プログラムの改竄の検証を行うデバイス以外のデバイスが検知することができる情報処理装置の提供を目的とする。
【課題を解決するための手段】
【０００６】
本発明の一実施形態の情報処理装置は、情報処理装置のシステムの起動プログラムが予め記憶された記憶手段と、前記記憶手段に記憶された前記起動プログラムの改竄の有無を検証する検証手段と、前記検証手段と前記記憶手段間で通信される信号を監視し、前記信号の監視結果に基づいて、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する監視手段と、前記監視手段が検知する、前記システムの起動の失敗の原因に関する情報を通知する通知手段とを備える。
【発明の効果】
【０００７】
本発明の一実施形態の情報処理装置によれば、起動プログラムの改竄が原因でシステムが起動に失敗したことを、起動プログラムの改竄の検証を行うデバイス以外のデバイスが検知することができる。
【図面の簡単な説明】
【０００８】
【図１】情報処理装置のハードウェア構成を示す図である。
【図２】正常な起動時の信号波形を示す図である。
【図３】ハードシーケンサが故障している際の起動時の信号波形を示す図である。
【図４】不揮発性メモリが故障した際の起動時の信号波形を示す図である。
【図５】起動プログラムの改竄が検知された際の信号波形を示す図である。
【図６】信号監視部の構成例を示す図である。
【図７】ハードシーケンサの動作処理を説明するフローチャートである。
【図８】電源回路の動作処理を説明するフローチャートである。
【図９】信号監視部の動作処理を説明するフローチャートである。
【図１０】エッジカウンタ回路の動作処理を説明するフローチャートである。
【図１１】計時部の動作処理を説明するフローチャートである。
【図１２】表示部制御回路の動作処理を説明するフローチャートである。
【図１３】信号監視部の構成を示す図である。
【図１４】エッジ検出回路の動作処理を説明するフローチャートである。
【図１５】計時部の動作処理を説明するフローチャートである。
【発明を実施するための形態】
【０００９】
（実施例１）
図１は、本実施形態の情報処理装置のハードウェア構成を示す図である。
情報処理装置１０は、コントローラ１００、表示部１０６を備える。コントローラ１００は、ハードシーケンサ１０１、電源回路１０２、信号監視部１０３、不揮発性メモリ１０４、ＣＰＵ１０５を備える。ハードシーケンサ１０１とＣＰＵ１０５とは、一般的なチップセットのようにワンチップで構成されてもよい。
【００１０】
ＣＰＵ１０５は、情報処理装置１０のシステム全体を制御する。ハードシーケンサ１０１は、情報処理装置１０の電源制御や、自身に電源が投入された後に不揮発性メモリ１０４内の起動プログラム等のファームウェアの読み出しを担う。また、ハードシーケンサ１０１は、起動プログラムの改竄の有無を検証する機能も有している。
【００１１】
ハードシーケンサ１０１は、システムの起動時に、不揮発性メモリ１０４内のファームウェアの改竄検証、不図示のＨＤＤやｅＭＭＣ内に格納されているブートローダ、ＯＳ、アプリケーションの改竄検証というように、段階的に改竄の検証を行う。後述するが、ハードシーケンサ１０１は、これらのプログラムの一部をチェックするようにし、他はリセット信号を解除されたＣＰＵが続行するようにしてもよい。すなわち、プログラムの改竄を検証する検証手段が、ＣＰＵを含むものであってもよい。ＨＤＤは、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅの略称である。ｅＭＭＣは、ｅｍｂｅｄｄｅｄ  Ｍｕｌｔｉ  Ｍｅｄｉａ  Ｃａｒｄの略称である。また、ＯＳは、Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍの略称である。改竄の検証の結果、ファームウェアに問題が無い場合は、ハードシーケンサは、ＣＰＵ１０５に出力しているリセット信号１０７を解除する。これにより、ＣＰＵ１０５が、ＯＳやアプリケーションをもとに制御され、システム全体を制御する。
【００１２】
電源回路１０２は、ハードシーケンサ１０１から出力される複数のステータス信号１０８に基づいて、ハードシーケンサ１０１に電源を投入する。電源回路１０２は、ハードシーケンサ１０１がシステムを起動するのに必要とする全ての電源を投入し終えると、信号監視部１０３にＰｏｗｅｒＧｏｏｄ信号１０９を出力する。
【００１３】
不揮発性メモリ１０４は、電源が無い状態でも書き込んだデータを保持可能な記憶手段である。不揮発性メモリ１０４の特定の領域には、Ｂｏｏｔ  Ｃｏｄｅやファームウェアなどの、情報処理装置１０のシステムの起動プログラムが予め記憶されており、それぞれの領域は独立している。信号監視部１０３は、ハードシーケンサ１０１と不揮発性メモリ１０４間（記憶手段間）で通信される信号を監視し、信号の監視結果に基づいて、情報処理装置１０のシステムの起動の失敗の原因を検知する。
【００１４】
本実施形態では、ハードシーケンサ１０１と不揮発性メモリ１０４とのインタフェースとして、ＳＰＩを使用する。ＳＰＩは、Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅの略称である。本実施形態では、ハードシーケンサ１０１と不揮発性メモリ１０４のインタフェース間に信号監視部１０３が存在する。信号監視部１０３は、ＣＰＵとは別のハードウェア回路を含む。信号監視部１０３は、例えば、Ｃｏｍｐｌｅｘ Ｐｒｏｇｒａｍｍａｂｌｅ Ｌｏｇｉｃ Ｄｅｖｉｃｅ（ＣＰＬＤ）やＦＰＧＡ等で構成されうる。信号監視部１０３の詳細は、図６で説明する。信号監視部１０３は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号１をＣｈｉｐ  Ｓｅｌｅｃｔ信号２としてそのまま出力する。また、信号監視部１０３は、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号１をハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号２としてそのまま出力する。これにより、信号監視部１０３は、内部回路による遅延時間がＳＰＩの仕様に収まるよう制御する。
【００１５】
ＳＰＩには、通信を開始するマスターが通信対象となるスレーブを選択する選択信号であるＣｈｉｐ  Ｓｅｌｅｃｔ信号と、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号がアサートされている間にマスターとスレーブ間で送受信されるデータ信号が存在する。本実施形態では、マスターは、ハードシーケンサ１０１であり、スレーブは、不揮発性メモリ１０４である。ハードシーケンサ１０１から不揮発性メモリ１０４へ送信されるデータ線と、不揮発性メモリ１０４からハードシーケンサ１０１へ送信されるデータ線は、独立して存在する。
【００１６】
ハードシーケンサ１０１から不揮発性メモリ１０４へ送信される信号は、ハードシーケンサ１０１が不揮発性メモリ１０４から読み書きしたいデータが格納されている物理アドレスの指定や、その読み書きの方法の指定に使用される。また、不揮発性メモリ１０４からハードシーケンサ１０１へ送信される信号は、ハードシーケンサ１０１から指定されたアドレスに格納されているデータの送信や、トランザクションの終了を示すデータなどの送信に使用される。Ｃｈｉｐ  Ｓｅｌｅｃｔ信号は、Ｌｏｗ  Ａｃｔｉｖｅの信号である。
【００１７】
実施例１では、信号監視部１０３は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号のエッジと、ハードシーケンサ１０１と不揮発性メモリ１０４間で通信されるデータ信号のエッジを検出してカウントする。そして、信号監視部１０３は、所定時間が経過したときのカウントされているエッジの個数に基づいて、システムの起動が失敗した原因を検知する。信号監視部１０３は、例えば、起動プログラムの改竄が原因で、システムの起動が失敗したことを検知する。例えば、不揮発性メモリ１０４にＢＩＯＳプログラムが記憶されて改竄検知を行うこととしていた場合は、ＢＩＯＳプログラムの改竄検知を原因として特定できる。そして、その特定結果を表すために、ＬＥＤの予め定められたパターンの輝度や明滅パターンで通知するようにしてもよい。信号監視部１０３は、検知結果に応じた制御信号を表示部１０６に通知する。表示部１０６は、信号監視部１０３から通知された制御信号にしたがった通知を行う。表示部１０６は、ＬＣＤやボタンなどのＵｓｅｒ  Ｉｎｔｅｒｆａｃｅと、エラー状況をユーザに示すためのＬＥＤやスピーカを有する。ＬＣＤは、Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙの略称である。ＬＥＤは、Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅの略称である。表示部１０６は、例えば、制御信号にしたがって、ＬＥＤを点滅させる。ＬＥＤの点滅方法やタイミングは、ハードウェアロジックを用いて信号監視部内にプログラミングは可能である。
【００１８】
図２乃至図５は、信号監視部１０３が開始する各種信号波形パターンの一例を示す図である。
図２は、正常な起動時の各種信号波形を示す図である。ハードシーケンサ１０１に電源が投入された後の期間を示す第一領域では、ハードシーケンサ１０１は、不揮発性メモリ１０４を選択するＣｈｉｐ  Ｓｅｌｅｃｔ信号をアサートする。
【００１９】
Ｃｈｉｐ  Ｓｅｌｅｃｔ信号がアサートされている間に、ハードシーケンサ１０１は、不揮発性メモリ１０４の特定の領域に格納されている起動プログラムの読み出し要求を行う。そして、不揮発性メモリ１０４が、ハードシーケンサ１０１に対して、起動プログラムデータを送信する。但し、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号がアサートされる回数は、不揮発性メモリ１０４から読み出すデータ量に依存する。その後、ハードシーケンサ１０１が、読み出した起動プログラムからハッシュ値を算出し、算出されたハッシュ値と予め保持しているハッシュ値との比較を行う。つまり、第一領域は、起動プログラムの改竄の検証期間に対応する。そして、第一領域の波形は、ハードシーケンサ１０１が、起動プログラムの改竄の検証を行っていることを示す。
【００２０】
第二領域は、ハードシーケンサ１０１が不揮発性メモリ内に格納されている各種ストラップ情報などを読み出す期間を示す。第二領域では、ハードシーケンサ１０１が出力するリセット信号が立ち上がる前にトランザクションが現れる。また、第一領域と第二領域の間は十分に空いており、ハードシーケンサ１０１が起動プログラムの改竄を検知し、システムの起動を止めた場合は、第二領域にトランザクションは現れない。
【００２１】
第三領域は、ハードシーケンサ１０１が不揮発性メモリ内に格納されているファームウェアを読み出し、ハードシーケンサ１０１と接続される不図示の揮発性メモリにロードする期間を示す。第三領域では、ハードシーケンサ１０１が出力するリセット信号が立ち上がった後にトランザクションが現れる。
【００２２】
図３は、ハードシーケンサが故障している際の起動時の各種信号波形を示す図である。ハードシーケンサ１０１が故障している場合は、第一領域にトランザクションが現れない。その原因は三つある。一つ目の原因は、ハードシーケンサ１０１が故障したことによって、電源回路１０２に出力すべきステータス信号１０８が出力されず、ＣＰＵ１０５に電源が投入されないことである。二つ目の原因は、ハードシーケンサ１０１への電源投入は完了しているにも関わらず、ハードシーケンサ１０１がＣｈｉｐ  Ｓｅｌｅｃｔ信号を出力しないことである。三つ目の原因は、ハードシーケンサ１０１への電源投入は完了してハードシーケンサ１０１がＣｈｉｐ  Ｓｅｌｅｃｔ信号を出力しているにも関わらず、ハードシーケンサ１０１から不揮発性メモリ１０４へのデータ信号が出力されないことである。つまり、第一領域にトランザクションが無い場合は、ハードシーケンサ１０１の故障と判断できる。
【００２３】
図４は、不揮発性メモリが故障した際の起動時の各種信号波形を示す図である。
不揮発性メモリ１０４が故障している場合は、ハードシーケンサ１０１が電源投入後に起動プログラムの改竄検証を行うために、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号を出力する。そして、ハードシーケンサ１０１が、不揮発性メモリ１０４へのデータ信号を出力しているものの、不揮発性メモリ１０４が、データを出力しない。したがって、第一領域で、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号とハードシーケンサ１０１から不揮発性メモリ１０４へのデータ信号があるが、不揮発性メモリ１０４からハードシーケンサ１０１へのデータ信号が無い場合は、不揮発性メモリ１０４の故障と判断できる。
【００２４】
図５は、ハードシーケンサが起動プログラムの改竄を検知し、システムの起動を止めた際の各種信号波形である。
ハードシーケンサ１０１が、不揮発性メモリ１０４へデータ信号を送信することによって、不揮発性メモリ１０４内の特定の領域を指定して読み出し要求を行う。不揮発性メモリ１０４は、指定されたアドレスに格納されている起動プログラムデータをハードシーケンサ１０１へ返す。上記のハードシーケンサ１０１と不揮発性メモリ１０４間でのデータ信号のやり取りが、一定回数行われる。その後、ハードシーケンサ１０１が、読み出した起動プログラムデータを元にハッシュ値を算出し、保持しているハッシュ値と比較する。
【００２５】
ハードシーケンサ１０１は、算出したハッシュ値と保持しているハッシュ値とに差分があって、改竄を検知した場合は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号の出力を停止する。これにより、ハードシーケンサ１０１は、本来第二領域で行うストラップの読み出しや第三領域で行うファームウェアのロードは行わないように制御する。つまり、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号、ハードシーケンサ１０１から不揮発性メモリ１０４へのデータ信号、不揮発性メモリ１０４からハードシーケンサ１０１へのデータ信号が、第一領域でのみ確認された場合は、以下のように判断できる。この場合は、起動プログラムの改竄によってシステムの起動に失敗したと判断できる。
【００２６】
図６は、信号監視部の構成例を示す図である。
信号監視部１０３は、計時部２００とエッジカウンタ回路２０１と表示部制御回路２０３という３つの内部機能ブロックを備える。エッジカウンタ回路２０１は、電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９を受信したことを持って、ハードシーケンサ１０１から入力される信号のエッジ個数をカウントし始める。本実施例では、エッジカウンタ回路２０１は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号については立ち下がりエッジをカウントする。また、エッジカウンタ回路２０１は、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号については、立ち上がりエッジをカウントする。Ｃｈｉｐ  Ｓｅｌｅｃｔ信号とデータ信号とについて、それぞれ個別のカウンタが用意される。エッジカウンタ回路２０１は、計時部２００からのエッジ個数要求信号がアサートされた場合は、カウントを停止し、現在のカウント値を計時部２００に送信する。エッジ個数要求信号は、カウントされたエッジ個数を要求する信号である。エッジカウンタ回路２０１は、ハードシーケンサ１０１から入力される信号を、そのまま不揮発性メモリ１０４に対して出力する。但し、信号監視部１０３内に不図示のレベルシフタ機能部を設けることで、ハードシーケンサ１０１と不揮発性メモリ１０４間の電圧レベルを調整してもよい。
【００２７】
計時部２００は、システムの起動が失敗した原因を検知し、当該原因を示す通知信号を出力する。計時部２００は、電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９を受信したことを契機として、計時を開始し、エッジカウンタ回路２０１からの信号の受信を待つ。所定時間が経過しても、エッジカウンタ回路２０１からＣｈｉｐ  Ｓｅｌｅｃｔエッジを検出したことを示す信号（Ｓｅｌｅｃｔエッジ検出信号）を受信しなかった場合、計時部２００は、表示部制御回路２０３への通知信号１をアサートする。通知信号１は、ハードシーケンサの故障を示す。上記の所定時間は、前述した第一領域の期間に設定される。
【００２８】
また、計時部２００は、所定時間が経過しても、エッジカウンタ回路２０１からハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号を検出したことを通知する信号（データエッジ検出信号）を受信しなかった場合は、以下の処理を実行する。計時部２００は、表示部制御回路２０３への通知信号２をアサートする。通知信号２は、不揮発性メモリ１０４の故障を示す。そして、計時部２００は、所定時間経過後にエッジカウンタ回路２０１へのエッジ個数要求信号をアサートする。
【００２９】
エッジカウンタ回路２０１は、エッジ個数要求信号のアサートを検知した場合、以下の処理を実行する。エッジカウンタ回路２０１は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号と、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号のエッジ個数を示すエッジ個数信号を計時部２００に送信する。
【００３０】
計時部２００は、エッジカウンタ回路２０１から受信したエッジ個数信号が示すエッジ個数が、所定値を超えているかを判断する。所定値は、正常に起動した際にカウントされるエッジ数とする。但し、ノイズなどの影響による起動プログラムデータの再送要求処理により、トランザクション数が増加する可能性もあるので、所定値は、正常に起動した際にカウントされるエッジ数以上の任意の数値に設定してもよい。
【００３１】
エッジ個数が、所定値を超えていない場合、計時部２００は、ＣｈｉｐＳｅｌｅｃｔ信号のエッジ個数が閾値１を超えているかを判断する。ＣｈｉｐＳｅｌｅｃｔ信号のエッジ個数が閾値１を超えていない場合、計時部２００は、通信途中でハードシーケンサ１０１が故障したことを検知し、表示部制御回路２０３への通知信号１をアサートする。閾値１は、正常時に第一領域でカウントされるエッジ個数よりも小さい値に設定される。
【００３２】
ＣｈｉｐＳｅｌｅｃｔ信号のエッジ個数が閾値１を超えている場合、計時部２００は、不揮発性メモリ１０４からハードシーケンサ１０１へのデータ信号のエッジ個数が閾値２を超えているかを判断する。不揮発性メモリ１０４からハードシーケンサ１０１へのデータ信号のエッジ個数が閾値２を超えていない場合、計時部２００は、通信途中で不揮発性メモリ１０４が故障したことを検知し、表示部制御回路２０３への通知信号２をアサートする。閾値２は正常時に第一領域でカウントされるエッジ個数よりも小さい値に設定される。不揮発性メモリ１０４からハードシーケンサ１０１へのデータ信号のエッジ個数が閾値２を超えている場合、計時部２００は、起動プログラムの改竄が原因となってシステムの起動に失敗したことを検知し、表示部制御回路２０３への通知信号３をアサートする。
【００３３】
表示部制御回路２０３は、計時部２００から受信した通知信号に応じて、出力する制御信号を変化させる。表示部制御回路２０３は、通知信号１を受信した場合、制御信号１を出力する。表示部制御回路２０３は、通知信号２を受信した場合、制御信号２を出力する。表示部制御回路２０３は、通知信号３を受信した場合、制御信号３を出力する。表示部制御回路２０３は、制御信号１から制御信号３を、それぞれ異なる周波数で動作するように制御する。一例として、表示部制御回路２０３は、通知信号１を受信した場合は制御信号１をある周波数で動作させ、表示部１０６が持つＬＥＤを点滅させる。また、表示部制御回路２０３は、通知信号２を受信した場合は、制御信号２を制御信号１よりも速い周波数で動作させる。
【００３４】
また、信号監視部１０３は、不図示の分周器を複数個有しており、その分周率がそれぞれ異なるものとする。これにより、それぞれの制御信号により点滅するＬＥＤの点滅パターンも異なるため、ユーザはその点滅パターンで、システムの起動失敗要因を知ることができる。
【００３５】
図７乃至図９は、実施例１の情報処理装置が備えるハード構成要素の動作処理を説明する図である。図７は、ハードシーケンサ１０１の動作処理を説明するフローチャートである。Ｓ３００において、ハードシーケンサ１０１が、自身に電源が投入されたかを判断する。電源が投入されていない場合は、処理がＳ３００に戻る。電源が投入された場合は、処理がＳ３０１に進む。Ｓ３０１において、ハードシーケンサ１０１が、電源回路１０２にステータス信号１０８を出力する。続いて、Ｓ３０２において、ハードシーケンサ１０１が、不揮発性メモリ１０４に出力しているＣｈｉｐ  Ｓｅｌｅｃｔ信号をアサートして通信開始状態にし、起動プログラムが格納されている領域の物理アドレスを、データ信号線を用いて指定して読み出す。Ｓ３０３において、ハードシーケンサ１０１が、読み出した起動プログラムからハッシュ値を算出する。
【００３６】
Ｓ３０４において、ハードシーケンサ１０１が、算出したハッシュ値と、自身が保持している、マスターとなる起動プログラムのハッシュ値とを比較し、比較結果に基づいて、起動プログラムへの改竄を検知したかを判断する。算出したハッシュ値とマスターとなるハッシュ値が異なる場合は、改竄を検知したことになる。したがって、この場合は、処理がＳ３０５に進む。Ｓ３０５において、ハードシーケンサ１０１が、不揮発性メモリ１０４へのアクセスを止める。これにより、ハードシーケンサ１０１が、ストラップ情報の読み出しやファームウェアのロードを行わないことにより、システムの起動が止まる。
【００３７】
算出したハッシュ値とマスターとなるハッシュ値が同じである場合は、改竄は検知されない。したがって、この場合は、処理がＳ３０６に進む。Ｓ３０６において、ハードシーケンサ１０１が、不揮発性メモリ１０４のストラップ情報格納領域に起動プログラムの読み出し時と同様の方法でアクセスし、ストラップ情報を読み出す。Ｓ３０７において、ハードシーケンサ１０１が、リセット信号を解除する。そして、Ｓ３０８において、不揮発性メモリ１０４のＢＩＯＳイメージ格納領域にアクセスして、ファームウェアデータを読み出して、揮発性メモリにロードする。
【００３８】
本発明の適用範囲は、上述した例に限定されない。プログラムの改竄の有無を検証する検証手段がＣＰＵを含む場合を想定する。例えば、Ｓ３０４で、ハードシーケンサ１０１は、不揮発性メモリ１０４内のＢＩＯＳのみの改竄の有無のチェックのみ、または、ＢＩＯＳおよびプログラムローダまでの改竄チェックを行うことにしてもよい。これらの改竄対象に改竄が行われたかを検知する検知処理をＳ３０４で行うこととしてもよい。そして、改竄が検知されなければ（Ｓ３０４でＮＯ）、ハードシーケンサ１０１は、Ｓ３０６とＳ３０７を実行する。そして、Ｓ３０７でリセット信号を解除されたＣＰＵ１０５が、不揮発性メモリ１０４とは別の不揮発性メモリ（図示省略）に記憶されたＯＳ、アプリケーションを読み出し、改竄検知を続行することとしてもよい。
また、信号監視部１０３が含む、ＣＰＵとは別のハードウェア回路（例えば、ＣＰＬＤ等）が、ＣＰＵに接続されている不揮発性メモリとＣＰＵとの間の信号を監視し、起動プログラムの改竄が原因で、システムの起動が失敗したことを検知してもよい。そして、ハードウェア回路が、検知されたシステムの起動の失敗の原因に関する情報をハードウェア回路に接続された出力装置（例えば、図１の表示部１０６）に対して通知するようにしてもよい。
【００３９】
図８は、電源回路の動作処理を説明するフローチャートである。
Ｓ４００において、電源回路１０２が、情報処理装置１０が有する不図示の電源スイッチが押下されたかを判断する。電源スイッチ押下の検知方法の一例として、電源スイッチが押されたことにより生じる電圧変化を利用する方法がある。電源スイッチが押下されていない場合は、処理がＳ４００に戻る。電源スイッチが押下された場合は、処理がＳ４０１に進む。Ｓ４０１において、電源回路１０２が、ハードシーケンサ１０１に電源を供給する。続いて、Ｓ４０２において、電源回路１０２が、ハードシーケンサ１０１からステータス信号１０８を受信したかを判断する。電源回路１０２が、ハードシーケンサ１０１からステータス信号１０８を受信していない場合は、処理がＳ４０２に戻る。電源回路１０２が、ハードシーケンサ１０１からステータス信号１０８を受信した場合は、処理がＳ４０３に進む。そして、Ｓ４０３において、電源回路１０２が、ＰｏｗｅｒＧｏｏｄ信号１０９を信号監視部１０３に出力する。
【００４０】
図９は、信号監視部の動作処理を説明するフローチャートである。
まず、信号監視部１０３に電源が投入される。Ｓ５００において、信号監視部１０３が、電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９を受信したかを判断する。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９を受信していない場合は、処理がＳ５００に戻る。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９を受信した場合は、処理がＳ５０１に進む。
【００４１】
Ｓ５０１において、信号監視部１０３が、計時を開始する。続いて、Ｓ５０２において、信号監視部１０３が、ハードシーケンサ１０１から入力されるＣｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジを検知したかを判断する。信号監視部１０３が、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジを検知していない場合は、処理がＳ５０３に進む。信号監視部１０３が、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジを検知した場合は、処理がＳ５０５に進む。
【００４２】
Ｓ５０３において、信号監視部１０３が、所定時間を超えているか（経過しているか）を判断する。この例では、所定時間は、信号監視部１０３が電源を投入されてからＣｈｉｐ  Ｓｅｌｅｃｔ信号をアサートし始めるまでの時間よりも長く、第一領域終了までの時間よりも短い時間に設定される。すなわち、Ｓ５０３の判断処理に用いる所定時間は、起動プログラムの改竄の有無の検証期間に応じて決定される。所定時間を超えている場合は、処理がＳ５０４に進む。そして、Ｓ５０４において、信号監視部１０３が、制御信号１を周波数１で制御する。これにより、ハードシーケンサ１０１が故障していることが原因となってシステムが起動に失敗したことがユーザに通知される。所定時間を超えていない場合は、処理がＳ５０２に戻る。
【００４３】
Ｓ５０５において、信号監視部１０３が、所定時間内に不揮発性メモリ１０４からハードシーケンサ１０１へのデータ信号の立ち上がりエッジを検知したかを判断する。信号監視部１０３が、所定時間内に不揮発性メモリ１０４からハードシーケンサ１０１へのデータ信号の立ち上がりエッジを検知していない場合は、処理がＳ５０６に進む。そして、Ｓ５０６において、信号監視部１０３が、制御信号２を周波数２で制御する。これにより、不揮発性メモリ１０４の故障が原因となってシステムが起動に失敗したことをがユーザに通知される。
【００４４】
所定時間内に不揮発性メモリ１０４からハードシーケンサ１０１へのデータ信号の立ち上がりエッジを検知した場合は、処理がＳ５０７に進む。Ｓ５０７において、信号監視部１０３が、検知したそれぞれの信号のエッジに応じて、エッジ個数のカウント値をインクリメントする。続いて、Ｓ５０８において、信号監視部１０３が、所定時間内に、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジまたはハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号の立ち上がりエッジを検知したかを判断する。所定時間内にエッジを検知した場合は、処理がＳ５０７に戻り、信号監視部１０３が、カウント値をインクリメントする。所定時間内にエッジを検知できなかった場合、つまりハードシーケンサ１０１と不揮発性メモリ１０４間の通信が終了した場合は、処理がＳ５０９に進む。
【００４５】
Ｓ５０９において、信号監視部１０３が、カウント値が示すエッジ個数が所定値を超えているかを判断する。所定値と比較対象とするエッジ個数は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジ個数と、ハードシーケンサ１０１と不揮発性メモリ１０４間で送受信されるデータ信号の立ち上がりエッジ個数の合計とする。また、Ｓ５０９における判断処理で用いる所定値は、本来正常に起動した場合にカウントされるエッジ個数に、起動プログラムデータの再送要求処理により増加するエッジ個数を加算した範囲内の値とする。もちろん、所定値の定義は、上記の値に限定されない。
【００４６】
エッジ個数が所定値を超えている場合は、起動プログラムの改竄検証後もハードシーケンサ１０１と不揮発性メモリ１０４間でストラップ情報やファームウェアの読み出しなどが行われていたことになる。したがって、信号監視部１０３は、システムが正常に起動したことを検知する。エッジ個数が所定値を超えていない場合は、処理がＳ５１０に進む。Ｓ５１０において、信号監視部１０３が、カウントしたＣｈｉｐ  Ｓｅｌｅｃｔ信号のエッジ個数が、閾値１を超えているかを確認する。これにより、通信途中でハードシーケンサ１０１が故障していないかが確認可能となる。エッジ個数が閾値１を超えていない場合は、通信途中でハードシーケンサ１０１が故障したことを意味する。したがって、この場合は、処理がＳ５０４に進み、信号監視部１０３は、制御信号１を周波数１で制御する。これにより、ハードシーケンサ１０１の故障が通知される。エッジ個数が閾値１を超えている場合は、処理がＳ５１１に進む。
【００４７】
Ｓ５１１において、信号監視部１０３が、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号のエッジ個数が、閾値２を超えているかを判断する。これにより、通信途中で不揮発性メモリ１０４が故障していないかが確認可能である。エッジ個数が、閾値２を超えていない場合は、通信途中で不揮発性メモリ１０４が故障したことを意味する。したがって、この場合は、処理がＳ５０６に進み、信号監視部１０３は、制御信号２を周波数２で制御する。これにより、不揮発性メモリ１０４の故障が通知される。
【００４８】
エッジ個数が、閾値２を超えている場合は、処理がＳ５１２に進む。Ｓ５１２において、信号監視部１０３が、エッジのカウントと計時を終了して、それぞれクリアする。そして、Ｓ５１３において、信号監視部１０３が、制御信号３を周波数３で制御する。これにより、起動プログラムの改竄が原因となってシステムが起動に失敗したことがユーザに通知される。
【００４９】
次に、図１０乃至図１２を用いて、信号監視部１０３の内部機能ブロックの処理に関して説明する。
図１０は、エッジカウンタ回路の動作処理を説明するフローチャートである。
Ｓ６００において、エッジカウンタ回路２０１が、電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力されたかを判断する。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力されていない場合は、処理がＳ６００に戻る。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力された場合は、処理がＳ６０１に進む。Ｓ６０１において、エッジカウンタ回路２０１が、ハードシーケンサ１０１から入力されるＣｈｉｐ  Ｓｅｌｅｃｔ信号と、ハードシーケンサ１０１と不揮発性メモリ１０４間で通信されるデータ信号のエッジの監視を開始する。エッジカウンタ回路２０１は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号については、立ち下がりエッジを監視する。エッジカウンタ回路２０１は、ハードシーケンサ１０１と不揮発性メモリ１０４間で通信されるデータ信号については、立ち上がりエッジを監視する。
【００５０】
次に、Ｓ６０２において、エッジカウンタ回路２０１が、いずれかの信号のエッジを検出したかを判断する。エッジを検出していない場合は、処理がＳ６０３に進む。エッジを検出した場合は、処理がＳ６０４に進む。Ｓ６０３において、エッジカウンタ回路２０１が、計時部２００からエッジ個数要求信号が入力されたか（アサートされたか）を判断する。エッジ個数要求信号は、計時部２００が所定時間経過後に出力する信号であり、ハードシーケンサ１０１と不揮発性メモリ１０４間の通信が終了したことを示す。したがって、エッジ個数要求信号がアサートされた場合は、処理がＳ６１２に進む。Ｓ６１２において、エッジカウンタ回路２０１が、カウントした合計のエッジ個数を示すエッジ個数信号を計時部２００に出力する。その後、Ｓ６１３において、エッジカウンタ回路２０１が、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号と、ハードシーケンサ１０１と不揮発性メモリ１０４間で通信されるデータ信号とのそれぞれに対応するカウンタ回路のカウント値をクリアする（ステップＳ６１３）。
【００５１】
Ｓ６０４において、エッジカウンタ回路２０１が、検出されたエッジが立ち上がりエッジであるかを判断する。検出されたエッジが立ち上がりエッジである場合は、処理がＳ６０５に進む。検出されたエッジが立ち上がりエッジでなく、立ち下がりエッジである場合は、処理がＳ６０８に進む。
【００５２】
Ｓ６０５において、エッジカウンタ回路２０１が、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号のエッジをカウントしているカウンタ回路のカウント値をインクリメントする。そして、処理がＳ６０６に進む。続いて、Ｓ６０６において、エッジカウンタ回路２０１が、エッジ個数のカウント値が１になったかを判断する。エッジ個数のカウント値が１になった場合は、処理がＳ６０７に進む。エッジ個数のカウント値が１になっていない場合は、処理がＳ６１１に進む。Ｓ６０７において、エッジカウンタ回路２０１が、ハードシーケンサ１０１と不揮発性メモリ１０４間で通信されるデータ信号のエッジを検出したことを示す信号（データエッジ検出信号）を計時部２００に出力する。計時部２００は、エッジカウンタ回路２０１から出力された信号により、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジが検出されたのか、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号の立ち上がりエッジが検出されたのかを判断できる。
【００５３】
また、Ｓ６０８において、エッジカウンタ回路２０１が、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号のエッジをカウントしているカウンタ回路のカウント値をインクリメントする。続いて、Ｓ６０８において、エッジカウンタ回路２０１が、エッジ個数のカウント値が１になったかを判断する。エッジ個数のカウント値が１になった場合は、処理がＳ６１０に進む。エッジ個数のカウント値が１になっていない場合は、処理がＳ６１１に進む。Ｓ６１０において、エッジカウンタ回路２０１が、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号のエッジを検出したことを示す信号（Ｓｅｌｅｃｔエッジ検出信号）を計時部２００に出力する。
【００５４】
次に、Ｓ６１１において、エッジカウンタ回路２０１が、エッジ個数要求信号が計時部２００から入力されたかを判断する。エッジ個数要求信号が計時部２００から入力されていない場合は、処理がＳ６０２に戻る。エッジ個数要求信号が計時部２００から入力された場合は、処理がＳ６１２に進む。
【００５５】
図１１は、計時部の動作処理を説明するフローチャートである。
Ｓ７００において、計時部２００が、電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力されたかを判断する。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力されていない場合は、処理がＳ７００に戻る。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力された場合は、処理がＳ７０１に進む。Ｓ７０１において、計時部２００が、計時を開始する。続いて、Ｓ７０２において、計時部２００が、所定時間が経過したかを判断する。Ｓ７０２の判断処理で用いる所定時間は、図９のＳ５０３の判断処理で用いる所定時間と同じである。所定時間が経過していない場合は、処理がＳ７０２に戻る。所定時間が経過した場合は、処理がＳ７０３に進む。
【００５６】
次に、Ｓ７０３において、計時部２００が、エッジカウンタ回路２０１からＳｅｌｅｃｔエッジ検出信号を受信したかを判断する。計時部２００が、エッジカウンタ回路２０１からＳｅｌｅｃｔエッジ検出信号を受信していない場合は、計時部２００は、ハードシーケンサ１０１が故障したと判断し、処理がＳ７０４に進む。そして、Ｓ７０４において、計時部２００が、通知信号１を表示部制御回路２０３に送信する。計時部２００が、エッジカウンタ回路２０１からＳｅｌｅｃｔエッジ検出信号を受信していない受信していた場合は、処理がＳ７０５に進む。
【００５７】
Ｓ７０５において、計時部２００が、エッジカウンタ回路２０１からデータエッジ検出信号を受信したかを判断する。計時部２００が、エッジカウンタ回路２０１からデータエッジ検出信号を受信していない場合は、処理がＳ７０６に進む。そして、Ｓ７０６において、計時部２００が、通知信号２を表示部制御回路２０３に送信する。計時部２００が、エッジカウンタ回路２０１からデータエッジ検出信号を受信した場合は、処理がＳ７０７に進む。
【００５８】
Ｓ７０７において、計時部２００が、第一領域内で検出されたエッジ個数の合計を得るために、エッジカウンタ回路に対してエッジ個数要求信号を送信する。続いて、計時部２００が、エッジ個数信号を受信したかを判断する。計時部２００が、エッジ個数信号を受信していない場合は、処理がＳ７０８に戻る。計時部２００が、エッジ個数信号を受信した場合は、処理がＳ７０９に進む。
【００５９】
Ｓ７０９において、計時部２００が、エッジ個数信号により示される、第一領域で検出されたエッジ個数が、所定値を超えているかを判断する。前述したように、所定値は、正常に起動した際にカウントされるエッジ数に設定される。エッジ個数が、所定値を超えている場合は、処理がＳ７１３に進む。そして、Ｓ７１３において、計時部２００が、計時時間をクリアする。
【００６０】
エッジ個数が、所定値以下である場合は、計時部２００は、第一領域内でのみハードシーケンサ１０１と不揮発性メモリ１０４が通信していたと判断して、処理がＳ７１０に進む。Ｓ７１０において、計時部２００が、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号のエッジ個数が、閾値１を超えているかを判断する。前述したように、閾値１は、正常時に第一領域でカウントされるエッジ個数よりも小さい値に設定される。Ｃｈｉｐ  Ｓｅｌｅｃｔ信号のエッジ個数が、閾値１以下である場合は、計時部２００が、通信途中でハードシーケンサ１０１が故障していると判断して、処理がＳ７０４に進む。そして、Ｓ７０４において、計時部２００が、通知信号１を表示部制御回路２０３に送信する。
【００６１】
Ｃｈｉｐ  Ｓｅｌｅｃｔ信号のエッジ個数が、閾値１を超えている場合は、処理がＳ７１１に進む。Ｓ７１１において、計時部２００が、ハードシーケンサ１０１と不揮発性メモリ１０４間で通信されるデータ信号のエッジ個数が、閾値２を超えているかを判断する。前述したように、閾値２は、正常時に第一領域でカウントされるエッジ個数よりも小さい値に設定される。ハードシーケンサ１０１と不揮発性メモリ１０４間で通信されるデータ信号のエッジ個数が、閾値２以下である場合は、計時部２００は、通信途中で不揮発性メモリ１０４が故障していると判断して、処理がＳ７０６に進む。そして、Ｓ７０６において、計時部２００が、通知信号２を表示部制御回路２０３に送信する。ハードシーケンサ１０１と不揮発性メモリ１０４間で通信されるデータ信号のエッジ個数が、閾値２を超えている場合は、計時部２００は、起動プログラムの改竄が原因となってシステムが起動に失敗したと判断して、処理がＳ７１２に進む。そして、Ｓ７１２において、計時部２００が、通知信号３を表示部制御回路２０３に送信する。
【００６２】
図１２は、表示部制御回路の動作処理を説明するフローチャートである。
Ｓ８００において、表示部制御回路２０３が、計時部２００から通知信号を受信したかを判断する。表示部制御回路２０３が、計時部２００から通知信号を受信していない場合は、処理がＳ８００に戻る。表示部制御回路２０３が、計時部２００から通知信号を受信した場合は、処理がＳ８０１に進む。Ｓ８０１において、表示部制御回路２０３が、通知信号１を受信したかを判断する。表示部制御回路２０３が、通知信号１を受信した場合は、処理がＳ８０２に進む。そして、Ｓ８０２において、表示部制御回路２０３が、制御信号１を周波数１で制御する。
【００６３】
表示部制御回路２０３が、通知信号１を受信していない場合は、処理がＳ８０３に進む。Ｓ８０３において、表示部制御回路２０３が、計時部２００から通知信号２を受信したかを判断する。表示部制御回路２０３が、通知信号２を受信した場合は、処理がＳ８０４に進む。そして、Ｓ８０４において、表示部制御回路２０３が、制御信号２を周波数２で制御する。
【００６４】
表示部制御回路２０３が、計時部２００から通知信号２を受信していない場合は、通知信号３を受信したことになる。したがって、この場合は、処理がＳ８０５に進む。そして、Ｓ８０５において、表示部制御回路２０３が、制御信号３を周波数３で制御する。本実施例の情報処理装置においては、起動プログラムの検証時には、ＣＰＵ１０１にリセットがかけられている。したがって、本実施例の情報処理装置によれば、ＣＰＵ１０５上で動作するＯＳやアプリケーションなどのソフトウェアの介在無しに、起動プログラムの改竄によってシステムが起動に失敗したことを検知することができる。
【００６５】
（実施例２）
実施例２の情報処理装置について説明する。実施例２の情報処理装置の全体構成は、図１に示す実施例１の情報処理装置の全体構成と同様である。但し、実施例２では、実施例１と比べて、信号監視部１０３が有する内部機能ブロックに差分があるので、差分箇所を中心に説明する。
【００６６】
図１３は、実施例２の情報処理装置が備える信号監視部の構成を示す図である。
信号監視部１０３は、計時部２０５と、エッジ検出回路２０４と、表示部制御回路２０３とを備える。表示部制御回路２０３は、図６に示す表示部制御回路２０３と同様である。本実施例において、信号監視部１０３は、最初に出力されたＣｈｉｐ  Ｓｅｌｅｃｔ信号と最後に出力されたＣｈｉｐ  Ｓｅｌｅｃｔ信号との間の時間を計時して、システムの起動に失敗した原因を切り分ける。具体的には、信号監視部１０３は、計時した時間が、第一領域内に収まっている場合は、起動プログラムの改竄が原因となってシステムの起動に失敗したと判断する。計時した時間が、第一領域の時間よりも長い場合は、信号監視部１０３は、システムが正常に起動したと判断する。また、不揮発性メモリ１０４の故障も切り分けるために、信号監視部１０３は、実施例１と同様に、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号の立ち上がりエッジも監視する。
【００６７】
計時部２０５は、電源回路１０２から出力されるＰｏｗｅｒＧｏｏｄ信号１０９が入力されたことを契機として、計時を開始する。計時部２０５は、エッジ検出回路２０４から所定時間経過後にＳｅｌｅｃｔエッジ検出信号を受信しなかった場合、通知信号１を表示部制御回路２０３に送信する。所定時間は、実施例１と同様に、ハードシーケンサ１０１が電源を投入されてからＣｈｉｐ  Ｓｅｌｅｃｔ信号をアサートし始めるまでの時間よりも長く、第一領域終了までの時間よりも短い時間とする。また、エッジ検出回路２０４は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジを検出するたびに、Ｓｅｌｅｃｔエッジ検出信号を計時部２０５に送信する。
【００６８】
計時部２０５は、所定時間経過後に、データエッジ検出信号を受信しなかった場合は、通知信号２を表示部制御回路２０３に送信する。計時部２０５は、最初にＳｅｌｅｃｔエッジ検出信号を受信した時に、その時の計時時間を計時時間１として保持しておく。次に、計時部２０５は、所定時間内にＳｅｌｅｃｔエッジ検出信号を受信すると、その時の計時時間を計時時間２として保持し、以降、所定時間内にＳｅｌｅｃｔエッジ検出信号を受信するたびに、計時時間２を上書きしていく。
【００６９】
計時部２０５は、所定時間内にＳｅｌｅｃｔエッジ検出信号を受信しなかった場合は、その段階で保持している計時時間２と計時時間１との差分に応じた時間を算出する。算出した時間が第一領域の時間を超えていない場合は、計時部２０５は、起動プログラムの改竄による起動失敗であると判断し、通知信号３を送信する。
【００７０】
エッジ検出回路２０４は、電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９を受信したことを契機として、以下の処理を実行する。エッジ検出回路２０４は、ハードシーケンサ１０１から出力されるＣｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジと、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号の立ち上がりエッジの監視を開始する。
【００７１】
エッジ検出回路２０４は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジを検知した場合、計時部２０５にＳｅｌｅｃｔエッジ検出信号を送信する。また、エッジ検出回路２０４は、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号の立ち上がりエッジを検知した場合、計時部２０５に、データエッジ検出信号を送信する。但し、前述のように、エッジ検出回路２０４は、Ｓｅｌｅｃｔエッジ検出信号については、Ｃｈｉｐ
Ｓｅｌｅｃｔ信号の立ち下がりエッジを検知するたびに送信する。また、エッジ検出回路２０５は、ハードシーケンサ１０１及び不揮発性メモリ１０４から入力される信号を、そのままハードシーケンサ１０１及び不揮発性メモリ１０４に出力する。
【００７２】
図１４は、エッジ検出回路の動作処理を説明するフローチャートである。
Ｓ１０００において、エッジ検出回路２０４が、電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力されたかを判断する。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力されていない場合は、処理がＳ１０００に戻る。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力された場合は、処理がＳ１００１に進む。
【００７３】
Ｓ１００１において、エッジ検出回路２０４が、ハードシーケンサ１０１から出力されるＣｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジと、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号の立ち上がりエッジの監視を開始する。続いて、Ｓ１００２において、エッジ検出回路２０４が、エッジを検出したかを判断する。エッジ検出回路２０４が、エッジを検出していない場合は、処理がＳ１００２に戻る。エッジ検出回路２０４が、エッジを検出した場合は、処理がＳ１００３に進む。
【００７４】
Ｓ１００３において、エッジ検出回路２０４が、検出されたエッジが、立ち上がりエッジであるかを判断する。検出されたエッジが立ち上がりエッジでなく、立ち下がりエッジである場合は、処理がＳ１００４に進む。そして、Ｓ１００４において、エッジ検出回路２０４が、Ｓｅｌｅｃｔエッジ検出信号を計時部２０５に送信する。検出されたエッジが、立ち上がりエッジである場合は、処理がＳ１００５に進む。
【００７５】
Ｓ１００５において、エッジ検出回路２０４が、エッジ個数１フラグがセットされているかを判断する。エッジ個数１フラグは、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号のエッジが既に検出されていることを示す。エッジ個数１フラグがセットされていない場合は、初めてハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号のエッジを検出したことになる。したがって、エッジ個数１フラグがセットされていない場合は、処理がＳ１００６に進む。エッジ個数１フラグがセットされている場合は、処理がＳ１００２に戻り、エッジの検出が再開される。
【００７６】
次に、Ｓ１００６において、エッジ検出回路２０４が、エッジ個数１フラグをセットする。続いて、Ｓ１００７において、エッジ検出回路２０４が、データエッジ検出信号を計時部２０５に出力する。そして、処理がＳ１００２に戻る。
【００７７】
図１４を参照して説明した動作処理により、エッジ検出回路２０４は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりエッジを検出するたびに、計時部２０５にＳｅｌｅｃｔエッジ検出信号を出力する。また、不揮発性メモリ１０４の故障を検知するためには、ハードシーケンサ１０１と不揮発性メモリ１０４間のデータ信号の立ち上がりエッジを一度検出すればよい。したがって、エッジ検出回路２０４は、エッジ検出のたびにデータエッジ検出信号を送信することはしない。
【００７８】
図１５は、実施例２における計時部の動作処理を説明するフローチャートである。
Ｓ１１００において、計時部２０５が、電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力されたかを判断する。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力されていない場合は、処理がＳ１１００に戻る。電源回路１０２からＰｏｗｅｒＧｏｏｄ信号１０９が入力された場合は、処理がＳ１１０１に進む。
【００７９】
Ｓ１１０１において、計時部２０５が、計時を開始する。続いて、Ｓ１１０３において、計時部２０５が、エッジ検出回路２０４から、Ｓｅｌｅｃｔエッジ検出信号を受信したかを判断する。Ｓｅｌｅｃｔエッジ検出信号を受信していない場合は、処理がＳ１１０４に進む。Ｓｅｌｅｃｔエッジ検出信号を受信した場合は、処理がＳ１１０６に進む。
【００８０】
Ｓ１１０４において、計時部２０５が、所定時間を経過しているかを判断する。Ｓ１１０４の判断処理で用いる所定時間は、図１１のＳ７０２の判断処理で用いる所定時間と同じであり、起動プログラムの改竄の検証期間（第一領域の時間）に応じて決定される。所定時間を経過していない場合は、処理がＳ１１０３に戻る。所定時間を経過した場合は、第一領域の時間内にハードシーケンサ１０１がＣｈｉｐ  Ｓｅｌｅｃｔ信号を出力していないことになる。したがって、この場合は、計時部２０５は、ハードシーケンサ１０１の故障が原因で、システムが起動に失敗したと判断し、処理がＳ１１０５に進む。そして、Ｓ１１０５において、計時部２０５が、通知信号１を表示部制御回路２０３に出力する。
【００８１】
Ｓ１１０６において、計時部２０５が、Ｓｅｌｅｃｔエッジ検出信号を受信したときの計時時間を計時時間１として保持しておく。計時時間１が、最初のＣｈｉｐ  Ｓｅｌｅｃｔ信号が検出された時の時刻となる。続いて、Ｓ１１０７において、計時部２０５が、エッジ検出回路２０４からデータエッジ検出信号を受信したかを判断する。計時部２０５が、エッジ検出回路２０４からデータエッジ検出信号を受信していない場合は、処理がＳ１１０８に進む。計時部２０５が、エッジ検出回路２０４からデータエッジ検出信号を受信した場合は、処理がＳ１１１０に進む。
【００８２】
Ｓ１１０８において、計時部２０５が、所定時間が経過しているかを判断する。所定時間が経過していない場合は、処理がＳ１１０７に戻る。所定時間が経過している場合は、第一領域時間内にハードシーケンサ１０１がＣｈｉｐ  Ｓｅｌｅｃｔ信号を不揮発性メモリ１０４に出力しているにも関わらず、不揮発性メモリ１０４が起動プログラムデータを送信していないことになる。したがって、この場合は、計時部２０５が、不揮発性メモリ１０４が故障したと判断し、処理がＳ１１０９に進む。そして、Ｓ１１０９において、計時部２０５が、通知信号２を表示部制御回路２０３に送信する。
【００８３】
Ｓ１１１０において、計時部２０５が、Ｓｅｌｅｃｔエッジ検出信号を受信したかを判断する。計時部２０５が、Ｓｅｌｅｃｔエッジ検出信号を受信していない場合は、処理がＳ１１１０に戻る。計時部２０５が、Ｓｅｌｅｃｔエッジ検出信号を受信した場合は、処理がＳ１１１１に進む。そして、Ｓ１１１１において、計時部２０５が、Ｓｅｌｅｃｔエッジ検出信号を受信したときの計時時間を計時時間２として保持する。
【００８４】
次に、計時部２０５が、所定時間が経過したかを判断する。所定時間が経過していない場合は、処理がＳ１１１０に戻る。これにより、Ｓｅｌｅｃｔエッジ検出信号が受信されるたびに、計時時間２が上書きされることになり、常に最後のＣｈｉｐ  Ｓｅｌｅｃｔ信号の立ち下がりを検出した時間を保持できる。所定時間が経過した場合は、処理がＳ１１１３に進む。
【００８５】
Ｓ１１０３において、計時部２０５が、計時時間２と計時時間１の差分の時間を算出し、算出された時間が、所定時間を超えているかを判断する。計時時間２と計時時間１の差分の時間は、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号が出力されていた時間である。したがって、計時時間２と計時時間１の差分の時間が、所定時間を超えている場合は、第一領域以降もハードシーケンサ１０１と不揮発性メモリ１０４間の通信が行われていたことになる。したがって、この場合には、計時部２０５は、起動プログラムの改竄はされていないと判断して、処理がＳ１１１５に進む。
【００８６】
計時時間２と計時時間１の差分の時間が、所定時間以下である場合は、第一領域の時間内でのみ、ハードシーケンサ１０１と不揮発性メモリ１０４が通信していたことになる。したがって、この場合は、計時部２０５は、起動プログラムの改竄が原因となって、システムの起動が失敗したと判断して、処理がＳ１１１４に進む。そして、Ｓ１１１４において、計時部２０５が、通知信号３を表示部制御回路２０３に送信する。その後、Ｓ１１１５において、計時部２０５が、計時時間をクリアする。以上説明した実施例２の情報処理装置によれば、Ｃｈｉｐ  Ｓｅｌｅｃｔ信号が出力されている時間の監視結果に基づいて、システムの起動失敗要因を検知することが可能となる。
【００８７】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００８８】
１０  情報処理装置
１０１  ハードシーケンサ
１０３  信号監視部
１０４  不揮発性メモリ
【図１】
2019109842.tif 000003
【図２】
2019109842.tif 000004
【図３】
2019109842.tif 000005
【図４】
2019109842.tif 000006
【図５】
2019109842.tif 000007
【図６】
2019109842.tif 000008
【図７】
2019109842.tif 000009
【図８】
2019109842.tif 000010
【図９】
2019109842.tif 000011
【図１０】
2019109842.tif 000012
【図１１】
2019109842.tif 000013
【図１２】
2019109842.tif 000014
【図１３】
2019109842.tif 000015
【図１４】
2019109842.tif 000016
【図１５】
2019109842.tif 000017
【手続補正書】
【提出日】平成30年7月24日(2018.7.24)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
情報処理装置であって、
前記情報処理装置のシステムの起動プログラムが予め記憶された記憶手段と、
前記記憶手段に記憶された前記起動プログラムの改竄の有無を検証する検証手段と、
前記検証手段と前記記憶手段間で通信される信号を監視し、前記信号の監視結果に基づいて、前記起動プログラムの改竄が原因で前記システムの起動が失敗したことを検知する検知手段と、
前記検知手段が検知した、前記システムの起動の失敗の原因に関する情報を通知する通知手段とを備える
ことを特徴とする情報処理装置。
【請求項２】
前記検証手段と前記記憶手段間で通信される信号は、前記検証手段が前記記憶手段を通信対象として選択する選択信号と、前記検証手段と前記記憶手段間で通信されるデータ信号とを含む
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検知手段は、
前記検証手段と前記記憶手段間で通信される信号のエッジを検出してカウントし、
計時を開始してから前記起動プログラムの改竄の有無の検証期間に応じて決められた所定時間が経過したときの、前記カウントされているエッジの個数に基づいて、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項４】
前記検知手段は、前記所定時間が経過したときの、前記カウントされているエッジの個数が、所定値を超えていない場合に、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記検知手段は、計時を開始してから前記所定時間が経過したときに、前記検証手段が前記記憶手段を通信対象として選択する選択信号のエッジが検出されていない場合は、前記検証手段の故障が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項３または請求項４に記載の情報処理装置。
【請求項６】
前記検知手段は、計時を開始してから前記所定時間が経過したときに、前記検証手段が前記記憶手段を通信対象として選択する選択信号のエッジは検出されているが、前記記憶手段から前記検証手段へ送信されるデータ信号のエッジが検出されていない場合は、前記記憶手段の故障が原因で、システムの起動が失敗したことを検知する
ことを特徴とする請求項３乃至４のいずれか１項に記載の情報処理装置。
【請求項７】
前記検知手段は、計時を開始してから前記所定時間が経過したときに、前記検証手段が前記記憶手段を通信対象として選択する選択信号のエッジと、前記検証手段と前記記憶手段間で通信されるデータ信号のエッジが検出されている場合に、前記カウントされている前記検証手段と前記記憶手段間で通信される信号のエッジの個数が、所定値を超えているかを判断し、
前記エッジの個数が所定値を超えている場合に、前記システムが正常に起動したことを検知する
ことを特徴とする請求項４乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
前記検知手段は、
前記検証手段と前記記憶手段間で通信される信号のエッジの個数が、前記所定値を超えていない場合に、前記検証手段が前記記憶手段を通信対象として選択する選択信号のエッジの個数が、第１の閾値を超えているかを判断し、
前記選択信号のエッジの個数が、第１の閾値を超えていない場合は、前記検証手段の故障が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項７に記載の情報処理装置。
【請求項９】
前記検知手段は、
前記選択信号のエッジの個数が第１の閾値を超えている場合に、前記検証手段と前記記憶手段間で通信されるデータ信号のエッジの個数が第２の閾値を超えているかを判断し、前記データ信号のエッジの個数が第２の閾値を超えていない場合は、前記記憶手段の故障が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記検知手段は、
前記データ信号のエッジの個数が第２の閾値を超えている場合は、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記検知手段は、
前記検証手段と前記記憶手段間で通信される信号のエッジを検出してカウントし、
前記信号に含まれる、前記検証手段が前記記憶手段を通信対象として選択する選択信号を最初に検出したときから前記選択信号を最後に検出したときまでの時間が、所定時間を超えている場合に、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する
ことを特徴とする請求項１または請求項２に記載の情報処理装置。
【請求項１２】
前記検証手段は、ＣＰＵを含むものであり、前記検知手段は、前記ＣＰＵとは別のハードウェア回路を含み、
前記ハードウェア回路が、前記ＣＰＵに接続されているメモリと前記ＣＰＵとの間の信号を監視し、前記信号の監視結果に基づいて、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知し、
前記通知手段は、前記ハードウェア回路によって検知された、前記システムの起動の失敗の原因に関する情報を前記ハードウェア回路に接続された出力装置に対して通知する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項１３】
情報処理装置のシステムの起動プログラムが予め記憶された記憶手段と、前記記憶手段に記憶された前記起動プログラムの改竄の有無を検証する検証手段とを有する前記情報処理装置の制御方法であって、
前記検証手段と前記記憶手段間で通信される信号を監視し、前記信号の監視結果に基づいて、前記起動プログラムの改竄が原因で前記システムの起動が失敗したことを検知する検知工程と、
前記検知工程で検知された、前記システムの起動の失敗の原因に関する情報を通知する通知工程とを有する
ことを特徴とする制御方法。
【請求項１４】
コンピュータのシステムの起動プログラムが予め記憶された記憶手段と、前記記憶手段に記憶された前記起動プログラムの改竄の有無を検証する検証手段とを有するコンピュータに、
前記検証手段と前記記憶手段間で通信される信号を監視し、前記信号の監視結果に基づいて、前記起動プログラムの改竄が原因で前記システムの起動が失敗したことを検知する検知手順と、
前記検知手順において検知された、前記システムの起動の失敗の原因に関する情報を通知する通知手順とを実行させるためのプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００６
【補正方法】変更
【補正の内容】
【０００６】
本発明の一実施形態は、情報処理装置であって、情報処理装置のシステムの起動プログラムが予め記憶された記憶手段と、前記記憶手段に記憶された前記起動プログラムの改竄の有無を検証する検証手段と、前記検証手段と前記記憶手段間で通信される信号を監視し、前記信号の監視結果に基づいて、前記起動プログラムの改竄が原因で、前記システムの起動が失敗したことを検知する検知手段と、前記検知手段が検知した、前記システムの起動の失敗の原因に関する情報を通知する通知手段とを備える。