(57)【要約】【課題】  改ざん検知処理に要する時間を短くする。【解決手段】  情報処理装置は、実行手段が実行するソフトウェアを検証する検証手段と、実行手段に供給するべき電圧を示す情報を保持する保持部と、保持部に保持された情報に基づいて実行手段に所定の電圧を供給する電源部と、複数の周波数のクロック信号を出力するクロック信号出力部と、を備え、クロック信号出力部は、検証手段によるソフトウェアの検証時に、検証手段に第１周波数のクロック信号を出力し、電源部が実行手段に所定の電圧を供給する前に、実行手段に第１周波数より低速の第２周波数のクロック信号を出力し、電源部が実行手段に所定の電圧を供給した後に、実行手段に第２周波数より高速の第３周波数のクロック信号を出力する。【選択図】  図３
2020080097.tif 000002
【特許請求の範囲】
【請求項１】
実行手段が実行するソフトウェアを検証する検証手段と、
前記実行手段に供給するべき電圧を示す情報を保持する保持部と、
前記保持部に保持された前記情報に基づいて前記実行手段に所定の電圧を供給する電源部と、
複数の周波数のクロック信号を出力するクロック信号出力部と、を備え、
前記クロック信号出力部は、前記検証手段による前記ソフトウェアの検証時に、前記検証手段に第１周波数のクロック信号を出力し、前記電源部が前記実行手段に前記所定の電圧を供給する前に、前記実行手段に前記第１周波数より低速の第２周波数のクロック信号を出力し、前記電源部が前記実行手段に前記所定の電圧を供給した後に、前記実行手段に前記第２周波数より高速の第３周波数のクロック信号を出力する、こと特徴とする情報処理装置。
【請求項２】
前記第１周波数と前記第３周波数は、同じである、ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記クロック信号出力部は、前記第１周波数のクロック信号を出力する第１信号出力部と、前記第２周波数のクロック信号を出力する第２信号出力部と、前記第１周波数のクロック信号及び前記第２周波数のクロック信号の何れか一方を出力する信号選択部と、を有することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記第２信号出力部は、前記第１信号出力部から出力された前記第１周波数のクロック信号を前記第２周波数のクロック信号に変換して出力する、ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
前記第２信号出力部は、ＰＬＬ回路である、ことを特徴とする請求項３又は４に記載の情報処理装置。
【請求項６】
前記クロック信号出力部は、前記検証手段のブート時に、前記検証手段に前記第１周波数より低速の第４周波数のクロック信号を出力する、ことを特徴とする請求項１乃至５の何れか１項に記載の情報処理装置。
【請求項７】
前記検証手段は、前記クロック信号出力部が出力する周波数を設定する、ことを特徴とする請求項１乃至６の何れか１項に記載の情報処理装置。
【請求項８】
前記クロック信号出力部は、前記検証手段による前記ソフトウェアの検証が成功した場合に、前記第２周波数のクロック信号を出力する、ことを特徴とする請求項１乃至７の何れか１項に記載の情報処理装置。
【請求項９】
前記検証手段による前記ソフトウェアの検証が失敗したことを示す情報を通知する通知手段をさらに備える、ことを特徴とする請求項１乃至８の何れか１項に記載の情報処理装置。
【請求項１０】
前記通知手段は、光を出力する光出力手段である、ことを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記検証手段は、前記実行手段が実行するソフトウェアの一部と予め保持した正解値とを比較することにより、前記ソフトウェアを検証する、ことを特徴とする請求項１乃至１０の何れか１項に記載の情報処理装置。
【請求項１２】
前記検証手段は、前記実行手段が実行するソフトウェアのハッシュ値と予め保持した正解値とを比較することにより、前記ソフトウェアを検証する、ことを特徴とする請求項１乃至１０の何れか１項に記載の情報処理装置。
【請求項１３】
前記ソフトウェアは、前記実行手段のブートデータである、ことを特徴とする請求項１乃至１２の何れか１項に記載の情報処理装置。
【請求項１４】
用紙に画像を印刷する印刷手段をさらに備える、ことを特徴とする請求項１乃至１３の何れか１項に記載の情報処理装置。
【請求項１５】
原稿の画像を読み取る読取手段をさらに備える、ことを特徴とする請求項１乃至１４の何れか１項に記載の情報処理装置。
【請求項１６】
検証手段による実行手段が実行するソフトウェアの検証時に、前記検証手段に第１周波数のクロック信号を出力するステップと、
電源部が前記実行手段に前記所定の電圧を供給する前に、前記実行手段に前記第１周波数より低速の第２周波数のクロック信号を出力するステップと、
前記電源部が前記実行手段に前記所定の電圧を供給した後に、前記実行手段に前記第２周波数より高速の第３周波数のクロック信号を出力するステップと、有すること特徴とする情報処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの改ざんを検知することが可能な情報処理装置等に関する。
【背景技術】
【０００２】
ソフトウェアの改ざんを検知（以下、改ざん検知と呼ぶ）して、改ざんが検知されたソフトウェアの実行を禁止する機能を有する情報処理装置が知られている。例えば、メインＣＰＵが実行するソフトウェアをサブＣＰＵが検証を行い、検証が成功したソフトウェアをメインＣＰＵが実行する。検証が失敗すると、当該ソフトウェアの実行を禁止する。
【０００３】
また、情報処理装置には、デバイス（例えば、ＣＰＵ）の個体差に応じて電源電圧を変えるＡＳＶ（Ａｄｏｐｔｉｖｅ  Ｓｕｐｐｌｙ  Ｖｏｌｔａｇｅ）と呼ばれる技術を搭載しているものもある（特許文献１）。ＦＡＳＴの個体（所定の電圧よりも低い電圧でも所定の周波数での動作が可能な個体）に関しては、所定の電圧よりも低い電圧を供給することにより、所定の周波数での動作を実現する。これにより、消費電力の低減を図ることができる。また、ＳＬＯＷの個体（所定の電圧よりも高い電圧でなければ所定の周波数で動作しない個体）に関しては、所定の電圧よりも高い電圧を供給することにより、所定の周波数での動作を実現する。以下、デバイスの個体差に応じた電圧を設定することをＡＳＶ処理と呼ぶ。
【０００４】
デバイスがＳＬＯＷの個体であった場合に、当該デバイスに必要な電圧を入力してから所定の周波数のクロック信号を入力しないと、デバイスの動作が不安定になる可能性がある。従って、デバイスに必要な電圧が入力されるまでは、所定の周波数より低い周波数のクロック信号を入力しておく。そして、デバイスに必要な電圧が入力されてから、Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ回路（以下、ＰＬＬ回路とする）等を使って、所定の周波数のクロック信号をデバイスに入力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３２２８６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記したように、ＡＳＶ処理によりデバイスに必要な電圧が入力されるまでは、デバイスが確実に動作できるように低速のクロック信号を入力する必要がある。そのため、デバイスが動作する前に実行される処理であるデバイスが実行するソフトウェアの改ざん検知処理は、低速のクロック信号で実行されることになる。その結果、改ざん検知処理に要する時間が長くなる。
【０００７】
そこで、本発明では、改ざん検知処理に要する時間を短くすることが可能な情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記の課題を解決するため、情報処理装置は、実行手段が実行するソフトウェアを検証する検証手段と、前記実行手段に供給するべき電圧を示す情報を保持する保持部と、前記保持部に保持された前記情報に基づいて前記実行手段に所定の電圧を供給する電源部と、複数の周波数のクロック信号を出力するクロック信号出力部と、を備え、前記クロック信号出力部は、前記検証手段による前記ソフトウェアの検証時に、前記検証手段に第１周波数のクロック信号を出力し、前記電源部が前記実行手段に前記所定の電圧を供給する前に、前記実行手段に前記第１周波数より低速の第２周波数のクロック信号を出力し、前記電源部が前記実行手段に前記所定の電圧を供給した後に、前記実行手段に前記第２周波数より高速の第３周波数のクロック信号を出力する。
【発明の効果】
【０００９】
本発明によれば、改ざん検知処理に要する時間を短くすることが可能な情報処理装置を提供することを目的とする。
【図面の簡単な説明】
【００１０】
【図１】画像形成装置の全体構成図
【図２】ＡＳＩＣのブロック図
【図３】サブＣＰＵ１０３が実行する処理を示したフローチャート
【図４】メインＣＰＵ１０１が実行する処理を示したフローチャート
【図５】ブートプログラムの検証に関わるブロックの詳細を示した図
【図６】ブートプログラムの検証方法の処理フロー
【図７】ＡＳＶ処理に関わるブロックの詳細を示した図
【図８】プロセス情報格納部に格納される情報の詳細を示した図
【図９】ＡＳＶ処理の詳細を示したフローチャート
【発明を実施するための形態】
【００１１】
以下、図面を参照して、本発明の実施形態を詳細に説明する。
【００１２】
本実施形態では、情報処理装置として、プリント機能及びスキャン機能を有する画像形成装置を例に説明する。
【００１３】
図１は、画像形成装置の全体構成図である。
【００１４】
ネットワーク７００には、画像形成装置１、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）８００が互いに通信可能に接続されている。また、ＰＣ８００には、Ｗｅｂブラウザがインストールされている。Ｗｅｂブラウザは、ＵＲＬ（Ｕｎｉｆｏｒｍ  Ｒｅｓｏｕｒｓｅ  Ｌｏｃａｔｅｒ）の入力を受け付け、Ｗｅｂサーバ（図示省略）からＷｅｂページを受信し、ＰＣ８００の操作部（図示省略）にＷｅｂページを表示することができる。
【００１５】
画像形成装置１は、ＰＣ８００のＷｅｂブラウザを介してユーザに画像形成装置１の各種設定を行わせるためのＷｅｂサーバを備えている。ＰＣ８００のＷｅｂブラウザは、Ｗｅｂブラウザのアドレス入力欄に画像形成装置１のＩＰアドレスまたはホスト名が入力されると、画像形成装置１から各種設定を行うためのＷｅｂページを受信して、表示部に表示する。ユーザは、各種設定を行うためのＷｅｂページを介して、画像形成装置１の設定を行うことができる。
【００１６】
次に、画像形成装置１の構成について説明する。画像形成装置１は、複数の機能部（プリンタ部３、スキャナ部４）、コントロールユニット５、操作部２、プリンタ部３、スキャナ部４、及び、電源部１１３を備えている。
【００１７】
電源部１１３は、コントロールユニット５、操作部２、プリンタ部３、スキャナ部４に電力を供給する。操作部２は、タッチパネルを有する液晶表示部、及び、キーボードを備える。また、操作部２は、画像形成装置１の電力状態をスリープ状態に移行する節電ボタンを有する。スタンバイ状態で節電ボタンが押下されると、画像形成装置１の電力状態は、スタンバイ状態より省電力のスリープ状態に移行する。また、スリープ状態で節電ボタンが押下されると、画像形成装置１の電力状態は、スタンバイ状態に移行する。上記したスリープ状態は、プリンタ部３又はスキャナ部４への電力が停止されるスリープ状態であれば、コントロールユニット５への電力が停止されるディープスリープ状態であっても良い。また、コントロールユニット５への電力供給が停止されないスリープ状態であっても良い。
【００１８】
プリンタ部３は、ユーザから受け付けた印刷指示に従って、コントロールユニット５が受信した画像データを用いて用紙に画像を印刷する。プリンタ部５の印刷方式は、トナーを用紙に定着させて画像を印刷する電子写真方式を採用していてもよいし、インクを用紙に吐出して画像を印刷するインクジェット方式を採用していてもよい。スキャナ部４は、ユーザから受け付けた読取指示に従って、原稿の画像を読み取り、読み取った画像の画像データをコントロールユニット５に送信する。
【００１９】
コントロールユニット５は、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１００を有する。また、コントロールユニット５は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６００、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５００を有する。コントロールユニット５は、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）３００、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）４００、ネットワークＩ／Ｆ（インターフェイス）２００を有する。また、コントロールユニット５は、電源制御回路１１２を有する。
【００２０】
コントロールユニット５は、画像形成装置１が有する各種機能を実行する。ＡＳＩＣ１００は、ＲＯＭ６００又はＨＤＤ３００に記憶された制御プログラムを読み出して、印刷制御や読取制御などの各種制御を行う。ＲＡＭ１０９は、揮発性メモリであり、制御プログラムを実行するときに使用されるワークメモリである。ＨＤＤ３００は、磁気ディスクなどの記憶媒体であり、制御プログラムや画像データなどを記憶する。ＥＥＰＲＯＭ４００は、不揮発性メモリであり、制御プログラムが実行するときに参照する設定値などを記憶している。
【００２１】
ネットワークＩ／Ｆ２００は、ネットワーク７００を介して、ＰＣ８００から印刷データや各種データを受信する。
【００２２】
電源制御回路１１２は、節電ボタンなどからスリープ状態への移行要求を受け付けた時に、電源部（電源部）１１３からプリンタ部３およびスキャナ部４に供給される電力を停止する。これにより、画像形成装置１は、スリープ状態に移行する。また、電源制御回路１１２は、節電ボタンなどからスリープ状態からの復帰要求を受け付けた時に、電源部１１３からプリンタ部３およびスキャナ部４に電力が供給されるよう制御する。
【００２３】
＜ＡＳＩＣ１００の構成＞
図２は、ＡＳＩＣのブロック図である。
【００２４】
ＡＳＩＣ１００は、メインＣＰＵ（実行手段）１０１、メインＣＰＵ用のブートデータを格納する格納部１０２、サブＣＰＵ（検証手段）１０３、及び、サブＣＰＵ用のブートデータを格納する格納部１０４を有する。また、ＡＳＩＣ１００は、入カインターフェイス１０５、出力インターフェイス１０６、データ処理部１０７、及び、ＰＬＬ１０９、クロック選択部（信号選択部）１１０を有する。また、ＡＳＩＣ１００は、プロセス情報格納部（保持部）１１１、リセット制御部１１４、及び、電源供給端子１１５を有する。本発明のクロック信号出力部は、発振部１０８、ＰＬＬ１０９、クロック選択部１１０を含む。
【００２５】
メインＣＰＵ１０１は、ＡＳＩＣ１００内の各デバイスの制御を行う。メインＣＰＵ１０１は、基本的には、１．０Ｖの電源電圧が供給されている場合に１２００ＭＨｚの周波数のクロック信号で動作することが可能である。しかし、メインＣＰＵ１０１は、個体差によっては、電源電圧が１．０Ｖ未満であっても１２００ＭＨｚで動作可能な場合もあるし、電源電圧が１．０Ｖより高い電源電圧を供給しないと１２００ＭＨｚで動作しない場合もある。
【００２６】
格納部１０２は、メインＣＰＵ１０１がブートするときに実行するプログラムやブート時に使用する各種データ（以下、プログラム及び各種データをまとめて、ブートデータとする）を格納する。格納部１０２は、ＲＯＭ（リードオンリーメモリ）である。
【００２７】
サブＣＰＵ１０３は、メインＣＰＵ１０１の補助的な制御を行う。
【００２８】
格納部１０４は、サブＣＰＵ１０３がブートするときに実行するプログラムやブート時に使用する各種データを格納する。格納部１０４は、ＲＯＭである。
【００２９】
本実施形態では、サブＣＰＵ１０３は、画像形成装置１の電源オン時（ＡＳＩＣ１００のリセット時）に、メインＣＰＵ１０１より先にブートする。つまり、サブＣＰＵ１０３は、画像形成装置１の電源オン時（ＡＳＩＣ１００のリセット時）に、格納部１０４に格納されているブートデータを使用してブートし、格納部１０２に格納されているブートデータの検証を行う。サブＣＰＵ１０３によるブートデータの検証によって、メインＣＰＵ１０１が実行するブートデータの改ざんが無いと判定すれば、メインＣＰＵ１０１は、格納部１０２に格納されたブートプログラムを実行する。
【００３０】
入カインターフェイス（以下、Ｉ／Ｆとする）１０５は、ＡＳＩＣ１００の外部からデータの入力を行うインターフェイスである。出力インターフェイス１０６は、外部にデータの出力を行うインターフェイスである。
【００３１】
データ処理部１０７は、入力Ｉ／Ｆ１０５から入力されたデータに対して、所定の処理を行うモジュールである。例えば、データ処理部１０７は、画像データを受信して、受信した画像データに対して画像処理（拡大、縮小、補正等）を行う。
【００３２】
発振器１０８は、ＡＳＩＣ１００にクロック信号を供給する。発振器１０８は、例えば、１０ＭＨｚのクロック信号を供給する。ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）１０９は、発振器１０８から供給されたクロック信号の周波数を、所望の周波数に変換して出力する回路である。ＰＬＬ１０９は、入力されたクロック信号の周波数（１０ＭＨｚ）を、例えば、１２０倍の１２００ＭＨｚのクロック信号に変換して、出力する。
【００３３】
クロック選択部（ＭＵＸ（マルチプレクサ））１１０には、発振器１０８が供給するクロック信号及びＰＬＬ１０９が供給するクロック信号が入力される。クロック選択部１１０は、発振器１０８が供給したクロック信号、及び、ＰＬＬ１０９が供給したクロック信号のいずれか１つを出力する。本実施形態では、クロック選択部１１０は、サブＣＰＵ１０３からの指示に従って、発振器１０８が供給したクロック信号、及び、ＰＬＬ１０９が供給したクロック信号のいずれか１つを出力する。ＡＳＩＣ１００内の各モジュール（メインＣＰＵ１０１、サブＣＰＵ１０３、データ処理部１０７、及び、その他の回路）は、お互いにデータの受け渡しを同期関係で行うため、各モジュールに入力されるクロック信号は、位相が同期している必要がある。そこで、本実施形態では、各モジュールに供給されるクロック信号は、クロック選択部１１０から出力されたクロック信号を分岐したものである。各モジュールに入力されるクロック信号は位相が同期していれば、クロック信号の周波数は異なっていても良い。
【００３４】
プロセス情報格納部１１１は、メインＣＰＵ１０１のプロセス情報（３ビットの情報）を格納する。プロセス情報格納部１１１は、ＲＯＭである。
【００３５】
電源制御回路１１２は、電源部１１３が出力する電圧を変更する。電源制御回路１１２は、プロセス情報格納部１１１に格納されているプロセス情報に基づいて、電源部１１３から出力される電圧を変更する。電源部１１３は、電源供給端子１１５を介して、ＡＳＩＣ１００に電圧を印加する。電源部１１３は、電源制御回路１１２から出力される電圧制御信号に基づいて、ＡＳＩＣ１００に所定の電圧を印加する。
【００３６】
リセット制御部１１４は、ＡＳＩＣ１００内の各モジュールにリセット信号を出力する。画像形成装置１の電源オン時（ＡＳＩＣ１００のリセット時）に、リセット制御部１１４は、サブＣＰＵ１０３及び格納部１０４のリセットを解除する。次に、サブＣＰＵ１０３からの指示に従って、リセット制御部１１４は、メインＣＰＵ１０１のリセットを解除する。
【００３７】
ＡＳＩＣ１００は低速動作モード、高速動作モードの２つの動作モードで動作可能である。低速動作モードにおいては、クロック選択部１１０は、サブＣＰＵ１０３からの指示に従って、発振器１０８から入力されたクロック信号を選択して出力する。出力されたクロック信号は、図２に示すように、メインＣＰＵ１０１、サブＣＰＵ１０３、データ処理部１０７の動作用のクロック信号として使用される。また、図２では図示していないが、上記以外の他の回路に対しても、クロック信号が入力される。
【００３８】
図２では、クロック選択部１１０から出力されたクロック信号が直接各モジュールに供給されているが、分周回路等を使用して周波数を落としたクロックを各モジュールに供給しても良い。
【００３９】
高速動作モードにおいては、クロック選択部１１０は、サブＣＰＵ１０３からの指示に従って、ＰＬＬ１０９から入力されたクロック信号を選択して出力する。出力されたクロック信号は、図２に示すように、メインＣＰＵ１０１、サブＣＰＵ１０３、データ処理部１０７の動作用のクロック信号として使用される。また、図１では図示していないが、上記以外の他の回路に対しても、クロック信号が入力される。
【００４０】
＜サブＣＰＵの動作フロー＞
図３は、サブＣＰＵ１０３が実行する処理を示したフローチャートである。
【００４１】
ユーザにより、画像形成装置の電源がオンされると（Ｓ３０１）、ＡＳＩＣ１００にリセット信号が入力される。ＡＳＩＣ１００がリセットされると、初期設定に基づいて、ＡＳＩＣ１００は低速動作モードとなる。サブＣＰＵ１０３には、発振器１０８から出力されたクロック信号（１０ＭＨｚ）が入力される（Ｓ３０２）。リセット制御部１１４は、ハードウェアシーケンスにより、サブＣＰＵ１０３及び格納部１０４のリセットを解除する。これにより、サブＣＰＵ１０３は、格納部１０４に格納されているブートデータを実行する（Ｓ３０３）。
【００４２】
ブートしたサブＣＰＵ１０３は、ＰＬＬ１０９が１２００ＭＨｚのクロック信号を出力するように設定する。これにより、ＰＬＬ１０９が、１２００ＭＨｚのクロック信号を発振する（Ｓ３０４）。
【００４３】
その後、サブＣＰＵ１０３は、データ処理部１０７が所定の処理を実行するように、各種パラメータを設定する（Ｓ３０５）。そして、サブＣＰＵ１０３は、ＰＬＬ１０９のロックアップタイムが経過したかどうかを判定する（Ｓ３０６）。ロックアップタイマとは、ＰＬＬ１０９が所定の周波数（ここでは、１２００ＭＨｚ）を安定して発振するまでに要する時間である。
【００４４】
ロックアップタイムが経過したと判定した場合（Ｓ３０６：Ｙｅｓ）、サブＣＰＵ１０３は、クロック選択部１１０の出カを、発振器１０８から出力されたクロック信号からＰＬＬ１０９から出力されたクロック信号に切り替える（Ｓ３０７）。これにより、ＡＳＩＣ１００が高速動作モードとなる。
【００４５】
そして、本実施形態では、サブＣＰＵ１０３は、メインＣＰＵ１０１のブートデータの検証を行う（Ｓ３０８）。例えば、ＣＰＵ１０３は、予め格納部１０４に格納しておいた正解値と格納部１０２に記憶されたブートデータのハッシュ値とを比較して、一致すればブートデータの改ざんがなかったと判定し、一致しなかったらブートデータの改ざんがあったと判定する。なお、ブートデータの改ざんの検知方法については、図４及び図５で詳細に説明する。
【００４６】
ブートデータの改ざんがあったと判定した場合（Ｓ３０９：Ｎｏ）、メインＣＰＵ１０１によるブートデータの実行を行わずに、サブＣＰＵ１０３は、ユーザや管理者に改ざんがあった旨を通知する（Ｓ３１０）。通知方法は、不図示のＬＥＤ（光出力手段）の点灯等であっても良いし、音による通知であっても良い。
【００４７】
ブートデータの改ざんがなかったと判定した場合（Ｓ３０９：Ｙｅｓ）、サブＣＰＵ１０３は、クロック選択部１１０の出カを、ＰＬＬ１０９から出力されたクロック信号から発振器１０８から出力されたクロック信号に切り替える（Ｓ３１１）。これにより、ＡＳＩＣ１００が低速動作モードとなる。
【００４８】
そして、サブＣＰＵ１０３は、メインＣＰＵ１０１及びその他の各回路のリセットを解除する（Ｓ３１２）。これにより、メインＣＰＵ１０１のブートが開始する。
【００４９】
＜メインＣＰＵの動作フロー＞
図４は、メインＣＰＵ１０１が実行する処理を示したフローチャートである。
【００５０】
メインＣＰＵ１０１のリセットが解除されると（Ｓ４０１）、メインＣＰＵ１０１は、発振器１０８から出力されるクロック信号で動作を開始する（Ｓ４０２）。メインＣＰＵ１０１は、格納部１０２に格納されているブートデータを実行する（Ｓ４０３）。このブートデータは、検証済みであり、改ざんがなかったと判定されたものである。そして、本実施形態では、メインＣＰＵ１０１は、ＡＳＶ処理を実行する（Ｓ４０４）。ＡＳＶ処理の詳細な説明は、図６、図７及び図８で行う。
【００５１】
ＡＳＶ処理が終了すると、メインＣＰＵ１０１は、ＰＬＬ１０９が、１２００ＭＨｚのクロック信号を出力するように設定する（Ｓ４０５）。その後、メインＣＰＵ１０１は、ＰＬＬ１０９のロックアップタイムが経過したかどうかを判定する（Ｓ４０６）。メインＣＰＵ１０１は、ＰＬＬ１０９のロックアップタイムが経過したと判定すると（Ｓ４０６：Ｙｅｓ）、クロック選択部１１０の出カを、発振器１０８から出力されたクロック信号をＰＬＬ１０９から出力されたクロック信号に切り替える（Ｓ４０７）。これにより、ＡＳＩＣ１００が高速動作モードとなる。その後、メインＣＰＵ１０１は、データ処理部１０７でのデータ処理を制御する。
【００５２】
ＡＳＩＣ１００が高速動作モードになった時点で、ＡＳＩＣ１００の各種設定は、データ処理部にて実行する各種データ処理用の設定が行われている。また、メインＣＰＵ１０１の電源電圧は、メインＣＰＵ１０１のプロセスに適した電圧に変更されているため、メインＣＰＵ１０１は、各種のデータ処理を実行することができる。
【００５３】
以上のフローにより、メインＣＰＵ１０１がＡＳＶ処理を行う前に、サブＣＰＵ１０３がＰＬＬ１０９から出力される高い周波数のクロック信号により改ざん検知処理を行うことができるので、改ざん検知処理を短時間で完了させることが可能となる。また、サブＣＰＵ１０３が改ざん検知処理を終了した後に、メインＣＰＵ１０１に供給されるクロック信号を発振器１０８からの低い周波数のクロック信号に切り替えることによって、メインＣＰＵ１０１がＡＳＶ処理を行うことができる。
【００５４】
＜改ざん検知処理＞
次に、図３のＳ３０８のブートプログラムの改ざん検知処理の詳細について説明する。図５は、ブートプログラムの検証に関わるブロックの詳細を示した図である。
【００５５】
格納部１０２は、メインＣＰＵ１０１用のブートデータ４０１を格納する。メインＣＰＵ１０１は、リセットが解除されると、格納部１０２に格納されたメインＣＰＵ１０１用のブートデータ４０１をリードして実行する。これにより、メインＣＰＵ１０１のブートが開始される。格納部１０４は、サブＣＰＵ１０３用のブートデータ４０２を格納する。サブＣＰＵ１０３は、リセットが解除されると、格納部１０４に格納されたサブＣＰＵ１０３用のブートデータ４０２をリードして実行する。これにより、サブＣＰＵ１０３のブートが開始される。
【００５６】
また、格納部１０４は、メインＣＰＵ１０１が実行するブートデータと比較される比較用データ（正解値）を格納する。
【００５７】
図６は、ブートプログラムの検証方法の処理フローを示した図である。
【００５８】
サブＣＰＵ１０３は、格納部１０２に格納されたメインＣＰＵ用のブートデータ４０１の先頭データから、所定のデータ量（例えば、１００ＫＢｙｔｅ）のデータをリードする（Ｓ６０１）。リードされたデータは、サブＣＰＵ１０３が持つバッファメモリに格納される。サブＣＰＵ１０３は、格納部１０２からリードしたデータと同量の比較用データ４０３をリードする（Ｓ６０２）。そして、サブＣＰＵ１０３は、バッファメモリに格納していたメインＣＰＵ１０１用のブートデータ４０１と、比較用データ４０３との比較を行う（Ｓ６０３）。比較結果として、両者が異なる場合（Ｓ６０４：Ｎｏ）は、サブＣＰＵ１０３は、ブートデータ４０１の改ざんがあったと判定する（Ｓ６０５）。
【００５９】
一方、比較結果として、両者が一致する場合（Ｓ６０４：Ｙｅｓ）、サブＣＰＵ１０３は、ブートデータ４０１の改ざんが無かったと判断する（Ｓ６０６）。
【００６０】
本実施形態では、メインＣＰＵ１０１用のブートデータ４０１のそのものと、比較用データ４０３との比較を行っている。が、メインＣＰＵ１０１用のブートデータ４０１のハッシュ値を算出し、そのハッシュ値と予め記憶していた正解値とを比較することにより、ブートデータ４０１の検証を行っても良い。
【００６１】
また、本実施形態では、ブートデータ４０１の一部（１００ＫＢｙｔｅ）の検証を行ったが、ブートデータ４０１の全てを検証しても良い。
【００６２】
＜ＡＳＶ処理＞
次に、図３のＳ３０４のＡＳＶ処理の詳細について説明する。図７は、ＡＳＶ処理に関わるブロックの詳細を示した図である。
【００６３】
プロセス情報格納部１１１は、メインＣＰＵ１０１のプロセス情報を格納している。プロセス情報格納部１１１は、ＲＯＭである。本実施形態では、メインＣＰＵ１０１のプロセスがＳＬＯＷからＦＡＳＴまで８段階に分けられており、３ビットのデータがプロセスの情報としてプロセス情報格納部１１１に格納されている。
【００６４】
図８は、プロセス情報格納部１１１に格納される情報の詳細を示した図である。図７に示すように、ＴＹＰＩＣＡＬのプロセスを「４」として、３ビッ卜のデータ「１００」で表す。そして、最もＳＬＯＷのプロセスを「０」として、３ビットのデータ「０００」で表す。また、最もＦＡＳＴのプロセスを「７」として、３ビットのデータ「１１１」で表す。
【００６５】
図７に戻り、電源制御回路１１２は、プロセス情報格納部１１１に格納されているプロセス情報を、メインＣＰＵ１０１から受信する。電源制御回路１１２は、受信したプロセス情報に基づいて、電源部１１３から出力する電圧を変更するための制御信号を出力する。メインＣＰＵ１０１は、３ビットのデータを電源制御回路１１２にに出力する。ＡＳＩＣ１００と電源制御回路１１２とは、シリアルバスで接続されている。ＡＳＩＣ１００のＩ２ＣＩ（アイ・スクエアード・シー）Ｉ／Ｆ部６０１と、電源制御回路１１２のＩ２ＣＩ／Ｆ部６０２とは、アイ・スクエアード・シーで通信を行う。
【００６６】
電源制御回路１１２のデータ処理部６０３は、Ｉ２ＣＩ／Ｆ部６０２を介して入力された３ビットのプロセス情報を、３ビットの制御信号として、電源部１１３に出力する。電源部１１３は、画像形成装置１の電源オン時は、ＴＹＰＩＣＡＬ電圧、つまり、本実施形態では、１．０Ｖの電圧を出力する。その後、電力供給部１１３は、電源制御回路１１２から入力された制御信号に基づいて、電源供給端子１１５に所定の電圧を供給する。例えば、図７に示すように、メインＣＰＵ１０１がＴＹＰＩＣＡＬのチップの場合、プロセス情報格納部１１１から出力される３ビットのデータが「１００」となる。そして、メインＣＰＵ１０１に供給される電源電圧が１．０Ｖとなる。また、メインＣＰＵ１０１が最もＳＬＯＷのプロセスの場合、プロセス情報格納部１１１から出力される３ビットのデータが「０００」となる。そして、メインＣＰＵ１０１に供給される電源電圧は、１．１２Ｖ（図８参照）となる。また、メインＣＰＵ１０１が最もＦＡＳＴのプロセスの場合、プロセス情報格納部１１１から出力される３ビットのデータが「１１１」となる。そして、メインＣＰＵ１０１に供給される電源電圧は、０．９１Ｖ（図８参照）となる。
【００６７】
図９は、ＡＳＶ処理の詳細を示したフローチャートである。
【００６８】
メインＣＰＵ１０１は、プロセス情報格納部１１１から３ビットで記録されているプロセス情報をリードする（Ｓ９０１）。本実施形態では、プロセス情報格納部１１１の特定のアドレスのデータを読み出すことにより、３ビットで記録されているメインＣＰＵ１０１のプロセス情報をリードする。メインＣＰＵ１０１は、３ビットのプロセス情報を電源制御回路１１２に出力する（Ｓ９０２）。本実施形態では、メインＣＰＵ１０１は、Ｉ２Ｃのプロトコルに従って、プロセス情報を送信する。
【００６９】
電源制御回路１１２は、ＡＳＩＣ１００から入力された３ビットのプロセス情報を受信する。そして、データ処理部６０３は、電源部１１３の出力電圧を変更するための制御信号を、電源部１１３に出力する（Ｓ９０３）。電源部１１３には、出力電圧を制御するために３ビットの入力端子が設けられている。電源部１１３は、入力端子に入力された制御信号に基づいて、メインＣＵＰ１０１に供給する電源電圧を調整する（Ｓ９０４）。
【００７０】
３ビットの制御信号と電源部１１３が出力する電源電圧との関係は、図８に示している。３ビットのデータが「１００」の場合、電源部１１３は、メインＣＰＵ１０１に１．０Ｖを出力する。また、３ビットのデータが「１１０」の場合、電源部１１３は、メインＣＰＵ１０１に０．９４Ｖを出力する。
【００７１】
（その他の実施例）
上記した実施形態では、クロック選択部１１０は、発振器１０８から供給されたクロック信号又はＰＬＬ１０９から供給されたクロック信号の何れかを出力する。クロック選択部１１０は、周波数が異なる３つ以上のクロック信号が入力され、そのうちの何れか１つを出力するものであっても良い。
【００７２】
例えば、クロック選択部１１０は、サブＣＰＵ１０３によるブートデータの検証時に１２００ＭＨｚのクロック信号をサブＣＰＵ１０３出力し、メインＣＰＵ１０１によるＡＳＶ処理時に１０ＭＨｚのクロック信号をメインＣＰＵ１０１に出力する。そして、クロック選択部１１０は、ＡＳＶ処理が完了したら、メインＣＰＵ１０１に１２００ＭＨｚのクロック信号を出力する。クロック選択部１１０は、出力するクロック信号の周波数が高速、低速、高速の順になれば、周波数は１０ＭＨｚや１２００ＭＨｚに限定されない。ブートデータの検証時のクロック信号の周波数は、ＡＳＶ処理完了後のクロック信号の周波数と同じでなくても構わない。
【００７３】
上記した実施形態では、本発明の情報処理装置の一例として画像形成装置１００について説明したが、本発明の情報処理装置は、画像形成装置でなくても構わない。例えば、本発明の画像形成装置は、パーソナルコンピュータ、タブレット、スマートフォン、ゲーム機、遊技機、空気調和機、ＡＴＭであっても良い。
【００７４】
また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記録媒体を、システムあるいは装置に供給するよう構成することによっても達成される。この場合、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読出し実行することにより、上記機能が実現されることとなる。なお、この場合、そのプログラムコードを記憶した記録媒体は本発明を構成することになる。
【００７５】
プログラムコードを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、磁気テープ、不揮発性のメモリカード、ＲＯＭなどを用いることができる。
【００７６】
また、コンピュータが読出したプログラムコードを実行することにより、前述した実施形態の機能が実現される場合に限られない。例えば、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているＯＳ（オペレーティングシステム）などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【００７７】
さらに、記録媒体から読出されたプログラムコードが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、前述した実施形態の機能が実現される場合も含まれる。つまり、プログラムコードがメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によって実現される場合も含まれる。
【符号の説明】
【００７８】
１  画像形成装置
１０１  メインＣＰＵ（実行手段）
１０３  サブＣＰＵ（検証手段）
【図１】
2020080097.tif 000003
【図２】
2020080097.tif 000004
【図３】
2020080097.tif 000005
【図４】
2020080097.tif 000006
【図５】
2020080097.tif 000007
【図６】
2020080097.tif 000008
【図７】
2020080097.tif 000009
【図８】
2020080097.tif 000010
【図９】
2020080097.tif 000011