(57)【要約】      （修正有）【課題】改ざん検証プログラムを実行する際、その検証には多くの時間を要するため、情報処理装置の起動時間が長くなる。改ざんの有無の検証を実施するかしないかを設定可能にすることで、ユーザの希望に応じて速やかに起動する技術を提供する。【解決手段】情報処理装置は、セキュアブートを実行して起動するか、セキュアブートを実行せずに起動するか設定することができる。セキュアブートを実行して起動するか、或いはセキュアブートを実行せずに起動するか、のいずれかを設定されると、その設定に応じて、セキュアブートを実行して起動するか、或いはセキュアブートを実行せずに起動する。【選択図】図４
2020155029.tif 000002
【特許請求の範囲】
【請求項１】
セキュアブートを実行して起動する第１起動手段と、
前記セキュアブートを実行せずに起動する第２起動手段と、
前記第１起動手段或いは前記第２起動手段のいずれを実行して起動するかを設定する設定手段と、を有し、
前記設定手段による設定に応じて、前記第１起動手段或いは前記第２起動手段により起動することを特徴とする情報処理装置。
【請求項２】
前記設定手段による設定が、前記第２起動手段により起動する設定がなされている経過時間を計時する計時手段と、
前記計時手段による経過時間が所定時間を超えるとユーザに警告する警告手段と、を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記計時手段による経過時間が前記所定時間を超えると、前記設定手段により設定された前記設定を、前記第１起動手段により起動する設定に変更する変更手段を、更に有することを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記設定手段による設定が、前記第２起動手段により起動する設定の状態で起動された回数を計数する計数手段と、
前記計数手段により計数された回数が所定値を超えるとユーザに警告する警告手段と、を更に有することを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記計数手段により計数された回数が前記所定値を超えると、前記設定手段により設定された前記設定を、前記第１起動手段をにより起動する設定に変更する変更手段を、更に有することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
第１ＣＰＵと、
前記第１ＣＰＵが実行する第１プログラムを記憶する記憶手段と、
前記記憶手段に記憶された前記第１プログラムの改ざんの有無を検証する第２ＣＰＵと、を更に有し、
前記第２起動手段による起動時、前記第１ＣＰＵは前記第２ＣＰＵが実行する第２プログラムを前記第２ＣＰＵが実行するプログラムを記憶するメモリに展開した後、前記第２ＣＰＵのリセットを解除して前記第２ＣＰＵにより前記第２プログラムを実行させることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記第１起動手段による起動時、前記第２ＣＰＵは前記記憶手段に記憶された前記第１プログラムの改ざんの有無を検証し、前記第１プログラムが改ざんされていないことを確認した後、前記第１ＣＰＵのリセットを解除し、前記第１ＣＰＵが前記第２ＣＰＵが実行する前記第２プログラムを前記メモリに展開した後、前記第２ＣＰＵにより前記第２プログラムを実行させることを特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記第２ＣＰＵに割り込みを発生させる割り込み手段を、更に有し、
前記第１起動手段による起動時、前記第１ＣＰＵが前記第２ＣＰＵが実行する第３プログラムを前記メモリに展開した後、前記第１ＣＰＵは前記割り込み手段により前記第２ＣＰＵに割り込みを発生させ、前記第２ＣＰＵは、当該割り込みに応じて前記第３プログラムを実行することを特徴とする請求項６に記載の情報処理装置。
【請求項９】
前記第１及び第２プログラムは、起動プログラムであることを特徴とする請求項６又は７に記載の情報処理装置。
【請求項１０】
情報処理装置を制御する制御方法であって、
セキュアブートを実行して起動する第１起動工程と、
前記セキュアブートを実行せずに起動する第２起動工程と、
前記第１起動工程或いは前記第２起動工程のいずれを実行して起動するかを設定する設定工程と、を有し、
前記設定工程による設定に応じて、前記第１起動工程或いは前記第２起動工程により起動することを特徴とする制御方法。
【請求項１１】
コンピュータを、請求項１乃至９のいずれか１項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置とその制御方法、及びプログラムに関するものである。
【背景技術】
【０００２】
ソフトウェアの脆弱性をついてソフトウェアを改ざんし、コンピュータを悪用する攻撃が問題となっている。そういった攻撃に対する対策として、情報処理装置に搭載するＣＰＵが実行する起動プログラムの改ざんを検知する手法が知られている。例えば特許文献１では、起動プログラムを実行するＣＰＵ自身は、起動プログラムの改ざんを検知できないため、起動プログラムを実行するＣＰＵとは異なる別のＣＰＵによりセキュアブートを実行して、その起動プログラムの改ざんの有無を検証している。セキュアブートとは、情報処理装置の起動時に、第三者により改ざんされたファームウェアを実行しないようにする技術である。
【０００３】
一方、情報処理装置は、世の中の高性能化への要求に対応し、同時に複数の処理をスムーズに実行できるよう、今や複数のＣＰＵが搭載されているのが一般的であり、ＣＰＵ毎にそれぞれ異なる処理プログラムを実行させている。そのため、起動プログラムの改ざん検証の機能を情報処理装置に備える場合、情報処理装置の何れかのＣＰＵについて、元々行っていた処理プログラムの他に、起動プログラムの改ざん検証プログラムを実行させることが考えられる。この場合、その改ざん検証プログラムを実行させるＣＰＵは、最初は改ざん検証プログラムを実行させて、検証完了後は、別の処理プログラムを実行させるように動作プログラムを切り換えるよう制御する必要がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２００９／０１３８２５号
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、改ざん検証プログラムを実行する際、その検証には多くの時間を要するため、情報処理装置の起動時間が長くなる。ユーザによっては、改ざん検証よりも情報処理装置の起動時間を短縮することでの使い勝手の良さを優先する場合も考えられる。しかしながら、改ざん検知機能を仮に停止させたとしても、複数あるＣＰＵの起動順序やプログラムによる起動のシーケンスが変更されない限り、起動時間が短縮されないという課題があった。
【０００６】
本発明の目的は、上記従来技術の問題点の少なくとも一つを解決することにある。
【０００７】
本発明の目的は、改ざんの有無の検証を実施するかしないかを設定可能にすることで、ユーザの希望に応じて速やかに起動する技術を提供することにある。
【課題を解決するための手段】
【０００８】
上記目的を達成するために本発明の一態様に係る情報処理装置は以下のような構成を備える。即ち、
セキュアブートを実行して起動する第１起動手段と、
前記セキュアブートを実行せずに起動する第２起動手段と、
前記第１起動手段或いは前記第２起動手段のいずれを実行して起動するかを設定する設定手段と、を有し、前記設定手段による設定に応じて、前記第１起動手段或いは前記第２起動手段により起動することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、改ざんの有無の検証を実施するかしないかを設定可能にすることで、ユーザの希望に応じて速やかに起動できるという効果がある。
【００１０】
本発明のその他の特徴及び利点は、添付図面を参照とした以下の説明により明らかになるであろう。なお、添付図面においては、同じ若しくは同様の構成には、同じ参照番号を付す。
【図面の簡単な説明】
【００１１】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】実施形態１に係る情報処理装置の構成を説明するブロック図。
【図２】実施形態１に係る情報処理装置において、プログラムの改ざん検知を行わずに起動するときの動作を説明するタイミングチャート。
【図３】実施形態１に係る情報処理装置において、プログラムの改ざん検知を行わずに起動するときのＣＰＵ１０１及びＣＰＵ１０８の処理を説明するフローチャート。
【図４】実施形態１に係る情報処理装置において、改ざんの有無の検証を実施するか否かを設定する処理を説明するフローチャート（Ａ）と、図４の処理を実行する際に操作部に表示される画面例を示す図（Ｂ）。
【図５】実施形態１に係る情報処理装置において、セキュアブートを実行するときのＣＰＵ１０１及びＣＰＵ１０８の動作を説明するタイミングチャート。
【図６】実施形態１に係る情報処理装置において、セキュアブートを実行して起動するときのＣＰＵ１０１及びＣＰＵ１０８の処理を説明するフローチャート。
【図７】実施形態２に係る情報処理装置の構成を説明するブロック図。
【図８】実施形態２に係る情報処理装置において、セキュアブートを実行するときのＣＰＵ１０１及びＣＰＵ１０８の動作を説明するタイミングチャート。
【図９】実施形態２に係る情報処理装置において、セキュアブートを実行して起動するときのＣＰＵ１０１及びＣＰＵ１０８の処理を説明するフローチャート。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これら複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。更に、添付図面においては、同一もしくは同様の構成に同一の参照番号を付し、重複した説明は省略する。尚、実施形態に係る情報処理装置として複合機（デジタル複合機／ＭＦＰ／Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）を例に説明する。しかしながら本発明の適用範囲は複合機に限定するものでなく情報処理装置であればよい。
【００１３】
図１は、実施形態１に係る情報処理装置の構成を説明するブロック図である。
【００１４】
この情報処理装置では、メインのＣＰＵ１（１０１、以下ＣＰＵ１０１と呼ぶ）と、サブＣＰＵ２（１０８、以下ＣＰＵ１０８と呼ぶ）を有するサブ制御部１０６とが高速シリアルインターフェス１０７を介して接続されている。ＣＰＵ１０１とＣＰＵ１０８はともに、リセット制御部１１８によって各々リセットが解除される仕組みとなっている。
【００１５】
ＣＰＵ１０１は、情報処理装置の全体を制御するためのＣＰＵであり、ユーザインターフェースとして機能する操作部１４０、及び外部のネットワーク通信などの制御を行うことも可能である。操作部１４０は、タッチパネル機能を有する表示部と、ユーザにより操作されるハードキー等を有する。
【００１６】
不揮発メモリ１０２は、ＣＰＵ１０１が起動するためのプログラムを保存しているメモリである。ＣＰＵ１０１と不揮発メモリ１０２は、ＳＰＩバス１０３を介して接続されている。不揮発メモリ１０２に記憶されるプログラムは、後述する改ざん検知の対象の領域であり、この不揮発メモリ１０２のプログラムが改ざんされていない場合に、ＣＰＵ１０１は正常に起動を継続することができる。ＲＡＭ１０４は、ＣＰＵ１０１に接続された揮発性のメモリであり、ＤＤＲ１０５などのメモリを接続するバスを介して、更に他のメモリデバイスを接続可能である。ＲＡＭ１０４は、ＣＰＵ１０１が実行するプログラム、また各種の制御ソフト、またそのデータを保存するの使用される。
【００１７】
サブ制御部１０６は、画像処理、及びプリンタ、スキャナとの間で画像データを送受信し、ＣＰＵ１０１ともデータを送受信する。ＣＰＵ１０１とサブ制御部１０６は、高速シリアルバス１０７を介して接続されており、高速にデータの送受信を行うことができる。高速シリアルバス１０７には、ＰＣＩＥｘｐｒｅｓｓなどのバスがあるが、その他にもＥｔｈｅｒｎｅｔ（登録商標）などのインターフェスを用いてもよい。高速シリアルバスＩ／Ｆ（インタフェース）１１３は、高速シリアルバス１０７とサブ制御部１０６の内部バスを接続するためのインターフェス回路である。
【００１８】
ＣＰＵ１０８は、サブ制御部１０６に内蔵された第２のＣＰＵ（サブＣＰＵ）であり、サブ制御部１０６の各部の制御を行う。ＲＡＭ１０９は、サブ制御部１０６に接続されたメモリデバイスであり、メモリＩ／Ｆ１１０を介して、ＣＰＵ１０８を動作させるためのプログラム、及び画像処理を行う画像データなどを記憶する。ＳＰＩインターフェース１１１は、ＣＰＵ１０１に接続されている不揮発メモリ１０２へ、ＣＰＵ１０８がリード、ライト動作をするために使用され、後述するＣＰＵ１０８が改ざん検知プログラムによって不揮発メモリ１０２に記憶されているデータが改ざんされていないかを検証する際に用いられる。画像処理部１１２は、画像処理を行うための処理回路で、ＲＡＭ１０９に記憶されている画像データを読み出し、圧縮、または拡大、縮小などの画像処理を行った上で画像処理を施したデータを再びＲＡＭ１０９へ書き戻すことができる。プリンタＩ／Ｆ１１４は、情報処理装置を不図示のプリンタにインターフェース１１５を介して接続し、ＲＡＭ１０９に記憶された画像処理データを出力して印刷させる。またスキャナＩ／Ｆ１１６は、不図示のスキャナにインターフェース１１７を介して接続し、スキャナからのデータをＲＡＭ１０９へ転送する。不揮発メモリ１２３は、ＣＰＵ１０８が起動するためのプログラムを記憶しているメモリで、この不揮発メモリ１２３には、ＣＰＵ１０８が起動した後に動作し、不揮発メモリ１０２の改ざん検知を行うためのプログラムも記憶されている。
【００１９】
リセットベクタ制御部１２７は、ＣＰＵ１０８のリセットベクタの設定を行う。このリセットベクタ制御部１２７への設定は、サブ制御部１０６の内部バス経由で設定され、ＣＰＵ１０８が不揮発メモリ１２３のプログラムを実行して起動するか、またＲＡＭ１０９に展開された別の起動プログラムから起動するかを設定することが可能である。ＣＰＵ１０８のリセットベクタを変更する方法は、例えばＣＰＵ１０８のアドレスバスの上位ビットを、リセットベクタ制御部１２７からの信号で変更する方法などが考えられる。
【００２０】
ＯＲ回路１２４は、ＣＰＵ１０８に対するリセット信号１２６を生成する回路で、後述するリセット制御部１１８、或いは、ＣＰＵ１０１からのリセット信号１２５のどちらかがリセット状態を示した場合にＣＰＵ１０８をリセットする。
【００２１】
リセット制御部１１８は、ＣＰＵ１０１又はＣＰＵ１０８をＯＲ回路１２４を介してリセットするためのリセット信号を生成する。リセット制御部１１８は、フラッシュメモリ（登録商標）１１９、電圧監視回路１２０、外部からリセットを制御可能にするための外部インターフェスであるＩ２Ｃインターフェス１２９を内蔵している。更に、リセット信号を生成し、リセットのオン又はオフを制御するハードシーケンサ１３１を内蔵している。フラッシュメモリ１１９は、Ｉ２Ｃインターフェース１２９を介して、ＣＰＵ１０１からリード、ライト可能であり、内部の改ざん検知を実施するか否かを保持する不揮発性領域を有している。この不揮発性領域をハードシーケンサ１３１もリードすることが可能であり、改ざん検知の実施を示す情報に従って、ＣＰＵ１０１のリセット信号１２８を先にリセット解除するか、ＣＰＵ１０８に対するリセット信号１２１を用いてＣＰＵ１０８のリセットを解除するかを制御することが可能である。電圧監視回路１２０は、情報処理装置内部の電源ＶＣＣを監視する。電源電圧が所定の閾値よりも高いことを検出した場合は、ハードシーケンサ１３１に対して電圧レベルが確定したことを通知する。これを検出したハードシーケンサ１３１は、所定の時間が経過した後、ＣＰＵ１０１又はＣＰＵ１０８へのリセットを解除する。Ｉ２Ｃインターフェース１２９は、フラッシュメモリ１１９へのリード、ライトだけでなく、ハードシーケンサ１３１へのライト動作も可能であり、ＣＰＵ１０１からの書き込み指示により、ハードシーケンサ１３１は、ＣＰＵ１０８の状態を再びリセット状態にできる。
【００２２】
図２は、実施形態１に係る情報処理装置において、セキュアブートを実行せずに起動するときの動作を説明するタイミングチャートである。
【００２３】
情報処理装置内部の電源電圧ＶＣＣが、予め定められている閾値よりも高くなると、リセット制御部１１８のハードシーケンサ１３１は、フラッシュメモリ１１９に設定されている情報を読み取り（Ｔ１：ブートモードリード）、その情報を基に、プログラムの改ざん検知を行うか否か判定する。ここで改ざん検知を行わない設定が記憶されている場合、タイミングＴ２で、ハードシーケンサ１３１はＣＰＵ１０１へのリセットを解除し、ＣＰＵ１０１はタイミングＴ３で、不揮発メモリ１０２に記憶されている起動プログラムをリードすることによって動作を開始する。
【００２４】
次にＣＰＵ１０１はタイミングＴ４で、ＣＰＵ１０８を動作させるための起動プログラムも不揮発メモリ１０２から読み出し、高速シリアルバス１０７を介して、サブ制御部１０６に接続されたＲＡＭ１０９に、そのプログラムを書き込む。そしてＣＰＵ１０８の起動プログラムをＲＡＭ１０９へ書き込んだ後、タイミングＴ５で、リセットベクタ制御部１２７に対して高速シリアルインターフェース１０７を介して設定を行い、ＣＰＵ１０８がＲＡＭ１０９から起動できるように変更を行う。そしてタイミングＴ６で、ＣＰＵ１０１がリセット制御部１１８に対してＩ２Ｃインターフェース１２９を介してＣＰＵ１０８のリセットを解除するように設定する。こうしてタイミングＴ７で、ＣＰＵ１０８のリセットを解除することで、ＣＰＵ１０８がＲＡＭ１０９のプログラムを実行して起動することができる。
【００２５】
図３は、実施形態１に係る情報処理装置において、セキュアブートを実行せずに起動するときのＣＰＵ１０１及びＣＰＵ１０８の処理を説明するフローチャートである。
【００２６】
ＣＰＵ１０１は、情報処理装置の電源電圧ＶＣＣが閾値より高くなることにより、リセット制御部１１８からのリセット信号が解除されて起動する。まずＳ３０１でＣＰＵ１０１は、不揮発メモリ１０２のプログラムを実行して起動を開始する。このときＣＰＵ１０１は、不揮発メモリ１０２の動作プログラムに従って各部の初期化などを行う。そしてＳ３０２に進みＣＰＵ１０１は、不揮発メモリ１０２からＣＰＵ１０８を起動するためのブートコードを読み出し、そのブートコードをＲＡＭ１０９に書き込む。次にＳ３０３に進みＣＰＵ１０１は、リセットベクタ制御部１２７に対して設定を行い、ＣＰＵ１０８がＲＡＭ１０９のブートプログラムを実行してブートできるように設定を変更する。そしてＳ３０４に進みＣＰＵ１０１は、リセット制御部１１８のＩ２ＣＩ／Ｆ１２９を介してハードシーケンサ１３１へ書き込みを行うことで、ＣＰＵ１０８へのリセット信号１２１をリセット状態にしてＣＰＵ１０８をリセット状態する。そして所定の時間の経過を待ってＳ３０５に進み、リセット信号１２１をオフ、即ち、ＣＰＵ１０８のリセット解除状態にする。これによりＣＰＵ１０８により処理が開始され、Ｓ３０６でＣＰＵ１０８は、リセットベクタ制御部１２７の設定に従って、ＲＡＭ１０９に記憶されているブートプログラムを実行して起動する。これにより、情報処理装置としての起動が完了する。
【００２７】
以上説明したように、改ざん検知を実施しない場合は、ＣＰＵ１０１が直ちに起動を開始できるように、ＣＰＵ１０８のリセット信号を制御して起動時間を高速化することが可能となる。
【００２８】
図４（Ａ）は、実施形態１に係る情報処理装置において、改ざんの有無の検証を実施するか否かを設定する処理を説明するフローチャートである。
【００２９】
ＣＰＵ１０１は、操作部１４０からの指示に従って、情報処理装置の起動時に、プログラムの改ざん検知を行うかどうかを設定することができる。ＣＰＵ１０１は、操作部１４０を介してユーザからこの指示を受け付けるとＳ４０１に進み、Ｉ２Ｃバス１２８を経由してリセット制御部１１８のＩ２ＣＩ／Ｆ１２９を経由してフラッシュメモリ１１９に設定値を書き込む。即ち、フラッシュメモリ１１９に改ざん検知を実施するか否かの設定値を書き込む。次にＳ４０２に進みＣＰＵ１０１は、フラッシュメモリ１１９に書き込んだ設定値に従って、改ざん検知の実施の有無を反映した状態でリブート処理を実行して、情報処理装置を起動することができる。
【００３０】
図４（Ｂ）は、図４の処理を実行する際に操作部１４０に表示される画面例を示す図である。
【００３１】
この画面は、実施形態１に係る情報処理装置の起動時の設定を、ユーザに設定させるための画面例を示す。ここでは、プログラムの改ざんの有無を検証せずにを起動するように設定するかどうかの質問と、プログラムの改ざんの有無を検証せずにを起動する場合の利点と問題点が表示されている。ここでユーザがはいボタン４１０を選択すると、ＣＰＵ１０１は、フラッシュメモリ１１９に改ざん検知を実施しない設定を書き込み、いいえボタン４１１を選択すると、ＣＰＵ１０１は、フラッシュメモリ１１９に改ざん検知を実施する設定を書き込む。
【００３２】
図５は、実施形態１に係る情報処理装置において、セキュアブートを実行するときのＣＰＵ１０１及びＣＰＵ１０８の動作を説明するタイミングチャートである。
【００３３】
情報処理装置内部の電源電圧ＶＣＣが予め定められている閾値よりも高くなるとタイミングＴ１で、リセット制御部１１８内部のハードシーケンサ１３１は、フラッシュメモリ１１９に設定されている前述の設定情報を読み取り、改ざん検知を行うか否かをブートモードとしてリードする。ここで改ざん検知を行う設定が記憶されている場合は、ハードシーケンサ１３１は、まずタイミングＴ２でＣＰＵ１０８のリセットを解除し、ＣＰＵ１０８は不揮発メモリ１２３のプログラムを実行して起動する。この不揮発メモリ１２３には、ＣＰＵ１０８により実行される改ざん検知のためのプログラムが保存されており、このプログラムに従ってＣＰＵ１０８は不揮発メモリ１０２のプログラムをＳＰＩインターフェース１１１を介して読み出し、不揮発メモリ１０２に記憶されている起動用プログラムの改ざんの有無を検証する。このときＣＰＵ１０８は、まず始めに、不揮発メモリ１０２に格納されている暗号化されている署名データをリードしてＲＡＭ１０９へ格納する。次に、不揮発メモリ１２３に格納されている公開鍵を使用して、そのＲＡＭ１０９に記憶した暗号化された署名データをデコードする。そして、デコードした署名データと、不揮発メモリ１２３に予め格納されている署名データとを比較することにより、起動用プログラムが改ざんされているか否かを検証する。
【００３４】
ここで改ざんが検知されなかったと確認した場合はＣＰＵ１０１を起動してもよいと判定し、タイミングＴ３で、ＣＰＵ１０１へのリセット信号を解除する。一方、改ざんが検知された場合は、ここで動作を停止する。
【００３５】
こうしてＣＰＵ１０１のリセットが解除されるとＣＰＵ１０１はタイミングＴ４で、不揮発メモリ１０２から起動プログラムをリードすることによって動作を開始する。ＣＰＵ１０１は次にタイミングＴ５で、ＣＰＵ１０８を動作させるための起動プログラムも不揮発メモリ１０２から読み出し、高速シリアルインターフェースのバス１０７を介して、サブ制御部１０６に接続されたＲＡＭ１０９へ書き込む。こうしてＣＰＵ１０８の起動プログラムをＲＡＭ１０９へ書き込んだ後タイミングＴ６で、リセットベクタ制御部１２７に対して高速シリアルインターフェース１０７を介して設定を行い、ＣＰＵ１０８がＲＡＭ１０９から起動できるように変更を行う。更にタイミングＴ７で、ＣＰＵ１０１がリセット制御部１１８に対してＩ２Ｃインターフェース１２９を介して設定することにより、ＣＰＵ１０８のリセットを解除することで、タイミングＴ８で、ＣＰＵ１０８がＲＡＭ１０９のプログラム実行して起動する。
【００３６】
図６は、実施形態１に係る情報処理装置において、セキュアブートを実行して起動するときのＣＰＵ１０１及びＣＰＵ１０８の処理を説明するフローチャートである。
【００３７】
情報処理装置の電源がオンされた後、ハードシーケンサ１３１はＣＰＵ１０８から起動させるため、リセット信号１２１を制御してＣＰＵ１０８のリセットを解除する。これによりＣＰＵ１０８の動作が開始される。まずＳ６０１でＣＰＵ１０８は不揮発メモリ１２３のプログラム実行して起動する。前記したように不揮発メモリ１２３には改ざん検知のプログラムが格納されており、ＣＰＵ１０８はＳ６０２で、この不揮発メモリ１２３に記憶されている改ざん検知プログラムに従って、ＣＰＵ１０１の起動プログラムが格納されている不揮発メモリ１０２の改ざんの有無の検証を行う。次にＳ６０３に進みＣＰＵ１０８は、改ざんが検出された場合は、そこで処理を終了し、情報処理装置は安全に起動することができないと判定して動作を停止する。
【００３８】
一方、起動プログラムの改ざんがないと判定した場合はＳ６０４に進み、ＣＰＵ１０１のリセットを解除する。そしてＣＰＵ１０８は、改ざん検知の動作としては一旦動作を停止して待機する。ＣＰＵ１０１に対するリセットの解除は、Ｉ２Ｃインターフェース１３０を介して、リセット制御部１１８のＩ２Ｃのインターフェース１２９経由でハードシーケンサ１３１に通知され、ハードシーケンサ１３１からＣＰＵ１０１へのリセット信号が解除される。この後のＣＰＵ１０１の処理は、前述の図３のＳ３０１〜Ｓ３０５と同じである。
【００３９】
ＣＰＵ１０１は、ＣＰＵ１０８によってリセットが解除されるとＳ３０１で、不揮発メモリ１０２の起動プログラムを実行して起動を開始する。次にＳ６３０２に進みＣＰＵ１０１は、不揮発メモリ１０２からＣＰＵ１０８を起動するためのブートコードを読み出し、そのブートコードをＲＡＭ１０９に書き込む。次にＳ３０３に進みＣＰＵ１０１は、リセットベクタ制御部１２７に対して設定を行い、ＣＰＵ１０８がＲＡＭ１０９のプログラムを実行してブートできるように設定を変更する。次にＳ３０４に進みＣＰＵ１０１は、ＣＰＵ１０８に対してリセット制御部１１８のＩ２ＣＩ／Ｆ１２９を介してハードシーケンサ１３１へ書き込みを行うことで、ＣＰＵ１０８へのリセット信号１２１を３０４へリセット状態にしてＣＰＵ１０８をリセットする。そして所定の時間の経過を待ってＳ３０５に進み、リセット信号１２１をリセット解除状態、即ちオフにする。これによりＳ３０６でＣＰＵ１０８は、リセット状態を解除され、ＲＡＭ１０９のプログラムを実行して起動する。これにより、情報処理装置として起動することが可能となる。
【００４０】
以上説明したように実施形態１によれば、改ざん検知を実施した場合、ＣＰＵ１０８がＣＰＵ１０１の起動プログラムの改ざんの有無を検証した後、ＣＰＵ１０１を起動することにより、安全に情報処理装置を起動することができる。
【００４１】
このように起動プログラムの改ざんの有無を検証を行う場合、確実かつ安全に装置を起動することができる。また起動プログラムの改ざんの有無を検証する際、起動するＣＰＵの順番を変更することで起動時間を短縮することができる。
【００４２】
［実施形態２］
上述の実施形態１では、起動プログラムの改ざんの有無を検証するか否かで、起動するＣＰＵの順序を変更する例で説明した。またこの時、起動プログラムの改ざんの有無を検証するプログラムを実装したＣＰＵ１０８に対して、ＣＰＵ１０１が新しい起動プログラムをＲＡＭに書き込み、リセットベクタを変更した後、ＣＰＵ１０８に対してリセット、リセット解除を行って、そのプログラムをＣＰＵ１０８で実行する例で説明した。
【００４３】
しかし、ＣＰＵ１０８が起動プログラムの改ざんの有無を検証した後、ＣＰＵ１０８をリセットをせずに、別のプログラムを実行するようにしても良い。よって、本発明の実施形態２では、ＣＰＵ１０８を再びリセットせずに別の処理プログラムを実行する例で説明する。尚、実施形態２に係る情報処理装置のハードウェア構成において、前述の実施形態１と共通する部分は同じ参照番号で示し、それらの説明を省略する。
【００４４】
図７は、実施形態２に係る情報処理装置の構成を説明するブロック図である。図１の構成との相違点は、割り込みコントローラ７０１を設けた点である。
【００４５】
割り込みコントローラ７０１はサブ制御部１０６に内蔵され、内蔵のバスに接続されている。ＣＰＵ１０８は、バスを介して割り込みコントローラ７０１の内部レジスタに値を設定することにより、割り込みコントローラ７０１からＣＰＵ１０８に対して割り込みを通知するように設定できる。またＣＰＵ１０８からバスを介して、割り込みコントローラ７０１の別のレジスタに書き込みを行うことによって、割り込みのマスク、または割り込みをクリアすることができる。
【００４６】
図８は、実施形態２に係る情報処理装置において、セキュアブートを実行するときのＣＰＵ１０１及びＣＰＵ１０８の動作を説明するタイミングチャートである。
【００４７】
情報処理装置内部の電源電圧ＶＣＣが予め定められている閾値よりも高くなった場合、リセット制御部１１８のハードシーケンサ１３１は、タイミングＴ１でフラッシュメモリ１１９の情報を読み取り、改ざんの有無の検証を行うか否かをＢｏｏｔＭｏｄｅとしてリードする。そしてタイミングＴ２で、ＣＰＵ１０８のリセットが解除されるとＣＰＵ１０８が、不揮発メモリ１０２に記憶されている起動プログラムの改ざんの有無を検証する。その後、タイミングＴ３〜Ｔ５で、ＣＰＵ１０１のリセットを解除するまでの動作は、前述の実施形態１の図５と同じである。
【００４８】
ＣＰＵ１０８はタイミングＴ３でＣＰＵ１０１のリセットを解除した後、不揮発メモリ１２３のプログラムに従って、割り込みコントローラ７０１から割り込みを受信するまでタイミングＴ７で待機状態に移行している。
【００４９】
一方、リセットが解除されたＣＰＵ１０１はタイミングＴ４で、不揮発メモリ１０２から起動プログラムを読み出して実行する。そして次にタイミングＴ５で、ＣＰＵ１０８を動作させるための起動プログラムも不揮発メモリ１０２から読み出し、高速シリアルインターフェースのバス１０７を介して、サブ制御部１０６に接続されたＲＡＭ１０９へ書き込む。続いてＣＰＵ１０１はタイミングＴ６で、高速シリアルインターフェース１０７を介して、サブ制御部１０６に内蔵された割り込みコントローラ７０１へ書き込み動作を行うことによりＣＰＵ１０８に対して割り込み通知を行う。
【００５０】
この割り込み通知を受信したＣＰＵ１０８は、不揮発メモリ１２３に予め記憶されている、割り込み受信後に読み出すプログラム（別のプログラム）の先頭番地を参照し、ＣＰＵ１０１がＲＡＭ１０９へ書き込んだプログラム（別のプログラム）を読み出して実行する。これにより、そのプログラムに従った動作を実行することが可能になる。
【００５１】
図９は、実施形態２に係る情報処理装置において、セキュアブートを実行して起動するときのＣＰＵ１０１及びＣＰＵ１０８の処理を説明するフローチャートである。尚、前述の実施形態１の図３及び図６と共通する処理は、同じ参照番号を付して、その説明を省略する。
【００５２】
情報処理装置の電源がオンされた後、ＣＰＵ１０８がＳ６０１から６０３の処理で不揮発メモリ１０２の改ざんの有無を検証した後、ＣＰＵ１０１のリセットを解除するまでの動作は実施形態１と同じである。
【００５３】
リセットが解除されたＣＰＵ１０１が不揮発メモリ１０２のプログラム実行して起動し、ＣＰＵ１０８が実行する別プログラムをＲＡＭ１０９に書き込む処理も、実施形態１のＳ３０１〜Ｓ３０２と同じである。次にＣＰＵ１０１はＳ９０１で、高速シリアルインターフェース１０７を介して割り込みコントローラ７０１へ書き込みを行い、ＣＰＵ１０８に対して割り込みを発生させる。
【００５４】
この割り込みを受信したＣＰＵ１０８はＳ９０２で、待機状態から復帰し、ＣＰＵ１０１がＲＡＭ１０９に書き込んでおいたプログラムの先頭番地を参照し、そのプログラムを実行するように動作する。
【００５５】
以上説明したように実施形態２によれば、ＣＰＵ１０８がプログラムの改ざんの有無を検証した後、待機状態に移行し、ＣＰＵ１０１からの割込みにより、ＣＰＵ１０１がメモリにロードしたプログラムを実行することができる。これにより、ＣＰＵのリセット制御を行うための回路構成を簡略することが可能になる。
【００５６】
［実施形態３］
上述した起動プログラムの改ざんの有無を検証する処理は、図４を参照して説明したように、ユーザは、その処理を実行するか否か設定できる。この処理を実行しないように設定すると、情報処理装置の起動は早くなるが、ユーザがその処理が実行さないように設定したままにすると、万が一プログラムが改竄された場合は装置が起動できず、また他の不具合の発生も予想される。
【００５７】
そこで、プログラムの改ざんの有無を検証する処理を実行しないように設定されている場合は、操作部１４０の表示部の隅に警告マークを表示して、プログラムの改ざんの有無を検証する処理が実行されない設定であることをユーザに通知するようにしても良い。
【００５８】
プログラムの改ざんの有無を検証する処理を実行しない設定で、連続して起動された回数を計数し、その計数値が所定値以上になったときは、ユーザに警告するようにしても良い。尚、この場合の係数値は、フラッシュメモリ１１９にカウンタを設け、そのカウンタを、プログラムの改ざんの有無を検証する処理を実行しない設定で起動される度に＋１する。そして、プログラムの改ざんの有無を検証する処理を実行する設定で起動されると、そのカウンタをクリアすることで実現できる。
【００５９】
また或いは、その計数値が所定値以上になったときは、自動的に、プログラムの改ざんの有無を検証する処理を実行するように、フラッシュメモリ１１９の設定を変更してもよい。
【００６０】
また或いは、タイマを設け、プログラムの改ざんの有無を検証する処理を実行しないように設定されている連続経過時間をタイマにより計時し、その経過時間が所定時間を超えると、ユーザに警告するようにしても良い。
【００６１】
また或いは、その経過時間が所定時間を超えたときは、自動的に、プログラムの改ざんの有無を検証する処理を実行するように、フラッシュメモリ１１９の設定を変更してもよい。
【００６２】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００６３】
本発明は上記実施形態に制限されるものではなく、本発明の精神及び範囲から逸脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【００６４】
１０１…ＣＰＵ１、１０２…不揮発メモリ、１０８…ＣＰＵ２、１０９…ＲＡＭ、１１８…リセット制御部、１１９…フラッシュメモリ、１２３…不揮発メモリ、１３１…ハードシーケンサ、１２７…リセットベクタ制御部、７０１…割込みコントローラ
【図１】
2020155029.tif 000003
【図２】
2020155029.tif 000004
【図３】
2020155029.tif 000005
【図４】
2020155029.tif 000006
【図５】
2020155029.tif 000007
【図６】
2020155029.tif 000008
【図７】
2020155029.tif 000009
【図８】
2020155029.tif 000010
【図９】
2020155029.tif 000011