(57)【要約】      （修正有）【課題】装置のメインＣＰＵとは異なる制御部で実行されるプログラムコードの安全性を検証し、装置のセキュアな起動を実現する仕組みを提供する。【解決手段】情報処理装置（ＭＦＰ）１は、プログラムコードにしたがって処理を実行するメインＣＰＵ１０１と、別の所定のプログラムコードにしたがって、メインＣＰＵ１０１との通信及び所定の負荷との通信を制御するＨＤＤ制御部１２４と、、メインＣＰＵ１０１及びＨＤＤ制御部１２４が実行するそれぞれのプログラムコードを記憶するＦＬＡＳＨ ＲＯＭ１１２と、メインＣＰＵ１０１及びＨＤＤ制御部１２４においてそれぞれのプログラムコードが実行される前に、ＦＬＡＳＨ ＲＯＭ１１２に記憶されたそれぞれのプログラムコードの検証を行うサブＣＰＵ１１５と、を備える。【選択図】図１
2020177539.tif 000002
【特許請求の範囲】
【請求項１】
情報処理装置であって、
プログラムコードにしたがって処理を実行する第１の制御手段と、
前記プログラムコードとは別の所定のプログラムコードにしたがって、前記第１の制御手段との通信、及び、前記情報処理装置の所定の負荷との通信を制御する第２の制御手段と、
前記第１の制御手段及び前記第２の制御手段が実行するそれぞれのプログラムコードを記憶する記憶手段と、
前記第１の制御手段及び前記第２の制御手段において前記記憶手段に記憶されたそれぞれのプログラムコードが実行される前に、それぞれのプログラムコードの検証を行う検証手段と
を備えることを特徴とする情報処理装置。
【請求項２】
前記所定の負荷は、不揮発性の記憶装置であって、
前記第１の制御手段との通信、及び、前記所定の負荷との通信の制御とは、前記第１の制御手段から受信したデータを前記所定の負荷に送信する処理、及び、前記所定の負荷から受信したデータを前記第１の制御手段に送信する処理を含むことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２の制御手段が実行する前記プログラムコードは、データの暗号化及び復号化のプログラムコードを含み、
前記第２の制御手段による前記所定の負荷との通信の制御とは、前記第２の制御手段が、前記検証手段によって検証されたプログラムコードにしたがって、前記不揮発性の記憶装置に送信するデータの暗号化、及び、前記不揮発性の記憶装置から受信するデータの復号化を行う処理を含むことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記負荷は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）であり、
前記第２の制御手段は、前記検証手段によって検証されたプログラムコードを読み出して実行することにより、前記第１の制御手段と前記ＨＤＤとの間のブリッジとして機能することを特徴とする請求項１乃至３の何れか１項に記載の情報処理装置。
【請求項５】
前記第１の制御手段及び前記第２の制御手段と、前記検証手段との間には、前記検証手段からのリセット信号を出力する信号線がそれぞれ設けられ、
前記検証手段は、プログラムコードを検証すると対応する制御手段に対するリセット信号を解除することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記第１の制御手段及び前記第２の制御手段は、前記検証手段から受信しているリセット信号が解除されると、対応するプログラムコードを前記記憶手段から読み出して実行することにより、起動することを特徴とする請求項５に記載の情報処理装置。
【請求項７】
前記検証手段は、
前記検証手段のブートコードを記憶したブートＲＯＭと、
各プログラムコードを検証するために使用する検証情報を記憶するＯＴＰ（Ｏｎｅ Ｔｉｍｅ Ｐｒｏｇｒａｍｍａｂｌｅ）メモリ領域と
を備えることを特徴とする請求項４乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記記憶手段には、
各プログラムコードの検証に使用する検証情報と、
前記プログラムコードとして、前記第１の制御手段のＢＩＯＳのプログラムコードと、前記第２の制御手段のＢＩＯＳ及びＦＷのプログラムコードと、前記検証手段のＦＷのプログラムコードと
が記憶されることを特徴とする請求項４乃至７の何れか１項に記載の情報処理装置。
【請求項９】
前記第１の制御手段は、前記検証手段によってリセット信号が解除されると、前記第１の制御手段のＢＩＯＳのプログラムコードを前記記憶手段から読み出して実行し、前記ＨＤＤに記憶されたＯＳを読み出して実行し、前記情報処理装置の初期化処理を実行することを特徴とする請求項８に記載の情報処理装置。
【請求項１０】
前記第１の制御手段は、
前記検証手段によって、前記第２の制御手段で実行されるプログラムコードの検証に失敗すると、前記情報処理装置の操作部にエラー表示を行わせることを特徴とする請求項１乃至９の何れか１項に記載の情報処理装置。
【請求項１１】
情報処理装置であって、
プログラムコードにしたがって処理を実行する第１の制御手段と、
前記プログラムコードとは別の所定のプログラムコードにしたがって、前記第１の制御手段との通信、及び、前記情報処理装置の所定の負荷との通信を制御する第２の制御手段と、
前記第１の制御手段が実行するプログラムコードを記憶する第１の記憶手段と、
前記第２の制御手段が実行するプログラムコードを記憶する第２の記憶手段と、
前記第１の制御手段及び前記第２の制御手段において前記第１の記憶手段及び前記第２の記憶手段に記憶されたそれぞれのプログラムコードが実行される前に、前記第１の記憶手段及び前記第２の記憶手段に記憶されたそれぞれのプログラムコードの検証を行う検証手段と
を備えることを特徴とする情報処理装置。
【請求項１２】
情報処理装置であって、
プログラムコードにしたがって処理を実行する第１の制御手段と、
前記プログラムコードとは別の所定のプログラムコードにしたがって、前記第１の制御手段との通信、及び、前記情報処理装置の所定の負荷との通信を制御する第２の制御手段と、
前記第１の制御手段が実行するプログラムコードを記憶する第１の記憶手段と、
前記第２の制御手段が実行するプログラムコードを記憶する第２の記憶手段と、
前記第１の制御手段において前記第１の記憶手段に記憶されたプログラムコードが実行される前に、前記第１の記憶手段に記憶されたプログラムコードの検証を行う第１の検証手段と、
前記第２の制御手段において前記第２の記憶手段に記憶されたプログラムコードが実行される前に、前記第２の記憶手段に記憶されたプログラムコードの検証を行う第２の検証手段と
を備えることを特徴とする情報処理装置。
【請求項１３】
プログラムコードにしたがって処理を実行する第１の制御手段と、前記プログラムコードとは別の所定のプログラムコードにしたがって、前記第１の制御手段との通信、及び、情報処理装置の所定の負荷との通信を制御する第２の制御手段と、前記第１の制御手段及び前記第２の制御手段が実行するそれぞれのプログラムコードを記憶する記憶手段と、を備える情報処理装置の制御方法であって、
検証手段が、前記第１の制御手段及び前記第２の制御手段において前記記憶手段に記憶されたそれぞれのプログラムコードが実行される前に、それぞれのプログラムコードの検証を行う検証工程を含むことを特徴とする情報処理装置の制御方法。
【請求項１４】
プログラムコードにしたがって処理を実行する第１の制御手段と、前記プログラムコードとは別の所定のプログラムコードにしたがって、前記第１の制御手段との通信、及び、情報処理装置の所定の負荷との通信を制御する第２の制御手段と、前記第１の制御手段が実行するプログラムコードを記憶する第１の記憶手段と、前記第２の制御手段が実行するプログラムコードを記憶する第２の記憶手段と、を備える情報処理装置の制御方法であって、
検証手段が、前記第１の制御手段及び前記第２の制御手段において前記第１の記憶手段及び前記第２の記憶手段に記憶されたそれぞれのプログラムコードが実行される前に、前記第１の記憶手段及び前記第２の記憶手段に記憶されたそれぞれのプログラムコードの検証を行う検証工程を含むことを特徴とする情報処理装置の制御方法。
【請求項１５】
プログラムコードにしたがって処理を実行する第１の制御手段と、前記プログラムコードとは別の所定のプログラムコードにしたがって、前記第１の制御手段との通信、及び、情報処理装置の所定の負荷との通信を制御する第２の制御手段と、前記第１の制御手段が実行するプログラムコードを記憶する第１の記憶手段と、前記第２の制御手段が実行するプログラムコードを記憶する第２の記憶手段と、を備える情報処理装置の制御方法であって、
第１の検証手段が、前記第１の制御手段において前記第１の記憶手段に記憶されたプログラムコードが実行される前に、前記第１の記憶手段に記憶されたプログラムコードの検証を行う第１の検証工程と、
第２の検証手段が、前記第２の制御手段において前記第２の記憶手段に記憶されたプログラムコードが実行される前に、前記第２の記憶手段に記憶されたプログラムコードの検証を行う第２の検証工程と
を含むことを特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、及びその制御方法に関する。
【背景技術】
【０００２】
従来の画像処理装置（以下では、ＭＦＰと称する。）等の情報処理装置におけるブートコードの改ざんの検知方法には、メインＣＰＵが実行するブートコードをメインＣＰＵが起動する前にサブＣＰＵが読み出して、改ざんされていないかを検証する方法がある。また、サブＣＰＵが読み出したブートコードの改ざんを検知した場合、マスタのブートコードを改ざんが検知されたブートコードにコピーして復旧するか、或いは、サブＣＰＵの動作を停止するエラー制御が行われている。例えば、特許文献１には、ＣＰＵが指定したソフトウェアを検証し、起動時にプロセッサで用いられるソフトウェアとして設定し、改ざんが検知されたソフトウェアについては安全に更新する技術が提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１７−３３１４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来技術には以下に記載する課題がある。例えば、メインＣＰＵとは別に、他の制御部（例えば、装置の機能を制御する機能制御部）を備えている場合、当該機能制御部は、メインＣＰＵとは異なる他のＣＰＵで動作することが一般的である。この場合において、上記他のＣＰＵの起動コードや実行コードなどのプログラムコードが改ざんされると、当該機能制御の動作を行うことができず、装置としての信頼性が低下してしまう。
【０００５】
本発明は、上述の課題の少なくとも一つに鑑みて成されたものであり、装置のメインＣＰＵとは異なる制御部で実行されるプログラムコードの安全性も好適に検証し、装置のセキュアな起動を実現する仕組みを提供する。
【課題を解決するための手段】
【０００６】
本発明は、例えば、情報処理装置であって、プログラムコードにしたがって処理を実行する第１の制御手段と、前記プログラムコードとは別の所定のプログラムコードにしたがって、前記第１の制御手段との通信、及び、前記情報処理装置の所定の負荷との通信を制御する第２の制御手段と、前記第１の制御手段及び前記第２の制御手段が実行するそれぞれのプログラムコードを記憶する記憶手段と、前記第１の制御手段及び前記第２の制御手段において前記記憶手段に記憶されたそれぞれのプログラムコードが実行される前に、それぞれのプログラムコードの検証を行う検証手段とを備えることを特徴とする。
【０００７】
また、本発明は、例えば、情報処理装置であって、プログラムコードにしたがって処理を実行する第１の制御手段と、前記プログラムコードとは別の所定のプログラムコードにしたがって、前記第１の制御手段との通信、及び、前記情報処理装置の所定の負荷との通信を制御する第２の制御手段と、前記第１の制御手段が実行するプログラムコードを記憶する第１の記憶手段と、前記第２の制御手段が実行するプログラムコードを記憶する第２の記憶手段と、前記第１の制御手段及び前記第２の制御手段において前記第１の記憶手段及び前記第２の記憶手段に記憶されたそれぞれのプログラムコードが実行される前に、前記第１の記憶手段及び前記第２の記憶手段に記憶されたそれぞれのプログラムコードの検証を行う検証手段とを備えることを特徴とする。
【０００８】
また、本発明は、例えば、情報処理装置であって、プログラムコードにしたがって処理を実行する第１の制御手段と、前記プログラムコードとは別の所定のプログラムコードにしたがって、前記第１の制御手段との通信、及び、前記情報処理装置の所定の負荷との通信を制御する第２の制御手段と、前記第１の制御手段が実行するプログラムコードを記憶する第１の記憶手段と、前記第２の制御手段が実行するプログラムコードを記憶する第２の記憶手段と、前記第１の制御手段において前記第１の記憶手段に記憶されたプログラムコードが実行される前に、前記第１の記憶手段に記憶されたプログラムコードの検証を行う第１の検証手段と、前記第２の制御手段において前記第２の記憶手段に記憶されたプログラムコードが実行される前に、前記第２の記憶手段に記憶されたプログラムコードの検証を行う第２の検証手段とを備えることを特徴とする。
【発明の効果】
【０００９】
本発明によれば、装置のメインＣＰＵとは異なる制御部で実行されるプログラムコードの安全性も好適に検証し、装置のセキュアな起動を実現することができる。
【図面の簡単な説明】
【００１０】
【図１】一実施形態に係るＭＦＰの構成を示す図。
【図２】一実施形態に係るメインＣＰＵの構成を示す図。
【図３】一実施形態に係るサブＣＰＵの構成を示す図。
【図４】一実施形態に係るＨＤＤ制御部の構成を示す図。
【図５】一実施形態に係るＦＬＡＳＨ  ＲＯＭのメモリマップを示す図。
【図６Ａ】、
【図６Ｂ】一実施形態に係るサブＣＰＵの処理を示すフローチャート。
【図７】一実施形態に係るＨＤＤ制御部のＣＰＵの処理を示すフローチャート。
【図８】一実施形態に係るＭＦＰの他の実施例の構成を示す図。
【図９】一実施形態に係るサブＣＰＵ２のＦＬＡＳＨ  ＲＯＭのメモリマップを示す図。
【図１０】一実施形態に係るサブＣＰＵ２の処理を示すフローチャート。
【図１１】一実施形態に係るメインＣＰＵの処理を示すフローチャート。
【図１２】一実施形態に係るリセット信号のタイミングを示す図。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【００１２】
なお、実施形態に係る情報処理装置として複合機（デジタル複合機／ＭＦＰ／Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）を例に説明する。しかしながら適用範囲は複合機に限定されず、情報処理装置であればよい。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、本発明を適用できることは言うまでもない。
【００１３】
＜第１の実施形態＞
＜情報処理装置の構成＞
以下では、本発明の第１の実施形態について説明する。まず、図１を参照して、本実施形態に係るＭＦＰ１の構成を説明する。ＭＦＰ１は、主に、メインＣＰＵ１０１、ＤＲＡＭ１０２、操作部１０３、ネットワークＩ／Ｆ１０４、プリンタ部１０５、スキャナ部１０６、ＦＡＸ１０７、画像処理部１１１、ＦＬＡＳＨ ＲＯＭ１１２、操作部Ｉ／Ｆ１１３、及びサブＣＰＵ１１５を備える。また、ＭＦＰ１は、電源制御部１１８、リセット回路１２２、ＨＤＤ制御部１２４、及びＨＤＤ１２５を備える。
【００１４】
メインＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０１は、第１の制御手段であり、ＭＦＰ１全体の制御を司る。ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２は、メインＣＰＵ１０１で実行されるプログラムコードを格納すると共に一時的なデータのワークエリアとして機能する。
【００１５】
操作部１０３は、操作部Ｉ／Ｆ１１３を介してメインＣＰＵ１０１にユーザによる操作を通知する。ネットワークＩ／Ｆ１０４は、ＬＡＮ１３０と接続して外部機器との通信を制御する。プリンタ部１０５は、画像データを紙面上に印字する画像形成部である。スキャナ部１０６は、紙面上の画像を光学的に読み取り電気信号に変換してスキャン画像を生成する読取部である。ＦＡＸ１０７は、公衆回線１１０と接続して外部機器とファクシミリ通信を行う。
【００１６】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１２５は、不揮発性の記憶装置であり、ＨＤＤ制御部１２４を介してメインＣＰＵ１０１で実行されるプログラムコードを格納すると共にプリントジョブやスキャンジョブ等のスプール領域としても利用される。ＨＤＤ制御部１２４は、負荷（ＨＤＤ）を制御する第２の制御手段である。このＨＤＤ制御部１２４は、メインＣＰＵ１０１と通信し、メインＣＰＵ１０１からの制御コマンドにしたがってＨＤＤ１２５へのデータの入出力を制御し、メインＣＰＵ１０１とＨＤＤ１２５との間のブリッジとして機能する。ＨＤＤ制御部１２４のＣＰＵ（ＣＰＵコア４０１）で実行されるプログラムコード（ＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７）は、ＦＬＡＳＨ ＲＯＭ１１２に記憶され、メインＣＰＵ１０１とＨＤＤ１２５との間のブリッジとして機能するためのプログラムとなる。すなわち、ＨＤＤ制御部１２４は、メインＣＰＵ１０１によって送信されたデータをＨＤＤ１２５に転送し、かつ、ＨＤＤ１２５から読み出されたデータをＨＤＤ制御部１２４に転送する機能を有する。この機能によって、ＣＰＵ１０１との通信及びＨＤＤ１２５との通信が制御される。この機能は、後述のＣＰＵコア４０１がＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７を実行することで実装される。またこのＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７は、データを暗号化及び復号化するプログラムコードを含み、ＣＰＵ４０１は、このプログラムコードにしたがって、ＣＰＵ１０１とＨＤＤ１２５との間で送受信されるデータの暗号化及び復号化を行う。１２９はリセット信号であり、サブＣＰＵ１１５のＧＰＩＯポートから出力されてＨＤＤ制御部１２４のリセット処理用に接続される。従って、サブＣＰＵ１１５と、ＨＤＤ制御部１２４との間はリセット信号を伝達するための信号線で接続されうる。なお、本実施形態では、負荷を制御する第２の制御手段として、メインＣＰＵとＨＤＤとのブリッジの役割を担うＨＤＤ制御部を例に説明するが、本発明を限定する意図はなく、他の負荷を制御する制御部であってもよい。例えば、プリンタやスキャナ等のエンジン制御部や、電源制御部、ネットワーク制御部等であってもよい。
【００１７】
１０９は信号バスであり、各モジュールを相互に接続して通信を行う。１１０は公衆回線であり、ＦＡＸ１０７と外部機器を相互接続する。画像処理部１１１は、ネットワークＩ／Ｆ１０４で受信したプリントジョブをプリンタ部１０５で印刷するのに適した画像データへの変換処理や、スキャナ部１０６で読み取ったスキャン画像のノイズ除去、色空間変換、回転、圧縮等の処理を実行する。また、ＨＤＤ１２５に保管されたスキャン画像に対する画像処理を実行する。
【００１８】
ＦＬＡＳＨ ＲＯＭ（ＦＬＡＳＨ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１１２は、第１の記憶手段であり、メインＣＰＵ１０１で実行されるブートコードを含むプログラムや、ＭＦＰ１のデフォルト設定値を格納する。操作部Ｉ／Ｆ１１３は、操作部１０３と信号バス１０９を相互接続する。ＳＰＩ（Ｓｅｒｉａｌ  Ｐｅｒｉｐｈｅｒａｌ  Ｉｎｔｅｒｆａｃｅ）バス１１４は、メインＣＰＵ１０１、ＦＬＡＳＨ ＲＯＭ１１２、及びサブＣＰＵ１１５を相互接続する。
【００１９】
サブＣＰＵ１１５は、検証手段であり、ＭＦＰ１の起動時に、メインＣＰＵ１０１が起動する前にＦＬＡＳＨ ＲＯＭ１１２からブートコードを読み出して、当該プログラムの検証を行う。本実施形態に係るプログラムの検証は、所定のプログラムコードが意図した改ざん又は経年劣化によって変化しているかどうかを検証するものである。なお、以下では、説明を容易にするため、「改ざん」という用語を用いて説明するが、本実施形態に係る「改ざん」には上述した意図した改ざん加えて、経年劣化による変化をも含むものとする。検証方法としては、例えばブートコードのデジタル署名の公開鍵情報（ハッシュ値を公開鍵暗号化した値）を製造時にサブＣＰＵ１１５内の後述するＯＴＰ（Ｏｎｅ Ｔｉｍｅ Ｐｒｏｇｒａｍ）３０４領域に記憶させておく。そして、サブＣＰＵ１１５は、読み出したブートコードをこの公開鍵情報で復号化して検証を行う。公開鍵暗号の方法としてはＲＳＡ２０４８、ＥＣＤＳＡなどである。なお、サブＣＰＵ１１５は、図１や図３に示すように、メインＣＰＵ１０１とは独立したマイコンであり、ブートＲＯＭ３１０に自身のブートコードが記憶されたセキュアブート対応のマイコンとなる。また、内蔵される上記ＯＴＰ３０４は書き換えられない領域であり、ＯＴＰ３０４に記憶されたデータは改ざんすることができない。
【００２０】
１１７はリセット信号であり、サブＣＰＵ１１５のＧＰＩＯポートから出力されてメインＣＰＵ１０１のリセット端子に専用の信号線が接続される。電源制御部１１８は、ＭＦＰ１内の各モジュールの電力供給を制御する。１１９は電源線であり、各モジュールに電力を供給する。１２０は電源供給線であり、商業用ＡＣ電源が供給される。リセット回路１２２は、システムの電源がＯＮされると所定の遅延時間後にサブＣＰＵリセット信号１２３を“Ｌｏ”から“Ｈｉ”レベルに遷移する。１２３はサブＣＰＵリセット信号であり、リセット回路１２２から出力されてサブＣＰＵ１１５のリセット端子に接続される。サブＣＰＵリセット信号１２３が“Ｈｉ”レベルになると、サブＣＰＵ１１５はリセットが解除されて起動を開始する。
【００２１】
＜メインＣＰＵの構成＞
次に、図２を参照して、本実施形態に係るメインＣＰＵ１０１の構成を説明する。メインＣＰＵ１０１は、ＣＰＵコア２０１、及びＳＰＩマスタ２０２を備える。
【００２２】
ＣＰＵコア２０１は、ＣＰＵの基本機能を担っている。ＳＰＩマスタ２０２は、外部のＳＰＩデバイスと相互に接続してデータの読み書きを行う。２０６はＳＰＩバスであり、ＳＰＩマスタ２０２と外部のＳＰＩデバイスとを電気的に接続する。２０９は信号バスであり、メインＣＰＵ１０１内の各モジュールを接続する。サブＣＰＵ１１５から出力されるリセット信号１１７が“Ｌｏ”レベルの場合、メインＣＰＵ１０１はリセット状態となる。一方、リセット信号１１７が“Ｈｉ”レベルの場合、メインＣＰＵ１０１はリセット解除状態となる。リセット信号１１７がリセット状態からリセット解除状態に遷移すると、ＣＰＵコア２０１は先ず、ＦＬＡＳＨ ＲＯＭ１１２内に記憶されているメインＣＰＵ ＢＩＯＳ５０１（図５）をＤＲＡＭ１０２にロードして実行する。ＦＬＡＳＨ ＲＯＭ１１２の詳細なメモリマップについては図５を用いて後述する。
【００２３】
＜サブＣＰＵの構成＞
次に、図３を参照して、本実施形態に係るサブＣＰＵ１１５の構成を説明する。サブＣＰＵ１１５は、ＣＰＵコア３０１、ＳＰＩマスタ３０２、ＧＰＩＯ３０３、ＯＴＰ３０４、ＳＲＡＭ３０５、暗号処理部３０８、ブートＲＯＭ３１０、及びＣｒｙｐｔｏ ＲＡＭ３１１を備える。本実施形態によれば、セキュアブート対応のサブＣＰＵ１１５がメインＣＰＵ１０１やＨＤＤ制御部１２４などの負荷を制御する各制御部のブートコード（ブートプログラム）や実行コード（実行プログラム）の検証を行い、改ざんを検知する検知部として機能する。これらの検証は各制御部の起動前に行われ、これによりセキュアブートを実現する。
【００２４】
ＣＰＵコア３０１は、ＣＰＵの基本機能を担っている。ＳＰＩマスタ３０２は、外部のＳＰＩデバイスと相互に接続してデータの読み書きを行う。ＧＰＩＯ（Ｇｅｎｅｒａｌ−ｐｕｒｐｏｓｅ  ｉｎｐｕｔ／ｏｕｔｐｕｔ）３０３は、外部のデバイスと相互に接続してデータの送受信を行う。ＯＴＰ（Ｏｎｅ Ｔｉｍｅ Ｐｒｏｇｒａｍｍａｂｌｅ）３０４はメモリ領域である。ＯＴＰ３０４には、検証に使用される検証情報として、製造時にサブＣＰＵ ＦＷ（ファームウェア）のハッシュ値を公開鍵で暗号化した値と、サブＣＰＵ ＦＷの先頭アドレスを示すＴａｇのアドレスとが書き込まれる。この領域に書き込まれたデータは一度書き込まれると二度と書換えることはできない。
【００２５】
ＳＲＡＭ３０５は、サブＣＰＵ１１５内のワークメモリとして使用される。暗号処理部３０８は、公開鍵暗号化した値からサブＣＰＵ ＦＷのハッシュ値を復号するほか、公開鍵暗号化したメインＣＰＵ ＢＩＯＳのハッシュ値を復号する。３０９は信号バスであって、サブＣＰＵ内の各モジュールを接続する。ブートＲＯＭ（Ｒｅａｄ Ｏｎｌｙ Ｍｅｍｏｒｙ）３１０は、サブＣＰＵ１１５のブートコードを記憶する。リセット信号１１７が“Ｌｏ”レベルの場合、メインＣＰＵ１０１はリセット状態となる。リセット信号１１７が“Ｈｉ”レベルの場合、メインＣＰＵ１０１はリセット解除状態となる。リセット信号１１７がリセット状態からリセット解除状態に遷移すると、ＣＰＵコア３０１は先ず、ブートＲＯＭ３１０から自身のブートコードを読み出し実行する。Ｃｒｙｐｔｏ ＲＡＭ３１１は、暗号処理部３０８で利用する機密性の高いデータ等を記憶する。
【００２６】
＜ＨＤＤ制御部の構成＞
次に、図４を参照して、本実施形態に係るＨＤＤ制御部１２４の構成を説明する。ＨＤＤ制御部１２４は、ＣＰＵコア４０１、ＳＰＩマスタ４０２、及び転送制御部４０３、４０４を備える。
【００２７】
ＣＰＵコア４０１は、ＨＤＤ制御部１２４を制御するためのＣＰＵの基本機能を担っている。ＳＰＩマスタ４０２は、外部のＳＰＩデバイスと相互に接続してデータの読み書きを行う。転送制御部４０３、４０４は、ＣＰＵコア４０１の命令により、ＨＤＤ１２５の処理設定を行い、ＨＤＤ１２５とのデータの転送を制御する。
【００２８】
ＨＤＤ１２５の読み出し動作の場合、ＣＰＵコア４０１は転送制御部４０４にＨＤＤ１２５の読み出しを設定し、設定のデータをＨＤＤ１２５から読み出す。読み出されたデータは、ＳＡＴＡインタフェースバス４０８、転送制御部４０４、ＨＤＤ制御部１２４の内部データバス４０７、及び転送制御部４０３を経由し、さらにデータバス４０５を介してＤＲＡＭ１０２に書き込む動作が行われる。
【００２９】
ＨＤＤ１２５の書き込み動作の場合、ＣＰＵコア４０１は転送制御部４０４にＨＤＤ１２５の書き込みを設定する。そして、データバス４０５から転送されたデータは、転送制御部４０３、ＨＤＤ制御部１２４の内部データバス４０７、転送制御部４０４、及びＳＡＴＡインタフェースバス４０８を経由して、ＨＤＤ１２５へ書き込み動作が実行される。
【００３０】
４０６はＳＰＩバスであり、外部のＳＰＩデバイスと電気的に接続する。４０７は信号バスであり、ＨＤＤ制御部１２４内の各モジュールを接続する。リセット信号１２９が“Ｌｏ”レベルの場合、ＨＤＤ制御部１２４はリセット状態となる。一方、リセット信号１２９が“Ｈｉ”レベルの場合、ＨＤＤ制御部１２４はリセット解除状態となる。リセット信号１２９がリセット状態からリセット解除状態に遷移すると、ＣＰＵコア４０１は先ず、ＦＬＡＳＨ ＲＯＭ１１２内に記憶されているＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７をＳＰＩマスタ４０２にロードして実行する。つまり、ＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７は、メインＣＰＵ１０１とＨＤＤ１２５との間のブリッジ（ＨＤＤ制御部１２４）として機能するためのプログラムである。
【００３１】
＜メモリマップ＞
次に、図５を参照して、本実施形態に係るＦＬＡＳＨ ＲＯＭ１１２のメモリマップについて説明する。なお、以下で説明するメモリマップは一例であり、本願発明を限定する意図はない。即ち、以下で説明する記憶情報は、ＦＬＡＳＨ ＲＯＭ１１２とは異なるメモリに記憶されてもよい。
【００３２】
５０１はメインＣＰＵ ＢＩＯＳであり、メインＣＰＵ１０１で実行されるコード（プログラム）が記憶されている。５０２はＢＩＯＳ署名であり、メインＣＰＵ ＢＩＯＳ５０１のハッシュ値に対するＲＳＡ署名値が記憶されている。５０３はＴａｇであり、サブＣＰＵ ＦＷ５０４の先頭アドレスが記憶されている。Ｔａｇ５０３自体のアドレスはＯＴＰ３０４に記憶されている。
【００３３】
５０４はサブＣＰＵ ＦＷであり、サブＣＰＵ１１５で実行されるコードが記憶されている。５０５はＦＷ署名であって、サブＣＰＵ ＦＷ５０４、又はサブＣＰＵ ＦＷ５０４の先頭の特定部分のＥＣＤＳＡ署名値が記憶されている。５０６はＲＯＭ−ＩＤであって、メインＣＰＵ ＢＩＯＳ５０１の先頭アドレス、サイズ及びＢＩＯＳ署名のアドレスが記憶されている。５０７はＨＤＤＣＰＵ ＢＩＯＳＦＷであって、ＨＤＤ制御部１２４におけるＣＰＵコア４０１で実行されるＢＩＯＳ及びＦＷのプログラムコードが記憶されている。５０８はＨＤＤＣＰＵ ＢＩＯＳＦＷ署名であって、ＨＤＤＣＰＵ ＢＩＯＳＦＷのハッシュ値に対するＲＳＡ署名値が記憶されている。
【００３４】
つまり、ＦＬＡＳＨ ＲＯＭ１１２には、メインＣＰＵ１０１やＨＤＤ制御部１２４で実行されるブートコードや実行コードが記憶されており、その全てについて改ざんの可能性がある。そこで、本実施形態によれば、セキュアブート対応のサブＣＰＵ１１５において、各制御部で実行されるコードの正当性を、その実行前に検証し、より安全な起動を実現する。サブＣＰＵ１１５の詳細な処理については以下で説明する。
【００３５】
＜サブＣＰＵ１１５の処理手順＞
次に、図６Ａ、図６Ｂ及び図１２を参照して、本実施形態におけるサブＣＰＵ１１５の処理手順を説明する。図１２のタイミングチャートにおけるＭＦＰ電源１２０１が投入されたタイミングＴ０で図６Ａ及び図６Ｂのフローチャートが開始される。
【００３６】
ＭＦＰ１の電源が投入されると、Ｓ７０１で、ＣＰＵコア３０１は、直ちにブートＲＯＭ３１０内のコードをＳＲＡＭ３０５に読み出して実行する。そして、ＣＰＵコア３０１は、ＳＰＩバス１１４を介してＦＬＡＳＨ ＲＯＭ１１２から、サブＣＰＵ ＦＷ５０４とＦＷ署名５０５とをＳＲＡＭ３０５に読み込む。
【００３７】
次に、Ｓ７０２で、ＣＰＵコア３０１は、暗号処理部３０８によってＦＷ署名５０５をＯＴＰ３０４内の公開鍵で復号化して、正解となるハッシュ値を取得する。続いて、Ｓ７０３で、ＣＰＵコア３０１は、暗号処理部３０８によってサブＣＰＵ ＦＷ５０４のハッシュ値を計算する。その後、Ｓ７０４で、ＣＰＵコア３０１は、Ｓ５０２で取得したハッシュ値と、Ｓ７０３で計算したハッシュ値とを比較する。不一致の場合（ＮＯ）は処理を終了し、一致した場合（ＹＥＳ）は、Ｓ７０５に進み、ＣＰＵコア３０１は、サブＣＰＵ ＦＷ５０４をＳＲＡＭ３０５に読み込んで、実行する。
【００３８】
次に、Ｓ７０６で、ＣＰＵコア３０１は、ＦＬＡＳＨ ＲＯＭ１１２からＲＯＭ−ＩＤ５０６をＣｒｙｐｔｏ ＲＡＭ３１１に読み込む。続いて、Ｓ７０７で、ＣＰＵコア３０１は、ＲＯＭ−ＩＤ５０６からメインＣＰＵ ＢＩＯＳ５０１のアドレスとメインＣＰＵＢＩＯＳ署名５０２のアドレスを取得する。
【００３９】
次に、Ｓ７０８で、ＣＰＵコア３０１は、メインＣＰＵＢＩＯＳ署名５０２をＳＲＡＭ３０５に読み込む。続いて、Ｓ７０９で、ＣＰＵコア３０１は、暗号処理部３０８によってメインＣＰＵＢＩＯＳ署名５０２をサブＣＰＵ ＦＷ５０４に付属している公開鍵で復号化してハッシュ値を取得する。その後、Ｓ７１０で、ＣＰＵコア３０１は、メインＣＰＵ ＢＩＯＳ５０１をＳＲＡＭ３０５に読み込む。さらに、Ｓ７１１で、ＣＰＵコア３０１は、暗号処理部３０８によってメインＣＰＵ ＢＩＯＳ５０１のハッシュ値を計算する。
【００４０】
そして、Ｓ７１２で、ＣＰＵコア３０１は、Ｓ７０９のハッシュ値と、Ｓ７１１のハッシュ値とを比較する。不一致の場合（ＮＯ）は処理を終了し、一致した場合（ＹＥＳ）はＳ７１３に進み、ＣＰＵコア３０１は、ＧＰＩＯ３０３を制御してリセット信号１１７において“Ｈｉ”を出力し、リセットを解除する。図１２のＴ１のタイミング１２０２において、リセット信号１１７が解除され、メインＣＰＵ１０１が起動可能になる。
【００４１】
次に、Ｓ７１４で、ＣＰＵコア３０１は、Ｓ７０６で取得したＲＯＭ−ＩＤ５０６が複数あるか否かを確認する。複数ある場合はＳ７１５に進み、そうでない場合は処理を終了する。Ｓ７１５で、ＣＰＵコア３０１は、Ｓ７０７で読み込まなかったＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７のアドレスと、ＨＤＤＣＰＵ ＢＩＯＳＦＷ署名５０８のアドレスとをＦＬＡＳＨ ＲＯＭ１１２から取得する。続いて、Ｓ７１６で、ＣＰＵコア３０１は、ＨＤＤＣＰＵ ＢＩＯＳＦＷ署名５０８をＳＲＡＭ３０５に読み込む。さらに、Ｓ７１７で、ＣＰＵコア３０１は、暗号処理部３０８によってＨＤＤＣＰＵ ＢＩＯＳＦＷ署名５０８をサブＣＰＵ ＦＷ５０４に付属している公開鍵で復号化してハッシュ値を取得する。
【００４２】
次に、Ｓ７１８で、ＣＰＵコア３０１は、ＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７をＳＲＡＭ３０５に読み込む。続いて、Ｓ７１９で、ＣＰＵコア３０１は、暗号処理部３０８によってＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７のハッシュ値を計算する。そして、Ｓ７２０で、ＣＰＵコア３０１は、Ｓ７１７のハッシュ値とＳ７１９のハッシュ値とを比較し、不一致の場合（ＮＯ）は処理を終了し、一致した場合（ＹＥＳ）はＳ７２１に進む。Ｓ７２１で、ＣＰＵコア３０１は、ＧＰＩＯ３０３を制御してリセット信号１２９において“Ｈｉ”を出力する。図１２のＴ２のタイミング１２０３において、リセット信号１２９が解除され、ＨＤＤ制御部１２４におけるＣＰＵコア４０１の起動となる。
【００４３】
＜ＨＤＤ制御部の処理手順＞
次に、図７を参照して、本実施形態におけるＨＤＤ制御部１２４の処理手順を説明する。上記図６のＳ７２１でリセット信号１２９が解除されると、ＣＰＵコア４０１が処理を開始する。
【００４４】
ＣＰＵコア４０１のＢＩＯＳ検証が行われ、ＣＰＵコア４０１のリセットが解除されると、Ｓ８０１で、ＣＰＵコア４０１は、直ちにＦＬＡＳＨ ＲＯＭ１１２に記憶されたＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７をロードする。ここで、ロードする領域としては、ＨＤＤ制御部１２４に設けられた不図示のＲＯＭに読み出してもよく、或いは、ＤＲＡＭ１０２に読み出してもよい。続いて、Ｓ８０２で、ＣＰＵコア４０１は、ロードしたＨＤＤＣＰＵ ＢＩＯＳＦＷ５０７を実行し、ＣＰＵコア４０１内の入出力の初期化処理を実行し、処理を終了する。これにより、ＨＤＤ制御部１２４の初期化が行われ、ＨＤＤ１２５とのデータのやり取りが可能な状態になる。
【００４５】
以上説明したように、本実施形態に係る情報処理装置は、プログラムコードにしたがって処理を実行するメインＣＰＵと、別の所定のプログラムコードにしたがって、メインＣＰＵとの通信、及び、所定の負荷との通信を制御するＨＤＤ制御部と、を備える。また、本情報処理装置は、メインＣＰＵ及びＨＤＤ制御部が実行するそれぞれのプログラムコードを記憶するＦＬＡＳＨ ＲＯＭを備える。さらに、本情報処理装置は、メインＣＰＵ及びＨＤＤ制御部においてそれぞれのプログラムコードが実行される前に、ＦＬＡＳＨ ＲＯＭに記憶されたそれぞれのプログラムコードの検証を行うサブＣＰＵを備える。より具体的には、サブＣＰＵは、まずメインＣＰＵのプログラムコードの検証を行い、改ざんが検知されなければメインＣＰＵへのリセット信号を解除し、メインＣＰＵを起動させる。その後、サブＣＰＵは、ＨＤＤ制御部のプログラムコードの検証を行い、改ざんが検知されなければＨＤＤ制御部へのリセット信号を解除する。これにより、本実施形態によれば、装置のメインＣＰＵとは異なる制御部で実行されるプログラムコードの安全性も好適に検証し、装置のセキュアな起動を実現することができる。
【００４６】
なお、本発明は上記実施形態に限らず様々な変形が可能である。上記第１の実施形態では、メインＣＰＵ１０１のコードと、ＨＤＤ制御部１２４のコードとが同じメモリであるＦＬＡＳＨ ＲＯＭ１１２に記憶されている場合について説明したが、以下で説明する第２の実施形態のように、異なるメモリに記憶されてもよい。その場合は、サブＣＰＵ１１５が２つのメモリに記憶されているコードの検証を行う。なお、以下で説明する第２の実施形態は、複数のＣＰＵが実行するコードを格納するメモリがそれぞれ設けられるとともに、それぞれのメモリを検証するサブＣＰＵもそれぞれ設けられる例について説明する。
【００４７】
＜第２の実施形態＞
以下では、本発明の第２の実施形態について説明する。上記第１の実施形態では、サブＣＰＵ１１５が一括して全ての制御部のブートコード等の検証を行う例について説明したが、本実施形態では、複数のＣＰＵにおいて、各々のＣＰＵにおいて各々のブートコードの検証を行う。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、本発明を適用できることは言うまでもない。
【００４８】
＜情報処理装置の構成＞
次に、図８を参照して、本実施形態に係るＭＦＰ１００１の構成を説明する。なお、以下では、上記第１の実施形態と同様の構成や制御については同一の参照符号を付し説明を省略する。
【００４９】
本実施形態に係るＭＦＰ１００１は、図１に示すＭＦＰ１の構成に加えて、さらに、サブＣＰＵ１０２６（第２の検証手段）、及びＦＬＡＳＨ ＲＯＭ１０２７（第２の記憶手段）を備える。リセット回路１２２は、システムの電源がＯＮされると所定の遅延時間後にサブＣＰＵリセット信号１２３、１０２３を“Ｌｏ”から“Ｈｉ”レベルに遷移する。１２３はサブＣＰＵリセット信号であって、リセット回路１２２から出力されてサブＣＰＵ１１５のリセット端子に接続される。サブＣＰＵリセット信号１２３が“Ｈｉ”レベルになると、サブＣＰＵ１１５はリセットが解除されて起動を開始する。一方、サブＣＰＵリセット信号１０２３は、サブＣＰＵ１０２６のリセット端子に接続される。サブＣＰＵリセット信号１０２３が“Ｈｉ”レベルになると、サブＣＰＵ１０２６はリセットが解除されて起動を開始する。なお、サブＣＰＵ１０２６はサブＣＰＵ１１５と同等の構成である。つまり、本実施形態では、各ＣＰＵ（メインＣＰＵ１０１とＨＤＤ制御部１２４）に対応して、そのブートコードや実行コードを検証するセキュアブート対応のサブＣＰＵを設ける。
【００５０】
サブＣＰＵ１０２６は、ＭＦＰ１００１の起動時に、ＦＬＡＳＨ ＲＯＭ１０２７からブートコードを読み出して改ざんがされていないかの検証を行う。改ざんの検知方法としては、例えばブートコードのデジタル署名の公開鍵情報（ハッシュ値を公開鍵暗号化した値）を製造時にサブＣＰＵ１０２６内のＯＴＰ（Ｏｎｅ Ｔｉｍｅ Ｐｒｏｇｒａｍ）領域に記憶させておく。さらに、読み出したブートコードをこの公開鍵情報で復号化して検証を行う。公開鍵暗号の方法としてはＲＳＡ２０４８、ＥＣＤＳＡなどである。１０２９はリセット信号であり、サブＣＰＵ１０２６のＧＰＩＯポートから出力されてＨＤＤ制御部１２４のリセット処理として専用の信号線を介して接続される。１０２８はＳＰＩバスであり、サブＣＰＵ１０２６、ＦＬＡＳＨ ＲＯＭ１０２７、及びＨＤＤ制御部１２４を相互接続する。
【００５１】
＜メモリマップ＞
次に、図９を参照して、ＦＬＡＳＨ ＲＯＭ１０２７のメモリマップについて説明する。なお、以下で説明するメモリマップは一例であり、本願発明を限定する意図はない。即ち、以下で説明する記憶情報は、ＦＬＡＳＨ ＲＯＭ１０２７とは異なるメモリに記憶されてもよい。また、以下で説明する記憶情報は、本実施形態ではＦＬＡＳＨ ＲＯＭ１１２に代わって記憶されるものであり、即ち、ＦＬＡＳＨ ＲＯＭ１１２には記憶されない。
【００５２】
１１０１はＨＤＤＣＰＵ ＢＩＯＳＦＷであり、ＨＤＤ制御部１２４におけるＣＰＵコア４０１で実行されるコードが記憶されている。１１０２はＨＤＤＣＰＵ ＢＩＯＳＦＷ署名であり、ＨＤＤＣＰＵ ＢＩＯＳＦＷ１１０１のハッシュ値に対するＲＳＡ署名値が記憶されている。１１０３はＴａｇであり、サブＣＰＵ ＦＷ１１０４の先頭アドレスが記憶されている。Ｔａｇ１１０３自体のアドレスは図３で説明した、サブＣＰＵ１０２６のＯＴＰ３０４に記憶されている。
【００５３】
１１０４はサブＣＰＵ ＦＷであり、サブＣＰＵ１０２６で実行されるコードが記憶されている。１１０５はＦＷ署名であり、サブＣＰＵ ＦＷ１１０４、又はサブＣＰＵ ＦＷ１１０４の先頭の特定部分のＥＣＤＳＡ署名値が記憶されている。１１０６はＲＯＭ−ＩＤであり、メインＨＤＤＣＰＵ ＢＩＯＳＦＷ１１０１の先頭アドレス、サイズ及びＨＤＤＣＰＵ ＢＩＯＳＦＷ署名のアドレスが記憶されている。
【００５４】
＜サブＣＰＵ１０２６の処理手順＞
次に、図１０を参照して、本実施形態に係るサブＣＰＵ１０２６の処理手順を説明する。
【００５５】
ＭＦＰ１００１の電源が投入されると、Ｓ１２０１で、サブＣＰＵ１０２６のＣＰＵコア３０１は、直ちにブートＲＯＭ３１０内のコードをＳＲＡＭ３０５に読み出して実行する。そして、ＣＰＵコア３０１は、ＳＰＩバス１０２８を介してＦＬＡＳＨ ＲＯＭ１０２７からサブＣＰＵ ＦＷ１１０４をＳＲＡＭ３０５に読み込む。続いて、Ｓ１２０２で、ＣＰＵコア３０１は、暗号処理部３０８によってＦＷ署名１１０５をＯＴＰ３０４内の公開鍵で復号化して、正解となるハッシュ値を取得する。さらに、Ｓ１２０３で、ＣＰＵコア３０１は、暗号処理部３０８によってサブＣＰＵ ＦＷ１１０４のハッシュ値を計算する。
【００５６】
次に、Ｓ１２０４で、ＣＰＵコア３０１は、Ｓ１２０２で取得したハッシュ値とＳ１２０３で計算したハッシュ値を比較し、不一致の場合（ＮＯ）は処理を終了する。一方、一致した場合（ＹＥＳ）はＳ１２０５に進み、ＣＰＵコア３０１は、サブＣＰＵ ＦＷ１１０４をＳＲＡＭ３０５に読み込んで実行する。続いて、Ｓ１２０６で、ＣＰＵコア３０１は、ＲＯＭ−ＩＤ１１０６をＦＬＡＳＨ ＲＯＭ１０２７からＣｒｙｐｔｏ ＲＡＭ３１１に読み込む。さらに、Ｓ１２０７で、ＣＰＵコア３０１は、ＲＯＭ−ＩＤ５０６からＨＤＤＣＰＵ ＢＩＯＳＦＷ１１０１のアドレスと、ＨＤＤＣＰＵ ＢＩＯＳＦＷ署名１１０２のアドレスとを取得する。
【００５７】
次に、Ｓ１２０８で、ＣＰＵコア３０１は、ＨＤＤＣＰＵ ＢＩＯＳＦＷ署名１１０２をＳＲＡＭ３０５に読み込む。続いて、Ｓ１２０９で、ＣＰＵコア３０１は、暗号処理部３０８によってＨＤＤＣＰＵ ＢＩＯＳＦＷ署名１１０２をサブＣＰＵ ＦＷ１１０４に付属している公開鍵で復号化してハッシュ値を取得する。
【００５８】
次に、Ｓ１２１０で、ＣＰＵコア３０１は、ＨＤＤＣＰＵ ＢＩＯＳＦＷ１１０１をＳＲＡＭ３０５に読み込む。続いて、Ｓ１２１１で、ＣＰＵコア３０１は、暗号処理部３０８によってＨＤＤＣＰＵ ＢＩＯＳＦＷ１１０１のハッシュ値を計算する。そして、Ｓ１２１３で、ＣＰＵコア３０１は、Ｓ１２０９のハッシュ値と、Ｓ１２１１のハッシュ値とを比較する。ここで、一致した場合（ＹＥＳ）はＳ１２１４に進み、ＣＰＵコア３０１は、ＧＰＩＯ３０３を制御してリセット信号１０２９において“Ｈｉ”を出力し、処理を終了する。一方、一致しない場合（ＮＯ）はそのまま処理を終了する。
【００５９】
以上説明したように、本実施形態に係る情報処理装置は、プログラムコードにしたがって処理を実行するメインＣＰＵと、別の所定のプログラムコードにしたがって、メインＣＰＵとの通信及び所定の負荷との通信を制御するＨＤＤ制御部と、を備える。また、本情報処理装置は、メインＣＰＵが実行するプログラムコードを記憶する第１のＲＯＭと、ＨＤＤ制御部が実行するプログラムコードを記憶する第２のＲＯＭとを備える。また、本情報処理装置は、メインＣＰＵにおいてプログラムコードを実行する前に、第１のＲＯＭに記憶されたプログラムコードの検証を行うサブＣＰＵを備える。さらに、本情報処理装置は、ＨＤＤ制御部においてプログラムコードを実行する前に、第２のＲＯＭに記憶されたプログラムコードの検証を行うサブＣＰＵを備える。このように、本実施形態によれば、メインＣＰＵ及びＨＤＤ制御部の構成となるＣＰＵコア２０１、４０１において実行される、各々のＲＯＭのブートコードの改ざん検知を、別々のサブＣＰＵ１１５及びサブＣＰＵ１０２６で実施する。そして、個別のＣＰＵにおけるブートコードの改ざん検知を実行し、その結果改ざんされたか否かの通知が可能となる。
【００６０】
＜第３の実施形態＞
以下では、本発明の第３の実施形態を説明する。本実施形態では、ＨＤＤ制御部１２４で実行されるコードの検証結果に基づく制御について説明する。なお、特に断らない限り、本発明の機能が実行されるのであれば、単体の機器であっても、複数の機器からなるシステムであっても、本発明を適用できることは言うまでもない。
【００６１】
＜メインＣＰＵ１０１の処理手順＞
図１１を参照して、本実施形態におけるＨＤＤ制御部１２４の検証が不一致の場合の、メインＣＰＵ１０１の処理手順を説明する。
【００６２】
Ｓ９０１で、メインＣＰＵ１０１のＣＰＵコア２０１は、リセットが解除されると直ちにＦＬＡＳＨ ＲＯＭ１１２に記憶されたメインＣＰＵ ＢＩＯＳ５０１をＤＲＡＭ１０２に読み込む。続いて、Ｓ９０２で、ＣＰＵコア２０１は、メインＣＰＵ ＢＩＯＳ５０１を実行し、メインＣＰＵ１０１内の入出力の初期化処理を実行する。
【００６３】
次に、Ｓ９０３で、ＣＰＵコア２０１は、ＨＤＤ制御部１２４の検証結果を確認する。検証が不一致の場合はＳ９０７に進み、ＣＰＵコア２０１は、操作部Ｉ/Ｆ１１３にＨＤＤ１２５のエラー表示を指示し、操作部１０３にＨＤＤ１２５のエラーの表示を行い、処理を終了する。これにより、ＨＤＤ制御部１２４の検証が不一致の場合、ＭＦＰにエラーの表示を行うことが可能となる。
【００６４】
一方、ＨＤＤ１２５の起動が可能な場合は、Ｓ９０４に進み、ＣＰＵコア２０１は、ＨＤＤ１２５からＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）をＤＲＡＭ１０２に読み込んで、Ｓ９０５で起動する。続いて、Ｓ９０６で、ＣＰＵコア２０１は、プリンタ部１０５、スキャナ部１０６、ＦＡＸ１０７、画像処理部１１１、ネットワークＩ／Ｆ１０４、及び操作部１０３の初期化処理を実行して、ＭＦＰとして動作可能な状態に移行し、処理を終了する。
【００６５】
以上説明したように、本実施形態に係るメインＣＰＵは、サブＣＰＵによって、ＨＤＤ制御部で実行されるプログラムコードの検証に失敗すると、情報処理装置の操作部にエラー表示を行わせる。本実施形態によれば、メインＣＰＵ１０１及びＨＤＤ制御部１２４の構成となるＣＰＵコア４０１において、各々のＲＯＭのブートコードの改ざん検知を、実施する。その結果、ＨＤＤ制御部１２４の構成となるＣＰＵコア４０１が改ざんされたと判定した場合、改ざん判定で問題のなかった、メインＣＰＵ１０１のみで起動を行い、装置がエラーであることの通知が可能となる。
【００６６】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００６７】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【００６８】
１：ＭＦＰ、１０１：メインＣＰＵ、１０２：ＤＲＡＭ、１０３：操作部、１０４：ネットワークＩ／Ｆ、１０５：プリンタ部、１０６：スキャナ部、１０７：ＦＡＸ、１０９：信号バス、１１０：ＦＷ（ファームウェア）、１１１：画像処理部、１１２：ＦＬＡＳＨ ＲＯＭ、１１３：操作部Ｉ／Ｆ、１１４：ＳＰＩバス、１１５：サブＣＰＵ、１１７：リセット信号、１１８：電源制御部、１１９：電源線、１２０：電源供給線、１２２：リセット回路、１２３：サブＣＰＵリセット信号、１２９：リセット信号
【図１】
2020177539.tif 000003
【図２】
2020177539.tif 000004
【図３】
2020177539.tif 000005
【図４】
2020177539.tif 000006
【図５】
2020177539.tif 000007
【図６Ａ】
2020177539.tif 000008
【図６Ｂ】
2020177539.tif 000009
【図７】
2020177539.tif 000010
【図８】
2020177539.tif 000011
【図９】
2020177539.tif 000012
【図１０】
2020177539.tif 000013
【図１１】
2020177539.tif 000014
【図１２】
2020177539.tif 000015