(57)【要約】【課題】  ユーザの利便性を損なうことなく、ブートコードの異常な変化に対する耐性を向上させること。【解決手段】  情報処理装置は、複数のブートコードを格納する格納手段と、格納手段に格納された複数のブートコードのいずれかが正常であるか否かを判定する検証手段と、複数のブートコードを更新する更新手段と、を備え、検証手段は第１のブートコードが正常であるか否かを判定し、検証手段が第１のブートコードは正常であると判定した場合に、制御手段が第１のブートコードを実行させ、検証手段は第２のブートコードが正常であるか否かを判定する。【選択図】  図１
2020135645.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
複数のブートコードを格納する格納手段と、
前記格納手段に格納された前記複数のブートコードのいずれかが正常であるか否かを判定する検証手段と、
前記複数のブートコードを更新する更新手段と、
を備え、
前記検証手段は第１のブートコードが正常であるか否かを判定し、
前記検証手段が前記第１のブートコードは正常であると判定した場合に、制御手段が前記第１のブートコードを実行させ、前記検証手段は第２のブートコードが正常であるか否かを判定することを特徴とする情報処理装置。
【請求項２】
前記検証手段が前記第１のブートコードは正常ではないと判定した場合に、前記検証手段は前記第２のブートコードが正常であるか否かを判定し、
前記検証手段が前記第２のブートコードは正常であると判定した場合に、前記更新手段は前記第２のブートコードで前記第１のブートコードを上書きする更新処理を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記検証手段が前記第２のブートコードは正常ではないと判定した場合に、前記更新手段は前記第１のブートコードで前記第２のブートコードを上書きする更新処理を実行することを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記更新手段が前記更新処理を実行したあとに、前記制御手段が前記第１のブートコードを実行させることを特徴とする請求項２に記載の情報処理装置。
【請求項５】
前記制御手段が前記第２のブートコードを実行させた後に、前記更新手段が前記更新処理を実行することを特徴とする請求項２に記載の情報処理装置。
【請求項６】
前記格納手段はアクセス権を設定可能であり、前記検証手段および前記更新手段のいずれかは、前記アクセス権を取得してから処理を実行することを特徴とする請求項１ないし５のいずれか１項に記載の情報処理装置。
【請求項７】
前記検証手段が前記複数のブートコードのいずれもが正常ではないと判定した場合に、起動処理の失敗を通知する通知手段をさらに備えることを特徴とする請求項１ないし６のいずれか１項に記載の情報処理装置。
【請求項８】
前記格納手段は、１または複数の不揮発性メモリを含むことを特徴とする請求項１ないし７のいずれか１項に記載の情報処理装置。
【請求項９】
複数のブートコードを格納する第１の格納部を備える情報処理装置の制御方法であって、
前記第１の格納部に格納された第１のブートコードが正常であるか否かを判定する第１の判定工程と、
前記第１の判定工程において、前記第１のブートコードが正常であると判定した場合に、前記第１のブートコードを実行させた後に、第２のブートコードが正常であるか否かを判定する第２の判定工程と、
を有することを特徴とする制御方法。
【請求項１０】
請求項１乃至８の何れか一項に記載の情報処理装置としてコンピュータを動作させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、その制御方法およびプログラムに関する。
【背景技術】
【０００２】
システム起動用プログラム（ブートコード）の格納場所として不揮発メモリが広く用いられているが、この不揮発性メモリの内容が意図せず変化する場合がある。ブートコードの意図しない変化の原因のひとつとして、不揮発メモリの物理的な欠陥からくる経年劣化による電荷抜けによるビットの変化が挙げられる。また別の原因として、悪意ある攻撃者による電子的な攻撃によるブートコードの書き換え（改ざん）が挙げられる。このようなブートコードの変化が発生すると、システムの起動に失敗したり、攻撃者により書き換えられたプログラムによって情報の漏洩などの意図しない動作をする場合がある。
【０００３】
このような場合を避け、正常なブートコードを動作させるために、電源投入時（起動時）にブートコードの変化の有無を検証する技術がある。例えば特許文献１では、不揮発メモリにブートコードを複数格納し、起動時に当該ブートコードの変化の有無を検証し、変化を検出した場合にはバックアップ用不揮発メモリからブートコードを復元するような技術が提案されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２６６５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、第１のブートコードが正常である間は第２のブートコードが変化したとしてもそれを検出することができない。そのため、第２のブートコードが変化した後に第１のブートコードが変化した場合には、エラー出力して動作を停止するしかなかった。
【０００６】
また起動時に第１のブートコードと第２のブートコードの両方に対して変化の有無を検証すると、ブートコードを実行し、システムが動作するまでの時間が長くなり、ユーザの利便性が低下する。
【０００７】
本発明の目的は、上述の課題に鑑みてなされたものであり、ユーザの利便性を損なうことなく、ブートコードの異常な変化に対する耐性を向上させることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一態様によると、情報処理装置は、複数のブートコードを格納する格納手段と、前記格納手段に格納された前記複数のブートコードのいずれかが正常であるか否かを判定する検証手段と、前記複数のブートコードを更新する更新手段と、を備え、前記検証手段は第１のブートコードが正常であるか否かを判定し、前記検証手段が前記第１のブートコードは正常であると判定した場合に、制御手段が前記第１のブートコードを実行させ、前記検証手段は第２のブートコードが正常であるか否かを判定することを特徴とする。
【発明の効果】
【０００９】
本発明によると、ユーザの利便性を損なうことなく、ブートコードの異常な変化に対する耐性を向上させることができる。
【図面の簡単な説明】
【００１０】
【図１】複合機のハードウェア構成図。
【図２】複合機の機能構成図。
【図３】第１の実施形態の処理を示すフローチャート。
【図４】第２の実施形態の処理を示すフローチャート。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して本発明の実施形態を詳しく説明する。尚、以下の実施形態は特許請求の範囲に係る本発明を限定するものでなく、また本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、実施形態に係る情報処理装置として複合機（デジタル複合機／ＭＦＰ／Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）を例に説明する。しかしながら適用範囲は複合機に限定はせず、情報処理装置であればよい。
【００１２】
＜第１実施形態＞
図１は本実施形態に係る複合機（ＭＦＰ）１００を説明するブロック図である。ＭＦＰ１００は、構成要素として、ＣＰＵ１０１、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０２、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０３、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０４を含む。また、ＭＦＰ１００は、構成要素として、ネットワークインタフェース（Ｉ／Ｆ）制御部１０５、スキャナＩ／Ｆ制御部１０６、プリンタＩ／Ｆ制御部１０７、パネル制御部１０８、Ｅｍｂｅｄｄｅｄ  Ｃｏｎｔｒｏｌｌｅｒ（ＥＣ）１１３を含む。また、ＭＦＰ１００は、構成要素として、フラッシュメモリ１１４、ＬＥＤ１１７を含む。これらの構成要素は、バス１０９を介して相互に通信可能に接続され、ＣＰＵ１０１からの制御信号や各構成要素間のデータ信号を送受信する。
【００１３】
ＣＰＵ１０１は、ＭＦＰ１００のソフトウェアプログラムを実行し、ＭＦＰ全体の制御を行う。ＲＯＭ１０２は、ＭＦＰ１００の周辺機器を制御するためのソフトウェアであるＢＩＯＳや、当該ソフトウェアによって使用される固定パラメータ等を格納している。ＲＡＭ１０３は、ＣＰＵ１０１がＭＦＰ１００を制御する際に、プログラムのロード場所としてだけでなく、プログラムが動作するためのワークエリアなどとしても動作する。
【００１４】
フラッシュメモリ１１４はブートローダー、カーネル、および一部のアプリケーションを格納する格納部として機能する不揮発性メモリである。本実施形態では、フラッシュメモリ１１４に格納されるブートローダー、カーネル、および一部のアプリケーションをブートコードと称する。ＨＤＤ１０４は、ブートコードの実行後に実行される一部のアプリケーションや、各種データを格納する格納部として機能する。ＣＰＵ１１５はＥＣ１１３のソフトウェアプログラムを実行し、ＭＦＰ１００の一部の制御を行う。ＲＡＭ１１６はランダムアクセスメモリで、ＣＰＵ１１５がＭＦＰ１００を制御する際に、プログラムや一時的なデータの格納などに使用される。ＲＯＭ１１８は、ＣＰＵ１１５が動作開始したときに最初に読み出されるプログラムを格納している。
【００１５】
ネットワークＩ／Ｆ制御部１０５は、ネットワーク１２０を介して外部装置とのデータの送受信を制御する。スキャナＩ／Ｆ制御部１０６は、スキャナ１１１に接続され、スキャナ１１１の原稿の読み取り処理などを制御する。プリンタＩ／Ｆ制御部１０７は、プリンタ１１２に接続され、プリンタ１１２の印刷処理などを制御する。パネル制御部１０８は、タッチパネル式の操作パネル１１０に接続され、操作パネル１１０を介した各種情報の出力やユーザ操作の入力を制御する。ＬＥＤ１１７はＣＰＵ１０１によって制御され、必要に応じて点灯することでソフトウェアやハードウェアの異常を外部に伝えることができる。
【００１６】
次に図２（ａ）を参照して本実施形態に係るＭＦＰ１００が有する機能ブロックを説明する。
【００１７】
フラッシュメモリ１１４にはブートコード２０１と、ブートコード２０２が格納されている。ＥＣ１１３の内部には、更新部２０４、検証部２０５およびリセット制御部２０６が含まれている。
【００１８】
図１においてフラッシュメモリ１１４とＥＣ１１３は共通のバス１０９によって接続されているよう示している。しかしながら、ＥＣ１１３がフラッシュメモリ１１４のデータを読み書きするために、ＥＣ１１３とフラッシュメモリ１１４とを直接接続するために、バス１０９とは異なるバスを設け、それを用いても良い。
【００１９】
更新部２０４は、ブートコード２０１および２０２の更新処理を行う。検証部２０５は、ブートコードが意図せず変化したか否か、すなわちブートコードの正当性を検証する。正当性の検証には、一般的に広く用いられる公開鍵暗号方式を応用した電子署名技術を使用することを想定し、詳細な説明は割愛する。リセット制御部２０６は、ＭＦＰ制御部２０７のリセット状態を制御する。リセット制御部２０６の初期状態はリセット状態であるものとする。
【００２０】
例えば、リセット制御部２０６は起動状態に遷移することで、ＭＦＰ制御部２０７に起動指示信号を送信し、ＭＦＰ制御部２０７がブートコードを実行するように指示する。
【００２１】
ＭＦＰ制御部２０７は、ＭＦＰ１００からフラッシュメモリ１１４およびＥＣ１１３を除いたもの全体に相当する。前述したように、リセット制御部２０６の初期状態がリセット状態であるため、電源が供給開始されてもＭＦＰ制御部２０７は動作を開始しない。
【００２２】
図２（ｂ）は、フラッシュメモリ１１４に格納されているブートコードの論理的な構成を示した図である。
【００２３】
前述の通り公開鍵暗号方式を応用した電子署名技術を用いてブートコードの異常な変化を検出するため、ブートコードは、プログラム本体（実行コード）だけでなく、付加情報として署名データ２１２および公開鍵２１３も含む。実行コード２１１は、ＣＰＵが実行するプログラム本体である。署名データ２１２および公開鍵２１３は、実行コード２１１の正当性を検証するために必要となる付加情報である。
【００２４】
次に、図３（ａ)〜図３（ｃ）を参照して、本実施形態に係るＭＦＰ１００の電源が投入された場合にＥＣ１１３が実行する処理の一例を示すフローチャートを説明する。本処理は、ソフトウェアとしてＲＯＭ１１８に格納されており、ＣＰＵ１１５が実行することで実現される。
【００２５】
まず、Ｓ３０１で、ＣＰＵ１１５は、ブートコード２０１（ｂｏｏｔ１）の正当性を検証する。上述したように、本実施形態では公開鍵暗号方式を応用した電子署名技術を用いて確認を行うため、詳細な説明は割愛する。
【００２６】
続いて、ＣＰＵ１１５は処理をＳ３０２に進め、Ｓ３０１におけるブートコード２０１の正当性の検証結果が、正当である（正常）か正当ではない（異常）かを判定する。ＣＰＵ１１５がブートコード２０１の正当性の検証結果が正常であると判定した場合（Ｓ３０２で正常）、ＣＰＵ１１５は処理をＳ３０３に進める。正当性の検証結果が異常であると判定した場合（Ｓ３０２で異常）、ＣＰＵ１１５は処理をＳ３０５に進める。
【００２７】
Ｓ３０３で、リセット制御部２０６はＭＦＰ制御部２０７のリセット状態の解除を行い、ブートコードの実行を指示する。リセットの解除が行われると、ＭＦＰ制御部２０７がブートコード２０１を読み出して動作を開始し、処理をＳ３０４に進める。続いて、Ｓ３０４でＣＰＵ１１５は、図３（ｂ）を参照して後述する冗長性確認処理を実行し、図３（ａ）の処理を終了する。
【００２８】
Ｓ３０５では、ＣＰＵ１１５は、図３（ｃ）を参照して後述する異常処理を実行し、図３（ａ）の処理を終了する。
【００２９】
図３（ｂ）はブートコード２０１が異常であると判定された場合にＣＰＵ１１５が実行する処理の詳細を説明するフローチャートである。本処理は、ソフトウェアとしてＲＯＭ１１８に格納されており、ＣＰＵ１１５が実行することで実現される。
【００３０】
まず、ＣＰＵ１１５はＳ３１１で、ブートコード２０２（ｂｏｏｔ２）の正当性を検証する。上述したように、本実施形態では公開鍵暗号方式を応用した電子署名技術を用いて確認を行うため、詳細な説明は割愛する。
【００３１】
続いて、ＣＰＵ１１５は処理をＳ３１２に進め、Ｓ３１１におけるブートコード２０２の正当性の検証結果が、正当である（正常）か正当ではない（異常）かを判定する。ＣＰＵ１１５がブートコード２０２の正当性の検証結果が正常であると判定した場合（Ｓ３１２で正常）、ＣＰＵ１１５は処理をＳ３１３に進める。正当性の検証結果が異常であると判定した場合（Ｓ３１２で異常）、ＣＰＵ１１５は処理をＳ３１５に進める。
【００３２】
Ｓ３１３で、更新部２０４はブートコード２０２の内容で、ブートコード２０１の内容を上書きするように更新処理を行う。続いて、ＣＰＵ１１５は処理をＳ３１４に進め、リセット制御部２０６はＭＦＰ制御部２０７のリセット状態の解除を行い、ブートコードの実行を指示する。ＭＦＰ制御部２０７は、指示を受けてブートコード２０１を読み出して動作を開始し、図３（ｂ）の処理を終了する。
【００３３】
Ｓ３１５では、ＣＰＵ１１５は両方のブートコードが異常であり、リセット状態の解除が行われないため、起動処理を停止し、図３（ｂ）の処理を終了する。なお、Ｓ３１５では、ＣＰＵ１１５はＬＥＤ１１７を点灯したり、操作パネル１１０にメッセージを表示するなどして、ＭＦＰ１００の起動処理が失敗したことをユーザに通知してもよい。
【００３４】
図３（ｃ）は、Ｓ３０４の冗長性確認処理を詳細に説明するためのフローチャートである。本処理は、ソフトウェアとしてＲＯＭ１１８に格納されており、ＣＰＵ１１５が実行することで実現される。
【００３５】
まず、Ｓ３２１で、ＣＰＵ１１５はブートコード２０２の正当性を検証する。上述したように、本実施形態では公開鍵暗号方式を応用した電子署名技術を用いて確認を行うため、詳細な説明は割愛する。
【００３６】
続いて、ＣＰＵ１１５は処理をＳ３２２に進め、Ｓ３２１におけるブートコード２０２の正当性の検証結果が、正当である（正常）か正当ではない（異常）かを判定する。ＣＰＵ１１５がブートコード２０２の正当性の検証結果が正常であると判定した場合（Ｓ３２２で正常）、ＣＰＵ１１５は図３（ｃ）の処理を終了する。正当性の検証結果が異常であると判定した場合（Ｓ３２２で異常）、ＣＰＵ１１５は処理をＳ３２３に進める。Ｓ３２３で、更新部２０４はブートコード２０１の内容で、ブートコード２０２の内容を上書きする更新処理を実行し、図３（ｃ）の処理を終了する。
【００３７】
以上説明したように、図３（ａ）〜図３（ｃ）の処理により、システム起動毎に複数ブートコードの正当性を検証し、一方のブートコードが正常で、他方が異常である場合には、正常なブートコードで異常なブートコードを上書きする。これによって、ブートコードの異常な変化に対する耐性を向上させることができる。
【００３８】
なお、上記の例では電源投入時にＥＣ１１３だけが動作を開始し、図３（ａ）〜図３（ｃ）に示す処理を行った後にＭＦＰ制御部２０７が動作を開始するものとして説明を行った。しかしながら、ＭＦＰ１００はＥＣ１１３を搭載せず、ＭＦＰ制御部２０７内のＣＰＵ１０１が図３（ａ）〜図３（ｃ）に示す処理を実行してもよい。この場合は、図３（ａ）〜図３（ｃ）に示す処理を実行するためのプログラムをＲＯＭ１０２に格納し、ＣＰＵ１０１が動作開始したときにこのプログラムを実行するように構成すればよい。
【００３９】
また、上記の例では同一のブートコードが２つである場合についての処理を説明したが、３つ以上の場合にも適用可能である。このような場合、Ｓ３０４では第２および第３のブートコードの冗長性を確認する。また、Ｓ３０５の異常処理では、第２のブートコードが異常である（Ｓ３１２で異常）場合に第３のブートコードの正当性を確認し、第３のブートコードが異常である場合に起動処理を停止する。このように構成することで、さらに耐性を向上させることが可能になる。
【００４０】
以上説明したように、複数あるブートコードのすべての正当性を検証することで、システム起動に用いる必要のないブートコードの異常な変化を検出することができる。また、何れかのブートコードの正当性が検証できた時点でシステムの起動処理を開始するため、システム起動時間が長くなることを防ぐことができ、ユーザの利便性を損なうことを避けることができる。
【００４１】
＜第２実施形態＞
第１実施形態では、Ｓ３０２でブートコード２０１が正常であると判定された場合に、Ｓ３０３でリセットの解除を行うことでＭＦＰ制御部２０７が動作を開始し、並行してＳ３０４において冗長性確認処理を行う。一例では、冗長性確認処理によってフラッシュメモリ１１４へのアクセスの競合が発生しないよう処理を遅延させてもよい。第２実施形態では、フラッシュメモリへのアクセスを確認し、アクセス可能であると判定した後に冗長性確認処理を実行するＭＦＰ１００の処理について説明する。なお、第１実施形態と同一若しくは同様の構成および処理については説明を省略する。
【００４２】
ＥＣ１１３内のＣＰＵ１１５と、ＭＦＰ制御部２０７内のＣＰＵ１０１が、同時にフラッシュメモリ１１４へアクセスを行うことがありえる。フラッシュメモリ１１４へアクセスを行う信号線は各ＣＰＵに対して共有している場合がほとんどであるため、フラッシュメモリ１１４へのアクセスが競合することがあり得る。そのため、本実施形態に係るフラッシュメモリ１１４は、アクセス権を設定可能であり、アクセスするＣＰＵ１１５またはＣＰＵ１０１は、後述するアクセス権の取得によって競合を避けて動作する。
【００４３】
図４は、本実施形態に係る冗長性確認処理を示すフローチャートであり、図３（ａ）のＳ３０４において実行される。
【００４４】
まず、ＣＰＵ１１５はＳ４０１で、ＣＰＵ１０１がフラッシュメモリ１１４へアクセス中であるかを確認する。一例では、フラッシュメモリ１１４はアクセス状態を示すフラグを有し、フラッシュメモリ１１４へのアクセス権限を取得したＣＰＵによってフラグをオンに設定され、当該ＣＰＵによるアクセス終了時にオフに設定される。フラッシュメモリ１１４へのアクセス権限を取得しようとするＣＰＵは、フラグを確認し、フラグがオンである場合にはアクセス権限を取得できないと判定し、オフである場合にはアクセス権限を取得できると判定する。
【００４５】
ＣＰＵ１１５は、ＣＰＵ１０１がフラッシュメモリ１１４へアクセス中であると判定した場合（Ｓ４０１でＹｅｓ）、処理をＳ４０１に戻す。ＣＰＵ１１５は、ＣＰＵ１０１がフラッシュメモリ１１４へアクセスしていないと判定した場合（Ｓ４０１でＮｏ）、処理をＳ３２１に進め、ブートコード２０２の正当性を確認する。以降のＳ３２１〜Ｓ３２３の処理は、図３（ｃ）を参照して説明した処理と同様であるため説明を省略する。
【００４６】
以上説明したように、図４の処理によってフラッシュメモリ１１４へのアクセスの競合を防止しながら冗長性確認処理を実行することができる。
【００４７】
＜その他の実施形態＞
ＣＰＵ１１５は、図３（ｂ）のＳ３１３の処理を待機させ、先にＳ３１４でブートコード２０１の代わりにブートコード２０２を読み出して動作を開始し、起動処理が終了した後に、Ｓ３１３の処理を実行してもよい。これによって、ＭＦＰ１００が起動したあとにブートコード２０１をブートコード２０２で上書きする処理を実行するため、システムが動作するまでの時間を短縮することができる。
【００４８】
また、本実施形態では、Ｓ３１３およびＳ３２３では、正常なブートコードで正常ではないブートコードを上書きするものとして説明を行った。しかしながら、一例では、Ｓ３１３およびＳ３２３で、正常なブートコードを複製し、新たに正常なブートコードを作成してもよい。これによって、不良セクタなどの修復不可能なエラーによってブートコードが正常ではなくなった場合であっても、複数の正常なブートコードを有しておくことができる。
【００４９】
上述の各実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５０】
１００：複合機、１１３：Ｅｍｂｅｄｄｅｄ Ｃｏｎｔｒｏｌｌｅｒ、１１４：フラッシュメモリ
【図１】
2020135645.tif 000003
【図２】
2020135645.tif 000004
【図３】
2020135645.tif 000005
【図４】
2020135645.tif 000006